Sincronizare listă de prețuri
Funcțiile customizate de tipul "Sincronizare listă de prețuri" sunt de două tipuri: STANDARD și INLINE și au fost create cu scopul de a actualiza automat listele de preț. Această funcționalitate își găsește utilitatea în automatizarea proceselor de întreținere a listelor de preț, în special în cazurile în care acestea sunt calculate în funcție de prețurile furnizorilor, perioadă sau alți factori, utilizând formule bine stabilite.
Aceste funcții pot fi utilizate în două moduri:
1. Actualizarea periodică a listelor de preț principale, caz în care se creează o activitate programată de tip "Execuție proceduri", cu procedura "Actualizare liste de preț cu funcții customizate". Aceasta va evalua funcția sincronizând lista de preț cu rezultatul întors de aceasta. Sincronizarea va adăuga, modifica sau chiar șterge înregistrări din lista de preț.
2. Actualizarea automată a listelor de preț derivate în funcție de lista de preț principală, caz în care se pot scrie în funcția customizată reguli personalizate prin care se face sincronizarea. Specificarea unei funcții customizate suprascrie procedura standard de sincronizare a listelor de preț.
Pentru funcțiile INLINE se va realiza un select care să returneze structura prezentată, iar pentru funcțiile STANDARD se va realiza un INSERT INTO @ret_table, respectând aceeași structură.
Parametri funcție customizată
Parametru | Tip | Descriere |
---|---|---|
@pl_tabel | SMALLINT | PCT_LCR, parte din cheia primară a înregistrării asociate |
@id_tabel | NUMERIC(18,0) | ID, parte din cheia primară a înregistrării asociate |
Structura returnată de funcția customizată
Structură | Tip | Descriere |
---|---|---|
pl_lin | SMALLINT | PCT_LCR, parte din cheia primară a liniei din lista de preț derivată (legatura cu tabela preturi_ma_linii, NULL pentru înregistrările noi) |
id_lin | NUMERIC(18,0) | ID, parte din cheia primară a liniei din lista de preț derivată (legatura cu tabela preturi_ma_linii, NULL pentru înregistrările noi) |
pl_pr | SMALLINT | PCT_LCR, parte din cheia primară a articolului (legatura cu tabela nomen3) |
id_pr | NUMERIC(18,0) | ID, parte din cheia primară a articolului (legatura cu tabela nomen3) |
puv | MONEY | Preț de vânzare fără TVA |
puv_tva | MONEY | Preț de vânzare cu TVA |
pr_tva_o | NUMERIC(2,0) | Cota TVA |
pl_dev | SMALLINT | PCT_LCR, parte din cheia primară a devizului (legatura cu tabela devize) |
id_dev | NUMERIC(18,0) | ID, parte din cheia primară a devizului (legatura cu tabela devize) |
promo | VARCHAR(500) | Lista de ID-uri ale promoțiilor active la nivel de linie din lista de preț (separate prin virgulă, câmp OPȚIONAL) |
Exemplu de funcție customizată INLINE pentru sincronizarea listelor de preț
Pentru funcția STANDARD se va insera în tabela @ret_table, urmat de același select:
INSERT INTO @ret_table(pl_lin, id_lin, pl_pr, id_pr, puv, puv_tva, pr_tva_o, pl_dev, id_dev, promo)
SELECT pl_lin = CAST(l.pct_lcr AS SMALLINT),
id_lin = CAST(l.id AS NUMERIC(18)),
pl_pr = CAST(l.pl_pr AS SMALLINT),
id_pr = CAST(l.id_pr AS NUMERIC(18)),
puv = ls.puv * 1.1,
puv_tva = ls.puv_tva * 1.1,
pr_tva_o = CAST(ls.pr_tva_o AS NUMERIC(3, 0)),
pl_dev = CAST(ls.pl_dev AS SMALLINT),
id_dev = CAST(ls.id_dev AS NUMERIC(18)),
ls.promo
FROM preturi_ma_linii l
INNER JOIN preturi_ma a ON l.pl_ant = a.pct_lcr AND l.id_ant = a.id
INNER JOIN preturi_ma s ON a.pl_sup = s.pct_lcr AND a.id_sup = s.id
LEFT JOIN preturi_ma_linii ls ON l.pl_pr = ls.pl_pr AND l.id_pr = ls.id_pr AND ls.pl_ant = s.pct_lcr AND ls.id_ant = s.id
WHERE a.pct_lcr = @pl_tabel AND a.id = @id_tabel