diff --git a/__init__.py b/__init__.py index 888d1a1..8156e00 100644 --- a/__init__.py +++ b/__init__.py @@ -12,7 +12,7 @@ def register(): purchase.Purchase, purchase.Line, sale.Sale, - sale.SaleLine, + #sale.SaleLine, sale.CreateSubscriptionStart, equipment.OpticalEquipment, equipment.EquipmentMaintenance, diff --git a/move.py b/move.py index 5b0fab7..0aeb8b1 100644 --- a/move.py +++ b/move.py @@ -2,21 +2,44 @@ from trytond.model import fields, ModelSQL, ModelView, Workflow, dualmethod from trytond.modules.company.model import employee_field, set_employee from trytond.pool import Pool, PoolMeta from trytond.pyson import Eval, If - +from trytond.exceptions import UserError +from itertools import groupby +from trytond.transaction import Transaction + class Move(metaclass=PoolMeta): "Stock Move" __name__ = "stock.move" + product_equipment = fields.Function(fields.Boolean("It Equipment"),'get_product_equipment') equipment = fields.Many2One('optical_equipment.equipment', "Equipment", domain=[('state', '=', 'registred'), ('product','=', Eval('product')) ], - states={'invisible': If(~Eval('product_equipment'), True)},) + states={'invisible': If(~Eval('product_equipment'), True),}, + depends=['product_equipment']) - equipment_serial = fields.Char('Serial',states={'readonly': True}) + equipment_serial = fields.Function(fields.Char('Serial', + states={'readonly': True, + 'invisible': If(~Eval('product_equipment'), True)}, + depends=['product_equipment']), + 'get_equipment_serial') - + + @fields.depends('product') + def get_product_equipment(self, product): + if self.product.equipment: + return True + else: + return False + + @fields.depends('equipment') + def get_equipment_serial(self, equipment): + if self.equipment: + return self.equipment.serial + else: + return None + @fields.depends('product', 'equipment', 'uom') def on_change_product(self): if self.product: @@ -25,12 +48,11 @@ class Move(metaclass=PoolMeta): self.uom = self.product.default_uom - + @fields.depends(methods=['get_equipment_serial']) def on_change_equipment(self): if self.equipment: self.product = self.equipment.product.id - self.equipment_serial = self.equipment.serial - + self.equipment_serial = self.get_equipment_serial(self.equipment) else: self.equipment_serial = None @@ -41,6 +63,22 @@ class ShipmentOut(metaclass=PoolMeta): __name__ = 'stock.shipment.out' + @classmethod + @ModelView.button + @Workflow.transition('picked') + @set_employee('picked_by') + def pick(cls, shipments): + pool = Pool() + Move = pool.get('stock.move') + + raise UserError(str(dir(Move))) + + Move.delete([ + m for s in shipments for m in s.inventory_moves + if m.state == 'staging']) + Move.do([m for s in shipments for m in s.inventory_moves]) + cls._sync_inventory_to_outgoing(shipments, quantity=True) + @classmethod @ModelView.button @Workflow.transition('done') @@ -48,21 +86,37 @@ class ShipmentOut(metaclass=PoolMeta): def done(cls, shipments): pool = Pool() Move = pool.get('stock.move') + #raise UserError(str(dir(cls))) + #cls.store_cache(shipments) Date = pool.get('ir.date') - - pool = Pool() Equipments = pool.get('optical_equipment.equipment') for shipment in shipments: for move in shipment.moves: - if move.product.equipment: - equipment=move.serial - equipment.propietary=shipment.customer.id + raise UserError(str(move.id)) + #move = Move.search(['id', '=', move.id])[0] + if move.product_equipment: + + equipment = move.equipment + Id = equipment.id + serial = equipment.serial + move.equipment = Id + move.serial = serial + move.save() + #raise UserError(str(Id)) + #raise UserError(str((equipment.id))) + #raise UserError(str(dir(move.equipment.propietary))) + #Id=int(move.equipment.id) + equipment = Equipments.search(['id', '=',Id])[0] + #raise UserError(str(equipment)) + #raise UserError(str(Id.id)) + equipment.propietary = shipment.customer.id equipment.propietary_address= shipment.delivery_address.id equipment.state="uncontrated" - equipment.shipment_destination = move - equipment.maintenance_frequency = "6" if sale.party.client_type == "ips" else "12" + #equipment.shipment_destination = move + equipment.maintenance_frequency = "6" if shipment.customer.client_type == "ips" else "12" + #raise UserError(str(equipment.propietary)) equipment.save() Move.delete([ diff --git a/sale.py b/sale.py index 3bed1ff..0d854de 100644 --- a/sale.py +++ b/sale.py @@ -49,7 +49,8 @@ class Sale(metaclass=PoolMeta): queue_scheduled_at=config.sale_process_after): cls.__queue__.process(sales) """ - + +""" class SaleLine(metaclass=PoolMeta): 'SaleLine' __name__ = 'sale.line' @@ -108,10 +109,8 @@ class SaleLine(metaclass=PoolMeta): if self.product_equipment == False: self.equipment = None self.on_change_equipment() - """ else: self.quantity = 1 - """ @fields.depends('product', 'unit', 'quantity', 'sale', @@ -167,7 +166,6 @@ class SaleLine(metaclass=PoolMeta): if self.product.equipment: self.product_equipment = True - def get_move(self, shipment_type): ''' @@ -242,6 +240,7 @@ class SaleLine(metaclass=PoolMeta): 'invisible': ~Eval('product_equipment', True), })] +""" class CreateSubscriptionStart(ModelView): 'Create Subscription Start' diff --git a/sale.xml b/sale.xml index f24d340..6589ba5 100644 --- a/sale.xml +++ b/sale.xml @@ -1,6 +1,7 @@ + sale.create.subscription.start form