📄 +
字号:
**************************************************************
* 计提长期待摊费用.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 + -