Backend: - service_auto module complet: router, service, schemas, 5 teste suites (22/22 passed) - 5 endpoints: GET /ping, /firme, /tip-deviz, /masini, POST /comenzi - SP_CREEAZA_COMANDA_PROTOTIP creat în MARIUSM_AUTO (VALID, 5.9ms) - oracle_pool.py: session_callback backward-compat patch - ROA_WEB user: grants SP-only confirmate (H3), mariusm_test pool switchat - pyproject.toml: integration pytest marker înregistrat Frontend: - ComandaNoua.vue: date reale din Oracle (firme/tip-deviz/masini), nu hardcodate - src/modules/service-auto/services/api.js: axios service cu Bearer token - src/router/index.js: rută /service-auto/comanda-noua Docs: - decision-log.md: verdict MERGE, toate 6 ipoteze CONFIRMED - learnings.md: 7 patterns reutilizabile - grants-audit.md: arhitectura multi-tenant + proxy auth analysis + V_NOM_FIRME loop - template-modul-oracle.md: rețetă completă pentru module Oracle noi - TODO-phase2.md: 7 items concrete Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
69 lines
2.6 KiB
MySQL
69 lines
2.6 KiB
MySQL
-- =============================================================================
|
|
-- SP_CREEAZA_COMANDA_PROTOTIP — Săpt 3 prototype
|
|
-- =============================================================================
|
|
-- Creează o comandă minimă de service auto: insert NOM_LUCRARI (parent) +
|
|
-- DEV_ORDL (child) într-o singură tranzacție.
|
|
--
|
|
-- Scope: PROTOTYPE ONLY. Nu înlocuiește pack_auto.dev_adauga_lucrare. Nu
|
|
-- agreghează norme, nu actualizează DEV_MASINICLIENTI (kmint/ore), nu setează
|
|
-- inspector/asigurator, nu generează PROC_TVAV prin pack_contafin.
|
|
--
|
|
-- Nrord: generat din SEQ_NR_LUCRARE (nefolosită în producție) cu prefix 'P' +
|
|
-- id_firma — garantat unic, ușor de identificat pentru cleanup.
|
|
--
|
|
-- Autor: oracle-agent, team service-auto-sapt3 (2026-04-11)
|
|
-- =============================================================================
|
|
|
|
CREATE OR REPLACE PROCEDURE MARIUSM_AUTO.SP_CREEAZA_COMANDA_PROTOTIP(
|
|
p_tip IN NUMBER, -- FK DEV_TIP_DEVIZ.ID_TIP
|
|
p_id_masiniclient IN NUMBER, -- FK DEV_MASINICLIENTI.ID_MASINICLIENT
|
|
p_solicitari IN VARCHAR2, -- text liber, stored as CLOB
|
|
p_id_firma IN NUMBER, -- multi-tenant marker (prototype only)
|
|
p_id_ordl OUT NUMBER, -- new DEV_ORDL.ID_ORDL (from trigger)
|
|
p_nrord OUT VARCHAR2 -- generated order number (echo)
|
|
) AS
|
|
v_id_lucrare NUMBER;
|
|
v_seq NUMBER;
|
|
v_exists NUMBER;
|
|
v_now DATE := SYSDATE;
|
|
BEGIN
|
|
-- 1. Generate nrord (atomic via sequence)
|
|
v_seq := MARIUSM_AUTO.SEQ_NR_LUCRARE.NEXTVAL;
|
|
p_nrord := 'P' || LPAD(p_id_firma, 2, '0') || '-' || v_seq;
|
|
|
|
-- 2. Duplicate guard (paritate cu pack_auto — should never fire)
|
|
SELECT COUNT(*) INTO v_exists
|
|
FROM MARIUSM_AUTO.NOM_LUCRARI
|
|
WHERE sters = 0 AND nrord = p_nrord;
|
|
IF v_exists > 0 THEN
|
|
RAISE_APPLICATION_ERROR(-20001,
|
|
'Mai exista o comanda cu numarul ' || p_nrord);
|
|
END IF;
|
|
|
|
-- 3. Parent INSERT — TRG_NOM_LUCRARI_BEFOINS allocates id_lucrare
|
|
INSERT INTO MARIUSM_AUTO.NOM_LUCRARI (nrord, id_mod)
|
|
VALUES (p_nrord, 1200)
|
|
RETURNING id_lucrare INTO v_id_lucrare;
|
|
|
|
-- 4. Child INSERT — minimal columns only (NOT NULL ones + client link)
|
|
-- id_util_ad=0 for prototype (no real session context)
|
|
INSERT INTO MARIUSM_AUTO.DEV_ORDL (
|
|
an, luna,
|
|
id_lucrare,
|
|
datai, dataoraad,
|
|
id_util_ad,
|
|
id_masiniclient,
|
|
id_tip,
|
|
solicitari_client
|
|
) VALUES (
|
|
EXTRACT(YEAR FROM v_now), EXTRACT(MONTH FROM v_now),
|
|
v_id_lucrare,
|
|
v_now, v_now,
|
|
0,
|
|
p_id_masiniclient,
|
|
p_tip,
|
|
p_solicitari
|
|
) RETURNING id_ordl INTO p_id_ordl;
|
|
END SP_CREEAZA_COMANDA_PROTOTIP;
|
|
/
|