Prodaja: skener barkoda, prilagodjeni dropdown artikala, ispravka cena sa/bez PDV-a po rezimu
This commit is contained in:
@@ -105,8 +105,9 @@ func (k *PdvKir) DodajNeto(osnovica, stopa float64) {
|
||||
}
|
||||
|
||||
// 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
|
||||
// (neto), PDV se dodaje naviše — isti obrazac kao kod servisnih radova/delova.
|
||||
// (20→opšta, 10→posebna, ostalo→oslobođeno). Koristi već izračunatu CenaBezPdv
|
||||
// (neto, popust je već uračunat pri upisu stavke — v. ProdajaRepo.Kreiraj), jer je
|
||||
// CenaPoKomadu kod punog PDV obveznika bruto (cena za naplatu), ne neto.
|
||||
// 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.
|
||||
@@ -123,11 +124,7 @@ func KirIzProdaje(nalog ProdajniNalog, stavke []StavkaProdaje, kupacNaziv, kupac
|
||||
IzvorID: &id,
|
||||
}
|
||||
for _, s := range stavke {
|
||||
cenaPoslePopusta := s.CenaPoKomadu
|
||||
if s.PopustProcenat > 0 {
|
||||
cenaPoslePopusta = cenaPoslePopusta * (1 - s.PopustProcenat/100)
|
||||
}
|
||||
k.DodajNeto(float64(s.Kolicina)*cenaPoslePopusta, s.PdvStopa)
|
||||
k.DodajNeto(float64(s.Kolicina)*s.CenaBezPdv, s.PdvStopa)
|
||||
}
|
||||
return k
|
||||
}
|
||||
|
||||
@@ -11,12 +11,12 @@ func blizu(a, b float64) bool { return math.Abs(a-b) < 0.01 }
|
||||
func TestKirIzProdaje(t *testing.T) {
|
||||
nalog := ProdajniNalog{ID: 5, BrojNaloga: "P-1", Datum: time.Date(2026, 6, 1, 0, 0, 0, 0, time.UTC)}
|
||||
stavke := []StavkaProdaje{
|
||||
// 20%: CenaPoKomadu je NETO → osnovica 2×120=240, PDV 240×20%=48
|
||||
{Kolicina: 2, CenaPoKomadu: 120, PdvStopa: 20},
|
||||
// 20%: CenaBezPdv je već izračunata neto vrednost (v. ProdajaRepo.Kreiraj) → osnovica 2×120=240, PDV 240×20%=48
|
||||
{Kolicina: 2, CenaBezPdv: 120, PdvStopa: 20},
|
||||
// 10%: osnovica 1×110=110, PDV 110×10%=11
|
||||
{Kolicina: 1, CenaPoKomadu: 110, PdvStopa: 10},
|
||||
{Kolicina: 1, CenaBezPdv: 110, PdvStopa: 10},
|
||||
// 0%: 1 × 50 = 50 (oslobođeno, bez PDV)
|
||||
{Kolicina: 1, CenaPoKomadu: 50, PdvStopa: 0},
|
||||
{Kolicina: 1, CenaBezPdv: 50, PdvStopa: 0},
|
||||
}
|
||||
|
||||
k := KirIzProdaje(nalog, stavke, "Kupac doo", "123456789", "Niš", nalog.Datum)
|
||||
|
||||
Reference in New Issue
Block a user