Merge feature/pdv-kir-datum-knjizenja-razdvajanje → develop

This commit is contained in:
2026-07-01 12:46:16 +02:00
4 changed files with 10 additions and 5 deletions
+3 -1
View File
@@ -220,6 +220,7 @@ func (h *Handler) KirBackfillProdaje(w http.ResponseWriter, r *http.Request) {
return return
} }
ctx := r.Context() ctx := r.Context()
sada := time.Now()
nalozi, err := h.ProdajaRepo.Lista(ctx, "") nalozi, err := h.ProdajaRepo.Lista(ctx, "")
if err != nil { if err != nil {
@@ -256,7 +257,8 @@ func (h *Handler) KirBackfillProdaje(w http.ResponseWriter, r *http.Request) {
if klijent.Tip != "pravno" { if klijent.Tip != "pravno" {
pib = klijent.JMBG pib = klijent.JMBG
} }
kir := model.KirIzProdaje(nd.ProdajniNalog, ss, klijent.PunoIme(), pib, klijent.Mesto) // backfill upisuje stare naloge sa zakašnjenjem — datum_knjizenja je danas, ne datum prodaje
kir := model.KirIzProdaje(nd.ProdajniNalog, ss, klijent.PunoIme(), pib, klijent.Mesto, sada)
if _, e := h.PdvKirRepo.Kreiraj(ctx, &kir); e != nil { if _, e := h.PdvKirRepo.Kreiraj(ctx, &kir); e != nil {
slog.Error("backfill KIR: greška pri kreiranju zapisa", "prodaja_id", nd.ID, "error", e) slog.Error("backfill KIR: greška pri kreiranju zapisa", "prodaja_id", nd.ID, "error", e)
continue continue
+1 -1
View File
@@ -246,7 +246,7 @@ func (h *Handler) SacuvajProdaju(w http.ResponseWriter, r *http.Request) {
if klijent.Tip != "pravno" { if klijent.Tip != "pravno" {
pib = klijent.JMBG pib = klijent.JMBG
} }
kir := model.KirIzProdaje(nalog, stavke, klijent.PunoIme(), pib, klijent.Mesto) kir := model.KirIzProdaje(nalog, stavke, klijent.PunoIme(), pib, klijent.Mesto, nalog.Datum)
if _, e := h.PdvKirRepo.Kreiraj(r.Context(), &kir); e != nil { if _, e := h.PdvKirRepo.Kreiraj(r.Context(), &kir); e != nil {
slog.Error("auto-upis u KIR nije uspeo", "prodaja_id", id, "error", e) slog.Error("auto-upis u KIR nije uspeo", "prodaja_id", id, "error", e)
} }
+5 -2
View File
@@ -107,11 +107,14 @@ func (k *PdvKir) DodajNeto(osnovica, stopa float64) {
// KirIzProdaje gradi KIR zapis iz prodaje: stavke se grupišu po PDV stopi // KirIzProdaje gradi KIR zapis iz prodaje: stavke se grupišu po PDV stopi
// (20→opšta, 10→posebna, ostalo→oslobođeno). CenaPoKomadu je prodajna cena BEZ PDV // (20→opšta, 10→posebna, ostalo→oslobođeno). CenaPoKomadu je prodajna cena BEZ PDV
// (neto), PDV se dodaje naviše — isti obrazac kao kod servisnih radova/delova. // (neto), PDV se dodaje naviše — isti obrazac kao kod servisnih radova/delova.
func KirIzProdaje(nalog ProdajniNalog, stavke []StavkaProdaje, kupacNaziv, kupacPib, kupacMesto string) PdvKir { // DatumPrometa je datum same prodaje (nalog.Datum); DatumKnjizenja je datum kada se
// ovaj KIR zapis stvarno upisuje u knjigu — za prodaju upisanu odmah to je isti trenutak,
// ali za naknadni backfill starih naloga upis kasni za periodom pa se prosleđuje posebno.
func KirIzProdaje(nalog ProdajniNalog, stavke []StavkaProdaje, kupacNaziv, kupacPib, kupacMesto string, datumKnjizenja time.Time) PdvKir {
id := nalog.ID id := nalog.ID
k := PdvKir{ k := PdvKir{
DatumPrometa: nalog.Datum, DatumPrometa: nalog.Datum,
DatumKnjizenja: nalog.Datum, DatumKnjizenja: datumKnjizenja,
BrojDokumenta: nalog.BrojNaloga, BrojDokumenta: nalog.BrojNaloga,
KupacNaziv: kupacNaziv, KupacNaziv: kupacNaziv,
KupacPib: kupacPib, KupacPib: kupacPib,
+1 -1
View File
@@ -19,7 +19,7 @@ func TestKirIzProdaje(t *testing.T) {
{Kolicina: 1, CenaPoKomadu: 50, PdvStopa: 0}, {Kolicina: 1, CenaPoKomadu: 50, PdvStopa: 0},
} }
k := KirIzProdaje(nalog, stavke, "Kupac doo", "123456789", "Niš") k := KirIzProdaje(nalog, stavke, "Kupac doo", "123456789", "Niš", nalog.Datum)
if k.Izvor != "prodaja" || k.IzvorID == nil || *k.IzvorID != 5 { if k.Izvor != "prodaja" || k.IzvorID == nil || *k.IzvorID != 5 {
t.Errorf("izvor=%q izvor_id=%v, očekivano prodaja/5", k.Izvor, k.IzvorID) t.Errorf("izvor=%q izvor_id=%v, očekivano prodaja/5", k.Izvor, k.IzvorID)