migrate some modules
|
|
@ -0,0 +1,28 @@
|
|||
Odoo Proprietary License v1.0
|
||||
|
||||
This software and associated files (the "Software") may only be used (executed,
|
||||
modified, executed after modifications) if you have purchased a valid license
|
||||
from the authors, typically via Odoo Apps, or if you have received a written
|
||||
agreement from the authors of the Software (see the COPYRIGHT file).
|
||||
|
||||
You may develop Odoo modules that use the Software as a library (typically
|
||||
by depending on it, importing it and using its resources), but without copying
|
||||
any source code or material from the Software. You may distribute those
|
||||
modules under the license of your choice, provided that this license is
|
||||
compatible with the terms of the Odoo Proprietary License (For example:
|
||||
LGPL, MIT, or proprietary licenses similar to this one).
|
||||
|
||||
It is forbidden to publish, distribute, sublicense, or sell copies of the Software
|
||||
or modified copies of the Software.
|
||||
|
||||
The above copyright notice and this permission notice must be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
Version 14.0.0.1 : (23/10/20)
|
||||
- Update _assign_picking() and _create_account_move_line() methods as per base.
|
||||
|
||||
14.0.0.3==> added abstract_web_client js according to v14.
|
||||
|
||||
=> 14.0.0.4 : Add language translate with index.
|
||||
|
||||
|
||||
date 03/05/21
|
||||
version 14.0.0.5
|
||||
issue solve:-
|
||||
- invoice and bill genenrated in sinlge click
|
||||
|
||||
=> 14.0.0.9 : Add French, Spanish , Arabic and Dutch translation in module also improved an index.
|
||||
|
||||
|
||||
date 02/09/21
|
||||
version 14.0.1.0
|
||||
issue solve:-
|
||||
- account payment register wizard not show branch field.
|
||||
|
||||
date 09/09/21
|
||||
version 14.0.2.0
|
||||
issue solve:-
|
||||
- show branch field in sale , purchase ,invoice bill and payment tree view
|
||||
|
||||
date 13/09/21
|
||||
version 14.0.3.0
|
||||
issue solve:-
|
||||
1. From demo user->In sale rights, I give User: Own Documents Only ->but it shows the sale order of all the users(when I give branch in sale order)
|
||||
|
||||
2. From demo user, ->change branch from header ->in pos, when I open shop it generates traceback
|
||||
|
||||
3. from demo user->in Invoice -> It shows all the invoices of all the branches.
|
||||
|
||||
date 27/09/21
|
||||
version 14.0.4.0
|
||||
issue solve:-
|
||||
1.) . Sales -> Quotation / Orders -> On changing Branch from dropdown header it shows older branch records until refresh the page. Not refreshing records with changing branch.
|
||||
|
||||
|
||||
14.0.4.1 (1-10-21) : Pass branch in account move correct, two view name same for different object changed it and fixed.
|
||||
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import models
|
||||
from . import reports
|
||||
from . import wizard
|
||||
from . import controllers
|
||||
from .hooks import post_init_hook
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,129 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
{
|
||||
'name': 'Multiple Branch Unit Operation Setup for All Applications Odoo',
|
||||
'version': '18.0.1.0.0',
|
||||
'category': 'Sales',
|
||||
'summary': 'Multiple Branch Management Multi Branch app Multiple Unit multiple Operating unit sales branch Sales Purchase branch Invoicing branch billing Voucher branch warehouse branch Payment branch Accounting Reports for single company Multi Branches multi company',
|
||||
"description": """
|
||||
Multiple Unit operation management for single company Multiple Branch management for single company
|
||||
multiple operation for single company branching company in odoo multiple store multiple company in odoo
|
||||
Branch for POS Branch for Sales Branch for Purchase Branch for all Branch for Accounting Branch for invoicing Branch for Payment order Branch for point of sales Branch for voucher
|
||||
Branch for All Accounting reports Branch Accounting filter Branch for warehouse branch for sale stock branch for location
|
||||
Unit for POS Unit for Sales Unit for Purchase Unit for all Unit for Accounting Unit for invoicing Unit for Payment order Unit for point of sales Unit for voucher Unit
|
||||
unit All Accounting reports Unit Accounting filter branch unit for warehouse branch unit for sale stock branch unit for location
|
||||
Unit Operation for POS Unit Operation for Sales Unit operation for Purchase Unit operation for all Unit operation for Accounting Unit Operation for invoicing Unit operation for Payment order Unit operation for point of sales Unit operation for voucher Unit operation for All Accounting reports Unit operation Accounting filter.
|
||||
Branch Operation for POS Branch Operation for Sales Branch operation for Purchase Branch operation for all Branch operation for Accounting Branch Operation for invoicing Branch operation for Payment order Branch operation for point of sales Branch operation for voucher Branch operation for All Accounting reports Branch operation Accounting filter.
|
||||
Odoo pos multi branch POS odoo point of sale multi branch point of sales
|
||||
odoo point of sales multi branch on POS
|
||||
Odoo pos multiple branch POS odoo point of sale multiple branch point of sales
|
||||
odoo point of sales multiple branch on POS
|
||||
Odoo pos multiple-branch POS odoo point of sale multiple-branch point of sales
|
||||
odoo point of sales multiple-branch on POS
|
||||
odoo Multiple Unit operation management for single company Multiple Branch management for single company
|
||||
odoo multiple operation for single company. branching company in odoo multiple store multiple company in odoo
|
||||
odoo Branch for POS Branch for Sales Branch for Purchase Branch for all Branch for Accounting Branch for invoicing Branch for Payment order Branch for point of sales Branch for voucher
|
||||
odoo Branch for All Accounting reports Branch Accounting filter Branch for warehouse branch for sale stock branch for location
|
||||
odoo Unit for POS Unit for Sales Unit for Purchase Unit for all Unit for Accounting Unit for invoicing Unit for Payment order
|
||||
odoo Unit for point of sales Unit for voucher Unit for All Accounting reports Unit Accounting filter
|
||||
odoo branch unit for warehouse branch unit for sale stock branch unit for location
|
||||
odoo Unit Operation for POS Unit Operation for Sales Unit operation for Purchase Unit operation for all Unit operation for Accounting
|
||||
odoo Unit Operation for invoicing Unit operation for Payment order Unit operation for point of sales Unit operation for voucher Unit operation for All Accounting reports
|
||||
odoo Unit operation Accounting filter Branch Operation for POS Branch Operation for Sales
|
||||
odoo Branch operation for Purchase Branch operation for all Branch operation for Accounting Branch Operation for invoicing
|
||||
odoo Branch operation for Payment order Branch operation for point of sales Branch operation for voucher Branch operation for All Accounting reports Branch operation Accounting filter.
|
||||
odoo branch helpdesk and support branch support and helpdesk
|
||||
odoo helpdesk branch helpdesk unit helpdek multiple unit helpdesk operation unit
|
||||
odoo branch crm odoo crm branch crm operating unit crm unit operation management crm multiple unit operating unit crm
|
||||
odoo branch Subscription branch contract Subscription branch management
|
||||
odoo contract branch management operating unit Subscription operating unit contract
|
||||
odoo Subscription unit management contract unit management Subscription operating unit management
|
||||
odoo contract operating unit management operating unit for company multi branch management
|
||||
odoo multi branch application multi operation unit application multi branch odoo multi branch
|
||||
odoo all in one multi branch application multi branch unit operation multi unit operation branch management
|
||||
odoo multi branches management application multi operation management operating Unit for POS operating Unit for Sales
|
||||
odoo operating Units for Purchase operating Unit for all operating Unit for Accounting operating Unit for invoicing
|
||||
odoo operating Unit for Payment order operating Unit for point of sales operating Unit for voucher operating Unit for All Accounting reports operating Unit Accounting filter.
|
||||
odoo Operating unit for picking operating unit for warehouse operating unit for sale stock operating unit for location
|
||||
odoo operating-Unit Operation for POS operating-Unit Operation for Sales operating-Unit operation for Purchase operating-Unit operation for all
|
||||
odoo operating-Unit operation for Accounting operating-Unit Operation for invoicing operating-Unit operation for Payment order operating-Unit operation for point of sales
|
||||
odoo operating-Unit operation for voucher operating-Unit operation for All Accounting reports operating-Unit operation Accounting filter.
|
||||
odoo multi branches management odoo branches management odoo multiple branches management on odoo branchs mananegement
|
||||
odoo many branches for single company odoo
|
||||
|
||||
branch helpdesk and support
|
||||
branch support and helpdesk
|
||||
helpdesk branch
|
||||
helpdesk unit
|
||||
helpdek multiple unit
|
||||
helpdesk operation unit
|
||||
branch crm
|
||||
MultiBranch
|
||||
multi company
|
||||
crm branch
|
||||
crm operating unit
|
||||
crm unit operation management
|
||||
crm multiple unit
|
||||
operating unit crm
|
||||
branch Subscription
|
||||
branch contract
|
||||
Subscription branch management
|
||||
contract branch management
|
||||
operating unit Subscription
|
||||
operating unit contract
|
||||
Subscription unit management
|
||||
contract unit management
|
||||
Subscription operating unit management
|
||||
contract operating unit management
|
||||
|
||||
operating unit for company.
|
||||
multi branch management
|
||||
multi branch application
|
||||
multi operation unit application multi branch odoo multi branch
|
||||
all in one multi branch application multi branch unit operation multi unit operation branch management
|
||||
odoo multi branches management application multi operation management
|
||||
|
||||
operating Unit for POS,operating Unit for Sales,operating Unit for Purchase,operating Unit for all,operating Unit for Accounting,operating Unit for invoicing,operating Unit for Payment order,operating Unit for point of sales,operating Unit for voucher,operating Unit for All Accounting reports,operating Unit Accounting filter. Operating unit for picking, operating unit for warehouse, operating unit for sale stock, operating unit for location
|
||||
operating-Unit Operation for POS,operating-Unit Operation for Sales,operating-Unit operation for Purchase,operating-Unit operation for all, operating-Unit operation for Accounting,operating-Unit Operation for invoicing,operating-Unit operation for Payment order,operating-Unit operation for point of sales,operating-Unit operation for voucher,operating-Unit operation for All Accounting reports,operating-Unit operation Accounting filter.
|
||||
""",
|
||||
'author': 'BrowseInfo',
|
||||
'website': 'https://www.browseinfo.in',
|
||||
"price": 149.00,
|
||||
"currency": 'EUR',
|
||||
'depends': ['base', 'sale_management', 'purchase', 'stock', 'account', 'purchase_stock','web'],
|
||||
'data': [
|
||||
'security/branch_security.xml',
|
||||
'security/multi_branch.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'views/res_branch_view.xml',
|
||||
'views/inherited_res_users.xml',
|
||||
'views/inherited_sale_order.xml',
|
||||
'views/inherited_stock_picking.xml',
|
||||
'views/inherited_stock_move.xml',
|
||||
'views/inherited_account_invoice.xml',
|
||||
'views/inherited_purchase_order.xml',
|
||||
'views/inherited_stock_warehouse.xml',
|
||||
'views/inherited_stock_location.xml',
|
||||
'views/inherited_account_bank_statement.xml',
|
||||
'wizard/inherited_account_payment.xml',
|
||||
'views/inherited_stock_inventory.xml',
|
||||
'views/inherited_product.xml',
|
||||
'views/inherited_partner.xml',
|
||||
'views/branch_template.xml',
|
||||
],
|
||||
'assets': {
|
||||
'web.assets_backend': [
|
||||
'branch/static/src/js/session.js',
|
||||
'branch/static/src/js/abstract_web_client.js',
|
||||
'branch/static/src/js/default_branch.js',
|
||||
'branch/static/src/xml/branch.xml',
|
||||
],
|
||||
},
|
||||
'installable': True,
|
||||
'auto_install': False,
|
||||
'live_test_url':'https://youtu.be/hi1b8kH5Z94',
|
||||
"images":['static/description/Banner.png'],
|
||||
'post_init_hook': 'post_init_hook',
|
||||
}
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import main
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import http, _
|
||||
from odoo.addons.portal.controllers.portal import CustomerPortal, pager as portal_pager
|
||||
from odoo.http import request
|
||||
|
||||
class SetBranch(http.Controller):
|
||||
|
||||
@http.route('/set_brnach', type='json', auth="public", methods=['POST'], website=True)
|
||||
def custom_hours(self, BranchID, **post):
|
||||
user_id = request.env['res.users'].sudo().search([('id','=',request.env.user.id)])
|
||||
user_id.branch_id = BranchID
|
||||
return
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import SUPERUSER_ID
|
||||
from odoo import api
|
||||
|
||||
|
||||
def post_init_hook(cr, registry):
|
||||
"""
|
||||
website menu hide
|
||||
"""
|
||||
env = api.Environment(cr, SUPERUSER_ID, {})
|
||||
cr.execute("""
|
||||
update ir_model_data set noupdate=False where
|
||||
model ='ir.rule' """)
|
||||
|
|
@ -0,0 +1,273 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * branch
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-08 13:27+0000\n"
|
||||
"PO-Revision-Date: 2021-02-08 13:27+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__address
|
||||
msgid "Address"
|
||||
msgstr "عنوان"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "All the account entries lines must be processed in order to close the statement."
|
||||
msgstr "يجب معالجة جميع سطور إدخالات الحساب لإغلاق البيان."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
|
||||
msgid "Allowed Branch"
|
||||
msgstr "الفرع المسموح به"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement
|
||||
msgid "Bank Statement"
|
||||
msgstr "كشف حساب بنكى"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "خط كشف الحساب المصرفي"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.actions.act_window,name:branch.branch_action_res_branch
|
||||
#: model:ir.model,name:branch.model_res_branch
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
|
||||
#: model:ir.module.category,name:branch.module_branch_management
|
||||
#: model:ir.ui.menu,name:branch.branch_menu_res_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
|
||||
msgid "Branch"
|
||||
msgstr "فرع شجرة"
|
||||
|
||||
#. module: branch
|
||||
#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
|
||||
msgid "Click here to create a new branch."
|
||||
msgstr "انقر هنا لإنشاء فرع جديد."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
|
||||
msgid "Company"
|
||||
msgstr "شركة"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_stock_location.py:0
|
||||
#, python-format
|
||||
msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
|
||||
msgstr "خطأ في التكوين يجب تحديد نفس الفرع في الموقع كما تم تعيينه في تكوين المستودع."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr "اتصل"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "انشأ من قبل"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
|
||||
msgid "Created on"
|
||||
msgstr "تم إنشاؤها على"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "اسم العرض"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Dropdown menu"
|
||||
msgstr "القائمة المنسدلة"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_ir_http
|
||||
msgid "HTTP Routing"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_inventory
|
||||
msgid "Inventory"
|
||||
msgstr "المخزون"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_location
|
||||
msgid "Inventory Locations"
|
||||
msgstr "مواقع الجرد"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "إحصائيات الفواتير"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move
|
||||
msgid "Journal Entries"
|
||||
msgstr "إدخالات دفتر اليومية"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "عنصر المجلة"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "تاريخ آخر تعديل"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "آخر تحديث بواسطة"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "آخر تحديث في"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user_manager
|
||||
msgid "Manager"
|
||||
msgstr "مدير"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_multi_branch
|
||||
msgid "Multi Branches"
|
||||
msgstr "متعدد الفروع"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__name
|
||||
msgid "Name"
|
||||
msgstr "اسم"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_payment
|
||||
msgid "Payments"
|
||||
msgstr "المدفوعات"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking_type
|
||||
msgid "Picking Type"
|
||||
msgstr "نوع الانتقاء"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_product_template
|
||||
msgid "Product Template"
|
||||
msgstr "نموذج المنتج"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order
|
||||
msgid "Purchase Order"
|
||||
msgstr "أمر شراء"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order_line
|
||||
msgid "Purchase Order Line"
|
||||
msgstr "خط طلب الشراء"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_report
|
||||
msgid "Purchase Report"
|
||||
msgstr "تقرير الشراء"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_advance_payment_inv
|
||||
msgid "Sales Advance Payment Invoice"
|
||||
msgstr "فاتورة دفع مقدم المبيعات"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_report
|
||||
msgid "Sales Analysis Report"
|
||||
msgstr "تقرير تحليل المبيعات"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_order
|
||||
msgid "Sales Order"
|
||||
msgstr "طلب المبيعات"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "Statement %s confirmed, journal items were created."
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "نقل الأسهم"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Switch to this branch"
|
||||
msgstr "قم بالتبديل إلى هذا الفرع"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
|
||||
msgid "Telephone No"
|
||||
msgstr "الهاتف لا"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "نقل"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user
|
||||
msgid "User"
|
||||
msgstr "المستعمل"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "المستخدمين"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_warehouse
|
||||
msgid "Warehouse"
|
||||
msgstr "مستودع"
|
||||
|
|
@ -0,0 +1,273 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * branch
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-09 05:28+0000\n"
|
||||
"PO-Revision-Date: 2021-02-09 05:28+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__address
|
||||
msgid "Address"
|
||||
msgstr "Habla a"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "All the account entries lines must be processed in order to close the statement."
|
||||
msgstr "Todas las líneas de asientos de cuenta deben procesarse para cerrar el estado de cuenta."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
|
||||
msgid "Allowed Branch"
|
||||
msgstr "Rama permitida"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement
|
||||
msgid "Bank Statement"
|
||||
msgstr "Extracto de cuenta"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "Línea de extracto bancario"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.actions.act_window,name:branch.branch_action_res_branch
|
||||
#: model:ir.model,name:branch.model_res_branch
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
|
||||
#: model:ir.module.category,name:branch.module_branch_management
|
||||
#: model:ir.ui.menu,name:branch.branch_menu_res_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
|
||||
msgid "Branch"
|
||||
msgstr "Rama"
|
||||
|
||||
#. module: branch
|
||||
#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
|
||||
msgid "Click here to create a new branch."
|
||||
msgstr "Haga clic aquí para crear una nueva rama."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
|
||||
msgid "Company"
|
||||
msgstr "Empresa"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_stock_location.py:0
|
||||
#, python-format
|
||||
msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
|
||||
msgstr "Error de configuración Debe seleccionar la misma sucursal en una ubicación asignada en una configuración de almacén."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr "Contacto"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Creado por"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Creado en"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Nombre para mostrar"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menú desplegable"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_ir_http
|
||||
msgid "HTTP Routing"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_inventory
|
||||
msgid "Inventory"
|
||||
msgstr "Inventario"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_location
|
||||
msgid "Inventory Locations"
|
||||
msgstr "Ubicaciones de inventario"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "Estadísticas de facturas"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move
|
||||
msgid "Journal Entries"
|
||||
msgstr "Entradas de diario"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Artículo de diario"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Última modificación el"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Actualizado por última vez por"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Ultima actualización en"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user_manager
|
||||
msgid "Manager"
|
||||
msgstr "Gerente"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_multi_branch
|
||||
msgid "Multi Branches"
|
||||
msgstr "Varias ramas"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__name
|
||||
msgid "Name"
|
||||
msgstr "Nombre"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_payment
|
||||
msgid "Payments"
|
||||
msgstr "Pagos"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking_type
|
||||
msgid "Picking Type"
|
||||
msgstr "Tipo de selección"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_product_template
|
||||
msgid "Product Template"
|
||||
msgstr "Plantilla de producto"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order
|
||||
msgid "Purchase Order"
|
||||
msgstr "Orden de compra"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order_line
|
||||
msgid "Purchase Order Line"
|
||||
msgstr "Línea de orden de compra"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_report
|
||||
msgid "Purchase Report"
|
||||
msgstr "Informe de compra"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_advance_payment_inv
|
||||
msgid "Sales Advance Payment Invoice"
|
||||
msgstr "Factura de anticipo de ventas"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_report
|
||||
msgid "Sales Analysis Report"
|
||||
msgstr "Informe de análisis de ventas"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_order
|
||||
msgid "Sales Order"
|
||||
msgstr "Órdenes de venta"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "Statement confirmed, journal items were created."
|
||||
msgstr "Declaración confirmada, se crearon elementos del diario."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Movimiento de stock"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Switch to this branch"
|
||||
msgstr "Cambiar a esta rama"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
|
||||
msgid "Telephone No"
|
||||
msgstr "Teléfono no"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "Transferir"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user
|
||||
msgid "User"
|
||||
msgstr "Usuaria"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Usuarias"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_warehouse
|
||||
msgid "Warehouse"
|
||||
msgstr "Almacén"
|
||||
|
|
@ -0,0 +1,273 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * branch
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-09 06:11+0000\n"
|
||||
"PO-Revision-Date: 2021-02-09 06:11+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__address
|
||||
msgid "Address"
|
||||
msgstr "Adresse"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "All the account entries lines must be processed in order to close the statement."
|
||||
msgstr "Toutes les lignes d'écritures de compte doivent être traitées afin de fermer le relevé."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
|
||||
msgid "Allowed Branch"
|
||||
msgstr "Succursale autorisée"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement
|
||||
msgid "Bank Statement"
|
||||
msgstr "Relevé bancaire"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "Ligne de relevé bancaire"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.actions.act_window,name:branch.branch_action_res_branch
|
||||
#: model:ir.model,name:branch.model_res_branch
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
|
||||
#: model:ir.module.category,name:branch.module_branch_management
|
||||
#: model:ir.ui.menu,name:branch.branch_menu_res_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
|
||||
msgid "Branch"
|
||||
msgstr "Branche"
|
||||
|
||||
#. module: branch
|
||||
#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
|
||||
msgid "Click here to create a new branch."
|
||||
msgstr "Cliquez ici pour créer une nouvelle branche."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
|
||||
msgid "Company"
|
||||
msgstr "Entreprise"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_stock_location.py:0
|
||||
#, python-format
|
||||
msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
|
||||
msgstr "Erreur de configuration Vous devez sélectionner la même succursale sur un emplacement comme affectée dans une configuration d'entrepôt."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Créé par"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Créé sur"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Afficher un nom"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Dropdown menu"
|
||||
msgstr "Menu déroulant"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_ir_http
|
||||
msgid "HTTP Routing"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_inventory
|
||||
msgid "Inventory"
|
||||
msgstr "Inventaire"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_location
|
||||
msgid "Inventory Locations"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "Statistiques des factures"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move
|
||||
msgid "Journal Entries"
|
||||
msgstr "Entrées de journal"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Article de journal"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Dernière modification le"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Dernière mise à jour par"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Dernière mise à jour le"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user_manager
|
||||
msgid "Manager"
|
||||
msgstr "Directrice"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_multi_branch
|
||||
msgid "Multi Branches"
|
||||
msgstr "Branches multiples"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__name
|
||||
msgid "Name"
|
||||
msgstr "Nom"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_payment
|
||||
msgid "Payments"
|
||||
msgstr "Paiements"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking_type
|
||||
msgid "Picking Type"
|
||||
msgstr "Type de prélèvement"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_product_template
|
||||
msgid "Product Template"
|
||||
msgstr "Modèle de produit"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order
|
||||
msgid "Purchase Order"
|
||||
msgstr "Bon de commande"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order_line
|
||||
msgid "Purchase Order Line"
|
||||
msgstr "Ligne de commande d'achat"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_report
|
||||
msgid "Purchase Report"
|
||||
msgstr "Rapport d'achat"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_advance_payment_inv
|
||||
msgid "Sales Advance Payment Invoice"
|
||||
msgstr "Facture de paiement anticipé des ventes"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_report
|
||||
msgid "Sales Analysis Report"
|
||||
msgstr "Rapport d'analyse des ventes"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_order
|
||||
msgid "Sales Order"
|
||||
msgstr "Commande client"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "Statement confirmed, journal items were created."
|
||||
msgstr "Relevé confirmé, des éléments de journal ont été créés."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Déplacement de stock"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Switch to this branch"
|
||||
msgstr "Passer à cette branche"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
|
||||
msgid "Telephone No"
|
||||
msgstr "N ° de téléphone"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "Transfert"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user
|
||||
msgid "User"
|
||||
msgstr "Utilisateur"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Utilisateurs"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_warehouse
|
||||
msgid "Warehouse"
|
||||
msgstr "Entrepôt"
|
||||
|
|
@ -0,0 +1,273 @@
|
|||
# Translation of Odoo Server.
|
||||
# This file contains the translation of the following modules:
|
||||
# * branch
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: Odoo Server 13.0\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2021-02-09 06:37+0000\n"
|
||||
"PO-Revision-Date: 2021-02-09 06:37+0000\n"
|
||||
"Last-Translator: \n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: \n"
|
||||
"Plural-Forms: \n"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__address
|
||||
msgid "Address"
|
||||
msgstr "Adres"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "All the account entries lines must be processed in order to close the statement."
|
||||
msgstr "Alle regels voor rekeningboekingen moeten worden verwerkt om het overzicht af te sluiten."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_ids
|
||||
msgid "Allowed Branch"
|
||||
msgstr "Toegestane tak"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement
|
||||
msgid "Bank Statement"
|
||||
msgstr "Bankafschrift"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_bank_statement_line
|
||||
msgid "Bank Statement Line"
|
||||
msgstr "Bankafschriftregel"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.actions.act_window,name:branch.branch_action_res_branch
|
||||
#: model:ir.model,name:branch.model_res_branch
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_bank_statement_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_invoice_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_move_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_account_payment__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_product__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_product_template__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_order_line__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_purchase_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_partner__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_res_users__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_order__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_sale_report__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_inventory__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_location__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_move__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_picking_type__branch_id
|
||||
#: model:ir.model.fields,field_description:branch.field_stock_warehouse__branch_id
|
||||
#: model:ir.module.category,name:branch.module_branch_management
|
||||
#: model:ir.ui.menu,name:branch.branch_menu_res_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_form
|
||||
#: model_terms:ir.ui.view,arch_db:branch.branch_res_branch_view_tree
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_move_line_order_filter_inherit_branch11
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_order_form_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_purchase_order_filter_inherit_branch
|
||||
#: model_terms:ir.ui.view,arch_db:branch.view_sales_order_filter_inherit_branch
|
||||
msgid "Branch"
|
||||
msgstr "Afdeling"
|
||||
|
||||
#. module: branch
|
||||
#: model_terms:ir.actions.act_window,help:branch.branch_action_res_branch
|
||||
msgid "Click here to create a new branch."
|
||||
msgstr "Klik hier om een nieuwe branch aan te maken."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__company_id
|
||||
msgid "Company"
|
||||
msgstr "Bedrijf"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_stock_location.py:0
|
||||
#, python-format
|
||||
msgid "Configuration error You must select same branch on a location as assigned on a warehouse configuration."
|
||||
msgstr "Configuratiefout U moet hetzelfde filiaal op een locatie selecteren als toegewezen aan een magazijnconfiguratie."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_partner
|
||||
msgid "Contact"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_uid
|
||||
msgid "Created by"
|
||||
msgstr "Gemaakt door"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__create_date
|
||||
msgid "Created on"
|
||||
msgstr "Gemaakt op"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__display_name
|
||||
msgid "Display Name"
|
||||
msgstr "Weergavenaam"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Dropdown menu"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_ir_http
|
||||
msgid "HTTP Routing"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__id
|
||||
msgid "ID"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_inventory
|
||||
msgid "Inventory"
|
||||
msgstr "Voorraad"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_location
|
||||
msgid "Inventory Locations"
|
||||
msgstr "Voorraadlocaties"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_invoice_report
|
||||
msgid "Invoices Statistics"
|
||||
msgstr "Facturenstatistieken"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move
|
||||
msgid "Journal Entries"
|
||||
msgstr "Journaalboekingen"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_move_line
|
||||
msgid "Journal Item"
|
||||
msgstr "Dagboekitem"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch____last_update
|
||||
msgid "Last Modified on"
|
||||
msgstr "Laatst gewijzigd op"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_uid
|
||||
msgid "Last Updated by"
|
||||
msgstr "Laatst bijgewerkt door"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__write_date
|
||||
msgid "Last Updated on"
|
||||
msgstr "Laatst geupdate op"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user_manager
|
||||
msgid "Manager"
|
||||
msgstr ""
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_multi_branch
|
||||
msgid "Multi Branches"
|
||||
msgstr "Meerdere takken"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__name
|
||||
msgid "Name"
|
||||
msgstr "Naam"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_account_payment
|
||||
msgid "Payments"
|
||||
msgstr "Betalingen"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking_type
|
||||
msgid "Picking Type"
|
||||
msgstr "Type plukken"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_product_template
|
||||
msgid "Product Template"
|
||||
msgstr "Product sjabloon"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order
|
||||
msgid "Purchase Order"
|
||||
msgstr "Bestelling"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_order_line
|
||||
msgid "Purchase Order Line"
|
||||
msgstr "Inkooporderregel"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_purchase_report
|
||||
msgid "Purchase Report"
|
||||
msgstr "Aankooprapport"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_advance_payment_inv
|
||||
msgid "Sales Advance Payment Invoice"
|
||||
msgstr "Verkoopvooruitbetalingsfactuur"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_report
|
||||
msgid "Sales Analysis Report"
|
||||
msgstr "Verkoopanalyserapport"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_sale_order
|
||||
msgid "Sales Order"
|
||||
msgstr "Verkooporder"
|
||||
|
||||
#. module: branch
|
||||
#: code:addons/branch/models/inherited_account_bank_statement.py:0
|
||||
#, python-format
|
||||
msgid "Statement confirmed, journal items were created."
|
||||
msgstr "Afschrift bevestigd, journaalposten zijn gemaakt."
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_move
|
||||
msgid "Stock Move"
|
||||
msgstr "Voorraad verplaatsen"
|
||||
|
||||
#. module: branch
|
||||
#. openerp-web
|
||||
#: code:addons/branch/static/src/xml/branch.xml:0
|
||||
#, python-format
|
||||
msgid "Switch to this branch"
|
||||
msgstr "Schakel over naar deze tak"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model.fields,field_description:branch.field_res_branch__telephone
|
||||
msgid "Telephone No"
|
||||
msgstr "Telefoon Nee"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_picking
|
||||
msgid "Transfer"
|
||||
msgstr "Overdracht"
|
||||
|
||||
#. module: branch
|
||||
#: model:res.groups,name:branch.group_branch_user
|
||||
msgid "User"
|
||||
msgstr "Gebruiker"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_res_users
|
||||
msgid "Users"
|
||||
msgstr "Gebruikers"
|
||||
|
||||
#. module: branch
|
||||
#: model:ir.model,name:branch.model_stock_warehouse
|
||||
msgid "Warehouse"
|
||||
msgstr "Magazijn"
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import branch
|
||||
from . import inherited_res_users
|
||||
from . import inherited_sale_order
|
||||
from . import inherited_stock_move
|
||||
from . import inherited_stock_picking
|
||||
from . import inherited_account_move
|
||||
from . import inherited_account_payment
|
||||
from . import inherited_purchase_order
|
||||
from . import inherited_stock_warehouse
|
||||
from . import inherited_stock_location
|
||||
from . import inherited_account_bank_statement
|
||||
from . import inherited_account_bank_statement_line
|
||||
from . import inherited_stock_inventory
|
||||
from . import inherited_customer
|
||||
from . import inherited_product
|
||||
from . import ir_http
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class ResBranch(models.Model):
|
||||
_name = 'res.branch'
|
||||
_description = 'Branch'
|
||||
|
||||
name = fields.Char(required=True)
|
||||
company_id = fields.Many2one('res.company', required=True)
|
||||
telephone = fields.Char(string='Telephone No')
|
||||
address = fields.Text('Address')
|
||||
|
|
@ -0,0 +1,64 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
import time
|
||||
|
||||
class AccountBankStatement(models.Model):
|
||||
_inherit = 'account.bank.statement'
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
def _get_opening_balance(self, journal_id):
|
||||
curr_user_id = self.env['res.users'].browse(self.env.context.get('uid', False))
|
||||
last_bnk_stmt = self.search([('journal_id', '=', journal_id),('branch_id','=',curr_user_id.branch_id.id)], limit=1)
|
||||
if last_bnk_stmt:
|
||||
return last_bnk_stmt.balance_end
|
||||
return 0
|
||||
|
||||
@api.model
|
||||
def default_get(self,fields):
|
||||
res = super(AccountBankStatement, self).default_get(fields)
|
||||
branch_id = False
|
||||
if self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
res.update({
|
||||
'branch_id' : branch_id
|
||||
})
|
||||
return res
|
||||
|
||||
def button_confirm_bank(self):
|
||||
self._balance_check()
|
||||
statements = self.filtered(lambda r: r.state == 'open')
|
||||
for statement in statements:
|
||||
moves = self.env['account.move']
|
||||
for st_line in statement.line_ids:
|
||||
#upon bank statement confirmation, look if some lines have the account_id set. It would trigger a journal entry
|
||||
#creation towards that account, with the wanted side-effect to skip that line in the bank reconciliation widget.
|
||||
st_line.fast_counterpart_creation()
|
||||
if not st_line.account_id and not st_line.journal_entry_ids.ids and not st_line.statement_id.currency_id.is_zero(st_line.amount):
|
||||
raise UserError(_('All the account entries lines must be processed in order to close the statement.'))
|
||||
for aml in st_line.journal_entry_ids:
|
||||
aml.branch_id = st_line.branch_id.id
|
||||
moves |= aml.move_id
|
||||
|
||||
if moves:
|
||||
if self._context.get('session'):
|
||||
session = self._context.get('session')
|
||||
for move in moves:
|
||||
move.branch_id =session.branch_id.id
|
||||
for line in move.line_ids:
|
||||
line.branch_id = session.branch_id.id
|
||||
moves.filtered(lambda m: m.state != 'posted').post()
|
||||
statement.write({'branch_id': statement.pos_session_id.branch_id.id})
|
||||
else:
|
||||
moves.filtered(lambda m: m.state != 'posted').post()
|
||||
for move in moves:
|
||||
for move_line in move.line_ids:
|
||||
line_branch = move_line.branch_id.id
|
||||
move.branch_id = line_branch
|
||||
|
||||
|
||||
statement.message_post(body=_('Statement %s confirmed, journal items were created.') % (statement.name,))
|
||||
|
||||
statements.write({'state': 'confirm', 'date_done': time.strftime("%Y-%m-%d %H:%M:%S")})
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class account_bank_statement_line(models.Model):
|
||||
|
||||
_inherit = 'account.bank.statement.line'
|
||||
|
||||
@api.model
|
||||
def default_get(self, default_fields):
|
||||
res = super(account_bank_statement_line, self).default_get(default_fields)
|
||||
branch_id = False
|
||||
if self._context.get('branch_id'):
|
||||
branch_id = self._context.get('branch_id')
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
res.update({
|
||||
'branch_id' : branch_id
|
||||
})
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string='Branch')
|
||||
|
||||
|
|
@ -0,0 +1,57 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
from odoo.tools.float_utils import float_compare
|
||||
|
||||
|
||||
|
||||
|
||||
class AccountMove(models.Model):
|
||||
_inherit = 'account.move'
|
||||
|
||||
@api.model
|
||||
def default_get(self, default_fields):
|
||||
res = super(AccountMove, self).default_get(default_fields)
|
||||
branch_id = False
|
||||
|
||||
if self._context.get('branch_id'):
|
||||
branch_id = self._context.get('branch_id')
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
res.update({
|
||||
'branch_id' : branch_id
|
||||
})
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string="Branch")
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
||||
|
||||
class AccountMoveLine(models.Model):
|
||||
_inherit = 'account.move.line'
|
||||
|
||||
@api.model
|
||||
def default_get(self, default_fields):
|
||||
res = super(AccountMoveLine, self).default_get(default_fields)
|
||||
branch_id = False
|
||||
|
||||
if self._context.get('branch_id'):
|
||||
branch_id = self._context.get('branch_id')
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
|
||||
if self.move_id.branch_id :
|
||||
branch_id = self.move_id.branch_id.id
|
||||
res.update({'branch_id' : branch_id})
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string="Branch",related="move_id.branch_id",store=True)
|
||||
|
|
@ -0,0 +1,34 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
MAP_INVOICE_TYPE_PARTNER_TYPE = {
|
||||
'out_invoice': 'customer',
|
||||
'out_refund': 'customer',
|
||||
'in_invoice': 'supplier',
|
||||
'in_refund': 'supplier',
|
||||
}
|
||||
|
||||
class AccountPayment(models.Model):
|
||||
_inherit = 'account.payment'
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
rec = super(AccountPayment, self).default_get(fields)
|
||||
invoice_defaults = self.reconciled_invoice_ids
|
||||
if invoice_defaults and len(invoice_defaults) == 1:
|
||||
invoice = invoice_defaults[0]
|
||||
rec['branch_id'] = invoice.branch_id.id
|
||||
return rec
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class ResPartnerIn(models.Model):
|
||||
_inherit = 'res.partner'
|
||||
|
||||
|
||||
@api.model
|
||||
def default_get(self, default_fields):
|
||||
res = super(ResPartnerIn, self).default_get(default_fields)
|
||||
if self.env.user.branch_id:
|
||||
res.update({
|
||||
'branch_id' : self.env.user.branch_id.id or False
|
||||
})
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string="Branch")
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class ProductTemplateIn(models.Model):
|
||||
_inherit = 'product.template'
|
||||
|
||||
|
||||
@api.model
|
||||
def default_get(self, default_fields):
|
||||
res = super(ProductTemplateIn, self).default_get(default_fields)
|
||||
if self.env.user.branch_id:
|
||||
res.update({
|
||||
'branch_id' : self.env.user.branch_id.id or False
|
||||
})
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string="Branch")
|
||||
|
|
@ -0,0 +1,137 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class purchase_order(models.Model):
|
||||
|
||||
_inherit = 'purchase.order.line'
|
||||
|
||||
|
||||
def _prepare_account_move_line(self, move=False):
|
||||
result = super(purchase_order, self)._prepare_account_move_line(move)
|
||||
result.update({
|
||||
'branch_id' : self.order_id.branch_id.id or False,
|
||||
|
||||
})
|
||||
return result
|
||||
|
||||
|
||||
@api.model
|
||||
def default_get(self, default_fields):
|
||||
res = super(purchase_order, self).default_get(default_fields)
|
||||
branch_id = False
|
||||
if self._context.get('branch_id'):
|
||||
branch_id = self._context.get('branch_id')
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
res.update({'branch_id' : branch_id})
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string="Branch")
|
||||
|
||||
|
||||
def _prepare_stock_moves(self, picking):
|
||||
result = super(purchase_order, self)._prepare_stock_moves(picking)
|
||||
|
||||
branch_id = False
|
||||
if self.branch_id:
|
||||
branch_id = self.branch_id.id
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
|
||||
for res in result:
|
||||
res.update({'branch_id' : branch_id})
|
||||
|
||||
return result
|
||||
|
||||
|
||||
class PurchaseOrder(models.Model):
|
||||
_inherit = 'purchase.order'
|
||||
|
||||
|
||||
@api.model
|
||||
def default_get(self,fields):
|
||||
res = super(PurchaseOrder, self).default_get(fields)
|
||||
branch_id = picking_type_id = False
|
||||
|
||||
if self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
|
||||
if branch_id:
|
||||
branched_warehouse = self.env['stock.warehouse'].search([('branch_id','=',branch_id)])
|
||||
if branched_warehouse:
|
||||
picking_type_id = branched_warehouse[0].in_type_id.id
|
||||
else:
|
||||
picking = self._default_picking_type()
|
||||
picking_type_id = picking.id
|
||||
|
||||
res.update({
|
||||
'branch_id' : branch_id,
|
||||
'picking_type_id' : picking_type_id
|
||||
})
|
||||
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string='Branch')
|
||||
|
||||
@api.model
|
||||
def _prepare_picking(self):
|
||||
res = super(PurchaseOrder, self)._prepare_picking()
|
||||
branch_id = False
|
||||
if self.branch_id:
|
||||
branch_id = self.branch_id.id
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
res.update({
|
||||
'branch_id' : branch_id
|
||||
})
|
||||
return res
|
||||
|
||||
|
||||
def _prepare_invoice(self):
|
||||
result = super(PurchaseOrder, self)._prepare_invoice()
|
||||
branch_id = False
|
||||
if self.branch_id:
|
||||
branch_id = self.branch_id.id
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
|
||||
result.update({
|
||||
|
||||
'branch_id' : branch_id
|
||||
})
|
||||
|
||||
return result
|
||||
def action_view_invoice(self, invoices=False):
|
||||
'''
|
||||
This function returns an action that display existing vendor bills of given purchase order ids.
|
||||
When only one found, show the vendor bill immediately.
|
||||
'''
|
||||
|
||||
result = super(PurchaseOrder, self).action_view_invoice(invoices)
|
||||
|
||||
branch_id = False
|
||||
if self.branch_id:
|
||||
branch_id = self.branch_id.id
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
|
||||
|
||||
result.update({
|
||||
|
||||
'branch_id' : branch_id
|
||||
})
|
||||
|
||||
|
||||
return result
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
|
||||
|
||||
class ResUsers(models.Model):
|
||||
_inherit = 'res.users'
|
||||
|
||||
branch_ids = fields.Many2many('res.branch',string="Allowed Branch")
|
||||
branch_id = fields.Many2one('res.branch', string= 'Branch')
|
||||
|
||||
def write(self, values):
|
||||
if 'branch_id' in values or 'branch_ids' in values:
|
||||
self.env['ir.model.access'].call_cache_clearing_methods()
|
||||
self.env['ir.rule'].clear_caches()
|
||||
# self.has_group.clear_cache(self)
|
||||
user = super(ResUsers, self).write(values)
|
||||
return user
|
||||
|
|
@ -0,0 +1,48 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class SaleOrder(models.Model):
|
||||
_inherit = 'sale.order'
|
||||
|
||||
|
||||
@api.model
|
||||
def default_get(self,fields):
|
||||
res = super(SaleOrder, self).default_get(fields)
|
||||
branch_id = warehouse_id = False
|
||||
if self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
if branch_id:
|
||||
branched_warehouse = self.env['stock.warehouse'].search([('branch_id','=',branch_id)])
|
||||
if branched_warehouse:
|
||||
warehouse_id = branched_warehouse.ids[0]
|
||||
else:
|
||||
warehouse_id = self._default_warehouse_id()
|
||||
warehouse_id = warehouse_id.id
|
||||
|
||||
res.update({
|
||||
'branch_id' : branch_id,
|
||||
'warehouse_id' : warehouse_id
|
||||
})
|
||||
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string="Branch")
|
||||
|
||||
|
||||
def _prepare_invoice(self):
|
||||
res = super(SaleOrder, self)._prepare_invoice()
|
||||
res['branch_id'] = self.branch_id.id
|
||||
return res
|
||||
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class stock_inventory(models.Model):
|
||||
_inherit = 'stock.inventory'
|
||||
|
||||
|
||||
@api.model
|
||||
def default_get(self,fields):
|
||||
res = super(stock_inventory, self).default_get(fields)
|
||||
if res.get('location_id'):
|
||||
location_branch = self.env['stock.location'].browse(res.get('location_id')).branch_id.id
|
||||
if location_branch:
|
||||
res['branch_id'] = location_branch
|
||||
else:
|
||||
user_branch = self.env.user.branch_id
|
||||
if user_branch:
|
||||
res['branch_id'] = user_branch.id
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
|
||||
def post_inventory(self):
|
||||
# The inventory is posted as a single step which means quants cannot be moved from an internal location to another using an inventory
|
||||
# as they will be moved to inventory loss, and other quants will be created to the encoded quant location. This is a normal behavior
|
||||
# as quants cannot be reuse from inventory location (users can still manually move the products before/after the inventory if they want).
|
||||
self.mapped('move_ids').filtered(lambda move: move.state != 'done')._action_done()
|
||||
for move_id in self.move_ids:
|
||||
account_move =self.env['account.move'].search([('stock_move_id','=',move_id.id)])
|
||||
account_move.write({'branch_id':self.branch_id.id})
|
||||
for line in account_move.line_ids:
|
||||
line.write({'branch_id':self.branch_id.id})
|
||||
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class StockLocation(models.Model):
|
||||
_inherit = 'stock.location'
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
@api.constrains('branch_id')
|
||||
def _check_branch(self):
|
||||
warehouse_obj = self.env['stock.warehouse']
|
||||
warehouse_id = warehouse_obj.search(
|
||||
['|', '|', ('wh_input_stock_loc_id', '=', self.id),
|
||||
('lot_stock_id', '=', self.id),
|
||||
('wh_output_stock_loc_id', '=', self.id)])
|
||||
for warehouse in warehouse_id:
|
||||
if self.branch_id != warehouse.branch_id:
|
||||
raise UserError(_('Configuration error\nYou must select same branch on a location as assigned on a warehouse configuration.'))
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
|
@ -0,0 +1,82 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
from itertools import groupby
|
||||
|
||||
class StockMove(models.Model):
|
||||
_inherit = 'stock.move'
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
def _assign_picking(self):
|
||||
""" Try to assign the moves to an existing picking that has not been
|
||||
reserved yet and has the same procurement group, locations and picking
|
||||
type (moves should already have them identical). Otherwise, create a new
|
||||
picking to assign them to. """
|
||||
Picking = self.env['stock.picking']
|
||||
grouped_moves = groupby(sorted(self, key=lambda m: [f.id for f in m._key_assign_picking()]), key=lambda m: [m._key_assign_picking()])
|
||||
for group, moves in grouped_moves:
|
||||
moves = self.env['stock.move'].concat(*list(moves))
|
||||
branch_id = self.group_id.sale_id.branch_id.id if self.group_id.sale_id and self.group_id.sale_id.branch_id else False
|
||||
moves.write({'branch_id': branch_id})
|
||||
new_picking = False
|
||||
# Could pass the arguments contained in group but they are the same
|
||||
# for each move that why moves[0] is acceptable
|
||||
picking = moves[0]._search_picking_for_assignation()
|
||||
if picking:
|
||||
if any(picking.partner_id.id != m.partner_id.id or
|
||||
picking.origin != m.origin for m in moves):
|
||||
# If a picking is found, we'll append `move` to its move list and thus its
|
||||
# `partner_id` and `ref` field will refer to multiple records. In this
|
||||
# case, we chose to wipe them.
|
||||
picking.write({
|
||||
'partner_id': False,
|
||||
'origin': False,
|
||||
})
|
||||
else:
|
||||
new_picking = True
|
||||
picking = Picking.create(moves._get_new_picking_values())
|
||||
|
||||
moves.write({'picking_id': picking.id})
|
||||
moves._assign_picking_post_process(new=new_picking)
|
||||
return True
|
||||
|
||||
def _get_new_picking_values(self):
|
||||
vals = super(StockMove, self)._get_new_picking_values()
|
||||
vals['branch_id'] = self.group_id.sale_id.branch_id.id
|
||||
return vals
|
||||
|
||||
def _create_account_move_line(self, credit_account_id, debit_account_id, journal_id, qty, description, svl_id, cost):
|
||||
self.ensure_one()
|
||||
AccountMove = self.env['account.move'].with_context(default_journal_id=journal_id)
|
||||
|
||||
move_lines = self._prepare_account_move_line(qty, cost, credit_account_id, debit_account_id, description)
|
||||
if move_lines:
|
||||
date = self._context.get('force_period_date', fields.Date.context_today(self))
|
||||
new_account_move = AccountMove.sudo().create({
|
||||
'journal_id': journal_id,
|
||||
'line_ids': move_lines,
|
||||
'date': date,
|
||||
'ref': description,
|
||||
'stock_move_id': self.id,
|
||||
'stock_valuation_layer_ids': [(6, None, [svl_id])],
|
||||
'move_type': 'entry',
|
||||
'branch_id': self.picking_id.branch_id.id or self.branch_id.id or False,
|
||||
})
|
||||
new_account_move._post()
|
||||
|
||||
def _generate_valuation_lines_data(self, partner_id, qty, debit_value, credit_value, debit_account_id, credit_account_id, description):
|
||||
# This method returns a dictionary to provide an easy extension hook to modify the valuation lines (see purchase for an example)
|
||||
result = super(StockMove, self)._generate_valuation_lines_data(partner_id, qty, debit_value, credit_value, debit_account_id, credit_account_id, description)
|
||||
|
||||
branch_id = False
|
||||
if self.branch_id:
|
||||
branch_id = self.branch_id.id
|
||||
elif self.env.user.branch_id:
|
||||
branch_id = self.env.user.branch_id.id
|
||||
|
||||
for res in result:
|
||||
result[res].update({'branch_id' : branch_id})
|
||||
|
||||
return result
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
|
||||
class StockPicking(models.Model):
|
||||
_inherit = 'stock.picking'
|
||||
|
||||
@api.model
|
||||
def default_get(self, default_fields):
|
||||
res = super(StockPicking, self).default_get(default_fields)
|
||||
if self.env.user.branch_id:
|
||||
res.update({
|
||||
'branch_id' : self.env.user.branch_id.id or False
|
||||
})
|
||||
return res
|
||||
|
||||
branch_id = fields.Many2one('res.branch', string="Branch")
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import api, fields, models, _
|
||||
from odoo.exceptions import UserError
|
||||
|
||||
class StockWarehouse(models.Model):
|
||||
_inherit = 'stock.warehouse'
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
@api.onchange('branch_id')
|
||||
def _onchange_branch_id(self):
|
||||
selected_brach = self.branch_id
|
||||
if selected_brach:
|
||||
user_id = self.env.user
|
||||
user_branch = user_id.sudo().branch_id
|
||||
if user_branch and user_branch.id != selected_brach.id:
|
||||
raise UserError("Please select active branch only. Other may create the Multi branch issue. \n\ne.g: If you wish to add other branch then Switch branch from the header and set that.")
|
||||
|
||||
|
||||
|
||||
class StockPickingTypeIn(models.Model):
|
||||
_inherit = 'stock.picking.type'
|
||||
|
||||
branch_id = fields.Many2one('res.branch',related='warehouse_id.branch_id', store=True,)
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
from odoo import api, models
|
||||
from odoo.http import request
|
||||
from odoo.tools import ustr
|
||||
from odoo.addons.web.controllers.main import module_boot, HomeStaticTemplateHelpers
|
||||
import odoo
|
||||
|
||||
class Http(models.AbstractModel):
|
||||
_inherit = 'ir.http'
|
||||
|
||||
def session_info(self):
|
||||
user = request.env.user
|
||||
version_info = odoo.service.common.exp_version()
|
||||
|
||||
user_context = request.session.get_context() if request.session.uid else {}
|
||||
|
||||
session_info = {
|
||||
"uid": request.session.uid,
|
||||
"is_system": user._is_system() if request.session.uid else False,
|
||||
"is_admin": user._is_admin() if request.session.uid else False,
|
||||
"user_context": request.session.get_context() if request.session.uid else {},
|
||||
"db": request.session.db,
|
||||
"server_version": version_info.get('server_version'),
|
||||
"server_version_info": version_info.get('server_version_info'),
|
||||
"name": user.name,
|
||||
"username": user.login,
|
||||
"partner_display_name": user.partner_id.display_name,
|
||||
"company_id": user.company_id.id if request.session.uid else None, # YTI TODO: Remove this from the user context
|
||||
"branch_id": user.branch_id.id if request.session.uid else None,
|
||||
"partner_id": user.partner_id.id if request.session.uid and user.partner_id else None,
|
||||
"web.base.url": self.env['ir.config_parameter'].sudo().get_param('web.base.url', default=''),
|
||||
}
|
||||
if self.env.user.has_group('base.group_user'):
|
||||
# the following is only useful in the context of a webclient bootstrapping
|
||||
# but is still included in some other calls (e.g. '/web/session/authenticate')
|
||||
# to avoid access errors and unnecessary information, it is only included for users
|
||||
# with access to the backend ('internal'-type users)
|
||||
mods = module_boot()
|
||||
qweb_checksum = HomeStaticTemplateHelpers.get_qweb_templates_checksum(addons=mods, debug=request.session.debug)
|
||||
lang = user_context.get("lang")
|
||||
translation_hash = request.env['ir.translation'].get_web_translations_hash(mods, lang)
|
||||
menu_json_utf8 = json.dumps(request.env['ir.ui.menu'].load_menus(request.session.debug), default=ustr, sort_keys=True).encode()
|
||||
cache_hashes = {
|
||||
"load_menus": hashlib.sha1(menu_json_utf8).hexdigest(),
|
||||
"qweb": qweb_checksum,
|
||||
"translations": translation_hash,
|
||||
}
|
||||
session_info.update({
|
||||
# current_company should be default_company
|
||||
"user_companies": {'current_company': (user.company_id.id, user.company_id.name), 'allowed_companies': [(comp.id, comp.name) for comp in user.company_ids]},
|
||||
"user_branches": {'current_branch': (user.branch_id.id, user.branch_id.name), 'allowed_branch': [(comp.id, comp.name) for comp in user.branch_ids]},
|
||||
"currencies": self.get_currencies(),
|
||||
"show_effect": True,
|
||||
"display_switch_company_menu": user.has_group('base.group_multi_company') and len(user.company_ids) > 1,
|
||||
"display_switch_branch_menu": user.has_group('branch.group_multi_branch') and len(user.branch_ids) > 1,
|
||||
"cache_hashes": cache_hashes,
|
||||
"allowed_branch_ids" : user.branch_id.ids
|
||||
})
|
||||
return session_info
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import inherited_sale_report
|
||||
from . import inherited_account_invoice_report
|
||||
from . import inherited_purchase_report
|
||||
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class AccountInvoiceReport(models.Model):
|
||||
_inherit = "account.invoice.report"
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
def _select(self):
|
||||
return super(AccountInvoiceReport, self)._select() + ", move.branch_id"
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class PurchaseReport(models.Model):
|
||||
_inherit = "purchase.report"
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
def _select(self):
|
||||
return super(PurchaseReport, self)._select() + ", po.branch_id as branch_id"
|
||||
|
||||
def _group_by(self):
|
||||
return super(PurchaseReport, self)._group_by() + ", po.branch_id"
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
# Part of BrowseInfo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class SaleReport(models.Model):
|
||||
_inherit = "sale.report"
|
||||
|
||||
branch_id = fields.Many2one('res.branch')
|
||||
|
||||
def _query(self, with_clause='', fields={}, groupby='', from_clause=''):
|
||||
fields['branch_id'] = ", s.branch_id as branch_id"
|
||||
return super(SaleReport, self)._query(with_clause, fields, groupby, from_clause)
|
||||
|
||||
|
|
@ -0,0 +1,263 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record model="ir.module.category" id="module_branch_management">
|
||||
<field name="name">Branch</field>
|
||||
<field name="sequence">11</field>
|
||||
</record>
|
||||
|
||||
<record id="group_branch_user" model="res.groups">
|
||||
<field name="name">User</field>
|
||||
<field name="implied_ids" eval="[(4, ref('base.group_user'))]"/>
|
||||
<field name="category_id" ref="module_branch_management"/>
|
||||
</record>
|
||||
|
||||
<record id="group_branch_user_manager" model="res.groups">
|
||||
<field name="name">Manager</field>
|
||||
<field name="category_id" ref="module_branch_management"/>
|
||||
<field name="implied_ids" eval="[(4, ref('group_branch_user'))]"/>
|
||||
<field name="users" eval="[(4, ref('base.user_root'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="res_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Res Branch Manager</field>
|
||||
<field name="model_id" ref="model_res_branch"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="res_branch_user_rule" model="ir.rule">
|
||||
<field name="name">Res Branch User</field>
|
||||
<field name="model_id" ref="model_res_branch"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[('id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="sale.sale_order_personal_rule" model="ir.rule">
|
||||
<field name="name">Personal Orders</field>
|
||||
<field ref="model_sale_order" name="model_id"/>
|
||||
<field name="domain_force">['|',('branch_id','=',user.branch_id.id),('branch_id','=',False),('user_id','=',user.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('sales_team.group_sale_salesman'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="sale.sale_order_see_all" model="ir.rule">
|
||||
<field name="name">All Branch Orders</field>
|
||||
<field ref="model_sale_order" name="model_id"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('sales_team.group_sale_salesman_all_leads'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_all_manager" model="ir.rule">
|
||||
<field name="name">All Orders</field>
|
||||
<field ref="model_sale_order" name="model_id"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4,ref('sales_team.group_sale_manager'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="purchase_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Purchase Branch Manager</field>
|
||||
<field name="model_id" ref="model_purchase_order"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- <record id="sale_order_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Sale Branch Manager</field>
|
||||
<field name="model_id" ref="model_sale_order"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
|
||||
-->
|
||||
|
||||
<record id="purchase_branch_rule" model="ir.rule">
|
||||
<field name="name">Purchase Branch</field>
|
||||
<field name="model_id" ref="model_purchase_order"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="picking_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Picking Branch Manager</field>
|
||||
<field name="model_id" ref="model_stock_picking"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="picking_branch_rule" model="ir.rule">
|
||||
<field name="name">Picking Branch</field>
|
||||
<field name="model_id" ref="model_stock_picking"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="warehouse_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Warehouse Branch Manager</field>
|
||||
<field name="model_id" ref="stock.model_stock_warehouse"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="warehouse_branch_rule" model="ir.rule">
|
||||
<field name="name">Warehouse Branch</field>
|
||||
<field name="model_id" ref="stock.model_stock_warehouse"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="location_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Location Branch Manager</field>
|
||||
<field name="model_id" ref="model_stock_location"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="location_branch_rule" model="ir.rule">
|
||||
<field name="name">Location Branch</field>
|
||||
<field name="model_id" ref="model_stock_location"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="picking_type_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Picking Type Branch Manager</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking_type"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="picking_type_branch_rule" model="ir.rule">
|
||||
<field name="name">Picking Type Branch</field>
|
||||
<field name="model_id" ref="stock.model_stock_picking_type"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="stock_quant_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Stock Quant Branch Manager</field>
|
||||
<field name="model_id" ref="stock.model_stock_quant"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="stock_quant_branch_rule" model="ir.rule">
|
||||
<field name="name">Stock Quant Branch</field>
|
||||
<field name="model_id" ref="stock.model_stock_quant"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('location_id.branch_id','=',False),('location_id.branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="stock_move_line_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Stock Move Line Branch Manager</field>
|
||||
<field name="model_id" ref="stock.model_stock_move_line"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="stock_move_line_branch_rule" model="ir.rule">
|
||||
<field name="name">Stock Move Line Branch</field>
|
||||
<field name="model_id" ref="stock.model_stock_move_line"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('location_dest_id.branch_id','=',False),('location_dest_id.branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="warehouse_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Warehouse Branch Manager</field>
|
||||
<field name="model_id" ref="model_stock_warehouse"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="warehouse_branch_rule" model="ir.rule">
|
||||
<field name="name">Warehouse Branch</field>
|
||||
<field name="model_id" ref="model_stock_warehouse"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="product_template_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Product Template Branch Manager</field>
|
||||
<field name="model_id" ref="model_product_template"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="product_template_branch_rule" model="ir.rule">
|
||||
<field name="name">Product Template Branch</field>
|
||||
<field name="model_id" ref="model_product_template"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="product_product_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Product Product Branch Manager</field>
|
||||
<field name="model_id" ref="product.model_product_product"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">[(1,'=',1)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="product_product_branch_rule" model="ir.rule">
|
||||
<field name="name">Product Product Branch</field>
|
||||
<field name="model_id" ref="product.model_product_product"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('product_tmpl_id.branch_id','=',False),('product_tmpl_id.branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
|
||||
<!-- <record id="res_users_branch_user_rule" model="ir.rule">
|
||||
<field name="name">Res Users Branch User</field>
|
||||
<field name="model_id" ref="base.model_res_users"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record>
|
||||
-->
|
||||
|
||||
<!-- <record id="res_partner_branch_manager_rule" model="ir.rule">
|
||||
<field name="name">Res Partner Branch Manager</field>
|
||||
<field name="model_id" ref="model_res_partner"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','in',[branch.id for branch in user.branch_ids])]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user_manager'))]"/>
|
||||
</record>
|
||||
|
||||
<record id="res_partner_branch_rule" model="ir.rule">
|
||||
<field name="name">Res Partner Branch</field>
|
||||
<field name="model_id" ref="model_res_partner"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('branch_id','=',False),('branch_id','=',user.branch_id.id)]</field>
|
||||
<field name="groups" eval="[(4, ref('branch.group_branch_user'))]"/>
|
||||
</record> -->
|
||||
|
||||
</data>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
|
||||
|
||||
access_res_branch_user,res.branch.user,model_res_branch,branch.group_branch_user,1,1,0,0
|
||||
access_res_branch_user_all,res.branch.user.all,model_res_branch,,1,1,0,0
|
||||
access_res_branch_manager,res.branch.manager,model_res_branch,branch.group_branch_user_manager,1,1,1,1
|
||||
action_res_branch_location_rule,res.branch.user.location,stock.model_stock_location,branch.group_branch_user,1,1,1,1
|
||||
action_res_branch_location_rule_manager,res.branch.user.location,stock.model_stock_location,branch.group_branch_user_manager,1,1,1,1
|
||||
access_stock_warehouse_branch_user,stock.warehouse.branch.user,stock.model_stock_warehouse,branch.group_branch_user,1,1,0,0
|
||||
access_stock_warehouse_branch_manager,stock.warehouse.branch.manager,stock.model_stock_warehouse,branch.group_branch_user_manager,1,1,1,1
|
||||
access_stock_picking_branc_user,stock.picking.branch.user,stock.model_stock_picking,branch.group_branch_user,1,1,1,1
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data noupdate="1">
|
||||
<record id="group_multi_branch" model="res.groups">
|
||||
<field name="name">Multi Branches</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 62 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 120 KiB |
|
After Width: | Height: | Size: 100 KiB |
|
After Width: | Height: | Size: 73 KiB |
|
After Width: | Height: | Size: 96 KiB |
|
After Width: | Height: | Size: 79 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 132 KiB |
|
After Width: | Height: | Size: 67 KiB |
|
After Width: | Height: | Size: 83 KiB |
|
After Width: | Height: | Size: 112 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 66 KiB |
|
After Width: | Height: | Size: 44 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 114 KiB |
|
After Width: | Height: | Size: 112 KiB |
|
After Width: | Height: | Size: 135 KiB |
|
After Width: | Height: | Size: 110 KiB |
|
After Width: | Height: | Size: 93 KiB |
|
After Width: | Height: | Size: 148 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 13 KiB |
|
After Width: | Height: | Size: 48 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
After Width: | Height: | Size: 51 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 36 KiB |
|
After Width: | Height: | Size: 55 KiB |
|
After Width: | Height: | Size: 9.5 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
|
@ -0,0 +1,446 @@
|
|||
<section class="oe_container lead mt64">
|
||||
<div>
|
||||
<div class="col-md-12 mt16" style="padding:0;">
|
||||
<div class="col-md-12" style="padding:0;">
|
||||
<div class="panel-group mb0 mt0" role="tablist" id="priceAccordeon" style="padding:0;">
|
||||
<div class="panel-heading mb0 mt0 collapsed" role="tab" data-toggle="collapse" data-parent="#priceAccordeon" data-target="#priceAccordeon_area" aria-expanded="false" style="margin-left:0;padding:0 0 2px 0;text-align:right;">
|
||||
<strong>
|
||||
<div style="background-color:#875A7B;color:white;padding:5px;margin-bottom:3px;text-align:center;border-radius:5px;white-space:nowrap;display: inline-block;">
|
||||
<strong style="color:white;">
|
||||
Supported :
|
||||
</strong>
|
||||
</div>
|
||||
<div style="background-color:#875A7B;color:white;padding:5px;margin-bottom:3px;text-align:center;border-radius:5px;white-space:nowrap;display: inline-block;">
|
||||
<strong style="color:white;" title="The tool is compatible with the Odoo Enterprise version">
|
||||
<i class="fa fa-check" style="margin-left:4px;"> </i>
|
||||
Enterprise
|
||||
</strong>
|
||||
</div>
|
||||
<div style="background-color:#875A7B;padding:5px;margin-top:3px;text-align:center;border-radius:5px;white-space:nowrap;display: inline-block;">
|
||||
<strong style="color:white;" title="The tool is compatible with the Odoo Community version">
|
||||
<i class="fa fa-check" style="margin-left:4px;"> </i>
|
||||
Community
|
||||
</strong>
|
||||
</div>
|
||||
<div style="background-color:#875A7B;color:white;padding:5px;margin-bottom:3px;text-align:center;border-radius:5px;white-space:nowrap;display: inline-block;">
|
||||
<strong style="color:white;" title="The tool might be installed to Odoo.sh if you have a linked private git repository">
|
||||
<i class="fa fa-check" style="margin-left:4px;"> </i>
|
||||
Odoo.sh
|
||||
</strong>
|
||||
</div>
|
||||
</strong>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead bi_title_box">
|
||||
<div >
|
||||
<div >
|
||||
<h2 class="oe_slogan bi_title" style="color:#5082c4;">
|
||||
<b>Multiple Branch/Unit(operation) Management Odoo Apps for Single Company</b>
|
||||
</h2>
|
||||
<h3 class="oe_slogan bi_title" style="color: ##201111;">
|
||||
<b>Multi Branches management for All Application Odoo Apps</b>
|
||||
</h3>
|
||||
<h3 class="oe_slogan bi_title" style="color: ##201111;">
|
||||
<b>Manage Different Branch Unit for single company in Odoo</b>
|
||||
</h3>
|
||||
<p class="oe_slogan">
|
||||
Do you have multiple unit for single company? Do you want them to works as separate entity inside the company? Here you go, This multiple branch management Odoo apps helps users to make different branches for single company with multi branch concept which works same as multi-company environment.<br/>
|
||||
Also Don't worry about the access rights too, We have added branch user/manager roles inside the Odoo module, Branch user can only access records of its specific branch and Branch manager can see records of all Branches.<br/>
|
||||
Branch functionality added to Sale Order, Purchase Order, Invoice/Billing, Accounting, Warehouse and Products etc.
|
||||
<br/>
|
||||
</p>
|
||||
<p class="oe_slogan">
|
||||
You can also manage multiple branch with multi company environment. For each company you can add several branches also multi company rules is already applied on branch object, so if user don't have access of company then that user can't have access of branch of that specific company.
|
||||
</p>
|
||||
<p class="oe_slogan">
|
||||
Multi branch Odoo apps works for both community and enterprise edition with all generic application like contact, product, sales, purchase, warehouse,billing, accounting etc. We have other separate apps available for Manufacturing,Projects, Subscription, Helpdesk etc, you can see that on Odoo store and If you can't see it contact us, we will help you on that.
|
||||
<br/>
|
||||
If you are using Odoo enterprise edition and don't want to use specific application i.e Purchase or Sales, then don't worry we will simply remove that dependency for you without any extra cost.
|
||||
</p>
|
||||
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 25px;font-style: italic;font-weight:bolder;"> looking for Multiple Branch Accounting Enterprise Reports Apps, please check below module link
|
||||
<br/>
|
||||
<strong><a class="text-center" style="color: #21B799" href="https://apps.odoo.com/apps/modules/14.0/branch_accounting_report/" target="_blank">Financial Reports For Branch -Enterprise Edition Odoo Apps.</a></strong>
|
||||
</p>
|
||||
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 25px;font-style: italic;font-weight:bolder;"> Looking for Multiple Branch Accounting Community Reports Apps, please check below module link
|
||||
<br/>
|
||||
<strong><a class="text-center" style="color: #21B799" href="https://apps.odoo.com/apps/modules/14.0/bi_branch_financial_pdf_reports/" target="_blank">Multiple Branch Accounting Community Reports Odoo Apps.</a></strong>
|
||||
</p>
|
||||
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 25px;font-style: italic;font-weight:bolder;"> Here is Advance Multiple Branch Odoo Apps, please check below module link
|
||||
<br/>
|
||||
<strong><a class="text-center" style="color: #21B799" href="https://apps.odoo.com/apps/modules/14.0/bi_advance_branch/" target="_blank">Advance Multi Branch Management Odoo Apps.</a></strong>
|
||||
</p>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;">Multi Language Translation Available</p>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 25px;font-style: italic;font-weight:bolder;"> We have added Translation using google translate for English (US), Arabic, French / Français, Spanish / Español and Dutch / Nederlands, if you want to change translation terms or add new translation provide us translation, we will add that without any cost.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-lg-12 col-md-12 col-sm-12 col-12">
|
||||
<div class="Language" style="text-align:center">
|
||||
<img title="English" alt="English" style="margin:10px 10px" src="languages/English.png">
|
||||
<img title="Arabic" alt="Arabic" style="margin:10px 10px" src="languages/Arabic.png">
|
||||
<img title="French" alt="French" style="margin:10px 10px" src="languages/French.png">
|
||||
<img title="Spanish" alt="Spanish" style="margin:10px 10px" src="languages/Spanish.png">
|
||||
<img title="Dutch" alt="Dutch" style="margin:10px 10px" src="languages/Dutch.png">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead bi_features">
|
||||
<div >
|
||||
<div>
|
||||
<h3 class="oe_slogan" style="opacity:1;background: linear-gradient(to right, #86bcf2 0%, #e2f2f8 100%);padding: 10px 0px;color: ##201111;letter-spacing: 0.2em;text-transform: uppercase;text-shadow: 0.1em .04em 0.1em #7d8c88;"><b>Features</b></h3>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col" style="margin: 10px;">
|
||||
<div class="row">
|
||||
<div class="col-md-3 text-center">
|
||||
<img class="img img-responsive" style="max-width:100%;" src="features/branch_metrics.png"/>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<h4><b> Multi Branch Concept. </b></h4>
|
||||
<span class="oe_slogan"> It allows you to create Multiple Branch/Unit, Working as multi branch concept same as Odoo's multi company environment. </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col" style="margin: 10px;">
|
||||
<div class="row">
|
||||
<div class="col-md-3 text-center">
|
||||
<img class="img img-responsive" style="max-width:100%;" src="features/branch_access.png"/>
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<h4><b> Complete Workflow for Branch. </b></h4>
|
||||
<span class="oe_slogan"> Branch functionality added to Sales, Purchase, Invoice, Warehouse, Access group created for branch manager and branch user with specific branch. </span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead mt64">
|
||||
<div >
|
||||
<div class="oe_slogan oe_spaced text-center">
|
||||
<a class="btn mt8 mr8" title="Demo Request" style="background-color: #2875aa;color: #FFFFFF !important;font-size: 20px;font-weight: bold;border-radius: 7px;" href="mailto:sales@browseinfo.in?Subject=Demo Request for Multiple Branch/Unit(operation) Management Odoo Apps for Single Company" target="_top"> Demo Request </a>
|
||||
<a class="btn mt8 ml8" title="Video Tutorial" style="background-color: #2875aa;color: #FFFFFF !important;font-size: 20px;font-weight: bold;border-radius: 7px;" href="https://youtu.be/hi1b8kH5Z94" target="_blank"> Video Tutorial</a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;">Branch Access Rights</p>
|
||||
<p class="oe_slogan">User have to give branch access like User or Manage, User have to "Multi Branches".</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="1_branch_Access.png">
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Create Multiple Branch </p>
|
||||
<p class="oe_slogan">Branch Manager can create multiple branch under Settings > Users & Companies > Branch menu, User also can set branch details like address, phone, company.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="2_branch_tree.png">
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="3_branch_form.png">
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Assign Branch User </p>
|
||||
<p class="oe_slogan"> Branch manager can assign a branch for which specific user is belongs.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="4_branch_user.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Multi Branch Feature</p>
|
||||
<p class="oe_slogan">Users with "Multi Branches" access rights can see and change multiple branch from header.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="5_multi_branch.png">
|
||||
<p class="oe_slogan">On clicking branch on header user can see allowed branches and can select one, on changing branch users branch will also changed under users settings.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="6_multi_branch_change.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;">Branch On Customer</p>
|
||||
<p class="oe_slogan"> Branch manager can set customer for specific branch by selecting branch on customer. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="7_branch_customer.png">
|
||||
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Product Template </p>
|
||||
<p class="oe_slogan"> User can set branch on product template, selected branch on product template will automatically added to product variant. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="8_branch_product.png">
|
||||
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Product Variant </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="9_branch_variant.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Sales Flow </p>
|
||||
<p class="oe_slogan"> While creating sales order user who is currently login, branch of the user is set as branch to the sales order and warehouse shipment address is also set according to selected branch. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="10_sale_branch.png">
|
||||
<p class="oe_slogan"> User can see created records of sale order group by branch as shown bellow image.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="11_branch_groupby.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch Sales Analysis Report </p>
|
||||
<p class="oe_slogan"> You can see sales analysis report based on branch. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="12_brnach_analysis.png">
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch on Delivery Order </p>
|
||||
<p class="oe_slogan"> While Quotation get confirmed generated picking(delivery) will have same branch automatically set based on Sales Order. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="13_branch_picking.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch on Customer Invoices </p>
|
||||
<p class="oe_slogan"> While quotation get confirmed generated picking(delivery) will have same branch automatically set based on Sales Order.</p>
|
||||
<p class="oe_slogan"> When creating manual invoice then log in user's branch will be assigned to the invoice.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="14_branch_invoice.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Journal Items </p>
|
||||
<p class="oe_slogan"> While invoice created the branch will automatically set on journal items from invoice.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="15_journal_items.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Customer Payment</p>
|
||||
<p class="oe_slogan">Selected branch of the invoice will automatically set on account payment. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="16_branch_payment.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Bank Statement</p>
|
||||
<p class="oe_slogan">User can also see branch on bank statement generated for payment.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="17_branch_branck_statement.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Purchase Order</p>
|
||||
<p class="oe_slogan"> While creating purchase order user who is currently login, branch of the user is set as branch to the purchase order. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="18_branch_purchase.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan"> User can see created records of purchase order group by branch as shown bellow image.</p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="19_branch_groupby.png">
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch Purchase Analysis Report </p>
|
||||
<p class="oe_slogan"> You can see purchase analysis report based on branch. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="20_branch_analysis.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch on Picking </p>
|
||||
<p class="oe_slogan"> While RFQ(purchase) get confirmed generated picking(shipment) will have same branch automatically set based on RFQ. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="21_branch_receipt.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Vendor Bill </p>
|
||||
<p class="oe_slogan"> While bill created from the purchase order selected branch of the purchase order will automatically set on vendor bill. </p>
|
||||
<p class="oe_slogan"> After Validate invoice, Selected branch of the invoice will automatically set on Journal Items. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="22_branch_bill.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Vendor Payment</p>
|
||||
<p class="oe_slogan"> Selected branch of the invoice will automatically set on Account Payment. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="23_branch_payment.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Warehouse </p>
|
||||
<p class="oe_slogan"> You can also define branch in the warehouse and all the technical fields are set according to the branch. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="24_branch_warehouse.png">
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Stock Locations </p>
|
||||
<p class="oe_slogan"> In warehouse locations you can also set branch. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="25_branch_location.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div>
|
||||
<div>
|
||||
<p class="oe_slogan" style="color: #49a3fe;font-size: 35px;font-style: italic;font-weight:bolder;"> Branch On Inventory Valuation </p>
|
||||
<p class="oe_slogan"> User also can set branch on inventory valuations. </p>
|
||||
<img class="img-border img-responsive thumbnail mb16" style="border: 3px solid black;" src="26_branch_inventory.png">
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container oe_dark">
|
||||
<div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4" style="margin: auto;">
|
||||
<p class="oe_slogan" style="font-size: 35px;color: #5082c4;font-style: italic;font-weight: bold;">Apps May You Like</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row col-sm-12" style="margin-left: 3px;padding: 5px;">
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/bi_automated_sale_order/">
|
||||
<img class="img img-responsive" src="related/bi_automated_sale_order.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/bi_purchase_tripple_approval/">
|
||||
<img class="img img-responsive" src="related/bi_purchase_tripple_approval.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/bi_add_custom_field_project/">
|
||||
<img class="img img-responsive" src="related/bi_add_custom_field_project.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/bi_discount_from_customer/">
|
||||
<img class="img img-responsive" src="related/bi_discount_from_customer.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/bi_top_growing_product/">
|
||||
<img class="img img-responsive" src="related/bi_top_growing_product.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/sale_purchase_invoice_discount/">
|
||||
<img class="img img-responsive" src="related/sale_purchase_invoice_discount.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container oe_dark">
|
||||
<div>
|
||||
<div class="row">
|
||||
<div class="col-sm-4" style="margin: auto;">
|
||||
<p class="oe_slogan" style="font-size: 35px;color: #5082c4;font-style: italic;font-weight: bold;">Most Demanded Apps</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row col-sm-12" style="margin-left: 3px;padding: 5px;">
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/pos_orders_all/">
|
||||
<img class="img img-responsive" src="demanded/all_in_one_pos.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/bi_customer_overdue_statement/">
|
||||
<img class="img img-responsive" src="demanded/customer_overdue.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/generic_excel_report/">
|
||||
<img class="img img-responsive" src="demanded/generic_excel_report.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/sales_commission_generic/">
|
||||
<img class="img img-responsive" src="demanded/sale_commision.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/bi_generic_import/">
|
||||
<img class="img img-responsive" src="demanded/bi_generic_import.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-4" style="padding: 5px;padding-right: 10px;">
|
||||
<a href="https://apps.odoo.com/apps/modules/14.0/branch/">
|
||||
<img class="img img-responsive" src="demanded/branch.png" style="width: 100%;"/>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container">
|
||||
<div >
|
||||
<div >
|
||||
<h2 class="oe_slogan">Free Support</h2>
|
||||
<h3 class="oe_slogan" style="font-size: 21px; color: #000000 !important;">You will get 90 Days free support incase any bugs or issue (Except data recovery).</h3>
|
||||
<p class="oe_slogan" style="font-size: 18px; ">
|
||||
At BrowseInfo we offer end to end solution for Odoo services. Which includes analysis & consultation on the workflows and integration part. Please note that You're not allowed to distribute this module after purchase! Incase of any question regarding this module feel free to email us on <a href="mailto:ticket@browseinfo.in">ticket@browseinfo.in</a> or raise a ticket on support.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="oe_container lead">
|
||||
<div >
|
||||
<div >
|
||||
<div class="img img-responsive text-center">
|
||||
<a href="http://www.browseinfo.in" target="new" style="display: grid;">
|
||||
<img src="bi_logo.png" style="margin: auto;max-width: 350px;">
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="oe_slogan oe_spaced text-center">
|
||||
<a class="btn mt8" title="Query and Demo" style="background-color: #3497db;color: #FFFFFF !important;font-size: 20px;font-weight: bold;" href="mailto:sales@browseinfo.in?Subject=Demo Request for Multiple Branch/Unit(operation) Management Odoo Apps for Single Company" target="_blank"> Query and Demo </a>
|
||||
<a class="btn mt8" title="Email on Support" style="background-color: #3497db;color: #FFFFFF !important;font-size: 20px;font-weight: bold;" href="mailto:ticket@browseinfo.in?Subject=Support Request for Multiple Branch/Unit(operation) Management Odoo Apps for Single Company" target="_blank"> Support Request </a>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
After Width: | Height: | Size: 212 B |
|
After Width: | Height: | Size: 208 B |
|
After Width: | Height: | Size: 1015 B |
|
After Width: | Height: | Size: 230 B |
|
After Width: | Height: | Size: 781 B |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 7.5 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 49 KiB |
|
|
@ -0,0 +1,76 @@
|
|||
import { browser } from "@web/core/browser/browser";
|
||||
import { cookie } from "@web/core/browser/cookie";
|
||||
import { router } from "@web/core/browser/router";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { session } from "@web/session";
|
||||
|
||||
/**
|
||||
* Branch Context Service
|
||||
* Handles branch initialization and context management for the web client
|
||||
*/
|
||||
|
||||
function parseBranchIds(bids, separator = ",") {
|
||||
if (typeof bids === "string") {
|
||||
return bids.split(separator).map(Number);
|
||||
} else if (typeof bids === "number") {
|
||||
return [bids];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
function getBranchIds() {
|
||||
let bids;
|
||||
const state = router.current;
|
||||
if ("bids" in state) {
|
||||
bids = parseBranchIds(state.bids);
|
||||
} else {
|
||||
bids = parseBranchIds(cookie.get("bids"));
|
||||
}
|
||||
return bids;
|
||||
}
|
||||
|
||||
function computeActiveBranchIds(bids) {
|
||||
const { user_branches } = session;
|
||||
let activeBranchIds = bids || [];
|
||||
const availableBranchesFromSession = user_branches?.allowed_branch || [];
|
||||
const notAllowedBranches = activeBranchIds.filter(
|
||||
(id) => !availableBranchesFromSession.some(branch => branch[0] === id)
|
||||
);
|
||||
|
||||
if (!activeBranchIds.length || notAllowedBranches.length) {
|
||||
activeBranchIds = [user_branches?.current_branch?.[0] || 1];
|
||||
}
|
||||
return activeBranchIds;
|
||||
}
|
||||
|
||||
export const branchContextService = {
|
||||
dependencies: ["router"],
|
||||
|
||||
start(env, { router }) {
|
||||
// Initialize branch context on startup
|
||||
const branchIds = getBranchIds();
|
||||
const activeBranchIds = computeActiveBranchIds(branchIds);
|
||||
|
||||
// Update session context
|
||||
if (session.user_context) {
|
||||
session.user_context.allowed_branch_ids = activeBranchIds;
|
||||
}
|
||||
|
||||
// Update router state if needed
|
||||
const currentState = router.current;
|
||||
if (!currentState.bids || activeBranchIds.join(",") !== currentState.bids) {
|
||||
router.replaceState({ bids: activeBranchIds.join(",") });
|
||||
}
|
||||
|
||||
// Update cookie
|
||||
cookie.set("bids", activeBranchIds.join(","));
|
||||
|
||||
return {
|
||||
getBranchIds,
|
||||
computeActiveBranchIds,
|
||||
activeBranchIds,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
registry.category("services").add("branchContext", branchContextService);
|
||||
|
|
@ -0,0 +1,87 @@
|
|||
import { Component, useState } from "@odoo/owl";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { useService } from "@web/core/utils/hooks";
|
||||
import { session } from "@web/session";
|
||||
import { jsonrpc } from "@web/core/network/rpc_service";
|
||||
import { _t } from "@web/core/l10n/translation";
|
||||
import { device } from "@web/core/browser/feature_detection";
|
||||
|
||||
/**
|
||||
* When Odoo is configured in multi-branch mode, users should be able
|
||||
* to switch their interface from one branch to the other. This is the purpose
|
||||
* of this component, by displaying a dropdown menu in the systray.
|
||||
*/
|
||||
|
||||
class SwitchBranchMenu extends Component {
|
||||
static template = "branch.SwitchBranchMenu";
|
||||
static props = {};
|
||||
|
||||
setup() {
|
||||
this.branchService = useService("branch");
|
||||
this.isMobile = device.isMobile;
|
||||
|
||||
this.state = useState({
|
||||
allowed_branch_ids: session.user_context.allowed_branch_ids || [],
|
||||
user_branches: session.user_branches?.allowed_branch || [],
|
||||
current_branch: null,
|
||||
current_branch_name: "",
|
||||
});
|
||||
|
||||
this._initializeBranchData();
|
||||
}
|
||||
|
||||
_initializeBranchData() {
|
||||
this.state.current_branch = this.state.allowed_branch_ids[0];
|
||||
|
||||
if (this.state.user_branches.length > 0) {
|
||||
const currentBranch = this.state.user_branches.find(
|
||||
branch => branch[0] === this.state.current_branch
|
||||
);
|
||||
this.state.current_branch_name = currentBranch
|
||||
? currentBranch[1]
|
||||
: this.state.user_branches[0][1];
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @param {Event} ev
|
||||
*/
|
||||
async _onSwitchBranchClick(ev) {
|
||||
ev.preventDefault();
|
||||
ev.stopPropagation();
|
||||
|
||||
const branchID = parseInt(ev.currentTarget.dataset.branchId);
|
||||
let allowed_branch_ids = [...this.state.allowed_branch_ids];
|
||||
|
||||
// Handle branch selection logic
|
||||
if (ev.currentTarget.querySelector('.fa-square-o')) {
|
||||
if (this.state.allowed_branch_ids.length === 1) {
|
||||
// Single branch mode
|
||||
allowed_branch_ids = [branchID];
|
||||
} else {
|
||||
// Multi branch mode
|
||||
allowed_branch_ids.push(branchID);
|
||||
}
|
||||
}
|
||||
|
||||
// Update session
|
||||
this.branchService.setBranch(branchID, allowed_branch_ids);
|
||||
|
||||
// Send RPC call
|
||||
await jsonrpc('/set_brnach', {
|
||||
BranchID: branchID,
|
||||
});
|
||||
}
|
||||
|
||||
get displaySwitchBranchMenu() {
|
||||
return session.display_switch_branch_menu;
|
||||
}
|
||||
}
|
||||
|
||||
export const switchBranchMenu = {
|
||||
Component: SwitchBranchMenu,
|
||||
condition: () => session.display_switch_branch_menu,
|
||||
};
|
||||
|
||||
registry.category("systray").add("SwitchBranchMenu", switchBranchMenu, { sequence: 50 });
|
||||
|
|
@ -0,0 +1,61 @@
|
|||
import { browser } from "@web/core/browser/browser";
|
||||
import { cookie } from "@web/core/browser/cookie";
|
||||
import { router } from "@web/core/browser/router";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { session } from "@web/session";
|
||||
|
||||
const BIDS_SEPARATOR = ",";
|
||||
|
||||
function parseBranchIds(bids, separator = BIDS_SEPARATOR) {
|
||||
if (typeof bids === "string") {
|
||||
return bids.split(separator).map(Number);
|
||||
} else if (typeof bids === "number") {
|
||||
return [bids];
|
||||
}
|
||||
return [];
|
||||
}
|
||||
|
||||
function computeActiveBranchIds(bids) {
|
||||
const { user_branches } = session;
|
||||
let activeBranchIds = bids || [];
|
||||
const availableBranchesFromSession = user_branches?.allowed_branch || {};
|
||||
const notAllowedBranches = activeBranchIds.filter(
|
||||
(id) => !(id in availableBranchesFromSession)
|
||||
);
|
||||
|
||||
if (!activeBranchIds.length || notAllowedBranches.length) {
|
||||
activeBranchIds = [user_branches?.current_branch || 1];
|
||||
}
|
||||
return activeBranchIds;
|
||||
}
|
||||
|
||||
export const branchService = {
|
||||
dependencies: ["router"],
|
||||
|
||||
start(env, { router }) {
|
||||
const setBranch = (main_branch_id, branch_ids) => {
|
||||
const sortedBids = branch_ids.sort((a, b) => {
|
||||
if (a === main_branch_id) {
|
||||
return -1;
|
||||
} else if (b === main_branch_id) {
|
||||
return 1;
|
||||
} else {
|
||||
return a - b;
|
||||
}
|
||||
});
|
||||
|
||||
const bidsString = sortedBids.join(BIDS_SEPARATOR);
|
||||
cookie.set("bids", bidsString || String(main_branch_id));
|
||||
router.pushState({ bids: bidsString });
|
||||
browser.location.reload();
|
||||
};
|
||||
|
||||
return {
|
||||
setBranch,
|
||||
parseBranchIds,
|
||||
computeActiveBranchIds,
|
||||
};
|
||||
},
|
||||
};
|
||||
|
||||
registry.category("services").add("branch", branchService);
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates>
|
||||
<t t-name="branch.SwitchBranchMenu">
|
||||
<li class="o_switch_branch_menu">
|
||||
<a role="button" class="dropdown-toggle" data-toggle="dropdown" data-display="static" aria-expanded="false" href="#" title="Dropdown menu">
|
||||
<span t-attf-class="#{isMobile ? 'fa fa-building-o' : 'oe_topbar_name'}">
|
||||
<t t-if="!isMobile"><t t-esc="state.current_branch_name"/></t>
|
||||
</span>
|
||||
</a>
|
||||
<div class="dropdown-menu dropdown-menu-right" role="menu">
|
||||
<t t-foreach="state.user_branches" t-as="branch">
|
||||
<div class="dropdown-item1 d-flex py-0 px-0" data-menu="branch" t-att-data-branch-id="branch[0]" t-on-click="_onSwitchBranchClick">
|
||||
<t t-set="is_allowed" t-value="state.allowed_branch_ids.includes(branch[0])"/>
|
||||
<t t-set="is_current" t-value="branch[0] === state.current_branch"/>
|
||||
<div role="menuitemcheckbox" t-att-aria-checked="is_allowed" t-att-aria-label="branch[1]" tabindex="0" class="ml-auto pl-3 pr-3 border border-top-0 border-left-0 border-bottom-0 toggle_branch o_py">
|
||||
<span style="height: 2rem;">
|
||||
<t t-if="is_allowed">
|
||||
<i class="fa fa-fw fa-check-square pt-2"></i>
|
||||
</t>
|
||||
<t t-if="!is_allowed">
|
||||
<i class="fa fa-fw fa-square-o pt-2"></i>
|
||||
</t>
|
||||
</span>
|
||||
</div>
|
||||
<div role="button" t-att-aria-pressed="is_current" aria-label="Switch to this branch" tabindex="0" class="d-flex flex-grow-1 align-items-center py-0 log_into1 pl-3 o_py" t-att-style="is_current ? 'background-color: lightgrey;' : ''">
|
||||
<t t-if="is_allowed">
|
||||
<span class='mr-3 branch_label'>
|
||||
<t t-esc="branch[1]"/>
|
||||
</span>
|
||||
</t>
|
||||
<t t-if="!is_allowed">
|
||||
<span class='mr-3 branch_label text-muted'>
|
||||
<t t-esc="branch[1]"/>
|
||||
</span>
|
||||
</t>
|
||||
</div>
|
||||
</div>
|
||||
</t>
|
||||
</div>
|
||||
</li>
|
||||
</t>
|
||||
</templates>
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<template id="assets_backend_bi_multi_branch" inherit_id="web.assets_backend" name="Custom CSS-JS">
|
||||
<xpath expr="." position="inside">
|
||||
<script src="/branch/static/src/js/default_branch.js" type="text/javascript"></script>
|
||||
<script src="/branch/static/src/js/session.js" type="text/javascript"></script>
|
||||
<script src="/branch/static/src/js/abstract_web_client.js" type="text/javascript"></script>
|
||||
</xpath>
|
||||
</template>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_bank_statement_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.bank.statement.form.inherit.branch</field>
|
||||
<field name="model">account.bank.statement</field>
|
||||
<field name="inherit_id" ref="account.view_bank_statement_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="date" position="before">
|
||||
<!-- Add your fields or attributes here -->
|
||||
<field name="branch_id"/>
|
||||
</field>
|
||||
|
||||
<xpath expr="//field[@name='line_ids']/tree/field[@name='partner_id']" position="after">
|
||||
<field name='branch_id'/>
|
||||
</xpath>
|
||||
|
||||
<xpath expr="//field[@name='line_ids']" position="attributes">
|
||||
<attribute name="context">{'branch_id' : branch_id}</attribute>
|
||||
</xpath>
|
||||
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,107 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
|
||||
<record id="account_move_branch_view_tree" model="ir.ui.view" >
|
||||
<field name="name">account.move.inherit.tree</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="inherit_id" ref="account.view_move_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="account_move_branch_view_tree1" model="ir.ui.view" >
|
||||
<field name="name">account.move.inherit.tree1</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="inherit_id" ref="account.view_invoice_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="account_payment_branch_view_tree" model="ir.ui.view" >
|
||||
<field name="name">account.payment.inherit.tree</field>
|
||||
<field name="model">account.payment</field>
|
||||
<field name="inherit_id" ref="account.view_account_payment_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="account_move_line_branch_view_form" model="ir.ui.view" >
|
||||
<field name="name">account.move.line.inherit.form</field>
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="inherit_id" ref="account.view_move_line_form" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="partner_id" position="after">
|
||||
<field name="branch_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="account_move_line_branch_view_tree2" model="ir.ui.view" >
|
||||
<field name="name">account.move.line.inherit.tree2</field>
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="inherit_id" ref="account.view_move_line_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- journal entry Inherit Form View to Modify it -->
|
||||
<record id="view_move_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.move.form.inherit.branch</field>
|
||||
<field name="model">account.move</field>
|
||||
<field name="inherit_id" ref="account.view_move_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//div[@name='journal_div']" position="after">
|
||||
<label for="branch_id"/>
|
||||
<div name="branch_div" class="d-flex">
|
||||
<field name="branch_id"/>
|
||||
</div>
|
||||
</xpath>
|
||||
<!-- <xpath expr="//field[@name='line_ids']" position="attributes">
|
||||
<attribute name="context">{'branch_id' : branch_id}</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//field[@name='invoice_line_ids']" position="attributes">
|
||||
<attribute name="context">{'branch_id' : branch_id}</attribute>
|
||||
</xpath> -->
|
||||
<xpath expr="//field[@name='line_ids']//tree//field[@name='partner_id']" position="after">
|
||||
<field optional="hide" name="branch_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_move_line_tree_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.move.line.tree.inherit.branch</field>
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="inherit_id" ref="account.view_move_line_tree"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='partner_id']" position="after">
|
||||
<field name="branch_id" readonly="parent_state == 'posted'"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_move_line_order_filter_inherit_branch11" model="ir.ui.view">
|
||||
<field name="name">move.line.filter.inherit.branch</field>
|
||||
<field name="model">account.move.line</field>
|
||||
<field name="inherit_id" ref="account.view_account_move_line_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group" position="inside">
|
||||
<filter string="Branch" name="branch" domain="[]" context="{'group_by':'branch_id'}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="UTF-8" ?>
|
||||
<odoo>
|
||||
<record id="view_partner_structured_form_branch" model="ir.ui.view">
|
||||
<field name="name">view_partner_structured_form</field>
|
||||
<field name="model">res.partner</field>
|
||||
<field name="inherit_id" ref="base.view_partner_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="vat" position="after">
|
||||
<field name="branch_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
<?xml version="1.0"?>
|
||||
<odoo>
|
||||
<record id="product_template_form_view_branch" model="ir.ui.view">
|
||||
<field name="name">product_extended.product.form.branch</field>
|
||||
<field name="model">product.template</field>
|
||||
<field name="inherit_id" ref="product.product_template_only_form_view" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="product_product_view_form_branch" model="ir.ui.view">
|
||||
<field name="name">product.product.view.form.branch</field>
|
||||
<field name="model">product.product</field>
|
||||
<field name="inherit_id" ref="product.product_normal_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,52 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="purchase_order_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">purchase.order.form.inherit.branch</field>
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="inherit_id" ref="purchase.purchase_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="incoterm_id" position="after">
|
||||
<field name="branch_id"/>
|
||||
</field>
|
||||
<xpath expr="//field[@name='order_line']" position="attributes">
|
||||
<attribute name="context">{'branch_id' : branch_id}</attribute>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_purchase_order_filter_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.purchase.order.filter.inherit.branch</field>
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="inherit_id" ref="purchase.view_purchase_order_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group" position="inside">
|
||||
<filter string="Branch" name="branch" domain="[]" context="{'group_by':'branch_id'}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="purchase_order_branch_view_tree" model="ir.ui.view" >
|
||||
<field name="name">purchase.order.inherit.tree</field>
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="inherit_id" ref="purchase.purchase_order_view_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="purchase_order_branch_view_tree1" model="ir.ui.view" >
|
||||
<field name="name">purchase.order.inherit.tree1</field>
|
||||
<field name="model">purchase.order</field>
|
||||
<field name="inherit_id" ref="purchase.purchase_order_kpis_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Users Inherit Form View to Modify it -->
|
||||
<record id="view_users_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.users.form.inherit.branch</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//sheet/notebook/page[2]/group[1]" position="before">
|
||||
<!-- Add your fields or attributes here -->
|
||||
<group name="branch">
|
||||
<field name="branch_ids" widget="many2many_tags"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="branch_id"/>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_user_preference_form_extended" model="ir.ui.view">
|
||||
<field name="name">res.user.preference.form.extended</field>
|
||||
<field name="model">res.users</field>
|
||||
<field name="inherit_id" ref="base.view_users_form_simple_modif"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='company_id']" position="after">
|
||||
<field name="branch_id" options="{'no_create': True}" context="{'branch_id':branch_id}" groups="branch.group_branch_user_manager"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,55 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Sale order Inherit Form View to Modify it -->
|
||||
<record id="view_order_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.order.form.inherit.branch</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="sale.view_order_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//page[@name='other_information']" position="inside">
|
||||
<!-- Add your fields or attributes here -->
|
||||
<group string="Branch" name="branch">
|
||||
<group>
|
||||
<field name="branch_id"/>
|
||||
</group>
|
||||
</group>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Sale order Inherit search View to Modify it -->
|
||||
<record id="view_sales_order_filter_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.sales.order.filter.inherit.branch</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="sale.view_sales_order_filter"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//group" position="inside">
|
||||
<filter string="Branch" name="branch" domain="[]" context="{'group_by':'branch_id'}"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_branch_view_tree" model="ir.ui.view" >
|
||||
<field name="name">sale.order.inherit.tree</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="sale.view_order_tree" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="sale_order_branch_view_tree1" model="ir.ui.view" >
|
||||
<field name="name">sale.order.inherit.tree1</field>
|
||||
<field name="model">sale.order</field>
|
||||
<field name="inherit_id" ref="sale.view_quotation_tree_with_onboarding" />
|
||||
<field name="arch" type="xml">
|
||||
<field name="company_id" position="after">
|
||||
<field name="branch_id" optional="hide"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_stock_inventory_adjustment_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.stock.inventory.adjustment.form.inherit.branch</field>
|
||||
<field name="model">stock.inventory.adjustment.name</field>
|
||||
<field name="inherit_id" ref="stock.stock_inventory_adjustment_name_form_view"/>
|
||||
<field name="arch" type="xml">
|
||||
<field name="inventory_adjustment_name" position="after">
|
||||
<field name="branch_id"/>
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<record id="view_location_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.location.form.inherit.branch</field>
|
||||
<field name="model">stock.location</field>
|
||||
<field name="inherit_id" ref="stock.view_location_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='company_id']" position="before">
|
||||
<field name="branch_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Stock move Inherit Form View to Modify it -->
|
||||
<record id="view_move_form_inherit_branch_form_stock" model="ir.ui.view">
|
||||
<field name="name">view.move.form.inherit.branch</field>
|
||||
<field name="model">stock.move</field>
|
||||
<field name="inherit_id" ref="stock.view_move_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='product_id']" position="after">
|
||||
<field name="branch_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
<data>
|
||||
<!-- Stock Picking Inherit Form View to Modify it -->
|
||||
<record id="view_picking_form_inherit_branch" model="ir.ui.view">
|
||||
<field name="name">view.picking.form.inherit.branch</field>
|
||||
<field name="model">stock.picking</field>
|
||||
<field name="inherit_id" ref="stock.view_picking_form"/>
|
||||
<field name="arch" type="xml">
|
||||
<xpath expr="//field[@name='origin']"
|
||||
position="after">
|
||||
<!-- Add your fields or attributes here -->
|
||||
<field name="branch_id"/>
|
||||
</xpath>
|
||||
</field>
|
||||
</record>
|
||||
</data>
|
||||
</odoo>
|
||||