diff --git a/.gitmodules b/.gitmodules
index 02af3bfb..3695dd9c 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -202,10 +202,6 @@
path = addons/social
url = git@github.com:Mint-System/Odoo-Apps-Social.git
branch = 16.0
-[submodule "addons/vertical_job_portal"]
- path = addons/vertical_job_portal
- url = git@github.com:sozialinfo/odoo-apps-vertical-job-portal.git
- branch = 16.0
[submodule "oca/management-system"]
path = oca/management-system
url = git@github.com:OCA/management-system.git
diff --git a/addons/account_invoicing b/addons/account_invoicing
index 2fa54c1a..99e5eff4 160000
--- a/addons/account_invoicing
+++ b/addons/account_invoicing
@@ -1 +1 @@
-Subproject commit 2fa54c1abe46ca06a67c5db303586cbfa49078de
+Subproject commit 99e5eff4aef22ed6502d98daa5d5a7081f90ac80
diff --git a/addons/sale_workflow b/addons/sale_workflow
index 746930eb..bfb0e304 160000
--- a/addons/sale_workflow
+++ b/addons/sale_workflow
@@ -1 +1 @@
-Subproject commit 746930eb54f84f1cd9416ec94dece20706e6b35e
+Subproject commit bfb0e304a3f4ed1524c4a4bb1619bc653fec03f7
diff --git a/addons/server_tools b/addons/server_tools
index 9bfbe890..878ed7f9 160000
--- a/addons/server_tools
+++ b/addons/server_tools
@@ -1 +1 @@
-Subproject commit 9bfbe890ed4435f5b832b79e317d09dcc49b2be8
+Subproject commit 878ed7f905e07b25ddefa2e622fa44864cbeecac
diff --git a/addons/vertical_job_portal b/addons/vertical_job_portal
deleted file mode 160000
index 53936750..00000000
--- a/addons/vertical_job_portal
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 539367507f87ca0419ac6e281dd9712a2d047af1
diff --git a/enterprise b/enterprise
index 0a39088d..674bb584 160000
--- a/enterprise
+++ b/enterprise
@@ -1 +1 @@
-Subproject commit 0a39088d578b0d8eb7b98382eac0aaeac42e62ad
+Subproject commit 674bb584155a81d555d09b4830b7988d9fe5b39f
diff --git a/oca/account-financial-tools b/oca/account-financial-tools
index da515fad..11f86281 160000
--- a/oca/account-financial-tools
+++ b/oca/account-financial-tools
@@ -1 +1 @@
-Subproject commit da515faddbd4849900a4861d171b16628902ce55
+Subproject commit 11f8628173b271fe1c71ecb85c6a6f64fa6be956
diff --git a/oca/account-invoicing b/oca/account-invoicing
index 018393fc..935e845f 160000
--- a/oca/account-invoicing
+++ b/oca/account-invoicing
@@ -1 +1 @@
-Subproject commit 018393fcf8ca8811cd9a5795ede81cef7acffb73
+Subproject commit 935e845f9dec4daf0af69d7a8d25e9cc60bb0895
diff --git a/oca/bank-payment b/oca/bank-payment
index 9f3f2cdd..55718af9 160000
--- a/oca/bank-payment
+++ b/oca/bank-payment
@@ -1 +1 @@
-Subproject commit 9f3f2cdd156f76317223ca3b6bfe95f3ccf63488
+Subproject commit 55718af9a49b00598d06db2d6a045deb9cddd530
diff --git a/oca/contract b/oca/contract
index d5f7585d..a657a08e 160000
--- a/oca/contract
+++ b/oca/contract
@@ -1 +1 @@
-Subproject commit d5f7585d2eef521709ab8e9c2c99286ee171cb68
+Subproject commit a657a08ead065ff6fbb34b36dfb79ee67ee3aa48
diff --git a/oca/crm b/oca/crm
index ad5820be..4f58b20f 160000
--- a/oca/crm
+++ b/oca/crm
@@ -1 +1 @@
-Subproject commit ad5820be650bacb32ece26d7a3abd7d09508a582
+Subproject commit 4f58b20f3eac8a70a4221f59f5f5eaaba570b5d3
diff --git a/oca/dms b/oca/dms
index dc12b219..639272a0 160000
--- a/oca/dms
+++ b/oca/dms
@@ -1 +1 @@
-Subproject commit dc12b219e9f26151cc222fb9eb15d4121fa3a145
+Subproject commit 639272a09d5e4f01c1dd2fdfee88b32ae5b2118d
diff --git a/oca/e-commerce b/oca/e-commerce
index 010d9312..c6dd7463 160000
--- a/oca/e-commerce
+++ b/oca/e-commerce
@@ -1 +1 @@
-Subproject commit 010d9312cc568c63d5a07f363cb6b2a513190643
+Subproject commit c6dd7463e9608a48c4ba1f7aa2bbb45836eac425
diff --git a/oca/helpdesk b/oca/helpdesk
index 877e6ae0..3ffa6510 160000
--- a/oca/helpdesk
+++ b/oca/helpdesk
@@ -1 +1 @@
-Subproject commit 877e6ae06f7148ff7964d76e5fba2765343af40f
+Subproject commit 3ffa651044ef3670016b458cc1e961a6fd575921
diff --git a/oca/hr b/oca/hr
index cac44efb..cf984e48 160000
--- a/oca/hr
+++ b/oca/hr
@@ -1 +1 @@
-Subproject commit cac44efba213858d9ff5a1328617da46e1a92780
+Subproject commit cf984e48fa5943d032ff5a5420264d3e86d1fbd3
diff --git a/oca/hr-attendance b/oca/hr-attendance
index a313d1fc..0719b695 160000
--- a/oca/hr-attendance
+++ b/oca/hr-attendance
@@ -1 +1 @@
-Subproject commit a313d1fcd180504ed63fbc6c29c78b65c4936c56
+Subproject commit 0719b6951324bf7d67c277f27da7b87edc1fd196
diff --git a/oca/l10n-switzerland b/oca/l10n-switzerland
index 1a12f040..6ae4e3cd 160000
--- a/oca/l10n-switzerland
+++ b/oca/l10n-switzerland
@@ -1 +1 @@
-Subproject commit 1a12f04081e7266698aef31b9c7fcf5948f21bba
+Subproject commit 6ae4e3cd10cec0a9b9e1048036a7521ac3d99504
diff --git a/oca/maintenance b/oca/maintenance
index 0dfb6ab1..e7d96bb6 160000
--- a/oca/maintenance
+++ b/oca/maintenance
@@ -1 +1 @@
-Subproject commit 0dfb6ab17e2d8cbbae5b2e3d12e19dfcb6ef06e9
+Subproject commit e7d96bb6c1d11e8f8ec9caf73de2263706deb285
diff --git a/oca/management-system b/oca/management-system
index bc38bd4f..cbcfaed2 160000
--- a/oca/management-system
+++ b/oca/management-system
@@ -1 +1 @@
-Subproject commit bc38bd4f63865be161aa2d2359b08f5091f050d5
+Subproject commit cbcfaed22f63194472cbf6ac26b87d7c082675c4
diff --git a/oca/manufacture b/oca/manufacture
index c704c2ae..cecfff91 160000
--- a/oca/manufacture
+++ b/oca/manufacture
@@ -1 +1 @@
-Subproject commit c704c2ae6de41b8f4fffa72dd47d0ea4e2237942
+Subproject commit cecfff9144bb81fac1a24d673701a25d54601157
diff --git a/oca/partner-contact b/oca/partner-contact
index a9999df1..d890989c 160000
--- a/oca/partner-contact
+++ b/oca/partner-contact
@@ -1 +1 @@
-Subproject commit a9999df1dc542ade294626e88fc19ab22532c505
+Subproject commit d890989cbd208be8231c446d2180054d5bcc7a28
diff --git a/oca/product-attribute b/oca/product-attribute
index 3d4ee16b..6d6baa25 160000
--- a/oca/product-attribute
+++ b/oca/product-attribute
@@ -1 +1 @@
-Subproject commit 3d4ee16b8bacfbe9a598b4a35e41e5e2a095f5d2
+Subproject commit 6d6baa25085ba9a34c822d3f1c261c1ab01c1a91
diff --git a/oca/project b/oca/project
index 805cfc93..5eac7f7a 160000
--- a/oca/project
+++ b/oca/project
@@ -1 +1 @@
-Subproject commit 805cfc9366bc3ffb98ee90577e1738366ad4f09a
+Subproject commit 5eac7f7ae50a2029a22bee4b70c9f08b17c01627
diff --git a/oca/purchase-workflow b/oca/purchase-workflow
index 2ef09732..2349c4d9 160000
--- a/oca/purchase-workflow
+++ b/oca/purchase-workflow
@@ -1 +1 @@
-Subproject commit 2ef09732870ff55eeadc61701173b89dee1b4da6
+Subproject commit 2349c4d9921a56f04f1aa219d140d47fcfb317ee
diff --git a/oca/reporting-engine b/oca/reporting-engine
index e745a970..79d67362 160000
--- a/oca/reporting-engine
+++ b/oca/reporting-engine
@@ -1 +1 @@
-Subproject commit e745a970195664cfa0693b13168730f3b48f8f22
+Subproject commit 79d67362da58527504839a8a1ec3dc0e84db1820
diff --git a/oca/rest-framework b/oca/rest-framework
index fecc1ef4..1dbe80b6 160000
--- a/oca/rest-framework
+++ b/oca/rest-framework
@@ -1 +1 @@
-Subproject commit fecc1ef47d2d6722f6910ffff89e4b03e89bf790
+Subproject commit 1dbe80b6738c16542c3843aec903a006b24da85d
diff --git a/oca/sale-reporting b/oca/sale-reporting
index 8dcd1b2f..362e1e34 160000
--- a/oca/sale-reporting
+++ b/oca/sale-reporting
@@ -1 +1 @@
-Subproject commit 8dcd1b2fab0c39121a8c1f6f383c05254d7924d9
+Subproject commit 362e1e34fee0fd736c1d23e347bf1bf2a58e5672
diff --git a/oca/sale-workflow b/oca/sale-workflow
index 7eefd71d..4a72d881 160000
--- a/oca/sale-workflow
+++ b/oca/sale-workflow
@@ -1 +1 @@
-Subproject commit 7eefd71dfd7b2d98b36c5776205bc7a4d0fd64b4
+Subproject commit 4a72d881252062c8576e3a97cd2c8015d986d446
diff --git a/oca/server-auth b/oca/server-auth
index df106880..dbebd700 160000
--- a/oca/server-auth
+++ b/oca/server-auth
@@ -1 +1 @@
-Subproject commit df106880ceb81ef8b11dcc2eaeceba3903b081df
+Subproject commit dbebd70053e8fc3c94766ce84ba791ac0effd72b
diff --git a/oca/server-tools b/oca/server-tools
index 590cf43c..54a7c67b 160000
--- a/oca/server-tools
+++ b/oca/server-tools
@@ -1 +1 @@
-Subproject commit 590cf43c30698fc8dd2fca306fe5bb6444ecb903
+Subproject commit 54a7c67bd8f47b15116966bd14c14a4d5b35ce96
diff --git a/oca/server-ux b/oca/server-ux
index f8b6b2b1..ee3b80ab 160000
--- a/oca/server-ux
+++ b/oca/server-ux
@@ -1 +1 @@
-Subproject commit f8b6b2b1f8721fed6135ffcff502229cb3645a56
+Subproject commit ee3b80ab76592302f4846577e7458b33f9c0204b
diff --git a/oca/social b/oca/social
index 59160ffb..6306a349 160000
--- a/oca/social
+++ b/oca/social
@@ -1 +1 @@
-Subproject commit 59160ffbb8d431eb4793725852c2a3020852cbdb
+Subproject commit 6306a34981f3980d0ce72da603ae8b1f543538e7
diff --git a/oca/stock-logistics-warehouse b/oca/stock-logistics-warehouse
index 6131cf7d..9cefd5db 160000
--- a/oca/stock-logistics-warehouse
+++ b/oca/stock-logistics-warehouse
@@ -1 +1 @@
-Subproject commit 6131cf7d4c64606412da7152d9124079da6ecf32
+Subproject commit 9cefd5dbe3b9e1f7cdf78e508727ec601a7a951a
diff --git a/oca/stock-logistics-workflow b/oca/stock-logistics-workflow
index 0eabc1e9..929b1624 160000
--- a/oca/stock-logistics-workflow
+++ b/oca/stock-logistics-workflow
@@ -1 +1 @@
-Subproject commit 0eabc1e920d69d871a1f50014ea51938a03fd637
+Subproject commit 929b1624edb711b9369852ffb30aa885bcb1a92a
diff --git a/oca/web b/oca/web
index 0cb7387a..dada4dc4 160000
--- a/oca/web
+++ b/oca/web
@@ -1 +1 @@
-Subproject commit 0cb7387ae4282f330cffee52f839ea58cf26ab47
+Subproject commit dada4dc42ee978f04f5988d9c7131d143b07905b
diff --git a/odoo b/odoo
index 4a4b5973..a809e63e 160000
--- a/odoo
+++ b/odoo
@@ -1 +1 @@
-Subproject commit 4a4b597384e8dacacc634c47fe0c587ce38d82cd
+Subproject commit a809e63eae5224696965781e9ab7e2e195555292
diff --git a/snippets/account.view_move_form.show_partner_id.xml b/snippets/account.view_move_form.show_partner_id.xml
new file mode 100644
index 00000000..3dd53642
--- /dev/null
+++ b/snippets/account.view_move_form.show_partner_id.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/snippets/hr_timesheet.hr_timesheet_line_tree.show_helpdesk_ticket_id.xml b/snippets/hr_timesheet.hr_timesheet_line_tree.show_helpdesk_ticket_id.xml
new file mode 100644
index 00000000..63c13bf8
--- /dev/null
+++ b/snippets/hr_timesheet.hr_timesheet_line_tree.show_helpdesk_ticket_id.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/snippets/purchase.purchase_order_form.remove_optional_qty_received.xml b/snippets/purchase.purchase_order_form.remove_optional_qty_received.xml
new file mode 100644
index 00000000..deacbbe1
--- /dev/null
+++ b/snippets/purchase.purchase_order_form.remove_optional_qty_received.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/snippets/sale.report_saleorder_document.show_comment.xml b/snippets/sale.report_saleorder_document.show_comment.xml
new file mode 100644
index 00000000..11830161
--- /dev/null
+++ b/snippets/sale.report_saleorder_document.show_comment.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/snippets/sale.view_order_form.show_order_line_state.xml b/snippets/sale.view_order_form.show_order_line_state.xml
new file mode 100644
index 00000000..78ae7369
--- /dev/null
+++ b/snippets/sale.view_order_form.show_order_line_state.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/snippets/web.external_layout_standard.remove_header_space.xml b/snippets/web.external_layout_standard.remove_header_space.xml
new file mode 100644
index 00000000..580c14bc
--- /dev/null
+++ b/snippets/web.external_layout_standard.remove_header_space.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/task b/task
index e3677fbf..9949203c 100755
--- a/task
+++ b/task
@@ -133,7 +133,7 @@ function disable-auto-install() {
function build() {
echo "Run Docker build with tag ${DOCKER_REGISTRY}${DOCKER_TAG}"
- docker build . --build-arg TARGETARCH="$TARGETARCH" -t "${DOCKER_REGISTRY}${DOCKER_TAG}"
+ docker build . --build-arg TARGETARCH="$TARGETARCH" --build-arg ODOO_IMAGE="odoo:$GIT_BRANCH" -t "${DOCKER_REGISTRY}${DOCKER_TAG}"
}
function install-odoo-scripts() {
@@ -170,7 +170,7 @@ function install-native() {
pip install -r odoo/requirements.txt
echo "Install oca dev tools"
- pip install pre-commit pyyaml rst2html5 odoorpc
+ pip install pre-commit pyyaml rst2html5 odoorpc coverage
echo "Install graphql dependencies"
pip install graphene graphql-server-core
@@ -409,6 +409,22 @@ function test-module() {
odoo-bin -d "$DATABASE" -i "$MODULE_NAME" --config 'config/odoo.conf' --addons-path="$ADDONS_PATH" --stop-after-init --test-tags /"$MODULE_NAME"
}
+function test-coverage-module() {
+ DATABASE="$1"
+ MODULE_NAME=$(basename "$2")
+
+ # Use default database if second param is not given
+ if test -z "$2"; then
+ DATABASE="$GIT_BRANCH"
+ MODULE_NAME=$(basename "$1")
+ fi
+
+ activate-venv
+ set-addons-path
+ echo "Testing module $MODULE_NAME on $DATABASE ..."
+ coverage run odoo-bin -d "$DATABASE" -i "$MODULE_NAME" --config 'config/odoo.conf' --addons-path="$ADDONS_PATH" --stop-after-init --test-tags /"$MODULE_NAME"
+}
+
function remove-module() {
if test -z "$1"; then echo "\$1 is empty."; exit; fi
@@ -1027,6 +1043,9 @@ case "$1" in
test-module)
test-module "$2" "$3"
;;
+ test-coverage-module)
+ test-coverage-module "$2" "$3"
+ ;;
create-module)
create-module "$2"
;;
diff --git a/task.md b/task.md
index 08926c20..40926a9a 100644
--- a/task.md
+++ b/task.md
@@ -57,6 +57,7 @@
| git-switch-branch | [branch] | Switch submodules to target branch. |
| test-jsonrpc | [env] | Test json rpc connection. |
| test-module | [db][name,path] | Test target Odoo module. |
+| test-coverage-module | [db][name,path] | Generate test coverage report for target Odoo module. |
| update-app-list | [db] | Update app list. |
| update-docs | | Update project docs. |
| update-module | [db][name,path] | Update target Odoo module. |
diff --git a/template/module/models/models.py b/template/module/models/models.py
index 2fcb9796..44f7d432 100644
--- a/template/module/models/models.py
+++ b/template/module/models/models.py
@@ -1,5 +1,7 @@
import logging
-from odoo import fields, models, api, _
+
+from odoo import _, api, fields, models
+
_logger = logging.getLogger(__name__)
diff --git a/template/module/report/invoice_document.xml b/template/module/report/invoice_document.xml
index 8edf4666..a006b0f6 100644
--- a/template/module/report/invoice_document.xml
+++ b/template/module/report/invoice_document.xml
@@ -1,29 +1,29 @@
- {{ name }}.report_invoice_document
+ {{ name }}.report_invoice_document
{{ name }}
-
+
50
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
+
diff --git a/template/module/views/assets.xml b/template/module/views/assets.xml
index 9d399f6b..115ed496 100644
--- a/template/module/views/assets.xml
+++ b/template/module/views/assets.xml
@@ -1,16 +1,16 @@
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
-
+
+
+
+
+
diff --git a/template/module/views/sale_order.xml b/template/module/views/sale_order.xml
index dd6163b6..e6f9306a 100644
--- a/template/module/views/sale_order.xml
+++ b/template/module/views/sale_order.xml
@@ -1,65 +1,68 @@
-
- {{ name }}.view_order_form
- sale.order
-
-
-
-
-
-
-
+
+ {{ name }}.view_order_form
+ sale.order
+
+
+
+
+
+
+
-
- {{ name }}.view_tree
- {{ name }}
-
-
-
-
-
-
-
+
+ {{ name }}.view_tree
+ {{ name }}
+
+
+
+
+
+
+
-
- {{ name }}.view_pivot
- {{ name }}
-
-
-
-
-
-
-
-
+
+ {{ name }}.view_pivot
+ {{ name }}
+
+
+
+
+
+
+
+
-
- {{ name }}.open_view_tree
- {{ name }}
- tree,form
-
+
+ {{ name }}.open_view_tree
+ {{ name }}
+ tree,form
+
-
- {{ name }}.document_server_action
-
- code
-
- action = {
- "type": "ir.actions.act_window",
- "view_mode": "tree,form",
- "res_model": model._name,
- }
-
-
+
+ {{ name }}.document_server_action
+
+ code
+
+ action = {
+ "type": "ir.actions.act_window",
+ "view_mode": "tree,form",
+ "res_model": model._name,
+ }
+
+
-
+
-
-
+
+
-
-
+
+
diff --git a/themes b/themes
index b6d64c75..5beef00d 160000
--- a/themes
+++ b/themes
@@ -1 +1 @@
-Subproject commit b6d64c75952610d7bac55f1dea18c2ad0615be88
+Subproject commit 5beef00dfb7a8f0d56f972543c1713bc9ed696c5