0f1f65c7f7
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.
38 lines
1.1 KiB
Go
38 lines
1.1 KiB
Go
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
|
||
}
|