Rename 'done' buttons to 'do' and label them as "Complete"

Closes #13039
This commit is contained in:
Cédric Krier
2024-02-17 17:50:49 +01:00
parent 254e72b074
commit 8666e82b80
85 changed files with 227 additions and 198 deletions
@@ -112,7 +112,7 @@ Ship the products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -171,7 +171,7 @@ Receive 9 products::
>>> shipment.incoming_moves.append(move) >>> shipment.incoming_moves.append(move)
>>> move.quantity = 5.0 >>> move.quantity = 5.0
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> stock_in.reload() >>> stock_in.reload()
@@ -252,7 +252,7 @@ Send 5 products::
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.state >>> shipment.state
'packed' 'packed'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> stock_out.reload() >>> stock_out.reload()
@@ -380,7 +380,7 @@ Now we will use a product with different unit of measure::
0.0 0.0
>>> shipment.incoming_moves.append(move) >>> shipment.incoming_moves.append(move)
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> set_user(accountant) >>> set_user(accountant)
>>> purchase.reload() >>> purchase.reload()
@@ -192,7 +192,7 @@ Receive 50 products::
>>> set_user(stock_user) >>> set_user(stock_user)
>>> shipment.click('ship') >>> shipment.click('ship')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> set_user(account_user) >>> set_user(account_user)
@@ -141,7 +141,7 @@ Receive 9 products::
>>> shipment.incoming_moves.append(move) >>> shipment.incoming_moves.append(move)
>>> move.quantity = 5.0 >>> move.quantity = 5.0
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> stock_in.reload() >>> stock_in.reload()
@@ -213,7 +213,7 @@ Send 5 products::
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.state >>> shipment.state
'packed' 'packed'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> stock_out.reload() >>> stock_out.reload()
@@ -315,7 +315,7 @@ Create Drop Shipment Move::
>>> shipment, = sale.drop_shipments >>> shipment, = sale.drop_shipments
>>> shipment.click('ship') >>> shipment.click('ship')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -367,7 +367,7 @@ Create Drop Shipment Move::
>>> shipment, = sale.drop_shipments >>> shipment, = sale.drop_shipments
>>> shipment.click('ship') >>> shipment.click('ship')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -134,7 +134,7 @@ Receive products from Belgium::
>>> move.unit_price = Decimal('100.0000') >>> move.unit_price = Decimal('100.0000')
>>> move.currency = eur >>> move.currency = eur
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -156,7 +156,7 @@ Receive products from France::
>>> move.unit_price = Decimal('90.0000') >>> move.unit_price = Decimal('90.0000')
>>> move.currency = eur >>> move.currency = eur
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -196,7 +196,7 @@ Receive products from US::
>>> move.unit_price = Decimal('120.0000') >>> move.unit_price = Decimal('120.0000')
>>> move.currency = usd >>> move.currency = usd
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -218,7 +218,7 @@ Receive returned products from France::
>>> move.unit_price = Decimal('150.0000') >>> move.unit_price = Decimal('150.0000')
>>> move.currency = eur >>> move.currency = eur
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -137,7 +137,7 @@ Send products to Belgium::
>>> shipment.click('wait') >>> shipment.click('wait')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -161,7 +161,7 @@ Send products to particular to France::
>>> shipment.click('wait') >>> shipment.click('wait')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -205,7 +205,7 @@ Send products to US::
>>> shipment.click('wait') >>> shipment.click('wait')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -229,7 +229,7 @@ Send returned products to France::
>>> move.currency = eur >>> move.currency = eur
>>> shipment.click('wait') >>> shipment.click('wait')
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -112,7 +112,7 @@ Ship twice 10 unit of the product::
>>> shipment1.click('assign_force') >>> shipment1.click('assign_force')
>>> shipment1.click('pick') >>> shipment1.click('pick')
>>> shipment1.click('pack') >>> shipment1.click('pack')
>>> shipment1.click('done') >>> shipment1.click('do')
>>> shipment1.state >>> shipment1.state
'done' 'done'
@@ -121,7 +121,7 @@ Ship twice 10 unit of the product::
>>> shipment2.click('assign_force') >>> shipment2.click('assign_force')
>>> shipment2.click('pick') >>> shipment2.click('pick')
>>> shipment2.click('pack') >>> shipment2.click('pack')
>>> shipment2.click('done') >>> shipment2.click('do')
>>> shipment2.state >>> shipment2.state
'done' 'done'
@@ -112,7 +112,7 @@ Ship 20 units of the product in two shipments::
>>> shipment1.click('assign_force') >>> shipment1.click('assign_force')
>>> shipment1.click('pick') >>> shipment1.click('pick')
>>> shipment1.click('pack') >>> shipment1.click('pack')
>>> shipment1.click('done') >>> shipment1.click('do')
>>> shipment1.state >>> shipment1.state
'done' 'done'
@@ -123,7 +123,7 @@ Ship 20 units of the product in two shipments::
>>> shipment2.click('assign_force') >>> shipment2.click('assign_force')
>>> shipment2.click('pick') >>> shipment2.click('pick')
>>> shipment2.click('pack') >>> shipment2.click('pack')
>>> shipment2.click('done') >>> shipment2.click('do')
>>> shipment2.state >>> shipment2.state
'done' 'done'
+2 -2
View File
@@ -182,7 +182,7 @@ class _ShipmentOutMixin(_ShipmentMixin):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Carriage = pool.get('stock.shipment.carriage') Carriage = pool.get('stock.shipment.carriage')
has_cost_sale = hasattr(Carriage, 'cost_sale') has_cost_sale = hasattr(Carriage, 'cost_sale')
@@ -197,7 +197,7 @@ class _ShipmentOutMixin(_ShipmentMixin):
carriage.cost_sale_currency_used) carriage.cost_sale_currency_used)
carriages.append(carriage) carriages.append(carriage)
Carriage.save(carriages) Carriage.save(carriages)
super().done(shipments) super().do(shipments)
class ShipmentOut(_ShipmentOutMixin, metaclass=PoolMeta): class ShipmentOut(_ShipmentOutMixin, metaclass=PoolMeta):
@@ -143,7 +143,7 @@ Send products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -187,7 +187,7 @@ Send products::
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.state >>> shipment.state
'packed' 'packed'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -204,7 +204,7 @@ Send products::
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.state >>> shipment.state
'packed' 'packed'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -146,7 +146,7 @@ Ship in two steps::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -155,7 +155,7 @@ Ship in two steps::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -125,7 +125,7 @@ Transfer 1 product between warehouses::
>>> accounts['stock'].balance >>> accounts['stock'].balance
Decimal('0.00') Decimal('0.00')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> accounts['stock'].reload() >>> accounts['stock'].reload()
@@ -181,7 +181,7 @@ Transfer 1 product between warehouses::
>>> move.cost_price >>> move.cost_price
Decimal('90.0000') Decimal('90.0000')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> move, = shipment.incoming_moves >>> move, = shipment.incoming_moves
@@ -231,7 +231,7 @@ Receive partial shipment::
... m.product: m for m in shipment.incoming_moves} ... m.product: m for m in shipment.incoming_moves}
>>> product2move[product2].quantity = 2.0 >>> product2move[product2].quantity = 2.0
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -215,7 +215,7 @@ Ship partially::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
+1
View File
@@ -1,3 +1,4 @@
* Rename 'done' button to 'do'
* Fill production number only in waiting state * Fill production number only in waiting state
Version 7.0.0 - 2023-10-30 Version 7.0.0 - 2023-10-30
+4 -4
View File
@@ -228,7 +228,7 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView):
'invisible': Eval('state') != 'assigned', 'invisible': Eval('state') != 'assigned',
'depends': ['state'], 'depends': ['state'],
}, },
'done': { 'do': {
'invisible': Eval('state') != 'running', 'invisible': Eval('state') != 'running',
'depends': ['state'], 'depends': ['state'],
}, },
@@ -772,7 +772,7 @@ class Production(ShipmentAssignMixin, Workflow, ModelSQL, ModelView):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@set_employee('done_by') @set_employee('done_by')
def done(cls, productions): def do(cls, productions):
pool = Pool() pool = Pool()
Move = pool.get('stock.move') Move = pool.get('stock.move')
Date = pool.get('ir.date') Date = pool.get('ir.date')
@@ -873,7 +873,7 @@ class Production_Lot(metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, productions): def do(cls, productions):
pool = Pool() pool = Pool()
Lot = pool.get('stock.lot') Lot = pool.get('stock.lot')
Move = pool.get('stock.move') Move = pool.get('stock.move')
@@ -888,4 +888,4 @@ class Production_Lot(metaclass=PoolMeta):
moves.append(move) moves.append(move)
Lot.save(lots) Lot.save(lots)
Move.save(moves) Move.save(moves)
super().done(productions) super().do(productions)
+2 -2
View File
@@ -242,8 +242,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.button" id="production_done_button"> <record model="ir.model.button" id="production_done_button">
<field name="model">production</field> <field name="model">production</field>
<field name="name">done</field> <field name="name">do</field>
<field name="string">Done</field> <field name="string">Complete</field>
<field name="confirm">Are you sure you want to complete the production?</field> <field name="confirm">Are you sure you want to complete the production?</field>
</record> </record>
@@ -171,7 +171,7 @@ Do the production::
{'done'} {'done'}
>>> for input_ in production.inputs: >>> for input_ in production.inputs:
... assertEqual(input_.effective_date, today) ... assertEqual(input_.effective_date, today)
>>> production.click('done') >>> production.click('do')
>>> output, = production.outputs >>> output, = production.outputs
>>> output.state >>> output.state
'done' 'done'
@@ -197,7 +197,7 @@ Make a production with effective date yesterday and running the day before::
>>> production.reload() >>> production.reload()
>>> for input_ in production.inputs: >>> for input_ in production.inputs:
... assertEqual(input_.effective_date, before_yesterday) ... assertEqual(input_.effective_date, before_yesterday)
>>> production.click('done') >>> production.click('do')
>>> production.reload() >>> production.reload()
>>> output, = production.outputs >>> output, = production.outputs
>>> assertEqual(output.effective_date, yesterday) >>> assertEqual(output.effective_date, yesterday)
@@ -91,7 +91,7 @@ Make a production::
>>> production.click('wait') >>> production.click('wait')
>>> production.click('assign_force') >>> production.click('assign_force')
>>> production.click('run') >>> production.click('run')
>>> production.click('done') >>> production.click('do')
Check output price:: Check output price::
@@ -60,7 +60,7 @@ Make a production::
>>> production.click('wait') >>> production.click('wait')
>>> production.click('assign_force') >>> production.click('assign_force')
>>> production.click('run') >>> production.click('run')
>>> production.click('done') >>> production.click('do')
>>> production.state >>> production.state
'done' 'done'
@@ -74,7 +74,7 @@ Make a production::
>>> production.click('wait') >>> production.click('wait')
>>> production.click('assign_force') >>> production.click('assign_force')
>>> production.click('run') >>> production.click('run')
>>> production.click('done') >>> production.click('do')
>>> production.state >>> production.state
'done' 'done'
@@ -71,7 +71,7 @@ Make a production::
>>> output.quantity = 2 >>> output.quantity = 2
>>> output.save() >>> output.save()
>>> _ = output.duplicate() >>> _ = output.duplicate()
>>> production.click('done') >>> production.click('do')
Check output price:: Check output price::
@@ -74,7 +74,7 @@ Make a production with 2 unused component::
>>> output.currency = company.currency >>> output.currency = company.currency
>>> output.from_location = production.location >>> output.from_location = production.location
>>> output.to_location = production.warehouse.storage_location >>> output.to_location = production.warehouse.storage_location
>>> production.click('done') >>> production.click('do')
Check output price:: Check output price::
@@ -81,7 +81,7 @@ Create outputs including waste products::
>>> waste_output.product = product >>> waste_output.product = product
>>> waste_output.from_location = production.location >>> waste_output.from_location = production.location
>>> waste_output.to_location = lost_found_loc >>> waste_output.to_location = lost_found_loc
>>> production.click('done') >>> production.click('do')
>>> production.cost >>> production.cost
Decimal('20.0000') Decimal('20.0000')
>>> output, = [o for o in production.outputs >>> output, = [o for o in production.outputs
+1 -1
View File
@@ -56,6 +56,6 @@ this repository contains the full copyright notices and license terms. -->
<button name="wait"/> <button name="wait"/>
<button name="assign_wizard" icon="tryton-forward"/> <button name="assign_wizard" icon="tryton-forward"/>
<button name="run" icon="tryton-forward"/> <button name="run" icon="tryton-forward"/>
<button name="done" icon="tryton-forward"/> <button name="do" icon="tryton-forward"/>
</group> </group>
</form> </form>
+2 -2
View File
@@ -224,7 +224,7 @@ class Production(metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, productions): def do(cls, productions):
pool = Pool() pool = Pool()
Warning = pool.get('res.user.warning') Warning = pool.get('res.user.warning')
@@ -242,4 +242,4 @@ class Production(metaclass=PoolMeta):
warning_name, warning_name,
gettext('production_outsourcing.msg_pending_purchase_done', gettext('production_outsourcing.msg_pending_purchase_done',
productions=names)) productions=names))
super(Production, cls).done(productions) super().do(productions)
@@ -147,7 +147,7 @@ Try to do the production with pending purchase::
>>> production.click('wait') >>> production.click('wait')
>>> production.click('assign_force') >>> production.click('assign_force')
>>> production.click('run') >>> production.click('run')
>>> production.click('done') >>> production.click('do')
Traceback (most recent call last): Traceback (most recent call last):
... ...
PurchaseWarning: ... PurchaseWarning: ...
@@ -161,4 +161,4 @@ Validate the purchase::
Do the production:: Do the production::
>>> production.click('done') >>> production.click('do')
+2 -2
View File
@@ -94,7 +94,7 @@ class Production(metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, productions): def do(cls, productions):
pool = Pool() pool = Pool()
Work = pool.get('production.work') Work = pool.get('production.work')
for production in productions: for production in productions:
@@ -104,7 +104,7 @@ class Production(metaclass=PoolMeta):
gettext('production_work.msg_do_finished_work', gettext('production_work.msg_do_finished_work',
production=production.rec_name, production=production.rec_name,
work=work.rec_name)) work=work.rec_name))
super(Production, cls).done(productions) super().do(productions)
Work.set_state([w for p in productions for w in p.works]) Work.set_state([w for p in productions for w in p.works])
@classmethod @classmethod
@@ -273,7 +273,7 @@ Check production cost::
Do the production:: Do the production::
>>> production.click('done') >>> production.click('do')
>>> production.state >>> production.state
'done' 'done'
+2 -2
View File
@@ -107,8 +107,8 @@ class ShipmentInReturn(metaclass=PoolMeta):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@process_purchase('moves') @process_purchase('moves')
def done(cls, shipments): def do(cls, shipments):
super(ShipmentInReturn, cls).done(shipments) super().do(shipments)
def process_purchase_move(without_shipment=False): def process_purchase_move(without_shipment=False):
+8 -8
View File
@@ -263,7 +263,7 @@ Validate Shipments::
>>> shipment.save() >>> shipment.save()
>>> assertEqual(shipment.origins, purchase.rec_name) >>> assertEqual(shipment.origins, purchase.rec_name)
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> purchase.reload() >>> purchase.reload()
>>> purchase.shipment_state >>> purchase.shipment_state
'received' 'received'
@@ -345,7 +345,7 @@ Check Return Shipments::
>>> move_return.quantity >>> move_return.quantity
4.0 4.0
>>> ship_return.click('assign_try') >>> ship_return.click('assign_try')
>>> ship_return.click('done') >>> ship_return.click('do')
>>> ship_return.state >>> ship_return.state
'done' 'done'
>>> return_.reload() >>> return_.reload()
@@ -408,14 +408,14 @@ Checking Shipments::
... incoming_move = Move(id=move.id) ... incoming_move = Move(id=move.id)
... mix_shipment.incoming_moves.append(incoming_move) ... mix_shipment.incoming_moves.append(incoming_move)
>>> mix_shipment.click('receive') >>> mix_shipment.click('receive')
>>> mix_shipment.click('done') >>> mix_shipment.click('do')
>>> mix.reload() >>> mix.reload()
>>> len(mix.shipments) >>> len(mix.shipments)
1 1
>>> mix_return.click('wait') >>> mix_return.click('wait')
>>> mix_return.click('assign_try') >>> mix_return.click('assign_try')
>>> mix_return.click('done') >>> mix_return.click('do')
>>> move_return, = mix_return.moves >>> move_return, = mix_return.moves
>>> move_return.product.rec_name >>> move_return.product.rec_name
'product' 'product'
@@ -475,14 +475,14 @@ Checking Shipments::
... incoming_move = Move(id=move.id) ... incoming_move = Move(id=move.id)
... mix_shipment.incoming_moves.append(incoming_move) ... mix_shipment.incoming_moves.append(incoming_move)
>>> mix_shipment.click('receive') >>> mix_shipment.click('receive')
>>> mix_shipment.click('done') >>> mix_shipment.click('do')
>>> mix.reload() >>> mix.reload()
>>> len(mix.shipments) >>> len(mix.shipments)
1 1
>>> mix_return.click('wait') >>> mix_return.click('wait')
>>> mix_return.click('assign_try') >>> mix_return.click('assign_try')
>>> mix_return.click('done') >>> mix_return.click('do')
>>> move_return, = mix_return.moves >>> move_return, = mix_return.moves
>>> move_return.product.rec_name >>> move_return.product.rec_name
'product' 'product'
@@ -553,7 +553,7 @@ linked to invoices::
>>> for move in shipment.inventory_moves: >>> for move in shipment.inventory_moves:
... move.quantity = 5.0 ... move.quantity = 5.0
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> purchase.reload() >>> purchase.reload()
>>> invoice, = purchase.invoices >>> invoice, = purchase.invoices
>>> invoice_line, = invoice.lines >>> invoice_line, = invoice.lines
@@ -587,7 +587,7 @@ correctly linked to invoices::
>>> for move in shipment.inventory_moves: >>> for move in shipment.inventory_moves:
... move.quantity = 8.0 ... move.quantity = 8.0
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> purchase.reload() >>> purchase.reload()
>>> invoice, = purchase.invoices >>> invoice, = purchase.invoices
>>> invoice_line, = invoice.lines >>> invoice_line, = invoice.lines
@@ -157,7 +157,7 @@ Receive 4 products::
>>> move, = shipment.incoming_moves >>> move, = shipment.incoming_moves
>>> move.unit_price >>> move.unit_price
Decimal('5.7500') Decimal('5.7500')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> stock_in.reload() >>> stock_in.reload()
+4 -4
View File
@@ -15,7 +15,7 @@ class Production(ControlledMixin, metaclass=PoolMeta):
pattern['company'] = self.company.id pattern['company'] = self.company.id
if operation == 'run': if operation == 'run':
pattern['products'] = {m.product.id for m in self.inputs} pattern['products'] = {m.product.id for m in self.inputs}
elif operation == 'done': elif operation == 'do':
pattern['products'] = {m.product.id for m in self.outputs} pattern['products'] = {m.product.id for m in self.outputs}
return pattern return pattern
@@ -27,6 +27,6 @@ class Production(ControlledMixin, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@ControlledMixin.control('done', 'quality.wizard_production_inspect_done') @ControlledMixin.control('do', 'quality.wizard_production_inspect_do')
def done(cls, productions): def do(cls, productions):
return super().done(productions) return super().do(productions)
+30 -4
View File
@@ -167,17 +167,17 @@ class Control(DeactivableMixin, MatchMixin, ModelSQL, ModelView):
operations = fields.MultiSelection([ operations = fields.MultiSelection([
('stock.shipment.in:receive', "Supplier Shipment Received"), ('stock.shipment.in:receive', "Supplier Shipment Received"),
('stock.shipment.in:done', "Supplier Shipment Done"), ('stock.shipment.in:do', "Supplier Shipment Done"),
('stock.shipment.out:pick', "Customer Shipment Picked"), ('stock.shipment.out:pick', "Customer Shipment Picked"),
('stock.shipment.out:pack', "Customer Shipment Packed"), ('stock.shipment.out:pack', "Customer Shipment Packed"),
('stock.shipment.out.return:receive', ('stock.shipment.out.return:receive',
"Customer Shipment Return Received"), "Customer Shipment Return Received"),
('stock.shipment.out.return:done', ('stock.shipment.out.return:do',
"Customer Shipment Return Done"), "Customer Shipment Return Done"),
('stock.shipment.internal:ship', "Internal Shipment Shipped"), ('stock.shipment.internal:ship', "Internal Shipment Shipped"),
('stock.shipment.internal:done', "Internal Shipment Done"), ('stock.shipment.internal:do', "Internal Shipment Done"),
('production:run', "Production Run"), ('production:run', "Production Run"),
('production:done', "Production Done"), ('production:do', "Production Done"),
], "Operations", ], "Operations",
help="The operations for which the control is performed.") help="The operations for which the control is performed.")
frequency = fields.Float( frequency = fields.Float(
@@ -203,6 +203,32 @@ class Control(DeactivableMixin, MatchMixin, ModelSQL, ModelView):
points = fields.One2Many( points = fields.One2Many(
'quality.control.point', 'control', "Points", required=True) 'quality.control.point', 'control', "Points", required=True)
@classmethod
def __register__(cls, module):
table = cls.__table__()
transaction = Transaction()
cursor = transaction.connection.cursor()
update = transaction.connection.cursor()
super().__register__(module)
# Migration from 7.0: rename done button to do
for old, new in [
('stock.shipment.in:done', 'stock.shipment.in:do'),
('stock.shipment.out.return:done',
'stock.shipment.out.return:do'),
('stock.shipment.internal:done',
'stock.shipment.internal:do'),
('production:done', 'production:do'),
]:
cursor.execute(*table.select(
table.id, table.operations,
where=table.operations.like(f'%{old}%')))
for id_, operations in cursor:
update.execute(*table.update(
[table.operations],
operations.replace(old, new)))
@classmethod @classmethod
def default_frequency(cls): def default_frequency(cls):
return 1 return 1
+9 -9
View File
@@ -30,9 +30,9 @@ class ShipmentIn(ControlledShipmentMixin, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@ControlledMixin.control( @ControlledMixin.control(
'done', 'quality.wizard_stock_shipment_in_inspect_done') 'do', 'quality.wizard_stock_shipment_in_inspect_do')
def done(cls, shipments): def do(cls, shipments):
return super().done(shipments) return super().do(shipments)
class ShipmentOut(ControlledShipmentMixin, metaclass=PoolMeta): class ShipmentOut(ControlledShipmentMixin, metaclass=PoolMeta):
@@ -66,9 +66,9 @@ class ShipmentOutReturn(ControlledShipmentMixin, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@ControlledMixin.control( @ControlledMixin.control(
'done', 'quality.wizard_stock_shipment_out_return_inspect_done') 'do', 'quality.wizard_stock_shipment_out_return_inspect_do')
def done(cls, shipments): def do(cls, shipments):
return super().done(shipments) return super().do(shipments)
class ShipmentInternal(ControlledShipmentMixin, metaclass=PoolMeta): class ShipmentInternal(ControlledShipmentMixin, metaclass=PoolMeta):
@@ -84,6 +84,6 @@ class ShipmentInternal(ControlledShipmentMixin, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@ControlledMixin.control( @ControlledMixin.control(
'done', 'quality.wizard_stock_shipment_internal_inspect_done') 'do', 'quality.wizard_stock_shipment_internal_inspect_do')
def done(cls, shipments): def do(cls, shipments):
return super().done(shipments) return super().do(shipments)
+9 -9
View File
@@ -14,15 +14,15 @@ this repository contains the full copyright notices and license terms. -->
<field name="action" ref="wizard_stock_shipment_in_inspect_receive"/> <field name="action" ref="wizard_stock_shipment_in_inspect_receive"/>
</record> </record>
<record model="ir.action.wizard" id="wizard_stock_shipment_in_inspect_done"> <record model="ir.action.wizard" id="wizard_stock_shipment_in_inspect_do">
<field name="name">Inspect Done</field> <field name="name">Inspect Done</field>
<field name="wiz_name">quality.inspect</field> <field name="wiz_name">quality.inspect</field>
<field name="model">stock.shipment.in</field> <field name="model">stock.shipment.in</field>
</record> </record>
<record model="ir.action.keyword" id="wizard_stock_shipment_in_inspect_done_keyword1"> <record model="ir.action.keyword" id="wizard_stock_shipment_in_inspect_do_keyword1">
<field name="keyword">form_action</field> <field name="keyword">form_action</field>
<field name="model">stock.shipment.in,-1</field> <field name="model">stock.shipment.in,-1</field>
<field name="action" ref="wizard_stock_shipment_in_inspect_done"/> <field name="action" ref="wizard_stock_shipment_in_inspect_do"/>
</record> </record>
<record model="ir.action.keyword" id="act_quality_inspection_form_relate_keyword_stock_shipment_in"> <record model="ir.action.keyword" id="act_quality_inspection_form_relate_keyword_stock_shipment_in">
@@ -70,15 +70,15 @@ this repository contains the full copyright notices and license terms. -->
<field name="action" ref="wizard_stock_shipment_out_return_inspect_receive"/> <field name="action" ref="wizard_stock_shipment_out_return_inspect_receive"/>
</record> </record>
<record model="ir.action.wizard" id="wizard_stock_shipment_out_return_inspect_done"> <record model="ir.action.wizard" id="wizard_stock_shipment_out_return_inspect_do">
<field name="name">Inspect Done</field> <field name="name">Inspect Done</field>
<field name="wiz_name">quality.inspect</field> <field name="wiz_name">quality.inspect</field>
<field name="model">stock.shipment.out.return</field> <field name="model">stock.shipment.out.return</field>
</record> </record>
<record model="ir.action.keyword" id="wizard_stock_shipment_out_return_inspect_done_keyword1"> <record model="ir.action.keyword" id="wizard_stock_shipment_out_return_inspect_do_keyword1">
<field name="keyword">form_action</field> <field name="keyword">form_action</field>
<field name="model">stock.shipment.out.return,-1</field> <field name="model">stock.shipment.out.return,-1</field>
<field name="action" ref="wizard_stock_shipment_out_return_inspect_done"/> <field name="action" ref="wizard_stock_shipment_out_return_inspect_do"/>
</record> </record>
<record model="ir.action.keyword" id="act_quality_inspection_form_relate_keyword_stock_shipment_out_return"> <record model="ir.action.keyword" id="act_quality_inspection_form_relate_keyword_stock_shipment_out_return">
@@ -98,15 +98,15 @@ this repository contains the full copyright notices and license terms. -->
<field name="action" ref="wizard_stock_shipment_internal_inspect_ship"/> <field name="action" ref="wizard_stock_shipment_internal_inspect_ship"/>
</record> </record>
<record model="ir.action.wizard" id="wizard_stock_shipment_internal_inspect_done"> <record model="ir.action.wizard" id="wizard_stock_shipment_internal_inspect_do">
<field name="name">Inspect Done</field> <field name="name">Inspect Done</field>
<field name="wiz_name">quality.inspect</field> <field name="wiz_name">quality.inspect</field>
<field name="model">stock.shipment.internal</field> <field name="model">stock.shipment.internal</field>
</record> </record>
<record model="ir.action.keyword" id="wizard_stock_shipment_internal_inspect_done_keyword1"> <record model="ir.action.keyword" id="wizard_stock_shipment_internal_inspect_do_keyword1">
<field name="keyword">form_action</field> <field name="keyword">form_action</field>
<field name="model">stock.shipment.internal,-1</field> <field name="model">stock.shipment.internal,-1</field>
<field name="action" ref="wizard_stock_shipment_internal_inspect_done"/> <field name="action" ref="wizard_stock_shipment_internal_inspect_do"/>
</record> </record>
<record model="ir.action.keyword" id="act_quality_inspection_form_relate_keyword_stock_shipment_internal"> <record model="ir.action.keyword" id="act_quality_inspection_form_relate_keyword_stock_shipment_internal">
+2 -2
View File
@@ -53,8 +53,8 @@ class ShipmentOut(metaclass=PoolMeta):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@process_sale('outgoing_moves') @process_sale('outgoing_moves')
def done(cls, shipments): def do(cls, shipments):
super(ShipmentOut, cls).done(shipments) super().do(shipments)
@classmethod @classmethod
@ModelView.button @ModelView.button
+4 -4
View File
@@ -260,7 +260,7 @@ Validate Shipments::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
Open customer invoice:: Open customer invoice::
@@ -356,7 +356,7 @@ Ship 3 products::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -496,7 +496,7 @@ Checking Shipments::
>>> mix_shipment.click('assign_try') >>> mix_shipment.click('assign_try')
>>> mix_shipment.click('pick') >>> mix_shipment.click('pick')
>>> mix_shipment.click('pack') >>> mix_shipment.click('pack')
>>> mix_shipment.click('done') >>> mix_shipment.click('do')
>>> move_shipment, = mix_shipment.outgoing_moves >>> move_shipment, = mix_shipment.outgoing_moves
>>> move_shipment.product.rec_name >>> move_shipment.product.rec_name
'product' 'product'
@@ -644,7 +644,7 @@ to invoices::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> sale.reload() >>> sale.reload()
>>> invoice, = sale.invoices >>> invoice, = sale.invoices
>>> invoice_line, = invoice.lines >>> invoice_line, = invoice.lines
@@ -134,7 +134,7 @@ Make a partial shipment::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> sale.reload() >>> sale.reload()
>>> len(sale.shipments) >>> len(sale.shipments)
@@ -152,7 +152,7 @@ Ship backorder::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> sale.reload() >>> sale.reload()
>>> len(sale.shipments) >>> len(sale.shipments)
@@ -116,7 +116,7 @@ Ship the gift card::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
Traceback (most recent call last): Traceback (most recent call last):
... ...
MoveGiftCardValidationError: ... MoveGiftCardValidationError: ...
@@ -126,4 +126,4 @@ Ship the gift card::
>>> gift_card.value >>> gift_card.value
Decimal('20.00') Decimal('20.00')
>>> move.save() >>> move.save()
>>> shipment.click('done') >>> shipment.click('do')
+2 -2
View File
@@ -216,12 +216,12 @@ class ShipmentOut(ShipmentCostSaleMixin, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, shipments): def do(cls, shipments):
for shipment in shipments: for shipment in shipments:
shipment.cost_sale = shipment.cost_sale_used shipment.cost_sale = shipment.cost_sale_used
shipment.cost_sale_currency = shipment.cost_sale_currency_used shipment.cost_sale_currency = shipment.cost_sale_currency_used
cls.save(shipments) cls.save(shipments)
super().done(shipments) super().do(shipments)
@classmethod @classmethod
@ModelView.button @ModelView.button
@@ -162,7 +162,7 @@ Send products::
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.state >>> shipment.state
'packed' 'packed'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -185,7 +185,7 @@ Send missing products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> sale.reload() >>> sale.reload()
>>> len(sale.invoices) >>> len(sale.invoices)
2 2
@@ -274,7 +274,7 @@ Send products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -318,7 +318,7 @@ Send products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -113,7 +113,7 @@ Sell product with no shipment cost::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> move, = shipment.outgoing_moves >>> move, = shipment.outgoing_moves
@@ -145,7 +145,7 @@ Sell product with cost on shipment::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> move, = shipment.outgoing_moves >>> move, = shipment.outgoing_moves
@@ -180,7 +180,7 @@ Sell product with cost on order::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> move, = shipment.outgoing_moves >>> move, = shipment.outgoing_moves
@@ -149,7 +149,7 @@ Check the shipments::
... shipment.click('assign_try') ... shipment.click('assign_try')
... shipment.click('pick') ... shipment.click('pick')
... shipment.click('pack') ... shipment.click('pack')
... shipment.click('done') ... shipment.click('do')
Now we'll use the same scenario with the grouped customer:: Now we'll use the same scenario with the grouped customer::
@@ -107,7 +107,7 @@ Over ship 12 products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
No new shipment as shipped inside tolerance:: No new shipment as shipped inside tolerance::
@@ -82,7 +82,7 @@ Under ship 5 products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
Under ship 4 products:: Under ship 4 products::
@@ -93,7 +93,7 @@ Under ship 4 products::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
No new shipment as shipped inside tolerance:: No new shipment as shipped inside tolerance::
+2 -2
View File
@@ -13,8 +13,8 @@ class ShipmentIn(metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, shipments): def do(cls, shipments):
super(ShipmentIn, cls).done(shipments) super().do(shipments)
# Assigned sale move lines # Assigned sale move lines
for shipment in shipments: for shipment in shipments:
@@ -180,7 +180,7 @@ Receive 100 products::
>>> shipment.incoming_moves.append(move) >>> shipment.incoming_moves.append(move)
>>> move.quantity = 100 >>> move.quantity = 100
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> set_user(sale_user) >>> set_user(sale_user)
@@ -251,7 +251,7 @@ not create a new purchase request::
>>> changing_template.save() >>> changing_template.save()
>>> set_user(stock_user) >>> set_user(stock_user)
>>> shipment.click('done') >>> shipment.click('do')
>>> set_user(purchase_user) >>> set_user(purchase_user)
>>> len(PurchaseRequest.find([('product', '=', changing_product.id)])) >>> len(PurchaseRequest.find([('product', '=', changing_product.id)]))
0 0
@@ -1,3 +1,4 @@
* Rename 'done' button to 'do'
Version 7.0.0 - 2023-10-30 Version 7.0.0 - 2023-10-30
-------------------------- --------------------------
+2 -2
View File
@@ -203,7 +203,7 @@ class ShipmentDrop(
'invisible': Eval('state') != 'waiting', 'invisible': Eval('state') != 'waiting',
'depends': ['state'], 'depends': ['state'],
}, },
'done': { 'do': {
'invisible': Eval('state') != 'shipped', 'invisible': Eval('state') != 'shipped',
'depends': ['state'], 'depends': ['state'],
}, },
@@ -504,7 +504,7 @@ class ShipmentDrop(
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@process_sale('customer_moves') @process_sale('customer_moves')
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Move = pool.get('stock.move') Move = pool.get('stock.move')
Date = pool.get('ir.date') Date = pool.get('ir.date')
+2 -2
View File
@@ -163,8 +163,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.button" id="shipment_drop_done_button"> <record model="ir.model.button" id="shipment_drop_done_button">
<field name="model">stock.shipment.drop</field> <field name="model">stock.shipment.drop</field>
<field name="name">done</field> <field name="name">do</field>
<field name="string">Done</field> <field name="string">Complete</field>
<field name="confirm">Are you sure you want to complete the shipment?</field> <field name="confirm">Are you sure you want to complete the shipment?</field>
</record> </record>
@@ -211,7 +211,7 @@ Receiving only 100 products::
... if s.state == 'shipped'] ... if s.state == 'shipped']
>>> set_user(stock_user) >>> set_user(stock_user)
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> move, = shipment.customer_moves >>> move, = shipment.customer_moves
@@ -364,7 +364,7 @@ from stock::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> set_user(sale_user) >>> set_user(sale_user)
>>> sale.reload() >>> sale.reload()
@@ -35,6 +35,6 @@ this repository contains the full copyright notices and license terms. -->
<button name="draft"/> <button name="draft"/>
<button name="wait" icon="tryton-forward"/> <button name="wait" icon="tryton-forward"/>
<button name="ship" icon="tryton-forward"/> <button name="ship" icon="tryton-forward"/>
<button name="done" icon="tryton-ok"/> <button name="do" icon="tryton-ok"/>
</group> </group>
</form> </form>
+2 -2
View File
@@ -79,8 +79,8 @@ class Production(metaclass=PoolMeta):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@process_sale_supply @process_sale_supply
def done(cls, productions): def do(cls, productions):
super().done(productions) super().do(productions)
for production in productions: for production in productions:
production.assign_supplied() production.assign_supplied()
@@ -146,7 +146,7 @@ Start the production::
Finish the production:: Finish the production::
>>> production.click('done') >>> production.click('do')
>>> shipment.reload() >>> shipment.reload()
>>> move, = shipment.outgoing_moves >>> move, = shipment.outgoing_moves
+1
View File
@@ -1,3 +1,4 @@
* Rename 'done' button to 'do'
* Add location name fields to move * Add location name fields to move
* Unify shipment assignation scheduled jobs * Unify shipment assignation scheduled jobs
* Fill shipment number only in waiting state * Fill shipment number only in waiting state
+12 -12
View File
@@ -477,7 +477,7 @@ class ShipmentIn(
'invisible': Eval('state') != 'draft', 'invisible': Eval('state') != 'draft',
'depends': ['state'], 'depends': ['state'],
}, },
'done': { 'do': {
'invisible': Eval('state') != 'received', 'invisible': Eval('state') != 'received',
'depends': ['state'], 'depends': ['state'],
}, },
@@ -730,13 +730,13 @@ class ShipmentIn(
to_do = [s for s in shipments to_do = [s for s in shipments
if s.warehouse_storage == s.warehouse_input] if s.warehouse_storage == s.warehouse_input]
if to_do: if to_do:
cls.done(to_do) cls.do(to_do)
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@set_employee('done_by') @set_employee('done_by')
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Move = pool.get('stock.move') Move = pool.get('stock.move')
Date = pool.get('ir.date') Date = pool.get('ir.date')
@@ -898,7 +898,7 @@ class ShipmentInReturn(ShipmentAssignMixin, Workflow, ModelSQL, ModelView):
'tryton-back', 'tryton-forward'), 'tryton-back', 'tryton-forward'),
'depends': ['state'], 'depends': ['state'],
}, },
'done': { 'do': {
'invisible': Eval('state') != 'assigned', 'invisible': Eval('state') != 'assigned',
'depends': ['state'], 'depends': ['state'],
}, },
@@ -1045,7 +1045,7 @@ class ShipmentInReturn(ShipmentAssignMixin, Workflow, ModelSQL, ModelView):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@set_employee('done_by') @set_employee('done_by')
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Move = pool.get('stock.move') Move = pool.get('stock.move')
Date = pool.get('ir.date') Date = pool.get('ir.date')
@@ -1349,7 +1349,7 @@ class ShipmentOut(
'depends': [ 'depends': [
'state', 'warehouse_storage', 'warehouse_output'], 'state', 'warehouse_storage', 'warehouse_output'],
}, },
'done': { 'do': {
'invisible': Eval('state') != 'packed', 'invisible': Eval('state') != 'packed',
}, },
'assign_wizard': { 'assign_wizard': {
@@ -1682,7 +1682,7 @@ class ShipmentOut(
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@set_employee('done_by') @set_employee('done_by')
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Move = pool.get('stock.move') Move = pool.get('stock.move')
Date = pool.get('ir.date') Date = pool.get('ir.date')
@@ -1989,7 +1989,7 @@ class ShipmentOutReturn(
'invisible': Eval('state') != 'draft', 'invisible': Eval('state') != 'draft',
'depends': ['state'], 'depends': ['state'],
}, },
'done': { 'do': {
'invisible': Eval('state') != 'received', 'invisible': Eval('state') != 'received',
'depends': ['state'], 'depends': ['state'],
}, },
@@ -2185,13 +2185,13 @@ class ShipmentOutReturn(
to_do = [s for s in shipments to_do = [s for s in shipments
if s.warehouse_storage == s.warehouse_input] if s.warehouse_storage == s.warehouse_input]
if to_do: if to_do:
cls.done(to_do) cls.do(to_do)
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@set_employee('done_by') @set_employee('done_by')
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Move = pool.get('stock.move') Move = pool.get('stock.move')
Date = pool.get('ir.date') Date = pool.get('ir.date')
@@ -2496,7 +2496,7 @@ class ShipmentInternal(
| ~Eval('transit_location')), | ~Eval('transit_location')),
'depends': ['state', 'transit_location'], 'depends': ['state', 'transit_location'],
}, },
'done': { 'do': {
'invisible': If( 'invisible': If(
~Eval('transit_location'), ~Eval('transit_location'),
Eval('state') != 'assigned', Eval('state') != 'assigned',
@@ -2844,7 +2844,7 @@ class ShipmentInternal(
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@set_employee('done_by') @set_employee('done_by')
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Move = pool.get('stock.move') Move = pool.get('stock.move')
Date = pool.get('ir.date') Date = pool.get('ir.date')
+10 -10
View File
@@ -569,8 +569,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.button" id="shipment_in_done_button"> <record model="ir.model.button" id="shipment_in_done_button">
<field name="model">stock.shipment.in</field> <field name="model">stock.shipment.in</field>
<field name="name">done</field> <field name="name">do</field>
<field name="string">Done</field> <field name="string">Complete</field>
</record> </record>
<record model="ir.model.access" id="access_shipment_out"> <record model="ir.model.access" id="access_shipment_out">
@@ -630,8 +630,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.button" id="shipment_out_done_button"> <record model="ir.model.button" id="shipment_out_done_button">
<field name="model">stock.shipment.out</field> <field name="model">stock.shipment.out</field>
<field name="name">done</field> <field name="name">do</field>
<field name="string">Done</field> <field name="string">Complete</field>
<field name="confirm">Are you sure you want to complete the shipment?</field> <field name="confirm">Are you sure you want to complete the shipment?</field>
</record> </record>
@@ -701,8 +701,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.button" id="shipment_internal_done_button"> <record model="ir.model.button" id="shipment_internal_done_button">
<field name="model">stock.shipment.internal</field> <field name="model">stock.shipment.internal</field>
<field name="name">done</field> <field name="name">do</field>
<field name="string">Done</field> <field name="string">Complete</field>
</record> </record>
<record model="ir.model.button" id="shipment_internal_assign_try_button"> <record model="ir.model.button" id="shipment_internal_assign_try_button">
@@ -784,8 +784,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.button" id="shipment_out_return_done_button"> <record model="ir.model.button" id="shipment_out_return_done_button">
<field name="model">stock.shipment.out.return</field> <field name="model">stock.shipment.out.return</field>
<field name="name">done</field> <field name="name">do</field>
<field name="string">Done</field> <field name="string">Complete</field>
</record> </record>
<record model="ir.model.access" id="access_shipment_in_return"> <record model="ir.model.access" id="access_shipment_in_return">
@@ -833,8 +833,8 @@ this repository contains the full copyright notices and license terms. -->
<record model="ir.model.button" id="shipment_in_return_done_button"> <record model="ir.model.button" id="shipment_in_return_done_button">
<field name="model">stock.shipment.in.return</field> <field name="model">stock.shipment.in.return</field>
<field name="name">done</field> <field name="name">do</field>
<field name="string">Done</field> <field name="string">Complete</field>
<field name="confirm">Are you sure you want to complete the shipment?</field> <field name="confirm">Are you sure you want to complete the shipment?</field>
</record> </record>
@@ -78,7 +78,7 @@ Receive a bunch of products::
>>> move.currency = company.currency >>> move.currency = company.currency
>>> shipment_in.save() >>> shipment_in.save()
>>> shipment_in.click('receive') >>> shipment_in.click('receive')
>>> shipment_in.click('done') >>> shipment_in.click('do')
Testing the report:: Testing the report::
@@ -114,7 +114,7 @@ Add two shipment lines of same product and go through the workflow::
>>> shipment_out.click('assign_try') >>> shipment_out.click('assign_try')
>>> shipment_out.click('pick') >>> shipment_out.click('pick')
>>> shipment_out.click('pack') >>> shipment_out.click('pack')
>>> shipment_out.click('done') >>> shipment_out.click('do')
Testing the reports:: Testing the reports::
@@ -152,7 +152,7 @@ Create an internal shipment::
>>> shipment_internal.save() >>> shipment_internal.save()
>>> shipment_internal.click('wait') >>> shipment_internal.click('wait')
>>> shipment_internal.click('assign_try') >>> shipment_internal.click('assign_try')
>>> shipment_internal.click('done') >>> shipment_internal.click('do')
Testing the report:: Testing the report::
@@ -83,7 +83,7 @@ Change inventory quantity and try to finish::
>>> inventory_move, = shipment.inventory_moves >>> inventory_move, = shipment.inventory_moves
>>> inventory_move.quantity = 11 >>> inventory_move.quantity = 11
>>> shipment.click('done') >>> shipment.click('do')
Traceback (most recent call last): Traceback (most recent call last):
... ...
ShipmentCheckQuantityWarning: ... ShipmentCheckQuantityWarning: ...
@@ -100,7 +100,7 @@ Add extra product to inventory and try to finish::
>>> move.quantity = 1 >>> move.quantity = 1
>>> move.from_location = input_loc >>> move.from_location = input_loc
>>> move.to_location = storage_loc >>> move.to_location = storage_loc
>>> shipment.click('done') >>> shipment.click('do')
Traceback (most recent call last): Traceback (most recent call last):
... ...
ShipmentCheckQuantityWarning: ... ShipmentCheckQuantityWarning: ...
@@ -110,7 +110,7 @@ Add extra product to inventory and try to finish::
Finish the shipment:: Finish the shipment::
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> len(shipment.incoming_moves) >>> len(shipment.incoming_moves)
@@ -119,7 +119,7 @@ Create Internal Shipment from lost_found location::
>>> lost_found_shipment.click('assign_try') >>> lost_found_shipment.click('assign_try')
>>> lost_found_shipment.state >>> lost_found_shipment.state
'assigned' 'assigned'
>>> lost_found_shipment.click('done') >>> lost_found_shipment.click('do')
>>> lost_found_shipment.state >>> lost_found_shipment.state
'done' 'done'
@@ -129,7 +129,7 @@ Check that now we can finish the older shipment::
>>> assertEqual(shipment.assigned_by, employee) >>> assertEqual(shipment.assigned_by, employee)
>>> shipment.done_by >>> shipment.done_by
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> assertEqual(shipment.done_by, employee) >>> assertEqual(shipment.done_by, employee)
@@ -96,7 +96,7 @@ Create Internal Shipment with lead time::
>>> shipment.outgoing_moves[0].state >>> shipment.outgoing_moves[0].state
'done' 'done'
>>> assertEqual(shipment.outgoing_moves[0].effective_date, yesterday) >>> assertEqual(shipment.outgoing_moves[0].effective_date, yesterday)
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.incoming_moves[0].state >>> shipment.incoming_moves[0].state
'done' 'done'
>>> assertEqual(shipment.incoming_moves[0].effective_date, today) >>> assertEqual(shipment.incoming_moves[0].effective_date, today)
@@ -190,7 +190,7 @@ Ignore non assigned moves and pack shipment::
Set the state as Done:: Set the state as Done::
>>> shipment_out.click('done') >>> shipment_out.click('do')
>>> assertEqual(shipment_out.done_by, employee) >>> assertEqual(shipment_out.done_by, employee)
>>> [m.state for m in shipment_out.outgoing_moves] >>> [m.state for m in shipment_out.outgoing_moves]
['done'] ['done']
@@ -263,7 +263,7 @@ Finish the shipment::
Finish the shipment:: Finish the shipment::
>>> shipment_out.click('done') >>> shipment_out.click('do')
>>> shipment_out.state >>> shipment_out.state
'done' 'done'
>>> outgoing_move, = shipment_out.outgoing_moves >>> outgoing_move, = shipment_out.outgoing_moves
@@ -85,7 +85,7 @@ Receive shipment::
Finish the shipment:: Finish the shipment::
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> len(shipment.incoming_moves) >>> len(shipment.incoming_moves)
+1 -1
View File
@@ -43,7 +43,7 @@ this repository contains the full copyright notices and license terms. -->
<group col="-1" colspan="2" id="buttons"> <group col="-1" colspan="2" id="buttons">
<button name="cancel" icon="tryton-cancel"/> <button name="cancel" icon="tryton-cancel"/>
<button name="receive" icon="tryton-forward"/> <button name="receive" icon="tryton-forward"/>
<button name="done" icon="tryton-ok"/> <button name="do" icon="tryton-ok"/>
<button name="draft" icon="tryton-undo"/> <button name="draft" icon="tryton-undo"/>
</group> </group>
</form> </form>
@@ -36,6 +36,6 @@ this repository contains the full copyright notices and license terms. -->
<button name="draft" icon="tryton-forward"/> <button name="draft" icon="tryton-forward"/>
<button name="wait"/> <button name="wait"/>
<button name="assign_wizard" icon="tryton-forward"/> <button name="assign_wizard" icon="tryton-forward"/>
<button name="done" icon="tryton-ok"/> <button name="do" icon="tryton-ok"/>
</group> </group>
</form> </form>
@@ -47,6 +47,6 @@ this repository contains the full copyright notices and license terms. -->
<button name="wait"/> <button name="wait"/>
<button name="assign_wizard" icon="tryton-forward"/> <button name="assign_wizard" icon="tryton-forward"/>
<button name="ship" icon="tryton-ok"/> <button name="ship" icon="tryton-ok"/>
<button name="done" icon="tryton-ok"/> <button name="do" icon="tryton-ok"/>
</group> </group>
</form> </form>
+1 -1
View File
@@ -48,6 +48,6 @@ this repository contains the full copyright notices and license terms. -->
<button name="assign_wizard" icon="tryton-forward"/> <button name="assign_wizard" icon="tryton-forward"/>
<button name="pick"/> <button name="pick"/>
<button name="pack" icon="tryton-forward"/> <button name="pack" icon="tryton-forward"/>
<button name="done" icon="tryton-ok"/> <button name="do" icon="tryton-ok"/>
</group> </group>
</form> </form>
@@ -43,6 +43,6 @@ this repository contains the full copyright notices and license terms. -->
<button name="cancel" icon="tryton-cancel"/> <button name="cancel" icon="tryton-cancel"/>
<button name="draft" icon="tryton-clear"/> <button name="draft" icon="tryton-clear"/>
<button name="receive" icon="tryton-forward"/> <button name="receive" icon="tryton-forward"/>
<button name="done" icon="tryton-ok"/> <button name="do" icon="tryton-ok"/>
</group> </group>
</form> </form>
@@ -125,7 +125,7 @@ Fill supplier consignment location::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.state >>> shipment.state
'assigned' 'assigned'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -145,7 +145,7 @@ Use supplier consignment stock::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.state >>> shipment.state
'assigned' 'assigned'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -202,7 +202,7 @@ Fill customer consignment location::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.state >>> shipment.state
'assigned' 'assigned'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -222,7 +222,7 @@ Use customer consignment stock::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.state >>> shipment.state
'assigned' 'assigned'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -112,7 +112,7 @@ Fill supplier consignment location::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.state >>> shipment.state
'assigned' 'assigned'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -132,7 +132,7 @@ Use supplier consignment stock by customer::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.state >>> shipment.state
'assigned' 'assigned'
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> move, = shipment.moves >>> move, = shipment.moves
+6 -6
View File
@@ -185,7 +185,7 @@ class ShipmentInternal(metaclass=PoolMeta):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@clear_location_assignation @clear_location_assignation
def done(cls, shipments): def do(cls, shipments):
pool = Pool() pool = Pool()
Location = pool.get('stock.location') Location = pool.get('stock.location')
to_write = [] to_write = []
@@ -198,7 +198,7 @@ class ShipmentInternal(metaclass=PoolMeta):
}) })
if to_write: if to_write:
Location.write(*to_write) Location.write(*to_write)
super(ShipmentInternal, cls).done(shipments) super().do(shipments)
@classmethod @classmethod
@ModelView.button @ModelView.button
@@ -244,8 +244,8 @@ class ShipmentOut(metaclass=PoolMeta):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@deactivate_empty_location @deactivate_empty_location
def done(cls, shipments): def do(cls, shipments):
super(ShipmentOut, cls).done(shipments) super().do(shipments)
class ShipmentInReturn(metaclass=PoolMeta): class ShipmentInReturn(metaclass=PoolMeta):
@@ -255,8 +255,8 @@ class ShipmentInReturn(metaclass=PoolMeta):
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
@deactivate_empty_location @deactivate_empty_location
def done(cls, shipments): def do(cls, shipments):
super(ShipmentInReturn, cls).done(shipments) super().do(shipments)
class Supply(metaclass=PoolMeta): class Supply(metaclass=PoolMeta):
@@ -49,7 +49,7 @@ Move pallet from storage1 to storage2::
>>> assertEqual(pallet.assigned_by, shipment) >>> assertEqual(pallet.assigned_by, shipment)
>>> assertEqual(pallet.parent, storage1) >>> assertEqual(pallet.parent, storage1)
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
>>> pallet.reload() >>> pallet.reload()
@@ -90,7 +90,7 @@ Concurrently move pallet::
... ...
AssignError: ... AssignError: ...
>>> shipment1.click('done') >>> shipment1.click('do')
Add lead time between warehouses:: Add lead time between warehouses::
@@ -119,6 +119,6 @@ Move pallet from storage1 to storage2 with lead_time::
>>> pallet.reload() >>> pallet.reload()
>>> assertEqual(pallet.parent, shipment.transit_location) >>> assertEqual(pallet.parent, shipment.transit_location)
>>> shipment.click('done') >>> shipment.click('do')
>>> pallet.reload() >>> pallet.reload()
>>> assertEqual(pallet.parent, warehouse2.storage_location) >>> assertEqual(pallet.parent, warehouse2.storage_location)
@@ -134,7 +134,7 @@ Ship 1 product from the locations::
>>> shipment.click('assign_try') >>> shipment.click('assign_try')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
Check empty non movable location are still active:: Check empty non movable location are still active::
@@ -81,7 +81,7 @@ Change lot and try to finish::
>>> incoming_move, = shipment.inventory_moves >>> incoming_move, = shipment.inventory_moves
>>> assertEqual(incoming_move.lot, lot1) >>> assertEqual(incoming_move.lot, lot1)
>>> incoming_move.lot = lot2 >>> incoming_move.lot = lot2
>>> shipment.click('done') >>> shipment.click('do')
Traceback (most recent call last): Traceback (most recent call last):
... ...
ShipmentCheckQuantityWarning: ... ShipmentCheckQuantityWarning: ...
@@ -91,6 +91,6 @@ Change lot and try to finish::
Finish the shipment:: Finish the shipment::
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -76,7 +76,7 @@ Create an incoming shipment without lot::
>>> move2.from_location = supplier_loc >>> move2.from_location = supplier_loc
>>> move2.to_location = input_loc >>> move2.to_location = input_loc
>>> shipment.click('receive') >>> shipment.click('receive')
>>> shipment.click('done') >>> shipment.click('do')
Let's ship a product with a lot:: Let's ship a product with a lot::
@@ -102,7 +102,7 @@ Let's ship a product with a lot::
>>> move.lot = lot >>> move.lot = lot
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
Let's ship now two times the same lot:: Let's ship now two times the same lot::
+4 -4
View File
@@ -438,8 +438,8 @@ class ShipmentOut(PackageMixin, object, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, shipments): def do(cls, shipments):
super(ShipmentOut, cls).done(shipments) super().do(shipments)
cls.check_packages(shipments) cls.check_packages(shipments)
@property @property
@@ -485,8 +485,8 @@ class ShipmentInReturn(PackageMixin, object, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, shipments): def do(cls, shipments):
super(ShipmentInReturn, cls).done(shipments) super().do(shipments)
cls.check_packages(shipments) cls.check_packages(shipments)
@property @property
+2 -2
View File
@@ -288,8 +288,8 @@ class ShipmentInReturn(ShippingMixin, metaclass=PoolMeta):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, shipments): def do(cls, shipments):
super().done(shipments) super().do(shipments)
cls.check_no_carrier(shipments) cls.check_no_carrier(shipments)
@property @property
+2 -2
View File
@@ -234,12 +234,12 @@ class ShipmentOutCostMixin(ShipmentCostMixin):
@classmethod @classmethod
@ModelView.button @ModelView.button
@Workflow.transition('done') @Workflow.transition('done')
def done(cls, shipments): def do(cls, shipments):
for shipment in shipments: for shipment in shipments:
shipment.cost = shipment.cost_used shipment.cost = shipment.cost_used
shipment.cost_currency = shipment.cost_currency_used shipment.cost_currency = shipment.cost_currency_used
cls.save(shipments) cls.save(shipments)
super().done(shipments) super().do(shipments)
cls.set_shipment_cost(shipments) cls.set_shipment_cost(shipments)
@@ -88,7 +88,7 @@ Create a customer shipment::
>>> shipment.cost_edit = True >>> shipment.cost_edit = True
>>> shipment.cost_used = Decimal('5') >>> shipment.cost_used = Decimal('5')
>>> shipment.cost_currency_used = company.currency >>> shipment.cost_currency_used = company.currency
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -110,7 +110,7 @@ Create a customer shipment::
>>> shipment.click('assign_force') >>> shipment.click('assign_force')
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'
@@ -542,7 +542,7 @@ Make a partial shipment::
>>> move.quantity = 3 >>> move.quantity = 3
>>> shipment.click('pick') >>> shipment.click('pick')
>>> shipment.click('pack') >>> shipment.click('pack')
>>> shipment.click('done') >>> shipment.click('do')
>>> shipment.state >>> shipment.state
'done' 'done'