⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dfjs.bak

📁 不错的用电管理系统,用VFP6.0做的.大家可以下来看看哦
💻 BAK
字号:


**********************************
*                                *
*   电费计算过程文件  dfjs.dbf   *
*                                *
**********************************

PUBLIC MHH,MREC


PROC CB_JSSYDL &&****** 计算实用电量*******************************************************************************

	PRIV BRL

	SELE LS_DF &&LS_DF.DBF

	REPL DL WITH 0
	REPL DF WITH 0
	REPL FJF1 WITH 0
	REPL FJF2 WITH 0
	REPL FJF3 WITH 0
	REPL FJF4 WITH 0
	REPL FJF5 WITH 0
	REPL FJF6 WITH 0
	REPL FJF7 WITH 0
	REPL FJF8 WITH 0
	REPL JBDF WITH 0
	REPL TZDF WITH 0
	REPL SYDL WITH 0
	REPL FBDL WITH 0
	REPL BS WITH 0 
	REPL XS WITH 0
	REPL WGBS WITH 0

	If UPPER(ZBBZ)=='1'
		REPL SYDL WITH (CM2-ZB+CB-CM1)*VAL(BL)*DLB/100
	Else
		BRL=0
		IF CM2<CM1
		    IF CM1<=1000
		        BRL=1000
		    Endi
		    IF CM1>1000 .AND. CM1<=10000
		        BRL=10000
		    ENDI
		    IF CM1>10000
		        BRL=100000
		    ENDI
		ENDI
		REPL SYDL WITH (CM2+BRL-CM1)*VAL(BL)*DLB/100
	Endi

	RELEASE BRL

ENDPROC



PROC CB_JSYGDL &&******* 计算总有功电量*******************************************************************************

	PRIV FN,MHH,FBDL1,MREC

	SELE LS_DF

	IF UPPER(YGBZ)=='1'

		MREC=RECNO()
		MHH=ALLT(LS_DF.HH)

	   	SELE 9
	   	USE
	   	USE YG1
		if used ("ls_js")
			use in ls_js
		endif
		copy to ls_js for ALLT(BELONG)==MHH
		sele 8
		use
		use ls_js
		go top
	   	FBDL1=0
	   	DO WHILE !EOF()
	      	SELE LS_DF
	        LOCA FOR ALLT(HH)==ALLT(LS_JS.HH) && 8
	        IF FOUND()
	        	FBDL1=FBDL1+SYDL+XS
	            SELE YG1
	            LOCA FOR ALLT(HH)==ALLT(LS_DF.HH)
	            REPL SYDL WITH LS_DF.SYDL+LS_DF.XS
	        ENDI
	      	SELE LS_JS
	      	SKIP
	   	ENDDO
		USE IN 9
		USE IN 8

	  	SELE LS_DF
		GO MREC
	   	REPL SYDL WITH SYDL+FBDL1
		
	ENDIF

ENDPROC


PROC CB_JSFBDL &&****** 计算分表电量*******************************************************************************

	PRIV BB,MHH,FILE9,FBDL1,BCZMFB1

	SELE LS_DF
	
	IF UPPER(FBBZ)=='1'

		MREC=RECNO()
	   	MHH=ALLT(LS_DF.HH)
	   	
	   	SELE 9
	   	USE
	   	USE FB1.DBF
		if used ("ls_js")
			use in ls_js
		endif
		copy to ls_js for ALLT(BELONG)==MHH
		sele 8
		use
		use ls_js
		go top
	   	FBDL1=0
	   	BCZMFB1=0
	   	DO WHILE !EOF()
	   		SELE FB1
			loca for ALLT(hh)==MHH
			REPL SYDL WITH 0
	        SELE LS_DF
	        LOCA FOR ALLT(HH)==ALLT(LS_JS.HH)
	        IF FOUND() .AND. ZBBZ<>"N"
	             FBDL1=FBDL1+SYDL+GSDD+ZBDL &&实用电量+固收电度+追补电量
	             SELE FB1
		         LOCA FOR ALLT(HH)==ALLT(LS_DF.HH)
	             REPL SYDL WITH A.SYDL+A.GSDD+A.ZBDL
	        ENDI
	      	SELE LS_JS
	      	SKIP
	   	ENDDO
		USE IN 9
		USE IN 8

	   	SELE LS_DF
		GO MREC
	   	REPL FBDL WITH FBDL1

	ENDIF

ENDPROC



PROC CB_JSWGDL &&********* 计算无功电量*******************************************************************************

	PRIV MHH,FILE9,FBDL1,WGFBDL1

	SELE LS_DF

	IF UPPER(WGBZ)=='1'

		MREC=RECNO()
	 	MHH=ALLT(LS_DF.HH)
	    SELE 9
	    USE
	    USE WG1.DBF
		if used ("ls_js")
			use in ls_js
		endif
		copy to ls_js for ALLT(BELONG)==MHH
		sele 8
		use
		use ls_js
		go top
	    FBDL1=0
	    WGFBDL1=0
	    DO WHILE !EOF()
	    	SELE LS_DF
	        LOCA FOR ALLT(HH)==ALLT(LS_JS.HH)
	        IF FOUND()
	         	FBDL1=FBDL1+SYDL+GSDD+GSBS+ZBDL
	            WGFBDL1=WGFBDL1+FBDL
	            SELE WG1
	            LOCA FOR ALLT(HH)==ALLT(LS_DF.HH)
	           	REPL SYDL WITH LS_DF.SYDL+LS_DF.GSDD+LS_DF.GSBS+LS_DF.ZBDL
	        ENDI
	        SELE LS_JS
	        SKIP
	    ENDDO
		USE IN 9
		USE IN 8

	    SELE LS_DF
		GO MREC
	    REPL WGDL WITH FBDL1
	    REPL WGFBDL WITH WGFBDL1

	ENDIF

ENDPROC



PROC CB_JSBS &&****** 计算变损*******************************************************************************

	PRIV MHH,RL1,SYDL1,BYQXH1
	PRIV LS,BS1,BS2
	********  查变损,用FILE1传递区号文件名
	SELE LS_DF
	
	MREC=RECNO()
	MHH=ALLT(LS_DF.HH)
	RL1=BZRL
	SYDL1=SYDL
	BYQXH1=ALLT(BYQXH)
	SELE 9
	USE
	USE BYQ
	LOCA FOR ALLT(BZ)==BYQXH1
	IF FOUND() .AND. RL1>0
	    SELE 9
	    USE
	    LS='TAB'+BYQXH1
	    USE &LS
	    LOCA FOR RL>=RL1 .AND. YL>=SYDL1
	    BS1=YG
	    BS2=WG
	    SELE LS_DF
	    LOCA FOR ALLT(HH)==MHH
	   	REPL BS WITH BS1*(30-tdts)/30
	    REPL WGBS WITH BS2*(30-tdts)/30
	ENDI
	USE IN 9

	SELE LS_DF
	GO MREC
	
ENDPROC



PROC CB_FTBS1 &&****** 变损分摊1*******************************************************************************

	PRIV FILE1,MHH,SYDL1 && ******** 将变损BS1.DBF 填上实用电度SYDL

	SELE LS_DF

	IF UPPER(BSFTBZ)=='1'

		MREC=RECNO()
	   	MHH=ALLT(LS_DF.HH)
	   	SELE 9
	   	USE
	   	USE BS1.DBF
		if used("ls_js")
			use in ls_js
		endif
		copy to ls_js for allt(BELONG)==MHH
		sele 8
		use
		use ls_js
		go top
	   	DO WHILE !EOF()
	        SELE LS_DF
	        LOCA FOR allt(HH)==allt(LS_JS.HH)
	        IF FOUND()
		      	SYDL1=SYDL-FBDL+ZBDL
	    	  	SELE BS1
	            LOCA FOR ALLT(HH)==ALLT(LS_DF.HH)
	       		REPL SYDL WITH SYDL1
			ENDIF
			SELE LS_JS
	      	SKIP
	   	ENDDO
		USE IN 9
		USE IN 8

	   	SELE LS_DF
		GO MREC

	ENDIF

ENDPROC



PROC CB_FTBS2 &&****** 变损分摊2*******************************************************************************

	PRIV MHH,FILE1,BSDL1,ZDL

	******** 用变损BS.DBF 实用电度SYDL  进行变损分摊
	SELE LS_DF

	IF UPPER(BSFTBZ)=='1'

		MREC=RECNO()
	   	MHH=ALLT(LS_DF.HH)
	   	BSDL1=BS+GSBS
	   	QH1=SUBS(HH,1,4)
	   	SELE 9
	   	USE
	   	USE BS1.DBF EXCL
	   	SUM SYDL TO ZDL for allt(belong)==MHH
	   	IF ZDL<>0
	     	REPL ALL BS WITH VAL(STR(BSDL1*SYDL/ZDL,8)) for allt(belong)==MHH
	   	ENDI
		if used ("ls_js")
			use in ls_js
		endif
		copy to ls_js for allt(BELONG)==MHH
		sele 8
		use
		use ls_js
		go top
	   	DO WHILE !EOF()
	        SELE LS_DF
	        LOCA FOR allt(HH)==allt(LS_JS.HH)
			IF FOUND()
	      		REPL BS WITH LS_JS.BS
	      	ENDI
	      	SELE LS_JS
	      	SKIP
	   	ENDDO
		USE IN 9
		USE IN 8

	   	SELE LS_DF
		GO MREC
	   	
	ENDIF

ENDPROC



PROC CB_FTXS1 &&****** 计算线损并分摊1*******************************************************************************

	PRIV MHH,FILE1,SYDL1

	******** 将线损XS.DBF 填上实用电度SYDL
	SELE LS_DF

	IF UPPER(XSZB)=='1'

		MREC=RECNO()
	   	MHH=ALLT(LS_DF.HH)
	   	SELE 9
	   	USE
	   	USE XS1.DBF
		if used ("ls_js")
			use in ls_js
		endif
		copy to ls_js for allt(BELONG)==MHH
		sele 8
		use
		use ls_js
		go top
	   	DO WHILE !EOF()
	       	SELE LS_DF
	        LOCA FOR allt(HH)==allt(LS_JS.HH)
	        IF FOUND()
		      	SYDL1=SYDL-FBDL+ZBDL
	      		SELE XS1
	            LOCA FOR ALLT(HH)==ALLT(LS_DF.HH)
	       		REPL SYDL WITH SYDL1
				sele LS_JS
	      		SKIP
	      	ENDIF
	   	ENDDO
		USE IN 9
		USE IN 8

	  	SELE LS_DF
		GO MREC

	ENDIF

ENDPROC



PROC CB_FTXS2 &&****** 计算线损并分摊2*******************************************************************************

	PRIV MHH,FILE1,SYDL1,ZXS,ZDL,XS1

	SELE LS_DF

	IF UPPER(XSZB)=='1'

		MREC=RECNO()
	   	MHH=ALLT(LS_DF.HH)
	   	SYDL1=(SYDL+zbdl)-FBDL
	   	SELE 9
	   	USE
	   	USE XS1.DBF EXCL
	   	SUM SYDL TO ZDL FOR allt(BELONG)==MHH
	   	ZXS=SYDL1-ZDL
	   	IF ZXS<0
	      	ZXS=0
	   	ENDI
	   	
		IF ZDL<>0
	   		REPL ALL XS WITH VAL(STR(ZXS*SYDL/ZDL,8)) FOR allt(BELONG)==MHH
		ENDIF

		if used ("ls_js")
			use in ls_js
		endif
		copy to ls_js for allt(BELONG)==MHH
		sele 8
		use
		use ls_js
		go top
	   	DO WHILE !EOF()
	        SELE LS_DF
	        LOCA FOR allt(HH)==allt(LS_JS.HH)
	        IF FOUND()
	         	REPL XS WITH LS_JS.XS
	      	ENDI
	      	SELE LS_JS
	      	SKIP
	   	ENDDO
		USE IN 9
		USE IN 8

	   	SELE LS_DF
		GO MREC

	ENDIF

ENDPROC



PROC CB_JSLL &&****** 计算力率.比值.调整率*******************************************************************************

	PRIV MHH
	********* 王志华1994年7月29日说: 无论分表是本厂的还是其他转供表, 
	********* 在计算力率时一律不减分表
	********* 蒋林峰 1994.8.29 不是本厂的, 要减, 是本厂的, 不减!
	********* 终于在1994.11.11 王中志华写来条子, 罗桂新签字同意, 以下
	********* 算法就是根据条子来计算的(线损不参加力调)

	SELE LS_DF

	IF upper(jfbz)<>"N" .and. upper(zbbz)<>"N"

		MREC=RECNO()
		MHH=ALLT(LS_DF.HH)

		IF UPPER(WGBZ)=='1' .AND. !EMPTY(LLBZ)

			******* 计算比值
			REPL bz with 0
			REPL LL WITH 0
			REPL TZL WITH 0
			REPL TZDF WITH 0
			  
			IF VAL(LLBZ)<>0 .AND. (SYDL+bs+gsdd+gsbs-fbdl+bczmfb)<>0
				REPL BZ WITH (WGDL+WGBS-WGFBDL)/(SYDL+BS+GSDD+gsbs-FBDL+BCZMFB+XS)
			ENDIF
			IF BZ>199.9976
				REPL BZ WITH 199.9976
			ENDIF
			IF BZ<0
				REPL BZ WITH 0
			ENDIF

			********* 查力率
			MLS="TZ"+LS_DF.LLBZ
			SELE 9
			USE
			USE TAB EXCL
			LOCA FOR BZ>=LS_DF.BZ
			SELE LS_DF
			LOCA FOR ALLT(HH)==MHH
			REPL LL WITH TAB.LL/100.00
			REPL TZL WITH TAB.&MLS/100.00
			USE IN 9

		ENDIF

		SELE LS_DF
		GO MREC

	ENDIF

ENDPROC



PROC CB_JSDD &&******计算计费电度*******************************************************************************

	SELE LS_DF

	IF BSL<>0 .AND. SYDL>=VAL(DD)
		REPL BS WITH SYDL*BSL/100
	ENDIF

	REPL DL WITH (SYDL+BS+XS+GSDD+GSBS+ZBDL-FBDL)

	IF (SYDL+GSDD+ZBDL)<VAL(DD) .AND. ZBDL>=0
		REPL DL WITH VAL(DD)+BS+XS+GSBS
	ENDIF

	IF (SYDL+GSDD)<VAL(DD) .AND. ZBDL<0
		REPL DL WITH VAL(DD)+BS+XS+GSBS
	ENDIF

	IF DL<=VAL(DD)
		REPL DL WITH VAL(DD)
	ENDIF

	IF UPPER(JFBZ)="N" .OR. DL<=0 .OR. UPPER(ZBBZ)="N"
		REPL DL WITH 0
	ENDIF

ENDPROC



PROC CB_JSDF &&******计算电费*******************************************************************************

	PRIV YEAR,MONTH,DAY

	YEAR=SUBS(DTOC(DATE()),7,2)
	MONTH=SUBS(DTOC(DATE()),1,2)
	DAY=SUBS(DTOC(DATE()),4,2)

	SELE LS_DF

	if upper(jfbz)<>"N" .and. upper(zbbz)<>"N"

		REPL JBDF WITH JFRL*RLDJ*(30-tdts)/30
		REPL DDDF WITH DL*DDDJ
		REPL FJF1 WITH DL*FJDJ1
		REPL FJF2 WITH DL*FJDJ2
		REPL FJF3 WITH (DL-ydq)*FJDJ3
		if fjf3<0 
			repl fjf3 with 0
		endi
		IF (SYDL+BS)=0
		    REPL LL WITH 0
		    REPL TZL WITH 0
		ENDI

		REPL FJF4 WITH DL*FJDJ4
		REPL FJF5 WITH DL*FJDJ5

		JZDF=FJDJ2*DL
		REPL TZDF WITH (JBDF+JZDF)*TZL/100.00
		REPL FJF6 WITH dl*fjdj6

		REPL FJF7 WITH DL*FJDJ7
		repl fjf8 with dl*fjdj8

		*************四舍五入调整***************************************
		REPL FJF2 WITH DL*(FJDJ1+FJDJ2+FJDJ3+FJDJ4+FJDJ5+FJDJ6+FJDJ7+FJDJ8)-(FJF1+FJF3+FJF4+FJF5+FJF6+FJF7+FJF8) &&在基准电价项中调整
		****************************************************************

		*************力率调整电费只罚不奖*******************************
		* 2002.07.18上午10:00,龙子勋(客户服务中心主任)
		* 打电话说经蒋士斌(分管副总经理)同意力率调整电费只罚不奖。
		****************************************************************
		* 2003.01.03下午16:00,龙子勋(客户服务中心主任)
		* 相关厂矿已安装新的无功计量表,取消只罚不奖的计算方式。
		****************************************************************
*!*			IF TZDF<0
*!*				REPL TZDF WITH 0,TZL WITH 0
*!*			ENDIF
		****************************************************************
		        
		REPL DF WITH DDDF+FJF1+FJF2+FJF3+FJF4+FJF5+FJF6+JBDF+TZDF+FJF7+FJF8

		YEAR1=STR(YEAR(DATE()),4) &&系统日期
		IF MONTH(DATE())<10
		    MONTH1='0'+ALLTRIM(STR(MONTH(DATE()),2))
		ELSE
		    MONTH1=STR(MONTH(DATE()),2)
		ENDIF
		IF DAY(DATE())<10
			DAY1='0'+ALLT(STR(DAY(DATE()),2))
		ELSE
			DAY1=STR(DAY(DATE()),2)
		ENDIF

		REPL N WITH subs(YEAR1,3,2)
		REPL Y WITH MONTH1
		REPL R WITH DAY1

	ENDIF

ENDPROC

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -