Commit Graph
5 Commits
Author SHA1 Message Date
Lucas Perais (lpe) 40c817b308 [FIX] sale_coupon_delivery: never include the delivery into the order's base for coupon
before this commit, the delivery was included into the base of computation for coupon programs
meaning that:
have a program free shipping for orders above 50$
have a product with price included 48$
let's shipping costs be 9$
total price is 57$.
The program used to apply in that case, giving a total discounted price of 48$, when it should be 57$ with no discounts

after this commit, deliveries are excluded from the computation

OPW 766661

closes #1311
2017-08-25 11:39:46 +02:00
Yannick Tivisse cc8debe1e8 [FIX] sale_coupon: Don't update automatic rewards on the fly
Purpose
=======

Currently we are updating the coupon rewards on the fly when creating/modifying/deleting a sales order line.

To avoid multiple searches on res_partners and product to know whether the customer/product is valid on the sale coupon program, we store the applicable customers and products on the program according to the domain defined on it.

This brings 2 issues:
- The customers/products stored on the program are not updated (Was the original spec)
- The checks are numerous and maybe overkill for the given results

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

- Don't recompute the reward lines on SO modifications. Add a button to compute the line by hand and make an automatic compute on the SO validation or on the page shop/payment.

- When recomputing the reward lines, make a search on the res_partners and products instead. Now that the action is not triggered so often we can afford to make a search.

- Don't use the fields rule_partners_domain and rule_products_domain. This should be removed in master.

- The field is_public_included is useless now. And we decided to make the coupon available for all the partners if they fit the domain on the program.
2017-06-21 15:55:27 +02:00
Yannick Tivisse 12a06dcfa6 [FIX] sale_coupon_delivery: Do not unlink reward line if 'free_shipping'
The methods delivery_set and delivery_unset are called everywhere (mostly on the ecommerce). The reasons for that is that we do not want several shipping lines on the same order. A better way to achieve this would have been to create the line if it doesn't exist or write on it to modify the 'price_unit' instead.

The side effect of that behavior is:
- A delivery line is set on the order.
- We apply a coupon to get a free shipping
- We go on the payment page. The method _cart_update is called, which calls delivery_set, so delivery_unset. The shipping line is unlinked to create again a new shipping line with the price updated. As the shipping line is removed, a recomputation of the reward lines is made. The program isn't applicable anymore as there's no shipping line on the order. The reward is thus removed.

That way, it's impossible to have a free shipping reward on the ecommerce and achieve the full checkout process.

What's done in this commit:

If a free shipping is applicable by code or if a free shipping can be automatically applied. It will be done with a price of 0.0 if there's no shipping line or the price_unit on the shipping line if set. If the shipping line is removed (every 2 seconds on a checkout process), the reward line is not unlinked and the price is set to 0.0.

That way, it's now possible to make a full flow.

NB: If a line is unlinked on an order, we unlink the reward line if it's the last one set on the order. This is to avoid free shipping line coming back on a new order in the ecommerce even if not applicable.
2017-02-24 11:01:23 +01:00
Yannick Tivisse 3b71aeb77c [FIX] sale_coupon_delivery: Set taxes on reward line for free shipping 2017-02-24 11:01:23 +01:00
pgu-odoo 1925b23fbd [ADD] sale_coupon_delivery: Allow to offer a free shipping from a coupon 2016-12-20 14:48:01 +01:00