pos.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import math
  2. from datetime import datetime, timedelta
  3. import time
  4. from openerp.osv import fields, osv
  5. from openerp.tools.translate import _
  6. from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
  7. class product_product(osv.Model):
  8. _inherit = 'product.product'
  9. def _pos_count(self, cr, uid, ids, field_name, arg, context=None):
  10. r = dict.fromkeys(ids, 0)
  11. domain = [
  12. ('product_id', 'in', ids),
  13. ]
  14. for group in self.pool['report.pos.order'].read_group(cr, uid, domain, ['product_id','product_qty'], ['product_id'], context=context):
  15. r[group['product_id'][0]] = group['product_qty']
  16. return r
  17. def action_view_pos(self, cr, uid, ids, context=None):
  18. result = self.pool['ir.model.data'].xmlid_to_res_id(cr, uid, 'point_of_sale.action_pos_order_line', raise_if_not_found=True)
  19. result = self.pool['ir.actions.act_window'].read(cr, uid, [result], context=context)[0]
  20. result['domain'] = "[('product_id','in',[" + ','.join(map(str, ids)) + "])]"
  21. return result
  22. _columns = {
  23. 'pos_count': fields.function(_pos_count, string='# Pos', type='integer'),
  24. }
  25. class product_template(osv.Model):
  26. _inherit = 'product.template'
  27. def _pos_count(self, cr, uid, ids, field_name, arg, context=None):
  28. res = dict.fromkeys(ids, 0)
  29. for template in self.browse(cr, uid, ids, context=context):
  30. res[template.id] = sum([p.pos_count for p in template.product_variant_ids])
  31. return res
  32. def action_view_pos(self, cr, uid, ids, context=None):
  33. act_obj = self.pool.get('ir.actions.act_window')
  34. mod_obj = self.pool.get('ir.model.data')
  35. product_ids = []
  36. for template in self.browse(cr, uid, ids, context=context):
  37. product_ids += [x.id for x in template.product_variant_ids]
  38. result = mod_obj.xmlid_to_res_id(cr, uid, 'point_of_sale.action_pos_order_line',raise_if_not_found=True)
  39. result = act_obj.read(cr, uid, [result], context=context)[0]
  40. result['domain'] = "[('product_id','in',[" + ','.join(map(str, product_ids)) + "])]"
  41. return result
  42. _columns = {
  43. 'pos_count': fields.function(_pos_count, string='# Pos', type='integer'),
  44. }
  45. # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: