============================= Stock Lot Cost Price Scenario ============================= Imports:: >>> import datetime >>> from dateutil.relativedelta import relativedelta >>> from decimal import Decimal >>> from operator import attrgetter >>> from proteus import Model, Wizard, Report >>> from trytond.tests.tools import activate_modules >>> from trytond.modules.company.tests.tools import create_company, \ ... get_company >>> from trytond.modules.account.tests.tools import create_fiscalyear, \ ... create_chart, get_accounts, create_tax >>> from trytond.modules.account_invoice.tests.tools import \ ... set_fiscalyear_invoice_sequences, create_payment_term >>> today = datetime.date.today() Install stock_lot_cost_price:: >>> config = activate_modules('stock_lot_cost_price') Create company:: >>> _ = create_company() >>> company = get_company() Create fiscal year:: >>> fiscalyear = set_fiscalyear_invoice_sequences( ... create_fiscalyear(company)) >>> fiscalyear.click('create_period') Create chart of accounts:: >>> _ = create_chart(company) >>> accounts = get_accounts(company) >>> revenue = accounts['revenue'] >>> expense = accounts['expense'] >>> cash = accounts['cash'] Create tax:: >>> tax = create_tax(Decimal('.10')) >>> tax.save() Create parties:: >>> Party = Model.get('party.party') >>> supplier = Party(name='Supplier') >>> supplier.save() >>> customer = Party(name='Customer') >>> customer.save() Create product:: >>> ProductUom = Model.get('product.uom') >>> unit, = ProductUom.find([('name', '=', 'Unit')]) >>> ProductTemplate = Model.get('product.template') >>> template = ProductTemplate() >>> template.name = 'product' >>> template.default_uom = unit >>> template.type = 'goods' >>> template.purchasable = True >>> template.salable = True >>> template.list_price = Decimal('10') >>> template.cost_price_method = 'fixed' >>> template.account_expense = expense >>> template.account_revenue = revenue >>> template.supplier_taxes.append(tax) >>> product, = template.products >>> product.cost_price = Decimal('5') >>> template.save() >>> product, = template.products Create payment term:: >>> payment_term = create_payment_term() >>> payment_term.save() Create lot:: >>> Lot = Model.get('stock.lot') >>> lot = Lot(number='LS-34') >>> lot.product = product >>> lot.save() Create purchase:: >>> Purchase = Model.get('purchase.purchase') >>> PurchaseLine = Model.get('purchase.line') >>> purchase = Purchase() >>> purchase.party = supplier >>> purchase.payment_term = payment_term >>> purchase.invoice_method = 'order' >>> purchase_line = PurchaseLine() >>> purchase.lines.append(purchase_line) >>> purchase_line.product = product >>> purchase_line.quantity = 2.0 >>> purchase.click('quote') >>> purchase.click('confirm') >>> purchase.click('process') Set lot:: >>> Move = Model.get('stock.move') >>> moves = Move.find([()]) >>> for move in moves: ... move.lot = lot ... move.save() ... move.click('assign') ... move.click('do') Check cost price is products cost_price:: >>> lot.cost_price Decimal('5')