form1-sub_sub-fix: правки по порядку статей
This commit is contained in:
parent
a3ffa2264c
commit
a9fd54398b
15
api/alembic/versions/0034_ahr_rf_sort_order.py
Normal file
15
api/alembic/versions/0034_ahr_rf_sort_order.py
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
from sql_migration import run_sql_file_migration
|
||||||
|
|
||||||
|
|
||||||
|
revision = "0034"
|
||||||
|
down_revision = "0033"
|
||||||
|
branch_labels = None
|
||||||
|
depends_on = None
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade() -> None:
|
||||||
|
run_sql_file_migration("0034_ahr_rf_sort_order.sql")
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade() -> None:
|
||||||
|
pass
|
||||||
@ -1301,8 +1301,8 @@ BEGIN
|
|||||||
IF v_sequence_name IS NOT NULL THEN
|
IF v_sequence_name IS NOT NULL THEN
|
||||||
PERFORM setval(
|
PERFORM setval(
|
||||||
v_sequence_name,
|
v_sequence_name,
|
||||||
COALESCE((SELECT MAX(id) FROM v3.budget_line), 0),
|
COALESCE((SELECT MAX(id) FROM v3.budget_line), 1),
|
||||||
true
|
(SELECT COUNT(*) > 0 FROM v3.budget_line)
|
||||||
);
|
);
|
||||||
END IF;
|
END IF;
|
||||||
END;
|
END;
|
||||||
|
|||||||
@ -2510,6 +2510,7 @@ BEGIN
|
|||||||
JOIN v3.expense_item ei ON ei.id = l.expense_item_id
|
JOIN v3.expense_item ei ON ei.id = l.expense_item_id
|
||||||
JOIN tw t ON t.id = l.expense_item_id
|
JOIN tw t ON t.id = l.expense_item_id
|
||||||
WHERE l.rf_project_report_id = p_report_id
|
WHERE l.rf_project_report_id = p_report_id
|
||||||
|
AND cardinality(t.desc_ids) = 1
|
||||||
),
|
),
|
||||||
-- Поквартальные данные
|
-- Поквартальные данные
|
||||||
jq AS (
|
jq AS (
|
||||||
@ -2919,6 +2920,13 @@ BEGIN
|
|||||||
WHERE expense_item_id = p_expense_item_id AND form_type_code = 'FORM_3') THEN
|
WHERE expense_item_id = p_expense_item_id AND form_type_code = 'FORM_3') THEN
|
||||||
RAISE EXCEPTION 'expense_item id=% не привязан к form_type FORM_3', p_expense_item_id;
|
RAISE EXCEPTION 'expense_item id=% не привязан к form_type FORM_3', p_expense_item_id;
|
||||||
END IF;
|
END IF;
|
||||||
|
IF COALESCE((
|
||||||
|
SELECT cardinality(t.desc_ids) > 1
|
||||||
|
FROM v3.mv_expense_item_tree t
|
||||||
|
WHERE t.id = p_expense_item_id
|
||||||
|
), false) THEN
|
||||||
|
RAISE EXCEPTION 'Нельзя создать строку по expense_item id=%: у статьи есть дочерние статьи', p_expense_item_id;
|
||||||
|
END IF;
|
||||||
v_user_id := v3.current_user_id();
|
v_user_id := v3.current_user_id();
|
||||||
v_decision := v3.can_edit3(p_report_id, NULL, v_user_id);
|
v_decision := v3.can_edit3(p_report_id, NULL, v_user_id);
|
||||||
|
|
||||||
|
|||||||
195
api/alembic/versions/sql/0034_ahr_rf_sort_order.sql
Normal file
195
api/alembic/versions/sql/0034_ahr_rf_sort_order.sql
Normal file
@ -0,0 +1,195 @@
|
|||||||
|
-- Fix sort.docx items 1-2:
|
||||||
|
-- - AHR RF depreciation and 5.00.0 tax block order.
|
||||||
|
-- - FORM_3 R061012024 order between R061012023 and R061012121.
|
||||||
|
-- - FORM_4 SMETA excludes sections absent from the project estimate template.
|
||||||
|
-- v3.mv_expense_item_tree sorts by expense_item.id path, so the catalog ids
|
||||||
|
-- must be renumbered together with all foreign-key references.
|
||||||
|
|
||||||
|
ALTER TABLE v3.budget_line DROP CONSTRAINT IF EXISTS budget_line_expense_item_fk;
|
||||||
|
ALTER TABLE v3.expense_item DROP CONSTRAINT IF EXISTS expense_item_expense_item_fk;
|
||||||
|
ALTER TABLE v3.expense_item_form_type DROP CONSTRAINT IF EXISTS expense_item_form_type_expense_item_fk;
|
||||||
|
ALTER TABLE v3.fixed_asset_report DROP CONSTRAINT IF EXISTS fixed_asset_report_expense_item_fk;
|
||||||
|
ALTER TABLE v3.rf_project_report_line DROP CONSTRAINT IF EXISTS rf_project_report_line_expense_item_fk;
|
||||||
|
|
||||||
|
CREATE TEMP TABLE _expense_item_id_map (
|
||||||
|
old_id INT PRIMARY KEY,
|
||||||
|
new_id INT NOT NULL UNIQUE
|
||||||
|
) ON COMMIT DROP;
|
||||||
|
|
||||||
|
INSERT INTO _expense_item_id_map (old_id, new_id)
|
||||||
|
SELECT id, id + 20
|
||||||
|
FROM v3.expense_item
|
||||||
|
WHERE id BETWEEN 82 AND 94;
|
||||||
|
|
||||||
|
INSERT INTO _expense_item_id_map (old_id, new_id)
|
||||||
|
SELECT id, id + 21
|
||||||
|
FROM v3.expense_item
|
||||||
|
WHERE id BETWEEN 95 AND 745;
|
||||||
|
|
||||||
|
INSERT INTO _expense_item_id_map (old_id, new_id) VALUES
|
||||||
|
(746, 82),
|
||||||
|
(747, 83),
|
||||||
|
(752, 84),
|
||||||
|
(758, 85),
|
||||||
|
(754, 86),
|
||||||
|
(753, 87),
|
||||||
|
(757, 88),
|
||||||
|
(750, 89),
|
||||||
|
(756, 90),
|
||||||
|
(759, 91),
|
||||||
|
(748, 92),
|
||||||
|
(751, 93),
|
||||||
|
(749, 94),
|
||||||
|
(755, 95),
|
||||||
|
(760, 96),
|
||||||
|
(764, 97),
|
||||||
|
(762, 98),
|
||||||
|
(763, 99),
|
||||||
|
(765, 100),
|
||||||
|
(761, 101),
|
||||||
|
(775, 115),
|
||||||
|
(766, 775),
|
||||||
|
(772, 767),
|
||||||
|
(773, 768),
|
||||||
|
(771, 769),
|
||||||
|
(774, 770),
|
||||||
|
(767, 771),
|
||||||
|
(770, 772),
|
||||||
|
(768, 773),
|
||||||
|
(769, 774);
|
||||||
|
|
||||||
|
DO $block$
|
||||||
|
DECLARE
|
||||||
|
v_missing TEXT;
|
||||||
|
BEGIN
|
||||||
|
SELECT string_agg(expected.item_id, ', ' ORDER BY expected.item_id)
|
||||||
|
INTO v_missing
|
||||||
|
FROM (
|
||||||
|
VALUES
|
||||||
|
('1.16.0.'), ('1.16.1.'), ('1.16.2.'),
|
||||||
|
('R061161001'), ('R061161005'), ('R061161002'), ('R061161004'),
|
||||||
|
('R061161003'), ('R061161006'), ('R061161010'), ('R061161007'),
|
||||||
|
('R061161008'), ('R061161009'), ('R061161011'), ('R061161019'),
|
||||||
|
('R061162021'), ('R061162022'), ('R061162023'), ('R061162024'),
|
||||||
|
('R061162025'),
|
||||||
|
('R061012023'), ('R061012024'), ('R061012121'),
|
||||||
|
('5.00.0.'),
|
||||||
|
('R065010000'), ('R065020001'), ('R065030012'), ('R065040000'),
|
||||||
|
('R065050005'), ('R065070000'), ('R065090000'), ('R065100000')
|
||||||
|
) AS expected(item_id)
|
||||||
|
LEFT JOIN v3.expense_item ei
|
||||||
|
ON ei.item_id = expected.item_id
|
||||||
|
AND ei.sheet = 'AHR'
|
||||||
|
AND ei.direction = 'Support'
|
||||||
|
WHERE ei.id IS NULL;
|
||||||
|
|
||||||
|
IF v_missing IS NOT NULL THEN
|
||||||
|
RAISE EXCEPTION 'Missing AHR Support expense items for sort fix: %', v_missing;
|
||||||
|
END IF;
|
||||||
|
END;
|
||||||
|
$block$;
|
||||||
|
|
||||||
|
UPDATE v3.expense_item
|
||||||
|
SET id = -id
|
||||||
|
WHERE id IN (SELECT old_id FROM _expense_item_id_map);
|
||||||
|
|
||||||
|
UPDATE v3.expense_item ei
|
||||||
|
SET id = m.new_id
|
||||||
|
FROM _expense_item_id_map m
|
||||||
|
WHERE ei.id = -m.old_id;
|
||||||
|
|
||||||
|
UPDATE v3.expense_item ei
|
||||||
|
SET parent_id = m.new_id
|
||||||
|
FROM _expense_item_id_map m
|
||||||
|
WHERE ei.parent_id = m.old_id;
|
||||||
|
|
||||||
|
UPDATE v3.budget_line
|
||||||
|
SET expense_item_id = -expense_item_id
|
||||||
|
WHERE expense_item_id IN (SELECT old_id FROM _expense_item_id_map);
|
||||||
|
|
||||||
|
UPDATE v3.budget_line bl
|
||||||
|
SET expense_item_id = m.new_id
|
||||||
|
FROM _expense_item_id_map m
|
||||||
|
WHERE bl.expense_item_id = -m.old_id;
|
||||||
|
|
||||||
|
UPDATE v3.expense_item_form_type
|
||||||
|
SET expense_item_id = -expense_item_id
|
||||||
|
WHERE expense_item_id IN (SELECT old_id FROM _expense_item_id_map);
|
||||||
|
|
||||||
|
UPDATE v3.expense_item_form_type eft
|
||||||
|
SET expense_item_id = m.new_id
|
||||||
|
FROM _expense_item_id_map m
|
||||||
|
WHERE eft.expense_item_id = -m.old_id;
|
||||||
|
|
||||||
|
UPDATE v3.fixed_asset_report
|
||||||
|
SET expense_item_id = -expense_item_id
|
||||||
|
WHERE expense_item_id IN (SELECT old_id FROM _expense_item_id_map);
|
||||||
|
|
||||||
|
UPDATE v3.fixed_asset_report far
|
||||||
|
SET expense_item_id = m.new_id
|
||||||
|
FROM _expense_item_id_map m
|
||||||
|
WHERE far.expense_item_id = -m.old_id;
|
||||||
|
|
||||||
|
UPDATE v3.rf_project_report_line
|
||||||
|
SET expense_item_id = -expense_item_id
|
||||||
|
WHERE expense_item_id IN (SELECT old_id FROM _expense_item_id_map);
|
||||||
|
|
||||||
|
UPDATE v3.rf_project_report_line rprl
|
||||||
|
SET expense_item_id = m.new_id
|
||||||
|
FROM _expense_item_id_map m
|
||||||
|
WHERE rprl.expense_item_id = -m.old_id;
|
||||||
|
|
||||||
|
DELETE FROM v3.expense_item_form_type
|
||||||
|
WHERE form_type_code = 'FORM_4'
|
||||||
|
AND expense_item_id IN (
|
||||||
|
103, 104, 106, 107,
|
||||||
|
500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, 512,
|
||||||
|
513, 514, 515, 516, 517,
|
||||||
|
518, 519, 520, 521, 522,
|
||||||
|
525, 526, 527, 528,
|
||||||
|
547, 548, 549, 550, 551, 552, 553, 554, 555,
|
||||||
|
556, 557, 558,
|
||||||
|
734, 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, 746,
|
||||||
|
748,
|
||||||
|
755, 756, 757, 758, 759, 760, 766,
|
||||||
|
800, 801, 802, 803, 804, 805, 806, 807, 808
|
||||||
|
);
|
||||||
|
|
||||||
|
DO $block$
|
||||||
|
DECLARE
|
||||||
|
v_function_definition TEXT;
|
||||||
|
BEGIN
|
||||||
|
SELECT pg_get_functiondef('v3.v_summary_view(integer, character varying, integer[])'::regprocedure)
|
||||||
|
INTO v_function_definition;
|
||||||
|
|
||||||
|
v_function_definition := REPLACE(
|
||||||
|
v_function_definition,
|
||||||
|
'ROW_NUMBER() OVER (ORDER BY t.item_id)',
|
||||||
|
'ROW_NUMBER() OVER (ORDER BY t.path)'
|
||||||
|
);
|
||||||
|
|
||||||
|
EXECUTE v_function_definition;
|
||||||
|
END;
|
||||||
|
$block$;
|
||||||
|
|
||||||
|
ALTER TABLE v3.expense_item
|
||||||
|
ADD CONSTRAINT expense_item_expense_item_fk
|
||||||
|
FOREIGN KEY (parent_id) REFERENCES v3.expense_item(id);
|
||||||
|
|
||||||
|
ALTER TABLE v3.expense_item_form_type
|
||||||
|
ADD CONSTRAINT expense_item_form_type_expense_item_fk
|
||||||
|
FOREIGN KEY (expense_item_id) REFERENCES v3.expense_item(id);
|
||||||
|
|
||||||
|
ALTER TABLE v3.budget_line
|
||||||
|
ADD CONSTRAINT budget_line_expense_item_fk
|
||||||
|
FOREIGN KEY (expense_item_id) REFERENCES v3.expense_item(id);
|
||||||
|
|
||||||
|
ALTER TABLE v3.fixed_asset_report
|
||||||
|
ADD CONSTRAINT fixed_asset_report_expense_item_fk
|
||||||
|
FOREIGN KEY (expense_item_id) REFERENCES v3.expense_item(id);
|
||||||
|
|
||||||
|
ALTER TABLE v3.rf_project_report_line
|
||||||
|
ADD CONSTRAINT rf_project_report_line_expense_item_fk
|
||||||
|
FOREIGN KEY (expense_item_id) REFERENCES v3.expense_item(id);
|
||||||
|
|
||||||
|
REFRESH MATERIALIZED VIEW v3.mv_expense_item_tree;
|
||||||
Loading…
x
Reference in New Issue
Block a user