Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PurchaseRequisitionLine(ModelSQL, ModelView):
- "Purchase Requisition Line"
- __name__ = 'purchase.requisition.line'
- _history = True
- _states = {
- 'readonly': Eval('purchase_requisition_state') != 'draft',
- }
- _depends = ['purchase_requisition_state']
- purchase_requisition = fields.Many2One('purchase.requisition',
- 'Requisition',
- ondelete='CASCADE', select=True, required=True)
- sequence = fields.Integer('Sequence')
- party = fields.Many2One('party.party', 'Supplier',
- states=_states,
- depends=_depends)
- product = fields.Many2One('product.product', 'Product',
- ondelete='RESTRICT', domain=[('purchasable', '=', True)],
- states=_states,
- depends=_depends)
- description = fields.Text('Description',
- states={
- 'readonly': _states['readonly'],
- 'required': ~Eval('product')
- },
- depends=['product'] + _depends)
- warehouse = fields.Many2One('stock.location', 'Warehouse',
- domain=[('type', '=', 'warehouse')],
- states={
- 'readonly': _states['readonly'],
- 'required': Eval('warehouse_required', False),
- },
- depends=['warehouse_required'] + _depends,)
- warehouse_required = fields.Function(fields.Boolean('Warehouse Required'),
- 'on_change_with_warehouse_required')
- quantity = fields.Float('Quantity',
- digits=(16, Eval('unit_digits', 2)), required=True,
- states=_states,
- depends=['unit_digits'] + _depends)
- unit = fields.Many2One('product.uom', 'Unit',
- ondelete='RESTRICT',
- states={
- 'required': Bool(Eval('product')),
- 'readonly': _states['readonly'],
- },
- domain=[
- If(Bool(Eval('product_uom_category')),
- ('category', '=', Eval('product_uom_category')),
- ('category', '!=', -1)),
- ],
- depends=['product', 'product_uom_category'] + _depends)
- unit_digits = fields.Function(fields.Integer('Unit Digits'),
- 'on_change_with_unit_digits')
- 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)
- amount = fields.Function(fields.Numeric('Amount',
- digits=(16, Eval('currency_digits', 2)),
- states=_states,
- depends=['currency_digits'] + _depends),
- 'on_change_with_amount')
- currency = fields.Many2One('currency.currency', 'Currency',
- states={
- 'required': Bool(Eval('unit_price')),
- 'readonly': _states['readonly'],
- },
- depends=['unit_price'] + _depends)
- currency_digits = fields.Function(fields.Integer('Currency Digits'),
- 'on_change_with_currency_digits')
- purchase_requisition_state = fields.Function(
- fields.Selection(STATES, 'Purchase Requisition State'),
- 'on_change_with_purchase_requisition_state')
- purchase_request = fields.Many2One('purchase.request', 'Purchase Request',
- readonly=True)
- purchase_request_state = fields.Function(fields.Selection([
- ('', ''),
- ('draft', 'Draft'),
- ('purchased', 'Purchased'),
- ('cancel', 'Cancel'),
- ('done', 'Done'),
- ('exception', 'Exception'),
- ], 'Purchase Request State',
- states={
- 'invisible': ~Eval('purchase_request_state'),
- }), 'get_purchase_request_state')
- --------------------------------------------------------------------------------------------------
- Create purchase requisition & approve by approval user::
- >>> config.user = requisition_user.id
- >>> PurchaseRequisition = Model.get('purchase.requisition')
- >>> PurchaseRequisitionLine = Model.get('purchase.requisition.line')
- >>> requisition = PurchaseRequisition()
- >>> requisition.description = 'Description'
- >>> requisition.employee = requisition_user.employee
- >>> requisition.supply_date = today
- >>> requisition_line = PurchaseRequisitionLine()
- >>> requisition.lines.append(requisition_line)
- >>> requisition_line.product = product
- >>> requisition_line.quantity = 2.0
- >>> requisition.click('wait')
- >>> config.user = requisition_approval_user.id
- >>> requisition.click('approve')
- >>> PurchaseRequest = Model.get('purchase.request')
- >>> request = PurchaseRequest()
- >>> request = requisition.lines[0].purchase_request
- >>> requisition.lines[0].purchase_request_state == 'draft'
- True
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement