Skip to Content
Menu
This question has been flagged
2 Replies
7509 Views

Hi. I would like to know if there is any way to update product costs from the Purchase Order. Since I created all the products but I would like their cost to be updated as the purchase orders are created. Currently the categories are in "Standard Price" with automatic valuation. But the costs of the Product tab are not updated. Thank you

Avatar
Discard

Hi,

in PO create function,call a function that will update the product.

Something like:

@api.model

def create(self, vals):

record = super(...).create(vals)

record.update_product_cost_price()

return record

def update_product_cost_price(self)

for line in self.order_line:

# Add your comppute logic for cost price

Hope this helps.

if not, write back for more analysis

Best Answer

Hello Eladio Garcia,

The recalculation of product costs (inventory valuation) are carried out after receipt of the products (after entering the products into stock). This is the norm and this is exactly what Odoo does (of course if you well set up FIFO or AVCO on product category).

However, if you want to do this you will need to do some customization and I'm afraid it might be a little tricky and risky. Below are so hints that would helps:

  1. if you are using Odoo >= 13.0, so you will have to create a Stock Valuation Layer (stock.valuation.layer model) for each product on your PO with the quantity and the unit price mentioned on the PO Line.

  2. Be sure to prevent Odoo core to create Stock Valuation Layers at the stock receipt  to avoid double computation of the stock valuation.


Good luck to you.

Avatar
Discard

This is the best way. I'm doing some correction in V16 because on kick start, the products categories wasn't configured correctly, so in order to correct them having moves in accounting, i have to look inside the code, and i found a function in the model stock.valuation.layer called _validate_accounting_entries that does the entries in the account.move model. Then i have to replicate the functionality of this function to make the corrections in the dates that were to have to be. Another interesting function used inside _validate_accounting_entries is _account_entry_move, which does the computacion of the account moves an returns an array of account.move's related to that stock move.

Here is a server action sample for stock.valuation.layer:

for record in records:
a = record.stock_move_id._account_entry_move(record.quantity, record.description, record.id, record.value)
da = record.create_date.date()
a[0]['date'] = da
b = env['account.move'].create(a)
b._post()

Best Answer

Pudiste solucionarlo?? yo con Odoo13 uso el modulo Last Purchase price de Cybrosys, que esta en el store y es gratuito. Yo estoy tratando de hacer lo mismo en Odoo15 por el momento sin solucion.

Avatar
Discard
Related Posts Replies Views Activity
0
Aug 24
170
1
Apr 21
2700
1
Sep 20
1931
7
Jun 20
20407
1
Jan 20
1642