Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PurchaseBlanketOrderLineToPurchaseOrderLine(ModelView):
- 'Purchase line to create'
- __name__ = 'purchase.blanket_order.line.to.purchase.line'
- line = fields.Many2One('purchase.blanket_order.line',
- "Purchase Blanket Order Line")
- product = fields.Many2One('product.product', "Product", readonly=True)
- product_uom_category = fields.Function(
- fields.Many2One('product.uom.category', "Product UOM Category"),
- 'on_change_with_product_uom_category')
- unit_price = fields.Numeric("Unit Price", digits=price_digits)
- quantity = fields.Float("Quantity", required=True, digits='unit')
- unit = fields.Many2One('product.uom', "Unit")
- remaining_quantity = fields.Float("Remaining quantity", readonly=True,
- digits='unit')
- @classmethod
- def __setup__(cls):
- super().__setup__()
- unit_categories = cls._unit_categories()
- cls.unit.domain = [
- If(Bool(Eval('product_uom_category')),
- ('category', 'in', [Eval(c) for c in unit_categories]),
- ('category', '!=', -1)),
- ]
- cls.unit.depends.extend(unit_categories)
- @classmethod
- def _unit_categories(cls):
- return ['product_uom_category']
- @fields.depends('product')
- def on_change_with_product_uom_category(self, name=None):
- if self.product:
- return self.product.default_uom_category.id
- class PurchaseBlanketOrderToPurchaseOrder(ModelView):
- 'Purchase line to create'
- __name__ = 'purchase.blanket_order.to.purchase'
- lines = fields.One2Many(
- 'purchase.blanket_order.line.to.purchase.line', None, "Lines")
- class PurchaseBlanketOrderCreatePurchaseOrder(Wizard):
- 'Wizard to create a purchase from blanket order'
- __name__ = 'purchase.blanket_order.create_purchase'
- start = StateView(
- 'purchase.blanket_order.to.purchase',
- 'purchase_blanket_order.create_purchase_form_view', [
- Button("Cancel", 'end', 'tryton-cancel'),
- Button("Create a purchase", 'create_purchase', 'tryton-ok',
- default=True),
- ])
- create_purchase = StateAction('purchase.act_purchase_form')
- def default_start(self, fields):
- pool = Pool()
- Line = pool.get('purchase.blanket_order.line.to.purchase.line')
- lines = [Line(
- line=line,
- quantity=line.remaining_quantity,
- product=line.product,
- remaining_quantity=line.remaining_quantity,
- unit=line.unit,
- unit_price=line.unit_price,)
- for line in self.record.lines
- if line.remaining_quantity > 0.
- ]
- return {'lines': lines}
- def do_create_purchase(self, action):
- purchase = self.record._get_purchase()
- lines = []
- print("########CREATE PURCHASE##########")
- for line in self.start.lines:
- if line.quantity <= 0:
- continue
- purchase_line = line.line.get_purchase_line(purchase)
- purchase_line.unit_price = (line.unit_price if line.unit_price
- else line.line.unit_price)
- purchase_line.taxes = purchase_line.compute_taxes(
- self.start.order.supplier)
- self._set_purchase_line_quantity(purchase_line, line)
- purchase_line.on_change_quantity()
- lines.append(purchase_line)
- if lines:
- purchase.lines = lines
- purchase.save()
- action['views'].reverse()
- return action, {'res_id': [purchase.id]}
- def _set_purchase_line_quantity(self, purchase_line, line):
- purchase_line.quantity = line.quantity
- purchase_line.unit = line.unit
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement