第一个:SY_split_KitPO

USE [panda]
GO
/****** Object:  StoredProcedure [dbo].[SY_split_KitPO]    Script Date: 02/16/2009 14:19:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SY_split_KitPO]
@ComputerName varchar(50),
@TransactionType varchar(10)
AS
 

--1. find kitPO from sy_order_file join with pricemaster and kitmaster to split kitPO into partsPO
---Create tmp table
 CREATE table #tmpKitPO
 (
 Line_No int,
 KitPONO varchar(20),
 KitNo varchar(10),
 KitQTY int,
 KitID varchar(20), 
 PartPONo varchar(20),
 PartNo int,
 PartQTY int,
 FOBDate datetime,
 MaxLine_No int,
 ID INT IDENTITY(1,1) NOT NULL, 
 )

--step 1.1 insert kitPO into #tmpKitPO
 INSERT INTO #tmpKitPO
  SELECT SF.Line_No, SF.PONo AS KitPONO, SF.PartNo AS KitNo, SF.QTY AS KitQTY,
        PM.KitID, SF.PONo AS PartPONo, KM.PartNo, SF.QTY * KM.QTY AS partQTY,
        SF.FOBDate, MAX(SF.Line_No) AS MaxLine_No
  FROM SY_ORDER_FILE AS SF INNER JOIN
        PriceMaster AS PM ON SF.PartNo = PM.PartNo AND SF.Customer = PM.Seller AND
        CAST(SF.FOBDate AS Datetime) BETWEEN CAST(PM.CutIn_From AS Datetime) AND CAST(PM.CutIn_To AS Datetime) INNER JOIN
        KitMaster AS KM ON PM.KitID = KM.KitID
  WHERE (SF.ComputerName = @ComputerName) AND
        (SF.Transactiontype = @TransactionType) AND (PM.KitID IS NOT NULL)
  GROUP BY SF.Line_No, SF.PONo, SF.QTY, PM.KitID, KM.PartNo, SF.FOBDate, SF.PartNo,
        SF.QTY * KM.QTY   

--step 1.2  Amend line_No, PartPONo
 update #tmpKitPO set Line_No = MaxLine_No + ID
 
 update #tmpKitPO
  set PartPONO = PartPONo + '-' +  convert(varchar(2),Line_No - (select min(line_No) from #tmpKitPO where KitPONo = TP.KitPONo) + 1)
 FROM #tmpKitPO TP
 
 
  
--step 1.3. use tmptbl and match with SF_order_file to get the kitPO and join with kitmaster using kitid to split kit po into part po.
 INSERT INTO SY_ORDER_FILE
  SELECT #tmpKitPO.Line_No, #tmpKitPO.PartPONo AS PONO, SY_ORDER_FILE.Indicator,
        #tmpKitPO.PartNo, SY_ORDER_FILE.Vendor, SY_ORDER_FILE.VendorSuffix,
        SY_ORDER_FILE.PortCode, SY_ORDER_FILE.XJCode, SY_ORDER_FILE.IssueDate,
        #tmpKitPO.PartQTY AS QTY, SY_ORDER_FILE.Box_QTY, SY_ORDER_FILE.MOQ,
        SY_ORDER_FILE.Fluct_qty, SY_ORDER_FILE.Firmness, SY_ORDER_FILE.Category,
        SY_ORDER_FILE.FOBDate, SY_ORDER_FILE.Originator,
        SY_ORDER_FILE.CancelDate, SY_ORDER_FILE.ShipMode, SY_ORDER_FILE.Week,
        SY_ORDER_FILE.Customer, SY_ORDER_FILE.V_Currency,
        SY_ORDER_FILE.V_Tradeterms, SY_ORDER_FILE.V_Country,
        SY_ORDER_FILE.V_Name, SY_ORDER_FILE.V_Address,
        SY_ORDER_FILE.V_PaymentTerms, SY_ORDER_FILE.S_Point,
        SY_ORDER_FILE.B_Point, SY_ORDER_FILE.B_Date, SY_ORDER_FILE.B_UnitPrice,
        SY_ORDER_FILE.S_UnitPrice, SY_ORDER_FILE.B_Amount,
        SY_ORDER_FILE.S_Amount, SY_ORDER_FILE.M_ShipMode,
        SY_ORDER_FILE.LeadTime, SY_ORDER_FILE.Description,
        SY_ORDER_FILE.QTY_Unit, SY_ORDER_FILE.ErrorCode, SY_ORDER_FILE.Error,
        SY_ORDER_FILE.c_FLG, SY_ORDER_FILE.AcceptDate,
        SY_ORDER_FILE.Ign_Fluctuation, SY_ORDER_FILE.Ign_BoxQty,
        SY_ORDER_FILE.Ign_MOQ, SY_ORDER_FILE.ComputerName,
        SY_ORDER_FILE.Transactiontype, SY_ORDER_FILE.CustomerPONo,
        SY_ORDER_FILE.ETADate, SY_ORDER_FILE.Ign_GetCustomer,
        SY_ORDER_FILE.Filter_Customer, SY_ORDER_FILE.Remarks,
        SY_ORDER_FILE.Filter_NotCustomer, SY_ORDER_FILE.errmsg,
        SY_ORDER_FILE.rowguid, SY_ORDER_FILE.Comment, #tmpKitPO.KitPONO,
        #tmpKitPO.KitNo, #tmpKitPO.KitQTY, #tmpKitPO.KitID
  FROM #tmpKitPO INNER JOIN
        SY_ORDER_FILE ON #tmpKitPO.MaxLine_No = SY_ORDER_FILE.Line_No
  WHERE (SY_ORDER_FILE.ComputerName = @ComputerName) AND
     (SY_ORDER_FILE.Transactiontype = @TransactionType)
  

--Delete KitPONO in SY_Order_File
 DELETE SY_ORDER_FILE 
  FROM SY_ORDER_FILE SY
  INNER JOIN #tmpKitPO TP
  ON SY.PONo COLLATE DATABASE_DEFAULT = TP.KitPONO COLLATE DATABASE_DEFAULT
  WHERE SY.computername COLLATE DATABASE_DEFAULT =@ComputerName COLLATE DATABASE_DEFAULT and SY.transactiontype COLLATE DATABASE_DEFAULT = @TransactionType COLLATE DATABASE_DEFAULT

---delete tmpTbl
 DROP TABLE #tmpKitPO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值