This question has been flagged
7 Replies
3806 Views

How to change the code to display tax name/description instead of taxes_id?

 

class product_barcode_print(report_sxw.rml_parse):
    def _getLabelRows(self, form):
        product_obj = self.pool.get('product.product')
data = []
result = {}
product_ids = form['product_ids']

        if not product_ids:
            return {}

        products_data = product_obj.read(self.cr, self.uid, product_ids, ['name','default_code','list_price',
'taxes_id','ean13'])
for product in products_data:
           for product_row in range(int(math.ceil(float(form['qty'])/1))):
                label_row=[]
for row in [1,2,3]:
                    label_data = {
'name': product['name'],,
'default_code': product['default_code'],
'price': product['list_price'],
'igst': product['taxes_id'], }
                    label_row.append(label_data)
data.append(label_row)
        if data:
            return data
else:
            return {}    
 
Avatar
Discard
Best Answer

Try this:

tax_name = ",".join([tax.name for tax in product.taxes_id])
label_data = {                        
 'name': product.name,                        
 'default_code': product.default_code,                        
 'price': product.list_price,                        
 'igst': tax_name
 }
Avatar
Discard
Best Answer

Hi,

Try this way!!!

Just browse the tax record and get the value of field name..


for row in [1,2,3]:
         label_data = {        

                tax_name = self.pool.get('account.tax').browse(self.cr, self.uid, product['taxes_id']).name                                    

               'name': product['name'],,                           

               'default_code': product['default_code'],             

              'price': product['list_price'],            

              'igst': tax_name,      

              }          

       


Avatar
Discard

Hi, I think this will give error if you have multiple taxes in taxes_id field

You need to use a for loop for that

Best Answer


tax_name = ",".join([tax.name for tax in product.taxes_id])
label_data = {                        
 'name': product.name,                        
 'default_code': product.default_code,                        
 'price': product.list_price,                        
 'igst': tax_name
 }


Avatar
Discard
Best Answer

try with search().

label_data = {

     'name': product['name'],

    'default_code': product['default_code'],

    'price': product['list_price'],

    'igst': self.env['account.tax'].search( [ ('id', '=', product['taxes_id'] ) ] ).name,

}

Avatar
Discard
Best Answer

Hi, 

You may try like this way:

class product_barcode_print(report_sxw.rml_parse):
    def _getLabelRows(self, form):
        product_obj = self.pool.get('product.product')        
        data = []        
        result = {}        
        product_ids = form['product_ids']

        if not product_ids:
            return {}

        products_data = product_obj.browse(self.cr, self.uid, product_ids)        
        for product in products_data:
           for product_row in range(int(math.ceil(float(form['qty'])/1))):
                label_row=[]  
                tax_name = ""
                if product.taxes_id:
                    for t in product.taxes_id:
                        tax_name = str(t.name)+ " "
                for row in [1,2,3]: label_data = { 'name': product.name, 'default_code': product.default_code, 'price': product.list_price, 'igst': tax_name, } label_row.append(label_data) data.append(label_row) if data: return data else: return {}

 

Avatar
Discard