/******************************************************* --TYPE: SPECIALLY DESIGNATED IN ONE COUNTRY (CHINA) --DETAIL: 处理资产变卖 --CREATE: 2006/12/26 ; WAN CHENG JIAN --REVISION1: --REVISION2: --REVISION3: *******************************************************/ ALTER PROC ZDC_SP_ADEAL_WITH_CH_FG @CO_CD VARCHAR(4),@DIV_CD VARCHAR(4),@F_MM VARCHAR(6),@T_MM VARCHAR(6) AS BEGIN DECLARE CURSOR1 CURSOR FOR SELECT CO_CD,ASSET_CD,SEQ_NB,CHG_DT FROM ASSET_D WHERE CO_CD = @CO_CD AND CHG_FG = 2 AND SUBSTRING(CHG_DT,1,6) < = @T_MM AND SUBSTRING(CHG_DT,1,4) = SUBSTRING(@F_MM,1,4) DECLARE @LCO_CD VARCHAR(4) DECLARE @LASSET_CD VARCHAR(10) DECLARE @LSEQ_NB NUMERIC(5,0) DECLARE @LCHG_DT VARCHAR(8) DECLARE @LPRE_AM NUMERIC(17,4) DECLARE @LPRE_DAM NUMERIC(17,4) DECLARE @LCUR_DAM NUMERIC(17,4) OPEN CURSOR1 FETCH NEXT FROM CURSOR1 INTO @LCO_CD,@LASSET_CD,@LSEQ_NB,@LCHG_DT WHILE @@FETCH_STATUS = 0 BEGIN --yuanzhi SET @LPRE_AM = 0 SELECT @LPRE_AM = SUM(GET_AM) FROM (SELECT ASSET_CD ,GET_AM FROM ASSET WHERE CO_CD = @LCO_CD AND SUBSTRING(GET_DT,1,6) < SUBSTRING(@LCHG_DT,1,6) AND ASSET_CD = @LASSET_CD UNION SELECT ASSET_CD,(CASE WHEN CHG_FG = 0 THEN CHG_AM ELSE (-1* CHG_AM) END ) AS CHG_AM FROM ASSET_D WHERE CO_CD = @LCO_CD AND SUBSTRING(CHG_DT,1,6) <=SUBSTRING(@LCHG_DT,1,6) AND ASSET_CD = @LASSET_CD ) AS A1 SET @LPRE_AM = ISNULL(@LPRE_AM,0) SELECT @LPRE_DAM = 0,@LCUR_DAM = 0 SELECT @LPRE_DAM = PRE_DAM FROM ADPREY WHERE CO_CD = @LCO_CD AND ASSET_CD = @LASSET_CD AND GISU = (SELECT GISU + (CAST(SUBSTRING(@LCHG_DT,1,4) AS INT)-(CAST(SUBSTRING(FR_DT,1,4) AS INT)))FROM SCO WHERE CO_CD = @LCO_CD) SELECT @LCUR_DAM = PRE_DAM + CUR_DAM FROM ADPREM WHERE CO_CD = @LCO_CD AND ASSET_CD = @LASSET_CD AND DPRE_YM = SUBSTRING(@LCHG_DT,1,6) /* SELECT @LCUR_DAM = @LPRE_AM - ISNULL(@LPRE_DAM,0) - ISNULL(@LCUR_DAM,0) --SELECT * FROM ASSET_D UPDATE ASSET_D SET CHG_AM = @LCUR_DAM WHERE CO_CD = @LCO_CD AND ASSET_CD = @LASSET_CD AND SEQ_NB = @LSEQ_NB */ UPDATE ASSET_D SET CHG_AM = @LPRE_AM,CHG_DAM = ISNULL(@LPRE_DAM,0) + ISNULL(@LCUR_DAM,0),CHG_DOC = '资产变卖/报废' WHERE CO_CD = @LCO_CD AND ASSET_CD = @LASSET_CD AND SEQ_NB = @LSEQ_NB UPDATE ADPREM SET DROP_DAM = ISNULL(@LPRE_DAM,0) + ISNULL(@LCUR_DAM,0),DROP_AM = @LPRE_AM WHERE CO_CD = @LCO_CD AND ASSET_CD = @LASSET_CD AND DPRE_YM = LEFT(@LCHG_DT,6) FETCH NEXT FROM CURSOR1 INTO @LCO_CD,@LASSET_CD,@LSEQ_NB,@LCHG_DT END CLOSE CURSOR1 DEALLOCATE CURSOR1 END