1. 账务管理
1.1. 一、账务写入
1.1.1. 1、配置方法:流程图--连线配置--账务处理
1.1.2. 系统做账原理
1.通过【流程图】-【连线配置】-【账务处理】配置,系统会将数据写入"账务操作表"(mps_accountoperation)
2.账务操作表的三个触发器进行逻辑处理,处理结果存放在”账务表"(mps_account)。
SELECT
[accop_id]
,[accop_cmpid]
--预算管控分类 [expn=费用预算|staf=人员编制|loan=员工借款|??=员工年假(废)|??=客户应收款|??=客户应付款]
,[accop_type]
--帐务对象类型[dpt=部门|dpot=部门岗位|dpt=门店|emp=员工|c2=客户|p2=产品|e2=设备]
,[accop_category]
-- 账期,如:人员编制年度(2017|2018等)
,[accop_date]
--帐务对象类型ID [部门ID|部门岗位ID|门店ID|员工ID|客户ID|产品ID|设备ID]
,[accop_objid]
,[accop_fiid]
,[accop_opdate] --操作时间
--操作类型[0=初始 1=change 11=suspend 100=use 101=use/suspend use and -suspend]
,[accop_operation]
,[accop_value] --操作值
,[accop_valuesuspend] --挂起值
,[accop_bizid]
,[accop_no]
,[accop_ordid]
,[accop_jbid]
,[accop_back]
FROM [ebs2java].[dbo].[mps_account_operation]
| 操作后值 | 操作后值 | 操作后值 | 操作后值 | 操作后值 | |
|---|---|---|---|---|---|
| 记账方式 | acc_origin | acc_value | acc_used | acc_changed | acc_suspended |
| 0=初始 | accop_value | acc_changed+accop_value | acc_used | acc_changed | acc_suspended |
| 1=change变更 | acc_origin | acc_value+accop_value | acc_used | acc_changed+accop_value | acc_suspended |
| 11=suspend挂账 | acc_origin | acc_value | acc_used | acc_changed | acc_suspended+accop_value |
| 100=use使用 | acc_origin | acc_value | acc_used+accop_value | acc_changed | acc_suspended |
| 101=use/suspend use and -suspend | acc_origin | acc_value | acc_used+accop_value | acc_changed | acc_suspended-accop_value |
2. 二、账务获取
2.1.1. 方式一:SQL开发:
exec mps_getaccount '数据库表','记账日期','记账类别','对象类别','费用类别','对象ID' (查找数据)
update #new set ord_jkje=acc\_value-acc\_suspended from #account(写入数据)
2.1.2. SQL开发说明:
exec mps_getaccount 程序参数说明:
create procedure mps_getaccount(
@tbname1 varchar(100) , --**数据库表:**不能为空 #master #romaster #detailx 如果是子表,则应该这:#master,#detail2
@accountdate varchar(500) , -- **记账日期:**可以是字段名,也可以是值。例如ord_date 或者2018 或者2018-1
@acctype varchar(500) , -- **记账类别:**人员编制(**staf**)、员工借款(**loan**)、员工年假(**anva**)、客户应收款(**recv**)、客户应付款(**paya**)、费用预算(**expn**)
@acccategory varchar(500) , -- **对象类别:**部门(dpt)、部门岗位(dpot)、门店()、员工(emp)、客户(cst)、产品()、设备()
@fid varchar(500) , --**费用类别:**如果没有费用类别的,则=0 可以是字段名,也可以是值
@objid varchar(500) --**对象ID:** 可以是字段名,也可以是值
- 通过exec mps_getaccount 程序,查询值展示如下
-- #account(objid bigint,origin int,value int,used int,suspended int,ready int,changed int)
| 显示字段 | 字段类型 | 字段描述 |
|---|---|---|
| objid | bigint | 对象ID值 |
| origin | int | 初始值 |
| value | int | 最新值=初始值+变更值 |
| used | int | 使用值 |
| suspended | int | 挂账值 |
| ready | int | 在途值 |
| changed | int | 变更值 |
2.1.3. 方式二:JS开发:
JS代码:
function getaccount(obj1,accrq1,acctype1,acccategory1,accfid1,accobjid1,call1)
JS代码参数说明:
// obj1 为当前对象,系统可以根据当前对象的情况来自动赋值
// accrq1 记账日期,可以是字段名,也可以是值 ,
// acctype1 费用类型,可以是字段名,也可以是值,
// acccategory1 对象类别,可以是字段名,也可以是值,
// accfid1 费用类别,可以是字段名,也可以是值,
// accobjid1 对象ID,可以是字段名,也可以是值,
// call1(iseof,data1,dsname1)
// 这是返回来的字段,值是/100的 acc_value,acc_changed,acc_origin,acc_used,acc_suspended,acc_ready,acc_available,acc_real
// 所有的值都是经常转化的,即已经除了100
业务单参数配置,系统会自动对这种格式的对象赋值: field="acc_value/acc_changed/acc_origin/acc_used/acc_suspended/acc_ready/acc_available/acc_real"
JS开发举例:
例一:在不采用自动赋值的情况下进行查询并赋值
function inputchange(obj1) {
var name1 = $(obj1).getAttr("name", "");
if (name1 == 字段名称) {
var accrq1 = 必要参数;
var acctype1 = 必要参数;
var acccategory1 = 必要参数;
var accfid1 = 必要参数;
var accobjid1 = 必要参数;
getaccount(obj1,accrq1,acctype1,acccategory1,accfid1,accobjid1,function(iseof, data, dsname) {
if (!iseof && dsname == "t2"){
//在这里进行赋值
}
});
}
}
1、代码中的字段名称必须是业务单中(html)存在的字段名称;必要参数和各参数含义参考上方JS代码参数说明。 2、执行getaccount方法时会返回两个结果集 t1结果及返回的是一些id;t2结果集返回的是通过mps_account表查询的结果。
例二:采用自动赋值的情况下进行查询并赋值
function inputchange(obj1) {
var name1 = $(obj1).getAttr("name", "");
if (name1 == 字段名称) {
var accrq1 = 必要参数;
var acctype1 = 必要参数;
var acccategory1 = 必要参数;
var accfid1 = 必要参数;
var accobjid1 = 必要参数;
getaccount(obj1,accrq1,acctype1,acccategory1,accfid1,accobjid1);
}
}
1、代码中的字段名称必须是业务单中(html)存在的字段名称;必要参数和各参数含义参考上方JS代码参数说明。 2、采用此方法还需在业务单中(html)需要进行赋值的字段里添加 field 属性,具体参数参考上方 业务单参数配置 。