Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- do $$
- declare
- v_from_school integer := 3;
- v_to_school integer := 175;
- v_to_eo_id uuid;
- v_from_contract_id uuid;
- v_to_contract_id uuid;
- v_from_contract_edition_id uuid;
- v_to_contract_edition_id uuid;
- begin
- -- Ищем гуид договора с которого копировать
- SELECT id FROM administrations.contract INTO v_from_contract_id WHERE educational_organization_id = (
- SELECT o.id
- FROM administrations.educational_organization eo
- INNER JOIN administrations.organization o ON o.educational_id = eo.id
- WHERE eo.code = v_from_school
- );
- RAISE NOTICE 'from contract id: %', v_from_contract_id;
- IF v_from_contract_id IS NULL THEN
- RAISE EXCEPTION 'Нет договора для копирования';
- END IF;
- -- Ищем гуид образовательного учреждения куда копировать
- SELECT id FROM administrations.organization INTO v_to_eo_id WHERE educational_id = (
- SELECT id FROM administrations.educational_organization WHERE code = v_to_school
- );
- RAISE NOTICE 'to school id: %', v_to_eo_id;
- IF v_to_eo_id IS NULL THEN
- RAISE EXCEPTION 'Нет школы куда копировать';
- END IF;
- -- Ищем гуид редакции договора откуда копировать
- SELECT
- id
- FROM
- administrations.contract_edition
- INTO
- v_from_contract_edition_id
- WHERE
- contract_id = v_from_contract_id
- AND number = (SELECT MAX(number) FROM administrations.contract_edition WHERE contract_id = v_from_contract_id);
- RAISE NOTICE 'from contract edition id: %', v_from_contract_edition_id;
- IF v_from_contract_edition_id IS NULL THEN
- RAISE EXCEPTION 'Нет редакции договора откуда копировать';
- END IF;
- -- Генерируем гуиды для нового договора и редакции договора
- v_to_contract_id := public.uuid_generate_v4();
- v_to_contract_edition_id := public.uuid_generate_v4();
- -- Вставляем договор
- INSERT INTO administrations.contract(
- id,
- educational_organization_id,
- catering_organization_id,
- is_deleted)
- SELECT
- v_to_contract_id,
- v_to_eo_id,
- catering_organization_id,
- is_deleted
- FROM
- administrations.contract
- WHERE
- id = v_from_contract_id;
- -- Вставляем редакцию договора
- INSERT INTO administrations.contract_edition(
- id,
- is_deleted,
- contract_id,
- sequence_number,
- status,
- "number",
- date_conclusion,
- date_from,
- date_to,
- bank_account_id,
- url,
- agreement_number,
- date_conclusion_agreement)
- SELECT
- v_to_contract_edition_id,
- is_deleted,
- v_to_contract_id,
- sequence_number,
- status,
- "number" || '_' || v_to_school::varchar,
- date_conclusion,
- date_from,
- date_to,
- bank_account_id,
- url,
- agreement_number,
- date_conclusion_agreement
- FROM
- administrations.contract_edition
- WHERE
- id = v_from_contract_edition_id;
- -- Вставляем варианты питания
- INSERT INTO administrations.contract_feeding_option(
- id,
- contract_edition_id,
- name,
- financing_source,
- subsidy_id,
- parent_money,
- subsidy_money,
- minimum_class,
- maximum_class,
- max_portion_count,
- products_cost,
- margin,
- types)
- SELECT
- public.uuid_generate_v4(),
- v_to_contract_edition_id,
- name,
- financing_source,
- subsidy_id,
- parent_money,
- subsidy_money,
- minimum_class,
- maximum_class,
- max_portion_count,
- products_cost,
- margin,
- types
- FROM
- administrations.contract_feeding_option
- WHERE
- contract_edition_id = v_from_contract_edition_id;
- end $$;
Advertisement
Add Comment
Please, Sign In to add comment