diff --git a/multi_branch_pos/README.rst b/multi_branch_pos/README.rst new file mode 100644 index 000000000..99ed7e4e5 --- /dev/null +++ b/multi_branch_pos/README.rst @@ -0,0 +1,44 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +Multi Branch POS +================ +This module helps you to use branch for POS. + +Configuration +============= +* No additional configurations needed + +Company +------- +* `Cybrosys Techno Solutions `__ + +Credits +------- +* Developers: Sagarika@cybrosys + version 14: Sagarika@cybrosys + +Contacts +-------- +* Mail Contact : odoo@cybrosys.com +* Website : https://cybrosys.com + +Bug Tracker +----------- +Bugs are tracked on GitHub Issues. In case of trouble, please check there if your issue has already been reported. + +Maintainer +========== +.. image:: https://cybrosys.com/images/logo.png + :target: https://cybrosys.com + +This module is maintained by Cybrosys Technologies. + +For support and more information, please visit `Our Website `__ + +Further information +=================== +HTML Description: ``__ + + diff --git a/multi_branch_pos/__init__.py b/multi_branch_pos/__init__.py new file mode 100644 index 000000000..8683c877e --- /dev/null +++ b/multi_branch_pos/__init__.py @@ -0,0 +1,26 @@ + +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import models +from . import report + diff --git a/multi_branch_pos/__manifest__.py b/multi_branch_pos/__manifest__.py new file mode 100644 index 000000000..aabac33de --- /dev/null +++ b/multi_branch_pos/__manifest__.py @@ -0,0 +1,49 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +{ + 'name': "Multiple Branch Setup for POS", + 'version': "14.0.1.0.0", + 'summary': """ Multiple Branch Unit Operation Setup for Odoo POS""", + 'description': """ Multiple Branch Unit Operation Setup for Odoo POS""", + 'author': "Cybrosys Techno Solutions", + 'company': "Cybrosys Techno Solutions", + 'maintainer': "Cybrosys Techno Solutions", + 'website': "https://cybrosys.com/", + 'category': 'Tools', + 'depends': ['base', 'multi_branch_base', 'point_of_sale'], + 'data': [ + 'security/pos_security.xml', + 'views/branch_pos_config_views.xml', + 'views/branch_pos_orders_views.xml', + 'views/branch_pos_session_views.xml', + 'views/pos_assets.xml', + 'report/pos_order_report.xml' + ], + 'images': ['static/description/banner.jpg'], + 'qweb': [ + 'static/src/xml/branch.xml' + ], + 'license': "AGPL-3", + 'installable': True, + 'application': False +} diff --git a/multi_branch_pos/doc/RELEASE_NOTES.md b/multi_branch_pos/doc/RELEASE_NOTES.md new file mode 100644 index 000000000..8a49267f5 --- /dev/null +++ b/multi_branch_pos/doc/RELEASE_NOTES.md @@ -0,0 +1,8 @@ +## Module + +#### 03.11.2022 +#### Version 14.0.1.0.0 +##### ADD +- Initial commit + + diff --git a/multi_branch_pos/models/__init__.py b/multi_branch_pos/models/__init__.py new file mode 100644 index 000000000..e0e792e5f --- /dev/null +++ b/multi_branch_pos/models/__init__.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +from . import branch_pos_config +from . import branch_pos_orders +from . import branch_pos_session +from . import account_bank_statement diff --git a/multi_branch_pos/models/account_bank_statement.py b/multi_branch_pos/models/account_bank_statement.py new file mode 100644 index 000000000..a6a7c3b5f --- /dev/null +++ b/multi_branch_pos/models/account_bank_statement.py @@ -0,0 +1,86 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +"""account bank statement""" + +from odoo import fields, models, _ +from odoo.exceptions import UserError +from odoo.tools.misc import formatLang + + +class AccountBankStatement(models.Model): + """inherit pos config to add new branch field""" + _inherit = 'account.bank.statement' + + branch_id = fields.Many2one('res.branch') + + def _check_balance_end_real_same_as_computed(self): + ''' Check the balance_end_real (encoded manually by the user) + is equals to the balance_end (computed by odoo). + In case of a cash statement, the different is set + automatically to a profit/loss account. + ''' + for stmt in self: + if not stmt.currency_id.is_zero(stmt.difference): + if stmt.journal_type == 'cash': + st_line_vals = { + 'statement_id': stmt.id, + 'journal_id': stmt.journal_id.id, + 'amount': stmt.difference, + 'date': stmt.date, + 'branch_id': stmt.journal_id.branch_id.id + } + + if stmt.difference < 0.0: + if not stmt.journal_id.loss_account_id: + raise UserError(_('Please go on the %s journal and ' + 'define a Loss Account. This account ' + 'will be used to record cash difference.', + stmt.journal_id.name)) + + st_line_vals['payment_ref'] = _("Cash difference " + "observed during the counting (Loss)") + st_line_vals[ + 'counterpart_account_id'] = stmt.journal_id.loss_account_id.id + else: + # statement.difference > 0.0 + if not stmt.journal_id.profit_account_id: + raise UserError(_('Please go on the %s journal and ' + 'define a Profit Account. This account will ' + 'be used to record cash difference.', + stmt.journal_id.name)) + + st_line_vals['payment_ref'] = _("Cash difference " + "observed during the counting (Profit)") + st_line_vals[ + 'counterpart_account_id'] = stmt.journal_id.profit_account_id.id + + self.env['account.bank.statement.line'].create(st_line_vals) + else: + balance_end_real = formatLang(self.env, stmt.balance_end_real, currency_obj=stmt.currency_id) + balance_end = formatLang(self.env, stmt.balance_end, currency_obj=stmt.currency_id) + raise UserError(_( + 'The ending balance is incorrect !\nThe expected balance (%(real_balance)s) is different from the computed one (%(computed_balance)s).', + real_balance=balance_end_real, + computed_balance=balance_end + )) + return True diff --git a/multi_branch_pos/models/branch_pos_config.py b/multi_branch_pos/models/branch_pos_config.py new file mode 100644 index 000000000..1412046fd --- /dev/null +++ b/multi_branch_pos/models/branch_pos_config.py @@ -0,0 +1,180 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +"""pos config""" + +from odoo import fields, models, api + + +class PointOfSaleBranch(models.Model): + """inherit pos config to add new branch field""" + _inherit = 'pos.config' + + branch_id = fields.Many2one('res.branch', string='Branch', store=True, + readonly=False, compute='_compute_branch') + branch_name = fields.Char(string="Branch Name", store=True, + related='branch_id.name') + email = fields.Char(related='branch_id.email', store=True) + phone = fields.Char(related='branch_id.phone', store=True) + website = fields.Char(related='branch_id.website', store=True) + allowed_branch_ids = fields.Many2many('res.branch', store=True, + string="Allowed Branches", + compute='_compute_allowed_branch_ids') + + @api.depends('company_id') + def _compute_allowed_branch_ids(self): + for pos in self: + pos.allowed_branch_ids = self.env.user.branch_ids.ids + + @api.depends('company_id') + def _compute_branch(self): + for order in self: + pos_company = order.company_id if order.company_id else self.env.company + branch_ids = self.env.user.branch_ids + branch = branch_ids.filtered( + lambda branch: branch.company_id == pos_company) + if branch: + order.branch_id = branch.ids[0] + else: + order.branch_id = False + + @api.onchange('branch_id') + def _onchange_branch_id(self): + for pos in self: + if pos.branch_id: + picking = self.env['stock.warehouse'].search( + [('branch_id', '=', self.env.user.branch_id.id), + ('company_id', '=', self.env.company.id)], + limit=1) + if not picking: + picking = self.env['stock.warehouse'].search( + [('branch_id', '=', False), + ('company_id', '=', self.env.company.id)], + limit=1) + sales_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', self.env.user.branch_id.id), + ('code', 'ilike', 'POSS')], limit=1) + print(sales_journal) + if not sales_journal: + sales_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', False), + ('code', 'ilike', 'POSS')], limit=1) + invoice_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', self.env.user.branch_id.id)], limit=1) + if not invoice_journal: + invoice_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', False)], limit=1) + else: + picking = self.env['stock.warehouse'].search( + [('company_id', '=', self.env.company.id)], + limit=1) + sales_journal = self.env['account.journal'].search([ + ('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('code', '=', 'POSS')], limit=1) + invoice_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id)], limit=1) + self.picking_type_id = picking.pos_type_id.id + self.journal_id = sales_journal.id + self.invoice_journal_id = invoice_journal.id + + def _default_picking_type_id(self): + """methode to set default picking type""" + if self.env.user.branch_id: + picking = self.env['stock.warehouse'].search( + [('branch_id', '=', self.env.user.branch_id.id), + ('company_id', '=', self.env.company.id)], + limit=1) + if not picking: + picking = self.env['stock.warehouse'].search( + [('branch_id', '=', False), + ('company_id', '=', self.env.company.id)], + limit=1) + return picking.pos_type_id.id + return self.env['stock.warehouse'].search( + [('company_id', '=', self.env.company.id)], limit=1).pos_type_id.id + + def _default_sale_journal(self): + """methode to set default sale journal""" + if self.env.user.branch_id: + sales_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', self.env.user.branch_id.id), + ('code', 'ilike', 'POSS')], limit=1) + if not sales_journal: + sales_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', False), + ('code', 'ilike', 'POSS')], limit=1) + return sales_journal + return self.env['account.journal'].search([ + ('type', '=', 'sale'), ('company_id', '=', self.env.company.id), + ('code', '=', 'POSS')], limit=1) + + def _default_invoice_journal(self): + """methode to set default invoice journal""" + if self.env.user.branch_id: + invoice_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', self.env.user.branch_id.id)], limit=1) + if not invoice_journal: + invoice_journal = self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id), + ('branch_id', '=', False)], limit=1) + return invoice_journal + return self.env['account.journal'].search( + [('type', '=', 'sale'), + ('company_id', '=', self.env.company.id)], limit=1) + + picking_type_id = fields.Many2one( + 'stock.picking.type', + string='Operation Type', + default=_default_picking_type_id, + required=True, + domain="[('code', '=', 'outgoing'), " + "'|', ('warehouse_id.branch_id', '=', branch_id)," + " ('warehouse_id.branch_id', '=', False)]", + ondelete='restrict') + journal_id = fields.Many2one( + 'account.journal', string='Sales Journal', + domain=[('type', '=', 'sale')], + help="Accounting journal used to post sales entries.", + default=_default_sale_journal, + ondelete='restrict') + invoice_journal_id = fields.Many2one( + 'account.journal', string='Invoice Journal', + domain=[('type', '=', 'sale')], + help="Accounting journal used to create invoices.", + default=_default_invoice_journal) diff --git a/multi_branch_pos/models/branch_pos_orders.py b/multi_branch_pos/models/branch_pos_orders.py new file mode 100644 index 000000000..2ebbdfea0 --- /dev/null +++ b/multi_branch_pos/models/branch_pos_orders.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +"""pos order""" + +import logging +from datetime import timedelta +from functools import partial + +import psycopg2 +import pytz + +from odoo import api, fields, models, tools, _ +from odoo.tools import float_is_zero, float_round +from odoo.exceptions import ValidationError, UserError +from odoo.http import request +from odoo.osv.expression import AND +import base64 + +_logger = logging.getLogger(__name__) + + +class BranchPosOrder(models.Model): + """inherit pos order to add branch field""" + _inherit = "pos.order" + _description = "Point of Sale Orders" + + branch_id = fields.Many2one('res.branch', + compute='_compute_branch', + string='Branch', + store=True) + + @api.depends('session_id') + def _compute_branch(self): + """methode to compute branch""" + for order in self: + order.branch_id = order.session_id.branch_id diff --git a/multi_branch_pos/models/branch_pos_session.py b/multi_branch_pos/models/branch_pos_session.py new file mode 100644 index 000000000..48ffc2f1f --- /dev/null +++ b/multi_branch_pos/models/branch_pos_session.py @@ -0,0 +1,67 @@ +# -*- coding: utf-8 -*- +############################################################################# +# +# Cybrosys Technologies Pvt. Ltd. +# +# Copyright (C) 2022-TODAY Cybrosys Technologies() +# Author: Cybrosys Techno Solutions() +# +# You can modify it under the terms of the GNU LESSER +# GENERAL PUBLIC LICENSE (LGPL v3), Version 3. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details. +# +# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE +# (LGPL v3) along with this program. +# If not, see . +# +############################################################################# + +"""pos session""" + +from collections import defaultdict +from datetime import timedelta + +from odoo import api, fields, models, _ +from odoo.exceptions import UserError, ValidationError +from odoo.tools import float_is_zero, float_compare + + +class PosSession(models.Model): + """inherit pos session to add branch field""" + _inherit = 'pos.session' + + branch_id = fields.Many2one('res.branch', related='config_id.branch_id', + string="Branch", readonly=True) + + def _create_account_move(self): + print("_create_account_move") + """Create account.move and account.move.line records for the session""" + journal = self.config_id.journal_id + # Passing default_journal_id for the calculation of default currency + # of account move + # See _get_default_currency in the account/account_move.py. + account_move = self.env['account.move'].with_context( + default_journal_id=journal.id).create({ + 'journal_id': journal.id, + 'date': fields.Date.context_today(self), + 'ref': self.name, + 'branch_id': self.branch_id.id + }) + self.write({'move_id': account_move.id}) + print(journal.name) + data = {} + data = self._accumulate_amounts(data) + data = self._create_non_reconciliable_move_lines(data) + data = self._create_cash_statement_lines_and_cash_move_lines(data) + data = self._create_invoice_receivable_lines(data) + data = self._create_stock_output_lines(data) + data = self._create_balancing_line(data) + + if account_move.line_ids: + account_move._post() + + data = self._reconcile_account_move_lines(data) diff --git a/multi_branch_pos/report/__init__.py b/multi_branch_pos/report/__init__.py new file mode 100644 index 000000000..641cd28c7 --- /dev/null +++ b/multi_branch_pos/report/__init__.py @@ -0,0 +1 @@ +from . import branch_pos_order_report diff --git a/multi_branch_pos/report/branch_pos_order_report.py b/multi_branch_pos/report/branch_pos_order_report.py new file mode 100644 index 000000000..834054404 --- /dev/null +++ b/multi_branch_pos/report/branch_pos_order_report.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +"""pos reports""" + +import re + +from odoo import api, fields, models +from odoo.exceptions import UserError +from odoo.osv.expression import expression + + +class PosReport(models.Model): + """inherited report.pos.order""" + _inherit = "report.pos.order" + + branch_id = fields.Many2one('res.branch', 'Branch', readonly=True) + + def _select(self): + """override select methode to add branch""" + return super(PosReport, self)._select() + ", s.branch_id as branch_id" + + def _group_by(self): + """override groupby methode""" + return super(PosReport, self)._group_by() + ", s.branch_id" diff --git a/multi_branch_pos/report/pos_order_report.xml b/multi_branch_pos/report/pos_order_report.xml new file mode 100644 index 000000000..6e81dbf42 --- /dev/null +++ b/multi_branch_pos/report/pos_order_report.xml @@ -0,0 +1,14 @@ + + + + pos.order.search.view.inherit + report.pos.order + + + + + + + + + \ No newline at end of file diff --git a/multi_branch_pos/security/pos_security.xml b/multi_branch_pos/security/pos_security.xml new file mode 100644 index 000000000..cede1ede9 --- /dev/null +++ b/multi_branch_pos/security/pos_security.xml @@ -0,0 +1,37 @@ + + + + Branch POS Rule + + + ['|',('branch_id','=',False),('branch_id', 'in', user.branch_ids.ids)] + + + + + + Branch POS Order Rule + + + ['|',('branch_id','=',False),('branch_id', 'in', user.branch_ids.ids)] + + + + + + Branch POS Session Rule + + + ['|',('branch_id','=',False),('branch_id', 'in', user.branch_ids.ids)] + + + + + + Branch POS Report Rule + + + ['|',('branch_id','=',False),('branch_id', 'in', user.branch_ids.ids)] + + + \ No newline at end of file diff --git a/multi_branch_pos/static/description/assets/icons/check.png b/multi_branch_pos/static/description/assets/icons/check.png new file mode 100644 index 000000000..c8e85f51d Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/check.png differ diff --git a/multi_branch_pos/static/description/assets/icons/chevron.png b/multi_branch_pos/static/description/assets/icons/chevron.png new file mode 100644 index 000000000..2089293d6 Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/chevron.png differ diff --git a/multi_branch_pos/static/description/assets/icons/cogs.png b/multi_branch_pos/static/description/assets/icons/cogs.png new file mode 100644 index 000000000..95d0bad62 Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/cogs.png differ diff --git a/multi_branch_pos/static/description/assets/icons/consultation.png b/multi_branch_pos/static/description/assets/icons/consultation.png new file mode 100644 index 000000000..8319d4baa Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/consultation.png differ diff --git a/multi_branch_pos/static/description/assets/icons/ecom-black.png b/multi_branch_pos/static/description/assets/icons/ecom-black.png new file mode 100644 index 000000000..a9385ff13 Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/ecom-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/education-black.png b/multi_branch_pos/static/description/assets/icons/education-black.png new file mode 100644 index 000000000..3eb09b27b Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/education-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/hotel-black.png b/multi_branch_pos/static/description/assets/icons/hotel-black.png new file mode 100644 index 000000000..130f613be Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/hotel-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/license.png b/multi_branch_pos/static/description/assets/icons/license.png new file mode 100644 index 000000000..a5869797e Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/license.png differ diff --git a/multi_branch_pos/static/description/assets/icons/lifebuoy.png b/multi_branch_pos/static/description/assets/icons/lifebuoy.png new file mode 100644 index 000000000..658d56ccc Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/lifebuoy.png differ diff --git a/multi_branch_pos/static/description/assets/icons/logo.png b/multi_branch_pos/static/description/assets/icons/logo.png new file mode 100644 index 000000000..478462d3e Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/logo.png differ diff --git a/multi_branch_pos/static/description/assets/icons/manufacturing-black.png b/multi_branch_pos/static/description/assets/icons/manufacturing-black.png new file mode 100644 index 000000000..697eb0e9f Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/manufacturing-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/pos-black.png b/multi_branch_pos/static/description/assets/icons/pos-black.png new file mode 100644 index 000000000..97c0f90c1 Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/pos-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/puzzle.png b/multi_branch_pos/static/description/assets/icons/puzzle.png new file mode 100644 index 000000000..65cf854e7 Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/puzzle.png differ diff --git a/multi_branch_pos/static/description/assets/icons/restaurant-black.png b/multi_branch_pos/static/description/assets/icons/restaurant-black.png new file mode 100644 index 000000000..4a35eb939 Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/restaurant-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/service-black.png b/multi_branch_pos/static/description/assets/icons/service-black.png new file mode 100644 index 000000000..301ab51cb Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/service-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/trading-black.png b/multi_branch_pos/static/description/assets/icons/trading-black.png new file mode 100644 index 000000000..9398ba2f1 Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/trading-black.png differ diff --git a/multi_branch_pos/static/description/assets/icons/training.png b/multi_branch_pos/static/description/assets/icons/training.png new file mode 100644 index 000000000..884ca024d Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/training.png differ diff --git a/multi_branch_pos/static/description/assets/icons/update.png b/multi_branch_pos/static/description/assets/icons/update.png new file mode 100644 index 000000000..ecbc5a01a Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/update.png differ diff --git a/multi_branch_pos/static/description/assets/icons/user.png b/multi_branch_pos/static/description/assets/icons/user.png new file mode 100644 index 000000000..6ffb23d9f Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/user.png differ diff --git a/multi_branch_pos/static/description/assets/icons/wrench.png b/multi_branch_pos/static/description/assets/icons/wrench.png new file mode 100644 index 000000000..6c04dea0f Binary files /dev/null and b/multi_branch_pos/static/description/assets/icons/wrench.png differ diff --git a/multi_branch_pos/static/description/assets/modules/1.png b/multi_branch_pos/static/description/assets/modules/1.png new file mode 100644 index 000000000..1217263a6 Binary files /dev/null and b/multi_branch_pos/static/description/assets/modules/1.png differ diff --git a/multi_branch_pos/static/description/assets/modules/2.png b/multi_branch_pos/static/description/assets/modules/2.png new file mode 100644 index 000000000..6f604a403 Binary files /dev/null and b/multi_branch_pos/static/description/assets/modules/2.png differ diff --git a/multi_branch_pos/static/description/assets/modules/3.png b/multi_branch_pos/static/description/assets/modules/3.png new file mode 100644 index 000000000..6f28da108 Binary files /dev/null and b/multi_branch_pos/static/description/assets/modules/3.png differ diff --git a/multi_branch_pos/static/description/assets/modules/4.png b/multi_branch_pos/static/description/assets/modules/4.png new file mode 100644 index 000000000..3afc14722 Binary files /dev/null and b/multi_branch_pos/static/description/assets/modules/4.png differ diff --git a/multi_branch_pos/static/description/assets/modules/5.png b/multi_branch_pos/static/description/assets/modules/5.png new file mode 100644 index 000000000..cea66b05f Binary files /dev/null and b/multi_branch_pos/static/description/assets/modules/5.png differ diff --git a/multi_branch_pos/static/description/assets/modules/6.png b/multi_branch_pos/static/description/assets/modules/6.png new file mode 100644 index 000000000..0c9bb377e Binary files /dev/null and b/multi_branch_pos/static/description/assets/modules/6.png differ diff --git a/multi_branch_pos/static/description/assets/screenshots/hero.png b/multi_branch_pos/static/description/assets/screenshots/hero.png new file mode 100644 index 000000000..4bb7136ed Binary files /dev/null and b/multi_branch_pos/static/description/assets/screenshots/hero.png differ diff --git a/multi_branch_pos/static/description/assets/screenshots/pos1.png b/multi_branch_pos/static/description/assets/screenshots/pos1.png new file mode 100644 index 000000000..a8b58e511 Binary files /dev/null and b/multi_branch_pos/static/description/assets/screenshots/pos1.png differ diff --git a/multi_branch_pos/static/description/assets/screenshots/pos2.png b/multi_branch_pos/static/description/assets/screenshots/pos2.png new file mode 100644 index 000000000..c103982dd Binary files /dev/null and b/multi_branch_pos/static/description/assets/screenshots/pos2.png differ diff --git a/multi_branch_pos/static/description/assets/screenshots/pos3.png b/multi_branch_pos/static/description/assets/screenshots/pos3.png new file mode 100644 index 000000000..03e696cc9 Binary files /dev/null and b/multi_branch_pos/static/description/assets/screenshots/pos3.png differ diff --git a/multi_branch_pos/static/description/assets/screenshots/pos4.png b/multi_branch_pos/static/description/assets/screenshots/pos4.png new file mode 100644 index 000000000..76f4da632 Binary files /dev/null and b/multi_branch_pos/static/description/assets/screenshots/pos4.png differ diff --git a/multi_branch_pos/static/description/assets/screenshots/pos5.png b/multi_branch_pos/static/description/assets/screenshots/pos5.png new file mode 100644 index 000000000..e5839d51c Binary files /dev/null and b/multi_branch_pos/static/description/assets/screenshots/pos5.png differ diff --git a/multi_branch_pos/static/description/banner.jpg b/multi_branch_pos/static/description/banner.jpg new file mode 100644 index 000000000..cf950e210 Binary files /dev/null and b/multi_branch_pos/static/description/banner.jpg differ diff --git a/multi_branch_pos/static/description/icon.png b/multi_branch_pos/static/description/icon.png new file mode 100644 index 000000000..b08185583 Binary files /dev/null and b/multi_branch_pos/static/description/icon.png differ diff --git a/multi_branch_pos/static/description/images/checked.png b/multi_branch_pos/static/description/images/checked.png new file mode 100644 index 000000000..e6c63d582 Binary files /dev/null and b/multi_branch_pos/static/description/images/checked.png differ diff --git a/multi_branch_pos/static/description/images/modules/approval_image.png b/multi_branch_pos/static/description/images/modules/approval_image.png new file mode 100644 index 000000000..84fe94e80 Binary files /dev/null and b/multi_branch_pos/static/description/images/modules/approval_image.png differ diff --git a/multi_branch_pos/static/description/images/modules/dynamic_image.png b/multi_branch_pos/static/description/images/modules/dynamic_image.png new file mode 100644 index 000000000..74ce220e6 Binary files /dev/null and b/multi_branch_pos/static/description/images/modules/dynamic_image.png differ diff --git a/multi_branch_pos/static/description/images/modules/mulitple-ref_image.png b/multi_branch_pos/static/description/images/modules/mulitple-ref_image.png new file mode 100644 index 000000000..e0964f1e3 Binary files /dev/null and b/multi_branch_pos/static/description/images/modules/mulitple-ref_image.png differ diff --git a/multi_branch_pos/static/description/images/modules/pos_image.png b/multi_branch_pos/static/description/images/modules/pos_image.png new file mode 100644 index 000000000..c5932894b Binary files /dev/null and b/multi_branch_pos/static/description/images/modules/pos_image.png differ diff --git a/multi_branch_pos/static/description/images/modules/shopify_image.png b/multi_branch_pos/static/description/images/modules/shopify_image.png new file mode 100644 index 000000000..c6d92c16d Binary files /dev/null and b/multi_branch_pos/static/description/images/modules/shopify_image.png differ diff --git a/multi_branch_pos/static/description/index.html b/multi_branch_pos/static/description/index.html new file mode 100644 index 000000000..43485b3bc --- /dev/null +++ b/multi_branch_pos/static/description/index.html @@ -0,0 +1,644 @@ +
+
+
+
+ +
+
+
+ Community +
+
+ Enterprise +
+ +
+
+
+
+ +
+
+
+

+ Multi Branch Operations Setup for Odoo POS

+

+ Multi Branch Operations Setup for Odoo POS +

+ +
+
+ + +
+
+

+ Overview +

+
+ +
+

+ This module helps to control multiple branches of a single + company on POS.Here a branch can be set for each POS.After + configuring a branch for a POS, then thereafter all the + operations related to the particular POS will be related with + the branch. This module requires the base Branch module.After + installing the base Branch module and POS Branch addon, the user + can implement the branch concept on Odoo POS. +

+ +
+
+ +
+
+

+ Features +

+
+ +
+
+ +
+
+

+ + Branch for POS.

+ +
+
+ +
+
+ +
+
+

+ + Branch for POS Orders.

+ +
+
+ +
+
+ +
+
+

+ + Branch for POS Session .

+ +
+
+ +
+
+ +
+
+

+ + Branch on Receipt.

+ +
+
+ +
+
+ +
+
+

+ + Branch Wise Report.

+ +
+
+ +
+ +
+
+

+ Screenshots +

+
+ +
+

+ Branch for POS

+

+ User can create POS and set a branch for the POS. +

+ +
+ +
+

+ Branch for POS Sessions

+

+ Branch is added for POS Sessions.This will be updated based on the branch set for POS. +

+ +
+ +
+

+ Branch for POS Order

+

+ For every POS order created Branch is registered.This will be the same branch set for the POS. +

+ +
+ +
+

+ Branch on Receipt

+

+ Branch is shown in the Receipt +

+ +
+ +
+

+ Branch wise report

+

+ Branch wise POS Order report can be achieved. +

+ +
+
+ + + +
+
+

Suggested Products

+
+ + +
+
+ + + +
+
+
+

Our Services

+
+
+ +
+
+ +
+
+ Odoo + Customization
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Support
+
+ + +
+
+ +
+
+ Hire + Odoo + Developer
+
+ +
+
+ +
+
+ Odoo + Integration
+
+ +
+
+ +
+
+ Odoo + Migration
+
+ + +
+
+ +
+
+ Odoo + Consultancy
+
+ +
+
+ +
+
+ Odoo + Implementation
+
+ +
+
+ +
+
+ Odoo + Licensing Consultancy
+
+
+
+ + + +
+
+
+

Our Industries

+
+
+ +
+
+ +
+ Trading +
+

+ Easily procure + and + sell your products

+
+
+ +
+
+ +
+ POS +
+

+ Easy + configuration + and convivial experience

+
+
+ +
+
+ +
+ Education +
+

+ A platform for + educational management

+
+
+ +
+
+ +
+ Manufacturing +
+

+ Plan, track and + schedule your operations

+
+
+ +
+
+ +
+ E-commerce & Website +
+

+ Mobile + friendly, + awe-inspiring product pages

+
+
+ +
+
+ +
+ Service Management +
+

+ Keep track of + services and invoice

+
+
+ +
+
+ +
+ Restaurant +
+

+ Run your bar or + restaurant methodically

+
+
+ +
+
+ +
+ Hotel Management +
+

+ An + all-inclusive + hotel management application

+
+
+ +
+
+ + + + + +
+
+
+

Need Help?

+
+
+
+ + +
+ +
+ +
+ +
+ WhatsApp +
+
+
+ +
+ +
+ +
+
+ +
+ +
+ +
+
+ +
+
+
+ + +
\ No newline at end of file diff --git a/multi_branch_pos/static/src/js/branch.js b/multi_branch_pos/static/src/js/branch.js new file mode 100644 index 000000000..e42bc5a43 --- /dev/null +++ b/multi_branch_pos/static/src/js/branch.js @@ -0,0 +1,9 @@ + +odoo.define('multi_branch_pos.PosMultiBranch', function (require) { +"use strict"; + +var models = require('point_of_sale.models'); + +models.load_fields('pos.config', ['branch_name', 'email', 'phone', 'website']); + +}); \ No newline at end of file diff --git a/multi_branch_pos/static/src/xml/branch.xml b/multi_branch_pos/static/src/xml/branch.xml new file mode 100644 index 000000000..63e45e6bc --- /dev/null +++ b/multi_branch_pos/static/src/xml/branch.xml @@ -0,0 +1,56 @@ + + + + +
+ +
+
+ +
Branch:
+
+ +
Tel:
+
+ + +
Tel:
+
+
+ +
:
+
+ +
+
+ + +
+
+
+ +
+
+ + +
+
+
+ + + + +
+
+ +
+
--------------------------------
+
Served by
+
+
+
+

+
+ +
+
\ No newline at end of file diff --git a/multi_branch_pos/views/branch_pos_config_views.xml b/multi_branch_pos/views/branch_pos_config_views.xml new file mode 100644 index 000000000..7df5bd5c9 --- /dev/null +++ b/multi_branch_pos/views/branch_pos_config_views.xml @@ -0,0 +1,60 @@ + + + + + pos.config.inherit + pos.config + + +
+
+
+
+
+
+ + + + + + + + + +
+
+ + + view_pos_config_tree_inherit + pos.config + + + + + + + + + + view_pos_config_search.inherit + pos.config + + + + + + + +
+
\ No newline at end of file diff --git a/multi_branch_pos/views/branch_pos_orders_views.xml b/multi_branch_pos/views/branch_pos_orders_views.xml new file mode 100644 index 000000000..8780e632d --- /dev/null +++ b/multi_branch_pos/views/branch_pos_orders_views.xml @@ -0,0 +1,26 @@ + + + + + pos.order.inherit + pos.order + + + + + + + + + + view_pos_order_filter.inherit + pos.order + + + + + + + + + \ No newline at end of file diff --git a/multi_branch_pos/views/branch_pos_session_views.xml b/multi_branch_pos/views/branch_pos_session_views.xml new file mode 100644 index 000000000..29ef54f71 --- /dev/null +++ b/multi_branch_pos/views/branch_pos_session_views.xml @@ -0,0 +1,16 @@ + + + + + pos.session.inherit + pos.session + + + + + + + + + + \ No newline at end of file diff --git a/multi_branch_pos/views/pos_assets.xml b/multi_branch_pos/views/pos_assets.xml new file mode 100644 index 000000000..a2fb2f80a --- /dev/null +++ b/multi_branch_pos/views/pos_assets.xml @@ -0,0 +1,10 @@ + + + +