[FIX] website_quote: invoice generation

To reproduce:
- Configure an external payment provider (e.g. Ingenico) with "Authorize
  & capture the amount, confirm the SO and auto-validate the invoice on
  acquirer confirmation"
- Create a quotation with a product linked to a subscription
- Send the link to the customer
- Click on "Accept & Pay", use the configured provider

The SO is confirmed, but the invoice is not generated.

By calling `action_confirm` in the callback of the transaction, we
validate the SO before `form_feedback` is called. Therefore, the method
`_confirm_so` will do nothing since the SO is not in state 'draft' or
'sent' anymore.

The solution is to manually call `_confirm_so`instead of
`action_confirm`. This is necessary to do it at this moment since we
might not go through `form_feedback` (e.g. if we pay thanks to wire
transfer).

opw-694273
This commit is contained in:
Nicolas Martinelli
2017-01-04 14:01:43 +01:00
parent da54837420
commit 56517a6ca9
+1 -2
View File
@@ -165,8 +165,7 @@ class SaleOrder(models.Model):
""" Payment callback: validate the order and write transaction details in chatter """
# create draft invoice if transaction is ok
if transaction and transaction.state == 'done':
if self.state in ['draft', 'sent']:
self.sudo().action_confirm()
transaction._confirm_so()
message = _('Order paid by %s. Transaction: %s. Amount: %s.') % (transaction.partner_id.name, transaction.acquirer_reference, transaction.amount)
self.message_post(body=message)
return True