============================= Production Lot Trace Scenario ============================= Imports:: >>> from decimal import Decimal >>> from proteus import Model >>> from trytond.modules.company.tests.tools import create_company >>> from trytond.tests.tools import activate_modules Activate modules:: >>> config = activate_modules(['stock_lot', 'production'], create_company) >>> Lot = Model.get('stock.lot') >>> LotTrace = Model.get('stock.lot.trace') >>> ProductTemplate = Model.get('product.template') >>> Production = Model.get('production') >>> UoM = Model.get('product.uom') Create product:: >>> unit, = UoM.find([('name', '=', 'Unit')]) >>> template = ProductTemplate(name="Product") >>> template.type = 'goods' >>> template.default_uom = unit >>> template.producible = True >>> template.list_price = Decimal(1) >>> template.save() >>> product, = template.products Create component:: >>> template = ProductTemplate(name="Component") >>> template.type = 'goods' >>> template.default_uom = unit >>> template.save() >>> component, = template.products Create Lots:: >>> product_lot = Lot(product=product, number="1") >>> product_lot.save() >>> component_lot = Lot(product=component, number="2") >>> component_lot.save() Make a production:: >>> production = Production() >>> input = production.inputs.new() >>> input.from_location = production.warehouse.storage_location >>> input.to_location = production.location >>> input.product = component >>> input.lot = component_lot >>> input.quantity = 1 >>> output = production.outputs.new() >>> output.from_location = production.location >>> output.to_location = production.warehouse.storage_location >>> output.product = product >>> output.lot = product_lot >>> output.quantity = 1 >>> output.currency = production.company.currency >>> output.unit_price = Decimal(0) >>> production.click('wait') >>> production.click('assign_force') >>> production.click('run') >>> production.click('do') >>> production.state 'done' Check lot traces:: >>> trace, = LotTrace.find([('lot', '=', product_lot.id)]) >>> trace.document == production True >>> trace.upward_traces [] >>> trace, = trace.downward_traces >>> trace.document == production True >>> trace.product == component True >>> trace, = LotTrace.find([('lot', '=', component_lot.id)]) >>> trace.document == production True >>> trace.downward_traces [] >>> trace, = trace.upward_traces >>> trace.document == production True >>> trace.product == product True