Files
Dasko 45831467e0 Knjigovodstvo: storno prodaje/nabavke više ne briše KIR/KPR/KPO
Storno je fizički brisao vezani KIR/KPR/KPO zapis — zakon o računovodstvu ne
dozvoljava brisanje poslovnih knjiga (KPO dodatno ima redni broj bez prekida).
Sad se original čuva, a storno se dograđuje kao poništavajuća stavka
(negirani iznosi, referenca na original) — model.KirStorno/KprStorno/KpoStorno.

Usput ispravljen i pravi uzrok prijavljenog bug-a: kirKandidatiProdaje je
filtrirala samo internu mapu, ne i listu naloga koju obilazi KirBackfillProdaje
— stornirani nalozi su zbog toga dobijali ponovni (pogrešan) KIR upis.
2026-07-02 10:35:24 +02:00

46 lines
1.3 KiB
Go

package model
import "time"
// KpoZapis je jedan red u knjizi o ostvarenom prometu.
type KpoZapis struct {
ID int64
DatumPrometa time.Time
RedniBroj *int
BrojDokumenta string
Opis string
Prihod float64
NacinPlacanja string
Napomena string
Izvor string // "rucno" | "prodaja" | "servis"
IzvorID *int64
DatumUnosa time.Time
}
// KpoSume su zbrojeni prihodi za period.
type KpoSume struct {
Prihod float64
Broj int
}
// KpoStorno gradi storno zapis za dati KPO red: negiran prihod, upisan pod istim
// izvorom/izvor_id kao original. Knjiga o ostvarenom prometu paušalaca vodi redni
// broj bez prekida (Pravilnik) — original se nikad ne briše, storno se dodaje kao
// poništavajuća stavka koja upućuje na original.
func KpoStorno(original KpoZapis, razlog string, datumStorna time.Time) KpoZapis {
napomena := "Storno naloga " + original.BrojDokumenta
if razlog != "" {
napomena += ": " + razlog
}
return KpoZapis{
DatumPrometa: datumStorna,
BrojDokumenta: "STORNO-" + original.BrojDokumenta,
Opis: original.Opis,
Prihod: -original.Prihod,
NacinPlacanja: original.NacinPlacanja,
Napomena: napomena,
Izvor: original.Izvor,
IzvorID: original.IzvorID,
}
}