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.
46 lines
1.3 KiB
Go
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,
|
|
}
|
|
}
|