Commit Graph

151 Commits

Author SHA1 Message Date
Olivier Dony 46c5f93b6c [FIX] website_sale: verify match between TX and SO amount
When processing a payment transaction, double-check the
match between the amount of the transaction and the
amount of the SO, to be sure that we won't be validating
a SO that has been modified since the payment.

Such cases have to be double-checked manually.

Also add a bit of extra logging to make auditing ecommerce
transactions easier.
2016-04-13 15:34:34 +02:00
Denis Ledoux e94be1856c [FIX] website_sale: non-blocking order confirmation fail
When validating a payment transaction,
if the cart (order) cannot be confirmed or
the email cannot be sent for any reason
(instance, the email template is broken),
the transaction must continue, so the payment
transaction can be set to `done` or `pending`.

In other words, not sending the confirmation
email or not confirming the sale order must
not be blocking to mark the payment
transaction as done.

opw-672486
2016-03-22 15:49:14 +01:00
Goffin Simon a617fd29ae [FIX] website_sale: discount display in e-commerce
Each time the quantity of a product is changed, the price must
be updated according to the pricelist of the user.
When the price given by the pricelist is less then the unit price
of the product, the reduction of the price must be displayed.

A not stored computed field is added in model "sale.order.line"
to compute the discounted price because when the module
product_visible_discount is installed the price unit of a SO line
is the full price of the product and the discount related to the pricelist
is written in percent in the field discount(function "product_id_change"
in addons/product_visible_discount/product_visible_discount.py).

opw:660178
2015-12-22 10:21:07 +01:00
David Monjoie fa48e6f485 [IMP] website_sale: sale_get_order avoid useless sql request
Avoid an sql request when sale_order_id is None.
Improvement of 6b6d7310c0.
Closes PR #8974.
2015-10-14 11:59:54 +02:00
David Monjoie 6b6d7310c0 [FIX] website_sale: sale_get_order force_create
Previously, if there was a sale_order_id but it was wrong,
like when the sale order was deleted for example, the function
didn't return a sale order, even with force_create=True.

It used to pass the first 'if' as sale_order_id had a value, so
no new sale order was created. However, as sometimes the id was
referring to a non-existant sale_order, a sale_order.exists() test
was used later, resulting in the function sometimes returning None,
even with force_create = True.

Proposed solution is to test the existence of the browse record with
the given id earlier, instead of testing the existence of the id itself.
2015-10-06 10:59:46 +02:00
Denis Ledoux 3b02e3d63d [FIX] sale*: company tax filtering
f26b94f had as goal to filter the taxes of the product
according to the company when the sale.order
was created/edited as SUPERUSER_ID
(Who ignores the record rules).

Unfortunetaly, to filter the taxes,
it used the company of the customer,
while it's actually the company of the order which
should be used.

Indeed, for instance,
partners can be shared among all companies.

It was way less simple to access the company
of the sale.order, this parameter being
not available in the on_change method signature.

This is the easiest way to solve this issue
without breaking the API / retro-compatibility.

opw-647819
2015-08-25 14:52:20 +02:00
Denis Ledoux 809e1a6081 [FIX] sale, website_sale: quotation email.
4adb4b8d15
corrected the fact the quotation email
wasn't sent if you did not come back
from the payment provider
(when you closed your browser after
the payment but before coming back
to Odoo).

Before the above revision, the quotation
email was sent for payment methods
not redirecting to payment providers,
like transfers. It was no longer the case
with the above revision.

This revision re-introduces this behavior:
If there is a feedback from a transaction,
but the transaction isn't confirmed,
we send the quotation email without confirming
the sale order, like it was the case before

opw-644670
2015-07-14 11:11:55 +02:00
Denis Ledoux 4adb4b8d15 [FIX] sale, website_sale: Send email on sale order confirmation
Not just when coming back from the payment provider to the
payment validation route `/shop/payment/validate`.

Otherwise, if you do not come back from the payment provider
page, that you quit just after having paid but just before
being redirected to Odoo, you do not receive the email.

The change within the `sale` module, while this issue concerns
`website_sale` only, has been accepted because this is a mechanism
that could be used by other modules.

opw-644348
2015-07-09 15:51:50 +02:00
Goffin Simon, Nicolas Lempereur 98a72a2604 [FIX] website_sale_delivery: update shopping cart
The delivery must be updated when the cart is updated.
The method "_check_carrier_quotation" called by "_cart_update" deletes sale order line related to delivery.
Then each line passed to "_cart_update" must be checked with "exists" to be sure that the record is not
missing.
Related to the task : 12239
opw:641913
2015-06-16 13:56:43 +02:00
Jeremy Kersten 31301bb31a [FIX] website_sale: reset sale order from session if status is no more in draft
When a sale order has in state != draft, we raise a error message since commit
f6c65a3d9e.

But if we don't reset the sale order id from the session, the user cannot
continue to navigate on website because the user will have the error each time.
2015-06-09 11:13:20 +02:00
Nicolas Martinelli f6c65a3d9e [FIX] website_sale: prevents the modification of a SO line if SO is not 'draft'
opw-634681
2015-05-18 13:08:01 +02:00
Damien Bouvy e4d8246c81 [FIX] website_sale: fix unnecessary permanent update of pricelist on checkout 2015-04-22 16:47:47 +02:00
Christophe Matthieu 74497a667f [FIX] website_sale: If there is no description_sale for the product set the cart display the product name and 'False' 2015-03-09 20:34:01 +01:00
Christophe Matthieu 72c418e6dd [FIX] website_sale: wrong line details in pdf invoice, the invoice line name does not contains the product name 2015-02-16 10:32:39 +01:00
Christophe Matthieu 010dd5a603 [FIX] website_sale: very slow name_get for product public categories 2015-01-09 14:22:54 +01:00
Denis Ledoux 7a2ba5ca47 [FIX] website_sale: apply reduction code
The line being deleted in this revision looks to have been useful when it was introduced in this commit:
36fc910

As the sale order was updated right away through the update_pricelist method
But since this rev. 22f4c31, the sale order is updated later, and reset the sale_order_code_pricelist_id value in the session right after setting it prevent to apply the pricelist of the promotional code...
2014-11-21 15:56:37 +01:00
Julien Legros aecb24ad6b [FIX] website_sale: don't carry over tx details on SO duplication
opw-617319
2014-11-19 11:43:02 +01:00
Denis Ledoux 1561a528a5 [FIX] website_sale: product website description must be translatable 2014-11-18 11:41:27 +01:00
Will Stott 9bc156a32c [FIX] website_sale: typo in help string. 2014-11-04 13:57:52 +01:00
Denis Ledoux ba272ad69a [FIX] website_sale: no need to specific to a selection field that it is of type char
Besides, if set, the field will appear as a simple char field in the form view & editable lists
+ADD the type in the editable view
2014-10-17 14:48:45 +02:00
Olivier Dony 9b67a483df [FIX] website_sale: better fiscal position detection + support update during checkout
The customer can change the country and tax
number in the billing information during
checkout, and the taxes should be properly
updated according to the re-detected fiscal
position.

The fiscal position detection also depends
on the `vat_subjected` flag, which we now assume
to be implicit as soon as the customer filled
in a valid Tax Identification Number.
2014-10-10 21:02:33 +02:00
Denis Ledoux eaa0f29094 [FIX] website*sale: product_id_change qty is 0 by default
Thus, need to pass the actual quantity to product_id_change in order to set values correctly
2014-09-30 17:20:28 +02:00
Thibault Delavallée dce983dea0 [IMP] website_sale: confirm quotation only when the payment is done, not directly when hitting 'pay now'. 2014-09-29 11:12:37 +02:00
Jamin Shah ff5e7a749c [IMP] website_sale : avoid duplicated order lines
Add line id to while calling _cart_update() from sale_get_order()
The missing line_id parametre was making the _cart_find_product_line() call to fail as it was linked to an option while searching for lines without options (making the method recreate new lines).
Fixes #2573
2014-09-25 11:31:49 +02:00
Olivier Dony e5bff82aff [MERGE] Forward-port saas-5 up to f9bcd67 2014-09-17 16:39:06 +02:00
Martin Trigaux 46efc164d6 Forward port of branch saas-3 up to rev 2ee1843 2014-09-17 12:58:08 +02:00
Martin Trigaux 2ee1843757 [FIX] website_sale: retrieve transactions as superuser
Due to additional security rules, the transactions made as public user will have a new partner_id. The transaction needs to be retrieved as admin to be set in the context.
The operations in payment_get_status are made as superuser but the session_id is checked in the assert above to avoid url manipulation.
2014-09-17 12:52:28 +02:00
Fabien Meghazi bc5e6fa2cb [ADD] Helper for /website/image (allows to use aggressive cache) 2014-09-16 19:54:59 +02:00
Fabien Meghazi 5e6e1303e3 [IMP] pretty urls for /website/image 2014-08-28 16:37:38 +02:00
Martin Trigaux e4c0940e9f [FIX] website_sale: avoid displaying inactive products in shops
The domains in the form ('o2m_field', operator, False) do not use the orm but convert the domain to ('id', 'invert operator', [list of ids]). This means that the orm is not used and implicit filter (active=True) or access rights are not checked.
A proper fix in master should be done to use the orm instead of an SQL query.
This patch force a search to be made on product.product and then exclude the products where active=False (opw 607602).
2014-08-07 18:15:37 +02:00
Denis Ledoux 586b0e2f5d [FIX] website_sale: _rec_name product.attribute.line
Set the _rec_name for product.attribute.line model, as its column name wasn't defined, and therefore search on it wasn't possible (For instance, do an advanced search on product.product with "Product Attributes" "Contains" "Something" wasn't possible).
2014-07-23 08:56:36 +02:00
Christophe Matthieu 5f25cb9244 [FIX] website_sale: install website_event_sale click on event to make a registration, error because fiscal_position is undefined 2014-07-11 15:29:22 +02:00
Raphael Collet cbe2dbb672 [MERGE] new v8 api by rco
A squashed merge is required as the conversion of the apiculture branch from
bzr to git was not correctly done. The git history contains irrelevant blobs
and commits. This branch brings a lot of changes and fixes, too many to list
exhaustively.

- New orm api, objects are now used instead of ids
- Environements to encapsulates cr uid context while maintaining backward compatibility
- Field compute attribute is a new object oriented way to define function fields
- Shared browse record cache
- New onchange protocol
- Optional copy flag on fields
- Documentation update
- Dead code cleanup
- Lots of fixes
2014-07-06 17:05:41 +02:00
Fabien Pinckaers 5cc81dd64f Fixes 2014-07-02 18:18:29 +02:00
Antony Lesuisse 22f4c315a3 [IMP] automatic fiscal positions for simple cases
Add group of countries res.country.group
Add get_fiscal_position method a method to compute a fiscal position based on company_id, partner_id, delivery_id
The meaning of res.partner.fiscal_position is now a forced a fiscal position.
The default implementation should handle simple cases, like VAT in UE and sales
tax in the US, but the method can be overriden to handle more complex ficals
rules.
2014-06-30 02:12:41 +02:00
Christophe Matthieu 412a7593be [IMP] website_sale_options 2014-06-25 11:31:39 +02:00
Christophe Matthieu 7505cce2e9 [WIP] 2014-06-24 17:37:13 +02:00
Christophe Matthieu 204a62499a [IMP] website_sale_options 2014-06-24 15:11:53 +02:00
Christophe Matthieu 22d528c7a7 [IMP] website_sale: display the discount in the product template when the user select a variant 2014-06-19 13:12:08 +02:00
Christophe Matthieu 43ca22d10c [FIX] website_sale: access right for currency for public user 2014-06-19 13:12:07 +02:00
Christophe Matthieu a6185caa18 [FIX] website_sale: display in currency of the user 2014-06-19 13:12:06 +02:00
Christophe Matthieu 7295a07c4a [FIX] website_sale: display price with user curencie. 2014-06-19 13:12:06 +02:00
Christophe Matthieu 0d9f3af113 [IMP] website_sale: optional product + fix forgotten line_id in website_event_sale 2014-06-17 15:49:48 +02:00
Christophe Matthieu 9f77cb9d1f [IMP] website_sale: optional product have all time the same quantity of the liked product. 2014-06-17 14:23:15 +02:00
Christophe Matthieu 0ac338ea0a [IMP] website_sale: display state function of selected country 2014-06-17 11:33:28 +02:00
Christophe Matthieu 0f78e602d6 [FIX] website_sale: tour; product split kanban view of product and product template 2014-06-13 17:08:19 +02:00
Christophe Matthieu f62673c266 [IMP] website_sale: Optional product with variant suggestion 2014-06-12 16:58:44 +02:00
Christophe Matthieu 8319356630 [IMP] website_sale: allow optional products in shop; In shop, it opens the modal jus after having clicked on the 'Add to cart'. The modal contains the optional products. 2014-06-11 12:50:41 +02:00
Denis Ledoux 489742873d [FIX] website_sale: backport commit 3cc4785ba6 of master
This fix aimed saas-5, not master.
original Commit message:
display accessory field in form view and display the good accessory product inside ecommerce
This is related to previous rev 86055fb8cd
2014-06-04 11:25:51 +02:00
Denis Ledoux 86055fb8cd [FIX] website_sale: accessory_product_ids are product.product, not product.template
This many2many field should actually have product.template as relation
But, in a stable release, we cannot alter the database
Therefore, when displaying accessory products in the card, it display the product_tmpl_id of the product.product, not itself
This relation should be changed in trunk
+ Actually displaying this field in the backend
2014-06-04 10:44:56 +02:00