Skip to content
Snippets Groups Projects
Commit 24204f4d6632 authored by Cédric Krier's avatar Cédric Krier :atom:
Browse files

Invoice shipment cost when at least one shipment is done

When the cost method is on order and invoice method is on shipment, the
shipment cost should be invoices only when at least one shipment is done.

issue6554
review40481002
parent c085a81d76c6
No related merge requests found
* Invoice shipment cost when at least one shipment is done
* Use price_digits for storing cost
Version 4.4.0 - 2017-05-01
......
......@@ -80,7 +80,7 @@
carrier = fields.Many2One('carrier', 'Carrier',
domain=[
('carrier_product.salable', '=', True),
If(Eval('state').in_(['draft', 'quotation']),
If(Eval('state') == 'draft',
('id', 'in', Eval('available_carriers', [])),
()),
],
......@@ -98,6 +98,15 @@
'readonly': Eval('state') != 'draft',
}, depends=['state'])
@classmethod
def __setup__(cls):
super(Sale, cls).__setup__()
cls._error_messages.update({
'invalid_carrier': (
"The carrier '%(carrier)s' on sale '%(sale)s' "
"is not valid."),
})
@staticmethod
def default_shipment_cost_method():
Config = Pool().get('sale.configuration')
......@@ -175,6 +184,18 @@
Line.delete(removed)
cls.save(sales)
@classmethod
@ModelView.button
@Workflow.transition('confirmed')
def confirm(cls, sales):
for sale in sales:
if sale.carrier and sale.carrier not in sale.available_carriers:
cls.raise_user_error('invalid_carrier', {
'sale': sale.rec_name,
'carrier': sale.carrier.rec_name,
})
super(Sale, cls).confirm(sales)
def _get_carrier_context(self):
return {}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment