Advertisement
zotov-vs

Untitled

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