Acest site folosește cookie-uri. Prin navigarea pe acest site, iți exprimi acordul asupra folosirii cookie-urilor. Vezi și politica noastră de confidențialitate

N E X U S
Nexus ERP

Nexus ERP progres

loading

Calcul promoție


Funcțiile customizate de tipul "Calcul promoție" sunt de două tipuri: STANDARD și INLINE și ajută la aplicarea promoțiilor în funcție de filtrele stabilite în funcție.

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ă.

În modulul Promoții se va selecta funcția customizată dorită.

Parametri funcție customizată

Parametru Tip Descriere
@nume_tabel VARCHAR(128) Denumirea tabelului înregistrării asociate (OPȚIONAL)
@al_tabel VARCHAR(6) ANLUNA, parte din cheia primară a înregistrării asociate
@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
@liniiPromoJSON NVARCHAR(MAX) Liniile documentului în format JSON. Nu e obligatoriu să se folosească.
Structura JSON-ului este următoarea:
pl_lin - (SMALLINT) - Punctul de lucru al liniei documentului, face parte din cheia primară
id_lin - (NUMERIC(18,0)) - Id-ul intern al liniei documentului, face parte din cheia primara
pl_pr - (SMALLINT) - Punctul de lucru al produsului
id_pr - (NUMERIC(18,0)) - Id-ul intern al produsului
cod_pr - (VARCHAR(3)) - Codul din 3 caractere corespunzător tipului de produs definit în nomenclatorul de bunuri și servicii
pr_tva - (NUMERIC(2,0)) - Procentul TVA
cantitate - (NUMERIC(13,3)) - Cantitatea produsului
puv - (MONEY) - Prețul de vânzare fără TVA al produsului
puv_tva - (MONEY) - Prețul de vânzare cu TVA al produsului
pl_dev - (SMALLINT) - Punctul de lucru al devizului
id_dev - (NUMERIC(18,0)) - Id-ul intern al devizului
pr_disc_bonus - (NUMERIC(2,0)) - Procentul discount-ului bonus
id_promop - (NUMERIC(18,0)) - Id-ul intern al promoției dorite
data_cr - (DATETIME) - Data creării liniei documentului

 

Structura returnată de funcția customizată

Structură Tip Descriere
pl_lin SMALLINT PCT_LCR, parte din cheia primară a liniei de document
id_lin NUMERIC(18,0) ID, parte din cheia primară a liniei de document
puv MONEY Noul preț de vânzare fără TVA, rezultat din calculul promoției
puv_tva MONEY Noul preț de vânzare cu TVA, rezultat din calculul promoției
pr_disc NUMERIC(2,0) Procentul de discount acordat în baza promoției
val_disc MONEY Valoare discount acordată în baza promoției
detalii VARCHAR(500) Detalii suplimentare legate de promoția aplicată, ce se vor salva în denumirea suplimentară a liniei de discount (OPȚIONAL)

 

Exemplu de funcție customizată INLINE pentru calculul promoției: Se acordă 10% discount pentru clienții care au vânzări mai mari de 5000 lei

Pentru funcția STANDARD se va insera în tabela @ret_table, urmat de același select:

INSERT INTO @ret_table(pl_lin, id_lin, puv, puv_tva, pr_disc, val_disc, detalii)

SELECT CAST(p.pl_lin AS SMALLINT) AS pl_lin,
	   CAST(p.id_lin AS NUMERIC(18,0)) AS id_lin,
	   ROUND(ROUND(l.puv_tva * 0.9, 2) / (1 + l.pr_tva_o / 100), 2) AS puv,
	   ROUND((((l.puv * l.pr_tva_o) / 100 + l.puv) * 0.9), 2) AS puv_tva,
	   10 AS pr_disc,
           l.cantitate * l.puv * 0.1 AS val_disc,
	  'Discount aferent vanzarilor peste 5000 lei' AS detalii
	FROM OPENJSON(@liniiPromoJSON)
	WITH (
			pl_lin SMALLINT,
			id_lin NUMERIC(18, 0),
			pl_pr SMALLINT,
			id_pr NUMERIC(18, 0),
			cod_pr CHAR(3),
			pr_tva NUMERIC(4, 2),
			cantitate NUMERIC(15, 3),
			puv NUMERIC(16, 4),
			puv_tva NUMERIC(16, 4),
			pl_dev SMALLINT,
			id_dev SMALLINT,
			pr_disc_bonus NUMERIC(5, 2),
			id_promop NUMERIC(18, 0),
			id_promo NUMERIC(18, 0)) AS p
	INNER JOIN linfactclienti l ON l.anluna = @al_tabel AND l.pl_cli = @pl_tabel AND l.id_cli = @id_tabel AND l.pct_lcr = p.pl_lin AND l.id = p.id_lin
	INNER JOIN cli c ON l.anluna = c.anluna AND l.pl_cli = c.pct_lcr AND l.id_cli = c.id
	INNER JOIN (SELECT pl_411, id_411
				FROM cli
				GROUP BY pl_411, id_411
				HAVING SUM(cli.valoarev + cli.tvav) >= 5000) vanzari ON c.pl_411 = vanzari.pl_411 AND c.id_411 = vanzari.id_411

  •     Câmpuri disponibile
  • Conținut fișier plăți