Загрузка данных


WITH new_operations (
    code,
    name,
    short_name,
    template_code
) AS (
    VALUES
        (
            'SECOND_PAYMENT_PENSION',
            'Повторная выплата негосударственных пенсий',
            'Повторная выплата НП',
            'PAYMENT_PENSION'
        ),
        (
            'SECOND_PAYMENT_SUCCESSOR',
            'Повторная выплата правопреемникам',
            'Повторная выплата ВС ПП',
            'PAYMENT_SUCCESSOR'
        ),
        (
            'SECOND_PAYMENT_TERMINATED',
            'Повторная выплата выкупных сумм',
            'Повторная выплата ВС',
            'PAYMENT_TERMINATED'
        )
),
base_id AS (
    SELECT MAX(id) AS max_id
    FROM back_office.operation_type
),
prepared AS (
    SELECT
        n.*,
        ROW_NUMBER() OVER (ORDER BY n.code) AS rn
    FROM new_operations n
)
INSERT INTO back_office.operation_type (
    id,
    code,
    "name",
    short_name,
    group_code,
    "service_type",
    name_old,
    short_name_old,
    auto_approver,
    display_in_lkk,
    name_for_statement,
    display_in_statement,
    type_movement,
    settings_transaction_extended_id
)
SELECT
    b.max_id + p.rn,
    p.code,
    p.name,
    p.short_name,
    t.group_code,
    t."service_type",
    t.name_old,
    t.short_name_old,
    t.auto_approver,
    t.display_in_lkk,
    t.name_for_statement,
    t.display_in_statement,
    t.type_movement,
    t.settings_transaction_extended_id
FROM prepared p
CROSS JOIN base_id b
JOIN back_office.operation_type t
    ON t.code = p.template_code
WHERE NOT EXISTS (
    SELECT 1
    FROM back_office.operation_type x
    WHERE x.code = p.code
);





SELECT
    id,
    code,
    name,
    short_name,
    group_code,
    service_type,
    type_movement,
    auto_approver,
    display_in_lkk,
    name_for_statement,
    display_in_statement,
    settings_transaction_extended_id
FROM back_office.operation_type
WHERE id BETWEEN 192 AND 199
ORDER BY id;