-- ==================================================================== -- P1-001: Tabel ARTICOLE_TERTI pentru mapări SKU → CODMAT -- Sistem Import Comenzi Web → ROA -- ==================================================================== -- Creare tabel pentru mapări complexe articole CREATE TABLE ARTICOLE_TERTI ( sku VARCHAR2(100) NOT NULL, -- SKU din platforma web codmat VARCHAR2(50) NOT NULL, -- CODMAT din nom_articole cantitate_roa NUMBER(10,3) DEFAULT 1, -- Câte unități ROA = 1 web procent_pret NUMBER(5,2) DEFAULT 100, -- % din preț pentru seturi activ NUMBER(1) DEFAULT 1, -- 1=activ, 0=inactiv data_creare DATE DEFAULT SYSDATE, -- Timestamp creare data_modif DATE DEFAULT SYSDATE, -- Timestamp ultima modificare id_util_creare NUMBER(10) DEFAULT -3, -- ID utilizator care a creat id_util_modif NUMBER(10) DEFAULT -3, -- ID utilizator care a modificat -- Primary key compus CONSTRAINT pk_articole_terti PRIMARY KEY (sku, codmat), -- Validări CONSTRAINT chk_art_terti_cantitate CHECK (cantitate_roa > 0), CONSTRAINT chk_art_terti_procent CHECK (procent_pret >= 0 AND procent_pret <= 100), CONSTRAINT chk_art_terti_activ CHECK (activ IN (0, 1)) ); -- Index pentru performanță pe căutări frecvente după SKU CREATE INDEX idx_articole_terti_sku ON ARTICOLE_TERTI (sku, activ); -- Index pentru audit și raportare CREATE INDEX idx_articole_terti_data ON ARTICOLE_TERTI (data_creare, activ); -- Comentarii pentru documentație COMMENT ON TABLE ARTICOLE_TERTI IS 'Mapări SKU-uri web → CODMAT ROA pentru reîmpachetări și seturi'; COMMENT ON COLUMN ARTICOLE_TERTI.sku IS 'SKU din platforma web (ex: GoMag)'; COMMENT ON COLUMN ARTICOLE_TERTI.codmat IS 'CODMAT din nom_articole ROA'; COMMENT ON COLUMN ARTICOLE_TERTI.cantitate_roa IS 'Câte unități ROA pentru 1 unitate web'; COMMENT ON COLUMN ARTICOLE_TERTI.procent_pret IS 'Procent din preț web alocat acestui CODMAT (pentru seturi)'; COMMENT ON COLUMN ARTICOLE_TERTI.activ IS '1=mapare activă, 0=dezactivată'; -- Date de test pentru validare INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, procent_pret, activ) VALUES ('CAFE100', 'CAF01', 10, 100, 1); -- Reîmpachetare: 1 web = 10 ROA INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, procent_pret, activ) VALUES ('SET01', 'CAF01', 2, 60, 1); -- Set compus partea 1 INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa, procent_pret, activ) VALUES ('SET01', 'FILT01', 1, 40, 1); -- Set compus partea 2 COMMIT; -- Verificare creare tabel SELECT 'ARTICOLE_TERTI creat cu succes' AS STATUS, COUNT(*) AS NR_RECORDS FROM ARTICOLE_TERTI; -- Test integritate constraintelor BEGIN -- Test cantitate invalidă BEGIN INSERT INTO ARTICOLE_TERTI (sku, codmat, cantitate_roa) VALUES ('TEST', 'TST01', -1); DBMS_OUTPUT.PUT_LINE('ERROR: Constraint cantitate nu funcționează!'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('OK: Constraint cantitate funcționează'); END; -- Test procent invalid BEGIN INSERT INTO ARTICOLE_TERTI (sku, codmat, procent_pret) VALUES ('TEST2', 'TST02', 150); DBMS_OUTPUT.PUT_LINE('ERROR: Constraint procent nu funcționează!'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('OK: Constraint procent funcționează'); END; END; /