📄 +
字号:
**************************************************************
* 固定资产累计折旧程序 累计折旧.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 '是否逐项进行固定资产累计折旧?' COLOR RGB(255,0,0) && 输出信息,前景红色
@ 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 && 初始化变量
@ 3,4 SAY ' ' && 清半行
STORE 1 TO g && 初始化变量
@ 3,4 GET g DEFA 1 FUNC '*ht 按月;按季' SIZE 2,4,20 && 命令按钮
READ && 激活对象
IF g=1 && 如果选择按月
@ 2,12 SAY '请输入月份:' GET yf DEFA 0 SIZE 1,2 RANGE 1,12 && 编辑月份
READ && 激活对象
USE mx1501 && 打开固定资产及折旧明细联系表,参见第二十二章第三节专用明细库名表结构
COPY TO ARRAY gdzc && 复制到gdzc固定资产数组
STORE RECC() TO N && 记下纪录个数
STORE 0.00 TO sumyjje,sumydje,sumljzj,sumlye,sumyyje,sumjz,sumlzjf,sumlzdf && 初始化变量
STORE DATE() TO riqi && 记下当日日期
CLEAR && 清窗口
@ 2,12 SAY '请输入日期:' GET riqi SIZE 1,10 DEFA DATE() && 编辑日期
READ && 激活对象
DEAC WINDOW ljzj && 挂起窗口
SET DEVI TO PRINT && 输出结果定向到打印机
SET PRINT ON && 允许输出到打印机
? ' '+ALLTRIM(STR(yf,2))+'月份累计折旧' && 输出表达式的值,下同
? '原值' AT 45,'月折旧 ' AT 65,'累折余额' AT 85,'净值' AT 100
FOR i=1 TO N-1 && 循环,N为纪录个数
USE &gdzc(i,2) && 打开表,固定资产实体表
GOTO BOTTOM && 指针指向纪录末
STORE 原值余额 TO yyje_m && 记下原值余额
IF 净值=0.OR.原值余额=0 && 如果设备已经卖了或报废
REPLACE 累折余额 WITH 0.00 && 替换字段,下同
REPLACE 净值 WITH 0.00
ENDIF
DO CASE && 根据情况判断处理
CASE 日期=the_end.AND.z='z' && 本月折旧过(为了重复打印)
SUM 累折借方 TO lzjf FOR 日期>=BEGIN .AND. 日期<=the_end && 累加
GOTO BOTTOM && 指针指向纪录末
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yf))+'月份折旧' && 替换字段
sumyjje=sumyjje+原值借方 && 原借金额累加
sumydje=sumydje+原值贷方 && 原贷金额累加
sumyyje=sumyyje+yyje_m && 原值余额累加
sumlzjf=sumlzjf+lzjf && 累折借方累加和的累加
sumljzj=sumljzj+累折贷方 && 累折贷方累加
sumlye=sumlye+累折余额 && 累折余额累加
sumjz=sumjz+净值 && 净值累加
? ALLTRIM(STR(i)),ALLTRIM(gdzc(i,1)),ALLTRIM(STR(yf))+'月折旧:',;
ALLTRIM(STR(yyje_m,10,2)) AT 45,ALLTRIM(STR(累折贷方,10,2)) AT 65,;
ALLTRIM(STR(累折余额,10,2)) AT 85,ALLTRIM(STR(净值,10,2)) AT 100 && 输出到打印机
BROW TITLE gdzc(i,1)+gdzc(i,2) TIMEOUT 0.01 && 瞬间浏览
CASE 日期=GOMONTH(the_end,-1).AND.z='z' && 上月折旧(这是正常情况)
GOTO BOTTOM && 指针指向纪录末
STORE 累折余额 TO ljzjye && 记下累计折旧余额
STORE 净值 TO jingzhi && 记下净值
DO CASE && 根据情况判断处理
CASE 净值<=gdzc(i,9) && 当净值小于等于残值
STORE 0 TO ljzjdf && 累折贷方变量赋0
CASE 净值-gdzc(i,9)>=gdzc(i,10) && 当净值减残值大于等于月折旧额
STORE gdzc(i,10) TO ljzjdf && 月折旧额赋给累折贷方变量
CASE 净值-gdzc(i,9)<gdzc(i,10) && 当净值减残值小于月折旧额
STORE 净值-gdzc(i,9) TO ljzjdf && 净值减残值赋给累折贷方变量
ENDCASE
APPEND BLANK && 追加空纪录
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yf))+'月份折旧',;
累折贷方 WITH ljzjdf,;
累折余额 WITH ljzjye+累折贷方,;
净值 WITH jingzhi-累折贷方 && 替换字段
REPLACE 原值余额 WITH yyje_m && 替换字段
REPLACE z WITH 'z' && 已经折旧的标识
sumyyje=sumyyje+yyje_m && 原值余额累加
sumljzj=sumljzj+累折贷方 && 累折贷方累加
sumlye=sumlye+累折余额 && 累折余额累加
sumjz=sumjz+净值 && 净值累加
? ALLTRIM(STR(i)),ALLTRIM(gdzc(i,1)),ALLTRIM(STR(yf))+'月折旧:',;
ALLTRIM(STR(yyje_m,10,2)) AT 45,ALLTRIM(STR(累折贷方,10,2)) AT 65,;
ALLTRIM(STR(累折余额,10,2)) AT 85,ALLTRIM(STR(净值,10,2)) AT 100 && 输出到打印机
BROW TITLE gdzc(i,1)+gdzc(i,2) TIMEOUT 0.01 && 瞬间浏览
CASE z#'z'.AND.日期>=BEGIN .AND. 日期<=the_end && 新增加的固定资产,当月不折旧
SUM 累折借方 TO lzjf FOR 日期>=BEGIN .AND. 日期<=the_end && 累加和,下同
SUM 原值借方 TO yzjf FOR 日期>=BEGIN .AND. 日期<=the_end
SUM 原值贷方 TO yzdf FOR 日期>=BEGIN .AND. 日期<=the_end
GOTO BOTTOM && 指针指向纪录末
STORE 累折余额 TO ljzjye && 字段值存到变量中,下同
STORE 净值 TO jingzhi
STORE 原值借方 TO yuanjieje
STORE 0 TO ljzjdf && 累折贷方变量赋0,当月不折旧
APPEND BLANK && 追加空纪录
REPLACE 日期 WITH the_end,摘要 WITH ALLTRIM(STR(yf))+'当月不折旧',;
累折贷方 WITH ljzjdf,;
累折余额 WITH ljzjye+累折贷方,;
净值 WITH jingzhi-累折贷方 && 替换字段,下同
REPLACE 原值借方 WITH yzjf
REPLACE 原值贷方 WITH yzdf
REPLACE 原值余额 WITH yyje_m
REPLACE z WITH 'z' && 已经折旧的标识,为下月计
sumyjje=sumyjje+原值借方 && 累加和,下同
sumydje=sumydje+原值贷方
sumyyje=sumyyje+yyje_m
sumlzjf=sumlzjf+lzjf
sumljzj=sumljzj+累折贷方
sumlye=sumlye+累折余额
sumjz=sumjz+净值
? ALLTRIM(STR(i)),ALLTRIM(gdzc(i,1)),ALLTRIM(STR(yf))+'月折旧:',;
ALLTRIM(STR(yyje_m,10,2)) AT 45,ALLTRIM(STR(累折贷方,10,2)) AT 65,;
ALLTRIM(STR(累折余额,10,2)) AT 85,ALLTRIM(STR(净值,10,2)) AT 100 && 输出到打印机
BROW TITLE gdzc(i,1)+gdzc(i,2) TIMEOUT 0.01 && 瞬间浏览
CASE z#'z'.AND.日期>=GOMONTH(BEGIN,-1) .AND. 日期<=GOMONTH(the_end,-1)
&& 如果上逢上个月忘了折旧的
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -