📄
字号:
*************************************************
* 付款记账凭证登录.PRG *
* 上级调用程序 记帐主程序.PRG *
*************************************************
STORE '付款' TO pingzlb && 凭证类别
STORE { . . } TO riqi && 初始化日期为空
DO FORM 付款记账凭证.scx && 执行收款记账凭证登录表单
STORE .T. TO tf && 初始化逻辑变量
DO WHILE tf && 循环
@ 3.1,19.5 GET riqi SIZE 1,10 RANGE BEGIN,the_end ;
VALID riqi<>{ . . } ERROR '日期不可空' && 编辑日期
@ 3.1,36 GET bianhao DEFAULT 0 SIZE 1,3,1;
VALID bianhao>0 ERROR '编号不可为零' && 编辑编号
@ 22.9,27 GET jizhang SIZE 1,6,1 DISABLE && 记账,禁止
@ 22.9,49 GET zhidan SIZE 1,6,1 DISABLE && 制单,禁止
@ 22.8,73 GET lingkr SIZE 1,6 DEFAULT " " && 编辑领款人
@ 20.6,12 GET fudanjzs SIZE 1,3,1 DEFAULT 0 && 附单据张数
READ && 激活对象
DO rk && 键控过程,按Ctrl+End结束程序
IF riqi={ . . }.OR.bianhao=0 && 如果日期为空或编号为零
tf=.T. && 逻辑变量为真
ELSE && 否则
tf=.F. && 逻辑变量为假,退出DO循环
ENDIF
ENDDO && 下一个DO循环
FOR i=1 TO 300 && 循环
STORE '' TO zza(i,1) && 摘要
STORE '' TO zza(i,2) && 结算方式
STORE '' TO zza(i,3) && 票号
STORE ' ' TO zza(i,4) && 总帐科目
STORE ' ' TO zza(i,5) && 明细科目
STORE 0.00 TO zza(i,6) && 借方
STORE 0.00 TO zza(i,7) && 贷方
STORE '' TO zza(i,8) && 借贷标识
STORE '' TO zza(i,9) && 登帐数据库名
STORE '付款' TO zza(i,10) && 凭证种类
NEXT && 下一个FOR循环
DEFI WINDOW fwd FROM 6,77 TO 21,100 TITLE " 贷方科目 " ;
ZOOM MINIMIZE FLOAT DOUB CLOSE && 定义窗口
ACTI WINDOW fwd && 激活付款贷方科目窗口
STORE 0 TO a && 数组清零
FOR i=1 TO 3 && 循环,只有现金、银行存款、其他货币资金
IF b(i,5)='暂不使用' && 如果 选用与否为暂不使用
@ i-1,0 GET a(i) FUNC "*C "+b1(i) DISA && 排布科目复选框,禁止选用
ELSE && 否则
@ i-1,0 GET a(i) FUNC "*C "+b1(i) && 排布科目复选框
ENDIF
NEXT && 下一个FOR循环
@ 10,1 GET qq DEFA 1 FUNC '*th 确认;取消' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF qq=2 && 如果选择了取消
CLEAR ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
DEAC WINDOW fwd && 挂起窗口
DIME z(6),hh(6) && 定维数组
STORE ' ' TO z && 初始化数组
STORE 0 TO m,m1 && 初始化变量
FOR i=1 TO 3 && 循环
IF a(i)=1 && 如果复选时选中
m=m+1 && 计数器加1
z(m)=b1(i) && 记下选中的科目名称
hh(m)=i && 记下选中的科目序号1-3
ENDIF
NEXT && 下一个FOR循环
* 付款贷方记帐凭证处理
PUBLIC fkdf(6,5) && 定维付款贷方数组
FOR i=1 TO 6 && 循环
STORE ' ' TO fkdf(i,1),fkdf(i,2),fkdf(i,3),fkdf(i,5) && 初始化数组元素
&& 1摘要 2科目名称 3明细名称 4付款贷方金额 5库名(数据表名)
STORE 0.00 TO fkdf(i,4) && 初始化数组元素
NEXT && 下一个FOR循环
FOR i=1 TO m
IF USED('ZK85') && 如果表已打开
SELECT ZK85 && 激活工作区
ELSE && 否则
SELECT 3 && 激活工作区
USE 科目总控!zk85 && 打开表‘ZK85’(总控85,内含85个科目)
ENDIF
LOCATE FOR 会计科目名=z(i) && 根据科目名称定位
IF 选用与否='选用明细' && 如果 选用与否='选用明细'
STORE 明细库名 TO mx && 记下明细表名,联系表
SELECT 4 && 激活工作区
USE &mx ALIAS mx && 打开明细联系表
DIME mxj(300,2),mxj1(300) && 定维明细数组
COPY TO ARRAY mxj && 复制到数组
rec=RECC() && 记下记录个数
FOR k=1 TO rec && 循环,终值为记录个数
STORE ALLTRIM(mxj(k,1)) TO mxj1(k) && 明细名称过渡到一维数组
NEXT && 下一个FOR循环
IF rec<=21 && 如果记录个数小于等于21
DEFI WINDOW fwdmx1 FROM 0,73 TO 22,100 TITLE ' '+z(i)+" 贷方明细 " ;
ZOOM MINIMIZE FLOAT DOUB && 定义窗口
ACTI WINDOW fwdmx1 && 激活窗口
STORE 0 TO a && 数组清零
FOR k=1 TO rec && 循环
@ k-1,0 GET a(k) FUNC "*c "+ mxj1(k) && 排布明细复选框
NEXT && 下一个FOR循环
@ 13,1 GET anu DEFA 1 FUNC '*th 确认;取销' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF qq=2 && 如果选择了取消
CLEAR ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
DEAC WINDOW fwdmx1
ELSE
DEFI WINDOW fwdmx FROM 0,0 TO 28,73 TITLE ' '+fkdf(i,2)+" 贷方明细 " ;
ZOOM MINIMIZE FLOAT DOUB && 定义窗口
ACTI WINDOW fwdmx && 激活窗口
STORE 0 TO a && 数组清零
IF rec<=42 && && 如果记录个数小于等于42
FOR k=1 TO 21 && 循环
@ k-1,0 GET a(k) FUNC "*c "+ mxj1(k) && 排布明细复选框
NEXT && 下一个FOR循环
FOR k=22 TO rec && 循环
@ k-22,26 GET a(k) FUNC "*c "+ mxj1(k) && 排布明细复选框
NEXT && 下一个FOR循环
@ 23,40 GET qq DEFA 1 FUNC '*th 确认;取销' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF qq=2 && 如果选择了取消
CLEAR ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
ELSE
DEFI WINDOW fwdmx FROM 0,0 TO 28,300 FLOAT ZOOM GROW MINIMIZE SHADOW CLOSE;
TITLE ' 贷方科目:'+z(i)+' 左右拖动此线 ───── 选择明细 ────'+;
'────── 移动此线 ────────────── 移动此线 ─── '
ACTI WINDOW fwdmx && 定义并激活窗口
STORE 0 TO a && 数组清零
FOR k=1 TO rec && 循环
@ k%22,INT(k/22)*30 GET a(k) FUNC '*c '+mxj1(k) && 排布明细复选框
NEXT && 下一个FOR循环
@ 23,80 GET kk DEFA 1 FUNC '*th 确认;取消' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF qq=2 && 如果选择了取消
CLEAR ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
ENDIF
DEAC WINDOW fwdmx && 挂起窗口
ENDIF
IF a(rec)=1 && 如果选择了末记录 新明细添加
h=hh(i) && 选中科目的记录号1-85
DO 添加新明细 && 运行子程序
ENDIF
FOR k=1 TO rec && 循环
IF a(k)=1 && 如果复选明细时选中
m1=m1+1 && 计数器加1
STORE z(i) TO fkdf(m1,2) && 记下科目名称
STORE mxj1(k) TO fkdf(m1,3) && 记下明细名称
STORE mxj(k,2) TO fkdf(m1,5) && 记下数据表名
ENDIF
NEXT && 下一个FOR循环
ELSE && 否则,意味着选用与否#'选用明细'
m1=m1+1 && 计数器加1
STORE z(i) TO fkdf(i,2) && 记下科目名称
IF USED('ZK85') && 如果表已打开
SELECT ZK85 && 激活工作区
ELSE && 否则
SELECT 3 && 激活工作区
USE 科目总控!zk85 && 打开表‘ZK85’(总控85,内含85个科目)
ENDIF
LOCATE FOR 会计科目名=z(i) && 根据科目名称定位
STORE 科目库名 TO fkdf(m1,5) && 记下数据表名
ENDIF
NEXT && 下一个FOR循环
FOR i=1 TO m1 && 循环
@ i*1.2+1,45.5 GET fkdf(i,2) DISA FONT '宋体',10 SIZE 1,8
&& 在付款记账凭证贷方上显示科目名称,禁止编辑
@ i*1.2+1,55 GET fkdf(i,3) DISA FONT '宋体',10 && 显示明细名称,禁止编辑
NEXT && 下一个FOR循环
** 付款贷方摘要
@ 0.5,84 GET z1 DEFAULT ' 摘要 ' DISABLE && 显示摘要,禁止编辑
FOR i=1 TO m1 && 循环
@ i*1.2+1,81 GET z2 DEFAULT '☆_' DISABLE && 显示☆_,只是位置,禁止编辑
DEFI WINDOW zyw FROM 6,77 TO 26,103 TITLE ' '+fkdf(i,2)+" 摘要 ";
ZOOM MINIMIZE FLOAT DOUB && 定义摘要窗口
ACTI WINDOW zyw && 激活窗口
STORE 1 TO h && 初始化变量
@ 1,1 GET h DEFA 1 FUNC '&t' FROM zhai1 && 摘要List列表
READ CYCLE && 激活对象
STORE zhai1(h) TO fkdf(i,1) && 记下选中的摘要
DEAC WINDOW zyw && 挂起窗口
@ i*1.2+1,81 GET fkdf(i,1) SIZE 1,20 && 编辑摘要,允许修改
READ && 激活对象
DO rk && 键控过程,按Ctrl+End结束程序
IF h>=2 && 如果选中第二以下的摘要
FOR w=h TO 2 STEP -1 && 循环
zhai1(w)=zhai1(w-1) && 向下递推
NEXT && 下一个FOR循环
ENDIF
zhai1(1)=fkdf(i,1) && 第一个摘要自动更新
zhai1(20)=' ' && 第二十个为空
NEXT && 下一个FOR循环
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -