diff --git a/addons/account/demo/account_statement_operations.yml b/addons/account/demo/account_statement_operations.yml index 342e35fdac9..e4a87472fa0 100644 --- a/addons/account/demo/account_statement_operations.yml +++ b/addons/account/demo/account_statement_operations.yml @@ -9,7 +9,7 @@ } if account_id: vals['account_id'] = account_id - self._update('account.operation.template', 'account', vals, 'statement_operation_template_1') + self._update(cr, uid, 'account.reconcile.model', 'account', vals, 'account_reconcile_model_1') - !python {model: ir.model.data, id: False} : | account_id = self.env['account.account'].search([('user_type_id', '=', ref('account.data_account_type_expenses')), ('tag_ids', '=', ref('account_tag_operating'))], limit=1).id @@ -21,7 +21,7 @@ } if account_id: vals['account_id'] = account_id - self._update('account.operation.template', 'account', vals, 'statement_operation_template_2') + self._update(cr, uid, 'account.reconcile.model', 'account', vals, 'account_reconcile_model_2') - !python {model: ir.model.data, id: False} : | account_id = self.env['account.account'].search([('user_type_id', '=', ref('account.data_account_type_revenue')), ('tag_ids', '=', ref('account_tag_operating'))], limit=1).id @@ -33,5 +33,5 @@ } if account_id: vals['account_id'] = account_id - self._update('account.operation.template', 'account', vals, 'statement_operation_template_3') + self._update(cr, uid, 'account.reconcile.model', 'account', vals, 'account_reconcile_model_3') - diff --git a/addons/account/models/account.py b/addons/account/models/account.py index 6810c543f38..eb0b26b6963 100644 --- a/addons/account/models/account.py +++ b/addons/account/models/account.py @@ -758,8 +758,8 @@ class AccountTax(models.Model): return incl_tax.compute_all(price)['total_excluded'] return price -class AccountOperationTemplate(models.Model): - _name = "account.operation.template" +class AccountReconcileModel(models.Model): + _name = "account.reconcile.model" _description = "Preset to create journal entries during a invoices and payments matching" name = fields.Char(string='Button Label', required=True) diff --git a/addons/account/models/chart_template.py b/addons/account/models/chart_template.py index effca2ce1a4..0bf832c133d 100644 --- a/addons/account/models/chart_template.py +++ b/addons/account/models/chart_template.py @@ -335,6 +335,9 @@ class AccountChartTemplate(models.Model): # Generate Fiscal Position , Fiscal Position Accounts and Fiscal Position Taxes from templates self.generate_fiscal_position(taxes_ref, account_ref, company) + # Generate account operation template templates + self.generate_account_reconcile_model(taxes_ref, account_ref, company) + return account_ref, taxes_ref @api.multi @@ -385,6 +388,38 @@ class AccountChartTemplate(models.Model): acc_template_ref[account_template.id] = new_account return acc_template_ref + @api.multi + def generate_account_reconcile_model(self, tax_template_ref, acc_template_ref, company): + """ This method for generating accounts from templates. + + :param tax_template_ref: Taxes templates reference for write taxes_id in account_account. + :param acc_template_ref: dictionary with the mappping between the account templates and the real accounts. + :param company_id: company_id selected from wizard.multi.charts.accounts. + :returns: return new_account_reconcile_model for reference purpose. + :rtype: dict + """ + self.ensure_one() + account_reconcile_models = self.env['account.reconcile.model.template'].search([]) + for account_reconcile_model in account_reconcile_models: + vals = { + 'name': account_reconcile_model.name, + 'sequence': account_reconcile_model.sequence, + 'has_second_line': account_reconcile_model.has_second_line, + 'company_id': company.id, + 'account_id': acc_template_ref[account_reconcile_model.account_id.id], + 'label': account_reconcile_model.label, + 'amount_type': account_reconcile_model.amount_type, + 'amount': account_reconcile_model.amount, + 'tax_id': account_reconcile_model.tax_id and tax_template_ref[account_reconcile_model.tax_id.id] or False, + 'second_account_id': account_reconcile_model.second_account_id and acc_template_ref[account_reconcile_model.second_account_id.id] or False, + 'second_label': account_reconcile_model.second_label, + 'second_amount_type': account_reconcile_model.second_amount_type, + 'second_amount': account_reconcile_model.second_amount, + 'second_tax_id': account_reconcile_model.second_tax_id and tax_template_ref[account_reconcile_model.second_tax_id.id] or False, + } + self.create_record_with_xmlid(company, account_reconcile_model, 'account.reconcile.model', vals) + return True + @api.multi def generate_fiscal_position(self, tax_template_ref, acc_template_ref, company): """ This method generate Fiscal Position, Fiscal Position Accounts and Fiscal Position Taxes from templates. @@ -814,3 +849,27 @@ class AccountBankAccountsWizard(models.TransientModel): currency_id = fields.Many2one('res.currency', string='Account Currency', help="Forces all moves for this account to have this secondary currency.") account_type = fields.Selection([('cash', 'Cash'), ('bank', 'Bank')]) + + +class AccountReconcileModelTemplate(models.Model): + _name = "account.reconcile.model.template" + + name = fields.Char(string='Button Label', required=True) + sequence = fields.Integer(required=True, default=10) + has_second_line = fields.Boolean(string='Add a second line', default=False) + account_id = fields.Many2one('account.account.template', string='Account', ondelete='cascade', domain=[('deprecated', '=', False)]) + label = fields.Char(string='Journal Item Label') + amount_type = fields.Selection([ + ('fixed', 'Fixed'), + ('percentage', 'Percentage of balance') + ], required=True, default='percentage') + amount = fields.Float(digits=0, required=True, default=100.0, help="Fixed amount will count as a debit if it is negative, as a credit if it is positive.") + tax_id = fields.Many2one('account.tax.template', string='Tax', ondelete='restrict', domain=[('type_tax_use', '=', 'purchase')]) + second_account_id = fields.Many2one('account.account.template', string='Second Account', ondelete='cascade', domain=[('deprecated', '=', False)]) + second_label = fields.Char(string='Second Journal Item Label') + second_amount_type = fields.Selection([ + ('fixed', 'Fixed'), + ('percentage', 'Percentage of amount') + ], string="Second Amount type",required=True, default='percentage') + second_amount = fields.Float(string='Second Amount', digits=0, required=True, default=100.0, help="Fixed amount will count as a debit if it is negative, as a credit if it is positive.") + second_tax_id = fields.Many2one('account.tax.template', string='Second Tax', ondelete='restrict', domain=[('type_tax_use', '=', 'purchase')]) diff --git a/addons/account/security/account_security.xml b/addons/account/security/account_security.xml index 6d379560a0b..fdfcb1caaa5 100644 --- a/addons/account/security/account_security.xml +++ b/addons/account/security/account_security.xml @@ -109,9 +109,9 @@ ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] - - Account operation template company rule - + + Account reconcile model template company rule + ['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])] diff --git a/addons/account/security/ir.model.access.csv b/addons/account/security/ir.model.access.csv index 287a50c8a18..7a1e54c6170 100644 --- a/addons/account/security/ir.model.access.csv +++ b/addons/account/security/ir.model.access.csv @@ -63,7 +63,8 @@ access_account_financial_report,account.financial.report,model_account_financial access_account_financial_report_invoice,account.financial.report invoice,model_account_financial_report,account.group_account_invoice,1,0,0,0 access_account_account_tax,account.account.tag,model_account_account_tag,account.group_account_user,1,0,0,0 access_account_account_tax_user,account.account.tag,model_account_account_tag,account.group_account_invoice,1,0,0,0 -access_account_operation_template,account.operation.template,model_account_operation_template,account.group_account_user,1,1,1,1 +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_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/account_reconciliation_widgets.js b/addons/account/static/src/js/account_reconciliation_widgets.js index ea63221d763..848b9b5093a 100644 --- a/addons/account/static/src/js/account_reconciliation_widgets.js +++ b/addons/account/static/src/js/account_reconciliation_widgets.js @@ -76,7 +76,7 @@ var abstractReconciliation = Widget.extend(ControlPanelMixin, { this.formatCurrencies; // Method that formats the currency ; loaded from the server this.model_res_users = new Model("res.users"); this.model_tax = new Model("account.tax"); - this.model_presets = new Model("account.operation.template"); + this.model_presets = new Model("account.reconcile.model"); this.max_move_lines_displayed = 5; // Number of reconciliations loaded initially and by clicking 'show more' this.num_reconciliations_fetched_in_batch = 10; @@ -277,7 +277,7 @@ var abstractReconciliation = Widget.extend(ControlPanelMixin, { presetConfigCreateClickHandler: function(e) { e.preventDefault(); var self = this; - return self.rpc("/web/action/load", {action_id: "account.action_account_operation_template"}).then(function(result) { + return self.rpc("/web/action/load", {action_id: "account.action_account_reconcile_model"}).then(function(result) { result.views = [[false, "form"], [false, "list"]]; return self.do_action(result); }); @@ -286,7 +286,7 @@ var abstractReconciliation = Widget.extend(ControlPanelMixin, { presetConfigEditClickHandler: function(e) { e.preventDefault(); var self = this; - return self.rpc("/web/action/load", {action_id: "account.action_account_operation_template"}).then(function(result) { + return self.rpc("/web/action/load", {action_id: "account.action_account_reconcile_model"}).then(function(result) { result.views = [[false, "list"], [false, "form"]]; return self.do_action(result); }); diff --git a/addons/account/views/account_journal_dashboard_view.xml b/addons/account/views/account_journal_dashboard_view.xml index 8ff924a63aa..61318f7323d 100644 --- a/addons/account/views/account_journal_dashboard_view.xml +++ b/addons/account/views/account_journal_dashboard_view.xml @@ -99,7 +99,7 @@ Nothing to Reconcile
- Reconciliation Models + Reconciliation Models
diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml index 02ddfdacd5b..bde3c8071e0 100644 --- a/addons/account/views/account_view.xml +++ b/addons/account/views/account_view.xml @@ -753,9 +753,9 @@ manual_reconciliation_view
- - account.operation.template.form - account.operation.template + + account.reconcile.model.form + account.reconcile.model
@@ -806,9 +806,9 @@
- - account.operation.template.tree - account.operation.template + + account.reconcile.model.tree + account.reconcile.model @@ -819,9 +819,9 @@ - - account.operation.template.search - account.operation.template + + account.reconcile.model.search + account.reconcile.model @@ -830,12 +830,12 @@ - + Reconciliation Models - account.operation.template + account.reconcile.model form tree,form - +

Click to create a reconciliation model. diff --git a/addons/l10n_be/__openerp__.py b/addons/l10n_be/__openerp__.py index 0e41d9cef1b..b19362519ae 100644 --- a/addons/l10n_be/__openerp__.py +++ b/addons/l10n_be/__openerp__.py @@ -48,8 +48,9 @@ Wizards provided by this module: 'data/l10n_be_sequence_data.xml', 'data/fiscal_templates_data.xml', 'data/account_fiscal_position_tax_template_data.xml', + 'data/account_reconcile_model_template.xml', 'data/account_chart_template_data.yml', - 'data/menuitem_data.xml' + 'data/menuitem_data.xml', ], 'demo': [ 'demo/l10n_be_demo.yml', diff --git a/addons/l10n_be/data/account_pcmn_belgium_data.xml b/addons/l10n_be/data/account_pcmn_belgium_data.xml index 27839c6f65d..1f47f09cc08 100644 --- a/addons/l10n_be/data/account_pcmn_belgium_data.xml +++ b/addons/l10n_be/data/account_pcmn_belgium_data.xml @@ -908,6 +908,13 @@ + + 653 + Escomptes clients + + + + Différences de change 654 diff --git a/addons/l10n_be/data/account_reconcile_model_template.xml b/addons/l10n_be/data/account_reconcile_model_template.xml new file mode 100644 index 00000000000..64b541fec1f --- /dev/null +++ b/addons/l10n_be/data/account_reconcile_model_template.xml @@ -0,0 +1,32 @@ + + + + Escompte + + percentage + 100 + Escompte accordé + + + Frais bancaires HTVA + + percentage + 100 + Frais bancaires HTVA + + + Frais bancaires TVA21 + + percentage + + 100 + Frais bancaires TVA21 + + + Virements internes + + percentage + 100 + Virements internes + + diff --git a/addons/l10n_be/data/account_tax_template_data.xml b/addons/l10n_be/data/account_tax_template_data.xml index 48f91610f53..d52c55a9bef 100644 --- a/addons/l10n_be/data/account_tax_template_data.xml +++ b/addons/l10n_be/data/account_tax_template_data.xml @@ -343,6 +343,19 @@ purchase + + + 12 + 21% Services - TTC + 21% TVA + + + + 21 + percent + none + + 210