diff --git a/README.md b/README.md
index 3a99e22f..490ff5b8 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,8 @@ This projects provides a highly opinionated way to develop Odoo and Odoo modules
* **Community Edition**: Checkout the Odoo Community Edition and start editing the source code
* **Enterprise Modules**: Checkout the Odoo enterprise modules and deploy them into the Odoo Docker container or the Odoo source.
* **Develop Modules**: Scaffold a new module, develop new Odoo features locally and [much more](./task.md)
-* **Customizing Snippets**: See [snippets](./snippets.md) to find various Odoo view edits
+* **Customizing Snippets**: Create [snippets](./snippets.md) and push them to an Odoo database
+* **Odoo Scripts**: Develope scripts to patch Odoo modules
## Requirements
@@ -43,6 +44,7 @@ task checkout 14.0
# or
task checkout 15.0
```
+
Install [Odoo scripts](https://github.com/Mint-System/Ansible-Playbooks/tree/master/roles/odoo-scripts)
```bash
@@ -83,12 +85,6 @@ Open browser to [http://localhost:8069](http://localhost:8069) and login with `a
docker-odoo-install -m show_db_name
```
-**Save config with Docker**
-
-```bash
-docker exec -it odoo bin/bash -c "odoo -s -d odoo --db_host \$HOST -r \$USER -w \$PASSWORD"
-```
-
### Native
Run Odoo from source.
@@ -133,12 +129,12 @@ Open browser to [http://localhost:8069](http://localhost:8069) and login with `a
Scaffold a new module.
```bash
-task create-module project_report
+task create-module addons/project_report
```
### Common
-Instructions that are true for Docker and Source usage paths.
+Instructions that are true for Docker and native usage paths.
**Enable developer mode**
diff --git a/config/checkout_files b/config/checkout_files
index 04cbe48c..02976417 100644
--- a/config/checkout_files
+++ b/config/checkout_files
@@ -9,7 +9,6 @@ package.json
package-lock.json
.gitignore
.vercelignore
-config/addons_path
config/checkout_files
logo.png
docker-compose.yml
diff --git a/scripts/odoo13_hr_leave_calendar_name_patch b/scripts/odoo13_hr_leave_calendar_name_patch
new file mode 100755
index 00000000..ae707d6b
--- /dev/null
+++ b/scripts/odoo13_hr_leave_calendar_name_patch
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/hr_holidays/models/hr_leave.py"
+FIND="'name': meeting_name,"
+REPLACE="'name': meeting_name.replace('on Time Off ', holiday.holiday_status_id.name),"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_hr_leave_disable_date_check_patch b/scripts/odoo13_hr_leave_disable_date_check_patch
new file mode 100755
index 00000000..68f1f195
--- /dev/null
+++ b/scripts/odoo13_hr_leave_disable_date_check_patch
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/hr_holidays/models/hr_leave.py"
+FIND="if not is_officer:"
+REPLACE="if not True:"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_hr_leave_refused_note_patch b/scripts/odoo13_hr_leave_refused_note_patch
new file mode 100755
index 00000000..ac29fc11
--- /dev/null
+++ b/scripts/odoo13_hr_leave_refused_note_patch
@@ -0,0 +1,35 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/hr_holidays/models/hr_leave.py"
+FIND="body=_('Your %s planned on %s has been refused') % (holiday.holiday_status_id.display_name, holiday.date_from),"
+IFS='' read -r -d '' REPLACE << EOM
+ body=(_('Your %s planned on %s has been refused') % (holiday.holiday_status_id.display_name, holiday.date_from)) + _('
Note: %s') % (holiday.sudo().report_note),
+EOM
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+LINE=$(grep -n "$FIND" $FILE | cut -f1 -d:)
+
+# Find and append
+awk -v n="$LINE" -v s="$REPLACE" '{ if(NR == n) {print s} else {print} }' $FILE > $FILE.tmp && mv $FILE.tmp $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_hr_leave_report_note_patch b/scripts/odoo13_hr_leave_report_note_patch
new file mode 100755
index 00000000..2a8b938c
--- /dev/null
+++ b/scripts/odoo13_hr_leave_report_note_patch
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/hr_holidays/models/hr_leave.py"
+FIND="report_note = fields.Text('HR Comments', copy=False, groups=\"hr_holidays.group_hr_holidays_manager\")"
+REPLACE="report_note = fields.Text('HR Comments', copy=False, groups=\"hr_holidays.group_hr_holidays_responsible\")"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_hr_leave_translation_patch b/scripts/odoo13_hr_leave_translation_patch
new file mode 100755
index 00000000..c72eeaf3
--- /dev/null
+++ b/scripts/odoo13_hr_leave_translation_patch
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/hr_holidays/models/hr_leave.py"
+FIND="body=_('Your %s planned on %s has been accepted' % (holiday.holiday_status_id.display_name, holiday.date_from)),"
+REPLACE="body=_('Your %s planned on %s has been accepted') % (holiday.holiday_status_id.display_name, holiday.date_from),"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_hr_leave_update_note_patch b/scripts/odoo13_hr_leave_update_note_patch
new file mode 100755
index 00000000..0fc4fcdd
--- /dev/null
+++ b/scripts/odoo13_hr_leave_update_note_patch
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/hr_holidays/models/hr_leave.py"
+FIND="note = _('New %s Request created by %s from %s to %s') % (holiday.holiday_status_id.name, holiday.create_uid.name, start, end)"
+IFS='' read -r -d '' APPEND << EOM
+ if holiday.name:
+ note += _('
Comment: %s') % (holiday.name)
+EOM
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+LINE=$(grep -n "$FIND" $FILE | cut -f1 -d:)
+
+# Find and append
+awk -v n="$LINE" -v s="$APPEND" 'NR-1 == n {print s} {print}' $FILE > $FILE.tmp && mv $FILE.tmp $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_project_task_editable_date_assign_patch b/scripts/odoo13_project_task_editable_date_assign_patch
new file mode 100755
index 00000000..02ae1205
--- /dev/null
+++ b/scripts/odoo13_project_task_editable_date_assign_patch
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/project/models/project.py"
+FIND="date_assign = fields.Datetime(string='Assigning Date', index=True, copy=False, readonly=True)"
+REPLACE="date_assign = fields.Datetime(string='Assigning Date', index=True, copy=False, readonly=False)"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Remove file
+rm -f $FILE
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_web_timeline_nounassigned_patch b/scripts/odoo13_web_timeline_nounassigned_patch
new file mode 100755
index 00000000..579170a9
--- /dev/null
+++ b/scripts/odoo13_web_timeline_nounassigned_patch
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/mnt/addons"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}/web_timeline/static/src/js/timeline_renderer.js"
+FIND='groups.push({id: -1, content: _t("UNASSIGNED<\/b>")});'
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND//g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo13_web_timeline_parameter_patch b/scripts/odoo13_web_timeline_parameter_patch
new file mode 100755
index 00000000..7b79b2af
--- /dev/null
+++ b/scripts/odoo13_web_timeline_parameter_patch
@@ -0,0 +1,31 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/mnt/addons"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}/web_timeline/static/src/js/timeline_view.js"
+FIND="orientation: \"both\","
+REPLACE="orientation: attrs.orientation ? JSON.parse(attrs.orientation) : {item: \"top\"},"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo14_delivery_patch b/scripts/odoo14_delivery_patch
new file mode 100755
index 00000000..65d27653
--- /dev/null
+++ b/scripts/odoo14_delivery_patch
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/delivery/__manifest__.py"
+FIND="'sale_stock', 'sale_management'"
+REPLACE="'sale_stock'"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Remove file
+rm -f $FILE
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo14_gio_payroll_custom_employee_patch b/scripts/odoo14_gio_payroll_custom_employee_patch
new file mode 100755
index 00000000..876a069c
--- /dev/null
+++ b/scripts/odoo14_gio_payroll_custom_employee_patch
@@ -0,0 +1,41 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/gio_payroll_custom/models/hr_employee.py"
+FIND="from odoo import api, fields, models, _"
+IFS='' read -r -d '' APPEND << EOM
+from odoo import api, fields, models, _
+
+
+class EmployeePublic(models.Model):
+ _inherit = 'hr.employee.public'
+
+ gio_children_training = fields.Integer(string="Anzahl Kinder im Studium")
+EOM
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+LINE=$(grep -n "$FIND" $FILE | cut -f1 -d:)
+
+# Find and append
+awk -v n="$LINE" -v s="$APPEND" 'NR-1 == n {print s} {print}' $FILE > $FILE.tmp && mv $FILE.tmp $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo14_l10n_ch_base_bank_patch b/scripts/odoo14_l10n_ch_base_bank_patch
new file mode 100755
index 00000000..75496054
--- /dev/null
+++ b/scripts/odoo14_l10n_ch_base_bank_patch
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/mnt/addons/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}l10n_ch_base_bank/models/invoice.py"
+FIND="bank_acc.acc_type != \"qr-iban\""
+REPLACE="bank_acc.acc_type == \"qr-iban\""
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Remove file
+rm -f $FILE
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo14_l10n_ch_isr_patch b/scripts/odoo14_l10n_ch_isr_patch
new file mode 100755
index 00000000..bc4ee8e3
--- /dev/null
+++ b/scripts/odoo14_l10n_ch_isr_patch
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/mnt/addons/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}l10n_ch_base_bank/models/partner_bank.py"
+FIND="ISR {}"
+REPLACE="{}"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Remove file
+rm -f $FILE
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo14_res_users_footer b/scripts/odoo14_res_users_footer
new file mode 100755
index 00000000..c762e5d4
--- /dev/null
+++ b/scripts/odoo14_res_users_footer
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/addons/hr/views/res_users.xml"
+FIND=''
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND//g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Remove file
+rm -f $FILE
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo14_server_cron_patch b/scripts/odoo14_server_cron_patch
new file mode 100755
index 00000000..7fee4c9b
--- /dev/null
+++ b/scripts/odoo14_server_cron_patch
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/usr/lib/python3/dist-packages/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}odoo/service/server.py"
+FIND="for db_name, registry in registries.d.items()"
+REPLACE="for db_name, registry in registries.d.copy().items()"
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+# Find and replace
+sed -i'' "s/$FIND/$REPLACE/g" $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Remove file
+rm -f $FILE
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/scripts/odoo14_vat_closing_entry_translation_patch b/scripts/odoo14_vat_closing_entry_translation_patch
new file mode 100755
index 00000000..8b756160
--- /dev/null
+++ b/scripts/odoo14_vat_closing_entry_translation_patch
@@ -0,0 +1,39 @@
+#!/bin/bash
+
+# Get script name
+SCRIPT=$(basename "$0")
+
+# First param is docker container
+CONTAINER=$1
+
+# Default configuration
+PACKAGE_PATH="/mnt/enterprise/"
+
+# Custom configuration
+FILE_PATH="${PACKAGE_PATH}account_reports/models/account_generic_tax_report.py"
+FIND="move_vals_lines.append((0, 0, {'name': tax_name"
+IFS='' read -r -d '' REPLACE << EOM
+ domain = [('src', '=', tax_name), ('lang', '=', self._context.get('lang') )]
+ translation = self.env['ir.translation'].search(domain, limit=1)
+ move_vals_lines.append((0, 0, {'name': translation.value if translation else tax_name, 'debit': abs(amt) if amt < 0 else 0, 'credit': amt if amt > 0 else 0, 'account_id': account_id}))
+EOM
+
+# Get filename
+FILE=`basename "$FILE_PATH"`
+
+# Copy from docker
+docker cp "$CONTAINER":"$FILE_PATH" .
+
+LINE=$(grep -n "$FIND" $FILE | cut -f1 -d:)
+
+echo $LINE
+
+# Find and replace
+awk -v n="$LINE" -v r="$REPLACE" '{if(NR==n){print r}else{print}}' $FILE > $FILE.tmp && mv $FILE.tmp $FILE
+
+# Copy back to docker
+docker cp $FILE "$CONTAINER":"$FILE_PATH"
+
+# Register patch installation
+echo "Patch $SCRIPT applied."
+touch "/etc/odoo/${SCRIPT}_${CONTAINER}_installed"
diff --git a/snippets/account.report_invoice_document.group_by_pickings.xml b/snippets/account.report_invoice_document.group_by_pickings.xml
index c9514803..39679919 100644
--- a/snippets/account.report_invoice_document.group_by_pickings.xml
+++ b/snippets/account.report_invoice_document.group_by_pickings.xml
@@ -3,9 +3,7 @@
-
-
-
+
@@ -26,7 +24,7 @@
-
+
diff --git a/snippets/account.view_move_tree.x_account_codes.xml b/snippets/account.view_move_tree.x_account_codes.xml
new file mode 100644
index 00000000..b95505e4
--- /dev/null
+++ b/snippets/account.view_move_tree.x_account_codes.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/snippets/ir_model.stock_move.x_account_codes.xml b/snippets/ir_model.account_move.x_account_codes.xml
similarity index 100%
rename from snippets/ir_model.stock_move.x_account_codes.xml
rename to snippets/ir_model.account_move.x_account_codes.xml
diff --git a/snippets/ir_model.purchase_order_line.x_state.xml b/snippets/ir_model.purchase_order_line.x_state.xml
index 908f47c2..1be81dcf 100644
--- a/snippets/ir_model.purchase_order_line.x_state.xml
+++ b/snippets/ir_model.purchase_order_line.x_state.xml
@@ -3,7 +3,7 @@
[]
- Status
+ Status Bestellposition
purchase.order.line
x_state
diff --git a/snippets/ir_model.sale_order_line.x_state.xml b/snippets/ir_model.sale_order_line.x_state.xml
index 18d31e48..e0cb34ad 100644
--- a/snippets/ir_model.sale_order_line.x_state.xml
+++ b/snippets/ir_model.sale_order_line.x_state.xml
@@ -3,7 +3,7 @@
[]
- Status
+ Status Auftragsposition
sale.order.line
x_state
diff --git a/snippets/web.external_layout_standard.eksb_layout.xml b/snippets/web.external_layout_standard.eksb_layout.xml
new file mode 100644
index 00000000..3b70a89c
--- /dev/null
+++ b/snippets/web.external_layout_standard.eksb_layout.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
![Logo]()
+
+
+
+
+
+
+
diff --git a/template/ms_custom_module/__manifest__.py b/template/ms_custom_module/__manifest__.py
index 929f41c0..343b1e75 100644
--- a/template/ms_custom_module/__manifest__.py
+++ b/template/ms_custom_module/__manifest__.py
@@ -5,7 +5,7 @@
""",
"author": "Mint System GmbH, Odoo Community Association (OCA)",
"website": "https://www.mint-system.ch",
- "category": "Technical,Accounting,Invoicing,Sales,Human Resources,Manufacturing,Website,Inventory,Administration,Tools",
+ "category": "Purchase,Technical,Accounting,Invoicing,Sales,Human Resources,Manufacturing,Website,Inventory,Administration,Tools",
"version": "14.0.0.0.0",
"license": "AGPL-3",
"depends": ["base"],