Commit 6b76c852 authored by 刘学辉's avatar 刘学辉

付款申请(无PO)、采购申请的撤销审批

parent a250f04d
var tableArray = [
{
parms: {},
node: "reimbursementApplierGrid",
gridManager: null,
data: null,
columns: [
{display: "EP流程子序号", name: "zepItemno", width: 80, minwidth: 80, type: "string", align: "left"},
{display: "", name: "reimbursementDetailId", width: 80, minwidth: 80, type: "string", align: "left", hide: true},
{display: "", name: "reimbursementBaseInfoId", width: 80, minwidth: 80, type: "string", align: "left", hide: true},
{display: "", name: "mwskz", width: 80, minwidth: 80, type: "string", align: "left", hide: true},
{
display: "计划内外付款标识", name: "zepPlan", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: true, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "ZEP_PLAN"}
},
back: {
ZEP_PLAN: "zepPlan",
ZEP_PLANNAME: "zepPlanname"
}
},
}
},
{
display: "计划内外标识名称",
name: "zepPlanname",
width: 120,
minwidth: 120,
type: "string",
align: "left",
},
{
display: "BP标识", name: "zepBptype", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "ZEP_BPTYPE"}
},
back: {
ZEP_BPTYPE: "zepBptype",
ZEP_BPTYPENAME: "zepBptypename"
}
},
}
},
{
display: "BP标识描述", name: "zepBptypename", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "BP(合作伙伴)", name: "partner", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: true, type: "select",
data: {
type: 'system',
name: "getCusAndSuppliers",
getParam: function (item) {
return {
ZEP_BPTYPE: item.zepBptype,
BUKRS:$("#bukrs").val()
}
},
back: {
PARTNER: "partner",
NAME_ORG1: "koinh"
}
},
}
},
{
display: "BP账号名称", name: "koinh", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "BP银行账号", name: "bankn", width: 200, minwidth: 120, type: "string", align: "left",
editor: {
required: true, type: "select",
data: {
type: 'system',
name: "getCusAndBanks",
getParam: function (item) {
return {
ZEP_BPTYPE: item.zepBptype,
PARTNER:item.partner
}
},
back: {
BANKN: "bankn",
BANKL: "bankl",
SWIFT: "swift",
}
},
}
},
{
display: "BP联行号", name: "bankl", width: 200, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "SWIFT/BIC", name: "swift", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "费用类型代码", name: "zepExtype", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "SPKZL"}
},
back: {
SPKZL: "zepExtype",
SPTXT: "zepExtypename",
SAKNR: "hkont",
TXT50_SKAT: "txt50"
}
},
}
},
{
display: "费用类型名称",
name: "zepExtypename",
width: 120,
minwidth: 120,
type: "string",
align: "left",
editor: {
type: 'text'
}
},
{
display: "费用会计科目", name: "hkont", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "总账科目描述", name: "txt50", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "计划付款日期", name: "zepFpldate", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'date'
}
},
{
display: "成本中心", name: "kostl", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "KOSTL"}
},
back: {
KOSTL: "kostl",
LTEXT: "ktext1"
}
},
}
},
{
display: "成本中心名称", name: "ktext1", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "内部订单", name: "aufnr", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "getCompanyOrders",
getParam: function (item) {
return {
BUKRS: $("#bukrs").val()
}
},
back: {
AUFNR: "aufnr",
KTEXT: "ktext"
}
},
}
},
{
display: "内部订单描述", name: "ktext", width: 200, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "发票号码", name: "zyl06", width: 200, minwidth: 120, type: "string", align: "left",
editor: {
type: 'text'
}
},
{
display: "币别", name: "waers", width: 120, minwidth: 120, type: "string", align: "left",
/*editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "WAERS"}
},
back: {
WAERS: "waers",
}
},
}*/
editor: {
type: 'text'
}
},
{
display: "汇率", name: "kursf", width: 120, minwidth: 120, type: "string", align: "left",
/*editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "KURSF"}
},
back: {
KURSF: "kursf",
}
},
}*/
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "含税金额", name: "kzwi1", width: 120, minwidth: 120, type: "money", align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "税码", name: "mwskzTextView", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
type: 'dictionary',
data: {name: 'mwskz'},
textField: 'mwskzTextView',
valueField: 'mwskz',
required: false,
render: function (item) {
return item.mwskzTextView;
}
},
},
{
display: "税额", name: "kwetr", width: 120, minwidth: 120, type: "money", align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
},
//等于含税金额/(1+税码对应的税率)*税码对应税率,可手工修改
// render:function(item){
// if (Public.isBlank(item.kwetr) || MathUtil.compare(item.kwetr,0)===0){
// var value = MathUtil.div(item.kzwi1,(1+item.mwskz)).mul(item.mwskz).toFixed(2)
// return item.kwetr = value;
// }else {
// return item.kwetr
// }
//
// }
},
{
display: "不含税金额", name: "netwr", width: 120, minwidth: 120, type: "money", align: "left",
//等于含税金额减去税额
render:function(item){
return item.netwr = MathUtil.sub(item.kzwi1,item.kwetr);
}
},
{
display: "含税金额(本位币)", name: "kzwi11", width: 120, minwidth: 120, type: "money", align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
},
//"公司代码等于1000币别等于CNY时,默认等于含税金额;
// 公司代码等于1000币别不等于CNY时,等于含税金额*币别对应的汇率"
// render:function(item){
// var money = 0;
// if (item.waers === "CNY"){
// money=item.kzwi1;
// }else {
// money = MathUtil.mul(item.kzwi1,item.kursf)
// }
// return item.kzwi11 = money;
// }
},
{
display: "税额(本位币)", name: "kwetr1", width: 120, minwidth: 120, type: "money", align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
},
//等于(含税金额-本位币)/(1+税码对应的税率)*税码对应税率,可手工修改
// render:function(item){
// if (Public.isBlank(item.kwetr1) || MathUtil.compare(item.kwetr1,0)===0){
// var value = MathUtil.div(item.kzwi11,MathUtil.add(1,item.mwskz)).mul(item.mwskz).toFixed(2)
// return item.kwetr1 = value;
// }else {
// return item.kwetr1
// }
// }
},
{
display: "不含税金额(本位币)", name: "netwr1", width: 120, minwidth: 120, type: "money", align: "left",
//等于含税金额(本位币)减去税额(本位币)
render:function(item){
return item.netwr1 = MathUtil.sub(item.kzwi11,item.kwetr1);
}
},
]
},
{
parms: {},
node: "financialAuditGrid",
gridManager: null,
data: null,
columns: [
{display: "", name: "rstgr", width: 80, minwidth: 80, type: "string", align: "left", hide: true},
{display: "EP流程子序号", name: "zepItemno", width: 80, minwidth: 80, type: "string", align: "left"},
{
display: "原因代码", name: "rstgrName", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {
fieldName: "RSTGR",
filterValue:$("#bukrs").val()
}
},
back: {
RSTGR: "rstgr",
TXT40: "rstgrName",
}
},
}
},
{
display: "不含税金额(审批)",
name: "zepPdamount1",
width: 120,
minwidth: 120,
type: "money",
align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "税额(审批)", name: "zepPdtax1", width: 120, minwidth: 120, type: "money", align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "含税金额(审批)",
name: "zepPtdamount1",
width: 120,
minwidth: 120,
type: "money",
align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "不含税金额(审批-本位币)",
name: "zepPdamount",
width: 160,
minwidth: 120,
type: "money",
align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "税额(审批-本位币)",
name: "zepPdtax",
width: 150,
minwidth: 120,
type: "money",
align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "含税金额(审批-本位币)",
name: "zepPtdamount",
width: 150,
minwidth: 120,
type: "money",
align: "left",
editor: {
mask: 'nnnnnnnnn.nn',
type: 'text'
}
},
{
display: "是否付款", name: "zepPay", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "ZEP_PAY"}
},
back: {
ZEP_PAY: "zepPay",
}
},
}
},
{
display: "付款方式代码", name: "zlsch", width: 120, minwidth: 120, type: "string", align: "left",
/*editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "ZLSCH"}
},
back: {
ZLSCH: "zlsch",
ZLSCH_TEXT1: "zlschText1",
}
},
}*/
render:function (item){
return item.zlsch = "T"
}
},
{
display: "付款方式名称", name: "zlschText1", width: 120, minwidth: 120, type: "string", align: "left",
render:function (item){
return item.zlschText1 = "电汇"
}
},
{
display: "直联付款标识", name: "zepBank", width: 120, minwidth: 120, type: "string", align: "left",
editor: {
required: false, type: "select",
data: {
type: 'system',
name: "dictionary",
getParam: function (item) {
return {fieldName: "ZEP_BANK"}
},
back: {
ZEP_BANK: "zepBank",
}
},
}
},
]
}
, {
parms: {},
node: "financialAudit_sapReturnGrid",
gridManager: null,
data: null,
columns: [
{display: "EP流程子序号", name: "zepItemno", width: 80, minwidth: 80, type: "string", align: "left"},
{display: "记账凭证编号", name: "belnr", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "记账凭证财年", name: "gjahr", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "记账过账日期", name: "budat", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "记账凭证日期", name: "bldat", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "返回状态", name: "msgty", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "返回消息", name: "msgtx", width: 300, minwidth: 120, type: "string", align: "left"},
]
}
, {
parms: {},
node: "paymentAccomplish_sapReturnGrid",
gridManager: null,
data: null,
columns: [
{display: "EP流程子序号", name: "zepItemno", width: 80, minwidth: 80, type: "string", align: "left"},
{display: "付款凭证编号", name: "belnr1", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "付款凭证财年", name: "gjahr1", width: 120, minwidth: 120, type: "string", align: "left"},
{display: "付款状态", name: "zpayStaus", width: 120, minwidth: 120, type: "string", align: "left"}
]
}
]
//创建表格(参数、列、插入的节点、数据源)
function loadGrid(obj) {
var toolbarOptions = null;
var canEdit = false;//是否可编辑
var canDelay = false;//是否加载。不加载是为了隐藏的表格如果是必填,提交会校验是否填写。
var isApply = isApplyProcUnit();
if (isApply){
if (obj.node==="reimbursementApplierGrid"){
canEdit = true;
}else if (obj.node==="financialAuditGrid"
//|| obj.node==="capitalPostGrid"
){
canDelay = true;
}
}
var subProcUnitId = getSubProcUnitId();
//财务审核
if ("financeNode" === subProcUnitId){
if (obj.node==="financialAuditGrid"){
canEdit = true;
}
// else if (obj.node==="capitalPostGrid"){
// canDelay = true;
// }
}
//资金岗
// if ("fundNode" === subProcUnitId && obj.node==="capitalPostGrid"){
// canEdit = true;
// }
if(obj.node==="reimbursementApplierGrid" && isApply) {//只有第一个表格含工具栏
toolbarOptions = UICtrl.getDefaultToolbarOptions({
addHandler: function () {
tableArray.forEach((item) => {
UICtrl.addGridRow(item.gridManager, {zepItemno: getZepItemNo(),waers: 'CNY', kursf: 1.00});
});
},
deleteHandler: function () {
// tableArray.forEach((item) => {
//
// });
var _grid = UICtrl.getGridManager('#reimbursementApplierGrid');
DataUtil.delSelectedRows({
action: 'sapCostReimbursement/deleteSapCostReimbursementDetails.ajax',
param: {},
gridManager: _grid,
idFieldName: 'reimbursementDetailId',
onSuccess: function () {
reloadGrid();
}
});
},
copyHandler: {
id: 'copyHandler', text: '复制', img: 'fa-copy', click: function () {
tableArray.forEach((item) => {
//var row = DataUtil.getSelectedRow(item.gridManager);
var row = item.gridManager.getSelectedRow();
if (!row) {
Public.tip("请勾选一条数据");
return;
}
var newRow = JSON.parse(JSON.stringify(row));
newRow.zepItemno = getZepItemNo();
newRow.id = null;
UICtrl.addGridRow(item.gridManager, newRow);
});
}
}
});
}
obj.gridManager = UICtrl.grid("#" + obj.node, {
columns: obj.columns,
dataAction: "local",
data: obj.data,
parms: obj.parms,
pageSize: 20,
toolbar: toolbarOptions,
usePager: false,
enabledEdit: canEdit,
delayLoad: canDelay,
// width: "100%",
// height: 300,
heightDiff: -8,
checkbox: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
onBeforeCheckRow: function (checked, data) {
//同时选定或取消所有表格中的对应行
tableArray.forEach((item) => {
let rows = item.gridManager.rows;
let row = {};
rows.forEach((temp) => {
if (temp.zepItemno === data.zepItemno) {
row = temp;
}
})
checked ? item.gridManager.select(row) : item.gridManager.unselect(row);
})
return false;//阻止默认事件、防止某个表格的对应行被多次选中
},
onBeforeCheckAllRow: function (a, b) {
return false;//阻止默认事件
},
onAfterEdit:function (item) {
if(item.column.name == "waers"
|| item.column.name == "kursf"
|| item.column.name == "kzwi1"
|| item.column.name == "mwskzTextView"
|| item.column.name == "kwetr"){
//税额计算
//等于含税金额/(1+税码对应的税率)*税码对应税率,可手工修改
var value = MathUtil.div(item.record.kzwi1, MathUtil.add(1 , item.record.mwskzTextView));
var kwetr = MathUtil.mul(value, item.record.mwskzTextView).toFixed(2);
//含税金额(本位币)计算
//"公司代码等于1000币别等于CNY时,默认等于含税金额;
// 公司代码等于1000币别不等于CNY时,等于含税金额*币别对应的汇率"
var money = 0;
if (item.record.waers === "CNY"){
money=item.record.kzwi1;
}else {
money = MathUtil.mul(item.record.kzwi1,item.record.kursf)
}
//税额(本位币)计算
//等于(含税金额-本位币)/(1+税码对应的税率)*税码对应税率,可手工修改
var kwetr1 = MathUtil.div(money,MathUtil.add(1,item.record.mwskzTextView)).mul(item.record.mwskzTextView).toFixed(2)
obj.gridManager.updateRow(item.record, {kwetr: kwetr,kzwi11: money,kwetr1: kwetr1});
totalGrid();
}
if(item.column.name == "zepPdamount1"
|| item.column.name == "zepPdtax1"
|| item.column.name == "zepPtdamount1"
|| item.column.name == "zepPdamount"
|| item.column.name == "zepPdtax"
|| item.column.name == "zepPtdamount"
){
var _secondGrid = UICtrl.getGridManager('#financialAuditGrid');
if (_secondGrid != null){
var secondRows = _secondGrid.currentData.Rows;
totalFinancialAuditGrid(secondRows);
}
}
return item;
},
onAfterShowData:function (){
if ("financeNode" === subProcUnitId){
initFinancialAuditGridData();
}
}
});
UICtrl.setSearchAreaToggle(obj.gridManager);
}
$(document).ready(function () {
initialize();
bindQueryEvent();
nodeController();
});
function initialize() {
$('#fileList').fileList();
//获取数据源初始化表格
Public.ajax(web_app.name + '/sapCostReimbursement/slicedSapCostReimbursementDetailList.ajax', {reimbursementBaseInfoId: getId()}, function (data) {
//根据定义列拆除实体对象,封装成每个table对应的数据集
tableArray.forEach(obj => {
obj.data = {
Rows: data.Rows.map(item => {
let row = {};
obj.columns.forEach(col => {
if (item.hasOwnProperty(col.name)) {
row[col.name] = item[col.name];
}
});
return row;
})
};
});
useArrayTable(loadGrid);
})
}
function bindQueryEvent() {
$('#bukrs').searchbox({
type: "system", name: "dictionary",
getParam: function (item) {
return {fieldName: "BUKRS"}
},
onChange: function (value, data) {
$('#bukrs').val(data.BUKRS);
$('#butxt').val(data.BUTXT);
}
});
$('#employeeLoanBillCode').searchbox({
type: "costReimbursement", name: "employeeLoanBillCode",
getParam: function (item) {
return {
personMemberId: $("#personMemberId").val()
}
},
onChange: function (value, data) {
$('#employeeLoanBillCode').val(data.billCode);
}
});
$('#bankn1').searchbox({
type: "system", name: "getCompanyAndBankInfos",
getParam: function (item) {
return {BUKRS: $("#bukrs").val()}
},
onChange: function (value, data) {
$('#bankn1').val(data.BANKN1);
$('#zt012kText1').val(data.TEXT1);
}
});
}
/**
* 流程引擎回调设置打样的id
* @param value 打样申请的id
*/
function setId(id) {
$("#id").val(id);
$('#fileList').fileList({bizId: id});
}
/**
* 流程引擎获取打样申请id的回掉方法。
* @return
*/
function getId() {
return $("#id").val() || "";
}
function getExtendedData(processAction) {
//回退、打回、转交时,不需要验证必填项是否已经填写;
if (processAction == ProcessAction.BACK
|| processAction == ProcessAction.REPLENISH
|| processAction == ProcessAction.TRANSMIT) {
//不验证
$('#submitForm').attr('check', false);
}
let resultArray = useArrayTable(getTableDataAll);
//根据zepItemno将各列表属性合并为一个完整实体
const result = resultArray[0].map((obj1) => {
const mergedObj = {...obj1};
for (let i = 1; i < resultArray.length; i++) {
const currentArr = resultArray[i];
const currentObj = currentArr.find((obj) => obj.zepItemno === obj1.zepItemno);
if (currentObj) {
Object.assign(mergedObj, currentObj);
}
}
return mergedObj;
});
let extendedData = {};
extendedData.CRDetail = Public.encodeJSONURI(result);
return extendedData;
}
function getTableDataAll(obj) {
let result = DataUtil.getGridData({
gridManager: obj.gridManager,
isAllData: true
});
return result;
}
//调用数组
function useArrayTable(func, ...data) {
const results = tableArray.map((item) => {
return func(item, ...data);
});
return results;
}
//获取最新子序号(维护实体的标识)
function getZepItemNo() {
let result = getTableDataAll(tableArray[tableArray.length - 1]);
let zepItemNo = "001";
if (result.length > 0) {
//获取上一个节点的子序值
let wornNo = parseInt(result[result.length - 1]["zepItemno"], 10);
zepItemNo = ("00" + (wornNo + 1)).slice(-3);
}
return zepItemNo;
}
//UICtrl中校验是否允许编辑
function businessJudgmentUnit() {
var isApply = isApplyProcUnit();
if (isApply) {
$("#approvalMoney").hide();
$("#financialAudit").hide();
$("#financialAudit_sapReturn").hide();
$("#capitalPost").hide();
$("#paymentAccomplish_sapReturn").hide();
return true;
}else {
UICtrl.setDisable($("#submitForm"));
}
//资金岗
if ("fundNode" === getSubProcUnitId()){
UICtrl.enable("#bankn1");
UICtrl.enable("#zepTxt1");
UICtrl.setElRequiredFlag("#bankn1",true)
}
return true;
}
function nodeController(){
var subProcUnitId = getSubProcUnitId();
//财务审核
if ("financeNode" === subProcUnitId){
$("#financialAudit_sapReturn").hide();
$("#capitalPost").hide();
$("#paymentAccomplish_sapReturn").hide();
}
//资金岗
if ("fundNode" === subProcUnitId){
$("#financialAudit_sapReturn").hide();
$("#paymentAccomplish_sapReturn").hide();
}
}
function totalGrid(money) {
var _grid = UICtrl.getGridManager('#reimbursementApplierGrid');
if (_grid != null){
var data = _grid.getData(),
zepFtamount1 = 0,//申请总金额
zepFtamount = 0,//申请总金额(本位币)
zepFttax = 0,//申请总税额(本位币)
zepFttax1 = 0;//申请总税额
var _kzwi1 = 0;
var _kzwi11 = 0;
var _kwetr1 = 0;
var _kwetr = 0;
$.each(data, function (i, o) {
_kzwi1 = o['kzwi1'] + '';
_kzwi11 = o['kzwi11'] + '';
_kwetr1 = o['kwetr1'] + '';
_kwetr = o['kwetr'] + '';
zepFtamount1 = MathUtil.add(zepFtamount1, _kzwi1);
zepFtamount = MathUtil.add(zepFtamount, _kzwi11);
zepFttax = MathUtil.add(zepFttax, _kwetr1);
zepFttax1 = MathUtil.add(zepFttax1, _kwetr);
$('#zepFtamount1').val(zepFtamount1);
$('#zepFtamount').val(zepFtamount);
$('#zepFttax').val(zepFttax);
$('#zepFttax1').val(zepFttax1);
});
}
}
function initFinancialAuditGridData(){
var _grid = UICtrl.getGridManager('#reimbursementApplierGrid');
var _secondGrid = UICtrl.getGridManager('#financialAuditGrid');
if (_grid != null && _secondGrid != null){
var datas = _grid.getData();
if (datas.length > 0 && _secondGrid.currentData != null){
var secondRows = _secondGrid.currentData.Rows;
$.each(datas, function (i, data) {
$.each(secondRows, function (i, row) {
if (data.zepItemno === row.zepItemno && (row.zepPdamount1===0 || Public.isBlank(row.zepPdamount1))){
_secondGrid.updateRow(row,{
zepPdamount1:data.netwr,
zepPdtax1:data.kwetr,
zepPtdamount1:data.kzwi1,
zepPdamount:data.netwr1,
zepPdtax:data.kwetr1,
zepPtdamount:data.kzwi11
})
}
});
});
totalFinancialAuditGrid(secondRows);
}
}
}
function totalFinancialAuditGrid(data){
var zepPtamount = 0,//审批总金额(本位币)
zepPttax = 0,//审批总税额(本位币)
zepPtamount1 = 0,//zepPtamount1
zepPttax1 = 0;//审批总税额
$.each(data, function (i, o) {
var _zepPtdamount = o['zepPtdamount'] + '';
var _zepPdtax = o['zepPdtax'] + '';
var _zepPtdamount1 = o['zepPtdamount1'] + '';
var _zepPdtax1 = o['zepPdtax1'] + '';
zepPtamount = MathUtil.add(zepPtamount, _zepPtdamount);
zepPttax = MathUtil.add(zepPttax, _zepPdtax);
zepPtamount1 = MathUtil.add(zepPtamount1, _zepPtdamount1);
zepPttax1 = MathUtil.add(zepPttax1, _zepPdtax1);
$('#zepPtamount').val(zepPtamount);
$('#zepPttax').val(zepPttax);
$('#zepPtamount1').val(zepPtamount1);
$('#zepPttax1').val(zepPttax1);
});
}
function reloadGrid(){
//获取数据源初始化表格
Public.ajax(web_app.name + '/sapCostReimbursement/slicedSapCostReimbursementDetailList.ajax', {reimbursementBaseInfoId: getId()}, function (data) {
//根据定义列拆除实体对象,封装成每个table对应的数据集
tableArray.forEach(obj => {
obj.data = {
Rows: data.Rows.map(item => {
let row = {};
obj.columns.forEach(col => {
if (item.hasOwnProperty(col.name)) {
row[col.name] = item[col.name];
}
});
return row;
})
};
var gridManager = UICtrl.getGridManager("#"+obj.node);
gridManager.setData(obj.data);
Public.successTip("数据操作成功")
});
})
}
\ No newline at end of file
<%@ page language="java" contentType="text/html; charset=utf-8" %>
<%@taglib uri="/WEB-INF/taglib.tld" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<x:base include="layout,dialog,grid,tree,combox,commonTree,date,attachment"/>
<x:script src='/biz/topsun/sap/costReimbursement/payApplyNoPO.js'/>
</head>
<body>
<div class="container-fluid" style="padding: 10px;">
<x:billTitle title="付款申请(无PO)" needStatus="false" needPerson="true"/>
<form class="hg-form" method="post" action="" id="submitForm">
<x:hidden name="id"/>
<x:hidden name="billCode"/>
<x:hidden name="fillinDate" type="datetime"/>
<x:hidden name="fullId"/>
<x:hidden name="organId"/>
<x:hidden name="organName"/>
<x:hidden name="deptId"/>
<x:hidden name="deptName"/>
<x:hidden name="positionId"/>
<x:hidden name="positionName"/>
<x:hidden name="personMemberId"/>
<x:hidden name="personMemberName"/>
<div class="hg-form-cols">
<div class="hg-form-row">
<x:inputC name="zepNo" required="false" readonly="true" label="EP流程单号" labelCol="2" maxLength="64" fieldCol="2"/>
<x:inputC name="zepFcrdate" required="false" readonly="true" wrapper="date" label="付款申请创建日期" labelCol="2" fieldCol="2"/>
<x:inputC name="zepFtype" required="false" readonly="true" label="EP付款申请类别" labelCol="2" maxLength="64" fieldCol="2"/>
</div>
<div class="hg-form-row">
<x:inputC name="zepFtypename" required="false" readonly="true" label="EP付款申请类别名称" labelCol="2" maxLength="64" fieldCol="2"/>
<x:inputC name="bukrs" required="true" label="公司代码" labelCol="2" fieldCol="2" wrapper="select"/>
<x:inputC name="butxt" required="false" readonly="true" label="公司代码名称" labelCol="2" fieldCol="2"/>
</div>
<div class="hg-form-row">
<x:inputC name="zepDepart" required="false" readonly="true" label="EP部门代码" labelCol="2" fieldCol="2"/>
<x:inputC name="zepDepartname" required="false" readonly="true" label="EP部门名称" labelCol="2" fieldCol="2"/>
<x:inputC name="zepAppli" required="false" readonly="true" label="EP流程申请人代码" labelCol="2" fieldCol="2"/>
</div>
<div class="hg-form-row">
<x:inputC name="zepAppliname" required="false" readonly="true" label="EP流程申请人" labelCol="2" fieldCol="2"/>
<x:inputC name="zepTxt" required="false" label="付款申请内容" labelCol="2" fieldCol="2"/>
<x:inputC name="employeeLoanBillCode" required="false" label="员工借款编号" labelCol="2" fieldCol="2" wrapper="select"/>
</div>
<div id="capitalPost">
<div class="hg-form-row">
<x:inputC name="bankn1" required="false" label="付款银行账号" labelCol="2" fieldCol="2" wrapper="select"/>
<x:inputC name="zt012kText1" required="false" readonly="true" label="付款银行账号名称" labelCol="2" fieldCol="2"/>
<x:inputC name="zepTxt1" required="false" label="付款附言" labelCol="2" fieldCol="2"/>
</div>
</div>
<div class="hg-form-row">
<x:inputC name="zepFtamount" required="false" readonly="true" label="申请总金额(本位币)" labelCol="2" fieldCol="2" mask="positiveMoney"/>
<x:inputC name="zepFttax" required="false" readonly="true" label="申请总税额(本位币)" labelCol="2" fieldCol="2" mask="positiveMoney"/>
</div>
<div class="hg-form-row">
<x:inputC name="zepFttax1" required="false" readonly="true" label="申请总税额" labelCol="2" fieldCol="2" mask="positiveMoney"/>
<x:inputC name="zepFtamount1" required="false" readonly="true" label="申请总金额" labelCol="2" fieldCol="2" mask="positiveMoney"/>
</div>
<div id="approvalMoney">
<div class="hg-form-row">
<x:inputC name="zepPtamount" required="false" readonly="true" label="审批总金额(本位币)" labelCol="2" fieldCol="2" mask="positiveMoney"/>
<x:inputC name="zepPttax" required="false" readonly="true" label=" 审批总税额(本位币)" labelCol="2" fieldCol="2" mask="positiveMoney"/>
</div>
<div class="hg-form-row">
<x:inputC name="zepPttax1" required="false" readonly="true" label="审批总税额" labelCol="2" fieldCol="2" mask="positiveMoney"/>
<x:inputC name="zepPtamount1" required="false" readonly="true" label="审批总金额" labelCol="2" fieldCol="2" mask="positiveMoney"/>
</div>
</div>
</div>
<div style="padding-top: 15px;">
<x:fileList bizCode="costReimbursement" bizId="id" id="fileList" title="相关资料" />
</div>
<div class="blank_div clearfix"></div>
<x:title title="报销人填写" name="group"/>
<div id="reimbursementApplierGrid" style="margin: 2px;">
</div>
<div class="blank_div clearfix"></div>
<div id="financialAudit">
<x:title title="财务审核填写" name="group"/>
<div id="financialAuditGrid" style="margin: 2px;">
</div>
</div>
<div class="blank_div clearfix"></div>
<div id="financialAudit_sapReturn">
<x:title title="财务已审核、sap回执" name="group"/>
<div id="financialAudit_sapReturnGrid" style="margin: 2px;">
</div>
</div>
<div class="blank_div clearfix"></div>
<%-- <div id="capitalPost">--%>
<%-- <x:title title="资金岗填写" name="group"/>--%>
<%-- <div id="capitalPostGrid" style="margin: 2px;">--%>
<%-- </div>--%>
<%-- </div>--%>
<div class="blank_div clearfix"></div>
<div id="paymentAccomplish_sapReturn">
<x:title title="付款完成、sap回执" name="group"/>
<div id="paymentAccomplish_sapReturnGrid" style="margin: 2px;">
</div>
</div>
</div>
</form>
</body>
</html>
var gridManager = null;
$(document).ready(function () {
initializateUI();
loadGrid();
})
function initializateUI() {
UICtrl.layout("#layout", {leftWidth: 3});
}
function loadGrid() {
var toolbarOptions = UICtrl.getDefaultToolbarOptions({
addCostReimbursement: {id:'costReimbursement',img:'fa-cog',text:'添加付款申请(无)',click:function(){
addCostReimbursement();
}},
});
gridManager = UICtrl.grid("#costReimbursementListGrid", {
columns: [
{display: "EP付款申请类别", name: "zepFtype", width: 60, minWidth: 60, type: "string", align: "left"},
{display: "EP付款申请类别名称", name: "zepFtypename", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "公司代码", name: "bukrs", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "公司代码名称", name: "butxt", width: 120, minWidth: 60, type: "string", align: "left"},
{display: "EP部门代码", name: "zepDepart", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "EP部门名称", name: "zepDepartname", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "EP流程申请人代码", name: "zepAppli", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "EP流程申请人", name: "zepAppliname", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "付款申请创建日期", name: "zepFcrdate", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "EP流程单号", name: "zepNo", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "付款申请内容", name: "zepTxt", width: 140, minWidth: 60, type: "string", align: "left"},
{display: "填报日期", name: "fillinDate", width: 140, minWidth: 60, type: "string", align: "left"},
],
dataAction: "server",
url: web_app.name + '/sapCostReimbursement/slicedSapCostReimbursementList.ajax',
parms:{zepFtype:"N"},
pageSize: 20,
usePager: true,
toolbar: toolbarOptions,
sortName:'fillinDate',
sortOrder: 'desc',
width: "100%",
height: "100%",
heightDiff: -8,
checkbox: true,
fixedCellHeight: true,
selectRowButtonOnly: true,
onDblClickRow: function (data, rowindex, rowobj) {
doView(data.id,data.zepFtype);
}
});
UICtrl.setSearchAreaToggle(gridManager);
}
function query(obj) {
var param = $(obj).formToJSON();
UICtrl.gridSearch(gridManager, param);
}
function reloadGrid() {
gridManager.loadData();
}
function resetForm(obj) {
$(obj).formClean();
}
//重写DataUtil的getUpdateRowId函数、它默认取行的id列
DataUtil.getUpdateRowId = function (gridManager) {
var result = DataUtil.getUpdateRow(gridManager);
if (result) {
return result.proofingMakeId;
}
return result;
}
function addCostReimbursement() {
UICtrl.addTabItem({
tabid: 'payApplyNoPO',
text: "付款申请(无PO)",
url: web_app.name + '/sapCostReimbursement/forwardCostReimbursement.job?type=payNoPo'
});
}
function addBorrowApply(){
UICtrl.addTabItem({
tabid: 'borrowApply',
text: "借款申请单",
url: web_app.name + '/sapCostReimbursement/forwardCostReimbursement.job?type=borrow'
});
}
function addAdvancePayment(){
UICtrl.addTabItem({
tabid: 'advanceApply',
text: "预付款申请单",
url: web_app.name + '/sapCostReimbursement/forwardCostReimbursement.job?type=advance'
});
}
function addPayApply(){
UICtrl.addTabItem({
tabid: 'payApply',
text: "付款申请单",
url: web_app.name + '/sapCostReimbursement/forwardCostReimbursement.job?type=pay'
});
}
function addRefundApply(){
UICtrl.addTabItem({
tabid: 'refundApply',
text: "客户退款申请单",
url: web_app.name + '/sapCostReimbursement/forwardCostReimbursement.job?type=refund'
});
}
//删除按钮
function deleteHandler() {
DataUtil.del({
action: 'sapCostReimbursement/deleteStatsIndicators.ajax',
gridManager: gridManager, idFieldName: 'id',
onSuccess: function () {
reloadGrid();
}
});
}
function doView(id,zepFtype) {
var title="费用报销详情";
if (zepFtype=="E"){
title="客户退款申请详情";
}
if (zepFtype=="N"){
title="付款申请(无PO)详情";
}
if (zepFtype=="B"){
title="员工借款申请详情";
}
if (zepFtype=="D"){
title="预付款申请详情";
}
if (zepFtype=="C"){
title="付款申请详情";
}
UICtrl.addTabItem({
tabid: 'showCostReimbursement'+id,
text: title,
url: web_app.name + '/sapCostReimbursement/showSapCostReimbursement.job?bizId='+id+"&isDetailPage=true"
});
}
// function sendSapData(bizId){
// Public.ajax(web_app.name + '/sapStatsIndicators/againSendSapDate.ajax',{bizId:bizId},function (data){
// reloadGrid();
// })
// }
\ No newline at end of file
<%@ page contentType="text/html; charset=utf-8" language="java" %>
<%@ taglib uri="/WEB-INF/taglib.tld" prefix="x" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<html>
<head>
<x:base include="layout,dialog,grid,tree,combox,commonTree"/>
<x:script src='/biz/topsun/sap/costReimbursement/payApplyNoPOList.js'/>
</head>
<body>
<div class="container-fluid">
<div id="layout">
<div position="center" title="付款申请(无PO)查询">
<x:title title="common.button.search" hideTable="queryMainForm" isHide="true"/>
<form class="hg-form ui-hide" method="post" action="" id="queryMainForm">
<x:inputC name="billCode" required="false" label="申请单号" labelCol="1"/>
<x:searchButtons/>
</form>
<div class="blank_div clearfix"></div>
<div id="costReimbursementListGrid" style="margin: 2px;"></div>
</div>
</div>
</div>
</body>
</html>
\ No newline at end of file
package com.huigou.topsun.base.bsnMessage.appliction;
public interface MannualStartWorkApplication {
String startWorkflow(Object entity,String process_definition_key,String codeRule);
}
......@@ -304,4 +304,6 @@ public class BsnMessageApplicationImpl extends BaseApplication implements BsnMes
return list != null && !list.isEmpty();
}
}
package com.huigou.topsun.base.bsnMessage.appliction.impl;
import com.huigou.context.Operator;
import com.huigou.context.ThreadLocalUtil;
import com.huigou.topsun.base.bsnMessage.appliction.MannualStartWorkApplication;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.common.application.BaseApplication;
import com.huigou.uasp.bmp.fn.CodeGenerator;
import com.huigou.uasp.bmp.operator.OperatorApplication;
import com.huigou.uasp.bpm.ProcessAction;
import com.huigou.uasp.bpm.ProcessStartModel;
import com.huigou.uasp.bpm.engine.application.WorkflowApplication;
import com.huigou.util.ClassHelper;
import com.huigou.util.Constants;
import com.huigou.util.SDO;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.Collections;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Service("mannualStartWorkApplication")
public class MannualStartWorkApplicationImpl extends BaseApplication implements MannualStartWorkApplication {
@Autowired
private CodeGenerator codeGenerator;
@Autowired
private WorkflowApplication workflowApplication;
@Resource
private OperatorApplication operatorApplication;
@Override
public String startWorkflow(Object entity,String processDefinitionKey,String codeRule){
Operator operator = null;
operator = ThreadLocalUtil.getOperator();
if (operator == null) {
String createdById = "5EEB2DC861694A65933CB4CE9A8D870A@C18E23AAAA6940E09DF7C122332C51E0";
operator = operatorApplication.createOperatorByPersonMemberId(createdById);
ThreadLocalUtil.putOperator(operator);
}
// Assert.notNull(operator, "未获取到当前操作用户,无法创建流程");
SDO sdo = ThreadLocalUtil.getVariable(Constants.SDO, SDO.class);
if (sdo == null) {
sdo = new SDO();
}
try {
// 业务数据
Map<String, Object> map = ClassHelper.beanToMap(entity);
sdo.setProperties(map);
// 启动流程的必要参数
sdo.putProperty("fullId", operator.getFullId());
sdo.putProperty("organId", operator.getOrgId());
sdo.putProperty("organName", operator.getOrgName());
sdo.putProperty("deptId", operator.getDeptId());
sdo.putProperty("deptName", operator.getDeptName());
sdo.putProperty("positionId", operator.getPositionId());
sdo.putProperty("positionName", operator.getPositionName());
sdo.putProperty("personMemberId", operator.getPersonMemberId());
sdo.putProperty("personMemberName", operator.getPersonMemberName());
sdo.putProperty("processAction", ProcessAction.SAVE);
sdo.putProperty("procUnitId", "");
// sdo.putProperty("bizId", purchaseOrder.getId());
sdo.putProperty("createdDate", new Date());
sdo.putProperty("fillinDate", new Date());
String nextCode = codeGenerator.getNextCode(codeRule);
sdo.putProperty("billCode", nextCode);
ThreadLocalUtil.putVariable(Constants.SDO, sdo);
Map<String, Object> variables = new HashMap<>();
variables.put("startModel", ProcessStartModel.MANUAL.getId());
variables.put("executorFullId", operator.getFullId());
variables.put("executorFullName", operator.getFullName());
ThreadLocalUtil.putOperator(operator);
ExecutionEntity pi = (ExecutionEntity) workflowApplication.startProcessInstanceByKey(processDefinitionKey, null, variables);
// 业务参数
TaskEntity applyTask = pi.getTasks().get(0);
sdo.putProperty("processAction", ProcessAction.ADVANCE);
sdo.putProperty("bizId", pi.getBusinessKey());
sdo.putProperty("id", pi.getBusinessKey());
sdo.putProperty("statusId", BizBillStatus.APPLYING.getId());
ThreadLocalUtil.removeVariable("_approvalParameter_");
ThreadLocalUtil.putVariable(Constants.SDO, sdo);
workflowApplication.advance(applyTask.getId(), Collections.emptyMap());
// return this.sapPurchaseRepository.findOne(pi.getBusinessKey());
return pi.getBusinessKey();
}catch(Exception ex){
ex.printStackTrace();
throw ex;
}
}
}
......@@ -13,6 +13,7 @@ public interface SapCostReimbursementApplication {
String PROCESS_DEFINITION_KEY = "sapCostReimbursementProc";
String QUERY_XML_FILE_PATH="config/topsun/sap/costReimbursement/costReimbursement.xml";
......
......@@ -39,8 +39,12 @@ public class SapCostReimbursementController extends CommonController {
public String forwardCostReimbursementList(){
SDO sdo = this.getSDO();
return forward("costReimbursementList");
}
public String forwardPayApplyNoPOList(){
return forward("payApplyNoPOList");
}
public String forwardAdvancePaymentList(){
return forward("advancePaymentList");
......@@ -79,6 +83,10 @@ public class SapCostReimbursementController extends CommonController {
sapCostReimbursement.setZepFtype("A");
sapCostReimbursement.setZepFtypename("费用报销流程");
return forward("costReimbursement",sapCostReimbursement);
case "payNoPo":
sapCostReimbursement.setZepFtype("N");
sapCostReimbursement.setZepFtypename("付款申请(无PO)流程");
return forward("payApplyNoPO",sapCostReimbursement);
case "borrow":
sapCostReimbursement.setZepFtype("B");
sapCostReimbursement.setZepFtypename("员工借款流程");
......@@ -134,6 +142,8 @@ public class SapCostReimbursementController extends CommonController {
switch (zepFtype) {
case "A":
return forward("costReimbursement",sapCostReimbursement);
case "N":
return forward("payApplyNoPO",sapCostReimbursement);
case "B":
return forward("employeeLoan",sapCostReimbursement);
case "D":
......
......@@ -18,4 +18,6 @@ public interface SapPurchaseApplication {
Map<String,Object> slicedSapPurchaseList(SapPurchaseQueryRequest queryRequest);
SapPurchase loadSapPurchase(String id);
String revokeApproval(String id);
}
......@@ -4,9 +4,12 @@ import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.huigou.cache.SystemCache;
import com.huigou.context.Operator;
import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.domain.model.CommonDomainConstants;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.base.bsnMessage.appliction.MannualStartWorkApplication;
import com.huigou.topsun.sap.common.HttpClient;
import com.huigou.topsun.sap.common.application.SapMutualEpLogApplication;
import com.huigou.topsun.sap.costReimbursement.domain.SapCostReimbursement;
......@@ -19,11 +22,21 @@ import com.huigou.topsun.sap.purchase.domain.vo.SapPurchaseItemVo;
import com.huigou.topsun.sap.purchase.domain.vo.SapPurchaseVo;
import com.huigou.topsun.sap.purchase.repository.SapPurchaseRepository;
import com.huigou.topsun.sap.common.domain.SapResult;
import com.huigou.topsun.sap.purchaseOrder.domain.SapPurchaseOrder;
import com.huigou.uasp.bmp.common.BizBillStatus;
import com.huigou.uasp.bmp.fn.CodeGenerator;
import com.huigou.uasp.bmp.operator.OperatorApplication;
import com.huigou.uasp.bpm.FlowBroker;
import com.huigou.uasp.bpm.ProcessAction;
import com.huigou.uasp.bpm.ProcessStartModel;
import com.huigou.uasp.bpm.engine.application.WorkflowApplication;
import com.huigou.util.ClassHelper;
import com.huigou.util.Constants;
import com.huigou.util.SDO;
import org.activiti.engine.delegate.DelegateExecution;
import org.activiti.engine.delegate.DelegateTask;
import org.activiti.engine.impl.persistence.entity.ExecutionEntity;
import org.activiti.engine.impl.persistence.entity.TaskEntity;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
......@@ -49,6 +62,10 @@ public class SapPurchaseApplicationImpl extends FlowBroker implements SapPurchas
private HttpClient httpClient;
@Autowired
SapMutualEpLogApplication sapMutualEpLogApplication;
@Autowired
private MannualStartWorkApplication mannualStartWorkApplication;
@Override
protected String saveBizAndApprovalData() {
super.saveBizAndApprovalData();
......@@ -232,6 +249,7 @@ public class SapPurchaseApplicationImpl extends FlowBroker implements SapPurchas
QueryDescriptor queryDescriptor = this.sqlExecutorDao.getQuery(QUERY_XML_FILE_PATH, "sapPurchaseList");
QueryModel queryModel = this.sqlExecutorDao.getQueryModel(queryDescriptor, queryRequest);
queryModel.putDictionary("status", BizBillStatus.getMap());
queryModel.addCriteria(" order by fillin_date desc ");
return this.sqlExecutorDao.executeSlicedQuery(queryModel);
}
......@@ -239,4 +257,36 @@ public class SapPurchaseApplicationImpl extends FlowBroker implements SapPurchas
public SapPurchase loadSapPurchase(String id) {
return sapPurchaseRepository.findOne(id);
}
@Override
public String revokeApproval(String id){
SapPurchase sapPurchase = this.sapPurchaseRepository.findOne(id);
if (sapPurchase.getStatusId()!=BizBillStatus.COMPLETED.getId()){
throw new RuntimeException("审批完成的单据才能撤销!");
}
sapPurchase.setStatusId(BizBillStatus.ABORTED.getId());
sapPurchaseRepository.save(sapPurchase);
List<SapPurchaseItem> sapPurchaseItemList=this.sapPurchaseItemApplication.findBySapPurchaseId(id);
//发起流程
SapPurchase newSapPurchase=new SapPurchase();
ClassHelper.copyProperties(sapPurchase,newSapPurchase);
newSapPurchase.setId("");
String pId=mannualStartWorkApplication.startWorkflow(newSapPurchase,PROCESS_DEFINITION_KEY,"sapPurchase");
newSapPurchase=this.sapPurchaseRepository.findOne(pId);
List<SapPurchaseItem> newSapPurchaseItemList=new ArrayList<>();
for (SapPurchaseItem sapPurchaseItem:sapPurchaseItemList){
SapPurchaseItem newSapPurchaseItem=new SapPurchaseItem();
ClassHelper.copyProperties(sapPurchaseItem,newSapPurchaseItem);
newSapPurchaseItem.setId("");
newSapPurchaseItemList.add(newSapPurchaseItem);
}
sapPurchaseItemApplication.saveSapPurchaseItems(newSapPurchase.getId(),newSapPurchaseItemList);
return newSapPurchase.getId();
}
}
......@@ -86,4 +86,11 @@ public class SapPurchaseController extends CommonController {
return null;
}
//撤销审批
public String revokeApproval(){
SDO sdo = this.getSDO();
String id=sdo.getString("id");
String newId=sapPurchaseApplication.revokeApproval(id);
return success();
}
}
......@@ -10,6 +10,7 @@ import com.huigou.context.ThreadLocalUtil;
import com.huigou.data.domain.model.CommonDomainConstants;
import com.huigou.data.query.model.QueryDescriptor;
import com.huigou.data.query.model.QueryModel;
import com.huigou.topsun.base.bsnMessage.appliction.MannualStartWorkApplication;
import com.huigou.topsun.sap.common.DefaultHttpClient;
import com.huigou.topsun.sap.common.application.SapMutualEpLogApplication;
import com.huigou.topsun.sap.costReimbursement.domain.SapCostReimbursement;
......@@ -57,16 +58,15 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa
private SapPurchaseApprovalRepository sapPurchaseApprovalRepository;
@Resource
private SapPurchaseApprovalItemApplication sapPurchaseApprovalItemApplication;
@Resource
private WorkflowApplication workflowApplication;
@Resource
private OperatorApplication operatorApplication;
@Autowired
DefaultHttpClient defaultHttpClient;
@Autowired
SapMutualEpLogApplication sapMutualEpLogApplication;
@Resource
private OperatorApplication operatorApplication;
@Autowired
private CodeGenerator codeGenerator;
private MannualStartWorkApplication mannualStartWorkApplication;
@Override
protected String saveBizAndApprovalData() {
......@@ -235,10 +235,13 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa
*/
//发起流程 05.11 lxh
BeanUtil.copyProperties(sapPurchaseApprovalDto.getLsDeader(), sapPurchaseApproval);
String nextCode = codeGenerator.getNextCode("sapPurchaseApproval");
sapPurchaseApproval.setBillCode(nextCode);
sapPurchaseApproval = mannualStartWorkflow(sapPurchaseApproval);
// String nextCode = codeGenerator.getNextCode("sapPurchaseApproval");
// sapPurchaseApproval.setBillCode(nextCode);
// sapPurchaseApproval = mannualStartWorkflow(sapPurchaseApproval);
// purchaseOrderId = sapPurchaseApproval.getId();
String pId=mannualStartWorkApplication.startWorkflow(sapPurchaseApproval,PROCESS_DEFINITION_KEY,"sapPurchaseApproval");
sapPurchaseApproval=this.sapPurchaseApprovalRepository.findOne(pId);
if (purchaseApproval == null) {
} else{
......@@ -274,7 +277,7 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa
sapPurchaseApprovalItemApplication.saveSapPurchaseApprovalItems(sapPurchaseApproval.getId(),sapPurchaseApprovalItems);
}
public String startProcessInstance(String processDefinitionKey,Map<String, Object> formData){
/*public String startProcessInstance(String processDefinitionKey,Map<String, Object> formData){
Map<String, Object> variables = new HashMap();
SDO localSdo = this.buildSDO(formData);
ThreadLocalUtil.putVariable(Constants.SDO, localSdo);
......@@ -287,12 +290,12 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa
ProcessInstance processInstance = this.workflowApplication.startProcessInstanceByKey(processDefinitionKey, variables);
String businessKey = processInstance.getBusinessKey();
return businessKey;
}
} */
/**
* 启动流程
*/
private SapPurchaseApproval mannualStartWorkflow(SapPurchaseApproval sapPurchaseApproval) {
/*private SapPurchaseApproval mannualStartWorkflow(SapPurchaseApproval sapPurchaseApproval) {
Operator operator = null;
operator = ThreadLocalUtil.getOperator();
if (operator == null) {
......@@ -350,7 +353,7 @@ public class SapPurchaseApprovalApplicationImpl extends FlowBroker implements Sa
throw ex;
}
}
}*/
private SDO buildSDO(Map<String, Object> formData) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment