From 97683534ac07a0137cc9e4643b79719742732c36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dalibor=20Markovi=C4=87?= Date: Sun, 14 Jun 2026 10:13:56 +0200 Subject: [PATCH] =?UTF-8?q?feat(nabavka):=20kalkulacija=20=E2=80=94=20form?= =?UTF-8?q?iranje=20prodajne=20cene=20pri=20nabavci=20(Faza=20B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Po stavci nabavke: marža% (predpopunjena globalnom iz podešavanja, kalkulacija_marza) i prodajna cena = nabavna × (1+marža/100) × (1+PDV/100), živo računato u Alpine, izmenjivo. Na čuvanje se ažurira nabavna+prodajna cena artikla (ArtikalRepo.AzurirajCene) i upiše nivelacija 'kalkulacija'; prazna/nulta prodajna se preskače. ArtikliJSON nosi pdv_stopa. Postavka podrazumevane marže u Podešavanja → Sistem. --- internal/db/repository.go | 2 + internal/db/sqlite/artikal.go | 10 ++++ internal/handler/nabavka.go | 50 +++++++++++++++++-- internal/handler/podesavanja.go | 16 ++++++ web/static/js/ntech.js | 19 ++++++- web/templates/stranice/nabavka_forma.html | 32 ++++++++++-- .../stranice/podesavanja_sistem.html | 21 ++++++++ 7 files changed, 139 insertions(+), 11 deletions(-) diff --git a/internal/db/repository.go b/internal/db/repository.go index 2d6d279..520d5e1 100644 --- a/internal/db/repository.go +++ b/internal/db/repository.go @@ -13,6 +13,8 @@ type ArtikalRepository interface { DohvatiID(ctx context.Context, id int64) (*model.Artikal, error) Kreiraj(ctx context.Context, a *model.Artikal) (int64, error) Izmeni(ctx context.Context, a *model.Artikal) error + // AzurirajCene menja samo nabavnu i prodajnu cenu (kalkulacija pri nabavci) + AzurirajCene(ctx context.Context, id int64, nabavna, prodajna float64) error PremestiKategoriju(ctx context.Context, id int64, kategorijaID *int64) error Obrisi(ctx context.Context, id int64) error } diff --git a/internal/db/sqlite/artikal.go b/internal/db/sqlite/artikal.go index a324a40..d1e0289 100644 --- a/internal/db/sqlite/artikal.go +++ b/internal/db/sqlite/artikal.go @@ -147,6 +147,16 @@ func (r *ArtikalRepo) Izmeni(ctx context.Context, a *model.Artikal) error { return nil } +// AzurirajCene menja samo nabavnu i prodajnu cenu artikla (kalkulacija pri prijemu robe). +func (r *ArtikalRepo) AzurirajCene(ctx context.Context, id int64, nabavna, prodajna float64) error { + _, err := r.db.ExecContext(ctx, + "UPDATE artikli SET nabavna_cena = ?, prodajna_cena = ? WHERE id = ?", nabavna, prodajna, id) + if err != nil { + return fmt.Errorf("ntech: ArtikalRepo.AzurirajCene: %w", err) + } + return nil +} + // PremestiKategoriju menja samo kategoriju artikla (premeštanje u drugu kategoriju). // kategorijaID može biti nil — tada artikal ostaje bez kategorije. func (r *ArtikalRepo) PremestiKategoriju(ctx context.Context, id int64, kategorijaID *int64) error { diff --git a/internal/handler/nabavka.go b/internal/handler/nabavka.go index ecc0101..a6cdd84 100644 --- a/internal/handler/nabavka.go +++ b/internal/handler/nabavka.go @@ -30,6 +30,7 @@ type PodaciFormeNabavke struct { ArtikliJSON template.JS // JSON niz artikala za Alpine.js — bezbedan za umetanje u +
@@ -87,6 +87,8 @@ Artikal Količina Cena/kom (din) + Marža % + Prodajna/kom (din) Ukupno @@ -96,7 +98,7 @@