diff --git a/addons/ERPLibre_erplibre_addons b/addons/ERPLibre_erplibre_addons
new file mode 160000
index 0000000..2ae1a1f
--- /dev/null
+++ b/addons/ERPLibre_erplibre_addons
@@ -0,0 +1 @@
+Subproject commit 2ae1a1f78563fd4dbe7be21909d3d50db9e5fca2
diff --git a/addons/SanteLibre_santelibre_addons b/addons/SanteLibre_santelibre_addons
new file mode 160000
index 0000000..937032a
--- /dev/null
+++ b/addons/SanteLibre_santelibre_addons
@@ -0,0 +1 @@
+Subproject commit 937032a1fc19f56d1646fe24bea72693d9c8b814
diff --git a/addons/addons/erplibre_base/__init__.py b/addons/addons/erplibre_base/__init__.py
deleted file mode 100644
index ef5ae35..0000000
--- a/addons/addons/erplibre_base/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
diff --git a/addons/addons/erplibre_base/__manifest__.py b/addons/addons/erplibre_base/__manifest__.py
deleted file mode 100644
index 8c98323..0000000
--- a/addons/addons/erplibre_base/__manifest__.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-
-{
- 'name': 'ERPLibre base',
- 'version': '0.1',
- 'author': "ERPLibre",
- 'website': 'https://erplibre.ca',
- 'license': 'AGPL-3',
- 'category': 'Human Resources',
- 'summary': 'INSTALL my base',
- 'description': """
-ERPLibreBase
-===============
-
-""",
- 'depends': [
- # Custom ERPLibre
- # OCA
- 'web_responsive',
-
- # OCA server-brand
- 'disable_odoo_online',
- 'remove_odoo_enterprise',
-
- # OCA website
- 'website_odoo_debranding',
- 'website_no_crawler',
-
- # Server-tools
- 'fetchmail_notify_error_to_sender',
-
- # Social
- 'mail_debrand',
-
- # Partner
- 'partner_quebec_tz',
- ],
- 'data': [],
- 'installable': True,
-}
diff --git a/addons/addons/erplibre_base/static/description/icon.png b/addons/addons/erplibre_base/static/description/icon.png
deleted file mode 100644
index 8489202..0000000
Binary files a/addons/addons/erplibre_base/static/description/icon.png and /dev/null differ
diff --git a/addons/addons/erplibre_base/static/description/index.html b/addons/addons/erplibre_base/static/description/index.html
deleted file mode 100644
index ff5d662..0000000
--- a/addons/addons/erplibre_base/static/description/index.html
+++ /dev/null
@@ -1,485 +0,0 @@
-
-
-
-
-
- MathBenTechBase
-
-
-
-
-
MathBenTechBase
-
-
-
-
-
-
diff --git a/addons/addons/erplibre_base_enterprise/__init__.py b/addons/addons/erplibre_base_enterprise/__init__.py
deleted file mode 100644
index ef5ae35..0000000
--- a/addons/addons/erplibre_base_enterprise/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
diff --git a/addons/addons/erplibre_base_enterprise/__manifest__.py b/addons/addons/erplibre_base_enterprise/__manifest__.py
deleted file mode 100644
index 3d1999f..0000000
--- a/addons/addons/erplibre_base_enterprise/__manifest__.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-
-{
- 'name': 'ERPLibre base enterprise',
- 'version': '0.1',
- 'author': "ERPLibre",
- 'website': 'https://erplibre.ca',
- 'license': 'AGPL-3',
- 'category': 'Human Resources',
- 'summary': 'INSTALL my base enterprise',
- 'description': """
-ERPLibreBase
-===============
-
-""",
- 'depends': [
- # Custom ERPLibre
- 'erplibre_base',
-
- 'hr_expense_associate_with_customer',
- 'hr_expense_tip',
-
- 'sale_order_line_limit',
-
- 'res_partner_fix_group_by_company',
- 'configure_quebec_tax',
- 'crm_filter_all',
- 'sale_degroup_tax',
-
- 'helpdesk_mailing_list',
-
- # Odoo base
- 'account',
-
- 'board',
-
- 'contacts',
-
- 'crm',
-
- 'portal',
-
- 'payment',
- 'payment_transfer',
-
- 'project',
-
- 'purchase',
-
- 'hr',
- 'hr_expense',
- 'hr_org_chart',
-
- 'website',
- 'website_crm',
-
- 'sale',
- 'sale_management',
- 'stock',
-
- # OCA
- 'website_form_builder',
- 'website_snippet_anchor',
- 'partner_no_vat',
-
- # Numigi
- 'project_chatter',
- # 'project_iteration',
-
- # Canada
- 'l10n_ca',
-
- # Scrummer
- 'project_agile_sale_timesheet',
- 'scrummer',
- 'scrummer_kanban',
- 'scrummer_scrum',
- 'scrummer_workflow_security',
- 'scrummer_workflow_transition_by_project',
- 'scrummer_workflow_transitions_by_task_type',
- ],
- 'data': [],
- 'installable': True,
-}
diff --git a/addons/addons/erplibre_base_enterprise/static/description/icon.png b/addons/addons/erplibre_base_enterprise/static/description/icon.png
deleted file mode 100644
index 8489202..0000000
Binary files a/addons/addons/erplibre_base_enterprise/static/description/icon.png and /dev/null differ
diff --git a/addons/addons/erplibre_base_enterprise/static/description/index.html b/addons/addons/erplibre_base_enterprise/static/description/index.html
deleted file mode 100644
index d9f321d..0000000
--- a/addons/addons/erplibre_base_enterprise/static/description/index.html
+++ /dev/null
@@ -1,485 +0,0 @@
-
-
-
-
-
- MathBenTechBaseEnterprise
-
-
-
-
-
MathBenTechBaseEnterprise
-
-
-
-
-
-
diff --git a/addons/addons/erplibre_base_entreprise_mrp/__init__.py b/addons/addons/erplibre_base_entreprise_mrp/__init__.py
deleted file mode 100644
index ef5ae35..0000000
--- a/addons/addons/erplibre_base_entreprise_mrp/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
diff --git a/addons/addons/erplibre_base_entreprise_mrp/__manifest__.py b/addons/addons/erplibre_base_entreprise_mrp/__manifest__.py
deleted file mode 100644
index e7c3f7a..0000000
--- a/addons/addons/erplibre_base_entreprise_mrp/__manifest__.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-
-{
- 'name': 'ERPLibre base entreprise MRP',
- 'version': '0.1',
- 'author': "ERPLibre",
- 'website': 'https://erplibre.ca',
- 'license': 'AGPL-3',
- 'category': 'Human Resources',
- 'summary': 'INSTALL my base entreprise MRP',
- 'description': """
-ERPLibreBase
-===============
-
-""",
- 'depends': [
- # Custom ERPLibre
- 'erplibre_base',
-
- 'res_partner_fix_group_by_company',
- 'crm_filter_all',
-
- 'website_helpdesk',
- 'website_portal_contact',
- 'website_portal_address',
- 'product_manufacturer_model',
- 'helpdesk_mailing_list',
- 'helpdesk_join_team',
-
- # Odoo base
- 'account',
-
- 'board',
-
- 'contacts',
-
- 'crm',
-
- 'portal',
-
- 'payment',
- 'payment_transfer',
-
- 'project',
-
- 'website',
- 'website_crm',
-
- # OCA
- 'website_form_builder',
- 'website_snippet_anchor',
- 'partner_no_vat',
- 'helpdesk_mgmt',
- 'helpdesk_service_call',
- 'helpdesk_supplier',
-
- # Numigi
- 'project_chatter',
- # 'project_iteration',
-
- # Canada
- 'l10n_ca',
-
- # Scrummer
- 'project_agile_sale_timesheet',
- 'scrummer',
- 'scrummer_kanban',
- 'scrummer_scrum',
- 'scrummer_workflow_security',
- 'scrummer_workflow_transition_by_project',
- 'scrummer_workflow_transitions_by_task_type',
-
- # OCA helpdesk
- 'helpdesk_mgmt',
-
- # OCA manufacture
- 'mrp_auto_assign',
- 'mrp_bom_component_menu',
- 'mrp_bom_line_sequence',
- 'mrp_bom_location',
- 'mrp_bom_tracking',
- 'mrp_multi_level',
- 'mrp_multi_level_estimate',
- 'mrp_production_putaway_strategy',
- 'mrp_production_request',
- 'mrp_production_auto_post_inventory',
- 'mrp_production_grouped_by_product',
- 'mrp_stock_orderpoint_manual_procurement',
- 'mrp_unbuild_tracked_raw_material',
- 'mrp_workorder_sequence',
- 'repair_refurbish',
-
- # OCA stock-logistics-warehouse
- 'mrp_warehouse_calendar',
- 'stock_available_mrp',
- 'stock_orderpoint_mrp_link',
-
- # OCA contract
- 'agreement_mrp',
-
- # OCA account-analytic
- 'mrp_analytic',
-
- # ODOO S.A.
- 'mrp',
- 'helpdesk_mrp',
- 'mrp_byproduct',
- 'mrp_workcenters_machines',
- 'product_mrp_info',
- 'purchase_mrp',
- 'sale_mrp',
- 'mrp_bom_cost',
- 'res_partner_supplier_own_mrp_work_centers',
-
- ],
- 'data': [],
- 'installable': True,
-}
diff --git a/addons/addons/erplibre_base_entreprise_mrp/static/description/icon.png b/addons/addons/erplibre_base_entreprise_mrp/static/description/icon.png
deleted file mode 100644
index 8489202..0000000
Binary files a/addons/addons/erplibre_base_entreprise_mrp/static/description/icon.png and /dev/null differ
diff --git a/addons/addons/erplibre_base_entreprise_mrp/static/description/index.html b/addons/addons/erplibre_base_entreprise_mrp/static/description/index.html
deleted file mode 100644
index af14009..0000000
--- a/addons/addons/erplibre_base_entreprise_mrp/static/description/index.html
+++ /dev/null
@@ -1,485 +0,0 @@
-
-
-
-
-
- MathBenTechBaseHackaton
-
-
-
-
-
MathBenTechBaseHackaton
-
-
-
-
-
-
diff --git a/addons/addons/erplibre_base_hackaton/__init__.py b/addons/addons/erplibre_base_hackaton/__init__.py
deleted file mode 100644
index ef5ae35..0000000
--- a/addons/addons/erplibre_base_hackaton/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
diff --git a/addons/addons/erplibre_base_hackaton/__manifest__.py b/addons/addons/erplibre_base_hackaton/__manifest__.py
deleted file mode 100644
index a294972..0000000
--- a/addons/addons/erplibre_base_hackaton/__manifest__.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-
-{
- 'name': 'ERPLibre base hackaton',
- 'version': '0.1',
- 'author': "ERPLibre",
- 'website': 'https://erplibre.ca',
- 'license': 'AGPL-3',
- 'category': 'Human Resources',
- 'summary': 'INSTALL my base hackaton',
- 'description': """
-ERPLibreBase
-===============
-
-""",
- 'depends': [
- # Custom ERPLibre
- 'erplibre_base',
-
- 'res_partner_fix_group_by_company',
- 'crm_filter_all',
-
- 'helpdesk_service_call',
- 'website_helpdesk',
- 'website_portal_contact',
- 'website_portal_address',
-
- # Odoo base
- 'account',
-
- 'board',
-
- 'contacts',
-
- 'crm',
-
- 'portal',
-
- 'payment',
- 'payment_transfer',
-
- 'project',
-
- 'website',
- 'website_crm',
-
- # OCA
- 'website_form_builder',
- 'website_snippet_anchor',
- 'partner_no_vat',
-
- # Numigi
- 'project_chatter',
- # 'project_iteration',
-
- # Canada
- 'l10n_ca',
-
- # Scrummer
- 'project_agile_sale_timesheet',
- 'scrummer',
- 'scrummer_kanban',
- 'scrummer_scrum',
- 'scrummer_workflow_security',
- 'scrummer_workflow_transition_by_project',
- 'scrummer_workflow_transitions_by_task_type',
-
- # OCA helpdesk
- 'helpdesk_mgmt',
- ],
- 'data': [],
- 'installable': True,
-}
diff --git a/addons/addons/erplibre_base_hackaton/static/description/icon.png b/addons/addons/erplibre_base_hackaton/static/description/icon.png
deleted file mode 100644
index 8489202..0000000
Binary files a/addons/addons/erplibre_base_hackaton/static/description/icon.png and /dev/null differ
diff --git a/addons/addons/erplibre_base_hackaton/static/description/index.html b/addons/addons/erplibre_base_hackaton/static/description/index.html
deleted file mode 100644
index af14009..0000000
--- a/addons/addons/erplibre_base_hackaton/static/description/index.html
+++ /dev/null
@@ -1,485 +0,0 @@
-
-
-
-
-
- MathBenTechBaseHackaton
-
-
-
-
-
MathBenTechBaseHackaton
-
-
-
-
-
-
diff --git a/addons/addons/erplibre_enterprise_services_for_utility_business/__init__.py b/addons/addons/erplibre_enterprise_services_for_utility_business/__init__.py
deleted file mode 100644
index 4cdf2e8..0000000
--- a/addons/addons/erplibre_enterprise_services_for_utility_business/__init__.py
+++ /dev/null
@@ -1,2 +0,0 @@
-# -*- coding: utf-8 -*-
-# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
diff --git a/addons/addons/erplibre_enterprise_services_for_utility_business/__manifest__.py b/addons/addons/erplibre_enterprise_services_for_utility_business/__manifest__.py
deleted file mode 100644
index 8afff61..0000000
--- a/addons/addons/erplibre_enterprise_services_for_utility_business/__manifest__.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# -*- coding: utf-8 -*-
-# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
-
-{
- 'name': 'ERPLibre Enterprise Services for utility business',
- 'version': '0.1',
- 'author': "ERPLibre",
- 'website': 'https://erplibre.ca',
- 'license': 'AGPL-3',
- 'category': 'Other',
- 'summary': 'Services for utility business',
- 'description': """
-ERPLibre Enterprise Services for utility business
-====================================================
-All modules needed for enterprise with services for utility business.
-""",
- 'depends': [
- # ERPLibre
- 'erplibre_base_enterprise',
-
- # Custom ERPLibre
- 'product_lump_sum',
- # 'sale_margin_percent',
- 'sale_report_margin',
- 'sale_order_margin_percent',
- 'sale_margin_security',
- 'sale_product_manufacturer',
- 'sale_product_manufacturer_model',
- # 'sale_hide_tax_sale_order_lines', # Bug
- 'sale_crm_auto_update_lead',
- 'crm_marge',
- 'menu_force_project_first',
- 'crm_working_date',
- 'helpdesk_service_call',
- 'website_helpdesk',
- 'website_portal_contact',
- 'website_portal_address',
-
- # OCA sale-workflow
- 'sale_order_revision',
- 'sale_double_validation',
-
- # OCA helpdesk
- 'helpdesk_mgmt',
-
- # General
- 'digest', # KPI
- ],
- 'data': [],
- 'installable': True,
-}
diff --git a/addons/addons/erplibre_enterprise_services_for_utility_business/i18n/fr_CA.po b/addons/addons/erplibre_enterprise_services_for_utility_business/i18n/fr_CA.po
deleted file mode 100644
index bfd6e20..0000000
--- a/addons/addons/erplibre_enterprise_services_for_utility_business/i18n/fr_CA.po
+++ /dev/null
@@ -1,257 +0,0 @@
-# Translation of Odoo Server.
-# This file contains the translation of the following modules:
-# * sale
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-12-09 22:55+0000\n"
-"PO-Revision-Date: 2019-12-09 22:55+0000\n"
-"Last-Translator: Alexandre Ferreira Benevides \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: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_order_view_search_inherit_quotation
-msgid "My Quotations"
-msgstr "Mes Soumissions"
-
-#. module: sale
-#: model:ir.model.fields,field_description:sale.field_sale_order__client_order_ref
-msgid "Customer Reference"
-msgstr "Ref. client (PO)"
-
-#. module: sale_cancel_reason
-#: model:sale.order.cancel.reason,name:sale_cancel_reason.cancel_reason_only_quotation
-msgid "Just for Quotation"
-msgstr "Uniquement pour la soumission"
-
-#. module: purchase
-#: model:mail.template,body_html:purchase.email_template_edi_purchase
-msgid ""
-"\n"
-"
\n"
-" Dear ${object.partner_id.name}\n"
-" % if object.partner_id.parent_id:\n"
-" (${object.partner_id.parent_id.name})\n"
-" % endif\n"
-"
\n"
-" Here is in attachment a request for quotation ${object.name}\n"
-" % if object.partner_ref:\n"
-" with reference: ${object.partner_ref}\n"
-" % endif\n"
-" from ${object.company_id.name}.\n"
-"
\n"
-" If you have any questions, please do not hesitate to contact us.\n"
-"
\n"
-" Best regards,\n"
-"
\n"
-"
"
-msgstr ""
-"\n"
-"
\n"
-" Cher(e) ${object.partner_id.name}\n"
-" % if object.partner_id.parent_id:\n"
-" (${object.partner_id.parent_id.name})\n"
-" % endif\n"
-"
\n"
-" Vous trouverez en pièce jointe une demande de soumission ${object.name}\n"
-" % if object.partner_ref:\n"
-" with reference: ${object.partner_ref}\n"
-" % endif\n"
-" de ${object.company_id.name}.\n"
-"
\n"
-" N'hésitez pas à nous contacter si vous avez des questions.\n"
-"
\n"
-" Salutations,\n"
-"
\n"
-"
"
-
-#. module: sale_order_revision
-#: model_terms:ir.ui.view,arch_db:sale_order_revision.view_order_form
-msgid "New Revision of Quotation"
-msgstr "Nouvelle version de la soumission"
-
-#. module: sale_product_set
-#: model_terms:ir.ui.view,arch_db:sale_product_set.product_set_add_form_view
-msgid "Add set in sale order line"
-msgstr "Ajout d'un Set à la soumission"
-
-#. module: crm
-#: model:mail.activity.type,name:crm.mail_activity_demo_followup_quote
-msgid "Follow-up Quote"
-msgstr "Faire suivi de soumission"
-
-#. module: crm
-#: model:mail.activity.type,name:crm.mail_activity_demo_make_quote
-msgid "Make Quote"
-msgstr "Faire soumission"
-
-#. module: crm
-#: model_terms:ir.actions.act_window,help:crm.crm_case_form_view_salesteams_opportunity
-msgid ""
-"You will be able to plan meetings and phone calls from\n"
-" opportunities, convert them into quotations, attach related\n"
-" documents, track all discussions, and much more."
-msgstr ""
-"Vous serez en mesure de planifier des réunions et des appels provenant\n"
-" d'opportunités, de les convertir en soumissions, de joindre des documents\n"
-" connexes, de suivre toutes les discussions et bien plus encore."
-
-#. module: hr
-#: model_terms:hr.job,website_description:hr.job_consultant
-msgid "Analyse needs, write specification documents and quotation"
-msgstr ""
-"Analyser des besoins, écrire des documents de spécification et des soumissions"
-
-#. module: hr
-#: model_terms:hr.job,website_description:hr.job_consultant
-msgid ""
-"We are looking for a motivated and results-driven Functional Consultant! You"
-" will take part in the consulting services we provide to our partners and "
-"customers, on the functional side. Your job start from the quotation to the "
-"customer to the delivery to the customer. You listen the customer and try to"
-" give him the best service. You report to the head of consulting service and"
-" will be coached by a senior consultant."
-msgstr ""
-"Nous sommes à la recherche d'un consultant fonctionnel motivé et axé sur les"
-" résultats ! Vous prendrez part aux services de consultation de niveau "
-"fonctionnel que nous offrons à nos partenaires et clients. Votre travail "
-"débute à la production de soumissions pour les clients et se poursuit jusqu'à la "
-"livraison. Vous êtes à l'écoute du client et lui fournissez le meilleur "
-"service. Vous rapportez au chef du service de consultation et serez formé "
-"par un consultant senior."
-
-#. module: purchase_requisition
-#: code:addons/purchase_requisition/models/purchase_requisition.py:116
-#, python-format
-msgid "Cancelled by the agreement associated to this quotation."
-msgstr "Annulé par le contrat associé à cette soumission."
-
-#. module: purchase_requisition
-#: model_terms:ir.ui.view,arch_db:purchase_requisition.view_purchase_requisition_type_form
-msgid "Data for new quotations"
-msgstr "Données pour nouvelles soumissions"
-
-#. module: purchase_requisition
-#: selection:purchase.requisition.type,line_copy:0
-msgid "Do not create RfQ lines automatically"
-msgstr "Ne pas créer de lignes de demande de soumission automatiquement"
-
-#. module: purchase_requisition
-#: model_terms:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition
-msgid ""
-"In a call for tenders, you can record the products you need to buy\n"
-" and generate the creation of RfQs to vendors. Once the tenders have\n"
-" been registered, you can review and compare them and you can\n"
-" validate some and cancel others."
-msgstr ""
-"Dans le cas d'un appel d'offres, vous pouvez enregistrer les produits que vous souhaitez acheter\n"
-" et générer des demandes de soumission pour les fournisseurs. Une fois les offres\n"
-" enregistrées, vous pouvez les examiner et les comparer, puis en\n"
-" valider certaines et annuler les autres."
-
-#. module: purchase_requisition
-#: model_terms:ir.ui.view,arch_db:purchase_requisition.view_purchase_requisition_form
-msgid "New Quotation"
-msgstr "Nouvelle soumission"
-
-#. module: purchase_requisition
-#: model_terms:ir.ui.view,arch_db:purchase_requisition.view_purchase_requisition_form
-msgid "RFQs/Orders"
-msgstr "Demandes de soumissions/commandes"
-
-#. module: purchase_requisition
-#: model:ir.model.fields,help:purchase_requisition.field_purchase_requisition_type__exclusive
-msgid ""
-"Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n"
-"\n"
-" Select multiple RFQ: allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders"
-msgstr ""
-"Sélectionner une seule demande de soumission (exclusive) : lorsqu'un bon de commande est confirmé, annuler les autres bons de commande.\n"
-"\n"
-" Sélectionner plusieurs demandes de soumission : autoriser les demandes de soumission multiples. Lorsqu'un bon de commande est confirmé, les autres bons ne sont pas annulés."
-
-#. module: purchase_requisition
-#: code:addons/purchase_requisition/models/purchase_requisition.py:156
-#, python-format
-msgid ""
-"You have to cancel or validate every RfQ before closing the purchase "
-"requisition."
-msgstr ""
-"Vous devez annuler ou valider chaque demande de soumission avant de clôturer la "
-"demande d'achat."
-
-#. module: sale_crm
-#: model_terms:ir.ui.view,arch_db:sale_crm.crm_case_form_view_oppor
-msgid " Quotation(s) "
-msgstr "Soumission(s) "
-
-#. module: sale_crm
-#: model:ir.ui.menu,name:sale_crm.sale_order_menu_quotations_crm
-msgid "My Quotations"
-msgstr "Mes Soumissions"
-
-#. module: sale_crm
-#: model_terms:ir.ui.view,arch_db:sale_crm.crm_case_form_view_oppor
-msgid "New Quotation"
-msgstr "Nouvelle soumission"
-
-#. module: sale_crm
-#: model:ir.model.fields,field_description:sale_crm.field_crm_lead__sale_number
-msgid "Number of Quotations"
-msgstr "Nombre de soumissions"
-
-#. module: sale_crm
-#: model:ir.actions.act_window,name:sale_crm.sale_action_quotations_new
-msgid "Quotation"
-msgstr "Soumission"
-
-#. module: sale_crm
-#: model:ir.actions.act_window,name:sale_crm.sale_action_quotations
-msgid "Quotations"
-msgstr "Soumissions"
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.report_saleorder_document
-msgid "Quotation Date:"
-msgstr "Date soumission :"
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.view_quotation_tree
-msgid "Quotation Date"
-msgstr "Date de la soumission"
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.onboarding_quotation_layout_step
-msgid "Customize the look of your quotations."
-msgstr "Personnalisez le look de vos soumissions."
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.onboarding_quotation_layout_step
-msgid "Quotation Layout"
-msgstr "Layout des soumissions"
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_onboarding_order_confirmation_step
-msgid "Choose how to confirm quotations and get paid."
-msgstr "Choisissez comment confirmer vos soumissions et être payé."
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_onboarding_sample_quotation_step
-msgid "Send a quotation to test the customer portal."
-msgstr "Envoyer une soumission pour tester le portail client."
-
-#. module: sale_management
-#: model_terms:ir.actions.act_window,help:sale_management.sale_order_template_action
-msgid "Create your quotation template"
-msgstr "Créer votre modèle de soumission"
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_onboarding_sample_quotation_step
-msgid "Sample Quotation"
-msgstr "Modèle de soumission"
\ No newline at end of file
diff --git a/addons/addons/erplibre_enterprise_services_for_utility_business/i18n/mathbentech_enterprise_services_for_utility_business.pot b/addons/addons/erplibre_enterprise_services_for_utility_business/i18n/mathbentech_enterprise_services_for_utility_business.pot
deleted file mode 100644
index 16bac57..0000000
--- a/addons/addons/erplibre_enterprise_services_for_utility_business/i18n/mathbentech_enterprise_services_for_utility_business.pot
+++ /dev/null
@@ -1,224 +0,0 @@
-# Translation of Odoo Server.
-# This file contains the translation of the following modules:
-# * sale
-#
-msgid ""
-msgstr ""
-"Project-Id-Version: Odoo Server 12.0\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2019-12-09 22:55+0000\n"
-"PO-Revision-Date: 2019-12-09 22:55+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: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_order_view_search_inherit_quotation
-msgid "My Quotations"
-msgstr ""
-
-#. module: sale
-#: model:ir.model.fields,field_description:sale.field_sale_order__client_order_ref
-msgid "Customer Reference"
-msgstr ""
-
-#. module: sale_cancel_reason
-#: model:sale.order.cancel.reason,name:sale_cancel_reason.cancel_reason_only_quotation
-msgid "Just for Quotation"
-msgstr ""
-
-#. module: purchase
-#: model:mail.template,body_html:purchase.email_template_edi_purchase
-msgid ""
-"\n"
-"
\n"
-" Dear ${object.partner_id.name}\n"
-" % if object.partner_id.parent_id:\n"
-" (${object.partner_id.parent_id.name})\n"
-" % endif\n"
-"
\n"
-" Here is in attachment a request for quotation ${object.name}\n"
-" % if object.partner_ref:\n"
-" with reference: ${object.partner_ref}\n"
-" % endif\n"
-" from ${object.company_id.name}.\n"
-"
\n"
-" If you have any questions, please do not hesitate to contact us.\n"
-"
\n"
-" Best regards,\n"
-"
\n"
-"
"
-msgstr ""
-
-#. module: sale_order_revision
-#: model_terms:ir.ui.view,arch_db:sale_order_revision.view_order_form
-msgid "New Revision of Quotation"
-msgstr ""
-
-#. module: sale_product_set
-#: model_terms:ir.ui.view,arch_db:sale_product_set.product_set_add_form_view
-msgid "Add set in sale order line"
-msgstr ""
-
-#. module: crm
-#: model:mail.activity.type,name:crm.mail_activity_demo_followup_quote
-msgid "Follow-up Quote"
-msgstr ""
-
-#. module: crm
-#: model:mail.activity.type,name:crm.mail_activity_demo_make_quote
-msgid "Make Quote"
-msgstr ""
-
-#. module: crm
-#: model_terms:ir.actions.act_window,help:crm.crm_case_form_view_salesteams_opportunity
-msgid ""
-"You will be able to plan meetings and phone calls from\n"
-" opportunities, convert them into quotations, attach related\n"
-" documents, track all discussions, and much more."
-msgstr ""
-
-#. module: hr
-#: model_terms:hr.job,website_description:hr.job_consultant
-msgid "Analyse needs, write specification documents and quotation"
-msgstr ""
-
-#. module: hr
-#: model_terms:hr.job,website_description:hr.job_consultant
-msgid ""
-"We are looking for a motivated and results-driven Functional Consultant! You"
-" will take part in the consulting services we provide to our partners and "
-"customers, on the functional side. Your job start from the quotation to the "
-"customer to the delivery to the customer. You listen the customer and try to"
-" give him the best service. You report to the head of consulting service and"
-" will be coached by a senior consultant."
-msgstr ""
-
-#. module: purchase_requisition
-#: code:addons/purchase_requisition/models/purchase_requisition.py:116
-#, python-format
-msgid "Cancelled by the agreement associated to this quotation."
-msgstr ""
-
-#. module: purchase_requisition
-#: model_terms:ir.ui.view,arch_db:purchase_requisition.view_purchase_requisition_type_form
-msgid "Data for new quotations"
-msgstr ""
-
-#. module: purchase_requisition
-#: selection:purchase.requisition.type,line_copy:0
-msgid "Do not create RfQ lines automatically"
-msgstr ""
-
-#. module: purchase_requisition
-#: model_terms:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition
-msgid ""
-"In a call for tenders, you can record the products you need to buy\n"
-" and generate the creation of RfQs to vendors. Once the tenders have\n"
-" been registered, you can review and compare them and you can\n"
-" validate some and cancel others."
-msgstr ""
-
-#. module: purchase_requisition
-#: model_terms:ir.ui.view,arch_db:purchase_requisition.view_purchase_requisition_form
-msgid "New Quotation"
-msgstr ""
-
-#. module: purchase_requisition
-#: model_terms:ir.ui.view,arch_db:purchase_requisition.view_purchase_requisition_form
-msgid "RFQs/Orders"
-msgstr ""
-
-#. module: purchase_requisition
-#: model:ir.model.fields,help:purchase_requisition.field_purchase_requisition_type__exclusive
-msgid ""
-"Select only one RFQ (exclusive): when a purchase order is confirmed, cancel the remaining purchase order.\n"
-"\n"
-" Select multiple RFQ: allows multiple purchase orders. On confirmation of a purchase order it does not cancel the remaining orders"
-msgstr ""
-
-#. module: purchase_requisition
-#: code:addons/purchase_requisition/models/purchase_requisition.py:156
-#, python-format
-msgid ""
-"You have to cancel or validate every RfQ before closing the purchase "
-"requisition."
-msgstr ""
-
-#. module: sale_crm
-#: model_terms:ir.ui.view,arch_db:sale_crm.crm_case_form_view_oppor
-msgid " Quotation(s) "
-msgstr ""
-
-#. module: sale_crm
-#: model:ir.ui.menu,name:sale_crm.sale_order_menu_quotations_crm
-msgid "My Quotations"
-msgstr ""
-
-#. module: sale_crm
-#: model_terms:ir.ui.view,arch_db:sale_crm.crm_case_form_view_oppor
-msgid "New Quotation"
-msgstr ""
-
-#. module: sale_crm
-#: model:ir.model.fields,field_description:sale_crm.field_crm_lead__sale_number
-msgid "Number of Quotations"
-msgstr ""
-
-#. module: sale_crm
-#: model:ir.actions.act_window,name:sale_crm.sale_action_quotations_new
-msgid "Quotation"
-msgstr ""
-
-#. module: sale_crm
-#: model:ir.actions.act_window,name:sale_crm.sale_action_quotations
-msgid "Quotations"
-msgstr ""
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.report_saleorder_document
-msgid "Quotation Date:"
-msgstr ""
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.view_quotation_tree
-msgid "Quotation Date"
-msgstr ""
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.onboarding_quotation_layout_step
-msgid "Customize the look of your quotations."
-msgstr ""
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.onboarding_quotation_layout_step
-msgid "Quotation Layout"
-msgstr ""
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_onboarding_order_confirmation_step
-msgid "Choose how to confirm quotations and get paid."
-msgstr ""
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_onboarding_sample_quotation_step
-msgid "Send a quotation to test the customer portal."
-msgstr ""
-
-#. module: sale_management
-#: model_terms:ir.actions.act_window,help:sale_management.sale_order_template_action
-msgid "Create your quotation template"
-msgstr ""
-
-#. module: sale_quotation_builder
-#: model:ir.model,name:sale_quotation_builder.model_sale_order_template
-msgid "Quotation Template"
-msgstr ""
-
-#. module: sale
-#: model_terms:ir.ui.view,arch_db:sale.sale_onboarding_sample_quotation_step
-msgid "Sample Quotation"
-msgstr ""
\ No newline at end of file
diff --git a/script/fork_project_ERPLibre.py b/script/fork_project_ERPLibre.py
index ffa0441..64acd5d 100644
--- a/script/fork_project_ERPLibre.py
+++ b/script/fork_project_ERPLibre.py
@@ -4,6 +4,7 @@ import sys
import argparse
import logging
from git import Repo
+import git
new_path = os.path.normpath(os.path.join(os.path.dirname(__file__), '..'))
sys.path.append(new_path)
@@ -50,6 +51,7 @@ def main():
config = get_config()
github_token = config.github_token
git_tool = GitTool()
+ root_repo = Repo(config.dir)
if not github_token:
raise ValueError("Missing github_token")
@@ -62,42 +64,64 @@ def main():
for a in lst_repo]
i = 0
total = len(lst_repo)
- for repo in lst_repo:
- i += 1
- print(f"Nb element {i}/{total}")
- url = repo.get("url")
-
- working_repo = Repo(repo.get("relative_path"))
-
- dct_remote_name = {a.name: a for a in working_repo.remotes}
- remote_origin = dct_remote_name.get("origin")
- remote_erplibre = dct_remote_name.get("ERPLibre")
- remote_organization = dct_remote_name.get(organization_name)
-
- if not config.skip_fork:
- if not remote_erplibre:
- repo_info = git_tool.get_transformed_repo_info_from_url(
- url, organization_force="ERPLibre",
- is_submodule=repo.get("is_submodule"),
- sub_path=repo.get("sub_path"))
- git_tool.add_and_fetch_remote(repo_info)
-
- git_tool.fork_repo(url, github_token,
- organization_name=organization_name,
- )
-
- repo_info = git_tool.get_transformed_repo_info_from_url(
- url, organization_force=organization_name,
- is_submodule=repo.get("is_submodule"), sub_path=repo.get("sub_path"))
- if remote_origin:
- working_repo.git.remote("remove", "origin")
- repo_info.organization = "origin"
- git_tool.add_and_fetch_remote(repo_info)
- if config.force and remote_organization:
- working_repo.git.remote("remove", organization_name)
-
- repo_info.organization = organization_name
- git_tool.add_and_fetch_remote(repo_info)
+ # for repo in lst_repo:
+ # i += 1
+ # print(f"Nb element {i}/{total}")
+ # url = repo.get("url")
+ #
+ # try:
+ # working_repo = Repo(repo.get("relative_path"))
+ # except git.exc.NoSuchPathError:
+ # # Check to fork
+ # # repo_info = git_tool.get_transformed_repo_info_from_url(
+ # # url, organization_force="ERPLibre",
+ # # is_submodule=repo.get("is_submodule"),
+ # # sub_path=repo.get("sub_path"))
+ # git_tool.fork_repo(upstream_url=url,
+ # github_token=github_token,
+ # organization_name="ERPLibre")
+ # repo_info = git_tool.get_transformed_repo_info_from_url(
+ # url, organization_force=organization_name,
+ # is_submodule=repo.get("is_submodule"), sub_path=repo.get("sub_path"))
+ # git_tool.fork_repo(upstream_url=url,
+ # github_token=github_token,
+ # organization_name=organization_name)
+ #
+ # git_tool.add_and_fetch_remote(repo_info, root_repo=root_repo)
+ # continue
+ #
+ # dct_remote_name = {a.name: a for a in working_repo.remotes}
+ # remote_origin = dct_remote_name.get("origin")
+ # remote_erplibre = dct_remote_name.get("ERPLibre")
+ # remote_organization = dct_remote_name.get(organization_name)
+ #
+ # if not config.skip_fork:
+ # if not remote_erplibre:
+ # repo_info = git_tool.get_transformed_repo_info_from_url(
+ # url, organization_force="ERPLibre",
+ # is_submodule=repo.get("is_submodule"),
+ # sub_path=repo.get("sub_path"))
+ # git_tool.add_and_fetch_remote(repo_info)
+ #
+ # git_tool.fork_repo(url, github_token,
+ # organization_name=organization_name,
+ # )
+ #
+ # repo_info = git_tool.get_transformed_repo_info_from_url(
+ # url, organization_force=organization_name,
+ # is_submodule=repo.get("is_submodule"), sub_path=repo.get("sub_path"))
+ # if remote_origin:
+ # working_repo.git.remote("remove", "origin")
+ # repo_info.organization = "origin"
+ # try:
+ # git_tool.add_and_fetch_remote(repo_info, root_repo=root_repo)
+ # except Exception as e:
+ # print(e)
+ # if config.force and remote_organization:
+ # working_repo.git.remote("remove", organization_name)
+ #
+ # repo_info.organization = organization_name
+ # git_tool.add_and_fetch_remote(repo_info)
# Update origin to new repo
git_tool.generate_git_modules(lst_repo_organization, repo_path=config.dir)
diff --git a/script/git_tool.py b/script/git_tool.py
index 77699a7..e8d647f 100644
--- a/script/git_tool.py
+++ b/script/git_tool.py
@@ -9,6 +9,7 @@ from agithub.GitHub import GitHub # pip install agithub
from giturlparse import parse # pip install giturlparse
from git import Repo
+import git
from typing import List
CST_FILE_SOURCE_REPO_ADDONS_ODOO = "source_repo_addons_odoo.csv"
@@ -265,6 +266,7 @@ class GitTool:
def generate_repo_source_from_building(self, repo_path="./"):
"""
+ DEPRECATED
Generate csv file with information about all source addons repo of Odoo
:param repo_path: Path to build repo source
:return:
@@ -294,7 +296,7 @@ class GitTool:
find_index = False
index_find = 0
for line in all_lines:
- if not find_index and "if [ $MINIMAL_ADDONS = \"False\" ]; then\n" == line:
+ if not find_index and "if [[ $MINIMAL_ADDONS = \"False\" ]]; then\n" == line:
index_find = index + 1
for insert_line in lst_result:
all_lines.insert(index_find, insert_line)
@@ -444,12 +446,33 @@ class GitTool:
print(f"finish same {len(lst_same)}, diff {len(lst_diff)}")
@staticmethod
- def add_and_fetch_remote(repo_info: Struct):
- working_repo = Repo(repo_info.relative_path)
- if repo_info.organization in [a.name for a in working_repo.remotes]:
- print(f"Remote \"{repo_info.organization}\" already exist "
- f"in {repo_info.relative_path}")
- return
+ def add_and_fetch_remote(repo_info: Struct, root_repo: Repo = None,
+ branch_name: str = ""):
+ try:
+ working_repo = Repo(repo_info.relative_path)
+ if repo_info.organization in [a.name for a in working_repo.remotes]:
+ print(f"Remote \"{repo_info.organization}\" already exist "
+ f"in {repo_info.relative_path}")
+ return
+ except git.NoSuchPathError:
+ print(f"New repo {repo_info.relative_path}")
+ if not root_repo:
+ print(f"Missing git repository to root for repo {repo_info.path}")
+ return
+ if branch_name:
+ submodule_repo = retry(
+ wait_exponential_multiplier=1000,
+ stop_max_delay=15000
+ )(root_repo.create_submodule)(repo_info.path, repo_info.path,
+ url=repo_info.url_https,
+ branch=branch_name)
+ else:
+ submodule_repo = retry(
+ wait_exponential_multiplier=1000,
+ stop_max_delay=15000
+ )(root_repo.create_submodule)(repo_info.path, repo_info.path,
+ url=repo_info.url_https)
+ return
# Add remote
upstream_remote = retry(wait_exponential_multiplier=1000, stop_max_delay=15000)(
working_repo.create_remote)(repo_info.organization, repo_info.url_https)
diff --git a/script/odoo_install_locally.sh b/script/odoo_install_locally.sh
index ee7f21b..6489b71 100755
--- a/script/odoo_install_locally.sh
+++ b/script/odoo_install_locally.sh
@@ -62,6 +62,7 @@ printf "longpolling_port = ${OE_LONGPOLLING_PORT}\n" >> ${OE_CONFIG_FILE}
printf "addons_path = ${OE_HOME_EXT}/addons,${OE_HOME}/addons/addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_web," >> ${OE_CONFIG_FILE}
if [[ $MINIMAL_ADDONS = "False" ]]; then
+ printf "${OE_HOME}/addons/ERPLibre_erplibre_addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/MathBenTech_development," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/MathBenTech_odoo-business-spending-management-quebec-canada," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/MathBenTech_scrummer," >> ${OE_CONFIG_FILE}
@@ -135,6 +136,7 @@ if [[ $MINIMAL_ADDONS = "False" ]]; then
printf "${OE_HOME}/addons/OCA_timesheet," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_website," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/OCA_wms," >> ${OE_CONFIG_FILE}
+ printf "${OE_HOME}/addons/SanteLibre_santelibre_addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/Smile-SA_odoo_addons," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_base," >> ${OE_CONFIG_FILE}
printf "${OE_HOME}/addons/muk-it_muk_dms," >> ${OE_CONFIG_FILE}
diff --git a/source_repo_addons_odoo.csv b/source_repo_addons_odoo.csv
index 12e7adc..0206b11 100644
--- a/source_repo_addons_odoo.csv
+++ b/source_repo_addons_odoo.csv
@@ -1,4 +1,5 @@
url,path
+https://github.com/ERPLibre/erplibre_addons.git,addons
https://github.com/MathBenTech/development.git,addons
https://github.com/MathBenTech/odoo-business-spending-management-quebec-canada.git,addons
https://github.com/MathBenTech/scrummer.git,addons
@@ -80,7 +81,8 @@ https://github.com/OCA/timesheet.git,addons
https://github.com/OCA/web.git,addons
https://github.com/OCA/website.git,addons
https://github.com/OCA/wms.git,addons
+https://github.com/odoo/odoo.git,.
https://github.com/odooaktiv/QuotationRevision.git,addons
https://github.com/openeducat/openeducat_erp.git,addons
+https://github.com/SanteLibre/santelibre_addons.git,addons
https://github.com/Smile-SA/odoo_addons.git,addons
-https://github.com/odoo/odoo.git,.