Advertisement
Guest User

Untitled

a guest
Dec 11th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 17.20 KB | None | 0 0
  1. USE [Adayroi_TMS]
  2. GO
  3. /****** Object: StoredProcedure [dbo].[APIClient_3PL_Upd_LadingWaitingListClosed_V01] Script Date: 12/12/2017 9:29:03 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. -- =============================================
  9. -- Author: Hoàng Đình Khiêm
  10. -- Create date: 05/10/2015
  11. -- Description: Lưu danh sách vận đơn chờ đóng
  12. -- Author: KhiemHD
  13. -- Create date: 28/02/2017
  14. --Note: Update theo User Story 454245:[TMS] TMS ghi nhận thời gian Min - Max giao hàng từ OMS đổ xuống & thay đổi cách tính thời gian còn lại theo thời gian Min
  15. -- =============================================
  16. ALTER PROCEDURE [dbo].[APIClient_3PL_Upd_LadingWaitingListClosed_V01]
  17. @strXmlDetail NVARCHAR(MAX),
  18. @CurrentUser INT,
  19. @SesstionKey VARCHAR(250),
  20. @Serials NVARCHAR(MAX)
  21. AS
  22. BEGIN
  23. DECLARE @PROC_NAME VARCHAR(250) = OBJECT_NAME(@@PROCID)
  24. --Tạo Table temp
  25. CREATE TABLE #TableOpenXml
  26. (
  27. ReferenceId BIGINT,
  28. LogId BIGINT,
  29. IsAgain BIT,
  30. IsCanceled BIT,
  31. IsCheckSave BIT,
  32. ReasonNameNote NVARCHAR(250),
  33. ReasonId INT,
  34. MethodId INT,
  35. StatusId INT,
  36. DateAgain DATETIME,
  37. DateAgainTo DATETIME
  38. )
  39. CREATE TABLE #TableSerial
  40. (
  41. Id INT,
  42. SoDetailId BIGINT,
  43. SerialNumber VARCHAR(250),
  44. StatusId INT
  45. )
  46.  
  47. BEGIN TRY
  48. EXEC [dbo].[CHECK_SESSION_AND_PERMISSION] @CurrentUser, @SesstionKey, @PROC_NAME
  49.  
  50. BEGIN TRAN T
  51. DECLARE @idoc INT
  52. DECLARE @idoc1 INT
  53. EXEC sp_xml_preparedocument @idoc OUTPUT, @strXmlDetail
  54. EXEC sp_xml_preparedocument @idoc1 OUTPUT, @Serials
  55.  
  56. INSERT INTO #TableOpenXml
  57. (
  58. ReferenceId,
  59. LogId,
  60. IsAgain,
  61. IsCanceled,
  62. IsCheckSave,
  63. ReasonNameNote,
  64. ReasonId,
  65. MethodId,
  66. StatusId,
  67. DateAgain,
  68. DateAgainTo
  69. )
  70. SELECT ReferenceId, LogId, IsAgain, IsCanceled, IsCheckSave, ReasonNameNote, ReasonId, MethodId, StatusId, DateAgain, DateAgainTo
  71. FROM OPENXML (@idoc, '/ArrayOfLadingWaitingListClosed/LadingWaitingListClosed', 8)
  72. WITH
  73. (
  74. ReferenceId BIGINT 'ReferenceId',
  75. LogId BIGINT 'LogId',
  76. IsAgain BIT 'IsAgain',
  77. IsCanceled BIT 'IsCanceled',
  78. IsCheckSave BIT 'IsCheckSave',
  79. ReasonNameNote NVARCHAR(250) 'ReasonNameNote',
  80. ReasonId BIGINT 'ReasonId',
  81. MethodId BIGINT 'MethodId',
  82. StatusId BIGINT 'StatusId',
  83. DateAgain DATETIME 'DateAgain',
  84. DateAgainTo DATETIME 'DateAgainTo'
  85. )
  86. INSERT INTO #TableSerial
  87. (
  88. Id, SoDetailId, SerialNumber, StatusId
  89. )
  90. SELECT Id, SoDetailId, SerialNumber, StatusId
  91. FROM OPENXML (@idoc1, '/ArrayOfSerialInfo/SerialInfo', 8)
  92. WITH
  93. (
  94. Id INT 'Id',
  95. SoDetailId BIGINT 'SoDetailId',
  96. SerialNumber VARCHAR(250) 'SerialNumber',
  97. StatusId INT 'StatusId'
  98. )
  99.  
  100. Declare @tempSoDetail as Table
  101. (
  102. ClientSoId BIGINT,
  103. ClientPoId BIGINT,
  104. SoId BIGINT,
  105. ProductTypeId INT,
  106. SoDetailId BIGINT,
  107. ClientProductId INT,
  108. PackingID BIGINT,
  109. PackingDetailId BIGINT,
  110. Amount INT,
  111. SellPrice DECIMAL(18,4),
  112. SAPReservationNumber NVARCHAR(50),
  113. SAPPONumberInterim NVARCHAR(50),
  114. SAPReservationLineItem NVARCHAR(700)
  115. )
  116. ------------------------------------------------------------------------------------------------------------------------------------
  117. --Update UnitTransport_Log_CreateShippingOrder
  118. UPDATE UnitTransport_Log_CreateShippingOrder
  119. SET
  120. IsAgain = tox.IsAgain,
  121. IsCanceled = tox.IsCanceled,
  122. IsCheckSave = 1,
  123. StatusId = CASE
  124. WHEN tox.IsAgain = 1 THEN 9
  125. WHEN tox.IsCanceled = 1 THEN 8 ELSE utl.StatusId
  126. END,
  127. ReasonName = tox.ReasonNameNote
  128. FROM #TableOpenXml tox INNER JOIN dbo.UnitTransport_Log_CreateShippingOrder utl ON utl.LogId = tox.LogId
  129. WHERE utl.StatusId NOT IN (10, 11, 12) -- Update: 03/11/2016
  130.  
  131. --Giao hàng
  132. IF(EXISTS(SELECT 1 FROM #TableOpenXml WHERE MethodId = 1))
  133. BEGIN
  134. --Update DE_DeliverySlipsDetails
  135. UPDATE DE_DeliverySlipsDetails
  136. SET
  137. IsAgain = tox.IsAgain,
  138. IsCompleted = 0,
  139. IsCanceled = tox.IsCanceled,
  140. QuantityCompleted = 0,
  141. QuantityAgain = CASE WHEN tox.IsAgain = 1 THEN ddsd.Quantity ELSE 0 END,
  142. QuantityCanceled = CASE WHEN tox.IsCanceled = 1 THEN ddsd.Quantity ELSE 0 END,
  143. DateCompleted = NULL,
  144. DateAgain = CASE WHEN tox.IsAgain = 1 THEN tox.DateAgain ELSE NULL END,
  145. DateAgainTo = CASE WHEN tox.IsAgain = 1 THEN tox.DateAgainTo ELSE NULL END,
  146. DateCanceled = CASE WHEN tox.IsCanceled = 1 THEN GETDATE() ELSE NULL END,
  147. ReasonAgain = CASE WHEN tox.IsAgain = 1 THEN tox.ReasonId ELSE 0 END,
  148. ReasonCanceled = CASE WHEN tox.IsCanceled = 1 THEN tox.ReasonId ELSE 0 END,
  149. ModifiedBy = @CurrentUser,
  150. DateModified = GETDATE(),
  151. [Status] = 29,
  152. StatusProcessFor3PL = 73, --Xử lý đơn hủy và hẹn lại từ 3PL
  153. ReasonAgainOrther = CASE WHEN tox.IsAgain = 1 THEN tox.ReasonNameNote ELSE NULL END,
  154. ReasonCanceledOrther = CASE WHEN tox.IsCanceled = 1 THEN tox.ReasonNameNote ELSE NULL END,
  155. DateSaveTemp = CASE WHEN ddsd.DateSaveTemp IS NULL THEN GETDATE() ELSE ddsd.DateSaveTemp END,
  156. Note = tox.ReasonNameNote
  157. FROM
  158. #TableOpenXml tox INNER JOIN dbo.Packing_Detail pd WITH (NOLOCK) ON pd.PackingID = tox.ReferenceId
  159. INNER JOIN dbo.DE_DeliverySlipsDetails ddsd WITH (NOLOCK) ON ddsd.PackingDetailId = pd.PackingDetailId
  160. WHERE tox.MethodId = 1
  161. AND ddsd.Visible = 1
  162.  
  163. --Update SO_Detail
  164.  
  165. UPDATE SO_Detail
  166. SET DeliveryDateFrom = CASE WHEN tox.IsAgain = 1 THEN tox.DateAgainTo ELSE sd.DeliveryDateFrom END,
  167. DeliveryDateTo = CASE WHEN tox.IsAgain = 1 THEN tox.DateAgainTo ELSE sd.DeliveryDateTo END,
  168. TempDeliveryDateFrom = CASE WHEN tox.IsAgain = 1 THEN tox.DateAgain ELSE sd.DeliveryDateFrom END,
  169. IsPushCS = 0,
  170. IsDeliveryAgain = CASE WHEN tox.IsAgain = 1 THEN 1 ELSE 0 END,
  171. SODetailStatusID = CASE
  172. WHEN tox.IsAgain = 1 THEN 7
  173. WHEN tox.IsCanceled = 1 THEN 16 ELSE sd.SODetailStatusID
  174. END,
  175. UserModify = @CurrentUser,
  176. DeliveryFromTimeUpdateTime = GETDATE(),
  177. DeliveryPeriodTime = CASE WHEN tox.IsAgain = 1 THEN (SELECT TOP 1 dpt.Name FROM DeliveryPeriodTime dpt WITH (NOLOCK) WHERE CONVERT(CHAR(8), tox.DateAgain, 108) BETWEEN dpt.FromTime AND dpt.ToTime)
  178. ELSE sd.DeliveryPeriodTime
  179. END
  180.  
  181.  
  182. OUTPUT INSERTED.ClientSoId, INSERTED.ClientPoId, INSERTED.SOId, INSERTED.ProductTypeID, INSERTED.SODetailID, INSERTED.ClientProductId, pd.PackingID, pd.PackingDetailId,
  183. INSERTED.Amount, INSERTED.SellPrice, INSERTED.SAPReservationNumber, INSERTED.SAPPONumberInterim, INSERTED.SAPReservationLineItem
  184. INTO @tempSoDetail (ClientSoId, ClientPoId, SoId, ProductTypeId, SoDetailId, ClientProductId, PackingID, PackingDetailId, Amount, SellPrice, SAPReservationNumber, SAPPONumberInterim, SAPReservationLineItem)
  185.  
  186. FROM #TableOpenXml tox INNER JOIN dbo.Packing_Detail pd WITH (NOLOCK) ON pd.PackingID = tox.ReferenceId
  187. INNER JOIN dbo.SO_Detail sd WITH (NOLOCK) ON pd.SoDetailId = sd.SODetailID
  188. WHERE --sd.SODetailStatusID < 13
  189. sd.Visible = 1
  190. AND tox.MethodId = 1
  191.  
  192. --Update SO_Detail_Serial
  193. UPDATE dbo.SO_Detail_Serial
  194. SET StatusId = ts.StatusId,
  195. RollBackSerial = 0
  196. FROM dbo.SO_Detail_Serial sds INNER JOIN #TableSerial ts ON (ts.SerialNumber = sds.SerialNumber AND ts.SoDetailId = sds.SODetailID)
  197.  
  198. --Update (15/11/2016) đẩy thời gian hẹn lại sang PushCsDateTime
  199. DECLARE @NoteByUser nvarchar(250)
  200. SELECT @NoteByUser = uu.FullName + ' - [' + CAST(uu.UserId AS varchar(50)) + ']' FROM dbo.UM_Users uu WHERE uu.UserId = @CurrentUser
  201.  
  202. INSERT INTO dbo.PushCsDateTime
  203. (
  204. Soid,
  205. Push,
  206. CreateDate,
  207. TmsShippingFrom,
  208. TmsShippingTo,
  209. Note,
  210. CityId,
  211. PoNumber,
  212. ProductItemId,
  213. ProductType,
  214. Quantity,
  215. PhoneNumber,
  216. FailDeliveryReson,
  217. cp.ClientProductId
  218. )
  219. SELECT s.ClientSoId, -- Số SO
  220. 0, -- đã push hay chưa default = 0
  221. GETDATE(),
  222. tox.DateAgain, -- Thời gian hẹn lại từ
  223. tox.DateAgainTo, -- Thời gian hẹn lại đến
  224. @NoteByUser, -- ghi chú
  225. s.DeliveryCityId, -- Thành phố (get theo trạm)
  226. sd.ClientPoId, -- Số PO
  227. cp.ProductItemId,
  228. sd.ProductTypeID, -- Loại hàng
  229. ddsd.Quantity, -- Số lượng hẹn lại
  230. s.CustomerPhone, -- Số dt khách hàng
  231. 0 , -- lý do false - default :0
  232. cp.ClientProductId
  233. FROM #TableOpenXml tox INNER JOIN @tempSoDetail sd ON sd.PackingID = tox.ReferenceId
  234. INNER JOIN dbo.SO s WITH (NOLOCK) ON s.SOID = sd.SoId
  235. INNER JOIN dbo.DE_DeliverySlipsDetails ddsd WITH (NOLOCK) ON ddsd.PackingDetailId = sd.PackingDetailId
  236. INNER JOIN dbo.ClientProduct cp WITH (NOLOCK) ON cp.ClientProductId = sd.ClientProductId
  237. WHERE tox.IsAgain = 1
  238.  
  239. --Update thời gian hẹn lại lại cho PurcharseOrder
  240. UPDATE po
  241. SET DeliveryDateFrom = tox.DateAgainTo,
  242. DeliveryDateTo = tox.DateAgainTo,
  243. DeliveryPolicyType = 2,
  244. TempDeliveryDateFrom = tox.DateAgain,
  245. DeliveryPeriodTime = CASE WHEN tox.IsAgain = 1 THEN ( SELECT TOP 1 dpt.Name
  246. FROM DeliveryPeriodTime dpt WITH (NOLOCK)
  247. WHERE CONVERT( CHAR(8), tox.DateAgain, 108) BETWEEN dpt.FromTime AND dpt.ToTime
  248. )
  249. ELSE po.DeliveryPeriodTime
  250. END
  251. FROM #TableOpenXml tox INNER JOIN @tempSoDetail tsd ON tsd.PackingID = tox.ReferenceId
  252. INNER JOIN dbo.PurchaseOrder po WITH (NOLOCK) ON po.ClientPoId = tsd.ClientPoId
  253. WHERE tox.IsAgain = 1
  254. AND po.POStatusId < 5
  255.  
  256. --Update SO
  257. UPDATE dbo.SO
  258. SET dbo.SO.SOStatusId = ( SELECT st.Id
  259. FROM dbo.SOStatus st WITH (NOLOCK) INNER JOIN
  260. (SELECT MIN(st1.Priority) AS MinPriority
  261. FROM dbo.SO_Detail sd WITH (NOLOCK) INNER JOIN dbo.SOStatus st1 WITH (NOLOCK) ON sd.SODetailStatusID = st1.Id
  262. WHERE sd.ClientSoId = s.ClientSoId AND sd.Visible = 1) ts ON st.Priority = ts.MinPriority)
  263. FROM dbo.SO s WITH (NOLOCK) INNER JOIN @tempSoDetail AS Sml ON Sml.SoId = s.SOID
  264.  
  265. END
  266.  
  267. --GHI LOG
  268. DECLARE @StationId int = 0
  269. SELECT @StationId = uu.SID FROM dbo.UM_Users uu WHERE uu.UserId = @CurrentUser
  270. INSERT INTO Log_Information
  271. (
  272. ObjectTypeId, ObjectId, ActionId, LogDetails, CreatedBy, CreatedDate, UID_AssignTo, OldStatusId, NewStatusId, StationId
  273. )
  274. SELECT 3,
  275. tsd.SoDetailId,
  276. 105,
  277. N'Xử lý vận đơn hủy từ 3PL: Lý do: ' + tox.ReasonNameNote,
  278. @CurrentUser,
  279. GETDATE(),
  280. @CurrentUser,
  281. 7,
  282. CASE
  283. WHEN tox.IsAgain = 1 THEN 7
  284. WHEN tox.IsCanceled = 1 THEN 16 ELSE NULL
  285. END,
  286. @StationId
  287. FROM #TableOpenXml tox INNER JOIN @tempSoDetail tsd ON tsd.PackingID = tox.ReferenceId
  288.  
  289. --Ghi log
  290. INSERT INTO dbo.UnitTransport_Tracking3PLStatus
  291. (
  292. CreatedDate,
  293. QueueId,
  294. MethodId,
  295. ClientSoId,
  296. ReferenceId,
  297. OrderReference,
  298. TPLOrderReference,
  299. OperationStatusId,
  300. OldOrderStatusId,
  301. NewOrderStatusId,
  302. OldMerchantStatusId,
  303. NewMerchantStatusId,
  304. Message
  305. )
  306. SELECT
  307. GETDATE() -- CreatedDate
  308. , utlcso.LogId -- QueueId
  309. , utlcso.MethodId -- MethodId
  310. , isnull(utlcso.AdrClientSoId,0)-- ClientSoId
  311. , utlcso.ReferenceId -- ReferenceId
  312. , utlcso.OrderReference -- OrderReference
  313. , utlcso.UnitTransportOrderCode -- TPLOrderReference
  314. , 0 -- OperationStatusId - int
  315. , CASE
  316. WHEN tox.StatusId = 8 THEN 8
  317. WHEN tox.StatusId = 9 THEN 9 ELSE NULL
  318. END
  319. , CASE
  320. WHEN tox.StatusId = 8 THEN 8
  321. WHEN tox.StatusId = 9 THEN 9 ELSE NULL
  322. END -- NewOrderStatusId - int
  323. , 2 -- OldMerchantStatusId - int
  324. , 2 -- NewMerchantStatusId - int
  325. , N'Xử lý vận đơn hủy từ 3PL -> Cập nhật:' + CASE
  326. WHEN tox.IsAgain = 1 THEN N'Hẹn lại'
  327. WHEN tox.IsCanceled = 1 THEN N'Hủy giao' ELSE NULL
  328. END + N'( Lý do: ' + tox.ReasonNameNote + ' )'
  329. FROM #TableOpenXml tox INNER JOIN dbo.UnitTransport_Log_CreateShippingOrder utlcso ON utlcso.LogId = tox.LogId
  330. WHERE utlcso.StatusId NOT IN (10, 11, 12) -- Update: 03/11/2016
  331.  
  332. --Thêm log cập nhật trạng thái OMS, lưu ý phải tự thêm vào các item phí đối với PO có phí (CPN, GCD)
  333. IF (EXISTS(SELECT 1 FROM @tempSoDetail tsd INNER JOIN dbo.SO s WITH (NOLOCK) ON s.SOID = tsd.SoId
  334. WHERE s.SourceClientId = 1 ))
  335. BEGIN
  336. DECLARE @TblOms AS Oms_UpdateSoDetailStatus
  337. INSERT INTO @TblOms
  338. (
  339. SOID,
  340. PO,
  341. ProductItemId,
  342. Amount,
  343. CurrentStatus,
  344. DeliveryReasonId,
  345. DeliveryNote,
  346. OldStatus,
  347. PriceCustomer,
  348. SAPReservationNumber,
  349. SAPReservationLineItem,
  350. SAPPONumberInterim,
  351. Serials
  352. )
  353. SELECT -->HỦY
  354. tsd.ClientSoId,
  355. tsd.ClientPoId,
  356. cp.ProductItemId,
  357. tsd.Amount,
  358. 33554432, --Hủy
  359. tox.ReasonId,
  360. tox.ReasonNameNote,
  361. CASE WHEN po.DeliveryFlowId <> 2 THEN 256 ELSE 128 END AS OldStatus,
  362. tsd.SellPrice,
  363. tsd.SAPReservationNumber,
  364. tsd.SAPReservationLineItem,
  365. tsd.SAPPONumberInterim,
  366. (
  367. SELECT ts.SerialNumber AS string
  368. FROM #TableSerial ts
  369. WHERE (ts.SodetailId = tsd.SoDetailId OR ts.SoDetailId = sd.SoDetailIdRoot) AND ts.StatusId = 69 AND ISNULL(sd.IsVinIdCard, 0) = 0
  370. FOR XML PATH ('')
  371. ) AS Serials
  372. FROM #TableOpenXml tox INNER JOIN @tempSoDetail tsd ON tsd.PackingID = tox.ReferenceId
  373. INNER JOIN dbo.SO s WITH (NOLOCK) ON s.SOID = tsd.SoId
  374. INNER JOIN dbo.SO_Detail sd WITH (NOLOCK) ON tsd.SoDetailId = sd.SODetailID
  375. LEFT JOIN dbo.ClientProduct cp WITH (NOLOCK) ON cp.ClientProductId = sd.ClientProductId
  376. LEFT JOIN dbo.PurchaseOrder po WITH (NOLOCK) ON po.ClientPoId = tsd.ClientPoId
  377. WHERE tox.IsCanceled = 1
  378. AND s.SourceClientId = 1
  379. UNION ALL
  380. SELECT -->HẸN LẠI
  381. tsd.ClientSoId,
  382. tsd.ClientPoId,
  383. cp.ProductItemId,
  384. tsd.Amount,
  385. CASE WHEN po.DeliveryFlowId = 2 THEN 128 ELSE 256 END AS CurrentStatus,
  386. tox.ReasonId,
  387. tox.ReasonNameNote,
  388. CASE WHEN po.DeliveryFlowId <> 2 THEN 256 ELSE 128 END AS OldStatus,
  389. tsd.SellPrice,
  390. tsd.SAPReservationNumber,
  391. tsd.SAPReservationLineItem,
  392. tsd.SAPPONumberInterim,
  393. (
  394. SELECT ts.SerialNumber AS string
  395. FROM #TableSerial ts
  396. WHERE (ts.SodetailId = tsd.SoDetailId OR ts.SoDetailId = sd.SoDetailIdRoot) AND ts.StatusId = 68 AND ISNULL(sd.IsVinIdCard, 0) = 0
  397. FOR XML PATH ('')
  398. ) AS Serials
  399. FROM #TableOpenXml tox INNER JOIN @tempSoDetail tsd ON tsd.PackingID = tox.ReferenceId
  400. INNER JOIN dbo.SO s WITH (NOLOCK) ON s.SOID = tsd.SoId
  401. INNER JOIN dbo.SO_Detail sd WITH (NOLOCK) ON tsd.SoDetailId = sd.SODetailID
  402. LEFT JOIN dbo.ClientProduct cp WITH (NOLOCK) ON cp.ClientProductId = sd.ClientProductId
  403. LEFT JOIN dbo.PurchaseOrder po WITH (NOLOCK) ON po.ClientPoId = tsd.ClientPoId
  404. WHERE tox.IsAgain = 1
  405. AND s.SourceClientId = 1
  406.  
  407. EXEC dbo.APIClient_OMS_CreateLogUpdateSoDetails_V01 @CurrentUser, @SesstionKey, @TblOms
  408. END
  409.  
  410. --Nếu đơn hàng có hẹn lại thì insert đơn hàng vào bảng SoNotAllowAutoCall để chặn không cho gọi xác nhận giao hàng.
  411. IF (EXISTS(SELECT 1 FROM #TableOpenXml tox WHERE tox.IsAgain = 1))
  412. BEGIN
  413. INSERT INTO dbo.SoNotAllowAutoCall
  414. (
  415. ClientSoId, CreatedBy, ReasonBlockId
  416. )
  417. SELECT DISTINCT
  418. tsd.ClientSoId, -- ClientSoId - bigint
  419. @CurrentUser, -- CreatedBy - int
  420. 2 --Thay đổi leadtime
  421. FROM @tempSoDetail tsd INNER JOIN #TableOpenXml tox ON tox.ReferenceId = tsd.PackingID
  422. WHERE tox.IsAgain = 1
  423. AND NOT EXISTS (
  424. SELECT TOP 1 1
  425. FROM SoNotAllowAutoCall sna WITH (NOLOCK)
  426. WHERE sna.ClientSoId = tsd.ClientSoId AND sna.Visible = 1
  427. )
  428. END
  429.  
  430. EXEC sp_xml_removedocument @idoc
  431. EXEC sp_xml_removedocument @idoc1
  432. COMMIT TRAN T
  433. SELECT 1 AS IsSuccess, 'Success' AS ResponseMessage
  434. END TRY
  435. BEGIN CATCH
  436. SELECT 0 AS IsSuccess, N'Lỗi rồi.' AS ResponseMessage;
  437. THROW;
  438. END CATCH
  439. DROP TABLE #TableSerial
  440. DROP TABLE #TableOpenXml
  441. END
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement