Advertisement
zotov-vs

Untitled

Apr 17th, 2020
709
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 3.57 KB | None | 0 0
  1. -- Запрос создает новыую поставку и и привязывает к ней товары которое отсутсуют в продписанном документе ЭДО
  2. SET @parent_incomes_id = 7971;
  3. -- SET @digital_documents_1c_id = '484343c2-0acd-4433-851d-edba23960266';
  4.  
  5. SELECT @digital_documents_id := dd.digital_documents_id
  6.   , @parent_incomes_id := dd.objects_id
  7. FROM digital_documents AS dd
  8. WHERE  dd.digital_documents_status = 229
  9.     AND dd.entities_id = 41
  10.     AND dd.objects_id = @parent_incomes_id
  11. --  AND dd.digital_documents_1c_id = @digital_documents_1c_id
  12. LIMIT 1;
  13.  
  14.  
  15. START TRANSACTION;
  16.  
  17. -- копирование поставки
  18. INSERT INTO incomes (
  19.  
  20.     `incomes_id`
  21.     , `suppliers_id`
  22.     , `suppliers_contracts_id`
  23.     , `suppliers_contracts_conditions_details_id`
  24.     , `suppliers_contracts_volumes_id`
  25.     , `invoice_exist`
  26.     , `date`
  27.     , `planned_supply_quantity_torg12`
  28.     , `planned_supply_summa_torg12`
  29.     , `customers_id`
  30.     , `incomes_status`
  31.     , `supply_date_planned`
  32.     , `date_request_send`
  33.     , `supply_date`
  34.     , `date_start`
  35.     , `date_end`
  36.     , `photography_links`
  37.     , `our_photography_links`
  38.     , `is_editable_on_marking`
  39.     , `entities_types_id`
  40.     , `last_date_update`
  41.     , `digital_documents_suppliers_settings_id`
  42.     , `categories_id`)
  43.      
  44.     SELECT  
  45.    
  46.          NULL AS incomes_id
  47.         , i.suppliers_id
  48.         , i.suppliers_contracts_id
  49.         , i.suppliers_contracts_conditions_details_id
  50.         , i.suppliers_contracts_volumes_id
  51.         , i.invoice_exist
  52.         , i.date
  53.         , i.planned_supply_quantity_torg12
  54.         , i.planned_supply_summa_torg12
  55.         , i.customers_id
  56.         , i.incomes_status
  57.         , i.supply_date_planned
  58.         , i.date_request_send
  59.         , i.supply_date
  60.         , i.date_start
  61.         , i.date_end
  62.         , i.photography_links
  63.         , i.our_photography_links
  64.         , i.is_editable_on_marking
  65.         , i.entities_types_id
  66.         , NULL AS last_date_update
  67.         , i.digital_documents_suppliers_settings_id
  68.         , i.categories_id
  69.  
  70.     FROM incomes AS i
  71.     WHERE i.incomes_id =  @parent_incomes_id;
  72.  
  73. SET @incomes_id := LAST_INSERT_ID();
  74. SELECT @incomes_id AS incomes_id;
  75.  
  76. -- Копирование истории статусов
  77.  
  78. INSERT INTO `incomes_status_history` (
  79.     `incomes_status_history_id`
  80.     , `object_id`
  81.     , `customers_id`
  82.     , `status_id`
  83.     , `date_added`
  84.     , `parent_id`)
  85.  
  86. SELECT
  87.     NULL AS incomes_status_history_id
  88.     , @incomes_id AS object_id
  89.     , ish.customers_id
  90.     , ish.status_id
  91.     , ish.date_added
  92.     , NULL AS parent_id
  93. FROM incomes_status_history AS ish
  94. WHERE ish.object_id = @parent_incomes_id;
  95.  
  96. -- Заполнение parent_id в истории статусов
  97. UPDATE  incomes_status_history AS osh  
  98. LEFT JOIN (
  99.         SELECT
  100.             ish0.incomes_status_history_id
  101.             , lag(ish0.incomes_status_history_id) OVER (PARTITION BY ish0.object_id ORDER BY ish0.incomes_status_history_id) AS parent_id
  102.         FROM incomes_status_history AS ish0
  103.         WHERE ish0.object_id = @incomes_id
  104.     ) AS t ON osh.incomes_status_history_id = t.incomes_status_history_id
  105.  SET osh.parent_id = t.parent_id
  106. WHERE osh.object_id = @incomes_id
  107. ;
  108.  
  109. -- Смена поставки в ia
  110.  
  111. UPDATE incomes_attributes AS ia
  112.     JOIN digital_documents_to_objects AS ddo ON ddo.object_id = ia.incomes_attributes_id AND ddo.entities_id = 83
  113. SET ia.incomes_id = @incomes_id
  114. WHERE ddo.digital_documents_id IN(@digital_documents_id)
  115. AND ddo.digital_documents_to_objects_ordered_count > ddo.digital_documents_to_objects_in_document_count
  116. AND ddo.document_row_number < 0;
  117.  
  118. -- Добавим поставку для обмена с 1С
  119. INSERT INTO export_data_1c (`component`, `object_id`, `date_web`) VALUES (40, @incomes_id, NOW());
  120.  
  121. COMMIT;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement