Dashboard/izveštaji: ispravka obračuna prihoda + KIR servisa, testovi
- Prihod meseca: izbačeni stornirani nalozi, servis preko naplaceno+avans - Servis KIR: neto cena + PDV po stvarnoj stopi (PdvKir.DodajNeto), bez hardkodovanih 20% - TopKlijenti: samo preuzeti nalozi sa naplatom/avansom - Izveštaji: mesečni ključevi sidreni na 1. u mesecu (bez preliva dana) - BUG-04: konačna cena servisa bez dvostrukog računanja delova - Dashboard: uklonjena kartica „Prihod ovog meseca" - Default port 3000 - Dodati testovi: prihod/storno/delovi/nivelacija/KIR/mesečni ključevi
This commit is contained in:
@@ -80,6 +80,30 @@ func SumirajKir(zapisi []PdvKir) PdvKirSume {
|
||||
return s
|
||||
}
|
||||
|
||||
// dodajStavku razvrstava jednu stavku (već izračunata osnovica + PDV) po stopi u
|
||||
// odgovarajuće kolone KIR-a i uvećava ukupan (bruto) iznos.
|
||||
func (k *PdvKir) dodajStavku(osnovica, pdv, stopa float64) {
|
||||
switch stopa {
|
||||
case 20:
|
||||
k.OsnovicaOpsta += osnovica
|
||||
k.PdvOpsta += pdv
|
||||
case 10:
|
||||
k.OsnovicaPosebna += osnovica
|
||||
k.PdvPosebna += pdv
|
||||
default:
|
||||
// 0% / oslobođeno — osnovica u oslobođen promet sa pravom na odbitak
|
||||
k.OslobodenSaPravom += osnovica
|
||||
}
|
||||
k.Ukupno += osnovica + pdv
|
||||
}
|
||||
|
||||
// DodajNeto dodaje stavku zadatu NETO osnovicom i PDV stopom — za izvore gde je
|
||||
// cena bez PDV-a (servisni rad/deo: cena_komada je neto, PDV se dodaje naviše).
|
||||
// PDV se izvodi kao osnovica × stopa/100, a ukupno postaje bruto (osnovica + PDV).
|
||||
func (k *PdvKir) DodajNeto(osnovica, stopa float64) {
|
||||
k.dodajStavku(osnovica, osnovica*stopa/100, stopa)
|
||||
}
|
||||
|
||||
// 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 SA PDV,
|
||||
// pa se osnovica izvodi deljenjem sa (1 + stopa/100).
|
||||
@@ -101,19 +125,7 @@ func KirIzProdaje(nalog ProdajniNalog, stavke []StavkaProdaje, kupacNaziv, kupac
|
||||
if s.PdvStopa > 0 {
|
||||
osnovica = ukupnoLinija / (1 + s.PdvStopa/100)
|
||||
}
|
||||
pdv := ukupnoLinija - osnovica
|
||||
switch s.PdvStopa {
|
||||
case 20:
|
||||
k.OsnovicaOpsta += osnovica
|
||||
k.PdvOpsta += pdv
|
||||
case 10:
|
||||
k.OsnovicaPosebna += osnovica
|
||||
k.PdvPosebna += pdv
|
||||
default:
|
||||
// 0% / oslobođeno — osnovica bez PDV-a u oslobođen promet sa pravom na odbitak
|
||||
k.OslobodenSaPravom += osnovica
|
||||
}
|
||||
k.Ukupno += ukupnoLinija
|
||||
k.dodajStavku(osnovica, ukupnoLinija-osnovica, s.PdvStopa)
|
||||
}
|
||||
return k
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user