Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
2 Risposte
3280 Visualizzazioni

Hey! By default, Odoo can automatically create assets from invoice lines. However, it does not pay attention to quantity on the invoice lines. In other words, all the quantity of the same invoice line will be merge into ONE asset. I want odoo to create an asset for each quantity in the invoice line how can we do that. Right now asset create method for odoo is


@api.one
def asset_create(self):
if self.asset_category_id:
vals = {
'name': self.name,
'code': self.invoice_id.number or False,
'category_id': self.asset_category_id.id,
'value': self.price_subtotal_signed,
'partner_id': self.invoice_id.partner_id.id,
'company_id': self.invoice_id.company_id.id,
'currency_id': self.invoice_id.company_currency_id.id,
'date': self.invoice_id.date_invoice,
'invoice_id': self.invoice_id.id,
}
changed_vals = self.env['account.asset.asset'].onchange_category_id_values(vals['category_id'])
vals.update(changed_vals['value'])
asset = self.env['account.asset.asset'].create(vals)
if self.asset_category_id.open_asset:
asset.validate()
return True
Kindly share if you have any suggestion.
Avatar
Abbandona
Autore

Anyone????

Risposta migliore

Hi,

You have to loop on line qunatity field and modify the value field to have the unit.price but in company currency and since there no filed for signed unit price
you will divided the self.price_subtotal_signed field by line qunatity to get unit price signed.

So you will ovveride asset_create as below and you donot need to call the super:


@api.one
def asset_create(self):
for x in range(self.quantity):
if self.asset_category_id:
vals = {
'name': self.name,
'code': self.invoice_id.number or False,
'category_id': self.asset_category_id.id,
'value': self.price_subtotal_signed / self.quantity,
'partner_id': self.invoice_id.partner_id.id,
'company_id': self.invoice_id.company_id.id,
'currency_id': self.invoice_id.company_currency_id.id,
'date': self.invoice_id.date_invoice,
'invoice_id': self.invoice_id.id,
}
changed_vals = self.env['account.asset.asset'].onchange_category_id_values(vals['category_id'])
vals.update(changed_vals['value'])
asset = self.env['account.asset.asset'].create(vals)
if self.asset_category_id.open_asset:
asset.validate()
return True
Avatar
Abbandona
Autore

hey! Thanks for replying.

I have tried your code but it is giving me this error

TypeError: 'float' object cannot be interpreted as an integer

How to fix that sir? Thanks

Autore

Hey man i have fixed this using

for x in numpy.arange(self.quantity):

and it is working now. Thanks for your answer

Post correlati Risposte Visualizzazioni Attività
1
gen 20
5563
2
mag 19
8652
3
lug 22
7538
0
nov 21
2894
0
ago 20
3794