// mbos('page').bind('afterOnload',function(){
// if(easContext.userName==="lishuliang"){
// alert(3)
// document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false)
// // $('.mScroller').on('touchmove',function(e){
// // e.preventDefault();
// // })
// }
// })
var BaseUrl = "https://api-dev.piaozone.com/test";
var STATIC_URL = "https://imgshow-master.piaozone.com";
//密钥
var UserKey = "";
var LinkKey = "";
var TaxNum = "914403000944135503";
var Client_ID = "vZEf1W3Cvb4WAtY8hz9O";
var Client_Secret = "14fdbc08056f45b3b6a892440d28b220";
var Encrypt_Key = "0ZhrySW1zgGhDauV";
/**
* @ mzsks
* @ begin
*/
//页面加载事件
mbos('page').bind('afterOnload', function() {
var editData = mbos("entity").data;
mbos("isItConsistent").hide();
mbos("reportTotalAmount").disable();
mbos("entry").hide();
mbos("costedDept").hide();
if (!editData.overAmountDesc) {
mbos("overAmountDesc").hide();
}
setIsOT(null, false);
})
//单据新增事件
mbos('page').bind('onCreateData', function() {
var data = mbos("entity").data;
})
//单据新增调用
_private.createBill = function() {
//设置单据费用支付部门/公司
var data = mbos("entity").data;
var company = data.company;
var param = [company.id];
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
if (data) {
var com = data.Company;
var costedDept = data.costedDept;
mbos('company').value(com);
mbos('costedDept').value(costedDept);
}
}
mbos.eas.invokeScript("getPayOrg", param, success, fail);
mbos.eas.invokeScript({
name: "getBuildModel",
param: [data.id],
success: function(e) {
mbos("entity").data = e;
// console.log(e)
},
error: function(e) {}
});
//默认新增一条收款信息分录
mbos("entity").value().collectionEntries.push({});
_private.setcollectionEntries();
_private.getCollectionAccount(data.applier.id);
// _private.setPayerHide();
var adminOrgUnit = easContext.position.adminOrgUnit;
mbos('entity').data.orgUnit = adminOrgUnit;
}
_private.setCountersignatoryEntry = function() {
//初始化会签人显示
var entry = {};
var data = mbos("entity").data;
var countersignatoryEntry = data.entry;
if (data.isCountersigned == true || data.isCountersigned == "true") {
mbos('counters').enable();
}
if (countersignatoryEntry && mbos("entity").data.isCountersigned) {
for (var v = 0; v < countersignatoryEntry.length; v++) {
if (countersignatoryEntry[v].countersignatory) {
entry.id = (entry.id ? (entry.id + ",") : "") + countersignatoryEntry[v].countersignatory.id;
entry.name = (entry.name ? (entry.name + ",") : "") + countersignatoryEntry[v].countersignatory.name;
}
}
mbos("entity").data.counters = entry;
mbos('counters').value(entry);
}
}
//判断费用支付公司与承担公司是否一致
var setIsItConsistent = function() {
var checked = true;
var mode = mbos("entity").data;
// var app = waf("#applierCompany").wafPromptBox("getValue");
var app = mode.company;
var entries = mode.entries;
for (var v = 0; v < entries.length; v++) {
var company = entries[v].company;
if (app.id != company.id) {
checked = false;
}
}
mbos('isItConsistent').select(checked);
}
//会签人值改变事件
_this.countersignatoryOnChange = function(event) {
var id = [],
name = [],
CountersignatoryEntry = [],
tory = event.new_value;
if (tory && tory.id) {
id = tory.id.split(",");
name = tory.name.split(",");
}
for (var i = 0; i < id.length; i++) {
var person = {
id: id[i],
name: name[i],
bosType: "80EF7DED"
};
var countersignatory = {
countersignatory: person,
bosType: "1408E92A"
};
CountersignatoryEntry.push(countersignatory);
}
mbos('entry').value(CountersignatoryEntry);
// mbos("entity").data.entryCounter = event.new_value ? event.new_value.id : "";
}
//是否会签值改变事件
_this.isCountersignedOnChange = function(event) {
if (event.new_value == "true" || event.new_value == true) {
mbos('counters').enable();
// mbos('counters').value(null);
// mbos('entry').value(null);
} else {
mbos('counters').disable();
mbos('counters').value(null);
mbos('entry').value(null);
}
}
//OT逻辑判断及字段控制
var setIsOT = function(inde, ind) {
var isOT;
var data = mbos('entity').data.entries;
if (data[0] && data[0].operationType && data[0].operationType.number == "SSCZF") {
isOT = true;
} else {
isOT = false;
}
if (inde == 0 || inde && !isOT) {
mbos("entries.overtimeStartTime", inde).hide();
mbos("entries.overtimeEndTime", inde).hide();
mbos("entries.carChargesAmount", inde).hide();
mbos("overStartTime", inde).hide();
mbos("overEndTime", inde).hide();
mbos("entries.mealAmount", inde).hide();
}
for (var v = 0; v < data.length; v++) {
var operationType = data[v].operationType;
if (ind == false) {
} else if (operationType) {
if (isOT && operationType.number != "SSCZF") {
mbos.msgBox.showError(localeResource.biz001);
mbos('entity').data.entries[ind].expenseType = null;
mbos('entity').data.entries[ind].operationType = null;
return false;
}
if (isOT == false && operationType.number == "SSCZF") {
mbos.msgBox.showError(localeResource.biz001);
mbos('entity').data.entries[ind].expenseType = null;
mbos('entity').data.entries[ind].operationType = null;
return false;
}
}
}
for (var i = 0; i < data.length; i++) {
if (isOT) {
// mbos("entries.overtimeStartTime", i).show();
// mbos("entries.overtimeEndTime", i).show();
mbos("overStartTime", i).show();
mbos("overEndTime", i).show();
mbos("entries.carChargesAmount", i).show();
mbos("entries.mealAmount", i).show();
} else {
// mbos("entries.overtimeStartTime", i).hide();
// mbos("entries.overtimeEndTime", i).hide();
mbos("overStartTime", i).hide();
mbos("overEndTime", i).hide();
mbos("entries.carChargesAmount", i).hide();
mbos("entries.mealAmount", i).hide();
}
}
}
//计算OT费用汇总到报销金额
_private.setOtExpense = function(event) {
var rowData = mbos('entity').data.entries[event.index];
var mealAmount = rowData.mealAmount || 0;
var carChargesAmount = rowData.carChargesAmount || 0;
var num = carChargesAmount + mealAmount;
mbos('entity').data.entries[event.index].amountOri = num;
}
// 计算折报告币(小计)
_private.calRoundreportCurrency = function(event) {
/********
var rowData = mbos('entity').data.entries[event.index];
var amountOri = rowData.amountOri;
var reportExchangeRate = 1;
var currencyType = rowData.currencyType;
var bizReqDate = mbos('bizReqDate').value(); //申请日期
var param = [];
if(currencyType && currencyType.length != 0 && bizReqDate && bizReqDate.length != 0) {
var paramMap = {};
param[0] = currencyType.id;
param[1] = bizReqDate;
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
reportExchangeRate = data;
var reportCurrency = amountOri * reportExchangeRate;
mbos('entity').data.entries[event.index].reportCurrency = reportCurrency;
_private.setReportTotalAmount();
}
mbos.eas.invokeScript("getReportExchangeRate", param, success, fail);
}*******/
//start--------------------------------------------------------------------------------------------------------------
//本位币折报告币(小计)= 【折本位币(含税)】*【本位币与报告币的汇率】(amount*localCurrencyRate)
var rowData = mbos('entity').data.entries[event.index];
var amountOri = 0.0;
if (rowData.amount) {
amountOri = rowData.amount;
}
var company = mbos('entity').data.applierCompany;
if (company) {
var param = [];
param[0] = company.id;
mbos.eas.invokeScript({
name: "getLocalCurrency",
param: param,
success: function(redata) {
var currencyType = redata.fbasecurrencyid;
var reportExchangeRate = 1;
var bizReqDate = mbos('bizReqDate').value(); //申请日期
if (currencyType && currencyType.length != 0 && bizReqDate && bizReqDate.length != 0) {
var paramMap = [];
paramMap[0] = currencyType;
paramMap[1] = bizReqDate;
mbos.eas.invokeScript({
name: "getReportExchangeRate",
param: paramMap,
success: function(data) {
//console.log(data);
var reportExchangeRate = 1.00 * data;
var reportCurrency = Number((amountOri * reportExchangeRate).toFixed(4));
mbos('entity').data.entries[event.index].reportCurrency = reportCurrency;
_private.setReportTotalAmount();
}
});
}
}
});
}
//end---------------------------------------------------------------------------------------------------------------------
}
//计算报告币总金额
_private.setReportTotalAmount = function() {
var num = 0;
var entries = mbos('entity').data.entries
for (var v = 0; v < entries.length; v++) {
var reportCurrency = entries[v].reportCurrency;
num = num + reportCurrency;
}
mbos('reportTotalAmount').value(num);
if (mbos('entity').data.collectionEntries && mbos('entity').data.collectionEntries.length == 1) {
mbos('collectionEntries.amountOri', 0).value(num);
//mbos('collectionEntries.amount', 0).value(num);
/***20220301Jack**重新根据分录本位币金额计算收款币别本位币金额***start**/
var applierCompany = mbos('entity').data.company;
var targetCurrency = mbos('entity').data.collectionEntries[0].currencyType;
var bizReqDate = mbos('bizReqDate').value(); //申请日期
var company = mbos('entity').data.applierCompany;
if (company && targetCurrency && bizReqDate) {
var paramMap = [];
paramMap[0] = applierCompany.id;
paramMap[1] = targetCurrency.id;
paramMap[2] = bizReqDate;
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
var exRate = data || 1.00;
mbos('collectionEntries.exchangeRate', 0).value(exRate);
var amt = mbos('collectionEntries.amountOri', 0).value() || 0.00;
var amtSum = exRate * amt;
mbos('collectionEntries.amount', 0).value(amtSum);
}
mbos.eas.invokeScript("getExchangeRate", paramMap, success, fail);
}
/***20220301Jack**重新根据分录本位币金额计算收款币别本位币金额***end**/
}
}
//车资费金额值改变事件
_this.carChargesAmountOnChange = function(event) {
_private.setOtExpense(event);
// _private.calRoundreportCurrency(event);
// _private.setReportTotalAmount();
_this.amountOnChange(event);
}
//膳食费值改变事件
_this.mealAmountOnChange = function(event) {
_private.setOtExpense(event);
_this.amountOnChange(event);
}
//新增设置报告币币种
_private.setCurrency = function(e) {
var applierCompany = mbos('entity').data.applierCompany;
var companyId = '';
if (applierCompany) {
companyId = applierCompany.id;
};
if (companyId != '') {
var param = [];
param[0] = companyId;
mbos.eas.invokeScript({
name: "getCurrency",
param: param,
success: function(data) {
if (data) {
mbos('entity').data.entries[e.index].reportingCurrenc = {
id: data.id,
name: data.name,
number: data.number
};
}
}
});
}
}
//初始设置报告币币种
_private.setCurrency2 = function(applierCompany) {
var companyId = '';
if (company) {
companyId = applierCompany.id;
};
if (companyId != '') {
var param = [];
param[0] = companyId;
mbos.eas.invokeScript({
name: "getCurrency",
param: param,
success: function(data) {
if (data) {
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].
reportingCurrency = {
id: data.id,
name: data.name,
number: data.number
};
}
}
});
}
}
//设置核算部门
_private.setAccountingDepartment = function(i) {
var accountingDepartmentId = '';
if (mbos('entity').data.entries[i] != null && mbos('entity').data.entries[i].costCenter) {
accountingDepartmentId = mbos('entity').data.entries[i].costCenter.id;
}
if (accountingDepartmentId != '') {
var param = [];
param[0] = accountingDepartmentId;
mbos.eas.invokeScript({
name: "getGeneralAsstActType",
param: param,
success: function(data) {
if (data) {
mbos('entity').data.entries[i].
accountingDepartment = {
id: data["id"],
name: data["name"]
};
}
}
});
}
}
_this.overStartTimeOnChange = function(event) {
var entries = mbos('entity').data.entries[event.index];
if (event.new_value && event.new_value.length > 10 && event.old_value) {
mbos('overStartTime', event.index).timeFormat("HH:mm:ss");
}
if (event.new_value && event.new_value.length < 10) {
var happenTime = entries.happenTime;
var overStartTime = happenTime + " " + event.new_value;
entries.overtimeStartTime = overStartTime;
}
}
_this.overEndTimeOnChange = function(event) {
var entries = mbos('entity').data.entries[event.index];
if (event.new_value && event.new_value.length > 10 && event.old_value) {
mbos('overEndTime', event.index).timeFormat("HH:mm:ss");
}
if (event.new_value && event.new_value.length < 10) {
var happenTime = entries.happenTime;
var overEndTime = happenTime + " " + event.new_value;
entries.overtimeEndTime = overEndTime;
}
}
_this.overtimeStartTimeOnChange = function(event) {
}
_this.overtimeEndTimeOnChange = function(event) {
}
//初始化超时工作开始/结束时间
_private.setOvertime = function(index) {
var entries = mbos('entity').data.entries[index];
if (entries.overtimeStartTime) {
mbos('overStartTime', index).value(entries.overtimeStartTime);
}
if (entries.overtimeEndTime) {
mbos('overEndTime', index).value(entries.overtimeEndTime);
}
}
//首页
_this.homePageOnChange = function(event) {
mbos.ui.open({
path: "mcpbc/cpbcPlatform",
name: "cmbi_index.navui"
});
}
//新增分录事件
mbos('page').bind('onCreateDetailData', function(e) {
if (e.data.bosType == "88A4EDD5") {
_private.setcollectionEntries();
// _private.setPayerHide();
}
})
//实际报销人值改变事件
_this.applierOnChange = function(event) {
mbos("entity").value().collectionEntries = [];
mbos("entity").value().collectionEntries.push({});
_private.setcollectionEntries();
_private.getCollectionAccount(event.new_value.id);
//var personid = easContext.person ? easContext.person.id : event.new_value.id;
// mbos("payee", 0).attr('dynamicFilter', "applier.id = '"+mbos("applier").value().id+"' or applier.id = '"+personid+"'");
//根据实际报销人带出部门逻辑
// var applier = mbos('entity').data.applier;
// var param = [""];
// if(applier) {
// param[0] = applier.id;
// } else {
// return;
// }
// var fail = function(data) {
// mbos.msgBox.showError(data);
// };
// var success = function(data) {
// if(data) {
// mbos('entity').data.orgUnit = data.mainOrg;
// }
// }
// mbos.eas.invokeScript("getDepartment", param, success, fail);
}
//新增收款信息分录赋值
_private.setcollectionEntries = function() {
var model = mbos('entity').data;
//20220302Jack:默认新增收款信息币别为港币
var applierCompany = mbos('entity').data.company;
if (applierCompany && applierCompany.number.endsWith("NEO")) {
model.currencyType = {
id: "e0c5c474-00fd-1000-e000-3d59c0a8100dDEB58FDC",
name: "港币",
number: "H"
};
model.entries[0].currencyType = {
id: "e0c5c474-00fd-1000-e000-3d59c0a8100dDEB58FDC",
name: "港币",
number: "H"
};
}
var entryInitData = {
amountOri: 0.00,
amount: 0.00,
currencyType: model.currencyType,
payMode: model.payMode,
exchangeRate: 1.0000,
convertMode: 0,
exchangeRatePrecision: 4
};
var hasMoreCurrency = false;
for (var i = 0, il = model.entries.length - 1; i < il; i++) {
if (!model.entries[i].currencyType || !model.entries[i + 1].currencyType ||
model.entries[i].currencyType.id != model.entries[i + 1].currencyType.id) {
hasMoreCurrency = true;
break;
}
}
if (!model.entries[0].currencyType) hasMoreCurrency = true;
if (!hasMoreCurrency) {
var rowData = model.entries[0];
entryInitData.currencyType = rowData.currencyType;
entryInitData.exchangeRate = rowData.exchangeRate;
entryInitData.convertMode = rowData.convertMode;
entryInitData.exchangeRatePrecision = rowData.exchangeRatePrecision;
}
if (model.collectionEntries.length == 1) {
var reportTotalAmount = model.reportTotalAmount || 0;
var exchangeRate = model.exchangeRate || 1.0000;
entryInitData.amount = reportTotalAmount;
entryInitData.amountOri = reportTotalAmount / exchangeRate;
}
mbos('entity').data.collectionEntries[mbos('entity').value().collectionEntries.length - 1] = entryInitData;
_private.setPayerHide(mbos('entity').value().collectionEntries.length - 1);
}
//设置收款人及信息
_private.getCollectionAccount = function(payid) {
var ind = mbos('entity').value().collectionEntries.length - 1;
var datas = mbos('entity').data;
var param = [payid];
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
if (data) {
var payee = {
// bosType: "A62F9111",
payee: data.payee
}
var bankAccount = data.bankAccount;
var openArea = {
name: data.openArea
}
var bebankStr = {
name: data.bebankStr
}
mbos('collectionEntries.payerName', ind).value(data.payee);
mbos('payee', ind).value(payee);
mbos('collectionEntries.payerBank', ind).value(data.bebankStr);
mbos('entryPayerBankF7', ind).value(bebankStr);
mbos('collectionEntries.openArea', ind).value(openArea);
mbos('collectionEntries.payerAccount', ind).value(bankAccount);
}
}
mbos.eas.invokeScript("getCollectionAccount", param, success, fail);
}
//收款人F7值改变事件
_this.payeeOnChange = function(event) {
if (event.new_value == event.old_value || !event.new_value.id) {
return false;
}
_private.getCollectionAccount(event.new_value.id);
// mbos('collectionEntries.payerName',event.index).value(event.new_value.payee);
}
//开户银行F7值改变事件
_this.entryPayerBankF7OnChange = function(event) {
mbos('collectionEntries.payerBank', event.index).value(event.new_value.name);
}
//隐藏收款人、开户银行
_private.setPayerHide = function(index) {
// mbos("collectionEntries.payerName", index).hide();
// mbos("collectionEntries.payerBank", index).hide();
}
//收款信息分录添加绑定事件 分录展开功能
mbos('collectionEntries').bind('afterRendered', function(e) {
mbos("collectionEntries.payerName", e.index).hide();
mbos("collectionEntries.payerBank", e.index).hide();
mbos("collectionEntries.exchangeRate", e.index).disable();
mbos("collectionEntries.amount", e.index).disable();
// mbos("collectionEntries.payee", 0).attr('dynamicFilter', "applier.id = '2twAAAAFHKmA733t'");
var personid = easContext.person.id;
mbos("payee", e.index).attr('dynamicFilter', "APPLIER.ID in('" + mbos("applier").value().id + "','" + personid + "')");
_private.setCollectionCurrencyType();
//初始化加载收款人、开户银行F7值
var collectionEntries = mbos('entity').data.collectionEntries;
for (var v = 0; v < collectionEntries.length; v++) {
var payee = {
payee: collectionEntries[v].payerName
}
var bebankStr = {
name: collectionEntries[v].payerBank
}
mbos('payee', v).value(payee);
mbos('entryPayerBankF7', v).value(bebankStr);
}
})
//设置收款信息分录币别过滤条件
_private.setCollectionCurrencyType = function() {
// var entries = mbos('entity').data.entries;
// var ids = "'" + mbos("entity").data.currencyType.id + "'";
// for(var v = 0;v<entries.length ; v++){
// if(entries[v].currencyType){
// ids = ids + ",'" + entries[v].currencyType.id + "'";
// }
// }
var applierCompany = mbos('entity').data.applierCompany;
if (applierCompany && applierCompany.number.endsWith("NEO")) {
var colLen = mbos('entity').data.collectionEntries.length;
if (colLen > 0) {
for (var i = 0; i < colLen; i++) {
var rowData = mbos('entity').data.collectionEntries[i];
rowData.currencyType = {
id: "e0c5c474-00fd-1000-e000-3d59c0a8100dDEB58FDC",
name: "港币",
number: "H"
};
}
}
}
}
//收款信息分录币别值改变事件
_this.currencyTypeOnChange = function(event) {
var currencyType = mbos('entity').data.collectionEntries[event.index].currencyType;
var param = [];
if (currencyType != "") {
param[0] = currencyType.id;
}
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
mbos('entity').data.collectionEntries[event.index].exchangeRate = data;
}
mbos.eas.invokeScript("currencyOnChange", param, success, fail);
_private.calculateAmountOri(event.index);
}
//根据折本位币金额及汇率计算收款金额
_private.calculateAmountOri = function(index) {
var collectionEntries = mbos('entity').data.collectionEntries;
var amount = collectionEntries[index].amount || 0;
var exchangeRate = collectionEntries[index].exchangeRate || 1.0000;
var amountOri = amount / exchangeRate;
mbos('entity').data.collectionEntries[index].amountOri = amountOri;
/******20220301Jack:Neo公司的差旅报销单和费用报销单的收款信息【原币金额】取明细行的【折报告币小计】的合计金额****/
/****************************************************start*******************************************************/
var applierCompany = mbos('entity').data.applierCompany;
if (index == 0 && applierCompany && applierCompany.number.endsWith("NEO")) {
mbos('entity').data.collectionEntries[0].amountOri = mbos('entity').data.reportTotalAmount || 0.00;
}
/***************************************************end********************************************************/
}
//收款信息分录收款金额值改变事件
_this.collectionAmountOriOnChange = function(event) {
var collectionEntries = mbos('entity').data.collectionEntries;
var amountOri = collectionEntries[event.index].amountOri || 0;
var exchangeRate = collectionEntries[event.index].exchangeRate || 1.0000;
var amount = amountOri * exchangeRate;
mbos('entity').data.collectionEntries[event.index].amount = amount;
}
_this.deleteOnChange = function(event) {
var data = mbos('entity').data;
mbos.eas.invokeScript({
name: "delete",
param: [data.id],
success: function(e) {
_this.back();
// mbos("entity").data = e;
// console.log(e)
},
error: function(e) {
mbos.msgBox.showError(e);
}
});
}
_this.orgUnitOnChange = function(event) {
//部门改变后清空实际报销人
var orgUnit = mbos('entity').data.orgUnit;
mbos('entity').data.applier = null;
if (!orgUnit) {
//不存在
mbos("applier").attr('dynamicFilter', "number = 'LJC'");
} else {
_private.setApplierFilter();
}
var entries = mbos('entity').data.entries;
for (var v = 0; v < entries.length; v++) {
mbos('entries.costCenter', v).value(event.new_value);
}
}
_this.applierCompanyOnChange = function(event) {
var entity = mbos('entity').data;
var applierCompany = entity.applierCompany;
var entries = mbos('entity').data.entries;
var oldValue = event.old_value;
var newValue = event.new_value;
if (oldValue == "" || newValue == "" || (oldValue != "" && newValue != "" && oldValue.id != newValue.id)) {
entity.orgUnit = null;
}
for (var v = 0; v < entries.length; v++) {
mbos('entries.company', v).value(applierCompany);
}
if (!applierCompany) {
//不存在
mbos("orgUnit").attr('dynamicFilter', "longNumber ='LJC'");
mbos("applier").attr('dynamicFilter', "number = 'LJC'");
entity.applier = null;
} else {
_private.setOrgUnitFilter(); //公司过滤部门
}
_private.setCostedDeptAanCompany(applierCompany); //HK
}
//根据所选公司过滤部门
_private.setOrgUnitFilter = function() {
var applierCompany = mbos('entity').data.applierCompany;
if (applierCompany) {
var new_value = applierCompany;
var param = [""];
if (new_value) {
param[0] = new_value.id;
}
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
mbos("orgUnit").attr('dynamicFilter', "longNumber like '" + data + "%'");
//_private.setApplierFilter();
}
mbos.eas.invokeScript("getUnitLongNumber", param, success, fail);
}
}
_private.setCostedDeptAanCompany = function(applierCompany) {
var param = [""];
if (applierCompany) {
param[0] = applierCompany.id;
}
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
var isHK = data.isHK;
var entity = mbos("entity").data;
if (isHK) {
entity.costedDept = data.costedDept;
entity.company = data.company;
} else {
entity.costedDept = entity.orgUnit;
entity.company = entity.applierCompany;
}
}
mbos.eas.invokeScript("getCompanyOnChangeData", param, success, fail);
}
_private.setApplierFilter = function() {
var applierCompany = mbos('entity').data.applierCompany;
var orgUnit = mbos('entity').data.orgUnit;
var param = ["", ""];
if (applierCompany) {
param[0] = applierCompany.id;
}
if (orgUnit) {
param[1] = orgUnit.id;
}
mbos.eas.invokeScript({
name: "getPersonSqlByOrgId",
param: param,
success: function(e) {
mbos("applier").attr('dynamicFilter', "id in(" + e + ")");
},
error: function(e) {
mbos.msgBox.showError(e);
}
});
}
/**
* @ mzsks
* @ end
*/
_this.edit = function(event) {
return page.edit && page.edit(event);
}
_this.addnew = function(event) {
return page.addnew && page.addnew(event);
}
_this.back = function(event) {
mbos.ui.open({
path: "mcpbc/bizAccount",
name: "bizAccountList.listui",
params: {
showGridIndex: 3
}
});
}
_self.pageinit = function(event) {
_private.init();
return page.pageinit && page.pageinit(event);
}
_private.init = function() {
mbos('btnBillimage').hide();
if (requestParam.operateState == 'VIEW') {
// mbos("amountEncashed").show();
mbos('attachment1').disable();
}
if (requestParam.operateState == 'ADDNEW') {
mbos('tab2').remove();
mbos('tab1').remove();
mbos('btnBillimage').hide();
}
}
//初始化按钮
_private.initButtonStatus = function(event) {
var info = mbos("entity").data;
mbos('btnAddnew').hide();
if (info.reqCheckEntries.length == 0) {
mbos('tab2').remove();
}
if (info.loanCheckEntries.length == 0) {
mbos('tab1').remove();
}
if (info.state.value != null && info.state.value != 20 && info.state.value != 25) {
mbos('btnEdit').hide();
mbos('attachment1').disable();
//console.log($);
}
if (info.state.value == 25) {
mbos('btnSave').hide();
}
if (info.state.value >= 25) {
//提交之后,都可以上传影像
// mbos('btnBillimage').show();
}
}
_this.save = function(event) {
//mzsks
setIsItConsistent();
if (requestParam.operateState == 'EDIT') {
mbos('entity').data.updateEnd = 'mobile';
} else {
mbos('entity').data.createEnd = 'mobile';
}
var entries = mbos('entity').data.entries;
for (var i = 0; i < entries.length; i++) {
if (mbos('entity').data.entries[i].amountOri <= 0) {
mbos.msgBox.showError("分录金额不能小于等于0");
return;
}
if (mbos('entity').data.entries[i].exchangeRate <= 0) {
mbos.msgBox.showError("分录汇率不能小于等于0");
return;
}
if (mbos('entity').data.entries[i].currencyType == undefined) {
mbos.msgBox.showError("币别不能为空");
return;
}
}
mbos('entity').data.state.value = 20;
//add by Smart 20230301
_this.saveInvToCloud();
return page.save && page.save(event);
}
_this.submit = function(event) {
if (requestParam.operateState == 'EDIT') {
mbos('entity').data.updateEnd = 'mobile';
} else {
mbos('entity').data.createEnd = 'mobile';
}
//mzsks
setIsItConsistent();
var data = mbos('entity').data;
var entries = data.entries;
mbos('entity').data.fromMbos = true;
for (var i = 0; i < entries.length; i++) {
if (mbos('entity').data.entries[i].amountOri <= 0) {
mbos.msgBox.showError("分录金额不能小于等于0");
return;
}
if (mbos('entity').data.entries[i].exchangeRate <= 0) {
mbos.msgBox.showError("分录汇率不能小于等于0");
return;
}
if (mbos('entity').data.entries[i].currencyType == undefined) {
mbos.msgBox.showError("币别不能为空");
return;
}
}
mbos('entity').data.state.value = 25;
if (CP027 == "true") {
accountStandardValidate(data, event);
} else {
return page.submit && page.submit(event);
}
_this.saveInvToCloud();
_this.submitInvToCloud();
}
_this.taxOnChange = function(event) {
var amountOriWithoutTax = mbos('entity').data.entries[event.index].amountOriWithoutTax;
var tax = mbos('entity').data.entries[event.index].tax;
mbos('entity').data.entries[event.index].amountOri = Number((amountOriWithoutTax + tax).toFixed(2));
}
_this.taxRateOnChange = function(event) {
//mzsks
var amountOri = mbos('entity').data.entries[event.index].amountOri;
var taxRate = mbos('entity').data.entries[event.index].taxRate;
var amountOriWithoutTax = amountOri / (1 + taxRate / 100);
mbos('entity').data.entries[event.index].amountOriWithoutTax = amountOriWithoutTax;
var amountOriWithoutTax = mbos('entity').data.entries[event.index].amountOriWithoutTax;
var taxRate = mbos('entity').data.entries[event.index].taxRate;
var tax = amountOriWithoutTax * taxRate / 100;
mbos('entity').data.entries[event.index].tax = Number(tax.toFixed(2));;
mbos('entity').data.entries[event.index].amountOri = Number((amountOriWithoutTax + tax).toFixed(2));
}
_this.amountOriWithoutTaxOnChange = function(event) {
var amountOriWithoutTax = mbos('entity').data.entries[event.index].amountOriWithoutTax;
var taxRate = mbos('entity').data.entries[event.index].taxRate;
var tax = amountOriWithoutTax * taxRate / 100;
var exchangeRate = mbos('entity').data.entries[event.index].exchangeRate;
mbos('entity').data.entries[event.index].tax = Number(tax.toFixed(2));
mbos('entity').data.entries[event.index].amountOri = Number((amountOriWithoutTax + tax).toFixed(2));
mbos('entity').data.entries[event.index].amountWithoutTax = Number((amountOriWithoutTax * exchangeRate).toFixed(2));
}
//原币金额改变事件
_this.amountOnChange = function(event) {
var exchangeRate = mbos('entity').data.entries[event.index].exchangeRate;
if (exchangeRate == null || exchangeRate < 0) {
mbos('entity').data.entries[event.index].exchangeRate = 1.0000;
}
_private.amountOriByAmount(event);
var amountOri = mbos('entity').data.entries[event.index].amountOri;
var taxRate = mbos('entity').data.entries[event.index].taxRate;
var amountOriWithoutTax = amountOri / (1 + taxRate / 100);
mbos('entity').data.entries[event.index].amountOriWithoutTax = amountOriWithoutTax;
// amountOriWithoutTaxOnChange(event);
//mzsks 计算折报告币及汇总
_private.calRoundreportCurrency(event);
_private.setReportTotalAmount();
}
_private.amountOriByAmount = function(event) {
// mbos.msgBox.showInfo(data);
//由本位币金额、汇率 计算出原币金额
var exchangeRate = mbos('entity').data.entries[event.index].exchangeRate;
var amountOri = mbos('entity').data.entries[event.index].amountOri;
var amountWithoutTax = mbos('entity').data.entries[event.index].amountWithoutTax || 0;
var amountOriWithoutTax = mbos('entity').data.entries[event.index].amountOriWithoutTax;
var tax = mbos('entity').data.entries[event.index].tax;
var amount = amountOri * exchangeRate
mbos('entity').data.entries[event.index].amount = Number(amount.toFixed(2));
//根据参数CP016来判断核定金额是否联动
if ("true" == CP016) {
mbos('entity').data.entries[event.index].amountApproved = Number(amount.toFixed(2));
mbos('entity').data.entries[event.index].amountApprovedOri = Number(amountOri.toFixed(2));
mbos('entity').data.entries[event.index].amountApprovedWithoutTax = Number(amountWithoutTax.toFixed(2));
mbos('entity').data.entries[event.index].amountApprovedOriWithoutTax = Number(amountOriWithoutTax.toFixed(2));
mbos('entity').data.entries[event.index].taxApproved = Number(tax.toFixed(2));
}
//计算合计金额、付现金额、核定金额
// _private.calAmountAndAmountEncashed();
//计算合计金额、付现金额、核定金额
var entries = mbos('entity').data.entries;
var totalAmount = 0;
var totalAmountApproved = 0;
for (var i = 0; i < entries.length; i++) {
totalAmount += entries[i].amount;
totalAmountApproved += entries[i].amountApproved;
}
mbos('entity').data.amount = totalAmount;
mbos('entity').data.amountEncashed = totalAmount;
mbos('entity').data.amountApproved = totalAmountApproved;
//申请核销 本位币冲销金额、冲销金额联动计算
var loanCheckEntries = mbos('entity').data.loanCheckEntries;
if (loanCheckEntries != null && loanCheckEntries.length == 1) {
if (CP032 == "true") {
//冲销金额赋值
if (totalAmount <= loanCheckEntries[0].sourceBillAmountBalance) {
loanCheckEntries[0].checkAmount = totalAmount;
var exchangeRate = loanCheckEntries[0].exchangeRate;
var totalAmountOri = totalAmount / exchangeRate;
loanCheckEntries[0].checkAmountOri = Number(totalAmountOri.toFixed(2));
} else {
loanCheckEntries[0].checkAmount = loanCheckEntries[0].sourceBillAmountBalance;
loanCheckEntries[0].checkAmountOri = loanCheckEntries[0].sourceBillAmountBalanceOri;
}
//表头付现金额重新计算
mbos('entity').data.amountEncashed = Number((totalAmount - loanCheckEntries[0].checkAmount).toFixed(2));
} else {
//冲销金额赋值
if (totalAmount <= loanCheckEntries[0].sourceBillAmountBalance) {
loanCheckEntries[0].checkAmount = totalAmount;
var exchangeRate = loanCheckEntries[0].exchangeRate;
var totalAmountOri = totalAmount / exchangeRate;
loanCheckEntries[0].checkAmountOri = Number(totalAmountOri.toFixed(2));
} else {
loanCheckEntries[0].checkAmount = loanCheckEntries[0].sourceBillAmountBalance;
loanCheckEntries[0].checkAmountOri = loanCheckEntries[0].sourceBillAmountBalanceOri;
}
//表头付现金额重新计算
mbos('entity').data.amountEncashed = Number((totalAmount - loanCheckEntries[0].checkAmount).toFixed(2));
}
} else {
if (CP032 == "true") {
//表头付现金额重新计算
for (var i = 0; i < loanCheckEntries.length; i++) {
totalAmount -= loanCheckEntries[i].checkAmount;
}
mbos('entity').data.amountEncashed = Number(totalAmount.toFixed(2));
} else {
//表头付现金额重新计算
for (var i = 0; i < loanCheckEntries.length; i++) {
totalAmount -= loanCheckEntries[i].checkAmount;
}
mbos('entity').data.amountEncashed = Number(totalAmount.toFixed(2));
}
}
}
_this.loanCheckAmount = function(event) {
if (CP032 == "false") {
return;
}
var checkAmountAll = 0;
var newValue = event.new_value;
var data = mbos('entity').data;
var loanCheckEntries = data.loanCheckEntries;
for (var i = 0; i < loanCheckEntries.length; i++) {
var amountBalance = loanCheckEntries[i].sourceBillAmountBalance;
var exchangeRate = loanCheckEntries[i].exchangeRate;
loanCheckEntries[i].checkAmount = newValue;
if (newValue > amountBalance) {
mbos.msgBox.showError("核销分录中核销金额不能大于源单有效可用余额");
} else if (newValue <= 0) {
mbos.msgBox.showError("核销分录中核销金额必须大于0");
}
loanCheckEntries[i].checkAmountOri = Number((newValue / exchangeRate).toFixed(2));
checkAmountAll += loanCheckEntries[i].checkAmount;
}
//表头付现金额重新计算
mbos('entity').data.amountEncashed = Number((mbos('entity').data.amount - checkAmountAll).toFixed(2));
}
_this.loanCheckAmountOri = function(event) {
if (CP032 == "true") {
return;
}
var checkAmountAll = 0;
var newValue = event.new_value;
var data = mbos('entity').data;
var loanCheckEntries = data.loanCheckEntries;
for (var i = 0; i < loanCheckEntries.length; i++) {
var amountBalanceOri = loanCheckEntries[i].sourceBillAmountBalanceOri;
var exchangeRate = loanCheckEntries[i].exchangeRate;
loanCheckEntries[i].checkAmountOri = newValue;
if (newValue > amountBalanceOri) {
mbos.msgBox.showError("核销分录中核销金额不能大于源单有效可用余额");
} else if (newValue <= 0) {
mbos.msgBox.showError("核销分录中核销金额必须大于0");
}
loanCheckEntries[i].checkAmount = Number((newValue * exchangeRate).toFixed(2));
checkAmountAll += loanCheckEntries[i].checkAmount;
}
//表头付现金额重新计算
mbos('entity').data.amountEncashed = Number((mbos('entity').data.amount - checkAmountAll).toFixed(2));
}
_this.reqCheckAmount = function(event) {
if (CP032 == "false") {
return;
}
var newValue = event.new_value;
var data = mbos('entity').data;
var reqCheckEntries = data.reqCheckEntries;
for (var i = 0; i < reqCheckEntries.length; i++) {
var amountBalance = reqCheckEntries[i].sourceBillAmountBalance;
var exchangeRate = reqCheckEntries[i].exchangeRate;
reqCheckEntries[i].checkAmountOri = newValue / exchangeRate;
if (newValue > amountBalance) {
mbos.msgBox.showError("核销分录中核销金额不能大于源单有效可用余额");
} else if (newValue <= 0) {
mbos.msgBox.showError("核销分录中核销金额必须大于0");
}
}
}
_this.reqCheckAmountOri = function(event) {
if (CP032 == "true") {
return;
}
var newValue = event.new_value;
var data = mbos('entity').data;
var reqCheckEntries = data.reqCheckEntries;
for (var i = 0; i < reqCheckEntries.length; i++) {
var amountBalance = reqCheckEntries[i].sourceBillAmountBalance;
var exchangeRate = reqCheckEntries[i].exchangeRate;
reqCheckEntries[i].checkAmount = newValue * exchangeRate;
if (newValue > amountBalance) {
mbos.msgBox.showError("核销分录中核销金额不能大于源单有效可用余额");
} else if (newValue <= 0) {
mbos.msgBox.showError("核销分录中核销金额必须大于0");
}
}
}
//币别改变事件
_this.currencyOnChange = function(event) {
var currencyType = mbos('entity').data.entries[event.index].currencyType;
var param = [];
if (currencyType != "") {
param[0] = currencyType.id;
}
var fail = function(data) {
mbos.msgBox.showError(data);
};
var success = function(data) {
// mbos.msgBox.showInfo(data);
mbos('entity').data.entries[event.index].exchangeRate = data;
_private.amountOriByAmount(event);
//调用服务端脚本,param为参数,success,fail分别为回调函数
}
mbos.eas.invokeScript("currencyOnChange", param, success, fail);
// debugger;
var oldValue = event.old_value;
var newValue = event.new_value;
//2016-12-28 undefined
if (newValue == undefined || newValue == "" || (oldValue != undefined && newValue != undefined && oldValue.id ==
newValue.id)) {
return;
} else {
queryAccountStandard(mbos('entity').data.entries, event.index);
}
//mzsks 计算折报告币及汇总
_private.calRoundreportCurrency(event);
_private.setReportTotalAmount();
_private.setCollectionCurrencyType();
}
_this.expenseTypeOnChange = function(event) {
// debugger;
var oldValue = event.old_value;
var newValue = event.new_value;
//2016-12-28 首次F7 newValue为undefined;第二次清空 newValue为""
if (newValue == undefined || newValue == "" || (oldValue != undefined && newValue != undefined && oldValue.id ==
newValue.id)) {
return;
} else {
queryAccountStandard(mbos('entity').data.entries, event.index);
}
}
_this.happenTimeOnChange = function(event) {
// debugger;
var oldValue = event.old_value;
var newValue = event.new_value;
if (newValue == undefined || newValue == "" || (oldValue != "" && newValue != "" && oldValue.substring(0, 7) ==
newValue.substring(0, 7))) {
return;
} else {
queryAccountStandard(mbos('entity').data.entries, event.index);
}
//mzsks
setIsOT(null, event.index)
}
//业务类别改变事件
_this.operationTypeOnChange = function(event) {
var oldValue = event.old_value;
var newValue = event.new_value;
if (newValue == "" || (oldValue && newValue && oldValue.id != newValue.id)) {
mbos('entity').data.entries[event.index].expenseType = null;
}
//mzsks
setIsOT(null, event.index);
if (newValue) {
mbos('entries.expenseType', event.index).attr("dynamicFilter", "operationType.id='" + newValue.id + "'");
}
}
//分录公司改变事件
_this.companyEntryOnChange = function(event) {
var oldValue = event.old_value;
var newValue = event.new_value;
if (newValue == "" || (oldValue != "" && newValue != "" && oldValue.id != newValue.id)) {
mbos('entity').data.entries[event.index].costCenter = null;
}
setEntryCostedQueryFilter(event);
}
_this.g = function(event) {}
//表头公司改变事件
_this.companyOnChange = function(event) {
var oldValue = event.old_value;
var newValue = event.new_value;
if (newValue == "" || (oldValue != "" && newValue != "" && oldValue.id != newValue.id)) {
mbos('entity').data.costedDept = null;
}
//改变之后立刻调用
setCostedQueryFilter();
}
_private.delEntry = function(event) {
var entries = mbos('entity').data.entries;
var totalAmount = 0;
for (var i = 0; i < entries.length; i++) {
totalAmount += entries[i].amount;
}
//计算合计金额
mbos('entity').data.amount = Number(totalAmount.toFixed(2));
}
//分录删除绑定事件
mbos('entries').bind('afterDeleteEntry', function(e) {
_private.delEntry();
})
var CP032 = "false";
var CP016 = "false";
var CP027 = "false";
var currencyType = "";
var company = "";
var applierCompany = "";
var costCenterOrgUnitInfo = "";
mbos('page').bind('beforeOnload', function() {
var param = [];
var success = function(data) {
// debugger;
CP032 = data.CP032;
CP016 = data.CP016;
CP027 = data.CP027;
var reqentries = mbos('entity').data.reqCheckEntries;
var loanentries = mbos('entity').data.loanCheckEntries;
if (CP032 == "false") {
for (var i = 0; i < reqentries.length; i++) {
mbos('ReqCheckEntries.sourceBillAmountBalanceOri', i).show();
mbos('ReqCheckEntries.checkAmountOri', i).show();
}
for (var i = 0; i < loanentries.length; i++) {
mbos('LoanCheckEntries.sourceBillAmountBalanceOri', i).show();
mbos('LoanCheckEntries.checkAmountOri', i).show();
}
} else {
for (var i = 0; i < reqentries.length; i++) {
mbos('ReqCheckEntries.sourceBillAmountBalance', i).show();
mbos('ReqCheckEntries.checkAmount', i).show();
}
for (var i = 0; i < loanentries.length; i++) {
mbos('LoanCheckEntries.sourceBillAmountBalance', i).show();
mbos('LoanCheckEntries.checkAmount', i).show();
}
}
};
var fail = function(data) {
mbos.msgBox.showError(data);
};
//调用服务端脚本,param为参数,success,fail分别为回调函数
mbos.eas.invokeScript("getBizParamList", param, success, fail);
//获得初始化数据
var success = function(data) {
currencyType = data.currencyType;
company = data.company;
applierCompany = data.applierCompany;
costCenterOrgUnitInfo = data.costCenterOrgUnitInfo;
var state = mbos('entity').data.state.value;
if (state == 10) {
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].currencyType = currencyType;
mbos('entity').data.currencyType = currencyType;
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].company = company;
mbos('entity').data.company = company;
mbos('entity').data.applierCompany = applierCompany;
mbos('entity').data.costedDept = costCenterOrgUnitInfo;
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].costCenter = costCenterOrgUnitInfo;
setCostedQueryFilter();
setEntryCostedQueryFilter();
}
// alert("3:"+company.name+company.number);
_private.setOrgUnitFilter(); //公司过滤部门
var orgUnit = mbos('entity').data.orgUnit;
if (!orgUnit) {
mbos("applier").attr('dynamicFilter', "number = 'LJC'");
mbos('entity').data.applier = null;
} else {
_private.setApplierFilter(); //过滤实际报销人
}
};
var fail = function(data) {
mbos.msgBox.showError(data);
};
mbos.eas.invokeScript("initData", param, success, fail);
})
var setCostedQueryFilter = function() {
var param = [];
//debugger;
param[0] = mbos('entity').data.company.id;
var paramsMap;
var success = function(data) {
var strId = data;
var filter = {
filteritems: [{
propertyname: "isBizUnit",
comparetype: "=",
comparevalue: "1",
datatype: "BOOLEAN"
}, {
propertyname: "isSealUp",
comparetype: "=",
comparevalue: "0",
datatype: "BOOLEAN"
}, {
propertyname: "id",
comparetype: "in",
comparevalue: strId,
datatype: "STRING"
}],
maskstring: '#0 and #1 and #2'
};
mbos('costedDeptQuery').setParam({
df: JSON.stringify(filter)
});
};
var fail = function(data) {
mbos.msgBox.showError(data);
};
//调用服务端脚本,param为参数,success,fail分别为回调函数
mbos.eas.invokeScript("getCostCenterF7", param, success, fail);
};
var setEntryCostedQueryFilter = function(event) {
var param = [];
//debugger;
event = event || {
index: 0
};
param[0] = mbos('entity').data.entries[event.index].company.id;
var paramsMap;
var success = function(data) {
var strId = data;
var ids = "";
for (var i = 0; i < strId.length; i++) {
if (i > 0) {
ids += ","
}
ids += "'" + strId[i] + "'";
}
//用组件方式
mbos('entries.costCenter', event.index).attr("dynamicFilter", "isBizUnit=1 and isSealUp= 0 and id in (" + ids + ")");
//mbos('entries.costCenterQuery').setParam({df:JSON.stringify(filter)});
};
var fail = function(data) {
mbos.msgBox.showError(data);
};
//调用服务端脚本,param为参数,success,fail分别为回调函数
mbos.eas.invokeScript("getCostCenterF7", param, success, fail);
};
//移动加载时间去结尾,方便写发票相关代码 add by Smart 20230226
//分录添加绑定事件 分录展开功能
mbos('entries').bind('afterRendered', function(e) {
//mzsks
setIsOT(e.index);
_private.setCurrency(e);
_private.setAccountingDepartment(e.index);
mbos("entries.accountingDepartment", e.index).hide();
mbos("entries.reportingCurrenc", e.index).hide();
mbos("entries.exchangeRate", e.index).disable();
mbos('overStartTime', e.index).timeFormat("HH:mm:ss");
mbos('overEndTime', e.index).timeFormat("HH:mm:ss");
_private.setOvertime(e.index);
//设置费用类型的属性字段
mbos('entries.expenseType', e.index).attr("dynamicselect", "name,number,id,controlMethod,controlType");
$('.entryAllShow').on('click', function(event) {
$(".entryProp").show();
mbos('label3').value('收缩');
});
$('.entryAllHide').on('click', function(event) {
$(".entryProp").hide();
mbos('label3').value('展开');
});
var showlabel = 1;
$($('.entrylabel')[e.index]).on('click', function(event) {
$(this).nextAll(".entryProp").toggle();
if (1 == showlabel) {
showlabel = 2;
} else {
showlabel = 1;
}
if (showlabel == 1) {
mbos('label3').value('收缩');
} else if (showlabel == 2) {
mbos('label3').value('展开');
}
if (requestParam.operateState == "ADDNEW" || requestParam.operateState == "EDIT") {
setEntryCostedQueryFilter(e);
}
});
//编辑页初始化时异步获取报销标准;新增页面因初始化没有费用类型,返回的值为空;
var entries = [];
var oriEntries = mbos('entity').data.entries;
for (var i = 0; i < oriEntries.length; i++) {
//mzzsks
/* var expType = oriEntries[i].expenseType;
var curType = oriEntries[i].currencyType;
if(expType){
expType.id = encodeURIComponent(expType.id);
}
if(curType){
curType.id = encodeURIComponent(curType.id);
} */
var entry = {
expenseType: oriEntries[i].expenseType,
currencyType: oriEntries[i].currencyType,
// expenseType:expType,
// currencyType:curType,
happenTime: oriEntries[i].happenTime
};
entries.push(entry);
}
var billinfo = {
bosType: mbos('entity').data.bosType,
id: mbos('entity').data.id,
applier: mbos('entity').data.applier,
applierCompany: mbos('entity').data.applierCompany,
entries: entries
};
// 清空报销标准缓存对象
publicaccountStandard = {};
var paramacc = [JSON.stringify(billinfo)];
var success = function(result) {
// debugger;
// TODO 修改获取报销标准后的显示
if (!result || result.length == 0 || !result[0]) {
return;
}
var state = mbos('entity').data.state.value;
for (var i = 0; i < result.length; i++) {
var accountObj = result[i];
if (!accountObj) continue;
// 已提交状态的单据编辑时,需要加上本身已经扣减的余额来进行判断
var happenTime = oriEntries[i].happenTime;
var currency = oriEntries[i].currencyType;
var mapKey = buildMapKey(accountObj.expenseType, currency, happenTime);
var entryAmountOri = oriEntries[i].amountOri
var accountStandard;
if (state == 25) {
// 已提交状态,额度需要加上本身单据分录的额度
if (publicaccountStandard[mapKey]) {
accountStandard = publicaccountStandard[mapKey];
accountStandard.amountbalance = accountStandard.amountbalance + entryAmountOri;
} else {
accountStandard = {
controlType: accountObj.controlType,
amountbalance: accountObj.amountbalance + entryAmountOri,
totalAmount: accountObj.totalAmount - entryAmountOri,
totalMonthLimit: accountObj.totalMonthLimit,
controlMethod: accountObj.expenseType.controlMethod
};
publicaccountStandard[mapKey] = accountStandard;
}
} else {
// 其他编辑状态
accountStandard = {
controlType: accountObj.controlType,
amountbalance: accountObj.amountbalance,
totalMonthLimit: accountObj.totalMonthLimit,
controlMethod: accountObj.expenseType.controlMethod,
totalAmount: accountObj.totalAmount
};
publicaccountStandard[mapKey] = accountStandard;
}
// TODO 通过索引选取行是否会出现不匹配的情况?
//var rowid = waf("#entries").wafGrid("getRowId", i + 1);
/////_private.showAccountStandard(accountStandard, rowid);
}
for (var i = 0; i < result.length; i++) {
var accountObj = result[i];
if (!accountObj) continue;
var happenTime = oriEntries[i].happenTime;
var currency = oriEntries[i].currencyType;
var mapKey = buildMapKey(accountObj.expenseType, currency, happenTime);
var accountStandard = publicaccountStandard[mapKey];
if (!accountStandard) continue;
///var rowid = waf("#entries").wafGrid("getRowId", i + 1);
///_private.showAccountStandard(accountStandard, rowid);
}
};
var fail = function(result) {
// debugger;
mbos.msgBox.showError(result);
};
mbos.eas.invokeScript("fetchAccountStandard", paramacc, success, fail);
})
_this.newBill = function(event) {
//创建单据加载过滤条件 相当于initUIData
if (company === "" && currencyType === "") {
//获得初始化数据
var param = [];
var success = function(data) {
currencyType = data.currencyType;
company = data.company;
applierCompany = data.applierCompany;
costCenterOrgUnitInfo = data.costCenterOrgUnitInfo;
//调用服务端脚本,param为参数,success,fail分别为回调函数
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].currencyType = currencyType;
mbos('entity').data.currencyType = currencyType;
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].company = company;
mbos('entity').data.company = company;
mbos('entity').data.applierCompany = applierCompany;
mbos('entity').data.costedDept = costCenterOrgUnitInfo;
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].costCenter = costCenterOrgUnitInfo;
//alert("3:"+company.name+company.number);
};
var fail = function(data) {
mbos.msgBox.showError(data);
};
mbos.eas.invokeScript("initData", param, success, fail);
} else {
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].currencyType = currencyType;
mbos('entity').data.currencyType = currencyType;
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].company = company;
mbos('entity').data.company = company;
mbos('entity').data.applierCompany = applierCompany;
mbos('entity').data.costedDept = costCenterOrgUnitInfo;
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].costCenter = costCenterOrgUnitInfo;
}
setCostedQueryFilter();
//mzsks
_private.createBill();
}
_this.newEntry = function(event) {
// if (event.data.bosType == "F2062F13" && mbos('entity').value().entries.length>0) {
//alter by Smart 20230313
if (event.data.bosType == "F2062F13" && mbos('entity').value().entries.length>0) {
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].currencyType = currencyType;
mbos('entity').data.entries[mbos('entity').value().entries.length - 1].company = company;
}
}
var queryAccountStandard = function(entries, i) {
// 查询报销标准
if (CP027 == "false") {
return;
}
var expenseType = entries[i].expenseType;
var currencyType = entries[i].currencyType;
var happenTime = entries[i].happenTime;
var applier = mbos('entity').data.applier;
var applierCompany = mbos('entity').data.applierCompany;
if (applierCompany == "" || applier == "" || happenTime == "" || "" == currencyType || "" == expenseType || (
expenseType != "" && expenseType.controlType == 0)) {
// TODO 费用类型的控制方式为无控制时,报销标准如何处理?之前为隐藏报销标准
///editGridDom.wafGrid("setCell", rowid, "accountStandard", null);
return;
}
// 费用类型number.币别number.控制策略对应年月(按月控制-发生日期的年月,按年控制-发生日期的年月所在年的起始年月,
// 按季控制-发生日期的年月所在季度的起始年月)
var controlMethod = expenseType.controlMethod;
var mapKey = buildMapKey(expenseType, currencyType, happenTime);
if (publicaccountStandard.hasOwnProperty(mapKey)) {
// 如果缓存有对应的标准,不请求后台
var accountStandard = publicaccountStandard[mapKey];
///_private.showAccountStandard(accountStandard, rowid);
} else {
// 精简model
///var model = _self.getCurrentModel();
if (expenseType) {
// expenseType.id = encodeURIComponent(expenseType.id);
}
var billinfo = {
bosType: mbos('entity').data.bosType,
applier: mbos('entity').data.applier,
applierCompany: mbos('entity').data.applierCompany,
entries: [{
expenseType: expenseType,
currencyType: currencyType,
happenTime: happenTime
}]
};
var param = [billinfo];
var success = function(result) {
// debugger;
// 显示报销额度
if (typeof result != "object") {
return;
}
// 缓存报销标准
result = result[0];
var accountStandard = [];
if (result == null) {
accountStandard = null;
} else {
accountStandard = {
controlType: result.controlType,
amountbalance: result.amountbalance,
totalMonthLimit: result.totalMonthLimit,
controlMethod: result.expenseType.controlMethod,
totalAmount: result.totalAmount
};
}
publicaccountStandard[mapKey] = accountStandard;
///_private.showAccountStandard(accountStandard, rowid);
};
var fail = function(result) {
mbos.msgBox.showError(result);
};
mbos.eas.invokeScript("fetchAccountStandard", param, success, fail);
}
}
var publicaccountStandard = {};
var initKeyList = function(keyList, entries) {
for (var i = 0, il = entries.length; i < il; i++) {
var entry = entries[i],
expenseType = entry.expenseType,
currencyType = entry.currencyType,
happenTime = entry.happenTime;
if (!(happenTime instanceof Date)) {
var dateExp = /^\s*(\d{4})-(\d\d)-(\d\d).*$/,
tmpDate = new Date(NaN),
tmpMonth;
var parts = dateExp.exec(happenTime);
if (parts) {
tmpMonth = parts[2];
tmpDate.setFullYear(parts[1], tmpMonth - 1, parts[3]);
}
happenTime = tmpDate;
}
///var mapKey = _private.buildMapKey(expenseType, currencyType, happenTime);
var mapKey = buildMapKey(expenseType, currencyType, happenTime);
if (!isArrayContainsVal(keyList, mapKey)) {
keyList.push(mapKey);
}
}
}
var isArrayContainsVal = function(array, value) {
var i = array.length;
while (i--) {
if (array[i] == value) {
return true;
}
}
return false;
}
var buildMapKey = function(expenseType, currency, happenTime) {
// 根据费用类型/币别/发生日期/控制策略构造报销标准缓存的key值
// 同一标准中,分录上的发生日期不一样,所判断的总额度也得分开缓存,这里通过构造key值区分
///var applier = waf("#applier").wafPromptBox("getValue");
var applier = mbos('entity').data.applier;
if (!applier || !applier.id) return;
if (!(happenTime instanceof Date)) {
var dateExp = /^\s*(\d{4})-(\d\d)-(\d\d).*$/,
tmpDate = new Date(NaN),
tmpMonth;
var parts = dateExp.exec(happenTime);
if (parts) {
tmpMonth = parts[2];
tmpDate.setFullYear(parts[1], tmpMonth - 1, parts[3]);
}
happenTime = tmpDate;
}
var mapKey = applier.id + "." + expenseType.number + "." + currency.number;
var controlMethod = expenseType.controlMethod;
controlMethod = (typeof(controlMethod) == "string") ? controlMethod : controlMethod.value;
var month = happenTime.getMonth() + 1;
if (String(month).length == 1) {
month = '0' + month;
}
if (controlMethod == "0") {
// 按年
mapKey += "." + happenTime.getFullYear() + "." + month + "." + "0";
} else if (controlMethod == "1") {
// 按月
mapKey += "." + happenTime.getFullYear() + "." + month + "." + "1";
} else if (controlMethod == "2") {
// 按季
var month = happenTime.getMonth + 1;
if (month >= 1 && month <= 3) {
month = 1;
} else if (month >= 4 && month <= 6) {
month = 4;
} else if (month >= 7 && month <= 9) {
month = 7;
} else if (month >= 10 && month <= 12) {
month = 10;
}
mapKey += "." + happenTime.getFullYear() + month;
}
return mapKey;
}
var accountStandardValidate = function(data, event) {
// debugger;
// 费用报销单报销标准的校验
// infoType1:严格控制标准提示|infoType2:提示且填写超标说明提示|infoType3:仅提示超标说明提示
// balanceInfo 缓存费用类型-币别 对应的可用余额,方便计算超额总额
var entries = data.entries,
ifBreak = false,
balanceInfo = {}, ///new Object(),
//按年累计时 记录申请金额的累加,用于同一年不同月份之间的金额比对
keyTotalAmount = {}, /// new Object(),
//缓存按月累计控制时,同一年对应的最大额度
keyLimitAmount = {}, /// new Object(),
keyMonth = {}, ///new Object(),
infoType1,
infoType2,
infoType3,
keyList = []; ///new Array();
///_private.initKeyList(keyList,entries);
initKeyList(keyList, entries);
for (var key in publicaccountStandard) {
if (!publicaccountStandard[key]) continue;
if (!isArrayContainsVal(keyList, key)) continue;
if (key.charAt(key.length - 1) == '0') {
var curMonth = key.substring(key.length - 4, key.length - 2);
var commonKey = key.substring(0, key.length - 4);
if (keyLimitAmount[commonKey]) {
var month = keyLimitAmount[commonKey].curMonth;
if (Number(curMonth) > Number(month)) {
keyLimitAmount[commonKey] = publicaccountStandard[key];
}
} else {
publicaccountStandard[key].curMonth = curMonth;
keyLimitAmount[commonKey] = publicaccountStandard[key];
}
}
}
for (var i = 0, il = entries.length; i < il; i++) {
var entry = entries[i],
expenseType = entry.expenseType,
expenseTypeName = (typeof(expenseType.name) == "string") ? expenseType.name : expenseType.name,
currencyType = entry.currencyType,
currencyTypeName = (typeof(currencyType.name) == "string") ? currencyType.name : currencyType.name,
happenTime = entry.happenTime,
controlMethod = expenseType.controlMethod;
controlMethod = (typeof(controlMethod) == "string") ? controlMethod : controlMethod.value;
if (!(happenTime instanceof Date)) {
var dateExp = /^\s*(\d{4})-(\d\d)-(\d\d).*$/,
tmpDate = new Date(NaN),
tmpMonth;
var parts = dateExp.exec(happenTime);
if (parts) {
tmpMonth = parts[2];
tmpDate.setFullYear(parts[1], tmpMonth - 1, parts[3]);
}
happenTime = tmpDate;
}
var curMonth = happenTime.getMonth() + 1;
var mapKey = buildMapKey(expenseType, currencyType, happenTime);
var accountStandard = publicaccountStandard[mapKey];
if (!accountStandard) {
continue;
}
// 取原币别金额|报销标准可以用额度(费用类型-币别 共用一个额度)
var amount = entry.amountOri,
accountBalance;
if (balanceInfo[mapKey] != undefined) {
accountBalance = balanceInfo[mapKey];
} else {
accountBalance = accountStandard.amountbalance
}
var commonKey = null;
//按年累计的金额累加
// debugger;
if (controlMethod == '0') {
//截掉标示月份以后的字符串
commonKey = mapKey.substring(0, mapKey.length - 4);
if (keyTotalAmount[commonKey]) {
keyTotalAmount[commonKey] = Number(keyTotalAmount[commonKey]) + Number(amount);
keyTotalAmount[commonKey] = Number(keyTotalAmount[commonKey]).toFixed(2);
amount = keyTotalAmount[commonKey];
} else {
keyTotalAmount[commonKey] = amount;
}
//重新构造mapKey,如果不存在同年累计的其他分录,构造前后应该是一样的
//如果存在同年累计的,那构造后为年份最大的mapKey
if (keyLimitAmount[commonKey]) {
accountStandard = keyLimitAmount[commonKey];
accountBalance = accountStandard.amountbalance;
}
if (accountStandard.curMonth) {
curMonth = accountStandard.curMonth;
}
if (curMonth.length == 1) {
mapKey = commonKey + '0' + curMonth + '.0'
} else {
mapKey = commonKey + curMonth + '.0'
}
}
balanceInfo[mapKey] = Number(accountBalance) - Number(amount);
if (balanceInfo[mapKey] < 0) {
// 超出额度
var controlType = accountStandard.controlType.value;
// debugger;
if (controlType == undefined) {
controlType = accountStandard.controlType.iValue;
}
// debugger;
if ("1" == controlType) {
// 严格控制
if (!infoType1) {
infoType1 = new Object();
}
if (infoType1[mapKey] == undefined) {
var obj = {
overAmount: 0 - balanceInfo[mapKey],
expenseType: expenseTypeName,
currencyType: currencyTypeName,
controlMethod: controlMethod,
curMonth: curMonth,
amountbalance: accountStandard.amountbalance,
totalMonthLimit: accountStandard.totalMonthLimit,
totalAmount: accountStandard.totalAmount
};
infoType1[mapKey] = obj;
} else {
infoType1[mapKey].overAmount = 0 - balanceInfo[mapKey];
}
} else if ("2" == controlType) {
// 提示且填写超标说明
if (!infoType2) {
infoType2 = new Object();
}
if (infoType2[mapKey] == undefined) {
var obj = {
overAmount: 0 - balanceInfo[mapKey],
expenseType: expenseTypeName,
currencyType: currencyTypeName,
controlMethod: controlMethod,
curMonth: curMonth,
amountbalance: accountStandard.amountbalance,
totalMonthLimit: accountStandard.totalMonthLimit,
totalAmount: accountStandard.totalAmount
};
infoType2[mapKey] = obj;
} else {
infoType2[mapKey].overAmount = 0 - balanceInfo[mapKey];
}
} else if ("3" == controlType) {
// 仅提示(不控制)
if (!infoType3) {
infoType3 = new Object();
}
if (infoType3[mapKey] == undefined) {
var obj = {
overAmount: 0 - balanceInfo[mapKey],
expenseType: expenseTypeName,
currencyType: currencyTypeName,
controlMethod: controlMethod,
curMonth: curMonth,
amountbalance: accountStandard.amountbalance,
totalMonthLimit: accountStandard.totalMonthLimit,
totalAmount: accountStandard.totalAmount
};
infoType3[mapKey] = obj;
} else {
infoType3[mapKey].overAmount = 0 - balanceInfo[mapKey];
}
}
}
}
// debugger;
// 构造contentDiv
var contentDiv = "",
ifOverAmountDesc = data.overAmountDesc != undefined;
if (infoType1 != null && keyList != null) {
for (var i = 0; i < keyList.length; i++) {
var key = keyList[i];
if (!infoType1[key]) continue;
contentDiv += infoType1[key].expenseType + "(" + infoType1[key].currencyType + "):" +
"累计额度" + bizNumberformat(infoType1[key].totalMonthLimit) + " | ";
if (infoType1[key].controlMethod == '0') {
contentDiv += "1-" + infoType1[key].curMonth + "月";
} else {
contentDiv += infoType1[key].curMonth + "月";
}
contentDiv += " | " + "已报" + bizNumberformat(infoType1[key].totalAmount) + " | " + bizNumberformat(infoType1[key].amountbalance);
}
}
if (!ifOverAmountDesc && infoType2 != null && keyList != null) {
for (var i = 0; i < keyList.length; i++) {
var key = keyList[i];
if (!infoType2[key]) continue;
contentDiv += infoType2[key].expenseType + "(" + infoType2[key].currencyType + "):" +
"累计额度" + bizNumberformat(infoType2[key].totalMonthLimit) + " | " + "可报";
if (infoType2[key].controlMethod == '0') {
contentDiv += "1-" + infoType2[key].curMonth + "月";
} else {
contentDiv += infoType2[key].curMonth + "月";
}
contentDiv += " | " + "已报" + bizNumberformat(infoType2[key].totalAmount) + " | " + "可报" + bizNumberformat(infoType2[
key].amountbalance);
}
}
if (infoType3 != null && keyList != null) {
for (var i = 0; i < keyList.length; i++) {
var key = keyList[i];
if (!infoType3[key]) continue;
contentDiv += infoType3[key].expenseType + "(" + infoType3[key].currencyType + "):" +
"累计额度" + bizNumberformat(infoType3[key].totalMonthLimit) + " | ";
if (infoType3[key].controlMethod == '0') {
contentDiv += "1-" + infoType3[key].curMonth + "月";
} else {
contentDiv += infoType3[key].curMonth + "月";
}
contentDiv += " | " + "已报" + bizNumberformat(infoType3[key].totalAmount) + " | " + "可报" + bizNumberformat(infoType3[
key].amountbalance);
}
}
// debugger;
// 构造footDiv
//infoType1 infoType3 infoType2
// 严格控制 仅提示 提示和填写超标说明 footDiv
// 1 0 0 不能提交
// 1 1 0 不能提交
// 1 0 1 不能提交
// 1 1 1 不能提交
// 0 0 0 直接提交
// 0 1 0 是否继续提交?
// 0 1 1 是否填写说明 ? 是否继续提交 : 填写说明
// 0 0 1 是否填写说明 ? 提交 : 填写说明
var footDiv = "";
if (infoType1 != null) {
footDiv = ";超出可报额度,不能提交,如有疑问请查看个人额度表!";
contentDiv += footDiv;
mbos.ui.showInfo("费用报销超标警告", contentDiv, function() {
});
// debugger;
return;
}
if (infoType2 != null) {
if (ifOverAmountDesc) {
page.submit && page.submit(event);
return;
} else {
// 提示填写说明,并显示说明
footDiv = ";超出可报额度,如继续,则请填写超标说明后提交,否则取消。";
contentDiv += footDiv;
mbos.ui.showConfirm("费用报销超标警告", contentDiv, function(data) {
//点击取消按钮
if (data == 1) {
} else if (data == 0) { //点击确定按钮
mbos('overAmountDesc').show();
}
});
// debugger;
return;
}
}
if (infoType3 != null) {
footDiv = ";超出可报额度,确定是否提交?";
contentDiv += footDiv;
mbos.ui.showConfirm("费用报销超标警告", contentDiv, function() {
page.submit && page.submit(event);
// debugger;
return; // page.submit && page.submit(event);
});
// debugger;
return;
}
page.submit && page.submit(event);
}
var bizNumberformat = function(num) {
return (Number(num).toFixed(2) + '').replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g, '$&,');
}
_this.imageOnClick = function(event) {
var state = mbos('entity').data.state.value;
if (state < 30) {
//mbos('billimage1').setItems(2);
mbos('billimage1').billimage();
} else {
mbos('billimage1').setItems(2);
mbos('billimage1').billimage();
}
}
_this.pageOnLoadAfter = function(event) {
_private.setCountersignatoryEntry();
}
/*
税号:914403000944135503
企业名称:招银国际资本管理(深圳)有限公司
发票云授权标识(Client_ID):
vZEf1W3Cvb4WAtY8hz9O
授权密钥(Client_Secret):
14fdbc08056f45b3b6a892440d28b220
加密密钥(Encrypt_Key):
0ZhrySW1zgGhDauV
*/
//加载事件完成
mbos('entity').bind('afterLoad', function() {
_private.initButtonStatus();
//编辑单据加载过滤条件
setCostedQueryFilter();
setEntryCostedQueryFilter();
//mzsks
_private.setCountersignatoryEntry();
_this.initClientID();
//_private.setOrgUnitFilter(); //公司过滤部门
// var orgUnit = mbos('entity').data.orgUnit;
// if(!orgUnit){
// mbos("applier").attr('dynamicFilter', "number = 'LJC'");
// mbos('entity').data.applier=null;
// }else{
// _private.setApplierFilter(); //过滤实际报销人
// }
});
_this.openInvoiceHandel = function(event) {
//mbos.msgBox.showError("test");
if(Client_ID == ""){
return;
}
var model = mbos("entity").data;
//公司
var company = model.company;
//报销单号
var billNumber = model.number;
//报销单ID
var billid = model.id;
//申请人ID
var applierId = model.applier.id
var random = Math.random()
var timestamp = Date.now();
var sign = hex_md5(Client_ID + Client_Secret + timestamp);
var params = {
"billNumber": billNumber,
"billType": "",
"branch_id": "",
"ghf_mc": TaxNum,
"bxd_key": billid,
"client_id": Client_ID,
"eid": applierId,
"random": random + "",
"sign": sign,
"ticketParam": "1111",
"timestamp": timestamp + "",
"tin": TaxNum
};
params = [JSON.stringify(params)]
timestamp = Date.now();
var isOpenSocket = false; //防止socket突然重连导致闪退重复打开iframe
var iframe = document.createElement('iframe');
iframe.width = '100%';
iframe.height = '100%';
iframe.style.border = 0;
iframe.style = "border:0;position:absolute;top:0;z-index:2"
var pwyWebsocket = new PwyWebSocket({ //参数说明同文档1.0表格,
env: "test", //正式环境: prod, 测试环境: test
tin: TaxNum, //${tin}为获取userKey时的税号
eid: applierId, //eid为获取userKey时的用户${eid}
client_id: Client_ID, // 发票云授权标识
sign: hex_md5(Client_ID + Client_Secret + timestamp), // ${sign}签名规则:MD5(client_id + client_secret + timestamp)
timestamp: timestamp, // 签名时的时间戳${timestamp}
name: LinkKey, // 连接名称,选择发票前获取的${linkKey} ,接口1.7
onOpen: function() { // 连接成功的回调
var socketName = this.name;
if (socketName != '') {
window.onhashchange = function() { // 如果碰到页面头部返回,iframe无法关闭,可以在打开的时候给当前地址加上hash,然后通过监听hash的方式关闭iframe
if (this.location.hash.indexOf('pwy') < 0) {
var fwy = document.getElementById('fwy');
if (fwy) {
fwy.parentNode.removeChild(fwy);
}
}
}
if (!isOpenSocket) {
window.location.hash = 'pwy' + new Date().getTime();
iframe.src = BaseUrl + '/m4-web/dd/wap/index?userKey=' + UserKey + '&socketName=' + socketName + '&app=other' + '&model=no' + '&wechatCard=false';
document.body.appendChild(iframe);
}
isOpenSocket = true;
} else {
console.log('未获取到连接名');
}
},
onMessage: function(msg) { //从发票云采集完发票点击首页推送返回到当前页面时,此处会接收发票数据
// alert('获取到' + msg.data.length + '条数据');
//分录ID 和 发票流水号 之间的关系
var entriesArr = mbos("entity").data.entries;
var model = mbos("entity").data;
var relation = []; var k = 0;
//原始分录发票信息
for(var i = 0; i < entriesArr.length; i++){
if(entriesArr[i].entrySerialNo){
relation[k] = {
"entryid": entriesArr[i].id,
"fid": entriesArr[i].entrySerialNo
}
k++;
}
}
var invServiceType = "";
var feeType = "";
mbos.eas.invokeScript("getExpTypeByInv", [invServiceType,feeType,msg],function(result){
// mbos.msgBox.showInfo(result.data);
//关闭窗口
if (iframe) { // 关闭新增的地址
window.history.go(-1);
iframe.parentNode.removeChild(iframe);
isOpenSocket = false;
}
if(result){
var entryArray = mbos.$model("entity").data['entries'];
for(var j = 0; j < result.length; j++){
$.ajax({
async:false,
url: "/mbos/editpage/createEntryModel",
type: "post",
// contentType: 'application/json',
data: {"bostype": model.bosType,
"initvalueMap": JSON.stringify(initvalueMap),
"uiname": requestParam.name,
"entryName": "entries"},
success: function(data) {
data.expenseType = result[j].expenseType;
data.exchangeRate = result[j].exchangeRate;
data.tax = result[j].taxAmount;
data.amount = result[j].amount;
data.amountOri = result[j].amountOri;
data.amountWithoutTax = result[j].amountWithoutTax
data.amountOriWithoutTax = result[j].amountOriWithoutTax
// data.amountApproved = detailAmount;
// data.amountApprovedOri = detailAmount;
// data.amountApprovedOriWithoutTax = taxRate;
// data.amountApprovedWithoutTax = detailAmount;
data.reportCurrency = result[j].reportCurrency;
data.entryTicNumber = result[j].entryTicNumber;
data.entrySerialNo = result[j].entrySerialNo;
data.currencyType = currencyType;
data.company = company;
// entryArray.push(data);
relation[k] = {
"entryid": data.id,
"fid": data.entrySerialNo
};
k++;
entryArray.push(data);
var event = {};
event.data = data;
mbos.$eventbus.fire("page", "onCreateDetailData", event);
},
error: function(data) {
if (typeof(data) == "string") {
mbos.msgBox.showError("", data);
} else {
mbos.msgBox.showError(data);
}
}
});
}
//同步单据与发票关系
timestamp = Date.now();
var syncParams = {
"userKey": UserKey, //打开首页时获取的userKey(可以为空)
"eid": applierId, //erp系统的用户id
"billTypeId": "UcN+cgExEADgAAAEwKjIWG8A6j8=", //单据类型, 用于区分是哪种单据//SELECT * FROM T_BC_BillType
"billnumber": billNumber, //保存时的单据编号
"bxd_key": billNumber, //保存时的单据ID全球唯一id,如果没有这个字段,与billnumber一致即可
"client_id": Client_ID, //发票云授权标识(client_id)
"tin": TaxNum, //企业税号
"timestamp": timestamp, //签名的时间戳
"sign": hex_md5(Client_ID + Client_Secret + timestamp), //签名规则:MD5(client_id + client_secret + timestamp)
"data": []
}
syncParams.data = relation;
var fail = function(data) {
mbos.msgBox.showError("同步单据发票关系出错");
};
var success = function(data) {
if (data.errcode == "0000") {
console.log("同步单据发票关系成功");
}
}
timestamp = Date.now();
//
var x = 100,y = 1000;
mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"/m4/fpzs/expense/entry/save?reqid="+timestamp+""+Math.round(Math.random()*(y-x)+x),JSON.stringify(syncParams)], success, fail);
//关闭窗口
// if (iframe) { // 关闭新增的地址
// window.history.go(-1);
// iframe.parentNode.removeChild(iframe);
// isOpenSocket = false;
// }
}
},function(result){
mbos.msgBox.showInfo(result.detail);
});
// for (var i = 0; i < msg.data.length; i++) {
// //往分录中追加分录行,填入发票信息
// // alert(msg.data[0].buyerName); //购方抬头
// // alert(msg.data[0].buyerTaxNo); //购方税号
// // alert('1111');
// // alert(msg.data[0].serialNo); //发票流水号
// // alert(billid);
// var entryTicNumber = msg.data[i].invoiceCode;
// var entrySerialNo = msg.data[i].serialNo
// var items = msg.data[i].items;
// for (var j = 0; j < items.length; j++) {
// var item = items[j];
// /**
// 0: {unitPrice: "157.86", taxRate: "免税", unit: "", num: "1", detailAmount: "157.86", …}
// 1: {unitPrice: "", taxRate: "免税", unit: "", num: "", detailAmount: "-27.95", …}
// */
// var detailAmount = Number(item.detailAmount); //报销金额
// var taxRate = 0; //税率
// if (taxRate != "免税" && taxRate != 0 && taxRate != "***") {
// var str = taxRate.replace('%','');
// taxRate = str / 100;
// }
// var taxAmount = 0;
// taxRate = Number(taxRate);
// if(taxRate!=0){
// taxAmount = Number(item.taxAmount); //税额
// }
// var goodsName = item.goodsName;
// var invServiceType = goodsName.split('*')[1];
// var feeType = goodsName.split('*')[2];
// // mbos.eas.invokeScript("getExpTypeByInv", [invServiceType,feeType],
// // function(result){
// // // mbos.msgBox.showError(data.name);
// // var entryArray = mbos.$model("entity").data['entries'];
// // $.ajax({
// // async:false,
// // url: "/mbos/editpage/createEntryModel",
// // type: "post",
// // // contentType: 'application/json',
// // data: {"bostype": model.bosType,
// // "initvalueMap": JSON.stringify(initvalueMap),
// // "uiname": requestParam.name,
// // "entryName": "entries"},
// // success: function(data) {
// // data.expenseType = result;
// // data.exchangeRate = taxRate;
// // data.tax = taxAmount;
// // data.amount = detailAmount;
// // data.amountOri = detailAmount;
// // data.amountWithoutTax = detailAmount / (1 + taxRate / 100)
// // data.amountOriWithoutTax = detailAmount / (1 + taxRate / 100)
// // // data.amountApproved = detailAmount;
// // // data.amountApprovedOri = detailAmount;
// // // data.amountApprovedOriWithoutTax = taxRate;
// // // data.amountApprovedWithoutTax = detailAmount;
// // data.reportCurrency = detailAmount;
// // data.entryTicNumber = entryTicNumber;
// // data.entrySerialNo = entrySerialNo;
// // entryArray.push(data);
// // relation[k] = {
// // "entryid": data.id,
// // "fid": entrySerialNo
// // };
// // k++;
// // var event = {};
// // event.data = data;
// // mbos.$eventbus.fire("page", "onCreateDetailData", event);
// // },
// // error: function(data) {
// // if (typeof(data) == "string") {
// // mbos.msgBox.showError("", data);
// // } else {
// // mbos.msgBox.showError(data);
// // }
// // }
// // });
// // //同步单据与发票关系
// // timestamp = Date.now();
// // var syncParams = {
// // "userKey": UserKey, //打开首页时获取的userKey(可以为空)
// // "eid": applierId, //erp系统的用户id
// // "billTypeId": "UcN+cgExEADgAAAEwKjIWG8A6j8=", //单据类型, 用于区分是哪种单据//SELECT * FROM T_BC_BillType
// // "billnumber": billNumber, //保存时的单据编号
// // "bxd_key": billNumber, //保存时的单据ID全球唯一id,如果没有这个字段,与billnumber一致即可
// // "client_id": Client_ID, //发票云授权标识(client_id)
// // "tin": TaxNum, //企业税号
// // "timestamp": timestamp, //签名的时间戳
// // "sign": hex_md5(Client_ID + Client_Secret + timestamp), //签名规则:MD5(client_id + client_secret + timestamp)
// // "data": []
// // }
// // syncParams.data = relation;
// // var fail = function(data) {
// // mbos.msgBox.showError("同步单据发票关系出错");
// // };
// // var success = function(data) {
// // if (data.errcode == "0000") {
// // console.log("同步单据发票关系成功");
// // }
// // }
// // timestamp = Date.now();
// // //
// // var x = 100,y = 1000;
// // mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"/m4/fpzs/expense/entry/save?reqid="+timestamp+""+Math.round(Math.random()*(y-x)+x),JSON.stringify(syncParams)], success, fail);
// // }, function(data){
// // mbos.msgBox.showError(data);
// // });
// }
// }
// if (iframe) { // 关闭新增的地址
// window.history.go(-1);
// iframe.parentNode.removeChild(iframe);
// isOpenSocket = false;
// }
},
onError: function(errText, errCode) { //失败时的回调
console.log("与发票云建立连接失败!");
console.log("errText>>>" + errText);
isOpenSocket = false;
}
})
}
_this.showEntryInv = function(event) {
var model = mbos("entity").data;
//报销单ID
var billid = model.id;
//获取分录中的发票信息相关字段
var buyerName = "";
var buyerTaxNo = "";
var entrySerialNo = "";
//时间戳
var timestamp = Date.now();
var entries = mbos.$model("entity").data['entries'];
for (var i = 0; i < entries.length; i++) {
buyerName = entries[0].buyerName;
buyerTaxNo = entries[0].buyerTaxNo;
entrySerialNo = entries[0].entrySerialNo;
}
var params = {
"client_id": Client_ID,
data: {
"buyerName": "",
"buyerTaxNo": "",
"certifacateSerialNos": [], //附件流水号
"invoiceSerialNos": [
entrySerialNo
],
"ticketParam": "1111",
"expenseId": billid
},
"sign": hex_md5(Client_ID + Client_Secret + timestamp),
"timestamp": timestamp,
"type": "EXPENSE_SERIALNO_QUERY"
}
params = [JSON.stringify(params)]
var fail = function(data) {
// userkey = "";
mbos.msgBox.showError("获取EventCode出错");
};
var success = function(data) {
// alert(data);
// if(data.errcode == "0000"){
// userkey = data.data.userKey;
// }
// mbos.msgBox.showError("userkey:"+userkey);
}
// mbos.eas.invokeScript("getEventCode", params, success, fail);
// params = [JSON.stringify(params)]
mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"base/oauth/eventCode",JSON.stringify(params)], success, fail);
}
_this.showHeadInv = function(event) {
if(Client_ID == ""){
return;
}
var model = mbos("entity").data;
//报销单ID
var billid = model.id;
var billNumber = model.number;
//时间戳
var timestamp = Date.now();
/*
var Client_ID = "vZEf1W3Cvb4WAtY8hz9O";
var Client_Secret = "14fdbc08056f45b3b6a892440d28b220";
var Encrypt_Key = "0ZhrySW1zgGhDauV";
*/
//获取
var url = BaseUrl + "/m4/fpzs/bxdInvoices?bxd_key=" + billNumber + "&client_id=" + Client_ID + "×tamp=" + timestamp + "&sign=" + hex_md5(Client_ID + Client_Secret + timestamp);
window.location.href = url;
}
//分录修改完成后重新同步发票信息到发票云
_this.syncInvToCloud = function(){
var model = mbos("entity").data;
//公司
var company = model.company;
if (company.number == "0201-CC") {
}
//报销单号
var billNumber = model.number;
//申请人ID
var applierId = model.applier.id
var entries = model.entries;
var relation = []; var k = 0;
for(var i = 0; i < entries.length; i++){
if(entries[i].entrySerialNo){
relation[k] = {
"entryid": entries[i].id,
"fid": entries[i].entrySerialNo
}
k++;
}
}
var random = Math.random()
var timestamp = Date.now();
var sign = hex_md5(Client_ID + Client_Secret + timestamp);
//获取单据头
//同步单据与发票关系
timestamp = Date.now();
var syncParams = {
"userKey": userkey, //打开首页时获取的userKey(可以为空)
"eid": applierId, //erp系统的用户id
"billTypeId": "UcN+cgExEADgAAAEwKjIWG8A6j8=", //单据类型, 用于区分是哪种单据//SELECT * FROM T_BC_BillType
"billnumber": billNumber, //保存时的单据编号
"bxd_key": billNumber, //保存时的单据ID全球唯一id,如果没有这个字段,与billnumber一致即可
"client_id": Client_ID, //发票云授权标识(client_id)
"tin": TaxNum, //企业税号
"timestamp": timestamp, //签名的时间戳
"sign": hex_md5(Client_ID + Client_Secret + timestamp), //签名规则:MD5(client_id + client_secret + timestamp)
"data": []
}
syncParams.data = relation;
var fail = function(data) {
mbos.msgBox.showError("同步单据发票信息出错");
};
var success = function(data) {
if (data.errcode == "0000") {
console.log("同步单据发票信息成功");
}
}
timestamp = Date.now();
//
var x = 100,y = 1000;
mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"/m4/fpzs/expense/entry/save?reqid="+timestamp+""+Math.round(Math.random()*(y-x)+x),JSON.stringify(syncParams)], success, fail);
}
//保存单据时保存单据信息到发票云
_this.saveInvToCloud = function(){
if(Client_ID == ""){
return;
}
var model = mbos("entity").data;
//公司
var company = model.company;
//报销单号
var billNumber = model.number;
//申请人ID
var applierId = model.applier.id
var cause = model.cause;
var creatorId = model.creator.id;
var creatorName = model.creator.name;
var entries = model.entries;
var relation = []; var k = 0;
for(var i = 0; i < entries.length; i++){
if(entries[i].entrySerialNo){
relation[k] = {
"entryid": entries[i].id,
"fid": entries[i].entrySerialNo
}
k++;
}
}
var random = Math.random()
var timestamp = Date.now();
var sign = hex_md5(Client_ID + Client_Secret + timestamp);
//获取单据头
//同步单据与发票关系
timestamp = Date.now();
var syncParams = {
"userKey": userkey,//打开首页时获取的userKey(可以为空)
"eid": applierId,//eas用户id eas系统用户id
"billTypeId": "UcN+cgExEADgAAAEwKjIWG8A6j8=", //单据类型, 用于区分是哪种单据
"billnumber": billNumber, //单据编号
"bxd_key": billNumber, //单据ID全球唯一id,如果没有这个字段,与billnumber一致即可
"client_id": Client_ID, //发票云授权标识(client_id)
"tin": TaxNum, //企业税号
"timestamp": timestamp, //签名的时间戳
"sign": hex_md5(Client_ID + Client_Secret + timestamp), //签名规则:MD5(client_id + client_secret + timestamp)
"coverBase64": "",//封面的base64
"coverFileType": "",//封面的文件类型:pdf、jpg、png等
"coverNumber": "",//影像/封面编号
"data":[],
// [{
// "entryid": "", //单据的分录id,如果没有分录功能(可以传空)
// "fid": [ //发票流水号, 数组格式
// "流水号1",
// "流水号2"
// ],
// "costTypeId":"",//费用类型id(如获取不到可以为空)
// "costTypeName":"业务招待费",//费用类型名称(如获取不到可以为空)
// }],
"remark":cause,//事由
"expensePersonId":creatorId,//创建单据人ID
"expensePersonName":creatorName,//创建单据人昵称
"realExpenseAmount":"",//实际金额
"billType":""//单据类型
}
syncParams.data = relation;
var fail = function(data) {
mbos.msgBox.showError("保存单据发票信息出错");
};
var success = function(data) {
if (data.errcode == "0000") {
console.log("保存单据发票信息成功");
}
}
timestamp = Date.now();
//
var x = 100,y = 1000;
mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"/m4/fpzs/expense/entry/save?reqid="+timestamp+""+Math.round(Math.random()*(y-x)+x),JSON.stringify(syncParams)], success, fail);
}
//单据提交时重新同步发票信息到发票云
_this.submitInvToCloud = function(){
if(Client_ID == ""){
return;
}
var model = mbos("entity").data;
//公司
var company = model.company;
if (company.number == "0201-CC") {
}
//报销单号
var billNumber = model.number;
//申请人ID
var applierId = model.applier.id
var entries = model.entries;
var invoiceData = []; var k = 0;
for(var i = 0; i < entries.length; i++){
if(entries[i].entrySerialNo){
invoiceData[k] = {
"serialNo":entries[i].entrySerialNo,//流水号
"canBeDeduction":"",//是否可抵扣,0不可 1 可以
"entryAmount":"",//入账税额
"outputReason":""//转出原因
}
k++;
}
}
var random = Math.random()
var timestamp = Date.now();
var sign = hex_md5(Client_ID + Client_Secret + timestamp);
//获取单据头
//同步单据与发票关系
timestamp = Date.now();
var syncParams = {
"userKey":UserKey, //打开首页时获取的userKey(可以为空)
"timestamp": "", //签名的时间戳
"tin": TaxNum, //税号
"sign": hex_md5(Client_ID + Client_Secret + timestamp), // 签名规则:MD5(client_id + client_secret + timestamp)
"client_id": Client_ID,//发票云授权标识(client_id)
"expenseStatus":"30", //单据状态: 1未用、30在用、60已用、65已入账
"ticketParam":"11011", //过滤规则,默认不允许被多个单据重复占用
"billnumber": billNumber, //保存时的单据编号
"bxd_key": billNumber, //保存时的单据ID全球唯一id,如果没有这个字段,与billnumber一致即可
"eid":applierId,//erp系统的用户id
"billTypeId":"UcN+cgExEADgAAAEwKjIWG8A6j8=",// 单据类型, 用于区分是哪种单据, 最长80位
"invoiceData":[{
"serialNo":"",//流水号
"canBeDeduction":"",//是否可抵扣,0不可 1 可以
"entryAmount":"",//入账税额
"outputReason":""//转出原因
}]
}
syncParams.data = invoiceData;
var fail = function(data) {
mbos.msgBox.showError("提交单据发票信息出错");
};
var success = function(data) {
if (data.errcode == "0000") {
console.log("提交单据发票信息成功");
}
}
timestamp = Date.now();
//
var x = 100,y = 1000;
mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"/m4/fpzs/expense/invoice/status/update?reqid="+timestamp+""+Math.round(Math.random()*(y-x)+x),JSON.stringify(syncParams)], success, fail);
}
_this.initClientID = function(){
//add by Smart 20230224
var model = mbos("entity").data;
//公司
//获取当前公司
var company = model.company;
//招银国际资本管理(深圳)有限公司
if (company.number == "S-0210-02-C") {
TaxNum = "914403000944136659";
Client_ID = "vZEf1W3Cvb4WAtY8hz9O";
Client_Secret = "14fdbc08056f45b3b6a892440d28b220";
Encrypt_Key = "0ZhrySW1zgGhDauV";
}else if(company.number == "S-0210-03-HH"){//招银国际金融控股(深圳)有限公司
TaxNum = "914403000944135503";
Client_ID = "dfsQcFGA7cf6igThiUmU";
Client_Secret = "a5a29691746d4dd3969de23816d62e18";
Encrypt_Key = "K9dHtRcmFzktObeP";
}else{
// TaxNum = "";
// Client_ID = "";
// Client_Secret = "";
// Encrypt_Key = "";
// UserKey = "";
// LinkKey = "";
}
if(Client_ID != ""){
//报销单号
var billNumber = model.number;
//报销单ID
var billid = model.id;
//申请人ID
var applierId = model.applier.id;
var random = Math.random();
var timestamp = Date.now();
var sign = hex_md5(Client_ID + Client_Secret + timestamp);
var params = {
"billNumber": billNumber,
"billType": "",
"branch_id": "",
"ghf_mc": TaxNum,
"bxd_key": billid,
"client_id": Client_ID,
"eid": applierId,
"random": random + "",
"sign": sign,
"ticketParam": "1111",
"timestamp": timestamp + "",
"tin": TaxNum
};
//获取userkey
// params = [JSON.stringify(params)]
var fail = function(data) {
UserKey = "";
mbos.msgBox.showError("获取userkey出错");
};
var success = function(data) {
if (data.errcode == "0000") {
UserKey = data.data.userKey;
}
// mbos.msgBox.showError("userkey:"+userkey);
}
// mbos.eas.invokeScript("getUserKey", params, success, fail);
mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"/m4/fpzs/getUserKey",JSON.stringify(params)], success, fail);
mbos.eas.invokeScript("doPostRequsition", [BaseUrl+"/m4/fpzs/getLinkKey",""],
function(data) {
//success
if (data.errcode == "0000") {
LinkKey = data.data;
}
// mbos.msgBox.showError("linkkey:"+linkkey);
},
function(data) {
//调用后台方法出错
LinkKey = "";
mbos.msgBox.showError("获取LinkKey出错");
}
);
}
}
console