diff --git a/production.py b/production.py index 30aafa2..2896984 100644 --- a/production.py +++ b/production.py @@ -12,12 +12,14 @@ from trytond.exceptions import UserError BOM_CHANGES = ['bom', 'product', 'quantity', 'uom', 'warehouse', 'location', 'company', 'inputs', 'outputs'] + class Production(metaclass=PoolMeta): "Production" __name__ = 'production' - - @fields.depends(*BOM_CHANGES) + @fields.depends( + 'bom', 'product', 'uom', 'quantity', 'company', 'inputs', 'outputs', + methods=['_explode_move_values']) def explode_bom(self): pool = Pool() Uom = pool.get('product.uom') @@ -25,37 +27,32 @@ class Production(metaclass=PoolMeta): return factor = self.bom.compute_factor(self.product, self.quantity or 0, - self.uom) + self.uom) inputs = [] for input_ in self.bom.inputs: - if input_.product.producible: - for input_ in input_.product.template.boms.inputs: - quantity = input_.compute_quantity(factor) - move = self._explode_move_values( - self.picking_location, self.location, self.company, - input_, quantity) - if move: - inputs.append(move) - quantity = Uom.compute_qty(input_.uom, quantity, - input_.product.default_uom, round=False) - else: - quantity = input_.compute_quantity(factor) - move = self._explode_move_values( - self.picking_location, self.location, self.company, - input_, quantity) - if move: - inputs.append(move) - quantity = Uom.compute_qty(input_.uom, quantity, - input_.product.default_uom, round=False) + # if input_.product.producible: + # for input_ in input_.product.template.boms.inputs: + quantity = input_.compute_quantity(factor) + move = self._explode_move_values('input', input_, quantity) + if move: + inputs.append(move) + quantity = Uom.compute_qty(input_.uom, quantity, + input_.product.default_uom, round=False) + # else: + # quantity = input_.compute_quantity(factor) + # move = self._explode_move_values('output', input_, quantity) + # if move: + # inputs.append(move) + # quantity = Uom.compute_qty(input_.uom, quantity, + # input_.product.default_uom, round=False) self.inputs = inputs outputs = [] for output in self.bom.outputs: quantity = output.compute_quantity(factor) - move = self._explode_move_values( - self.location, self.output_location, self.company, output, - quantity) + move = self._explode_move_values('output', output, + quantity) if move: move.unit_price = Decimal(0) outputs.append(move) diff --git a/sale.py b/sale.py index de3ed16..e287d17 100644 --- a/sale.py +++ b/sale.py @@ -90,7 +90,7 @@ class Sale(metaclass=PoolMeta): else: untaxed_amount[sale.id] = round(sum( (line.amount for line in sale.lines - if line.type == 'line'), Decimal(0)),2) + if line.type == 'line'), Decimal(0)), 2) total_discount[sale.id] = round(sum( (line.discount_amount for line in sale.lines if line.type == 'line'), Decimal(0)), 2) @@ -104,7 +104,7 @@ class Sale(metaclass=PoolMeta): 'tax_amount': tax_amount, 'total_amount': total_amount, 'total_discount': total_discount, - } + } for key in list(result.keys()): if key not in names: del result[key] @@ -166,11 +166,11 @@ class Sale(metaclass=PoolMeta): "quantity": line.quantity if line.type != 'title' else None, "uom": line.unit.symbol if line.type != 'title' else None, "unit_price": str(line.amount_w_tax) if line.type != 'title' else None, - "taxes": str(round(line.taxes[0].rate * 100, 2))+'%' + "taxes": str(round(line.taxes[0].rate * 100, 2)) + '%' if line.type != 'title' and line.taxes else None - } for line in record.lines] + } for line in record.lines] - data["total_discount"] = str(round(record.total_discount,2)) + data["total_discount"] = str(round(record.total_discount, 2)) data["untaxed_amount"] = str(record.untaxed_amount) data["tax_amount"] = str(record.tax_amount) data["total"] = str(record.total_amount) @@ -209,7 +209,7 @@ class Sale(metaclass=PoolMeta): "description": line.description if line.type != 'title' else None, "quantity": line.quantity if line.type != 'title' else None, "uom": line.unit.name if line.type != 'title' else None} - for line in report.lines if not line.impreso] + for line in report.lines if not line.impreso] return data @@ -345,7 +345,7 @@ class Line(metaclass=PoolMeta): else: self.bought_pizza = False - def get_production(self, product_quantities ): + def get_production(self, product_quantities): "Return production for the sale line" Production = super(Line, self).get_production(product_quantities)