suburg

Untitled

Dec 28th, 2023
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.72 KB | None | 0 0
  1. do $$
  2. declare
  3. v_from_school integer := 3;
  4. v_to_school integer := 175;
  5.  
  6. v_to_eo_id uuid;
  7.  
  8. v_from_contract_id uuid;
  9. v_to_contract_id uuid;
  10.  
  11. v_from_contract_edition_id uuid;
  12. v_to_contract_edition_id uuid;
  13. begin
  14. -- Ищем гуид договора с которого копировать
  15. SELECT id FROM administrations.contract INTO v_from_contract_id WHERE educational_organization_id = (
  16. SELECT o.id
  17. FROM administrations.educational_organization eo
  18. INNER JOIN administrations.organization o ON o.educational_id = eo.id
  19. WHERE eo.code = v_from_school
  20. );
  21. RAISE NOTICE 'from contract id: %', v_from_contract_id;
  22.  
  23. IF v_from_contract_id IS NULL THEN
  24. RAISE EXCEPTION 'Нет договора для копирования';
  25. END IF;
  26.  
  27. -- Ищем гуид образовательного учреждения куда копировать
  28. SELECT id FROM administrations.organization INTO v_to_eo_id WHERE educational_id = (
  29. SELECT id FROM administrations.educational_organization WHERE code = v_to_school
  30. );
  31. RAISE NOTICE 'to school id: %', v_to_eo_id;
  32.  
  33. IF v_to_eo_id IS NULL THEN
  34. RAISE EXCEPTION 'Нет школы куда копировать';
  35. END IF;
  36.  
  37. -- Ищем гуид редакции договора откуда копировать
  38. SELECT
  39. id
  40. FROM
  41. administrations.contract_edition
  42. INTO
  43. v_from_contract_edition_id
  44. WHERE
  45. contract_id = v_from_contract_id
  46. AND number = (SELECT MAX(number) FROM administrations.contract_edition WHERE contract_id = v_from_contract_id);
  47.  
  48. RAISE NOTICE 'from contract edition id: %', v_from_contract_edition_id;
  49.  
  50. IF v_from_contract_edition_id IS NULL THEN
  51. RAISE EXCEPTION 'Нет редакции договора откуда копировать';
  52. END IF;
  53.  
  54. -- Генерируем гуиды для нового договора и редакции договора
  55. v_to_contract_id := public.uuid_generate_v4();
  56. v_to_contract_edition_id := public.uuid_generate_v4();
  57.  
  58. -- Вставляем договор
  59. INSERT INTO administrations.contract(
  60. id,
  61. educational_organization_id,
  62. catering_organization_id,
  63. is_deleted)
  64. SELECT
  65. v_to_contract_id,
  66. v_to_eo_id,
  67. catering_organization_id,
  68. is_deleted
  69. FROM
  70. administrations.contract
  71. WHERE
  72. id = v_from_contract_id;
  73.  
  74. -- Вставляем редакцию договора
  75. INSERT INTO administrations.contract_edition(
  76. id,
  77. is_deleted,
  78. contract_id,
  79. sequence_number,
  80. status,
  81. "number",
  82. date_conclusion,
  83. date_from,
  84. date_to,
  85. bank_account_id,
  86. url,
  87. agreement_number,
  88. date_conclusion_agreement)
  89. SELECT
  90. v_to_contract_edition_id,
  91. is_deleted,
  92. v_to_contract_id,
  93. sequence_number,
  94. status,
  95. "number" || '_' || v_to_school::varchar,
  96. date_conclusion,
  97. date_from,
  98. date_to,
  99. bank_account_id,
  100. url,
  101. agreement_number,
  102. date_conclusion_agreement
  103. FROM
  104. administrations.contract_edition
  105. WHERE
  106. id = v_from_contract_edition_id;
  107.  
  108. -- Вставляем варианты питания
  109. INSERT INTO administrations.contract_feeding_option(
  110. id,
  111. contract_edition_id,
  112. name,
  113. financing_source,
  114. subsidy_id,
  115. parent_money,
  116. subsidy_money,
  117. minimum_class,
  118. maximum_class,
  119. max_portion_count,
  120. products_cost,
  121. margin,
  122. types)
  123. SELECT
  124. public.uuid_generate_v4(),
  125. v_to_contract_edition_id,
  126. name,
  127. financing_source,
  128. subsidy_id,
  129. parent_money,
  130. subsidy_money,
  131. minimum_class,
  132. maximum_class,
  133. max_portion_count,
  134. products_cost,
  135. margin,
  136. types
  137. FROM
  138. administrations.contract_feeding_option
  139. WHERE
  140. contract_edition_id = v_from_contract_edition_id;
  141.  
  142. end $$;
Advertisement
Add Comment
Please, Sign In to add comment