Prodaja: popust se pravilno primenjuje u PDV obračunu (KIR, cena_bez_pdv, fiskalizacija)
KirIzProdaje je za B2B fakture upisivao pun (nediskontovan) iznos u KIR, ignorišući popust_procenat — PDV evidencija je bila precenjena za stavke sa popustom. Isti propust je postojao u ProdajaRepo.Kreiraj (cena_bez_pdv/pdv_iznos po stavci računati bez popusta, dok je ukupno polje popust uračunavalo). fiskal.NapraviZahtev je to slučajno kompenzovao ponovnim primenjivanjem popusta nad već (pogrešno) nediskontovanom vrednošću iz baze — sad bi to duplo diskontovalo, pa je uklonjeno. Usput ispravljena i dva zastarela testa koja su pogrešno pretpostavljala da je CenaPoKomadu bruto cena (aktuelna semantika, potvrđena i u ntech.js, jeste neto).
This commit is contained in:
@@ -210,20 +210,21 @@ func (r *ProdajaRepo) Kreiraj(ctx context.Context, n *model.ProdajniNalog, stavk
|
||||
}
|
||||
}
|
||||
|
||||
// CenaPoKomadu je neto (bez PDV); PDV se dodaje naviše
|
||||
cenaBezPdv := s.CenaBezPdv
|
||||
pdvIznos := s.PdvIznos
|
||||
if cenaBezPdv == 0 {
|
||||
cenaBezPdv = s.CenaPoKomadu
|
||||
pdvIznos = cenaBezPdv * s.PdvStopa / 100
|
||||
}
|
||||
|
||||
// popust umanjuje cenu po komadu pre računanja ukupnog i PDV-a
|
||||
cenaPoslePopusta := s.CenaPoKomadu
|
||||
if s.PopustProcenat > 0 {
|
||||
cenaPoslePopusta = cenaPoslePopusta * (1 - s.PopustProcenat/100)
|
||||
}
|
||||
ukupnoStavke := float64(s.Kolicina) * cenaPoslePopusta
|
||||
|
||||
// CenaPoKomadu je neto (bez PDV); PDV se dodaje naviše.
|
||||
// cena_bez_pdv/pdv_iznos moraju biti diskontovani da ostanu konzistentni sa ukupno.
|
||||
cenaBezPdv := s.CenaBezPdv
|
||||
pdvIznos := s.PdvIznos
|
||||
if cenaBezPdv == 0 {
|
||||
cenaBezPdv = cenaPoslePopusta
|
||||
pdvIznos = cenaBezPdv * s.PdvStopa / 100
|
||||
}
|
||||
_, err = tx.ExecContext(ctx, `
|
||||
INSERT INTO stavke_prodaje
|
||||
(nalog_id, artikal_id, kolicina, cena_po_komadu, popust_procenat, ukupno, pdv_stopa, pdv_iznos, cena_bez_pdv)
|
||||
|
||||
Reference in New Issue
Block a user