2014-01-13 70 views
0

1.so继承在此销售订单和M2O领域PO,但它给了我的错误,即except_orm:Programming Error There is no reference available for purchase.order生成采购从销售订单,

2.我也想从销售订单小计扣除采购订单总价格价格并显示到销售订单总价

class sale_inherit_course(orm.Model): 
    _inherit='sale.order' 
    _columns={ 
      'create_course':fields.boolean('Create Course'), 
      'course_name':fields.many2one('openacademy.course', 'Course', ondelete="cascade"), 
      'responsible': fields.related('course_name', 'responsible_id', type='many2one', relation='res.users', string="co-ordinator", readonly=True), 
      'buy_back':fields.boolean('Buy Back'), 
      'purchase_order':fields.many2one('purchase.order', 'Create Back Order', ondelete="cascade"), 
      'responsible_me': fields.related('purchase_order', 'responsible_id', type='many2one', relation='res.users', string="User", readonly=True), 

      } 
    def create(self, cr, uid, vals, context=None): 
     if vals.get('create_course'): 
      course_obj=self.pool.get('openacademy.course') 
      sequence=self.pool.get('ir.sequence').get(cr, uid, 'openacademy.course.seq') 
      new_course=course_obj.create(cr, uid, {'name':sequence,'responsible_id':vals.get('user_id')}, context=context) 
      import pprint 
      pprint.pprint(vals) 
      vals['course_name']=new_course 
      pprint.pprint(vals) 
     elif vals.get('buy_back'): 
      purchase_obj=self.pool.get('purchase.order') 
      sequence=self.pool.get('ir.sequence').get(cr, uid, 'purchase.order') 
      new_purchase=purchase_obj.create(cr, uid, {'name':sequence,'responsible_id':vals.get('user_id')}, context=context) 
      vals['purchase_order']=new_purchase 

    return super(sale_inherit_course, self).create(cr, uid, vals, context=context) 

这里的错误发生的是

except_orm: ('Programming Error', 'There is no reference available for purchase.order' 
+0

不知道这段代码的意思做,但我觉得可疑,你似乎以创建一个列'“purchase_order''然后总是指一列'”购买.order''。这可能是问题吗? –

+0

是的,我想从销售订单的购买订单,并计算总价格像(sale_order_totalprice =(sale_order_subtotal_price - purchase_order_total_price)) –

+0

是您的提示对我来说可以解决,但我如何计算购买和销售的价值 –

回答

1

_inherit = 'sale.order'

def _amount_all(self, cr, uid, ids, field_name, arg, context=None): 
    cur_obj = self.pool.get('res.currency') 
    res = {} 

    for order in self.browse(cr, uid, ids, context=context): 


     res[order.id] = { 
      'amount_untaxed': 0.0, 
      'amount_tax': 0.0, 
      'amount_total': 0.0, 
      'amt_total':0.0 
     } 
     val = val1 = 0.0 
     cur = order.pricelist_id.currency_id 
     for line in order.order_line: 
      val1 += line.price_subtotal 

      val += self._amount_line_tax(cr, uid, line, context=context) 
     res[order.id]['amount_tax'] = cur_obj.round(cr, uid, cur, val) 
     res[order.id]['amount_untaxed'] = cur_obj.round(cr, uid, cur, val1) 
     #import pprint 
     #pprint.pprint(res[order.id]['amt_total']) 
     res[order.id]['amount_untaxed'] -= order.amt_total 
     res[order.id]['amount_total'] = res[order.id]['amount_untaxed'] + res[order.id]['amount_tax'] 
    #  res[order.id]['amount_total'] -=order.amt_total 
    return res 


def _get_order(self, cr, uid, ids, context=None): 
    result = {} 
    for line in self.pool.get('sale.order.line').browse(cr, uid, ids, context=context): 
     result[line.order_id.id] = True 
    return result.keys() 

'purchase_order':fields.many2one('purchase.order', 'Old Gold', ondelete="cascade"), 
      'amt_total':fields.related('purchase_order', 'amount_total', type='float', relation='purchase.order', string="Amount", readonly=True), 
      'qty_related':fields.related('purchase_order','order_line', 'product_qty', type='float',relation='purchase.order', string='Weight',readonly=True), 
相关问题