Guest User

Untitled

a guest
May 2nd, 2018
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.67 KB | None | 0 0
  1. class PurchaseRequest:
  2.     __metaclass__ = PoolMeta
  3.     __name__ = 'purchase.request'
  4.     employee = fields.Function(fields.Many2One('company.employee', 'Employee',
  5.         states={
  6.             'invisible': ~Eval('employee', False),
  7.             }), 'get_employee', searcher='search_employee')
  8.     requisition_number = fields.Function(fields.Char('Requisition Number',
  9.         states={
  10.             'invisible': ~Eval('requisition_number', False),
  11.         }), 'get_requisition_number', searcher='search_requisition_number')
  12.  
  13.     def get_employee(self, name):
  14.         pool = Pool()
  15.         RequisitionLine = pool.get('purchase.requisition.line')
  16.         if isinstance(self.origin, RequisitionLine):
  17.             return self.origin.requisition.employee.id
  18.  
  19.     @classmethod
  20.     def search_employee(cls, name, clause):
  21.         return [('origin.requisition.employee' + clause[0].lstrip(name),)
  22.             + tuple(clause[1:3]) + ('purchase.requisition.line',)
  23.             + tuple(clause[3:]), ]
  24.  
  25.     def get_requisition_number(self, name):
  26.         pool = Pool()
  27.         RequisitionLine = pool.get('purchase.requisition.line')
  28.         if isinstance(self.origin, RequisitionLine):
  29.             return self.origin.requisition.number
  30.  
  31.     @classmethod
  32.     def search_requisition_number(cls, name, clause):
  33.         return [('origin.requisition.number' + clause[0].lstrip(name),)
  34.             + tuple(clause[1:3]) + ('purchase.requisition.line',)
  35.             + tuple(clause[3:]), ]
  36.  
  37.     def _order_requisition_field(name):
  38.         def order_field(tables):
  39.             pool = Pool()
  40.             Requisition = pool.get('purchase.requisition')
  41.             RequisitionLine = pool.get('purchase.requisition.line')
  42.             field = Requisition._fields[name]
  43.             request, _ = tables[None]
  44.             requisitionline_table = tables.get('requisition_line')
  45.             if requisitionline_table is None:
  46.                 requisitionline = RequisitionLine.__table__()
  47.                 requisition = Requisition.__table__()
  48.                 rline_tables = {
  49.                     None: (requisitionline,
  50.                         (Concat(RequisitionLine.__name__ + ',',
  51.                                 requisitionline.id)) == request.origin),
  52.                     'requisition': (requisition, requisition.id ==
  53.                                     requisitionline.requisition)
  54.                     }
  55.                 tables['requisition_line'] = rline_tables
  56.             return field.convert_order(name, rline_tables, Requisition)
  57.         return staticmethod(order_field)
  58.     order_employee = _order_requisition_field('employee')
  59.     order_requisition_number = _order_requisition_field('number')
Advertisement
Add Comment
Please, Sign In to add comment