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

📄 +

📁 visualfoxpro企业会计电算化实例
💻
字号:
**************************************************************
*                    计提长期待摊费用.PRG                    *
**************************************************************
SET TALK OFF                                                 && 阻止对话结果传送到窗口
SET CENTURY ON                                               && 指定用四位数表示年 
SET DATE ANSI                                                && 日期格式yy.mm.dd
SET DEVI TO SCREEN                                           && 将@ … say输出定向到屏幕 
SET PRINT OFF                                                && 不允许输出结果发送到打印机
CLEAR                                                        && 清屏幕
CLOSE DATA ALL                                               && 关闭数据库
DEFI WINDOW ljzj FROM 5,20 TO 15,60 TITLE ' 计提长期待摊费用 ' CLOSE  && 定义窗口 	                          
ACTI WINDOW ljzj                                             && 激活窗口
@ 1,5 SAY '是否逐项计提长期待摊费用?'                        && 提示信息
@ 3,4 GET h DEFA 1 FUNC '*ht 取消;确认' SIZE 2,4,20          && 命令按钮
READ                                                         && 激活对象 
IF h=1                                                       && 如果选择了取消
	CLEAR ALL                                                && 释放变量、窗口,关闭表
	CANCEL                                                   && 终止程序的执行
ENDIF
PUBLIC begin,the_end                                         && 定义公共变量 
DO FORM 表单2 NAME 记账开始结束时间 LINK                     && 执行表单
READ EVENTS                                                  && 激活事件
STORE 0 TO yf                                                && 初始换变量 
CLEAR                                                        && 请窗口
@ 2,12 SAY '请输入月份:' GET yf DEFA 0 SIZE 1,2 RANGE 1,12   && 编辑月份
READ                                                         && 激活对象
RELEA WINDOW ljzj                                            && 从内存中释放窗口
USE mx1901         && 打开长期待摊费用明细联系表,参见第22章第三节专用明细库名表结构
STORE RECC() TO N                                            && 记下纪录个数
COPY TO ARRAY a                                              && 复制到数组
STORE 0.00 TO sumyz,sumjf,sumdf,sumye                        && 初始化变量
SET DEVI TO PRINT                                            && 输出结果定向到打印机
SET PRINT ON                                                 && 允许输出到打印机
? '次序','名称','原值' AT 45,'借方' AT 65,'贷方'AT 85,'余额' AT 100  && 输出
FOR i=2 TO N-1    && 初值为2,1为科目,N为‘创建或增添新明细’,故终值为N-1  
	USE a(i,2)                                               && 打开长期待摊费用单项明细表
	GOTO TOP                                                 && 指针指向顶
	STORE 余额 TO yz                                         && 记下(原值)余额
	sumyz=sumyz + yz                                         && (原值)余额累加
	GOTO BOTT                                                && 指针指向末纪录
	STORE 余额 TO ye                                         && 记下末纪录的余额
	DO CASE                                                  && 根据情况判断处理
		CASE 日期=the_end.AND.z='z'                          && 本月计提过(为了重复打印)
			GOTO TOP                                         && 指针指向顶
			STORE 余额 TO yzye                               && 记下顶纪录之余额(原值余额)
			SUM 借方 TO jf FOR 日期>=BEGIN .AND. 日期<=the_end  && 借方累加和
			GOTO BOTTOM                                      && 指针指向末纪录
			sumjf=sumjf+借方                                 && 借金额累加和
			sumdf=sumdf+贷方                                 && 贷金额累加和
			sumye=sumye+余额                                 && 余额累加和
			? ALLTRIM(STR(i)),ALLTRIM(a(i,1)),ALLTRIM(STR(yf))+'月耗损:',;
			 ALLTRIM(STR(yzye,10,2)) AT 45,ALLTRIM(STR(借方,10,2)) AT 65,;
			 ALLTRIM(STR(贷方,10,2)) AT 85,ALLTRIM(STR(余额,10,2)) AT 100  && 输出 
			BROW   TITLE a(i,1)+a(i,2)   TIMEOUT .5          && 瞬间浏览
			   
		CASE  日期=GOMONTH(the_end,-1).AND.z='z'             && 上月计提(这是正常情况)
			GOTO TOP                                         && 指针指向顶
			STORE 余额 TO yzye                               && 记下顶纪录之余额(原值余额)
			GOTO BOTTOM                                      && 指针指向末纪录
			IF i=2         && 如果事第二个纪录(旅顺大地房地产房子 mx1901001),准备二十年提足
				DO CASE                                      && 根据情况判断处理
					CASE 余额>=yz/240                        && 当余额大于等于月计提额					
						STORE yz/240 TO df                   && 月计提额付给贷方变量
					CASE 余额>=0 .AND. 余额<yz/240    && 当余额大于等于0且余额小于月计提额
						STORE 余额 TO df                     && 余额付给贷方变量
				ENDCASE
			ELSE                                             && 否则,准备六年提足
				DO CASE                                      && 根据情况判断处理
					CASE 余额>=yz/72                         && 当余额大于等于月计提额
						STORE yz/72 TO df                    && 月计提额付给贷方变量
					CASE 余额>=0 .AND. 余额<yz/72     && 当余额大于等于0且余额小于月计提额
						STORE 余额 TO df                     && 余额付给贷方变量
				ENDCASE
			ENDIF
			APPEND BLANK                                     && 追加空纪录
			REPLACE 日期 WITH the_end                        && 替换字段,下同
			REPLACE 摘要 WITH ALLTRIM(STR(yf))+'月份耗损'
			REPLACE 贷方 WITH df
			REPLACE 余额 WITH ye+借方-贷方
			REPLACE z WITH 'z'                               && 已计提标识 
			sumdf=sumdf+贷方                                 && 累加贷金额
			sumjf=sumjf+借方                                 && 累加借金额
			sumye=sumye+余额                                 && 累加余额
			? ALLTRIM(STR(i)),ALLTRIM(a(i,1)),ALLTRIM(STR(yf))+'月耗损:',;
			 ALLTRIM(STR(yzye,10,2)) AT 45,ALLTRIM(STR(借方,10,2)) AT 65,;
			 ALLTRIM(STR(贷方,10,2)) AT 85,ALLTRIM(STR(余额,10,2)) AT 100 && 输出
			BROW   TITLE a(i,1)+a(i,2)   TIMEOUT .5          && 瞬间浏览

		CASE z#'z'.AND.日期>=BEGIN .AND. 日期<=the_end       && 新增加的长期待摊费用,当月计提
			GOTO TOP                                         && 指针指向顶
			STORE 余额 TO yzye                               && 记下顶纪录之余额(原值余额)
			SUM 借方 TO jf FOR 日期>=BEGIN .AND. 日期<=the_end && 累加借方
			GOTO BOTTOM                                      && 指针指向末纪录
			IF i=2         && 如果事第二个纪录(旅顺大地房地产房子 mx1901001),准备二十年提足
				DO CASE                                      && 根据情况判断处理
					CASE 余额>=yz/240                        && 当余额大于等于月计提额	
						STORE yz/240 TO df                   && 月计提额付给贷方变量
					CASE 余额>0 .AND. 余额<yz/240   && 当余额大于等于0且余额小于月计提额         
						STORE 余额 TO df                     && 余额付给贷方变量
				ENDCASE
			ELSE                                             && 否则,准备六年提足
				DO CASE                                      && 根据情况判断处理
					CASE 余额>=yz/72                         && 当余额大于等于月计提额
						STORE yz/72 TO df                    && 月计提额付给贷方变量
					CASE 余额>=0 .AND. 余额<yz/72     && 当余额大于等于0且余额小于月计提额
						STORE 余额 TO df                     && 余额付给贷方变量
				ENDCASE
			ENDIF
			APPEND BLANK                                    && 追加空纪
			REPLACE 日期 WITH the_end                       && 替换字段,下同
			REPLACE 摘要 WITH ALLTRIM(STR(yf))+'月份耗损'
			REPLACE 贷方 WITH df
			REPLACE 余额 WITH ye+借方-贷方
			REPLACE z WITH 'z'
			sumdf=sumdf+贷方
			sumjf=sumjf+jf                                  && 借金额
			sumye=sumye+余额
			? ALLTRIM(STR(i)),ALLTRIM(a(i,1)),ALLTRIM(STR(yf))+'月耗损:',;
			  ALLTRIM(STR(yzye,10,2)) AT 45,ALLTRIM(STR(jf,10,2)) AT 65,;
			  ALLTRIM(STR(贷方,10,2)) AT 85,ALLTRIM(STR(余额,10,2)) AT 100 && 输出
			BROW   TITLE a(i,1)+a(i,2)   TIMEOUT .5         && 瞬间浏览
			
		CASE z#'z'.AND.日期>=GOMONTH(BEGIN,-1) .AND. 日期<=GOMONTH(the_end,-1)
											        		&& 如果逢上上个月忘了计提的
			GOTO TOP                                         && 指针指向顶
			STORE 余额 TO yzye                               && 记下顶纪录之余额(原值余额)
			SUM 借方 TO jf FOR 日期>=BEGIN .AND. 日期<=the_end && 累加借方
			GOTO BOTTOM                                      && 指针指向末纪录
			IF i=2         && 如果事第二个纪录(旅顺大地房地产房子 mx1901001),准备二十年提足
				DO CASE                                      && 根据情况判断处理
					CASE 余额>=yz/240                        && 当余额大于等于月计提额	
						STORE yz/240 TO df                   && 月计提额付给贷方变量
					CASE 余额>0 .AND. 余额<yz/240   && 当余额大于等于0且余额小于月计提额         
						STORE 余额 TO df                     && 余额付给贷方变量
				ENDCASE
			ELSE                                             && 否则,准备六年提足
				DO CASE                                      && 根据情况判断处理
					CASE 余额>=yz/72                         && 当余额大于等于月计提额
						STORE yz/72 TO df                    && 月计提额付给贷方变量
					CASE 余额>=0 .AND. 余额<yz/72     && 当余额大于等于0且余额小于月计提额
						STORE 余额 TO df                     && 余额付给贷方变量
				ENDCASE
			ENDIF
			APPEND BLANK                                     && 追加空纪
			REPLACE 日期 WITH the_end                        && 替换字段,下同
			REPLACE 摘要 WITH ALLTRIM(STR(yf))+'月份耗损'
			REPLACE 贷方 WITH df
			REPLACE 余额 WITH ye+借方-贷方
			REPLACE z WITH 'z'
			sumdf=sumdf+贷方
			sumjf=sumjf+jf                                   && 借金额
			sumye=sumye+余额
			? ALLTRIM(STR(i)),ALLTRIM(a(i,1)),ALLTRIM(STR(yf))+'月耗损:',;
			  ALLTRIM(STR(yzye,10,2)) AT 45,ALLTRIM(STR(jf,10,2)) AT 65,;
			  ALLTRIM(STR(贷方,10,2)) AT 85,ALLTRIM(STR(余额,10,2)) AT 100 && 输出
			BROW   TITLE a(i,1)+a(i,2)   TIMEOUT .5          && 瞬间浏览
		OTHER                                                && 其他
			WAIT WINDOW a(i,2)+a(i,1)+'月份不适当'           && 提示信息  
			BROW TITLE a(i,2)+a(i,1)+'可能月份不适当 不予计提'   && 浏览,观察问题 
            CLEAR ALL                                        && 释放变量、窗口,关闭表
			CANCEL                                           && 终止程序的执行
	ENDCASE
NEXT
? '原值合计:',sumyz                                         && 输出,下同
? '借方合计:',sumjf
? '贷方合计:',sumdf
? '余额合计:',sumye
?
?
?
??? ' '
USE                                                          && 关闭表
SET DEVI TO SCRE                                             && 将@ … say输出定向到屏幕
SET PRINT OFF                                                && 不允许输出结果到打印机
CLEAR ALL                                                    && 释放变量、窗口,关闭表
CANCEL                                                       && 终止程序的执行
RETURN                                                       && 程序结束

⌨️ 快捷键说明

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