• 采购申请单审核时自动转成审核状态的采购单


    CREATE TRIGGER [PORequestToPOOrder] ON [dbo].[PORequest]

    FOR  UPDATE

    AS

    --采购申请单自动转至采购订单

    BEGIN

      DECLARE @FCurrencyID INT,

        @FInterID INT,

        @FEntryID INT,

        @ROwID INT,

        @FBillno VARCHAR(50),

        @FSupplyID INT,

        @FStatus INT,

        @FNumber VARCHAR(50),

        @FLength INT,

        @FBrNO INT,

        @FZero DECIMAL(28,10)

      DECLARE @FMaxNum INT,

        @FCustID INT,

        @FSaleStyle INT,

        @FDeptID INT,

        @FEmpID INT,

        @FBillerID INT,

        @FMangerID INT,

        @FBillPOONo VARCHAR(50),

        @FBillCurNo INT,

        @FBillCurChar VARCHAR(50),

        @FCheckerID INT

     

      SELECT  @FCustID = 4017,@FBrNO = 0,@FZero = 0.000,@FDeptID = 112,

              @FSupplyID = 71471,@FEmpID = 432,@FBillerID = 16394,

              @FMangerID = 73751,@FCheckerID = 16531

      SELECT  @FBillNo = FBillNo,@FStatus = FStatus,@FInterid = FInterid

      FROM    inserted

      IF (@FStatus=1 AND Update(FStatus))

      BEGIN

         --1. 采购申请单中有吉利发物料

         --2. 采购订单没有吉利发此笔申请单物料

         IF Exists( Select 1 From PORequestEntry  Where FInterID = @FInterID AND FSupplyID=@FSupplyID) AND NOT Exists(SELECT 1 FROM POOrder a1 LEFT JOIN POOrderEntry b1 ON a1.FInterID=b1.FInterID WHERE a1.FSupplyID=@FSupplyID AND b1.FSourceBillNo=@FBillNo)

         BEGIN

           --获取采购订单FInterID FBillNo编号

           select @FMaxNum=FMaxNum+1 from ICMaxNum  where FTableName='POOrder'

           update ICMaxNum set FMaxNum=@FMaxNum where FTableName='POOrder'

           select @FBillCurNo=FCurNo from  ICBillNo where FBillID=71

           update ICBillNo set FCurNo=FCurNo+1 where FBillID=71

           update t_billcoderule set FProjectVal=@FBillCurNo+1 where fbilltypeid=71 and fclassindex=2

           select  @FBillPOONo=FProjectVal from t_billcoderule where fbilltypeid=71 and fclassindex=1

           select  @FLength=FLength from t_billcoderule where fbilltypeid=71 and fclassindex=2

           select  @FBillCurChar=right(cast(power(10,4) as varchar)+@FBillCurNo,@FLength)

           select  @FBillPOONo=@FBillPOONo+@FBillCurChar

           --采购订单主表

           INSERT INTO POOrder ( FInterID,FBillNo,FBrNo,FTranType,FCancellation,

                                 FStatus,FSupplyID,Fdate,FCurrencyID,FCheckDate,

                                 FMangerID,FDeptID,FEmpID,FBillerID,FExchangeRate,

                                 FPOStyle,FRelateBrID,FMultiCheckLevel1,

                                 FMultiCheckDate1,FMultiCheckLevel2,

                                 FMultiCheckDate2,FMultiCheckLevel3,

                                 FMultiCheckDate3,FMultiCheckLevel4,

                                 FMultiCheckDate4,FMultiCheckLevel5,

                                 FMultiCheckDate5,FMultiCheckLevel6,

                                 FMultiCheckDate6,FSelTranType,FBrID,FExplanation,

                                 FSettleID,FSettleDate,FAreaPS,FPOOrdBillNo,

                                 FHeadSelfP0224,FHeadSelfP0225,FHeadSelfP0228 )

           VALUES ( @FMaxNum,@FBillPOONo,'0',71,0,0,@FSupplyID,GETDATE(),1,NULL,

                    @FMangerID,@FDeptID,@FEmpID,@FBillerID,1,252,0,NULL,NULL,NULL,

                    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,70,0,'',0,

                    GETDATE(),20302,'',NULL,'','' )

           --采购订单子表

           INSERT INTO POOrderEntry ( FInterID,FEntryID,FBrNo,FItemID,FAuxPropID,

                                      FQty,FUnitID,FAuxQty,FSecCoefficient,Fdate,

                                      FSecQty,FAuxTaxPrice,FEntrySelfP0247,

                                      Fauxprice,FAmount,FCess,Fnote,FMapName,

                                      FMapNumber,FTaxRate,FAuxPriceDiscount,

                                      FTaxAmount,FAllAmount,FEntrySelfP0250,

                                      FEntrySelfP0251,FSourceBillNo,

                                      FSourceTranType,FSourceInterId,

                                      FSourceEntryID,FContractBillNo,

                                      FContractInterID,FContractEntryID,

                                      FAuxQtyInvoice,FQtyInvoice,FMrpLockFlag )

                  SELECT  @FMaxNum,FEntryID,'0',FItemID,0,FQty,FUnitID,FQty,0,

                          FFetchTime,0,0,0,0,0,17,FUse,'','',0,0,0,0,'','',

                          @FBillNo,70,32971,13,'',0,0,0,0,0

                  FROM    PORequestEntry

                  WHERE   FInterID = @FInterID AND FSupplyID = @FSupplyID    

          --记录数与最大行号不一致, 行号重新排序

          SELECT @ROwID=COUNT(*)  FROM POOrderEntry  Where FInterID = @FMaxNum

          SELECT @FEntryID=MAX(FEntryID)  FROM POOrderEntry  Where FInterID = @FMaxNum

          IF (@ROwID<>@FEntryID)

          BEGIN

            SELECT @ROwID=1

            DECLARE POOrderEntryCursor CURSOR

            FOR

            SELECT  FEntryID

            FROM    POOrderEntry

            WHERE   FInterID = @FMaxNum

            ORDER BY FEntryID

            OPEN  POOrderEntryCursor

            FETCH NEXT FROM  POOrderEntryCursor  INTO @FEntryID

            WHILE @@FETCH_STATUS = 0

            BEGIN

              UPDATE  POOrderEntry

              SET     FEntryID = @ROwID

              WHERE   FInterID = @FMaxNum AND FEntryID = @FEntryID  

              FETCH NEXT FROM POOrderEntryCursor  INTO @FEntryID        

              SELECT  @ROwID = @ROwID + 1

            END

              CLOSE POOrderEntryCursor

              deallocate POOrderEntryCursor

            END

              --采购订单取价更新

              --1.取最低单价

              SELECT  MIN(b1.FPrice) AS FPrice,b1.FItemID,b1.FDiscount

              INTO    #minFprice

              FROM    t_SupplyEntry b1

                      RIGHT JOIN POOrderEntry a1 ON a1.FItemID = b1.FItemID

              WHERE   a1.FInterID = @FMaxNum AND b1.FUsed = 1

              GROUP BY b1.FItemID,b1.FDiscount         

              --2 更新采购订单单价

              UPDATE  a1

              SET     a1.FPrice = b1.FPrice / ( 1 + a1.FCess / 100 ),

                      a1.FAuxPrice = b1.FPrice / ( 1 + a1.FCess / 100 ),

                      a1.FAmount = b1.FPrice / ( 1 + a1.FCess / 100 ) * a1.FQty,

                      a1.FAuxTaxPrice = b1.FPrice,

                      a1.FAllamount = b1.FPrice * a1.FQty,

                      a1.FTaxAmount = b1.FPrice / ( 1 + a1.FCess / 100 ) * a1.FCess / 100 * a1.FQty,

                      a1.FAuxPriceDiscount = b1.FPrice * ( 1 - b1.FDiscount / 100 ),

                      a1.FPriceDiscount = b1.FPrice * ( 1 - b1.FDiscount / 100 ),

                      a1.FTaxPrice = b1.FPrice,

                      a1.FAmtDiscount = b1.FPrice / ( 1 + a1.FCess / 100 ) * a1.FQty * b1.FDiscount / 100,

                      a1.FEntrySelfP0247 = b1.FPrice * a1.FQty

              FROM    POOrderEntry a1

                      RIGHT JOIN #minFPrice b1 ON a1.FItemID = b1.FItemID

              WHERE   a1.FInterID = @FMaxNum --AND b1.FUsed =1

              --3. 删除临时表

              DROP TABLE #minFPrice 

             -- 审核采购订单

             UPDATE  POOrder SET FStatus=1,FCheckerID= @FCheckerID  WHERE FInterID=@FMaxNum

         END

      END

    ENDCREATE TRIGGER [PORequestToPOOrder] ON [dbo].[PORequest]
    FOR UPDATE
    AS
    --采购申请单自动转至采购订单
    BEGIN
     
    DECLARE @FCurrencyID INT,
       
    @FInterID INT,
       
    @FEntryID INT,
       
    @ROwID INT,
       
    @FBillno VARCHAR(50),
       
    @FSupplyID INT,
       
    @FStatus INT,
       
    @FNumber VARCHAR(50),
       
    @FLength INT,
       
    @FBrNO INT,
       
    @FZero DECIMAL(28,10)
     
    DECLARE @FMaxNum INT,
       
    @FCustID INT,
       
    @FSaleStyle INT,
       
    @FDeptID INT,
       
    @FEmpID INT,
       
    @FBillerID INT,
       
    @FMangerID INT,
       
    @FBillPOONo VARCHAR(50),
       
    @FBillCurNo INT,
       
    @FBillCurChar VARCHAR(50),
       
    @FCheckerID INT
     
     
    SELECT @FCustID = 4017,@FBrNO = 0,@FZero = 0.000,@FDeptID = 112,
             
    @FSupplyID = 71471,@FEmpID = 432,@FBillerID = 16394,
             
    @FMangerID = 73751,@FCheckerID = 16531
     
    SELECT @FBillNo = FBillNo,@FStatus = FStatus,@FInterid = FInterid
     
    FROM    inserted
     
    IF (@FStatus=1 AND Update(FStatus))
     
    BEGIN
        
    --1. 采购申请单中有吉利发物料
         --2. 采购订单没有吉利发此笔申请单物料
         IF Exists(Select 1 From PORequestEntry Where FInterID= @FInterID AND FSupplyID=@FSupplyID)AND NOT Exists(SELECT 1 FROM POOrder a1LEFT JOIN POOrderEntry b1ON a1.FInterID=b1.FInterIDWHERE a1.FSupplyID=@FSupplyID AND b1.FSourceBillNo=@FBillNo)
        
    BEGIN
          
    --获取采购订单 FInterID FBillNo编号
           select @FMaxNum=FMaxNum+1 from ICMaxNum where FTableName='POOrder'
          
    update ICMaxNumset FMaxNum=@FMaxNum where FTableName='POOrder'
          
    select @FBillCurNo=FCurNofrom  ICBillNowhere FBillID=71
          
    update ICBillNoset FCurNo=FCurNo+1 where FBillID=71
          
    update t_billcoderuleset FProjectVal=@FBillCurNo+1 where fbilltypeid=71 and fclassindex=2
          
    select @FBillPOONo=FProjectValfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=1
          
    select @FLength=FLengthfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=2
          
    select @FBillCurChar=right(cast(power(10,4)as varchar)+@FBillCurNo,@FLength)
          
    select @FBillPOONo=@FBillPOONo+@FBillCurChar
          
    --采购订单主表
           INSERT INTO POOrder ( FInterID,FBillNo,FBrNo,FTranType,FCancellation,
                                 FStatus,FSupplyID,Fdate,FCurrencyID,FCheckDate,
                                 FMangerID,FDeptID,FEmpID,FBillerID,FExchangeRate,
                                 FPOStyle,FRelateBrID,FMultiCheckLevel1,
                                 FMultiCheckDate1,FMultiCheckLevel2,
                                 FMultiCheckDate2,FMultiCheckLevel3,
                                 FMultiCheckDate3,FMultiCheckLevel4,
                                 FMultiCheckDate4,FMultiCheckLevel5,
                                 FMultiCheckDate5,FMultiCheckLevel6,
                                 FMultiCheckDate6,FSelTranType,FBrID,FExplanation,
                                 FSettleID,FSettleDate,FAreaPS,FPOOrdBillNo,
                                 FHeadSelfP0224,FHeadSelfP0225,FHeadSelfP0228 )
          
    VALUES (@FMaxNum,@FBillPOONo,'0',71,0,0,@FSupplyID,GETDATE(),1,NULL,
                   
    @FMangerID,@FDeptID,@FEmpID,@FBillerID,1,252,0,NULL,NULL,NULL,
                   
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,70,0,'',0,
                   
    GETDATE(),20302,'',NULL,'','' )
          
    --采购订单子表
           INSERT INTO POOrderEntry ( FInterID,FEntryID,FBrNo,FItemID,FAuxPropID,
                                      FQty,FUnitID,FAuxQty,FSecCoefficient,Fdate,
                                      FSecQty,FAuxTaxPrice,FEntrySelfP0247,
                                      Fauxprice,FAmount,FCess,Fnote,FMapName,
                                      FMapNumber,FTaxRate,FAuxPriceDiscount,
                                      FTaxAmount,FAllAmount,FEntrySelfP0250,
                                      FEntrySelfP0251,FSourceBillNo,
                                      FSourceTranType,FSourceInterId,
                                      FSourceEntryID,FContractBillNo,
                                      FContractInterID,FContractEntryID,
                                      FAuxQtyInvoice,FQtyInvoice,FMrpLockFlag )
                 
    SELECT @FMaxNum,FEntryID,'0',FItemID,0,FQty,FUnitID,FQty,0,
                          FFetchTime,
    0,0,0,0,0,17,FUse,'','',0,0,0,0,'','',
                         
    @FBillNo,70,32971,13,'',0,0,0,0,0
                 
    FROM    PORequestEntry
                 
    WHERE   FInterID= @FInterID AND FSupplyID= @FSupplyID    
         
    --记录数与最大行号不一致, 行号重新排序
          SELECT @ROwID=COUNT(*FROM POOrderEntry Where FInterID= @FMaxNum
         
    SELECT @FEntryID=MAX(FEntryID) FROM POOrderEntry Where FInterID= @FMaxNum
         
    IF (@ROwID<>@FEntryID)
         
    BEGIN
           
    SELECT @ROwID=1
           
    DECLARE POOrderEntryCursorCURSOR
           
    FOR
           
    SELECT  FEntryID
           
    FROM    POOrderEntry
           
    WHERE   FInterID= @FMaxNum
           
    ORDER BY FEntryID
           
    OPEN  POOrderEntryCursor
           
    FETCH NEXT FROM  POOrderEntryCursor INTO @FEntryID
           
    WHILE @@FETCH_STATUS = 0
           
    BEGIN
             
    UPDATE  POOrderEntry
             
    SET     FEntryID= @ROwID
             
    WHERE   FInterID= @FMaxNum AND FEntryID= @FEntryID  
             
    FETCH NEXT FROM POOrderEntryCursor INTO @FEntryID        
             
    SELECT @ROwID = @ROwID + 1
           
    END
             
    CLOSE POOrderEntryCursor
             
    deallocate POOrderEntryCursor
           
    END
             
    --采购订单取价更新
              --1.取最低单价
              SELECT MIN(b1.FPrice)AS FPrice,b1.FItemID,b1.FDiscount
             
    INTO    #minFprice
             
    FROM    t_SupplyEntry b1
                     
    RIGHT JOIN POOrderEntry a1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum AND b1.FUsed= 1
             
    GROUP BY b1.FItemID,b1.FDiscount         
             
    --2 更新采购订单单价
              UPDATE  a1
             
    SET     a1.FPrice= b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAuxPrice
    = b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty,
                      a1.FAuxTaxPrice
    = b1.FPrice,
                      a1.FAllamount
    = b1.FPrice* a1.FQty,
                      a1.FTaxAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FCess/ 100 * a1.FQty,
                      a1.FAuxPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FTaxPrice
    = b1.FPrice,
                      a1.FAmtDiscount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty* b1.FDiscount/ 100,
                      a1.FEntrySelfP0247
    = b1.FPrice* a1.FQty
             
    FROM    POOrderEntry a1
                     
    RIGHT JOIN #minFPrice b1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum --AND b1.FUsed =1
             --3. 删除临时表
              DROP TABLE #minFPrice 
            
    -- 审核采购订单
             UPDATE  POOrderSET FStatus=1,FCheckerID= @FCheckerID WHERE FInterID=@FMaxNum
        
    END
     
    END
    END

    CREATE TRIGGER [PORequestToPOOrder] ON [dbo].[PORequest]
    FOR UPDATE
    AS
    --采购申请单自动转至采购订单
    BEGIN
     
    DECLARE @FCurrencyID INT,
       
    @FInterID INT,
       
    @FEntryID INT,
       
    @ROwID INT,
       
    @FBillno VARCHAR(50),
       
    @FSupplyID INT,
       
    @FStatus INT,
       
    @FNumber VARCHAR(50),
       
    @FLength INT,
       
    @FBrNO INT,
       
    @FZero DECIMAL(28,10)
     
    DECLARE @FMaxNum INT,
       
    @FCustID INT,
       
    @FSaleStyle INT,
       
    @FDeptID INT,
       
    @FEmpID INT,
       
    @FBillerID INT,
       
    @FMangerID INT,
       
    @FBillPOONo VARCHAR(50),
       
    @FBillCurNo INT,
       
    @FBillCurChar VARCHAR(50),
       
    @FCheckerID INT
     
     
    SELECT @FCustID = 4017,@FBrNO = 0,@FZero = 0.000,@FDeptID = 112,
             
    @FSupplyID = 71471,@FEmpID = 432,@FBillerID = 16394,
             
    @FMangerID = 73751,@FCheckerID = 16531
     
    SELECT @FBillNo = FBillNo,@FStatus = FStatus,@FInterid = FInterid
     
    FROM    inserted
     
    IF (@FStatus=1 AND Update(FStatus))
     
    BEGIN
        
    --1. 采购申请单中有吉利发物料
         --2. 采购订单没有吉利发此笔申请单物料
         IF Exists(Select 1 From PORequestEntry Where FInterID= @FInterID AND FSupplyID=@FSupplyID)AND NOT Exists(SELECT 1 FROM POOrder a1LEFT JOIN POOrderEntry b1ON a1.FInterID=b1.FInterIDWHERE a1.FSupplyID=@FSupplyID AND b1.FSourceBillNo=@FBillNo)
        
    BEGIN
          
    --获取采购订单 FInterID FBillNo编号
           select @FMaxNum=FMaxNum+1 from ICMaxNum where FTableName='POOrder'
          
    update ICMaxNumset FMaxNum=@FMaxNum where FTableName='POOrder'
          
    select @FBillCurNo=FCurNofrom  ICBillNowhere FBillID=71
          
    update ICBillNoset FCurNo=FCurNo+1 where FBillID=71
          
    update t_billcoderuleset FProjectVal=@FBillCurNo+1 where fbilltypeid=71 and fclassindex=2
          
    select @FBillPOONo=FProjectValfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=1
          
    select @FLength=FLengthfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=2
          
    select @FBillCurChar=right(cast(power(10,4)as varchar)+@FBillCurNo,@FLength)
          
    select @FBillPOONo=@FBillPOONo+@FBillCurChar
          
    --采购订单主表
           INSERT INTO POOrder ( FInterID,FBillNo,FBrNo,FTranType,FCancellation,
                                 FStatus,FSupplyID,Fdate,FCurrencyID,FCheckDate,
                                 FMangerID,FDeptID,FEmpID,FBillerID,FExchangeRate,
                                 FPOStyle,FRelateBrID,FMultiCheckLevel1,
                                 FMultiCheckDate1,FMultiCheckLevel2,
                                 FMultiCheckDate2,FMultiCheckLevel3,
                                 FMultiCheckDate3,FMultiCheckLevel4,
                                 FMultiCheckDate4,FMultiCheckLevel5,
                                 FMultiCheckDate5,FMultiCheckLevel6,
                                 FMultiCheckDate6,FSelTranType,FBrID,FExplanation,
                                 FSettleID,FSettleDate,FAreaPS,FPOOrdBillNo,
                                 FHeadSelfP0224,FHeadSelfP0225,FHeadSelfP0228 )
          
    VALUES (@FMaxNum,@FBillPOONo,'0',71,0,0,@FSupplyID,GETDATE(),1,NULL,
                   
    @FMangerID,@FDeptID,@FEmpID,@FBillerID,1,252,0,NULL,NULL,NULL,
                   
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,70,0,'',0,
                   
    GETDATE(),20302,'',NULL,'','' )
          
    --采购订单子表
           INSERT INTO POOrderEntry ( FInterID,FEntryID,FBrNo,FItemID,FAuxPropID,
                                      FQty,FUnitID,FAuxQty,FSecCoefficient,Fdate,
                                      FSecQty,FAuxTaxPrice,FEntrySelfP0247,
                                      Fauxprice,FAmount,FCess,Fnote,FMapName,
                                      FMapNumber,FTaxRate,FAuxPriceDiscount,
                                      FTaxAmount,FAllAmount,FEntrySelfP0250,
                                      FEntrySelfP0251,FSourceBillNo,
                                      FSourceTranType,FSourceInterId,
                                      FSourceEntryID,FContractBillNo,
                                      FContractInterID,FContractEntryID,
                                      FAuxQtyInvoice,FQtyInvoice,FMrpLockFlag )
                 
    SELECT @FMaxNum,FEntryID,'0',FItemID,0,FQty,FUnitID,FQty,0,
                          FFetchTime,
    0,0,0,0,0,17,FUse,'','',0,0,0,0,'','',
                         
    @FBillNo,70,32971,13,'',0,0,0,0,0
                 
    FROM    PORequestEntry
                 
    WHERE   FInterID= @FInterID AND FSupplyID= @FSupplyID    
         
    --记录数与最大行号不一致, 行号重新排序
          SELECT @ROwID=COUNT(*FROM POOrderEntry Where FInterID= @FMaxNum
         
    SELECT @FEntryID=MAX(FEntryID) FROM POOrderEntry Where FInterID= @FMaxNum
         
    IF (@ROwID<>@FEntryID)
         
    BEGIN
           
    SELECT @ROwID=1
           
    DECLARE POOrderEntryCursorCURSOR
           
    FOR
           
    SELECT  FEntryID
           
    FROM    POOrderEntry
           
    WHERE   FInterID= @FMaxNum
           
    ORDER BY FEntryID
           
    OPEN  POOrderEntryCursor
           
    FETCH NEXT FROM  POOrderEntryCursor INTO @FEntryID
           
    WHILE @@FETCH_STATUS = 0
           
    BEGIN
             
    UPDATE  POOrderEntry
             
    SET     FEntryID= @ROwID
             
    WHERE   FInterID= @FMaxNum AND FEntryID= @FEntryID  
             
    FETCH NEXT FROM POOrderEntryCursor INTO @FEntryID        
             
    SELECT @ROwID = @ROwID + 1
           
    END
             
    CLOSE POOrderEntryCursor
             
    deallocate POOrderEntryCursor
           
    END
             
    --采购订单取价更新
              --1.取最低单价
              SELECT MIN(b1.FPrice)AS FPrice,b1.FItemID,b1.FDiscount
             
    INTO    #minFprice
             
    FROM    t_SupplyEntry b1
                     
    RIGHT JOIN POOrderEntry a1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum AND b1.FUsed= 1
             
    GROUP BY b1.FItemID,b1.FDiscount         
             
    --2 更新采购订单单价
              UPDATE  a1
             
    SET     a1.FPrice= b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAuxPrice
    = b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty,
                      a1.FAuxTaxPrice
    = b1.FPrice,
                      a1.FAllamount
    = b1.FPrice* a1.FQty,
                      a1.FTaxAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FCess/ 100 * a1.FQty,
                      a1.FAuxPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FTaxPrice
    = b1.FPrice,
                      a1.FAmtDiscount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty* b1.FDiscount/ 100,
                      a1.FEntrySelfP0247
    = b1.FPrice* a1.FQty
             
    FROM    POOrderEntry a1
                     
    RIGHT JOIN #minFPrice b1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum --AND b1.FUsed =1
             --3. 删除临时表
              DROP TABLE #minFPrice 
            
    -- 审核采购订单
             UPDATE  POOrderSET FStatus=1,FCheckerID= @FCheckerID WHERE FInterID=@FMaxNum
        
    END
     
    END
    END

    CREATE TRIGGER [PORequestToPOOrder] ON [dbo].[PORequest]
    FOR UPDATE
    AS
    --采购申请单自动转至采购订单
    BEGIN
     
    DECLARE @FCurrencyID INT,
       
    @FInterID INT,
       
    @FEntryID INT,
       
    @ROwID INT,
       
    @FBillno VARCHAR(50),
       
    @FSupplyID INT,
       
    @FStatus INT,
       
    @FNumber VARCHAR(50),
       
    @FLength INT,
       
    @FBrNO INT,
       
    @FZero DECIMAL(28,10)
     
    DECLARE @FMaxNum INT,
       
    @FCustID INT,
       
    @FSaleStyle INT,
       
    @FDeptID INT,
       
    @FEmpID INT,
       
    @FBillerID INT,
       
    @FMangerID INT,
       
    @FBillPOONo VARCHAR(50),
       
    @FBillCurNo INT,
       
    @FBillCurChar VARCHAR(50),
       
    @FCheckerID INT
     
     
    SELECT @FCustID = 4017,@FBrNO = 0,@FZero = 0.000,@FDeptID = 112,
             
    @FSupplyID = 71471,@FEmpID = 432,@FBillerID = 16394,
             
    @FMangerID = 73751,@FCheckerID = 16531
     
    SELECT @FBillNo = FBillNo,@FStatus = FStatus,@FInterid = FInterid
     
    FROM    inserted
     
    IF (@FStatus=1 AND Update(FStatus))
     
    BEGIN
        
    --1. 采购申请单中有吉利发物料
         --2. 采购订单没有吉利发此笔申请单物料
         IF Exists(Select 1 From PORequestEntry Where FInterID= @FInterID AND FSupplyID=@FSupplyID)AND NOT Exists(SELECT 1 FROM POOrder a1LEFT JOIN POOrderEntry b1ON a1.FInterID=b1.FInterIDWHERE a1.FSupplyID=@FSupplyID AND b1.FSourceBillNo=@FBillNo)
        
    BEGIN
          
    --获取采购订单 FInterID FBillNo编号
           select @FMaxNum=FMaxNum+1 from ICMaxNum where FTableName='POOrder'
          
    update ICMaxNumset FMaxNum=@FMaxNum where FTableName='POOrder'
          
    select @FBillCurNo=FCurNofrom  ICBillNowhere FBillID=71
          
    update ICBillNoset FCurNo=FCurNo+1 where FBillID=71
          
    update t_billcoderuleset FProjectVal=@FBillCurNo+1 where fbilltypeid=71 and fclassindex=2
          
    select @FBillPOONo=FProjectValfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=1
          
    select @FLength=FLengthfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=2
          
    select @FBillCurChar=right(cast(power(10,4)as varchar)+@FBillCurNo,@FLength)
          
    select @FBillPOONo=@FBillPOONo+@FBillCurChar
          
    --采购订单主表
           INSERT INTO POOrder ( FInterID,FBillNo,FBrNo,FTranType,FCancellation,
                                 FStatus,FSupplyID,Fdate,FCurrencyID,FCheckDate,
                                 FMangerID,FDeptID,FEmpID,FBillerID,FExchangeRate,
                                 FPOStyle,FRelateBrID,FMultiCheckLevel1,
                                 FMultiCheckDate1,FMultiCheckLevel2,
                                 FMultiCheckDate2,FMultiCheckLevel3,
                                 FMultiCheckDate3,FMultiCheckLevel4,
                                 FMultiCheckDate4,FMultiCheckLevel5,
                                 FMultiCheckDate5,FMultiCheckLevel6,
                                 FMultiCheckDate6,FSelTranType,FBrID,FExplanation,
                                 FSettleID,FSettleDate,FAreaPS,FPOOrdBillNo,
                                 FHeadSelfP0224,FHeadSelfP0225,FHeadSelfP0228 )
          
    VALUES (@FMaxNum,@FBillPOONo,'0',71,0,0,@FSupplyID,GETDATE(),1,NULL,
                   
    @FMangerID,@FDeptID,@FEmpID,@FBillerID,1,252,0,NULL,NULL,NULL,
                   
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,70,0,'',0,
                   
    GETDATE(),20302,'',NULL,'','' )
          
    --采购订单子表
           INSERT INTO POOrderEntry ( FInterID,FEntryID,FBrNo,FItemID,FAuxPropID,
                                      FQty,FUnitID,FAuxQty,FSecCoefficient,Fdate,
                                      FSecQty,FAuxTaxPrice,FEntrySelfP0247,
                                      Fauxprice,FAmount,FCess,Fnote,FMapName,
                                      FMapNumber,FTaxRate,FAuxPriceDiscount,
                                      FTaxAmount,FAllAmount,FEntrySelfP0250,
                                      FEntrySelfP0251,FSourceBillNo,
                                      FSourceTranType,FSourceInterId,
                                      FSourceEntryID,FContractBillNo,
                                      FContractInterID,FContractEntryID,
                                      FAuxQtyInvoice,FQtyInvoice,FMrpLockFlag )
                 
    SELECT @FMaxNum,FEntryID,'0',FItemID,0,FQty,FUnitID,FQty,0,
                          FFetchTime,
    0,0,0,0,0,17,FUse,'','',0,0,0,0,'','',
                         
    @FBillNo,70,32971,13,'',0,0,0,0,0
                 
    FROM    PORequestEntry
                 
    WHERE   FInterID= @FInterID AND FSupplyID= @FSupplyID    
         
    --记录数与最大行号不一致, 行号重新排序
          SELECT @ROwID=COUNT(*FROM POOrderEntry Where FInterID= @FMaxNum
         
    SELECT @FEntryID=MAX(FEntryID) FROM POOrderEntry Where FInterID= @FMaxNum
         
    IF (@ROwID<>@FEntryID)
         
    BEGIN
           
    SELECT @ROwID=1
           
    DECLARE POOrderEntryCursorCURSOR
           
    FOR
           
    SELECT  FEntryID
           
    FROM    POOrderEntry
           
    WHERE   FInterID= @FMaxNum
           
    ORDER BY FEntryID
           
    OPEN  POOrderEntryCursor
           
    FETCH NEXT FROM  POOrderEntryCursor INTO @FEntryID
           
    WHILE @@FETCH_STATUS = 0
           
    BEGIN
             
    UPDATE  POOrderEntry
             
    SET     FEntryID= @ROwID
             
    WHERE   FInterID= @FMaxNum AND FEntryID= @FEntryID  
             
    FETCH NEXT FROM POOrderEntryCursor INTO @FEntryID        
             
    SELECT @ROwID = @ROwID + 1
           
    END
             
    CLOSE POOrderEntryCursor
             
    deallocate POOrderEntryCursor
           
    END
             
    --采购订单取价更新
              --1.取最低单价
              SELECT MIN(b1.FPrice)AS FPrice,b1.FItemID,b1.FDiscount
             
    INTO    #minFprice
             
    FROM    t_SupplyEntry b1
                     
    RIGHT JOIN POOrderEntry a1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum AND b1.FUsed= 1
             
    GROUP BY b1.FItemID,b1.FDiscount         
             
    --2 更新采购订单单价
              UPDATE  a1
             
    SET     a1.FPrice= b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAuxPrice
    = b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty,
                      a1.FAuxTaxPrice
    = b1.FPrice,
                      a1.FAllamount
    = b1.FPrice* a1.FQty,
                      a1.FTaxAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FCess/ 100 * a1.FQty,
                      a1.FAuxPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FTaxPrice
    = b1.FPrice,
                      a1.FAmtDiscount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty* b1.FDiscount/ 100,
                      a1.FEntrySelfP0247
    = b1.FPrice* a1.FQty
             
    FROM    POOrderEntry a1
                     
    RIGHT JOIN #minFPrice b1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum --AND b1.FUsed =1
             --3. 删除临时表
              DROP TABLE #minFPrice 
            
    -- 审核采购订单
             UPDATE  POOrderSET FStatus=1,FCheckerID= @FCheckerID WHERE FInterID=@FMaxNum
        
    END
     
    END
    END

    CREATE TRIGGER [PORequestToPOOrder] ON [dbo].[PORequest]
    FOR UPDATE
    AS
    --采购申请单自动转至采购订单
    BEGIN
     
    DECLARE @FCurrencyID INT,
       
    @FInterID INT,
       
    @FEntryID INT,
       
    @ROwID INT,
       
    @FBillno VARCHAR(50),
       
    @FSupplyID INT,
       
    @FStatus INT,
       
    @FNumber VARCHAR(50),
       
    @FLength INT,
       
    @FBrNO INT,
       
    @FZero DECIMAL(28,10)
     
    DECLARE @FMaxNum INT,
       
    @FCustID INT,
       
    @FSaleStyle INT,
       
    @FDeptID INT,
       
    @FEmpID INT,
       
    @FBillerID INT,
       
    @FMangerID INT,
       
    @FBillPOONo VARCHAR(50),
       
    @FBillCurNo INT,
       
    @FBillCurChar VARCHAR(50),
       
    @FCheckerID INT
     
     
    SELECT @FCustID = 4017,@FBrNO = 0,@FZero = 0.000,@FDeptID = 112,
             
    @FSupplyID = 71471,@FEmpID = 432,@FBillerID = 16394,
             
    @FMangerID = 73751,@FCheckerID = 16531
     
    SELECT @FBillNo = FBillNo,@FStatus = FStatus,@FInterid = FInterid
     
    FROM    inserted
     
    IF (@FStatus=1 AND Update(FStatus))
     
    BEGIN
        
    --1. 采购申请单中有吉利发物料
         --2. 采购订单没有吉利发此笔申请单物料
         IF Exists(Select 1 From PORequestEntry Where FInterID= @FInterID AND FSupplyID=@FSupplyID)AND NOT Exists(SELECT 1 FROM POOrder a1LEFT JOIN POOrderEntry b1ON a1.FInterID=b1.FInterIDWHERE a1.FSupplyID=@FSupplyID AND b1.FSourceBillNo=@FBillNo)
        
    BEGIN
          
    --获取采购订单 FInterID FBillNo编号
           select @FMaxNum=FMaxNum+1 from ICMaxNum where FTableName='POOrder'
          
    update ICMaxNumset FMaxNum=@FMaxNum where FTableName='POOrder'
          
    select @FBillCurNo=FCurNofrom  ICBillNowhere FBillID=71
          
    update ICBillNoset FCurNo=FCurNo+1 where FBillID=71
          
    update t_billcoderuleset FProjectVal=@FBillCurNo+1 where fbilltypeid=71 and fclassindex=2
          
    select @FBillPOONo=FProjectValfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=1
          
    select @FLength=FLengthfrom t_billcoderulewhere fbilltypeid=71 and fclassindex=2
          
    select @FBillCurChar=right(cast(power(10,4)as varchar)+@FBillCurNo,@FLength)
          
    select @FBillPOONo=@FBillPOONo+@FBillCurChar
          
    --采购订单主表
           INSERT INTO POOrder ( FInterID,FBillNo,FBrNo,FTranType,FCancellation,
                                 FStatus,FSupplyID,Fdate,FCurrencyID,FCheckDate,
                                 FMangerID,FDeptID,FEmpID,FBillerID,FExchangeRate,
                                 FPOStyle,FRelateBrID,FMultiCheckLevel1,
                                 FMultiCheckDate1,FMultiCheckLevel2,
                                 FMultiCheckDate2,FMultiCheckLevel3,
                                 FMultiCheckDate3,FMultiCheckLevel4,
                                 FMultiCheckDate4,FMultiCheckLevel5,
                                 FMultiCheckDate5,FMultiCheckLevel6,
                                 FMultiCheckDate6,FSelTranType,FBrID,FExplanation,
                                 FSettleID,FSettleDate,FAreaPS,FPOOrdBillNo,
                                 FHeadSelfP0224,FHeadSelfP0225,FHeadSelfP0228 )
          
    VALUES (@FMaxNum,@FBillPOONo,'0',71,0,0,@FSupplyID,GETDATE(),1,NULL,
                   
    @FMangerID,@FDeptID,@FEmpID,@FBillerID,1,252,0,NULL,NULL,NULL,
                   
    NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,70,0,'',0,
                   
    GETDATE(),20302,'',NULL,'','' )
          
    --采购订单子表
           INSERT INTO POOrderEntry ( FInterID,FEntryID,FBrNo,FItemID,FAuxPropID,
                                      FQty,FUnitID,FAuxQty,FSecCoefficient,Fdate,
                                      FSecQty,FAuxTaxPrice,FEntrySelfP0247,
                                      Fauxprice,FAmount,FCess,Fnote,FMapName,
                                      FMapNumber,FTaxRate,FAuxPriceDiscount,
                                      FTaxAmount,FAllAmount,FEntrySelfP0250,
                                      FEntrySelfP0251,FSourceBillNo,
                                      FSourceTranType,FSourceInterId,
                                      FSourceEntryID,FContractBillNo,
                                      FContractInterID,FContractEntryID,
                                      FAuxQtyInvoice,FQtyInvoice,FMrpLockFlag )
                 
    SELECT @FMaxNum,FEntryID,'0',FItemID,0,FQty,FUnitID,FQty,0,
                          FFetchTime,
    0,0,0,0,0,17,FUse,'','',0,0,0,0,'','',
                         
    @FBillNo,70,32971,13,'',0,0,0,0,0
                 
    FROM    PORequestEntry
                 
    WHERE   FInterID= @FInterID AND FSupplyID= @FSupplyID    
         
    --记录数与最大行号不一致, 行号重新排序
          SELECT @ROwID=COUNT(*FROM POOrderEntry Where FInterID= @FMaxNum
         
    SELECT @FEntryID=MAX(FEntryID) FROM POOrderEntry Where FInterID= @FMaxNum
         
    IF (@ROwID<>@FEntryID)
         
    BEGIN
           
    SELECT @ROwID=1
           
    DECLARE POOrderEntryCursorCURSOR
           
    FOR
           
    SELECT  FEntryID
           
    FROM    POOrderEntry
           
    WHERE   FInterID= @FMaxNum
           
    ORDER BY FEntryID
           
    OPEN  POOrderEntryCursor
           
    FETCH NEXT FROM  POOrderEntryCursor INTO @FEntryID
           
    WHILE @@FETCH_STATUS = 0
           
    BEGIN
             
    UPDATE  POOrderEntry
             
    SET     FEntryID= @ROwID
             
    WHERE   FInterID= @FMaxNum AND FEntryID= @FEntryID  
             
    FETCH NEXT FROM POOrderEntryCursor INTO @FEntryID        
             
    SELECT @ROwID = @ROwID + 1
           
    END
             
    CLOSE POOrderEntryCursor
             
    deallocate POOrderEntryCursor
           
    END
             
    --采购订单取价更新
              --1.取最低单价
              SELECT MIN(b1.FPrice)AS FPrice,b1.FItemID,b1.FDiscount
             
    INTO    #minFprice
             
    FROM    t_SupplyEntry b1
                     
    RIGHT JOIN POOrderEntry a1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum AND b1.FUsed= 1
             
    GROUP BY b1.FItemID,b1.FDiscount         
             
    --2 更新采购订单单价
              UPDATE  a1
             
    SET     a1.FPrice= b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAuxPrice
    = b1.FPrice/ (1 + a1.FCess/ 100 ),
                      a1.FAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty,
                      a1.FAuxTaxPrice
    = b1.FPrice,
                      a1.FAllamount
    = b1.FPrice* a1.FQty,
                      a1.FTaxAmount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FCess/ 100 * a1.FQty,
                      a1.FAuxPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FPriceDiscount
    = b1.FPrice* (1 - b1.FDiscount/ 100 ),
                      a1.FTaxPrice
    = b1.FPrice,
                      a1.FAmtDiscount
    = b1.FPrice/ (1 + a1.FCess/ 100 )* a1.FQty* b1.FDiscount/ 100,
                      a1.FEntrySelfP0247
    = b1.FPrice* a1.FQty
             
    FROM    POOrderEntry a1
                     
    RIGHT JOIN #minFPrice b1ON a1.FItemID= b1.FItemID
             
    WHERE   a1.FInterID= @FMaxNum --AND b1.FUsed =1
             --3. 删除临时表
              DROP TABLE #minFPrice 
            
    -- 审核采购订单
             UPDATE  POOrderSET FStatus=1,FCheckerID= @FCheckerID WHERE FInterID=@FMaxNum
        
    END
     
    END
    END

     

  • 相关阅读:
    买房的贷款时间是否是越长越好?https://www.zhihu.com/question/20842791
    asp.net cookie and session
    leelazero and google colab
    download file by python in google colab
    physical processor, core, logical processor
    通过powershell操作eventlog
    openxml in sql server
    get the page name from url
    How to Execute Page_Load() in Page's Base Class?
    Difference between HttpContext.Request and Request
  • 原文地址:https://www.cnblogs.com/jshchg/p/2149719.html
Copyright © 2020-2023  润新知