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.
This commit is contained in:
2026-06-14 09:37:49 +02:00
parent c9d4704c3d
commit 0f1f65c7f7
13 changed files with 463 additions and 2 deletions
+13
View File
@@ -52,6 +52,19 @@ type PdvKprRepository interface {
ObrisiPoIzvoru(ctx context.Context, izvor string, izvorID int64) error
}
// NivelacijaRepository definiše operacije nad evidencijom promene prodajnih cena
type NivelacijaRepository interface {
// PromeniCenu transakciono menja prodajnu cenu artikla i upisuje nivelacioni zapis;
// vraća kreirani zapis (sa starom i novom cenom). Izvor je "rucno".
PromeniCenu(ctx context.Context, artikalID int64, novaCena float64, razlog string, korisnikID *int64) (*model.Nivelacija, error)
// Kreiraj upisuje gotov nivelacioni zapis (npr. auto-trag pri izmeni artikla)
Kreiraj(ctx context.Context, n *model.Nivelacija) (int64, error)
// Lista vraća nivelacije u periodu (po datumu); nulti datum znači bez granice
Lista(ctx context.Context, od, do time.Time) ([]model.Nivelacija, error)
// ListaZaArtikal vraća sve nivelacije jednog artikla (najnovije prvo)
ListaZaArtikal(ctx context.Context, artikalID int64) ([]model.Nivelacija, error)
}
// ArtikalFilter definiše parametre za filtriranje liste artikala
type ArtikalFilter struct {
Pretraga string