Fiskalizacija: refund pri stornu, dnevni pazar KIR, popust na stavci

This commit is contained in:
2026-06-30 20:52:50 +02:00
parent 76a0df1c09
commit 3166a93e1d
11 changed files with 337 additions and 8 deletions
+20 -7
View File
@@ -62,10 +62,13 @@ func NapraviZahtev(
if s.PdvStopa > 0 {
stopa = s.PdvStopa
}
// CenaPoKomadu je neto cena — konvertujemo u bruto
// CenaPoKomadu je neto cena — konvertujemo u bruto; popust umanjuje neto cenu pre PDV-a
netoCena := s.CenaBezPdv
if netoCena == 0 {
netoCena = s.CenaPoKomadu // fallback: ako CenaBezPdv nije popunjena
netoCena = s.CenaPoKomadu
}
if s.PopustProcenat > 0 {
netoCena = math.Round(netoCena*(1-s.PopustProcenat/100)*100) / 100
}
brutoCena := BrutoCena(netoCena, stopa)
brutoTotal := math.Round(brutoCena*float64(s.Kolicina)*100) / 100
@@ -80,11 +83,8 @@ func NapraviZahtev(
ukupanIznos += brutoTotal
}
// Ukupno za plaćanje — iz naloga (bruto)
ukupnoPlacanje := nalog.Ukupno
if ukupnoPlacanje == 0 {
ukupnoPlacanje = ukupanIznos
}
// Ukupno za plaćanje je uvek suma bruto stavki (neto iz naloga bi bilo pogrešno)
ukupnoPlacanje := ukupanIznos
nacinPlacanja := nalog.NacinPlacanja
if nacinPlacanja == "" {
@@ -115,3 +115,16 @@ func NapraviZahtev(
return zahtev
}
// NapraviRefundZahtev gradi Refund zahtev za storno fiskalnog računa.
// referentBroj je PfrBroj originalnog fiskalnog računa (invoiceNumber iz PFR odgovora).
func NapraviRefundZahtev(
nalog model.ProdajniNalog,
stavke []model.StavkaProdajeSaArtiklom,
pib, jmbg, kasir, referentBroj string,
) InvoiceRequest {
zahtev := NapraviZahtev(nalog, stavke, pib, jmbg, kasir)
zahtev.InvoiceRequest.TransactionType = "Refund"
zahtev.InvoiceRequest.ReferentDocumentNumber = referentBroj
return zahtev
}