diff --git a/addons/point_of_sale/data/point_of_sale_data.xml b/addons/point_of_sale/data/point_of_sale_data.xml index a1dc7f0e071f534701e8d60717388342576f6e27..0dfa33f862a169d5f4ebc3c0229595c4d4305975 100644 --- a/addons/point_of_sale/data/point_of_sale_data.xml +++ b/addons/point_of_sale/data/point_of_sale_data.xml @@ -42,16 +42,9 @@ <field name="image" type="base64" file="point_of_sale/static/img/product_product_49-image.jpg"/> </record> - <record id="pos_sale_journal" model="account.journal"> - <field name="name">Point of Sale</field> - <field name="code">POSS</field> - <field name="type">sale</field> - <!-- avoid being selected as default journal --> - <field name="sequence">20</field> - </record> - <record id="uom.product_uom_categ_unit" model="uom.category"> <field name="is_pos_groupable">True</field> </record> + <function model="pos.config" name="post_install_pos_localisation" /> </data> </odoo> diff --git a/addons/point_of_sale/models/__init__.py b/addons/point_of_sale/models/__init__.py index 70d1073b2e5668753eab2f26924463f83726d632..5cc88b2c693ea76f70462a7378bf9d5ca3605127 100644 --- a/addons/point_of_sale/models/__init__.py +++ b/addons/point_of_sale/models/__init__.py @@ -5,6 +5,7 @@ from . import account_bank_statement from . import account_journal from . import account_tax from . import barcode_rule +from . import chart_template from . import digest from . import pos_category from . import pos_config diff --git a/addons/point_of_sale/models/chart_template.py b/addons/point_of_sale/models/chart_template.py new file mode 100644 index 0000000000000000000000000000000000000000..a1a97c01ffebcaa883e9a145dfefd9ab9747e679 --- /dev/null +++ b/addons/point_of_sale/models/chart_template.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +from odoo import api, models + + +class AccountChartTemplate(models.Model): + _inherit = 'account.chart.template' + + def _create_bank_journals(self, company, acc_template_ref): + """ + Add the payment journals to the existing pos config + """ + journals = super(AccountChartTemplate, self)._create_bank_journals(company, acc_template_ref) + self.env['pos.config'].assign_payment_journals(companies=company) + return journals + + @api.model + def generate_journals(self, acc_template_ref, company, journals_dict=None): + res = super(AccountChartTemplate, self).generate_journals(acc_template_ref, company, journals_dict) + self.env['pos.config'].generate_pos_journal(companies=company) + return res diff --git a/addons/point_of_sale/models/pos_config.py b/addons/point_of_sale/models/pos_config.py index e9f3c4e40f69287cf276cad5fa3f1466bf372eb2..8fd60d0f66288a5fbe6ffff674e88044b78e937f 100644 --- a/addons/point_of_sale/models/pos_config.py +++ b/addons/point_of_sale/models/pos_config.py @@ -508,3 +508,41 @@ class PosConfig(models.Model): 'view_id': False, 'type': 'ir.actions.act_window', } + + # All following methods are made to create data needed in POS, when a localisation + # is installed, or if POS is installed on database having companies that already have + # a localisation installed + @api.model + def post_install_pos_localisation(self): + self.assign_payment_journals() + self.generate_pos_journal() + + @api.model + def assign_payment_journals(self, companies=False): + self = self.sudo() + if not companies: + companies = self.env['res.company'].search([]) + for company in companies: + if company.chart_template_id: + cash_journal = self.env['account.journal'].search([('company_id', '=', company.id), ('type', '=', 'cash')], limit=1) + cash_journal.write({'journal_user':True}) + existing_pos_config = self.env['pos.config'].search([('company_id', '=', company.id), ('journal_ids', '=', False)]) + existing_pos_config.write({'journal_ids': [(6, 0, cash_journal.ids)]}) + + @api.model + def generate_pos_journal(self, companies=False): + self = self.sudo() + if not companies: + companies = self.env['res.company'].search([]) + for company in companies: + pos_journal = self.env['account.journal'].search([('company_id', '=', company.id), ('code', '=', 'POSS')]) + if company.chart_template_id and not pos_journal: + pos_journal = self.env['account.journal'].create({ + 'type': 'sale', + 'name': 'Point of Sale', + 'code': 'POSS', + 'company_id': company.id, + 'sequence': 20 + }) + existing_pos_config = self.env['pos.config'].search([('company_id', '=', company.id), ('journal_id', '=', False)]) + existing_pos_config.write({'journal_id': pos_journal.id})