📄
字号:
*****************************************************************************
** 工资核算.PRG **
*****************************************************************************
clear all
CLOSE DATA
SET TALK OFF && 阻止对话结果传送到窗口
SET CENTURY ON && 指定用四位数表示年
SET DATE ANSI && 日期格式yy.mm.dd
CLEAR && 清屏幕
PUBLIC BEGIN,the_end && 定义公共日期变量
DO FORM 表单2 NAME 记账开始结束时间 LINK && 执行表单
READ EVENTS && 激活事件
SET DEVICE TO SCREEN && 输出指向屏幕
SET PRINT OFF && 不允许打印机输出
SET SAFETY OFF && 关闭安全提示窗口
DEFINE WINDOW prt FROM 8,40 TO 22,72 TITLE '选择页面了吗?' CLOSE && 定义窗口
ACTIVATE WINDOW prt && 激活窗口
@ 1,1 SAY ' 提示:如果页面未设置为 A2 应设置' ;
COLOR RGB(255,128,0,255,255,255) && 提示信息
@ 5,12 GET prt DEFAULT 1 FUNCTION '*vt 设置;越过' SIZE 2,6,2 && 命令按钮
READ && 激活对象
DEAC WINDOW prt && 挂起窗口
IF prt=1 && 如果选择了设置
=SYS(1037) && 显示页面设置对话框,进行页面设置
ENDIF
DEFI WINDOW gz FROM 5,20 TO 15,60 TITLE ' 工资核算 ' DOUBLE CLOSE && 定义窗口
ACTI WINDOW gz && 激活窗口
@ 1,10 SAY '年:' GET nian1 DEFA YEAR(DATE()) && 编辑年
@ 3,10 SAY '月:' GET yuefen DEFA MONTH(the_end) SIZE 1,2 && 编辑月
@ 5,10 get d defa 1 func "*ht 修改数据;工资核算"size 2,4,4
READ && 激活对象
nian1=SUBSTR(STR(nian1,4),3,2) && 给变量赋值
IF yuefen<10 && 如果月份小于10
gzbdbf='工资表'+nian1+'0'+ALLTRIM(STR(yuefen)) && 工资表数据表文件名
pygzbdbf='聘用工资表'+nian1+'0'+ALLTRIM(STR(yuefen)) && 聘用工资表数据表文件名
ELSE && 否则
gzbdbf='工资表'+nian1+ALLTRIM(STR(yuefen)) && 工资表数据表文件名
pygzbdbf='聘用工资表'+nian1+ALLTRIM(STR(yuefen)) && 聘用工资表数据表文件名
ENDIF
DEAC WINDOW gz && 挂起窗口
if d=2
COPY FILE 工资计算明细原表.DBF TO (gzbdbf+'.dbf') && 复制当月工资表
COPY FILE 聘用人员工资计算明细原表.DBF TO (pygzbdbf+'.dbf') && 复制当月聘用人员工资表
endif
USE &gzbdbf && 打开当月工资表
if d=1
delete for 姓名="合计"
pack
endif
REPLACE 月份 WITH yuefen ALL && 替换月份
SET FILTER TO x='x' && 过滤行管人员
DEFI WINDOW gz FROM 0,0 TO 25,99 TITLE ' 工资核算 工资计算明细 填写计时天数 ' ;
DOUBLE CLOSE && 定义窗口
ACTI WINDOW gz && 激活窗口
BROW && 在浏览窗口中填写计时天数
*REPLACE 加分 WITH (计时工资*计时天)*0.4 ALL &&+粮煤补贴+副食补贴+肉价补贴+奖金+水电+粮销+;保健+通勤+洗理+儿保+医药+书报费+地区差+其他) && 本厂内部规定的算法
SET FILTER TO x#'x' && 过滤非行管人员
DEFI WINDOW gz FROM 0,0 TO 25,99 TITLE ' 工资核算 工资计算明细 填写变动工资 ' DOUBLE CLOSE && 定义窗口
ACTI WINDOW gz && 激活窗口
GOTO TOP && 指针指向首纪录
BROW && 在浏览窗口中填写计件工资
DEFI WINDOW gz FROM 0,0 TO 25,99 TITLE ' 工资核算 工资计算明细 填写变动工资 ' DOUBLE CLOSE && 定义窗口
ACTI WINDOW gz && 激活窗口
SET FILTER TO && 取消过滤器
REPLACE 实领工资 WITH 标准工资+计件天数*计件工资+加班小时*加班工资+出差天数*出差工资+其他小时*其他工资+粮煤补贴+副食补贴+;
肉价补贴+奖金+水电+粮销+保健+通勤+洗理+儿保+医药+书报费+地区差+其他+加分;
+计时工资*计时天-保险-其他1 ALL && 替换字段
TOTAL ON 领收人签字 TO TEMP1 && 统计,相当于累加
APPEND FROM TEMP1 && 把累加的结果追加到工资表中
REPLACE 姓名 WITH '合计' && 替换字段,下同
REPLACE 编号 WITH 0,月份 WITH yuefen
REPLACE x WITH ' '
DEFI WINDOW gz FROM 0,0 TO 25,99 TITLE ' 工资计算明细 ' DOUBLE CLOSE && 定义窗口
ACTI WINDOW gz && 激活窗口
GOTO TOP && 指针指向首纪录
BROW NOEDIT && 浏览,禁止编辑
USE &pygzbdbf && 打开当月聘用人员工资表
if d=1
delete for 姓名="合计"
pack
endif
REPLACE 月份 WITH yuefen ALL && 替换月份
SET FILTER TO x='x' && 过滤行管人员
goto top
defi window gz from 0,0 to 25,99 title '聘用人员工资核算 填写计时工资';
double close
acti window gz
BROW && 在浏览窗口中填写计时工资衣无缝
*goto recno()
*REPLACE 加分 WITH (计时工资*计时天)*0.4 all
*goto 22
*REPLACE 加分 WITH (计时工资*计时天)*0.3
*if recno()=22 &&+粮煤补贴+副食补贴+肉价补贴+奖金+水电+粮销+; 保健+通勤+洗理+儿保+医药+书报费+地区差+其他) && 本厂内部规定的算法 && 过滤非行管人员
* REPLACE 加分 WITH (计时工资*计时天)*0.3
* else recno()#22
* REPLACE 加分 WITH (计时工资*计时天)*0.4
*endif
SET FILTER TO x#'x' && 过滤非行管人员
DEFI WINDOW gz FROM 0,0 TO 25,99 TITLE ' 工资核算 工资计算明细 填写变动工资 ' DOUBLE CLOSE && 定义窗口
ACTI WINDOW gz && 激活窗口
GOTO TOP && 指针指向首纪录
BROW && 在浏览窗口中填写计件工资
DEFI WINDOW gz FROM 0,0 TO 25,99 TITLE ' 工资核算 工资计算明细 填写变动工资 ' DOUBLE CLOSE && 定义窗口
ACTI WINDOW gz && 激活窗口
SET FILTER TO && 取消过滤器
REPLACE 实领工资 WITH 标准工资+计时工资*计时天+计件天数*计件工资+加班小时*加班工资+出差天数*出差工资+其他小时*其他工资+粮煤补贴+副食补贴+;
肉价补贴+奖金+水电+粮销+保健+通勤+洗理+儿保+医药+书报费+地区差+其他+加分;
-保险-其他1 ALL && 替换字段
TOTAL ON 领收人签字 TO TEMP2 && 统计,相当于累加
APPEND FROM TEMP2 && 把累加的结果追加到聘用人员工资表中
REPLACE 姓名 WITH '合计' && 替换字段,下同
REPLACE 编号 WITH 0,月份 WITH yuefen
BROW NOEDIT && 浏览,禁止编辑
USE && 关闭表
DEAC WINDOW gz && 挂起窗口
COPY FILE (gzbdbf+'.dbf') TO 工资计算明细表.DBF && 复制表
COPY FILE (pygzbdbf+'.dbf') TO 聘用人员工资计算明细表.DBF && 复制表
SET SAFETY ON && 关闭安全提示窗口
RETURN && 程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -