|
|
【myApps/OBPM版本号】:v5.0- sp XX
【浏览器类型】:Chrome/其他
【联系方式-QQ】:请留下您的QQ号码
【联系电话】: 请留下您的联系电话,以便技术同事更好解决您的问题
【问题描述】:
需求描述:系统有tableA1和tableA2为主从表,需要把tableA1和tableA2的信息生成订单tableB1和tableB2,以下是我编写的代码,
代码出现的问题:
1.创建采购订单(TableB1)时,包含了启动流程的代码,但流程没有启动。
2.创建采购订单明细(TableB2)的时候,只能创建一条,创建第二条的时候就会提示PrimryKey重复,数据创建失败。
3.通过以下代码创建的TableB1的记录,如果删除TableB1的记录,会删除TableA1的记录,TableB1的记录就提示删除失败。
(function(){
var currentDoc = getCurrentDocument();
var user = getWebUser();
var applicationId = getApplication();
var docProcess = getDocProcess(applicationId);
var sql = "select distinct DOMAINID, ITEM_供应商 from tlk_tableB where PARENT = '" + currentDoc.getId() + "'";
var query = queryBySQL(sql);
if (query != null) {
for (var it = query.iterator(); it.hasNext();) { //获取供应商名称
var docProvider = it.next();
var provider = docProvider.getItemValueAsString("供应商");
var detailSql = "select * from tlk_tableB1 where PARENT = '" +
currentDoc.getId() + "' AND ITEM_供应商 = '" + provider + "'";
var detailQuery = queryBySQL(detailSql);
if (detailQuery != null) {
//获取供应商账号信息
var providerSql = "SELECT * FROM tlk_tableA1 WHERE ITEM_供应商名称 = '" + provider + "' order by CREATED desc limit 1";
var providerQuery = queryBySQL(providerSql);
//统计数量
var total = 0;
for (var did = detailQuery.iterator(); did.hasNext();) {
var dc = did.next();
total += dc.getItemValueAsInt("数量");
}
var orderMainDoc;
if (total >= 0){
//数量大于0才建单
detailQuery = queryBySQL(detailSql); //再读一次,把光标移动到第一行
var rowIndex = 0;
for (var dim = detailQuery.iterator(); dim.hasNext();) { //获取商品信息
var docProduct = dim.next();
if (rowIndex == 0){
var cger = "";
var cgerSql = "SELECT * FROM t_user WHERE NAME = '" + docProduct.getItemValueAsString("采购员") + "'";
var cgerQuery = queryByDSName("obpm5",cgerSql);
for (var icger = cgerQuery.iterator(); icger.hasNext();) { //获取商品信息
var cgerItem = icger.next();
var loginno = cgerItem.get("LOGINNO");
cger = getUserByLoginno(loginno);
}
println("采购员=" + docProduct.getItemValueAsString("采购员"));
//创建采购订单===主表开始=========================================================
var cgdPrefix="GYOM-";
var cgBillNo = countNext2(cgdPrefix,true,true,true,4);
var billFormName = "tableB1";
var formProcess = new Packages.cn.myapps.designtime.form.service.FormDesignTimeServiceImpl();
var Form = formProcess.doViewByFormName(billFormName, applicationId);
var params = getParamsTable();
orderMainDoc = docProcess.doNew(Form, user, params);
orderMainDoc.addStringItem("编号",cgBillNo);
orderMainDoc.addStringItem("采购申请单号", currentDoc.getItemValueAsString("编号"));
orderMainDoc.addDateItem("申请日期",getToday());
orderMainDoc.addStringItem("制单人", user.getName());
orderMainDoc.addStringItem("采购员", docProduct.getItemValueAsString("采购员"));
orderMainDoc.addStringItem("供应商名称", docProduct.getItemValueAsString("供应商"));
for (var pdq = providerQuery.iterator(); pdq.hasNext();){
var docAccount = pdq.next();
orderMainDoc.addStringItem("支付对象", docAccount.getItemValueAsString("支付对象"));
orderMainDoc.addStringItem("开户银行", docAccount.getItemValueAsString("开户银行"));
orderMainDoc.addStringItem("银行账号", docAccount.getItemValueAsString("银行账号"));
}
if (docProduct.getItemValueAsInt("数量") <= 0)
continue;
docProcess.doCreate(orderMainDoc);//创建
var flowid = "_BSBln5AAXQ2vaDSVfAK";//获取流程id
var billParams = createParamsTable();
billParams.setParameter("_flowid", flowid);
println("OrderMainDoc");
println(orderMainDoc);
println("cger");
println(cger);
docProcess.doStartFlowOrUpdate(orderMainDoc, billParams, cger); //启动流程
//创建采购订单===主表结束=========================================================
}
//创建采购订单明细
//创建采购订单明细===从表开始=========================================================
var orderDetailFormName = "tableB2";
var detailFormProcess = new Packages.cn.myapps.designtime.form.service.FormDesignTimeServiceImpl();
var detailForm = detailFormProcess.doViewByFormName(orderDetailFormName, applicationId);
var detailParams = getParamsTable();
var orderDetailMainDoc = docProcess.doNew(detailForm, user, detailParams);
orderDetailMainDoc.addStringItem("SKU", docProduct.getItemValueAsString("SKU"));
orderDetailMainDoc.addStringItem("商品名称", docProduct.getItemValueAsString("SKU描述"));
orderDetailMainDoc.addIntItem("数量", docProduct.getItemValueAsString("确认下单数量"));
orderDetailMainDoc.addDoubleItem("含税单价", 0);
orderDetailMainDoc.addDoubleItem("金额", 0);
docProcess.doCreate(orderDetailMainDoc);//创建
orderDetailMainDoc.setParent(orderMainDoc.getId());
DOC.createOrUpdate(orderDetailMainDoc);
//创建采购订单===从表结束=========================================================
rowIndex += 1;
}
}
}
}
}
})()
1、问题描述最好图文并茂,如有视频/脚本可直接放出,这样技术同事在处理该问题时效率更加高效哦~
2、如果该问题已得到解决,请在该帖子下回复\\\"已解决可结帖\\\"
|
|