diff --git a/api/alembic/versions/sql/0002_functions.sql b/api/alembic/versions/sql/0002_functions.sql index cdf70dc..c19ea53 100644 --- a/api/alembic/versions/sql/0002_functions.sql +++ b/api/alembic/versions/sql/0002_functions.sql @@ -1571,7 +1571,7 @@ AS $function$ DECLARE v_report_id INT; v_eid INT; - v_org_id INT; + v_form_id INT; v_ei_path INT[]; BEGIN -- Извлекаем report_id + ei ДО DELETE (нужен для path) @@ -1585,21 +1585,33 @@ BEGIN v_ei_path := v3._expense_item_path_set(ARRAY[v_eid]); + SELECT bf.id + INTO v_form_id + FROM v3.rf_project_report r + JOIN v3.project p + ON p.id = r.project_id + LEFT JOIN v3.budget_form bf + ON bf.form_type_code = 'FORM_3' + AND bf.year = r.year + AND bf.org_unit_id = p.org_unit_id + WHERE r.id = v_report_id + LIMIT 1; + -- Каскад (FK без ON DELETE CASCADE) DELETE FROM v3.rf_project_report_quarter WHERE rf_project_report_line_id = p_line_id; DELETE FROM v3.rf_project_report_line WHERE id = p_line_id; - SELECT org_unit_id INTO v_org_id FROM v3.project WHERE id = v_report_id; -- Аудит: ROW_DELETE PERFORM v3.log_event( 'ROW_DELETE', 'ROW', jsonb_build_object( 'sheet', 'FORM_3', 'line_id', p_line_id, - 'entity_id', p_line_id, + 'form_id', v_form_id, 'report_id', v_report_id, 'expense_item_id', v_eid - ), null, null, v_org_id + ), + v_form_id ); -- Возврат: только иерархия по пути удалённой (INPUT уже нет)