Following v13, newId records are instances of NewID and are ignored from
any `read_group` call. This breaks an important feature: when encoding a
stock move line (thus, in an onchange context), the `quantity_done` field
of stock move should be recomputed.
task-2241471
Allow to "backorder" a production, meaning create another manufacturing
order with the quantity remaining to produce. We also use the
reservation of the first order on the next ones by using
`post_inventory` on the first one and moving the newly created stock
moves to the backorder.
We introduce a wizard similar to the one in stock.
Backorders have a sub-sequence.
Backorders are linked together through the procurement group.
We allow creating a backorder even if workorders are running by closing
them, the backorder will call `button_plan` and create its own.
task-2241471
Set the operations directly on the Bill of Material.
Duplicate the demo data where a routing was shared.
Adapt the tests.
Remove the following feature:
- set the same routing on parent and kit child bom
- when planning, if the component of the kit have the same operation
than a component of the parent bom, merge these operations
task-2241471
This commits refactors the code of the reconciliation, in order to facilitate the process of complex use cases, namely multi-currencies or cash-basis-taxes related (see details below). It also prepares the code for a second refactoring where we will save on each journal items the amount_currency and currency_id field (even in case of operation made in company currency), also in the sake of simplification.
1) Multi-currencies:
- the account.partial.reconcile model now will have dedicated columns to specify the amount of the partial reconciliation in the debit_line_id currency and the credit_line_id currency. That comes in handy when dealing with journal items having different secondary currencies, but also allows some simplification.
- residual_amount_currency computation changed accordingly
- moved models account.full.reconcile and account.partial.reconcile in their dedicated .py file
2) Cash basis taxes
- cash basis entries now handle correctly rounding errors to make sure the exact amount of gets reported when the reconciliation becomes full.
- the account for the base amount of cash basis entries has to be set, now, on the company instead of on each cash basis tax.
- that new 'property' field can be set at the CoA installation via the field property_cash_basis_base_account_id of account.chart.template, or going through the accounting settings.
Was task task: 2243420
Was PR #50308
Related: odoo/upgrade#1121
Related: odoo/enterprise#10252
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
Upgrade the TIM JavaScript SDK to the latest version (4.6.0).
The version Six gave us initially (3.8.1) didn't return any error
message. We now have some (ugly) error messages that could at least
help the cashier understand where the problem comes from (e.g.
"timCommunicationFailure", "cardholderStop", etc.).
closesodoo/odoo#52181
Taskid: 2267818
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
When user is in an operation. For example, a delivery, when user opens studio
and click on the move line, click on edit and close studio. The result is that
user can't create record anymore.
By this commit, this issue has been fixed.
task - 2170090
closesodoo/odoo#52101
X-original-commit: cc10d8bccada44041f62243ab4785a422f354aaa
Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
mixin method should not return in the middle of the loop
Use the value updated on the record instead
super() is called with self at every iteration
which is not very efficient and can be wrong
Solution call super for each specific record
and only when needed
write is not a good practice in compute method
closesodoo/odoo#52858
X-original-commit: 7e19ed98d18305370b5c14edd3d310cfea5df714
Related: odoo/enterprise#11100
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
Since recent commit[1], from the report 'purchase.report' inherited in
purchase_stock, `effective_date` field is moved out from the query and
is placed inside the domain. However, `effective_date` field is not
available in 'purchase.report' and is part of the 'purchase.order'
and so moving it inside the domain results into a traceback.
This commit fixes the issue by adding this field from purchase.order to
purchase.report so domain works as expcted.
commit[1] - https://github.com/odoo/odoo/pull/49999/commits/b7115cc006fb15c935ceef41e8372b1d3ceb1462#diff-34545aa3f96ecc997188c974620118ee
closes odoo/odoo#52103
Taskid: 2263566
Closes: #52103
Signed-off-by: Yannick Tivisse (yti) <yti@odoo.com>
The IoT Box detects printers automatically under certain conditions.
And so there are printers that are not detected by the box
and cannot be used in Odoo.
With this commit we give the possibility to add printers manually
with Cups and to be able to use them in Odoo.
closesodoo/odoo#52154
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
Create a contact:
- Company
- Country: Ukranian
- VAT: UA1234567890
Error will raise because the VAT is detected as invalid. This occur
because vatnumber package for Ukranian VAT check the length to be 8
while according to various sources [1][2] the number is
- 12 for companies
- 9 or 10 for individuals
[1] https://vat.international/ukraine/
[2] https://interbuh.com.ua/ru/documents/oneanalytics/123926
opw-2266940
closesodoo/odoo#52956
X-original-commit: 0f4c3b6a9930614397c61cef8b138985f2e2b708
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
Have a Storable Product configured to 'Show inventory below a threshold
and prevent sales if not enough stock' (availability settings). Have a
quantity available of such product, i.e 100
From the shop create 2 sessions with 2 different users A and B.
With both follow the steps in parallel:
- put 100 of product in cart
- go to checkout up to payment screen
Press 'Pay Now' with A (and confirm the order in backend if auto
confirm is not enabled so available quantity is updated)
Press 'Pay Now' with B
200 of product are requested because all cart checks for availability
are done before payment but not on the final step.
Adding a final step of check for availability
opw-2261598
closesodoo/odoo#52954
X-original-commit: 4d3f2fbdcda68d4f0e0bb3bb34d51e71d963621b
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
If no product is loaded when opening the PoS, show a popup asking if
the user wants to load demo data.
closesodoo/odoo#52919
Taskid: 2276054
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
Purpose of the task is to improve on accounting listviews.
So in this commit, following list view are improved
- view_move_tree
- view_invoice_tree
Improved decoration and apply the new badge widget.
closes odoo/odoo#52358
Taskid: 2267578
Closes: #52358
Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
Fixes same issue as b836e00d70 but for `<div/>` tag.
When we translate html content, all text and (currently) this subset of
inline tags are allowed inside translations: 'abbr', 'b', 'bdi', 'bdo',
'br', 'cite', 'code', 'data', 'del', 'dfn', 'em', 'font', 'i', 'ins',
'kbd', 'keygen', 'mark', 'math', 'meter', 'output', 'progress', 'q',
'ruby', 's', 'samp', 'small', 'span', 'strong', 'sub', 'sup', 'time',
'u', 'var', 'wbr', 'text'.
In b836e00d70 an issue was fixed that `<p/>` would possibly get inside
translation when copy-pasting, testing some scenario in current chromium
browser (83.0) it seems the pasted content contains `<div/>` tags.
opw-2259367
opw-2260711
closes#52592closesodoo/odoo#52932
X-original-commit: eed9fb771521143c0b514d96b5efdcb9715051f0
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
A sales order on the website will have as salesperson:
- the contact salesperson, and if not set
But if it's not a new address, the "Online orders" > "Salesperson" is
not used.
With this changeset, the "Online orders" > "Salesperson" is used by
default if there is no salesperson on the partner as was the intention.
opw-2274665
closes#52933closesodoo/odoo#52939
X-original-commit: 957361a5c44b3797318657ce2486a3eff2a3f651
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
Invoice matching rules now also match account.move.lines based on their partner's name : if the statement line's payment reference contains the first name and last name of its patner (in any order, at any position), we match the move line.
closesodoo/odoo#50083
Related: odoo/enterprise#10166
Related: odoo/upgrade#1317
Signed-off-by: Quentin De Paoli (qdp) <qdp@openerp.com>
Partner mapping is a new field defined on invoice matching reconciliation models. It allows defining a mapping between partners and regular expressions. When ran, on a statement line without any partner set, those rules use this mapping to assign a partner to statement lines without any one set, using the regular expressions to match the payment reference of the statement line.
It is important to note that the mapped partner will only be set to the statement line when the reconciliation is actually performed (so, when clicking the validate button, if the matching rule is not auto_reconcile = True), just like with the partner_map.
This limit is set by the past_months_limit field of reconciliation models. When set, it specifies the number of months in the past to search for matches when using this model. Older move lines will be ignored.
The point of this feature is to exclude too old stuff that we know we won't reconcile (because of import, old misconfiguration, former misuse of some features, ...). It also allows reducing the number of move lines taken into consideration, and solving perfomance issues functionnally by isolating the move lines into smaller periods to reconcile them separately.
When opening the reconciliation widget and calling the matching rules, instead of calling all the rules in a single huge SQL query and then iterating on all the statement lines to match them with the results, we now first group the lines per applicable model and each time call a distinct (but way smaller) query for each group, stopping trying other rules for a statement line when one returns candidates. More queries are performed, but they are way more simple.
Before this commit, hovering options of a parent snippet displayed two
overlays: it's confusing.
After this commit, when hovering a parent property, only the parent
overlay is displayed, with the same style.
task-2182911
closesodoo/odoo#51476
Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Co-authored-by: qsm-odoo <qsm@odoo.com>
Review the layout to always use standard bootstrap classes so that
future task targeting modal can target s_popup snippets the same way
(for example: our task allowing to open a popup on click on a button).
This also allows to simplify the css and simplify the options. A new
option also now allows to have a backdrop, or not, so that user clicks
are blocked while the popup is opened, or not.
+ Adapt cookie bar accordingly.
Part of https://github.com/odoo/odoo/pull/52698
task-2210730
Co-authored-by: qsm-odoo <qsm@odoo.com>
The counters for categories were not updated when filter values were
selected. This commit fixes that situation.
This might impact the global performances of the search panel but
there is still room for improvement. Actually, it could be
possible to reload categories and filters less often by carefully
track the internal changes and the categories/filters attributes
(enable counters, expand,...).
closesodoo/odoo#49307
Related: odoo/enterprise#9795
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
In the search panel, the domain used to compute the field image values
(when the attribute expand is false) was the same as the domain used
to compute counters (if enabled). The idea was that a value bringing an
empty domain is totally useless and should not displayed.
That being true, it turns out that if one does not allow them and
several fields are used, selecting a value in the search panel will very
often totally transform the search panel. From a UI perspective,
this turns out to be bad: the search panel 'moves'.
Let us give an example:
Let us start from a search panel that looks like to:
first_field
A 1
B 3
second_field
C 1
D 2 <--- mouse above D
E 1
with first_field and second_field both with expand="0" and
enable_counters="1". Let us also assume that no record in the global
domain has both first_field=A and second_field=D.
Click on D would make the search panel look like to something like
first_field
B 1
second_field
C 1
D 2
E 1 <--- mouse here
(the selection of D does not impact the values for the second_field but
does for the other first_field values).
This has led us to use basically only the domain comming from
outside of the search panel to compute field image values.
This means that we might now have value with zero count even if expand
is false. In the above situation, a click on D would give us
first_field
A
B 1
second_field
C 1
D 2 <--- mouse still above D
E 1
Task ID: 2154749
Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com>
Co-authored-by: Julien Mougenot <jum@odoo.com>
This commit introduces a new attribute 'limit' for search panel fields
that allows to avoid performance issues. That integer attribute (with
default 200) allows to fix a maximal number of values to display for the
fields. When the number of field values to display reaches the limit,
no values will be displayed. Instead, a warning message will be shown
in the corresponding search panel section.
Note it is possible to have no limit using limit="0" on a field.
This commit reintroduces in a better way the principle brought by the
fix 8d57153b34c04952a85f6642951cb2697016da84.
Task ID: 2154749
The commit introduces two new attributes for search panel fields:
- hierarchize: boolean attribute (default True) available for
many2one fields with select="one". It allows to choose whether
to hierarchize the field values using the _parent_name (if set)
on the field comodel.
Note that a sanitization of the parent hierarchy takes place.
Basically, it ensures that parent chains are
completely in the domain (on comodel) accessible by the user.
See _search_panel_sanitized_parent_hierarchy documentation for
more information.
- expand: boolean attribute (default False) available for many2one
and many2many fields. If set to true, all field values are fetched
and displayed in the search panel. If set to false, only the
values that have at least one corresponding value in the field
model (and in some domain) are fetched.
An exception in the case of an hierarchized field
(hierarchize=True and _parent_name set): more/less values can be
displayed in order to have a good representation of the parent
hierarchy. That means we complete and sanitize the set of initial
field image values.
Note that the fix 8d57153b34c04952a85f6642951cb2697016da84 bringing the
notion of limit in search panel has been reverted in the present commit.
An upcomming commit will reintroduce the limit principle in a better way.
Task ID: 2154749
Co-authored-by: Mathieu Duckerts-Antoine <dam@odoo.com>
Co-authored-by: Julien Mougenot <jum@odoo.com>
The `state` field of `account.payment` no longer exists and should not be set explicitely.
Set the `ref` field to the expense name instead of the `name`field.
Task ID 2266922
closesodoo/odoo#52823
Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
Task 2274998
1/ In the accounting dashboard, maximum one primary button per box
2/ In all boxes : "Sample data" must be removed. (Too obvious)
3/ In the configuration of Accounting Periods
* Opening date and fiscal year end must be on a same line.
* Remove the button "Configure your tax accounts".
4/ "Configure your tax accounts" is still available in the settings.
* But also make it available while doing the Tax Report Entry, if an
error message pops up.
5/ Chart of Account (list view)
* Captital D for opening Debit/Credit
* Rename "Name" into "Account Name"
6/ While génerating an Invoice
* Rename "Post" button into "Confirm"
* Check that the incremental number is added as a suffix of the name
of the bill ; not as a prefix
7/ Vendor Bill (list view)
* Status must appear as a Tag ; like it is already done in "Payment
State"
* Rename "Payment State" into "Payment Status"
8/ Bank journals
* On the bank journal level, if bank feed is set to synchronization,
then while selecting that journal from the accounting dashboard, then
directly go to the statement lines rather than the bank statement
itself.
* In the bank statement's account moves, remove the button duplicate.
It is enough to have it in the actions.
closesodoo/odoo#52818
Related: odoo/enterprise#11081
Signed-off-by: Laurent Smet <smetl@users.noreply.github.com>
Configure POS with automatic receipt printing, IOTBox with receipt
printer and possibility of reprinting on request
Go to POS session, create an order, pay.
Now on the new order add some items.
Reprint the old receipt.
Go back to the order.
Add products.
The order will be automatically cleaned as the user attempt to add new
products.
This occur because the add_product function will check if the
current order receipt has been printed, using a flag which was set
when reprinting the receipt.
Reset the flag after going back to the order fix the issue.
opw-2258992
closesodoo/odoo#52785
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>