2016-06-24 123 views
0

我在REPAIR-ORDER的订单行中添加了多个产品,每个产品的价格都显示出来 - 但未纳税的子总计和总计显示(0)代替所有产品的总数。ODOO8:订单行中未计算的总数和未计算的总数

TOTAL AMOUNT UNTAXED AMOUNT

我已经附加了一些MRP维修代码(的.py)文件:

def _amount_all_wrapper_repair(self, cr, uid, ids, field_name, arg, context=None): 
    """ Wrapper because of direct method passing as parameter for function fields """ 
    return self._amount_all_repair(cr, uid, ids, field_name, arg, context=context) 

def _amount_all_repair(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, 
     } 
     val = val1 = 0.0 
     cur = order.sale_id.pricelist_id.currency_id 
     for line in order.order_line_ids: 
      val1 += line.price_subtotal 
      val += self._amount_line_tax_repair(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) 
     res[order.id]['amount_total'] = res[order.id]['amount_untaxed'] + res[order.id]['amount_tax'] 
    return res 

的mrp_repair.xml代码:

<group class="oe_subtotal_footer oe_right" colspan="2" name="sale_total"> 
          <field name="amount_untaxed" widget='monetary' options="{'currency_field': 'currency_id'}"/> 
          <field name="amount_tax" widget='monetary' options="{'currency_field': 'currency_id'}"/> 
          <div class="oe_subtotal_footer_separator oe_inline"> 
           <label for="amount_total" /> 
           <button name="button_dummy" 
            states="draft,sent" string="(update)" type="object" class="oe_edit_only oe_link"/> 
          </div> 
          <field name="amount_total" nolabel="1" class="oe_subtotal_footer_separator" widget='monetary' options="{'currency_field': 'currency_id'}"/> 
          <div class="oe_inline" groups="garage.group_display_margin"> 
           <label for="margin" style="font-weight:bold;"/> 
          </div> 
           <field name="margin" nolabel="1" style="font-weight:bold;" groups="garage.group_display_margin"/> 

         </group> 

编辑 - 已添加信息

I foun d,如果没有下面的代码(该代码使MRP_REPAIR添加顺序线既修理订单和销售订单),将产品与价格犯规得到计算在总场,并且示出了零(0)

 elif this.repair_sale_order_line_id: 

      sale_obj = self.pool.get('sale.order') 
      so_vals = { 
       'partner_id' : this.repair_sale_order_line_id.partner_id.id, 
       'fleet_id': this.repair_sale_order_line_id.fleet_id.id, 
       'responsable_id': uid, 

      } 
      created_so_id = so_obj.create(cr, uid, so_vals, context=context) 
      sol_vals = {'order_id': created_so_id, 
         'price_unit': this.price_unit, 
         'product_uom_qty': this.product_uom_qty, 
         'price_subtotal': this.price_subtotal, 
         'discount': this.discount, 
         'product_id': this.product_id.id, 
         'tax_id': [(6, 0, [x.id for x 
               in this.tax_id])], 
         'name': this.name, 
         } 
      self.pool.get('mrp.repair').write(cr, uid, this.repair_sale_order_line_id.id, {'sale_id':created_so_id},context=context) 
      sol_id = sol_obj.create_sol(cr, uid, sol_vals, context) 
      super(repair_sale_order_line, self).write(cr, uid, [res],{'sale_order_line_id':sol_id}) 

看来使用了销售订单行而不是内部修理销售订单行。问题是:我怎样才能让mrp不依赖于SO或它的ORDER LINES。?

+0

旧API函数字段仅在保存时计算。如果您希望让它们像on_change字段一样计算,则可以添加一些on_change行为(这只会在视图中执行某些操作,因为字段在保存时会进行计算),或者将字段更改为新的API计算字段(包含on_change)。 – CZoellner

+0

检查页面顶部的编辑:谢谢 –

+0

可以采取哪些措施来解决此问题? –

回答

0

我发现如果没有下面的代码(这段代码会导致MRP_REPAIR将订单行添加到维修订单和销售订单中),那么添加一个价格产品并不会在总字段中计算,并且显示零(0)

 elif this.repair_sale_order_line_id: 

      sale_obj = self.pool.get('sale.order') 
      so_vals = { 
       'partner_id' : this.repair_sale_order_line_id.partner_id.id, 
       'fleet_id': this.repair_sale_order_line_id.fleet_id.id, 
       'responsable_id': uid, 

      } 
      created_so_id = so_obj.create(cr, uid, so_vals, context=context) 
      sol_vals = {'order_id': created_so_id, 
         'price_unit': this.price_unit, 
         'product_uom_qty': this.product_uom_qty, 
         'price_subtotal': this.price_subtotal, 
         'discount': this.discount, 
         'product_id': this.product_id.id, 
         'tax_id': [(6, 0, [x.id for x 
               in this.tax_id])], 
         'name': this.name, 
         } 
      self.pool.get('mrp.repair').write(cr, uid, this.repair_sale_order_line_id.id, {'sale_id':created_so_id},context=context) 
      sol_id = sol_obj.create_sol(cr, uid, sol_vals, context) 
      super(repair_sale_order_line, self).write(cr, uid, [res],{'sale_order_line_id':sol_id}) 

看来使用了销售订单行而不是内部修理销售订单行。问题是:我怎样才能让mrp不依赖于SO或它的ORDER LINES。?