feat(kalkulacija): Faza C — marža po kategoriji/artiklu + zavisni troškovi (backend)
Celina 1 (kompletna) — marža po kategoriji/artiklu: - migracija 046: nullable marza na artikli i kategorije - model Marza *float64 (Artikal, Kategorija) + KategorijaMarza u ArtikalSaKategorijom - repo: čitanje/pisanje marže; nove DohvatiID/Izmeni za kategoriju - dozvola kategorija.izmeni; handler IzmeniKategoriju + ruta - UI: polje marže u formi artikla i kategorije; modal izmene kategorije - nabavka: fallback predlog marže artikal → kategorija → globalna (izaberiArtikal) Celina 2 (backend) — zavisni troškovi nabavke: - migracija 047: tabela nabavka_troskovi + kolona metod_raspodele na nabavke - model NabavkaTrosak, MetodRaspodele; čista funkcija RasporediTroskove + test - repo: Kreiraj upisuje troškove i metod; DohvatiTroskove - handler: parsiranje troškova/metoda; kalkulativna nabavna cena na serveru UI forme troškova i prikaz u detaljima nabavke slede.
This commit is contained in:
@@ -249,6 +249,15 @@ func parseFormuArtikla(r *http.Request) (model.Artikal, string) {
|
||||
artikal.ProdajnaCena = v
|
||||
}
|
||||
|
||||
// marža (%) je opciona; prazno polje ostaje NULL (artikal nasleđuje maržu kategorije/globalnu)
|
||||
if m := r.FormValue("marza"); m != "" {
|
||||
v, err := strconv.ParseFloat(m, 64)
|
||||
if err != nil || v < 0 {
|
||||
return artikal, "Marža mora biti pozitivan broj."
|
||||
}
|
||||
artikal.Marza = &v
|
||||
}
|
||||
|
||||
if katID := r.FormValue("kategorija_id"); katID != "" {
|
||||
id, err := strconv.ParseInt(katID, 10, 64)
|
||||
if err == nil {
|
||||
|
||||
Reference in New Issue
Block a user