コンテンツへスキップ
メニュー
この質問にフラグが付けられました
2 返信
8213 ビュー

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

アバター
破棄

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

最善の回答

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.

アバター
破棄

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()

最善の回答

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.

アバター
破棄
関連投稿 返信 ビュー 活動
0
8月 24
509
1
4月 21
3487
1
9月 20
2338
7
6月 20
21288
1
1月 20
2163