📄
字号:
**************************************************************
* 月合计.PRG *
**************************************************************
SET TALK OFF && 阻止对话结果传送到窗口
SET CENTURY ON && 指定用四位数表示年
SET DATE ANSI && 日期格式yy.mm.dd
CLEAR && 请屏幕
PUBLIC BEGIN,the_end && 定义公共日期变量
DO FORM 表单2 NAME 记账开始结束时间 LINK && 执行表单
READ EVENTS && 激活事件CLEAR
STORE GOMONTH(the_end,-1) TO syhjrq && 上月合计日期
STORE MONTH(the_end) TO yuefen && 月份
DEFI WINDOW yhj FROM 5,20 TO 15,70 TITLE ' 进行月合计 ' CLOSE && 定义窗口
ACTI WINDOW yhj && 激活窗口
@ 4,5 SAY '几月份合计?' GET yuefen DEFA 0 SIZE 1,2 && 编辑月份
READ && 激活对象
IF USED('ZK67') && 如果表已打开
SELECT ZK67 && 激活工作区
ELSE && 否则
SELECT 3 && 激活工作区
USE 科目总控!zk85 && 打开表‘ZK85’(总控85,内含85个科目)
ENDIF
COPY TO ARRAY zza && 复制到总帐数组
STORE RECC() TO zkn && 记下纪录个数
CLEAR && 请屏幕
@ 1,10 SAY '是否逐项进行月合计?' && 提示信息
@ 3,9 SAY '逐项 单项 单项'
STORE 2 TO h
@ 3,9 GET h FUNC '*ht 逐项;单项;取消' SIZE 2,6,6 DEFA 2
READ
DO CASE
CASE h=1
STORE 1 TO b
STORE zkn TO e
CASE h=2
DIME m(zkn)
FOR i=1 TO zkn
m(i)=zza(i,1)+' '+zza(i,2)
NEXT
DEFI WINDOW lst FROM 1,51 TO 20,79 TITLE '单项月合计科目选择'
ACTI WINDOW lst
STORE 1 TO s
@ 0,0 GET s FROM m FUNC '&t' DEFA 1
READ CYCLE
DEAC WINDOW lst
STORE s TO b,e
CASE h=3
CLEAR ALL
CANCEL
ENDCASE
DEACTI WINDOW yhj
DIME mx(300,3)
FOR i=b TO e
IF zza(i,5)<>'暂不使用'
DO CASE
CASE ALLTRIM(zza(i,2))='现金'.OR.ALLTRIM(zza(i,2))='其他货币资金'
IF FILE(zza(i,3)+'.dbf')
USE &zza(i,3)
ENDIF
STORE 0 TO jhj,dhj
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj
USE &zza(i,6)
GOTO BOTTOM
STORE 余额 TO yu_e
IF 日期<>syhjrq
IF 日期=the_end
GOTO RECC()-1
STORE 余额 TO yu_e
GOTO BOTT
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月计 '
DO rk
USE
ELSE
WAIT WINDOW '月份不符'
BROW TITLE zza(i,2)+zza(i,6)+'合计'
ENDIF
ELSE
APPEND BLANK
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月计 '
DO rk
USE
ENDIF
&& 资产__科目:123,133,139,151,169 损益:512,542,550,504
CASE zza(i,5)='选用科目'.AND.;
(ALLTRIM(zza(i,2))='应收帐款';
.OR.ALLTRIM(zza(i,2))='应收票据';
.OR.ALLTRIM(zza(i,2))='短期投资';
.OR.ALLTRIM(zza(i,2))='坏帐准备';
.OR.ALLTRIM(zza(i,2))='预付帐款';
.OR.ALLTRIM(zza(i,2))='其他应收款';
.OR.ALLTRIM(zza(i,2))='材料采购';
.OR.ALLTRIM(zza(i,2))='原材料';
.OR.ALLTRIM(zza(i,2))='包装务';
.OR.ALLTRIM(zza(i,2))='低值易耗品';
.OR.ALLTRIM(zza(i,2))='材料成本差异';
.OR.ALLTRIM(zza(i,2))='委托加工材料';
.OR.ALLTRIM(zza(i,2))='自制半成品';
.OR.ALLTRIM(zza(i,2))='待摊费用';
.OR.ALLTRIM(zza(i,2))='长期投资';
.OR.ALLTRIM(zza(i,2))='累计折旧';
.OR.ALLTRIM(zza(i,2))='在建工程';
.OR.ALLTRIM(zza(i,2))='无形资产';
.OR.ALLTRIM(zza(i,2))='固定资产清理';
.OR.ALLTRIM(zza(i,2))='待处理财产损益';
.OR.ALLTRIM(zza(i,2))='产成品';
.OR.ALLTRIM(zza(i,2))='生产成本';
.OR.ALLTRIM(zza(i,2))='其他业务支出';
.OR.ALLTRIM(zza(i,2))='营业外支出';
.OR.ALLTRIM(zza(i,2))='所得税';
.OR.ALLTRIM(zza(i,2))='产品销售成本';
.OR.ALLTRIM(zza(i,2))='产品销售费用';
.OR.ALLTRIM(zza(i,2))='财务费用';
.OR.ALLTRIM(zza(i,2))='产品销售锐金及附加')
IF FILE(zza(i,3)+'.dbf')
USE &zza(i,3)
STORE 0 TO jhj,dhj
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj
USE &zza(i,6)
GOTO BOTTOM
STORE 余额 TO yu_e
IF 日期<>syhjrq
IF 日期=the_end
GOTO RECC()-1
STORE 余额 TO yu_e
GOTO BOTT
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月计 '
DO rk
USE
ELSE
WAIT WINDOW '月份不符'
BROW TITLE zza(i,2)+zza(i,6)+'合计'
ENDIF
ELSE
APPEND BLANK
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月计 '
DO rk
USE
ENDIF
ENDIF
&& 负债或所有者权益__科目:负债 201,204,211,214,231 所有者权益 313,321,322 损益 511,531,541
CASE ALLTRIM(zza(i,5))='选用科目'.AND.;
(ALLTRIM(zza(i,2))='短期借款';
.OR.ALLTRIM(zza(i,2))='应付票据';
.OR.ALLTRIM(zza(i,2))='应付帐款';
.OR.ALLTRIM(zza(i,2))='预收帐款';
.OR.ALLTRIM(zza(i,2))='其他应付款';
.OR.ALLTRIM(zza(i,2))='应付工资';
.OR.ALLTRIM(zza(i,2))='应付福利费';
.OR.ALLTRIM(zza(i,2))='应交税金';
.OR.ALLTRIM(zza(i,2))='产品销售收入';
.OR.ALLTRIM(zza(i,2))='应付利润';
.OR.ALLTRIM(zza(i,2))='其他应交款';
.OR.ALLTRIM(zza(i,2))='预提费用';
.OR.ALLTRIM(zza(i,2))='待扣税金';
.OR.ALLTRIM(zza(i,2))='长期借款';
.OR.ALLTRIM(zza(i,2))='应付债券';
.OR.ALLTRIM(zza(i,2))='长期应付款';
.OR.ALLTRIM(zza(i,2))='实收资本';
.OR.ALLTRIM(zza(i,2))='资本公积';
.OR.ALLTRIM(zza(i,2))='盈余公积';
.OR.ALLTRIM(zza(i,2))='本年利润';
.OR.ALLTRIM(zza(i,2))='利润分配';
.OR.ALLTRIM(zza(i,2))='其他业务收入';
.OR.ALLTRIM(zza(i,2))='营业外收入' )
IF FILE(zza(i,3)+'.dbf')
USE &zza(i,3)
STORE 0 TO jhj,dhj
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj
USE &zza(i,6)
GOTO BOTTOM
IF 日期<>syhjrq
IF 日期=the_end
GOTO RECC()-1
STORE 余额 TO yu_e
GOTO BOTT
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e-jhj+dhj
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月计 '
DO rk
USE
ELSE
WAIT WINDOW '月份不符'
BROW TITLE zza(i,2)+zza(i,6)+'合计'
ENDIF
ELSE
STORE 余额 TO yu_e
APPEND BLANK
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e-jhj+dhj
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月计 '
DO rk
USE
ENDIF
ENDIF
&& 资产科目(有明细):102
CASE (ALLTRIM(zza(i,2))='银行存款').AND.ALLTRIM(zza(i,5))='选用明细'
USE &zza(i,4)
STORE RECC() TO N
COPY TO ARRAY mx
STORE 0 TO jhj,dhj,jhjz,dhjz
FOR j=1 TO N-1
USE &mx(j,2)
STORE 0 TO jhj,dhj
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj
jhjz=jhjz+jhj
dhjz=dhjz+dhj
USE &mx(j,3)
GOTO BOTTOM
STORE 余额 TO yu_e
IF 日期<>syhjrq
IF 日期=the_end
GOTO RECC()-1
STORE 余额 TO yu_e
GOTO BOTT
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
ELSE
WAIT WINDOW '月份不符'
BROW TITLE mx(j,1)+mx(j,3)+'合计'
ENDIF
ELSE
APPEND BLANK
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
ENDIF
NEXT
* 总帐
USE &zza(i,6)
GOTO BOTTOM
STORE 余额 TO yu_e
IF 日期<>syhjrq
IF 日期=the_end
GOTO RECC()-1
STORE 余额 TO yu_e
GOTO BOTT
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhjz
REPLACE 贷方 WITH dhjz
REPLACE 余额 WITH yu_e+jhjz-dhjz
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月合计 '
DO rk
USE
ELSE
WAIT WINDOW '月份不符'
BROW TITLE zza(i,2)+zza(i,6)+'合计'
ENDIF
ELSE
APPEND BLANK
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhjz
REPLACE 贷方 WITH dhjz
REPLACE 余额 WITH yu_e+jhjz-dhjz
BROWSE ;
NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 TITLE zza(i,2)+' '+zza(i,6)+'月合计 '
DO rk
USE
ENDIF
&& 资产科目(有明细):113,119,123,139,502
CASE ALLTRIM(zza(i,5))='选用明细'.AND.;
(ALLTRIM(zza(i,2))='应收帐款';
.OR.ALLTRIM(zza(i,2))='银行存款';
.OR.ALLTRIM(zza(i,2))='应收票据';
.OR.ALLTRIM(zza(i,2))='短期投资';
.OR.ALLTRIM(zza(i,2))='坏帐准备';
.OR.ALLTRIM(zza(i,2))='预付帐款';
.OR.ALLTRIM(zza(i,2))='其他应收款';
.OR.ALLTRIM(zza(i,2))='材料采购';
.OR.ALLTRIM(zza(i,2))='原材料';
.OR.ALLTRIM(zza(i,2))='包装务';
.OR.ALLTRIM(zza(i,2))='低值易耗品';
.OR.ALLTRIM(zza(i,2))='材料成本差异';
.OR.ALLTRIM(zza(i,2))='委托加工材料';
.OR.ALLTRIM(zza(i,2))='自制半成品';
.OR.ALLTRIM(zza(i,2))='待摊费用';
.OR.ALLTRIM(zza(i,2))='长期投资';
.OR.ALLTRIM(zza(i,2))='累计折旧';
.OR.ALLTRIM(zza(i,2))='在建工程';
.OR.ALLTRIM(zza(i,2))='无形资产';
.OR.ALLTRIM(zza(i,2))='固定资产清理';
.OR.ALLTRIM(zza(i,2))='待处理财产损益';
.OR.ALLTRIM(zza(i,2))='产成品';
.OR.ALLTRIM(zza(i,2))='生产成本';
.OR.ALLTRIM(zza(i,2))='其他业务支出';
.OR.ALLTRIM(zza(i,2))='营业外支出';
.OR.ALLTRIM(zza(i,2))='所得税';
.OR.ALLTRIM(zza(i,2))='产品销售成本';
.OR.ALLTRIM(zza(i,2))='产品销售费用';
.OR.ALLTRIM(zza(i,2))='管理费用';
.OR.ALLTRIM(zza(i,2))='财务费用';
.OR.ALLTRIM(zza(i,2))='产品销售锐金及附加')
*? zza(i,4)
*wait
USE &zza(i,4)
STORE RECC() TO N
COPY TO ARRAY mx
STORE 0 TO jhj,dhj,jhjz,dhjz
FOR j=1 TO N-1
? j,mx(j,2)
* wait
USE &mx(j,2)
STORE 0 TO jhj,dhj
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj
jhjz=jhjz+jhj
dhjz=dhjz+dhj
USE &mx(j,3)
GOTO BOTTOM
STORE 余额 TO yu_e
IF 日期<>syhjrq
IF 日期=the_end
GOTO RECC()-1
STORE 余额 TO yu_e
GOTO BOTT
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
ELSE
* wait window '月份不符'
* brow title mx(j,1)+mx(j,3)+'合计'
ENDIF
ELSE
APPEND BLANK
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e+jhj-dhj
ENDIF
NEXT
* 总帐
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -