← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 776644] [NEW] Invoiced Repai Orders

 

Public bug reported:

When try to invoice a lot of repair orders the module fails.  i did a bit little test and repair the fail changed the object name invoice.obj by inv.obj in the code. ( part code atached)
                
Regards 
Luis 


class mrp_repair_fee(osv.osv, ProductChangeMixin):
    _name = 'mrp.repair.fee'
    _description = 'Repair Fees line'
    def copy_data(self, cr, uid, id, default=None, context=None):
        if not default: default = {}
        default.update( {'invoice_line_id':False,'invoiced':False})
        return super(mrp_repair_fee, self).copy_data(cr, uid, id, default, context)
    def _amount_line(self, cr, uid, ids, field_name, arg, context):
        res = {}
        cur_obj=self.pool.get('res.currency')
        for line in self.browse(cr, uid, ids):
            res[line.id] = line.to_invoice and line.price_unit * line.product_uom_qty or 0
            cur = line.repair_id.pricelist_id.currency_id
            res[line.id] = cur_obj.round(cr, uid, cur, res[line.id])
        return res

    _columns = {
        'repair_id': fields.many2one('mrp.repair', 'Repair Order Ref', required=True, ondelete='cascade', select=True),
        'name': fields.char('Description', size=64, select=True,required=True),
        'product_id': fields.many2one('product.product', 'Product'),
        'product_uom_qty': fields.float('Quantity', digits=(16,2), required=True),
        'price_unit': fields.float('Unit Price', required=True),
        'product_uom': fields.many2one('product.uom', 'Product UoM', required=True),
        'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal',digits=(16, int(config['price_accuracy']))),
        'tax_id': fields.many2many('account.tax', 'repair_fee_line_tax', 'repair_fee_line_id', 'tax_id', 'Taxes'),
        'invoice_line_id': fields.many2one('account.invoice.line', 'Invoice Line', readonly=True),
        'to_invoice': fields.boolean('To Invoice'),
        'invoiced': fields.boolean('Invoiced',readonly=True),
    }
                    invoice=invoice_obj.browse(cr, uid,inv_id)   -----------> inv.obj
                    invoice_vals = {
                        'name': invoice.name +', '+repair.name,
                        'origin': invoice.origin+', '+repair.name,
                        'comment':(comment and (invoice.comment and invoice.comment+"\n"+comment or comment)) or (invoice.comment and invoice.comment or ''),
                    }
                    invoice_obj.write(cr, uid, [inv_id],invoice_vals,context=context)  --------> inv.obj.
                else:
                    if not repair.partner_id.property_account_receivable:
                        raise osv.except_osv(_('Error !'), _('No account defined for partner "%s".') % repair.partner_id.name )
                    account_id = repair.partner_id.property_account_receivable.id
                    inv = {
                        'name': repair.name,
                        'origin':repair.name,
                        'type': 'out_invoice',
                        'account_id': account_id,
                        'partner_id': repair.partner_id.id,
                        'address_invoice_id': repair.address_id.id,
                        'currency_id': repair.pricelist_id.currency_id.id,
                        'comment': repair.quotation_notes,
                        'fiscal_position': repair.partner_id.property_account_position.id
                    }
                    inv_obj = self.pool.get('account.invoice')
                    inv_id = inv_obj.create(cr, uid, inv)
                    invoices_group[repair.partner_invoice_id.id] = inv_id
                self.write(cr, uid, repair.id , {'invoiced':True,'invoice_id' : inv_id})

** Affects: account-banking
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/776644

Title:
  Invoiced Repai Orders

Status in Account Banking Framework:
  New

Bug description:
  When try to invoice a lot of repair orders the module fails.  i did a bit little test and repair the fail changed the object name invoice.obj by inv.obj in the code. ( part code atached)
                  
  Regards 
  Luis 


  
  class mrp_repair_fee(osv.osv, ProductChangeMixin):
      _name = 'mrp.repair.fee'
      _description = 'Repair Fees line'
      def copy_data(self, cr, uid, id, default=None, context=None):
          if not default: default = {}
          default.update( {'invoice_line_id':False,'invoiced':False})
          return super(mrp_repair_fee, self).copy_data(cr, uid, id, default, context)
      def _amount_line(self, cr, uid, ids, field_name, arg, context):
          res = {}
          cur_obj=self.pool.get('res.currency')
          for line in self.browse(cr, uid, ids):
              res[line.id] = line.to_invoice and line.price_unit * line.product_uom_qty or 0
              cur = line.repair_id.pricelist_id.currency_id
              res[line.id] = cur_obj.round(cr, uid, cur, res[line.id])
          return res

      _columns = {
          'repair_id': fields.many2one('mrp.repair', 'Repair Order Ref', required=True, ondelete='cascade', select=True),
          'name': fields.char('Description', size=64, select=True,required=True),
          'product_id': fields.many2one('product.product', 'Product'),
          'product_uom_qty': fields.float('Quantity', digits=(16,2), required=True),
          'price_unit': fields.float('Unit Price', required=True),
          'product_uom': fields.many2one('product.uom', 'Product UoM', required=True),
          'price_subtotal': fields.function(_amount_line, method=True, string='Subtotal',digits=(16, int(config['price_accuracy']))),
          'tax_id': fields.many2many('account.tax', 'repair_fee_line_tax', 'repair_fee_line_id', 'tax_id', 'Taxes'),
          'invoice_line_id': fields.many2one('account.invoice.line', 'Invoice Line', readonly=True),
          'to_invoice': fields.boolean('To Invoice'),
          'invoiced': fields.boolean('Invoiced',readonly=True),
      }
                      invoice=invoice_obj.browse(cr, uid,inv_id)   -----------> inv.obj
                      invoice_vals = {
                          'name': invoice.name +', '+repair.name,
                          'origin': invoice.origin+', '+repair.name,
                          'comment':(comment and (invoice.comment and invoice.comment+"\n"+comment or comment)) or (invoice.comment and invoice.comment or ''),
                      }
                      invoice_obj.write(cr, uid, [inv_id],invoice_vals,context=context)  --------> inv.obj.
                  else:
                      if not repair.partner_id.property_account_receivable:
                          raise osv.except_osv(_('Error !'), _('No account defined for partner "%s".') % repair.partner_id.name )
                      account_id = repair.partner_id.property_account_receivable.id
                      inv = {
                          'name': repair.name,
                          'origin':repair.name,
                          'type': 'out_invoice',
                          'account_id': account_id,
                          'partner_id': repair.partner_id.id,
                          'address_invoice_id': repair.address_id.id,
                          'currency_id': repair.pricelist_id.currency_id.id,
                          'comment': repair.quotation_notes,
                          'fiscal_position': repair.partner_id.property_account_position.id
                      }
                      inv_obj = self.pool.get('account.invoice')
                      inv_id = inv_obj.create(cr, uid, inv)
                      invoices_group[repair.partner_invoice_id.id] = inv_id
                  self.write(cr, uid, repair.id , {'invoiced':True,'invoice_id' : inv_id})


Follow ups

References