feat(sqlite): refactor orders schema + dashboard period filter
Replace import_orders (insert-per-run) with orders table (one row per order, upsert on conflict). Eliminates dedup CTE on every dashboard query and prevents unbounded row growth at 4-500 orders/sync. Key changes: - orders table: PK order_number, upsert via ON CONFLICT DO UPDATE; COALESCE preserves id_comanda once set; times_skipped auto-increments - sync_run_orders: lightweight junction (sync_run_id, order_number) replaces sync_run_id column on orders - order_items: PK changed to (order_number, sku), INSERT OR IGNORE - Auto-migration in init_sqlite(): import_orders → orders on first boot, old table renamed to import_orders_bak - /api/dashboard/orders: period_days param (3/7/30/0=all, default 7) - Dashboard: period selector buttons in orders card header - start.sh: stop existing process on port 5003 before restart; remove --reload (broken on WSL2 /mnt/e/) - Add invoice_service, E2E Playwright tests, Oracle package updates Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -538,7 +538,7 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
END IF;
|
||||
|
||||
v_cod_fiscal_curat := TRIM(p_cod_fiscal);
|
||||
v_denumire_curata := TRIM(p_denumire);
|
||||
v_denumire_curata := UPPER(TRIM(p_denumire));
|
||||
|
||||
-- STEP 1: Cautare dupa cod fiscal (prioritate 1)
|
||||
IF v_cod_fiscal_curat IS NOT NULL AND
|
||||
@@ -584,6 +584,8 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
IF v_este_persoana_fizica = 1 THEN
|
||||
-- pINFO('Detectata persoana fizica (CUI 13 cifre)', 'IMPORT_PARTENERI');
|
||||
separa_nume_prenume(v_denumire_curata, v_nume, v_prenume);
|
||||
v_nume := UPPER(v_nume);
|
||||
v_prenume := UPPER(v_prenume);
|
||||
-- pINFO('Nume separat: NUME=' || NVL(v_nume, 'NULL') || ', PRENUME=' || NVL(v_prenume, 'NULL'), 'IMPORT_PARTENERI');
|
||||
END IF;
|
||||
|
||||
@@ -591,7 +593,7 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_PARTENERI AS
|
||||
BEGIN
|
||||
IF v_este_persoana_fizica = 1 THEN
|
||||
-- Pentru persoane fizice
|
||||
pack_def.adauga_partener(tcDenumire => v_nume, -- nume de familie pentru persoane fizice
|
||||
pack_def.adauga_partener(tcDenumire => v_nume || ' ' || v_prenume,
|
||||
tcNume => v_nume,
|
||||
tcPrenume => v_prenume,
|
||||
tcCod_fiscal => v_cod_fiscal_curat,
|
||||
|
||||
@@ -198,6 +198,7 @@ CREATE OR REPLACE PACKAGE BODY PACK_IMPORT_COMENZI AS
|
||||
JOIN nom_articole na ON na.codmat = at.codmat
|
||||
WHERE at.sku = v_sku
|
||||
AND at.activ = 1
|
||||
AND at.sters = 0
|
||||
ORDER BY at.procent_pret DESC) LOOP
|
||||
|
||||
v_found_mapping := TRUE;
|
||||
|
||||
12
api/database-scripts/07_alter_articole_terti_sters.sql
Normal file
12
api/database-scripts/07_alter_articole_terti_sters.sql
Normal file
@@ -0,0 +1,12 @@
|
||||
-- ====================================================================
|
||||
-- 07_alter_articole_terti_sters.sql
|
||||
-- Adauga coloana "sters" in ARTICOLE_TERTI pentru soft-delete real
|
||||
-- (separat de "activ" care e toggle business)
|
||||
-- ====================================================================
|
||||
|
||||
ALTER TABLE ARTICOLE_TERTI ADD sters NUMBER(1) DEFAULT 0;
|
||||
ALTER TABLE ARTICOLE_TERTI ADD CONSTRAINT chk_art_terti_sters CHECK (sters IN (0, 1));
|
||||
|
||||
-- Verifica ca toate randurile existente au sters=0
|
||||
-- SELECT COUNT(*) FROM ARTICOLE_TERTI WHERE sters IS NULL;
|
||||
-- UPDATE ARTICOLE_TERTI SET sters = 0 WHERE sters IS NULL;
|
||||
Reference in New Issue
Block a user