Steps to reproduce:
- Accounting > Customers > Invoices > Create
- Add one product line with tax 15% and one with no tax
- Print > Invoices
Issue:
In the report, the 15% tax is applied correctly on the first
product, but the taxed amount is not displayed. This is because lines
without a tax are not being considered as a separate tax group.
Fix:
Add an additional condition in the xml to check if the amount of taxed
money is equal to the invoice value. If not, then only a part of the
invoice amount is being taxed, so it must be displayed.
can be considered a forward-port of e213dab810724985dd62fb5f9a57f2bf6686a491
opw-2945837
closesodoo/odoo#100190
X-original-commit: 51064f233ca65b98d34503e2a11481d64ae8436a
Signed-off-by: Olivier Colson (oco) <oco@odoo.com>
Signed-off-by: Stefan-Calin Crainiciuc (stcc) <stcc@odoo.com>
savepoint do a flush that throw the current context and then recompute
the stored field (with a random matching context from the transaction).
In the case of qty_to_order, it will call qty_forecast and then
_compute_quantities on product.product.
Currently it will call _compute_quantities with a mix of self.env.context
(from the transaction) and a context generated from the orderpoint (with
deterministic data). But sometimes in the context took from the
transaction it could remain some other key used by _compute_quantities
(e.g. warehouse_id). Since qty_to_order doens't depends from context
it should not use self.env.context and only use the deterministic
context from the stock.orderpoint
closesodoo/odoo#100150
X-original-commit: 79694a88978ebc1213d6ba0ac0dcc59640f16d04
Signed-off-by: William Henrotin (whe) <whe@odoo.com>
Before this commit there is a widget `many2one_barcode` that allows
to scan a barcode.
After this commit, we have converted it to OWL, but it's more than a new
component. From now, the logic is in the basic Many2One as a
property/option (`canScanBarcode`) and we also have the equivalent
Component (`widget="many2one_barcode"`). This choice has been made to
support multiple use cases (e.g. having the product_configurator and the
barcode on the same product field).
Note:
now we use the `browser` class to allow to patch the browser feature
during testing.
Part-of: odoo/odoo#100082
Move all file related to Barcode scanner (JS/XML/CSS)
Note: also the CSS class is renamed as it's not related to mobile
exclusively
Part-of: odoo/odoo#100082
This commit makes FCE Is Cancellation Field inivible in non Argentinean Companies
closesodoo/odoo#99339
X-original-commit: da6b17dec3a4b13e3bf1b1cf5557aa8267f236a6
Signed-off-by: Josse Colpaert <jco@odoo.com>
Cookies should be used internally by the web UI. The server-side is not supposed to be aware of it at all.
Reverts:
odoo#88745
Based on odoo#93812
discussion. It has been decided to revert the fix to avoid further unattended behaviours.
closesodoo/odoo#100178
X-original-commit: bdde7dda7356744d459e3991a7f382fee42bf8c5
Signed-off-by: Nicolas Lempereur (nle) <nle@odoo.com>
Signed-off-by: Yolann Sabaux (yosa) <yosa@odoo.com>
Before this commit, a global filter did not update the domain of a chart
in dashboard mode.
Task-id 2961578
closesodoo/odoo#100047
Signed-off-by: Rémi Rahir (rar) <rar@odoo.com>
Sending confirmation email is generally done on a singleton recordset but
some calls could end up calling in batch. Anyway better safe than sorry.
Task-2710804 (Mail: Clean MailThread API)
closesodoo/odoo#100137
Related: odoo/enterprise#31301
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
In order to post on a document, ``message_post_with_view`` should be called
on a singleton recordset. Otherwise it is done as a mass mailing which is
not really what is expected here.
Task-2710804 (Mail: Clean MailThread API)
Part-of: odoo/odoo#100137
When using the composer in mass mail mode, no explicit 'message_type' is given
to created 'mail.mail' records. By default those are set to 'email'.
In this commit we make it explicit, as it may change in a near future. This
type is not really 'notification', 'comment' or 'user_notification', so using
'email' is fine currently. It is used more for incoming emails but we don't
distinguish outgoing emails currently.
Task-2710804 (Mail: Clean MailThread API)
Part-of: odoo/odoo#100137
Gamification code is currently using ``message_post_with_view`` a bit weirdly
* on a not mail-thread enabled record (using model / res_id propagated to
composer which allows it);
* using mass mail composition mode (aka creating directly mail.mail);
* based on a template;
This is basically achieved with ``template.send_mail()`` method.
Task-2710804 (Mail: Clean MailThread API)
Part-of: odoo/odoo#100137
Before: the command service was used inside components instead of the
hook. It introduced problems as the commands were not unregistered.
The commands were added multiple time to the registry.
closesodoo/odoo#100135
After: It uses the hook, "it just works".
Signed-off-by: Aaron Bohy (aab) <aab@odoo.com>
Prior to this commit:
- Some of the `trigger` on a many2one fields where made on
`ul.ui-autocomplete > li:first-child > a` which could lead
to click on the loading if the rpc was not yet finished.
- A text command `Text` was used instead of a click as it is
the default behavior for input elements.
This commit ensure that the `loading` is not taken by the tour
and that a click is done instead of a text command typing `Text`.
closesodoo/odoo#100125
Related: odoo/enterprise#31309
Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
When an invoice is generated from the POS there are no payment terms and
due dates put on the invoices. It was not really an issue before the pay
later feature, but now it is needed.
closesodoo/odoo#100189
X-original-commit: ed49bc766cf6956691ca87be50f352247828453f
Signed-off-by: Trinh Jacky (trj) <trj@odoo.com>
Purpose of this commit is to add some test about MailThread helpers built on
top of ``message_post`` / ``composer`` (log, post with view, ...). Some tests
about batch are also added.
Some performance tests are also added for those helpers.
Counters are updated. Note that they did not change, it is just an update
based on current master counters.
Task-2710804 (MailThread Api Cleaning)
closesodoo/odoo#100184
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Before this commit: if the number of contacts is enormous, and the
"Limited Partners Loading" with "Load all remaining partners in the
background" is enabled, clicking on the product information button would
take lots of time to reload. Also, it would cause the same issue for the
"ClosePoSPopup".
The problem is that when "willstart" takes time more than the background
process it would call it again, and for every call.
The solution is to prepare the "willstart" function's data and pass it to the
constructor.
opw-2956104
closesodoo/odoo#100177
X-original-commit: 940c72d0a058240f75d3f2673a4145e8c1a0921a
Signed-off-by: Masereel Pierre <pim@odoo.com>
The widget `many2one_tags` tags was used in the loyalty program form
view, however it does not exist.
TaskId-2982239
closesodoo/odoo#100170
Signed-off-by: William Braeckman (wbr) <wbr@odoo.com>
Prior to this commit the default values of a reward/rule would be static
and not depend on the program type.
It will now use the default value if the program_type is given in the
context.
TaskId-2982239
Part-of: odoo/odoo#100170
Prior to this commit it was not possible to choose the customer when the
wizard was started form an ewallet's program ewallet list view.
TaskId-2982239
Part-of: odoo/odoo#100170
* = im_livechat, snailmail
The model manager will now automatically add `isCausal: true` to inverse
of identifying fields. This commit implements the feature and removes
now unnecessary declarations of `isCausal: true` from the code.
Task-2741402.
closesodoo/odoo#100119
Related: odoo/enterprise#31290
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
We don't want any padding in those dialogs. The presence of the
padding was a consequence of the rewritte of that dialog in owl.
It is a frequent usecase to remove the padding from the body of
dialogs. We thus introduce a new props on Dialog and when this
props is set to `true`, we do not set any padding on the body.
This commit refactors other usecases to make them use the added
props.
closesodoo/odoo#100045
Signed-off-by: Géry Debongnie <ged@odoo.com>
Currently, the `partner_credit_warning` only works with companies,
not individuals related to a company.
Which means that the credit warning will not appear if you use a
contact from a company, instead of the company itself.
This PR solves the issue.
https://github.com/odoo/odoo/pull/83205#issuecomment-1242971077closesodoo/odoo#100038
X-original-commit: acd3545372082268b86d18cd38197d4a464930c9
Signed-off-by: William André (wan) <wan@odoo.com>
This is analogous to pos_restaurant_adyen and adds support for the two
American tipping flows:
- customer tips immediately themselves after paying using the TipScreen
- waiter adds tips end-of-day using paper receipts using the TicketScreen
To allow for tipping an optional amount= parameter was added to
stripe_capture_payment and the transaction_id on the paymentline was
saved a bit sooner so it can be used in the backend in set_no_tip and
_update_payment_line_for_tip.
Stripe docs:
https://stripe.com/docs/terminal/features/collecting-tips/on-receipt
task-2979312
closesodoo/odoo#99973
Signed-off-by: Masereel Pierre <pim@odoo.com>
Adapt the activity widget test to use vanilla js instead of JQuery.
Moreover, selectors have been adapted to rely less on the DOM structure
and more on significant class names.
closesodoo/odoo#99924
Signed-off-by: Alexandre Kühn (aku) <aku@odoo.com>
Before this PR, any fail during the QUnit test suite would have failed
the activity widget test. This is due to the fact that this test was
relying on the activity table to be the only table present in the
document. This issue is that QUnit is also using table to display
failed tests. Thus, the activity widget test was looking in the wrong
table to find its elements.
This commit fixes the issue by ensuring the test is actually targeting
the right table that is, the one inside the activity view.
Part-of: odoo/odoo#99924
In the PDF reports, the general spacing is too narrow, for
example in tables, in the address lines etc. This commit
upsizes a bit the line-height for the majority of text/digits-based
content.
taskID 2977261
closesodoo/odoo#99837
Signed-off-by: Kevin Baptiste <kba@odoo.com>
Currently clicking the 'Other applications' smartbutton on an
application redirects to a kanban view that does not have very useful
information.
With this commit, this smartbutton now redirects to the application list
view and adds small UX changes to this list view.
task-2946398
closesodoo/odoo#99828
Signed-off-by: Kevin Baptiste <kba@odoo.com>
Since https://github.com/odoo/odoo/pull/90588, the personal stage is a required field in the task form view in debug mode.
However, we only generate personal stage for a given user when that user is first assigned to a task.
If a user creates their first task and assign it to themselves, they won't be able to give it a personal stage.
To prevent issues linked to the current users not having personal stages, this commit makes the field not required, but prevents the user from unsetting it
closesodoo/odoo#99735
Signed-off-by: Laurent Stukkens (ltu) <ltu@odoo.com>
Since odoo#90588, the personal stage is a required field on the task form view in debug mode.
However, it does not make sense to have to set a personal stage when editing a task assigned to someone else.
This commit therefore hides the field when the user edits a task they are not assigned to.
Part-of: odoo/odoo#99735
This commit changes the node modifiers domain evaluation in the Form test class to allow strings.
Domains as strings are used by the web client to evaluate special values such as 'uid'.
Part-of: odoo/odoo#99735
This commit adds a tour that checks if the cart popover works correctly.
task_id=2964010
closesodoo/odoo#99583
Signed-off-by: William Braeckman (wbr) <wbr@odoo.com>
1- throw an error when creating a model with a name already taken
2- Duplicate action button create a new model with (copy) append to then name
task_id: 2971488
closesodoo/odoo#99581
Signed-off-by: Olivier Colson (oco) <oco@odoo.com>
In hr_holidays demo data, change the existing allocation from Unpaid to Training Time Off
When a user is logged as Time Off Officer (not administrator):
- In the Approvals > Time Off list view, display the refuse button
- In the Approvals > Allocations list view, display the approve/refuse button
task-2939201
closesodoo/odoo#99496
Related: odoo/enterprise#31085
Signed-off-by: Kevin Baptiste <kba@odoo.com>
In this commit, we simply set 'position' to 'sticky' on 'o_header_affixed'
to avoid to manage it's position with 'padding-top' and 'right'.
- 'padding-top' css property was used to compensate the navbar height
at the moment where the stacking context change because of the
fixed position.
- 'right' css property was used to prevent the menu to overlapp
the scroll bar.
Part-of: odoo/odoo#99338
This change allows for adding and removing followers from threads
by directly setting the message_partner_ids field of threads.
This enables the use of many2many_tags to add followers to a thread.
Task-2804888
closesodoo/odoo#95645
Related: odoo/enterprise#29284
Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
Before this pr, almost all templates are added to a fake asset/bundle `web.assets_qweb` containing almost all templates.
This mixes the feature, backend and frontend templates. There are other fake bundles. These could be loaded only after the javascript session is present (using rpc).
There is another way to read xml, via javascript it's the xmlDependencies attributes. Therefore the js is sometimes loaded in a specific bundle then the xml are loaded.
NB: There are inherited xml templates via `t-inherit` server side followed by a `t-extend` doing inheritance in Qweb JavaScript.
closesodoo/odoo#95500
Related: odoo/upgrade#3889
Related: odoo/enterprise#30609
Signed-off-by: Vincent Schippefilt (vsc) <vsc@odoo.com>
XML files are now declared in python module manifests. During the qweb
't-call-asset' directive, assetbundle will fetch the declared xml files,
apply the inheritance (t-inherit) and create a javascript service (for
eg: 'web.assets_backend.bundle.xml') which is added at the end of the
*.js mimifier file.
When the debug mode is activated, comments are added in the template
indicating which file the template comes from as well as the
inheritances applied to it.
****
JavaScript:
assets.js (module @web/core/assets) takes care of loading libraries,
javascripts and styles.
`loadJS(url)` (loads the javascript and returns a resolved promise when
the templates are also loaded via the '*.bundle.xml' service)
`loadCSS(url)` (loads the style a resolved promise when the file is
loaded)
`loadXML(xml, app=assets.defaultApp)` (load template into
application/owl, used by the `*.bundle.xml` services)
`getBundle(bundleName)` (get the bundle descriptor)
`loadBundle(desc)` (load the files and bundle from a descriptor)
templates (XML element content all owl templates)
A new `ready(serviceName)` method on boot.js lets you know when a
service is loaded are the require.
The xmlDependencies attribute no longer exists.
Python:
The xmls taken into account by assetbundle.py, applying `t-inherit`
inheritances and adding an `name_of_the_bundle.bundle.xml` service in
the generated JavaScript file.
****
Every manifest changes is into the next commit, except 'web_tour' in
this current commit as example.
Part-of: odoo/odoo#95500
A typo fix is added.
Fix error from loading xml while widget is destroyed. Now that the xml
templates are loaded in the bundle, the error appears more frequently.
Part-of: odoo/odoo#95500
When a file is immutable the different network layers can cache it.
Services receiving this header should never invalidate these files.
Part-of: odoo/odoo#95500