加工费脚本

DECLARE @ARG_PARTID VARCHAR(40),
  @ARG_EXTRAUNITID VARCHAR(40),
  @ARG_FACTPRICE DECIMAL(18,4),
  @ARG_FACTPRICE_UN DECIMAL(18,4)

DECLARE CUR_FACTPRICE CURSOR FOR
SELECT PART_ID , EXTRAUNIT_ID , FACTPRICE_PRICETAX ,factprice_price
 FROM F_FACTPRICE
 WHERE FACTPRICE_STATUS = 'E' AND
   factprice_type = '加工费'


OPEN CUR_FACTPRICE

FETCH CUR_FACTPRICE INTO @ARG_PARTID,@ARG_EXTRAUNITID,@ARG_FACTPRICE,@ARG_FACTPRICE_UN

WHILE (@@fetch_status = 0)
BEGIN
 DECLARE @ARG_PCHSORD_ID VARCHAR(40),
   @ARG_PAYMENT DECIMAL(18,4),
   @ARG_AMNT DECIMAL(18,4),
   @ARG_ACOST DECIMAL(18,4),
   @ARG_COST DECIMAL(18,4),
   @ARG_DIFF DECIMAL(18,4)
   ---------------------------

 DECLARE CUR_ASS_1 CURSOR FOR
   SELECT M.PCHSRCV_ID,M.PCHSRCV_VALUE,D.PCHSRCVIT_AMNT,D.PCHSRCVIT_ACOST,D.PCHSRCVIT_COST
     FROM F_PCHS_RCV M INNER JOIN F_PCHS_RCV_ITEMS D ON M.PCHSRCV_ID = D.PCHSRCV_ID
    WHERE D.PART_ID       = @ARG_PARTID
      AND M.EXTRAUNIT_ID = @ARG_EXTRAUNITID

   
 OPEN CUR_ASS_1

 FETCH CUR_ASS_1 INTO @ARG_PCHSORD_ID,@ARG_PAYMENT,@ARG_AMNT,@ARG_ACOST,@ARG_COST

 WHILE (@@fetch_status = 0)
 BEGIN
  SELECT @ARG_DIFF = @ARG_AMNT * @ARG_FACTPRICE_UN

  SELECT @ARG_COST = @ARG_AMNT * @ARG_FACTPRICE + @ARG_COST
  
  SELECT @ARG_PAYMENT =  @ARG_DIFF

  update F_PCHS_RCV_ITEMS
     set PCHSRCVIT_COST  = @ARG_COST,
     PCHSRCVIT_PRICE = @ARG_FACTPRICE
   where PCHSRCV_ID = @ARG_PCHSORD_ID
     and PART_ID   = @ARG_PARTID
    
  update F_PCHS_RCV
   set PCHSRCV_VALUE = @ARG_PAYMENT
   where PCHSRCV_ID = @ARG_PCHSORD_ID

  FETCH CUR_ASS_1 INTO @ARG_PCHSORD_ID,@ARG_PAYMENT,@ARG_AMNT,@ARG_ACOST,@ARG_COST
 END

 CLOSE CUR_ASS_1
 DEALLOCATE CUR_ASS_1

FETCH CUR_FACTPRICE INTO @ARG_PARTID,@ARG_EXTRAUNITID,@ARG_FACTPRICE,@ARG_FACTPRICE_UN
END
CLOSE CUR_FACTPRICE
DEALLOCATE CUR_FACTPRICE

posted @ 2011-08-31 15:51  西天之旅  阅读(112)  评论(0)    收藏  举报