From c0291a0c111042870d216f611dc09f61e337a948 Mon Sep 17 00:00:00 2001 From: sinergia Date: Wed, 17 May 2023 10:09:23 -0500 Subject: [PATCH] update shipmentOut --- move.py | 44 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/move.py b/move.py index 88228bd..457e829 100644 --- a/move.py +++ b/move.py @@ -13,10 +13,12 @@ class Move(metaclass=PoolMeta): __name__ = "stock.move" - return_equipment = fields.Boolean("Devolución") + return_equipment = fields.Boolean("Devolución", states={'invisible': If(~Eval('product_equipment'), True), + 'readonly': (Eval('state').in_(['cancelled', 'done'])),} + ) equipment = fields.Many2One('optical_equipment.equipment', "Equipment", domain=[If(Eval('return_equipment', True), - ('state', 'in', ['uncontrated','contrated']), + ('state', 'in', ['uncontrated','contrated']), ('state', '=', 'registred')), ('product','=', Eval('product')) ], @@ -30,6 +32,10 @@ class Move(metaclass=PoolMeta): 'get_equipment_serial') product_equipment = fields.Function(fields.Boolean("It Equipment"),'get_product_equipment') + @classmethod + def __setup__(cls): + super(Move, cls).__setup__() + cls.origin.states['required']=True @fields.depends('product') def get_product_equipment(self, product): @@ -93,7 +99,6 @@ class ShipmentOut(metaclass=PoolMeta): Move = pool.get('stock.move') Date = pool.get('ir.date') Locations = pool.get('stock.location') - Equipments = pool.get('optical_equipment.equipment') for shipment in shipments: for move in shipment.inventory_moves: @@ -170,6 +175,8 @@ class ShipmentOut(metaclass=PoolMeta): maintenanceService.save() else: maintenanceService = maintenanceService[0] + maintenanceService.state = 'draft' + maintenanceService.save() if serial == True: for move in shipment.inventory_moves: @@ -231,7 +238,36 @@ class ShipmentOutReturn(metaclass=PoolMeta): service_maintenance_initial = fields.Boolean('Maintenance Initial', states={'readonly': True}) sale_type = fields.Char('Type sale origin') - + @classmethod + @ModelView.button + @Workflow.transition('received') + @set_employee('received_by') + def receive(cls, shipments): + Move = Pool().get('stock.move') + Equipments = Pool().get('optical_equipment.equipment') + Locations = Pool().get('stock.location') + Move.do([m for s in shipments for m in s.incoming_moves]) + for s in shipments: + for m in s.incoming_moves: + if m.equipment: + equipment = m.equipment + Id = equipment.id + equipment = Equipments.search(['id', '=',Id])[0] + equipment.propietary = s.company.party.id + equipment.propietary_address= s.company.party.addresses[0].id + equipment.location = m.to_location.id + equipment.state="registred" + equipment.save() + + cls.create_inventory_moves(shipments) + # Set received state to allow done transition + cls.write(shipments, {'state': 'received'}) + to_do = [s for s in shipments + if s.warehouse_storage == s.warehouse_input] + + + if to_do: + cls.done(to_do) class PickingListDeliveryReport(CompanyReport): __name__ = 'stock.shipment.out.picking_list1'