When clicking on 'load more', the kanban view only needs to add tags
for new records displayed by load more ; the existing records already
have their tags so one duplicates them.
The client action had a weird issue: going back from a breadcrumb to the
client action made the searchview (filters/favorites) buttons disappear. This
is caused by a weird behavior of the control panel. This fix is the safest
for now, but working on the control panel behavior would be a better long term
solution.
Issue: On the front-end try to see the statistics and change tab, the graph is very messy.
(The chart width equal 5px when the bootstrap tab is closed)
Use trigger resize to update graph but use trigger is an error, must call all update directly.
opw-666405
When doing a copy of a google drive spreadsheet (in google_drive.py's
copy_doc method, using the following google API call
https://developers.google.com/drive/v2/reference/files/copy). Google
server return an error if we used the old spreadsheet KeyId.
The new FileId is available in the AlternateLink and this commit updates
it.
similar-to: 00c2a99
opw-647222
Basically, this apply what was done in 87090c1b8b
everywhere where the events begin & end dates are displayed,
so all the events dates displayed in the front-end are the same,
so they are all within the event own timezone instead of the
user browser time zone.
opw-667065
This is related to revision 2ebbcba33a
The above revision introduces a regression: the ability
to configure pricelist items applied on product categories.
If you configured a pricelist with items applied
on products categories, then the first item with a product
category matched all products, even if the products were
not in the according category.
This is because the condition checking that the product
is within the pricelist item product category has been
completely removed, by the above commit.
opw-666059
Apple devices have a patented feature called rubberbanding that allows
the user to scroll past the end (or beginning) of a document. Browsers
on IOS have this same feature.
This is not an issue most of the time. But sometimes the rubberbanding
happens to the entire document.body of the POS, which is not
ideal. Rubberbanding is already disabled partially by
Chrome.disable_rubberbanding(). But it is not perfect. The most
important issue that remained is what happens when a scrollable element
is either at it's top or bottom and the user *initiates* a scroll past
its beginning or end. So scrolling an element all the way to the top and
then continuing to scroll did not trigger the problem. If however the
element was already at the top and you would initiate a scroll up the
scroll would fall through to the document instead and the entire POS
would scroll.
What aggrevates the issue from a UI point of view is that as long as the
rubberbanding animation is not finished, any subsequent scrolls will
target the entire document as well. Normal treatment of scrolling
resumes only when the animation has finished and the document is in the
center of the screen again.
Stopping this behavior is not trivial. The only know solutions are all
built around stopping touchmove events, which we already did.
This patch makes it so that we also stop all touchmove events that
trigger the unwanted behavior described above. It ensures that we stop
touchmove events that would scroll an element above it's top or below
it's bottom. To do this we have to manually determine whether or not the
element is scrolled all the way to the top or bottom and we have to
manually determine the direction the user is swiping.
To read a quotion, the user must have the access rights.
Then if a quotation is sent by email with a link to access it,
the user who clicks on the link must be redirected to the login
page.
opw:666618
in saas6, the kanban view used the default_order parameter if defined in
the view, but this was lost in the kanban view rewrite last year
Now, this commit makes it work. As an added bonus, it should also now
work for grouped kanban view (unlike before)
The do_search method was clearly written by someone who doesn't
understand how asynchronous code works. If several do_search are
quickly called in succession, there is no guarantee that the do_load
calls will return in the chronological order, so it could happen that
the kanban view render an inconsistent state.
This commit makes sure that only the last search entered is rendered.
Rev. f9ee454d42 fixed the pricelist
application in website_event_sale in 8.0, but the 9.0 test
contained a hardcoded price matching the old computation.
The test failed when the fix was forward-ported to 9.0.
The commit d6b26c68 introduced this duplication to deal with missing
translations in qweb views (with name="website"). Those translations are now
gone in favor of translations of the field `ir.ui.view,arch_db`.
Previously we only changed the accounts of type liquidity and that had the prefix/suffix defined on the company settings.
We added to that the other accounts with the following heuristic:
if #digits > len(account.code):
add 0 after account.code,
if #digits < len(account.code):
remove 0 from end of account.code (if possible).
Behaviour for the accounts of type liquidity that start with prefix/suffix defined on the company settings does not change,
except for a bug correction that did not remove 0 when we set a smaller number of digits.
The problem occured when the user quickly clicked several times on the view
switcher or the breadcrumbs. The function switch_mode() of the view manager
was called once per click. This function's role is to prepare the requested
view, and once it is ready, to remove the former one from the DOM and insert
the new one instead. It is thus asynchronous as it waits for the
fields_view_get and search_read RPCs' response.
Unfortunately, when those calls to switch_mode() overlapped, the former view
reference was lost and it was thus never removed, producing a weird situation
where two views were displayed one above the other. This may happen when a
view takes a while to load, or simply when the user double-clicks on the
breadcrumbs or view switcher.
This rev. makes sure that calls to switch_mode() can never overlap by refusing
any other call when there is still one processing.
We also added a protection against breadcrumbs and view switcher double-clicks.
opw 658924
When an error occured when switching from a view to another (e.g. switching
to a form view for an id that doesn't exist, by editing the url), active_view
and view_stack were updated even though the switch failed. The view manager
thus lost the reference to the real current active view, which couldn't be
detached anymore. This resulted in two views being displayed at the same time
if the user kept navigating through this view manager.
This is a backport of odoo/enterprise@0b1aafa6b and odoo/enterprise@8e691be.
If you commit the transaction inside the context manager `cr.savepoint()`, the
savepoint is lost. In that case, releasing the savepoint fails. That failure
should not be handled by rolling back to the savepoint...
The message body must be inside a tag div because when the message was short
with a @author, there was no tag div around the body and it was displayed
inine.
opw:666840
Simplify the API and make it possible to detect fiscal positions based
only on geo information, without having to call `get_fiscal_position()`
which requires a specific partner record.
This commit simply moves the logic related to the global 'world' fiscal
position fallback (no country, no country group) into the low-level
method `_get_fpos_by_region()`, so that callers do not have to do it
themselves.
This revision is related to 100d604cb0
The above revision aimed to add the correct `content-type` headers,
the according route returning Javascript and not simple html.
HttpRequest.render` returns a Response,
and `make_response` doesn't expect a Response as first argument.
In other words, this is not possible to make Reponse from a Response.
`HttpRequest.render` accepts kwargs, including `headers`.
opw-666898
The price displayed on the event page is the
`event.ticket`.`price_reduce` field,
which is basically the ticket price(`event.ticket`.`price`)
minus the possible discount applied by the pricelist
Nevertheless, the price asked when ordering the ticket,
in the cart/checkout, was the `ticket.price`,
without the possible discount from the pricelist, therefore.
The price asked for the ticket was therefore different than the price displayed.
To reproduce:
1. Settings > Sales > Use pricelist
2. Sales > Configuration > Pricelist > Public Pricelist > Apply a 20% discount (-0.2)
3. Go to /event, -> Conference on Business Applications
4. Order 1 of each
5. Notice that the price asked is 800€ and 1200€ instead of 1000€ and 1500€ respectively
6. Hit Order now -> Notice that the price in the cart are the price without the discount
opw-665540