Servis: sprečeno dupliranje KIR/KPO/fiskalnog pri ponovnom Preuzeto; KPO redni_broj
Ponovni ulazak naloga u status Preuzeto (dupli klik, dupli submit modala naplate, sekvenca Preuzeto→Završeno→Preuzeto) je ponovo pokretao fiskalizaciju i upis u KIR/KPO bez provere da li već postoje — svaki ulazak je duplirao prihod i PDV obavezu, a dashboard/backfill duplikat nikad nije prijavljivao jer je dovoljan bio bar jedan zapis. Dodate PostojiZaIzvor/DohvatiPoServisu provere pre svakog upisa (isti obrazac kao RetryFiskalizacija). KIR upis servisa refaktorisan u model.KirIzServisa (deljeno sa budućim backfill-om). KpoRepo.Kreiraj sad dodeljuje redni_broj automatski (COALESCE(MAX,0)+1) — kolona je postojala u šemi ali se nikad nije popunjavala, pa knjiga o ostvarenom prometu paušalaca nije imala redni broj koji Pravilnik zahteva.
This commit is contained in:
@@ -129,6 +129,38 @@ func KirIzProdaje(nalog ProdajniNalog, stavke []StavkaProdaje, kupacNaziv, kupac
|
||||
return k
|
||||
}
|
||||
|
||||
// KirIzServisa gradi KIR zapis iz preuzetog servisnog naloga: radovi i ugrađeni
|
||||
// delovi (bez predloženih koji čekaju odobrenje klijenta) se sabiraju kao NETO
|
||||
// stavke po svojoj PDV stopi. datumPrometa je trenutak prometa (za sveže naloge
|
||||
// „sada", za backfill starih naloga datum preuzimanja); datumKnjizenja je kad se
|
||||
// zapis stvarno upisuje u knjigu (za backfill kasni za periodom).
|
||||
func KirIzServisa(nalog ServisniNalog, radovi []ServisniRad, delovi []ServisniDeoSaArtiklom, kupacNaziv, kupacPib, kupacMesto string, datumPrometa, datumKnjizenja time.Time) PdvKir {
|
||||
id := nalog.ID
|
||||
k := PdvKir{
|
||||
DatumPrometa: datumPrometa,
|
||||
DatumKnjizenja: datumKnjizenja,
|
||||
BrojDokumenta: nalog.BrojNaloga,
|
||||
KupacNaziv: kupacNaziv,
|
||||
KupacPib: kupacPib,
|
||||
KupacMesto: kupacMesto,
|
||||
Izvor: "servis",
|
||||
IzvorID: &id,
|
||||
}
|
||||
for _, r := range radovi {
|
||||
if r.Predlozeno {
|
||||
continue
|
||||
}
|
||||
k.DodajNeto(r.Ukupno(), r.PdvStopa)
|
||||
}
|
||||
for _, d := range delovi {
|
||||
if d.Predlozeno {
|
||||
continue
|
||||
}
|
||||
k.DodajNeto(d.Ukupno(), d.PdvStopa)
|
||||
}
|
||||
return k
|
||||
}
|
||||
|
||||
// KirStorno gradi storno (knjižno odobrenje) zapis za dati KIR red: iznosi su
|
||||
// negirani original, upisan pod istim izvorom/izvor_id tako da PostojiZaIzvor
|
||||
// ostane tačan i backfill ne pokuša ponovni upis. Zakon o računovodstvu ne
|
||||
|
||||
Reference in New Issue
Block a user