- plsql
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 CREATE OR REPLACE PROCEDURE BMSSA.Usp_Neworderextract_All (sBBID IN VARCHAR2,ordType IN VARCHAR2,strFrDate IN VARCHAR2,strToDate IN VARCHAR2) AS 2 3 intRSQty INTEGER(10); 4 intManuSOH INTEGER(10); 5 intNettOrd INTEGER(10); 6 intCTDUS INTEGER(10); 7 intRemTrend INTEGER(10); 8 intHQOH INTEGER(10); 9 intKKOH INTEGER(10); 10 intKCHOH INTEGER(10); 11 intRecmdHQQty INTEGER(10); 12 intTransferHQQty INTEGER(10); 13 intPOQty INTEGER(10); 14 intRS INTEGER(10); 15 16 intLatestIT INTEGER(10); 17 strLineNum VARCHAR2(15); 18 19 strSql VARCHAR2(1000); 20 strApCode VARCHAR2(15); 21 strETADate DATE; 22 23 fRate NUMBER := 0.0050; 24 BizCount NUMBER := 0; 25 NBCount NUMBER := 0; 26 27 28 29 CURSOR Main_LOOP (BBID IN VARCHAR2 ) IS 30 31 SELECT 'AP'||SUBSTR(A.Requestno,1,2) ApCenter,' '||A.storeid storeid,A.requestdate,A.requestno,B.brochurecampaign Camp, 32 Y.ITEMGROUPID BUSSCAT, 33 B.FSC ,Y.ItemName description, 34 DECODE(NVL(D.FSC,0),0,0,1)ControlTag, 35 B.OnHandQty,B.InTransitQty,B.requestqty AddOrderQty, 36 B.OnHandQty+B.InTransitQty+B.requestqty TotalNeed, 37 DECODE(A.REASONCODE,'1','CO','2','AO','PCM') CONFORD, 38 NVL(F.testtestailtomonitor,0) testtestailtomonitor 39 FROM drmpos.storeinvrequest@drmprod A, 40 drmpos.storeinvrequestdetail@drmprod B,testMANUBLOCKFSC D,Inventtable Y, 41 (SELECT * FROM testCMHEADER WHERE dataareaid='835') F 42 WHERE 43 Y.Dataareaid='835' 44 AND A.requestNo = B.requestNo 45 AND A.status in (0,2) 46 AND B.FSC=Y.ITEMID 47 AND B.FSC =D.FSC(+) 48 AND B.FSC=F.ITEMID (+) 49 AND ' '||A.storeid = sBBID 50 AND A.reasoncode = ordtype 51 --AND requestdate between to_date(strFrDate,'YYYYMMDD') and to_date(strToDate,'YYYYMMDD') ; 52 AND requestdate between to_date(strFrDate,'YYYY/MM/DD') and to_date(strToDate,'YYYY/MM/DD') ; 53 rMain Main_Loop%ROWTYPE; 54 55 56 CURSOR Main2_LOOP (BBID IN VARCHAR2 ) IS 57 58 59 SELECT 'AP'||SUBSTR(A.REquestno,1,2) ApCenter,A.requestno,B.brochurecampaign Camp, 60 Y.ITEMGROUPID BUSSCAT, 61 C.testbrochurelinenum linenum,B.FSC ,C.testinvoicedesc description, 62 DECODE(NVL(D.FSC,0),0,1,0)ControlTag, 63 B.OnHandQty,B.InTransitQty,B.requestqty AddOrderQty, 64 B.OnHandQty+B.InTransitQty+B.requestqty TotalNeed, 65 NVL(E.AddOrdQty,0) LatestIT, 66 DECODE(A.REASONCODE,'1','CO','2','AO','PCM') CONFORD, 67 --A.REASONCODE CONFORD, 68 NVL(F.testtestailtomonitor,0)testtestailtomonitor 69 FROM drmpos.storeinvrequest@drmprod A, 70 drmpos.storeinvrequestdetail@drmprod B,PRICEDISCTABLE C ,testMANUBLOCKFSC D,Inventtable Y, 71 (SELECT A.CUSTACCOUNT,B.ITEMID,SUM(B.testQUANTITY)AddOrdQty 72 FROM 73 testORDERTRACKING A,testCARTONITEM B,testCARTONPICK C 74 WHERE A.dataareaid='835' 75 AND B.dataareaid='835' 76 AND C.dataareaid='835' 77 AND A.SALESID=C.SALESID 78 AND B.testPICKID=C.testPICKID 79 AND A.custaccount= BBID 80 AND A.testorderstatus='CARRIER' 81 GROUP BY A.CUSTACCOUNT,B.ITEMID 82 )E,(SELECT * FROM testCMHEADER WHERE dataareaid='835') F 83 WHERE 84 C.Dataareaid='835' 85 AND Y.Dataareaid='835' 86 AND ' '||A.storeid=BBID 87 AND A.requestNo = B.requestNo 88 AND B.FSC=C.itemrelation 89 AND TO_CHAR(B.BROCHURECAMPAIGN)=C.testCAMPAIGNID 90 AND C.ACCOUNTRELATION='WM' 91 AND C.testbrochuretype='B' 92 AND A.status in (0,2) 93 AND B.FSC=Y.ITEMID 94 AND B.FSC =D.FSC(+) 95 AND B.FSC =E.ITEMID(+) 96 AND B.FSC=F.ITEMID (+) ; 97 98 rMain2 Main2_Loop%ROWTYPE; 99 100 101 ---Get BrochLineNum 102 CURSOR RS_LineNum (camp IN VARCHAR2,cItemID IN VARCHAR2 ) IS 103 104 Select testbrochurelinenum linenum 105 from PRICEDISCTABLE where dataareaid='835' and testcampaignid=camp and accountrelation='WM' 106 and itemrelation=cItemID 107 and rownum < 2 108 order by rownum; 109 110 rLineNum RS_LineNum%ROWTYPE; 111 112 113 --- Latest Intransit 114 CURSOR RS_LatestIT (BBID IN VARCHAR2,cItemID IN VARCHAR2 ) IS 115 116 SELECT A.CUSTACCOUNT,B.ITEMID,SUM(B.testQUANTITY)LATESTIT 117 FROM 118 testORDERTRACKING A,testCARTONITEM B,testCARTONPICK C 119 WHERE A.dataareaid='835' 120 AND B.dataareaid='835' 121 AND C.dataareaid='835' 122 AND A.SALESID=C.SALESID 123 AND B.testPICKID=C.testPICKID 124 AND A.custaccount= BBID 125 AND ITEMID=cItemID 126 AND A.testorderstatus='CARRIER' 127 GROUP BY A.CUSTACCOUNT,B.ITEMID; 128 129 rLatestIT RS_LatestIT%ROWTYPE; 130 131 132 ---To get RS and ManuSOH-- 133 CURSOR RS_ManuSOH (cAPcenter IN VARCHAR2,camp IN VARCHAR2,cItemID IN VARCHAR2 ) IS 134 135 SELECT A.ITEMID,A.TRENDQTY BizShare,B.testSTOCKONHAND,NVL(C.testQTY,0) UNITSOLD,NVL(D.TRENDQTY,0)TRENDQTY 136 FROM testABBAUTOORDERSPLIT A, testMANUSOH B, 137 testMANUUNITSOLDTMP C, testmanutrend_new D 138 WHERE A.ITEMID=B.ITEMID 139 AND A.ITEMID=C.testFSC(+) 140 AND A.APCENTER=B.testAPSCENTER 141 AND A.APCENTER=C.testAPCENTER(+) 142 AND A.APCENTER=D.APCENTER(+) 143 AND A.ITEMID=D.ITEMID(+) 144 AND A.testSELLYEARCAMP=D.testSELLYEARCAMP(+) 145 AND A.ITEMID=cItemID 146 AND A.testsellyearcamp = camp 147 AND A.APCENTER= cAPcenter; 148 149 r_RSManuSOH RS_ManuSOH%ROWTYPE; 150 151 152 ---- Picking Qty --- OH withour carrier status 153 154 CURSOR RS_PickQty (cItemID IN VARCHAR2,BBID IN VARCHAR2 ) IS 155 156 SELECT A.CUSTACCOUNT,B.ITEMID,SUM(B.testQUANTITY)PickQty 157 FROM 158 testORDERTRACKING A,testCARTONITEM B,testCARTONPICK C 159 WHERE A.dataareaid='835' 160 AND B.dataareaid='835' 161 AND C.dataareaid='835' 162 AND A.SALESID=C.SALESID 163 AND B.testPICKID=C.testPICKID 164 AND A.custaccount= BBID 165 AND B.ITEMID = cItemID 166 AND A.testorderstatus in ('CARTONED','SHIPPING','TRANSPRT') 167 GROUP BY A.CUSTACCOUNT,B.ITEMID; 168 169 r_PickQty RS_PickQty%ROWTYPE; 170 171 -- Cursor HQ,RWKK,RWKCH OnHand 172 CURSOR RS_HQOH (cItemID IN VARCHAR2 ) IS 173 /* 174 select itemid,sum(testailphysical) HQOH from inventsum where dataareaid='835' 175 and inventdimid in (Select inventdimid from inventdim where inventlocationid in ('testN','SHP','BIN')) 176 and itemid <> chr(2) 177 and itemid=cItemID 178 group by itemid; 179 */ 180 181 select itemid, ( NVL(sum(decode(B.inventlocationid,'testN',A.testailphysical)),0) + NVL(sum(decode(B.inventlocationid,'SHP',A.testailphysical)),0) + NVL(sum(decode(B.inventlocationid,'BIN',A.testailphysical)),0) ) HQOH, 182 NVL(sum(decode(B.inventlocationid,'0001000',A.testailphysical)),0) KKOH, 183 NVL(sum(decode(B.inventlocationid,'0002000',A.testailphysical)),0) KCHOH 184 from inventsum A ,InventDim B where 185 A.dataareaid='835' and B.dataareaid='835' 186 and A.inventdimid =B.inventdimid 187 and B.inventlocationid in ('testN','SHP','BIN','0001000','0002000') 188 and A.itemid <> chr(2) 189 and A.itemid=cItemID 190 group by itemid; 191 192 r_HQOH RS_HQOH%ROWTYPE; 193 194 195 --&&&&&&&&&&&&&&&&&&&&&&&GEN(0) Cursor for BizShare and NonBeauty &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 196 197 CURSOR BizShare (parmAPCode IN VARCHAR2, parmFSC IN VARCHAR2) IS --- Loop ITEM,LOC, for Item exists in LL for Curr and BackCpg 198 199 Select count(1) bizCnt,APCODE,testFSC,RATE from testManuBizShare 200 where APCODE=parmAPCode and testFSC= parmFSC 201 group by APCODE,testFSC,RATE; 202 203 204 CURSOR NonBty (parmAPCode IN VARCHAR2, parmBuss IN VARCHAR2) IS --- Loop ITEM,LOC, for Item exists in LL for Curr and BackCpg 205 206 Select count(1) nbCnt,APCODE,Buss,RATE from testManuNonBeauty 207 where APCODE=parmAPCode and Buss= parmBuss 208 group by APCODE,Buss,RATE; 209 210 211 --&&&&&&&&&&&&&&&&&&&&&&&GEN(0) Cursor for BizShare and NonBeauty &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 212 213 214 215 216 --Get PODate,Qty 217 218 CURSOR RS_PO (cItemID IN VARCHAR2 ) IS 219 Select sum(qtyordered) POQty,trunc(min(deliverydate)) PODate from PurchLine where dataareaid='835' 220 and deliverydate > trunc(sysdate -14) 221 and purchstatus <> '2' 222 and itemid=cItemID 223 and deliverydate in ( 224 Select min(deliverydate) 225 from PurchLine where dataareaid='835' 226 and deliverydate > trunc(sysdate -14) 227 and purchstatus <> '2' 228 and itemid=cItemID); 229 230 r_PO RS_PO%ROWTYPE; 231 232 BEGIN 233 234 235 236 strSql := 'INSERT INTO testABBADDORDER_NEW (APCENTER, REQUESTNO, CAMP, LINENUM, FSC,' || 237 ' DESCRIPTION, CONTROLTAG, ONHANDQTY, INTRANSITQTY, ADDORDERQTY ,'|| --,' || 238 ' TOTALNEED, MANUSOH,LATESTIT, RSQTY, NETTORD ,' || 239 ' CAMPBZSHARE, US,' || 240 'RTREND, RECHQQTY,'|| 241 'TRANSHQ, TRANSKK, TRANSKH, ' || 242 'CONFORD,HQCMF_OH, SBKK_OH, SBKH_OH, REMARK, ' || 243 'FUTURE_PO , PO_ETA ,STOREID,REQUESTDATE) ' || 244 ' VALUES (:1, :2, :3, :4, :5, ' || 245 ' :6, :7, :8, :9, :10 ,' || 246 ' :11, :12, :13 , :14, :15 , ' || 247 ' :16, :17 ,'|| 248 ' :18, :19, '|| 249 ':20, :21, :22,'|| 250 ' :23, :24, :25, :26, :27, ' || 251 ':28 , :29, :30,:31) '; 252 253 254 255 DELETE FROM testABBADDORDER_NEW ; 256 COMMIT; 257 258 FOR rMain IN Main_Loop(sBBID) LOOP 259 260 intRecmdHQQty := 0 ; 261 intTransferHQQty := 0 ; 262 intHQOH := 0 ; 263 intRemTrend := 0 ; 264 intRS := 0; 265 intNettOrd := 0; 266 intPOQty := 0; 267 intLatestIT := 0; 268 strLineNum :=0000 ; 269 270 --BrochLineNum 271 272 FOR r_LineNum IN RS_LineNum(rmain.camp,rmain.FSC) LOOP 273 274 strLineNum := r_LineNum.LineNum; 275 276 END LOOP; 277 278 --Latest Intransit 279 280 FOR rLatestIT IN RS_LatestIT(rmain.StoreID,rmain.FSC) LOOP 281 282 intLatestIT := rLatestIT.LatestIT; 283 284 END LOOP; 285 286 287 FOR r_RSManuSOH IN RS_ManuSOH(rmain.apcenter, rmain.Camp,rmain.FSC) LOOP 288 289 intRSQty := r_RSManuSOH.BizShare; --CampBizShare 290 intManuSOH := r_RSManuSOH.testSTOCKONHAND; 291 intCTDUS := r_RSManuSOH.UNITSOLD; 292 293 --intNettOrd := (rMain.INTRANSITQTY - rMain.LATESTIT - intRSQty )- rMain.ADDORDERQTY; 294 295 intRemTrend := r_RSManuSOH.TRENDQTY - r_RSManuSOH.UNITSOLD ; 296 297 END LOOP; 298 299 FOR r_HQOH IN RS_HQOH(rmain.FSC) LOOP 300 301 intHQOH := r_HQOH.HQOH; 302 intKKOH := r_HQOH.KKOH; 303 intKCHOH := r_HQOH.KCHOH; 304 305 END LOOP; 306 307 308 309 --RS Qty ( Pick Qty) 310 311 FOR r_PickQty IN RS_PickQty(rmain.FSC,sBBID) LOOP 312 313 intRS := r_PickQty.PickQty; 314 315 END LOOP; 316 317 --Nett Order 318 -- intNettOrd := (rMain.INTRANSITQTY - rMain.LATESTIT - intRS )- rMain.ADDORDERQTY; 319 intNettOrd := rMain.ADDORDERQTY + rMain.INTRANSITQTY - intLatestIT - intRS ; -- latest revision by sob April 18 2013 320 321 -- Recommended HQ Qty 322 --intRecmdHQQty := intRSQty * intHQOH; 323 324 strApCode := rMain.APCENTER ; 325 326 327 BizCount := 0; 328 ---Lookup in LOCFSC (BizShare) 329 FOR rBizShare IN BizShare (strApCode, rmain.FSC) LOOP 330 331 BizCount := rBizShare.bizCnt ; 332 333 334 intRecmdHQQty := ROUND(intHQOH * rBizShare.Rate ) ; 335 BizCount := 1; 336 337 338 END LOOP; -- Biz Share 339 340 341 IF BizCount <> 1 THEN 342 343 NBCount := 0; 344 345 FOR rNonBty IN NonBty (strApCode,rmain.BUSSCAT) LOOP 346 347 NBCount := rNonBty.nbCnt; 348 349 intRecmdHQQty := ROUND(intHQOH * rNonBty.Rate) ; 350 NBCount := 1; 351 352 END LOOP; 353 354 END IF; 355 ---Fixed Rate 356 357 IF ( NBCount=0 AND BizCount=0 ) THEN 358 359 intRecmdHQQty := ROUND(intHQOH * fRate) ; 360 361 END IF; 362 363 364 365 366 367 if (intRecmdHQQty < intNettOrd) then 368 369 intTransferHQQty := intRecmdHQQty; 370 371 else 372 373 intTransferHQQty := intNettOrd; 374 end if; 375 376 377 378 379 --- PO date and Qty 380 FOR r_PO IN RS_PO(rmain.FSC) LOOP 381 382 intPOQty := r_PO.POQty; 383 strETADate := r_PO.PODate; 384 385 386 END LOOP; 387 388 BEGIN 389 390 EXECUTE IMMEDIATE strSql USING 391 rMain.APCENTER, rMain.REQUESTNO, rMain.CAMP, strLineNum, rMain.FSC, 392 rMain.DESCRIPTION, rMain.CONTROLTAG,rMain.ONHANDQTY, rMain.INTRANSITQTY, rMain.ADDORDERQTY , 393 rMain.TOTALNEED, intManuSOH,intLatestIT, intRS, intNettOrd, --RSQty = Picking (Ordertracking not equal to Carrier) 394 intRSQty,intCTDUS, --intRSQty actually CampBizbShare 395 intRemTrend,intRecmdHQQty, 396 '','','', -- 20,21,22 397 rMain.CONFORD,rMain.testtestailtomonitor,intKKOH,intKCHOH,'', -- 23,24,25,26,27 398 intPOQty, strETADate, rMain.storeid,rMain.requestdate; 399 400 EXCEPTION 401 WHEN OTHERS THEN 402 RAISE_APPLICATION_ERROR('-20050', 'SQL: ' || strSql || ' ' || 'OrderNo: ' || rMain.REQUESTNO || 403 ' Error: ' || SQLERRM ); 404 405 END; 406 407 END LOOP; 408 409 410 END; 411 /
- tsql
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 2 IF EXISTS(SELECT 1 FROM SYS.types AS t WHERE t.name='UDT_Usp_Neworderextract_All_ML') 3 DROP TYPE dbo.UDT_Usp_Neworderextract_All_ML 4 GO 5 CREATE TYPE dbo.UDT_Usp_Neworderextract_All_ML AS TABLE 6 ( ID BIGINT , 7 ApCenter NVARCHAR(5), 8 storeid NVARCHAR(20), 9 requestdate DATE, 10 requestno NVARCHAR(20), 11 Camp NVARCHAR(20), 12 BUSSCAT NVARCHAR(20), 13 FSC NVARCHAR(20), 14 [DESCRIPTION] NVARCHAR(20), 15 ControlTag NVARCHAR(5), 16 OnHandQty NUMERIC(30, 12), 17 InTransitQty NUMERIC(30, 12), 18 AddOrderQty NUMERIC(30, 12), 19 TotalNeed NUMERIC(30, 12), 20 CONFORD NVARCHAR(5), 21 testtestailtomonitor NUMERIC(30, 12) 22 PRIMARY KEY CLUSTERED(ID) 23 ) 24 GO 25 IF object_id('Usp_Neworderextract_All') IS NOT NULL 26 BEGIN 27 PRINT 'Dropping procedure Usp_Neworderextract_All' 28 DROP PROCEDURE [Usp_Neworderextract_All] 29 IF @@ERROR = 0 PRINT 'Procedure Usp_Neworderextract_All dropped' 30 END 31 go 32 33 CREATE PROCEDURE [Usp_Neworderextract_All] 34 (@SBBID NVARCHAR(20),@ordType NVARCHAR(20),@strFrDate DATE,@strToDate DATE) 35 AS 36 BEGIN 37 SET NOCOUNT ON; 38 DECLARE @intRSQty INT, 39 @intManuSOH INT, 40 @intNettOrd INT, 41 @intCTDUS INT, 42 @intRemTrend INT, 43 @intHQOH INT, 44 @intKKOH INT, 45 @intKCHOH INT, 46 @intRecmdHQQty INT, 47 @intTransferHQQty INT, 48 @intPOQty INT, 49 @intRS INT, 50 @intLatestIT INT, 51 @strLineNum NVARCHAR(15), 52 @strSql NVARCHAR(2000), 53 @PARAMS nvarchar(500), 54 @strApCode NVARCHAR(15), 55 @strETADate DATE, 56 @fRate NUMERIC = 0.0050, 57 @BizCount NUMERIC = 0, 58 @NBCount NUMERIC = 0 , 59 @ML_SQL NVARCHAR(1000), 60 @ML_PARAM NVARCHAR(100), 61 @ML_ROWID NUMERIC(10) = 1, 62 @ML_MAX NUMERIC(10) = 0, 63 @ML_RECORD UDT_Usp_Neworderextract_All_ML, 64 @ML_CURSOR UDT_Usp_Neworderextract_All_ML 65 /*BEGIN TRY*/ 66 BEGIN TRY 67 SET @strSql = N'INSERT INTO testABBADDORDER_NEW( APCENTER,REQUESTNO,CAMP,LINENUM,FSC,[DESCRIPTION], ' + char(10) 68 + N' CONTROLTAG,ONHANDQTY,INTRANSITQTY,ADDORDERQTY,TOTALNEED,MANUSOH,LATESTIT, ' + char(10) 69 + N' RSQTY,NETTORD,CAMPBZSHARE,US,RTREND,RECHQQTY,TRANSHQ,TRANSKK,TRANSKH, ' + char(10) 70 + N' CONFORD,HQCMF_OH,SBKK_OH,SBKH_OH,REMARK,FUTURE_PO,PO_ETA,STOREID, ' + char(10) 71 + N' REQUESTDATE) ' + char(10) 72 + N' SELECT rMain.APCENTER,rMain.REQUESTNO,rMain.CAMP,@strLineNum,rMain.FSC,rMain.[DESCRIPTION], ' + char(10) 73 + N' rMain.CONTROLTAG,rMain.ONHANDQTY,rMain.INTRANSITQTY,rMain.ADDORDERQTY, ' + char(10) 74 + N' rMain.TOTALNEED,@intManuSOH,@intLatestIT,@intRS,@intNettOrd,@intRSQty,@intCTDUS, ' + char(10) 75 + N' @intRemTrend,@intRecmdHQQty,'''','''','''',rMain.CONFORD,rMain.testtestailtomonitor, ' + char(10) 76 + N' @intKKOH,@intKCHOH,'''',@intPOQty,@strETADate,rMain.storeid,rMain.requestdate FROM @RMAin AS rMain' 77 78 SET @PARAMS = N'@RMAin UDT_Usp_Neworderextract_All_ML,@strLineNum NVARCHAR(15),@intManuSOH ' 79 + N' INT,@intLatestIT INT,@intRS INT,@intNettOrd INT,@intRSQty INT,@intCTDUS ' 80 + N' INT,@intRemTrend INT,@intRecmdHQQty INT,@intKKOH INT,@intKCHOH INT,@intPOQty ' 81 + N' INT,@strETADate DATE' 82 /* CURSOR Main_LOOP(BBID IN NVARCHAR) IS */ 83 SELECT @ML_SQL = N' SELECT ROW_NUMBER() OVER( ORDER BY ApCenter) AS ID,T1.* FROM (' 84 +' SELECT ''AP'' + SUBSTRING(A.Requestno, 1, 2) ApCenter,'' '' + A.storeid storeid,A.requestdate, ' + char(10) 85 + ' A.requestno,B.brochurecampaign Camp,Y.ITEMGROUPID BUSSCAT,B.FSC,Y.ItemName ' + char(10) 86 + ' [DESCRIPTION],CASE ISNULL(D.FSC, 0) WHEN 0 THEN 0 ELSE 1 END ControlTag, ' + char(10) 87 + 'B.OnHandQty,B.InTransitQty,B.requestqty AddOrderQty, ' + char(10) 88 + 'B.OnHandQty + B.InTransitQty + B.requestqty TotalNeed, ' + char(10) 89 + 'CASE A.REASONCODE WHEN ''1'' THEN ''CO'' WHEN ''2''THEN ''AO''ELSE ''PCM'' END CONFORD, ' + char(10) 90 + 'ISNULL(F.testtestailtomonitor, 0) testtestailtomonitor ' + char(10) 91 + 'FROM drmpos.storeinvrequest A ' + char(10) 92 + 'INNER JOIN drmpos.storeinvrequestdetail B ON A.requestNo = B.requestNo ' + char(10) 93 + 'LEFT JOIN testMANUBLOCKFSC D ON B.FSC = D.FSC ' + char(10) 94 + 'LEFT JOIN Inventtable Y ON B.FSC = Y.ITEMID ' + char(10) 95 + 'LEFT JOIN ( ' + char(10) 96 + ' SELECT * FROM testCMHEADER WHERE dataareaid = ''835'' ' + char(10) 97 + ' ) F ON B.FSC = F.ITEMID ' + char(10) 98 + ' WHERE Y.Dataareaid = ''835'' AND A.[status] IN (0, 2) ' + char(10) 99 + 'AND '' '' + A.storeid = @sBBID AND A.reasoncode = @ordType ' + char(10) 100 + 'AND requestdate BETWEEN CONVERT( DATE ,@strFrDate ) AND CONVERT( DATE , @strToDate ) ' 101 +') AS T1', 102 @ML_PARAM =N'@sBBID NVARCHAR(20), @ordType NVARCHAR(20), @strFrDate DATE,@strToDate DATE' 103 104 --//CLEAR 105 DELETE FROM testABBADDORDER_NEW 106 DELETE FROM @ML_CURSOR 107 INSERT INTO @ML_CURSOR EXEC SYS.sp_executesql @STMT=@ML_SQL,@PARAM=@ML_PARAM,@sBBID = @sBBID,@ordType = @ordType,@strFrDate = @strFrDate,@strToDate = @strToDate 108 SELECT @ML_MAX=@@ROWCOUNT , @ML_ROWID=1 FROM @ML_CURSOR 109 WHILE (@ML_ROWID<=@ML_MAX) 110 --//BEGIN @ML_RECORD 111 BEGIN 112 DELETE FROM @ML_RECORD/*clear*/ 113 INSERT INTO @ML_RECORD SELECT * FROM @ML_CURSOR WHERE ID=@ML_ROWID 114 SELECT @intRecmdHQQty = 0, 115 @intTransferHQQty = 0, 116 @intHQOH = 0, 117 @intRemTrend = 0, 118 @intRS = 0, 119 @intNettOrd = 0, 120 @intPOQty = 0, 121 @intLatestIT = 0, 122 @strLineNum = 0000 123 124 --BrochLineNum 125 ;WITH r_LineNum AS ( 126 SELECT testbrochurelinenum linenum 127 FROM PRICEDISCTABLE,@ML_RECORD rmain WHERE dataareaid = '835' AND testcampaignid = rmain.camp AND 128 accountrelation = 'WM' 129 AND itemrelation = rmain.FSC 130 AND rownum < 2 131 132 ) 133 SELECT @strLineNum=linenum FROM r_LineNum 134 135 --Latest Intransit 136 ;WITH rLatestIT AS( 137 SELECT A.CUSTACCOUNT,B.ITEMID,SUM(B.testQUANTITY)LATESTIT FROM 138 testORDERTRACKING A,testCARTONITEM B,testCARTONPICK C,@ML_RECORD rmain 139 WHERE A.dataareaid = '835' 140 AND B.dataareaid = '835' 141 AND C.dataareaid = '835' 142 AND A.SALESID = C.SALESID 143 AND B.testPICKID = C.testPICKID 144 AND A.custaccount = rmain.StoreID 145 AND ITEMID = rmain.FSC 146 AND A.testorderstatus = 'CARRIER' 147 GROUP BY A.CUSTACCOUNT,B.ITEMID 148 ) 149 SELECT @intLatestIT = rLatestIT.LatestIT FROM rLatestIT 150 151 --RS_ManuSOH 152 ;WITH r_RSManuSOH AS ( 153 SELECT A.ITEMID,A.TRENDQTY BizShare,B.testSTOCKONHAND,ISNULL(C.testQTY, 0) UNITSOLD, 154 ISNULL(D.TRENDQTY, 0) TRENDQTY 155 FROM testABBAUTOORDERSPLIT A 156 INNER JOIN testMANUSOH B ON A.ITEMID = B.ITEMID AND A.APCENTER = B.testAPSCENTER 157 INNER JOIN @ML_RECORD rmain ON 1=1 158 LEFT JOIN testMANUUNITSOLDTMP C ON A.ITEMID = C.testFSC AND A.APCENTER = C.testAPCENTER 159 LEFT JOIN testmanutrend_new D ON A.APCENTER = D.APCENTER AND A.ITEMID = D.ITEMID AND A.testSELLYEARCAMP = D.testSELLYEARCAMP 160 WHERE A.ITEMID = rmain.FSC AND A.testsellyearcamp = rmain.Camp AND A.APCENTER = rmain.apcenter 161 ) 162 SELECT @intRSQty = r_RSManuSOH.BizShare, @intManuSOH = r_RSManuSOH.testSTOCKONHAND,@intCTDUS = r_RSManuSOH.UNITSOLD , 163 @intRemTrend = r_RSManuSOH.TRENDQTY - r_RSManuSOH.UNITSOLD FROM r_RSManuSOH 164 165 --RS_HQOH 166 ;WITH r_HQOH AS ( 167 SELECT itemid,( 168 ISNULL(SUM(CASE B.inventlocationid WHEN 'testN' THEN A.testailphysical END ), 0 ) + 169 ISNULL(SUM(CASE B.inventlocationid WHEN 'SHP' THEN A.testailphysical END ),0) + 170 ISNULL(SUM(CASE B.inventlocationid WHEN'BIN' THEN A.testailphysical END),0) 171 ) HQOH, 172 ISNULL(SUM(CASE B.inventlocationid WHEN'0001000' THEN A.testailphysical END),0) KKOH, 173 ISNULL(SUM(CASE B.inventlocationid WHEN'0002000' THEN A.testailphysical END),0) KCHOH 174 FROM inventsum A ,InventDim B,@ML_RECORD rmain WHERE 175 A.dataareaid = '835' AND B.dataareaid = '835' 176 AND A.inventdimid = B.inventdimid 177 AND B.inventlocationid 178 IN ('testN', 'SHP', 'BIN', '0001000', '0002000') 179 AND A.itemid <> CHAR(2) 180 AND A.itemid = rmain.FSC 181 GROUP BY itemid 182 ) 183 SELECT @intHQOH = r_HQOH.HQOH, @intKKOH = r_HQOH.KKOH, @intKCHOH = r_HQOH.KCHOH FROM r_HQOH 184 185 --RS Qty ( Pick Qty) 186 ;WITH r_PickQty AS ( 187 SELECT A.CUSTACCOUNT,B.ITEMID,SUM(B.testQUANTITY)PickQty 188 FROM testORDERTRACKING A,testCARTONITEM B,testCARTONPICK C,@ML_RECORD rmain 189 WHERE A.dataareaid = '835' 190 AND B.dataareaid = '835' 191 AND C.dataareaid = '835' 192 AND A.SALESID = C.SALESID 193 AND B.testPICKID = C.testPICKID 194 AND A.custaccount = @SBBID 195 AND B.ITEMID = rmain.FSC 196 AND A.testorderstatus IN ('CARTONED', 'SHIPPING', 'TRANSPRT') 197 GROUP BY A.CUSTACCOUNT,B.ITEMID 198 ) 199 SELECT @intRS = r_PickQty.PickQty FROM r_PickQty 200 201 202 --Nett Order 203 SELECT @intNettOrd = rMain.ADDORDERQTY + rMain.INTRANSITQTY - @intLatestIT - @intRS FROM @ML_RECORD rmain 204 -- Recommended HQ Qty 205 SELECT @strApCode = rMain.APCENTER ,@BizCount = 0 FROM @ML_RECORD rmain 206 207 --Lookup in LOCFSC (BizShare) 208 ;WITH rBizShare AS ( 209 SELECT COUNT(1) bizCnt,APCODE,testFSC,RATE FROM testManuBizShare,@ML_RECORD rmain 210 WHERE APCODE = @strApCode AND testFSC = rmain.FSC 211 GROUP BY APCODE,testFSC,RATE 212 ) 213 SELECT @BizCount = rBizShare.bizCnt, @intRecmdHQQty = ROUND(@intHQOH * rBizShare.Rate, 0), 214 @BizCount= 1 FROM rBizShare 215 -- Biz Share 216 IF @BizCount <> 1 217 BEGIN 218 SET @NBCount = 0 219 ;WITH rNonBty AS ( 220 SELECT COUNT(1) nbCnt,APCODE,Buss,RATE FROM testManuNonBeauty,@ML_RECORD rmain 221 WHERE APCODE = @strApCode AND Buss = rmain.BUSSCAT 222 GROUP BY APCODE,Buss,RATE 223 ) 224 SELECT @NBCount = rNonBty.nbCnt, @intRecmdHQQty = ROUND(@intHQOH * rNonBty.Rate,0) , @NBCount = 1 FROM rNonBty 225 END 226 ---Fixed Rate 227 IF @NBCount = 0 AND @BizCount = 0 228 BEGIN 229 SET @intRecmdHQQty = ROUND(@intHQOH * @fRate, 0) 230 END 231 232 IF @intRecmdHQQty < @intNettOrd 233 BEGIN 234 SET @intTransferHQQty = @intRecmdHQQty 235 END 236 ELSE 237 BEGIN 238 SET @intTransferHQQty = @intNettOrd 239 END 240 241 --- PO date and Qty 242 ;WITH r_PO AS ( 243 SELECT SUM(qtyordered) POQty,CONVERT(DATE, MIN(deliverydate)) PODate FROM 244 PurchLine,@ML_RECORD rmain WHERE dataareaid = '835' 245 AND deliverydate > CONVERT(DATE, GETDATE() -14) 246 AND purchstatus <> '2' 247 AND itemid = rmain.FSC 248 AND deliverydate IN ( 249 SELECT MIN(deliverydate) 250 FROM PurchLine,@ML_RECORD rmain WHERE dataareaid = '835' 251 AND deliverydate > CONVERT(DATE, GETDATE() -14) 252 AND purchstatus <> '2' 253 AND itemid = rmain.FSC ) 254 ) 255 SELECT @intPOQty = r_PO.POQty , @strETADate = r_PO.PODate FROM r_PO 256 257 BEGIN 258 EXEC SP_EXECUTESQL @STMT=@strSql,@PARAM=@PARAMS 259 , @RMAin = @ML_RECORD,@strLineNum = @strLineNum,@intManuSOH = @intManuSOH,@intLatestIT 260 = @intLatestIT,@intRS = @intRS,@intNettOrd = @intNettOrd,@intRSQty = @intRSQty, 261 @intCTDUS = @intCTDUS,@intRemTrend = @intRemTrend,@intRecmdHQQty = @intRecmdHQQty, 262 @intKKOH = @intKKOH,@intKCHOH = @intKCHOH,@intPOQty = @intPOQty,@strETADate = @strETADate 263 IF @@ERROR>0 264 RAISERROR ('Error raised in EXEC SP_EXECUTESQL @STMT=@strSql,@PARAM=@PARAMS...', 16, 1 );/*[0-10]:CONTINUE;[11-19]:jump to catch*/ 265 END 266 SET @ML_ROWID+=1 267 END --//END @ML_RECORD 268 END TRY 269 /*END TRY*/ 270 BEGIN CATCH 271 /*DECLARE*/ 272 DECLARE @ErrorMessage NVARCHAR(4000), 273 @ErrorSeverity NVARCHAR(5), 274 @ErrorState NVARCHAR(5), 275 @ERROR_NUMBER NVARCHAR(5), 276 @ERROR_LINE NVARCHAR(5), 277 @ERROR_PROCEDURE NVARCHAR(100) 278 /*SET VALUES*/ 279 SELECT @ErrorMessage = ERROR_MESSAGE(), 280 @ErrorSeverity = ERROR_SEVERITY(), 281 @ErrorState = ERROR_STATE(), 282 @ERROR_NUMBER = ERROR_NUMBER(), 283 @ERROR_LINE = ERROR_LINE(), 284 @ERROR_PROCEDURE = CASE ISNULL(ERROR_PROCEDURE(), '') WHEN '' THEN '' ELSE 'Error occur when running procedure: [' + ERROR_PROCEDURE() + '];' END; 285 /*FORMATING MSG*/ 286 SET @ErrorMessage = @ERROR_PROCEDURE + CHAR(10) 287 + 'Msg:' + @ErrorMessage + ' Line:' + @ERROR_LINE + ' Number:' + @ERROR_NUMBER 288 + CHAR(10) 289 + 'Date:' + CONVERT(NVARCHAR(30), GETDATE(), 120) 290 /*RAISERROR*/ 291 RAISERROR (@ErrorMessage, @ErrorSeverity, @ErrorState); 292 END CATCH; 293 RETURN 0 294 END 295 go 296 297 IF @@ERROR = 0 PRINT 'Procedure Usp_Neworderextract_All created' 298 go