feat: configurable invoice line sorting via RF_SORTARE_COMANDA option

cursor_comanda in PACK_FACTURARE now reads RF_SORTARE_COMANDA from OPTIUNI:
1=alphabetical (default, existing behavior), 0=original web order (by ID_COMANDA_ELEMENT).

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Claude Agent
2026-03-23 09:15:17 +00:00
parent 61ae58ef25
commit b625609645
2 changed files with 1185 additions and 2 deletions

View File

@@ -13,6 +13,7 @@ CREATE OR REPLACE PACKAGE "PACK_FACTURARE" is
-- 20.03.2026 - duplicate CODMAT pe comanda: PRET in GROUP BY/JOIN (cursor_comanda, cursor_lucrare, inchide_comanda, adauga_articol_*)
-- 20.03.2026 - SIGN() fix for negative quantity (discount) lines in cursor_comanda and inchide_comanda
-- 20.03.2026 - Fix NULL SUMA in adauga_articol_factura: use PTVA from COMENZI_ELEMENTE for discount lines (NVL2)
-- 23.03.2026 - Optiune sortare articole pe factura: RF_SORTARE_COMANDA (1=alfabetic, 0=ordine comanda) in cursor_comanda
cnume_program VARCHAR(30) := 'ROAFACTURARE';
@@ -2939,6 +2940,7 @@ CREATE OR REPLACE PACKAGE BODY "PACK_FACTURARE" is
V_ID_COMANDA COMENZI.ID_COMANDA%TYPE;
V_NR_INREGISTRARI NUMBER(10);
V_NR_INREGISTRARI_TOT NUMBER(10);
V_TIP_SORTARE NUMBER(1) := NVL(pack_sesiune.getOptiuneFirma('RF_SORTARE_COMANDA'), 1);
BEGIN
pack_facturare.initializeaza_facturare(V_ID_UTIL);
V_ID_COMANDA := TO_NUMBER(V_LISTAID);
@@ -3058,7 +3060,8 @@ CREATE OR REPLACE PACKAGE BODY "PACK_FACTURARE" is
WHERE A.STERS = 0
AND A.ID_COMANDA = V_ID_COMANDA
AND SIGN(A.CANTITATE) * (A.CANTITATE - NVL(D.CANTITATE, 0)) > 0
ORDER BY C.DENUMIRE;
ORDER BY CASE WHEN V_TIP_SORTARE = 1 THEN C.DENUMIRE END ASC,
CASE WHEN V_TIP_SORTARE = 0 THEN A.ID_COMANDA_ELEMENT END ASC;
ELSE
-- aviz
OPEN V_CURSOR FOR
@@ -3145,7 +3148,8 @@ CREATE OR REPLACE PACKAGE BODY "PACK_FACTURARE" is
WHERE A.STERS = 0
AND A.ID_COMANDA = V_ID_COMANDA
AND SIGN(A.CANTITATE) * (A.CANTITATE - NVL(D.CANTITATE, 0)) > 0
ORDER BY C.DENUMIRE;
ORDER BY CASE WHEN V_TIP_SORTARE = 1 THEN C.DENUMIRE END ASC,
CASE WHEN V_TIP_SORTARE = 0 THEN A.ID_COMANDA_ELEMENT END ASC;
END IF;
END cursor_comanda;
-------------------------------------------------------------------

File diff suppressed because it is too large Load Diff