Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Объединение данных через MERGE для ОПст
- DECLARE @id_module_solvo INT = (SELECT id FROM dbo.vw_A_Module WHERE name = 'SOLVO'); -- ид модуля Solvo
- DECLARE @id_action_status_acceptance INT = (SELECT id FROM dbo.vw_A_Action_Status WHERE name = 'Приёмка') -- ид статуса ОПст - Приёмка
- DECLARE @id_action_status_waiting INT = (SELECT id FROM dbo.vw_A_Action_Status WHERE name = 'Ожидание') -- ид статуса ОПст - Ожидание
- DECLARE @wms_last_sync_date DATETIME = (SELECT SyncDT FROM dbo.tbr_A_WMS_Sync WHERE DataName = 'Incoming') -- дата последней синхронизации
- DECLARE @id_document_type_supplier_shipment INT = (SELECT id FROM dbo.vw_A_Document_Type WHERE code = 'ОПст') -- тип документа ОПст
- DECLARE @id_document_type_client_goods_return INT = (SELECT id FROM dbo.vw_A_Document_Type WHERE code = 'ВКл') -- тип документа ОПст
- -- Общие
- DECLARE @id_owner INT = 0
- -- Шапка документа
- DECLARE @priority INT = 1
- DECLARE @wms_status NVARCHAR(50) = ''
- -- Строки документа
- DECLARE @quantity_fact INT = 0
- DECLARE @lot NVARCHAR(100) = '-'
- DECLARE @uom NVARCHAR(100) = '0'
- DECLARE @category INT = 1
- DECLARE @id_category INT = 0
- SELECT DISTINCT
- id_doc = dss.id, -- Ссылка на документ-основание(ОПст)
- id_document_type = @id_document_type_supplier_shipment, -- Ссылка на документ-основание (ОПСТ, ВКЛ)
- doc_number = dss.id_key_splitted, -- Номер документа (id_key_splitted)
- id_acceptance_storage = dss.id_acceptance_storage, -- ID склада в системе ADTS
- [priority] = @priority, -- Приоритет приемки(пока = 1, не заполнять)
- id_contractor = dss.id_contractor, -- ID поставщика
- id_contract = dss.id_contractor_contract, -- ID договора по которому осуществляется поставка
- id_owner = @id_owner, -- Владелец товара. (пока = 0, не заполнять)
- wms_status = @wms_status, -- Статус документа из системы WMS
- date_estimated_acceptance = dss.date_estimated_acceptance, -- Планируемая дата приемки
- last_update = dss.time_edit, -- Дата последнего обновления записи
- note = dss.note, -- Комментарий документа
- hash_key = HASHBYTES('SHA2_256',
- CONCAT
- (
- RTRIM(LTRIM(COALESCE(dss.id_key_splitted, ''))), ';',
- RTRIM(LTRIM(COALESCE(dss.id_acceptance_storage, ''))), ';',
- RTRIM(LTRIM(COALESCE(@priority, ''))), ';',
- RTRIM(LTRIM(COALESCE(dss.id_contractor, ''))), ';',
- RTRIM(LTRIM(COALESCE(dss.date_estimated_acceptance, ''))), ';',
- (
- SELECT
- CONCAT(HashData.ConcatenatedRowIds,';', HashData.ConcatenatedRowData)
- FROM
- (
- SELECT
- dssi.id,
- STUFF
- (
- (
- SELECT
- ';' + CAST(dssei.id AS NVARCHAR(MAX))
- FROM dbo.vw_D_Doc_Supplier_Shipment dssi
- INNER JOIN dbo.vw_DE_Doc_Supplier_Shipment_Entry dssei ON dssei.id_doc_supplier_shipment = dssi.id
- WHERE dssi.id = dss.id
- ORDER BY dssei.id ASC -- Если убрать оба ORDER BY - запрос выполняется в 3 раза быстрее
- FOR XML PATH ('')
- ), 1, 1, ''
- ) AS ConcatenatedRowIds,
- STUFF
- (
- (
- SELECT
- ';' + CAST(dssei.id_goods_unit AS NVARCHAR(MAX)) +
- ';' + CAST(1 AS NVARCHAR(MAX)) +
- ';' + CAST(0 AS NVARCHAR(MAX)) +
- ';' + '-' +
- ';' + CAST(dssei.quantity AS NVARCHAR(MAX))
- FROM dbo.vw_D_Doc_Supplier_Shipment dssi
- INNER JOIN dbo.vw_DE_Doc_Supplier_Shipment_Entry dssei ON dssei.id_doc_supplier_shipment = dssi.id
- WHERE dssi.id = dss.id
- ORDER BY dssei.id ASC -- Если убрать оба ORDER BY - запрос выполняется в 3 раза быстрее
- FOR XML PATH ('')
- ), 1, 1, ''
- ) AS ConcatenatedRowData
- FROM dbo.vw_D_Doc_Supplier_Shipment dssi
- INNER JOIN dbo.vw_DE_Doc_Supplier_Shipment_Entry dssei ON dssei.id_doc_supplier_shipment = dssi.id
- WHERE dssi.id = dss.id
- GROUP BY dssi.id
- ) AS HashData
- )
- )
- )
- FROM dbo.vw_D_Doc_Supplier_Shipment dss
- INNER JOIN dbo.vw_S_Abstract_Storage [as] ON dss.id_acceptance_storage = [as].id
- LEFT JOIN dbo.vw_S_Storage s ON s.id = [as].id_storage
- LEFT JOIN dbo.vw_S_Storage_Group sg ON sg.id = [as].id_storage_group
- LEFT JOIN dbo.vw_A_Module m ON m.id = s.id_module
- OR m.id = sg.id_module
- INNER JOIN (
- SELECT
- id_wms_incoming = dsse.id_doc_supplier_shipment, -- Ссылка на шапку
- id_doc_entry = dsse.id, -- ИД строки документа (например, из id таблицы vw_DE_Doc_Supplier_Shipment_Entry)
- id_goods_unit = dsse.id_goods_unit, -- Ключ на справочника номенклатуры
- category = @category, -- Код категории груза в справочнике категорий грузов. Значение по умолчанию: 1 (Норма)
- id_owner = @id_owner, -- Владелец товара. (пока = 0, не заполнять)
- id_category = @id_category, -- Заполнять 0
- lot = @lot, -- Товарная партия или серия. Значение по умолчанию: “-”
- quantity_plan = dsse.quantity, -- Плановое количество к приемке
- quantity_fact = @quantity_fact, -- Фактическое количество к приемке (заполняется после завершения приемки на стороне WMS)
- uom = @uom, -- 0 («Не задано»)
- note = ISNULL(dsse.note, '') -- Комментарии к строке документа – «Примечание к товару». Значение по умолчанию: “” (пусто)
- FROM dbo.vw_DE_Doc_Supplier_Shipment_Entry dsse
- ) AS sse ON sse.id_wms_incoming = dss.id
- WHERE m.id = @id_module_solvo
- AND (dss.id_action_status = @id_action_status_acceptance OR dss.id_action_status = @id_action_status_waiting)
- AND dss.time_edit >= @wms_last_sync_date
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement