[MERGE] forward port branch saas-13 up to 25f271c

This commit is contained in:
Christophe Simonis
2016-09-14 13:00:33 +02:00
707 changed files with 1629 additions and 5894 deletions
+11 -25
View File
@@ -77,6 +77,11 @@ file_filter = addons/anonymization/i18n/<lang>.po
source_file = addons/anonymization/i18n/anonymization.pot
source_lang = en
[odoo-master.association]
file_filter = addons/association/i18n/<lang>.po
source_file = addons/association/i18n/association.pot
source_lang = en
[odoo-master.auth_crypt]
file_filter = addons/auth_crypt/i18n/<lang>.po
source_file = addons/auth_crypt/i18n/auth_crypt.pot
@@ -317,6 +322,7 @@ file_filter = addons/l10n_multilang/i18n/<lang>.po
source_file = addons/l10n_multilang/i18n/l10n_multilang.pot
source_lang = en
[odoo-master.link_tracker]
file_filter = addons/link_tracker/i18n/<lang>.po
source_file = addons/link_tracker/i18n/link_tracker.pot
@@ -462,6 +468,11 @@ file_filter = addons/pos_cache/i18n/<lang>.po
source_file = addons/pos_cache/i18n/pos_cache.pot
source_lang = en
[odoo-master.pos_data_drinks]
file_filter = addons/pos_data_drinks/i18n/<lang>.po
source_file = addons/pos_data_drinks/i18n/pos_data_drinks.pot
source_lang = en
[odoo-master.pos_discount]
file_filter = addons/pos_discount/i18n/<lang>.po
source_file = addons/pos_discount/i18n/pos_discount.pot
@@ -517,11 +528,6 @@ file_filter = addons/product_margin/i18n/<lang>.po
source_file = addons/product_margin/i18n/product_margin.pot
source_lang = en
[odoo-master.product_visible_discount]
file_filter = addons/product_visible_discount/i18n/<lang>.po
source_file = addons/product_visible_discount/i18n/product_visible_discount.pot
source_lang = en
[odoo-master.project]
file_filter = addons/project/i18n/<lang>.po
source_file = addons/project/i18n/project.pot
@@ -592,11 +598,6 @@ file_filter = addons/sale_crm/i18n/<lang>.po
source_file = addons/sale_crm/i18n/sale_crm.pot
source_lang = en
[odoo-master.sale_expense]
file_filter = addons/sale_expense/i18n/<lang>.po
source_file = addons/sale_expense/i18n/sale_expense.pot
source_lang = en
[odoo-master.sale_margin]
file_filter = addons/sale_margin/i18n/<lang>.po
source_file = addons/sale_margin/i18n/sale_margin.pot
@@ -677,16 +678,6 @@ file_filter = addons/survey_crm/i18n/<lang>.po
source_file = addons/survey_crm/i18n/survey_crm.pot
source_lang = en
[odoo-master.theme_bootswatch]
file_filter = addons/theme_bootswatch/i18n/<lang>.po
source_file = addons/theme_bootswatch/i18n/theme_bootswatch.pot
source_lang = en
[odoo-master.theme_default]
file_filter = addons/theme_default/i18n/<lang>.po
source_file = addons/theme_default/i18n/theme_default.pot
source_lang = en
[odoo-master.utm]
file_filter = addons/utm/i18n/<lang>.po
source_file = addons/utm/i18n/utm.pot
@@ -802,11 +793,6 @@ file_filter = addons/website_gengo/i18n/<lang>.po
source_file = addons/website_gengo/i18n/website_gengo.pot
source_lang = en
[odoo-master.website_google_map]
file_filter = addons/website_google_map/i18n/<lang>.po
source_file = addons/website_google_map/i18n/website_google_map.pot
source_lang = en
[odoo-master.website_hr]
file_filter = addons/website_hr/i18n/<lang>.po
source_file = addons/website_hr/i18n/website_hr.pot
+1 -1
View File
@@ -63,7 +63,7 @@ from ${object.company_id.name}.
<field name="body_html"><![CDATA[<html>
<head></head>
<body style="margin: 0; padding: 0;">
<table border="0" width="100%" cellpadding="0" bgcolor="#ededed" style="padding: 20px; background-color: #ededed" class="o_mail_notification">
<table border="0" width="100%" cellpadding="0" bgcolor="#ededed" style="padding: 20px; background-color: #ededed" summary="o_mail_notification">
<tbody>
<!-- HEADER -->
+4 -3
View File
@@ -1343,9 +1343,10 @@ class AccountInvoiceTax(models.Model):
base = 0.0
for line in tax.invoice_id.invoice_line_ids:
if tax.tax_id in line.invoice_line_tax_ids:
base += line.price_subtotal
# To add include base amount taxes
base += sum((line.invoice_line_tax_ids.filtered(lambda t: t.include_base_amount) - tax.tax_id).mapped('amount'))
price_unit = line.price_unit * (1 - (line.discount or 0.0) / 100.0)
base += (line.invoice_line_tax_ids - tax.tax_id).compute_all(
price_unit, line.invoice_id.currency_id, line.quantity, line.product_id, line.invoice_id.partner_id
)['base']
tax.base = base
invoice_id = fields.Many2one('account.invoice', string='Invoice', ondelete='cascade', index=True)
+13 -13
View File
@@ -13,22 +13,22 @@
<menuitem id="menu_finance_payables" name="Purchases" parent="menu_finance" sequence="3"/>
<menuitem id="menu_finance_entries" name="Adviser" parent="menu_finance" sequence="4" groups="group_account_manager"/>
<menuitem id="menu_finance_reports" name="Reports" parent="menu_finance" sequence="5" groups="group_account_invoice"/>
<!-- Reporting sub-menus -->
<menuitem id="account_reports_management_menu" name="Management" parent="account.menu_finance_reports" sequence="4" groups="group_account_user"/>
<menuitem id="account_reports_business_intelligence_menu" name="Business Intelligence" parent="account.menu_finance_reports" sequence="5" groups="group_account_invoice"/>
<menuitem id="menu_finance_legal_statement" name="PDF Reports" parent="account.menu_finance_reports" groups="group_account_user"/>
<menuitem id="menu_finance_configuration" name="Configuration" parent="menu_finance" sequence="15" groups="group_account_invoice"/>
<!-- Configuration Sub-Menu -->
<menuitem id="account_account_menu" name="Accounting" parent="account.menu_finance_configuration" sequence="2" groups="group_account_invoice"/>
<menuitem id="account_management_menu" name="Management" parent="account.menu_finance_configuration" sequence="3" groups="group_account_manager"/>
<menuitem id="menu_analytic_accounting" name="Analytic Accounting" parent="menu_finance_configuration" groups="analytic.group_analytic_accounting" sequence="5"/>
<menuitem id="menu_config_multi_currency" name="Multi-Currencies" parent="menu_finance_configuration" sequence="9" groups="base.group_multi_currency"/>
<!-- Reporting sub-menus -->
<menuitem id="account_reports_management_menu" name="Management" parent="account.menu_finance_reports" sequence="4" groups="group_account_user"/>
<menuitem id="account_reports_business_intelligence_menu" name="Business Intelligence" parent="account.menu_finance_reports" sequence="5" groups="group_account_invoice"/>
<!-- Configuration Sub-Menu -->
<menuitem id="account_account_menu" name="Accounting" parent="account.menu_finance_configuration" sequence="2" groups="group_account_invoice"/>
<menuitem id="account_management_menu" name="Management" parent="account.menu_finance_configuration" sequence="3" groups="group_account_manager"/>
<menuitem id="menu_analytic_accounting" name="Analytic Accounting" parent="menu_finance_configuration" groups="analytic.group_analytic_accounting" sequence="5"/>
<menuitem id="menu_config_multi_currency" name="Multi-Currencies" parent="menu_finance_configuration" sequence="9" groups="base.group_multi_currency"/>
<menuitem id="menu_action_currency_form" action="base.action_currency_form" name="Currencies" parent="menu_config_multi_currency" sequence="20" groups="base.group_no_one"/>
<menuitem id="menu_account_reports" name="Financial Reports" parent="menu_finance_configuration" groups="group_account_user"/>
<menuitem id="menu_action_currency_form" name="Currencies" parent="menu_config_multi_currency" sequence="20" groups="base.group_no_one"/>
<menuitem id="menu_finance_legal_statement" name="PDF Reports" parent="account.menu_finance_reports" groups="group_account_user"/>
<menuitem id="menu_account_reports" name="Financial Reports" parent="menu_finance_configuration" groups="group_account_user"/>
</data>
</odoo>
+1 -1
View File
@@ -283,7 +283,7 @@
<field name="code"/>
<field name="refund_sequence" attrs="{'invisible': [('type', 'not in', ['sale', 'purchase'])]}" groups="base.group_no_one"/>
<field name="sequence_id" required="0" attrs="{'readonly': 1}" groups="base.group_no_one"/>
<field name="refund_sequence_id" attrs="{'required': [('refund_sequence', '=', True)], 'invisible': ['|',('type', 'not in', ['sale', 'purchase']), ('refund_sequence', '!=', True)]}" required="0" groups="base.group_no_one"/>
<field name="refund_sequence_id" attrs="{'invisible': ['|',('type', 'not in', ['sale', 'purchase']), ('refund_sequence', '!=', True)], 'required': [('type', 'in', ['sale', 'purchase']), ('refund_sequence', '=', True)]}" groups="base.group_no_one"/>
</group>
<group>
<field name="default_debit_account_id" domain="[('deprecated', '=', False)]" />
+1 -1
View File
@@ -269,7 +269,7 @@
<field name="overdue_msg"/>
</group>
<div>
<span>(*) This configuration value is related to the company you're logged in.</span>
<span>(*) This configuration is related to the company you're logged into.</span>
</div>
</form>
</field>
+2 -2
View File
@@ -7,7 +7,7 @@ from dateutil.relativedelta import relativedelta
from odoo import api, fields, models, _
from odoo.exceptions import UserError, ValidationError
from odoo.tools import DEFAULT_SERVER_DATE_FORMAT as DF
from openerp.tools import float_compare
from odoo.tools import float_compare
class AccountAssetCategory(models.Model):
@@ -455,7 +455,7 @@ class AccountAssetDepreciationLine(models.Model):
current_currency = line.asset_id.currency_id
amount = current_currency.compute(line.amount, company_currency)
sign = (category_id.journal_id.type == 'purchase' or category_id.journal_id.type == 'sale' and 1) or -1
asset_name = line.asset_id.name + ' (%s/%s)' % (line.sequence, line.asset_id.method_number)
asset_name = line.asset_id.name + ' (%s/%s)' % (line.sequence, len(line.asset_id.depreciation_line_ids))
prec = self.env['decimal.precision'].precision_get('Account')
move_line_1 = {
'name': asset_name,
@@ -51,15 +51,15 @@ class AccountInvoiceLine(models.Model):
@api.one
def asset_create(self):
if self.asset_category_id and self.asset_category_id.method_number > 1:
if self.asset_category_id:
vals = {
'name': self.name,
'code': self.invoice_id.number or False,
'category_id': self.asset_category_id.id,
'value': self.price_subtotal,
'value': self.price_subtotal_signed,
'partner_id': self.invoice_id.partner_id.id,
'company_id': self.invoice_id.company_id.id,
'currency_id': self.invoice_id.currency_id.id,
'currency_id': self.invoice_id.company_currency_id.id,
'date': self.asset_start_date or self.invoice_id.date_invoice,
'invoice_id': self.invoice_id.id,
}
@@ -8,19 +8,22 @@ from odoo.exceptions import UserError
class AccountPartialReconcileCashBasis(models.Model):
_inherit = 'account.partial.reconcile'
def create_tax_cash_basis_entry(self, value_before_reconciliation):
def _get_tax_cash_basis_lines(self, value_before_reconciliation):
# Search in account_move if we have any taxes account move lines
tax_group = {}
total_by_cash_basis_account = {}
line_to_create = []
move_date = self.debit_move_id.date
for move in (self.debit_move_id.move_id, self.credit_move_id.move_id):
if move_date < move.date:
move_date = move.date
for line in move.line_ids:
#TOCHECK: normal and cash basis taxes shoudn't be mixed together (on the same invoice line for example) as it will
#create reporting issues. Not sure of the behavior to implement in that case, though.
# amount to write is the current cash_basis amount minus the one before the reconciliation
matched_percentage = value_before_reconciliation[move.id]
amount = (line.credit_cash_basis - line.debit_cash_basis) - (line.credit - line.debit) * matched_percentage
if not line.tax_exigible:
# amount to write is the current cash_basis amount minus the one before the reconciliation
matched_percentage = value_before_reconciliation[move.id]
amount = (line.credit_cash_basis - line.debit_cash_basis) - (line.credit - line.debit) * matched_percentage
if line.tax_line_id and line.tax_line_id.use_cash_basis:
# group by line account
acc = line.account_id.id
@@ -28,7 +31,6 @@ class AccountPartialReconcileCashBasis(models.Model):
tax_group[acc] += amount
else:
tax_group[acc] = amount
# Group by cash basis account and tax
acc = line.tax_line_id.cash_basis_account.id
key = (acc, line.tax_line_id.id)
@@ -36,8 +38,8 @@ class AccountPartialReconcileCashBasis(models.Model):
total_by_cash_basis_account[key] += amount
else:
total_by_cash_basis_account[key] = amount
for tax in line.tax_ids:
if tax.use_cash_basis:
if any([tax.use_cash_basis for tax in line.tax_ids]):
for tax in line.tax_ids:
line_to_create.append((0, 0, {
'name': '/',
'debit': line.debit_cash_basis - line.debit * matched_percentage,
@@ -45,13 +47,14 @@ class AccountPartialReconcileCashBasis(models.Model):
'account_id': line.account_id.id,
'tax_ids': [(6, 0, [tax.id])],
'tax_exigible': True,
}))
}))
line_to_create.append((0, 0, {
'name': '/',
'credit': line.debit_cash_basis - line.debit * matched_percentage,
'debit': line.credit_cash_basis - line.credit * matched_percentage,
'account_id': line.account_id.id,
}))
'tax_exigible': True,
}))
for k, v in tax_group.items():
line_to_create.append((0, 0, {
@@ -59,7 +62,8 @@ class AccountPartialReconcileCashBasis(models.Model):
'debit': v if v > 0 else 0.0,
'credit': abs(v) if v < 0 else 0.0,
'account_id': k,
}))
'tax_exigible': True,
}))
# Create counterpart vals
for key, v in total_by_cash_basis_account.items():
@@ -71,19 +75,29 @@ class AccountPartialReconcileCashBasis(models.Model):
'account_id': k,
'tax_line_id': tax_id,
'tax_exigible': True,
}))
}))
return line_to_create, move_date
# Create move
def create_tax_cash_basis_entry(self, value_before_reconciliation):
line_to_create, move_date = self._get_tax_cash_basis_lines(value_before_reconciliation)
if len(line_to_create) > 0:
# Check if company_journal for cash basis is set if not, raise exception
if not self.company_id.tax_cash_basis_journal_id:
raise UserError(_('There is no tax cash basis journal defined ' \
'for this company: "%s" \nConfigure it in Accounting/Configuration/Settings') % \
(self.company_id.name))
move = self.env['account.move'].with_context(dont_create_taxes=True).create({
raise UserError(_('There is no tax cash basis journal defined '
'for this company: "%s" \nConfigure it in Accounting/Configuration/Settings') %
(self.company_id.name))
move_vals = {
'journal_id': self.company_id.tax_cash_basis_journal_id.id,
'line_ids': line_to_create,
'tax_cash_basis_rec_id': self.id})
'tax_cash_basis_rec_id': self.id
}
# The move date should be the maximum date between payment and invoice (in case
# of payment in advance). However, we should make sure the move date is not
# recorded after the period lock date as the tax statement for this period is
# probably already sent to the estate.
if move_date > self.company_id.period_lock_date:
move_vals['date'] = move_date
move = self.env['account.move'].with_context(dont_create_taxes=True).create(move_vals)
# post move
move.post()
+1 -1
View File
@@ -149,7 +149,7 @@
</div>
</group>
<div name="company_dependent_settings_message">
<span>(*) This configuration value is related to the company you're logged in.</span>
<span>(*) This configuration is related to the company you're logged into.</span>
</div>
</form>
</field>
+36 -57
View File
@@ -474,13 +474,11 @@
<span class="panel-title">
<span class="fa" data-icon="&#xe060;"/>
<strong> Create manually</strong><br/>
<span class="small">Recommended if &lt;100 products</span>
<span class="small">Recommended if &lt;50 items</span>
</span>
</div>
<div class="panel-body">
<ul>
<li><a t-att-href="prepare_backend_url('product.product_template_action', 'form')">Create your products</a></li>
</ul>
<a t-att-href="prepare_backend_url('product.product_template_action', 'form')" target="_blank">Create your product items</a>
</div>
</div>
</div>
@@ -490,51 +488,46 @@
<span class="panel-title">
<span class="fa" data-icon="&#xe040;"/>
<strong>Import a file</strong><br/>
<span class="small">Recommended if &gt;100 products</span>
<span class="small">Recommended if &gt;50 items</span>
</span>
</div>
<div class="panel-body">
<p>
We can handle the whole import process
for you: simply send your Odoo project
manager a CSV file containing all your
products.
</p><p>
If you want to do it yourself:
<a href="/base_import/static/csv/products.xls" target="_blank">Use our import templates to get your catalog ready in no time!</a>
</p>
<ul>
<li>Download the <a href="/base_import/static/csv/products.xls">Excel template</a></li>
<li>Import using the top left button in <a t-att-href="prepare_backend_url('product.product_template_action','list')">the list of products</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="alert alert-info info_icon" role="alert">
<span class="fa fa-lightbulb-o fa-lg"/>
<strong>Tip:</strong>
You can also use our API to load data automatically through scripts: read this <a href="https://www.odoo.com/documentation/9.0/api_integration.html" target="_blank">technical documentation</a>.
</div>
<div class="row">
<div class="col-md-12 col-xs-12">
<div class="well well-lg">
<strong>For complex imports</strong> (&gt;5000 items, product variants, pictures, etc.):
<li>Online users: we do it for you! <a href="https://www.odoo.com/help" target="_blank"><i class="fa fa-envelope-o"/> Ask Our Experts</a></li>
<li>Community &amp; Enterprise users: <a href="https://www.odoo.com/documentation/9.0/api_integration.html" target="_blank">use Odoo API to import through scripts</a></li>
</div>
</div>
</div>
</t>
<t t-call="web_planner.page">
<t t-set="page_title">Prices</t>
<t t-set="page_title">Pricing &amp; Discounts</t>
<p class="text-muted">
In Odoo, there are 3 different ways to manage your products prices.<br/>
In Odoo, there are 3 different ways to manage your prices.<br/>
</p>
<div class="row">
<div class="col-md-4">
<div class="panel panel-success">
<div class="panel-heading">
<span class="panel-title">
<strong>Unique price</strong>
<strong>Unique Price (default)</strong>
</span>
</div>
<div class="panel-body">
<p>
Each product can only have one price. (but you can change it when doing a quotation)
Each product has only one price.
<br/>
Note: your product needs to be marked as 'Can be Sold' to have a Sale Price.
</p>
</div>
</div>
@@ -543,23 +536,13 @@
<div class="panel panel-success">
<div class="panel-heading">
<span class="panel-title">
<strong> Price per Customer</strong>
<strong>Specific Price per Audience</strong>
</span>
</div>
<div class="panel-body">
<p>
You may have a different sale price for different
groups of customers:
</p>
<ul>
<li>Consumers</li>
<li>Retailers</li>
<li>Company XYZ</li>
</ul>
<p>
Change the <i>Sale Price</i> option in
<a t-att-href="prepare_backend_url('sales_team.action_sale_config')">Sales Settings</a>
</p>
<li>Basic, Premium</li>
<li>Consumers, Retailers</li>
<li>USD, EUR, GBP</li>
</div>
</div>
</div>
@@ -572,28 +555,24 @@
</div>
<div class="panel-body">
<p>
Prices can be computed using advanced formulas.<br/>
Example: 15% discount when buying more than 3 t-shirts.
</p>
<p>
You can also combine several rules into a sequence.<br/>
Example: additional 10% discount during summer sales
</p>
<p>
Change the <i>Sale Price</i> option in
<a t-att-href="prepare_backend_url('sales_team.action_sale_config')">Sales Settings</a>
Create and combine rules:<br/>
<li>e.g. 15% discount when buying more than 3 t-shirts</li>
<li>additional 10% during summer sales</li>
</p>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="alert alert-info info_icon" role="alert">
<span class="fa fa-lightbulb-o fa-lg"/>
<p>
You can change the pricing method at anytime. We
recommend you to select the easiest option that
suits your needs for now on.
</p>
<span class="fa fa-lightbulb-o fa-2x"></span><p>To stimulate your customers, show them the public price and the discount applied to it. This is settable in the pricelist configuration if you allow discounts.</p>
</div>
<div class="well well-lg">
<strong>Next actions:</strong>
<li><a t-att-href="prepare_backend_url('sales_team.action_sale_config')" target="blank"> Select your pricing preference and allow discounts</a></li>
<li><a t-att-href="prepare_backend_url('product.product_pricelist_action2')" target="blank"> Configure your pricelists</a></li>
<li><a t-att-href="prepare_backend_url('account.action_account_config')" target="blank"> Apply multi-currencies</a></li>
<li><a href="https://www.odoo.com/documentation/user/9.0/sales.html" target="blank"> Read the documentation about pricing &amp; discounts</a></li>
</div>
</t>
+1 -1
View File
@@ -38,7 +38,7 @@ class Stage(models.Model):
on_change = fields.Boolean('Change Probability Automatically', help="Setting this stage will change the probability automatically on the opportunity.")
requirements = fields.Text('Requirements', help="Enter here the internal requirements for this stage (ex: Offer sent to customer). It will appear as a tooltip over the stage's name.")
team_id = fields.Many2one('crm.team', string='Team', ondelete='set null',
help='Specific team that uses this stage. Other teams will not ne able to see or use this stage.')
help='Specific team that uses this stage. Other teams will not be able to see or use this stage.')
legend_priority = fields.Text('Priority Management Explanation', translate=True,
help='Explanation text to help users using the star and priority mechanism on stages or issues that are in this stage.')
fold = fields.Boolean('Folded in Pipeline',
+10 -10
View File
@@ -17,18 +17,18 @@ class HrExpense(models.Model):
_description = "Expense"
_order = "date desc, id desc"
name = fields.Char(string='Expense Description', readonly=True, required=True, states={'draft': [('readonly', False)]})
date = fields.Date(readonly=True, states={'draft': [('readonly', False)]}, default=fields.Date.context_today, string="Date")
employee_id = fields.Many2one('hr.employee', string="Employee", required=True, readonly=True, states={'draft': [('readonly', False)]}, default=lambda self: self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1))
product_id = fields.Many2one('product.product', string='Product', readonly=True, states={'draft': [('readonly', False)]}, domain=[('can_be_expensed', '=', True)], required=True)
product_uom_id = fields.Many2one('product.uom', string='Unit of Measure', required=True, readonly=True, states={'draft': [('readonly', False)]}, default=lambda self: self.env['product.uom'].search([], limit=1, order='id'))
unit_amount = fields.Float(string='Unit Price', readonly=True, required=True, states={'draft': [('readonly', False)]}, digits=dp.get_precision('Product Price'))
quantity = fields.Float(required=True, readonly=True, states={'draft': [('readonly', False)]}, digits=dp.get_precision('Product Unit of Measure'), default=1)
name = fields.Char(string='Expense Description', readonly=True, required=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]})
date = fields.Date(readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, default=fields.Date.context_today, string="Date")
employee_id = fields.Many2one('hr.employee', string="Employee", required=True, readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, default=lambda self: self.env['hr.employee'].search([('user_id', '=', self.env.uid)], limit=1))
product_id = fields.Many2one('product.product', string='Product', readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, domain=[('can_be_expensed', '=', True)], required=True)
product_uom_id = fields.Many2one('product.uom', string='Unit of Measure', required=True, readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, default=lambda self: self.env['product.uom'].search([], limit=1, order='id'))
unit_amount = fields.Float(string='Unit Price', readonly=True, required=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, digits=dp.get_precision('Product Price'))
quantity = fields.Float(required=True, readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, digits=dp.get_precision('Product Unit of Measure'), default=1)
tax_ids = fields.Many2many('account.tax', 'expense_tax', 'expense_id', 'tax_id', string='Taxes', states={'done': [('readonly', True)], 'post': [('readonly', True)]})
untaxed_amount = fields.Float(string='Subtotal', store=True, compute='_compute_amount', digits=dp.get_precision('Account'))
total_amount = fields.Float(string='Total', store=True, compute='_compute_amount', digits=dp.get_precision('Account'))
company_id = fields.Many2one('res.company', string='Company', readonly=True, states={'draft': [('readonly', False)]}, default=lambda self: self.env.user.company_id)
currency_id = fields.Many2one('res.currency', string='Currency', readonly=True, states={'draft': [('readonly', False)]}, default=lambda self: self.env.user.company_id.currency_id)
company_id = fields.Many2one('res.company', string='Company', readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, default=lambda self: self.env.user.company_id)
currency_id = fields.Many2one('res.currency', string='Currency', readonly=True, states={'draft': [('readonly', False)], 'refused': [('readonly', False)]}, default=lambda self: self.env.user.company_id.currency_id)
analytic_account_id = fields.Many2one('account.analytic.account', string='Analytic Account', states={'post': [('readonly', True)], 'done': [('readonly', True)]}, oldname='analytic_account')
account_id = fields.Many2one('account.account', string='Account', states={'post': [('readonly', True)], 'done': [('readonly', True)]}, default=lambda self: self.env['ir.property'].get('property_account_expense_categ_id', 'product.category'))
description = fields.Text()
@@ -280,7 +280,7 @@ class HrExpense(models.Model):
if help_message:
alias_record = self.env.ref('hr_expense.mail_alias_expense')
if alias_record and alias_record.alias_domain and alias_record.alias_name:
link = "<a id='o_mail_test' href='mailto:%(email)s&subject=Lunch+with+customer%%3A+%%2412.32'>%(email)s</a>" % {
link = "<a id='o_mail_test' href='mailto:%(email)s?subject=Lunch%%20with%%20customer%%3A%%20%%2412.32'>%(email)s</a>" % {
'email': '%s@%s' % (alias_record.alias_name, alias_record.alias_domain)
}
return '<p class="oe_view_nocontent_create">%s<br/>%s</p>%s' % (
+1 -1
View File
@@ -278,7 +278,7 @@ class Holidays(models.Model):
if employee_id:
employee = self.env['hr.employee'].browse(employee_id)
resource = self.env['resource.resource'].sudo().search([('user_id', '=', employee.user_id.id)], limit=1)
resource = employee.resource_id
if resource and resource.calendar_id:
hours = resource.calendar_id.get_working_hours(from_dt, to_dt, resource_id=resource.id, compute_leaves=True)
uom_hour = resource.calendar_id.uom_id
+1 -1
View File
@@ -55,7 +55,7 @@ class Task(models.Model):
parent_id = fields.Many2one('project.task', string='Parent Task')
child_ids = fields.One2many('project.task', 'parent_id', string="Sub-tasks")
subtask_project_id = fields.Many2one('project.project', related="project_id.subtask_project_id", string='Sub-task Project')
subtask_project_id = fields.Many2one('project.project', related="project_id.subtask_project_id", string='Sub-task Project', readonly=True)
subtask_count = fields.Integer(compute='_get_subtask_count', type='integer', string="Sub-task count")
_constraints = [(models.BaseModel._check_recursion, 'Circular references are not permitted between tasks and sub-tasks', ['parent_id'])]
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0\n"
"Project-Id-Version: Odoo Server 10.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-18 14:42+0000\n"
"PO-Revision-Date: 2015-09-18 14:42+0000\n"
+1 -1
View File
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0\n"
"Project-Id-Version: Odoo Server 10.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-11-03 22:23+0000\n"
"PO-Revision-Date: 2015-11-03 22:23+0000\n"
+1 -1
View File
@@ -4,7 +4,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0\n"
"Project-Id-Version: Odoo Server 10.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-09-18 08:20+0000\n"
"PO-Revision-Date: 2015-09-18 08:20+0000\n"
+2 -1
View File
@@ -10,6 +10,7 @@ from odoo.http import request
class LinkTracker(http.Controller):
@http.route('/r/<string:code>', type='http', auth='none', website=True)
def full_url_redirect(self, code, **post):
request.env['link.tracker.click'].add_click(code, request.httprequest.remote_addr, request.session['geoip'].get('country_code'), stat_id=False)
country_code = request.session.geoip and request.session.geoip.get('country_code') or False
request.env['link.tracker.click'].add_click(code, request.httprequest.remote_addr, country_code, stat_id=False)
redirect_url = request.env['link.tracker'].get_url_from_code(code)
return werkzeug.utils.redirect(redirect_url or '', 301)
-7
View File
@@ -2024,13 +2024,6 @@ class MailThread(models.AbstractModel):
auto_delete=True,
auto_delete_message=True,
subtype_id=self.env.ref('mail.mt_note').id)
messages = self.env['mail.message'].sudo().search([
('model', '=', self._name),
('res_id', '=', record.id),
('subtype_id', '!=', False),
('subtype_id.internal', '=', False)], limit=1)
if messages:
messages.write({'needaction_partner_ids': [(4, pid) for pid in partner_ids]})
@api.multi
def message_auto_subscribe(self, updated_fields, values=None):
+6 -6
View File
@@ -26,8 +26,8 @@ class PublisherWarrantyContract(AbstractModel):
Users = self.env['res.users']
IrParamSudo = self.env['ir.config_parameter'].sudo()
dbuuid = IrParamSudo('database.uuid')
db_create_date = IrParamSudo('database.create_date')
dbuuid = IrParamSudo.get_param('database.uuid')
db_create_date = IrParamSudo.get_param('database.create_date')
limit_date = datetime.datetime.now()
limit_date = limit_date - datetime.timedelta(15)
limit_date_str = limit_date.strftime(misc.DEFAULT_SERVER_DATETIME_FORMAT)
@@ -42,9 +42,9 @@ class PublisherWarrantyContract(AbstractModel):
domain = [('application', '=', True), ('state', 'in', ['installed', 'to upgrade', 'to remove'])]
apps = self.env['ir.module.module'].sudo().search_read(domain, ['name'])
enterprise_code = IrParamSudo('database.enterprise_code')
enterprise_code = IrParamSudo.get_param('database.enterprise_code')
web_base_url = IrParamSudo('web.base.url')
web_base_url = IrParamSudo.get_param('web.base.url')
msg = {
"dbuuid": dbuuid,
"nbr_users": nbr_users,
@@ -60,7 +60,7 @@ class PublisherWarrantyContract(AbstractModel):
"enterprise_code": enterprise_code,
}
if user.partner_id.company_id:
company_id = user.partner_id.company_id.id
company_id = user.partner_id.company_id
msg.update(company_id.read(["name", "email", "phone"])[0])
return msg
@@ -101,7 +101,7 @@ class PublisherWarrantyContract(AbstractModel):
raise UserError(_("Error during communication with the publisher warranty server."))
# old behavior based on res.log; now on mail.message, that is not necessarily installed
user = self.env['res.users'].sudo().browse(SUPERUSER_ID)
poster = self.env.sudo().ref('mail.channel_all_employees')
poster = self.sudo().env.ref('mail.channel_all_employees')
if not (poster and poster.exists()):
if not user.exists():
return True
+1 -1
View File
@@ -672,7 +672,7 @@ var chat_manager = {
// post a message in a channel or execute a command
return ChannelModel.call(data.command ? 'execute_command' : 'message_post', [options.channel_id], _.extend(msg, {
message_type: 'comment',
content_subtype: 'plaintext',
content_subtype: 'html',
subtype: 'mail.mt_comment',
command: data.command,
}));
+1 -1
View File
@@ -72,7 +72,7 @@ var PartnerInviteDialog = Dialog.extend({
var data = this.$input.select2('data');
if(data.length >= 1){
var ChannelModel = new Model('mail.channel');
return ChannelModel.call('channel_invite', [], {ids : [this.channel_id], partner_ids: _.pluck(data, 'id')})
return ChannelModel.call('channel_invite', [this.channel_id], {partner_ids: _.pluck(data, 'id')})
.then(function(){
var names = _.escape(_.pluck(data, 'text').join(', '));
var notification = _.str.sprintf(_t('You added <b>%s</b> to the conversation.'), names);
+3 -2
View File
@@ -466,8 +466,9 @@ class MailComposer(models.TransientModel):
bodies = self.render_template(self.body, self.model, res_ids, post_process=True)
emails_from = self.render_template(self.email_from, self.model, res_ids)
replies_to = self.render_template(self.reply_to, self.model, res_ids)
default_recipients = self.env['mail.thread'].message_get_default_recipients(res_model=self.model, res_ids=res_ids)
default_recipients = {}
if not self.partner_ids:
default_recipients = self.env['mail.thread'].message_get_default_recipients(res_model=self.model, res_ids=res_ids)
results = dict.fromkeys(res_ids, False)
for res_id in res_ids:
+1 -1
View File
@@ -7,7 +7,7 @@ import random
from odoo import api, fields, models, _
from odoo.exceptions import UserError
from odoo.tools.safe_eval import safe_eval
from openerp.tools.translate import html_translate
from odoo.tools.translate import html_translate
class MassMailingTag(models.Model):
+3 -3
View File
@@ -74,7 +74,7 @@
<field name="open"/>
<field name="memo"/>
<field name="date_done"/>
<field name="message_follower_ids"/>
<field name="message_partner_ids"/>
<field name="tag_ids"/>
<templates>
<t t-name="kanban-box">
@@ -101,9 +101,9 @@
<!-- title -->
<field name="name"/>
</span>
<t t-if="record.message_follower_ids.raw_value.length &gt; 1">
<t t-if="record.message_partner_ids.raw_value.length &gt; 1">
<div class="clearfix"></div>
<t t-foreach="record.message_follower_ids.raw_value" t-as="follower">
<t t-foreach="record.message_partner_ids.raw_value" t-as="follower">
<img t-att-src="kanban_image('res.partner', 'image_small', follower)" width="24" height="24" class="oe_kanban_avatar pull-right" t-att-data-member_id="follower"/>
</t>
<div class="clearfix"></div>
+3 -3
View File
@@ -20,9 +20,9 @@ class AcquirerAdyen(models.Model):
_inherit = 'payment.acquirer'
provider = fields.Selection(selection_add=[('adyen', 'Adyen')])
adyen_merchant_account = fields.Char('Merchant Account', required_if_provider='adyen')
adyen_skin_code = fields.Char('Skin Code', required_if_provider='adyen')
adyen_skin_hmac_key = fields.Char('Skin HMAC Key', required_if_provider='adyen')
adyen_merchant_account = fields.Char('Merchant Account', required_if_provider='adyen', groups='base.group_user')
adyen_skin_code = fields.Char('Skin Code', required_if_provider='adyen', groups='base.group_user')
adyen_skin_hmac_key = fields.Char('Skin HMAC Key', required_if_provider='adyen', groups='base.group_user')
@api.model
def _get_adyen_urls(self, environment):
+2 -2
View File
@@ -21,8 +21,8 @@ class PaymentAcquirerAuthorize(models.Model):
_inherit = 'payment.acquirer'
provider = fields.Selection(selection_add=[('authorize', 'Authorize.Net')])
authorize_login = fields.Char(string='API Login Id', required_if_provider='authorize')
authorize_transaction_key = fields.Char(string='API Transaction Key', required_if_provider='authorize')
authorize_login = fields.Char(string='API Login Id', required_if_provider='authorize', groups='base.group_user')
authorize_transaction_key = fields.Char(string='API Transaction Key', required_if_provider='authorize', groups='base.group_user')
def _get_feature_support(self):
"""Get advanced feature support by provider.
+2 -2
View File
@@ -26,8 +26,8 @@ class AcquirerBuckaroo(models.Model):
_inherit = 'payment.acquirer'
provider = fields.Selection(selection_add=[('buckaroo', 'Buckaroo')])
brq_websitekey = fields.Char('WebsiteKey', required_if_provider='buckaroo')
brq_secretkey = fields.Char('SecretKey', required_if_provider='buckaroo')
brq_websitekey = fields.Char('WebsiteKey', required_if_provider='buckaroo', groups='base.group_user')
brq_secretkey = fields.Char('SecretKey', required_if_provider='buckaroo', groups='base.group_user')
def _get_buckaroo_urls(self, environment):
""" Buckaroo URLs
+5 -5
View File
@@ -27,11 +27,11 @@ class PaymentAcquirerOgone(models.Model):
_inherit = 'payment.acquirer'
provider = fields.Selection(selection_add=[('ogone', 'Ogone')])
ogone_pspid = fields.Char('PSPID', required_if_provider='ogone')
ogone_userid = fields.Char('API User ID', required_if_provider='ogone')
ogone_password = fields.Char('API User Password', required_if_provider='ogone')
ogone_shakey_in = fields.Char('SHA Key IN', size=32, required_if_provider='ogone')
ogone_shakey_out = fields.Char('SHA Key OUT', size=32, required_if_provider='ogone')
ogone_pspid = fields.Char('PSPID', required_if_provider='ogone', groups='base.group_user')
ogone_userid = fields.Char('API User ID', required_if_provider='ogone', groups='base.group_user')
ogone_password = fields.Char('API User Password', required_if_provider='ogone', groups='base.group_user')
ogone_shakey_in = fields.Char('SHA Key IN', size=32, required_if_provider='ogone', groups='base.group_user')
ogone_shakey_out = fields.Char('SHA Key OUT', size=32, required_if_provider='ogone', groups='base.group_user')
ogone_alias_usage = fields.Char('Alias Usage', default="Allow saving my payment data",
help="If you want to use Ogone Aliases, this default "
"Alias Usage will be presented to the customer as the "
+1 -1
View File
@@ -62,7 +62,7 @@ class PaypalController(http.Controller):
self.paypal_validate_data(**post)
return ''
@http.route('/payment/paypal/dpn', type='http', auth="none", methods=['POST'], csrf=False)
@http.route('/payment/paypal/dpn', type='http', auth="none", methods=['POST', 'GET'], csrf=False)
def paypal_dpn(self, **post):
""" Paypal DPN """
_logger.info('Beginning Paypal DPN form_feedback with post data %s', pprint.pformat(post)) # debug
+7 -7
View File
@@ -17,17 +17,17 @@ class AcquirerPaypal(models.Model):
_inherit = 'payment.acquirer'
provider = fields.Selection(selection_add=[('paypal', 'Paypal')])
paypal_email_account = fields.Char('Paypal Email ID', required_if_provider='paypal')
paypal_email_account = fields.Char('Paypal Email ID', required_if_provider='paypal', groups='base.group_user')
paypal_seller_account = fields.Char(
'Paypal Merchant ID',
'Paypal Merchant ID', groups='base.group_user',
help='The Merchant ID is used to ensure communications coming from Paypal are valid and secured.')
paypal_use_ipn = fields.Boolean('Use IPN', default=True, help='Paypal Instant Payment Notification')
paypal_use_ipn = fields.Boolean('Use IPN', default=True, help='Paypal Instant Payment Notification', groups='base.group_user')
# Server 2 server
paypal_api_enabled = fields.Boolean('Use Rest API', default=False)
paypal_api_username = fields.Char('Rest API Username')
paypal_api_password = fields.Char('Rest API Password')
paypal_api_access_token = fields.Char('Access Token')
paypal_api_access_token_validity = fields.Datetime('Access Token Validity')
paypal_api_username = fields.Char('Rest API Username', groups='base.group_user')
paypal_api_password = fields.Char('Rest API Password', groups='base.group_user')
paypal_api_access_token = fields.Char('Access Token', groups='base.group_user')
paypal_api_access_token_validity = fields.Datetime('Access Token Validity', groups='base.group_user')
# Default paypal fees
fees_dom_fixed = fields.Float(default=0.35)
fees_dom_var = fields.Float(default=3.4)
+1 -1
View File
@@ -26,7 +26,7 @@ class SipsController(http.Controller):
def sips_validate_data(self, **post):
sips = request.env['payment.acquirer'].search([('provider', '=', 'sips')], limit=1)
security = sips._sips_generate_shasign(post)
security = sips.sudo()._sips_generate_shasign(post)
if security == post['Seal']:
_logger.debug('Sips: validated data')
return request.env['payment.transaction'].sudo().form_feedback(post, 'sips')
+2 -2
View File
@@ -37,8 +37,8 @@ class AcquirerSips(models.Model):
_inherit = 'payment.acquirer'
provider = fields.Selection(selection_add=[('sips', 'Sips')])
sips_merchant_id = fields.Char('SIPS API User Password', required_if_provider='sips')
sips_secret = fields.Char('SIPS Secret', size=64, required_if_provider='sips')
sips_merchant_id = fields.Char('SIPS API User Password', required_if_provider='sips', groups='base.group_user')
sips_secret = fields.Char('SIPS Secret', size=64, required_if_provider='sips', groups='base.group_user')
def _get_sips_urls(self, environment):
""" Worldline SIPS URLS """
+1
View File
@@ -57,6 +57,7 @@ Main Features
'views/res_config_view.xml',
'views/report_statement.xml',
'views/report_userlabel.xml',
'views/report_saledetails.xml',
'views/point_of_sale.xml',
'views/point_of_sale_dashboard.xml',
],
+7
View File
@@ -22,3 +22,10 @@ class PosController(http.Controller):
'session_info': json.dumps(request.env['ir.http'].session_info())
}
return request.render('point_of_sale.index', qcontext=context)
@http.route('/pos/sale_details_report', type='http', auth='user')
def print_sale_details(self, date_start=False, date_stop=False, **kw):
r = request.env['report.point_of_sale.report_saledetails']
pdf = request.env['report'].with_context(date_start=date_start, date_stop=date_stop).get_pdf(r, 'point_of_sale.report_saledetails')
pdfhttpheaders = [('Content-Type', 'application/pdf'), ('Content-Length', len(pdf))]
return request.make_response(pdf, headers=pdfhttpheaders)
+1 -1
View File
@@ -71,7 +71,7 @@ class PosConfig(models.Model):
iface_invoicing = fields.Boolean(string='Invoicing', help='Enables invoice generation from the Point of Sale', default=True)
iface_big_scrollbars = fields.Boolean('Large Scrollbars', help='For imprecise industrial touchscreens')
iface_print_auto = fields.Boolean(string='Automatic Receipt Printing', default=False,
help='The receipt will automatically be p-rinted at the end of each order')
help='The receipt will automatically be printed at the end of each order')
iface_print_skip_screen = fields.Boolean(string='Skip Receipt Screen', default=True,
help='The receipt screen will be skipped if the receipt can be printed automatically.')
iface_precompute_cash = fields.Boolean(string='Prefill Cash Payment',
+103 -1
View File
@@ -1,6 +1,7 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
import logging
from datetime import timedelta
from functools import partial
import psycopg2
@@ -8,7 +9,7 @@ import psycopg2
from odoo import api, fields, models, tools, _
from odoo.tools import float_is_zero
from odoo.exceptions import UserError
from odoo.http import request
import odoo.addons.decimal_precision as dp
_logger = logging.getLogger(__name__)
@@ -781,3 +782,104 @@ class PosOrderLineLot(models.Model):
order_id = fields.Many2one('pos.order', related="pos_order_line_id.order_id")
lot_name = fields.Char('Lot Name')
product_id = fields.Many2one('product.product', related='pos_order_line_id.product_id')
class ReportSaleDetails(models.AbstractModel):
_name = 'report.point_of_sale.report_saledetails'
@api.model
def get_sale_details(self, date_start=False, date_stop=False, company=False):
""" Serialise the orders of the day information
params: date_start, date_stop string representing the day of order
"""
if not company:
company = self.env.user.company_id
today = fields.Datetime.from_string(fields.Date.context_today(self))
if date_start:
date_start = fields.Datetime.from_string(date_start)
else:
# start by default today 00:00:00
date_start = today
if date_stop:
# set time to 23:59:59
date_stop = fields.Datetime.from_string(date_stop) + timedelta(days=1, seconds=-1)
else:
# stop by default today 23:59:59
date_stop = today + timedelta(days=1, seconds=-1)
# avoid a date_stop smaller than date_start
date_stop = max(date_stop, date_start)
date_start = fields.Datetime.to_string(date_start)
date_stop = fields.Datetime.to_string(date_stop)
orders = self.env['pos.order'].search([('date_order', '>=', date_start), ('date_order', '<=', date_stop),
('state', 'in', ['paid','invoiced','done']),
('company_id', '=', company.id)])
user_currency = self.env.user.company_id.currency_id
total = 0.0
products_sold = {}
taxes = {}
for order in orders:
if user_currency != order.pricelist_id.currency_id:
total += order.pricelist_id.currency_id.compute(order.amount_total, user_currency)
else:
total += order.amount_total
currency = order.session_id.currency_id
for line in order.lines:
key = (line.product_id, line.price_unit, line.discount)
products_sold.setdefault(key, 0.0)
products_sold[key] += line.qty
if line.tax_ids_after_fiscal_position:
line_taxes = line.tax_ids_after_fiscal_position.compute_all(line.price_unit * (1-(line.discount or 0.0)/100.0), currency, line.qty, product=line.product_id, partner=line.order_id.partner_id or False)
for tax in line_taxes['taxes']:
taxes.setdefault(tax['id'], {'name': tax['name'], 'total':0.0})
taxes[tax['id']]['total'] += tax['amount']
st_line_ids = self.env["account.bank.statement.line"].search([('pos_statement_id', 'in', orders.ids)]).ids
if st_line_ids:
self.env.cr.execute("""
SELECT aj.name, sum(amount) total
FROM account_bank_statement_line AS absl,
account_bank_statement AS abs,
account_journal AS aj
WHERE absl.statement_id = abs.id
AND abs.journal_id = aj.id
AND absl.id IN %s
GROUP BY aj.name
""", (tuple(st_line_ids),))
payments = self.env.cr.dictfetchall()
else:
payments = []
return {
'total_paid': user_currency.round(total),
'payments': payments,
'company_name': self.env.user.company_id.name,
'taxes': taxes.values(),
'products': [{
'product_id': product.id,
'product_name': product.name[:20],
'code': product.default_code,
'quantity': qty,
'price_unit': price_unit,
'discount': discount,
'uom': product.uom_id.name
} for (product, price_unit, discount), qty in products_sold.items()]
}
@api.multi
def render_html(self, data=None):
company = request.env.user.company_id
date_start = self.env.context.get('date_start', False)
date_stop = self.env.context.get('date_stop', False)
data = dict(data or {}, date_start=date_start, date_stop=date_stop)
data.update(self.get_sale_details(date_start, date_stop, company))
return self.env['report'].render('point_of_sale.report_saledetails', data)
@@ -32,7 +32,7 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan" style="color:#A24689;">An interface designed for productivity</h2>
<h3 class="oe_slogan oe_mb32">The Point of Sales that keeps everything where you need it</h3>
<h3 class="oe_slogan oe_mb32">The point of sale that keeps everything where you need it</h3>
<div class="oe_span4 text-center">
<span class="fa fa-paint-brush fa-2x"/>
<h4 class="oe_mt16 oe_mb8">
@@ -80,7 +80,7 @@
While an Internet connection is required to start the Point of Sale, it will stay operational even after complete disconnection. Because it's extremely flexible, you can configure Odoo POS to meet your precise needs.
</p>
<p class="oe_mt8">
No installation and no specific hardware is required to use Odoo POS. Our solution for point of sales is compatible with desktop PCs, iPads and other tablet computers, laptops and industrial POS machines.
No installation and no specific hardware is required to use Odoo POS. Our solution for points of sale is compatible with desktop PCs, iPads and other tablet computers, laptops and industrial POS machines.
</p>
</div>
</div>
@@ -128,7 +128,7 @@
<div class="oe_row oe_spaced">
<div class="lead text-center">
<p>
Odoo Point of Sales is more than an ordinary POS.
Odoo Point of Sale is more than an ordinary POS.
<br/>
Our app provides extra features to deliver awesome customer service.
</p>
@@ -145,7 +145,7 @@
</div>
<div class='oe_span6'>
<p class="oe_mt32 text-justify">
Give your shopper a positive experience by improving your services. Handle refunds, track warranties, follow customer claims, plan order deliveries, etc... in one interface. Bring your sales at the next level. Odoo POS can produce customer invoices in just a few clicks and synchronize with Odoo Accounting. Your accounting will be easier and more accurate. Our Point of Sales helps you to control sales and cash in real time but also to keep your whole operations under control.
Give your shopper a positive experience by improving your services. Handle refunds, track warranties, follow customer claims, plan order deliveries, etc... in one interface. Bring your sales at the next level. Odoo POS can produce customer invoices in just a few clicks and synchronize with Odoo Accounting. Your accounting will be easier and more accurate. Our Point of Sale helps you to control sales and cash in real time but also to keep your whole operations under control.
</p>
</div>
</div>
@@ -406,6 +406,23 @@ var ProxyStatusWidget = StatusWidget.extend({
},
});
/* --------- The Sale Details --------- */
// Generates a report to print the sales of the
// day on a ticket
var SaleDetailsButton = PosBaseWidget.extend({
template: 'SaleDetailsButton',
start: function(){
var self = this;
this.$el.click(function(){
self.pos.proxy.print_sale_details();
});
},
});
/*--------------------------------------*\
| THE CHROME |
\*======================================*/
@@ -662,6 +679,11 @@ var Chrome = PosBaseWidget.extend({
'name': 'order_selector',
'widget': OrderSelectorWidget,
'replace': '.placeholder-OrderSelectorWidget',
},{
'name': 'sale_details',
'widget': SaleDetailsButton,
'append': '.pos-rightheader',
'condition': function(){ return this.pos.config.use_proxy; },
},{
'name': 'proxy_status',
'widget': ProxyStatusWidget,
@@ -769,6 +791,7 @@ return {
HeaderButtonWidget: HeaderButtonWidget,
OrderSelectorWidget: OrderSelectorWidget,
ProxyStatusWidget: ProxyStatusWidget,
SaleDetailsButton: SaleDetailsButton,
StatusWidget: StatusWidget,
SynchNotificationWidget: SynchNotificationWidget,
UsernameWidget: UsernameWidget,
@@ -2,8 +2,10 @@ odoo.define('point_of_sale.devices', function (require) {
"use strict";
var core = require('web.core');
var Model = require('web.DataModel');
var Session = require('web.Session');
var QWeb = core.qweb;
var _t = core._t;
// the JobQueue schedules a sequence of 'jobs'. each job is
@@ -434,6 +436,23 @@ var ProxyDevice = core.Class.extend(core.mixins.PropertiesMixin,{
send_printing_job();
},
print_sale_details: function() {
var self = this;
new Model('report.point_of_sale.report_saledetails').call('get_sale_details').then(function(result){
var env = {
company: self.pos.company,
pos: self.pos,
products: result.products,
payments: result.payments,
taxes: result.taxes,
total_paid: result.total_paid,
date: (new Date()).toLocaleString(),
};
var report = QWeb.render('SaleDetailsReport', env);
self.print_receipt(report);
})
},
// asks the proxy to log some information, as with the debug.log you can provide several arguments.
log: function(){
return this.message('log',{'arguments': _.toArray(arguments)});
+9 -4
View File
@@ -1405,13 +1405,14 @@ exports.Orderline = Backbone.Model.extend({
},
compute_all: function(taxes, price_unit, quantity, currency_rounding) {
var self = this;
var total_excluded = round_pr(price_unit * quantity, currency_rounding);
var total_included = total_excluded;
var base = total_excluded;
var list_taxes = [];
var currency_rounding_bak = currency_rounding;
if (this.pos.company.tax_calculation_rounding_method == "round_globally"){
currency_rounding = currency_rounding * 0.00001;
}
var total_excluded = round_pr(price_unit * quantity, currency_rounding);
var total_included = total_excluded;
var base = total_excluded;
_(taxes).each(function(tax) {
tax = self._map_tax_fiscal_position(tax);
if (tax.amount_type === 'group'){
@@ -1445,7 +1446,11 @@ exports.Orderline = Backbone.Model.extend({
}
}
});
return {taxes: list_taxes, total_excluded: total_excluded, total_included: total_included};
return {
taxes: list_taxes,
total_excluded: round_pr(total_excluded, currency_rounding_bak),
total_included: round_pr(total_included, currency_rounding_bak)
};
},
get_all_prices: function(){
var price_unit = this.get_unit_price() * (1.0 - (this.get_discount() / 100.0));
@@ -0,0 +1,63 @@
odoo.define('point_of_sale.report', function (require) {
"use strict";
var chat_manager = require('mail.chat_manager');
var composer = require('mail.composer');
var ChatThread = require('mail.ChatThread');
var utils = require('mail.utils');
var config = require('web.config');
var core = require('web.core');
var data = require('web.data');
var Dialog = require('web.Dialog');
var framework = require('web.framework');
var Model = require('web.Model');
var pyeval = require('web.pyeval');
var SearchView = require('web.SearchView');
var ActionManager = require('web.ActionManager');
var ControlPanelMixin = require('web.ControlPanelMixin');
var datepicker = require('web.datepicker');
var Widget = require('web.Widget');
var QWeb = core.qweb;
var _t = core._t;
// TODO replace in v10 with proper wizard
var PosDetailsWidget = Widget.extend(ControlPanelMixin, {
template: 'WizardSaleDetailsReport',
events: {
"click .js_generate": "renderReport",
},
renderElement: function() {
this._super();
var current_date = new moment();
this.dp_start = new datepicker.DateWidget(this);
this.dp_start.insertBefore(this.$el.find('.js_date_start'));
this.dp_start.set_value(current_date.format('YYYY-MM-DD'));
this.dp_stop = new datepicker.DateWidget(this);
this.dp_stop.insertAfter(this.$el.find('.js_date_stop'));
this.dp_stop.set_value(current_date.format('YYYY-MM-DD'));
},
renderReport: function() {
var start = this.dp_start.get_value();
var stop = this.dp_stop.get_value();
var url = '/pos/sale_details_report?date_start='+start+'&date_stop='+stop;
window.open(url, '_blank');
},
});
core.action_registry.add('report_pos_details', PosDetailsWidget);
return PosDetailsWidget;
});
@@ -38,7 +38,7 @@ var PosBaseWidget = Widget.extend({
var currency = (this.pos && this.pos.currency) ? this.pos.currency : {symbol:'$', position: 'after', rounding: 0.01, decimals: 2};
var decimals = currency.decimals;
if (precision && (typeof this.pos.dp[precision]) !== undefined) {
if (precision && this.pos.dp[precision] !== undefined) {
decimals = this.pos.dp[precision];
}
+116
View File
@@ -84,6 +84,14 @@
</div>
</t>
<t t-name="SaleDetailsButton">
<div class="oe_status">
<div class="js_connected oe_icon">
<i class='fa fa-fw fa-print'></i>
</div>
</div>
</t>
<t t-name="HeaderButtonWidget">
<div class="header-button">
<t t-esc="widget.label" />
@@ -846,6 +854,114 @@
</receipt>
</t>
<t t-name="SaleDetailsReport">
<receipt align='center' width='40' value-thousands-separator='' >
<t t-if='pos.company_logo_base64'>
<img t-att-src='pos.company_logo_base64' />
<br/>
</t>
<t t-if='!pos.company_logo_base64'>
<h1><t t-esc='company.name' /></h1>
<br/>
</t>
<br /><br />
<!-- Orderlines -->
<div class='orderlines' line-ratio='0.6'>
<t t-foreach='products' t-as='line'>
<line>
<left><t t-esc='line.product_name' /></left>
<right>
<value value-decimals='2' value-autoint='on'>
<t t-esc='line.quantity' />
</value>
<t t-if='line.uom !== "Unit(s)"'>
<t t-esc='line.uom' />
</t>
</right>
<right>
<value><t t-esc='line.price_unit' /></value>
</right>
</line>
<t t-if='line.discount !== 0'>
<line indent='1'><left>Discount: <t t-esc='line.discount' />%</left></line>
</t>
</t>
</div>
<br/>
<line><left>------------------------</left></line>
<br/>
<line>
<left>Payments:</left>
</line>
<line t-foreach='payments' t-as='payment'>
<left><t t-esc='payment.name' /></left>
<right>
<t t-esc='payment.total'/>
</right>
</line>
<br/>
<line><left>------------------------</left></line>
<br/>
<line>
<left>Taxes:</left>
</line>
<line t-foreach='taxes' t-as='taxe'>
<left><t t-esc='taxe.name' /></left>
<right>
<t t-esc='taxe.total'/>
</right>
</line>
<br/>
<line><left>------------------------</left></line>
<br/>
<line>
<left>Total:</left>
<right>
<t t-esc='total_paid'/>
</right>
</line>
<br/>
<div font='b'>
<div><t t-esc='date' /></div>
</div>
</receipt>
</t>
<t t-name="WizardSaleDetailsReport">
<div class="o_form_view"><div class="oe_form_sheetbg o_form_sheet_bg"><div class="oe_form_sheet oe_form_sheet_width o_form_sheet">
<div class="pos_details_dates">
<h3>Select Dates for the report</h3>
<table class="table-condensed">
<tr>
<td><strong>Start date</strong></td>
<td><div class="js_date_start"></div></td>
</tr>
<tr>
<td><strong>Stop date</strong></td>
<td><div class="js_date_stop"></div></td>
</tr>
</table>
<p>
<button class="js_generate">Generate report</button>
</p>
</div>
</div></div></div>
</t>
<t t-name="PopupWidget">
<div class="modal-dialog">
<div class="popup popup-alert">
@@ -17,5 +17,11 @@
<field name="report_name">point_of_sale.report_invoice</field>
</record>
<record id="sale_details_report" model="ir.actions.report.xml">
<field name="name">Sale Details</field>
<field name="model">report.point_of_sale.details</field>
<field name="report_type">qweb-pdf</field>
<field name="report_name">point_of_sale.report_saledetails</field>
</record>
</odoo>
@@ -4,6 +4,7 @@
<xpath expr="." position="inside">
<link rel="stylesheet" href="/point_of_sale/static/src/less/pos_dashboard.less"/>
<script type="text/javascript" src="/point_of_sale/static/src/js/tour.js"></script>
<script type="text/javascript" src="/point_of_sale/static/src/js/report.js"></script>
</xpath>
</template>
</odoo>
@@ -68,5 +68,11 @@
<field name="context">{'group_by_no_leaf':1,'group_by':[]}</field>
</record>
<record id="action_report_pos_details" model="ir.actions.client">
<field name="name">Sale Details</field>
<field name="tag">report_pos_details</field>
</record>
<menuitem id="menu_report_pos_order_all" name="Orders" action="action_report_pos_order_all" parent="menu_point_rep" sequence="3"/>
<menuitem id="menu_report_order_details" name="Sale Details" action="action_report_pos_details" parent="menu_point_rep" sequence="4"/>
</odoo>
@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<template id="report_saledetails">
<t t-call="report.html_container">
<t t-call="report.internal_layout">
<div class="page">
<div class="text-center">
<h2>Sale Details</h2>
<strong><t t-esc="date_start"/> - <t t-esc="date_stop"/></strong>
</div>
<!-- Orderlines -->
<h3>Products</h3>
<table class="table table-condensed">
<thead><tr>
<th>Product</th>
<th>Quantity</th>
<th>Price Unit</th>
</tr></thead>
<tbody>
<tr t-foreach='products' t-as='line'>
<td><t t-esc="line['product_name']" /></td>
<td>
<t t-esc="line['quantity']" />
<t t-if='line["uom"] != "Unit(s)"'>
<t t-esc='line["uom"]' />
</t>
</td>
<td>
<t t-esc='line["price_unit"]' />
<t t-if='line["discount"] != 0'>
Disc: <t t-esc='line["discount"]' />%
</t>
</td>
</tr>
</tbody>
</table>
<br/>
<h3>Payments</h3>
<table class="table table-condensed">
<thead><tr>
<th>Name</th>
<th>Total</th>
</tr></thead>
<tbody>
<tr t-foreach='payments' t-as='payment'>
<td><t t-esc="payment['name']" /></td>
<td><t t-esc="payment['total']" /></td>
</tr>
</tbody>
</table>
<br/>
<h3>Taxes</h3>
<table class="table table-condensed">
<thead><tr>
<th>Name</th>
<th>Total</th>
</tr></thead>
<tbody>
<tr t-foreach='taxes' t-as='tax'>
<td><t t-esc="tax['name']" /></td>
<td><t t-esc="tax['total']" /></td>
</tr>
</tbody>
</table>
<br/>
<br/>
<strong>Total: <t t-esc='total_paid'/></strong>
</div>
</t>
</t>
</template>
</data>
</openerp>
@@ -9,7 +9,7 @@
<button string="Apply" type="object" name="execute" class="oe_highlight"/>
<button string="Cancel" type="object" name="cancel" class="oe_link"/>
</header>
<group string="Importable Point of Sales Data">
<group string="Importable Point of Sale Data">
<label for="div" string="Beverages"/>
<div>
<div>
+2 -2
View File
@@ -7,9 +7,9 @@
'version': '1.0',
'category': 'Point of Sale',
'sequence': 99,
'summary': 'Common Drinks data for point of sales',
'summary': 'Common Drinks data for points of sale',
'description': """
Common drinks data for point of sales
Common drinks data for points of sale
""",
'depends': ['point_of_sale'],
'data': [
-8
View File
@@ -196,13 +196,5 @@ parameter) will see those record just disappear.
<field name="fields_id" search="[('model','=','res.partner'),('name','=','property_product_pricelist')]"/>
<field eval="'product.pricelist,'+str(ref('list0'))" name="value"/>
</record>
<record forcecreate="True" id="property_product_pricelist_demo" model="ir.property">
<field name="name">property_product_pricelist</field>
<field name="fields_id" search="[('model','=','res.partner'),('name','=','property_product_pricelist')]"/>
<field eval="'product.pricelist,'+str(ref('list0'))" name="value"/>
<field eval="'res.partner,'+str(ref('base.partner_demo'))" name="res_id"/>
</record>
</data>
</odoo>
+7
View File
@@ -716,5 +716,12 @@ QWERTY keyboard</field>
<field name="price">13.50</field>
</record>
<record forcecreate="True" id="property_product_pricelist_demo" model="ir.property">
<field name="name">property_product_pricelist</field>
<field name="fields_id" search="[('model','=','res.partner'),('name','=','property_product_pricelist')]"/>
<field eval="'product.pricelist,'+str(ref('list0'))" name="value"/>
<field eval="'res.partner,'+str(ref('base.partner_demo'))" name="res_id"/>
</record>
</data>
</odoo>
+10 -1
View File
@@ -116,7 +116,7 @@ class ProductProduct(models.Model):
help="This is the sum of the extra price of all attributes")
lst_price = fields.Float(
'Sale Price', compute='_compute_product_lst_price',
digits=dp.get_precision('Product Price'), inverse='_set_product_price',
digits=dp.get_precision('Product Price'), inverse='_set_product_lst_price',
help="The sale price is managed from the product template. Click on the 'Variant Prices' button to set the extra attribute prices.")
default_code = fields.Char('Internal Reference', index=True)
@@ -198,6 +198,15 @@ class ProductProduct(models.Model):
value -= product.price_extra
product.write({'list_price': value})
def _set_product_lst_price(self):
for product in self:
if self._context.get('uom'):
value = self.env['product.uom'].browse(self._context['uom'])._compute_price(product.lst_price, product.uom_id)
else:
value = product.lst_price
value -= product.price_extra
product.write({'list_price': value})
@api.depends('attribute_value_ids.price_ids.price_extra', 'attribute_value_ids.price_ids.product_tmpl_id')
def _compute_product_price_extra(self):
# TDE FIXME: do a real multi and optimize a bit ?
+1
View File
@@ -122,6 +122,7 @@
<field name="res_model">product.template</field>
<field name="view_mode">kanban,tree,form</field>
<field name="view_type">form</field>
<field name="context">{}</field>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define a new product.
+1 -1
View File
@@ -12,7 +12,7 @@ class ProjectConfiguration(models.TransientModel):
default=lambda self: self.env.user.company_id)
project_time_mode_id = fields.Many2one(related='company_id.project_time_mode_id', string="Project Time Unit *")
module_pad = fields.Selection([
(0, "Task description is a plain text"),
(0, "Task description is plain text"),
(1, "Collaborative rich text on task description")
], string="Pads",
help='Lets the company customize which Pad installation should be used to link to new pads '
+1 -1
View File
@@ -29,7 +29,7 @@
</group>
<group name="timesheets"/>
<div>
<span>(*) This configuration value is related to the company you're logged in.</span>
<span>(*) This configuration is related to the company you're logged into.</span>
</div>
</form>
</field>
+1 -1
View File
@@ -31,7 +31,7 @@
<field name="module_stock_dropshipping" widget="radio"/>
</group>
<div>
<span>(*) This configuration value is related to the company you're logged in.</span>
<span>(*) This configuration is related to the company you're logged into.</span>
</div>
</form>
</field>
+2 -1
View File
@@ -80,9 +80,10 @@ class RatingMixin(models.AbstractModel):
def rating_get_access_token(self, partner=None):
if not partner:
partner = self.rating_get_partner_id()
rated_partner = self.rating_get_rated_partner_id()
ratings = self.rating_ids.filtered(lambda x: x.partner_id.id == partner.id and not x.consumed)
if not ratings:
rating = self.env['rating.rating'].create({'partner_id': partner.id, 'res_model': self._name, 'res_id': self.id})
rating = self.env['rating.rating'].create({'partner_id': partner.id, 'rated_partner_id': rated_partner.id, 'res_model': self._name, 'res_id': self.id})
else:
rating = ratings[0]
return rating.access_token
+1 -1
View File
@@ -134,7 +134,7 @@
</p>
<form class="form-horizontal" t-attf-action="/rating/#{token}/#{rate}/submit_feedback" method="post">
<input type="hidden" name="csrf_token" t-att-value="request.csrf_token()"/>
<textarea class="form-control" name="feedback" rows="8" t-esc="rating.feedback"></textarea>
<textarea class="form-control" name="feedback" rows="8" t-att-value="rating.feedback"></textarea>
<button type="submit" class="btn btn-primary" style="margin-top:8px;">Send Feedback</button>
</form>
</div>
+1 -1
View File
@@ -97,7 +97,7 @@
<p>This customer survey has been sent because your task has been moved to the stage <b>${object.stage_id.name}</b></p>
% endif
% if object.project_id.rating_status == 'periodic':
<p>This customer survey is send <b>${object.project_id.rating_status_period}</b> as long as the task is in the <b>${object.stage_id.name}</b> stage.
<p>This customer survey is sent <b>${object.project_id.rating_status_period}</b> as long as the task is in the <b>${object.stage_id.name}</b> stage.
% endif
<p>Email automatically sent by <a href="https://www.odoo.com/page/project-management" style="color:#a24689;text-decoration:none;">Odoo Project</a> for <a href="${object.project_id.company_id.website}" style="color:#a24689;text-decoration:none;">${object.project_id.company_id.name}</a></p>
</td></tr>
+1 -1
View File
@@ -64,7 +64,7 @@ from ${object.company_id.name}.
<field name="body_html"><![CDATA[<html>
<head></head>
<body style="margin: 0; padding: 0;">
<table border="0" width="100%" cellpadding="0" bgcolor="#ededed" style="padding: 20px; background-color: #ededed" class="o_mail_notification">
<table border="0" width="100%" cellpadding="0" bgcolor="#ededed" style="padding: 20px; background-color: #ededed" summary="o_mail_notification">
<tbody>
<!-- HEADER -->
+1 -1
View File
@@ -34,7 +34,7 @@
<!-- Salesteam-related subtypes for messaging / Chatter -->
<record id="mt_salesteam_order_sent" model="mail.message.subtype">
<field name="name">Quotation Send</field>
<field name="name">Quotation sent</field>
<field name="sequence">20</field>
<field name="res_model">crm.team</field>
<field name="parent_id" eval="ref('sale.mt_order_sent')"/>
@@ -54,7 +54,7 @@
</div>
<form name="sale_config_form" position="inside">
<div>
<span>(*) This configuration value is related to the company you're logged in.</span>
<span>(*) This configuration is related to the company you're logged into.</span>
</div>
</form>
</field>
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-07 15:30+0000\n"
"Last-Translator: <>\n"
"Language-Team: Afrikaans (http://www.transifex.com/odoo/odoo-9/language/"
"af/)\n"
"Language: af\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Produk Profielvorm"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-51
View File
@@ -1,51 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 07:59+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Amharic (http://www.transifex.com/odoo/odoo-9/language/am/)\n"
"Language: am\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "የእቃው ማሳያ"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-61
View File
@@ -1,61 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-10-12 18:35+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Arabic (http://www.transifex.com/odoo/odoo-9/language/ar/)\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"#-#-#-#-# ar.po (Odoo 9.0) #-#-#-#-#\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
"#-#-#-#-# ar.po (Odoo 9.0) #-#-#-#-#\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "سياسة فاتورة المصاريف"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"إذا كنت الفاتورة بسعر التكلفة، سيتم اصدار الفواتير حسب تكلفة أمر البيع "
"بناء على الخط التحليلي، وإذا كنت الفاتورة بسعر البيع فسيتم استخدام سعر "
"المنتج بدلا من ذلك."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "قالب المنتج"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "البند التحليلي"
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 07:59+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Bulgarian (http://www.transifex.com/odoo/odoo-9/language/"
"bg/)\n"
"Language: bg\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Шаблон за продукт"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Аналитичен ред"
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 07:59+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Bosnian (http://www.transifex.com/odoo/odoo-9/language/bs/)\n"
"Language: bs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Šablon proizvoda"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analitička stavka"
-56
View File
@@ -1,56 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-05-04 16:24+0000\n"
"Last-Translator: Marc Tormo i Bochaca <mtbochaca@gmail.com>\n"
"Language-Team: Catalan (http://www.transifex.com/odoo/odoo-9/language/ca/)\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "A Cost"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "A Preu de Venda"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de facturació de despeses"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si factureu a cost, les despeses es facturaran a la comanda de venda al cost "
"de la línia analítica; si factureu a preu de venda, el preu del producte "
"s'utilitzarà al seu lloc."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producte"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línia analítica"
-56
View File
@@ -1,56 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 07:59+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Czech (http://www.transifex.com/odoo/odoo-9/language/cs/)\n"
"Language: cs\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"#-#-#-#-# cs.po (Odoo 9.0) #-#-#-#-#\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"#-#-#-#-# cs.po (Odoo 9.0) #-#-#-#-#\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Pravidla výdajových faktur"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Šablona výrobku"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analytický řádek"
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 07:59+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Danish (http://www.transifex.com/odoo/odoo-9/language/da/)\n"
"Language: da\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Produktskabelon"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analytisk linie"
-58
View File
@@ -1,58 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Ralf Hilgenstock <rh@dialoge.info>, 2016
# Thorsten Vocks <thorsten.vocks@openbig.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-06-09 16:13+0000\n"
"Last-Translator: Thorsten Vocks <thorsten.vocks@openbig.org>\n"
"Language-Team: German (http://www.transifex.com/odoo/odoo-9/language/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Zu Selbstkosten"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Zum Verkaufspreis"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Regeln zur Spesenabrechnung"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Wenn Sie eine Rechnung über die Kosten erstellen, wird der Aufwand "
"abgerechnet über den Vertriebsauftrag basierend auf den Kosten der "
"analytischen Linie; Wenn Sie die Rechnung über den Verkaufspreis erstellen, "
"wird stattdessen der Preis des Produkts verwendet werden."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Produktvorlage"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analytischer Buchungssatz"
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Goutoudis Kostas <goutoudis@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-11-09 23:53+0000\n"
"Last-Translator: Goutoudis Kostas <goutoudis@gmail.com>\n"
"Language-Team: Greek (http://www.transifex.com/odoo/odoo-9/language/el/)\n"
"Language: el\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Στο Κόστος"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Στην Τιμή Πώλησης"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Πολιτική Τιμολογίου Εξόδων"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Πρότυπο Προϊόντος"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Γραμμή Αναλυτικής"
-56
View File
@@ -1,56 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-16 17:58+0000\n"
"Last-Translator: James Dove <james@oceancave.com>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/odoo/"
"odoo-9/language/en_GB/)\n"
"Language: en_GB\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Product Template"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analytic Line"
-58
View File
@@ -1,58 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# José Vicente <txusev@gmail.com>, 2016
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2016
# Daniel Santibáñez Polanco <dansanti@gmail.com>, 2016
# Ivan Nieto <ivan.n.s@tuta.io>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.saas~10c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-08-18 14:07+0000\n"
"Last-Translator: Ivan Nieto <ivan.n.s@tuta.io>, 2016\n"
"Language-Team: Spanish (https://www.transifex.com/odoo/teams/41243/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Al Coste"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "A Precio de Venta"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de facturación de gastos"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si factura sobre coste, se facturará el gasto en el pedido de venta al coste"
" de la línea analítica; si factura sobre precio de venta, se usará en su "
"lugar el precio del producto."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Argentina) (http://www.transifex.com/odoo/odoo-9/"
"language/es_AR/)\n"
"Language: es_AR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de Producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea Analítica"
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-07 15:30+0000\n"
"Last-Translator: <>\n"
"Language-Team: Spanish (Bolivia) (http://www.transifex.com/odoo/odoo-9/"
"language/es_BO/)\n"
"Language: es_BO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea analítica"
-57
View File
@@ -1,57 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Daniel Santibáñez Polanco <dansanti@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-04-14 23:17+0000\n"
"Last-Translator: Daniel Santibáñez Polanco <dansanti@gmail.com>\n"
"Language-Team: Spanish (Chile) (http://www.transifex.com/odoo/odoo-9/"
"language/es_CL/)\n"
"Language: es_CL\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Al Costo"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "A Precio de Venta"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de Facturación de Gastos"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si factura al coste, se facturará el gasto en el pedido de venta al coste de "
"la línea analítica; si factura a precio de venta, se usará en su lugar el "
"precio del producto."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea Analítica"
-58
View File
@@ -1,58 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Esteban Echeverry <tebanep@nubark.com>, 2016
# Mateo Tibaquirá <nestormateo@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-02-05 21:30+0000\n"
"Last-Translator: Esteban Echeverry <tebanep@nubark.com>\n"
"Language-Team: Spanish (Colombia) (http://www.transifex.com/odoo/odoo-9/"
"language/es_CO/)\n"
"Language: es_CO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Al Costo"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "A Precio de Venta"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de Facturación de Gastos"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si factura al costo, el gasto será facturado en la orden de venta al costo "
"de la línea analítica; en cambio, si factura a precio de venta, el precio "
"del producto será usado."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla del Producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea Analítica"
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Costa Rica) (http://www.transifex.com/odoo/odoo-9/"
"language/es_CR/)\n"
"Language: es_CR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea Analítica"
-57
View File
@@ -1,57 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Juliano Henriquez <juliano@consultoriahenca.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-03-22 15:04+0000\n"
"Last-Translator: Juliano Henriquez <juliano@consultoriahenca.com>\n"
"Language-Team: Spanish (Dominican Republic) (http://www.transifex.com/odoo/"
"odoo-9/language/es_DO/)\n"
"Language: es_DO\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Al Costo"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Al Precio de Venta"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de facturación de gastos"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si factura sobre coste, se facturará el gasto en el pedido de venta al coste "
"de la línea analítica; si factura sobre precio de venta, se usará en su "
"lugar el precio del producto."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea analítica"
-57
View File
@@ -1,57 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Rick Hunter <rick_hunter_ec@yahoo.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-11-27 06:24+0000\n"
"Last-Translator: Rick Hunter <rick_hunter_ec@yahoo.com>\n"
"Language-Team: Spanish (Ecuador) (http://www.transifex.com/odoo/odoo-9/"
"language/es_EC/)\n"
"Language: es_EC\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Al costo"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Al precio de venta"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de Facturación de Gastos"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si es una factura tiene costo, el gasto será facturado en la Orden de Venta "
"al costo de la línea analítica; Si su factura es a precio de venta, el "
"precio del producto será utilizado inmediatamente."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Linea Analitica"
-57
View File
@@ -1,57 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# David Hernandez <davidhernandez.ctam@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-01-12 06:37+0000\n"
"Last-Translator: David Hernandez <davidhernandez.ctam@gmail.com>\n"
"Language-Team: Spanish (Mexico) (http://www.transifex.com/odoo/odoo-9/"
"language/es_MX/)\n"
"Language: es_MX\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Al Costo"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Al Precio de Ventas"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de Facturas de Gastos"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si tienes una factura a un costo, el gasto podrá ser facturado dentro de la "
"ordene de venta al costo de la Línea Analítica; si tienes una factura a un "
"precio de venta, el precio de el producto será usado en su lugar."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea analítica"
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Panama) (http://www.transifex.com/odoo/odoo-9/"
"language/es_PA/)\n"
"Language: es_PA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-57
View File
@@ -1,57 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Carlos Eduardo Rodriguez Rossi <crodriguez@samemotion.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-06-16 20:04+0000\n"
"Last-Translator: Carlos Eduardo Rodriguez Rossi <crodriguez@samemotion.com>\n"
"Language-Team: Spanish (Peru) (http://www.transifex.com/odoo/odoo-9/language/"
"es_PE/)\n"
"Language: es_PE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Al Costo"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Al Precio de Ventas"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Política de Factura de Gasto"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si se factura al costo, el gasto será facturado en el pedido de venta al "
"costo de la línea analítica; si se factura a precio de venta, el precio del "
"producto será utilizado en su lugar."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de Producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea Analítica"
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Paraguay) (http://www.transifex.com/odoo/odoo-9/"
"language/es_PY/)\n"
"Language: es_PY\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea analítica"
-56
View File
@@ -1,56 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-05-15 18:47+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Spanish (Venezuela) (http://www.transifex.com/odoo/odoo-9/"
"language/es_VE/)\n"
"Language: es_VE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Expensas, la política de facturación"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Si se factura al costo, el gasto será facturado en la orden de venta en el "
"costo de la línea analítica; si se factura a precio de venta, el precio del "
"producto será utilizado en su lugar."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Plantilla de producto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Línea analítica"
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-03-12 20:20+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Estonian (http://www.transifex.com/odoo/odoo-9/language/et/)\n"
"Language: et\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Toote mall"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analüütiline rida"
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-07 15:30+0000\n"
"Last-Translator: <>\n"
"Language-Team: Basque (http://www.transifex.com/odoo/odoo-9/language/eu/)\n"
"Language: eu\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Product Template"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Lerro analitikoa"
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-07 15:30+0000\n"
"Last-Translator: <>\n"
"Language-Team: Persian (http://www.transifex.com/odoo/odoo-9/language/fa/)\n"
"Language: fa\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "قالب محصول"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "سطرتحلیلی"
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Finnish (http://www.transifex.com/odoo/odoo-9/language/fi/)\n"
"Language: fi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Tuotemalli"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analyyttinen rivi"
-56
View File
@@ -1,56 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Nancy Bolognesi <nb@microcom.ca>, 2016
# Maxime Chambreuil <mchambreuil@ursainfosystems.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.saas~10c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-08-18 14:07+0000\n"
"Last-Translator: Maxime Chambreuil <mchambreuil@ursainfosystems.com>, 2016\n"
"Language-Team: French (https://www.transifex.com/odoo/teams/41243/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Au prix coûtant"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Au prix de vente"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Politique de facturation des notes de frais"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Pour la facturation au coût, les frais seront facturés sur l'ordre de vente "
"au coût de la ligne analytique; pour la facturation au prix de vente, c'est "
"le prix de l'article qui sera utilisé."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Modèle d'article"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-07 15:30+0000\n"
"Last-Translator: <>\n"
"Language-Team: French (Belgium) (http://www.transifex.com/odoo/odoo-9/"
"language/fr_BE/)\n"
"Language: fr_BE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Ligne analytique"
-53
View File
@@ -1,53 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Jason Ouellet, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-10-09 06:36+0000\n"
"Last-Translator: Jason Ouellet\n"
"Language-Team: French (Canada) (http://www.transifex.com/odoo/odoo-9/"
"language/fr_CA/)\n"
"Language: fr_CA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Coutant"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Prix de vente"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Politique de facturation des dépenses"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Modèle de produit"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-52
View File
@@ -1,52 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Galician (http://www.transifex.com/odoo/odoo-9/language/gl/)\n"
"Language: gl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Modelo de produto"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Liña analítica"
-51
View File
@@ -1,51 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Hebrew (http://www.transifex.com/odoo/odoo-9/language/he/)\n"
"Language: he\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "תבנית לפריט"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-51
View File
@@ -1,51 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-09-08 08:00+0000\n"
"Last-Translator: Martin Trigaux\n"
"Language-Team: Hindi (http://www.transifex.com/odoo/odoo-9/language/hi/)\n"
"Language: hi\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr ""
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr ""
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "उत्पाद प्रारूप"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""
-57
View File
@@ -1,57 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# Karolina Tonković <karolina.tonkovic@storm.hr>, 2015
msgid ""
msgstr ""
"Project-Id-Version: Odoo 9.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2015-10-15 16:21+0000\n"
"Last-Translator: Davor Bojkić <bole@dajmi5.com>\n"
"Language-Team: Croatian (http://www.transifex.com/odoo/odoo-9/language/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Po trošku"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Po prodajnoj cijeni"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Politika troška računa"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Ako izdate račun po trošku, trošak će se fakturirati po trošku retka "
"prodajnog naloga; ako izdate račun po prodajnoj cijeni, umjesto toga će se "
"koristiti cijena proizvoda."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Predložak proizvoda"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
#, fuzzy
msgid "account analytic line"
msgstr "Analitičke stavke"
-55
View File
@@ -1,55 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_expense
#
# Translators:
# krnkris <krnkris@freemail.hu>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.saas~10c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-08-18 14:07+0000\n"
"PO-Revision-Date: 2016-08-18 14:07+0000\n"
"Last-Translator: krnkris <krnkris@freemail.hu>, 2016\n"
"Language-Team: Hungarian (https://www.transifex.com/odoo/teams/41243/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Cost"
msgstr "Költségen"
#. module: sale_expense
#: selection:product.template,expense_policy:0
msgid "At Sales Price"
msgstr "Eladási áron"
#. module: sale_expense
#: model:ir.model.fields,field_description:sale_expense.field_product_template_expense_policy
msgid "Expense Invoice Policy"
msgstr "Költség számla szabály"
#. module: sale_expense
#: model:ir.model.fields,help:sale_expense.field_product_template_expense_policy
msgid ""
"If you invoice at cost, the expense will be invoiced on the sale order at "
"the cost of the analytic line;if you invoice at sales price, the price of "
"the product will be used instead."
msgstr ""
"Ha költségre számlát ad ki, a kiadás az értékesítési megbízás gyűjtő/elemző "
"tételsorra létrehozott költség; ha a termék értékesítési árra számláz, akkor"
" helyette a termék listaára kerül felhasználásra."
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_product_template
msgid "Product Template"
msgstr "Terméksablon"
#. module: sale_expense
#: model:ir.model,name:sale_expense.model_account_analytic_line
msgid "account analytic line"
msgstr ""

Some files were not shown because too many files have changed in this diff Show More