Računovodstvo zaliha i proizvodnje u v19

Računovodstvo zaliha u v19

Osnove

Odoo u v19 donosi značajno jednostavniji model računovodstva zaliha sa sljedećim karakteristikama:

- zaprimanje i izdavanje robe se ne knjiži u glavnu knjigu

- knjiže se ulazni računi na konto zaliha (6600 ili 3100 ili ...)

- knjiže se izlazni računi sa konta zaliha na konto troška prodane robe (7100/6600)

I to je to!

- na kraju perioda (mjeseca ili godine) pokreće se (ručno ili automatski, za početak uvijek ručno) Inventory Valuation koji knjiži sve privremene razlike 

Inventory Valuation

Inventory Valuation (Accounting → Review → Inventory → Inventory Valuation) usklađuje stanje konta zaliha (6600) i vrijednost zalihe (Inventory → Reporting → Stock, Inventory on Date ako treba), a razliku prebacuje na konto Stock Variation (3090 ili kako se postavi, to bi trebao biti privremeni konto uvijek sa saldom 0). Ako je sve ok onda tog knjiženja ne bi trebalo ni biti. 

Ako se neko knjiženje kreira onda je to zbog:

  • roba je zaprimljena, a nije fakturirana
  • roba je izdana, a nije fakturirana
  • ručno su promijenjene nabavne cijene
  • roba je prodana prije nego što je ulazni račun postavio nabavnu cijenu odnosno ispravio AVCO
  • itd

Ako je roba zaprimljena/izdana, a nije fakturirana onda se pokreću izvješća 

  • Bill To Receive, 
  • Billed Not Received, 
  • Invoices To Be Issued, 
  • Invoiced Not Delivered 

koja privremene razlike (trebaju se selektirati stavke pa se pojavljuje "Create Accrual Entries") prebacuju s konta Stock Variation na konta koja se zadaju te se automatski kreira storno tog knjiženja na datum iza datuma zatvaranja. 

Ostale promjene su najčešće posljedica različitih cijena u različitim trenucima odnosno neurednog unosa, izdavanja robe prije nego što je zaprimljena, zaprimanja robe po cijenama iz narudžbe umjesto po cijenama iz računa, ručne promjene nabavne cijene i slično. Analiza tih situacija je niže u ovom tekstu (Sherlock). 

Kada se utvrdi zbog čega je došlo do razlike onda se ta razlika treba ručno rasknjižiti s konta Stock Variation na odgovarajući konto. Na primjer:

  • 7100 ako je utvrđeno da je COGS premali ili preveliki
  • 7133 Porezno nepriznati manjkovi - ako se radi o neznatnim manjkovima
  • 7814 Inventurni viškovi ako se radi o prihodu
  • itd

Postavke

Za hrvatske korisnike najbolje su postavke, na osnovu toga je sastavljen ovaj tekst:


te u kategorijama:


i virtualnim lokacijama:

Računovodstvo proizvodnje

Osnove

Mehanizam za proizvodnju je istog principa kao i za zalihu - fizički pomaci ne knjiže se u glavnu knjigu; knjiže se samo:

  • pri zatvaranju radnog naloga (Mark as Done) — automatski se knjiže komponente, rad i gotov proizvod
  • na kraju razdoblja — WIP Accounting za otvorene radne naloge
  • Inventory Closing Entry zatvara sve preostale razlike preko konta Stock Variation

Konti za proizvodnju

KontoNazivUlogaMjesto postavljanja u Odoou
3100Sirovine i materijalVrijednost zaliha sirovinaKategorija sirovina → Stock Account
6000Nedovršena proizvodnja (Production)Tranzitni konto radnog naloga(a) Kategorija gotovog proizvoda → Production Account (skriven, kod Account Properties); (b) Virtualna lokacija Production → Cost of Production (valuation_account_id)
6090WIP — nedovršena proizvodnja (privremeni)WIP Accounting na kraju razdobljaAccounting → Configuration → Settings → WIP Account (modul mrp_accountant)
6300Gotovi proizvodiVrijednost gotovih proizvodaKategorija gotovog proizvoda → Stock Account
4000Troškovi rada i strojevaTrošak radnih centaraRadni centar (Manufacturing → Configuration → Work Centers) → Expense Account

Važno: Production Account (6000) mora biti postavljen i na kategoriji gotovog proizvoda i na virtualnoj lokaciji Production — i to na isti konto. Ako te dvije postavke nisu uskladene, saldo konta 6000 neće biti 0 nakon zatvaranja radnog naloga.

Tok knjiženja pri Mark as Done

Kada se radni nalog zatvori (Mark as Done), Odoo automatski knjiži:

Korak 1 — komponente izlaze iz skladišta na lokaciju Production

D: 6000 Nedovršena proizvodnja
P: 3100 Sirovine i materijal na zalihama   (po AVCO/FIFO cijeni)

Korak 2 — trošak radnih centara (Workcenter)

D: 6000 Nedovršena proizvodnja
P: 4000 Troškovi rada i strojeva

Korak 3 — gotov proizvod ulazi u skladište

D: 6300 Gotovi proizvodi
P: 6000 Nedovršena proizvodnja
       ( = Σ komponenti + Σ rada + Extra Unit Cost )

Rezultat: konto 6000 se poništi na 0 - pod uvjetom da je cijena gotovog proizvoda jednaka zbroju svih troškova. Ako nije, razlika ostaje na 6000 i traži analizu. Razlika bi trebala automatski biti 0 ako je metoda vođenja zaliha AVCO ili FIFO.

Nusproizvodi (byproducts)

Nusproizvodi dobivaju udio vrijednosti prema postotku cost_share definiranom u sastavnici (BoM):

D: 6300 (ili pripadajući stock account nusproizvoda)
P: 6000 Nedovršena proizvodnja
       (proporcionalni udio ukupnih troškova)

Zbroj cost_share po svim nusproizvodima ne može biti veći od 100%. Glavni gotov proizvod dobiva ostatak (100% − Σ cost_share).

Kalkulacija cijene gotovog proizvoda

Cijena gotovog proizvoda = Σ(vrijednost komponenti)
                         + Σ(trošak radnih centara)
                         + Extra Unit Cost
  • AVCO / FIFO — izračun je automatski, na temelju stvarnih troškova.
  • Standard Price — proizvod ulazi po standardnoj cijeni; razlika između stvarnoga troška i standarda ostaje na kontu 6000 (i traži ručno rasknjiženje na 7100 ili sličan konto za odstupanje).
  • Extra Cost — ručno unesen dodatni trošak po jedinici, izravno na radnom nalogu (polje Extra Unit Cost na mrp.production).

WIP Accounting — za otvorene radne naloge na kraju razdoblja

Ako se precizno evidentira izlazak sirovina sa zalihe u proizvodnju u toku onda je potrebno na kraju razdoblja pokrenuti ovu akciju za otvorene radne naloga (radne naloge na kojima je evidentiran utrošak sirovina, ali nisu gotovi). Mehanizam je analogan Inventory Valuation kod zaliha. Pokreće se za radne naloge u tijeku (statusi In ProgressTo Close i Confirmed) na kraju obračunskog razdoblja.

WIP Accounting se pokreće kao akcija direktno na listi radnih naloga:

Manufacturing → Manufacturing Orders → (odaberi jedan ili više MO-a) → Action → Post WIP Accounting Entry

Wizard automatski ignorira radne naloge koji nisu u statusu In ProgressTo Close ili Confirmed. Na formi pojedinog radnog naloga prikazuje se smart button WIP s brojem dosadašnjih WIP knjiženja.

Knjiženje:

D: 6090 WIP — Nedovršena proizvodnja
P: 3100 Sirovine i materijal na zalihama   (komponente do sada utrošene)
P: 4000 Troškovi rada                       (rad do sada obavljen)

Automatski se kreira storno s datumom nakon datuma zatvaranja (isti mehanizam kao kod Inventory Closing Entry).

Zašto je to potrebno: komponente su već fizički napustile zalihu (saldo konta 3100 je smanjen), ali gotov proizvod još nije zaprimljen u skladište (saldo konta 6300 nije povećan). Knjiženje WIP-a aktivira tu vrijednost u glavnoj knjizi za razdoblje zatvaranja.

Napomena: uz WIP Account, postavke mrp_accountant modula nude i WIP Overhead Account, koji se koristi kao alternativni credit za radne centre kada radni centar nema vlastiti Expense Account.

Pregled svih konta i toka vrijednosti

NABAVA TRGOVAČKE ROBE:    Dobavljač → 2200
                                      ↓
                                  6600 Trgovačka roba
                                      ↓
PRODAJA ROBE:             6600 → 7100 COGS  (pri fakturiranju)


NABAVA SIROVINA:          Dobavljač → 2200
                                      ↓
                                  3100 Sirovine i materijal
                                      ↓
PROIZVODNJA:              3100 Sirovine
                            ↓
                          6000 Nedovršena proizvodnja  ←  4000 Rad
                            ↓
                          6300 Gotovi proizvodi
                            ↓
PRODAJA GOTOVIH:          6300 → 7100 COGS  (pri fakturiranju)


PERIODIČNO ZATVARANJE:    3090 Stock Variation  (uvijek = 0 nakon storna)
                          6090 WIP              (uvijek = 0 nakon storna)
                          6000 Production       (uvijek = 0 nakon zatvaranja MO)

Sherlock — analiza razlika - Claude 6.5.2026

0) Obvezni redoslijed zatvaranja

Zatvaranje uvijek provodimo ovim redoslijedom — svaka zamjena koraka generira lažni preostali saldo:

#KorakPutanjaŠto radi
1Vremenska razgraničenjaAccounting → Review → Purchases / Sales (Bill To ReceiveBilled Not ReceivedInvoices To Be IssuedInvoiced Not Delivered)Označiti stavke → Create Accrual Entries → privremeno knjiženje preko 3090, automatski storno na dan + 1
2WIP AccountingManufacturing → Manufacturing Orders → (odaberi MO-e) → Action → Post WIP Accounting EntryZa otvorene MO-e: D: 6090 / P: 3100 + 4000; storno na dan + 1
3Inventory Closing EntryAccounting → Review → Inventory → Inventory ValuationUsklađuje saldo konta zaliha s fizičkom vrijednošću; razlika ide na 3090
4Provjera saldaAccounting → Reporting → General Ledger (filtri: 3090, 6090, 6000)Saldo svakog od ova tri konta mora biti 0 nakon storna; ako nije — kreće lov

Prag istrage: |preostali saldo| > max(200 €, 0,5 % vrijednosti zalihe). Ispod toga to je obično zaokruživanje. Iznad toga, sustavno se istražuje.

1) Stablo odlučivanja: na kojem je kontu razlika?

Prije bilo kakve detaljne analize, identificirajmo konto na kojem leži razlika — različiti konti znače različite uzroke i različite alate:

Provjeriti salda 3090, 6090, 6000:

  3090 ≠ 0  →  PREOSTALI SALDO NA STOCK VARIATION
                ├── §2 Slojevi vrijednosti bez količine (cijena, ne vrijeme)
                ├── §3 Stariji datum unosa / negativna zaliha
                ├── §4 Povrat bez para u knjižnom odobrenju
                └── §5 Inventurno usklađenje / otpis na pogrešnom kontu

  6090 ≠ 0  →  PREOSTALI SALDO NA WIP
                └── §6 WIP nije proveden ili nije storniran

  6000 ≠ 0  →  PREOSTALI SALDO NA PRODUCTION
                ├── §7a Odstupanje Standard Pricea
                ├── §7b Extra Unit Cost (sustavno; vidi tablicu)
                ├── §7c Lokacija Production nema postavljen konto
                └── §7d Pogrešan cost_share na nusproizvodima

  Bilo koji od gore + ručna knjiženja  →  §8 Onečišćenje glavne knjige

Pravilo: prvi pogodak prekida lanac. Kad za pojedini konto i pojedini proizvod pronađemo uzrok, prelazimo na sljedeći proizvod.

2) Uzrok 1 — Slojevi vrijednosti bez količine (~80 % slučajeva)

Trag: valuation slojevi gdje je količina = 0, ali vrijednost ≠ 0. To su retroaktivne korekcije troška koje pomiču AVCO.

Tipični izvori:

  • ulazni račun s drukčijom cijenom od one po kojoj je roba zaprimljena
  • raspodjela razlike u cijeni ili landed cost-a
  • revaluacija zbog naknadno unesenih primki sa starijim datumom

Kako pronaći:

  1. Uključiti Developer Mode.
  2. Otvoriti Inventory → Operations → Stock Valuation Layers.
  3. Filtri:
    • Date <= datum zatvaranja
    • Quantity = 0
    • Value != 0
  4. Grupiranje po Product.
  5. Sortirati po apsolutnoj vrijednosti — i negativni iznosi pridonose preostalom saldu.

Što očekivati: prvih 20 proizvoda obično objašnjava ≥ 80 % ukupne razlike.

Korektivna radnja: za svaki slučaj analizirati razliku (cijena na narudžbi naspram cijene na fakturi) i ručno rasknjižiti s 3090 na:

  • 7100 ako je COGS premali ili preveliki (cjenovno odstupanje)
  • 7133 ako je riječ o porezno nepriznatim manjkovima
  • 7814 ako je riječ o inventurnom višku

Trajna mjera: 3-way matching na ulaznim računima uz definirane tolerancije; standardiziran proces landed cost-a.

3) Uzrok 2 — Negativna zaliha i naknadni unosi sa starijim datumom

AVCO daje pogrešne rezultate kad postoji:

  • isporuka prije zaprimanja (čak i na razini sata ili dana ako je dopušten unos sa starijim datumom — backdating)
  • negativna zaliha (količina ispod nule)
  • naknadno unošenje starijih primki ili inventurnih usklađenja

Kako pronaći:

  1. Inventory → Reporting → Stock at Date — izdvojiti proizvode s negativnim stanjem u razdoblju.
  2. Inventory → Operations → Transfers (Stock Moves) — postaviti filtre:
    • date u prošlosti (prije datuma zaključavanja)
    • a istovremeno create_date nakon datuma zaključavanja
    Drugi filtar otkriva naknadno unesene zapise sa starijim datumom.

Korektivna radnja:

  • Ispraviti datum unosa ili pokrenuti revaloriziranje nakon ispravljenog redoslijeda.
  • Ručno rasknjižiti preostalu razliku na 7100 / 7133 / 7814.

Trajne mjere:

  • Inventory Lock Date + Accounting Lock Date odmah nakon zatvaranja (Accounting → Configuration → Settings → Lock Dates).
  • Zabrana negativne zalihe na razini skladišta (ili barem upozorenje uz tjedno izvješće).
  • Zabrana unosa sa starijim datumom u zaključano razdoblje (kontrolira se lock date-om).

4) Uzrok 3 — Povrat bez povezanog knjižnog odobrenja

Povrat robe (od kupca ili dobavljaču) bez ispravno povezanog knjižnog odobrenja — ili u drugom razdoblju, ili po drugoj cijeni — ostavlja razliku kao preostali saldo.

Kako pronaći:

  1. Lista povrata u razdoblju: Inventory → Operations → Transfers uz filtar Return Picking.
  2. Za svaki povrat provjeriti postoji li pripadajuće knjižno odobrenje (Accounting → Customers → Credit Notes ili Vendors → Refunds).
  3. Provjeriti je li u istom razdoblju, na istu količinu i po istoj cijeni.

Korektivna radnja: ispravno povezati povrat s knjižnim odobrenjem; razlika će nestati pri sljedećem Inventory Closing Entry. Ako je povrat proveden po pogrešnoj cijeni (npr. po staroj AVCO cijeni), izdati korektivno knjižno odobrenje.

Trajna mjera: procedura za povrate s obveznim povezivanjem na izvorni dokument.

5) Uzrok 4 — Inventurno usklađenje ili otpis na pogrešnom kontu

Inventurna usklađenja i otpis (scraplegitimni su izvori razlika i ne smiju završiti na 3090. Problem nastaje kad se "sakriju" kao Stock Variation umjesto da završe na očekivanom Loss Account-u (7130 / 7133 / 7814).

Kako pronaći:

  1. Inventory → Operations → Physical Inventory — popis svih usklađenja u razdoblju.
  2. Inventory → Operations → Scrap Orders — popis svih otpisa.
  3. Za svaki provjeriti je li učinak na uspjeh proknjižen na Loss Account-u koji je definiran na virtualnoj lokaciji (Inventory → Configuration → Locations).

Korektivna radnja: ako učinak završi na 3090 umjesto na 7130 / 7133 / 7814, ručno reklasificirati knjiženje na ispravan konto.

Trajne mjere:

  • Provjeriti da virtualne lokacije Inventory adjustment i Scrap imaju ispravno postavljen Loss Account (vidi tablicu u poglavlju Postavke).
  • Ograničiti pravo provedbe inventurnih usklađenja preko korisničkih grupa.

6) Uzrok 5 — WIP Accounting nije proveden ili nije storniran

Saldo na 6090 (WIP — Nedovršena proizvodnja) na kraju razdoblja znači da je WIP knjiženje proknjiženo, ali storno nije pokrenut, ili da je WIP zaboravljen za neki podskup MO-a.

Kako pronaći:

  1. Accounting → Reporting → General Ledger → filtar po kontu 6090 → razdoblje.
  2. Ako saldo nije nula, provjeriti postoje li storno stavke (datum dan nakon zatvaranja, suprotnih iznosa).

Korektivna radnja:

  • Ako je WIP proknjižen, ali storno nedostaje, ručno proknjižiti storno.
  • Ako je WIP potpuno zaboravljen za neki MO, pokrenuti Action → Post WIP Accounting Entry za taj MO; storno se kreira automatski.

Trajna mjera: kontrolni popis (checklist) zatvaranja koji izričito nalaže provedbu WIP Accounting-a prije Inventory Closing Entry.

7) Uzrok 6 — Production Account (6000) nije nula

7a) Odstupanje Standard Price-a

Gotov proizvod ulazi po standardnoj cijeni, ali komponente i rad skuplji su ili jeftiniji od standarda. Razlika ostaje na 6000 sustavno (nije pogreška, već cjenovno odstupanje koje treba periodički rasknjižiti).

Provjera: Manufacturing → Manufacturing Orders → otvoriti MO → smart button Valuation → provjeriti saldo po pojedinom MO na kontu 6000.

Korektivna radnja: ručno rasknjižiti na 7100 (COGS) ili na poseban konto za cjenovna odstupanja.

7b) Extra Unit Cost (sustavni preostali saldo)

Kad je extra_cost > 0 na MO-u, Odoo ne knjiži automatski protustavku — na 6000 ostaje saldo −(extra_cost × količina) po samoj matematičkoj konstrukciji.

AVCO/FIFO + scenarijSaldo 6000 nakon Mark as Done
extra_cost = 0, bez nusproizvoda0 (po konstrukciji)
extra_cost = 0, s nusproizvodima (Σ cost_share + finished = 100 %)0 (po konstrukciji)
extra_cost > 0−extra_cost × količina (sustavno; treba ručna protustavka)

Korektivna radnja: ručno proknjižiti protustavku na konto režije, dodatnih troškova ili transporta — ovisno o naravi extra cost-a.

Trajna mjera: ako se extra cost sustavno koristi, definirati pravilo za njegovu protustavku (poslužiteljska radnja ili dokumentirana procedura).

7c) Lokacija Production nema postavljen Cost of Production konto

Ako virtualna lokacija Production nema postavljen Cost of Production konto, knjiženje rada radnih centara neće se provesti, pa će radni centri "visiti" izvan glavne knjige.

Provjera: Inventory → Configuration → Locations → otvoriti Production → polje Cost of Production mora biti popunjeno (i mora odgovarati Production Account-u na kategoriji gotovog proizvoda).

Korektivna radnja: ispraviti postavku; idući MO knjiži se ispravno. Za već zatvorene MO-e ručno proknjižiti rad.

7d) Pogrešan cost_share na nusproizvodima

Ako je u sastavnici (BoM) Σ cost_share nusproizvoda postavljen tako da raspodjela ne odgovara stvarnoj poslovnoj logici, raspodjela troška na nusproizvode i glavni proizvod ne pokriva ukupni total_cost, pa se 6000 ne poništi.

Provjera: Manufacturing → Products → Bills of Materials → otvoriti BoM → provjeriti zbroj cost_share na nusproizvodima (mrp.bom.byproduct.cost_share). Validacija u kodu (mrp/models/mrp_bom.py:208) blokira Σ > 100 %, ali ne nameće Σ = 100 % — moguće je imati npr. Σ = 30 % (uz 70 % na glavni proizvod), što je ispravno.

Korektivna radnja: ako je raspodjela namjerno različita od poslovne stvarnosti, ručno rasknjižiti preostali saldo. Ako je pogrešna nehotice, ispraviti cost_share na BoM-u i zatvoriti sljedeći MO ispravno.

8) Uzrok 7 — Ručna knjiženja na kontima zaliha i proizvodnje

Trivijalan, ali čest uzrok: netko (ili integracija) je ručno proknjižio na 3100, 6600, 6300, 6000, 6090 ili 3090. Takva knjiženja zaobilaze sustav i ne odražavaju se u stock.valuation.layer-u, pa generiraju razliku.

Kako pronaći u glavnoj knjizi:

  1. Accounting → Reporting → General Ledger → filtrirati po kontima: 3100, 6600, 6300, 6000, 6090, 3090.
  2. Isključiti sustavna knjiženja:
    • Inventory Closing Entry (referenca Stock Closing)
    • Manufacturing WIP (referenca s prefiksom MO/...)
    • knjiženja iz primki i isporuka (referenca WH/IN/...WH/OUT/...MO/...)
  3. Sve ostalo traži obrazloženje. Najčešći krivci: ručni journal entries, uvoz iz drugog sustava, korektivna knjiženja pri prelasku na novi sustav.

Korektivna radnja: ako je knjiženje suvišno, stornirati. Ako je opravdano (npr. ispravak otvorenog stanja), dokumentirati i pomaknuti učinak s 3090 / 6000 na ispravan konto.

Trajna mjera: zabraniti ručna knjiženja na Stock i Production kontima preko korisničkih ovlasti (ograničenje konta na korisničkim grupama, ili restrict_account_id putem prilagođenog modula).

9) Klasifikacija akcija po uzroku

UzrokKategorijaTrajna mjera
Cijena na fakturi ≠ cijena na narudžbi (slojevi vrijednosti bez količine)Disciplina nabave3-way matching + tolerancije; standardiziran landed cost
Naknadni unos sa starijim datumom / negativna zalihaPromjena procesaInventory Lock Date + Accounting Lock Date + zabrana negativne zalihe
Povrat bez povezanog knjižnog odobrenjaEdukacijaProcedura za povrate s obveznim povezivanjem
Inventurno usklađenje na pogrešnom kontuPromjena procesa + ovlastiPostavke Loss Account-a; ograničenje tko smije usklađivati
WIP nije proveden ili nije storniranPromjena procesaKontrolni popis zatvaranja: WIP prije Inventory Closing Entry
Sustavno odstupanje Standard Price-aRačunovodstvena politikaPeriodičko rasknjiženje cjenovnog odstupanja na 7100
Extra Unit Cost bez protustavkePromjena procesaPoslužiteljska radnja ili dokumentirano pravilo za protustavku
Lokacija Production bez kontaPostavkePri instalaciji obvezni kontrolni popis postavki
Neusklađen cost_share na BoM-uEdukacijaPregled BoM-ova uz konkretne primjere
Ručna knjiženja po kontima zaliha i proizvodnjeOvlastiZabrana ručnih knjiženja preko korisničkih ovlasti

10) Mjesečna kontrolna ploča

A) Zatvaranje — provesti redoslijedom:

KorakAkcija
1Sva razgraničenja na Bill To Receive / Billed Not Received / Invoices To Be Issued / Invoiced Not Delivered — Create Accrual Entries za sve stavke koje su trebale biti zaključene
2Manufacturing → Manufacturing Orders → odabrati sve otvorene MO-e (In ProgressTo CloseConfirmed) → Action → Post WIP Accounting Entry
3Accounting → Review → Inventory → Inventory Valuation → pokrenuti Inventory Closing Entry
4Postaviti Inventory Lock Date i Accounting Lock Date na zadnji dan razdoblja

B) Provjera salda — kriteriji prihvatljivosti:

KontoOčekivano
3090 Stock Variation0 (nakon storna razgraničenja)
6090 WIP0 (nakon storna WIP-a)
6000 Production0 (osim sustavnog odstupanja zbog Standard Price-a ili Extra Cost-a)
6600 Stockusklađen s Inventory → Reporting → Stock (Inventory on Date)

C) Ako bilo koji konto nije ispravan:

  1. Pokrenuti postupak iz §1 (stablo odlučivanja) i identificirati uzrok.
  2. Prvih 20 proizvoda po doprinosu razlici — analiza po §2–§7.
  3. Klasificirati uzrok i akciju u tablici (§9).
  4. Provesti akciju → reproknjižiti ako treba → ponovno provjeriti salda.
  5. Dokumentirati u zatvarajućem zapisniku — to je revizijska podloga.

D) Najučinkovitije preventivne postavke

  • Lock dates odmah nakon zatvaranja (Inventory + Accounting).
  • Zabrana negativne zalihe ili minimalno upozorenje uz tjedno izvješće.
  • 3-way matching s tolerancijama (blokirati velike razlike u cijeni).
  • Standardiziran proces landed cost-a (kako se dodatni troškovi ne bi pojavljivali kao nasumične korekcije).
  • Standardizacija mjernih jedinica (UoM) radi izbjegavanja razlika zbog zaokruživanja.
  • Kontrolni popis zatvaranja: WIP Accounting uvijek prije Inventory Closing Entry.
  • Production lock date: zatvarati MO-e koji su stvarno završeni; ne ostavljati ih u statusu In Progress bez razloga.
  • Tjedna provjera salda 3090, 6090, 6000 — rano otkrivanje sprječava nakupljanje.


Sherlock - ChatGPT-5.2 Thinking 27.12.2025

1) Cilj: “Residual Stock Variation” nakon accruala


Pravilo: radiš postupak zatvaranja ovim redom:

  1. napravi GRNI/GDNI i srodne accruale (Bills to Receive / Invoiced not Delivered / itd.)
  2. tek onda radi Inventory Closing Entry
  3. iznos koji ostane na Stock Variation nakon toga je tvoj “residual” (ono što želiš loviti)


Ako si to odradio i variation nije ~0, kreće lov.

2) Najbrži “filter” za AVCO: pronađi valuation layere koji su “value-only”


Kod AVCO-a, najčešći trag za “nije timing, nego value” su valuation layeri s 0 količine i ≠0 vrijednosti.


Kako to izgleda

  • “Qty = 0, Value = +/– X” 
    To su tipično:
  • korekcije troška kad dođe vendor bill s drukčijom cijenom,
  • price difference / landed cost alokacije,
  • revaluacije zbog backdated/out-of-order.


Što radiš


U debug modu otvori listu Stock Valuation Layers i filtriraj:

  • Datum u periodu zatvaranja (npr. do 31.12.)
  • Quantity = 0
  • Value ≠ 0
  • grupiraj po Product


To je u 80% slučajeva razlog residual variationa.

3) Drugi killer: negativan stock i out-of-order datumi (AVCO “poludi”)


AVCO je osjetljiv kad imaš:

  • isporuke prije zaprimanja (čak i na sat/dan razini ako backdate-aš),
  • negativan stock,
  • naknadno ubacivanje starijih receiptova ili inventory adjustmenta.


Kontrola

  1. Izvuci proizvode s negativnim on-hand u periodu (ili barem one koji su ikad pali ispod 0).
  2. Provjeri stock moves gdje je:
    • Date u prošlosti (prije zaključavanja), a
    • Create Date poslije (znači naknadno upisano/backdated)


Ovo stvara revaluacije i čudne value-only layere.


Operativna mjera: uvedi “no backdating” pravilo + lock date za inventory (i accounting lock) čim zatvoriš mjesec.

4) Treći uzrok: mismatch “return ↔ refund”


Ako radiš:

  • povrat robe (customer return / vendor return) 
    a refund (credit note) nije ispravno povezan ili je u drugom periodu / po drugoj cijeni, variation ostane kao residual.


Kontrola


Za top proizvode iz residuala:

  • listaj sve return transfere u periodu
  • provjeri da li postoji odgovarajući refund i da li je u istom periodu i na istu količinu / cijenu logikom koju očekuješ.

5) Četvrti uzrok: Inventory Adjustment / Scrap koji ide “krivim putem”


Inventory adjustment i scrap su legitimni “non-timing” izvori razlika. Ono što želiš je da ti budu namjerno vidljivi (na loss konto), a ne da se skrivaju kao “variation”.


Kontrola

  • pregledaj sve Inventory Adjustments i Scrap u periodu
  • provjeri da je njihov P&L efekt na očekivanom kontu (Inventory Loss/Shrinkage), a ne da završava kao residual variation


Operativno: jasno definiraj “Inventory Loss” konto i ograniči tko smije raditi adjustment.

6) Peti uzrok: ručna knjiženja po stock računima


Ovo je banalno, ali često: netko (ili integracija) je ručno knjižio na Stock Valuation account ili Variation.


Kontrola


U GL-u:

  • filtriraj journal items na Stock Valuation account i Stock Variation
  • izuzmi (ili označi) one koji su “Inventory Closing Entry”
  • sve ostalo = sumnjivo i treba objasniti

7) Kako to pretvoriti u rutinu (što radi računovodstvo svaki mjesec)


Evo “operativne kontrolne ploče”:


A) Nakon accruala + closing entry:

  • Residual Variation > prag (npr. 200 € ili 0,5% zalihe) → ide analiza


B) Analiza u 4 koraka (brzo, bez filozofije):

  1. Top 20 proizvoda po contributionu na residual (group by product)
  2. Za te proizvode:
    • pogledaj value-only valuation layere (qty=0)
    • pogledaj je li bilo negativnog stocka / backdating
    • pogledaj returns/refunds
    • pogledaj inventory adjustments/scrap
  3. Ako ništa od toga:
    • provjeri ručnu GL aktivnost na stock/variation
  4. Svaki uzrok mapiraš u jednu od kategorija i imaš “action”:
    • process fix (no backdating, lock date)
    • purchase discipline (3-way matching/tolerance)
    • training (returns moraju imati linked refunds)
    • access rights (tko smije adjustments)

8) Najjače postavke/politike koje smanjuju residual (AVCO friendly)

  • Zaključavanje datuma (inventory + accounting) odmah nakon zatvaranja
  • Zabrana negativnog stocka (ili barem alert + tjedni report)
  • 3-way matching + tolerancije (blokiraj velike razlike cijene)
  • Landed costs proces (da se dodatni troškovi ne “random” pojave kao korekcije)
  • Standardiziraj UoM (izbjegni rounding razlike)