diff --git a/addons/account/models/account.py b/addons/account/models/account.py index ec97bafd1c6..f42268edd70 100644 --- a/addons/account/models/account.py +++ b/addons/account/models/account.py @@ -481,7 +481,7 @@ class AccountJournal(models.Model): post_at_bank_rec = fields.Boolean(string="Post At Bank Reconciliation", help="Whether or not the payments made in this journal should be generated in draft state, so that the related journal entries are only posted when performing bank reconciliation.") # alias configuration for 'purchase' type journals - alias_id = fields.Many2one('mail.alias', string='Alias') + alias_id = fields.Many2one('mail.alias', string='Alias', copy=False) alias_domain = fields.Char('Alias domain', compute='_compute_alias_domain', default=lambda self: self.env["ir.config_parameter"].sudo().get_param("mail.catchall.domain")) alias_name = fields.Char('Alias Name for Vendor Bills', related='alias_id.alias_name', help="It creates draft vendor bill by sending an email.", readonly=False) diff --git a/addons/account/models/account_bank_statement.py b/addons/account/models/account_bank_statement.py index d0632970bed..d22962ebbd0 100644 --- a/addons/account/models/account_bank_statement.py +++ b/addons/account/models/account_bank_statement.py @@ -587,8 +587,11 @@ class AccountBankStatementLine(models.Model): # Fully reconciled moves are just linked to the bank statement total = self.amount + currency = self.currency_id or statement_currency for aml_rec in payment_aml_rec: - total -= aml_rec.debit - aml_rec.credit + balance = aml_rec.amount_currency if aml_rec.currency_id else aml_rec.balance + aml_currency = aml_rec.currency_id or aml_rec.company_currency_id + total -= aml_currency._convert(balance, currency, aml_rec.company_id, aml_rec.date) aml_rec.with_context(check_move_validity=False).write({'statement_line_id': self.id}) counterpart_moves = (counterpart_moves | aml_rec.move_id) if aml_rec.journal_id.post_at_bank_rec and aml_rec.payment_id and aml_rec.move_id.state == 'draft': diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 6d4ef94ddd9..1d1483b2335 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -384,18 +384,20 @@ class AccountMove(models.Model): @api.multi def _reverse_move(self, date=None, journal_id=None, auto=False): self.ensure_one() - reversed_move = self.copy(default={ - 'date': date, - 'journal_id': journal_id.id if journal_id else self.journal_id.id, - 'ref': (_('Automatic reversal of: %s') if auto else _('Reversal of: %s')) % (self.name), - 'auto_reverse': False}) - for acm_line in reversed_move.line_ids.with_context(check_move_validity=False): - acm_line.write({ - 'debit': acm_line.credit, - 'credit': acm_line.debit, - 'amount_currency': -acm_line.amount_currency - }) - self.reverse_entry_id = reversed_move + with self.env.norecompute(): + reversed_move = self.copy(default={ + 'date': date, + 'journal_id': journal_id.id if journal_id else self.journal_id.id, + 'ref': (_('Automatic reversal of: %s') if auto else _('Reversal of: %s')) % (self.name), + 'auto_reverse': False}) + for acm_line in reversed_move.line_ids.with_context(check_move_validity=False): + acm_line.write({ + 'debit': acm_line.credit, + 'credit': acm_line.debit, + 'amount_currency': -acm_line.amount_currency + }) + self.reverse_entry_id = reversed_move + self.recompute() return reversed_move @api.multi @@ -524,7 +526,7 @@ class AccountMoveLine(models.Model): #computing the `reconciled` field. reconciled = False digits_rounding_precision = line.company_id.currency_id.rounding - if float_is_zero(amount, precision_rounding=digits_rounding_precision): + if (line.matched_debit_ids or line.matched_credit_ids) and float_is_zero(amount, precision_rounding=digits_rounding_precision): if line.currency_id and line.amount_currency: if float_is_zero(amount_residual_currency, precision_rounding=line.currency_id.rounding): reconciled = True @@ -905,7 +907,7 @@ class AccountMoveLine(models.Model): for line in self: company_ids.add(line.company_id.id) all_accounts.append(line.account_id) - if line.reconciled: + if (line.matched_debit_ids or line.matched_credit_ids) and line.reconciled: raise UserError(_('You are trying to reconcile some entries that are already reconciled.')) if len(company_ids) > 1: raise UserError(_('To reconcile the entries company should be the same for all entries.')) @@ -1053,6 +1055,56 @@ class AccountMoveLine(models.Model): ) return rec_move_ids.unlink() + def _apply_taxes(self, vals, amount): + tax_lines_vals = [] + # Get ids from triplets : https://www.odoo.com/documentation/10.0/reference/orm.html#odoo.models.Model.write + tax_ids = [tax['id'] for tax in self.resolve_2many_commands('tax_ids', vals['tax_ids']) if tax.get('id')] + # Since create() receives ids instead of recordset, let's just use the old-api bridge + taxes = self.env['account.tax'].browse(tax_ids) + currency = self.env['res.currency'].browse(vals.get('currency_id')) + partner = self.env['res.partner'].browse(vals.get('partner_id')) + ctx = dict(self._context) + ctx['round'] = ctx.get('round', True) + res = taxes.with_context(ctx).compute_all(amount, + currency, 1, vals.get('product_id'), partner) + # Adjust line amount if any tax is price_include + if abs(res['total_excluded']) < abs(amount): + if vals['debit'] != 0.0: vals['debit'] = res['total_excluded'] + if vals['credit'] != 0.0: vals['credit'] = -res['total_excluded'] + if vals.get('amount_currency'): + vals['amount_currency'] = self.env['res.currency'].browse(vals['currency_id']).round(vals['amount_currency'] * (res['total_excluded']/amount)) + # Create tax lines + for tax_vals in res['taxes']: + if tax_vals['amount']: + tax = self.env['account.tax'].browse([tax_vals['id']]) + account_id = (amount > 0 and tax_vals['account_id'] or tax_vals['refund_account_id']) + if not account_id: account_id = vals['account_id'] + temp = { + 'account_id': account_id, + 'name': vals['name'] + ' ' + tax_vals['name'], + 'tax_line_id': tax_vals['id'], + 'move_id': vals['move_id'], + 'partner_id': vals.get('partner_id'), + 'statement_id': vals.get('statement_id'), + 'debit': tax_vals['amount'] > 0 and tax_vals['amount'] or 0.0, + 'credit': tax_vals['amount'] < 0 and -tax_vals['amount'] or 0.0, + 'analytic_account_id': vals.get('analytic_account_id') if tax.analytic else False, + } + bank = self.env["account.bank.statement.line"].browse(vals.get('statement_line_id')).statement_id + if bank.currency_id != bank.company_id.currency_id: + ctx = {} + if 'date' in vals: + ctx['date'] = vals['date'] + elif 'date_maturity' in vals: + ctx['date'] = vals['date_maturity'] + temp['currency_id'] = bank.currency_id.id + temp['amount_currency'] = bank.company_id.currency_id.with_context(ctx).compute(tax_vals['amount'], bank.currency_id, round=True) + if vals.get('tax_exigible'): + temp['tax_exigible'] = True + temp['account_id'] = tax.cash_basis_account.id or account_id + tax_lines_vals.append(temp) + return tax_lines_vals + #################################################### # CRUD methods #################################################### @@ -1486,90 +1538,91 @@ class AccountPartialReconcile(models.Model): self.ensure_one() move_date = self.debit_move_id.date newly_created_move = self.env['account.move'] - for move in (self.debit_move_id.move_id, self.credit_move_id.move_id): - #move_date is the max of the 2 reconciled items - if move_date < move.date: - move_date = move.date - percentage_before = percentage_before_rec[move.id] - percentage_after = move.line_ids[0]._get_matched_percentage()[move.id] - # update the percentage before as the move can be part of - # multiple partial reconciliations - percentage_before_rec[move.id] = percentage_after + with self.env.norecompute(): + for move in (self.debit_move_id.move_id, self.credit_move_id.move_id): + #move_date is the max of the 2 reconciled items + if move_date < move.date: + move_date = move.date + percentage_before = percentage_before_rec[move.id] + percentage_after = move.line_ids[0]._get_matched_percentage()[move.id] + # update the percentage before as the move can be part of + # multiple partial reconciliations + percentage_before_rec[move.id] = percentage_after - for line in move.line_ids: - if not line.tax_exigible: - #amount is the current cash_basis amount minus the one before the reconciliation - amount = line.balance * percentage_after - line.balance * percentage_before - rounded_amt = self._get_amount_tax_cash_basis(amount, line) - if float_is_zero(rounded_amt, precision_rounding=line.company_id.currency_id.rounding): - continue - if line.tax_line_id and line.tax_line_id.tax_exigibility == 'on_payment': - if not newly_created_move: - newly_created_move = self._create_tax_basis_move() - #create cash basis entry for the tax line - to_clear_aml = self.env['account.move.line'].with_context(check_move_validity=False).create({ - 'name': line.move_id.name, - 'debit': abs(rounded_amt) if rounded_amt < 0 else 0.0, - 'credit': rounded_amt if rounded_amt > 0 else 0.0, - 'account_id': line.account_id.id, - 'analytic_account_id': line.analytic_account_id.id, - 'analytic_tag_ids': line.analytic_tag_ids.ids, - 'tax_exigible': True, - 'amount_currency': line.amount_currency and line.currency_id.round(-line.amount_currency * amount / line.balance) or 0.0, - 'currency_id': line.currency_id.id, - 'move_id': newly_created_move.id, - 'partner_id': line.partner_id.id, - }) - # Group by cash basis account and tax - self.env['account.move.line'].with_context(check_move_validity=False).create({ - 'name': line.name, - 'debit': rounded_amt if rounded_amt > 0 else 0.0, - 'credit': abs(rounded_amt) if rounded_amt < 0 else 0.0, - 'account_id': line.tax_line_id.cash_basis_account_id.id, - 'analytic_account_id': line.analytic_account_id.id, - 'analytic_tag_ids': line.analytic_tag_ids.ids, - 'tax_line_id': line.tax_line_id.id, - 'tax_exigible': True, - 'amount_currency': line.amount_currency and line.currency_id.round(line.amount_currency * amount / line.balance) or 0.0, - 'currency_id': line.currency_id.id, - 'move_id': newly_created_move.id, - 'partner_id': line.partner_id.id, - }) - if line.account_id.reconcile: - #setting the account to allow reconciliation will help to fix rounding errors - to_clear_aml |= line - to_clear_aml.reconcile() - - if any([tax.tax_exigibility == 'on_payment' for tax in line.tax_ids]): - if not newly_created_move: - newly_created_move = self._create_tax_basis_move() - #create cash basis entry for the base - for tax in line.tax_ids.filtered(lambda t: t.tax_exigibility == 'on_payment'): - account_id = self._get_tax_cash_basis_base_account(line, tax) - self.env['account.move.line'].with_context(check_move_validity=False).create({ - 'name': line.name, - 'debit': rounded_amt > 0 and rounded_amt or 0.0, - 'credit': rounded_amt < 0 and abs(rounded_amt) or 0.0, - 'account_id': account_id.id, + for line in move.line_ids: + if not line.tax_exigible: + #amount is the current cash_basis amount minus the one before the reconciliation + amount = line.balance * percentage_after - line.balance * percentage_before + rounded_amt = self._get_amount_tax_cash_basis(amount, line) + if float_is_zero(rounded_amt, precision_rounding=line.company_id.currency_id.rounding): + continue + if line.tax_line_id and line.tax_line_id.tax_exigibility == 'on_payment': + if not newly_created_move: + newly_created_move = self._create_tax_basis_move() + #create cash basis entry for the tax line + to_clear_aml = self.env['account.move.line'].with_context(check_move_validity=False).create({ + 'name': line.move_id.name, + 'debit': abs(rounded_amt) if rounded_amt < 0 else 0.0, + 'credit': rounded_amt if rounded_amt > 0 else 0.0, + 'account_id': line.account_id.id, + 'analytic_account_id': line.analytic_account_id.id, + 'analytic_tag_ids': line.analytic_tag_ids.ids, 'tax_exigible': True, - 'tax_ids': [(6, 0, [tax.id])], - 'move_id': newly_created_move.id, + 'amount_currency': line.amount_currency and line.currency_id.round(-line.amount_currency * amount / line.balance) or 0.0, 'currency_id': line.currency_id.id, - 'amount_currency': self.amount_currency and line.currency_id.round(line.amount_currency * amount / line.balance) or 0.0, + 'move_id': newly_created_move.id, 'partner_id': line.partner_id.id, }) + # Group by cash basis account and tax self.env['account.move.line'].with_context(check_move_validity=False).create({ 'name': line.name, - 'credit': rounded_amt > 0 and rounded_amt or 0.0, - 'debit': rounded_amt < 0 and abs(rounded_amt) or 0.0, - 'account_id': account_id.id, + 'debit': rounded_amt if rounded_amt > 0 else 0.0, + 'credit': abs(rounded_amt) if rounded_amt < 0 else 0.0, + 'account_id': line.tax_line_id.cash_basis_account_id.id, + 'analytic_account_id': line.analytic_account_id.id, + 'analytic_tag_ids': line.analytic_tag_ids.ids, + 'tax_line_id': line.tax_line_id.id, 'tax_exigible': True, - 'move_id': newly_created_move.id, + 'amount_currency': line.amount_currency and line.currency_id.round(line.amount_currency * amount / line.balance) or 0.0, 'currency_id': line.currency_id.id, - 'amount_currency': self.amount_currency and line.currency_id.round(-line.amount_currency * amount / line.balance) or 0.0, + 'move_id': newly_created_move.id, 'partner_id': line.partner_id.id, }) + if line.account_id.reconcile: + #setting the account to allow reconciliation will help to fix rounding errors + to_clear_aml |= line + to_clear_aml.reconcile() + if any([tax.tax_exigibility == 'on_payment' for tax in line.tax_ids]): + if not newly_created_move: + newly_created_move = self._create_tax_basis_move() + #create cash basis entry for the base + for tax in line.tax_ids.filtered(lambda t: t.tax_exigibility == 'on_payment'): + account_id = self._get_tax_cash_basis_base_account(line, tax) + self.env['account.move.line'].with_context(check_move_validity=False).create({ + 'name': line.name, + 'debit': rounded_amt > 0 and rounded_amt or 0.0, + 'credit': rounded_amt < 0 and abs(rounded_amt) or 0.0, + 'account_id': account_id.id, + 'tax_exigible': True, + 'tax_ids': [(6, 0, [tax.id])], + 'move_id': newly_created_move.id, + 'currency_id': line.currency_id.id, + 'amount_currency': self.amount_currency and line.currency_id.round(line.amount_currency * amount / line.balance) or 0.0, + 'partner_id': line.partner_id.id, + }) + self.env['account.move.line'].with_context(check_move_validity=False).create({ + 'name': line.name, + 'credit': rounded_amt > 0 and rounded_amt or 0.0, + 'debit': rounded_amt < 0 and abs(rounded_amt) or 0.0, + 'account_id': account_id.id, + 'tax_exigible': True, + 'move_id': newly_created_move.id, + 'currency_id': line.currency_id.id, + 'amount_currency': self.amount_currency and line.currency_id.round(-line.amount_currency * amount / line.balance) or 0.0, + 'partner_id': line.partner_id.id, + }) + self.recompute() if newly_created_move: if move_date > (self.company_id.period_lock_date or date.min) and newly_created_move.date != move_date: # The move date should be the maximum date between payment and invoice (in case diff --git a/addons/account/models/account_payment.py b/addons/account/models/account_payment.py index bb2e7ff4f03..7dffbaa2233 100644 --- a/addons/account/models/account_payment.py +++ b/addons/account/models/account_payment.py @@ -211,6 +211,8 @@ class account_abstract_payment(models.AbstractModel): self.amount = abs(self._compute_payment_amount()) # Set by default the first liquidity journal having this currency if exists. + if self.journal_id: + return journal = self.env['account.journal'].search( [('type', 'in', ('bank', 'cash')), ('currency_id', '=', self.currency_id.id)], limit=1) if journal: diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py index 717b99ad26d..bfbab8809ca 100644 --- a/addons/account/models/chart_template.py +++ b/addons/account/models/chart_template.py @@ -173,7 +173,7 @@ class AccountChartTemplate(models.Model): # (won't work well for multi-company) company = self.env.user.company_id # If we don't have any chart of account on this company, install this chart of account - if not self.existing_accounting(company): + if not company.chart_template_id and not self.existing_accounting(company): self.load_for_current_company(15.0, 15.0) def load_for_current_company(self, sale_tax_rate, purchase_tax_rate): diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv index ef09176438b..a091adbd8b8 100644 --- a/addons/account/security/ir.model.access.csv +++ b/addons/account/security/ir.model.access.csv @@ -68,7 +68,7 @@ access_account_account_type_invoice,account.account.type invoice,model_account_a access_account_account_tax,account.account.tag,model_account_account_tag,account.group_account_user,1,1,1,1 access_account_account_tax_user,account.account.tag,model_account_account_tag,account.group_account_invoice,1,0,0,0 access_account_reconcile_model,account.reconcile.model,model_account_reconcile_model,account.group_account_user,1,1,1,1 -access_account_reconcile_model_template,account.reconcile.model.template,model_account_reconcile_model_template,account.group_account_user,1,1,1,1 +access_account_reconcile_model_template,account.reconcile.model.template,model_account_reconcile_model_template,account.group_account_invoice,1,1,1,1 access_account_partial_reconcile_group_invoice,account.partial.reconcile.group.invoice,model_account_partial_reconcile,account.group_account_invoice,1,1,1,0 access_account_partial_reconcile,account.partial.reconcile,model_account_partial_reconcile,account.group_account_user,1,1,1,1 access_account_full_reconcile_group_invoice,account.full.reconcile.group.invoice,model_account_full_reconcile,account.group_account_invoice,1,1,1,0 diff --git a/addons/account/static/src/js/reconciliation/reconciliation_model.js b/addons/account/static/src/js/reconciliation/reconciliation_model.js index 06387df0579..d948895bda4 100644 --- a/addons/account/static/src/js/reconciliation/reconciliation_model.js +++ b/addons/account/static/src/js/reconciliation/reconciliation_model.js @@ -904,11 +904,11 @@ var StatementModel = BasicModel.extend({ }); var company_currency = session.get_currency(line.st_line.currency_id); var company_precision = company_currency && company_currency.digits[1] || 2; - total = utils.round_decimals(total*1000, company_precision)/1000 || 0; + total = utils.round_decimals(total, company_precision) || 0; if(isOtherCurrencyId){ var other_currency = session.get_currency(isOtherCurrencyId); var other_precision = other_currency && other_currency.digits[1] || 2; - amount_currency = utils.round_decimals(amount_currency, other_precision) + amount_currency = utils.round_decimals(amount_currency, other_precision); } line.balance = { amount: total, diff --git a/addons/account/static/src/js/reconciliation/reconciliation_renderer.js b/addons/account/static/src/js/reconciliation/reconciliation_renderer.js index b5e97566936..cbc5b8bdcd6 100644 --- a/addons/account/static/src/js/reconciliation/reconciliation_renderer.js +++ b/addons/account/static/src/js/reconciliation/reconciliation_renderer.js @@ -260,7 +260,7 @@ var LineRenderer = Widget.extend(FieldManagerMixin, { 'click .accounting_view thead td': '_onTogglePanel', 'click .accounting_view tfoot td:not(.cell_left,.cell_right)': '_onShowPanel', 'click .cell': '_onEditAmount', - 'input input.filter': '_onFilterChange', + 'change input.filter': '_onFilterChange', 'click .match .load-more a': '_onLoadMore', 'click .match .mv_line td': '_onSelectMoveLine', 'click .accounting_view tbody .mv_line td': '_onSelectProposition', diff --git a/addons/account/static/src/xml/account_reconciliation.xml b/addons/account/static/src/xml/account_reconciliation.xml index d07ea5a6e60..c8cd06d258e 100644 --- a/addons/account/static/src/xml/account_reconciliation.xml +++ b/addons/account/static/src/xml/account_reconciliation.xml @@ -144,7 +144,8 @@
- + +
diff --git a/addons/account/tests/account_test_no_chart.py b/addons/account/tests/account_test_no_chart.py index 05aa54df4c6..ca1c971d0a6 100644 --- a/addons/account/tests/account_test_no_chart.py +++ b/addons/account/tests/account_test_no_chart.py @@ -46,6 +46,12 @@ class TestAccountNoChartCommon(SavepointCase): 'property_account_receivable_id': cls.account_receivable.id, }) + cls.sale_journal0 = cls.env['account.journal'].create({ + 'name': 'Sale Journal', + 'type': 'sale', + 'code': 'SJT0', + }) + @classmethod def setUpAdditionalAccounts(cls): """ Set up some addionnal accounts: expenses, revenue, ... """ diff --git a/addons/account/tests/test_reconciliation.py b/addons/account/tests/test_reconciliation.py index 6963017a41a..eab1c9f42fb 100644 --- a/addons/account/tests/test_reconciliation.py +++ b/addons/account/tests/test_reconciliation.py @@ -529,6 +529,14 @@ class TestReconciliation(AccountingTestCase): self.diff_income_account.id: {'debit': 0.0, 'credit': 3.27, 'amount_currency': -5, 'currency_id': self.currency_usd_id}, self.account_rcv.id: {'debit': 0.0, 'credit': 52.33, 'amount_currency': -80, 'currency_id': self.currency_usd_id}, } + + payments = bank_stmt_aml.mapped('payment_id') + # creation and reconciliation of the over-amount statement + # has created an another payment + self.assertEqual(len(payments), 2) + # Check amount of second, automatically created payment + self.assertEqual((payments - payment).amount, 5) + for aml in bank_stmt_aml: line = lines[aml.account_id.id] if type(line) == list: diff --git a/addons/account/views/res_config_settings_views.xml b/addons/account/views/res_config_settings_views.xml index e91e0ef2a3b..a468a45fee2 100644 --- a/addons/account/views/res_config_settings_views.xml +++ b/addons/account/views/res_config_settings_views.xml @@ -96,7 +96,6 @@
- % set company, user = ctx['company'], ctx['user'] + % set user = ctx.get('user', user) + % set company = user.company_id % set data = object.compute_kpis(company, user) % set tips = object.compute_tips(company, user) % set kpi_actions = object.compute_kpis_actions(company, user) @@ -136,7 +137,7 @@
- % if ctx['user'].has_group('base.group_system'): + % if user.has_group('base.group_system'):
Want to customize the email? Choose the metrics you care about diff --git a/addons/digest/models/digest.py b/addons/digest/models/digest.py index 9446f5454a2..7809648e48c 100644 --- a/addons/digest/models/digest.py +++ b/addons/digest/models/digest.py @@ -101,7 +101,7 @@ class Digest(models.Model): for digest in self: for user in digest.user_ids: subject = '%s: %s' % (user.company_id.name, digest.name) - digest.template_id.with_context(user=user, company=user.company_id).send_mail(digest.id, force_send=True, raise_exception=True, email_values={'email_to': user.email, 'subject': subject}) + digest.template_id.with_context(user=user).send_mail(digest.id, force_send=True, raise_exception=True, email_values={'email_to': user.email, 'subject': subject}) digest.next_run_date = digest._get_next_run_date() def compute_kpis(self, company, user): diff --git a/addons/google_calendar/models/google_calendar.py b/addons/google_calendar/models/google_calendar.py index ac1793f428f..9155cf9a0fa 100644 --- a/addons/google_calendar/models/google_calendar.py +++ b/addons/google_calendar/models/google_calendar.py @@ -442,7 +442,9 @@ class GoogleCalendar(models.AbstractModel): if google_attendee.get('found'): continue - attendee = ResPartner.search([('email', '=', google_attendee['email'])], limit=1) + attendee = ResPartner.search([('email', '=ilike', google_attendee['email']), ('user_ids', '!=', False)], limit=1) + if not attendee: + attendee = ResPartner.search([('email', '=ilike', google_attendee['email'])], limit=1) if not attendee: data = { 'email': partner_email, diff --git a/addons/hr/views/hr_views.xml b/addons/hr/views/hr_views.xml index ca5eecab771..6ee85c74f18 100644 --- a/addons/hr/views/hr_views.xml +++ b/addons/hr/views/hr_views.xml @@ -640,6 +640,17 @@ + + res.users.preferences.form.resource + res.users + + + + 1 + + + + \n" +"POT-Creation-Date: 2019-02-12 05:39+0000\n" +"PO-Revision-Date: 2019-02-12 12:06+0530\n" +"Last-Translator: didier.donze@camptocamp.com\n" "Language-Team: \n" "Language: de\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: \n" +"X-Generator: Poedit 2.2.1\n" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_O_exclude #: model:account.tax.template,description:l10n_ch.vat_O_exclude msgid "0% excl." msgstr "0% Exkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_O_import #: model:account.tax.template,description:l10n_ch.vat_O_import msgid "0% import." msgstr "0% Import." @@ -34,118 +33,105 @@ msgid "100% dédouanement TVA" msgstr "100% Verzollung MwSt." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_100_import #: model:account.tax.template,description:l10n_ch.vat_100_import msgid "100% imp." msgstr "100% Imp." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25 #: model:account.tax.template,description:l10n_ch.vat_25 msgid "2.5%" msgstr "2.5%" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_incl #: model:account.tax.template,description:l10n_ch.vat_25_incl msgid "2.5% Incl." msgstr "2.5% Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_purchase #: model:account.tax.template,description:l10n_ch.vat_25_purchase msgid "2.5% achat" msgstr "2.5% Einkauf" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_purchase_incl #: model:account.tax.template,description:l10n_ch.vat_25_purchase_incl msgid "2.5% achat Incl." msgstr "2.5% Einkauf Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_invest #: model:account.tax.template,description:l10n_ch.vat_25_invest msgid "2.5% invest." msgstr "2.5% Invest." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_invest_incl #: model:account.tax.template,description:l10n_ch.vat_25_invest_incl msgid "2.5% invest. Incl." msgstr "2.5% Invest. Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38 -#: model:account.tax.template,description:l10n_ch.vat_38 -msgid "3.8%" -msgstr "3.8%" +#: model:account.tax.template,description:l10n_ch.vat_37 +msgid "3.7%" +msgstr "3.7%" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_incl -#: model:account.tax.template,description:l10n_ch.vat_38_incl -msgid "3.8% Incl." -msgstr "3.8% Inkl." +#: model:account.tax.template,description:l10n_ch.vat_37_incl +msgid "3.7% Incl." +msgstr "3.7% Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_purchase -#: model:account.tax.template,description:l10n_ch.vat_38_purchase -msgid "3.8% achat" -msgstr "3.8% Einkauf" +#: model:account.tax.template,description:l10n_ch.vat_37_purchase +msgid "3.7% achat" +msgstr "3.7% Einkauf" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_purchase_incl -#: model:account.tax.template,description:l10n_ch.vat_38_purchase_incl -msgid "3.8% achat Incl." -msgstr "3.8% Einkauf Inkl." +#: model:account.tax.template,description:l10n_ch.vat_37_purchase_incl +msgid "3.7% achat Incl." +msgstr "3.7% Einkauf Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_invest -#: model:account.tax.template,description:l10n_ch.vat_38_invest -msgid "3.8% invest" -msgstr "3.8% Invest." +#: model:account.tax.template,description:l10n_ch.vat_37_invest +msgid "3.7% invest" +msgstr "3.7% Invest." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_invest_incl -#: model:account.tax.template,description:l10n_ch.vat_38_invest_incl -msgid "3.8% invest Incl." -msgstr "3.8% Invest. Inkl." +#: model:account.tax.template,description:l10n_ch.vat_37_invest_incl +msgid "3.7% invest Incl." +msgstr "3.7% Invest. Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80 -#: model:account.tax.template,description:l10n_ch.vat_80 -msgid "8.0%" -msgstr "8.0%" +#: model:account.tax.template,description:l10n_ch.vat_77 +msgid "7.7%" +msgstr "7.7%" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_incl -#: model:account.tax.template,description:l10n_ch.vat_80_incl -msgid "8.0% Incl." -msgstr "8.0% Inkl." +#: model:account.tax.template,description:l10n_ch.vat_77_incl +msgid "7.7% Incl." +msgstr "7.7% Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_purchase -#: model:account.tax.template,description:l10n_ch.vat_80_purchase -msgid "8.0% achat" -msgstr "8.0% Einkauf" +#: model:account.tax.template,description:l10n_ch.vat_77_purchase +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_reverse +msgid "7.7% achat" +msgstr "7.7% Einkauf" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_purchase_incl -#: model:account.tax.template,description:l10n_ch.vat_80_purchase_incl -msgid "8.0% achat Incl." -msgstr "8.0% Einkauf Inkl." +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_return +msgid "7.7% achat (return)" +msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_invest -#: model:account.tax.template,description:l10n_ch.vat_80_invest -msgid "8.0% invest." -msgstr "8.0% Invest." +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_incl +msgid "7.7% achat Incl." +msgstr "7.7% Einkauf Inkl." #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_invest_incl -#: model:account.tax.template,description:l10n_ch.vat_80_invest_incl -msgid "8.0% invest. Incl." -msgstr "8.0% Invest. Inkl." +#: model:account.tax.template,description:l10n_ch.vat_77_invest +msgid "7.7% invest." +msgstr "7.7% Invest." + +#. module: l10n_ch +#: model:account.tax.template,description:l10n_ch.vat_77_invest_incl +msgid "7.7% invest. Incl." +msgstr "7.7% Invest. Inkl." #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_4200 @@ -255,7 +241,8 @@ msgstr "Abschreibungen auf Fahrzeuge" #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1579 msgid "Amortissements sur les équipements et installations" -msgstr "Abschreibungen und Wertberichtigungen feste Einrichtungen und Installationen" +msgstr "" +"Abschreibungen und Wertberichtigungen feste Einrichtungen und Installationen" #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_2270 @@ -312,37 +299,6 @@ msgstr "Übrige Erlöse aus Lieferungen und Leistungen" msgid "Avances et prêts" msgstr "Vorschüsse und Darlehen" -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_res_bank -msgid "Bank" -msgstr "Bank" - -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_res_partner_bank -msgid "Bank Accounts" -msgstr "Bankkonten" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_config_settings_l10n_ch_isr_print_bank_location -#: model:ir.model.fields,help:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location -msgid "" -"Boolean option field indicating whether or not the alternate layout (the one " -"printing bank name and address) must be used when generating an ISR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_sent -msgid "" -"Boolean value telling whether or not the ISR corresponding to this invoice " -"has already been printed or sent by mail." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_valid -msgid "" -"Boolean value. True iff all the data required to generate the ISR are present" -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1700 msgid "Brevets, know-how, licences, droits, développement" @@ -358,11 +314,6 @@ msgstr "Jahresgewinn oder Jahresverlust" msgid "Bénéfice / perte reporté" msgstr "Gewinnvortrag oder Verlustvortrag" -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_chf -msgid "CHF ISR reference" -msgstr "CHF ESR Referenznummer" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1850 msgid "" @@ -520,11 +471,6 @@ msgstr "Forderungen gegenüber Sozialversicherungen und Vorsorgeeinrichtungen" msgid "Créanciers" msgstr "Verbindlichkeiten aus Lieferungen und Leistungen (Kreditoren)" -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_currency_name -msgid "Currency" -msgstr "Währung" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_2100 #: model:account.account.template,name:l10n_ch.ch_coa_2400 @@ -577,11 +523,6 @@ msgstr "Einkaufsrabatte" msgid "Déductions sur ventes" msgstr "Erlösminderungen" -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_eur -msgid "EUR ISR reference" -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_4540 msgid "Eau" @@ -597,11 +538,6 @@ msgstr "Strom" msgid "Email Templates" msgstr "" -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_mail_compose_message -msgid "Email composition wizard" -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_2450 msgid "Emprunts" @@ -676,34 +612,6 @@ msgstr "Goodwill" msgid "Hypothèques" msgstr "Hypotheken" -#. module: l10n_ch -#: model:ir.actions.report.xml,name:l10n_ch.l10n_ch_isr_report -msgid "ISR" -msgstr "" - -#. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.l10n_ch_isr_report_template -msgid "ISR for invoice" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced -msgid "" -"ISR number split in blocks of 5 characters (right-justified), to generate " -"ISR report." -msgstr "" - -#. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.isr_invoice_search_view -msgid "ISR reference number" -msgstr "" - -#. module: l10n_ch -#: code:addons/l10n_ch/models/mail_compose_message.py:23 -#, python-format -msgid "ISR sent" -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1600 msgid "Immeubles d’exploitation" @@ -751,51 +659,6 @@ msgstr "Direkte Steuern" msgid "Installations de stockage" msgstr "Installations de stockage" -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_account_invoice -msgid "Invoice" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number -msgid "L10N Ch Isr Number" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced -msgid "L10N Ch Isr Number Spaced" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line -msgid "L10N Ch Isr Optical Line" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal -msgid "L10N Ch Isr Postal" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted -msgid "L10N Ch Isr Postal Formatted" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_sent -msgid "L10N Ch Isr Sent" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_valid -msgid "L10N Ch Isr Valid" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_partner_bank_l10n_ch_postal -msgid "L10N Ch Postal" -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_6260 msgid "Leasing et location de véhicules" @@ -806,6 +669,11 @@ msgstr "Fahrzeugleasing und -mieten" msgid "Leasing immobilisations corporelles meubles" msgstr "Leasingaufwand mobile Sachanlagen" +#. module: l10n_ch +#: model:account.account.template,name:l10n_ch.l10nch_chart_template_liquidity_transfer +msgid "Liquidity Transfer" +msgstr "" + #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1520 msgid "Machines de bureau, informatique, systèmes de communication" @@ -851,11 +719,6 @@ msgstr "Heizöl" msgid "Mobilier et installations" msgstr "Mobiliar und Einrichtungen" -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line -msgid "Optical reading line, as it will be printed on ISR" -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1540 msgid "Outillages et appareils" @@ -881,13 +744,6 @@ msgstr "Verluste Forderungen (Debitoren), Veränderung Delkredere" msgid "Plan comptable 2015" msgstr "Kontenrahmen 2015" -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted -msgid "" -"Postal reference of the bank, formated with '-' and without the padding " -"zeros, to generate ISR report." -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_4400 msgid "Prestations / travaux de tiers" @@ -898,30 +754,6 @@ msgstr "Aufwand für bezogene Dienstleistungen" msgid "Prestations propres" msgstr "Eigenleistungen" -#. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.isr_invoice_form -msgid "Print ISR" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location -msgid "Print bank location" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_config_settings_l10n_ch_isr_print_bank_location -msgid "Print bank on ISR" -msgstr "" - -#. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.l10n_ch-isr_account_config_settings -msgid "" -"Print the coordinates of your bank under the 'Payment for' title of the " -"ISR.\n" -" Your address will be moved to the 'in favour " -"of' section." -msgstr "" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_7000 msgid "Produits accessoires" @@ -1034,11 +866,6 @@ msgstr "Fertige Erzeugnisse" msgid "Stocks de produits semi-ouvrés" msgstr "" -#. module: l10n_ch -#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu -msgid "Swiss Statements" -msgstr "CH Bilanz- und Erfolgsrechnungen" - #. module: l10n_ch #: model:account.account.tag,name:l10n_ch.vat_tag_dedouanement msgid "Switzerland VAT Form: 100% dédouanement (base in grid 400)" @@ -1080,13 +907,13 @@ msgid "Switzerland VAT Form: grid 280" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_301_a -msgid "Switzerland VAT Form: grid 301 base" +#: model:account.account.tag,name:l10n_ch.vat_tag_302_a +msgid "Switzerland VAT Form: grid 302 base" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_301_b -msgid "Switzerland VAT Form: grid 301 tax" +#: model:account.account.tag,name:l10n_ch.vat_tag_302_b +msgid "Switzerland VAT Form: grid 302 tax" msgstr "" #. module: l10n_ch @@ -1100,13 +927,13 @@ msgid "Switzerland VAT Form: grid 311 tax" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_341_a -msgid "Switzerland VAT Form: grid 341 base" +#: model:account.account.tag,name:l10n_ch.vat_tag_342_a +msgid "Switzerland VAT Form: grid 342 base" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_341_b -msgid "Switzerland VAT Form: grid 341 tax" +#: model:account.account.tag,name:l10n_ch.vat_tag_342_b +msgid "Switzerland VAT Form: grid 342 tax" msgstr "" #. module: l10n_ch @@ -1119,6 +946,16 @@ msgstr "" msgid "Switzerland VAT Form: grid 381 tax" msgstr "" +#. module: l10n_ch +#: model:account.account.tag,name:l10n_ch.vat_tag_382_a +msgid "Switzerland VAT Form: grid 382 base" +msgstr "" + +#. module: l10n_ch +#: model:account.account.tag,name:l10n_ch.vat_tag_382_b +msgid "Switzerland VAT Form: grid 382 tax" +msgstr "" + #. module: l10n_ch #: model:account.account.tag,name:l10n_ch.vat_tag_400 msgid "Switzerland VAT Form: grid 400" @@ -1144,6 +981,11 @@ msgstr "" msgid "Switzerland VAT Form: grid 420" msgstr "" +#. module: l10n_ch +#: model:account.tax.group,name:l10n_ch.tax_group_tva_0 +msgid "TVA 0%" +msgstr "MwSt. 0%" + #. module: l10n_ch #: model:account.tax.template,name:l10n_ch.vat_O_import msgid "TVA 0% Importations de biens et services" @@ -1154,6 +996,11 @@ msgstr "MwSt. 0% auf Importe von Gütern und Dienstleistungen" msgid "TVA 0% exclue" msgstr "MwSt. 0% ausgeschlossen" +#. module: l10n_ch +#: model:account.tax.group,name:l10n_ch.tax_group_tva_25 +msgid "TVA 2.5%" +msgstr "MwSt. 2.5%" + #. module: l10n_ch #: model:account.tax.template,name:l10n_ch.vat_25_purchase_incl msgid "TVA 2.5% sur achat B&S (Incl. TR)" @@ -1175,44 +1022,59 @@ msgid "TVA 2.5% sur invest. et autres ch. (TR)" msgstr "MwSt. 2,5% auf Invest. und sonst. Aufw. (USt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_38_purchase_incl -msgid "TVA 3.8% sur achat B&S (Incl. TS)" -msgstr "MwSt. 3,8% auf Einkäufe B&S (inkl. LSt)" +#: model:account.tax.group,name:l10n_ch.tax_group_tva_37 +msgid "TVA 3.7%" +msgstr "MwSt. 3,7%" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_38_purchase -msgid "TVA 3.8% sur achat B&S (TS)" -msgstr "MwSt. 3,8% auf Einkäufe B&S (LSt)" +#: model:account.tax.template,name:l10n_ch.vat_37_purchase_incl +msgid "TVA 3.7% sur achat B&S (Incl. TS)" +msgstr "MwSt. 3,7% auf Einkäufe B&S (inkl. LSt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_38_invest_incl -msgid "TVA 3.8% sur invest. et autres ch. (Incl. TS)" -msgstr "MwSt. 3,8% auf Invest. und sonst. Aufw. (inkl. LSt)" +#: model:account.tax.template,name:l10n_ch.vat_37_purchase +msgid "TVA 3.7% sur achat B&S (TS)" +msgstr "MwSt. 3,7% auf Einkäufe B&S (LSt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_38_invest -msgid "TVA 3.8% sur invest. et autres ch. (TS)" -msgstr "MwSt. 3,8% auf Invest. und sonst. Aufw. (LSt)" +#: model:account.tax.template,name:l10n_ch.vat_37_invest_incl +msgid "TVA 3.7% sur invest. et autres ch. (Incl. TS)" +msgstr "MwSt. 3,7% auf Invest. und sonst. Aufw. (inkl. LSt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_80_purchase_incl -msgid "TVA 8.0% sur achat B&S (Incl. TN)" -msgstr "MwSt. 8.0% auf Einkäufe B&S (inkl. NRZ)" +#: model:account.tax.template,name:l10n_ch.vat_37_invest +msgid "TVA 3.7% sur invest. et autres ch. (TS)" +msgstr "MwSt. 3,7% auf Invest. und sonst. Aufw. (LSt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_80_purchase -msgid "TVA 8.0% sur achat B&S (TN)" -msgstr "MwSt. 8,0% auf Einkäufe B&S (NRZ)" +#: model:account.tax.group,name:l10n_ch.tax_group_tva_77 +msgid "TVA 7.7%" +msgstr "MwSt. 7,7%" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_80_invest_incl -msgid "TVA 8.0% sur invest. et autres ch. (Incl. TN)" -msgstr "MwSt. 8,0% auf Invest. und sonst. Aufw. (inkl. NRZ)" +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_incl +msgid "TVA 7.7% sur achat B&S (Incl. TN)" +msgstr "MwSt. 7,7% auf Einkäufe B&S (inkl. NRZ)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_80_invest -msgid "TVA 8.0% sur invest. et autres ch. (TN)" -msgstr "MwSt. 8,0% auf Invest. und sonst. Aufw. (NRZ)" +#: model:account.tax.template,name:l10n_ch.vat_77_purchase +msgid "TVA 7.7% sur achat B&S (TN)" +msgstr "MwSt. 7,7% auf Einkäufe B&S (NRZ)" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_reverse +msgid "TVA 7.7% sur achat service a l'etranger (reverse charge)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_invest_incl +msgid "TVA 7.7% sur invest. et autres ch. (Incl. TN)" +msgstr "MwSt. 7,7% auf Invest. und sonst. Aufw. (inkl. NRZ)" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_invest +msgid "TVA 7.7% sur invest. et autres ch. (TN)" +msgstr "MwSt. 7,7% auf Invest. und sonst. Aufw. (NRZ)" #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_2200 @@ -1230,61 +1092,34 @@ msgid "TVA due a 2.5% (TR)" msgstr "Zu zahlende MwSt. bei 2,5% (USt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_38 -msgid "TVA due a 3.8% (TS)" -msgstr "Zu zahlende MwSt. bei 3,8% (LSt)" +#: model:account.tax.template,name:l10n_ch.vat_37 +msgid "TVA due a 3.7% (TS)" +msgstr "Zu zahlende MwSt. bei 3,7% (LSt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_80 -msgid "TVA due a 8.0% (TN)" +#: model:account.tax.template,name:l10n_ch.vat_77 +msgid "TVA due a 7.7% (TN)" msgstr "Zu zahlende MwSt. bei 8,0% (NRZ)" +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_return +msgid "TVA due a 7.7% (TN) (return)" +msgstr "" + #. module: l10n_ch #: model:account.tax.template,name:l10n_ch.vat_25_incl msgid "TVA due à 2.5% (Incl. TR)" msgstr "Zu zahlende MwSt. bei 2,5% (inkl. USt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_38_incl -msgid "TVA due à 3.8% (Incl. TS)" -msgstr "Zu zahlende MwSt. bei 3,8% (inkl. LSt)" +#: model:account.tax.template,name:l10n_ch.vat_37_incl +msgid "TVA due à 3.7% (Incl. TS)" +msgstr "Zu zahlende MwSt. bei 3,7% (inkl. LSt)" #. module: l10n_ch -#: model:account.tax.template,name:l10n_ch.vat_80_incl -msgid "TVA due à 8.0% (Incl. TN)" -msgstr "Zu zahlende MwSt. bei 8,0% (inkl. NRZ)" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_partner_bank_l10n_ch_postal -msgid "The ISR number of the company within the bank" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_currency_name -msgid "The name of this invoice's currency" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal -msgid "The postal reference identifying the bank managing this ISR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_chf -msgid "" -"The postal reference of the bank, used to generate ISR payment slips in CHF." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_eur -msgid "" -"The postal reference of the bank, used to generate ISR payment slips in EUR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number -msgid "The reference number associated with this invoice" -msgstr "" +#: model:account.tax.template,name:l10n_ch.vat_77_incl +msgid "TVA due à 7.7% (Incl. TN)" +msgstr "Zu zahlende MwSt. bei 7,7% (inkl. NRZ)" #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1060 @@ -1296,11 +1131,6 @@ msgstr "Wertschriften" msgid "Titres à long terme" msgstr "Wertschriften" -#. module: l10n_ch -#: model:account.account.template,name:l10n_ch.transfer_account_id -msgid "Transferts internes" -msgstr "Interne Verrechnungen" - #. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1280 msgid "Travaux en cours" @@ -1377,30 +1207,3 @@ msgstr "Produktionserlöse" #: model:account.account.template,name:l10n_ch.ch_coa_1530 msgid "Véhicules" msgstr "Fahrzeuge" - -#. module: l10n_ch -#: code:addons/l10n_ch/models/account_invoice.py:153 -#, python-format -msgid "" -"You cannot generate an ISR yet.\n" -"\n" -" For this, you need to :\n" -"\n" -" - set a valid postal account number (or " -"an IBAN referencing one) for your company\n" -"\n" -" - define its bank\n" -"\n" -" - associate this bank with a postal " -"reference for the currency used in this invoice\n" -"\n" -" - fill the 'bank account' field of the " -"invoice with the postal to be used to receive the related payment. A default " -"account will be automatically set for all invoices created after you defined " -"a postal account for your company." -msgstr "" - -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_account_config_settings -msgid "account.config.settings" -msgstr "" diff --git a/addons/l10n_ch/i18n_extra/it.po b/addons/l10n_ch/i18n_extra/it.po index 820569f207b..2af6ef38dc0 100644 --- a/addons/l10n_ch/i18n_extra/it.po +++ b/addons/l10n_ch/i18n_extra/it.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Odoo Server 8.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-14 15:52+0000\n" +"POT-Creation-Date: 2019-02-12 05:39+0000\n" "PO-Revision-Date: 2014-12-02 09:47+0000\n" "Last-Translator: <>\n" "Language-Team: \n" @@ -17,201 +17,173 @@ msgstr "" "Plural-Forms: \n" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_O_exclude #: model:account.tax.template,description:l10n_ch.vat_O_exclude msgid "0% excl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_O_import #: model:account.tax.template,description:l10n_ch.vat_O_import msgid "0% import." msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_100_import #: model:account.tax.template,name:l10n_ch.vat_100_import msgid "100% dédouanement TVA" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_100_import #: model:account.tax.template,description:l10n_ch.vat_100_import msgid "100% imp." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25 #: model:account.tax.template,description:l10n_ch.vat_25 msgid "2.5%" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_incl #: model:account.tax.template,description:l10n_ch.vat_25_incl msgid "2.5% Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_purchase #: model:account.tax.template,description:l10n_ch.vat_25_purchase msgid "2.5% achat" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_purchase_incl #: model:account.tax.template,description:l10n_ch.vat_25_purchase_incl msgid "2.5% achat Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_invest #: model:account.tax.template,description:l10n_ch.vat_25_invest msgid "2.5% invest." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_invest_incl #: model:account.tax.template,description:l10n_ch.vat_25_invest_incl msgid "2.5% invest. Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38 -#: model:account.tax.template,description:l10n_ch.vat_38 -msgid "3.8%" +#: model:account.tax.template,description:l10n_ch.vat_37 +msgid "3.7%" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_incl -#: model:account.tax.template,description:l10n_ch.vat_38_incl -msgid "3.8% Incl." +#: model:account.tax.template,description:l10n_ch.vat_37_incl +msgid "3.7% Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_purchase -#: model:account.tax.template,description:l10n_ch.vat_38_purchase -msgid "3.8% achat" +#: model:account.tax.template,description:l10n_ch.vat_37_purchase +msgid "3.7% achat" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_purchase_incl -#: model:account.tax.template,description:l10n_ch.vat_38_purchase_incl -msgid "3.8% achat Incl." +#: model:account.tax.template,description:l10n_ch.vat_37_purchase_incl +msgid "3.7% achat Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_invest -#: model:account.tax.template,description:l10n_ch.vat_38_invest -msgid "3.8% invest" +#: model:account.tax.template,description:l10n_ch.vat_37_invest +msgid "3.7% invest" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_invest_incl -#: model:account.tax.template,description:l10n_ch.vat_38_invest_incl -msgid "3.8% invest Incl." +#: model:account.tax.template,description:l10n_ch.vat_37_invest_incl +msgid "3.7% invest Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80 -#: model:account.tax.template,description:l10n_ch.vat_80 -msgid "8.0%" +#: model:account.tax.template,description:l10n_ch.vat_77 +msgid "7.7%" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_incl -#: model:account.tax.template,description:l10n_ch.vat_80_incl -msgid "8.0% Incl." +#: model:account.tax.template,description:l10n_ch.vat_77_incl +msgid "7.7% Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_purchase -#: model:account.tax.template,description:l10n_ch.vat_80_purchase -msgid "8.0% achat" +#: model:account.tax.template,description:l10n_ch.vat_77_purchase +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_reverse +msgid "7.7% achat" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_purchase_incl -#: model:account.tax.template,description:l10n_ch.vat_80_purchase_incl -msgid "8.0% achat Incl." +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_return +msgid "7.7% achat (return)" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_invest -#: model:account.tax.template,description:l10n_ch.vat_80_invest -msgid "8.0% invest." +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_incl +msgid "7.7% achat Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_invest_incl -#: model:account.tax.template,description:l10n_ch.vat_80_invest_incl -msgid "8.0% invest. Incl." +#: model:account.tax.template,description:l10n_ch.vat_77_invest +msgid "7.7% invest." +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,description:l10n_ch.vat_77_invest_incl +msgid "7.7% invest. Incl." msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4200 #: model:account.account.template,name:l10n_ch.ch_coa_4200 msgid "Achats de marchandises destinées à la revente" msgstr "Costi delle merci di rivendita" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2030 #: model:account.account.template,name:l10n_ch.ch_coa_2030 msgid "Acomptes de clients" msgstr "Acconti ricevuti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1208 #: model:account.account.template,name:l10n_ch.ch_coa_1208 msgid "Acomptes sur les marchandises commerciales" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1218 #: model:account.account.template,name:l10n_ch.ch_coa_1218 msgid "Acomptes sur matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1149 #: model:account.account.template,name:l10n_ch.ch_coa_1149 msgid "Ajustement de la valeur des avances et des prêts" msgstr "Rettifica valore anticipi e prestiti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1199 #: model:account.account.template,name:l10n_ch.ch_coa_1199 msgid "Ajustement de la valeur des créances à court terme" msgstr "Rettifica valore crediti diversi a breve termine" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1449 #: model:account.account.template,name:l10n_ch.ch_coa_1449 msgid "Ajustement de la valeur des créances à long terme" msgstr "Rettifica valore crediti a lungo termine" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1779 #: model:account.account.template,name:l10n_ch.ch_coa_1779 msgid "Ajustement de la valeur des goodwill" msgstr "Rettifica valore goodwill" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1489 #: model:account.account.template,name:l10n_ch.ch_coa_1489 msgid "Ajustement de la valeur des participations" msgstr "Rettifica valore partecipazioni" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1069 -#: model:account.account,name:l10n_ch.1_ch_coa_1409 #: model:account.account.template,name:l10n_ch.ch_coa_1069 #: model:account.account.template,name:l10n_ch.ch_coa_1409 msgid "Ajustement de la valeur des titres" msgstr "Rettifica valore titoli" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6800 #: model:account.account.template,name:l10n_ch.ch_coa_6800 msgid "" "Amortissements et ajustements de valeur des postes sur immobilisations " @@ -219,187 +191,126 @@ msgid "" msgstr "Ammortamenti e rettifiche di valore dell’attivo fisso" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1519 #: model:account.account.template,name:l10n_ch.ch_coa_1519 msgid "Amortissements sur le mobilier et les installations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1599 #: model:account.account.template,name:l10n_ch.ch_coa_1599 msgid "Amortissements sur les autres immobilisations corporelles meubles" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1709 #: model:account.account.template,name:l10n_ch.ch_coa_1709 msgid "Amortissements sur les brevets, know-how, licences, droits, dév." msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1609 #: model:account.account.template,name:l10n_ch.ch_coa_1609 msgid "Amortissements sur les immeubles d’exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1559 #: model:account.account.template,name:l10n_ch.ch_coa_1559 msgid "Amortissements sur les installations de stockage" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1529 #: model:account.account.template,name:l10n_ch.ch_coa_1529 msgid "Amortissements sur les machines de bureau, inf. et syst. comm." msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1509 #: model:account.account.template,name:l10n_ch.ch_coa_1509 msgid "Amortissements sur les machines et appareils" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1549 #: model:account.account.template,name:l10n_ch.ch_coa_1549 msgid "Amortissements sur les outillages et appareils" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1539 #: model:account.account.template,name:l10n_ch.ch_coa_1539 msgid "Amortissements sur les véhicules" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1579 #: model:account.account.template,name:l10n_ch.ch_coa_1579 msgid "Amortissements sur les équipements et installations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2270 #: model:account.account.template,name:l10n_ch.ch_coa_2270 msgid "Assurances sociales et institutions de prévoyance" msgstr "Assicurazioni sociali e istituti di previdenza" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6300 #: model:account.account.template,name:l10n_ch.ch_coa_6300 msgid "Assurances-choses, droits, taxes, autorisations" msgstr "Assicurazioni cose, contributi, tasse e autorizzazioni" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5800 #: model:account.account.template,name:l10n_ch.ch_coa_5800 msgid "Autres charges du personnel" msgstr "Altri costi del personale" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6700 #: model:account.account.template,name:l10n_ch.ch_coa_6700 msgid "Autres charges d‘exploitation" msgstr "Altri costi d’esercizio" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1190 #: model:account.account.template,name:l10n_ch.ch_coa_1190 msgid "Autres créances à court terme" msgstr "Altri crediti a breve termine" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2210 #: model:account.account.template,name:l10n_ch.ch_coa_2210 msgid "Autres dettes à court terme" msgstr "Altri debiti a breve termine" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2140 #: model:account.account.template,name:l10n_ch.ch_coa_2140 msgid "Autres dettes à court terme rémunérées" msgstr "Altri debiti onerosi" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2500 #: model:account.account.template,name:l10n_ch.ch_coa_2500 msgid "Autres dettes à long terme" msgstr "Altri debiti a lungo termine" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1590 #: model:account.account.template,name:l10n_ch.ch_coa_1590 msgid "Autres immobilisations corporelles meubles" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3600 #: model:account.account.template,name:l10n_ch.ch_coa_3600 msgid "Autres ventes et prestations de services" msgstr "Altri ricavi e prestazioni di servizi" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1140 #: model:account.account.template,name:l10n_ch.ch_coa_1140 msgid "Avances et prêts" msgstr "Anticipi e prestiti" #. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_res_bank -msgid "Bank" -msgstr "" - -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_res_partner_bank -msgid "Bank Accounts" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_config_settings_l10n_ch_isr_print_bank_location -#: model:ir.model.fields,help:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location -msgid "" -"Boolean option field indicating whether or not the alternate layout (the one " -"printing bank name and address) must be used when generating an ISR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_sent -msgid "" -"Boolean value telling whether or not the ISR corresponding to this invoice " -"has already been printed or sent by mail." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_valid -msgid "" -"Boolean value. True iff all the data required to generate the ISR are present" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1700 #: model:account.account.template,name:l10n_ch.ch_coa_1700 msgid "Brevets, know-how, licences, droits, développement" msgstr "Patenti, know-how, licenze, diritti e sviluppo" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2979 #: model:account.account.template,name:l10n_ch.ch_coa_2979 msgid "Bénéfice / perte de l’exercice" msgstr "Utile/perdita annuale" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2970 #: model:account.account.template,name:l10n_ch.ch_coa_2970 msgid "Bénéfice / perte reporté" msgstr "Utile / perdita riportata" #. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_chf -msgid "CHF ISR reference" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1850 #: model:account.account.template,name:l10n_ch.ch_coa_1850 msgid "" "Capital actions, capital social, droits de participations ou capital de " @@ -409,7 +320,6 @@ msgstr "" "della fondazione non versati" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2800 #: model:account.account.template,name:l10n_ch.ch_coa_2800 msgid "Capital-actions, capital social, capital de fondation" msgstr "" @@ -417,109 +327,91 @@ msgstr "" "della fondazione" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4521 #: model:account.account.template,name:l10n_ch.ch_coa_4521 msgid "Charbon, briquettes, bois" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7010 #: model:account.account.template,name:l10n_ch.ch_coa_7010 msgid "Charges accessoires" msgstr "Costi attività accessoria" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6000 #: model:account.account.template,name:l10n_ch.ch_coa_6000 msgid "Charges de locaux" msgstr "Costi dei locali" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4000 #: model:account.account.template,name:l10n_ch.ch_coa_4000 msgid "Charges de matériel de l‘atelier" msgstr "Costi materiale per la fabbricazione" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5900 #: model:account.account.template,name:l10n_ch.ch_coa_5900 msgid "Charges de personnels temporaires" msgstr "Prestazioni di terz" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6200 #: model:account.account.template,name:l10n_ch.ch_coa_6200 msgid "Charges de véhicules et de transport" msgstr "Costi auto e di trasporto" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7510 #: model:account.account.template,name:l10n_ch.ch_coa_7510 msgid "Charges des immeubles d‘exploitation" msgstr "Costi immobili aziendali" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6500 #: model:account.account.template,name:l10n_ch.ch_coa_6500 msgid "Charges d‘administration" msgstr "Costi amministrativi" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6400 #: model:account.account.template,name:l10n_ch.ch_coa_6400 msgid "Charges d’énergie et évacuation des déchets" msgstr "Costi energia e smaltimento" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6570 #: model:account.account.template,name:l10n_ch.ch_coa_6570 msgid "Charges et leasing d’informatique" msgstr "Costi informatici incluso leasing" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8500 #: model:account.account.template,name:l10n_ch.ch_coa_8500 msgid "Charges extraordinaires, exceptionnelles ou hors période" msgstr "Costi straordinari, unici o relativi ad altri periodi contabili" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6900 #: model:account.account.template,name:l10n_ch.ch_coa_6900 msgid "Charges financières" msgstr "Costi finanziari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8000 #: model:account.account.template,name:l10n_ch.ch_coa_8000 msgid "Charges hors exploitation" msgstr "Costi estranei" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1300 #: model:account.account.template,name:l10n_ch.ch_coa_1300 msgid "Charges payées d‘avance" msgstr "Costi anticipati" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5700 #: model:account.account.template,name:l10n_ch.ch_coa_5700 msgid "Charges sociales" msgstr "Oneri sociali" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2300 #: model:account.account.template,name:l10n_ch.ch_coa_2300 msgid "Charges à payer" msgstr "Costi da pagare" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3803 #: model:account.account.template,name:l10n_ch.ch_coa_3803 msgid "Commissions de tiers" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4903 #: model:account.account.template,name:l10n_ch.ch_coa_4903 msgid "Commissions obtenues sur achats" msgstr "" @@ -530,147 +422,113 @@ msgid "Companies" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1099 #: model:account.account.template,name:l10n_ch.ch_coa_1099 msgid "Compte d'attente autre" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1091 #: model:account.account.template,name:l10n_ch.ch_coa_1091 msgid "Compte d'attente pour salaires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3710 #: model:account.account.template,name:l10n_ch.ch_coa_3710 msgid "Consommations propres" msgstr "Consumo proprio" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1269 #: model:account.account.template,name:l10n_ch.ch_coa_1269 msgid "Correction de la valeur de stocks de produits finis" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1279 #: model:account.account.template,name:l10n_ch.ch_coa_1279 msgid "Corrections de la valeur des stock produits semi-ouvrés" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1209 #: model:account.account.template,name:l10n_ch.ch_coa_1209 msgid "Corrections de la valeur des stocks de marchandises" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1289 #: model:account.account.template,name:l10n_ch.ch_coa_1289 msgid "Corrections de la valeur des travaux en cours" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1219 #: model:account.account.template,name:l10n_ch.ch_coa_1219 msgid "Corrections de la valeur sur matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1180 #: model:account.account.template,name:l10n_ch.ch_coa_1180 msgid "Créances envers les assurances sociales et institutions de prévoyance" msgstr "Crediti da assicurazioni sociali e istituti di previdenza" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2000 #: model:account.account.template,name:l10n_ch.ch_coa_2000 msgid "Créanciers" msgstr "Debiti per forniture e prestazioni (creditori)" #. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_currency_name -msgid "Currency" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2100 -#: model:account.account,name:l10n_ch.1_ch_coa_2400 #: model:account.account.template,name:l10n_ch.ch_coa_2100 #: model:account.account.template,name:l10n_ch.ch_coa_2400 msgid "Dettes bancaires" msgstr "Banca passiva" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2160 #: model:account.account.template,name:l10n_ch.ch_coa_2160 msgid "Dettes envers l'actionnaire" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3806 -#: model:account.account,name:l10n_ch.1_ch_coa_4906 #: model:account.account.template,name:l10n_ch.ch_coa_3806 #: model:account.account.template,name:l10n_ch.ch_coa_4906 msgid "Différences de change" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2261 #: model:account.account.template,name:l10n_ch.ch_coa_2261 msgid "Dividendes" msgstr "Dividendi" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4071 #: model:account.account.template,name:l10n_ch.ch_coa_4071 msgid "Droits de douanes à l'importation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1109 #: model:account.account.template,name:l10n_ch.ch_coa_1109 msgid "Ducroire" msgstr "Delcredere" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1100 #: model:account.account.template,name:l10n_ch.ch_coa_1100 msgid "Débiteurs" msgstr "Crediti da forniture e prestazioni (debitori)" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2201 #: model:account.account.template,name:l10n_ch.ch_coa_2201 msgid "Décompte TVA" msgstr "IVA, rendiconto" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4009 #: model:account.account.template,name:l10n_ch.ch_coa_4009 msgid "Déductions obtenues sur achats" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3009 #: model:account.account.template,name:l10n_ch.ch_coa_3009 msgid "Déductions sur ventes" msgstr "Diminuzione di ricavi" #. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_eur -msgid "EUR ISR reference" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4540 #: model:account.account.template,name:l10n_ch.ch_coa_4540 msgid "Eau" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4500 #: model:account.account.template,name:l10n_ch.ch_coa_4500 msgid "Electricité" msgstr "" @@ -681,323 +539,202 @@ msgid "Email Templates" msgstr "" #. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_mail_compose_message -msgid "Email composition wizard" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2450 #: model:account.account.template,name:l10n_ch.ch_coa_2450 msgid "Emprunts" msgstr "Prestiti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2430 #: model:account.account.template,name:l10n_ch.ch_coa_2430 msgid "Emprunts obligataires" msgstr "Prestiti obbligazionari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2120 -#: model:account.account,name:l10n_ch.1_ch_coa_2420 #: model:account.account.template,name:l10n_ch.ch_coa_2120 #: model:account.account.template,name:l10n_ch.ch_coa_2420 msgid "Engagements de financement par leasing" msgstr "Impegni leasing finanziari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6100 #: model:account.account.template,name:l10n_ch.ch_coa_6100 msgid "" "Entretien, réparations et remplacement des inst. servant à l’exploitation" msgstr "Manutenzioni, riparazioni e sostituzione immobilizzazioni mobiliari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1570 #: model:account.account.template,name:l10n_ch.ch_coa_1570 msgid "Equipements et Installations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3800 -#: model:account.account,name:l10n_ch.1_ch_coa_4900 #: model:account.account.template,name:l10n_ch.ch_coa_3800 #: model:account.account.template,name:l10n_ch.ch_coa_4900 msgid "Escomptes" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4530 #: model:account.account.template,name:l10n_ch.ch_coa_4530 msgid "Essence" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3804 #: model:account.account.template,name:l10n_ch.ch_coa_3804 msgid "Frais d'encaissement" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3807 #: model:account.account.template,name:l10n_ch.ch_coa_3807 msgid "Frais d'expédition" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4072 #: model:account.account.template,name:l10n_ch.ch_coa_4072 msgid "Frais de transport à l'achat" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4070 #: model:account.account.template,name:l10n_ch.ch_coa_4070 msgid "Frêts à l'achat" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4510 #: model:account.account.template,name:l10n_ch.ch_coa_4510 msgid "Gaz" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1770 #: model:account.account.template,name:l10n_ch.ch_coa_1770 msgid "Goodwill" msgstr "Goodwill" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1441 -#: model:account.account,name:l10n_ch.1_ch_coa_2451 #: model:account.account.template,name:l10n_ch.ch_coa_1441 #: model:account.account.template,name:l10n_ch.ch_coa_2451 msgid "Hypothèques" msgstr "Prestiti ipotecari" #. module: l10n_ch -#: model:ir.actions.report.xml,name:l10n_ch.l10n_ch_isr_report -msgid "ISR" -msgstr "" - -#. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.l10n_ch_isr_report_template -msgid "ISR for invoice" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced -msgid "" -"ISR number split in blocks of 5 characters (right-justified), to generate " -"ISR report." -msgstr "" - -#. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.isr_invoice_search_view -msgid "ISR reference number" -msgstr "" - -#. module: l10n_ch -#: code:addons/l10n_ch/models/mail_compose_message.py:23 -#, python-format -msgid "ISR sent" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1600 #: model:account.account.template,name:l10n_ch.ch_coa_1600 msgid "Immeubles d’exploitation" msgstr "Immobili aziendali" #. module: l10n_ch -#: model:account.fiscal.position,name:l10n_ch.1_fiscal_position_template_import #: model:account.fiscal.position.template,name:l10n_ch.fiscal_position_template_import msgid "Import/Export" msgstr "Import/Export" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1176 #: model:account.account.template,name:l10n_ch.ch_coa_1176 msgid "Impôt anticipé" msgstr "Imposta preventiva" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2206 #: model:account.account.template,name:l10n_ch.ch_coa_2206 msgid "Impôt anticipé dû" msgstr "Imposta preventiva" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1171 #: model:account.account.template,name:l10n_ch.ch_coa_1171 msgid "Impôt préalable: TVA s/investissements et autres charges d’exploitation" msgstr "IVA, imposta precedente su investimenti e altri costi d’esercizio" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1170 #: model:account.account.template,name:l10n_ch.ch_coa_1170 msgid "Impôt préalable: TVA s/matériel, marchandises, prestations et énergie" msgstr "IVA, Imposta precedente su materiale, merce, servizi e energia" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1189 -#: model:account.account,name:l10n_ch.1_ch_coa_2279 #: model:account.account.template,name:l10n_ch.ch_coa_1189 #: model:account.account.template,name:l10n_ch.ch_coa_2279 msgid "Impôt à la source" msgstr "Imposte alla fonte" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2208 -#: model:account.account,name:l10n_ch.1_ch_coa_8900 #: model:account.account.template,name:l10n_ch.ch_coa_2208 #: model:account.account.template,name:l10n_ch.ch_coa_8900 msgid "Impôts directs" msgstr "Imposte dirette" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1550 #: model:account.account.template,name:l10n_ch.ch_coa_1550 msgid "Installations de stockage" msgstr "" #. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_account_invoice -msgid "Invoice" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number -msgid "L10N Ch Isr Number" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced -msgid "L10N Ch Isr Number Spaced" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line -msgid "L10N Ch Isr Optical Line" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal -msgid "L10N Ch Isr Postal" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted -msgid "L10N Ch Isr Postal Formatted" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_sent -msgid "L10N Ch Isr Sent" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_valid -msgid "L10N Ch Isr Valid" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_partner_bank_l10n_ch_postal -msgid "L10N Ch Postal" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6260 #: model:account.account.template,name:l10n_ch.ch_coa_6260 msgid "Leasing et location de véhicules" msgstr "Leasing e noleggio auto" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6105 #: model:account.account.template,name:l10n_ch.ch_coa_6105 msgid "Leasing immobilisations corporelles meubles" msgstr "Costi leasing immobilizzazioni mobiliari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1520 +#: model:account.account.template,name:l10n_ch.l10nch_chart_template_liquidity_transfer +msgid "Liquidity Transfer" +msgstr "" + +#. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1520 msgid "Machines de bureau, informatique, systèmes de communication" msgstr "Macchine ufficio, informatica e tecnologia della comunicazione" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1500 #: model:account.account.template,name:l10n_ch.ch_coa_1500 msgid "Machines et appareils" msgstr "Macchine e attrezzature" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1200 #: model:account.account.template,name:l10n_ch.ch_coa_1200 msgid "Marchandises commerciales" msgstr "Merce di rivendita" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1250 #: model:account.account.template,name:l10n_ch.ch_coa_1250 msgid "Marchandises en consignation" msgstr "Merce in consegna" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1220 #: model:account.account.template,name:l10n_ch.ch_coa_1220 msgid "Matières auxiliaires" msgstr "Materia ausiliaria" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1230 #: model:account.account.template,name:l10n_ch.ch_coa_1230 msgid "Matières consommables" msgstr "Materiale di consumo" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1210 #: model:account.account.template,name:l10n_ch.ch_coa_1210 msgid "Matières premières" msgstr "Materia prima" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4520 #: model:account.account.template,name:l10n_ch.ch_coa_4520 msgid "Mazout" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1510 #: model:account.account.template,name:l10n_ch.ch_coa_1510 msgid "Mobilier et installations" msgstr "Mobilio e installazioni" #. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line -msgid "Optical reading line, as it will be printed on ISR" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1540 #: model:account.account.template,name:l10n_ch.ch_coa_1540 msgid "Outillages et appareils" msgstr "Utensili e apparecchiature" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1480 #: model:account.account.template,name:l10n_ch.ch_coa_1480 msgid "Participations" msgstr "Partecipazioni" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4086 #: model:account.account.template,name:l10n_ch.ch_coa_4086 msgid "Pertes de matières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3805 #: model:account.account.template,name:l10n_ch.ch_coa_3805 msgid "Pertes sur créances clients, variation ducroire" msgstr "" @@ -1008,92 +745,51 @@ msgid "Plan comptable 2015" msgstr "Piano Conti 2015" #. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted -msgid "" -"Postal reference of the bank, formated with '-' and without the padding " -"zeros, to generate ISR report." -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4400 #: model:account.account.template,name:l10n_ch.ch_coa_4400 msgid "Prestations / travaux de tiers" msgstr "Lavori di terzi / prestazioni di subappaltanti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3700 #: model:account.account.template,name:l10n_ch.ch_coa_3700 msgid "Prestations propres" msgstr "Lavori interni" #. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.isr_invoice_form -msgid "Print ISR" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location -msgid "Print bank location" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_config_settings_l10n_ch_isr_print_bank_location -msgid "Print bank on ISR" -msgstr "" - -#. module: l10n_ch -#: model_terms:ir.ui.view,arch_db:l10n_ch.l10n_ch-isr_account_config_settings -msgid "" -"Print the coordinates of your bank under the 'Payment for' title of the " -"ISR.\n" -" Your address will be moved to the 'in favour " -"of' section." -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7000 #: model:account.account.template,name:l10n_ch.ch_coa_7000 msgid "Produits accessoires" msgstr "Ricavi attività accessoria" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7500 #: model:account.account.template,name:l10n_ch.ch_coa_7500 msgid "Produits des immeubles d‘exploitation" msgstr "Ricavi immobili aziendali" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2301 #: model:account.account.template,name:l10n_ch.ch_coa_2301 msgid "Produits encaissés d’avance" msgstr "Ricavi incassati dell’anno seguente" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8510 #: model:account.account.template,name:l10n_ch.ch_coa_8510 msgid "Produits extraordinaires, exceptionnels ou hors période" msgstr "Ricavi straordinari, unici o relativi ad altri periodi contabili" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6950 #: model:account.account.template,name:l10n_ch.ch_coa_6950 msgid "Produits financiers" msgstr "Ricavi finanziari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8100 #: model:account.account.template,name:l10n_ch.ch_coa_8100 msgid "Produits hors exploitation" msgstr "Ricavi estranei" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1301 #: model:account.account.template,name:l10n_ch.ch_coa_1301 msgid "Produits à recevoir" msgstr "Ricavi da incassare" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2980 #: model:account.account.template,name:l10n_ch.ch_coa_2980 msgid "" "Propres actions, parts sociales, droits de participations (poste négatif)" @@ -1101,96 +797,76 @@ msgstr "" "Azioni proprie, parti sociali, diritti di partecipazione (posta negativa)" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2600 #: model:account.account.template,name:l10n_ch.ch_coa_2600 msgid "Provisions" msgstr "Accantonamenti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2330 #: model:account.account.template,name:l10n_ch.ch_coa_2330 msgid "Provisions à court terme" msgstr "Accantonamenti a breve termine" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1440 #: model:account.account.template,name:l10n_ch.ch_coa_1440 msgid "Prêts" msgstr "Prestiti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6600 #: model:account.account.template,name:l10n_ch.ch_coa_6600 msgid "Publicité" msgstr "Costi pubblicitari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3801 #: model:account.account.template,name:l10n_ch.ch_coa_3801 msgid "Rabais et réduction de prix" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4901 #: model:account.account.template,name:l10n_ch.ch_coa_4901 msgid "Rabais et réductions de prix" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3802 -#: model:account.account,name:l10n_ch.1_ch_coa_4092 #: model:account.account.template,name:l10n_ch.ch_coa_3802 #: model:account.account.template,name:l10n_ch.ch_coa_4092 msgid "Ristournes" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2940 #: model:account.account.template,name:l10n_ch.ch_coa_2940 msgid "Réserves d‘évaluation" msgstr "Riserve da rivalutazioni" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2960 #: model:account.account.template,name:l10n_ch.ch_coa_2960 msgid "Réserves libres" msgstr "Riserve facoltative da utili" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2950 #: model:account.account.template,name:l10n_ch.ch_coa_2950 msgid "Réserves légales issues du bénéfice" msgstr "Riserva legale da utili" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2900 #: model:account.account.template,name:l10n_ch.ch_coa_2900 msgid "Réserves légales issues du capital" msgstr "Riserva legale da capitale" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5000 #: model:account.account.template,name:l10n_ch.ch_coa_5000 msgid "Salaires" msgstr "Salari" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1260 #: model:account.account.template,name:l10n_ch.ch_coa_1260 msgid "Stocks de produits finis" msgstr "Prodotti finiti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1270 #: model:account.account.template,name:l10n_ch.ch_coa_1270 msgid "Stocks de produits semi-ouvrés" msgstr "" -#. module: l10n_ch -#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu -msgid "Swiss Statements" -msgstr "" - #. module: l10n_ch #: model:account.account.tag,name:l10n_ch.vat_tag_dedouanement msgid "Switzerland VAT Form: 100% dédouanement (base in grid 400)" @@ -1232,13 +908,13 @@ msgid "Switzerland VAT Form: grid 280" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_301_a -msgid "Switzerland VAT Form: grid 301 base" +#: model:account.account.tag,name:l10n_ch.vat_tag_302_a +msgid "Switzerland VAT Form: grid 302 base" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_301_b -msgid "Switzerland VAT Form: grid 301 tax" +#: model:account.account.tag,name:l10n_ch.vat_tag_302_b +msgid "Switzerland VAT Form: grid 302 tax" msgstr "" #. module: l10n_ch @@ -1252,13 +928,13 @@ msgid "Switzerland VAT Form: grid 311 tax" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_341_a -msgid "Switzerland VAT Form: grid 341 base" +#: model:account.account.tag,name:l10n_ch.vat_tag_342_a +msgid "Switzerland VAT Form: grid 342 base" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_341_b -msgid "Switzerland VAT Form: grid 341 tax" +#: model:account.account.tag,name:l10n_ch.vat_tag_342_b +msgid "Switzerland VAT Form: grid 342 tax" msgstr "" #. module: l10n_ch @@ -1271,6 +947,16 @@ msgstr "" msgid "Switzerland VAT Form: grid 381 tax" msgstr "" +#. module: l10n_ch +#: model:account.account.tag,name:l10n_ch.vat_tag_382_a +msgid "Switzerland VAT Form: grid 382 base" +msgstr "" + +#. module: l10n_ch +#: model:account.account.tag,name:l10n_ch.vat_tag_382_b +msgid "Switzerland VAT Form: grid 382 tax" +msgstr "" + #. module: l10n_ch #: model:account.account.tag,name:l10n_ch.vat_tag_400 msgid "Switzerland VAT Form: grid 400" @@ -1297,304 +983,228 @@ msgid "Switzerland VAT Form: grid 420" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_O_import +#: model:account.tax.group,name:l10n_ch.tax_group_tva_0 +msgid "TVA 0%" +msgstr "" + +#. module: l10n_ch #: model:account.tax.template,name:l10n_ch.vat_O_import msgid "TVA 0% Importations de biens et services" msgstr "IVA 0% Importazioni di bene e servizi" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_O_exclude #: model:account.tax.template,name:l10n_ch.vat_O_exclude msgid "TVA 0% exclue" msgstr "IVA 0% Esclusa" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_purchase_incl +#: model:account.tax.group,name:l10n_ch.tax_group_tva_25 +msgid "TVA 2.5%" +msgstr "" + +#. module: l10n_ch #: model:account.tax.template,name:l10n_ch.vat_25_purchase_incl msgid "TVA 2.5% sur achat B&S (Incl. TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_purchase #: model:account.tax.template,name:l10n_ch.vat_25_purchase msgid "TVA 2.5% sur achat B&S (TR)" msgstr "TVA 2.5% sur achat B&S (TR)" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_invest_incl #: model:account.tax.template,name:l10n_ch.vat_25_invest_incl msgid "TVA 2.5% sur invest. et autres ch. (Incl. TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_invest #: model:account.tax.template,name:l10n_ch.vat_25_invest msgid "TVA 2.5% sur invest. et autres ch. (TR)" msgstr "IVA 2.5% Investimenti e altri costi (TR)" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_purchase_incl -#: model:account.tax.template,name:l10n_ch.vat_38_purchase_incl -msgid "TVA 3.8% sur achat B&S (Incl. TS)" +#: model:account.tax.group,name:l10n_ch.tax_group_tva_37 +msgid "TVA 3.7%" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_purchase -#: model:account.tax.template,name:l10n_ch.vat_38_purchase -msgid "TVA 3.8% sur achat B&S (TS)" -msgstr "TVA 3.8% sur achat B&S (TS)" - -#. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_invest_incl -#: model:account.tax.template,name:l10n_ch.vat_38_invest_incl -msgid "TVA 3.8% sur invest. et autres ch. (Incl. TS)" +#: model:account.tax.template,name:l10n_ch.vat_37_purchase_incl +msgid "TVA 3.7% sur achat B&S (Incl. TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_invest -#: model:account.tax.template,name:l10n_ch.vat_38_invest -msgid "TVA 3.8% sur invest. et autres ch. (TS)" -msgstr "IVA 3.8% Investimenti e altri costi (TS)" - -#. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_purchase_incl -#: model:account.tax.template,name:l10n_ch.vat_80_purchase_incl -msgid "TVA 8.0% sur achat B&S (Incl. TN)" +#: model:account.tax.template,name:l10n_ch.vat_37_purchase +msgid "TVA 3.7% sur achat B&S (TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_purchase -#: model:account.tax.template,name:l10n_ch.vat_80_purchase -msgid "TVA 8.0% sur achat B&S (TN)" -msgstr "TVA 8.0% sur achat B&S (TN)" - -#. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_invest_incl -#: model:account.tax.template,name:l10n_ch.vat_80_invest_incl -msgid "TVA 8.0% sur invest. et autres ch. (Incl. TN)" +#: model:account.tax.template,name:l10n_ch.vat_37_invest_incl +msgid "TVA 3.7% sur invest. et autres ch. (Incl. TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_invest -#: model:account.tax.template,name:l10n_ch.vat_80_invest -msgid "TVA 8.0% sur invest. et autres ch. (TN)" -msgstr "IVA 8.0% Investimenti e altri costi (TN)" +#: model:account.tax.template,name:l10n_ch.vat_37_invest +msgid "TVA 3.7% sur invest. et autres ch. (TS)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.group,name:l10n_ch.tax_group_tva_77 +msgid "TVA 7.7%" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_incl +msgid "TVA 7.7% sur achat B&S (Incl. TN)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase +msgid "TVA 7.7% sur achat B&S (TN)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_reverse +msgid "TVA 7.7% sur achat service a l'etranger (reverse charge)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_invest_incl +msgid "TVA 7.7% sur invest. et autres ch. (Incl. TN)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_invest +msgid "TVA 7.7% sur invest. et autres ch. (TN)" +msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2200 #: model:account.account.template,name:l10n_ch.ch_coa_2200 msgid "TVA due" msgstr "IVA dovuta" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_XO #: model:account.tax.template,name:l10n_ch.vat_XO msgid "TVA due a 0% (Exportations)" msgstr "IVA Vendite 0% (Export)" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25 #: model:account.tax.template,name:l10n_ch.vat_25 msgid "TVA due a 2.5% (TR)" msgstr "IVA Vendite al 2.5% (TR)" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38 -#: model:account.tax.template,name:l10n_ch.vat_38 -msgid "TVA due a 3.8% (TS)" -msgstr "IVA Vendite al 3.8% (TS)" +#: model:account.tax.template,name:l10n_ch.vat_37 +msgid "TVA due a 3.7% (TS)" +msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80 -#: model:account.tax.template,name:l10n_ch.vat_80 -msgid "TVA due a 8.0% (TN)" -msgstr "IVA Vendite al 8.0% (TN)" +#: model:account.tax.template,name:l10n_ch.vat_77 +msgid "TVA due a 7.7% (TN)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_return +msgid "TVA due a 7.7% (TN) (return)" +msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_incl #: model:account.tax.template,name:l10n_ch.vat_25_incl msgid "TVA due à 2.5% (Incl. TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_incl -#: model:account.tax.template,name:l10n_ch.vat_38_incl -msgid "TVA due à 3.8% (Incl. TS)" +#: model:account.tax.template,name:l10n_ch.vat_37_incl +msgid "TVA due à 3.7% (Incl. TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_incl -#: model:account.tax.template,name:l10n_ch.vat_80_incl -msgid "TVA due à 8.0% (Incl. TN)" +#: model:account.tax.template,name:l10n_ch.vat_77_incl +msgid "TVA due à 7.7% (Incl. TN)" msgstr "" #. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_partner_bank_l10n_ch_postal -msgid "The ISR number of the company within the bank" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_currency_name -msgid "The name of this invoice's currency" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal -msgid "The postal reference identifying the bank managing this ISR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_chf -msgid "" -"The postal reference of the bank, used to generate ISR payment slips in CHF." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_eur -msgid "" -"The postal reference of the bank, used to generate ISR payment slips in EUR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number -msgid "The reference number associated with this invoice" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1060 #: model:account.account.template,name:l10n_ch.ch_coa_1060 msgid "Titres" msgstr "Titoli" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1400 #: model:account.account.template,name:l10n_ch.ch_coa_1400 msgid "Titres à long terme" msgstr "Titoli" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_transfer_account_id -#: model:account.account.template,name:l10n_ch.transfer_account_id -msgid "Transferts internes" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1280 #: model:account.account.template,name:l10n_ch.ch_coa_1280 msgid "Travaux en cours" msgstr "Prodotti in corso di fabbricazione" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3940 #: model:account.account.template,name:l10n_ch.ch_coa_3940 msgid "Variation de la valeur des prestations non facturées" msgstr "Variazione prestazioni di servizi non fatturate" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1287 #: model:account.account.template,name:l10n_ch.ch_coa_1287 msgid "Variation de la valeur des travaux en cours" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1277 #: model:account.account.template,name:l10n_ch.ch_coa_1277 msgid "Variation de stock produits semi-ouvrés" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1267 #: model:account.account.template,name:l10n_ch.ch_coa_1267 msgid "Variation de stocks de produits finis" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1207 -#: model:account.account,name:l10n_ch.1_ch_coa_4800 #: model:account.account.template,name:l10n_ch.ch_coa_1207 #: model:account.account.template,name:l10n_ch.ch_coa_4800 msgid "Variation des stocks de marchandises" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4801 #: model:account.account.template,name:l10n_ch.ch_coa_4801 msgid "Variation des stocks de matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3901 #: model:account.account.template,name:l10n_ch.ch_coa_3901 msgid "Variation des stocks de produits finis" msgstr "Variazione delle scorte di prodotti finiti" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3900 #: model:account.account.template,name:l10n_ch.ch_coa_3900 msgid "Variation des stocks de produits semi-finis" msgstr "Variazione delle scorte di prodotti in corso di fabbricazione" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1217 #: model:account.account.template,name:l10n_ch.ch_coa_1217 msgid "Variation des stocks des matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4008 -#: model:account.account,name:l10n_ch.1_ch_coa_4080 #: model:account.account.template,name:l10n_ch.ch_coa_4008 #: model:account.account.template,name:l10n_ch.ch_coa_4080 msgid "Variations de stocks" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3200 #: model:account.account.template,name:l10n_ch.ch_coa_3200 msgid "Ventes de marchandises" msgstr "Ricavi merci di rivendita" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3400 #: model:account.account.template,name:l10n_ch.ch_coa_3400 msgid "Ventes de prestations" msgstr "Ricavi prestazioni di servizi" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3000 #: model:account.account.template,name:l10n_ch.ch_coa_3000 msgid "Ventes de produits fabriqués" msgstr "Ricavi prodotti fabbricati" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1530 #: model:account.account.template,name:l10n_ch.ch_coa_1530 msgid "Véhicules" msgstr "Veicoli" - -#. module: l10n_ch -#: code:addons/l10n_ch/models/account_invoice.py:153 -#, python-format -msgid "" -"You cannot generate an ISR yet.\n" -"\n" -" For this, you need to :\n" -"\n" -" - set a valid postal account number (or " -"an IBAN referencing one) for your company\n" -"\n" -" - define its bank\n" -"\n" -" - associate this bank with a postal " -"reference for the currency used in this invoice\n" -"\n" -" - fill the 'bank account' field of the " -"invoice with the postal to be used to receive the related payment. A default " -"account will be automatically set for all invoices created after you defined " -"a postal account for your company." -msgstr "" - -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_account_config_settings -msgid "account.config.settings" -msgstr "" diff --git a/addons/l10n_ch/i18n_extra/l10n_ch.pot b/addons/l10n_ch/i18n_extra/l10n_ch.pot index e2c03bcba8b..73b91c2b356 100644 --- a/addons/l10n_ch/i18n_extra/l10n_ch.pot +++ b/addons/l10n_ch/i18n_extra/l10n_ch.pot @@ -4,10 +4,10 @@ # msgid "" msgstr "" -"Project-Id-Version: Odoo Server 10.saas~15+e\n" +"Project-Id-Version: Odoo Server 12.0\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-03-14 15:52+0000\n" -"PO-Revision-Date: 2017-03-14 15:52+0000\n" +"POT-Creation-Date: 2019-02-12 05:39+0000\n" +"PO-Revision-Date: 2019-02-12 05:39+0000\n" "Last-Translator: <>\n" "Language-Team: \n" "MIME-Version: 1.0\n" @@ -16,496 +16,393 @@ msgstr "" "Plural-Forms: \n" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_O_exclude #: model:account.tax.template,description:l10n_ch.vat_O_exclude msgid "0% excl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_O_import #: model:account.tax.template,description:l10n_ch.vat_O_import msgid "0% import." msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_100_import #: model:account.tax.template,name:l10n_ch.vat_100_import msgid "100% dédouanement TVA" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_100_import #: model:account.tax.template,description:l10n_ch.vat_100_import msgid "100% imp." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25 #: model:account.tax.template,description:l10n_ch.vat_25 msgid "2.5%" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_incl #: model:account.tax.template,description:l10n_ch.vat_25_incl msgid "2.5% Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_purchase #: model:account.tax.template,description:l10n_ch.vat_25_purchase msgid "2.5% achat" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_purchase_incl #: model:account.tax.template,description:l10n_ch.vat_25_purchase_incl msgid "2.5% achat Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_invest #: model:account.tax.template,description:l10n_ch.vat_25_invest msgid "2.5% invest." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_25_invest_incl #: model:account.tax.template,description:l10n_ch.vat_25_invest_incl msgid "2.5% invest. Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38 -#: model:account.tax.template,description:l10n_ch.vat_38 -msgid "3.8%" +#: model:account.tax.template,description:l10n_ch.vat_37 +msgid "3.7%" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_incl -#: model:account.tax.template,description:l10n_ch.vat_38_incl -msgid "3.8% Incl." +#: model:account.tax.template,description:l10n_ch.vat_37_incl +msgid "3.7% Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_purchase -#: model:account.tax.template,description:l10n_ch.vat_38_purchase -msgid "3.8% achat" +#: model:account.tax.template,description:l10n_ch.vat_37_purchase +msgid "3.7% achat" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_purchase_incl -#: model:account.tax.template,description:l10n_ch.vat_38_purchase_incl -msgid "3.8% achat Incl." +#: model:account.tax.template,description:l10n_ch.vat_37_purchase_incl +msgid "3.7% achat Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_invest -#: model:account.tax.template,description:l10n_ch.vat_38_invest -msgid "3.8% invest" +#: model:account.tax.template,description:l10n_ch.vat_37_invest +msgid "3.7% invest" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_38_invest_incl -#: model:account.tax.template,description:l10n_ch.vat_38_invest_incl -msgid "3.8% invest Incl." +#: model:account.tax.template,description:l10n_ch.vat_37_invest_incl +msgid "3.7% invest Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80 -#: model:account.tax.template,description:l10n_ch.vat_80 -msgid "8.0%" +#: model:account.tax.template,description:l10n_ch.vat_77 +msgid "7.7%" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_incl -#: model:account.tax.template,description:l10n_ch.vat_80_incl -msgid "8.0% Incl." +#: model:account.tax.template,description:l10n_ch.vat_77_incl +msgid "7.7% Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_purchase -#: model:account.tax.template,description:l10n_ch.vat_80_purchase -msgid "8.0% achat" +#: model:account.tax.template,description:l10n_ch.vat_77_purchase +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_reverse +msgid "7.7% achat" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_purchase_incl -#: model:account.tax.template,description:l10n_ch.vat_80_purchase_incl -msgid "8.0% achat Incl." +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_return +msgid "7.7% achat (return)" msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_invest -#: model:account.tax.template,description:l10n_ch.vat_80_invest -msgid "8.0% invest." +#: model:account.tax.template,description:l10n_ch.vat_77_purchase_incl +msgid "7.7% achat Incl." msgstr "" #. module: l10n_ch -#: model:account.tax,description:l10n_ch.1_vat_80_invest_incl -#: model:account.tax.template,description:l10n_ch.vat_80_invest_incl -msgid "8.0% invest. Incl." +#: model:account.tax.template,description:l10n_ch.vat_77_invest +msgid "7.7% invest." +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,description:l10n_ch.vat_77_invest_incl +msgid "7.7% invest. Incl." msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4200 #: model:account.account.template,name:l10n_ch.ch_coa_4200 msgid "Achats de marchandises destinées à la revente" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2030 #: model:account.account.template,name:l10n_ch.ch_coa_2030 msgid "Acomptes de clients" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1208 #: model:account.account.template,name:l10n_ch.ch_coa_1208 msgid "Acomptes sur les marchandises commerciales" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1218 #: model:account.account.template,name:l10n_ch.ch_coa_1218 msgid "Acomptes sur matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1149 #: model:account.account.template,name:l10n_ch.ch_coa_1149 msgid "Ajustement de la valeur des avances et des prêts" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1199 #: model:account.account.template,name:l10n_ch.ch_coa_1199 msgid "Ajustement de la valeur des créances à court terme" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1449 #: model:account.account.template,name:l10n_ch.ch_coa_1449 msgid "Ajustement de la valeur des créances à long terme" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1779 #: model:account.account.template,name:l10n_ch.ch_coa_1779 msgid "Ajustement de la valeur des goodwill" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1489 #: model:account.account.template,name:l10n_ch.ch_coa_1489 msgid "Ajustement de la valeur des participations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1069 -#: model:account.account,name:l10n_ch.1_ch_coa_1409 #: model:account.account.template,name:l10n_ch.ch_coa_1069 #: model:account.account.template,name:l10n_ch.ch_coa_1409 msgid "Ajustement de la valeur des titres" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6800 #: model:account.account.template,name:l10n_ch.ch_coa_6800 msgid "Amortissements et ajustements de valeur des postes sur immobilisations corporelles" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1519 #: model:account.account.template,name:l10n_ch.ch_coa_1519 msgid "Amortissements sur le mobilier et les installations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1599 #: model:account.account.template,name:l10n_ch.ch_coa_1599 msgid "Amortissements sur les autres immobilisations corporelles meubles" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1709 #: model:account.account.template,name:l10n_ch.ch_coa_1709 msgid "Amortissements sur les brevets, know-how, licences, droits, dév." msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1609 #: model:account.account.template,name:l10n_ch.ch_coa_1609 msgid "Amortissements sur les immeubles d’exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1559 #: model:account.account.template,name:l10n_ch.ch_coa_1559 msgid "Amortissements sur les installations de stockage" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1529 #: model:account.account.template,name:l10n_ch.ch_coa_1529 msgid "Amortissements sur les machines de bureau, inf. et syst. comm." msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1509 #: model:account.account.template,name:l10n_ch.ch_coa_1509 msgid "Amortissements sur les machines et appareils" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1549 #: model:account.account.template,name:l10n_ch.ch_coa_1549 msgid "Amortissements sur les outillages et appareils" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1539 #: model:account.account.template,name:l10n_ch.ch_coa_1539 msgid "Amortissements sur les véhicules" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1579 #: model:account.account.template,name:l10n_ch.ch_coa_1579 msgid "Amortissements sur les équipements et installations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2270 #: model:account.account.template,name:l10n_ch.ch_coa_2270 msgid "Assurances sociales et institutions de prévoyance" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6300 #: model:account.account.template,name:l10n_ch.ch_coa_6300 msgid "Assurances-choses, droits, taxes, autorisations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5800 #: model:account.account.template,name:l10n_ch.ch_coa_5800 msgid "Autres charges du personnel" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6700 #: model:account.account.template,name:l10n_ch.ch_coa_6700 msgid "Autres charges d‘exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1190 #: model:account.account.template,name:l10n_ch.ch_coa_1190 msgid "Autres créances à court terme" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2210 #: model:account.account.template,name:l10n_ch.ch_coa_2210 msgid "Autres dettes à court terme" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2140 #: model:account.account.template,name:l10n_ch.ch_coa_2140 msgid "Autres dettes à court terme rémunérées" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2500 #: model:account.account.template,name:l10n_ch.ch_coa_2500 msgid "Autres dettes à long terme" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1590 #: model:account.account.template,name:l10n_ch.ch_coa_1590 msgid "Autres immobilisations corporelles meubles" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3600 #: model:account.account.template,name:l10n_ch.ch_coa_3600 msgid "Autres ventes et prestations de services" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1140 #: model:account.account.template,name:l10n_ch.ch_coa_1140 msgid "Avances et prêts" msgstr "" #. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_res_bank -msgid "Bank" -msgstr "" - -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_res_partner_bank -msgid "Bank Accounts" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_config_settings_l10n_ch_isr_print_bank_location -#: model:ir.model.fields,help:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location -msgid "Boolean option field indicating whether or not the alternate layout (the one printing bank name and address) must be used when generating an ISR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_sent -msgid "Boolean value telling whether or not the ISR corresponding to this invoice has already been printed or sent by mail." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_valid -msgid "Boolean value. True iff all the data required to generate the ISR are present" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1700 #: model:account.account.template,name:l10n_ch.ch_coa_1700 msgid "Brevets, know-how, licences, droits, développement" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2979 #: model:account.account.template,name:l10n_ch.ch_coa_2979 msgid "Bénéfice / perte de l’exercice" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2970 #: model:account.account.template,name:l10n_ch.ch_coa_2970 msgid "Bénéfice / perte reporté" msgstr "" #. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_chf -msgid "CHF ISR reference" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1850 #: model:account.account.template,name:l10n_ch.ch_coa_1850 msgid "Capital actions, capital social, droits de participations ou capital de fondation non versés" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2800 #: model:account.account.template,name:l10n_ch.ch_coa_2800 msgid "Capital-actions, capital social, capital de fondation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4521 #: model:account.account.template,name:l10n_ch.ch_coa_4521 msgid "Charbon, briquettes, bois" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7010 #: model:account.account.template,name:l10n_ch.ch_coa_7010 msgid "Charges accessoires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6000 #: model:account.account.template,name:l10n_ch.ch_coa_6000 msgid "Charges de locaux" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4000 #: model:account.account.template,name:l10n_ch.ch_coa_4000 msgid "Charges de matériel de l‘atelier" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5900 #: model:account.account.template,name:l10n_ch.ch_coa_5900 msgid "Charges de personnels temporaires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6200 #: model:account.account.template,name:l10n_ch.ch_coa_6200 msgid "Charges de véhicules et de transport" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7510 #: model:account.account.template,name:l10n_ch.ch_coa_7510 msgid "Charges des immeubles d‘exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6500 #: model:account.account.template,name:l10n_ch.ch_coa_6500 msgid "Charges d‘administration" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6400 #: model:account.account.template,name:l10n_ch.ch_coa_6400 msgid "Charges d’énergie et évacuation des déchets" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6570 #: model:account.account.template,name:l10n_ch.ch_coa_6570 msgid "Charges et leasing d’informatique" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8500 #: model:account.account.template,name:l10n_ch.ch_coa_8500 msgid "Charges extraordinaires, exceptionnelles ou hors période" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6900 #: model:account.account.template,name:l10n_ch.ch_coa_6900 msgid "Charges financières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8000 #: model:account.account.template,name:l10n_ch.ch_coa_8000 msgid "Charges hors exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1300 #: model:account.account.template,name:l10n_ch.ch_coa_1300 msgid "Charges payées d‘avance" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5700 #: model:account.account.template,name:l10n_ch.ch_coa_5700 msgid "Charges sociales" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2300 #: model:account.account.template,name:l10n_ch.ch_coa_2300 msgid "Charges à payer" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3803 #: model:account.account.template,name:l10n_ch.ch_coa_3803 msgid "Commissions de tiers" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4903 #: model:account.account.template,name:l10n_ch.ch_coa_4903 msgid "Commissions obtenues sur achats" msgstr "" @@ -516,147 +413,113 @@ msgid "Companies" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1099 #: model:account.account.template,name:l10n_ch.ch_coa_1099 msgid "Compte d'attente autre" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1091 #: model:account.account.template,name:l10n_ch.ch_coa_1091 msgid "Compte d'attente pour salaires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3710 #: model:account.account.template,name:l10n_ch.ch_coa_3710 msgid "Consommations propres" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1269 #: model:account.account.template,name:l10n_ch.ch_coa_1269 msgid "Correction de la valeur de stocks de produits finis" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1279 #: model:account.account.template,name:l10n_ch.ch_coa_1279 msgid "Corrections de la valeur des stock produits semi-ouvrés" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1209 #: model:account.account.template,name:l10n_ch.ch_coa_1209 msgid "Corrections de la valeur des stocks de marchandises" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1289 #: model:account.account.template,name:l10n_ch.ch_coa_1289 msgid "Corrections de la valeur des travaux en cours" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1219 #: model:account.account.template,name:l10n_ch.ch_coa_1219 msgid "Corrections de la valeur sur matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1180 #: model:account.account.template,name:l10n_ch.ch_coa_1180 msgid "Créances envers les assurances sociales et institutions de prévoyance" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2000 #: model:account.account.template,name:l10n_ch.ch_coa_2000 msgid "Créanciers" msgstr "" #. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_currency_name -msgid "Currency" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2100 -#: model:account.account,name:l10n_ch.1_ch_coa_2400 #: model:account.account.template,name:l10n_ch.ch_coa_2100 #: model:account.account.template,name:l10n_ch.ch_coa_2400 msgid "Dettes bancaires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2160 #: model:account.account.template,name:l10n_ch.ch_coa_2160 msgid "Dettes envers l'actionnaire" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3806 -#: model:account.account,name:l10n_ch.1_ch_coa_4906 #: model:account.account.template,name:l10n_ch.ch_coa_3806 #: model:account.account.template,name:l10n_ch.ch_coa_4906 msgid "Différences de change" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2261 #: model:account.account.template,name:l10n_ch.ch_coa_2261 msgid "Dividendes" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4071 #: model:account.account.template,name:l10n_ch.ch_coa_4071 msgid "Droits de douanes à l'importation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1109 #: model:account.account.template,name:l10n_ch.ch_coa_1109 msgid "Ducroire" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1100 #: model:account.account.template,name:l10n_ch.ch_coa_1100 msgid "Débiteurs" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2201 #: model:account.account.template,name:l10n_ch.ch_coa_2201 msgid "Décompte TVA" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4009 #: model:account.account.template,name:l10n_ch.ch_coa_4009 msgid "Déductions obtenues sur achats" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3009 #: model:account.account.template,name:l10n_ch.ch_coa_3009 msgid "Déductions sur ventes" msgstr "" #. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_bank_l10n_ch_postal_eur -msgid "EUR ISR reference" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4540 #: model:account.account.template,name:l10n_ch.ch_coa_4540 msgid "Eau" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4500 #: model:account.account.template,name:l10n_ch.ch_coa_4500 msgid "Electricité" msgstr "" @@ -667,320 +530,201 @@ msgid "Email Templates" msgstr "" #. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_mail_compose_message -msgid "Email composition wizard" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2450 #: model:account.account.template,name:l10n_ch.ch_coa_2450 msgid "Emprunts" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2430 #: model:account.account.template,name:l10n_ch.ch_coa_2430 msgid "Emprunts obligataires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2120 -#: model:account.account,name:l10n_ch.1_ch_coa_2420 #: model:account.account.template,name:l10n_ch.ch_coa_2120 #: model:account.account.template,name:l10n_ch.ch_coa_2420 msgid "Engagements de financement par leasing" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6100 #: model:account.account.template,name:l10n_ch.ch_coa_6100 msgid "Entretien, réparations et remplacement des inst. servant à l’exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1570 #: model:account.account.template,name:l10n_ch.ch_coa_1570 msgid "Equipements et Installations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3800 -#: model:account.account,name:l10n_ch.1_ch_coa_4900 #: model:account.account.template,name:l10n_ch.ch_coa_3800 #: model:account.account.template,name:l10n_ch.ch_coa_4900 msgid "Escomptes" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4530 #: model:account.account.template,name:l10n_ch.ch_coa_4530 msgid "Essence" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3804 #: model:account.account.template,name:l10n_ch.ch_coa_3804 msgid "Frais d'encaissement" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3807 #: model:account.account.template,name:l10n_ch.ch_coa_3807 msgid "Frais d'expédition" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4072 #: model:account.account.template,name:l10n_ch.ch_coa_4072 msgid "Frais de transport à l'achat" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4070 #: model:account.account.template,name:l10n_ch.ch_coa_4070 msgid "Frêts à l'achat" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4510 #: model:account.account.template,name:l10n_ch.ch_coa_4510 msgid "Gaz" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1770 #: model:account.account.template,name:l10n_ch.ch_coa_1770 msgid "Goodwill" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1441 -#: model:account.account,name:l10n_ch.1_ch_coa_2451 #: model:account.account.template,name:l10n_ch.ch_coa_1441 #: model:account.account.template,name:l10n_ch.ch_coa_2451 msgid "Hypothèques" msgstr "" #. module: l10n_ch -#: model:ir.actions.report.xml,name:l10n_ch.l10n_ch_isr_report -msgid "ISR" -msgstr "" - -#. module: l10n_ch -#: model:ir.ui.view,arch_db:l10n_ch.l10n_ch_isr_report_template -msgid "ISR for invoice" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced -msgid "ISR number split in blocks of 5 characters (right-justified), to generate ISR report." -msgstr "" - -#. module: l10n_ch -#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_search_view -msgid "ISR reference number" -msgstr "" - -#. module: l10n_ch -#: code:addons/l10n_ch/models/mail_compose_message.py:23 -#, python-format -msgid "ISR sent" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1600 #: model:account.account.template,name:l10n_ch.ch_coa_1600 msgid "Immeubles d’exploitation" msgstr "" #. module: l10n_ch -#: model:account.fiscal.position,name:l10n_ch.1_fiscal_position_template_import #: model:account.fiscal.position.template,name:l10n_ch.fiscal_position_template_import msgid "Import/Export" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1176 #: model:account.account.template,name:l10n_ch.ch_coa_1176 msgid "Impôt anticipé" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2206 #: model:account.account.template,name:l10n_ch.ch_coa_2206 msgid "Impôt anticipé dû" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1171 #: model:account.account.template,name:l10n_ch.ch_coa_1171 msgid "Impôt préalable: TVA s/investissements et autres charges d’exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1170 #: model:account.account.template,name:l10n_ch.ch_coa_1170 msgid "Impôt préalable: TVA s/matériel, marchandises, prestations et énergie" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1189 -#: model:account.account,name:l10n_ch.1_ch_coa_2279 #: model:account.account.template,name:l10n_ch.ch_coa_1189 #: model:account.account.template,name:l10n_ch.ch_coa_2279 msgid "Impôt à la source" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2208 -#: model:account.account,name:l10n_ch.1_ch_coa_8900 #: model:account.account.template,name:l10n_ch.ch_coa_2208 #: model:account.account.template,name:l10n_ch.ch_coa_8900 msgid "Impôts directs" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1550 #: model:account.account.template,name:l10n_ch.ch_coa_1550 msgid "Installations de stockage" msgstr "" #. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_account_invoice -msgid "Invoice" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number -msgid "L10N Ch Isr Number" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_number_spaced -msgid "L10N Ch Isr Number Spaced" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line -msgid "L10N Ch Isr Optical Line" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal -msgid "L10N Ch Isr Postal" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted -msgid "L10N Ch Isr Postal Formatted" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_sent -msgid "L10N Ch Isr Sent" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_invoice_l10n_ch_isr_valid -msgid "L10N Ch Isr Valid" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_partner_bank_l10n_ch_postal -msgid "L10N Ch Postal" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6260 #: model:account.account.template,name:l10n_ch.ch_coa_6260 msgid "Leasing et location de véhicules" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6105 #: model:account.account.template,name:l10n_ch.ch_coa_6105 msgid "Leasing immobilisations corporelles meubles" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1520 +#: model:account.account.template,name:l10n_ch.l10nch_chart_template_liquidity_transfer +msgid "Liquidity Transfer" +msgstr "" + +#. module: l10n_ch #: model:account.account.template,name:l10n_ch.ch_coa_1520 msgid "Machines de bureau, informatique, systèmes de communication" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1500 #: model:account.account.template,name:l10n_ch.ch_coa_1500 msgid "Machines et appareils" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1200 #: model:account.account.template,name:l10n_ch.ch_coa_1200 msgid "Marchandises commerciales" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1250 #: model:account.account.template,name:l10n_ch.ch_coa_1250 msgid "Marchandises en consignation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1220 #: model:account.account.template,name:l10n_ch.ch_coa_1220 msgid "Matières auxiliaires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1230 #: model:account.account.template,name:l10n_ch.ch_coa_1230 msgid "Matières consommables" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1210 #: model:account.account.template,name:l10n_ch.ch_coa_1210 msgid "Matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4520 #: model:account.account.template,name:l10n_ch.ch_coa_4520 msgid "Mazout" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1510 #: model:account.account.template,name:l10n_ch.ch_coa_1510 msgid "Mobilier et installations" msgstr "" #. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_optical_line -msgid "Optical reading line, as it will be printed on ISR" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1540 #: model:account.account.template,name:l10n_ch.ch_coa_1540 msgid "Outillages et appareils" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1480 #: model:account.account.template,name:l10n_ch.ch_coa_1480 msgid "Participations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4086 #: model:account.account.template,name:l10n_ch.ch_coa_4086 msgid "Pertes de matières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3805 #: model:account.account.template,name:l10n_ch.ch_coa_3805 msgid "Pertes sur créances clients, variation ducroire" msgstr "" @@ -991,182 +735,126 @@ msgid "Plan comptable 2015" msgstr "" #. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal_formatted -msgid "Postal reference of the bank, formated with '-' and without the padding zeros, to generate ISR report." -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4400 #: model:account.account.template,name:l10n_ch.ch_coa_4400 msgid "Prestations / travaux de tiers" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3700 #: model:account.account.template,name:l10n_ch.ch_coa_3700 msgid "Prestations propres" msgstr "" #. module: l10n_ch -#: model:ir.ui.view,arch_db:l10n_ch.isr_invoice_form -msgid "Print ISR" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_res_company_l10n_ch_isr_print_bank_location -msgid "Print bank location" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,field_description:l10n_ch.field_account_config_settings_l10n_ch_isr_print_bank_location -msgid "Print bank on ISR" -msgstr "" - -#. module: l10n_ch -#: model:ir.ui.view,arch_db:l10n_ch.l10n_ch-isr_account_config_settings -msgid "Print the coordinates of your bank under the 'Payment for' title of the ISR.\n" -" Your address will be moved to the 'in favour of' section." -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7000 #: model:account.account.template,name:l10n_ch.ch_coa_7000 msgid "Produits accessoires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_7500 #: model:account.account.template,name:l10n_ch.ch_coa_7500 msgid "Produits des immeubles d‘exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2301 #: model:account.account.template,name:l10n_ch.ch_coa_2301 msgid "Produits encaissés d’avance" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8510 #: model:account.account.template,name:l10n_ch.ch_coa_8510 msgid "Produits extraordinaires, exceptionnels ou hors période" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6950 #: model:account.account.template,name:l10n_ch.ch_coa_6950 msgid "Produits financiers" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_8100 #: model:account.account.template,name:l10n_ch.ch_coa_8100 msgid "Produits hors exploitation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1301 #: model:account.account.template,name:l10n_ch.ch_coa_1301 msgid "Produits à recevoir" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2980 #: model:account.account.template,name:l10n_ch.ch_coa_2980 msgid "Propres actions, parts sociales, droits de participations (poste négatif)" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2600 #: model:account.account.template,name:l10n_ch.ch_coa_2600 msgid "Provisions" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2330 #: model:account.account.template,name:l10n_ch.ch_coa_2330 msgid "Provisions à court terme" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1440 #: model:account.account.template,name:l10n_ch.ch_coa_1440 msgid "Prêts" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_6600 #: model:account.account.template,name:l10n_ch.ch_coa_6600 msgid "Publicité" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3801 #: model:account.account.template,name:l10n_ch.ch_coa_3801 msgid "Rabais et réduction de prix" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4901 #: model:account.account.template,name:l10n_ch.ch_coa_4901 msgid "Rabais et réductions de prix" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3802 -#: model:account.account,name:l10n_ch.1_ch_coa_4092 #: model:account.account.template,name:l10n_ch.ch_coa_3802 #: model:account.account.template,name:l10n_ch.ch_coa_4092 msgid "Ristournes" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2940 #: model:account.account.template,name:l10n_ch.ch_coa_2940 msgid "Réserves d‘évaluation" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2960 #: model:account.account.template,name:l10n_ch.ch_coa_2960 msgid "Réserves libres" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2950 #: model:account.account.template,name:l10n_ch.ch_coa_2950 msgid "Réserves légales issues du bénéfice" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2900 #: model:account.account.template,name:l10n_ch.ch_coa_2900 msgid "Réserves légales issues du capital" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_5000 #: model:account.account.template,name:l10n_ch.ch_coa_5000 msgid "Salaires" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1260 #: model:account.account.template,name:l10n_ch.ch_coa_1260 msgid "Stocks de produits finis" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1270 #: model:account.account.template,name:l10n_ch.ch_coa_1270 msgid "Stocks de produits semi-ouvrés" msgstr "" -#. module: l10n_ch -#: model:ir.ui.menu,name:l10n_ch.account_reports_ch_statements_menu -msgid "Swiss Statements" -msgstr "" - #. module: l10n_ch #: model:account.account.tag,name:l10n_ch.vat_tag_dedouanement msgid "Switzerland VAT Form: 100% dédouanement (base in grid 400)" @@ -1208,13 +896,13 @@ msgid "Switzerland VAT Form: grid 280" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_301_a -msgid "Switzerland VAT Form: grid 301 base" +#: model:account.account.tag,name:l10n_ch.vat_tag_302_a +msgid "Switzerland VAT Form: grid 302 base" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_301_b -msgid "Switzerland VAT Form: grid 301 tax" +#: model:account.account.tag,name:l10n_ch.vat_tag_302_b +msgid "Switzerland VAT Form: grid 302 tax" msgstr "" #. module: l10n_ch @@ -1228,13 +916,13 @@ msgid "Switzerland VAT Form: grid 311 tax" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_341_a -msgid "Switzerland VAT Form: grid 341 base" +#: model:account.account.tag,name:l10n_ch.vat_tag_342_a +msgid "Switzerland VAT Form: grid 342 base" msgstr "" #. module: l10n_ch -#: model:account.account.tag,name:l10n_ch.vat_tag_341_b -msgid "Switzerland VAT Form: grid 341 tax" +#: model:account.account.tag,name:l10n_ch.vat_tag_342_b +msgid "Switzerland VAT Form: grid 342 tax" msgstr "" #. module: l10n_ch @@ -1247,6 +935,16 @@ msgstr "" msgid "Switzerland VAT Form: grid 381 tax" msgstr "" +#. module: l10n_ch +#: model:account.account.tag,name:l10n_ch.vat_tag_382_a +msgid "Switzerland VAT Form: grid 382 base" +msgstr "" + +#. module: l10n_ch +#: model:account.account.tag,name:l10n_ch.vat_tag_382_b +msgid "Switzerland VAT Form: grid 382 tax" +msgstr "" + #. module: l10n_ch #: model:account.account.tag,name:l10n_ch.vat_tag_400 msgid "Switzerland VAT Form: grid 400" @@ -1273,297 +971,228 @@ msgid "Switzerland VAT Form: grid 420" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_O_import +#: model:account.tax.group,name:l10n_ch.tax_group_tva_0 +msgid "TVA 0%" +msgstr "" + +#. module: l10n_ch #: model:account.tax.template,name:l10n_ch.vat_O_import msgid "TVA 0% Importations de biens et services" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_O_exclude #: model:account.tax.template,name:l10n_ch.vat_O_exclude msgid "TVA 0% exclue" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_purchase_incl +#: model:account.tax.group,name:l10n_ch.tax_group_tva_25 +msgid "TVA 2.5%" +msgstr "" + +#. module: l10n_ch #: model:account.tax.template,name:l10n_ch.vat_25_purchase_incl msgid "TVA 2.5% sur achat B&S (Incl. TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_purchase #: model:account.tax.template,name:l10n_ch.vat_25_purchase msgid "TVA 2.5% sur achat B&S (TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_invest_incl #: model:account.tax.template,name:l10n_ch.vat_25_invest_incl msgid "TVA 2.5% sur invest. et autres ch. (Incl. TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_invest #: model:account.tax.template,name:l10n_ch.vat_25_invest msgid "TVA 2.5% sur invest. et autres ch. (TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_purchase_incl -#: model:account.tax.template,name:l10n_ch.vat_38_purchase_incl -msgid "TVA 3.8% sur achat B&S (Incl. TS)" +#: model:account.tax.group,name:l10n_ch.tax_group_tva_37 +msgid "TVA 3.7%" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_purchase -#: model:account.tax.template,name:l10n_ch.vat_38_purchase -msgid "TVA 3.8% sur achat B&S (TS)" +#: model:account.tax.template,name:l10n_ch.vat_37_purchase_incl +msgid "TVA 3.7% sur achat B&S (Incl. TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_invest_incl -#: model:account.tax.template,name:l10n_ch.vat_38_invest_incl -msgid "TVA 3.8% sur invest. et autres ch. (Incl. TS)" +#: model:account.tax.template,name:l10n_ch.vat_37_purchase +msgid "TVA 3.7% sur achat B&S (TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_invest -#: model:account.tax.template,name:l10n_ch.vat_38_invest -msgid "TVA 3.8% sur invest. et autres ch. (TS)" +#: model:account.tax.template,name:l10n_ch.vat_37_invest_incl +msgid "TVA 3.7% sur invest. et autres ch. (Incl. TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_purchase_incl -#: model:account.tax.template,name:l10n_ch.vat_80_purchase_incl -msgid "TVA 8.0% sur achat B&S (Incl. TN)" +#: model:account.tax.template,name:l10n_ch.vat_37_invest +msgid "TVA 3.7% sur invest. et autres ch. (TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_purchase -#: model:account.tax.template,name:l10n_ch.vat_80_purchase -msgid "TVA 8.0% sur achat B&S (TN)" +#: model:account.tax.group,name:l10n_ch.tax_group_tva_77 +msgid "TVA 7.7%" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_invest_incl -#: model:account.tax.template,name:l10n_ch.vat_80_invest_incl -msgid "TVA 8.0% sur invest. et autres ch. (Incl. TN)" +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_incl +msgid "TVA 7.7% sur achat B&S (Incl. TN)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_invest -#: model:account.tax.template,name:l10n_ch.vat_80_invest -msgid "TVA 8.0% sur invest. et autres ch. (TN)" +#: model:account.tax.template,name:l10n_ch.vat_77_purchase +msgid "TVA 7.7% sur achat B&S (TN)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_reverse +msgid "TVA 7.7% sur achat service a l'etranger (reverse charge)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_invest_incl +msgid "TVA 7.7% sur invest. et autres ch. (Incl. TN)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_invest +msgid "TVA 7.7% sur invest. et autres ch. (TN)" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_2200 #: model:account.account.template,name:l10n_ch.ch_coa_2200 msgid "TVA due" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_XO #: model:account.tax.template,name:l10n_ch.vat_XO msgid "TVA due a 0% (Exportations)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25 #: model:account.tax.template,name:l10n_ch.vat_25 msgid "TVA due a 2.5% (TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38 -#: model:account.tax.template,name:l10n_ch.vat_38 -msgid "TVA due a 3.8% (TS)" +#: model:account.tax.template,name:l10n_ch.vat_37 +msgid "TVA due a 3.7% (TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80 -#: model:account.tax.template,name:l10n_ch.vat_80 -msgid "TVA due a 8.0% (TN)" +#: model:account.tax.template,name:l10n_ch.vat_77 +msgid "TVA due a 7.7% (TN)" +msgstr "" + +#. module: l10n_ch +#: model:account.tax.template,name:l10n_ch.vat_77_purchase_return +msgid "TVA due a 7.7% (TN) (return)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_25_incl #: model:account.tax.template,name:l10n_ch.vat_25_incl msgid "TVA due à 2.5% (Incl. TR)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_38_incl -#: model:account.tax.template,name:l10n_ch.vat_38_incl -msgid "TVA due à 3.8% (Incl. TS)" +#: model:account.tax.template,name:l10n_ch.vat_37_incl +msgid "TVA due à 3.7% (Incl. TS)" msgstr "" #. module: l10n_ch -#: model:account.tax,name:l10n_ch.1_vat_80_incl -#: model:account.tax.template,name:l10n_ch.vat_80_incl -msgid "TVA due à 8.0% (Incl. TN)" +#: model:account.tax.template,name:l10n_ch.vat_77_incl +msgid "TVA due à 7.7% (Incl. TN)" msgstr "" #. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_partner_bank_l10n_ch_postal -msgid "The ISR number of the company within the bank" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_currency_name -msgid "The name of this invoice's currency" -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_postal -msgid "The postal reference identifying the bank managing this ISR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_chf -msgid "The postal reference of the bank, used to generate ISR payment slips in CHF." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_res_bank_l10n_ch_postal_eur -msgid "The postal reference of the bank, used to generate ISR payment slips in EUR." -msgstr "" - -#. module: l10n_ch -#: model:ir.model.fields,help:l10n_ch.field_account_invoice_l10n_ch_isr_number -msgid "The reference number associated with this invoice" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1060 #: model:account.account.template,name:l10n_ch.ch_coa_1060 msgid "Titres" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1400 #: model:account.account.template,name:l10n_ch.ch_coa_1400 msgid "Titres à long terme" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_transfer_account_id -#: model:account.account.template,name:l10n_ch.transfer_account_id -msgid "Transferts internes" -msgstr "" - -#. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1280 #: model:account.account.template,name:l10n_ch.ch_coa_1280 msgid "Travaux en cours" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3940 #: model:account.account.template,name:l10n_ch.ch_coa_3940 msgid "Variation de la valeur des prestations non facturées" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1287 #: model:account.account.template,name:l10n_ch.ch_coa_1287 msgid "Variation de la valeur des travaux en cours" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1277 #: model:account.account.template,name:l10n_ch.ch_coa_1277 msgid "Variation de stock produits semi-ouvrés" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1267 #: model:account.account.template,name:l10n_ch.ch_coa_1267 msgid "Variation de stocks de produits finis" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1207 -#: model:account.account,name:l10n_ch.1_ch_coa_4800 #: model:account.account.template,name:l10n_ch.ch_coa_1207 #: model:account.account.template,name:l10n_ch.ch_coa_4800 msgid "Variation des stocks de marchandises" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4801 #: model:account.account.template,name:l10n_ch.ch_coa_4801 msgid "Variation des stocks de matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3901 #: model:account.account.template,name:l10n_ch.ch_coa_3901 msgid "Variation des stocks de produits finis" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3900 #: model:account.account.template,name:l10n_ch.ch_coa_3900 msgid "Variation des stocks de produits semi-finis" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1217 #: model:account.account.template,name:l10n_ch.ch_coa_1217 msgid "Variation des stocks des matières premières" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_4008 -#: model:account.account,name:l10n_ch.1_ch_coa_4080 #: model:account.account.template,name:l10n_ch.ch_coa_4008 #: model:account.account.template,name:l10n_ch.ch_coa_4080 msgid "Variations de stocks" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3200 #: model:account.account.template,name:l10n_ch.ch_coa_3200 msgid "Ventes de marchandises" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3400 #: model:account.account.template,name:l10n_ch.ch_coa_3400 msgid "Ventes de prestations" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_3000 #: model:account.account.template,name:l10n_ch.ch_coa_3000 msgid "Ventes de produits fabriqués" msgstr "" #. module: l10n_ch -#: model:account.account,name:l10n_ch.1_ch_coa_1530 #: model:account.account.template,name:l10n_ch.ch_coa_1530 msgid "Véhicules" msgstr "" - -#. module: l10n_ch -#: code:addons/l10n_ch/models/account_invoice.py:153 -#, python-format -msgid "You cannot generate an ISR yet.\n" -"\n" -" For this, you need to :\n" -"\n" -" - set a valid postal account number (or an IBAN referencing one) for your company\n" -"\n" -" - define its bank\n" -"\n" -" - associate this bank with a postal reference for the currency used in this invoice\n" -"\n" -" - fill the 'bank account' field of the invoice with the postal to be used to receive the related payment. A default account will be automatically set for all invoices created after you defined a postal account for your company." -msgstr "" - -#. module: l10n_ch -#: model:ir.model,name:l10n_ch.model_account_config_settings -msgid "account.config.settings" -msgstr "" - diff --git a/addons/l10n_it/__manifest__.py b/addons/l10n_it/__manifest__.py index f78432b06b3..fd621d872fd 100644 --- a/addons/l10n_it/__manifest__.py +++ b/addons/l10n_it/__manifest__.py @@ -17,7 +17,7 @@ Piano dei conti italiano di un'impresa generica. Italian accounting chart and localization. """, 'category': 'Localization', - 'website': 'http://www.openerp-italia.org/', + 'website': 'http://www.odoo.com/', 'data': [ 'data/l10n_it_chart_data.xml', 'data/account.account.template.csv', diff --git a/addons/l10n_it_edi/__init__.py b/addons/l10n_it_edi/__init__.py new file mode 100644 index 00000000000..90b17558ffc --- /dev/null +++ b/addons/l10n_it_edi/__init__.py @@ -0,0 +1,5 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import models +from . import tests diff --git a/addons/l10n_it_edi/__manifest__.py b/addons/l10n_it_edi/__manifest__.py new file mode 100644 index 00000000000..fc24a276e68 --- /dev/null +++ b/addons/l10n_it_edi/__manifest__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +{ + 'name': 'Italy - E-invoicing', + 'version': '0.3', + 'depends': ['l10n_it'], + 'author': 'Odoo', + 'description': """ +E-invoice implementation + """, + 'category': 'Localization', + 'website': 'http://www.odoo.com/', + 'data': [ + 'security/ir.model.access.csv', + 'data/invoice_it_template.xml', + 'views/l10n_it_view.xml', + ], + 'demo': [ + 'data/account_invoice_demo.xml', + ], +} diff --git a/addons/l10n_it_edi/data/account_invoice_demo.xml b/addons/l10n_it_edi/data/account_invoice_demo.xml new file mode 100644 index 00000000000..c68a3871df5 --- /dev/null +++ b/addons/l10n_it_edi/data/account_invoice_demo.xml @@ -0,0 +1,23 @@ + + + + + + IT00410123456 + 0123456789987654 + RF01 + 12345 + + + + IT11111111123 + + + IT11111111234 + + + IT11111112345 + + + + diff --git a/addons/l10n_it_edi/data/invoice_it_template.xml b/addons/l10n_it_edi/data/invoice_it_template.xml new file mode 100644 index 00000000000..c3af915c58c --- /dev/null +++ b/addons/l10n_it_edi/data/invoice_it_template.xml @@ -0,0 +1,175 @@ + + + + + + + + + + diff --git a/addons/l10n_it_edi/models/__init__.py b/addons/l10n_it_edi/models/__init__.py new file mode 100644 index 00000000000..a7b2d212437 --- /dev/null +++ b/addons/l10n_it_edi/models/__init__.py @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from . import res_partner +from . import res_company +from . import account_invoice +from . import ir_mail_server +from . import ddt diff --git a/addons/l10n_it_edi/models/account_invoice.py b/addons/l10n_it_edi/models/account_invoice.py new file mode 100644 index 00000000000..123081e5503 --- /dev/null +++ b/addons/l10n_it_edi/models/account_invoice.py @@ -0,0 +1,752 @@ +# -*- coding:utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import base64 +import zipfile +import io +import logging +import re + +from datetime import date, datetime +from lxml import etree + +from odoo import api, fields, models, _ +from odoo.tools import float_repr +from odoo.exceptions import UserError, ValidationError +from odoo.addons.base.models.ir_mail_server import MailDeliveryException +from odoo.tests.common import Form + + +_logger = logging.getLogger(__name__) + +DEFAULT_FACTUR_ITALIAN_DATE_FORMAT = '%Y-%m-%d' + +class AccountInvoice(models.Model): + _inherit = 'account.invoice' + _name = 'account.invoice' + + l10n_it_send_state = fields.Selection([ + ('new', 'New'), + ('other', 'Other'), + ('to_send', 'Not yet send'), + ('sent', 'Sent, waiting for response'), + ('invalid', 'Sent, but invalid'), + ('delivered', 'This invoice is delivered'), + ('delivered_accepted', 'This invoice is delivered and accepted by destinatory'), + ('delivered_refused', 'This invoice is delivered and refused by destinatory'), + ('delivered_expired', 'This invoice is delivered and expired (expiry of the maximum term for communication of acceptance/refusal)'), + ('failed_delivery', 'Delivery impossible, ES certify that it has received the invoice and that the file \ + could not be delivered to the addressee') # ok we must do nothing + ], default='to_send', copy=False) + + l10n_it_stamp_duty = fields.Float(default=0, string="Dati Bollo", size=15, readonly=True, states={'draft': [('readonly', False)]}) + + l10n_it_ddt_id = fields.Many2one('l10n_it.ddt', string='DDT', readonly=True, states={'draft': [('readonly', False)]}, copy=False) + + l10n_it_einvoice_name = fields.Char(readonly=True, copy=False) + + l10n_it_einvoice_id = fields.Many2one('ir.attachment', string="Electronic invoice", copy=False) + + @api.multi + def invoice_validate(self): + super(AccountInvoice, self).invoice_validate() + for invoice in self: + if invoice.company_id.country_id != self.env.ref('base.it'): + continue + if invoice.type == 'in_invoice' or invoice.type == 'in_refund': + invoice.l10n_it_send_state = "other" + continue + + invoice._check_before_xml_exporting() + + invoice.invoice_generate_xml() + if len(invoice.commercial_partner_id.l10n_it_pa_index or '') == 6: + invoice.message_post( + body=(_("Invoices for PA are not managed by Odoo, you can download the document and send it on your own.")) + ) + invoice.l10n_it_send_state = "other" + continue + invoice.l10n_it_send_state = "to_send" + invoice.send_pec_mail() + + def _check_before_xml_exporting(self): + seller = self.company_id + buyer = self.commercial_partner_id + + # <1.1.1.1> + if not seller.country_id: + raise UserError(_("%s must have a country") % (seller.display_name)) + + # <1.1.1.2> + if not seller.vat: + raise UserError(_("%s must have a VAT number") % (seller.display_name)) + elif len(seller.vat) > 30: + raise UserError(_("The maximum length for VAT number is 30. %s have a VAT number too long: %s.") % (seller.display_name, seller.vat)) + + # <1.2.1.2> + if not seller.l10n_it_codice_fiscale: + raise UserError(_("%s must have a codice fiscale number") % (seller.display_name)) + + # <1.2.1.8> + if not seller.l10n_it_tax_system: + raise UserError("The seller's company must have a tax system.") + + # <1.2.2> + if not seller.street and not seller.street2: + raise UserError(_("%s must have a street.") % (seller.display_name)) + if not seller.zip: + raise UserError(_("%s must have a post code.") % (seller.display_name)) + if len(seller.zip) != 5 and seller.country_id.code == 'IT': + raise UserError(_("%s must have a post code of length 5.") % (seller.display_name)) + if not seller.city: + raise UserError(_("%s must have a city.") % (seller.display_name)) + if not seller.country_id: + raise UserError(_("%s must have a country.") % (seller.display_name)) + + # <1.4.1> + if not buyer.vat and not buyer.l10n_it_codice_fiscale: + raise UserError(_("The buyer, %s, or his company must have either a VAT number either a tax code (Codice Fiscale).") % (buyer.display_name)) + + # <1.4.2> + if not buyer.street and not buyer.street2: + raise UserError(_("%s must have a street.") % (buyer.display_name)) + if not buyer.zip: + raise UserError(_("%s must have a post code.") % (buyer.display_name)) + if len(buyer.zip) != 5 and buyer.country_id.code == 'IT': + raise UserError(_("%s must have a post code of length 5.") % (buyer.display_name)) + if not buyer.city: + raise UserError(_("%s must have a city.") % (buyer.display_name)) + if not buyer.country_id: + raise UserError(_("%s must have a country.") % (buyer.display_name)) + + # <2.2.1> + for invoice_line in self.invoice_line_ids: + if len(invoice_line.invoice_line_tax_ids) != 1: + raise UserError(_("You must select one and only one tax by line.")) + + for tax_line in self.tax_line_ids: + if not tax_line.tax_id.l10n_it_has_exoneration and tax_line.tax_id.amount == 0: + raise ValidationError(_("%s has an amount of 0.0, you must indicate the kind of exoneration." % tax_line.name)) + + @api.multi + def invoice_generate_xml(self): + for invoice in self: + if invoice.l10n_it_einvoice_id and invoice.l10n_it_send_state not in ['invalid', 'to_send']: + raise UserError(_("You can't regenerate an E-Invoice when the first one is sent and there are no errors")) + if invoice.l10n_it_einvoice_id: + invoice.l10n_it_einvoice_id.unlink() + + a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" + n = invoice.id + progressive_number = "" + while n: + (n,m) = divmod(n,len(a)) + progressive_number = a[m] + progressive_number + + report_name = '%(country_code)s%(codice)s_%(progressive_number)s.xml' % { + 'country_code': invoice.company_id.country_id.code, + 'codice': invoice.company_id.l10n_it_codice_fiscale, + 'progressive_number': progressive_number.zfill(5), + } + invoice.l10n_it_einvoice_name = report_name + + data = b"" + invoice._export_as_xml() + description = _('Italian invoice: %s') % invoice.type + invoice.l10n_it_einvoice_id = self.env['ir.attachment'].create({ + 'name': report_name, + 'res_id': invoice.id, + 'res_model': invoice._name, + 'datas': base64.encodestring(data), + 'datas_fname': report_name, + 'description': description, + 'type': 'binary', + }) + + invoice.message_post( + body=(_("E-Invoice is generated on %s by %s") % (fields.Datetime.now(), self.env.user.display_name)) + ) + + def _export_as_xml(self): + ''' Create the xml file content. + :return: The XML content as str. + ''' + self.ensure_one() + + def format_date(dt): + # Format the date in the italian standard. + dt = dt or datetime.now() + return dt.strftime(DEFAULT_FACTUR_ITALIAN_DATE_FORMAT) + + def format_monetary(number, currency): + # Format the monetary values to avoid trailing decimals (e.g. 90.85000000000001). + return float_repr(number, min(2, currency.decimal_places)) + + def format_numbers(number): + #format number to str with between 2 and 8 decimals (event if it's .00) + number_splited = str(number).split('.') + if len(number_splited) == 1: + return "%.02f" % number + + cents = number_splited[1] + if len(cents) > 8: + return "%.08f" % number + return float_repr(number, max(2, len(cents))) + + def format_numbers_two(number): + #format number to str with 2 (event if it's .00) + return "%.02f" % number + + def discount_type(discount): + return 'SC' if discount > 0 else 'MG' + + def format_phone(number): + if not number: + return False + number = number.replace(' ', '').replace('/', '').replace('.', '') + if len(number) > 4 and len(number) < 13: + return number + return False + + def get_vat_number(vat): + return vat[2:].replace(' ', '') + + def get_vat_country(vat): + return vat[:2].upper() + + formato_trasmissione = "FPR12" + if len(self.commercial_partner_id.l10n_it_pa_index or '1') == 6: + formato_trasmissione = "FPA12" + + if self.type == 'out_invoice': + document_type = 'TD01' + elif self.type == 'out_refund': + document_type = 'TD04' + else: + document_type = 'TD0X' + + pdf = self.env.ref('account.account_invoices').render_qweb_pdf(self.id)[0] + pdf = base64.b64encode(pdf) + pdf_name = re.sub(r'\W+', '', self.number) + '.pdf' + + # Create file content. + template_values = { + 'record': self, + 'format_date': format_date, + 'format_monetary': format_monetary, + 'format_numbers': format_numbers, + 'format_numbers_two': format_numbers_two, + 'format_phone': format_phone, + 'discount_type': discount_type, + 'get_vat_number': get_vat_number, + 'get_vat_country': get_vat_country, + 'abs': abs, + 'formato_trasmissione': formato_trasmissione, + 'document_type': document_type, + 'pdf': pdf, + 'pdf_name': pdf_name, + } + content = self.env.ref('l10n_it_edi.account_invoice_it_FatturaPA_export').render(template_values) + return content + + @api.multi + def send_pec_mail(self): + self.ensure_one() + allowed_state = ['to_send', 'invalid'] + + if not self.company_id.l10n_it_mail_pec_server_id or not self.company_id.l10n_it_address_send_fatturapa: + self.message_post( + body=(_("Error when sending mail with E-Invoice: Your company must have a mail PEC server and must indicate the mail PEC that will send electronic invoice.")) + ) + self.l10n_it_send_state = 'invalid' + return + + if self.l10n_it_send_state not in allowed_state: + raise UserError(_("%s isn't in a right state. It must be in a 'Not yet send' or 'Invalid' state.") % (self.display_name)) + + message = self.env['mail.message'].create({ + 'subject': _('Sending file: %s') % (self.l10n_it_einvoice_id.name), + 'body': _('Sending file: %s to ES: %s') % (self.l10n_it_einvoice_id.name, self.env.user.company_id.l10n_it_address_recipient_fatturapa), + 'email_from': self.env.user.company_id.l10n_it_address_send_fatturapa, + 'mail_server_id': self.env.user.company_id.l10n_it_mail_pec_server_id.id, + 'attachment_ids': [(6, 0, self.l10n_it_einvoice_id.ids)], + }) + + mail_fattura = self.env['mail.mail'].create({ + 'mail_message_id': message.id, + 'email_to': self.env.user.company_id.l10n_it_address_recipient_fatturapa, + }) + try: + mail_fattura.send(raise_exception=True) + self.message_post( + body=(_("Mail sent on %s by %s") % (fields.Datetime.now(), self.env.user.display_name)) + ) + self.l10n_it_send_state = 'sent' + except MailDeliveryException as error: + self.message_post( + body=(_("Error when sending mail with E-Invoice: %s") % (error.args[0])) + ) + self.l10n_it_send_state = 'invalid' + + def _import_xml_invoice(self, content, attachment): + ''' Extract invoice values from the E-Invoice xml tree passed as parameter. + + :param content: The tree of the xml file. + :return: A dictionary containing account.invoice values to create/update it. + ''' + + try: + tree = etree.fromstring(content) + except: + _logger.info('Error during decoding XML file') + return self.env['account.invoice'] + + invoices = self.env['account.invoice'] + + # possible to have multiple invoices in the case of an invoice batch, the batch itself is repeated for every invoice of the batch + for body_tree in tree.xpath('//FatturaElettronicaBody', namespaces=tree.nsmap): + + elements = tree.xpath('//DatiGeneraliDocumento/TipoDocumento', namespaces=tree.nsmap) + if elements and elements[0].text and elements[0].text == 'TD01': + self_ctx = self.with_context(type='in_invoice') + elif elements and elements[0].text and elements[0].text == 'TD04': + self_ctx = self.with_context(type='in_refund') + else: + _logger.info(_('Document type not managed: %s.') % (elements[0].text)) + + # type must be present in the context to get the right behavior of the _default_journal method (account.invoice). + # journal_id must be present in the context to get the right behavior of the _default_account method (account.invoice.line). + + elements = tree.xpath('//CessionarioCommittente//IdCodice', namespaces=tree.nsmap) + company = elements and self.env['res.company'].search([('vat', 'ilike', elements[0].text)], limit=1) + if not company: + elements = tree.xpath('//CessionarioCommittente//CodiceFiscale', namespaces=tree.nsmap) + company = elements and self.env['res.company'].search([('l10n_it_codice_fiscale', 'ilike', elements[0].text)], limit=1) + + if company: + self_ctx = self_ctx.with_context(company_id=company.id) + else: + company = self.env.user.company_id + if elements: + _logger.info(_('Company not found with codice fiscale: %s. The company\'s user is set by default.') % elements[0].text) + else: + _logger.info(_('Company not found. The company\'s user is set by default.')) + + if not self.env.user._is_superuser(): + if self.env.user.company_id != company: + raise UserError(_("You can only import invoice concern your current company: %s") % self.env.user.company_id.display_name) + + journal_id = self_ctx._default_journal().id + self_ctx = self_ctx.with_context(journal_id=journal_id) + + # self could be a single record (editing) or be empty (new). + with Form(self_ctx, view='account.invoice_supplier_form') as invoice_form: + message_to_log = [] + + invoice_form.company_id = company + + # Refund type. + # TD01 == invoice + # TD02 == advance/down payment on invoice + # TD03 == advance/down payment on fee + # TD04 == credit note + # TD05 == debit note + # TD06 == fee + elements = tree.xpath('//DatiGeneraliDocumento/TipoDocumento', namespaces=tree.nsmap) + if elements and elements[0].text and elements[0].text == 'TD01': + invoice_form.type = 'in_invoice' + elif elements and elements[0].text and elements[0].text == 'TD04': + invoice_form.type = 'in_refund' + + # Partner (first step to avoid warning 'Warning! You must first select a partner.'). <1.2> + elements = tree.xpath('//CedentePrestatore//IdCodice', namespaces=tree.nsmap) + partner = elements and self.env['res.partner'].search(['&', ('vat', 'ilike', elements[0].text), '|', ('company_id', '=', company.id), ('company_id', '=', False)], limit=1) + if not partner: + elements = tree.xpath('//CedentePrestatore//CodiceFiscale', namespaces=tree.nsmap) + partner = elements and self.env['res.partner'].search(['&', ('l10n_it_codice_fiscale', '=', elements[0].text), '|', ('company_id', '=', company.id), ('company_id', '=', False)], limit=1) + if not partner: + elements = tree.xpath('//DatiTrasmissione//Email', namespaces=tree.nsmap) + partner = elements and self.env['res.partner'].search(['&', '|', ('email', '=', elements[0].text), ('l10n_it_pec_email', '=', elements[0].text), '|', ('company_id', '=', company.id), ('company_id', '=', False)], limit=1) + if partner: + invoice_form.partner_id = partner + else: + message_to_log.append("%s
%s" % ( + _("Vendor not found, useful informations from XML file:"), + self._compose_info_message( + tree, './/CedentePrestatore'))) + + # Numbering attributed by the transmitter. <1.1.2> + elements = tree.xpath('//ProgressivoInvio', namespaces=tree.nsmap) + if elements: + invoice_form.name = elements[0].text + + elements = body_tree.xpath('.//DatiGeneraliDocumento//Numero', namespaces=body_tree.nsmap) + if elements: + invoice_form.reference = elements[0].text + + # Currency. <2.1.1.2> + elements = body_tree.xpath('.//DatiGeneraliDocumento/Divisa', namespaces=body_tree.nsmap) + if elements: + currency_str = elements[0].text + currency = self.env.ref('base.%s' % currency_str.upper(), raise_if_not_found=False) + if currency != self.env.user.company_id.currency_id and currency.active: + invoice_form.currency_id = currency + + # Date. <2.1.1.3> + elements = body_tree.xpath('.//DatiGeneraliDocumento/Data', namespaces=body_tree.nsmap) + if elements: + date_str = elements[0].text + date_obj = datetime.strptime(date_str, DEFAULT_FACTUR_ITALIAN_DATE_FORMAT) + invoice_form.date_invoice = date_obj.strftime(DEFAULT_FACTUR_ITALIAN_DATE_FORMAT) + + # Dati Bollo. <2.1.1.6> + elements = body_tree.xpath('.//DatiGeneraliDocumento/DatiBollo/ImportoBollo', namespaces=body_tree.nsmap) + if elements: + invoice_form.l10n_it_stamp_duty = float(elements[0].text) + + # List of all amount discount (will be add after all article to avoid to have a negative sum) + discount_list = [] + percentage_global_discount = 1.0 + + # Global discount. <2.1.1.8> + discount_elements = body_tree.xpath('.//DatiGeneraliDocumento/ScontoMaggiorazione', namespaces=body_tree.nsmap) + total_discount_amount = 0.0 + if discount_elements: + for discount_element in discount_elements: + discount_line = discount_element.xpath('.//Tipo', namespaces=body_tree.nsmap) + discount_sign = -1 + if discount_line and discount_line[0].text == 'SC': + discount_sign = 1 + discount_percentage = discount_element.xpath('.//Percentuale', namespaces=body_tree.nsmap) + if discount_percentage and discount_percentage[0].text: + percentage_global_discount *= 1 - float(discount_percentage[0].text)/100 * discount_sign + + discount_amount_text = discount_element.xpath('.//Importo', namespaces=body_tree.nsmap) + if discount_amount_text and discount_amount_text[0].text: + discount_amount = float(discount_amount_text[0].text) * discount_sign * -1 + discount = {} + discount["seq"] = 0 + + if discount_amount < 0: + discount["name"] = _('GLOBAL DISCOUNT') + else: + discount["name"] = _('GLOBAL EXTRA CHARGE') + discount["amount"] = discount_amount + discount["tax"] = [] + discount_list.append(discount) + + # Comment. <2.1.1.11> + elements = body_tree.xpath('.//DatiGeneraliDocumento//Causale', namespaces=body_tree.nsmap) + for element in elements: + invoice_form.comment = '%s%s\n' % (invoice_form.comment or '', element.text) + + # Informations relative to the purchase order, the contract, the agreement, + # the reception phase or invoices previously transmitted + # <2.1.2> - <2.1.6> + for document_type in ['DatiOrdineAcquisto', 'DatiContratto', 'DatiConvenzione', 'DatiRicezione', 'DatiFattureCollegate']: + elements = body_tree.xpath('.//DatiGenerali/' + document_type, namespaces=body_tree.nsmap) + if elements: + for element in elements: + message_to_log.append("%s %s
%s" % (document_type, _("from XML file:"), + self._compose_info_message(element, '.'))) + + # Dati DDT. <2.1.8> + elements = body_tree.xpath('.//DatiGenerali/DatiDDT', namespaces=body_tree.nsmap) + if elements: + message_to_log.append("%s
%s" % ( + _("Transport informations from XML file:"), + self._compose_info_message(body_tree, './/DatiGenerali/DatiDDT'))) + + # Due date. <2.4.2.5> + elements = body_tree.xpath('.//DatiPagamento/DettaglioPagamento/DataScadenzaPagamento', namespaces=body_tree.nsmap) + if elements: + date_str = elements[0].text + date_obj = datetime.strptime(date_str, DEFAULT_FACTUR_ITALIAN_DATE_FORMAT) + invoice_form.date_due = fields.Date.to_string(date_obj) + + # Total amount. <2.4.2.6> + elements = body_tree.xpath('.//ImportoPagamento', namespaces=body_tree.nsmap) + amount_total_import = 0 + for element in elements: + amount_total_import += float(element.text) + if amount_total_import: + message_to_log.append(_("Total amount from the XML File: %s") % ( + amount_total_import)) + + # Bank account. <2.4.2.13> + elements = body_tree.xpath('.//DatiPagamento/DettaglioPagamento/IBAN', namespaces=body_tree.nsmap) + if elements: + if invoice_form.partner_id and invoice_form.partner_id.commercial_partner_id: + bank = self.env['res.partner.bank'].search([ + ('acc_number', '=', elements[0].text), + ('partner_id.id', '=', invoice_form.partner_id.commercial_partner_id.id) + ]) + else: + bank = self.env['res.partner.bank'].search([('acc_number', '=', elements[0].text)]) + if bank: + invoice_form.partner_bank_id = bank + else: + message_to_log.append("%s
%s" % ( + _("Bank account not found, useful informations from XML file:"), + self._compose_multi_info_message( + body_tree, ['.//DatiPagamento//Beneficiario', + './/DatiPagamento//IstitutoFinanziario', + './/DatiPagamento//IBAN', + './/DatiPagamento//ABI', + './/DatiPagamento//CAB', + './/DatiPagamento//BIC', + './/DatiPagamento//ModalitaPagamento']))) + else: + elements = body_tree.xpath('.//DatiPagamento/DettaglioPagamento', namespaces=body_tree.nsmap) + if elements: + message_to_log.append("%s
%s" % ( + _("Bank account not found, useful informations from XML file:"), + self._compose_info_message(body_tree, './/DatiPagamento'))) + + # Invoice lines. <2.2.1> + elements = body_tree.xpath('.//DettaglioLinee', namespaces=body_tree.nsmap) + if elements: + for element in elements: + with invoice_form.invoice_line_ids.new() as invoice_line_form: + + # Sequence. + line_elements = element.xpath('.//NumeroLinea', namespaces=body_tree.nsmap) + if line_elements: + invoice_line_form.sequence = int(line_elements[0].text) * 2 + + # Product. + line_elements = element.xpath('.//Descrizione', namespaces=body_tree.nsmap) + if line_elements: + invoice_line_form.name = " ".join(line_elements[0].text.split()) + + elements_code = element.xpath('.//CodiceArticolo', namespaces=body_tree.nsmap) + if elements_code: + for element_code in elements_code: + type_code = element_code.xpath('.//CodiceTipo', namespaces=body_tree.nsmap)[0] + code = element_code.xpath('.//CodiceValore', namespaces=body_tree.nsmap)[0] + if type_code.text == 'EAN': + product = self.env['product.product'].search([('barcode', '=', code.text)]) + if product: + invoice_line_form.product_id = product + break + if partner: + product_supplier = self.env['product.supplierinfo'].search([('name', '=', partner.id), ('product_code', '=', code.text)]) + if product_supplier and product_supplier.product_id: + invoice_line_form.product_id = product_supplier.product_id + break + if not invoice_line_form.product_id: + for element_code in elements_code: + code = element_code.xpath('.//CodiceValore', namespaces=body_tree.nsmap)[0] + product = self.env['product.product'].search([('default_code', '=', code.text)]) + if product: + invoice_line_form.product_id = product + break + + # Price Unit. + line_elements = element.xpath('.//PrezzoUnitario', namespaces=body_tree.nsmap) + if line_elements: + invoice_line_form.price_unit = float(line_elements[0].text) + + # Quantity. + line_elements = element.xpath('.//Quantita', namespaces=body_tree.nsmap) + if line_elements: + invoice_line_form.quantity = float(line_elements[0].text) + else: + invoice_line_form.quantity = 1 + + # Taxes + tax_element = element.xpath('.//AliquotaIVA', namespaces=body_tree.nsmap) + natura_element = element.xpath('.//Natura', namespaces=body_tree.nsmap) + invoice_line_form.invoice_line_tax_ids.clear() + if tax_element and tax_element[0].text: + percentage = float(tax_element[0].text) + if natura_element and natura_element[0].text: + l10n_it_kind_exoneration = natura_element[0].text + tax = self.env['account.tax'].search([ + ('company_id', '=', invoice_form.company_id.id), + ('amount_type', '=', 'percent'), + ('type_tax_use', '=', 'purchase'), + ('amount', '=', percentage), + ('l10n_it_kind_exoneration', '=', l10n_it_kind_exoneration), + ], limit=1) + else: + tax = self.env['account.tax'].search([ + ('company_id', '=', invoice_form.company_id.id), + ('amount_type', '=', 'percent'), + ('type_tax_use', '=', 'purchase'), + ('amount', '=', percentage), + ], limit=1) + l10n_it_kind_exoneration = '' + + if tax: + invoice_line_form.invoice_line_tax_ids.add(tax) + else: + if l10n_it_kind_exoneration: + message_to_log.append(_("Tax not found with percentage: %s and exoneration %s for the article: %s") % ( + percentage, + l10n_it_kind_exoneration, + invoice_line_form.name)) + else: + message_to_log.append(_("Tax not found with percentage: %s for the article: %s") % ( + percentage, + invoice_line_form.name)) + + # Discount in cascade mode. + # if 3 discounts : -10% -50€ -20% + # the result must be : (((price -10%)-50€) -20%) + # Generic form : (((price -P1%)-A1€) -P2%) + # It will be split in two parts: fix amount and pourcent amount + # example: (((((price - A1€) -P2%) -A3€) -A4€) -P5€) + # pourcent: 1-(1-P2)*(1-P5) + # fix amount: A1*(1-P2)*(1-P5)+A3*(1-P5)+A4*(1-P5) (we must take account of all + # percentage present after the fix amount) + line_elements = element.xpath('.//ScontoMaggiorazione', namespaces=body_tree.nsmap) + total_discount_amount = 0.0 + total_discount_percentage = percentage_global_discount + if line_elements: + for line_element in line_elements: + discount_line = line_element.xpath('.//Tipo', namespaces=body_tree.nsmap) + discount_sign = -1 + if discount_line and discount_line[0].text == 'SC': + discount_sign = 1 + discount_percentage = line_element.xpath('.//Percentuale', namespaces=body_tree.nsmap) + if discount_percentage and discount_percentage[0].text: + pourcentage_actual = 1 - float(discount_percentage[0].text)/100 * discount_sign + total_discount_percentage *= pourcentage_actual + total_discount_amount *= pourcentage_actual + + discount_amount = line_element.xpath('.//Importo', namespaces=body_tree.nsmap) + if discount_amount and discount_amount[0].text: + total_discount_amount += float(discount_amount[0].text) * discount_sign * -1 + + # Save amount discount. + if total_discount_amount != 0: + discount = {} + discount["seq"] = invoice_line_form.sequence + 1 + + if total_discount_amount < 0: + discount["name"] = _('DISCOUNT: ') + invoice_line_form.name + else: + discount["name"] = _('EXTRA CHARGE: ') + invoice_line_form.name + discount["amount"] = total_discount_amount + discount["tax"] = [] + for tax in invoice_line_form.invoice_line_tax_ids: + discount["tax"].append(tax) + discount_list.append(discount) + invoice_line_form.discount = (1 - total_discount_percentage) * 100 + + # Apply amount discount. + for discount in discount_list: + with invoice_form.invoice_line_ids.new() as invoice_line_form_discount: + invoice_line_form_discount.invoice_line_tax_ids.clear() + invoice_line_form_discount.sequence = discount["seq"] + invoice_line_form_discount.name = discount["name"] + invoice_line_form_discount.price_unit = discount["amount"] + + new_invoice = invoice_form.save() + new_invoice.l10n_it_send_state = "other" + + elements = body_tree.xpath('.//Allegati', namespaces=body_tree.nsmap) + if elements: + for element in elements: + name_attachment = element.xpath('.//NomeAttachment', namespaces=body_tree.nsmap)[0].text + attachment_64 = str.encode(element.xpath('.//Attachment', namespaces=body_tree.nsmap)[0].text) + attachment_64 = self.env['ir.attachment'].create({ + 'name': name_attachment, + 'datas': attachment_64, + 'datas_fname': name_attachment, + 'type': 'binary', + }) + + # default_res_id is had to context to avoid facturx to import his content + new_invoice.with_context(default_res_id=new_invoice.id).message_post( + body=(_("Attachment from XML")), + attachment_ids=[attachment_64.id] + ) + + for message in message_to_log: + new_invoice.message_post(body=message) + + if attachment: + new_invoice.l10n_it_einvoice_name = attachment.name + attachment.write({'res_model': 'account.invoice', 'res_id': new_invoice.id}) + new_invoice.message_post(attachment_ids=[attachment.id]) + invoices += new_invoice + return invoices + + def _compose_info_message(self, tree, element_tags): + output_str = "" + elements = tree.xpath(element_tags, namespaces=tree.nsmap) + for element in elements: + output_str += "
    " + for line in element.iter(): + if line.text: + text = " ".join(line.text.split()) + if text: + output_str += "
  • %s: %s
  • " % (line.tag, text) + output_str += "
" + return output_str + + def _compose_multi_info_message(self, tree, element_tags): + output_str = "
    " + + for element_tag in element_tags: + elements = tree.xpath(element_tag, namespaces=tree.nsmap) + if not elements: + continue + for element in elements: + text = " ".join(element.text.split()) + if text: + output_str += "
  • %s: %s
  • " % (element.tag, text) + return output_str + "
" + +class AccountTax(models.Model): + _name = "account.tax" + _inherit = "account.tax" + + l10n_it_vat_due_date = fields.Selection([ + ("I", "[I] IVA ad esigibilità immediata"), + ("D", "[D] IVA ad esigibilità differita"), + ("S", "[S] Scissione dei pagamenti")], default="I", string="VAT due date") + + l10n_it_has_exoneration = fields.Boolean(string="Has exoneration of tax (Italy)", help="Tax has a tax exoneration.") + l10n_it_kind_exoneration = fields.Selection(selection=[ + ("N1", "[N1] Escluse ex art. 15"), + ("N2", "[N2] Non soggette"), + ("N3", "[N3] Non imponibili"), + ("N4", "[N4] Esenti"), + ("N5", "[N5] Regime del margine / IVA non esposta in fattura"), + ("N6", "[N6] Inversione contabile (per le operazioni in reverse charge ovvero nei casi di autofatturazione per acquisti extra UE di servizi ovvero per importazioni di beni nei soli casi previsti)"), + ("N7", "[N7] IVA assolta in altro stato UE (vendite a distanza ex art. 40 c. 3 e 4 e art. 41 c. 1 lett. b, DL 331/93; prestazione di servizi di telecomunicazioni, tele-radiodiffusione ed elettronici ex art. 7-sexies lett. f, g, art. 74-sexies DPR 633/72)")], + string="Exoneration", + help="Exoneration type", + default="N1") + l10n_it_law_reference = fields.Char(string="Law Reference", size=100) + + @api.constrains('l10n_it_has_exoneration', + 'l10n_it_kind_exoneration', + 'l10n_it_law_reference', + 'amount', + 'l10n_it_vat_due_date') + def _check_exoneration_with_no_tax(self): + for tax in self: + if tax.l10n_it_has_exoneration: + if not tax.l10n_it_kind_exoneration or not tax.l10n_it_law_reference or tax.amount != 0: + raise ValidationError("If the tax has exoneration, you must enter a kind of exoneration, a law reference and the amount of the tax must be 0.0.") + if tax.l10n_it_kind_exoneration == 'N6' and tax.l10n_it_vat_due_date == 'S': + raise UserError(_("'Scissione dei pagamenti' is not compatible with exoneration of kind 'N6'")) + +class ImportInvoiceImportWizard(models.TransientModel): + _name = 'account.invoice.import.wizard' + _inherit = 'account.invoice.import.wizard' + + @api.multi + def _create_invoice_from_file(self, attachment): + if attachment.mimetype == 'application/xml' and re.search("([A-Z]{2}[A-Za-z0-9]{2,28}_[A-Za-z0-9]{0,5}.(xml.p7m|xml))", attachment.name): + if self.env['account.invoice'].search([('l10n_it_einvoice_name', '=', attachment.name)], limit=1): + # invoice already exist + raise UserError(_('E-invoice already exist: %s') % attachment.name) + self = self.with_context(default_journal_id= self.journal_id.id) + invoice = self.env['account.invoice']._import_xml_invoice(base64.decodestring(attachment.datas), attachment) + else: + invoice = super(ImportInvoiceImportWizard, self)._create_invoice_from_file(attachment) + return invoice diff --git a/addons/l10n_it_edi/models/ddt.py b/addons/l10n_it_edi/models/ddt.py new file mode 100644 index 00000000000..61464a7d76a --- /dev/null +++ b/addons/l10n_it_edi/models/ddt.py @@ -0,0 +1,21 @@ +# -*- coding:utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import fields, models, api + +class L10nItDdt(models.Model): + _name = 'l10n_it.ddt' + _description = 'Transport Document' + + invoice_id = fields.One2many('account.invoice', 'l10n_it_ddt_id', string='Invoice Reference', + ondelete='cascade') + + name = fields.Char(string="Numero DDT", size=20, help="Transport document number", required=True) + date = fields.Date(string="Data DDT", help="Transport document date", required=True) + + @api.multi + def name_get(self): + res = [] + for ddt in self: + res.append((ddt.id, ("%s (%s)") % (ddt.name, ddt.date))) + return res diff --git a/addons/l10n_it_edi/models/ir_mail_server.py b/addons/l10n_it_edi/models/ir_mail_server.py new file mode 100644 index 00000000000..3bfce47100d --- /dev/null +++ b/addons/l10n_it_edi/models/ir_mail_server.py @@ -0,0 +1,358 @@ +# -*- coding:utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +import zipfile +import io +import re +import logging +import email +import dateutil +import pytz +import base64 +try: + from xmlrpc import client as xmlrpclib +except ImportError: + import xmlrpclib + + +from lxml import etree +from datetime import datetime + +from odoo import api, fields, models, tools, _ +from odoo.exceptions import ValidationError + + +_logger = logging.getLogger(__name__) + +class FetchmailServer(models.Model): + _name = 'fetchmail.server' + _inherit = 'fetchmail.server' + + l10n_it_is_pec = fields.Boolean('PEC server', help="If PEC Server, only mail from '...@pec.fatturapa.it' will be processed.") + l10n_it_last_uid = fields.Integer(string='Last message UID', default=1) + + @api.constrains('l10n_it_is_pec', 'type') + def _check_pec(self): + for record in self: + if record.l10n_it_is_pec and record.type != 'imap': + raise ValidationError("PEC mail server must be of type IMAP.") + + @api.multi + def fetch_mail(self): + """ WARNING: meant for cron usage only - will commit() after each email! """ + + MailThread = self.env['mail.thread'] + for server in self.filtered(lambda s: s.l10n_it_is_pec): + _logger.info('start checking for new emails on %s PEC server %s', server.type, server.name) + + count, failed = 0, 0 + imap_server = None + try: + imap_server = server.connect() + imap_server.select() + + result, data = imap_server.uid('search', None, '(FROM "@pec.fatturapa.it")', '(UID %s:*)' % (server.l10n_it_last_uid)) + new_max_uid = server.l10n_it_last_uid + for uid in data[0].split(): + if int(uid) <= server.l10n_it_last_uid: + # We get always minimum 1 message. If no new message, we receive the newest already managed. + continue + + result, data = imap_server.uid('fetch', uid, '(RFC822)') + + if not data[0]: + continue + message = data[0][1] + + # To leave the mail in the state in which they were. + if "Seen" not in data[1].decode("utf-8"): + imap_server.uid('STORE', uid, '+FLAGS', '\\Seen') + else: + imap_server.uid('STORE', uid, '-FLAGS', '\\Seen') + + # See details in message_process() in mail_thread.py + if isinstance(message, xmlrpclib.Binary): + message = bytes(message.data) + if isinstance(message, str): + message = message.encode('utf-8') + msg_txt = email.message_from_bytes(message) + + try: + self._attachment_invoice(msg_txt) + new_max_uid = max(new_max_uid, int(uid)) + except Exception: + _logger.info('Failed to process mail from %s server %s.', server.type, server.name, exc_info=True) + failed += 1 + self._cr.commit() + count += 1 + server.write({'l10n_it_last_uid': new_max_uid}) + _logger.info("Fetched %d email(s) on %s server %s; %d succeeded, %d failed.", count, server.type, server.name, (count - failed), failed) + except Exception: + _logger.info("General failure when trying to fetch mail from %s server %s.", server.type, server.name, exc_info=True) + finally: + if imap_server: + imap_server.close() + imap_server.logout() + server.write({'date': fields.Datetime.now()}) + return super(FetchmailServer, self.filtered(lambda s: not s.l10n_it_is_pec)).fetch_mail() + + def _attachment_invoice(self, msg_txt): + body, attachments = self.env['mail.thread']._message_extract_payload(msg_txt) + from_address = tools.decode_smtp_header(msg_txt.get('from')) + for attachment in attachments: + split_attachment = attachment.fname.rpartition('.') + if len(split_attachment) < 3: + _logger.info('E-invoice filename not compliant: %s', attachment.fname) + continue + attachment_name = split_attachment[0] + attachment_ext = split_attachment[2] + split_underscore = attachment_name.rsplit('_', 2) + if len(split_underscore) < 2: + _logger.info('E-invoice filename not compliant: %s', attachment.fname) + continue + + if attachment_ext != 'zip': + if split_underscore[1] in ['RC', 'NS', 'MC', 'MT', 'EC', 'SE', 'NE', 'DT']: + # we have a receipt + self._message_receipt_invoice(split_underscore[1], attachment) + elif re.search("([A-Z]{2}[A-Za-z0-9]{2,28}_[A-Za-z0-9]{0,5}.(xml.p7m|xml))", attachment.fname): + # we have a new E-invoice + self._create_invoice_from_mail(attachment.content, attachment.fname, from_address) + else: + if split_underscore[1] == 'AT': + # Attestazione di avvenuta trasmissione della fattura con impossibilità di recapito + self._message_AT_invoice(attachment) + else: + _logger.info('New E-invoice in zip file: %s', attachment.fname) + self._create_invoice_from_mail_with_zip(attachment, from_address) + + def _create_invoice_from_mail(self, att_content, att_name, from_address): + if self.env['account.invoice'].search([('l10n_it_einvoice_name', '=', att_name)], limit=1): + # invoice already exist + _logger.info('E-invoice already exist: %s', att_name) + return + + invoice_attachment = self.env['ir.attachment'].create({ + 'name': att_name, + 'datas': base64.encodestring(att_content), + 'datas_fname': att_name, + 'type': 'binary', + }) + + invoice = self.env['account.invoice']._import_xml_invoice(att_content, invoice_attachment) + invoice.l10n_it_send_state = "new" + invoice.source_email = from_address + self._cr.commit() + + _logger.info('New E-invoice: %s', att_name) + + + def _create_invoice_from_mail_with_zip(self, attachment_zip, from_address): + with zipfile.ZipFile(io.BytesIO(attachment_zip.content)) as z: + for att_name in z.namelist(): + if self.env['account.invoice'].search([('l10n_it_einvoice_name', '=', att_name)], limit=1): + # invoice already exist + _logger.info('E-invoice in zip file (%s) already exist: %s', attachment_zip.fname, att_name) + continue + att_content = z.open(att_name).read() + + self._create_invoice_from_mail(att_content, att_name, from_address) + + def _message_AT_invoice(self, attachment_zip): + with zipfile.ZipFile(io.BytesIO(attachment_zip.content)) as z: + for attachment_name in z.namelist(): + split_name_attachment = attachment_name.rpartition('.') + if len(split_name_attachment) < 3: + continue + split_underscore = split_name_attachment[0].rsplit('_', 2) + if len(split_underscore) < 2: + continue + if split_underscore[1] == 'AT': + attachment = z.open(attachment_name).read() + _logger.info('New AT receipt for: %s', split_underscore[0]) + try: + tree = etree.fromstring(attachment) + except: + _logger.info('Error in decoding new receipt file: %s', attachment_name) + return + + elements = tree.xpath('//NomeFile', namespaces=tree.nsmap) + if elements and elements[0].text: + filename = elements[0].text + else: + return + + related_invoice = self.env['account.invoice'].search([ + ('l10n_it_einvoice_name', '=', filename)]) + if not related_invoice: + _logger.info('Error: invoice not found for receipt file: %s', filename) + return + + related_invoice.l10n_it_send_state = 'failed_delivery' + info = self._return_multi_line_xml(tree, ['//IdentificativoSdI', '//DataOraRicezione', '//MessageId', '//PecMessageId', '//Note']) + related_invoice.message_post( + body=(_("ES certify that it has received the invoice and that the file \ + could not be delivered to the addressee.
%s") % (info)) + ) + + def _message_receipt_invoice(self, receipt_type, attachment): + try: + tree = etree.fromstring(attachment.content) + except: + _logger.info('Error in decoding new receipt file: %s', attachment.fname) + return {} + + elements = tree.xpath('//NomeFile', namespaces=tree.nsmap) + if elements and elements[0].text: + filename = elements[0].text + else: + return {} + + if receipt_type == 'RC': + # Delivery receipt + # This is the receipt sent by the ES to the transmitting subject to communicate + # delivery of the file to the addressee + related_invoice = self.env['account.invoice'].search([ + ('l10n_it_einvoice_name', '=', filename), + ('l10n_it_send_state', '=', 'sent')]) + if not related_invoice: + _logger.info('Error: invoice not found for receipt file: %s', attachment.fname) + return + related_invoice.l10n_it_send_state = 'delivered' + info = self._return_multi_line_xml(tree, ['//IdentificativoSdI', '//DataOraRicezione', '//DataOraConsegna', '//Note']) + related_invoice.message_post( + body=(_("E-Invoice is delivery to the destinatory:
%s") % (info)) + ) + + elif receipt_type == 'NS': + # Rejection notice + # This is the receipt sent by the ES to the transmitting subject if one or more of + # the checks carried out by the ES on the file received do not have a successful result. + related_invoice = self.env['account.invoice'].search([ + ('l10n_it_einvoice_name', '=', filename), + ('l10n_it_send_state', '=', 'sent')]) + if not related_invoice: + _logger.info('Error: invoice not found for receipt file: %s', attachment.fname) + return + related_invoice.l10n_it_send_state = 'invalid' + error = self._return_error_xml(tree) + related_invoice.message_post( + body=(_("Errors in the E-Invoice :
%s") % (error)) + ) + activity_vals = { + 'activity_type_id': self.env.ref('mail.mail_activity_data_todo').id, + 'user_id': related_invoice.user_id.id if related_invoice.user_id else self.env.user.id + } + related_invoice.activity_schedule(summary='Rejection notice', **activity_vals) + + elif receipt_type == 'MC': + # Failed delivery notice + # This is the receipt sent by the ES to the transmitting subject if the file is not + # delivered to the addressee. + related_invoice = self.env['account.invoice'].search([ + ('l10n_it_einvoice_name', '=', filename), + ('l10n_it_send_state', '=', 'sent')]) + if not related_invoice: + _logger.info('Error: invoice not found for receipt file: %s', attachment.fname) + return + info = self._return_multi_line_xml(tree, [ + '//IdentificativoSdI', + '//DataOraRicezione', + '//Descrizione', + '//MessageId', + '//Note']) + related_invoice.message_post( + body=(_("The E-invoice is not delivered to the addressee. The Exchange System is\ + unable to deliver the file to the Public Administration. The Exchange System will\ + contact the PA to report the problem and request that they provide a solution. \ + During the following 15 days, the Exchange System will try to forward the FatturaPA\ + file to the Administration in question again. More informations:
%s") % (info)) + ) + + elif receipt_type == 'NE': + # Outcome notice + # This is the receipt sent by the ES to the invoice sender to communicate the result + # (acceptance or refusal of the invoice) of the checks carried out on the document by + # the addressee. + related_invoice = self.env['account.invoice'].search([ + ('l10n_it_einvoice_name', '=', filename), + ('l10n_it_send_state', '=', 'delivered')]) + if not related_invoice: + _logger.info('Error: invoice not found for receipt file: %s', attachment.fname) + return + elements = tree.xpath('//Esito', namespaces=tree.nsmap) + if elements and elements[0].text: + if elements[0].text == 'EC01': + related_invoice.l10n_it_send_state = 'delivered_accepted' + elif elements[0].text == 'EC02': + related_invoice.l10n_it_send_state = 'delivered_refused' + + info = self._return_multi_line_xml(tree, + ['//Esito', + '//Descrizione', + '//IdentificativoSdI', + '//DataOraRicezione', + '//DataOraConsegna', + '//Note' + ]) + related_invoice.message_post( + body=(_("Outcome notice: %s
%s") % (related_invoice.l10n_it_send_state, info)) + ) + if related_invoice.l10n_it_send_state == 'delivered_refused': + activity_vals = { + 'activity_type_id': self.env.ref('mail.mail_activity_data_todo').id, + 'user_id': related_invoice.user_id.id if related_invoice.user_id else self.env.user.id + } + related_invoice.activity_schedule(summary='Outcome notice: Refused', **activity_vals) + + # elif receipt_type == 'MT': + # Metadata file + # This is the file sent by the ES to the addressee together with the invoice file, + # containing the main reference data of the file useful for processing, including + # the IdentificativoSDI. + # Useless for Odoo + + elif receipt_type == 'DT': + # Deadline passed notice + # This is the receipt sent by the ES to both the invoice sender and the invoice + # addressee to communicate the expiry of the maximum term for communication of + # acceptance/refusal. + related_invoice = self.env['account.invoice'].search([ + ('l10n_it_einvoice_name', '=', filename), ('l10n_it_send_state', '=', 'delivered')]) + if not related_invoice: + _logger.info('Error: invoice not found for receipt file: %s', attachment.fname) + return + related_invoice.l10n_it_send_state = 'delivered_expired' + info = self._return_multi_line_xml(tree, [ + '//Descrizione', + '//IdentificativoSdI', + '//Note']) + related_invoice.message_post( + body=(_("Expiration of the maximum term for communication of acceptance/refusal:\ + %s
%s") % (filename, info)) + ) + + def _return_multi_line_xml(self, tree, element_tags): + output_str = "
    " + + for element_tag in element_tags: + elements = tree.xpath(element_tag, namespaces=tree.nsmap) + if not elements: + continue + for element in elements: + text = " ".join(element.text.split()) + if text: + output_str += "
  • %s: %s
  • " % (element.tag, text) + return output_str + "
" + + def _return_error_xml(self, tree): + output_str = "
    " + + elements = tree.xpath('//Errore', namespaces=tree.nsmap) + if not elements: + return + for element in elements: + descrizione = " ".join(element[1].text.split()) + if descrizione: + output_str += "
  • Errore %s: %s
  • " % (element[0].text, descrizione) + return output_str + "
" diff --git a/addons/l10n_it_edi/models/res_company.py b/addons/l10n_it_edi/models/res_company.py new file mode 100644 index 00000000000..a0cce53b9a5 --- /dev/null +++ b/addons/l10n_it_edi/models/res_company.py @@ -0,0 +1,110 @@ +# -*- coding:utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models +from odoo.exceptions import ValidationError + +TAX_SYSTEM = [ + ("RF01", "[RF01] Ordinario"), + ("RF02", "[RF02] Contribuenti minimi (art.1, c.96-117, L. 244/07)"), + ("RF04", "[RF04] Agricoltura e attività connesse e pesca (artt.34 e 34-bis, DPR 633/72)"), + ("RF05", "[RF05] Vendita sali e tabacchi (art.74, c.1, DPR. 633/72)"), + ("RF06", "[RF06] Commercio fiammiferi (art.74, c.1, DPR 633/72)"), + ("RF07", "[RF07] Editoria (art.74, c.1, DPR 633/72)"), + ("RF08", "[RF08] Gestione servizi telefonia pubblica (art.74, c.1, DPR 633/72)"), + ("RF09", "[RF09] Rivendita documenti di trasporto pubblico e di sosta (art.74, c.1, DPR 633/72)"), + ("RF10", "[RF10] Intrattenimenti, giochi e altre attività di cui alla tariffa allegata al DPR 640/72 (art.74, c.6, DPR 633/72)"), + ("RF11", "[RF11] Agenzie viaggi e turismo (art.74-ter, DPR 633/72)"), + ("RF12", "[RF12] Agriturismo (art.5, c.2, L. 413/91)"), + ("RF13", "[RF13] Vendite a domicilio (art.25-bis, c.6, DPR 600/73)"), + ("RF14", "[RF14] Rivendita beni usati, oggetti d’arte, d’antiquariato o da collezione (art.36, DL 41/95)"), + ("RF15", "[RF15] Agenzie di vendite all’asta di oggetti d’arte, antiquariato o da collezione (art.40-bis, DL 41/95)"), + ("RF16", "[RF16] IVA per cassa P.A. (art.6, c.5, DPR 633/72)"), + ("RF17", "[RF17] IVA per cassa (art. 32-bis, DL 83/2012)"), + ("RF18", "[RF18] Altro"), + ("RF19", "[RF19] Regime forfettario (art.1, c.54-89, L. 190/2014)"), +] + +class ResCompany(models.Model): + _name = 'res.company' + _inherit = 'res.company' + + l10n_it_codice_fiscale = fields.Char(string="Codice Fiscale", size=16, related='partner_id.l10n_it_codice_fiscale', + store=True, readonly=False, help="Fiscal code of your company") + l10n_it_tax_system = fields.Selection(selection=TAX_SYSTEM, string="Tax System", + help="Please select the Tax system to which you are subjected.") + + # PEC server + l10n_it_mail_pec_server_id = fields.Many2one('ir.mail_server', string="Server PEC", + help="Configure your PEC-mail server to send electronic invoices.") + l10n_it_address_recipient_fatturapa = fields.Char(string="Government PEC-mail", + help="Enter Government PEC-mail address. Ex: sdi01@pec.fatturapa.it") + l10n_it_address_send_fatturapa = fields.Char(string="Company PEC-mail", + help="Enter your company PEC-mail address. Ex: yourcompany@pec.mail.it") + + + # Economic and Administrative Index + l10n_it_has_eco_index = fields.Boolean(default=False, + help="The seller/provider is a company listed on the register of companies and as\ + such must also indicate the registration data on all documents (art. 2250, Italian\ + Civil Code)") + l10n_it_eco_index_office = fields.Many2one('res.country.state', domain="[('country_id','=','IT')]", + string="Province of the register-of-companies office") + l10n_it_eco_index_number = fields.Char(string="Number in register of companies", size=20, + help="This field must contain the number under which the\ + seller/provider is listed on the register of companies.") + l10n_it_eco_index_share_capital = fields.Float(default="0.0", size=15, string="Share capital actually paid up", + help="Mandatory if the seller/provider is a company with share\ + capital (SpA, SApA, Srl), this field must contain the amount\ + of share capital actually paid up as resulting from the last\ + financial statement") + l10n_it_eco_index_sole_shareholder = fields.Selection( + [ + ("NO", "Not a limited liability company"), + ("SU", "Socio unico"), + ("SM", "Più soci")], + string="Shareholder") + l10n_it_eco_index_liquidation_state = fields.Selection( + [ + ("LS", "The company is in a state of liquidation"), + ("LN", "The company is not in a state of liquidation")], + string="Liquidation state") + + + # Tax representative + l10n_it_has_tax_representative = fields.Boolean(default=False, + help="The seller/provider is a non-resident subject which\ + carries out transactions in Italy with relevance for VAT\ + purposes and which takes avail of a tax representative in\ + Italy") + l10n_it_tax_representative_partner_id = fields.Many2one('res.partner', string='Tax representative partner') + + @api.constrains('l10n_it_has_eco_index', + 'l10n_it_eco_index_office', + 'l10n_it_eco_index_number', + 'l10n_it_eco_index_share_capital', + 'l10n_it_eco_index_sole_shareholder', + 'l10n_it_eco_index_liquidation_state') + def _check_eco_admin_index(self): + for record in self: + if not record.l10n_it_has_eco_index: + continue + if not record.l10n_it_eco_index_office\ + or not record.l10n_it_eco_index_number\ + or not record.l10n_it_eco_index_share_capital\ + or not record.l10n_it_eco_index_sole_shareholder\ + or not record.l10n_it_eco_index_liquidation_state: + raise ValidationError("All fields about the Economic and Administrative Index must be completed.") + + @api.constrains('l10n_it_has_tax_representative', + 'l10n_it_tax_representative_partner_id') + def _check_tax_representative(self): + for record in self: + if not record.l10n_it_has_tax_representative: + continue + if not record.l10n_it_tax_representative_partner_id: + raise ValidationError("You must select a tax representative.") + if not record.l10n_it_tax_representative_partner_id.vat: + raise ValidationError("Your tax representative partner must have a tax number.") + if not record.l10n_it_tax_representative_partner_id.country_id: + raise ValidationError("Your tax representative partner must have a country.") diff --git a/addons/l10n_it_edi/models/res_partner.py b/addons/l10n_it_edi/models/res_partner.py new file mode 100644 index 00000000000..e0a78f24d58 --- /dev/null +++ b/addons/l10n_it_edi/models/res_partner.py @@ -0,0 +1,28 @@ +# -*- coding:utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from odoo import api, fields, models +from odoo.exceptions import ValidationError + +class ResPartner(models.Model): + _name = 'res.partner' + _inherit = 'res.partner' + + l10n_it_pec_email = fields.Char(string="PEC e-mail") + l10n_it_codice_fiscale = fields.Char(string="Codice Fiscale", size=16) + l10n_it_pa_index = fields.Char(string="PA index", + size=7, + help="Must contain the 6-character (or 7) code, present in the PA\ + Index in the information relative to the electronic invoicing service,\ + associated with the office which, within the addressee administration, deals\ + with receiving (and processing) the invoice.") + + _sql_constraints = [ + ('l10n_it_codice_fiscale', + "CHECK(l10n_it_codice_fiscale IS NULL OR LENGTH(l10n_it_codice_fiscale) >= 11)", + "Codice fiscale must have between 11 and 16 characters."), + + ('l10n_it_pa_index', + "CHECK(l10n_it_pa_index IS NULL OR LENGTH(l10n_it_pa_index) >= 6)", + "PA index must have between 6 and 7 characters."), + ] diff --git a/addons/l10n_it_edi/security/ir.model.access.csv b/addons/l10n_it_edi/security/ir.model.access.csv new file mode 100644 index 00000000000..22c0da9c159 --- /dev/null +++ b/addons/l10n_it_edi/security/ir.model.access.csv @@ -0,0 +1,2 @@ +"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink" +"access_it_ddt_manager","it_ddt manager","model_l10n_it_ddt","account.group_account_invoice",1,1,1,1 \ No newline at end of file diff --git a/addons/l10n_it_edi/tests/__init__.py b/addons/l10n_it_edi/tests/__init__.py new file mode 100644 index 00000000000..d7b285d123c --- /dev/null +++ b/addons/l10n_it_edi/tests/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import test_generate diff --git a/addons/l10n_it_edi/tests/test_generate.py b/addons/l10n_it_edi/tests/test_generate.py new file mode 100644 index 00000000000..60592ade8c7 --- /dev/null +++ b/addons/l10n_it_edi/tests/test_generate.py @@ -0,0 +1,32 @@ +# -*- coding: utf-8 -*- +import time + +from odoo import fields +from odoo.tests.common import TransactionCase, Form + +class TestItalianElectronicInvoice(TransactionCase): + def test_state(self): + f = Form(self.env['account.invoice']) + f.partner_id = self.env.ref('base.res_partner_12') + with f.invoice_line_ids.new() as l: + l.product_id = self.env.ref('product.product_product_3') + invoice = f.save() + + # I check that Initially customer invoice state is "Draft" + self.assertEqual(invoice.state, 'draft') + + # I called the "Confirm Draft Invoices" wizard + w = Form(self.env['account.invoice.confirm']).save() + # I clicked on Confirm Invoices Button + w.with_context( + active_model='account.invoice', + active_id=invoice.id, + active_ids=invoice.ids, + type='out_invoice', + ).invoice_confirm() + + # I check that customer invoice state is "Open" + self.assertEqual(invoice.state, 'open') + + # Electronic invoice must be present and have the same name as l10n_it_einvoice_name + self.assertEqual(invoice.l10n_it_einvoice_id.name, invoice.l10n_it_einvoice_name) diff --git a/addons/l10n_it_edi/views/l10n_it_view.xml b/addons/l10n_it_edi/views/l10n_it_view.xml new file mode 100644 index 00000000000..7ae8222bf79 --- /dev/null +++ b/addons/l10n_it_edi/views/l10n_it_view.xml @@ -0,0 +1,265 @@ + + + + fetchmail.server.form.l10n.it + fetchmail.server + 20 + + + + + + + + + + + + account.tax.form.l10n.it + account.tax + 20 + + + + + + + + + + + + + + + + + res.partner.form.l10n.it + res.partner + 20 + + + + + + + + + + + + + + res.company.form.l10n.it + res.company + 20 + + + + + + + + + + + + + + + + +
+ The seller/provider is a company listed on the register of companies and as + such must also indicate the registration data on all documents (art. 2250, Italian + Civil Code) +
+ + + + + + + + + + +
+ + +
+ The seller/provider is a non-resident subject which carries out transactions in Italy + with relevance for VAT purposes and which takes avail of a tax representative in Italy +
+ + + + + + +
+
+
+
+
+
+ + + account.invoice.supplier.tree.l10n.it + account.invoice + 20 + + + + + + +
- + + + View diff --git a/addons/mail/models/mail_message.py b/addons/mail/models/mail_message.py index 51e87a86982..1418c066b2e 100644 --- a/addons/mail/models/mail_message.py +++ b/addons/mail/models/mail_message.py @@ -553,7 +553,7 @@ class Message(models.Model): 'model': message.model, 'last_message_date': message.date, 'module_icon': '/mail/static/src/img/smiley/mailfailure.jpg', - 'notifications': dict((notif.res_partner_id.id, (notif.email_status, notif.res_partner_id.name)) for notif in message.notification_ids) + 'notifications': dict((notif.res_partner_id.id, (notif.email_status, notif.res_partner_id.name)) for notif in message.notification_ids.sudo()) } failures_infos.append(info) return failures_infos diff --git a/addons/mail/models/mail_thread.py b/addons/mail/models/mail_thread.py index 5892de5137b..df8fd6845ce 100644 --- a/addons/mail/models/mail_thread.py +++ b/addons/mail/models/mail_thread.py @@ -740,7 +740,9 @@ class MailThread(models.AbstractModel): access_link = self._notify_get_action_link('view') if message.model: - model_name = self.env['ir.model']._get(message.model).display_name + model = self.env['ir.model'].with_context( + lang=self.env.context.get('lang', self.env.user.lang)) + model_name = model._get(message.model).display_name view_title = _('View %s') % model_name else: view_title = _('View') diff --git a/addons/mail/static/src/js/chatter.js b/addons/mail/static/src/js/chatter.js index 330e56b77b4..72971fbeee9 100644 --- a/addons/mail/static/src/js/chatter.js +++ b/addons/mail/static/src/js/chatter.js @@ -90,6 +90,7 @@ var Chatter = Widget.extend({ this._$topbar = this.$('.o_chatter_topbar'); if(!this._disableAttachmentBox) { this.$('.o_topbar_right_area').append(QWeb.render('mail.chatter.Attachment.Button', { + displayCounter: !!this.fields.thread, count: this.record.data.message_attachment_count || 0, })); } @@ -362,7 +363,9 @@ var Chatter = Widget.extend({ if (this._isAttachmentBoxOpen) { this._fetchAttachments().then(this._openAttachmentBox.bind(this)); } - this.trigger_up('reload', { fieldNames: ['message_attachment_count'] }); + if (this.fields.thread) { + this.trigger_up('reload', { fieldNames: ['message_attachment_count'] }); + } }, /** * @private @@ -490,7 +493,9 @@ var Chatter = Widget.extend({ }) .then(function () { self._reloadAttachmentBox(); - self.fields.thread.removeAttachments([ev.data.attachmentId]); + if (self.fields.thread) { + self.fields.thread.removeAttachments([ev.data.attachmentId]); + } self.trigger_up('reload'); }); } diff --git a/addons/mail/static/src/js/thread_widget.js b/addons/mail/static/src/js/thread_widget.js index 2e2b7e222c6..cbac2c3b417 100644 --- a/addons/mail/static/src/js/thread_widget.js +++ b/addons/mail/static/src/js/thread_widget.js @@ -103,6 +103,7 @@ var ThreadWidget = Widget.extend({ this._messageSeenPopover.popover('hide'); } this._destroyOpenSeenPopoverIDs(); + this._super(); }, /** * @param {mail.model.AbstractThread} thread the thread to render. diff --git a/addons/mail/static/src/xml/chatter.xml b/addons/mail/static/src/xml/chatter.xml index 7f8629f1bae..7fe1eeebd77 100644 --- a/addons/mail/static/src/xml/chatter.xml +++ b/addons/mail/static/src/xml/chatter.xml @@ -105,11 +105,17 @@ +