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
|
||||
PERFORM setval(
|
||||
v_sequence_name,
|
||||
COALESCE((SELECT MAX(id) FROM v3.budget_line), 0),
|
||||
true
|
||||
COALESCE((SELECT MAX(id) FROM v3.budget_line), 1),
|
||||
(SELECT COUNT(*) > 0 FROM v3.budget_line)
|
||||
);
|
||||
END IF;
|
||||
END;
|
||||
|
||||
@ -2510,6 +2510,7 @@ BEGIN
|
||||
JOIN v3.expense_item ei ON ei.id = l.expense_item_id
|
||||
JOIN tw t ON t.id = l.expense_item_id
|
||||
WHERE l.rf_project_report_id = p_report_id
|
||||
AND cardinality(t.desc_ids) = 1
|
||||
),
|
||||
-- Поквартальные данные
|
||||
jq AS (
|
||||
@ -2919,6 +2920,13 @@ BEGIN
|
||||
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;
|
||||
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_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