30db396ee6
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.
47 lines
1.2 KiB
Go
47 lines
1.2 KiB
Go
package model
|
|
|
|
import "time"
|
|
|
|
// Artikal predstavlja jedan artikal u magacinu
|
|
type Artikal struct {
|
|
ID int64
|
|
KategorijaID *int64
|
|
Naziv string
|
|
Opis string
|
|
Kolicina int
|
|
KolicinMin int
|
|
Lokacija string
|
|
NabavnaCena float64
|
|
ProdajnaCena float64
|
|
PdvStopa float64
|
|
Marza *float64 // podrazumevana marža (%) za kalkulaciju; NULL = nije postavljeno
|
|
Napomena string
|
|
DatumUnosa time.Time
|
|
}
|
|
|
|
// CenaBezPdv izračunava prodajnu cenu bez PDV-a
|
|
func (a Artikal) CenaBezPdv() float64 {
|
|
return a.ProdajnaCena / (1 + a.PdvStopa/100)
|
|
}
|
|
|
|
// PdvIznos izračunava iznos PDV-a za jednu jedinicu
|
|
func (a Artikal) PdvIznos() float64 {
|
|
return a.ProdajnaCena - a.CenaBezPdv()
|
|
}
|
|
|
|
// Kategorija predstavlja kategoriju artikala
|
|
type Kategorija struct {
|
|
ID int64
|
|
Naziv string
|
|
Opis string
|
|
Marza *float64 // podrazumevana marža (%) za artikle ove kategorije; NULL = nije postavljeno
|
|
}
|
|
|
|
// ArtikalSaKategorijom je artikal sa nazivom kategorije — za prikaz u tabeli
|
|
type ArtikalSaKategorijom struct {
|
|
Artikal
|
|
KategorijaNaziv string
|
|
KategorijaMarza *float64 // marža kategorije; za fallback predloga marže pri nabavci
|
|
KriticnaZaliha bool
|
|
}
|