· 9 years ago · Nov 03, 2016, 08:40 AM
1USE [Adayroi_TMS]
2GO
3/****** Object: StoredProcedure [dbo].[APIClient_PurchaseOrder_ChangeOrderType_V02] Script Date: 11/3/2016 2:19:21 PM ******/
4SET ANSI_NULLS ON
5GO
6SET QUOTED_IDENTIFIER ON
7GO
8--====================================================================================
9-- Entity Name: [APIClient_PurchaseOrder_ChangeOrderType_V02]
10-- Author: TRẦN AN BÌNH
11-- Create date: 15/12/2014 8:32:27 PM
12-- Description: Äá»”I LUá»’N GIAO HÀNG CỦA ÄÆ N HÀNG
13-- ================================================================================
14ALTER PROCEDURE [dbo].[APIClient_PurchaseOrder_ChangeOrderType_V02]
15(
16 @Poid nvarchar(max),
17 @userId int,
18 @sessionkey nvarchar(200),
19 @currentstatus int,
20 @newStatus int
21)
22AS
23BEGIN
24 DECLARE @result BIT = 1;
25 DECLARE @ResponseMessage NVARCHAR(MAX) = N'';
26 DECLARE @PROC_NAME VARCHAR(250) = OBJECT_NAME(@@PROCID)
27 EXEC [dbo].[CHECK_SESSION_AND_PERMISSION] @userId, @sessionkey, @PROC_NAME
28 DECLARE @PoTable TABLE
29 (
30 PoId bigint,
31 DeliveryFlowId int,
32 Soid bigint,
33 TypeChange int
34 )
35 INSERT INTO @PoTable
36 ( PoId,
37 DeliveryFlowId,
38 Soid,
39 TypeChange
40 )
41 SELECT DISTINCT
42 [value] ,
43 po.DeliveryFlowId,
44 po.SoId,
45 CASE
46 WHEN cm.MerchantId =2282 AND (SELECT Count(*) FROM dbo.PurchaseOrder po2 WITH(NOLOCK) WHERE po2.SoId = po.SoId) = 1 THEN 1
47 --WHEN cm.MerchantId =2282 AND (SELECT Count(*) FROM dbo.PurchaseOrder po2 WITH(NOLOCK) WHERE po2.SoId = po.SoId) > 1 THEN 2
48 ELSE 0
49 END
50 FROM SplitListToBIGINT(@Poid, ',') AS Poid
51 INNER JOIN dbo.PurchaseOrder po WITH(NOLOCK) ON po.PoId = PoId.[value]
52 INNER JOIN dbo.ClientMerchantWarehouse cmw WITH(NOLOCK) ON cmw.ClientMerchantWarehouseId = po.ClientMerchantWarehouseId
53 INNER JOIN dbo.ClientMerchant cm WITH(NOLOCK) ON cm.ClientMerchantId = cmw.ClientMerchantId
54
55 IF EXISTS (SELECT 1 FROM dbo.SO_Detail sd WITH(NOLOCK)
56 INNER JOIN @PoTable rs ON rs.PoId = sd.ClientPoId
57 WHERE sd.SODetailStatusID > 1
58 )
59 BEGIN
60 SET @ResponseMessage = N'ÄÆ¡n hà ng đã được xá» lý hoặc đã nháºp kho';
61 SET @result = 0;
62
63 SELECT @result AS IsSuccess, @ResponseMessage AS ResponseMessage
64 RETURN
65 END
66 IF EXISTS (SELECT ClientPoId FROM PurchaseOrder po WITH(NOLOCK)
67 INNER JOIN @PoTable rs ON rs.PoId = po.ClientPoId
68 WHERE po.POStatusId = 4
69 )
70 BEGIN
71 SET @result = 0;
72 SET @ResponseMessage = N'ÄÆ¡n hà ng đã được nháºp kho';
73
74 SELECT @result AS IsSuccess, @ResponseMessage AS ResponseMessage
75 RETURN
76 END
77 IF( EXISTS (
78 SELECT TOP 1 1 FROM PurchaseOrder po WITH(NOLOCK)
79 INNER JOIN @PoTable rs ON rs.PoId = po.ClientPoId
80 INNER JOIN dbo.SO_Detail sd WITH(NOLOCK) ON sd.ClientPoId = po.ClientPoId
81 WHERE (sd.CrCode <> '' OR sd.CrCodeApply <> '')
82 )
83 )
84 BEGIN
85 SET @result = 0;
86 SET @ResponseMessage = N'ÄÆ¡n hà ng Cart rule không cho chuyển luồng';
87 SELECT @result AS IsSuccess, @ResponseMessage AS ResponseMessage
88 RETURN
89 END
90 UPDATE PurchaseOrder
91 SET
92 DeliveryFlowId = CASE
93 WHEN PO.DeliveryFlowId = 4 THEN 1
94 WHEN PO.DeliveryFlowId = 1 THEN 4
95 WHEN PO.DeliveryFlowId = 2 THEN 3
96 WHEN PO.DeliveryFlowId = 3 THEN 2
97 END,
98 SID_Destination = CASE WHEN lpo.TypeChange = 0 THEN
99 CASE
100 WHEN PO.DeliveryFlowId = 4 THEN PO.SID_Tally
101 WHEN PO.DeliveryFlowId = 1 THEN s.SID_Destination
102 WHEN PO.DeliveryFlowId = 2 THEN s.SID_Destination
103 WHEN PO.DeliveryFlowId = 3 THEN PO.SID_Tally
104 END
105 ELSE PO.SID_Destination
106 END
107 --select CM.IsSuperMarket , PO.DeliveryFlowId
108 FROM PurchaseOrder PO WITH(NOLOCK)
109 INNER JOIN @PoTable lpo ON lpo.PoId = PO.PoId
110 INNER JOIN ClientMerchantWarehouse CMW WITH(NOLOCK) ON PO.ClientMerchantWarehouseId= CMW.ClientMerchantWarehouseId
111 INNER JOIN ClientMerchant CM WITH(NOLOCK) ON CMW.ClientMerchantId = CM.ClientMerchantId
112 INNER JOIN SO s WITH(NOLOCK) ON s.SOID = PO.SoId
113 WHERE
114 PO.POStatusId = 1
115 AND PO.DeliveryFlowId = @currentstatus
116 --if(@@rowcount > 0)
117 -- BEGIN
118 -- SET @result=1;
119 -- END
120 --WHERE EXISTS (SELECT 1 FROM PurchaseOrder WHERE PoId= @Poid AND ClientMerchantWarehouseId = CMW.ClientMerchantWarehouseId)
121 --- cáºp nháºp loại PO
122 UPDATE PurchaseOrder
123 SET
124 DeliveryCaseId = CASE
125 WHEN ((sta.CityID = sde.CityID) AND (sta.SID = sde.SID)) AND po.DeliveryFlowId IN (3,4) THEN 3
126 WHEN ((sta.CityID = sde.CityID) AND (sta.SID = sde.SID)) AND NOT po.DeliveryFlowId IN (3,4) THEN po.DeliveryFlowId
127 WHEN ((sta.CityID = sde.CityID) AND (sta.SID <> sde.SID)) THEN 4 -- Trung chuyển trạm giao nháºn ná»™i vùng
128 WHEN ((sta.CityID <> sde.CityID) AND (sta.SID <> sde.SID)) THEN 6 -- Trung chuyển đến trung tâm giao nháºn trái vùng
129 ELSE
130 0
131 END
132 FROM PurchaseOrder PO WITH(NOLOCK)
133 INNER JOIN @PoTable lpo ON lpo.PoId = PO.PoId
134 INNER JOIN dbo.Stations sta WITH(NOLOCK) ON po.SID_Tally = sta.SID
135 INNER JOIN dbo.Stations sde WITH(Nolock) ON po.SID_Destination = sde.SID
136
137 SET @ResponseMessage = N'Äổi thà nh công luồng đơn hà ng';
138 --Insert Log_Information ActionType PO
139 INSERT INTO [dbo].[Log_Information]
140 ([ObjectTypeId]
141 ,[ObjectId]
142 ,[ActionId]
143 ,[LogDetails]
144 ,[CreatedBy]
145 ,[CreatedDate]
146 ,[UID_AssignTo]
147 ,[OldStatusId]
148 ,[NewStatusId])
149 SELECT DISTINCT 2, sd.SODetailID, 22,
150 CASE
151 WHEN @newStatus = 2 THEN N'Äổi thà nh công luồng đơn hà ng thẳng thưá»ng'
152 WHEN @newStatus = 3 THEN N'Äổi thà nh công luồng đơn hà ng nháºp trạm'
153 END,
154 @userId, GETDATE(), 0, @currentstatus,@newStatus
155 FROM @PoTable sltb
156 INNER JOIN dbo.SO_Detail sd WITH(NOLOCK) ON sd.PoId = sltb.PoId
157 --where PO.DeliveryFlowId = @newStatus
158
159 --ELSE IF (@result = 0)
160 -- BEGIN
161 -- SET @result = 0
162 -- SET @ResponseMessage = N'đơn hà ng đã được đổi luồng hoặc đã nháºp kho';
163 -- END
164 -- IF(@result = 2)
165 -- BEGIN
166 -- SET @result = 0
167 -- SET @ResponseMessage = N'đơn hà ng đã nháºp kho';
168 -- END
169 SELECT @result AS IsSuccess, @ResponseMessage AS ResponseMessage;
170 --SELECT @result AS IsSuccess, @ResponseMessage AS ResponseMessage;
171END