When action_done is called with moves without pack operation, the pickings
linked to the computed moves must be in state done and the date_done must
be set on each picking.
opw:685145
In purchase, a special key is set in the context to simplify the name
of the picking type: instead of the normal name, only the name of the
warehouse is used. This is problematic if more than one incoming picking
type exists for a given warehouse, as it prevents you from being able to
differentiate them. Asking users to modify the view to remove the
context key seem a bit too much to ask for something that should be
simple.
It is my understanding that this was implemented only for cosmetic
reasons, but I am willing to assume that having to select
"YourCompany: Delivery Orders" instead of simply
"YourCompany" for people who only have one picking type should not
be too disruptive or obscure.
opw-685751
Steps to reproduce:
- Create a contact (Company).
- Create a "child" in this company.
- Select "Contact" as type of address.
- Create an individual child of the company.
Bug: instead of having the Individual icon (Human being), it gets the
Company icon (Building).
Fix: the behavior must be the same as in 8.0, the avatar must be used
for a contact which is not a company.
opw:683105
Commit 89a4774c21 changed the kwargs
debug value of the FieldTextHtml controller to let it be equal to
"assets" instead of True or False. The problem is that an empty string
was considered True before the commit and False afterwards.
In fact, the original code was wrong and the debug value should equal
the already processed kwargs debug value in the HttpRequest object.
Indeed, the kwargs.debug value is equal to the URL value while the
request.debug value is already processed and is only one of the 3
values: None, True or "assets".
Since a324b22d, the mass mailing body editor would:
- save english body in language Y if user had language Y,
- not allow to edit translations in another language
This is due to how html_translate is set as translation function of html
only if the field is set as sanitize==True.
closes#13196
opw-685629
Since it is not possible to create a timesheet entry on a issue without a
project_id, the timesheets page in the form view should be hidden if no
project is set.
This prevents the user from trying to create a timesheet entry on the
issue and receive a not so transparent message like:
mandatory field is not set: [object with reference: account_id - account.id]
When uninstalling a module, the model *may* be removed from the registry
before the removal of the model constraints; to prevent crashing in
those cases, a simple replace('.','_') on the model name should allow to
obtain the table name in these cases.
The form builder offers the possibility to add a "Custom File Upload"
field. When the user clicks on "Send", an error occurs ("An error has
occured, the form has not been sent.").
This is because we try to send a mail linked to "mail.mail", which
doesn't make sense.
The case was actually taken into account in the code, there was just an
oversight in the code.
opw-684040
* This new button is a behavior change, but this is needed for big databases with a lot of statement lines to process. Indeed, in that case we prefer to load the widget as soon as possible and thus let the user process the lines manually or click on that button (but at that time he knows why it takes time).
* Opimization of various method in order to speed reconciliation and view opening : added indexes, direct use of sql queries...and also removed the code that was looping on open debit/credit to propose a sum of entries to match the statement line's amount, because it was a little greedy and wouldn't give accurate results most of the time.
This is a following of revision
ab8a93c852
This revision solves a new case:
when quickly performing a second search
after one which has not been resolved yet in a kanban view, and the second
search is resolved before the first, it was not possible to load the form
by clicking the card of the kanban, it leaded to a
`Could not find id in dataset` web client error
This was because the ids of the dataset were altered with
the ids of the first search (the one that lasted longer), while
the records displayed were the ones of the second search
(the one that finished first)
opw-682362
When an exchange rate entries was created, fields `exchange_move_id` and `exchange_partial_rec_id` were not set on account_full_reconcile. which implies that when unreconciling entries we had the exchange rate entry that was not reconciled with its reversal move.
Another problem fixed is an infinite recursion loop that occured when trying to unreconcile entries with a `full_reconcile_id` and an exchange rate entry that is reconciled with more than one journal item. In that case, the unlink() of account.partial.reconcile has to be done before trying to reconcile the exchange rate entry with the reverse move otherwise as the exchange rate entry is still reconciled with another aml, `amount_residual_currency` is not correct and hence the program tries to create another exchange rate entry and loops.
Properties depends on with which companies the records
are browsed.
When retrieving the fiscal position as sudo (from a cron), we should force
the company from the context.
After https://github.com/odoo/odoo/commit/4162b8f as the context is force in get_fiscal_position,
we should call this method with a company (and not pass the company in the context).
This has been forgot in https://github.com/odoo/odoo/commit/fe92dea
opw-684802
During the import of a file, if the connection is closed (timeout,
server shutdown...), a traceback appears.
This is because `error.data.arguments` is not defined in this case.
opw-682104
Inspired from e2d16ea
When cancelling a voucher from a customer payment receipt,
the voucher lines linked to the deleted account move lines
have to be updated by clicking on button "unreconcile".
opw:683258
It's possible to trigger click on form view's button with the help
of the "barcode_trigger" attributes. However, we don't want to be
able to execute clicks on items that aren't clickable by the user.
That's why we wrote the following condition: if the elem is visible
OR is a child of a .dropdown-menu, we trigger the click.
The second condition was always true since we used the jquery's
parent function which return an empty list when no result, and
an empty list is truthy.
Use case:
- Have a stockable product A, with enough quantity on hand
- Have a stockable product B, without enough quantity on hand but
configured on "Make To Order"
- Create a SO, confirm.
The picking is in status "Waiting Availability", althought one product
is available. The picking should be in "Partially Available", which is
actually the case if we simply "Reserve" it manually.
opw-683974
When double-clicking on the statusbar widget, two calls to write are
performed. This can cause unwanted behavior, and when the `write` method
takes a lot of time to process, it's not possible to prevent it
server-side.
Courtesy of @gurneyalex and @aab-odoo
Closes#13134
opw-686025
FORWARD-PORT UP TO SAAS-6!
When double-clicking on the statusbar widget, two calls to write are
performed. This can cause unwanted behavior, and when the `write` method
takes a lot of time to process, it's not possible to prevent it
server-side.
Courtesy of @gurneyalex and @aab-odoo
Closes#13135
opw-686025
When checking the DOM for tour step trigger, the ":visible" jQuery
filter was used to get the visible elements. The problem is that this
filter does not care about the visibility css property. So, for jQuery,
a display:block and visibility:hidden element is visible.
This was an issue as kanban ghosts or settings panels in odoo are
hidden thanks to the visibility property instead of display.
Commit 57c09e8a8e was supposed to fix the problem but only made it
worse in some cases. Since the new option parenting system, the
customize button visibility should not be determined on creation as
parent and own options are appended on snippet focus. Also, removing
the dropdown header if it was alone was a bad idea as this is it which
contains the information of options and all the options have not
necessarily a <li/> tag in the dropdown.
For example, the many2one option has no <li/> in the dropdown and is
the only option of the field snippet. So with the previous commit, the
dropdown header was removed as there is no <li/> in the dropdown other
than this header. So as the header was removed, on snippet focus, there
was no way to determine the many2one option exists, so its on_focus
method was not called.
Now, the dropdown-header is always kept. The visibility of customize
button is determine on snippet focus.
When manually creating/importing a currency rate, there is no default
on the company_id field.
This is quite unfortunate, as rates are filtered by company then by
date, which means that a rate without company will never be taken
into account despite being newer. This filter makes sense for multi
company setups, but for mono-company setups this is quite annoying.
This commit adds a default on the company_id and adds a view for
the base_currency_rate model to only display the company field in
multi company settings.
When a request fail due to a database concurrency error, the request is
replayed. However, the `mail` overwrite of /longpolling/poll requests
modified its arguments inplace, which lead to a sanity check to failed
in case of retry.
Fixes#13121
The field price_subtotal_signed on an invoice line contains the line
subtotal:
- untouched if the invoice is of in_refund or out_invoice type,
- negated if the invoice is of in_invoice or out_refund type
At one point in time (not found), commit 649b289f using absolute value
of price_subtotal was introduced because price_subtotal_signed sometimes
had the wrong sign.
But this is source of an issue since it is possible to have an invoice with
two lines such as : 100€ and -20€, the report would then display 120, whilst
80 should have appeared.
This commit remove the use of absolute value, and if some old report data
(pre saas-6 migration with wrong migration script) are reported wrong
for an instance, it should be corrected manually.
opw-683952
closes#13118
An issue occurs in the following use case:
- Enable "Bring goods to output location before shipping (Pick + Ship)"
- Create a SO with 2 lines. 2 Deliveries are created, Pack and Ship.
- Go to "Procurement Exceptions", and cancel one of the 2 lines
- Go to the OUTgoing shipping, "Force Availability", and "Validate"
An error occurs: "Cannot unreserve a done move". The system tries to
unreserve a move which is actually cancelled.
Actually, it should not be necessary to unreserve this move, since no
quants were actually reserved in a first place. The fix ensures that, in
this situation, we don't try to unreserve a move with no quant reserved.
This should be safe to do it in all cases, but better be safe by adding
the condition `if 'no_state_change' in context` to impact only this
specific use case.
opw-685650
Inspired from e2d16ea04a
When cancelling a voucher from a customer payment receipt,
the voucher lines linked to the deleted account move lines
have to be updated by clicking on button "unreconcile".
opw:683258
Since it is not possible to create a timesheet entry on a task without a project_id,
the timesheets page on the task form view will be hidden on such tasks.
This prevents the user from trying to create a timesheet entry on such a task and
receive a not so transparent message like: mandatory field is not set: [object with reference: account_id - account.id]
Before rendering the radio button, the radio button must be unchecked
to ensure to take the last value checked.
Step to reproduce:
-From main menu, click on 'Contacts'
-Click on 'Create'
-Select 'Company' value on company_type field
-Save or not the contact
-Return in the main contact view (click on breadcrumbs)
-Click on 'Create'
Bug:
The default value on company_type field is 'Company'
but the fields that should be hidden are visible (example : parent_id field)
After the fix:
The value of company_type field is 'individual'
opw:684847
Before commit a8ee18e172, the paragraph alignment dropdown menu was
too large for its content, so it was ugly. After that commit, it became
too small for its content, which is even more ugly.
This fix sets the width of this specific dropdown so that its content
fills exactly in (as with original summernote).
After commit 6739e10, we have two widgets to be able to choose
two dates according to the operator (e.g. between).
So, the second widget is not always available.
'toString' generates the string to put in the facet and should
convert the second date only if the second widget exists.
Before this commit, it was not possible to make search filters with
only one date because we try to get value of widget that does not exist.