Commit Graph
124 Commits
Author SHA1 Message Date
Christophe Simonis 5e055a2afd [MERGE] forward port branch saas-11.4 up to f6ca72b3ce 2018-11-02 10:52:55 +01:00
Gert Pellin c19f0a7a5d [FIX] point_of_sale: new table duplicates
Add new tables in POS screen, close the screen and resume the session
again, the tables you created duplicate

closes odoo/odoo#27924
2018-10-18 07:54:11 +00:00
eco-odoo 33dee649a8 [IMP] base: rename the label of res_company.vat to Tax ID
Rename TIN into Tax ID in company and partner forms.

task: 1869513
2018-08-10 16:06:36 +02:00
kujiu f90cf060a3 [FIX] Syntax of icons (#25577)
Description of the issue/feature this PR addresses:

Accessibility improvements forbids the use of the syntax
`<i class="fa fa-check"/> Some text`
to create a labelled icon. But, by this, some fonts are changed.

Desired behavior after PR is merged:
The old syntax can be used.
2018-07-04 09:55:52 +02:00
Christophe Simonis 49edee1f4b [MERGE] forward port branch saas-11.4 up to d54a3726ec 2018-06-29 12:46:00 +02:00
Christophe Simonis 24f18e995e [MERGE] forward port branch saas-15 up to bda926034a 2018-06-26 14:58:48 +02:00
Lucas Perais (lpe) 786c044a39 [FIX] pos_restaurant: don't crash when printer have no url set
Have a printer in a pos.config that doesn't have a url set

Open the pos

Before this commit, there was a JS traceback, since we tried to call
string operation on undefined.

After this commit, we avoid the traceback with a behavior that *looks like* the v9.0's
i.e. we don't care if the url actually means something, we put a message in the console though

OPW 1858063

closes #25442
2018-06-25 09:15:12 +02:00
kujiu 9de1bc0eef [IMP] Improve compatibility with screen readers (accessibility) (#24574)
Today, Odoo is really tricky to use without seeing the screen, it must be improved to be usable.

This PR forbid to use labels without a "for" attribute, add some title, rule and aria attributes in HTML. With that, Odoo will be fully usable with a screen reader.


* [IMP] Labels must have a for attribute. Improve accessibility.
* [IMP] Better error message when trying to read a missing cached value
* [FIX] Add some aria-label and title attributes for screen readers.
* [FIX] Template name is not included in the error message in case of SyntaxError in QWeb
* [FIX] Improve the Tour failed at step error message to be more explicit.
* [IMP] Add aria-labels
* [FIX] Add missing aria-label on failing test
* [IMP] aria-hidden means hidden. Fix all bad aria-hidden and hide aria-hidden for all.
* [IMP] Color names on kanban views and many2many tags
* [IMP] Add some checks on views for accessibility.
* [IMP] Add `alt` attribute on `img` tags.
* [IMP] Add aria-label and title on non-described icons
* [IMP] Add button role to widgets with btn class
* [IMP] Translate aria and formatted attributes.
* [IMP] Remove wrong aria-labelledby
* [IMP] Add menu role on dropdowns
* [IMP] Buttons must be focusable
* [IMP] Add aria attributes on progress bars
* [IMP] Improve accessibility of basic widgets
* [IMP] Change main layout to more semantic tags
* [IMP] Add menuitem role when missing
* [IMP] Remove wrong role='presentation'
* [IMP] Improve accessibility of tab panels
* [IMP] Add aria-invalid on invalid fields
* [IMP] Add aria-sort on ordered columns
* [IMP] Add role on alerts
* [IMP] Use dialog role, header, main and footer tags for modals
* [IMP] Add labels on o_status
* [IMP] Improve accessibility of kanban view with feeds and articles
* [IMP] Add alerts in case of new messages
* [IMP] Add widget, navigation or img role to aria-labelled items
2018-06-22 21:22:21 +02:00
Adrien Dieudonne bd004b8267 [FIX] *: Avoid BlockUI for some rpc
Before this commit, the point of sale displayed a loading message
every 5 secondes if the barcode scanner was configured.

This issue is due to the following commit: @1aacc96
After this commit,some calls may block the interface when they did
not do it before.
It concerns all rpc done with ajax.rpc and all done with a new
session.

We have now to explicitly set shadow property.

opw-1860493
2018-06-22 13:13:18 +02:00
Dinar 08b297289d [IMP] pos_restaurant: possibility to redefine new buttons and screens
Was not able to make inheritance "action_button" and "screens" POS Restaurant
objects via "extend" or "include" functions.

Closes #25150
2018-06-13 15:44:27 +02:00
Denis Ledoux c4601f775e [FIX] point_of_sale, pos_restaurant: bill receipt, vat_label crash
Revision ec96c0b3c2
attempt to display the VAT label according to the country
vat label.

This a very commendable effort, except that the
`vat_label` was not available under the variable
`company.country_id.vat_label`

Actually even `company.country_id` was undefined.

This revision does what it must be done in order
to read the countries `vat_label` and to make
it available through a variable for the bill receipt.

opw-1817333
2018-03-09 12:34:13 +01:00
Christophe Matthieu 1d49d52b3a [FIX] web: properly set parent when using mixins
The parentedMixin doesn't automatically set the parent, so when this mixin
is used, the parent must be set manually. This wasn't done at several places,
and thus those elements weren't destroyed with their actual parent.

In master, we should probably make the ParentedMixin set the parent itself.
2018-02-08 15:46:00 +01:00
qdp-odoo ec96c0b3c2 [IMP] base: add vat_label on res.country
That allows to display the 'vat' field under the right label in reports.
2017-09-18 21:57:48 +02:00
Christophe Simonis 017ee5eab3 [MERGE] forward port branch saas-17 up to 877e709871 2017-08-24 13:17:53 +02:00
Christophe Simonis 30bd5ac0e9 [MERGE] forward port branch saas-16 up to aec6248bb3 2017-08-23 16:44:58 +02:00
Christophe Simonis 59f8b849fb [MERGE] forward port branch saas-15 up to d5f2a38b50 2017-08-23 11:23:08 +02:00
Joren Van Onder 89cade3bff [FIX] pos_restaurant: wrap product names on OrderChangeReceipt
Reuse generate_wrapped_product_name() which was implemented for
regular POS receipts at 62a8def918.

Fixes #18688
2017-08-18 13:56:39 -07:00
Joren Van Onder ac89783d2f [IMP] point_of_sale: full pricelist support
Before this the POS would load product.product records with
pricelist_id defined on the pos.config in context. These unit prices
were then used everywhere in the POS as-is. The POS contained no
pricelist logic at all.

This implements the full pricelist logic in the POS and provides a way
for users to choose what pricelist to apply per order. This
implementation closely follows the behavior defined in the product and
sale modules.

This includes unit tests for the get_price function and acceptance
tests. The unit tests are done in PhantomJS and ensure that get_price
returns the same as the backend returns when reading the 'price' field
on product.product.

Prices of products are displayed according to the selected
pricelist. To accomodate this the product_cache DomCache of the
ProductListWidget is now done per pricelist.

Additionally, this feature should speed up the loading of
product.product records. Now only stored product.product fields are
loaded. Before the non-stored computed 'price' field had to be loaded
for every product.product record.
2017-08-18 14:55:48 +02:00
Christophe Simonis ed2ddeccdf [MERGE] forward port branch saas-16 up to 1b50c829ef 2017-06-15 18:46:47 +02:00
Christophe Simonis 1b50c829ef [MERGE] forward port branch saas-15 up to 9713dc2e1f 2017-06-15 18:44:16 +02:00
Christophe Simonis 93e222bc08 [MERGE] forward port branch saas-11 up to 544353c865 2017-06-14 17:29:16 +02:00
Christophe Simonis 544353c865 [MERGE] forward port branch 9.0 up to f4bd1fd9d2 2017-06-14 16:42:49 +02:00
Carlos Mayo f4ed08ceda [FIX] pos_restaurant: add_new_order should return new order object
Closes #17563
2017-06-12 10:52:42 -07:00
Joren Van Onder f1767d5c88 [FIX] point_of_sale: is_unit has been removed
Removed and replaced with is_pos_groupable by
fe631a36a5.
2017-05-22 16:40:12 -07:00
Olivier Dony 5f4db9df66 [MERGE] Forward-port saas-16 up to 5afe894f44 2017-05-16 18:23:15 +02:00
Olivier Dony 5afe894f44 [MERGE] Forward-port saas-15 up to 878fbc75ff 2017-05-16 17:09:45 +02:00
Olivier Dony ab8c81a96f [MERGE] Forward-port saas-11 up to 0570033ae7 2017-05-16 10:30:23 +02:00
Olivier Dony 0570033ae7 [MERGE] Forward-port 9.0 up to 2c4512c263 2017-05-16 10:06:36 +02:00
Kishan Gajjar 4e715dae94 [IMP] point_of_sale(_restaurant): Add some small UX improvements
[IMP] point_of_sale: Improve `New Session` button label if already opened

When another user has a POS session open. Do not show the New Sesson button on the dashboard. Hide it and replace it by the string 'A session is already opened'

[IMP] pos_restaurant: Move some technical fields in debug mode

[IMP] point_of_sale: Remove tooltip for barcode

[IMP] point_of_sale: All to restict product price control to managers

Either:
- Everybody
- Only managers
should be able to modify the product price on orders for a given point of sale

[IMP] pos_restaurant: Exit table edit mode via 'ESC' button of keyboard
2017-05-15 17:43:15 +02:00
rap-odoo fe631a36a5 [IMP] point_of_sale: allow product grouping for all uom
Purpose
=======

In POS, it is hard-codded in such a way that grouping will be done for the
uom category that has database id == 1.

Specification
=============

We have solved this issue: we have added a new boolean field in the uom category form view that

If a user chooses this option then products having that uom category will be grouped in the POS.

Both uom category Unit and Weight have been set to groupable by default.

- Removed the hardcoded part of groupable for uom which had database id == 1,
  Now grouping will be done on 'groupable' field of "product.uom", which is
  related to the field of the same name on "product.uom.category".
- Only the `Unit` uom category is grouped by default
2017-05-15 14:09:11 +02:00
Ayoub Zahid 5da86716be [IMP] pos_restaurant : export the TableWidget and the FloorScreenWidget
These widgets were not exported, which means that there was no good way
to extend them.
2017-05-09 11:53:16 +02:00
Joren Van Onder 272e2cb048 [FIX] point_of_sale,pos_*: correct arguments of rpc fail callbacks
The introduction of the new RPC framework (see
0df9968433,
e574027056 and
2106e3dd2e) replaced RPC calls made with
web.DataModel by web.rpc. The arguments in the fail callbacks for
these are different.

For web.DataModel an error object and a jQuery event are passed. The
jQuery event had to be DefaultPrevented to avoid web.session from
trying to show a traceback dialog.

For web.rpc an error type and an error object are passed. This caused
errors because the code was calling preventDefault on the error
object. Because it bypasses web.session entirely a traceback dialog is
never shown, so we don't have to worry about preventing it anymore.
2017-04-23 19:17:35 -07:00
Géry Debongnie 2106e3dd2e [REF] web, *: simplify our RPC system (in JS)
The RPC system was not completely satisfactory, we decided to prepare
the future and do it properly.  This commit introduces the new rpc
system, which replace the previous new one.  We now simply have a
method, this._rpc, which takes a dictionary of parameters.  The idea is
that depending on the parameters, it is able to add correct default
value when necessary.

For situations where we don't have the this._rpc method, we can use the
rpc.query method, which takes the same arguments, but directly calls
ajax.rpc instead of triggering up some events.
2017-04-11 19:44:38 +02:00
Géry Debongnie 86a87aa8b0 [REF] *: use _rpc method for all rpcs
The _rpc method is now the preferred method to do a rpc, so we need to
update all calls.
2017-04-11 19:44:38 +02:00
Géry Debongnie 6cc324513e [REF] *: remove mixins from web.core
It is better to directly import web.mixins
2017-04-11 19:44:38 +02:00
Géry Debongnie e574027056 [REF] web,*: remove 'web.model' and 'web.dataModel
Use this.rpc instead of Model object, with web.ajax if necessary.

nb: EventDispatcherMixin include now the custom_events managment instead
of widget
2017-04-11 19:44:38 +02:00
qdp-odoo 4f29b77e3d [MERGE] foward port of 10.0 up to revision 84a650e33a 2016-12-30 17:21:25 +01:00
Nils Hamerlinck 73b18964ea [FIX] pos_restaurant: Allow more complex URL schemes for printers
For example: https://abc.def:8080
It is already allowed for the printer in main point_of_sale module.
Apply the same schemes in pos_restaurant.

Closes #13769
2016-12-13 12:04:27 +01:00
Nicolas Martinelli 82a9b77f54 [FIX] pos_restaurant: order of kitchen ticket
When the kitchen ticket is printed, the order lines appear jumbled in
comparison to what is displayed on the PoS interface. This is an issue
since the kitchen cannot link main and side dishes for a given guest.
For example, the following order:
- Steak
- Fries
- Salmon
- Pasta
- Chicken
- Salad

On the kitchen ticket, this could appear as:
- Salmon
- Salad
- Chicken
- Steak
- Fries
- Pasta

The order actually depends on the product id.

The fix is to use the order line id instead of the product id in the
resume dictionary. Although a dictionary is an unordered collection,
most browsers keep the dictionary ordered. For example:
```
var a = {"18": "18", "1": "1", "21": "21", "14": "14"};
for(var i in a) { console.log(i) };
1
14
18
21
```

opw-680796
2016-06-30 18:09:32 +02:00
Darshan Kalola 3de847afd8 [MIG] pos_restaurant : migration to new api
During migration, remove 'set_background_color' method, to directly use js api.
2016-05-31 09:20:11 +02:00
Darshan Kalola 34643da75d [IMP] pos restaurant: prevent an offline table removal from floor screen
- Current pos restaurant with offline mode, when you delete the table from
  floor screen, it would stop everything (you won't be able to create an order
  further) untill your server start again, that is not good indeed.
  Instead we should show the error popup, just like you will get when you click
  on '+' for adding a new table on offline mode.

- Slightly improve the other relevant warning messages.

- Only pos managers can edit the floor screen.
  Before this pos user were allowed to access the edit button (pencil
  icon on floor screen), but they could never update the table detail
  as lack of permission so in this we have prohibited the pos user
  from accessing an edit button(pencil icon).
2016-05-13 09:43:04 +02:00
Joren Van Onder f1598883ab [IMP] pos_restaurant: make floor editing more touchscreen friendly
Before this the table edit handles where quite small. This was no
problem when editing a floor layout with a mouse or perhaps with a
stylus on a touchscreen. It was however very difficult to do with your
finger on a touchscreen.

This increases the size of the handles by a factor of 3. To make room
for this the 4 handles on the sides (non-corner ones) have been removed
on square tables since you can technically do any operation you want
with just the corner handles. The only functionality we lose is resizing
a table while constraining it's width/height, but if such fine grained
control is needed then the tables can still be edited in the backend.
2016-04-20 15:26:59 +02:00
Denis Ledoux 36b26ebaae [MERGE] forward port of branch 9.0 up to ff3184e 2016-02-04 14:41:55 +01:00
Joren Van Onder efe263280d [FIX] point_of_sale, pos_restaurant: temporary orders
pos_restaurant creates temporary orders when splitting the bill. This
ensures those are never saved to persistent storage. As soon as the user
clicks on the pay button, the order is not considered temporary anymore
and will be saved.

Closes #10767
Fixes #10350
opw-666141
2016-02-04 11:50:21 +01:00
Christophe Simonis e765569d04 [MERGE] forward port of branch 9.0 up to f0a63e5 2016-02-02 14:44:39 +01:00
Christophe Simonis fbd5fab238 [MERGE] forward port of branch saas-6 up to 9ca7ad8 2016-02-02 13:18:33 +01:00
Joren Van Onder fb460462d0 [FIX] pos_restaurant: correctly pass arguments from overriden method
When overriding a method that calls its super later on, it's important
that arguments is used to correctly pass all arguments to the super.

Consider the following:

// module 1 (not correct)
method: function(a) {
    return _super.call(this, a);
}

// module 2 (correct)
method: function(a, b) {
    return _super.apply(this, arguments);
}

If the method of module 1 gets called first it will throw away the b
argument when it calls _super. Therefore the b argument will never
arrive in method of module 2.
2016-02-01 14:03:30 +01:00
Julien Legros ddcc62c6dd [MERGE] forward port of branch 9.0 up to 365e298 2016-01-19 11:37:27 +01:00
Christophe Simonis 0a2300318a [MERGE] forward port of branch saas-6 up to 12d9a34 2016-01-18 10:44:50 +01:00
Joren Van Onder 870c0ca59d [FIX] pos_restaurant: stop ghost clicks on iOS
On iOS (at least version 8.3 and up), both Chrome (at least 47 and up)
and Safari emit ghost clicks [1] that added the product normally
rendered under the table widget to the order. So when selecting a table
without any orders you would end up with the table selected, and the
product under the table in the order after just tapping the table.

The issue is that on the table selection screen we listen to touchend
events. On the product selection screen we listen to click
events. Mobile browsers will usually emit both, first the touchend
event, then a small delay, and then the click event. The small delay is
platform dependent. Also, depending on a bunch of circumstances,
browsers adjust this delay time (see [1] for more info).

On Android this never caused issues because there the click is fired
pretty fast after the touchend and more importantly, the click event
still has the table widget as it's target. We don't listen to click on
the table widget so it gets correctly ignored.

On iOS there is a longer delay, and the click event is emitted with
whatever target is currently under the coordinates of the click.

In order to stop this from happening we'll just bind to click when not
editing. When we are editing the floor layout we'll do what we did
before.

We also bind to dragend because on touch devices it is sometimes not
easy to click, especially on small elements. You have to touch and
release the screen without moving your finger. Because the table
selection screen hides overflow there are no downsides to doing this,
and it makes selecting a table much easier and less likely to fail due
to accidental dragging.

Calling preventDefault on the touchend event is another option but did
not work on Android running Firefox 43.

[1] http://ariatemplates.com/blog/2014/05/ghost-clicks-in-mobile-browsers/
2016-01-15 13:23:50 +01:00