From e9f288bfbd082bb63a8ba088fa9a2f436d1679d5 Mon Sep 17 00:00:00 2001 From: sinergia Date: Wed, 7 Sep 2022 14:13:26 -0500 Subject: [PATCH] modifity to wizzard 'CreateSubscriptionInvoice' --- __init__.py | 1 + equipment.py | 3 +- move.py | 51 +++++++++----------------- subscription.py | 94 +++++++++++++++++++++++++++--------------------- subscription.xml | 21 ++++------- 5 files changed, 79 insertions(+), 91 deletions(-) diff --git a/__init__.py b/__init__.py index 8156e00..fb689da 100644 --- a/__init__.py +++ b/__init__.py @@ -27,4 +27,5 @@ def register(): module='optical_equipment', type_='model') Pool.register( sale.CreateSubscription, + subscription.CreateSubscriptionInvoice, module='optical_equipment', type_='wizard') diff --git a/equipment.py b/equipment.py index 46acf12..feabf3e 100644 --- a/equipment.py +++ b/equipment.py @@ -108,7 +108,8 @@ class OpticalEquipment(DeactivableMixin, Workflow, ModelSQL, ModelView): sale_destination = fields.Reference("Sale Destination", selection='get_destination',select=True, states={'readonly': True} ) - shipment_destination = fields.Reference("Stock Move", selection='get_shipment', select=True) + shipment_destination = fields.Reference("Stock Move", selection='get_shipment', select=True, + states={'readonly': True}) del _states_serial, _states, _depends diff --git a/move.py b/move.py index 0aeb8b1..86a07f7 100644 --- a/move.py +++ b/move.py @@ -63,22 +63,19 @@ 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') + def get_outgoing_moves(self, name): + moves = [] + if self.state == 'done': + for move in self.inventory_moves: + moves.append(move.id) + return moves + else: + for move in self.moves: + if move.from_location == self.warehouse_output: + moves.append(move.id) + return moves - 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') @@ -86,38 +83,22 @@ 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') Equipments = pool.get('optical_equipment.equipment') - + for shipment in shipments: - for move in shipment.moves: - raise UserError(str(move.id)) - #move = Move.search(['id', '=', move.id])[0] - if move.product_equipment: - + for move in shipment.inventory_moves: + if move.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.shipment_destination = shipment equipment.maintenance_frequency = "6" if shipment.customer.client_type == "ips" else "12" - #raise UserError(str(equipment.propietary)) - equipment.save() + equipment.save() Move.delete([ m for s in shipments for m in s.outgoing_moves diff --git a/subscription.py b/subscription.py index 460f62b..3c8628d 100644 --- a/subscription.py +++ b/subscription.py @@ -42,55 +42,67 @@ class Subscription(metaclass=PoolMeta): Line.save(lines) cls.save(subscriptions) -""" -class CreateContractInvoice(Wizard): - "Create Contract Invoice" - __name__ = 'sale.subscription.create_invoice_contract' + + +class CreateSubscriptionInvoice(Wizard): + "Create Subscription Invoice" + __name__ = 'sale.subscription.create_invoice' start = StateView( - 'sale.subscription.create_invoice_contract.start', - 'optical_equipment.create_invoice_contract_start_view_form',[ - Button("Cancel", 'end', 'tryton-cancel'), - Button("Create", 'create_invoice', 'tryton-ok', default=True), - ]) + 'sale.subscription.create_invoice.start', + 'sale_subscription.create_invoice_start_view_form', [ + Button("Cancel", 'end', 'tryton-cancel'), + Button("Create", 'create_', 'tryton-ok', default=True), + ]) - create_invoice = StateAction('account_invoice.act_invoice_form') + create_ = StateTransition() - - def do_create_invoice(self, action): - 'Create and return an invoice' - raise UserError(str(dir(action))) - - invoice_lines = [] - for line in self.lines: - invoice_lines.append(line.get_invoice_line()) - invoice_lines = list(chain(*invoice_lines)) - - if not invoice_lines: - return - - - invoice = self._get_invoice_sale() - if getattr(invoice, 'lines', None): - invoice_lines = list(invoice.lines) + invoice_lines - invoice.lines = invoice_lines - - return invoice - -class CreateContractInvoiceStart(ModelView): - "Create Subscription Invoice" - __name__ = 'sale.subscription.create_invoice_contract.start' - - date = fields.Date("Date") - - @classmethod - def default_date(cls): + def generate_invoice(self, date=None): pool = Pool() Date = pool.get('ir.date') + Configuration = pool.get('account.configuration') + Config = Configuration(1) + Journals = pool.get('account.journal') + Invoice = pool.get('account.invoice') + InvoiceLine = pool.get('account.invoice.line') + subscription = self.records[0] + invoice_lines = [] - return Date.today() + if date is None: + date = Date.today() + + for line in subscription.lines: + invoice_lines.append( + InvoiceLine( + origin=line, + product=line.service, + account=line.service.product.account_revenue_used, + quantity=line.quantity, + unit=line.unit, + unit_price=line.unit_price, + ) + ) + + invoice = Invoice( + type='out', + journal=Journals.search(['type', '=', 'revenue'])[0], + account=Config.default_account_receivable, + party=subscription.party, + invoice_date=date, + invoice_address=subscription.invoice_address, + lines=invoice_lines, + ) + invoice.save() + + + def transition_create_(self): + pool = Pool() + Subscription = pool.get('sale.subscription') + + self.generate_invoice(date=self.start.date) + + return 'end' -""" class SubscriptionEquipment(ModelSQL): 'Optical Equipment - Subscription' diff --git a/subscription.xml b/subscription.xml index 1be7ab2..43f995d 100644 --- a/subscription.xml +++ b/subscription.xml @@ -12,21 +12,14 @@ - + +