Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class PurchaseRequestQuotation(
- sequence_ordered(), ModelSQL, ModelView):
- "Purchase Request For Quotation"
- __name__ = 'purchase.request.quotation'
- company = fields.Many2One('company.company', 'Company', required=True,
- readonly=True,
- domain=[
- ('id', If(Eval('context', {}).contains('company'), '=', '!='),
- Eval('context', {}).get('company', -1)),
- ], select=True)
- supplier = fields.Many2One('party.party', 'Supplier', required=True,
- readonly=True, select=True)
- supply_date = fields.Date('Expected Supply Date')
- product = fields.Function(fields.Many2One('product.product', 'Product'),
- 'get_product', searcher='search_product')
- description = fields.Text('Description',
- states={
- 'required': ~Eval('product')
- },
- depends=['product'])
- quantity = fields.Float(
- 'Quantity', digits=(16, Eval('unit_digits', 2)), required=True,
- depends=['unit_digits'])
- unit = fields.Many2One(
- 'product.uom', 'Unit', ondelete='RESTRICT',
- states={
- 'required': Bool(Eval('product')),
- },
- domain=[
- If(Bool(Eval('product_uom_category')),
- ('category', '=', Eval('product_uom_category')),
- ('category', '!=', -1)),
- ],
- depends=['product', 'product_uom_category'])
- 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)
- currency = fields.Many2One('currency.currency', 'Currency')
- currency_digits = fields.Function(
- fields.Integer('Currency Digits'), 'on_change_with_currency_digits')
- amount = fields.Function(
- fields.Numeric('Amount',
- digits=(16, Eval('currency_digits', 2)),
- depends=['currency_digits']), 'on_change_with_amount')
- request = fields.Many2One('purchase.request', 'Request',
- ondelete='CASCADE', select=True, required=True, readonly=True)
- group = fields.Many2One('purchase.request.quotation.group', 'Group',
- readonly=True,
- ondelete='RESTRICT',
- domain=[
- ('company', '=', Eval('company', -1)),
- ],
- depends=['company'])
- group_state = fields.Function(
- fields.Selection(STATES, 'Request for Quotation Group State'),
- 'on_change_with_group_state', searcher='search_group_state')
- @fields.depends('group', '_parent_group.state')
- def on_change_with_group_state(self, name=None):
- if self.group:
- return self.group.state
- @fields.depends('quantity', 'unit_price', 'unit', 'currency')
- def on_change_with_amount(self, name=None):
- if (self.unit_price is None) or (self.quantity is None):
- return None
- amount = Decimal(str(self.quantity)) * self.unit_price
- if self.currency:
- amount = self.currency.round(amount)
- return amount
- @fields.depends('product')
- def on_change_with_product_uom_category(self, name=None):
- if self.product:
- return self.product.default_uom_category.id
- @fields.depends('unit')
- def on_change_with_unit_digits(self, name=None):
- if self.unit:
- return self.unit.digits
- return 2
- @fields.depends('currency')
- def on_change_with_currency_digits(self, name=None):
- if self.currency:
- return self.currency.digits
- return 2
- def get_product(self, name):
- if self.request and self.request.product:
- return self.request.product.id
- @classmethod
- def search_product(cls, name, clause):
- return [('request.product',) + tuple(clause[1:])]
- @classmethod
- def search_group_state(cls, name, clause):
- return [('group.state',)
- + tuple(clause[1:])]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement