/usr/lib/python3/dist-packages/trytond/modules/stock_lot/tests/scenario_stock_lot_shipment_out.rst is in tryton-modules-stock-lot 4.6.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | ===============================
Stock Lot Shipment Out Scenario
===============================
Imports::
>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> from decimal import Decimal
>>> from proteus import config, Model, Wizard
>>> from trytond.tests.tools import activate_modules
>>> from trytond.modules.company.tests.tools import create_company, \
... get_company
>>> today = datetime.date.today()
Install stock_lot Module::
>>> config = activate_modules('stock_lot')
Create company::
>>> _ = create_company()
>>> company = get_company()
Create customer::
>>> Party = Model.get('party.party')
>>> customer = Party(name='Customer')
>>> customer.save()
Create product::
>>> ProductUom = Model.get('product.uom')
>>> ProductTemplate = Model.get('product.template')
>>> unit, = ProductUom.find([('name', '=', 'Unit')])
>>> template = ProductTemplate()
>>> template.name = 'Product'
>>> template.default_uom = unit
>>> template.type = 'goods'
>>> template.list_price = Decimal('20')
>>> template.save()
>>> product, = template.products
Get stock locations::
>>> Location = Model.get('stock.location')
>>> warehouse_loc, = Location.find([('code', '=', 'WH')])
>>> supplier_loc, = Location.find([('code', '=', 'SUP')])
>>> customer_loc, = Location.find([('code', '=', 'CUS')])
>>> output_loc, = Location.find([('code', '=', 'OUT')])
>>> storage_loc, = Location.find([('code', '=', 'STO')])
Create Shipment Out::
>>> ShipmentOut = Model.get('stock.shipment.out')
>>> shipment_out = ShipmentOut()
>>> shipment_out.planned_date = today
>>> shipment_out.customer = customer
>>> shipment_out.warehouse = warehouse_loc
>>> shipment_out.company = company
Add two shipment lines of same product::
>>> StockMove = Model.get('stock.move')
>>> move = StockMove()
>>> shipment_out.outgoing_moves.append(move)
>>> move.product = product
>>> move.uom =unit
>>> move.quantity = 10
>>> move.from_location = output_loc
>>> move.to_location = customer_loc
>>> move.company = company
>>> move.unit_price = Decimal('1')
>>> move.currency = company.currency
>>> move = StockMove()
>>> shipment_out.outgoing_moves.append(move)
>>> move.product = product
>>> move.uom =unit
>>> move.quantity = 4
>>> move.from_location = output_loc
>>> move.to_location = customer_loc
>>> move.company = company
>>> move.unit_price = Decimal('1')
>>> move.currency = company.currency
>>> shipment_out.save()
Set the shipment state to waiting::
>>> shipment_out.click('wait')
>>> len(shipment_out.outgoing_moves)
2
>>> len(shipment_out.inventory_moves)
2
Assign the shipment with 2 lines of 7 products::
>>> for move in shipment_out.inventory_moves:
... move.quantity = 7
>>> shipment_out.click('assign_force')
>>> shipment_out.state
u'assigned'
Set 2 lots::
>>> Lot = Model.get('stock.lot')
>>> for i, move in enumerate(shipment_out.inventory_moves, start=1):
... lot = Lot(number='%05i' % i, product=product)
... lot.save()
... move.lot = lot
>>> shipment_out.save()
Pack the shipment::
>>> shipment_out.click('pack')
>>> shipment_out.state
u'packed'
>>> len(shipment_out.outgoing_moves)
3
>>> sorted([m.quantity for m in shipment_out.outgoing_moves])
[3.0, 4.0, 7.0]
>>> lot_quantities = {}
>>> for move in shipment_out.outgoing_moves:
... quantity = lot_quantities.setdefault(move.lot.number, 0)
... lot_quantities[move.lot.number] += move.quantity
>>> sorted(lot_quantities.items())
[(u'00001', 7.0), (u'00002', 7.0)]
|