Odoo
МодульAVCO: як Odoo рахує середньозважену собівартість
AVCO — це один «змішаний» цінник на товар, що перераховується з кожним приходом і не ворушиться на виході. Зручно для номенклатури з плаваючими цінами — і саме тут легко не помітити, як середня попливла.
AVCO (середньозважена) — це коли Odoo не пам’ятає ціну кожної окремої одиниці, а тримає одну спільну середню й перераховує її з кожним приходом. Метод зручний для матеріалів із плаваючою ціною. Зворотний бік у тому, що середня весь час змішується: за нею легко не встежити, а саме вона визначає собівартість продажу.
Як рахується — простими словами
Уяви один кошик з одним цінником. Щоразу, як приходить нова партія, Odoo не кладе її окремо, а підмішує до кошика й перераховує цінник як зважене середнє:
нова середня = (залишок × стара середня + прихід × ціна приходу) / (залишок + прихід)
Списання (продаж, видача у виробництво) бере поточну середню — і самої середньої не змінює. Тобто ціна рухається лише на вході, ніколи на виході.
На цифрах. На складі 100 кг по 50 ₴ (разом 5 000 ₴). Прийшло 100 кг по 70 ₴ (7 000 ₴). Тепер 200 кг на 12 000 ₴ → середня 60 ₴/кг. Продали 50 кг — спишеться 50 × 60 = 3 000 ₴, а для решти 150 кг середня лишиться 60 ₴. Купили ще 100 кг по 90 ₴ — Odoo знову перемішає: (150 × 60 + 100 × 90) / 250 = 72 ₴/кг.
Як це влаштовано в Odoo
Поточна середня живе в полі standard_price на товарі — так, Odoo тримає AVCO у тому самому полі, що й «стандартну» ціну, просто перераховує його сам після кожного приходу.
За автоматичної (perpetual) оцінки кожен рух запасу створює запис stock.valuation.layer — «шар оцінки». Саме ці шари, а не одне число в картці, є джерелом правди про вартість запасу: сальдо рахунка запасів у балансі дорівнює сумі шарів. І кожен прихід чи списання Odoo одразу проводить у головну книгу за поточною середньою: на вході Дт запаси / Кт (постачальник або транзит), на виході Дт собівартість / Кт запаси.
Тонкі місця
- Від’ємний залишок. Якщо списуєш більше, ніж фізично є (товар «у мінусі»), Odoo оцінює вихід за останньою середньою, а коли прихід нарешті надходить — рівняє різницю окремим коригуванням. На звітній даті це дає тимчасово криву собівартість. Тримай залишки невід’ємними, особливо на закритті місяця.
- Landed costs (доставка, мито, розмитнення). Самі по собі вони в середню не зайдуть. Їх треба провести окремим механізмом Landed Costs — інакше середня занижена, а отже й собівартість продажу, а отже й маржа на папері більша за реальну.
- Повернення. Повернення товару на склад не завжди повертає рівно ту суму, що колись списалася — у AVCO для цього є окрема логіка (див. джерело). На великих обсягах вона помітно зсуває середню.
- Метод — на категорії, не на одиниці. Costing Method задають на категорії товару; зміна методу на льоту перераховує вартість усієї категорії. Це не та річ, яку перемикають «спробувати».
AVCO, FIFO чи Standard
- AVCO згладжує коливання цін і не вимагає нічого вручну. Але не скаже, з якої саме партії конкретна одиниця.
- FIFO списує «що раніше прийшло — те першим». Дає точнішу собівартість при сильних стрибках цін, проте важчий в обліку й чутливий до порядку рухів.
- Standard — фіксована планова ціна, різниці осідають окремими рахунками. Добре для виробництва за нормативами.
Критерій вибору: багато однорідної номенклатури з плаваючою ціною → AVCO; сильні цінові стрибки й потреба точно знати собівартість конкретної партії → FIFO; виробництво за нормативами → Standard. Для defense-виробництва з фіксованими контрактами AVCO на сировину — частий і розумний дефолт, але звіряй маржу після перших партій.
Дотичне
- Собівартість — собівартість як концепт і свідомий вибір методу
- Inventory — складський модуль, де живе оцінка запасів
- Accounting — як рухи запасів стають проводками в головній книзі
- Закриття НЗВ — собівартість у виробництві й закриття незавершеного
Джерела2
- Automatic inventory valuation — Odoo documentationodoo.com ↗офіційний опис методів оцінки; AVCO перераховується з кожним отриманням як зважена середня
- Average price on returned goods — Odoo documentationodoo.com ↗окрема логіка оцінки повернень при AVCO — найтонше місце методу