Author SHA1 Message Date
José Arturo García eeac63be0d feat(i18n): complete Dominican Spanish catalog coverage
Validate Tryton customizations / validate (pull_request) Successful in 3m30s
Validate Tryton customizations / validate (push) Successful in 3m48s
2026-10-13 20:14:46 -04:00
José Arturo García e22c0497bd refactor(i18n): make Dominican Spanish standalone
Validate Tryton customizations / validate (pull_request) Successful in 3m33s
Validate Tryton customizations / validate (push) Successful in 3m39s
Remove the es_419 parent from the es_DO language record and provide the complete core ir catalog so the Dominican locale is independently maintained in core and every module.
2026-10-13 20:09:26 -04:00
José Arturo García 4038053504 feat(i18n): bootstrap Dominican catalogs for Weblate
Validate Tryton customizations / validate (pull_request) Successful in 3m50s
Validate Tryton customizations / validate (push) Successful in 3m48s
Initialize es_DO catalogs from the Latin American Spanish catalogs so every server module is directly editable in Weblate while retaining es_419 as the configured fallback.
2026-10-13 20:02:26 -04:00
José Arturo García 4ca0d58fe4 refactor(i18n): move Dominican Spanish into Tryton core
Validate Tryton customizations / validate (pull_request) Successful in 3m32s
Validate Tryton customizations / validate (push) Successful in 3m37s
2026-10-13 19:55:28 -04:00
José Arturo García 5cca20373e ci: keep package builds independent of artifact storage
Validate Tryton customizations / validate (push) Successful in 4m6s
Validate Tryton customizations / validate (pull_request) Successful in 4m5s
2026-10-13 19:33:23 -04:00
José Arturo García beeabd721a ci: use a shallow checkout for validation
Validate Tryton customizations / validate (push) Failing after 4m28s
2026-10-13 19:27:57 -04:00
José Arturo García 75d36f6a09 ci: clone from the runner-accessible Gitea URL
Validate Tryton customizations / validate (push) Canceled after 3m29s
2026-10-13 19:24:59 -04:00
José Arturo García 80ac099434 docs: document private mirror and recovery operations
Validate Tryton customizations / validate (push) Failing after 42s
2026-10-13 19:07:53 -04:00
José Arturo García 9a16786c2d ci: automate reviewed upstream 8.0 proposals 2026-10-13 19:07:53 -04:00
José Arturo García 00c2302068 ci: validate custom Tryton packages and translations 2026-10-13 19:07:53 -04:00
José Arturo García f18368bc33 feat(localization): add Dominican Spanish translation module 2026-10-13 19:07:53 -04:00
Cédric Krier 1126f5b371 Increase version number
--HG--
branch : 8.0
2026-10-02 01:11:08 +02:00
Cédric Krier ece7ef4584 Add tag account_fr_chorus-8.0.2
--HG--
branch : 8.0
2026-10-02 01:10:59 +02:00
Cédric Krier afce931993 Prepare release account_fr_chorus-8.0.2
--HG--
branch : 8.0
2026-10-02 01:10:58 +02:00
Cédric Krier fff830e6b9 Increase version number
--HG--
branch : 8.0
2026-10-02 01:09:36 +02:00
Cédric Krier 8ee998824c Add tag account_payment-8.0.2
--HG--
branch : 8.0
2026-10-02 01:09:21 +02:00
Cédric Krier c4b55740e2 Prepare release account_payment-8.0.2
--HG--
branch : 8.0
2026-10-02 01:09:19 +02:00
Cédric Krier b65889ed51 Increase version number
--HG--
branch : 8.0
2026-10-02 01:06:08 +02:00
Cédric Krier bf18428bef Add tag account_payment_sepa-8.0.4
--HG--
branch : 8.0
2026-10-02 01:05:58 +02:00
Cédric Krier f7d9567a63 Prepare release account_payment_sepa-8.0.4
--HG--
branch : 8.0
2026-10-02 01:05:57 +02:00
Cédric Krier 1253fa5233 Increase version number
--HG--
branch : 8.0
2026-10-02 01:02:58 +02:00
Cédric Krier 2a9d5da72f Add tag account_payment_stripe-8.0.1
--HG--
branch : 8.0
2026-10-02 01:02:42 +02:00
Cédric Krier 05430b4133 Prepare release account_payment_stripe-8.0.1
--HG--
branch : 8.0
2026-10-02 01:02:40 +02:00
Cédric Krier 81c0db4750 Increase version number
--HG--
branch : 8.0
2026-10-02 01:00:25 +02:00
Cédric Krier 71038e029e Add tag document_incoming_ocr_typless-8.0.1
--HG--
branch : 8.0
2026-10-02 01:00:09 +02:00
Cédric Krier f28b9375d8 Prepare release document_incoming_ocr_typless-8.0.1
--HG--
branch : 8.0
2026-10-02 01:00:07 +02:00
Cédric Krier 3ddd45b9ab Increase version number
--HG--
branch : 8.0
2026-10-02 00:59:01 +02:00
Cédric Krier 5a1c8cbcda Add tag edocument_peppol-8.0.2
--HG--
branch : 8.0
2026-10-02 00:58:45 +02:00
Cédric Krier 99b64bb134 Prepare release edocument_peppol-8.0.2
--HG--
branch : 8.0
2026-10-02 00:58:43 +02:00
Cédric Krier 2cd65993b2 Increase version number
--HG--
branch : 8.0
2026-10-02 00:56:57 +02:00
Cédric Krier 4ddd80da6a Add tag incoterm-8.0.1
--HG--
branch : 8.0
2026-10-02 00:56:48 +02:00
Cédric Krier 03cf98c053 Prepare release incoterm-8.0.1
--HG--
branch : 8.0
2026-10-02 00:56:47 +02:00
Cédric Krier 5f887fb19a Increase version number
--HG--
branch : 8.0
2026-10-02 00:53:46 +02:00
Cédric Krier 85c2d22372 Add tag product_kit-8.0.4
--HG--
branch : 8.0
2026-10-02 00:53:37 +02:00
Cédric Krier c1fb95e096 Prepare release product_kit-8.0.4
--HG--
branch : 8.0
2026-10-02 00:53:36 +02:00
Cédric Krier 5727817585 Increase version number
--HG--
branch : 8.0
2026-10-02 00:50:13 +02:00
Cédric Krier e5c3eacd62 Add tag purchase-8.0.3
--HG--
branch : 8.0
2026-10-02 00:49:58 +02:00
Cédric Krier 1f5a9513ed Prepare release purchase-8.0.3
--HG--
branch : 8.0
2026-10-02 00:49:56 +02:00
Cédric Krier 3328236b4d Increase version number
--HG--
branch : 8.0
2026-10-02 00:46:43 +02:00
Cédric Krier 7af67a2ecd Add tag purchase_amendment-8.0.2
--HG--
branch : 8.0
2026-10-02 00:46:31 +02:00
Cédric Krier 1951b87a64 Prepare release purchase_amendment-8.0.2
--HG--
branch : 8.0
2026-10-02 00:46:30 +02:00
Cédric Krier 317159e8c1 Increase version number
--HG--
branch : 8.0
2026-10-02 00:44:06 +02:00
Cédric Krier 40295972f4 Add tag sale-8.0.5
--HG--
branch : 8.0
2026-10-02 00:43:50 +02:00
Cédric Krier 14f446e338 Prepare release sale-8.0.5
--HG--
branch : 8.0
2026-10-02 00:43:48 +02:00
Cédric Krier e12f1559ab Increase version number
--HG--
branch : 8.0
2026-10-02 00:39:13 +02:00
Cédric Krier c3ce910122 Add tag sale_advance_payment-8.0.1
--HG--
branch : 8.0
2026-10-02 00:38:58 +02:00
Cédric Krier 3392d04973 Prepare release sale_advance_payment-8.0.1
--HG--
branch : 8.0
2026-10-02 00:38:56 +02:00
Cédric Krier e735109fb1 Increase version number
--HG--
branch : 8.0
2026-10-02 00:37:08 +02:00
Cédric Krier 7015fd5c03 Add tag stock-8.0.4
--HG--
branch : 8.0
2026-10-02 00:36:57 +02:00
Cédric Krier 28937a7c00 Prepare release stock-8.0.4
--HG--
branch : 8.0
2026-10-02 00:36:56 +02:00
Cédric Krier 06d2b9e9b8 Increase version number
--HG--
branch : 8.0
2026-10-02 00:36:03 +02:00
Cédric Krier d24bcfc3bc Add tag stock_package_shipping_ups-8.0.2
--HG--
branch : 8.0
2026-10-02 00:35:49 +02:00
Cédric Krier 69bb65ea26 Prepare release stock_package_shipping_ups-8.0.2
--HG--
branch : 8.0
2026-10-02 00:35:47 +02:00
Cédric Krier e7f350ba26 Increase version number
--HG--
branch : 8.0
2026-10-02 00:35:10 +02:00
Cédric Krier c893c4d73a Add tag web_shop_shopify-8.0.7
--HG--
branch : 8.0
2026-10-02 00:34:56 +02:00
Cédric Krier a8a2651fb6 Prepare release web_shop_shopify-8.0.7
--HG--
branch : 8.0
2026-10-02 00:34:54 +02:00
Cédric Krier 05d412c07f Increase version number
--HG--
branch : 8.0
2026-10-02 00:33:23 +02:00
Cédric Krier 3fbf6b9b00 Add tag sao-8.0.12
--HG--
branch : 8.0
2026-10-02 00:33:00 +02:00
Cédric Krier cb8e467ab7 Prepare release sao-8.0.12
--HG--
branch : 8.0
2026-10-02 00:32:58 +02:00
Cédric Krier f2dbd6d623 Increase version number
--HG--
branch : 8.0
2026-10-02 00:30:56 +02:00
Cédric Krier 5fa9ea562a Add tag trytond-8.0.11
--HG--
branch : 8.0
2026-10-02 00:30:42 +02:00
Cédric Krier 9cfa07adcc Prepare release trytond-8.0.11
--HG--
branch : 8.0
2026-10-02 00:30:41 +02:00
Cédric Krier 8c69cfe9b2 Escape arguments of report convert command
Closes #15035
(grafted from 18bd1a03d7459e9ff226c42201d9fdf485ab4bad)

--HG--
branch : 8.0
2026-09-30 09:34:18 +02:00
Cédric Krier 0bd4a6f8a1 Escape title and text when rendering HTML editor
Closes #15032
(grafted from 0c76d2bc755882d3633a9452c585412f7847d797)

--HG--
branch : 8.0
2026-09-30 09:39:21 +02:00
Cédric Krier 425d0cef08 Sort advance payment invoices on Function fields of sale
Closes #15131
(grafted from acfea4fba2c5555d65e96ef277e0ab1150869396)

--HG--
branch : 8.0
2026-09-30 13:00:48 +02:00
Adrià Tarroja Caubet 6853fd0d34 Set Selection value synchronously when available
Restore the displayed value before Window.Form reads the widgets. Otherwise
rebuilding the selection may temporarily select its first option.

Closes #15117
(grafted from 0fdec92fe79648f3044c5bc10c4dd729a74028fd)

--HG--
branch : 8.0
2026-09-29 15:31:30 +02:00
Adrià Tarroja Caubet 7c9ed9957e Prevent form content from pushing chat sidebar outside viewport
Closes #15057
(grafted from 15fcaa9f473357ad63215decf5af4a1e5a0c61e6)

--HG--
branch : 8.0
2026-09-03 15:28:26 +02:00
Cédric Krier 05678b8046 Do not enforce check access when renewing device cookie
Closes #15118
(grafted from cd8a5e16e44c265bcf96c17718c9d9b4ae4e3b09)

--HG--
branch : 8.0
2026-09-23 12:08:23 +02:00
Nicolas Évrard 3e1ec32fd3 Lock the whole manipulation of the instance __dict__ when accessing attributes
Previously the lock was too fine grained and missed some concurrent access that
could result in AttributeError. We implement a slightly changed double-checked
locking technique to ensure a fast path when the initialization already
occured.

Closes #15122
(grafted from 8563e4dbd257939ce08bac5eef3858171006981b)

--HG--
branch : 8.0
2026-09-24 14:55:59 +02:00
Lars Wuerfel 3debac9c7b Update wizard tutorial to use tryton.cfg to register model
Closes #15089
(grafted from b5a764a7c2a909bef03ea9f5e2ed2858d42d147f)

--HG--
branch : 8.0
2026-09-28 18:07:34 +02:00
Cédric Krier 60e6824f69 Register opportunity report as report in tutorial
(grafted from 34804d9673e9e8ed1e369024bbc05325bcd78a56)

--HG--
branch : 8.0
2026-09-28 18:10:16 +02:00
Adrià Tarroja Caubet df5e86e6c4 Use super invoice grouping origins when extending sale for kit
Closes #15127
(grafted from 1ecc41dbcfa58486baa6272537c2f294ba4d6215)

--HG--
branch : 8.0
2026-09-28 17:47:13 +02:00
Cédric Krier b081ab3e89 Make mandate required for SEPA direct debit reception
Closes #15093
(grafted from 5f18f6ba22b8d079b9f349d74ad748e418f6f373)

--HG--
branch : 8.0
2026-09-18 23:41:26 +02:00
Cédric Krier a4625bbffb Fill direct debit payment with Stripe customer
Closes #15110
(grafted from 081497495956428c349bb382f7127bc9a0479d0b)

--HG--
branch : 8.0
2026-09-18 23:35:40 +02:00
Cédric Krier 91af0fb678 Do not set non salable product on sale line when synchronise with Shopify
Closes #15096
(grafted from 61fc72015b9b1b77c437260145170bd4b6a75140)

--HG--
branch : 8.0
2026-09-15 12:04:11 +02:00
Cédric Krier 0ae365085b Replace typing of stock move origin by sale and purchase Function field
The origin may not always be a sale or purchase line like with product kit.
So such test must be extendable by other modules implicitly. This can be
achieved by using the Function fields.

Closes #15084
(grafted from 84761faccad43bc56a11a2e8bb8cf2977ba8e8db)

--HG--
branch : 8.0
2026-09-10 14:22:34 +02:00
Cédric Krier b22a72940e Use BillThirdParty tag when requesting UPS to bill charge to customs agent
It is not allowed to use BillShipper or BillReceiver with different accounts
for different charges.

Closes #15105
(grafted from 693c3aa598a48c64b74d8bfe328c928ac9757564)

--HG--
branch : 8.0
2026-09-17 17:02:06 +02:00
Cédric Krier 2fb5c8f53e Copy the field used for Function field
Closes #15079
(grafted from a47a9a5be6728371561eb5e9dc76858cb052fa6f)

--HG--
branch : 8.0
2026-09-10 08:11:03 +02:00
Cédric Krier d7365902d4 Execute the lock_id when computing the running values of cron
Closes #15078
(grafted from 6166d6ed42c968ad1abbb6f21af7ca2cfc1fef0d)

--HG--
branch : 8.0
2026-09-09 18:55:29 +02:00
Cédric Krier f6858c6530 Include the minimal input/output quantity the same day as input in the average quantity for the turnover
Such quantity should be accounted as staying 1 day in the warehouse otherwise
we may have more quantity leaving than the average stock.

Closes #15014
(grafted from 6267ce266fcf8e9494eb277996e948c9dfe21d1d)

--HG--
branch : 8.0
2026-09-24 09:27:50 +02:00
Nicolas Évrard cbaaa525b6 Use a minimal size of 2 for the select tag of MultiSelection widgets
Browsers based on Chromium renders the select as a "normal" select tag when
size=1. Such that the mousedown event is triggered twice which clear the
selection.

Closes #14529
(grafted from 4d95b908a33d950d24416b53d6264db1b0b3b443)

--HG--
branch : 8.0
2026-09-23 17:59:29 +02:00
Cédric Krier da1cbfd558 Requires at least version 3.2 of psycopg
get_notifications uses the timeout parameter which was added only in version
3.2

Closes #15103
(grafted from e590b70d17cec54d95435c6a71a8aaf3dca5e9fa)

--HG--
branch : 8.0
2026-09-16 14:37:43 +02:00
Cédric Krier f8ff618318 Fix typo in setup documentation of Typless
(grafted from 62c60e2ee578e06d1d11ee8e26f83da4bea4b21a)

--HG--
branch : 8.0
2026-04-28 19:28:46 +02:00
Cédric Krier c71150cab3 Increase maximum sleep in Stripe scenario
Stripe takes more time to process the events.
(grafted from 18df935053155d3fb5c5311a8c0f1a8ce555803c)

--HG--
branch : 8.0
2026-09-21 10:19:36 +02:00
Cédric Krier 78ffbdd65f Use decorator before ModelView.button to set default records for cron task
Closes #15076
(grafted from e92eb501cc50ea906fa839596f2c533b787126d6)

--HG--
branch : 8.0
2026-09-09 12:22:52 +02:00
Cédric Krier 7733443332 Set timeout to 0 when receiving PostgreSQL notifications
There is no need to wait 2 seconds for more notifications as we call
get_notifications only when the selector is triggered.

Closes #15102
(grafted from 02567102eb63f69faedf61ae83c51a5075b57588)

--HG--
branch : 8.0
2026-09-16 14:35:33 +02:00
Cédric Krier bb74334f1f Do not copy payment amount cache when copying account move line
Closes #15111
(grafted from 6f4a8415d5d522e028b06df7b406d63b73bf90d1)

--HG--
branch : 8.0
2026-09-19 10:03:57 +02:00
Cédric Krier 2262e4b252 Do not enforce access rights when performing action on delete
Closes #15050
(grafted from e6d7121c620cec6986ab524f43b97f7adb5f7da9)

--HG--
branch : 8.0
2026-08-31 13:43:41 +02:00
Nicolas Évrard f34a7c3a47 Support getting and setting tree widths without a screen width
Closes #15099
(grafted from bdec2127549993b25a44c2057a3f2b7a824ecdc2)

--HG--
branch : 8.0
2026-09-18 23:52:09 +02:00
Cédric Krier 2584156da2 Override contextual groups when evaluating button states
Closes #15098
(grafted from 1326133b908292ff6e2964aa5a3c0682dd4ecd5c)

--HG--
branch : 8.0
2026-09-30 08:15:23 +02:00
Cédric Krier a8faeb02b5 Pass query as a list of argument to format_args for Shopify query logging
(grafted from 42067e83b4f7b206c40af88b0e1bb41f573f0407)

--HG--
branch : 8.0
2026-08-06 09:46:51 +02:00
Cédric Krier 206bbac206 Add logging info about Shopify request
The shopify_app does not generate any logging except the raw info from httpx.
(grafted from d714021b449cf35300aae970475f19c121c4effb)

--HG--
branch : 8.0
2026-08-06 08:48:19 +02:00
Cédric Krier e87a391ed4 Do not clear incoming moves that has been added to a shipment for amendment
Closes #15070
(grafted from fb713c8a996ea659217e194c87246f1067c7fb99)

--HG--
branch : 8.0
2026-09-07 15:24:40 +02:00
Cédric Krier 60774f0d0a Increase version number
--HG--
branch : 8.0
2026-09-18 18:48:49 +02:00
Cédric Krier be82140194 Add tag sao-8.0.11
--HG--
branch : 8.0
2026-09-18 18:48:23 +02:00
Cédric Krier 9821bdd51e Prepare release sao-8.0.11
--HG--
branch : 8.0
2026-09-18 18:48:22 +02:00
Cédric Krier 6dac9305e5 Store any selection in selection mixin to compute textual value
Since 917de1b3e124 the current selection is no more stored but it is needed to
render textual value of a column synchronously.

Closes #15104
(grafted from 2b97e6681d99b4172aceb3a45557e92e2420795b)

--HG--
branch : 8.0
2026-09-17 16:18:47 +02:00
Cédric Krier 5e010fd860 Increase version number
--HG--
branch : 8.0
2026-09-16 23:56:56 +02:00
Cédric Krier 994d66caa3 Add tag account_fr_chorus-8.0.1
--HG--
branch : 8.0
2026-09-16 23:56:48 +02:00
Cédric Krier cbad3d15bc Prepare release account_fr_chorus-8.0.1
--HG--
branch : 8.0
2026-09-16 23:56:47 +02:00
Cédric Krier ccf0bcd700 Increase version number
--HG--
branch : 8.0
2026-09-16 23:54:13 +02:00
Cédric Krier 33db6454a9 Add tag account_invoice-8.0.2
--HG--
branch : 8.0
2026-09-16 23:54:03 +02:00
Cédric Krier a0a7832d3a Prepare release account_invoice-8.0.2
--HG--
branch : 8.0
2026-09-16 23:54:02 +02:00
Cédric Krier 582533ff42 Increase version number
--HG--
branch : 8.0
2026-09-16 23:50:55 +02:00
Cédric Krier f21b62edbb Add tag account_invoice_defer-8.0.1
--HG--
branch : 8.0
2026-09-16 23:50:46 +02:00
Cédric Krier 7f44f1ab88 Prepare release account_invoice_defer-8.0.1
--HG--
branch : 8.0
2026-09-16 23:50:45 +02:00
Cédric Krier 85e6dbcdde Increase version number
--HG--
branch : 8.0
2026-09-16 23:43:34 +02:00
Cédric Krier a1d4026d6a Add tag account_payment_sepa-8.0.3
--HG--
branch : 8.0
2026-09-16 23:43:24 +02:00
Cédric Krier a517b778c6 Prepare release account_payment_sepa-8.0.3
--HG--
branch : 8.0
2026-09-16 23:43:23 +02:00
Cédric Krier cdce88ff00 Increase version number
--HG--
branch : 8.0
2026-09-16 23:40:01 +02:00
Cédric Krier eda316fff6 Add tag edocument_ubl-8.0.5
--HG--
branch : 8.0
2026-09-16 23:39:51 +02:00
Cédric Krier 89e5d33b10 Prepare release edocument_ubl-8.0.5
--HG--
branch : 8.0
2026-09-16 23:39:50 +02:00
Cédric Krier ce6945142c Increase version number
--HG--
branch : 8.0
2026-09-16 23:37:29 +02:00
Cédric Krier b4d43e279c Add tag edocument_uncefact-8.0.3
--HG--
branch : 8.0
2026-09-16 23:37:18 +02:00
Cédric Krier ae092912f6 Prepare release edocument_uncefact-8.0.3
--HG--
branch : 8.0
2026-09-16 23:37:17 +02:00
Cédric Krier c94e3668b2 Increase version number
--HG--
branch : 8.0
2026-09-16 23:35:50 +02:00
Cédric Krier c29dd20661 Add tag product-8.0.2
--HG--
branch : 8.0
2026-09-16 23:35:39 +02:00
Cédric Krier 8ec0e54fa0 Prepare release product-8.0.2
--HG--
branch : 8.0
2026-09-16 23:35:38 +02:00
Cédric Krier e66eb2f351 Increase version number
--HG--
branch : 8.0
2026-09-16 23:34:18 +02:00
Cédric Krier da2f6ea8fc Add tag product_kit-8.0.3
--HG--
branch : 8.0
2026-09-16 23:34:09 +02:00
Cédric Krier 8b0bfce413 Prepare release product_kit-8.0.3
--HG--
branch : 8.0
2026-09-16 23:34:08 +02:00
Cédric Krier 8d58264ba4 Increase version number
--HG--
branch : 8.0
2026-09-16 23:32:46 +02:00
Cédric Krier e765e68b9d Add tag purchase-8.0.2
--HG--
branch : 8.0
2026-09-16 23:32:34 +02:00
Cédric Krier 2e9a37626b Prepare release purchase-8.0.2
--HG--
branch : 8.0
2026-09-16 23:32:33 +02:00
Cédric Krier d725d601e5 Increase version number
--HG--
branch : 8.0
2026-09-16 23:31:09 +02:00
Cédric Krier 280e86131f Add tag purchase_blanket_agreement-8.0.2
--HG--
branch : 8.0
2026-09-16 23:31:00 +02:00
Cédric Krier 790d39d9ac Prepare release purchase_blanket_agreement-8.0.2
--HG--
branch : 8.0
2026-09-16 23:30:59 +02:00
Cédric Krier 4c562d3101 Increase version number
--HG--
branch : 8.0
2026-09-16 23:29:35 +02:00
Cédric Krier ed394b60d1 Add tag sale-8.0.4
--HG--
branch : 8.0
2026-09-16 23:29:26 +02:00
Cédric Krier 5e31e05a36 Prepare release sale-8.0.4
--HG--
branch : 8.0
2026-09-16 23:29:25 +02:00
Cédric Krier d85bbf1a31 Increase version number
--HG--
branch : 8.0
2026-09-16 23:28:03 +02:00
Cédric Krier e10492625a Add tag sale_supply-8.0.1
--HG--
branch : 8.0
2026-09-16 23:27:55 +02:00
Cédric Krier 37b9893df6 Prepare release sale_supply-8.0.1
--HG--
branch : 8.0
2026-09-16 23:27:53 +02:00
Cédric Krier bce9e311cf Increase version number
--HG--
branch : 8.0
2026-09-16 23:26:26 +02:00
Cédric Krier 4f2b32c1e1 Add tag sale_supply_drop_shipment-8.0.1
--HG--
branch : 8.0
2026-09-16 23:26:17 +02:00
Cédric Krier 037679f073 Prepare release sale_supply_drop_shipment-8.0.1
--HG--
branch : 8.0
2026-09-16 23:26:16 +02:00
Cédric Krier 3e551e31e3 Increase version number
--HG--
branch : 8.0
2026-09-16 23:25:50 +02:00
Cédric Krier b4baf0fb82 Add tag stock_ethanol-8.0.1
--HG--
branch : 8.0
2026-09-16 23:25:39 +02:00
Cédric Krier 02420f000f Prepare release stock_ethanol-8.0.1
--HG--
branch : 8.0
2026-09-16 23:25:37 +02:00
Cédric Krier 5afa0f29b1 Increase version number
--HG--
branch : 8.0
2026-09-16 23:24:44 +02:00
Cédric Krier a4f5c336b1 Add tag stock_package_shipping-8.0.2
--HG--
branch : 8.0
2026-09-16 23:24:36 +02:00
Cédric Krier 0ffb47662e Prepare release stock_package_shipping-8.0.2
--HG--
branch : 8.0
2026-09-16 23:24:34 +02:00
Cédric Krier 7e65d2a5cd Increase version number
--HG--
branch : 8.0
2026-09-16 23:23:05 +02:00
Cédric Krier ee6e06b7d5 Add tag user_role-8.0.2
--HG--
branch : 8.0
2026-09-16 23:22:56 +02:00
Cédric Krier 5266a55c64 Prepare release user_role-8.0.2
--HG--
branch : 8.0
2026-09-16 23:22:55 +02:00
Cédric Krier 5df308e81d Increase version number
--HG--
branch : 8.0
2026-09-16 23:21:30 +02:00
Cédric Krier 74bd11d7e1 Add tag web_shop_shopify-8.0.6
--HG--
branch : 8.0
2026-09-16 23:21:20 +02:00
Cédric Krier df37326c95 Prepare release web_shop_shopify-8.0.6
--HG--
branch : 8.0
2026-09-16 23:21:19 +02:00
Cédric Krier 3773d04991 Increase version number
--HG--
branch : 8.0
2026-09-16 23:15:49 +02:00
Cédric Krier 4dbc92712e Add tag sao-8.0.10
--HG--
branch : 8.0
2026-09-16 23:12:24 +02:00
Cédric Krier c65bf0cb9a Prepare release sao-8.0.10
--HG--
branch : 8.0
2026-09-16 23:12:23 +02:00
Cédric Krier 1f05a2b240 Increase version number
--HG--
branch : 8.0
2026-09-16 23:06:43 +02:00
Cédric Krier 3f84b997ac Add tag tryton-8.0.9
--HG--
branch : 8.0
2026-09-16 23:06:32 +02:00
Cédric Krier 1c47e75e6f Prepare release tryton-8.0.9
--HG--
branch : 8.0
2026-09-16 23:06:31 +02:00
Cédric Krier 1f04d08061 Increase version number
--HG--
branch : 8.0
2026-09-16 23:03:56 +02:00
Cédric Krier 8ea339ab0f Add tag trytond-8.0.10
--HG--
branch : 8.0
2026-09-16 23:03:42 +02:00
Cédric Krier de9dc63c55 Prepare release trytond-8.0.10
--HG--
branch : 8.0
2026-09-16 23:03:41 +02:00
Cédric Krier 3ea61dd88f Require a message file for SEPA message
Closes #15073
(grafted from ccb26ad8dd0efcfc062c8d95fab29a6bfba5b74a)

--HG--
branch : 8.0
2026-09-07 18:12:38 +02:00
Cédric Krier 6ff3f7701f Test if the line's origin is an instance of ModelStorage before accessing the record name
Closes #15072
(grafted from c51729392ebd3af4327e55dd7f1c195163f5b1cf)

--HG--
branch : 8.0
2026-09-07 18:01:00 +02:00
Nicolas Évrard 6d3956ff5f Use the selection from the update_selection call in Selection editable columns
Since 917de1b3e124 the selection is not stored on the selection_mixins we must
thus use the one coming from the callback call

Closes #15087
(grafted from e80a99079b44ce2d1c22865bd919fef6bfc8ce24)

--HG--
branch : 8.0
2026-09-10 22:12:59 +02:00
Cédric Krier 6ccad120d7 Use explicit order for shipments and invoices on sale and purchase
Closes #15090
(grafted from 05dbc76d7b374aebf7aaef7c03617cbec6c67393)

--HG--
branch : 8.0
2026-09-13 13:57:29 +02:00
Cédric Krier 7be6fa1e91 Returns unique and ordered shipments when extending sale and purchase for kit
Since 9385c3660f17 the super method returns instances so only instances must be
added to the set to ensure uniqueness.

Closes #15091
(grafted from 7b9bcbe10ded642353834ba189a888119d7073ae)

--HG--
branch : 8.0
2026-09-13 14:01:21 +02:00
Cédric Krier 55284034da Sort invoices and shipments on Function fields of sale and purchase
Closes #15083
(grafted from 9385c3660f174830a30529078f3e2899a7a8672c)

--HG--
branch : 8.0
2026-09-10 14:14:16 +02:00
Cédric Krier eeb2b75b4c Forbid to set role to admin user
The links between admin user and groups are managed by XML record.
But the sync task may delete such link if a role is assigned to admin because
the task is run as root which skip the XML check.

Closes #15086
(grafted from 0512f49869883b95b74387a292753e9e43375f35)

--HG--
branch : 8.0
2026-09-10 16:07:26 +02:00
Cédric Krier 7f872d1a8c Display the screen after button confirmation has been rejected
Since 0b692f8ac308 the screen must be displayed again in order to remove the
disabled property.

Closes #15061
(grafted from 7df15278c9793c95b2d14038c1f779a4447838d4)

--HG--
branch : 8.0
2026-09-03 17:23:33 +02:00
Cédric Krier 8f5b01564e Store delete rule of column per constraint
If a column is used for different foreign keys with different delete rules, the
foreign key may be recreated if the last rule stored is different.

Closes #15053
(grafted from 636865d7fc72d5e59d9a7bb447de8b87743cc5ad)

--HG--
branch : 8.0
2026-09-02 11:43:46 +02:00
Adrià Tarroja Caubet 3863230030 Check for running deferrals when closing a standard period only
Invoice deferred creates moves only on standard period

Closes #15042
(grafted from f56a0a6d5558009b138069bdad1c3d7ff9c37c87)

--HG--
branch : 8.0
2026-09-10 08:20:15 +02:00
Cédric Krier 7cda9ec0fc Set button decorator for sending and updating invoices on Chorus to a different method than the cron
Closes #15069
(grafted from 59d049637f6755f0678f5acb460525b5be5d72b4)

--HG--
branch : 8.0
2026-09-06 10:21:56 +02:00
Cédric Krier c7352528ab Do not set searcher on ethanol volume of products by locations
The field on product is not searchable.

Closes #15064
(grafted from d28f3d9513b9a23275186cf76efb451e63fe7ae9)

--HG--
branch : 8.0
2026-09-04 08:31:27 +02:00
Cédric Krier ba18ab2e16 Do not add searcher to the template function fields if the template field is not searchable
Closes #15063
(grafted from c7ff87de982a3f9d0e46a62bfebe76751bcbf4e2)

--HG--
branch : 8.0
2026-09-04 08:30:25 +02:00
Cédric Krier 1fb965a74a Generate a valid domain for the origin invoices via the searcher on the invoice
Closes #15062
(grafted from 3fa1c544b703ac7b134992cd62693cd43b633c45)

--HG--
branch : 8.0
2026-09-04 08:28:54 +02:00
Cédric Krier 366327464b Set the company on the invoice before assigning the party
The party of the invoice must have the invoice's company in the context to
correctly set the account when calling on_change_party.

Closes #15049
(grafted from 9b78bdacf182dfa9e5ab3c5206fb8fb5adfb2868)

--HG--
branch : 8.0
2026-08-31 12:06:40 +02:00
Cédric Krier 862ef8d408 Wait until a message is received when testing subscription of bus
Closes #15065
(grafted from 020452568c782b3d20fe64fe58e33088095125a1)

--HG--
branch : 8.0
2026-09-04 11:53:57 +02:00
Cédric Krier 0512626e26 Use a sentinel as default value for setting attribute only if changed
For new instances, we must set also the attribute with value `None` as they may
be tested later.

Closes #15060
(grafted from bfe3756af384f4fce94244761d5f5dd3f62d0ff6)

--HG--
branch : 8.0
2026-09-03 15:49:20 +02:00
Cédric Krier 4e4d7b0729 Test the existence of the request context key before using it for URL
Closes #15046
(grafted from 5eae02e6c094d6741d615d1c4bd2333721eb92b7)

--HG--
branch : 8.0
2026-08-27 15:56:47 +02:00
Nicolas Évrard 04ab9aaedf Check the existence of a getter before adding it to a field depends
Closes #15055
(grafted from 9d5d21d76b461d82c7d43c6221f7e9f1f1d3f5cc)

--HG--
branch : 8.0
2026-09-03 12:24:29 +02:00
Cédric Krier 0b24d35a3d Clear attachment preview when there is no current record
Closes #15044
(grafted from dc0a158ea439898e071602e8dc87fc4767fe76c6)

--HG--
branch : 8.0
2026-08-26 10:26:45 +02:00
Lars Wuerfel e298bf5935 Fix the "prefixes" key name in the cookiecutter template
Closes #15054
(grafted from 273529fe5d566940dbac9fb933dd3fcc6daeb60f)

--HG--
branch : 8.0
2026-09-03 12:38:02 +02:00
Cédric Krier 921562a1dd Ensure it is still the same record when executing the display callback of a widget
When a widget display is asynchronous, we must ensure that it is still the same
record that is being displayed when the callback is finally executed. Otherwise
it may render the data of a different record in the HTML.

Closes #15041
(grafted from dbd215ffb07150c2f476922bd7c66dc896ed2665)

--HG--
branch : 8.0
2026-08-25 13:09:25 +02:00
Eva Luadora de088e6e3e Bind graph using the DOM element instead of id
Billboard must receive the graph element directly because the chart can be
rendered while it is still detached from the document.

Closes #14970
(grafted from 00123388953eb5d0e7cee0ff3b8d005a826db9e9)

--HG--
branch : 8.0
2026-09-02 13:57:21 +02:00
Cédric Krier d2ced133f6 Include first line of unstructured street in AdrLine tag of SEPA message
Since 327f65ad55e6 the StrtNm tag is no more the first line of the street so
this lines must be included in AdrLine.

Closes #15036
(grafted from 3f9bfd6ce8b9dcb718a20272eb37f1cb83f727e8)

--HG--
branch : 8.0
2026-08-24 11:56:05 +02:00
Cédric Krier 6ff68e42b9 Cache the help with the selection per domain in selection mixin
Closes #15031
(grafted from 1439af7bdd4c87f1bb9761f722c4320e572fde80)

--HG--
branch : 8.0
2026-08-21 10:04:05 +02:00
Cédric Krier 2186c3740c Do not set selection after asynchronous call if parameters have changed
And do not store the current selection nor help but only pass them to the
callback.

Closes #15029
(grafted from 917de1b3e12443c919b90ba7cac9497bca047ef9)

--HG--
branch : 8.0
2026-08-21 15:26:56 +02:00
Cédric Krier cb050c3441 Make wizard wait for setting default value before ending processing
Closes #15040
(grafted from 78d8d12401ff32125fa24fdbd600a9e6eb0cc136)

--HG--
branch : 8.0
2026-08-25 12:24:36 +02:00
Cédric Krier 762ee55d45 Manage the sign on LineTotalAmount instead of BilledQuantity in UN/CEFACT 16B-CII
Closes #15006
(grafted from 0697a96aaf6c42aeb8e3d81b2d33167eb85a974c)

--HG--
branch : 8.0
2026-08-11 12:10:58 +02:00
Cédric Krier c6915b38bd Set PostOfficeBox when address has a post box in UN/CEFACT 16B-CII
Closes #15005
(grafted from 702f1b938b21c1bbe0536037c300c9c103a952e2)

--HG--
branch : 8.0
2026-08-11 12:08:26 +02:00
Cédric Krier b5a32b6e65 Set format attribute for DateTimeString in UN/CEFACT 16B-CII
Closes #15004
(grafted from 9b3043220a6da6f9d31dd70f1b1e348b3dc425fe)

--HG--
branch : 8.0
2026-08-11 12:05:48 +02:00
Cédric Krier eb14b26c7c Store only records count greater than 0 in the cache when delete records
The existing cached count may be just an estimation so it is possible that more
records are deleted.

Closes #15038
(grafted from aa4a8bd85207b307b4aa075b105550e4ddae100f)

--HG--
branch : 8.0
2026-08-25 09:45:59 +02:00
Cédric Krier 32197c0397 Ensure to use an estimated count greater than 1 when applying log10
Closes #15038
(grafted from ff2281026e58f4d7a8c9823837ce16a9bb0fa09b)

--HG--
branch : 8.0
2026-08-25 09:46:47 +02:00
Adrià Tarroja Caubet 02c2c2718a Add missing transaction commit to SEPA mandate migration
The console does not commit the transaction automatically, so the updated
addresses are not persisted without an explicit commit.

Closes #15037
(grafted from e56328f60aa45be564b55b93cd0c14ba8b23458c)

--HG--
branch : 8.0
2026-08-06 13:09:48 +02:00
Adrià Tarroja Caubet 4d0ad17551 Call on_change_party without assignment in SEPA mandate migration
The method updates the address in place and returns None. Assigning its
return value to the address raises an AssertionError.

Closes #14996
(grafted from 09ace4ae51505a83d13bd3d034536a022730a2f3)

--HG--
branch : 8.0
2026-08-06 13:08:45 +02:00
Cédric Krier 416122a718 Add record changed callback
Only when the current record has changed that those objects needs to be
refreshed/cleared:

    - the info bar
    - the resources
    - the attachment preview
    - the chat

Closes #15012
(grafted from dc3a3e20006329b742e6f989a0fd01d485ec80b1)

--HG--
branch : 8.0
2026-08-14 12:55:53 +02:00
Cédric Krier a5ac7f8cfa Call on_change_product only if the sale line has been changed
Since f41c9c208d39 the _changed_values is a method instead of a property.

Closes #15013
(grafted from 80f38dd8024d1e471f7c1569ba1b36c87185f7cc)

--HG--
branch : 8.0
2026-08-14 18:11:42 +02:00
Cédric Krier ad81e44df6 Set all attributes of transaction before connecting to the database
The connection to the database may fail and thus stop and rollback may be
called. All the attributes must be set to avoid to raise another AttributeError
exception.

Closes #15022
(grafted from 654923a8085d4804dd217e487c80085c53eb470b)

--HG--
branch : 8.0
2026-08-17 17:32:55 +02:00
Cédric Krier c4d1f2ce4b Allow the creation of shipping label for packages when the shipment state is shipped
Closes #15027
(grafted from 273c2c256c1b4774811be1b15ea12e9d478bdd46)

--HG--
branch : 8.0
2026-08-20 12:02:57 +02:00
Cédric Krier b78276b643 Protect writing configuration of tryton with a thread lock
Closes #6114
(grafted from d09f4b4b8b5a163ae02d9f066922e0999022b4f8)

--HG--
branch : 8.0
2026-07-27 12:10:00 +02:00
Cédric Krier 0d0d626c29 Do not rely on invoices order from sale in sale supply test scenario
Closes #15034
(grafted from 76fa6c0dae6901fcf8eb1df8037dbddb09499b8b)

--HG--
branch : 8.0
2026-08-23 14:49:30 +02:00
Cédric Krier e8adf18a55 Do not rely on shipments order from sale in product kit test scenario
Closes #15016
(grafted from 58d67088854ac415c961f6c265da3b6e28ce1c37)

--HG--
branch : 8.0
2026-08-16 23:51:22 +02:00
Cédric Krier e22d717e8a Do not rely on invoices order from sale and purchase in test scenario
Closes #15033
(grafted from d1364323d4ac8c2f3d823cbee89e5217a53e98da)

--HG--
branch : 8.0
2026-08-23 08:28:53 +02:00
Cédric Krier 87e7fc92f6 Raise last retry exception from JSON-RPC request
Closes #15008
(grafted from 3e2a195d2b333fda531f719c4b6c69a7c5f2e1c0)

--HG--
branch : 8.0
2026-08-15 08:03:57 +02:00
Cédric Krier 605b1d214e Register cache instance after being fully initialized
Otherwise an instance can be accessed by another thread via the registry when
it is still being initialized. And it may crash on missing attribute.

Closes #15007
(grafted from f1840545f4eb5ae5c870a2557a7c3a0314fedb16)

--HG--
branch : 8.0
2026-08-12 17:57:01 +02:00
Cédric Krier d38bb3fea5 Test findtext result as boolean when parsing UBL invoice
Closes #15003
(grafted from ebb739d278526b86ec2f4ac31df63388874c2487)

--HG--
branch : 8.0
2026-08-11 12:02:09 +02:00
Cédric Krier 7844a750a3 Limit the start id of table to 500 for tests
By using the formula `(idx * prime) % range + 1`, tables created consecutively
have start id distant by `prime` and the maximum start id is `range`.
This avoid to overflow int4 when composing unique ID for table query.

Closes #15010
(grafted from f730392a270138148ed62366cf7f35a7cc01a8b6)

--HG--
branch : 8.0
2026-08-17 15:06:09 +02:00
Nicolas Évrard 5a3a52e164 Reset TABLES_CREATED when dropping the database when testing
Closes #15002
(grafted from e9f2b42e96ebb4553ef153f1d778c5d1042b3891)

--HG--
branch : 8.0
2026-08-10 14:51:04 +02:00
Cédric Krier 6992663e99 Increase version number
--HG--
branch : 8.0
2026-08-15 09:07:22 +02:00
Cédric Krier b521cacbf1 Add tag account_invoice_history-8.0.1
--HG--
branch : 8.0
2026-08-15 09:07:12 +02:00
Cédric Krier bc372c52e9 Prepare release account_invoice_history-8.0.1
--HG--
branch : 8.0
2026-08-15 09:07:11 +02:00
Cédric Krier 6ddfab0dc3 Increase version number
--HG--
branch : 8.0
2026-08-15 09:03:46 +02:00
Cédric Krier 0589978d99 Add tag currency_ro-8.0.2
--HG--
branch : 8.0
2026-08-15 09:03:35 +02:00
Cédric Krier 0ba4a09e2e Prepare release currency_ro-8.0.2
--HG--
branch : 8.0
2026-08-15 09:03:32 +02:00
Cédric Krier 1f0292c073 Increase version number
--HG--
branch : 8.0
2026-08-15 09:02:34 +02:00
Cédric Krier 96976c6074 Add tag edocument_peppol_peppyrus-8.0.1
--HG--
branch : 8.0
2026-08-15 09:02:24 +02:00
Cédric Krier 6993fe7ad5 Prepare release edocument_peppol_peppyrus-8.0.1
--HG--
branch : 8.0
2026-08-15 09:02:22 +02:00
Cédric Krier bacd9218f2 Increase version number
--HG--
branch : 8.0
2026-08-15 09:00:18 +02:00
Cédric Krier 5764bbd2a3 Add tag edocument_ubl-8.0.4
--HG--
branch : 8.0
2026-08-15 09:00:07 +02:00
Cédric Krier 40149fe10b Prepare release edocument_ubl-8.0.4
--HG--
branch : 8.0
2026-08-15 09:00:06 +02:00
Cédric Krier db633960ad Increase version number
--HG--
branch : 8.0
2026-08-15 08:57:55 +02:00
Cédric Krier 735fc1ef03 Add tag party-8.0.3
--HG--
branch : 8.0
2026-08-15 08:57:40 +02:00
Cédric Krier a9f1433af4 Prepare release party-8.0.3
--HG--
branch : 8.0
2026-08-15 08:57:38 +02:00
Cédric Krier 7ea80268fe Increase version number
--HG--
branch : 8.0
2026-08-15 08:54:31 +02:00
Cédric Krier 32a8376975 Add tag sale_blanket_agreement-8.0.2
--HG--
branch : 8.0
2026-08-15 08:54:21 +02:00
Cédric Krier 6f44a6d448 Prepare release sale_blanket_agreement-8.0.2
--HG--
branch : 8.0
2026-08-15 08:54:20 +02:00
Cédric Krier fd1c8d9609 Increase version number
--HG--
branch : 8.0
2026-08-15 08:51:30 +02:00
Cédric Krier a946f5a021 Add tag web_shop_shopify-8.0.5
--HG--
branch : 8.0
2026-08-15 08:51:20 +02:00
Cédric Krier 730cf3b2db Prepare release web_shop_shopify-8.0.5
--HG--
branch : 8.0
2026-08-15 08:51:18 +02:00
Cédric Krier fbe9b2c351 Increase version number
--HG--
branch : 8.0
2026-08-15 08:47:00 +02:00
Cédric Krier 1f21c54b77 Add tag sao-8.0.9
--HG--
branch : 8.0
2026-08-15 08:45:48 +02:00
Cédric Krier babab249a5 Prepare release sao-8.0.9
--HG--
branch : 8.0
2026-08-15 08:45:47 +02:00
Cédric Krier 115166a283 Increase version number
--HG--
branch : 8.0
2026-08-15 08:44:03 +02:00
Cédric Krier 34d5fb574f Add tag tryton-8.0.8
--HG--
branch : 8.0
2026-08-15 08:43:50 +02:00
Cédric Krier 7f65852dc4 Prepare release tryton-8.0.8
--HG--
branch : 8.0
2026-08-15 08:43:49 +02:00
Cédric Krier dce539cb3b Increase version number
--HG--
branch : 8.0
2026-08-15 08:41:44 +02:00
Cédric Krier bf2fbcc13e Add tag trytond-8.0.9
--HG--
branch : 8.0
2026-08-15 08:41:30 +02:00
Cédric Krier e51692ba4a Prepare release trytond-8.0.9
--HG--
branch : 8.0
2026-08-15 08:41:29 +02:00
Cédric Krier ed4b02ba77 Do not rely on shipments order from sale in test scenario
Closes #15009
(grafted from 5996cbb65d20057bd93e5ddfdf97cafe8e4c4529)

--HG--
branch : 8.0
2026-08-13 23:44:29 +02:00
Cédric Krier 228e760ab9 Set Shopify warehouse on sale line only if it has changed
Closes #14995
(grafted from 2c1a865682ab07758f4b9319f47cfc2b51df1a83)

--HG--
branch : 8.0
2026-08-06 10:52:54 +02:00
Cédric Krier f5b81e02f7 Validate current record before switching to next/previous record in window form
Closes #14994
(grafted from 9711708ebcd6242e98a4602da530369f176d6654)

--HG--
branch : 8.0
2026-08-05 17:39:38 +02:00
Cédric Krier 5fbf6bbda4 Hide unstructured street of address when building name is filled
Closes #14993
(grafted from 8ac6e6b2185903fc73f73c7cd975c2ce3eeb69be)

--HG--
branch : 8.0
2026-08-05 11:08:08 +02:00
Cédric Krier 0df7c4f64e Get Shopify order ID from the order_edit key for orders/edited topic
Closes #14992
(grafted from 1f42932a73656afed484a06e103874aa01e87d0a)

--HG--
branch : 8.0
2026-08-05 10:39:35 +02:00
Cédric Krier 2039d0061e Use webhook secret to verify Shopify webhook
Closes #14989
(grafted from 44d5d7ae9388dfb58c105fc52d582a5aa2f99cd2)

--HG--
branch : 8.0
2026-08-04 17:32:47 +02:00
Cédric Krier 1f807e9dd5 Convert request headers to dict and body as text to verify Shopify webhook
Closes #14991
(grafted from ce9159ad0fd6e129ddacd0db930a8e4f67279a33)

--HG--
branch : 8.0
2026-08-05 10:07:54 +02:00
Cédric Krier c0b0999cb0 Fill code compact in party identifier history table
Closes #14983
(grafted from 0d8ca8201d1b54f4f34fb27992b31ce15b276ad2)

--HG--
branch : 8.0
2026-08-03 12:26:11 +02:00
Cédric Krier 0565805d5b Raise PeppolServiceError when missing sender or recipient for Peppyrus submission
Closes #14999
(grafted from 53f956b55465ca2c1d0c60445ba2b65c359b1da1)

--HG--
branch : 8.0
2026-08-06 15:59:39 +02:00
Cédric Krier 9ae6333656 Do not try to update status of Peppyrus document without transmission ID
Closes #14998
(grafted from 27108e7beebfb2c68b9caad5add3456310fe9c9f)

--HG--
branch : 8.0
2026-08-06 15:55:46 +02:00
Cédric Krier dfb345dc86 Use boolean operator to test remaining quantity of blanket agreement when closing
The remaining quantity may be None if the line has no quantity set.
But the getter ensure that the remaining quantity is always greater or equal to 0.

Closes #14987
(grafted from 640dfcc6d6d36f3fbbf8d232c760ea1c560c996d)

--HG--
branch : 8.0
2026-08-04 14:43:53 +02:00
Cédric Krier b20163f6b9 Store Peppyrus message using service instance instead of class
Closes #14990
(grafted from 85c2d0b69b01250cd2c7c21eb16a4b86c550edc3)

--HG--
branch : 8.0
2026-08-05 07:08:27 +02:00
Cédric Krier 566cd48cd6 Use request data property to parse form data as json
Closes #14984
(grafted from a9624e36e318273942bb1eed3e0258497d7d9f15)

--HG--
branch : 8.0
2026-08-04 07:49:57 +02:00
Cédric Krier 301a3b3841 Use https for namespaces for currency rate from Romanian National Bank
Closes #14986
(grafted from a7bb08629b6172df9e2b249cf15c84ce875f2d85)

--HG--
branch : 8.0
2026-08-04 14:34:23 +02:00
Cédric Krier 16634b1d01 Update hostname of Romanian National Bank URL
Closes #15001
(grafted from 2c59c7615b52526b627b7416f2e315f96d54a430)

--HG--
branch : 8.0
2026-08-10 09:21:25 +02:00
Nicolas Évrard aaf8203d44 Skip translation refering to unknown XML ID or unactivated source
Closes #12969
(grafted from 563cb007e55c30ed03e3fb4eb74b623bfa8fd6e1)

--HG--
branch : 8.0
2024-01-29 18:47:56 +01:00
Cédric Krier fd71ce229d Do not set width and height to 100% for <img/> of document
Closes #14979
(grafted from 9f966d1051f17bbcf09959daf3fab1e1f28cff36)

--HG--
branch : 8.0
2026-07-30 16:20:47 +02:00
Adrià Tarroja Caubet f7350f8b9d Add rpc suffix when retrying JSONRPC request
Closes #14985
(grafted from 314f4ccf52ed64542796e4cad288ef655d274b0c)

--HG--
branch : 8.0
2026-08-06 14:55:18 +02:00
Cédric Krier f3f7f0c2cb Do not set twice the extension in the attachment name for the UBL documents
Closes #14982
(grafted from a7bc04a0430d1c0ee7503b1148c611c65659a633)

--HG--
branch : 8.0
2026-08-01 10:49:03 +02:00
Cédric Krier fcb95aa409 Do not compare to None PaymentDueDate value from findtext
It is not necessary because findtext returns a string.
(grafted from e1801f15caaa2bb23d2d8ba38483617977658bd8)

--HG--
branch : 8.0
2026-08-01 00:57:28 +02:00
Cédric Krier 6bf439f496 Use DueDate as fallback for payment term date for UBL without payment terms
Closes #14981
(grafted from df7119de4a976b2d12c884c6d3f0a2c5f2a67174)

--HG--
branch : 8.0
2026-08-01 00:56:10 +02:00
Cédric Krier 187fc8a245 Normalize the quantity before calculating the number of digits when parsing UBL
Trailing zero in the quantity should not require a bigger precision for the
unit.

Closes #14973
(grafted from 763adbca3986db5acffd5631821fe9647bb5b2f4)

--HG--
branch : 8.0
2026-07-28 19:27:57 +02:00
Cédric Krier ad7f66c3ca Increase version number
--HG--
branch : 8.0
2026-08-04 12:24:26 +02:00
Cédric Krier 4a7e50ec89 Add tag account_payment_sepa-8.0.2
--HG--
branch : 8.0
2026-08-04 12:24:16 +02:00
Cédric Krier a75a0ef051 Prepare release account_payment_sepa-8.0.2
--HG--
branch : 8.0
2026-08-04 12:24:15 +02:00
Cédric Krier 6ba01738dc Increase version number
--HG--
branch : 8.0
2026-08-04 12:23:31 +02:00
Cédric Krier a3f204707e Add tag account_payment_sepa_cfonb-8.0.1
--HG--
branch : 8.0
2026-08-04 12:23:22 +02:00
Cédric Krier af560a0616 Prepare release account_payment_sepa_cfonb-8.0.1
--HG--
branch : 8.0
2026-08-04 12:23:21 +02:00
Cédric Krier 69eb28b6bd Increase version number
--HG--
branch : 8.0
2026-08-04 12:22:09 +02:00
Cédric Krier b9decb49e0 Add tag account_statement-8.0.1
--HG--
branch : 8.0
2026-08-04 12:21:59 +02:00
Cédric Krier e94f778931 Prepare release account_statement-8.0.1
--HG--
branch : 8.0
2026-08-04 12:21:58 +02:00
Cédric Krier b7bd7e7f2f Increase version number
--HG--
branch : 8.0
2026-08-04 12:20:41 +02:00
Cédric Krier f40fa19a00 Add tag authentication_saml-8.0.1
--HG--
branch : 8.0
2026-08-04 12:20:32 +02:00
Cédric Krier 142c804617 Prepare release authentication_saml-8.0.1
--HG--
branch : 8.0
2026-08-04 12:20:31 +02:00
Cédric Krier d5c3e087c1 Increase version number
--HG--
branch : 8.0
2026-08-04 12:20:07 +02:00
Cédric Krier 1615dde089 Add tag edocument_peppol-8.0.1
--HG--
branch : 8.0
2026-08-04 12:19:58 +02:00
Cédric Krier fde5fd9268 Prepare release edocument_peppol-8.0.1
--HG--
branch : 8.0
2026-08-04 12:19:57 +02:00
Cédric Krier d9462cabab Increase version number
--HG--
branch : 8.0
2026-08-04 12:18:37 +02:00
Cédric Krier e9fac866bc Add tag edocument_ubl-8.0.3
--HG--
branch : 8.0
2026-08-04 12:18:27 +02:00
Cédric Krier a1c934e4bc Prepare release edocument_ubl-8.0.3
--HG--
branch : 8.0
2026-08-04 12:18:26 +02:00
Cédric Krier b2f1db2cb4 Increase version number
--HG--
branch : 8.0
2026-08-04 12:17:36 +02:00
Cédric Krier baf5d2442d Add tag edocument_uncefact-8.0.2
--HG--
branch : 8.0
2026-08-04 12:17:26 +02:00
Cédric Krier 87b8b49ea9 Prepare release edocument_uncefact-8.0.2
--HG--
branch : 8.0
2026-08-04 12:17:24 +02:00
Cédric Krier 11c2e06b33 Increase version number
--HG--
branch : 8.0
2026-08-04 12:15:32 +02:00
Cédric Krier 64cd2072d8 Add tag production_outsourcing-8.0.1
--HG--
branch : 8.0
2026-08-04 12:15:21 +02:00
Cédric Krier 5f4eda7ad4 Prepare release production_outsourcing-8.0.1
--HG--
branch : 8.0
2026-08-04 12:15:19 +02:00
Cédric Krier 0610b5cee0 Increase version number
--HG--
branch : 8.0
2026-08-04 12:12:25 +02:00
Cédric Krier c5713f537d Add tag sale-8.0.3
--HG--
branch : 8.0
2026-08-04 12:12:14 +02:00
Cédric Krier 576c8cedbf Prepare release sale-8.0.3
--HG--
branch : 8.0
2026-08-04 12:12:13 +02:00
Cédric Krier 9c7f34a2f9 Increase version number
--HG--
branch : 8.0
2026-08-04 12:10:59 +02:00
Cédric Krier 3815e21b65 Add tag sale_supply_production-8.0.1
--HG--
branch : 8.0
2026-08-04 12:10:50 +02:00
Cédric Krier 3a46ef6428 Prepare release sale_supply_production-8.0.1
--HG--
branch : 8.0
2026-08-04 12:10:49 +02:00
Cédric Krier 6db695375e Increase version number
--HG--
branch : 8.0
2026-08-04 12:09:57 +02:00
Cédric Krier 6f6d28dd69 Add tag stock_lot-8.0.3
--HG--
branch : 8.0
2026-08-04 12:09:47 +02:00
Cédric Krier e1b1bb7ea6 Prepare release stock_lot-8.0.3
--HG--
branch : 8.0
2026-08-04 12:09:46 +02:00
Cédric Krier e13098476e Increase version number
--HG--
branch : 8.0
2026-08-04 12:08:26 +02:00
Cédric Krier d40b24b2c1 Add tag web_shop_shopify-8.0.4
--HG--
branch : 8.0
2026-08-04 12:08:17 +02:00
Cédric Krier bfa41840f6 Prepare release web_shop_shopify-8.0.4
--HG--
branch : 8.0
2026-08-04 12:08:15 +02:00
Cédric Krier 459bc5c1fc Increase version number
--HG--
branch : 8.0
2026-08-04 12:06:50 +02:00
Cédric Krier d653ada28f Add tag sao-8.0.8
--HG--
branch : 8.0
2026-08-04 12:06:32 +02:00
Cédric Krier e45d0e6641 Prepare release sao-8.0.8
--HG--
branch : 8.0
2026-08-04 12:06:31 +02:00
Cédric Krier 210659bace Increase version number
--HG--
branch : 8.0
2026-08-04 12:04:55 +02:00
Cédric Krier 0c1644aaf3 Add tag trytond-8.0.8
--HG--
branch : 8.0
2026-08-04 12:04:40 +02:00
Cédric Krier 26fe37f297 Prepare release trytond-8.0.8
--HG--
branch : 8.0
2026-08-04 12:04:39 +02:00
Cédric Krier c3af1a9ad6 Restrict protocols allowed for weasyprint to http(s)
Closes #14947
(grafted from 7c72806c98c07bb4ccb1f5f1b84954350541ec3a)

--HG--
branch : 8.0
2026-08-04 10:38:45 +02:00
Cédric Krier 5db52f470f Clear Shopify ID for product template no more found on Shopify
If the Shopify ID of a template can not be found on Shopify, there is no need
to keep it as we could not reactivate the Shopify product it is added back.

Closes #14980
(grafted from eb5fcd8c8ed278f9eba8f65e89f07dd3beafe4c3)

--HG--
branch : 8.0
2026-07-30 16:37:30 +02:00
Cédric Krier f33ae566f3 Do not set a shipment cost method for Shopify order without shipping line
Without a shipping line, there is no carrier selected and thus no shipment cost
method to set.

Closes #14976
(grafted from 313b466eb1c55ac922819a5b66dc49e081e85064)

--HG--
branch : 8.0
2026-07-29 19:30:48 +02:00
Cédric Krier 234ca3f7fd Set button decorator of update Peppol status to a different method than the cron
The `ModelView.button` decorator requires to be called with a list of records
which the cron does not do.

Closes #14972
(grafted from d3bdcee315895e3fc4a636c14dad5ba592912c59)

--HG--
branch : 8.0
2026-07-28 19:23:07 +02:00
Nicolas Évrard 86e58a889e Set the utc flag on Sao.Date
Closes #14510
(grafted from 7f19398f376080795764e089e2a87c3eaa0feda8)

--HG--
branch : 8.0
2026-07-27 10:39:01 +02:00
Cédric Krier 9cc8e5f215 Clear the value of input select once data has been read
The display does not clear the input if the current record is changed so we
must ensure that the input is always empty once file has been selected.

Closes #14482
(grafted from 759ffbf53e83eb67855b929aaf0274826e1b1fb5)

--HG--
branch : 8.0
2026-07-27 10:59:31 +02:00
Cédric Krier 5653c0d164 Use Text field for HTML content of report record
The field must contain strings in order to allow edition with the HTML editor.

Closes #14922
(grafted from 73b5636cf6abe1ea23f05bab04772129a5178e11)

--HG--
branch : 8.0
2026-07-24 16:10:12 +02:00
Cédric Krier e50e358b93 Make statement lines readonly when origins are filled
Closes #14965
(grafted from ad46e99cf76bee15373625a6ea0ec4e57a58ff06)

--HG--
branch : 8.0
2026-07-22 12:28:03 +02:00
Cédric Krier 3557e7845a Remove unused class parameter in the function to find move for stock lot
The function is called only when the state as parameter.

Closes #14963
(grafted from 3cb38ab5ba4a2321cab4bf5f2954e4842a1c733d)

--HG--
branch : 8.0
2026-07-21 19:14:20 +02:00
Cédric Krier b5a51b997d Use external parameter to activate the check for lot modification without move
#14963
(grafted from 2b4cfc5dd62800298f218bf8c850de8d3f1e1295)

--HG--
branch : 8.0
2026-07-21 19:12:14 +02:00
Cédric Krier 526519b6c9 Calculate the number of parameters in INSERT query using the columns list
The column names list does not contain the create_uid nor create_date columns
instead of columns list.

Closes #14800
(grafted from 090325cb8d9f26f30613a890a02c1c339b370082)

--HG--
branch : 8.0
2026-07-23 11:37:36 +02:00
Nicolas Évrard 04e4b187bc Add login_service value when the redirection URL misses it
Closes #14893
(grafted from 71ff74ce33b49ee8639c3bac8ce43bf7ec3a627e)

--HG--
branch : 8.0
2026-06-11 21:30:46 +02:00
Cédric Krier 906f98ebf9 Prevent switching row when double click on Many2One link
Closes #14967
(grafted from e8c236df31219bfe19c1e73e4254863fa3ef2d46)

--HG--
branch : 8.0
2026-07-23 18:27:41 +02:00
Cédric Krier ea67ca4242 Always use the shipment address of the sale as delivery address for the shipment
The warehouse on the sale is not always filled instead it is the the warehouse
of the shipment that must be used for the comparison. But this makes the test
useless as the shipment address is always used ad delivery address.

Closes #14954
(grafted from d414eccc0ad58a86ba4083f5c5f427b4e41edee7)

--HG--
branch : 8.0
2026-07-13 18:26:34 +02:00
Adrià Tarroja Caubet 9bc74a5eea Do not create a production request when quantities are the same
If the available quantity is exactly the same as the quantity sold, there is no
need to create a production request.

Closes #14585
(grafted from 61abfaa01954f661128f014171686a6512ffe630)

--HG--
branch : 8.0
2026-07-24 10:12:57 +02:00
Cédric Krier 14503c1683 Compare tab against view index less or equals to 0
The view index may be -1 is the view is not yet displayed.

Closes #14961
(grafted from 7267bae222e053d7ebfb59981ee13ae941b469dd)

--HG--
branch : 8.0
2026-07-17 12:58:29 +02:00
Cédric Krier 2e206dba7e Allow npm to run puppeteer scripts
Closes #14960
(grafted from bcfbef3830fe4c4f4e2cd6eb8ea855787bf19cd2)

--HG--
branch : 8.0
2026-07-17 11:40:28 +02:00
Cédric Krier f505cd0ade Do not create a purchase line for outsourced production with already one
Closes #14759
(grafted from 0985df4c4cf2226455d082ecfe33636d97cea42d)

--HG--
branch : 8.0
2026-07-16 15:57:11 +02:00
Cédric Krier 9a555676f3 Raise the final exception when all retries of Shopify request has failed
(grafted from b0fef2fdbe01bb7a7fc4f7d6032b9ab6ef61160c)

--HG--
branch : 8.0
2026-07-21 17:33:03 +02:00
Cédric Krier 062b38f1ce Use dict.get instead of getattr to retrieve user errors from Shopify request
The GraphQL library returns dict instead of object.

Closes #14964
(grafted from 4ec0ec9f0ae00251716f1e731c1d936857151fd9)

--HG--
branch : 8.0
2026-07-21 17:32:21 +02:00
Cédric Krier 033e35cd88 Format numeric values in XML templates using fixed-point notation
Closes #14948
(grafted from 6cb75123ee20de6cf90ff1bbd6189b64e4d1f739)

--HG--
branch : 8.0
2026-07-15 18:07:22 +02:00
Cédric Krier ad202c716c Update Shopify product if any variant of the product has been removed
Closes #14955
(grafted from 4b3c250361bcf6ba7289665e2ca6ccf9b19ef939)

--HG--
branch : 8.0
2026-07-14 17:07:07 +02:00
Cédric Krier 57e8b983b7 Use binary version of psycopg for tests
(grafted from 7868852522d26ff069aebcc03ae73d98abe97879)

--HG--
branch : 8.0
2026-07-17 22:11:32 +02:00
Cédric Krier db9d78dbe5 Increase version number
--HG--
branch : 8.0
2026-07-15 19:39:41 +02:00
Cédric Krier 612543376d Add tag account-8.0.3
--HG--
branch : 8.0
2026-07-15 19:39:23 +02:00
Cédric Krier e648ec687b Prepare release account-8.0.3
--HG--
branch : 8.0
2026-07-15 19:39:20 +02:00
Cédric Krier f710769d2a Increase version number
--HG--
branch : 8.0
2026-07-15 19:35:40 +02:00
Cédric Krier 1be1db0c45 Add tag account_invoice-8.0.1
--HG--
branch : 8.0
2026-07-15 19:35:23 +02:00
Cédric Krier b8e928e64f Prepare release account_invoice-8.0.1
--HG--
branch : 8.0
2026-07-15 19:35:21 +02:00
Cédric Krier 3ee22e634c Increase version number
--HG--
branch : 8.0
2026-07-15 19:32:28 +02:00
Cédric Krier 5f0ab67c1c Add tag analytic_account-8.0.1
--HG--
branch : 8.0
2026-07-15 19:32:13 +02:00
Cédric Krier e1e98f2d3e Prepare release analytic_account-8.0.1
--HG--
branch : 8.0
2026-07-15 19:32:10 +02:00
Cédric Krier d530131abc Increase version number
--HG--
branch : 8.0
2026-07-15 19:28:42 +02:00
Cédric Krier 3132f20847 Add tag commission-8.0.1
--HG--
branch : 8.0
2026-07-15 19:28:26 +02:00
Cédric Krier ba929c5fed Prepare release commission-8.0.1
--HG--
branch : 8.0
2026-07-15 19:28:23 +02:00
Cédric Krier be62a5c63b Increase version number
--HG--
branch : 8.0
2026-07-15 19:27:04 +02:00
Cédric Krier 2c3a2c825e Add tag edocument_ubl-8.0.2
--HG--
branch : 8.0
2026-07-15 19:26:47 +02:00
Cédric Krier ae566e50e5 Prepare release edocument_ubl-8.0.2
--HG--
branch : 8.0
2026-07-15 19:26:45 +02:00
Cédric Krier 59abcc5a74 Increase version number
--HG--
branch : 8.0
2026-07-15 19:24:31 +02:00
Cédric Krier b802490385 Add tag party-8.0.2
--HG--
branch : 8.0
2026-07-15 19:24:16 +02:00
Cédric Krier dab9304250 Prepare release party-8.0.2
--HG--
branch : 8.0
2026-07-15 19:24:14 +02:00
Cédric Krier e1a3a2c577 Increase version number
--HG--
branch : 8.0
2026-07-15 19:21:03 +02:00
Cédric Krier 25792381cf Add tag product-8.0.1
--HG--
branch : 8.0
2026-07-15 19:20:42 +02:00
Cédric Krier b4da84fc7d Prepare release product-8.0.1
--HG--
branch : 8.0
2026-07-15 19:20:39 +02:00
Cédric Krier 8618038bc5 Increase version number
--HG--
branch : 8.0
2026-07-15 19:19:52 +02:00
Cédric Krier f9621cf9a4 Add tag project-8.0.4
--HG--
branch : 8.0
2026-07-15 19:19:31 +02:00
Cédric Krier e6f97dfaaa Prepare release project-8.0.4
--HG--
branch : 8.0
2026-07-15 19:19:27 +02:00
Cédric Krier 3769a2295b Increase version number
--HG--
branch : 8.0
2026-07-15 19:17:01 +02:00
Cédric Krier 3b63b628b1 Add tag purchase-8.0.1
--HG--
branch : 8.0
2026-07-15 19:16:39 +02:00
Cédric Krier d3f1c6218a Prepare release purchase-8.0.1
--HG--
branch : 8.0
2026-07-15 19:16:36 +02:00
Cédric Krier 5ab3a7e3b7 Increase version number
--HG--
branch : 8.0
2026-07-15 19:13:47 +02:00
Cédric Krier 387f8c83e6 Add tag purchase_blanket_agreement-8.0.1
--HG--
branch : 8.0
2026-07-15 19:13:22 +02:00
Cédric Krier e7931f44eb Prepare release purchase_blanket_agreement-8.0.1
--HG--
branch : 8.0
2026-07-15 19:13:17 +02:00
Cédric Krier e417e12d1b Increase version number
--HG--
branch : 8.0
2026-07-15 19:10:06 +02:00
Cédric Krier 3125a5c78a Add tag purchase_request-8.0.1
--HG--
branch : 8.0
2026-07-15 19:09:50 +02:00
Cédric Krier b99aa08060 Prepare release purchase_request-8.0.1
--HG--
branch : 8.0
2026-07-15 19:09:48 +02:00
Cédric Krier e0fe7fa3c4 Increase version number
--HG--
branch : 8.0
2026-07-15 19:06:29 +02:00
Cédric Krier c45c799b3a Add tag purchase_request_quotation-8.0.2
--HG--
branch : 8.0
2026-07-15 19:06:14 +02:00
Cédric Krier aae4c86fdc Prepare release purchase_request_quotation-8.0.2
--HG--
branch : 8.0
2026-07-15 19:06:12 +02:00
Cédric Krier 37c7be9f3c Increase version number
--HG--
branch : 8.0
2026-07-15 19:05:01 +02:00
Cédric Krier a5a5a522a0 Add tag quality-8.0.1
--HG--
branch : 8.0
2026-07-15 19:04:46 +02:00
Cédric Krier 803422ec40 Prepare release quality-8.0.1
--HG--
branch : 8.0
2026-07-15 19:04:43 +02:00
Cédric Krier c037590252 Increase version number
--HG--
branch : 8.0
2026-07-15 19:02:26 +02:00
Cédric Krier ee81071e40 Add tag sale-8.0.2
--HG--
branch : 8.0
2026-07-15 19:02:11 +02:00
Cédric Krier 25852c3842 Prepare release sale-8.0.2
--HG--
branch : 8.0
2026-07-15 19:02:08 +02:00
Cédric Krier 4ed5630816 Increase version number
--HG--
branch : 8.0
2026-07-15 19:00:47 +02:00
Cédric Krier bef278413b Add tag sale_blanket_agreement-8.0.1
--HG--
branch : 8.0
2026-07-15 19:00:32 +02:00
Cédric Krier 9f7eea2431 Prepare release sale_blanket_agreement-8.0.1
--HG--
branch : 8.0
2026-07-15 19:00:30 +02:00
Cédric Krier be7a983e3b Increase version number
--HG--
branch : 8.0
2026-07-15 18:57:50 +02:00
Cédric Krier 6bedf56f75 Add tag sale_complaint-8.0.1
--HG--
branch : 8.0
2026-07-15 18:57:34 +02:00
Cédric Krier 3f1e16cc27 Prepare release sale_complaint-8.0.1
--HG--
branch : 8.0
2026-07-15 18:57:32 +02:00
Cédric Krier 08575e2744 Increase version number
--HG--
branch : 8.0
2026-07-15 18:54:57 +02:00
Cédric Krier 88f0e7cc9a Add tag sale_opportunity-8.0.1
--HG--
branch : 8.0
2026-07-15 18:54:43 +02:00
Cédric Krier 265f56c217 Prepare release sale_opportunity-8.0.1
--HG--
branch : 8.0
2026-07-15 18:54:41 +02:00
Cédric Krier 2669475781 Increase version number
--HG--
branch : 8.0
2026-07-15 18:52:18 +02:00
Cédric Krier 1a77a1aa8c Add tag sale_rental-8.0.1
--HG--
branch : 8.0
2026-07-15 18:52:04 +02:00
Cédric Krier 8cbcd1cddc Prepare release sale_rental-8.0.1
--HG--
branch : 8.0
2026-07-15 18:52:01 +02:00
Cédric Krier 659b1b561b Increase version number
--HG--
branch : 8.0
2026-07-15 18:49:39 +02:00
Cédric Krier 005691acf3 Add tag sale_subscription-8.0.1
--HG--
branch : 8.0
2026-07-15 18:49:16 +02:00
Cédric Krier 7e2a711598 Prepare release sale_subscription-8.0.1
--HG--
branch : 8.0
2026-07-15 18:49:13 +02:00
Cédric Krier 1ef1c0b79d Increase version number
--HG--
branch : 8.0
2026-07-15 18:45:37 +02:00
Cédric Krier 777a92ba68 Add tag stock-8.0.3
--HG--
branch : 8.0
2026-07-15 18:45:23 +02:00
Cédric Krier d07d7822ba Prepare release stock-8.0.3
--HG--
branch : 8.0
2026-07-15 18:45:21 +02:00
Cédric Krier 26b4f6759b Increase version number
--HG--
branch : 8.0
2026-07-15 18:42:05 +02:00
Cédric Krier 91398822b8 Add tag stock_lot_sled-8.0.1
--HG--
branch : 8.0
2026-07-15 18:41:53 +02:00
Cédric Krier 8f7b5c7760 Prepare release stock_lot_sled-8.0.1
--HG--
branch : 8.0
2026-07-15 18:41:51 +02:00
Cédric Krier fe86ee5c02 Increase version number
--HG--
branch : 8.0
2026-07-15 18:41:00 +02:00
Cédric Krier 660f3d80dc Add tag stock_package_shipping_ups-8.0.1
--HG--
branch : 8.0
2026-07-15 18:40:48 +02:00
Cédric Krier d1969bb069 Prepare release stock_package_shipping_ups-8.0.1
--HG--
branch : 8.0
2026-07-15 18:40:46 +02:00
Cédric Krier 4e7bc6a67d Increase version number
--HG--
branch : 8.0
2026-07-15 18:37:27 +02:00
Cédric Krier 8614a49e00 Add tag web_shop_shopify-8.0.3
--HG--
branch : 8.0
2026-07-15 18:37:15 +02:00
Cédric Krier 99e94ab2cf Prepare release web_shop_shopify-8.0.3
--HG--
branch : 8.0
2026-07-15 18:37:13 +02:00
Cédric Krier 0685bd8fb8 Increase version number
--HG--
branch : 8.0
2026-07-15 18:35:22 +02:00
Cédric Krier e1eceab8d3 Add tag web_user-8.0.1
--HG--
branch : 8.0
2026-07-15 18:35:10 +02:00
Cédric Krier 6fe9045af4 Prepare release web_user-8.0.1
--HG--
branch : 8.0
2026-07-15 18:35:08 +02:00
Cédric Krier 41ef4d8c8a Increase version number
--HG--
branch : 8.0
2026-07-15 18:31:35 +02:00
Cédric Krier 8d6ea91680 Add tag sao-8.0.7
--HG--
branch : 8.0
2026-07-15 18:30:35 +02:00
Cédric Krier 18a0e3d1c7 Prepare release sao-8.0.7
--HG--
branch : 8.0
2026-07-15 18:30:33 +02:00
Cédric Krier 0f42a996c7 Increase version number
--HG--
branch : 8.0
2026-07-15 18:25:21 +02:00
Cédric Krier 2dacde3147 Add tag tryton-8.0.7
--HG--
branch : 8.0
2026-07-15 18:25:05 +02:00
Cédric Krier 8d5f02af26 Prepare release tryton-8.0.7
--HG--
branch : 8.0
2026-07-15 18:25:04 +02:00
Cédric Krier 2646cbca09 Increase version number
--HG--
branch : 8.0
2026-07-15 18:22:36 +02:00
Cédric Krier 5caae74809 Add tag trytond-8.0.7
--HG--
branch : 8.0
2026-07-15 18:22:22 +02:00
Cédric Krier 5b6cba6453 Prepare release trytond-8.0.7
--HG--
branch : 8.0
2026-07-15 18:22:21 +02:00
Cédric Krier a7021ec8dd Set an UPS account number to the custom agent in test scenario
#14876
(grafted from a7803b7036e7dad73a932d0483a03f51e734a95d)

--HG--
branch : 8.0
2026-07-13 17:25:29 +02:00
Cédric Krier d413651001 Bill duties and charges to the customs agent for UPS shipment charges
Closes #14876
(grafted from e04bd7218a1bd78bc27439c7995ba5decbb48415)

--HG--
branch : 8.0
2026-06-03 16:01:25 +02:00
Cédric Krier 8e82e83f86 Remove only lot expiring in the future
Closes #13901
(grafted from 54977ca200c0448d05cb19ba43c6dbff45742e4a)

--HG--
branch : 8.0
2025-03-04 22:05:19 +01:00
Cédric Krier e28e1ead48 Return Gateway Timeout instead of Request Timeout for database timeout
Closes #14945
(grafted from ae46da1d0ab434dda58b54070e1faa2a72974935)

--HG--
branch : 8.0
2026-07-08 22:12:42 +02:00
Cédric Krier 755b173a77 Add missing duration argument to database timeout warning
Closes #14944
(grafted from 8a86ff7389e0f759ebb07b6738e24c3e7a4ae309)

--HG--
branch : 8.0
2026-07-08 22:23:38 +02:00
Cédric Krier 5c5cc2609d Center checkbox in editable tree
For the auto margin to center the input, it must be displayed as block without
float.

Closes #14942
(grafted from 99d59e3b76a7f11c65adea228345fe24571ed510)

--HG--
branch : 8.0
2026-07-08 14:59:54 +02:00
Cédric Krier 70592e8e91 Add a refund line for Shopify refund that are not linked to items
Closes #14875
(grafted from 158941e2a9d5ad0097e755e6602f7d168333559a)

--HG--
branch : 8.0
2026-06-16 20:40:21 +02:00
Cédric Krier c44fb4dbd3 Process Shopify sale only if the authorized payment amount is greater than the amount to pay
The correction of #14816 was wrong and the amount to pay should be modified if
there is a global refund.
(grafted from dfbbbe26ad8eb25fd6dc1ad0a68cb7cec8307aae)

--HG--
branch : 8.0
2026-06-03 15:06:05 +02:00
Cédric Krier 6c5e1f83d9 Add missing error message when no bank account is found when parsing UBL invoice
Closes #14938
(grafted from f26f207f98cf5a0df67124e5677db5b848d52cf5)

--HG--
branch : 8.0
2026-07-08 08:54:37 +02:00
Cédric Krier 5dfb094459 Select the first supplier when all suppliers have the same maximum supply date
Since all suppliers have the same supply delay, the order must be used for
selection.

Closes #14939
(grafted from c4f986450d75ba8211ea9e3523de8d3b01f908b0)

--HG--
branch : 8.0
2026-07-08 09:19:35 +02:00
Cédric Krier 1d532143b5 Use NullConnectionPool for the default database
The default database is template1 which is usually used to create new database.
Keeping a pool of connection open on it prevents the creation of new database
because exclusive access is needed on the template.

Closes #14935
(grafted from 20781078a519c45a7a1f70b0074c6abcb1a89589)

--HG--
branch : 8.0
2026-07-06 19:34:24 +02:00
Cédric Krier ca0def6021 Put agent field in sale form on a new line
This prevents to break the layout of other modules adding fields to the same
tab.

Closes #14934
(grafted from f9fb03a42e7c55c33072181b0ec48ac5469495f1)

--HG--
branch : 8.0
2026-07-06 19:15:08 +02:00
Cédric Krier 402c9fa20b Permit __url__ and __href__ attribute usage in Genshi evaluation
Closes #14932
(grafted from 936431c951bb4eb9d17c399445c6cacf7dcb8626)

--HG--
branch : 8.0
2026-07-06 09:07:08 +02:00
Cédric Krier 945099dc67 Set danger visual on supplier invoice when amount to pay is greater than 0
The amount to pay is always positive so the test must be "greater than 0".

Closes #14925
(grafted from e4e920cb9e7d2a2f3bfa86fad4e8c3025cb78828)

--HG--
branch : 8.0
2026-07-02 16:38:57 +02:00
Cédric Krier ebd18b5716 Do not dumps/loads context domain in URL
The context domain must be evaluated only by the screen when doing a domain
search.

Closes #14921
(grafted from dbad6143d6d085b448b71e446b546e488d45cf55)

--HG--
branch : 8.0
2026-07-08 15:03:35 +02:00
Cédric Krier 1a1840670d Include context domain in URL and tab comparison
Closes #14921
(grafted from 0a37d816a7162d9aadb63ec68f63acf85c938e50)

--HG--
branch : 8.0
2026-07-01 13:16:19 +02:00
Cédric Krier ebed93c61a Define index using COALESCE for nullable Char fields
Closes #14909
(grafted from 525198c97acdd19820d581411b3af0f5bb6e4237)

--HG--
branch : 8.0
2026-07-14 21:14:05 +02:00
Cédric Krier 856461f693 Do not apply COALESCE on required Char
Closes #14909
(grafted from 776fe202ed6fd03b690948cf4e2dabc2fd28bbc4)

--HG--
branch : 8.0
2026-06-24 22:06:59 +02:00
Adrià Tarroja Caubet 06c8db564e Add a comma between 'set' and 'slice' in the Genshi allowed builtins
Closes #14928
(grafted from 0255fea9294bed43ca3e42186bdb52c7f22277e1)

--HG--
branch : 8.0
2026-07-04 00:17:12 +02:00
Cédric Krier 6c11480447 Replace getattr by hasattr in general journal report
Closes #14929
(grafted from 7e1c7cb2a0f2d3013bb83388b0212fa32a0f6c25)

--HG--
branch : 8.0
2026-07-03 13:37:38 +02:00
Cédric Krier 86f4b3fe5d Use package name as start directory for tox unittest when using prefix
Closes #14926
(grafted from 0aea18c5ecbb6fb59311a1dc4bcb3b52ed0132b7)

--HG--
branch : 8.0
2026-07-02 22:59:30 +02:00
Sergi Almacellas Abellana f0f33749ee Return False when scanning code fails instead of using an invalid empty list
Closes #14923
(grafted from c825df1c785d0cfa15be7c1748716f8dd1a6149d)

--HG--
branch : 8.0
2026-07-03 15:31:25 +02:00
Nicolas Évrard aeac50c908 Find the page in the direct children only
Closes #14918
(grafted from 52faa4f70a4769ec80560b5b9e2b4eec0a94e267)

--HG--
branch : 8.0
2026-06-30 22:03:11 +02:00
Cédric Krier 29ba2841bd Increase version number
--HG--
branch : 8.0
2026-07-01 23:12:37 +02:00
Cédric Krier ef49d7be94 Add tag account-8.0.2
--HG--
branch : 8.0
2026-07-01 23:12:27 +02:00
Cédric Krier f20acc5f91 Prepare release account-8.0.2
--HG--
branch : 8.0
2026-07-01 23:12:26 +02:00
Cédric Krier 8d7aba7191 Increase version number
--HG--
branch : 8.0
2026-07-01 23:11:17 +02:00
Cédric Krier f08153635c Add tag account_payment_braintree-8.0.1
--HG--
branch : 8.0
2026-07-01 23:11:08 +02:00
Cédric Krier 55621de0e4 Prepare release account_payment_braintree-8.0.1
--HG--
branch : 8.0
2026-07-01 23:11:07 +02:00
Cédric Krier 6edf2d363c Increase version number
--HG--
branch : 8.0
2026-07-01 23:09:41 +02:00
Cédric Krier 3da5010210 Add tag account_statement_sepa-8.0.1
--HG--
branch : 8.0
2026-07-01 23:09:33 +02:00
Cédric Krier d92dda2232 Prepare release account_statement_sepa-8.0.1
--HG--
branch : 8.0
2026-07-01 23:09:32 +02:00
Cédric Krier 442657562d Increase version number
--HG--
branch : 8.0
2026-07-01 23:07:34 +02:00
Cédric Krier e099d6051f Add tag company-8.0.1
--HG--
branch : 8.0
2026-07-01 23:07:24 +02:00
Cédric Krier 8fa402bae5 Prepare release company-8.0.1
--HG--
branch : 8.0
2026-07-01 23:07:22 +02:00
Cédric Krier cd3d0a6013 Increase version number
--HG--
branch : 8.0
2026-07-01 23:07:00 +02:00
Cédric Krier 788420f05e Add tag edocument_ubl-8.0.1
--HG--
branch : 8.0
2026-07-01 23:06:50 +02:00
Cédric Krier bbdab26822 Prepare release edocument_ubl-8.0.1
--HG--
branch : 8.0
2026-07-01 23:06:49 +02:00
Cédric Krier 10395a09a6 Increase version number
--HG--
branch : 8.0
2026-07-01 23:06:30 +02:00
Cédric Krier b996b30793 Add tag edocument_uncefact-8.0.1
--HG--
branch : 8.0
2026-07-01 23:06:21 +02:00
Cédric Krier 36ac3ec08e Prepare release edocument_uncefact-8.0.1
--HG--
branch : 8.0
2026-07-01 23:06:20 +02:00
Cédric Krier 611f800de2 Increase version number
--HG--
branch : 8.0
2026-07-01 23:03:49 +02:00
Cédric Krier e2b9b89a71 Add tag marketing_automation-8.0.1
--HG--
branch : 8.0
2026-07-01 23:03:40 +02:00
Cédric Krier 5facd05cce Prepare release marketing_automation-8.0.1
--HG--
branch : 8.0
2026-07-01 23:03:38 +02:00
Cédric Krier 559c21863c Increase version number
--HG--
branch : 8.0
2026-07-01 23:01:43 +02:00
Cédric Krier 0c6f2643b3 Add tag marketing_email-8.0.1
--HG--
branch : 8.0
2026-07-01 23:01:35 +02:00
Cédric Krier efb1df65ea Prepare release marketing_email-8.0.1
--HG--
branch : 8.0
2026-07-01 23:01:34 +02:00
Cédric Krier f738c204f0 Increase version number
--HG--
branch : 8.0
2026-07-01 23:00:43 +02:00
Cédric Krier 334ca0dbef Add tag party-8.0.1
--HG--
branch : 8.0
2026-07-01 23:00:34 +02:00
Cédric Krier d3b31848b0 Prepare release party-8.0.1
--HG--
branch : 8.0
2026-07-01 23:00:33 +02:00
Cédric Krier 9423194660 Increase version number
--HG--
branch : 8.0
2026-07-01 22:56:44 +02:00
Cédric Krier ca49059245 Add tag production-8.0.1
--HG--
branch : 8.0
2026-07-01 22:56:35 +02:00
Cédric Krier e0ae6fa5df Prepare release production-8.0.1
--HG--
branch : 8.0
2026-07-01 22:56:34 +02:00
Cédric Krier 8c305d2035 Increase version number
--HG--
branch : 8.0
2026-07-01 22:54:46 +02:00
Cédric Krier a98c6e8a6e Add tag product_kit-8.0.2
--HG--
branch : 8.0
2026-07-01 22:54:37 +02:00
Cédric Krier a7431cc6ed Prepare release product_kit-8.0.2
--HG--
branch : 8.0
2026-07-01 22:54:36 +02:00
Cédric Krier d7c3520f00 Increase version number
--HG--
branch : 8.0
2026-07-01 22:54:03 +02:00
Cédric Krier fe54caa731 Add tag project-8.0.3
--HG--
branch : 8.0
2026-07-01 22:53:54 +02:00
Cédric Krier d686a55272 Prepare release project-8.0.3
--HG--
branch : 8.0
2026-07-01 22:53:53 +02:00
Cédric Krier ba0cbf582b Increase version number
--HG--
branch : 8.0
2026-07-01 22:48:55 +02:00
Cédric Krier 450a3c9cd1 Add tag stock-8.0.2
--HG--
branch : 8.0
2026-07-01 22:48:45 +02:00
Cédric Krier 43d619edb6 Prepare release stock-8.0.2
--HG--
branch : 8.0
2026-07-01 22:48:44 +02:00
Cédric Krier 2ca8c04c37 Increase version number
--HG--
branch : 8.0
2026-07-01 22:46:57 +02:00
Cédric Krier f593f3af39 Add tag stock_lot-8.0.2
--HG--
branch : 8.0
2026-07-01 22:46:48 +02:00
Cédric Krier 565fd8f1d6 Prepare release stock_lot-8.0.2
--HG--
branch : 8.0
2026-07-01 22:46:47 +02:00
Cédric Krier cb4731c94e Increase version number
--HG--
branch : 8.0
2026-07-01 22:45:54 +02:00
Cédric Krier 1f935cf303 Add tag stock_shipment_customs-8.0.1
--HG--
branch : 8.0
2026-07-01 22:45:45 +02:00
Cédric Krier 5f0ccb2a2a Prepare release stock_shipment_customs-8.0.1
--HG--
branch : 8.0
2026-07-01 22:45:44 +02:00
Cédric Krier 663f3db2ef Increase version number
--HG--
branch : 8.0
2026-07-01 22:44:48 +02:00
Cédric Krier e424b2f23e Add tag web_shop_shopify-8.0.2
--HG--
branch : 8.0
2026-07-01 22:44:39 +02:00
Cédric Krier 99f557ebb2 Prepare release web_shop_shopify-8.0.2
--HG--
branch : 8.0
2026-07-01 22:44:38 +02:00
Cédric Krier c473dd0326 Increase version number
--HG--
branch : 8.0
2026-07-01 22:40:52 +02:00
Cédric Krier e88ac36ae6 Add tag sao-8.0.6
--HG--
branch : 8.0
2026-07-01 22:40:29 +02:00
Cédric Krier b085481a78 Prepare release sao-8.0.6
--HG--
branch : 8.0
2026-07-01 22:40:28 +02:00
Cédric Krier 44742bc085 Increase version number
--HG--
branch : 8.0
2026-07-01 22:39:13 +02:00
Cédric Krier 6224efe25e Add tag tryton-8.0.6
--HG--
branch : 8.0
2026-07-01 22:39:01 +02:00
Cédric Krier db2ac3c360 Prepare release tryton-8.0.6
--HG--
branch : 8.0
2026-07-01 22:39:00 +02:00
Cédric Krier f50c692f40 Increase version number
--HG--
branch : 8.0
2026-07-01 22:37:02 +02:00
Cédric Krier a00cec305b Add tag trytond-8.0.6
--HG--
branch : 8.0
2026-07-01 22:36:49 +02:00
Cédric Krier 46364e04ec Prepare release trytond-8.0.6
--HG--
branch : 8.0
2026-07-01 22:36:48 +02:00
Cédric Krier 51bbd71965 Enforce access rights on the email template record on marketing email
Closes #14907
(grafted from 856dea6dca76bd9cd7fa03a3dbe51f160b912e69)

--HG--
branch : 8.0
2026-06-30 23:08:14 +02:00
Cédric Krier de1a30881f Enforce access right on the email template record
Closes #14907
(grafted from d9aa2de5dabe7e39892c41808d56103ea83bf95f)

--HG--
branch : 8.0
2026-06-30 09:48:33 +02:00
Cédric Krier 24fd5e11de Enforce access rights on the email template record of marketing automation
Closes #14907
(grafted from 5c64e83a573ce01423a4d65a25fe704b39a43306)

--HG--
branch : 8.0
2026-06-30 23:02:59 +02:00
Cédric Krier 35a7e696cf Add ModelAccessProxy
#14907
(grafted from dafef28a1d65032628809acbfa130a2f2e74474f)

--HG--
branch : 8.0
2026-06-25 13:31:30 +02:00
Cédric Krier 35291a25e2 Replace getattr by hasattr in report
(grafted from 1a0574d67704d7acbd7c224d906a4be12aaf3423)

--HG--
branch : 8.0
2026-06-09 13:01:23 +02:00
Cédric Krier a86bc71a32 Restrict Genshi evaluation
Closes #14869 #5160
(grafted from 101aaf12c6bb1a333c9105b1e6677a4a5f49605c)

--HG--
branch : 8.0
2026-06-08 23:44:10 +02:00
Cédric Krier ba38151bbb Retry mutation query for Shopify tests
(grafted from a1cb164af115aa2503c364f437facbcf03c8cba3)

--HG--
branch : 8.0
2026-06-25 19:03:12 +02:00
Cédric Krier 1faa31dcf6 Clausify each clause of the parsed domain on date/time equality
Closes #14917
(grafted from 31fa77ee3dba8b633395d383b2d890333bf9aff3)

--HG--
branch : 8.0
2026-06-29 18:06:10 +02:00
Cédric Krier e2d622c196 Set only one quantity per line items when creating Shopify fulfillment
Closes #14912
(grafted from 58bde097ad514a53f7c492a9408e7a82f66d9cd9)

--HG--
branch : 8.0
2026-06-25 15:26:30 +02:00
Cédric Krier 50cdb4ac1d Use entry amount when amount is missing from details
Closes #14904
(grafted from d7c4e8ae89e4b289fb5cf244946787793454ec3e)

--HG--
branch : 8.0
2026-06-22 11:14:23 +02:00
Cédric Krier f78eb154ee Resolve Tryton modules using entrypoints
The Pool tries to resolve registered string using the path `trytond.modules.`
which can not always be imported if the module is using an entry pointing to
another package.

Closes #14914
(grafted from bb96325e829df570aac1f7624c862a660c0be286)

--HG--
branch : 8.0
2026-06-26 15:17:14 +02:00
Cédric Krier 96eb7071f7 Update module tutorial to match with the cookiecutter output
(grafted from e33b58f3d6a1bd6445853b88c2d26ff5e8a61c9c)

--HG--
branch : 8.0
2026-06-18 19:11:04 +02:00
Alfonso Iglesias f2b592e065 Add a transition from running to cancelled to production
Since c801019931a0 a running production can be cancelled by stock cancellation
group.

Closes #14864
(grafted from 82d85906db012cf6ac8eab74ea40aed2128f2509)

--HG--
branch : 8.0
2026-06-27 08:50:17 +02:00
Cédric Krier e1eb2bb48d Support ModelStorage.search API in ResourceAccessMixin
ResourceAccessMixin inherits from ModelStorage so it should support the
ModelStorage.search API.

Closes #14900
(grafted from 0011c5048a75906493f45a752958733d8cae5f12)

--HG--
branch : 8.0
2026-06-18 11:04:10 +02:00
Sergi Almacellas Abellana 0bcab14bf4 Use the effective date of the stock move to generate sequence when creating lot
Closes #14899
(grafted from e5f7e95553a42dc02ac9ea57002523bc87471353)

--HG--
branch : 8.0
2026-06-26 19:04:26 +02:00
Cédric Krier 7398dcfed7 Restore initial state when the execution of a wizard fails
Since 1aad63cbbba7 there is a check that the button from a wizard are triggered
from the same state as they were created.
But when an exception is raised during the execution, the wizard must be put
back to the initial state such that buttons can still be triggered again.

Closes #14895
(grafted from 0eddec418366403871755be8ba3b750a9c0fcdf4)

--HG--
branch : 8.0
2026-06-16 13:41:49 +02:00
Nicolas Évrard 5834e156f0 Delete only the records marked to be deleted when restoring history
Closes #14913
(grafted from 2335dba4dc447dbcae94d99097911460439ef02a)

--HG--
branch : 8.0
2026-06-26 15:41:27 +02:00
Cédric Krier b020f0f081 Correctly translate "Building Number" in French
Closes #14896
(grafted from 7ed04dd10395130f1ec0a3a0863d6392ea6db8fc)

--HG--
branch : 8.0
2026-06-16 15:36:46 +02:00
Cédric Krier 6c8cb152c6 Aggregate product by locations before applying filter when searching by quantity
Closes #14887
(grafted from d7abce5cd10ccba9852f26c7b1aef465e20b4585)

--HG--
branch : 8.0
2026-06-11 15:30:11 +02:00
Cédric Krier f812dd6da9 Call the same super method for validate_fields of account move line
Closes #14901
(grafted from e8394b1a0c0f3b7b3266a9bbb65d84b90a5f0e7e)

--HG--
branch : 8.0
2026-06-18 14:37:36 +02:00
Cédric Krier 75973a9b27 Use package name as target for module with prefix
The entrypoint is pointing to the package name when using prefix so the target
should also.

Closes #14814
(grafted from f6f8c6aa4316eeb7a73500c9dbc0ccd196aba62d)

--HG--
branch : 8.0
2026-06-18 19:09:35 +02:00
Cédric Krier 8123288003 Use new non-readonly transaction to create journal-period from opening wizard
Since 088e367462ce the execution of the wizard is on a readonly transaction
which prevents to insert in the database.

Closes #14894
(grafted from 2a1ecd1da4a1eca4b01666ff359b7b3424d058bd)

--HG--
branch : 8.0
2026-06-16 13:19:12 +02:00
Cédric Krier c31f99b670 Do not strip wildcard for number clause when searching work per record name
The strip of wildcard is usually applied for code not number.

Closes #14882
(grafted from f8cac4c04b0b59a056775358e18c48a5c5871f53)

--HG--
branch : 8.0
2026-06-11 10:37:29 +02:00
Cédric Krier 16005ba031 Skip second update of chart of account when template is overridden
Closes #14879
(grafted from 95fb6332fd9bc92f81a87d0c07ae814ae69ed059)

--HG--
branch : 8.0
2026-06-09 10:48:51 +02:00
Cédric Krier 3c2ad42587 Do not convert select query value into list when searching on char with in operator
Closes #14898
(grafted from f62e20c70717ed0a40ad86a7dd5672577f73626b)

--HG--
branch : 8.0
2026-06-18 15:49:10 +02:00
Cédric Krier b3f8c9396f Avoid random payment amount of zero in braintree tests
The value 0 is not valid for a payment.
(grafted from a80406308529403755f136b22be03f9f572e2ee9)

--HG--
branch : 8.0
2026-06-18 14:55:21 +02:00
Udo Spallek 5b07c15444 Return the quantity of sale line component for manual shipment method
Closes #14888
(grafted from 4d12bf8e46669dbb33a21dbeb13694986e603a1d)

--HG--
branch : 8.0
2026-06-17 22:50:11 +02:00
Nicolas Évrard f5122cd85b Save the new ir.model.data instances before calling functions on them
Closes #14885
(grafted from 20d79a09c9a6a5b052048c83fd351f789cd63372)

--HG--
branch : 8.0
2026-06-09 18:33:51 +02:00
Cédric Krier ca293f43e2 Increase version number
--HG--
branch : 8.0
2026-06-18 21:50:42 +02:00
Cédric Krier e5ddda1b74 Add tag account-8.0.1
--HG--
branch : 8.0
2026-06-18 21:50:32 +02:00
Cédric Krier 5f877783e5 Prepare release account-8.0.1
--HG--
branch : 8.0
2026-06-18 21:50:31 +02:00
Cédric Krier f13d7ad19f Increase version number
--HG--
branch : 8.0
2026-06-18 21:47:45 +02:00
Cédric Krier b2a6f4b17e Add tag account_payment-8.0.1
--HG--
branch : 8.0
2026-06-18 21:47:33 +02:00
Cédric Krier 89bf6f8978 Prepare release account_payment-8.0.1
--HG--
branch : 8.0
2026-06-18 21:47:31 +02:00
Cédric Krier d4ded505de Increase version number
--HG--
branch : 8.0
2026-06-18 21:45:54 +02:00
Cédric Krier d69f2c042a Add tag account_product-8.0.1
--HG--
branch : 8.0
2026-06-18 21:45:45 +02:00
Cédric Krier 2f90b94356 Prepare release account_product-8.0.1
--HG--
branch : 8.0
2026-06-18 21:45:44 +02:00
Cédric Krier 52882b1549 Increase version number
--HG--
branch : 8.0
2026-06-18 21:41:52 +02:00
Cédric Krier d86639b22d Add tag project-8.0.2
--HG--
branch : 8.0
2026-06-18 21:41:43 +02:00
Cédric Krier e7d1dcc77d Prepare release project-8.0.2
--HG--
branch : 8.0
2026-06-18 21:41:42 +02:00
Cédric Krier 7fc97b1f10 Increase version number
--HG--
branch : 8.0
2026-06-18 21:38:44 +02:00
Cédric Krier 47174686b8 Add tag purchase_amendment-8.0.1
--HG--
branch : 8.0
2026-06-18 21:38:33 +02:00
Cédric Krier a89666b62e Prepare release purchase_amendment-8.0.1
--HG--
branch : 8.0
2026-06-18 21:38:31 +02:00
Cédric Krier 6934fa250d Increase version number
--HG--
branch : 8.0
2026-06-18 21:35:26 +02:00
Cédric Krier 4898e247ed Add tag sale_amendment-8.0.1
--HG--
branch : 8.0
2026-06-18 21:35:17 +02:00
Cédric Krier 84cf3cb777 Prepare release sale_amendment-8.0.1
--HG--
branch : 8.0
2026-06-18 21:35:16 +02:00
Cédric Krier 7d73ec6f5b Increase version number
--HG--
branch : 8.0
2026-06-18 21:34:39 +02:00
Cédric Krier 74b0c70955 Add tag user_role-8.0.1
--HG--
branch : 8.0
2026-06-18 21:34:25 +02:00
Cédric Krier 42fec858e6 Prepare release user_role-8.0.1
--HG--
branch : 8.0
2026-06-18 21:34:23 +02:00
Cédric Krier bae7cd50d1 Increase version number
--HG--
branch : 8.0
2026-06-18 21:32:55 +02:00
Cédric Krier 9e3758abba Add tag sao-8.0.5
--HG--
branch : 8.0
2026-06-18 21:32:46 +02:00
Cédric Krier ad6a59c062 Prepare release sao-8.0.5
--HG--
branch : 8.0
2026-06-18 21:32:43 +02:00
Cédric Krier 26f4f5a452 Increase version number
--HG--
branch : 8.0
2026-06-18 21:31:03 +02:00
Cédric Krier 53f2d8bef6 Add tag tryton-8.0.5
--HG--
branch : 8.0
2026-06-18 21:30:50 +02:00
Cédric Krier 9f2049b5b1 Prepare release tryton-8.0.5
--HG--
branch : 8.0
2026-06-18 21:30:49 +02:00
Cédric Krier 0b00829ba2 Increase version number
--HG--
branch : 8.0
2026-06-18 21:28:09 +02:00
Cédric Krier 5925e85eae Add tag trytond-8.0.5
--HG--
branch : 8.0
2026-06-18 21:27:56 +02:00
Cédric Krier 2fab2f24e6 Prepare release trytond-8.0.5
--HG--
branch : 8.0
2026-06-18 21:27:55 +02:00
Cédric Krier bdeeb572ac Set shipment address only when empty when changing party of sale amendment
Closes #14796
(grafted from 1a003fa7e62b9f5c0cda4494197e6553a585f7b9)

--HG--
branch : 8.0
2026-06-12 23:42:19 +02:00
Adrià Tarroja Caubet fa6efc064a Add missing invoice address when changing party of amendment
Closes #14796
(grafted from e3a3660f987638f51e04c7023c753f2988d938fc)

--HG--
branch : 8.0
2026-06-12 23:44:04 +02:00
Cédric Krier bb38407c55 Support query without where clause when searching on Many2One with where operator
When not using subquery but EXISTS and having a target domain converted into
UNION, the query result does not have a 'where' clause.

Closes #14889
(grafted from 96982406e129d1e063c1a332289376f45e586ecc)

--HG--
branch : 8.0
2026-06-11 14:29:17 +02:00
José Antonio Díaz Miralles 596c9b8153 Sanitize screen.current_record if it is already destroyed
Closes #14827
(grafted from 9cb776c27fda504a91312636371273483f404152)

--HG--
branch : 8.0
2026-05-10 11:44:04 +02:00
Cédric Krier ac029c3f22 Convert toolbar into mutable objects before modification
Since 619fd425e3bb the toolbar may be immutable when it comes from the cache.

Closes #14881
(grafted from 9e8d1bca2c7fd2fc4ce70284e069d4b06f5ec810)

--HG--
branch : 8.0
2026-06-08 09:09:23 +02:00
Cédric Krier ac0e3d842e Sort selection strings without key function
The selection is a list of string so we can sort as-is.

Closes #14883
(grafted from 2d7c2466ae0eda5dc670cc8fd2ee5b386fb704ab)

--HG--
branch : 8.0
2026-06-08 16:19:50 +02:00
Cédric Krier 6f5c3ec71a Remove display on element style when showing element
The `revert` value prevents to inherit from the CSS rules.

Closes #14872
(grafted from 3f16016f4aa9c81572f9c0ef212bffbf9570a8fd)

--HG--
branch : 8.0
2026-06-02 12:24:25 +02:00
Cédric Krier 5ed82e1ea1 Remove unnecessary MANIFEST.in
(grafted from 4c7cba5ea0710ddab7754751764587e4e7e7ed6b)

--HG--
branch : 8.0
2026-06-02 12:02:28 +02:00
Cédric Krier 012398d060 Prevent modifying the company of project work with parent, children or timesheet
Closes #14871
(grafted from 8e66491c57a6e2eee0d4c3e88d52a84b72c0a933)

--HG--
branch : 8.0
2026-06-02 12:00:50 +02:00
Cédric Krier b17a80a045 Use only active journal for reception of direct debit
Closes #14866
(grafted from e579e58686df04322d881b5911acf6b8be3b7c89)

--HG--
branch : 8.0
2026-05-28 16:30:28 +02:00
Cédric Krier 716fc6fd77 Do not copy accounting templates when copying product category for accounting
Closes #14862
(grafted from 6cd898bfdb36da8c69ecaa9ca85eb07b4cc88df3)

--HG--
branch : 8.0
2026-05-27 10:21:50 +02:00
Cédric Krier 0421ed1d0a Reset the selection when cursor is set with reset view
The view is reset when a new record is displayed and on editable list or
list-form, we want to have only the current record selected even if the
selection checkbox is checked for all records.

Closes #14858
(grafted from c4c84d6300fc4e02eeb7b731434cdf988cce45bc)

--HG--
branch : 8.0
2026-05-21 17:54:51 +02:00
Cédric Krier cf19c35b42 Make display synchronous when possible
In order to ensure that after the focus out of a field that triggers
on_change's, the view is fully displayed before the set_value call from the
Window.Form response. Otherwise the set_value restore the previous value.

Closes #14853
(grafted from fd5d15e75c92282fcadee930c6b51cb02397bbb6)

--HG--
branch : 8.0
2026-05-20 18:50:58 +02:00
Adrià Tarroja Caubet f75aa3aea3 Use current record context when rendering email templates
Pass the current record context from the email dialog when fetching
template values and defaults. This keeps context-dependent models,
including table_query records, addressable after the user changes the
context.

Closes #14565
(grafted from 868b0e31fbdecc0e04b2cb1c894829c5eba19fa4)

--HG--
branch : 8.0
2026-06-06 11:47:25 +02:00
Cédric Krier 174257d1fd Always use the body background for notification menu
On small screen the menu inherits of the navbar background which reduces the
contrast with the item of the menu.

Closes #14855
(grafted from d6e959a65a3f1ec3fb65f96808df61b66bedb4cb)

--HG--
branch : 8.0
2026-05-21 11:05:05 +02:00
Sergi Almacellas Abellana c1302e526e Use only 3 cols for plural field on lang form
Closes #14873
(grafted from c9e05204acc03e85ac33a63039c7b739307f80a1)

--HG--
branch : 8.0
2026-06-03 12:48:36 +02:00
Alen Sugimoto bf9531fb55 Fix falsy negative currency formatting selection
Closes #14860
(grafted from 5e06983974daed2cb0e372a1b3a5f2cd107df751)

--HG--
branch : 8.0
2026-05-24 08:31:26 -07:00
Cédric Krier 18501ae6f8 Increase version number
--HG--
branch : 8.0
2026-06-02 19:09:24 +02:00
Cédric Krier 16ab4031ed Add tag account_payment_sepa-8.0.1
--HG--
branch : 8.0
2026-06-02 19:09:15 +02:00
Cédric Krier 74ca90e5f2 Prepare release account_payment_sepa-8.0.1
--HG--
branch : 8.0
2026-06-02 19:09:14 +02:00
Cédric Krier 6cf9e07172 Increase version number
--HG--
branch : 8.0
2026-06-02 19:07:43 +02:00
Cédric Krier ea95196bfe Add tag account_stock_eu-8.0.1
--HG--
branch : 8.0
2026-06-02 19:07:34 +02:00
Cédric Krier 5146c58bc9 Prepare release account_stock_eu-8.0.1
--HG--
branch : 8.0
2026-06-02 19:07:33 +02:00
Cédric Krier 0d13fddad1 Increase version number
--HG--
branch : 8.0
2026-06-02 19:06:06 +02:00
Cédric Krier 9642cbf0fb Add tag product_kit-8.0.1
--HG--
branch : 8.0
2026-06-02 19:05:57 +02:00
Cédric Krier 4e302ec8fc Prepare release product_kit-8.0.1
--HG--
branch : 8.0
2026-06-02 19:05:56 +02:00
Cédric Krier f0d2e745ea Increase version number
--HG--
branch : 8.0
2026-06-02 19:05:34 +02:00
Cédric Krier 902a2a7cd2 Add tag project-8.0.1
--HG--
branch : 8.0
2026-06-02 19:05:26 +02:00
Cédric Krier ef9abdfa17 Prepare release project-8.0.1
--HG--
branch : 8.0
2026-06-02 19:05:25 +02:00
Cédric Krier c04f9435cf Increase version number
--HG--
branch : 8.0
2026-06-02 19:04:34 +02:00
Cédric Krier 4e4897f2f0 Add tag purchase_request_quotation-8.0.1
--HG--
branch : 8.0
2026-06-02 19:04:26 +02:00
Cédric Krier 25ee6c8350 Prepare release purchase_request_quotation-8.0.1
--HG--
branch : 8.0
2026-06-02 19:04:25 +02:00
Cédric Krier 8bd63e1306 Increase version number
--HG--
branch : 8.0
2026-06-02 19:03:59 +02:00
Cédric Krier 9de36da982 Add tag stock-8.0.1
--HG--
branch : 8.0
2026-06-02 19:03:49 +02:00
Cédric Krier 48e30d2399 Prepare release stock-8.0.1
--HG--
branch : 8.0
2026-06-02 19:03:48 +02:00
Cédric Krier fbd682b854 Increase version number
--HG--
branch : 8.0
2026-06-02 19:02:36 +02:00
Cédric Krier 2cc61af009 Add tag stock_package_shipping-8.0.1
--HG--
branch : 8.0
2026-06-02 19:02:28 +02:00
Cédric Krier b22358508f Prepare release stock_package_shipping-8.0.1
--HG--
branch : 8.0
2026-06-02 19:02:27 +02:00
Cédric Krier 91d3a494d1 Increase version number
--HG--
branch : 8.0
2026-06-02 19:00:19 +02:00
Cédric Krier 96479d2b14 Add tag stock_supply_day-8.0.1
--HG--
branch : 8.0
2026-06-02 19:00:10 +02:00
Cédric Krier 2fea3d325c Prepare release stock_supply_day-8.0.1
--HG--
branch : 8.0
2026-06-02 19:00:09 +02:00
Cédric Krier 09fc668ff9 Increase version number
--HG--
branch : 8.0
2026-06-02 18:54:57 +02:00
Cédric Krier da884b08e9 Add tag sao-8.0.4
--HG--
branch : 8.0
2026-06-02 18:53:06 +02:00
Cédric Krier 74ed90d0d2 Prepare release sao-8.0.4
--HG--
branch : 8.0
2026-06-02 18:53:05 +02:00
Cédric Krier b6e33bc5f9 Increase version number
--HG--
branch : 8.0
2026-06-02 18:48:32 +02:00
Cédric Krier c426416a54 Add tag tryton-8.0.4
--HG--
branch : 8.0
2026-06-02 18:48:19 +02:00
Cédric Krier 33bc087e42 Prepare release tryton-8.0.4
--HG--
branch : 8.0
2026-06-02 18:48:18 +02:00
Cédric Krier 7b4d801da9 Increase version number
--HG--
branch : 8.0
2026-06-02 18:44:41 +02:00
Cédric Krier 773d6ab158 Add tag trytond-8.0.4
--HG--
branch : 8.0
2026-06-02 18:44:25 +02:00
Cédric Krier 0824a1afe9 Prepare release trytond-8.0.4
--HG--
branch : 8.0
2026-06-02 18:44:23 +02:00
Cédric Krier 1e64288bda Do not save record in editable tree view with parent when checkbox is toggled
The parent record is responsible to save the records which is part of a field.

Closes #14848
(grafted from a20b069dd1699260f029e93ee2e0c306a15fe155)

--HG--
branch : 8.0
2026-05-19 17:33:44 +02:00
Cédric Krier bf5328229e Process response to wizard button only if the state is still the same
The response is asynchronous so when the event is processed the state may have
changed.

Closes #14847
(grafted from 1aad63cbbba72af487eddba703c136c9b8e83060)

--HG--
branch : 8.0
2026-05-19 17:18:34 +02:00
Cédric Krier 83535813b8 Set __processing when processing wizard state
The protection was copied from tryton but it was missing this activation.

Closes #14846
(grafted from 9950ddea3804cb6129707b07728e40c6ec4d06c0)

--HG--
branch : 8.0
2026-05-19 17:13:41 +02:00
Cédric Krier 4a68bc20f3 Use tree's record name search for the name parts of project work
Closes #14834
(grafted from f43e7106ddee303435d38113d286ffd0b64a93ff)

--HG--
branch : 8.0
2026-05-19 15:22:00 +02:00
Cédric Krier a61a8e013b Return a proper DateTime in UTC for domain parser completion
Closes #14842
(grafted from f394f7c758765361aadc5569d7303ac1a795ca8c)

--HG--
branch : 8.0
2026-05-18 18:28:00 +02:00
Cédric Krier 59c2e7f7b7 Always process 503 and 401 HTTP errors
Closes #14836
(grafted from aa6f099f2b3d4c2b90989240743554dd62500d9b)

--HG--
branch : 8.0
2026-05-18 15:09:24 +02:00
Cédric Krier a0f1e4929c Publish user notification on the bus when notifications are also modified or deleted
Closes #14835
(grafted from d097be5be052ce8af1b1592a569a14e14aecae33)

--HG--
branch : 8.0
2026-05-18 14:11:39 +02:00
Sergi Almacellas Abellana 81eb21867f Clear ShippingMixin shipping_reference's when copying it
Closes #14833
(grafted from 50f6603fb37986540db45f8552cc07fe22175d8f)

--HG--
branch : 8.0
2026-05-28 09:45:46 +02:00
Adrià Tarroja Caubet 73bb266e2f Avoid crash on SEPA mandate report without bank
Closes #14831
(grafted from e0215f17958ae81f62403c4ff552d8551a163393)

--HG--
branch : 8.0
2026-05-13 11:25:48 +02:00
Cédric Krier 5a38f2a853 Close database after initialization of Pool from WSGI application
The psycopg pool starts worker threads that must be stopped.

Closes #14849
(grafted from fb2059f652653820142d67f34fd58953decf48f3)

--HG--
branch : 8.0
2026-05-19 18:19:59 +02:00
Cédric Krier 4fca529235 Support pool process with spawn context for cron and worker
When max_tasks_per_child is set, the ProcessPoolExecutor uses a spawn
multiprocessing context which starts a new process from scratch with a __name__
being __mp_main__ which prevents the configuration to be restored.
So in the ProcessPoolExecutor initializer the configuration is restored using
the initial options.

Closes #14843
(grafted from cb5c6667ac51818d49ca397347419a40b88768fd)

--HG--
branch : 8.0
2026-05-19 12:29:44 +02:00
Cédric Krier 2bbaac9f21 Test origin from sale instead of line to calculate cost for return sale of product kit
Closes #14854
(grafted from 7e5197d5a61cb5090d8a2c00ae4a12a25924aeda)

--HG--
branch : 8.0
2026-05-21 10:26:44 +02:00
Cédric Krier 87b64c2798 Delete stock moves only of deactivated products
Closes #14844
(grafted from fcdf3e07d2b939ffcc76edd92b791dc94ade1b8e)

--HG--
branch : 8.0
2026-05-19 10:53:56 +02:00
Nicolas Évrard 456e3203d0 Fetch limit records of ResourceAccessMixin models when they are available
Closes #14788
(grafted from 5e7086dc7cc483868eca8852f4728557224c6980)

--HG--
branch : 8.0
2026-04-21 13:40:21 +02:00
Nicolas Évrard 6a4c1aa5e3 Parse equality to a date as two clauses when handling datetime fields
Closes #14778
(grafted from 6952308a8b6b65ff583a2b04d9cd558b44c4e4a9)

--HG--
branch : 8.0
2026-04-14 18:29:42 +02:00
José Antonio Díaz Miralles 2ff149fde6 Reject O2M validate promise when record validation fails after screen display
Closes #14775
(grafted from 6978c46c77b9133381e18de964ae3886fc87f1e4)

--HG--
branch : 8.0
2026-04-19 13:11:06 +02:00
Xavi Hermoso b6d098aeab Update purchase request state when it is manually linked to a quotation
Closes #14773
(grafted from a463be917f2576adb8f4333eb2ce19759456be0b)

--HG--
branch : 8.0
2026-05-12 09:33:32 +00:00
Cédric Krier 81f3bb8c89 Calcule stock move weight on done when required for intrastat
The weight may not have been calculated at the creation of the move if the
product did not have a weight set at that time.

Closes #14824
(grafted from 7e33b59a691fab63634fb6857c537b64d0ec191c)

--HG--
branch : 8.0
2026-05-08 12:38:14 +02:00
Nicolas Évrard 8f0fe8de09 Stop the propagation of the click event in buttons from list-form
Closes #14839
(grafted from 29667641dd0685424f2a4bd8a6cd16bf642a7fea)

--HG--
branch : 8.0
2026-05-18 15:57:55 +02:00
Cédric Krier 67cf4d2f33 Do not fail to compute supply and purchase date for product supplier without weekdays
Closes #14841
(grafted from c905132eab0552b2d0adcbdb18e07789433488b6)

--HG--
branch : 8.0
2026-05-18 17:45:32 +02:00
Cédric Krier 476fae13e2 Increase version number
--HG--
branch : 8.0
2026-05-20 23:29:12 +02:00
Cédric Krier b3ee50ba88 Add tag production_work_timesheet-8.0.1
--HG--
branch : 8.0
2026-05-20 23:29:03 +02:00
Cédric Krier b5be60251b Prepare release production_work_timesheet-8.0.1
--HG--
branch : 8.0
2026-05-20 23:29:02 +02:00
Cédric Krier 9f01d1f61a Increase version number
--HG--
branch : 8.0
2026-05-20 23:27:30 +02:00
Cédric Krier ebaa9f637f Add tag web_shop_shopify-8.0.1
--HG--
branch : 8.0
2026-05-20 23:27:20 +02:00
Cédric Krier 2f737a26e4 Prepare release web_shop_shopify-8.0.1
--HG--
branch : 8.0
2026-05-20 23:27:19 +02:00
Cédric Krier cb9fd1c237 Increase version number
--HG--
branch : 8.0
2026-05-20 23:25:52 +02:00
Cédric Krier 2925916468 Add tag sao-8.0.3
--HG--
branch : 8.0
2026-05-20 23:25:43 +02:00
Cédric Krier 6225da573f Prepare release sao-8.0.3
--HG--
branch : 8.0
2026-05-20 23:25:42 +02:00
Cédric Krier f60d574233 Increase version number
--HG--
branch : 8.0
2026-05-20 23:22:49 +02:00
Cédric Krier 450bfefa38 Add tag tryton-8.0.3
--HG--
branch : 8.0
2026-05-20 23:22:37 +02:00
Cédric Krier d83dc7b639 Prepare release tryton-8.0.3
--HG--
branch : 8.0
2026-05-20 23:22:36 +02:00
Cédric Krier 54c5e75d8e Increase version number
--HG--
branch : 8.0
2026-05-20 23:20:39 +02:00
Cédric Krier 1930fc45cb Add tag trytond-8.0.3
--HG--
branch : 8.0
2026-05-20 23:20:24 +02:00
Cédric Krier 854639a981 Prepare release trytond-8.0.3
--HG--
branch : 8.0
2026-05-20 23:20:23 +02:00
Cédric Krier 0c5f1bfe53 Include timesheet cost in production work only if timesheet cost module is activated
f2642fe60c20 extends the cost method using the cost price of the timesheet line
but without ensuring the module is activated.

Closes #14830
(grafted from 4b38a680f4ee2139a8d0179a3a67eb2606faa7e4)

--HG--
branch : 8.0
2026-05-12 09:02:55 +02:00
Cédric Krier eeeec6340d Do not add empty extension when slugify filename
Closes #14823
(grafted from 143883125d7e98b0fcdc300b54886d735c228fe9)

--HG--
branch : 8.0
2026-05-07 13:34:06 +02:00
Cédric Krier bfd8ecdc38 Make search on boolean non equals to True is the same as different of False
Closes #14815
(grafted from 7ac4b470f9e36f846b28d4c12e5e121e204d4aa1)

--HG--
branch : 8.0
2026-05-06 09:23:35 +02:00
Cédric Krier 3ea873f887 Do not reset to quotation Shopify order already processed
After a refund the authorized payment amount may be lower than the amount to
pay but the sale should still stay in processing or done state.

Closes #14816
(grafted from 9df991a256f872f8d9623b675732b1480534e553)

--HG--
branch : 8.0
2026-05-05 00:11:08 +02:00
Cédric Krier dc2aaeec41 Delegate notification handling of worker to the backend
Since bb52a833e823 the backend provides methods to handle notification.

Closes #14821
(grafted from 2763a98a25e401887fb9ac5049ce21d97b622f66)

--HG--
branch : 8.0
2026-05-07 18:12:20 +02:00
Cédric Krier aea78aff43 Add RPC method name as fragment of the URL for session methods
(grafted from 6286497d452bfbb965b9df7341b93c025aab16d7)

--HG--
branch : 8.0
2026-05-06 17:25:44 +02:00
Cédric Krier 9a2a0fc27d Add rpc suffix to reset password procedure
Closes #14820
(grafted from ec8e69a3eb6b1934eb6270351fed3ce2862bca19)

--HG--
branch : 8.0
2026-05-06 17:24:23 +02:00
Nicolas Évrard bb25bf89a6 Synchronize trytond and tryton domain_inversion implementations
The commit d826376d08a5 was not correctly copied.
(grafted from 191f2e9503a1a2598810067689b7a14d67eef138)

--HG--
branch : 8.0
2025-02-12 18:59:33 +01:00
Cédric Krier abaf45e1f6 Flip expander and icons for RTL language
Closes #14810
(grafted from 4fea86cbae6a7d279d3e113177f2711634f5926d)

--HG--
branch : 8.0
2026-04-24 16:16:27 +02:00
Cédric Krier 73d86cf5a0 Increase version number
--HG--
branch : 8.0
2026-05-02 14:13:46 +02:00
Cédric Krier 5002e33a56 Add tag currency_ro-8.0.1
--HG--
branch : 8.0
2026-05-02 14:13:38 +02:00
Cédric Krier fbbef01050 Prepare release currency_ro-8.0.1
--HG--
branch : 8.0
2026-05-02 14:13:37 +02:00
Cédric Krier 5c77d55e88 Increase version number
--HG--
branch : 8.0
2026-05-02 14:11:57 +02:00
Cédric Krier 45a9de450b Add tag sale-8.0.1
--HG--
branch : 8.0
2026-05-02 14:11:48 +02:00
Cédric Krier 5e183d7991 Prepare release sale-8.0.1
--HG--
branch : 8.0
2026-05-02 14:11:47 +02:00
Cédric Krier 4158479286 Increase version number
--HG--
branch : 8.0
2026-05-02 14:07:33 +02:00
Cédric Krier fe8fe44c7e Add tag stock_lot-8.0.1
--HG--
branch : 8.0
2026-05-02 14:07:24 +02:00
Cédric Krier 85f67cd23f Prepare release stock_lot-8.0.1
--HG--
branch : 8.0
2026-05-02 14:07:23 +02:00
Cédric Krier e2aaca6d5c Increase version number
--HG--
branch : 8.0
2026-05-02 14:06:27 +02:00
Cédric Krier 6c4ebb8ee5 Add tag naiad-8.0.1
--HG--
branch : 8.0
2026-05-02 14:06:19 +02:00
Cédric Krier e730931f7e Prepare release naiad-8.0.1
--HG--
branch : 8.0
2026-05-02 14:06:18 +02:00
Cédric Krier f8a7802beb Increase version number
--HG--
branch : 8.0
2026-05-02 13:57:17 +02:00
Cédric Krier dc9202053d Add tag sao-8.0.2
--HG--
branch : 8.0
2026-05-02 13:56:40 +02:00
Cédric Krier 92c1a3dda0 Prepare release sao-8.0.2
--HG--
branch : 8.0
2026-05-02 13:56:39 +02:00
Cédric Krier ef47d3106c Increase version number
--HG--
branch : 8.0
2026-05-02 13:55:01 +02:00
Cédric Krier e820ba32c6 Add tag tryton-8.0.2
--HG--
branch : 8.0
2026-05-02 13:54:48 +02:00
Cédric Krier bbfa2af176 Prepare release tryton-8.0.2
--HG--
branch : 8.0
2026-05-02 13:54:48 +02:00
Cédric Krier 57bde5cffc Increase version number
--HG--
branch : 8.0
2026-05-02 13:52:12 +02:00
Cédric Krier 3c46f67df1 Add tag trytond-8.0.2
--HG--
branch : 8.0
2026-05-02 13:51:59 +02:00
Cédric Krier 9d28375bcd Prepare release trytond-8.0.2
--HG--
branch : 8.0
2026-05-02 13:51:58 +02:00
Cédric Krier 4f817c1b42 Always put form input inside an input-group to position accesskey
And invert left/right position on RTL.

Closes #14809
(grafted from 7543e85afb49d4663800edf1004de4ec34bbb759)

--HG--
branch : 8.0
2026-04-24 16:14:05 +02:00
Sergi Almacellas Abellana e1db6067eb Always use out/return as sale move types
Closes #14807
(grafted from 772c331a3570f8ecfc43965cc133b5d25fe11084)

--HG--
branch : 8.0
2026-04-23 16:51:09 +02:00
Cédric Krier 508870da7b Activate module for TranslationTestCase
(grafted from 968cfd79f10955b767967f99aa970956e09b23c8)

--HG--
branch : 8.0
2026-04-24 16:06:46 +02:00
Sergi Almacellas Abellana 56ec009f0b Manage assigned moves on add lots wizard
Closes #14804
(grafted from 83ef4c017af5df55178fa22f7775d35fd7f28874)

--HG--
branch : 8.0
2026-04-23 13:36:23 +02:00
Nicolas Évrard f912ebc697 Add missing _datamanagers property on Transaction creation
(grafted from 7ab23e6cc9d3925410da5bc7e6f76f3cef162efa)

--HG--
branch : 8.0
2026-04-24 11:45:37 +02:00
Nicolas Évrard e3a862e4c3 User percent encoded name of inexistant database
Closes #14801
(grafted from 5fddfb00cfffa81177c0b5ddda6aaecaccfe19da)

--HG--
branch : 8.0
2026-04-22 18:19:51 +02:00
Nicolas Évrard c4fdf6d9a0 Ensure check_warnings and _datamanagers are valid when using them
(grafted from ee9737c3a9c8618d09c491f5c3401fef0f0f078f)

--HG--
branch : 8.0
2026-04-24 11:47:03 +02:00
Cédric Krier f40a735a0e Prevent setuptools Distribution to parse config files
The pyproject.toml is not compatible with setuptools as it is based on
hatchling backend.

Closes #14789
(grafted from 0b79707bcf19fbee9d243fa2f689e6f18e0869d0)

--HG--
branch : 8.0
2026-04-21 11:40:53 +02:00
Cédric Krier fcab430ea4 Use version from setup-freeze when making tryton installer
This prevents the need to install the build backend dependencies.
(grafted from f120b2c743b1479b2b9d0e72c95f27f59d52d051)

--HG--
branch : 8.0
2026-04-21 11:39:44 +02:00
Cédric Krier 142d2d0724 Use python3 to make tryton installer
(grafted from 75b61640df96960c9431522571ef3bfcac46c280)

--HG--
branch : 8.0
2026-04-21 11:41:23 +02:00
Sergi Almacellas Abellana ab1772a940 Shrink psycopg-pool to (0, 1) when cleaning connections
When min size is zero, max size must be greater than 0.

Closes #14795
(grafted from 357525621ea68bc99d688ddf04f9912905c9f3a0)

--HG--
branch : 8.0
2026-04-23 15:15:16 +02:00
Cédric Krier f539e7f5e5 Prepend www to URL of bnr.ro website
Closes #14784
(grafted from a3b875e9b443c5efffcc84a4fc3b69069e949fe8)

--HG--
branch : 8.0
2026-04-20 10:32:39 +02:00
Cédric Krier 0f88879121 Activate modules that are not activated in demo
0af71ac1106b wrongly tested the module to activate
(grafted from 31f2ed6d2f7814576a6b47aab25b4e2d213754c4)

--HG--
branch : 8.0
2026-04-21 10:06:09 +02:00
Cédric Krier 95e8007bf4 Submit payment before approve it in demo
(grafted from 2265bacb7aff3db5ce17095d5fca98e77f52d3fc)

--HG--
branch : 8.0
2026-04-21 10:06:41 +02:00
Cédric Krier 1ff8d99c0c Increase version number
--HG--
branch : 8.0
2026-04-23 01:04:07 +02:00
Cédric Krier a579d13179 Add tag tryton-8.0.1
--HG--
branch : 8.0
2026-04-23 01:03:44 +02:00
Cédric Krier 7b2142612e Prepare release tryton-8.0.1
--HG--
branch : 8.0
2026-04-23 01:03:43 +02:00
Cédric Krier 914ec18fff Increase version number
--HG--
branch : 8.0
2026-04-23 01:03:20 +02:00
Cédric Krier c779966f96 Add tag sao-8.0.1
--HG--
branch : 8.0
2026-04-23 01:02:37 +02:00
Cédric Krier 37d4fc2194 Prepare release sao-8.0.1
--HG--
branch : 8.0
2026-04-23 01:02:36 +02:00
Cédric Krier 4a40b1656f Increase version number
--HG--
branch : 8.0
2026-04-23 00:59:00 +02:00
Cédric Krier 4770a9cadc Add tag trytond-8.0.1
--HG--
branch : 8.0
2026-04-23 00:58:47 +02:00
Cédric Krier 272e0b1c88 Prepare release trytond-8.0.1
--HG--
branch : 8.0
2026-04-23 00:58:46 +02:00
Cédric Krier 664060c49e Remove fake gap from form containers on XS screen
Since e58b98a512c2 we apply a fake gap but it must be removed on XS screen.

Closes #14799
(grafted from 394e796bbe4e4c15097770dc70a6e2c3b53087ca)

--HG--
branch : 8.0
2026-04-22 16:57:03 +02:00
Cédric Krier d7715aba68 Make overflow visible for dropdown in table header of treeview
7d2e1761cee2 added an overflow invisible on the div of the table header to hide
the sort icon when the column width is too small. But the overflow must be
visible for the dropdown to display the menu.

Closes #14793
(grafted from b243f1930ffe23e9a9078817be0a22d4c468edb3)

--HG--
branch : 8.0
2026-04-21 19:04:13 +02:00
Cédric Krier 321fd8d9ce Do not pass the channel name as parameter to LISTEN call in the queue
psycopg3 can not determine the data type.

Closes #14792
(grafted from 7fc8e6a10574c04a074f55a8a4e56ec4e07efb74)

--HG--
branch : 8.0
2026-04-21 15:30:46 +02:00
Cédric Krier 7cfd5eba46 Process exception of RPC calls for chat
Closes #14790
(grafted from e47e55822e32ef31aee016882fce0cb0a530e6eb)

--HG--
branch : 8.0
2026-04-21 12:28:49 +02:00
Cédric Krier cd1aef8dfc Check access only on entry points of chat channel
Since 317e5ff39097 the read access is restricted to the admin group.
The access right should not be enforced for the transaction but only at the RPC
entry point.

Closes #14791
(grafted from 8c311ddd3da49bdbd61f2ae22074880ea79ae2ec)

--HG--
branch : 8.0
2026-04-21 12:15:36 +02:00
Cédric Krier e73bb1bd79 Fix computation of doc series for odd minor version
(grafted from b51529a6afd0794498d1790e88b4805af582eb81)

--HG--
branch : 8.0
2026-04-20 22:24:47 +02:00
Cédric Krier 35e4dac5d6 Fix computation of documentation series for odd minor version
(grafted from f4d6cf9d57ce7c69bcde185f933f866c0dd40301)

--HG--
branch : 8.0
2026-04-20 21:23:36 +02:00
Cédric Krier 045421c749 Increase version number
--HG--
branch : 8.0
2026-04-20 21:01:58 +02:00
Cédric Krier e62dadfc2f Create branch 8.0
--HG--
branch : 8.0
2026-04-20 20:55:30 +02:00
1183 changed files with 66075 additions and 1640 deletions
+57
View File
@@ -0,0 +1,57 @@
name: Validate Tryton customizations
on:
push:
branches:
- '8.0'
- 'integration/8.0'
- 'feature/**'
- 'translation/**'
pull_request:
branches:
- '8.0'
- 'integration/8.0'
workflow_dispatch:
permissions:
contents: read
jobs:
validate:
runs-on: ubuntu-24.04
steps:
- name: Check out repository
uses: actions/checkout@v4
with:
fetch-depth: 1
github-server-url: https://code.unpaismejor.org.do
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.13'
cache: pip
- name: Install validation dependencies
run: python -m pip install --upgrade build polib
- name: Validate Python syntax
run: python -m compileall -q trytond/trytond
- name: Validate PO files
run: python ci/validate_po.py
- name: Build customized packages
run: python -m build trytond
- name: Install customized Tryton server
run: python -m pip install './trytond[test]'
- name: Run relevant Tryton tests
env:
TRYTOND_DATABASE_URI: sqlite://
DB_NAME: ':memory:'
run: |
python -m unittest discover -s ci/tests -p 'test_*.py'
python -m unittest discover -s trytond/trytond/tests -p 'test_i18n.py'
python -m unittest trytond.tests.test_ir.IrTestCase.test_dominican_spanish_language
+42
View File
@@ -0,0 +1,42 @@
name: Propose upstream Tryton updates
on:
schedule:
- cron: '35 */6 * * *'
workflow_dispatch:
permissions:
contents: write
pull-requests: write
issues: write
concurrency:
group: upstream-8.0-sync
cancel-in-progress: false
jobs:
propose-update:
runs-on: ubuntu-24.04
env:
GITEA_URL: https://code.unpaismejor.org.do
MIRROR_REPOSITORY: tryton-do/tryton-mirror
CUSTOM_REPOSITORY: tryton-do/tryton
TARGET_BRANCH: '8.0'
INTEGRATION_BRANCH: integration/8.0
UPDATE_BRANCH: automation/upstream-8.0
GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
steps:
- name: Check out customized repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITEA_TOKEN }}
github-server-url: https://code.unpaismejor.org.do
- name: Configure Git identity
run: |
git config user.name 'tryton-sync'
git config user.email 'tryton-sync@noreply.unpaismejor.org.do'
- name: Propose upstream update
run: ci/sync_upstream.sh
+144
View File
@@ -10116,3 +10116,147 @@ aa3fec2b7a4ede5cf546ccc7cc8f95c9aa9dd288 trytond-7.8.0
5d386601295db93f432663c7dfd558b82f99f998 trytond-gis-8.0.0 5d386601295db93f432663c7dfd558b82f99f998 trytond-gis-8.0.0
5d386601295db93f432663c7dfd558b82f99f998 trytond-8.0.0 5d386601295db93f432663c7dfd558b82f99f998 trytond-8.0.0
5d386601295db93f432663c7dfd558b82f99f998 naiad-8.0.0 5d386601295db93f432663c7dfd558b82f99f998 naiad-8.0.0
18e42246957acdb72e5ed9ca00a4911616f3207c trytond-8.0.1
22217a92b7cb1b0e360bdfb5324724bacdcdc722 sao-8.0.1
841de42f1937214328467bccf5539771b26e776e tryton-8.0.1
4c83022598db0c6567366b6f70c90e4eb9a9bc65 trytond-8.0.2
90b50dcc879fe168a294731e50028e94638b7bcd tryton-8.0.2
b458bf9b8899bcbff37f2d581a2ff7e6c034ab51 sao-8.0.2
c26ff653ffb19a3ef1ac55fca65341006cf365aa naiad-8.0.1
641aa0794a77426094adda94e35a9f7a67149848 stock_lot-8.0.1
0ed9c7edaee024b63abf8eb1b9b1975e7ce1cd72 sale-8.0.1
57a908ea277bae4097fcfa3f3d74c5f1ce842b4d currency_ro-8.0.1
70b99e7040b2faeda5c86008f145af4751e34441 trytond-8.0.3
12190ea41ce3c2db9da84b1c28bc4761c260bc79 tryton-8.0.3
4a1e56b7316d357a475e9a6a21fa05c8f19dbca6 sao-8.0.3
828121cc1d9dc5d70d4d4f711db393e1273208cf web_shop_shopify-8.0.1
b05e024c2ccb6aa2a4198287190b36b09c9738ff production_work_timesheet-8.0.1
982326e96d3439a4552cb19f0b58bd992c632fb7 trytond-8.0.4
a3751366a7349047dca30ceedd7b34abfe28f611 tryton-8.0.4
c1481442e1fc1f63587c4b85e65b8a3e197d2794 sao-8.0.4
f9dd2094c384980e591c9b3185b34bf200c54e1c stock_supply_day-8.0.1
cfed2065d376fe246be7f081bf361d8c02272322 stock_package_shipping-8.0.1
025d8b8101a3b7e78d103c0940712541264e71ee stock-8.0.1
7d3ed4d0cd9e132a869614552115fb9635ee0c88 purchase_request_quotation-8.0.1
d816f2b7db2593321a27f4a72581185dde77c6f5 project-8.0.1
e5f4672e622590210e0326db5372fcba5b7a6eee product_kit-8.0.1
a8bd795947b0b679e5a8ddd6c5b985ee31c63089 account_stock_eu-8.0.1
5dd0dcb04c257978a09d52b760a96019ffeab5d4 account_payment_sepa-8.0.1
fa4fb801f90f877603645caf51f37f7f9fedf9db trytond-8.0.5
65b0b3244b26ff0578af5cedebf841654041da03 tryton-8.0.5
f5d4bda34a66a9941dc6387cf62f3df7667c7727 sao-8.0.5
cfdec073b518d65c70433762290064ecffafab70 user_role-8.0.1
4bb9f293d98f1cdb7d159be20fcb69e4c18eb39d sale_amendment-8.0.1
37b133347403e31d97d661f35892754a9f9c727d purchase_amendment-8.0.1
fb3c896ef8f122b82a94680b057b32bceb3a2ff6 project-8.0.2
bfd2cded178b87c5816d369b1ac9496cf0b26e43 account_product-8.0.1
5a3bd5f358b84bb076b28f115c3e84e40a9c8f43 account_payment-8.0.1
101b48a301cbfab687923b4ce01746e6f8847b8d account-8.0.1
6654866a07a3b1d8ba23e14f64d8d35681807012 trytond-8.0.6
bfa4608623bc3128e8130848c88598eb94c7cfc3 tryton-8.0.6
7abbd905e13862537e474bddc88379d78f61c248 sao-8.0.6
5f659df9d5e043bae538d22bbe98cb7aa8bd3ed1 web_shop_shopify-8.0.2
f51f52e1b3a4f7d305f84f417cf96e3dc2ce6b01 stock_shipment_customs-8.0.1
31c74e9043fe332fb2023c8693a4eff8d847628e stock_lot-8.0.2
31f5306863e6b49fa8563bc2fcdb8fa72f9e41fe stock-8.0.2
67b12222818b22c8861be6b5eaa7b5b68b3e66fa project-8.0.3
eeba9c16ce670a979c123afca5c82f7371415b34 product_kit-8.0.2
530a04958c2fb954e07321e345dbdb402b4667bd production-8.0.1
629e6623ec3efaf3b909e8b0cdd76ddd034f6ec5 party-8.0.1
bc1c129f89a66b5178578b96ff70062621c0be0e marketing_email-8.0.1
8777fbd30109de156949c9b363f3e0274ac5eb73 marketing_automation-8.0.1
5383bfd494d3fe9b7891232c1d3bbe78fa81a150 edocument_uncefact-8.0.1
451ee8df315f2173863a86c7401563a6c93bd3a9 edocument_ubl-8.0.1
23936d844f2497541655aba6dcb63cb565b20d8b company-8.0.1
c2dc3ddb2ebee5de8f3370395f9bf64fc00af1b2 account_statement_sepa-8.0.1
6f53d94b3fd6dd665aa785c1fb2bce5ac1224b62 account_payment_braintree-8.0.1
40831fce9b9d77dcfc328905ccecc847a9b89787 account-8.0.2
366a1ff84435b3422d9f7a77bfb96742b687e247 trytond-8.0.7
f0f8b4cefe335797b495c1d9205d7bacce29cc9c tryton-8.0.7
380e85613a7e6ef8761b064bb972cab22fb4fe17 sao-8.0.7
ed7d412d2fceaea5f09f298c4220504e0ae666d0 web_user-8.0.1
6d5f9e693e1c6cc1b21d51a72181d9dbb6e9c3b8 web_shop_shopify-8.0.3
00502af1a0231ec2ed3083363bf6a36eb62dce76 stock_package_shipping_ups-8.0.1
6efe2638d2dd7e065430f0b63122f40c7ee61b1d stock_lot_sled-8.0.1
60d73066a878ecbc3eea6678b99e15788721d83c stock-8.0.3
7953bc3bcfa8b6aff88b083cb7e9c18f1d59555c sale_subscription-8.0.1
f03f633ddf27630ec2f6ce6f7b62d074e8b2f1ba sale_rental-8.0.1
c3d860bb7c1aa236c87155336b0d6a94dccef62c sale_opportunity-8.0.1
e38fdd565ec0ff0fc41a9e3546062131e876829e sale_complaint-8.0.1
1714d985b1237a1eb1bf2fe7d4952b3c912b75a2 sale_blanket_agreement-8.0.1
a5899fdac5c0c9708ca977a56e068cc45bb415e1 sale-8.0.2
73a86590f5c657598211504f244054d6b101fded quality-8.0.1
71a28e0517943555bdaa0d0c3f4a3a501981f4a0 purchase_request_quotation-8.0.2
c9e9f04a1c81a0f6782b61c528eadd5e3b3620c3 purchase_request-8.0.1
099cfb79956006e34a8e3730192353795eac6dd7 purchase_blanket_agreement-8.0.1
3c1ae1bf507c9e2b17b700f10cb4eff8c5d9c0a2 purchase-8.0.1
06a720cc7b3a8e722124ff4155a5f9505a5f3247 project-8.0.4
775846363b0a8a90ee38354966ebc686060db73f product-8.0.1
4343c9246cd63b2a68dc951fb1ac83819805cae4 party-8.0.2
4c82e29c14920e3980f902c7d9b2cb245c59450d edocument_ubl-8.0.2
5177f959cb590e9d9af14f3cd954822f99da533e commission-8.0.1
79bc9f0de1df71c6ca7b4e7db4661e79d847a405 analytic_account-8.0.1
b5af34388aac0c536454b22ba98d425086560afc account_invoice-8.0.1
6146f4278e008df4ce2df9bf5d9a75a930f98e76 account-8.0.3
78bcedc0a6714ef8d7b708851276616c0aa6a6a1 trytond-8.0.8
efa11e1ddfd5503d96909ca8310aee8fcfacd56a sao-8.0.8
f076d5b75be00ee9c373841cf96f0b640242edc0 web_shop_shopify-8.0.4
8e22290a8516bda8b6d21fcce93e3f80cbc3f297 stock_lot-8.0.3
bb0b37cd2b42c5e1adc16b01c27575230bda4355 sale_supply_production-8.0.1
53d5d46245bdacf1f1d546303b46a22db326eef7 sale-8.0.3
7ff2088c1fc6ea202462f4467960012727042849 production_outsourcing-8.0.1
39a4a58a46bb3902653b549ecba0d73421cf2867 edocument_uncefact-8.0.2
bad1ac43adc3348d894bb57bc1ab33448bdd2881 edocument_ubl-8.0.3
b72bf9f5463aeca4aeeeeee6e3ed891330bc9249 edocument_peppol-8.0.1
6ae4f92d5c9c10c3ffd5d2877bc3cd079a088f76 authentication_saml-8.0.1
bc72b60c7d66ff780a7dfd718ade8f33f27587fe account_statement-8.0.1
63edd9d8801eecb2c87df8d8d23f58854a3dd250 account_payment_sepa_cfonb-8.0.1
11943a0789a15d1cf60daabd00832ce1ed3ec2c4 account_payment_sepa-8.0.2
79ea9e7f767c862491bdb71cc6084ad90eb58e6d trytond-8.0.9
131ef6fa8bf2e7490fdbbb217782d79d10567e58 tryton-8.0.8
842874aa076b8e94ffb00645de0c4ef8704e8292 sao-8.0.9
553c06baac9c622d6affb015a2f0674ec7091d1d web_shop_shopify-8.0.5
4af0643b1a4071d2e8ee3ec8f520f95a7c7ced12 sale_blanket_agreement-8.0.2
397681274e38b1f3501ca7bee8db377ce70220eb party-8.0.3
302fc83b4c873cd33b0a68daa157193c26b266cb edocument_ubl-8.0.4
3121d3027e137afb2a5f690c109d03c663d588a8 edocument_peppol_peppyrus-8.0.1
86236835bb11412b6d37c8ced082fa1a180d2abd currency_ro-8.0.2
5ae39eb506f9c845e8d1207adb2b217607e87b61 account_invoice_history-8.0.1
89ed79bf2ce8e553193cce356d47041e49527044 trytond-8.0.10
df78652af06183ec2ac46dbb5b6a39a06d77b480 tryton-8.0.9
406d434c23c186b1feac05cca32fe19afd31260d sao-8.0.10
724704395c9fcf4ec332e647d0ad7729b7d7fb9d web_shop_shopify-8.0.6
354b9fa19f9aa16b3169027a18a7f911722e5236 user_role-8.0.2
923a7156c2af9e0e0d0962d9a2f15152e689549c stock_package_shipping-8.0.2
a0032eceda21b50551ab2e7448630c8105e2a683 stock_ethanol-8.0.1
6aebf009045885b55fb4c880647bc68b560c7759 sale_supply_drop_shipment-8.0.1
23d9d2d400b07b3183421d9258f8ae895db06b97 sale_supply-8.0.1
1e39c38f31009f9a297034fe562ea4b8ada814be sale-8.0.4
0b1eddb77976e418f9c4497b80792635b2ca3a74 purchase_blanket_agreement-8.0.2
ac0f7504497c8028304631f73e31cd923d980998 purchase-8.0.2
bd500f524bab9502f67c037834ab7f41bcf7519f product_kit-8.0.3
7e3a84a52c0f50e9e4bb303cc184afb803766015 product-8.0.2
57626d22878f5f4720dcafcaaac2cbfcf8a7969e edocument_uncefact-8.0.3
6304da5d0f4f5670c5b427a06376c3e459b05654 edocument_ubl-8.0.5
e2ab66fdaf6dea092ef4d651ee0f139f7e8ab12d account_payment_sepa-8.0.3
6e6effbe6081ee6825523bc0d990b993fd99d679 account_invoice_defer-8.0.1
39b8e0615fbe0c5baabd0f6448249796e62720d0 account_invoice-8.0.2
cf94a6d82da515c43c38d4afd67dac0d232598da account_fr_chorus-8.0.1
06f702625e46db861e588dfeae45b868345a6700 sao-8.0.11
720d8c02b1c22af310ce140453c52d47e6bf11ac trytond-8.0.11
c55b90a70a053d67b31c948462a93f8ce30090c7 sao-8.0.12
5fba1625f6b57508594851bb360b4852477965f3 web_shop_shopify-8.0.7
8b5389b6d7eb08fcccbc0f28f14ac22eacab165e stock_package_shipping_ups-8.0.2
00968fd65c165746f895bb3bd2b2331407f99db8 stock-8.0.4
3e8269f02074ebaab21b92db2fe2350a6e3d2009 sale_advance_payment-8.0.1
5cd7a08cfca724fbb76c01019b3e14d407c66833 sale-8.0.5
51f90c4202b7d212b2c9925960fdcefd7d06a466 purchase_amendment-8.0.2
50ac9e6f3e6e7613afd44b36dccdea6d3301b943 purchase-8.0.3
83ed1a671773a279809f14fb9a1bc99a4c66a792 product_kit-8.0.4
72e7fe03c4e1620e403c38b2cc64ef7f8ccbcaea incoterm-8.0.1
f7802c4cd99f5d1a8e8afeed793649afac5439f5 edocument_peppol-8.0.2
2e6b024651d78bc6baff76d953d2e5ef18da8e98 document_incoming_ocr_typless-8.0.1
9bfdfe67b0c27e48b131e080341726870e2f9a43 account_payment_stripe-8.0.1
22623d7ef6b81070982632f7624e14e232e082a8 account_payment_sepa-8.0.4
1176083ab6d5dc037ee52a77d2f1509dbd6e201e account_payment-8.0.2
cb5455d12dcecfa772c91bb46712739eaa5ee8d1 account_fr_chorus-8.0.2
+63
View File
@@ -0,0 +1,63 @@
#!/usr/bin/env bash
set -Eeuo pipefail
required=(GITEA_URL MIRROR_REPOSITORY CUSTOM_REPOSITORY TARGET_BRANCH \
INTEGRATION_BRANCH UPDATE_BRANCH GITEA_TOKEN)
for variable in "${required[@]}"; do
if [[ -z "${!variable:-}" ]]; then
echo "Missing required environment variable: ${variable}" >&2
exit 2
fi
done
auth_header="Authorization: token ${GITEA_TOKEN}"
mirror_url="${GITEA_URL}/${MIRROR_REPOSITORY}.git"
push_url="${GITEA_URL}/${CUSTOM_REPOSITORY}.git"
git remote add upstream "${mirror_url}"
git -c "http.extraHeader=${auth_header}" fetch --no-tags upstream \
"+refs/heads/${TARGET_BRANCH}:refs/remotes/upstream/${TARGET_BRANCH}"
git fetch origin "${INTEGRATION_BRANCH}"
upstream_ref="upstream/${TARGET_BRANCH}"
base_ref="origin/${INTEGRATION_BRANCH}"
if git merge-base --is-ancestor "${upstream_ref}" "${base_ref}"; then
echo "${INTEGRATION_BRANCH} already contains the current upstream commit."
exit 0
fi
if git ls-remote --exit-code --heads origin "${UPDATE_BRANCH}" >/dev/null 2>&1; then
git fetch origin "${UPDATE_BRANCH}"
git switch --create "${UPDATE_BRANCH}" --track "origin/${UPDATE_BRANCH}"
else
git switch --create "${UPDATE_BRANCH}" "${base_ref}"
fi
# Keep a reused automation branch based on the latest integration history.
# This merge is intentionally non-destructive: conflicts create an issue and
# leave every published reference untouched.
if ! git merge-base --is-ancestor "${base_ref}" HEAD; then
if ! git merge --no-edit --no-ff "${base_ref}"; then
conflicts=$(git diff --name-only --diff-filter=U | sed '/^$/d')
git merge --abort
python ci/upstream_pr.py conflict "${conflicts}"
exit 1
fi
fi
if ! git merge --no-edit --no-ff "${upstream_ref}"; then
conflicts=$(git diff --name-only --diff-filter=U | sed '/^$/d')
git merge --abort
python ci/upstream_pr.py conflict "${conflicts}"
exit 1
fi
if git diff --quiet "origin/${UPDATE_BRANCH}" HEAD 2>/dev/null; then
echo 'The existing update branch already contains this upstream revision.'
else
git -c "http.extraHeader=${auth_header}" push "${push_url}" \
"HEAD:refs/heads/${UPDATE_BRANCH}"
fi
python ci/upstream_pr.py pull-request "$(git rev-parse "${upstream_ref}")"
+60
View File
@@ -0,0 +1,60 @@
import importlib.util
import os
import pathlib
import unittest
from unittest.mock import ANY, patch
SCRIPT = pathlib.Path(__file__).parents[1] / 'upstream_pr.py'
class UpstreamPullRequestTestCase(unittest.TestCase):
@classmethod
def setUpClass(cls):
environment = {
'GITEA_URL': 'https://gitea.example.test',
'CUSTOM_REPOSITORY': 'tryton-do/tryton',
'GITEA_TOKEN': 'test-token',
'INTEGRATION_BRANCH': 'integration/8.0',
'UPDATE_BRANCH': 'automation/upstream-8.0',
}
with patch.dict(os.environ, environment, clear=False):
spec = importlib.util.spec_from_file_location('upstream_pr', SCRIPT)
cls.module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(cls.module)
def test_reuses_existing_pull_request(self):
existing = [{
'head': {'ref': self.module.HEAD},
'base': {'ref': self.module.TARGET},
'html_url': 'https://gitea.example.test/pulls/1',
}]
with patch.object(self.module, 'open_pulls', return_value=existing), \
patch.object(self.module, 'request') as request:
self.module.ensure_pull_request('a' * 40)
request.assert_not_called()
def test_creates_pull_request_with_review_target(self):
created = {'html_url': 'https://gitea.example.test/pulls/2'}
with patch.object(self.module, 'open_pulls', return_value=[]), \
patch.object(self.module, 'request', return_value=created) as request:
self.module.ensure_pull_request('b' * 40)
request.assert_called_once_with(
'POST', '/repos/tryton-do/tryton/pulls', ANY)
payload = request.call_args.args[2]
self.assertEqual(payload['head'], 'automation/upstream-8.0')
self.assertEqual(payload['base'], 'integration/8.0')
def test_reuses_existing_conflict_issue(self):
existing = [{
'title': 'Upstream Tryton 8.0 synchronization conflict',
'html_url': 'https://gitea.example.test/issues/1',
}]
with patch.object(self.module, 'request', return_value=existing) as request:
self.module.ensure_conflict_issue('trytond/file.py')
request.assert_called_once()
if __name__ == '__main__':
unittest.main()
+91
View File
@@ -0,0 +1,91 @@
#!/usr/bin/env python3
"""Create an idempotent Gitea pull request or conflict issue."""
from __future__ import annotations
import json
import os
import sys
import urllib.error
import urllib.parse
import urllib.request
BASE_URL = os.environ['GITEA_URL'].rstrip('/') + '/api/v1'
REPOSITORY = os.environ['CUSTOM_REPOSITORY']
TOKEN = os.environ['GITEA_TOKEN']
TARGET = os.environ['INTEGRATION_BRANCH']
HEAD = os.environ['UPDATE_BRANCH']
def request(method: str, path: str, payload: dict | None = None):
data = json.dumps(payload).encode() if payload is not None else None
req = urllib.request.Request(
f'{BASE_URL}{path}', data=data, method=method,
headers={
'Authorization': f'token {TOKEN}',
'Accept': 'application/json',
'Content-Type': 'application/json',
})
try:
with urllib.request.urlopen(req, timeout=30) as response:
return json.load(response)
except urllib.error.HTTPError as exc:
detail = exc.read().decode(errors='replace')
raise RuntimeError(f'Gitea API returned {exc.code}: {detail}') from exc
except urllib.error.URLError as exc:
raise RuntimeError(f'Could not reach the Gitea API: {exc.reason}') from exc
def open_pulls():
query = urllib.parse.urlencode({'state': 'open', 'limit': 50})
return request('GET', f'/repos/{REPOSITORY}/pulls?{query}')
def ensure_pull_request(upstream_sha: str) -> None:
for pull in open_pulls():
if pull['head']['ref'] == HEAD and pull['base']['ref'] == TARGET:
print(f"Using existing pull request: {pull['html_url']}")
return
pull = request('POST', f'/repos/{REPOSITORY}/pulls', {
'title': f'Upstream Tryton 8.0 update ({upstream_sha[:12]})',
'head': HEAD,
'base': TARGET,
'body': (
'Automated proposal from the private official mirror.\n\n'
'Review the upstream changes and wait for all required checks. '
'This pull request must be merged manually.'),
})
print(f"Created pull request: {pull['html_url']}")
def ensure_conflict_issue(conflicts: str) -> None:
title = 'Upstream Tryton 8.0 synchronization conflict'
query = urllib.parse.urlencode({'state': 'open', 'type': 'issues', 'limit': 50})
for issue in request('GET', f'/repos/{REPOSITORY}/issues?{query}'):
if issue['title'] == title:
print(f"Conflict issue already open: {issue['html_url']}")
return
issue = request('POST', f'/repos/{REPOSITORY}/issues', {
'title': title,
'body': (
'The scheduled synchronization could not merge the latest '
'official 8.0 changes. No branch was overwritten.\n\n'
f'Conflicting paths:\n```\n{conflicts or "unknown"}\n```'),
})
print(f"Created conflict issue: {issue['html_url']}")
def main() -> None:
if len(sys.argv) != 3:
raise SystemExit('usage: upstream_pr.py pull-request SHA | conflict PATHS')
if sys.argv[1] == 'pull-request':
ensure_pull_request(sys.argv[2])
elif sys.argv[1] == 'conflict':
ensure_conflict_issue(sys.argv[2])
else:
raise SystemExit('usage: upstream_pr.py pull-request SHA | conflict PATHS')
if __name__ == '__main__':
main()
+35
View File
@@ -0,0 +1,35 @@
#!/usr/bin/env python3
"""Validate every Gettext catalog changed or maintained in this repository."""
from __future__ import annotations
import sys
from pathlib import Path
import polib
def main() -> int:
failures: list[str] = []
catalogs = sorted(Path('.').glob('**/*.po'))
if not catalogs:
failures.append('no PO catalogs were found')
for path in catalogs:
try:
catalog = polib.pofile(path, check_for_duplicates=True)
except (OSError, UnicodeError, ValueError) as exc:
failures.append(f'{path}: {exc}')
continue
if not catalog.metadata.get('Content-Type', '').startswith('text/plain'):
failures.append(f'{path}: missing or invalid Content-Type metadata')
if failures:
print('\n'.join(failures), file=sys.stderr)
return 1
print(f'Validated {len(catalogs)} PO catalogs')
return 0
if __name__ == '__main__':
raise SystemExit(main())
@@ -1,6 +0,0 @@
include CHANGELOG
include COPYRIGHT
include LICENSE
include README.rst
include icons/LICENSE
graft doc
@@ -43,7 +43,7 @@ def get_info():
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
{%- endif %} {%- endif %}
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
{%- if not cookiecutter.prefix %} {%- if not cookiecutter.prefix %}
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
{%- endif %} {%- endif %}
@@ -68,14 +68,14 @@ dev-mode-dirs = ["."]
[tool.hatch.build.targets.wheel.sources] [tool.hatch.build.targets.wheel.sources]
{%- if cookiecutter.prefix %} {%- if cookiecutter.prefix %}
"" = "{{ cookiecutter.module_name }}" "" = "{{ cookiecutter.package_name }}"
{%- else %} {%- else %}
"" = "trytond/modules/{{ cookiecutter.module_name }}" "" = "trytond/modules/{{ cookiecutter.module_name }}"
{%- endif %} {%- endif %}
[tool.hatch.metadata.hooks.tryton] [tool.hatch.metadata.hooks.tryton]
{%- if cookiecutter.prefix %} {%- if cookiecutter.prefix %}
prefix = {} prefixes = {}
{%- endif %} {%- endif %}
dependencies = [] dependencies = []
copyright = 'COPYRIGHT' copyright = 'COPYRIGHT'
@@ -6,7 +6,7 @@ changedir = {env_site_packages_dir}
extras = test extras = test
commands = commands =
{%- if cookiecutter.prefix %} {%- if cookiecutter.prefix %}
coverage run --rcfile={toxinidir}/tox.ini --source={{ cookiecutter.module_name }} --omit=*/tests/* -m xmlrunner discover -s {{ cookiecutter.module_name }} {posargs} coverage run --rcfile={toxinidir}/tox.ini --source={{ cookiecutter.package_name }} --omit=*/tests/* -m xmlrunner discover -s {{ cookiecutter.package_name }} {posargs}
{%- else %} {%- else %}
coverage run --rcfile={toxinidir}/tox.ini --source=trytond.modules.{{ cookiecutter.module_name }} --omit=*/tests/* -m xmlrunner discover -s trytond.modules.{{ cookiecutter.module_name }} {posargs} coverage run --rcfile={toxinidir}/tox.ini --source=trytond.modules.{{ cookiecutter.module_name }} --omit=*/tests/* -m xmlrunner discover -s trytond.modules.{{ cookiecutter.module_name }} {posargs}
{%- endif %} {%- endif %}
@@ -16,7 +16,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -26,7 +26,7 @@ def activate_modules(config, modules):
for module in modules: for module in modules:
if module.state == 'activated': if module.state == 'activated':
module.click('upgrade') module.click('upgrade')
elif module.state != 'not activated': elif module.state == 'not activated':
module.click('activate') module.click('activate')
modules = [x.name for x in Module.find([('state', '=', 'to activate')])] modules = [x.name for x in Module.find([('state', '=', 'to activate')])]
Wizard('ir.module.activate_upgrade').execute('upgrade') Wizard('ir.module.activate_upgrade').execute('upgrade')
+1
View File
@@ -36,6 +36,7 @@ def setup(config, modules, company):
payments = random.sample(payments, len(payments) * 2 // 3) payments = random.sample(payments, len(payments) * 2 // 3)
for payment in payments: for payment in payments:
payment.click('submit')
payment.click('approve') payment.click('approve')
payments = random.sample(payments, len(payments) * 2 // 3) payments = random.sample(payments, len(payments) * 2 // 3)
+1 -1
View File
@@ -41,7 +41,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
info['modules'] = [ info['modules'] = [
+2 -1
View File
@@ -79,9 +79,10 @@ After
]) ])
for mandate in mandates: for mandate in mandates:
mandate.address = mandate.on_change_party() mandate.on_change_party()
Mandate.save(mandates) Mandate.save(mandates)
transaction.commit()
.. _migration-7.6: .. _migration-7.6:
+85
View File
@@ -0,0 +1,85 @@
# Tryton private mirror and customization operations
## Repository roles
- `tryton-do/tryton-mirror` is a private pull mirror of
`https://github.com/tryton/tryton`. Never develop or create custom references
in this repository.
- `tryton-do/tryton` preserves the upstream history and contains reviewed local
changes.
## Branches
- `8.0`: protected production branch for the 8.0 LTS series.
- `integration/8.0`: protected target for automated upstream proposals.
- `feature/*`: short-lived application changes.
- `translation/*`: short-lived translation changes.
- `8.2`: evaluation branch for the current non-LTS series; it is not deployed.
- `automation/upstream-8.0`: bot-managed, fast-forward-only proposal branch.
Production changes flow through `translation/*` or `feature/*` into
`integration/8.0`, then through a second reviewed pull request into `8.0`.
Direct pushes and force pushes to the protected branches are forbidden.
## Remotes for developers
```console
git remote add origin https://code.unpaismejor.org.do/tryton-do/tryton.git
git remote add mirror https://code.unpaismejor.org.do/tryton-do/tryton-mirror.git
git remote add upstream https://github.com/tryton/tryton.git
```
Gitea Actions uses its short-lived, repository-scoped `GITEA_TOKEN`. The
organization grants that token read-only cross-repository access to
`tryton-mirror`; no long-lived personal access token is stored. The GitHub
`upstream` remote is for diagnostics and disaster recovery.
## Translation workflow
The Tryton server owns `es_DO` as a standalone language; its database record
does not declare `es_419` (or any other locale) as parent. Complete Dominican
translations live beside each package in its regular `locale/es_DO.po`
catalog. The initial catalogs were bootstrapped from `es_419`, but they are now
independent and Dominican terminology is maintained directly in them. There is
no duplicated localization module or runtime dependency on one.
Weblate must push through a dedicated `translation/weblate-8.0` branch and a
reviewed pull request to `integration/8.0`; it must never push directly to a
protected branch. Gitea sends push notifications to
`https://translate.tryton.org.do/hooks/gitea/` so Weblate can pull source
changes promptly. CI validates every PO catalog and the server package before
the pull request can be merged.
When a catalog changes, update the database with:
```console
trytond-admin -d DATABASE --all --activate-dependencies
```
Activate Spanish (Dominican Republic) as a translatable language, then update
the activated modules to import any new `es_DO.po` catalogs delivered by
Weblate. Activating Spanish (Latin American) is not required for `es_DO`.
## Resolving an upstream conflict
1. Fetch `mirror/8.0` and the target branch.
2. Create a new `feature/upstream-conflict-YYYYMMDD` branch from
`integration/8.0`.
3. Merge `mirror/8.0` without rebasing published custom commits.
4. Resolve only the reported paths, run CI locally, and push the branch.
5. Open a reviewed pull request into `integration/8.0`.
6. Close the automation conflict issue only after the pull request is merged.
Never force-push an integration, production, or automation branch.
## Recovery
If the native mirror stops updating, keep `tryton` unchanged, inspect the
mirror synchronization error, and trigger a manual mirror update. If the
mirror repository is unrecoverable, create a new private pull mirror under a
temporary name, verify branches and tags against GitHub, and only then update
the workflow repository URL and cross-repository allowlist. Do not delete the
previous mirror until the replacement is verified.
If an integration proposal is wrong, close its pull request and delete only
its `automation/*` branch. Protected branches and their history remain intact.
+15
View File
@@ -1,4 +1,19 @@
Version 8.0.3 - 2026-07-15
--------------------------
* Bug fixes (see mercurial logs for details)
Version 8.0.2 - 2026-07-01
--------------------------
* Bug fixes (see mercurial logs for details)
Version 8.0.1 - 2026-06-18
--------------------------
* Bug fixes (see mercurial logs for details)
Version 8.0.0 - 2026-04-20 Version 8.0.0 - 2026-04-20
-------------------------- --------------------------
* Bug fixes (see mercurial logs for details) * Bug fixes (see mercurial logs for details)
+1 -1
View File
@@ -1347,7 +1347,7 @@ class Account(
childs = [self] childs = [self]
while childs: while childs:
for child in childs: for child in childs:
if not child.template: if not child.template or child.template_override:
continue continue
values = {} values = {}
tax_ids = [template2tax[x.id] for x in child.template.taxes tax_ids = [template2tax[x.id] for x in child.template.taxes
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+2 -2
View File
@@ -521,8 +521,8 @@
<text:p text:style-name="Table_20_Heading">Date:<text:line-break/> <text:placeholder text:placeholder-type="text">&lt;format_date(move.date, user.language)&gt;</text:placeholder></text:p> <text:p text:style-name="Table_20_Heading">Date:<text:line-break/> <text:placeholder text:placeholder-type="text">&lt;format_date(move.date, user.language)&gt;</text:placeholder></text:p>
</table:table-cell> </table:table-cell>
<table:table-cell table:style-name="Table4.C1" office:value-type="string"> <table:table-cell table:style-name="Table4.C1" office:value-type="string">
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text">&lt;if test=&quot;move.origin&quot;&gt;</text:placeholder></text:p> <text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text">&lt;if test=&quot;move.origin and hasattr(move.origin, 'rec_name')&quot;&gt;</text:placeholder></text:p>
<text:p text:style-name="Table_20_Heading">Origin:<text:line-break/><text:placeholder text:placeholder-type="text">&lt;getattr(move.origin, &apos;rec_name&apos;, &apos;&apos;)&gt;</text:placeholder></text:p> <text:p text:style-name="Table_20_Heading">Origin:<text:line-break/><text:placeholder text:placeholder-type="text">&lt;move.origin.rec_name&gt;</text:placeholder></text:p>
<text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text">&lt;/if&gt;</text:placeholder></text:p> <text:p text:style-name="Table_20_Heading"><text:placeholder text:placeholder-type="text">&lt;/if&gt;</text:placeholder></text:p>
</table:table-cell> </table:table-cell>
<table:table-cell table:style-name="Table4.D1" table:number-columns-spanned="2" office:value-type="string"> <table:table-cell table:style-name="Table4.D1" table:number-columns-spanned="2" office:value-type="string">
+1 -1
View File
@@ -913,7 +913,7 @@
<text:p text:style-name="Table_20_Contents"><text:placeholder text:placeholder-type="text">&lt;line.description or &apos;&apos;&gt;</text:placeholder></text:p> <text:p text:style-name="Table_20_Contents"><text:placeholder text:placeholder-type="text">&lt;line.description or &apos;&apos;&gt;</text:placeholder></text:p>
</table:table-cell> </table:table-cell>
<table:table-cell table:style-name="Lines.G6" office:value-type="string"> <table:table-cell table:style-name="Lines.G6" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:placeholder text:placeholder-type="text">&lt;getattr(line.origin, &apos;rec_name&apos;, &apos;&apos;)&gt;</text:placeholder></text:p> <text:p text:style-name="Table_20_Contents"><text:placeholder text:placeholder-type="text">&lt;line.origin and line.origin.rec_name or &apos;&apos;&gt;</text:placeholder></text:p>
</table:table-cell> </table:table-cell>
</table:table-row> </table:table-row>
<text:soft-page-break/> <text:soft-page-break/>
File diff suppressed because it is too large Load Diff
+12 -7
View File
@@ -1400,7 +1400,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView):
@classmethod @classmethod
def validate_fields(cls, lines, field_names): def validate_fields(cls, lines, field_names):
super().validate(lines) super().validate_fields(lines, field_names)
cls.check_account(lines, field_names) cls.check_account(lines, field_names)
@classmethod @classmethod
@@ -1573,8 +1573,9 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView):
('company', '=', company), ('company', '=', company),
('journal', '=', journal), ('journal', '=', journal),
]) ])
toolbar = dict(toolbar)
action = list(toolbar['action'])
for template in templates: for template in templates:
action = toolbar['action']
# Use template id for action id to auto-select the template # Use template id for action id to auto-select the template
action.append({ action.append({
'name': template.name, 'name': template.name,
@@ -1582,6 +1583,7 @@ class Line(DescriptionOriginMixin, MoveLineMixin, ModelSQL, ModelView):
'wiz_name': 'account.move.template.create', 'wiz_name': 'account.move.template.create',
'id': template.id, 'id': template.id,
}) })
toolbar['action'] = action
return toolbar return toolbar
@classmethod @classmethod
@@ -2030,14 +2032,17 @@ class OpenJournal(Wizard):
('period', '=', period.id), ('period', '=', period.id),
], limit=1) ], limit=1)
if not journal_periods: if not journal_periods:
journal_period, = JournalPeriod.create([{ with Transaction().new_transaction():
'journal': journal.id, journal_period, = JournalPeriod.create([{
'period': period.id, 'journal': journal.id,
}]) 'period': period.id,
}])
name = journal_period.rec_name
else: else:
journal_period, = journal_periods journal_period, = journal_periods
name = journal_period.rec_name
action['name'] += ' (%s)' % journal_period.rec_name action['name'] += ' (%s)' % name
action['pyson_domain'] = PYSONEncoder().encode([ action['pyson_domain'] = PYSONEncoder().encode([
('journal', '=', journal.id), ('journal', '=', journal.id),
('period', '=', period.id), ('period', '=', period.id),
+2 -2
View File
@@ -8,7 +8,7 @@ from itertools import cycle, groupby
from sql import Literal from sql import Literal
from sql.aggregate import Sum from sql.aggregate import Sum
from sql.conditionals import Case from sql.conditionals import Case, Coalesce
from trytond import backend from trytond import backend
from trytond.i18n import gettext from trytond.i18n import gettext
@@ -164,7 +164,7 @@ class TaxCode(
super().__setup__() super().__setup__()
t = cls.__table__() t = cls.__table__()
cls._sql_indexes.add( cls._sql_indexes.add(
Index(t, (t.code, Index.Similarity()))) Index(t, (Coalesce(t.code, ''), Index.Similarity())))
for date in [cls.start_date, cls.end_date]: for date in [cls.start_date, cls.end_date]:
date.states = { date.states = {
'readonly': (Bool(Eval('template', -1)) 'readonly': (Bool(Eval('template', -1))
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.4
depends: depends:
company company
currency currency
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+864
View File
@@ -0,0 +1,864 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:account.account.type,fixed_asset:"
msgid "Fixed Asset"
msgstr "Activo Fijo"
msgctxt "field:account.account.type.template,fixed_asset:"
msgid "Fixed Asset"
msgstr "Activo Fijo"
msgctxt "field:account.asset,account_journal:"
msgid "Journal"
msgstr "Libro diario"
msgctxt "field:account.asset,comment:"
msgid "Comment"
msgstr "Comentario"
msgctxt "field:account.asset,company:"
msgid "Company"
msgstr "Empresa"
#, fuzzy
msgctxt "field:account.asset,currency:"
msgid "Currency"
msgstr "Decimales de la moneda"
msgctxt "field:account.asset,customer_invoice_line:"
msgid "Customer Invoice Line"
msgstr "Línea de factura de cliente"
#, fuzzy
msgctxt "field:account.asset,depreciated_amount:"
msgid "Depreciated Amount"
msgstr "Cuenta de depreciación"
#, fuzzy
msgctxt "field:account.asset,depreciating_value:"
msgid "Depreciating Value"
msgstr "Depreciación"
msgctxt "field:account.asset,depreciation_method:"
msgid "Depreciation Method"
msgstr "Método de depreciación"
msgctxt "field:account.asset,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:account.asset,frequency:"
msgid "Frequency"
msgstr "Frecuencia"
msgctxt "field:account.asset,lines:"
msgid "Lines"
msgstr "Líneas"
msgctxt "field:account.asset,move:"
msgid "Account Move"
msgstr ""
msgctxt "field:account.asset,number:"
msgid "Number"
msgstr "Número"
msgctxt "field:account.asset,product:"
msgid "Product"
msgstr "Producto"
msgctxt "field:account.asset,purchase_date:"
msgid "Purchase Date"
msgstr "Fecha de compra"
msgctxt "field:account.asset,quantity:"
msgid "Quantity"
msgstr "Cantidad"
msgctxt "field:account.asset,residual_value:"
msgid "Residual Value"
msgstr "Valor residual"
msgctxt "field:account.asset,revisions:"
msgid "Revisions"
msgstr ""
msgctxt "field:account.asset,start_date:"
msgid "Start Date"
msgstr "Fecha inicial"
msgctxt "field:account.asset,state:"
msgid "State"
msgstr "Estado"
msgctxt "field:account.asset,supplier_invoice_line:"
msgid "Supplier Invoice Line"
msgstr "Línea de factura de proveedor"
msgctxt "field:account.asset,unit:"
msgid "Unit"
msgstr ""
msgctxt "field:account.asset,update_moves:"
msgid "Update Moves"
msgstr ""
msgctxt "field:account.asset,value:"
msgid "Value"
msgstr ""
msgctxt "field:account.asset-update-account.move,asset:"
msgid "Asset"
msgstr "Activo Fijo"
msgctxt "field:account.asset-update-account.move,move:"
msgid "Move"
msgstr ""
msgctxt "field:account.asset.create_moves.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:account.asset.line,accumulated_depreciation:"
msgid "Accumulated Depreciation"
msgstr "Depreciación acumulada"
msgctxt "field:account.asset.line,acquired_value:"
msgid "Acquired Value"
msgstr "Valor de adquisición"
msgctxt "field:account.asset.line,actual_value:"
msgid "Actual Value"
msgstr "Valor actual"
msgctxt "field:account.asset.line,asset:"
msgid "Asset"
msgstr "Activo fijo"
#, fuzzy
msgctxt "field:account.asset.line,currency:"
msgid "Currency"
msgstr "Decimales de la moneda"
msgctxt "field:account.asset.line,date:"
msgid "Date"
msgstr ""
msgctxt "field:account.asset.line,depreciable_basis:"
msgid "Depreciable Basis"
msgstr "Base de depreciación"
msgctxt "field:account.asset.line,depreciation:"
msgid "Depreciation"
msgstr "Depreciación"
msgctxt "field:account.asset.line,move:"
msgid "Account Move"
msgstr ""
msgctxt "field:account.asset.print_depreciation_table.start,end_date:"
msgid "End Date"
msgstr ""
#, fuzzy
msgctxt "field:account.asset.print_depreciation_table.start,start_date:"
msgid "Start Date"
msgstr "Fecha inicial"
#, fuzzy
msgctxt "field:account.asset.revision,asset:"
msgid "Asset"
msgstr "Activo Fijo"
#, fuzzy
msgctxt "field:account.asset.revision,currency:"
msgid "Currency"
msgstr "Decimales de la moneda"
#, fuzzy
msgctxt "field:account.asset.revision,description:"
msgid "Description"
msgstr "Depreciación"
msgctxt "field:account.asset.revision,end_date:"
msgid "End Date"
msgstr ""
msgctxt "field:account.asset.revision,origin:"
msgid "Origin"
msgstr ""
#, fuzzy
msgctxt "field:account.asset.revision,residual_value:"
msgid "Residual Value"
msgstr "Valor residual"
#, fuzzy
msgctxt "field:account.asset.revision,value:"
msgid "Asset Value"
msgstr "Valor de activo fijo"
msgctxt "field:account.asset.update.show_depreciation,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:account.asset.update.show_depreciation,counterpart_account:"
msgid "Counterpart Account"
msgstr ""
msgctxt "field:account.asset.update.show_depreciation,date:"
msgid "Date"
msgstr ""
msgctxt "field:account.asset.update.show_depreciation,depreciation_account:"
msgid "Depreciation Account"
msgstr "Cuenta de depreciación"
msgctxt "field:account.asset.update.show_depreciation,latest_move_date:"
msgid "Latest Move Date"
msgstr "Última fecha de asiento"
msgctxt "field:account.asset.update.show_depreciation,next_depreciation_date:"
msgid "Next Depreciation Date"
msgstr "Siguiente fecha de depreciación"
msgctxt "field:account.configuration,asset_bymonth:"
msgid "Month"
msgstr ""
msgctxt "field:account.configuration,asset_bymonthday:"
msgid "Day of the Month"
msgstr ""
#, fuzzy
msgctxt "field:account.configuration,asset_frequency:"
msgid "Asset Depreciation Frequency"
msgstr "Tabla de depreciación de activo fijo - Inicio"
#, fuzzy
msgctxt "field:account.configuration,asset_sequence:"
msgid "Asset Sequence"
msgstr "Secuencia de activo fijo"
msgctxt "field:account.configuration.asset_date,asset_bymonth:"
msgid "Month"
msgstr ""
msgctxt "field:account.configuration.asset_date,asset_bymonthday:"
msgid "Day of the Month"
msgstr ""
#, fuzzy
msgctxt "field:account.configuration.asset_date,company:"
msgid "Company"
msgstr "Empresa"
#, fuzzy
msgctxt "field:account.configuration.asset_frequency,asset_frequency:"
msgid "Asset Depreciation Frequency"
msgstr "Tabla de depreciación de activo fijo - Inicio"
#, fuzzy
msgctxt "field:account.configuration.asset_frequency,company:"
msgid "Company"
msgstr "Empresa"
#, fuzzy
msgctxt "field:account.configuration.asset_sequence,asset_sequence:"
msgid "Asset Reference Sequence"
msgstr "Secuencia de activo fijo"
#, fuzzy
msgctxt "field:account.configuration.asset_sequence,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:account.invoice.line,asset:"
msgid "Asset"
msgstr "Activo Fijo"
msgctxt "field:account.invoice.line,is_assets_depreciable:"
msgid "Is Assets depreciable"
msgstr "Es activo fijo depreciable"
msgctxt "field:product.category,account_asset:"
msgid "Account Asset"
msgstr "Cuenta de activo fijo"
msgctxt "field:product.category,account_depreciation:"
msgid "Account Depreciation"
msgstr "Cuenta de depreciación"
#, fuzzy
msgctxt "field:product.category.account,account_asset:"
msgid "Account Asset"
msgstr "Cuenta de activo fijo"
#, fuzzy
msgctxt "field:product.category.account,account_depreciation:"
msgid "Account Depreciation"
msgstr "Cuenta de depreciación"
msgctxt "field:product.product,depreciable:"
msgid "Depreciable"
msgstr "Depreciable"
msgctxt "field:product.product,depreciation_duration:"
msgid "Depreciation Duration"
msgstr "Duración de la depreciación"
msgctxt "field:product.template,depreciable:"
msgid "Depreciable"
msgstr "Depreciable"
msgctxt "field:product.template,depreciation_duration:"
msgid "Depreciation Duration"
msgstr "Duración de la depreciación"
msgctxt "help:account.asset,depreciated_amount:"
msgid "The amount already depreciated at the start date."
msgstr ""
msgctxt "help:account.asset,depreciating_value:"
msgid "The value of the asset at the start date."
msgstr ""
msgctxt "help:account.asset,value:"
msgid "The value of the asset when purchased."
msgstr ""
msgctxt "help:account.asset.update.show_depreciation,date:"
msgid ""
"The date must be between the last update/depreciation date and the next "
"depreciation date."
msgstr ""
"La fecha debe estar entre la última fecha de actualización/depreciación y la"
" siguiente fecha de depreciación."
msgctxt "help:account.configuration,asset_bymonth:"
msgid "The month to create the depreciation moves."
msgstr ""
msgctxt "help:account.configuration,asset_bymonthday:"
msgid "The day of the month to create the depreciation moves."
msgstr ""
msgctxt "help:account.configuration,asset_frequency:"
msgid "The default depreciation frequency for new assets."
msgstr ""
msgctxt "help:account.configuration.asset_date,asset_bymonth:"
msgid "The month to create the depreciation moves."
msgstr ""
msgctxt "help:account.configuration.asset_date,asset_bymonthday:"
msgid "The day of the month to create the depreciation moves."
msgstr ""
msgctxt "help:account.configuration.asset_frequency,asset_frequency:"
msgid "The default depreciation frequency for new assets."
msgstr ""
msgctxt "help:product.product,depreciation_duration:"
msgid "In months"
msgstr ""
msgctxt "help:product.template,depreciation_duration:"
msgid "In months"
msgstr ""
#, fuzzy
msgctxt "model:account.asset,string:"
msgid "Account Asset"
msgstr "Cuenta de activo fijo"
#, fuzzy
msgctxt "model:account.asset-update-account.move,string:"
msgid "Account Asset - Update - Account Move"
msgstr "Activo fijo - Actualizar - Asiento"
msgctxt "model:account.asset.create_moves.start,string:"
msgid "Account Asset Create Moves Start"
msgstr ""
#, fuzzy
msgctxt "model:account.asset.line,string:"
msgid "Account Asset Line"
msgstr "Cuenta de activo fijo"
#, fuzzy
msgctxt "model:account.asset.print_depreciation_table.start,string:"
msgid "Account Asset Print Depreciation Table Start"
msgstr "Tabla de depreciación de activo fijo - Inicio"
#, fuzzy
msgctxt "model:account.asset.revision,string:"
msgid "Account Asset Revision"
msgstr "Línea de activo fijo"
#, fuzzy
msgctxt "model:account.asset.update.show_depreciation,string:"
msgid "Account Asset Update Show Depreciation"
msgstr "Actualizar activo fijo - Mostrar depreciación"
msgctxt "model:account.configuration.asset_date,string:"
msgid "Account Configuration Asset Date"
msgstr ""
msgctxt "model:account.configuration.asset_frequency,string:"
msgid "Account Configuration Asset Frequency"
msgstr ""
msgctxt "model:account.configuration.asset_sequence,string:"
msgid "Account Configuration Asset Sequence"
msgstr ""
#, fuzzy
msgctxt "model:account.journal,name:journal_asset"
msgid "Asset"
msgstr "Activo Fijo"
#, fuzzy
msgctxt "model:ir.action,name:act_asset_form"
msgid "Assets"
msgstr "Activo fijo"
msgctxt "model:ir.action,name:report_depreciation_table"
msgid "Depreciation Table"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:wizard_create_moves"
msgid "Create Assets Moves"
msgstr "Crear asientos de activo fijo hasta"
msgctxt "model:ir.action,name:wizard_print_depreciation_table"
msgid "Print Depreciation Table"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:wizard_update"
msgid "Update Asset"
msgstr "Actuzalizar activo fijo"
msgctxt "model:ir.action.act_window.domain,name:act_asset_form_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.action.act_window.domain,name:act_asset_form_domain_closed"
msgid "Closed"
msgstr ""
msgctxt "model:ir.action.act_window.domain,name:act_asset_form_domain_draft"
msgid "Draft"
msgstr ""
msgctxt "model:ir.action.act_window.domain,name:act_asset_form_domain_running"
msgid "Running"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_asset_close_invoice_line_missing_account"
msgid ""
"To close asset \"%(asset)s\" you must configure a replacement account for "
"\"%(account)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_asset_close_product_account_asset"
msgid ""
"To close asset \"%(asset)s\" you must configure an account asset for the "
"product \"%(product)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_asset_delete_draft"
msgid "You cannot delete asset \"%(asset)s\" because it is not in \"draft\" state."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_asset_draft_lines"
msgid "You cannot reset to draft asset \"%(asset)s\" because it has lines."
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_asset_invoice_line_unique"
msgid "Invoice line can be used only once on asset."
msgstr ""
"La línea de factura de proveedor puede ser utilizada una sola vez en un "
"activo."
#, python-format
msgctxt "model:ir.message,text:msg_asset_running_close_period"
msgid ""
"You cannot close period \"%(period)s\" because some assets \"%(assets)s\" "
"still have lines without move."
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_invoice_line_asset_unique"
msgid "Asset can be used only once on invoice line."
msgstr "El activo sólo se puede usar una vez en la línea de factura."
msgctxt "model:ir.message,text:msg_no_assets"
msgid "There is no started asset."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_purchase_product_missing_account_asset"
msgid ""
"To invoice purchase \"%(purchase)s\", you must set an account asset on "
"product \"%(product)s\"."
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_revision_asset_origin_unique"
msgid "A revision origin can be used only once per asset."
msgstr ""
"La línea de factura de proveedor puede ser utilizada una sola vez en un "
"activo."
msgctxt "model:ir.model.button,confirm:asset_close_button"
msgid "Are you sure you want to close the asset?"
msgstr ""
msgctxt "model:ir.model.button,string:asset_clear_lines_button"
msgid "Clear Lines"
msgstr ""
msgctxt "model:ir.model.button,string:asset_close_button"
msgid "Close"
msgstr ""
msgctxt "model:ir.model.button,string:asset_create_lines_button"
msgid "Create Lines"
msgstr ""
msgctxt "model:ir.model.button,string:asset_draft_button"
msgid "Draft"
msgstr ""
msgctxt "model:ir.model.button,string:asset_run_button"
msgid "Run"
msgstr ""
#, fuzzy
msgctxt "model:ir.model.button,string:asset_update_button"
msgid "Update Asset"
msgstr "Actuzalizar activo fijo"
msgctxt "model:ir.rule.group,name:rule_group_asset_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.sequence,name:sequence_asset"
msgid "Asset"
msgstr "Activo Fijo"
#, fuzzy
msgctxt "model:ir.sequence.type,name:sequence_type_asset"
msgid "Asset"
msgstr "Activo Fijo"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_asset"
msgid "Assets"
msgstr "Activo fijo"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_asset_form"
msgid "Assets"
msgstr "Activo fijo"
msgctxt "model:ir.ui.menu,name:menu_create_depreciation_table"
msgid "Print Depreciation Table"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_create_moves"
msgid "Create Assets Moves"
msgstr "Crear asientos de activo fijo hasta"
msgctxt "report:account.asset.depreciation_table:"
msgid "("
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid ")"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "+"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "-"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "/"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "Actual Value"
msgstr "Valor real"
msgctxt "report:account.asset.depreciation_table:"
msgid "Amortization"
msgstr "Depreciación"
msgctxt "report:account.asset.depreciation_table:"
msgid "Amortization Table"
msgstr "Tabla de depreciación"
msgctxt "report:account.asset.depreciation_table:"
msgid "Assets"
msgstr "Activo fijo"
msgctxt "report:account.asset.depreciation_table:"
msgid "Closing Value"
msgstr "Valor de cierre"
#, fuzzy
msgctxt "report:account.asset.depreciation_table:"
msgid "Company:"
msgstr "Empresa"
msgctxt "report:account.asset.depreciation_table:"
msgid "Fixed"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "From:"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "Print Date:"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "To:"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "Total -"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "User:"
msgstr ""
msgctxt "report:account.asset.depreciation_table:"
msgid "at"
msgstr ""
msgctxt "selection:account.asset,depreciation_method:"
msgid "Linear"
msgstr ""
msgctxt "selection:account.asset,frequency:"
msgid "Monthly"
msgstr ""
msgctxt "selection:account.asset,frequency:"
msgid "Yearly"
msgstr ""
msgctxt "selection:account.asset,state:"
msgid "Closed"
msgstr ""
msgctxt "selection:account.asset,state:"
msgid "Draft"
msgstr ""
msgctxt "selection:account.asset,state:"
msgid "Running"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "April"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "August"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "December"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "February"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "January"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "July"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "June"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "March"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "May"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "November"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "October"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonth:"
msgid "September"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonthday:"
msgid "First"
msgstr ""
msgctxt "selection:account.configuration,asset_bymonthday:"
msgid "Last"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "April"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "August"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "December"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "February"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "January"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "July"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "June"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "March"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "May"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "November"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "October"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonth:"
msgid "September"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonthday:"
msgid "First"
msgstr ""
msgctxt "selection:account.configuration.asset_date,asset_bymonthday:"
msgid "Last"
msgstr ""
#, fuzzy
msgctxt "selection:account.journal,type:"
msgid "Asset"
msgstr "Activo Fijo"
msgctxt "view:account.asset.create_moves.start:"
msgid "Create Assets Moves up to"
msgstr "Crear asientos de activo fijo hasta"
#, fuzzy
msgctxt "view:account.asset:"
msgid "Lines"
msgstr "Líneas"
msgctxt "view:account.asset:"
msgid "Other Info"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Asset"
msgstr "Activo fijo"
msgctxt "view:account.configuration:"
msgid "Asset Move"
msgstr ""
#, fuzzy
msgctxt "view:account.configuration:"
msgid "Depreciation Frequency"
msgstr "Cuenta de depreciación"
msgctxt "view:account.configuration:"
msgid "Sequence"
msgstr "Secuencia"
msgctxt "view:product.template:"
msgid "Depreciation"
msgstr "Depreciación"
msgctxt "wizard_button:account.asset.create_moves,start,create_moves:"
msgid "OK"
msgstr ""
msgctxt "wizard_button:account.asset.create_moves,start,end:"
msgid "Cancel"
msgstr ""
msgctxt "wizard_button:account.asset.print_depreciation_table,start,end:"
msgid "Cancel"
msgstr ""
msgctxt "wizard_button:account.asset.print_depreciation_table,start,print_:"
msgid "Print"
msgstr ""
msgctxt "wizard_button:account.asset.update,show_move,create_move:"
msgid "OK"
msgstr ""
msgctxt "wizard_button:account.asset.update,show_move,end:"
msgid "Cancel"
msgstr ""
msgctxt "wizard_button:account.asset.update,start,end:"
msgid "Cancel"
msgstr ""
msgctxt "wizard_button:account.asset.update,start,update_asset:"
msgid "OK"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
ir ir
res res
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+59
View File
@@ -0,0 +1,59 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.be.vat_customer,company_tax_identifier:"
msgid "Company Tax Identifier"
msgstr ""
msgctxt "field:account.be.vat_customer,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.be.vat_customer,party_tax_identifier:"
msgid "Party Tax Identifier"
msgstr ""
msgctxt "field:account.be.vat_customer,turnover:"
msgid "Turnover"
msgstr ""
msgctxt "field:account.be.vat_customer,vat:"
msgid "VAT"
msgstr ""
msgctxt "field:account.be.vat_customer.context,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.be.vat_customer.context,fiscalyear:"
msgid "Fiscal Year"
msgstr ""
#, fuzzy
msgctxt "model:account.be.vat_customer,string:"
msgid "Account Be Vat Customer"
msgstr "Belgium VAT Customer"
#, fuzzy
msgctxt "model:account.be.vat_customer.context,string:"
msgid "Account Be Vat Customer Context"
msgstr "Belgium VAT Customer"
#, fuzzy
msgctxt "model:ir.action,name:act_vat_customer_form"
msgid "Belgian VAT Customer"
msgstr "Belgium VAT Customer"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_vat_customer"
msgid "Belgian VAT Customer"
msgstr "Belgium VAT Customer"
msgctxt "selection:account.invoice,supplier_payment_reference_type:"
msgid "Belgian structured communication"
msgstr ""
msgctxt "selection:account.payment,reference_type:"
msgid "Belgian structured communication"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
account_eu account_eu
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+372
View File
@@ -0,0 +1,372 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.budget,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.budget,fiscalyear:"
msgid "Fiscal Year"
msgstr ""
msgctxt "field:account.budget,lines:"
msgid "Lines"
msgstr ""
msgctxt "field:account.budget,name:"
msgid "Name"
msgstr ""
msgctxt "field:account.budget,root_lines:"
msgid "Lines"
msgstr ""
msgctxt "field:account.budget.context,budget:"
msgid "Budget"
msgstr ""
msgctxt "field:account.budget.context,fiscalyear:"
msgid "Fiscal Year"
msgstr ""
msgctxt "field:account.budget.context,periods:"
msgid "Periods"
msgstr ""
msgctxt "field:account.budget.context,posted:"
msgid "Posted"
msgstr ""
msgctxt "field:account.budget.copy.start,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.budget.copy.start,factor:"
msgid "Factor"
msgstr ""
msgctxt "field:account.budget.copy.start,fiscalyear:"
msgid "Fiscal Year"
msgstr ""
msgctxt "field:account.budget.copy.start,name:"
msgid "Name"
msgstr ""
msgctxt "field:account.budget.line,account:"
msgid "Account"
msgstr ""
msgctxt "field:account.budget.line,account_type:"
msgid "Account Type"
msgstr ""
msgctxt "field:account.budget.line,actual_amount:"
msgid "Actual Amount"
msgstr ""
msgctxt "field:account.budget.line,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:account.budget.line,budget:"
msgid "Budget"
msgstr ""
msgctxt "field:account.budget.line,children:"
msgid "Children"
msgstr ""
msgctxt "field:account.budget.line,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.budget.line,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.budget.line,current_name:"
msgid "Current Name"
msgstr ""
msgctxt "field:account.budget.line,left:"
msgid "Left"
msgstr ""
msgctxt "field:account.budget.line,name:"
msgid "Name"
msgstr ""
msgctxt "field:account.budget.line,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:account.budget.line,parent_account_type:"
msgid "Parent Account Type"
msgstr ""
msgctxt "field:account.budget.line,percentage:"
msgid "Percentage"
msgstr ""
msgctxt "field:account.budget.line,periods:"
msgid "Periods"
msgstr ""
msgctxt "field:account.budget.line,right:"
msgid "Right"
msgstr ""
msgctxt "field:account.budget.line,total_amount:"
msgid "Total Amount"
msgstr ""
msgctxt "field:account.budget.line.create_periods.start,method:"
msgid "Method"
msgstr ""
msgctxt "field:account.budget.line.period,actual_amount:"
msgid "Actual Amount"
msgstr ""
msgctxt "field:account.budget.line.period,budget_line:"
msgid "Budget Line"
msgstr ""
msgctxt "field:account.budget.line.period,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.budget.line.period,fiscalyear:"
msgid "Fiscal Year"
msgstr ""
msgctxt "field:account.budget.line.period,percentage:"
msgid "Percentage"
msgstr ""
msgctxt "field:account.budget.line.period,period:"
msgid "Period"
msgstr ""
msgctxt "field:account.budget.line.period,ratio:"
msgid "Ratio"
msgstr ""
msgctxt "field:account.budget.line.period,total_amount:"
msgid "Total Amount"
msgstr ""
msgctxt "help:account.budget,company:"
msgid "The company that the budget is associated with."
msgstr ""
msgctxt "help:account.budget,fiscalyear:"
msgid "The fiscal year the budget applies to."
msgstr ""
msgctxt "help:account.budget.context,posted:"
msgid "Only include posted moves."
msgstr ""
msgctxt "help:account.budget.copy.start,factor:"
msgid "The percentage to apply to the budget line amounts."
msgstr ""
msgctxt "help:account.budget.copy.start,fiscalyear:"
msgid "The fiscal year during which the new budget will apply."
msgstr ""
msgctxt "help:account.budget.line,account:"
msgid "The account the budget applies to."
msgstr ""
msgctxt "help:account.budget.line,account_type:"
msgid "The account type the budget applies to."
msgstr ""
msgctxt "help:account.budget.line,actual_amount:"
msgid "The total amount booked against the budget line."
msgstr ""
msgctxt "help:account.budget.line,amount:"
msgid "The amount allocated to the budget line."
msgstr ""
msgctxt "help:account.budget.line,children:"
msgid "Used to add structure below the budget."
msgstr ""
msgctxt "help:account.budget.line,parent:"
msgid "Used to add structure above the budget."
msgstr ""
msgctxt "help:account.budget.line,percentage:"
msgid "The percentage of booked amount of the budget line."
msgstr ""
msgctxt "help:account.budget.line,periods:"
msgid "The periods that contain details of the budget."
msgstr ""
msgctxt "help:account.budget.line,total_amount:"
msgid "The total amount allocated to the budget line and its children."
msgstr ""
msgctxt "help:account.budget.line.period,actual_amount:"
msgid "The total amount booked against the budget line."
msgstr ""
msgctxt "help:account.budget.line.period,budget_line:"
msgid "The line that the budget period is part of."
msgstr ""
msgctxt "help:account.budget.line.period,percentage:"
msgid "The percentage of booked amount of the budget line."
msgstr ""
msgctxt "help:account.budget.line.period,ratio:"
msgid "The percentage allocated to the budget."
msgstr ""
msgctxt "help:account.budget.line.period,total_amount:"
msgid "The total amount allocated to the budget and its children."
msgstr ""
msgctxt "model:account.budget,string:"
msgid "Account Budget"
msgstr ""
msgctxt "model:account.budget.context,string:"
msgid "Account Budget Context"
msgstr ""
msgctxt "model:account.budget.copy.start,string:"
msgid "Account Budget Copy Start"
msgstr ""
msgctxt "model:account.budget.line,string:"
msgid "Account Budget Line"
msgstr ""
msgctxt "model:account.budget.line.create_periods.start,string:"
msgid "Account Budget Line Create Periods Start"
msgstr ""
msgctxt "model:account.budget.line.period,string:"
msgid "Account Budget Line Period"
msgstr ""
msgctxt "model:ir.action,name:act_budget_form"
msgid "Budgets"
msgstr ""
msgctxt "model:ir.action,name:act_budget_line_form"
msgid "Budget Lines"
msgstr ""
msgctxt "model:ir.action,name:act_budget_report"
msgid "Budgets"
msgstr ""
msgctxt "model:ir.action,name:wizard_budget_copy"
msgid "Copy Budget"
msgstr ""
msgctxt "model:ir.action,name:wizard_budget_line_create_periods"
msgid "Create Periods"
msgstr ""
msgctxt "model:ir.message,text:msg_budget_line_budget_account_type_unique"
msgid "The account type must be unique for each budget."
msgstr ""
msgctxt "model:ir.message,text:msg_budget_line_budget_account_unique"
msgid "The account must be unique for each budget."
msgstr ""
msgctxt ""
"model:ir.message,text:msg_budget_line_period_budget_line_period_unique"
msgid "The period must be unique for each budget line."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_budget_line_period_ratio"
msgid ""
"The sum of period ratios for the budget line \"%(budget_line)s\" must be "
"less or equal to 100%%."
msgstr ""
msgctxt "model:ir.model.button,string:budget_copy_button"
msgid "Copy"
msgstr ""
msgctxt "model:ir.model.button,string:budget_line_create_periods_button"
msgid "Create Periods"
msgstr ""
msgctxt "model:ir.model.button,string:budget_update_lines_button"
msgid "Update Lines"
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_budget_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_budget"
msgid "Budgets"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_budget_form"
msgid "Budgets"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_budget_report"
msgid "Budgets"
msgstr ""
msgctxt "model:res.group,name:group_budget"
msgid "Account Budget"
msgstr ""
msgctxt "selection:account.budget.line.create_periods.start,method:"
msgid "Evenly"
msgstr ""
msgctxt "view:account.budget.copy.start:"
msgid "%"
msgstr ""
msgctxt "view:account.budget.line.period:"
msgid "%"
msgstr ""
msgctxt "view:account.budget.line:"
msgid "%"
msgstr ""
msgctxt "view:account.budget.line:"
msgid "Name"
msgstr ""
msgctxt "view:account.budget.line:"
msgid "Name:"
msgstr ""
msgctxt "wizard_button:account.budget.copy,start,copy:"
msgid "Copy"
msgstr ""
msgctxt "wizard_button:account.budget.copy,start,end:"
msgid "Cancel"
msgstr ""
msgctxt ""
"wizard_button:account.budget.line.create_periods,start,create_periods:"
msgid "Create"
msgstr ""
msgctxt "wizard_button:account.budget.line.create_periods,start,end:"
msgid "Cancel"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
company company
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
@@ -0,0 +1,53 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt "field:account.configuration,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_credit_account:"
msgid "Cash Rounding Credit Account"
msgstr ""
msgctxt ""
"field:account.configuration.cash_rounding_account,cash_rounding_debit_account:"
msgid "Cash Rounding Debit Account"
msgstr ""
msgctxt "field:account.configuration.cash_rounding_account,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "field:currency.currency,cash_rounding:"
msgid "Cash Rounding Factor"
msgstr ""
msgctxt "field:purchase.purchase,cash_rounding:"
msgid "Cash Rounding"
msgstr ""
msgctxt "model:account.configuration.cash_rounding_account,string:"
msgid "Account Configuration Cash Rounding Account"
msgstr ""
msgctxt "model:ir.message,text:msg_missing_cash_rounding_account"
msgid "There is not cash rounding account configured."
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
currency currency
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
@@ -0,0 +1,227 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.account.type,consolidation:"
msgid "Consolidation"
msgstr ""
msgctxt "field:account.consolidation,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:account.consolidation,amount_cmp:"
msgid "Amount"
msgstr ""
msgctxt "field:account.consolidation,assets:"
msgid "Assets"
msgstr ""
msgctxt "field:account.consolidation,children:"
msgid "Children"
msgstr ""
msgctxt "field:account.consolidation,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.consolidation,name:"
msgid "Name"
msgstr ""
msgctxt "field:account.consolidation,parent:"
msgid "Parent"
msgstr ""
msgctxt "field:account.consolidation,statement:"
msgid "Statement"
msgstr ""
msgctxt "field:account.consolidation,types:"
msgid "Types"
msgstr ""
msgctxt "field:account.consolidation.balance_sheet.context,companies:"
msgid "Companies"
msgstr ""
msgctxt "field:account.consolidation.balance_sheet.context,comparison:"
msgid "Comparison"
msgstr ""
msgctxt "field:account.consolidation.balance_sheet.context,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.consolidation.balance_sheet.context,date:"
msgid "Date"
msgstr ""
msgctxt "field:account.consolidation.balance_sheet.context,date_cmp:"
msgid "Date"
msgstr ""
msgctxt "field:account.consolidation.balance_sheet.context,posted:"
msgid "Posted Moves"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,companies:"
msgid "Companies"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,comparison:"
msgid "Comparison"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,from_date:"
msgid "From Date"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,from_date_cmp:"
msgid "From Date"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,posted:"
msgid "Posted Moves"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,to_date:"
msgid "To Date"
msgstr ""
msgctxt "field:account.consolidation.income_statement.context,to_date_cmp:"
msgid "To Date"
msgstr ""
msgctxt "field:account.invoice,consolidation_company:"
msgid "Consolidation Company"
msgstr ""
msgctxt "field:account.move,consolidation_company:"
msgid "Consolidation Company"
msgstr ""
msgctxt "field:account.move.line,consolidation_company:"
msgid "Consolidation Company"
msgstr ""
msgctxt "help:account.consolidation.balance_sheet.context,posted:"
msgid "Only include posted moves."
msgstr ""
msgctxt "help:account.consolidation.income_statement.context,posted:"
msgid "Only include posted moves."
msgstr ""
msgctxt "model:account.consolidation,string:"
msgid "Account Consolidation"
msgstr ""
msgctxt "model:account.consolidation.balance_sheet.context,string:"
msgid "Account Consolidation Balance Sheet Context"
msgstr ""
msgctxt "model:account.consolidation.income_statement.context,string:"
msgid "Account Consolidation Income Statement Context"
msgstr ""
msgctxt "model:ir.action,name:act_consolidation_balance_sheet_tree"
msgid "Consolidated Balance Sheet"
msgstr ""
msgctxt "model:ir.action,name:act_consolidation_income_statement_tree"
msgid "Consolidated Income Statement"
msgstr ""
msgctxt "model:ir.action,name:act_consolidation_list"
msgid "Account Consolidations"
msgstr ""
msgctxt "model:ir.action,name:act_consolidation_tree"
msgid "Account Consolidations"
msgstr ""
msgctxt "model:ir.action,name:report_consolidation_statement"
msgid "Statement"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_consolidation_list"
msgid "Account Consolidations"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_consolidation_tree"
msgid "Account Consolidations"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_open_consolidation_balance_sheet"
msgid "Consolidated Balance Sheet"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_open_consolidation_income_statement"
msgid "Consolidated Income Statement"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "/"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "Balance Sheet"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "Companies:"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "Date:"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "From Date:"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "Income Statement"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "Print Date:"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "Statement"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "To"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "User:"
msgstr ""
msgctxt "report:account.consolidation.statement:"
msgid "at"
msgstr ""
msgctxt "selection:account.consolidation,statement:"
msgid "Balance"
msgstr ""
msgctxt "selection:account.consolidation,statement:"
msgid "Income"
msgstr ""
msgctxt "selection:account.consolidation,statement:"
msgid "Off-Balance"
msgstr ""
msgctxt "view:account.consolidation:"
msgid "Comparison"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
company company
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
@@ -0,0 +1,108 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,default_credit_limit_amount:"
msgid "Default Credit Limit Amount"
msgstr "Importe del límite de crédito por defecto"
msgctxt "field:account.configuration,default_credit_limit_amount_digits:"
msgid "Currency Digits"
msgstr ""
msgctxt "field:account.configuration.default_credit_limit_amount,company:"
msgid "Company"
msgstr ""
msgctxt ""
"field:account.configuration.default_credit_limit_amount,default_credit_limit_amount:"
msgid "Default Credit Limit Amount"
msgstr "Importe del límite de crédito por defecto"
msgctxt ""
"field:account.configuration.default_credit_limit_amount,default_credit_limit_amount_digits:"
msgid "Currency Digits"
msgstr ""
msgctxt "field:account.dunning.level,credit_limit:"
msgid "Credit Limit"
msgstr ""
msgctxt "field:party.party,credit_amount:"
msgid "Credit Amount"
msgstr ""
msgctxt "field:party.party,credit_limit_amount:"
msgid "Credit Limit Amount"
msgstr "Importe del límite de crédito"
#, fuzzy
msgctxt "field:party.party,credit_limit_amounts:"
msgid "Credit Limit Amounts"
msgstr "Importe del límite de crédito"
msgctxt "field:party.party.credit_limit_amount,company:"
msgid "Company"
msgstr ""
#, fuzzy
msgctxt "field:party.party.credit_limit_amount,credit_limit_amount:"
msgid "Credit Limit Amount"
msgstr "Importe del límite de crédito"
msgctxt "field:party.party.credit_limit_amount,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:party.party.credit_limit_amount,party:"
msgid "Party"
msgstr ""
msgctxt "help:account.configuration,default_credit_limit_amount:"
msgid "The default credit limit amount for new customers."
msgstr ""
msgctxt ""
"help:account.configuration.default_credit_limit_amount,default_credit_limit_amount:"
msgid "The default credit limit amount for new customers."
msgstr ""
msgctxt "help:account.dunning.level,credit_limit:"
msgid "Has reached the credit limit."
msgstr ""
#, fuzzy
msgctxt "model:account.configuration.default_credit_limit_amount,string:"
msgid "Account Configuration Default Credit Limit Amount"
msgstr "Importe del límite de crédito por defecto"
#, python-format
msgctxt "model:ir.message,text:msg_party_credit_limit_amount"
msgid ""
"The party \"%(party)s\" will exceed their %(limit)s credit limit by "
"%(amount)s."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_party_credit_limit_dunning"
msgid ""
"The party \"%(party)s\" has reached the credit limit level for dunning "
"\"%(dunning)s\"."
msgstr ""
#, fuzzy
msgctxt "model:party.party.credit_limit_amount,string:"
msgid "Party Credit Limit Amount"
msgstr "Límite de crédito por defecto"
msgctxt "model:res.group,name:group_credit_limit"
msgid "Account Credit Limit"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Credit Limit"
msgstr ""
msgctxt "view:party.party:"
msgid "Credit Limit"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
company company
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+70
View File
@@ -0,0 +1,70 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:account.account.type,deposit:"
msgid "Deposit"
msgstr "Anticipo"
#, fuzzy
msgctxt "field:account.account.type.template,deposit:"
msgid "Deposit"
msgstr "Anticipo"
msgctxt "field:account.invoice.recall_deposit.start,account:"
msgid "Account"
msgstr "Cuenta"
msgctxt "field:account.invoice.recall_deposit.start,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:account.invoice.recall_deposit.start,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.invoice.recall_deposit.start,description:"
msgid "Description"
msgstr "Descripción"
msgctxt "field:party.party,deposit:"
msgid "Deposit"
msgstr "Anticipo"
msgctxt "model:account.invoice.recall_deposit.start,string:"
msgid "Account Invoice Recall Deposit Start"
msgstr ""
msgctxt "model:ir.action,name:act_move_line_deposit"
msgid "Deposit Lines"
msgstr ""
msgctxt "model:ir.action,name:wizard_recall_deposit"
msgid "Recall Deposit"
msgstr "Recuperar anticipo"
#, python-format
msgctxt "model:ir.message,text:msg_deposit_not_enough"
msgid "The account \"%(account)s\" has not enough deposit from party \"%(party)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_erase_party_deposit"
msgid ""
"You cannot erase party \"%(party)s\" while they have deposit at company "
"\"%(company)s\"."
msgstr ""
#, fuzzy
msgctxt "model:ir.model.button,string:invoice_recall_deposit_button"
msgid "Recall Deposit"
msgstr "Recuperar anticipo"
msgctxt "wizard_button:account.invoice.recall_deposit,start,end:"
msgid "Cancel"
msgstr "Cancelar"
msgctxt "wizard_button:account.invoice.recall_deposit,start,recall:"
msgid "Recall"
msgstr "Recuperar"
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
account_invoice account_invoice
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+321
View File
@@ -0,0 +1,321 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,default_dunning_procedure:"
msgid "Default Dunning Procedure"
msgstr "Procedimiento de cobro por defecto"
msgctxt ""
"field:account.configuration.default_dunning_procedure,default_dunning_procedure:"
msgid "Default Dunning Procedure"
msgstr "Procedimiento de cobro por defecto"
msgctxt "field:account.dunning,active:"
msgid "Active"
msgstr ""
msgctxt "field:account.dunning,age:"
msgid "Age"
msgstr ""
msgctxt "field:account.dunning,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:account.dunning,amount_second_currency:"
msgid "Amount Second Currency"
msgstr "Importe en moneda secundaria"
msgctxt "field:account.dunning,blocked:"
msgid "Blocked"
msgstr ""
msgctxt "field:account.dunning,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.dunning,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.dunning,date:"
msgid "Date"
msgstr ""
msgctxt "field:account.dunning,level:"
msgid "Level"
msgstr ""
msgctxt "field:account.dunning,line:"
msgid "Line"
msgstr "Línea"
msgctxt "field:account.dunning,maturity_date:"
msgid "Maturity Date"
msgstr "Fecha de vencimiento"
msgctxt "field:account.dunning,party:"
msgid "Party"
msgstr ""
msgctxt "field:account.dunning,procedure:"
msgid "Procedure"
msgstr ""
msgctxt "field:account.dunning,second_currency:"
msgid "Second Currency"
msgstr ""
msgctxt "field:account.dunning,state:"
msgid "State"
msgstr ""
msgctxt "field:account.dunning.create.start,date:"
msgid "Date"
msgstr ""
msgctxt "field:account.dunning.level,overdue:"
msgid "Overdue"
msgstr ""
msgctxt "field:account.dunning.level,procedure:"
msgid "Procedure"
msgstr ""
msgctxt "field:account.dunning.procedure,levels:"
msgid "Levels"
msgstr ""
msgctxt "field:account.dunning.procedure,name:"
msgid "Name"
msgstr ""
msgctxt "field:account.move.line,dunnings:"
msgid "Dunnings"
msgstr "Cobros"
msgctxt "field:party.party,dunning_procedure:"
msgid "Dunning Procedure"
msgstr "Procedimiento de cobro"
msgctxt "field:party.party,dunning_procedures:"
msgid "Dunning Procedures"
msgstr "Procedimientos de cobro"
msgctxt "field:party.party.dunning_procedure,dunning_procedure:"
msgid "Dunning Procedure"
msgstr "Procedimiento de cobro"
msgctxt "field:party.party.dunning_procedure,party:"
msgid "Party"
msgstr ""
msgctxt "help:account.configuration,default_dunning_procedure:"
msgid "The default dunning procedure for new customers."
msgstr ""
msgctxt ""
"help:account.configuration.default_dunning_procedure,default_dunning_procedure:"
msgid "The default dunning procedure for new customers."
msgstr ""
msgctxt "help:account.dunning,age:"
msgid "How long the dunning has been at the level."
msgstr ""
msgctxt "help:account.dunning,blocked:"
msgid "Check to block further levels of the procedure."
msgstr ""
msgctxt "help:account.dunning,company:"
msgid "Make the dunning belong to the company."
msgstr ""
msgctxt "help:account.dunning,date:"
msgid "When the dunning reached the level."
msgstr ""
msgctxt "help:account.dunning,line:"
msgid "The receivable line to dun for."
msgstr ""
msgctxt "help:account.dunning.create.start,date:"
msgid "Create dunning up to this date."
msgstr ""
msgctxt "help:account.dunning.level,overdue:"
msgid ""
"The delay from the maturity date after which the level should be applied."
msgstr ""
msgctxt "help:account.dunning.procedure,name:"
msgid "The main identifier of the Dunning Procedure."
msgstr ""
#, fuzzy
msgctxt "model:account.configuration.default_dunning_procedure,string:"
msgid "Account Configuration Default Dunning Procedure"
msgstr "Procedimiento de cobro por defecto"
#, fuzzy
msgctxt "model:account.dunning,string:"
msgid "Account Dunning"
msgstr "Cobro contable"
#, fuzzy
msgctxt "model:account.dunning.create.start,string:"
msgid "Account Dunning Create Start"
msgstr "Nivel de cobro contable"
#, fuzzy
msgctxt "model:account.dunning.level,string:"
msgid "Account Dunning Level"
msgstr "Nivel de cobro contable"
#, fuzzy
msgctxt "model:account.dunning.procedure,string:"
msgid "Account Dunning Procedure"
msgstr "Procedimiento de cobro contable"
#, fuzzy
msgctxt "model:account.dunning.process.start,string:"
msgid "Account Dunning Process Start"
msgstr "Procedimiento de cobro contable"
#, fuzzy
msgctxt "model:ir.action,name:act_dunning_form"
msgid "Dunnings"
msgstr "Cobros"
#, fuzzy
msgctxt "model:ir.action,name:act_dunning_party"
msgid "Dunnings"
msgstr "Cobros"
#, fuzzy
msgctxt "model:ir.action,name:act_dunning_procedure_form"
msgid "Procedures"
msgstr "Procedimientos de cobro"
#, fuzzy
msgctxt "model:ir.action,name:act_reschedule_dunning_wizard"
msgid "Reschedule Dunning"
msgstr "Cobro contable"
msgctxt "model:ir.action,name:wizard_dunning_create"
msgid "Create Dunnings"
msgstr ""
#, fuzzy
msgctxt "model:ir.action,name:wizard_dunning_process"
msgid "Process Dunning"
msgstr "¿Procesar cobro?"
msgctxt "model:ir.action.act_window.domain,name:act_dunning_form_domain_all"
msgid "All"
msgstr ""
msgctxt "model:ir.action.act_window.domain,name:act_dunning_form_domain_draft"
msgid "Draft"
msgstr ""
msgctxt "model:ir.action.act_window.domain,name:act_dunning_form_domain_final"
msgid "Final"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_dunning_form_domain_waiting"
msgid "Waiting"
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_dunning_line_unique"
msgid "Line can be used only once on dunning."
msgstr "La línea puede ser utilizada sólo una vez en el cobro."
msgctxt "model:ir.model.button,string:dunning_reschedule_button"
msgid "Reschedule"
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_dunning_companies"
msgid "User in companies"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_dunning_configuration"
msgid "Dunnings"
msgstr "Cobros"
msgctxt "model:ir.ui.menu,name:menu_dunning_create"
msgid "Create Dunnings"
msgstr ""
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_dunning_form"
msgid "Dunnings"
msgstr "Cobros"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_dunning_procedure_form"
msgid "Procedures"
msgstr "Procedimientos de cobro"
#, fuzzy
msgctxt "model:ir.ui.menu,name:menu_dunnings"
msgid "Dunnings"
msgstr "Cobros"
#, fuzzy
msgctxt "model:party.party.dunning_procedure,string:"
msgid "Party Dunning Procedure"
msgstr "Procedimiento de cobro por defecto"
#, fuzzy
msgctxt "model:res.group,name:group_dunning"
msgid "Dunning"
msgstr "Cobranzas"
msgctxt "selection:account.dunning,state:"
msgid "Draft"
msgstr ""
msgctxt "selection:account.dunning,state:"
msgid "Final"
msgstr ""
msgctxt "selection:account.dunning,state:"
msgid "Waiting"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Dunning"
msgstr "Cobranzas"
msgctxt "view:account.dunning.create.start:"
msgid "Create Dunning for date"
msgstr "Crear cobro para la fecha"
msgctxt "view:account.dunning.process.start:"
msgid "Process Dunning?"
msgstr "¿Procesar cobro?"
msgctxt "view:party.party:"
msgid "Dunning"
msgstr "Cobro"
msgctxt "wizard_button:account.dunning.create,start,create_:"
msgid "Create"
msgstr ""
msgctxt "wizard_button:account.dunning.create,start,end:"
msgid "Cancel"
msgstr ""
msgctxt "wizard_button:account.dunning.process,start,end:"
msgid "Cancel"
msgstr ""
msgctxt "wizard_button:account.dunning.process,start,process:"
msgid "Process"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
company company
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
@@ -0,0 +1,83 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,dunning_email_fallback:"
msgid "Fall-back User"
msgstr ""
msgctxt "field:account.dunning.level,email_contact_mechanism:"
msgid "Contact Mechanism"
msgstr ""
msgctxt "field:account.dunning.level,email_from:"
msgid "From"
msgstr ""
msgctxt "field:account.dunning.level,email_template:"
msgid "Email Template"
msgstr ""
msgctxt "field:account.dunning.level,send_email:"
msgid "Send Email"
msgstr ""
msgctxt "field:ir.email,dunning_level:"
msgid "Level"
msgstr ""
msgctxt "help:account.configuration,dunning_email_fallback:"
msgid "User notified when no email is found to send the dunning."
msgstr ""
msgctxt "help:account.dunning.level,email_contact_mechanism:"
msgid "Define which email to use from the party's contact mechanisms."
msgstr ""
msgctxt "help:account.dunning.level,email_from:"
msgid "Leave empty for the value defined in the configuration file."
msgstr ""
msgctxt "model:ir.action,name:report_email"
msgid "Dunning Email"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Amount"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Date"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Date:"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Description"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Due Date"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Fees:"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Pending Payments Received"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Reference"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Reminder Notice"
msgstr ""
msgctxt "view:account.dunning.level:"
msgid "Email"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
account_dunning account_dunning
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
@@ -0,0 +1,90 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.dunning,fees:"
msgid "Fees"
msgstr ""
msgctxt "field:account.dunning.fee,compute_method:"
msgid "Compute Method"
msgstr ""
msgctxt "field:account.dunning.fee,journal:"
msgid "Journal"
msgstr "Libro diario"
msgctxt "field:account.dunning.fee,name:"
msgid "Name"
msgstr ""
msgctxt "field:account.dunning.fee,percentage:"
msgid "Percentage"
msgstr ""
msgctxt "field:account.dunning.fee,product:"
msgid "Product"
msgstr "Producto"
msgctxt "field:account.dunning.fee.dunning_level,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:account.dunning.fee.dunning_level,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.dunning.fee.dunning_level,dunning:"
msgid "Dunning"
msgstr "Cobro"
msgctxt "field:account.dunning.fee.dunning_level,level:"
msgid "Level"
msgstr ""
msgctxt "field:account.dunning.fee.dunning_level,moves:"
msgid "Moves"
msgstr ""
msgctxt "field:account.dunning.level,fee:"
msgid "Fee"
msgstr ""
msgctxt "help:account.dunning.fee,compute_method:"
msgid "Method to compute the fee amount"
msgstr ""
#, fuzzy
msgctxt "model:account.dunning.fee,string:"
msgid "Account Dunning Fee"
msgstr "Cuenta de los gastos de cobro"
#, fuzzy
msgctxt "model:account.dunning.fee.dunning_level,string:"
msgid "Account Dunning Fee Dunning Level"
msgstr "Cuenta de los gatos de cobro - Nivel"
msgctxt "model:ir.action,name:act_dunning_fee_form"
msgid "Fees"
msgstr ""
#, fuzzy
msgctxt "model:ir.message,text:msg_fee_dunning_level_unique"
msgid "Fee must be unique by dunning and level."
msgstr "Los gastos deben ser únicos por cobro y nivel."
msgctxt "model:ir.ui.menu,name:menu_dunning_fee_form"
msgid "Fees"
msgstr ""
msgctxt "selection:account.dunning.fee,compute_method:"
msgid "List Price"
msgstr ""
msgctxt "selection:account.dunning.fee,compute_method:"
msgid "Percentage"
msgstr ""
msgctxt "view:account.dunning.fee:"
msgid "%"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account_dunning account_dunning
account_product account_product
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
@@ -0,0 +1,47 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.dunning.level,print_on_letter:"
msgid "Print on Letter"
msgstr ""
msgctxt "model:ir.action,name:report_letter"
msgid "Dunning Letter"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Amount"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Date"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Date:"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Description"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Due Date"
msgstr "Fecha de vencimiento"
msgctxt "report:account.dunning.letter:"
msgid "Fees:"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Pending Payments Received"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Reference"
msgstr ""
msgctxt "report:account.dunning.letter:"
msgid "Reminder Notice"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
account_dunning account_dunning
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+368
View File
@@ -0,0 +1,368 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.ec_sales_list,amount:"
msgid "Amount"
msgstr ""
msgctxt "field:account.ec_sales_list,code:"
msgid "Code"
msgstr ""
msgctxt "field:account.ec_sales_list,company_tax_identifier:"
msgid "Company Tax Identifier"
msgstr ""
msgctxt "field:account.ec_sales_list,currency:"
msgid "Currency"
msgstr ""
msgctxt "field:account.ec_sales_list,party:"
msgid "Party"
msgstr ""
msgctxt "field:account.ec_sales_list,party_tax_identifier:"
msgid "Party Tax Identifier"
msgstr ""
msgctxt "field:account.ec_sales_list.context,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.ec_sales_list.context,fiscalyear:"
msgid "Fiscal Year"
msgstr ""
msgctxt "field:account.ec_sales_list.context,period:"
msgid "Period"
msgstr ""
msgctxt "field:account.tax,ec_sales_list_code:"
msgid "EC Sales List Code"
msgstr ""
msgctxt "field:account.tax,vatex_code:"
msgid "Tax Exemption Code"
msgstr ""
msgctxt "field:account.tax.template,ec_sales_list_code:"
msgid "EC Sales List Code"
msgstr ""
msgctxt "field:account.tax.template,vatex_code:"
msgid "Tax Exemption Code"
msgstr ""
msgctxt "help:account.tax,vatex_code:"
msgid "The reason why the amount is exempted from VAT."
msgstr ""
#, fuzzy
msgctxt "model:account.ec_sales_list,string:"
msgid "Account Ec Sales List"
msgstr "EC Sales List"
msgctxt "model:account.ec_sales_list.context,string:"
msgid "Account Ec Sales List Context"
msgstr ""
msgctxt "model:ir.action,name:act_ec_sales_list_form"
msgid "EC Sales List"
msgstr "EC Sales List"
msgctxt "model:ir.ui.menu,name:menu_ec_sales_list"
msgid "EC Sales List"
msgstr "EC Sales List"
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 132 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (a) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (b) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (c) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (d) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (e) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (f) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (g) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (h) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (i) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (j) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (k) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (l) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (m) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (n) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (o) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (p) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 132, section 1 (q) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 143 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (a) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (b) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (c) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (d) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (e) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (f) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (fa) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (g) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (h) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (i) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (j) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (k) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 143, section 1 (l) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 144 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 146 section 1 (e) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 148 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 148, section (a) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 148, section (b) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 148, section (c) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 148, section (d) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 148, section (e) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 148, section (f) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 148, section (g) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 151 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 151, section 1 (a) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 151, section 1 (aa) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 151, section 1 (b) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 151, section 1 (c) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 151, section 1 (d) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"Exempt based on article 151, section 1 (e) of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 159 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 309 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 79, point c of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Export outside the EU"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Intra-Community acquisition from second hand means of transport"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Intra-Community acquisition of collectors items and antiques"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Intra-Community acquisition of second hand goods"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Intra-Community acquisition of works of art"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Intra-Community supply"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Not subject to VAT"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Reverse charge"
msgstr ""
msgctxt "view:account.tax.template:"
msgid "European Codes"
msgstr ""
msgctxt "view:account.tax:"
msgid "European Codes"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
account_invoice account_invoice
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+119
View File
@@ -0,0 +1,119 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,move_export_type:"
msgid "Move Export Type"
msgstr ""
msgctxt "field:account.configuration.export,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.configuration.export,move_export_type:"
msgid "Move Export Type"
msgstr ""
msgctxt "field:account.move,export:"
msgid "Export"
msgstr ""
msgctxt "field:account.move.export,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.move.export,file:"
msgid "File"
msgstr ""
msgctxt "field:account.move.export,file_id:"
msgid "File ID"
msgstr ""
msgctxt "field:account.move.export,filename:"
msgid "Filename"
msgstr ""
msgctxt "field:account.move.export,moves:"
msgid "Moves"
msgstr ""
msgctxt "field:account.move.export,state:"
msgid "State"
msgstr ""
msgctxt "field:account.move.export,type:"
msgid "Type"
msgstr ""
msgctxt "model:account.configuration.export,string:"
msgid "Account Configuration Export"
msgstr ""
msgctxt "model:account.move.export,string:"
msgid "Account Move Export"
msgstr ""
msgctxt "model:ir.action,name:act_account_move_export_form"
msgid "Move Exports"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_account_move_export_form_domain_all"
msgid "All"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_account_move_export_form_domain_draft"
msgid "Draft"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_account_move_export_form_domain_waiting"
msgid "Waiting"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_account_move_export_delete_draft"
msgid "To delete move export \"%(export)s\" you must reset it to draft."
msgstr ""
msgctxt "model:ir.model.button,string:account_move_export_do_button"
msgid "Do"
msgstr ""
msgctxt "model:ir.model.button,string:account_move_export_draft_button"
msgid "Reset to Draft"
msgstr ""
msgctxt "model:ir.model.button,string:account_move_export_select_moves_button"
msgid "Select Moves"
msgstr ""
msgctxt "model:ir.model.button,string:account_move_export_wait_button"
msgid "Wait"
msgstr ""
msgctxt "model:ir.rule.group,name:rule_group_account_move_export_companies"
msgid "User in companies"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_account_move_export_form"
msgid "Move Exports"
msgstr ""
msgctxt "selection:account.move.export,state:"
msgid "Done"
msgstr ""
msgctxt "selection:account.move.export,state:"
msgid "Draft"
msgstr ""
msgctxt "selection:account.move.export,state:"
msgid "Waiting"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Export"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
company company
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
@@ -0,0 +1,65 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.account,winbooks_code:"
msgid "WinBooks Code"
msgstr ""
msgctxt "field:account.fiscalyear,winbooks_code:"
msgid "WinBooks Code"
msgstr ""
msgctxt "field:account.journal,winbooks_code:"
msgid "WinBooks Code"
msgstr ""
msgctxt "field:account.journal,winbooks_code_credit_note:"
msgid "WinBooks Code Credit Note"
msgstr ""
msgctxt "field:account.tax,winbooks_code:"
msgid "WinBooks Code"
msgstr ""
msgctxt "field:account.tax.template,winbooks_code:"
msgid "WinBooks Code"
msgstr ""
msgctxt "field:party.party,winbooks_customer_identifier:"
msgid "WinBooks Customer Identifier"
msgstr ""
msgctxt "field:party.party,winbooks_supplier_identifier:"
msgid "WinBooks Supplier Identifier"
msgstr ""
msgctxt "help:account.journal,winbooks_code_credit_note:"
msgid ""
"The code to use for credit note.\n"
"Leave empty to use the default code."
msgstr ""
msgctxt "model:ir.message,text:msg_account_tax_line_tax_move_line_unique"
msgid "Only one tax line of type \"Tax\" is allowed per move line."
msgstr ""
msgctxt "model:ir.message,text:msg_party_identifier_winbooks_code_unique"
msgid "The WinBooks identifier must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_party_identifier_winbooks_party_unique"
msgid "A party can have only one active WinBooks identifier."
msgstr ""
msgctxt "selection:account.move.export,type:"
msgid "WinBooks"
msgstr ""
msgctxt "selection:party.configuration,identifier_types:"
msgid "WinBooks Customer"
msgstr ""
msgctxt "selection:party.configuration,identifier_types:"
msgid "WinBooks Supplier"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
account_export account_export
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+171
View File
@@ -0,0 +1,171 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.fr.fec.result,file:"
msgid "File"
msgstr ""
msgctxt "field:account.fr.fec.result,filename:"
msgid "File Name"
msgstr ""
msgctxt "field:account.fr.fec.start,deferral_period:"
msgid "Deferral Period"
msgstr ""
msgctxt "field:account.fr.fec.start,fiscalyear:"
msgid "Fiscal Year"
msgstr ""
msgctxt "field:account.fr.fec.start,type:"
msgid "Type"
msgstr ""
msgctxt "help:account.fr.fec.start,deferral_period:"
msgid ""
"The period to exclude which contains the moves to balance non-deferral "
"account"
msgstr ""
msgctxt "model:account.fr.fec.result,string:"
msgid "Account Fr Fec Result"
msgstr ""
msgctxt "model:account.fr.fec.start,string:"
msgid "Account Fr Fec Start"
msgstr ""
msgctxt "model:ir.action,name:act_fec"
msgid "Generate FEC"
msgstr "Generate FEC"
msgctxt "model:ir.ui.menu,name:menu_fec"
msgid "Generate FEC"
msgstr "Generate FEC"
msgctxt "selection:account.fr.fec.start,type:"
msgid "IS-BIC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 1 of article 261 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 1. of article 261 C of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 1. of article 261 D of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 1. of article 261 E of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 1.bis of article 261 D of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 2 of article 261 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 2 of article 283 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 2. of article 261 C of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 2. of article 261 D of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 2. of article 261 E of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 3 of article 261 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 3. of article 261 C of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 3. of article 261 D of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 4 of article 261 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 4. of article 261 D of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 5 of article 261 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 7 of article 261 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on 8 of article 261 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 153 of Council Directive 2006/112/EC"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 261 A of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 261 B of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 275 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 277 A of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 295 of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "Exempt based on article 298 sexdecies A of the General tax code (CGI)"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid ""
"France domestic Credit Notes without VAT, due to supplier forfeit of VAT for"
" discount"
msgstr ""
msgctxt "selection:account.tax,vatex_code:"
msgid "France domestic VAT franchise in base"
msgstr ""
msgctxt "wizard_button:account.fr.fec,result,end:"
msgid "Close"
msgstr ""
msgctxt "wizard_button:account.fr.fec,start,end:"
msgid "Cancel"
msgstr ""
msgctxt "wizard_button:account.fr.fec,start,generate:"
msgid "Generate"
msgstr ""
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.1
depends: depends:
account account
party_siret party_siret
+10
View File
@@ -1,4 +1,14 @@
Version 8.0.2 - 2026-10-01
--------------------------
* Bug fixes (see mercurial logs for details)
Version 8.0.1 - 2026-09-16
--------------------------
* Bug fixes (see mercurial logs for details)
Version 8.0.0 - 2026-04-20 Version 8.0.0 - 2026-04-20
-------------------------- --------------------------
* Bug fixes (see mercurial logs for details) * Bug fixes (see mercurial logs for details)
+19 -14
View File
@@ -5,6 +5,7 @@ import datetime
import logging import logging
import posixpath import posixpath
from collections import defaultdict from collections import defaultdict
from functools import wraps
from oauthlib.oauth2 import BackendApplicationClient, TokenExpiredError from oauthlib.oauth2 import BackendApplicationClient, TokenExpiredError
from requests_oauthlib import OAuth2Session from requests_oauthlib import OAuth2Session
@@ -204,6 +205,22 @@ class Invoice(metaclass=PoolMeta):
InvoiceChorus.save(invoices_chorus) InvoiceChorus.save(invoices_chorus)
def default_records(state):
def decorator(func):
@wraps(func)
def wrapper(cls, records=None):
transaction = Transaction()
if records is None:
records = cls.search([
('invoice.company', '=',
transaction.context.get('company')),
('state', '=', state),
])
return func(cls, records)
return wrapper
return decorator
class InvoiceChorus( class InvoiceChorus(
Workflow, ModelSQL, ModelView, _SyntaxMixin, metaclass=PoolMeta): Workflow, ModelSQL, ModelView, _SyntaxMixin, metaclass=PoolMeta):
__name__ = 'account.invoice.chorus' __name__ = 'account.invoice.chorus'
@@ -337,6 +354,7 @@ class InvoiceChorus(
} }
@classmethod @classmethod
@default_records('draft')
@ModelView.button @ModelView.button
@Workflow.transition('sent') @Workflow.transition('sent')
def send(cls, records=None): def send(cls, records=None):
@@ -348,13 +366,6 @@ class InvoiceChorus(
Credential = pool.get('account.credential.chorus') Credential = pool.get('account.credential.chorus')
transaction = Transaction() transaction = Transaction()
if not records:
records = cls.search([
('invoice.company', '=',
transaction.context.get('company')),
('state', '=', 'draft'),
])
sessions = defaultdict(Credential.get_session) sessions = defaultdict(Credential.get_session)
cls.lock(records) cls.lock(records)
for record in records: for record in records:
@@ -392,6 +403,7 @@ class InvoiceChorus(
} }
@classmethod @classmethod
@default_records('sent')
@ModelView.button @ModelView.button
def update(cls, records=None): def update(cls, records=None):
"Update state from Chorus" "Update state from Chorus"
@@ -399,13 +411,6 @@ class InvoiceChorus(
Credential = pool.get('account.credential.chorus') Credential = pool.get('account.credential.chorus')
transaction = Transaction() transaction = Transaction()
if not records:
records = cls.search([
('invoice.company', '=',
transaction.context.get('company')),
('state', '=', 'sent'),
])
sessions = defaultdict(Credential.get_session) sessions = defaultdict(Credential.get_session)
succeeded, failed = [], [] succeeded, failed = [], []
for record in records: for record in records:
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+199
View File
@@ -0,0 +1,199 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:account.configuration,chorus_login:"
msgid "Login"
msgstr ""
msgctxt "field:account.configuration,chorus_password:"
msgid "Password"
msgstr ""
msgctxt "field:account.configuration,chorus_piste_client_id:"
msgid "Piste Client ID"
msgstr ""
msgctxt "field:account.configuration,chorus_piste_client_secret:"
msgid "Piste Client Secret"
msgstr ""
msgctxt "field:account.configuration,chorus_service:"
msgid "Service"
msgstr ""
msgctxt "field:account.configuration,chorus_syntax:"
msgid "Syntax"
msgstr ""
msgctxt "field:account.credential.chorus,chorus_login:"
msgid "Login"
msgstr ""
msgctxt "field:account.credential.chorus,chorus_password:"
msgid "Password"
msgstr ""
msgctxt "field:account.credential.chorus,chorus_piste_client_id:"
msgid "Piste Client ID"
msgstr ""
msgctxt "field:account.credential.chorus,chorus_piste_client_secret:"
msgid "Piste Client Secret"
msgstr ""
msgctxt "field:account.credential.chorus,chorus_service:"
msgid "Service"
msgstr ""
msgctxt "field:account.credential.chorus,company:"
msgid "Company"
msgstr ""
msgctxt "field:account.invoice.chorus,data:"
msgid "Data"
msgstr ""
msgctxt "field:account.invoice.chorus,data_file_id:"
msgid "Data File ID"
msgstr ""
msgctxt "field:account.invoice.chorus,date:"
msgid "Date"
msgstr ""
msgctxt "field:account.invoice.chorus,filename:"
msgid "Filename"
msgstr ""
msgctxt "field:account.invoice.chorus,invoice:"
msgid "Invoice"
msgstr ""
msgctxt "field:account.invoice.chorus,number:"
msgid "Number"
msgstr ""
msgctxt "field:account.invoice.chorus,state:"
msgid "State"
msgstr ""
msgctxt "field:account.invoice.chorus,syntax:"
msgid "Syntax"
msgstr ""
msgctxt "field:party.party,chorus:"
msgid "Chorus Pro"
msgstr ""
msgctxt "help:party.party,chorus:"
msgid "Send documents for this party through Chorus Pro"
msgstr ""
msgctxt "model:account.credential.chorus,string:"
msgid "Account Credential Chorus"
msgstr ""
msgctxt "model:account.invoice.chorus,string:"
msgid "Account Invoice Chorus"
msgstr ""
msgctxt "model:ir.action,name:act_invoice_chorus_form"
msgid "Chorus"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_invoice_chorus_form_domain_all"
msgid "All"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_invoice_chorus_form_domain_draft"
msgid "Draft"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_invoice_chorus_form_domain_exception"
msgid "Exception"
msgstr ""
msgctxt ""
"model:ir.action.act_window.domain,name:act_invoice_chorus_form_domain_sent"
msgid "Sent"
msgstr ""
msgctxt "model:ir.message,text:msg_chorus_credential_modified"
msgid "Are you sure you want to modify Chorus credentials?"
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_invoice_address_no_siret"
msgid ""
"To create a Chorus invoice for \"%(invoice)s\", you must set a SIRET on "
"address \"%(address)s\"."
msgstr ""
#, python-format
msgctxt "model:ir.message,text:msg_invoice_delete_sent"
msgid "You cannot delete Chorus invoice \"%(invoice)s\" because it is sent."
msgstr ""
msgctxt "model:ir.message,text:msg_invoice_unique"
msgid "You can create only one Chorus invoice per invoice."
msgstr ""
msgctxt "model:ir.model.button,string:invoice_chorus_send_button"
msgid "Send"
msgstr ""
msgctxt "model:ir.model.button,string:invoice_chorus_update_button"
msgid "Update"
msgstr ""
msgctxt "model:ir.ui.menu,name:menu_invoice_chorus_form"
msgid "Chorus"
msgstr ""
msgctxt "selection:account.configuration,chorus_service:"
msgid "Production"
msgstr ""
msgctxt "selection:account.configuration,chorus_service:"
msgid "Qualification"
msgstr ""
msgctxt "selection:account.credential.chorus,chorus_service:"
msgid "Production"
msgstr ""
msgctxt "selection:account.credential.chorus,chorus_service:"
msgid "Qualification"
msgstr ""
msgctxt "selection:account.invoice.chorus,state:"
msgid "Done"
msgstr ""
msgctxt "selection:account.invoice.chorus,state:"
msgid "Draft"
msgstr ""
msgctxt "selection:account.invoice.chorus,state:"
msgid "Exception"
msgstr ""
msgctxt "selection:account.invoice.chorus,state:"
msgid "Sent"
msgstr ""
msgctxt "selection:ir.cron,method:"
msgid "Send invoices to Chorus"
msgstr ""
msgctxt "selection:ir.cron,method:"
msgid "Update invoices from Chorus"
msgstr ""
msgctxt "view:account.configuration:"
msgid "Chorus"
msgstr ""
@@ -123,7 +123,11 @@ Check Chorus invoice::
Send to Chorus:: Send to Chorus::
>>> invoice_chorus.click('send') >>> invoice_send, = Cron.find(
... [('method', '=', 'account.invoice.chorus|send')], limit=1)
>>> invoice_send.click('run_once')
>>> invoice_chorus.reload()
>>> invoice_chorus.state >>> invoice_chorus.state
'sent' 'sent'
>>> bool(invoice_chorus.number) >>> bool(invoice_chorus.number)
@@ -136,8 +140,11 @@ Send to Chorus::
Update from Chorus:: Update from Chorus::
>>> invoice_update, = Cron.find(
... [('method', '=', 'account.invoice.chorus|update')], limit=1)
>>> while invoice_chorus.state == 'sent': >>> while invoice_chorus.state == 'sent':
... invoice_chorus.click('update') ... invoice_update.click('run_once')
... invoice_chorus.reload()
... time.sleep(1) ... time.sleep(1)
>>> invoice_chorus.state >>> invoice_chorus.state
'exception' 'exception'
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.3
depends: depends:
account account
account_invoice account_invoice
+10
View File
@@ -1,4 +1,14 @@
Version 8.0.2 - 2026-09-16
--------------------------
* Bug fixes (see mercurial logs for details)
Version 8.0.1 - 2026-07-15
--------------------------
* Bug fixes (see mercurial logs for details)
Version 8.0.0 - 2026-04-20 Version 8.0.0 - 2026-04-20
-------------------------- --------------------------
* Bug fixes (see mercurial logs for details) * Bug fixes (see mercurial logs for details)
+1 -1
View File
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:
+5 -9
View File
@@ -18,8 +18,8 @@ from stdnum import iso7064, iso11649
from trytond import backend, config from trytond import backend, config
from trytond.i18n import gettext from trytond.i18n import gettext
from trytond.model import ( from trytond.model import (
ChatMixin, DeactivableMixin, Index, MatchMixin, ModelSQL, ModelView, ChatMixin, DeactivableMixin, Index, MatchMixin, ModelSQL, ModelStorage,
Unique, Workflow, dualmethod, fields, sequence_ordered) ModelView, Unique, Workflow, dualmethod, fields, sequence_ordered)
from trytond.model.exceptions import AccessError from trytond.model.exceptions import AccessError
from trytond.modules.account.exceptions import AccountMissing from trytond.modules.account.exceptions import AccountMissing
from trytond.modules.account.tax import TaxableMixin from trytond.modules.account.tax import TaxableMixin
@@ -1581,7 +1581,7 @@ class Invoice(
@classmethod @classmethod
def search_origin_invoices(cls, name, clause): def search_origin_invoices(cls, name, clause):
return [('lines.origin.invoice', clause[0][len(name):], return [('lines.origin.invoice' + clause[0][len(name):],
*clause[1:3], 'account.invoice.line', *clause[3:])] *clause[1:3], 'account.invoice.line', *clause[3:])]
def chat_language(self, audience='internal'): def chat_language(self, audience='internal'):
@@ -1603,11 +1603,7 @@ class Invoice(
return super().view_attributes() + [ return super().view_attributes() + [
('/form//field[@name="comment"]', 'spell', Eval('party_lang')), ('/form//field[@name="comment"]', 'spell', Eval('party_lang')),
('/tree', 'visual', ('/tree', 'visual',
If(( If(Eval('amount_to_pay_today', 0) > 0,
(Eval('type') == 'out')
& (Eval('amount_to_pay_today', 0) > 0))
| ((Eval('type') == 'in')
& (Eval('amount_to_pay_today', 0) < 0)),
'danger', 'danger',
If(Eval('state') == 'cancelled', 'muted', ''))), If(Eval('state') == 'cancelled', 'muted', ''))),
] + payment_means ] + payment_means
@@ -2798,7 +2794,7 @@ class InvoiceLine(sequence_ordered(), ModelSQL, ModelView, TaxableMixin):
def origin_name(self): def origin_name(self):
if isinstance(self.origin, self.__class__) and self.origin.id >= 0: if isinstance(self.origin, self.__class__) and self.origin.id >= 0:
return self.origin.invoice.rec_name return self.origin.invoice.rec_name
if self.origin and self.origin.id >= 0: if isinstance(self.origin, ModelStorage) and self.origin.id >= 0:
return self.origin.rec_name return self.origin.rec_name
@classmethod @classmethod
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -12,7 +12,7 @@ commands_post =
deps = deps =
coverage coverage
unittest-xml-reporting unittest-xml-reporting
postgresql: psycopg[pool] >= 3 postgresql: psycopg[pool,binary] >= 3
passenv = * passenv = *
setenv = setenv =
sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://} sqlite: TRYTOND_DATABASE_URI={env:SQLITE_URI:sqlite://}
+1 -1
View File
@@ -1,5 +1,5 @@
[tryton] [tryton]
version=8.0.0 version=8.0.3
depends: depends:
account account
account_product account_product
@@ -39,7 +39,7 @@ def get_info():
info['series'] = 'latest' info['series'] = 'latest'
info['branch'] = 'branch/default' info['branch'] = 'branch/default'
else: else:
info['series'] = '.'.join(version.split('.', 2)[:2]) info['series'] = '.'.join(metadata['version'].split('.', 2)[:2])
info['branch'] = 'branch/' + info['series'] info['branch'] = 'branch/' + info['series']
for key in {'depends', 'extras_depend'}: for key in {'depends', 'extras_depend'}:

Some files were not shown because too many files have changed in this diff Show More