6、业务规则(备份)

本页内容仅用于备份。

目前系统有效的业务规则如下。

编码 名称 最后修改
TEM01 计算TBTZ,其中TBTZ=(1.5-x)*x,x=科目方向 2024-07-26
GZ02 计算YTD(=EB*TBTZ) 2025-02-28
GZ08 计算SPLYTD01,以及SPLEB=SPLYTD*TBTZ 2025-02-07
GZ09 计算CurrentPeriod,其中CP=YTD-上期YTD 2024-11-11
GZ11 (脚本方式)计算权益变动表 2024-10-09
GZ12 现金流量表加:期初现金及现金等价物余额=tb年末 2024-03-26
GZ13 计算经营分析指标 2025-01-13
GZ14 若本期Budget为空则复制上月数 2023-10-30
getSum 应收出表台账合计数 2024-10-15

TEM01

let accList = A["TB.Item"].base();
let storageAccList = accList.filter(function(acc){ return acc.storageType == "STORAGE";});
  for(let i = 0; i < storageAccList.length; i++) {
    let acc = storageAccList[i];
    let a = "A@"+acc.number+",AT@EntityInput,IC@ICNone,ZB@ZBNone,Cost@CBNone,CT@TBTZ" ;
    save(a,Math.round((1.5-acc.dcDirect)*acc.dcDirect));
 };

GZ02

log("是否上线星瀚ctx.E.ENT1:"+ctx.E.ENT1);
runs(
  scope(A["TB.Item"].base()),  "v('AT@EntityInput,CT@YTD,IC@ICNone,ZB@ZBNone')=v('AT@EntityInput,CT@EndingBalance,IC@ICNone,ZB@ZBNone')*v('AT@EntityInput,CT@TBTZ,IC@ICNone,ZB@ZBNone')"
);
log(getRuntimeScope());

GZ08

//配置特殊取值对应表
let dictSPLYTD = {
  "29": "12"    //
};

let SPLYTD_E_CODE = (dictSPLYTD[""+ CTX_E_CODE +""] == null) ? CTX_E_CODE : dictSPLYTD[""+ CTX_E_CODE +""];

//配置函数
log(CTX_P_CODE);
function ctxCarryOverSPL(calcScope, tarCT) {

  if (CTX_FY_CODE > "FY2022" && CTX_BP_CODE == "EIRpt" && CTX_P_CODE == "M_M12") {
    let ctCode = (tarCT == null || tarCT == undefined) ? "SPLYTD01" : tarCT;
    let srcExp = (ctCode == "SPLYTD01") ? "v('E@"+SPLYTD_E_CODE+",FY@" + CTX_FY_LAST + ",CT@YTD,AT@ATTotal,BP@ERpt,P@M_M13')" : null;
    let exp = "v('CT@" + ctCode + "') = " + srcExp;
    if (!(isNull(calcScope))) {
      runs(calcScope, exp);
    }
    else {
      runs(exp);
    }
  }

  if (CTX_FY_CODE > "FY2022" && CTX_BP_CODE == "EIRpt" && CTX_P_CODE != "M_M12") {
    let ctCode = (tarCT == null || tarCT == undefined) ? "SPLYTD01" : tarCT;
    let srcExp = (ctCode == "SPLYTD01") ? "v('E@"+SPLYTD_E_CODE+",FY@" + CTX_FY_LAST + ",CT@YTD,AT@ATTotal,BP@ERpt')" : null;
    let exp = "v('CT@" + ctCode + "') = " + srcExp;
    if (!(isNull(calcScope))) {
      runs(calcScope, exp);
    }
    else {
      runs(exp);
    }
  }
}

//计算上年同期数
if (CTX_S_CODE == "MRpt") {  
  let calcScope = scope(A["TB2.X01"].base(),A["TB1.E1"].base(),A["R6001"].base(),A["B1001"].base(),A["AR031"].base(),AT.in("EntityInput"), IC.in("ICNone"), ZB.in("ZBNone")).except(A["TB4.D04A"].base(),A["TB4.D05A"].base());
  if (!(ctxIsNewConsol())) {
    ctxCarryOverSPL(calcScope, "SPLYTD01");
    runs(calcScope,"v('CT@SPLEndingBalance')=v('CT@SPLYTD')*v('CT@TBTZ')");
  };
}

GZ09

let sc = scope(A["TB1.D1"].base(),A["TB1.E1"].base(),AT.in("EntityInput"), IC.in("ICNone"), ZB.in("ZBNone"));
let vExp = "";
if(CTX_P_CODE == "M_M01"){vExp = "v('CT@CurrentPeriod') = v('CT@YTD')"}
else{vExp = "v('CT@CurrentPeriod') = v('CT@YTD') - v('CT@YTD,P@" + CTX_P_LAST + "')"};
runs(sc,vExp);
if(CTX_P_CODE == "M_M01"){vExp = "v('CT@LastPeriod') = v('CT@YTD')"}
else{vExp = "v('CT@LastPeriod') = v('CT@CurrentPeriod,P@" + CTX_P_LAST + "')"};
runs(scope(A["TB1.X1"].base(),AT.in("EntityInput"), IC.in("ICNone"), ZB.in("ZBNone")),vExp);

GZ11

let ATICZB="AT@EntityInput,IC@ICNone,ZB@ZBNone";

runs(
  "v('A@TBC0610,CT@QYBD02,"+ATICZB+"')=-v('A@TBC0610,CT@YTD,"+ATICZB+"')",
  "v('A@TBC0620,CT@QYBD02,"+ATICZB+"')=v('A@TBC0620,CT@YTD,"+ATICZB+"')",
  "v('A@TBC0650,CT@QYBD02,"+ATICZB+"')=v('A@TBC0650,CT@YTD,"+ATICZB+"')");

runs("v('A@TBC0800,CT@QYBD13,"+ATICZB+"')=v('A@TBC1030,CT@YTD,"+ATICZB+"')");

runs(
  scope(A["TB1.D1"].base()),
  "v('CT@QYBD02,"+ATICZB+"')=v('CT@EndingBalance,"+ATICZB+"')"
);
runs(
  "v('A@TBC1100,CT@QYBD02,"+ATICZB+"')=v('A@TBD1500,CT@YTD,"+ATICZB+"')");

runs(
  "v('A@TBC1030,CT@QYBD13,"+ATICZB+"')=v('A@TBC1030,CT@EndingBalance,"+ATICZB+"')",
  "v('A@TBC1040,CT@QYBD19,"+ATICZB+"')=v('A@TBC1040,CT@EndingBalance,"+ATICZB+"')",
  "v('A@TBC1020,CT@QYBD20,"+ATICZB+"')=v('A@TBC1020,CT@EndingBalance,"+ATICZB+"')");

GZ12

runs(
"v('A@TBE0510,CT@SPLYTD01,IC@ICNone,ZB@ZBNone')=v('A@TBE0510,CT@BFLY,IC@ICNone,ZB@ZBNone')");

GZ13

let CTEB="CT@EndingBalance";
let isBBOYnull;
isBBOYnull=(v('A@R1003,CT@BBOY,IC@ICNone,ZB@ZBNone,CB@CBNone,AT@EntityInput')==null)?1:2
runs(
  scope(IC.in("ICNone"),ZB.in("ZBNone"),CB.in("CBNone"),AT.in("EntityInput")),
  "v('A@B1002,"+CTEB+"')=v('A@R1003,"+CTEB+"')==0?0:v('A@R1040,"+CTEB+"')/v('A@R1003,"+CTEB+"')",
  "v('A@B1003,"+CTEB+"')=(v('A@TB4.A041,"+CTEB+"')+v('A@TB4.A041,CT@BBOY'))==0?0:v('A@R2002,CT@YTD')*"+isBBOYnull+"/(v('A@TB4.A041,"+CTEB+"')+v('A@TB4.A041,CT@BBOY'))",
  "v('A@B1004,"+CTEB+"')=(v('A@TB4.A090,"+CTEB+"')+v('A@TB4.A090,CT@BBOY'))==0?0:v('A@R2008,CT@YTD')*"+isBBOYnull+"/(v('A@TB4.A090,"+CTEB+"')+v('A@TB4.A090,CT@BBOY'))",
  "v('A@B1005,"+CTEB+"')=(v('A@TB3.B040,"+CTEB+"')+v('A@TB3.B040,CT@BBOY'))==0?0:v('A@R2008,CT@YTD')*"+isBBOYnull+"/(v('A@TB3.B040,"+CTEB+"')+v('A@TB3.B040,CT@BBOY'))",
  "v('A@B1011,"+CTEB+"')=(v('A@TB2.A01,"+CTEB+"')+v('A@TB2.A01,CT@BBOY'))==0?0:v('A@R2002,CT@YTD')*"+isBBOYnull+"/(v('A@TB2.A01,"+CTEB+"')+v('A@TB2.A01,CT@BBOY'))",
  "v('A@B1012,"+CTEB+"')=(v('A@TB1.A1,"+CTEB+"')+v('A@TB1.A1,CT@BBOY'))==0?0:v('A@R2002,CT@YTD')*"+isBBOYnull+"/(v('A@TB1.A1,"+CTEB+"')+v('A@TB1.A1,CT@BBOY'))"
);
runs(
  scope(IC.in("ICNone"),ZB.in("ZBNone"),CB.in("CBNone"),AT.in("EntityInput")),
  "v('A@B1003A,"+CTEB+"')=v('A@B1003,"+CTEB+"')==0?0:v('A@B1003,"+CTEB+"')/"+CTX_P_CODE.substr(-2)+"*12",
  "v('A@B1004A,"+CTEB+"')=v('A@B1004,"+CTEB+"')==0?0:v('A@B1004,"+CTEB+"')/"+CTX_P_CODE.substr(-2)+"*12",
  "v('A@B1005A,"+CTEB+"')=v('A@B1005,"+CTEB+"')==0?0:v('A@B1005,"+CTEB+"')/"+CTX_P_CODE.substr(-2)+"*12",
  "v('A@B1013,"+CTEB+"')=v('A@B1003,"+CTEB+"')==0?0:"+30*CTX_P_CODE.substr(-2)+"/v('A@B1003,"+CTEB+"')",
  "v('A@B1014,"+CTEB+"')=v('A@B1004,"+CTEB+"')==0?0:"+30*CTX_P_CODE.substr(-2)+"/v('A@B1004,"+CTEB+"')",
  "v('A@B1015,"+CTEB+"')=v('A@B1005,"+CTEB+"')==0?0:"+30*CTX_P_CODE.substr(-2)+"/v('A@B1005,"+CTEB+"')",
  "v('A@B1013,CT@Budget')=v('A@B1003,CT@Budget')==0?0:360/v('A@B1003,CT@Budget')",
  "v('A@B1014,CT@Budget')=v('A@B1004,CT@Budget')==0?0:360/v('A@B1004,CT@Budget')",
  "v('A@B1015,CT@Budget')=v('A@B1005,CT@Budget')==0?0:360/v('A@B1005,CT@Budget')"
);
runs(
  scope(IC.in("ICNone"),ZB.in("ZBNone"),CB.in("CBNone"),AT.in("EntityInput")),
  "v('A@B1038,"+CTEB+"')=v('A@R2002,CT@YTD')==0?0:(v('A@R2002,CT@YTD')-v('A@R2008,CT@YTD'))/v('A@R2002,CT@YTD')",
  "v('A@B1039,"+CTEB+"')=v('A@R2002,CT@YTD')==0?0:(v('A@R2018,CT@YTD')+v('A@R2019,CT@YTD')+v('A@R2020,CT@YTD')+v('A@R2021,CT@YTD'))/v('A@R2002,CT@YTD')"
);
runs(
  scope(IC.in("ICNone"),ZB.in("ZBNone"),CB.in("CBNone"),AT.in("EntityInput")),
  "v('A@B1041,"+CTEB+"')=(v('A@R1038-02,"+CTEB+"')+v('A@R1038-02,CT@BBOY'))==0?0:v('A@R2046,CT@YTD')*"+isBBOYnull+"/(v('A@R1038-02,"+CTEB+"')+v('A@R1038-02,CT@BBOY'))",
  "v('A@B1042,"+CTEB+"')=(v('A@R1067,"+CTEB+"')+v('A@R1067,CT@BBOY'))==0?0:v('A@R2047,CT@YTD')*"+isBBOYnull+"/(v('A@R1067,"+CTEB+"')+v('A@R1067,CT@BBOY'))",
  "v('A@B1045,"+CTEB+"')=(v('A@TB1.A1,"+CTEB+"')+v('A@TB1.A1,CT@BBOY'))==0?0:(v('A@R2044,CT@YTD')+v('A@R2022,CT@YTD'))*"+isBBOYnull+"/(v('A@TB1.A1,"+CTEB+"')+v('A@TB1.A1,CT@BBOY'))"
);
runs(scope(A["B1001"].base(),IC.in("ICNone"),ZB.in("ZBNone"),CB.in("CBNone"),AT.in("EntityInput")),"v('CT@TBTZ')=null","v('CT@YTD')=v('CT@EndingBalance')");
log("计算完成");

GZ14

if (CTX_P_CODE != "M_M01") {
let sc = scope(BP.in("EIRpt"),A["B1001"].base(),A.in("TBA0410","TBA0920","TBE0110"),AT.in("EntityInput"),CT.in("Budget"));
log(getCellSet(sc));
accList = A["B1001"].base();
accList.push.apply(accList,["TBA0410","TBA0920","TBE0110"]);
log(accList);
accList.forEach(
  function(dc){
  let tar = eval("v('A@" + dc + ",AT@EntityInput,CT@Budget')");
  log("科目" + dc + "值:" + tar + "是否为空:" + (tar==null));
  if(tar==null){
  runs(scope(BP.in("EIRpt"),AT.in("EntityInput"),CT.in("Budget")),
  "v('A@"+dc+"')=v('FY@CurrentYear,A@"+dc+",P@"+CTX_P_LAST+"')")};  }  
);
};

getSum

let xdm = XDM["CREDIT_AR03"]
let sum1 = xdm.getColSum("AR03_06", xdm.XDMScope(AT.in("EntityInput")));
debug(sum1)
save(scope(A["AR03_06"],AT["EntityInput"],CT["YTD"],IC["ICNone"], ZB["ZBNone"],CB["CBNone"]), sum1);
let sum2 = xdm.getColSum("AR03_07", xdm.XDMScope(AT.in("EntityInput")));
save(scope(A["AR03_07"],AT["EntityInput"],CT["YTD"],IC["ICNone"], ZB["ZBNone"],CB["CBNone"]), sum2)
let sum3 = xdm.getColSum("AR03_08", xdm.XDMScope(AT.in("EntityInput")));
save(scope(A["AR03_08"],AT["EntityInput"],CT["YTD"],IC["ICNone"], ZB["ZBNone"],CB["CBNone"]), sum3)
let sum4 = xdm.getColSum("AR03_09", xdm.XDMScope(AT.in("EntityInput")));
save(scope(A["AR03_09"],AT["EntityInput"],CT["YTD"],IC["ICNone"], ZB["ZBNone"],CB["CBNone"]), sum4)
let sum5 = xdm.getColSum("AR03_10", xdm.XDMScope(AT.in("EntityInput")));
save(scope(A["AR03_10"],AT["EntityInput"],CT["YTD"],IC["ICNone"], ZB["ZBNone"],CB["CBNone"]), sum5)

文档更新时间: 2025-02-08 16:14   作者:芦凌波