Поправил ошибки в тестах и функцию в бд

This commit is contained in:
Raykov-MS 2026-06-30 10:54:09 +03:00
parent 3b7c93f5a7
commit 20d0520b7d
2 changed files with 18 additions and 4 deletions

View File

@ -1571,7 +1571,7 @@ AS $function$
DECLARE DECLARE
v_report_id INT; v_report_id INT;
v_eid INT; v_eid INT;
v_org_id INT; v_form_id INT;
v_ei_path INT[]; v_ei_path INT[];
BEGIN BEGIN
-- Извлекаем report_id + ei ДО DELETE (нужен для path) -- Извлекаем report_id + ei ДО DELETE (нужен для path)
@ -1585,21 +1585,33 @@ BEGIN
v_ei_path := v3._expense_item_path_set(ARRAY[v_eid]); 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) -- Каскад (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_quarter WHERE rf_project_report_line_id = p_line_id;
DELETE FROM v3.rf_project_report_line WHERE 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 -- Аудит: ROW_DELETE
PERFORM v3.log_event( PERFORM v3.log_event(
'ROW_DELETE', 'ROW', 'ROW_DELETE', 'ROW',
jsonb_build_object( jsonb_build_object(
'sheet', 'FORM_3', 'sheet', 'FORM_3',
'line_id', p_line_id, 'line_id', p_line_id,
'entity_id', p_line_id, 'form_id', v_form_id,
'report_id', v_report_id, 'report_id', v_report_id,
'expense_item_id', v_eid 'expense_item_id', v_eid
), null, null, v_org_id ),
v_form_id
); );
-- Возврат: только иерархия по пути удалённой (INPUT уже нет) -- Возврат: только иерархия по пути удалённой (INPUT уже нет)

View File

@ -86,6 +86,8 @@ def test_projects_write_smoke(client, admin_tokens, auth_headers):
f"/api/v1/projects/{project_id}/report/2026/LIMIT/line/{line_id}", f"/api/v1/projects/{project_id}/report/2026/LIMIT/line/{line_id}",
headers=auth_headers(admin_tokens), headers=auth_headers(admin_tokens),
) )
print(del_line_response.status_code, del_line_response.json())
assert del_line_response.status_code == 200 assert del_line_response.status_code == 200