Files
GoNtech/internal/model/nivelacija.go
T
Dasko 0f1f65c7f7 feat(magacin): nivelacija — promena cene uz trag (Faza A)
Tabela nivelacije (migr 045) beleži svaku promenu prodajne cene:
artikal, stara→nova cena, razlog, izvor, korisnik, datum. Dva okidača:
posebna akcija „Promeni cenu" (modal, izvor 'rucno') i auto-trag pri
izmeni artikla (izvor 'izmena'). PromeniCenu je transakciono (update
cene + upis zapisa). Pregled /nivelacije sa filterom perioda i razlikom
(+/− i %). Modal otvara svoj nextElementSibling — radi i na mobilnom
uprkos dupliranim id-jevima iz dva rasporeda.
2026-06-14 09:37:49 +02:00

38 lines
1.1 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package model
import "time"
// Nivelacija je zapis o promeni prodajne cene artikla (revizioni trag).
// Razlika i procenat se izvode iz stare i nove cene (ne čuvaju se u bazi).
type Nivelacija struct {
ID int64
ArtikalID int64
ArtikalNaziv string // iz JOIN-a, radi prikaza; nije kolona u nivelacije
StaraCena float64
NovaCena float64
Razlog string
Izvor string // "rucno" | "izmena" | "kalkulacija"
KorisnikID *int64
KorisnikIme string // iz JOIN-a, radi prikaza
Datum time.Time
DatumUnosa time.Time
}
// Razlika vraća apsolutnu promenu cene (nova stara); negativna znači pojeftinjenje.
func (n Nivelacija) Razlika() float64 {
return n.NovaCena - n.StaraCena
}
// Procenat vraća procentualnu promenu u odnosu na staru cenu (0 ako je stara cena 0).
func (n Nivelacija) Procenat() float64 {
if n.StaraCena == 0 {
return 0
}
return (n.NovaCena - n.StaraCena) / n.StaraCena * 100
}
// Poskupljenje vraća true kada je nova cena veća od stare.
func (n Nivelacija) Poskupljenje() bool {
return n.NovaCena > n.StaraCena
}