Advertisement
Guest User

Untitled

a guest
Dec 13th, 2016
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.06 KB | None | 0 0
  1. class PurchaseRequestQuotation(
  2.         sequence_ordered(), ModelSQL, ModelView):
  3.     "Purchase Request For Quotation"
  4.     __name__ = 'purchase.request.quotation'
  5.  
  6.     company = fields.Many2One('company.company', 'Company', required=True,
  7.         readonly=True,
  8.         domain=[
  9.             ('id', If(Eval('context', {}).contains('company'), '=', '!='),
  10.                 Eval('context', {}).get('company', -1)),
  11.             ], select=True)
  12.     supplier = fields.Many2One('party.party', 'Supplier', required=True,
  13.         readonly=True, select=True)
  14.     supply_date = fields.Date('Expected Supply Date')
  15.     product = fields.Function(fields.Many2One('product.product', 'Product'),
  16.         'get_product', searcher='search_product')
  17.     description = fields.Text('Description',
  18.         states={
  19.             'required': ~Eval('product')
  20.             },
  21.         depends=['product'])
  22.     quantity = fields.Float(
  23.         'Quantity', digits=(16, Eval('unit_digits', 2)), required=True,
  24.         depends=['unit_digits'])
  25.     unit = fields.Many2One(
  26.         'product.uom', 'Unit', ondelete='RESTRICT',
  27.         states={
  28.             'required': Bool(Eval('product')),
  29.             },
  30.         domain=[
  31.             If(Bool(Eval('product_uom_category')),
  32.                 ('category', '=', Eval('product_uom_category')),
  33.                 ('category', '!=', -1)),
  34.         ],
  35.         depends=['product', 'product_uom_category'])
  36.     unit_digits = fields.Function(
  37.         fields.Integer('Unit Digits'), 'on_change_with_unit_digits')
  38.     product_uom_category = fields.Function(
  39.         fields.Many2One('product.uom.category', 'Product Uom Category'),
  40.         'on_change_with_product_uom_category')
  41.     unit_price = fields.Numeric('Unit Price', digits=price_digits)
  42.     currency = fields.Many2One('currency.currency', 'Currency')
  43.     currency_digits = fields.Function(
  44.         fields.Integer('Currency Digits'), 'on_change_with_currency_digits')
  45.     amount = fields.Function(
  46.         fields.Numeric('Amount',
  47.             digits=(16, Eval('currency_digits', 2)),
  48.             depends=['currency_digits']), 'on_change_with_amount')
  49.     request = fields.Many2One('purchase.request', 'Request',
  50.         ondelete='CASCADE', select=True, required=True, readonly=True)
  51.     group = fields.Many2One('purchase.request.quotation.group', 'Group',
  52.         readonly=True,
  53.         ondelete='RESTRICT',
  54.         domain=[
  55.             ('company', '=', Eval('company', -1)),
  56.             ],
  57.         depends=['company'])
  58.     group_state = fields.Function(
  59.         fields.Selection(STATES, 'Request for Quotation Group State'),
  60.         'on_change_with_group_state', searcher='search_group_state')
  61.  
  62.     @fields.depends('group', '_parent_group.state')
  63.     def on_change_with_group_state(self, name=None):
  64.         if self.group:
  65.             return self.group.state
  66.  
  67.     @fields.depends('quantity', 'unit_price', 'unit', 'currency')
  68.     def on_change_with_amount(self, name=None):
  69.         if (self.unit_price is None) or (self.quantity is None):
  70.             return None
  71.         amount = Decimal(str(self.quantity)) * self.unit_price
  72.         if self.currency:
  73.             amount = self.currency.round(amount)
  74.         return amount
  75.  
  76.     @fields.depends('product')
  77.     def on_change_with_product_uom_category(self, name=None):
  78.         if self.product:
  79.             return self.product.default_uom_category.id
  80.  
  81.     @fields.depends('unit')
  82.     def on_change_with_unit_digits(self, name=None):
  83.         if self.unit:
  84.             return self.unit.digits
  85.         return 2
  86.  
  87.     @fields.depends('currency')
  88.     def on_change_with_currency_digits(self, name=None):
  89.         if self.currency:
  90.             return self.currency.digits
  91.         return 2
  92.  
  93.     def get_product(self, name):
  94.         if self.request and self.request.product:
  95.             return self.request.product.id
  96.  
  97.     @classmethod
  98.     def search_product(cls, name, clause):
  99.         return [('request.product',) + tuple(clause[1:])]
  100.  
  101.     @classmethod
  102.     def search_group_state(cls, name, clause):
  103.         return [('group.state',)
  104.             + tuple(clause[1:])]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement