PDV KIR: razdvojen datum_prometa od datum_knjizenja za prodaju
KirIzProdaje je postavljao oba datuma na nalog.Datum. Za prodaju upisanu odmah (SacuvajProdaju) to je ispravno jer je knjiženje istog trenutka. Za backfill starih naloga (KirBackfillProdaje) upis kasni za periodom — datum_knjizenja je sada trenutak backfilla, ne datum same prodaje.
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user