fix:自动转仓 修改冲销
This commit is contained in:
parent
939b3aed5b
commit
9860c5eff4
@ -4941,7 +4941,7 @@ public class ToSAPServiceImpl {
|
||||
ErpMessageLog erplog = new ErpMessageLog();
|
||||
erplog.setEventUser("");
|
||||
erplog.setServerName("WmsToErp");
|
||||
erplog.setEventName("qms质检判定自动转库-311");
|
||||
erplog.setEventName("qms质检判定自动转库311");
|
||||
erplog.setId(uuid.toString());
|
||||
erplog.setInterfaceTime(TimeStampUtil.getCurrentTime(TimeStampUtil.FORMAT_DEFAULT));
|
||||
erplog.setMessageId(UUID.randomUUID().toString());
|
||||
|
@ -2,7 +2,9 @@ package com.cim.idm.controller;
|
||||
|
||||
import com.alibaba.fastjson.JSON;
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import com.cim.idm.framework.util.time.TimeStampUtil;
|
||||
import com.cim.idm.model.MaterialUndoDto;
|
||||
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
|
||||
import com.cim.idm.service.Impl.MaterialUndoServiceImpl;
|
||||
import com.cim.idm.utils.AjaxResult;
|
||||
import com.cim.idm.utils.CommonUtils;
|
||||
@ -13,6 +15,10 @@ import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMethod;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 物料冲销控制器
|
||||
* @author ZXYGY17
|
||||
@ -38,6 +44,7 @@ public class MaterialUndoController {
|
||||
String inv_TYPE = undoDto.getINV_TYPE();
|
||||
String lastEventName = undoDto.getLastEventName();
|
||||
String commitDate = undoDto.getCommitDate();
|
||||
|
||||
//根据物料凭证校验物料状态是否一致
|
||||
try {
|
||||
Boolean checkUndoCondition = untils.CheckUndoCondition(undoId);
|
||||
@ -64,11 +71,12 @@ public class MaterialUndoController {
|
||||
// return AjaxResult.me().setSuccess(false).setMessage("单据类型不支持冲销");
|
||||
// }
|
||||
|
||||
if ("Z001".equals(inv_TYPE) || "Z005".equals(inv_TYPE) || "Z006".equals(inv_TYPE) || "Z007".equals(inv_TYPE) || "Z008".equals(inv_TYPE)) {
|
||||
materialUndoServiceImpl.rkUndo(undoId, userId); // 入库
|
||||
if ("Z001".equals(inv_TYPE) || "Z005".equals(inv_TYPE) || "Z006".equals(inv_TYPE) || "Z007".equals(inv_TYPE)) {
|
||||
// materialUndoServiceImpl.rkUndo(undoId, userId); // 入库
|
||||
materialUndoServiceImpl.cgrkUndo(undoId, userId); // 采购入库
|
||||
} else if ("Z002".equals(inv_TYPE) || "Z003".equals(inv_TYPE) || "Z004".equals(inv_TYPE)) {
|
||||
materialUndoServiceImpl.cprkUndo(undoId, userId);// 成品入库
|
||||
} else if (inv_TYPE.contains("ZLF")) { // 出库冲销
|
||||
} else if (inv_TYPE.contains("ZLF") || "Z008".equals(inv_TYPE)) { // 出库冲销
|
||||
materialUndoServiceImpl.ckUndo(undoId, userId);
|
||||
} else if (inv_TYPE.contains("ZLR")) {
|
||||
materialUndoServiceImpl.ckUndo(undoId, userId);
|
||||
|
@ -14,6 +14,7 @@ import com.cim.idm.exception.GlobalException;
|
||||
import com.cim.idm.framework.data.EventInfo;
|
||||
import com.cim.idm.model.po.MaterialReceiveRequest;
|
||||
import com.cim.idm.model.ShelfDto;
|
||||
import com.cim.idm.service.Impl.NoInvoiceManagerServiceImpl;
|
||||
import com.cim.idm.service.Impl.SDKMaterialPackingServiceImpl;
|
||||
import com.cim.idm.service.impl.ToSAPServiceImpl;
|
||||
import com.cim.idm.utils.AjaxResult;
|
||||
@ -234,7 +235,7 @@ public class NoInvoiceManagerContoller {
|
||||
|
||||
String commitDate = commitDateString + " 00:00:00";
|
||||
|
||||
// NoInvoiceManagerServiceImpl.QTR(boxList,user2,commitDate,opCode);
|
||||
NoInvoiceManagerServiceImpl.QTR(boxList,user2,commitDate,opCode);
|
||||
|
||||
return AjaxResult.me().setResultObj(null);
|
||||
|
||||
|
@ -9,6 +9,7 @@ import com.cim.idm.framework.util.sys.SystemPropHelper;
|
||||
import com.cim.idm.model.ErpMessageLog;
|
||||
import com.cim.idm.service.impl.ToSAPServiceImpl;
|
||||
import com.cim.idm.utils.AjaxResult;
|
||||
import com.cim.idm.utils.CommonUtils;
|
||||
import com.cim.idm.utils.EventInfoUtil;
|
||||
import com.cim.idm.wmsextend.generic.GenericServiceProxy;
|
||||
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
||||
@ -63,6 +64,8 @@ public class QMSController {
|
||||
@Autowired
|
||||
private ToSAPServiceImpl toSAPService;
|
||||
|
||||
private CommonUtils untils=new CommonUtils();
|
||||
|
||||
private static final Logger log = LoggerFactory.getLogger(QMSController.class);
|
||||
|
||||
// private NCWServiceImpl NCWServiceImpl = new NCWServiceImpl ();
|
||||
@ -987,11 +990,15 @@ public class QMSController {
|
||||
|
||||
// }else {
|
||||
// billCode = NCWServiceImpl.OQZkNoInvoice(LocationBoxList, sendUser);
|
||||
// }
|
||||
|
||||
if (billCode == null || "".equals(billCode)) {
|
||||
throw new CustomException("ERP过账失败!");
|
||||
}
|
||||
|
||||
EventInfoUtil eventInfoUtil = new EventInfoUtil();
|
||||
EventInfo makeEventInfo = eventInfoUtil.makeEventInfo("自动转库311", user, "qms质检自动转库311");
|
||||
untils.SaveUnDoInfo_ForSap(boxList2, billCode, makeEventInfo);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -777,7 +777,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
|
||||
String billCode = "";
|
||||
switch (shipRequestType) {
|
||||
case "NLCC" : //STO调拨出库
|
||||
|
||||
// 辅材出库
|
||||
// 拆条码,查询MATERIALQUANTITY 与 MATERIALQUANTITY2是否相等,如果相等则未修改了数量,不相等则修改了数量
|
||||
// 如果已修改数量,则进行拆条码
|
||||
for (int z = 0; z < packingQueryForList.size(); z++) {
|
||||
@ -2045,6 +2045,7 @@ public class MaterialShipServiceImpl implements IMaterialShipService {
|
||||
bindMap.put("WEIGHT", WEIGHT);
|
||||
bindMap.put("DIAMETER", DIAMETER);
|
||||
bindMap.put("shelfName", shelfName);
|
||||
bindMap.put("split", "Y");
|
||||
createInfo1.setUserColumns(bindMap);
|
||||
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().create(makeEventInfo, createInfo1);
|
||||
|
@ -58,6 +58,41 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo);
|
||||
}
|
||||
|
||||
// String sql = "UPDATE BS_MATERIALPACKINGUNDOINFO b SET b.FLAG = 'Y' WHERE b.UNDOID = :UNDOID";
|
||||
// Map<String, Object> hashMap2 = new HashMap<String, Object> ();
|
||||
// hashMap2.put("UNDOID", undoId);
|
||||
// IDMFrameServiceProxy.getSqlTemplate().update(sql, hashMap2);
|
||||
// 更新凭证冲销状态
|
||||
MaterialReversalDao.updateReversalUnDoId(undoId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 采购入库冲销
|
||||
* @param undoId
|
||||
* @param user
|
||||
*/
|
||||
@Transactional
|
||||
public void cgrkUndo (String undoId, String user) throws Exception {
|
||||
|
||||
String billCode = toSAPService.cancelShipInter(undoId, user);
|
||||
if (billCode == null) {
|
||||
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
||||
}
|
||||
|
||||
EventInfo makeEventInfo = new EventInfoUtil().makeEventInfo("MakeUndo", user, "MakeUndo");
|
||||
String condition="WHERE UNDOID =? ";
|
||||
String[] bindSet={undoId};
|
||||
//根据物料凭证找到所有的待冲销数据,更新库存状态为创建
|
||||
List<MaterialPacking> list = MaterialPackingServiceProxy.getMaterialPackingService().select(condition, bindSet);
|
||||
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
||||
hashMap.put("stockState", "Created");
|
||||
SetEventInfo setEventInfo = new SetEventInfo();
|
||||
setEventInfo.setUserColumns(hashMap);
|
||||
for (MaterialPacking materialPacking : list) {
|
||||
MaterialPackingKey key = materialPacking.getKey();
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(key, makeEventInfo, setEventInfo);
|
||||
}
|
||||
|
||||
// String sql = "UPDATE BS_MATERIALPACKINGUNDOINFO b SET b.FLAG = 'Y' WHERE b.UNDOID = :UNDOID";
|
||||
// Map<String, Object> hashMap2 = new HashMap<String, Object> ();
|
||||
// hashMap2.put("UNDOID", undoId);
|
||||
@ -277,15 +312,65 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
||||
String materialPackingName = list.get(i).getMaterialPackingName();
|
||||
materialPackingKeyList.add(materialPackingName);
|
||||
}
|
||||
String billCode = toSAPService.outOrderChancel(undoId, "SKD",user, materialPackingKeyList,commitDate);
|
||||
if (billCode == null) {
|
||||
throw new GlobalException("报送ERP失败,请联系IT处理!");
|
||||
}
|
||||
|
||||
// String billCode = toSAPService.outOrderChancel(undoId, "SKD",user, materialPackingKeyList,commitDate);
|
||||
// if (billCode == null) {
|
||||
// throw new GlobalException("报送ERP失败,请联系IT处理!");
|
||||
// }
|
||||
|
||||
Map<String, Object> hashMap = new HashMap<String, Object> ();
|
||||
hashMap.put("stockState", "Stocked");
|
||||
hashMap.put("shipRequestName", "");
|
||||
SetEventInfo setEventInfo = new SetEventInfo();
|
||||
|
||||
|
||||
for (MaterialPacking materialPackingSplit : list) {
|
||||
|
||||
String MATERIALPACKINGNAME1 = materialPackingSplit.getMaterialPackingName().toString();
|
||||
String CHARGE = materialPackingSplit.getCharge();
|
||||
|
||||
Map<String, Object> hashMapsplit = new HashMap<String, Object> ();
|
||||
hashMapsplit.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME1);
|
||||
// 如果是拆分批次
|
||||
if ("Y".equals(materialPackingSplit.getSplit())) {
|
||||
|
||||
// 如果不是辅材出库,则合并批次数量并删除拆分的批次和sub
|
||||
if(!CHARGE.isEmpty()) {
|
||||
// 拆分的批次数量
|
||||
Double spitMaterialQuantity = materialPackingSplit.getMaterialQuantity();
|
||||
// 查出非拆分的原批次
|
||||
String NsplitCondition="WHERE charge =? AND split IS NULL";
|
||||
String[] NspliBindSet={CHARGE};
|
||||
//根据物料凭证找到所有的待冲销数据,更新库存状态为创建
|
||||
List<MaterialPacking> noSplitList = MaterialPackingServiceProxy.getMaterialPackingService().select(NsplitCondition, NspliBindSet);
|
||||
String NoSMaterialPackingName = noSplitList.get(0).getMaterialPackingName();
|
||||
|
||||
// 存在原批次
|
||||
if(!NoSMaterialPackingName.isEmpty()) {
|
||||
MaterialPackingKey noSKey = noSplitList.get(0).getKey();
|
||||
// 原批次数量
|
||||
Double NoPMaterialQuantity = noSplitList.get(0).getMaterialQuantity();
|
||||
Map<String, Object> hashMapNosplit = new HashMap<String, Object> ();
|
||||
|
||||
//累加数量
|
||||
hashMapNosplit.put("materialQuantity", NoPMaterialQuantity + spitMaterialQuantity);
|
||||
setEventInfo.setUserColumns(hashMapNosplit);
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(noSKey, makeEventInfo, setEventInfo);
|
||||
}
|
||||
|
||||
|
||||
String delSplitSql = "DELETE FROM MATERIALPACKING WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
|
||||
// 删除拆分出的批次
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(delSplitSql, hashMapsplit);
|
||||
}
|
||||
//如果是辅材、更新为在库,删除sub,不是辅材 删除sub
|
||||
String delSubSql = "DELETE FROM MATERIALPACKINGSUB WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME";
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(delSubSql, hashMapsplit);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
for (MaterialPacking materialPacking : list) {
|
||||
MaterialPackingKey key = materialPacking.getKey();
|
||||
//获取实际发货数量
|
||||
@ -339,6 +424,7 @@ public class MaterialUndoServiceImpl implements IMaterialUndoService {
|
||||
String MATERIALPACKINGNAME = materialPacking.getMaterialPackingName().toString();
|
||||
hashMap.put("MATERIALPACKINGNAME", MATERIALPACKINGNAME);
|
||||
hashMap.put("SHIPREQUESTNAME", shipRequestName);
|
||||
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(pcSql, hashMap);
|
||||
IDMFrameServiceProxy.getSqlTemplate().update(cxSql, hashMap);
|
||||
}
|
||||
|
@ -25,7 +25,39 @@ public class NoInvoiceManagerServiceImpl {
|
||||
private SDKMaterialPackingServiceImpl SDKMaterialPackingServiceImpl = new SDKMaterialPackingServiceImpl();
|
||||
|
||||
|
||||
|
||||
@Transactional
|
||||
public void QTR(List<MaterialPacking> list,String user,String commitDate,String opCode) {
|
||||
EventInfo makeEventInfo = EventInfoUtil.makeEventInfo("QTR", user, "QTR", "", "");
|
||||
SetEventInfo setEventInfo = new SetEventInfo();
|
||||
HashMap<String, Object> hashMap = new HashMap<String,Object> ();
|
||||
hashMap.put("StockState", "Stocked");
|
||||
hashMap.put("packingState","Released");
|
||||
hashMap.put("oqaResultState","END");
|
||||
hashMap.put("oqaResult","OK");
|
||||
hashMap.put("packingGrade","OK");
|
||||
for (MaterialPacking materialPacking : list) {
|
||||
//判断标签是否存在
|
||||
String sql = "SELECT * FROM MATERIALPACKING m WHERE MATERIALPACKINGNAME = :MATERIALPACKINGNAME AND STOCKSTATE <> 'Stocked' ";
|
||||
Map<String, Object> hashMap2 = new HashMap<String,Object> ();
|
||||
String materialPackingName = materialPacking.getMaterialPackingName();
|
||||
MaterialPackingKey materialPackingKey = new MaterialPackingKey("SDK", materialPackingName);
|
||||
hashMap2.put("MATERIALPACKINGNAME", materialPackingName);
|
||||
List<Map<String, Object>> queryForList = IDMFrameServiceProxy.getSqlTemplate().queryForList(sql, hashMap2);
|
||||
if (queryForList == null || queryForList.size() < 1) {
|
||||
throw new GlobalException(materialPackingName + "标签未有系统流转记录!");
|
||||
}
|
||||
hashMap.put("locationName", materialPacking.getLocationName());
|
||||
hashMap.put("erpFactory", materialPacking.getErpFactory());
|
||||
hashMap.put("erpLocation", materialPacking.getErpLocation());
|
||||
setEventInfo.setObjectValueUserColumns(hashMap);
|
||||
MaterialPackingServiceProxy.getMaterialPackingService().setEvent(materialPackingKey, makeEventInfo, setEventInfo);
|
||||
}
|
||||
String undoid = "";
|
||||
// undoid = NCWServiceImpl.qtrNoInvoice(list,user,commitDate,opCode);
|
||||
SDKMaterialPackingServiceImpl.updateUndoIdByList(list, undoid, makeEventInfo,opCode);
|
||||
//更新库存状态
|
||||
SDKMaterialPackingServiceImpl.SaveUnDoInfo( undoid,commitDate);
|
||||
}
|
||||
|
||||
|
||||
@Transactional
|
||||
|
@ -1,12 +1,15 @@
|
||||
package com.cim.idm.utils;
|
||||
|
||||
import com.cim.idm.framework.IDMFrameServiceProxy;
|
||||
import com.cim.idm.mwmsextend.materialpacking.service.MaterialPackingServiceImpl;
|
||||
import com.cim.idm.wmsextend.generic.errorHandler.CustomException;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.LocalDate;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.*;
|
||||
|
||||
// gf 生成流水码
|
||||
@ -67,6 +70,7 @@ public class CodeGenerator {
|
||||
String query = "SELECT MATERIALPACKINGNAME FROM MATERIALPACKING WHERE CHARGE = :CHARGE";
|
||||
|
||||
try {
|
||||
|
||||
Map<String, String> bindMap = new HashMap<String, String>();
|
||||
bindMap.put("CHARGE", Charge);
|
||||
List<Map<String, Object>> result = IDMFrameServiceProxy.getSqlTemplate().queryForList(query, bindMap);
|
||||
@ -99,9 +103,10 @@ public class CodeGenerator {
|
||||
Collections.sort(chargeNoList);
|
||||
int max = Integer.parseInt(chargeNoList.get(chargeNoList.size() - 1));
|
||||
sequence = max + 1;
|
||||
} else if (Charge.isEmpty()) {
|
||||
|
||||
}
|
||||
// else if (Charge.isEmpty()) {
|
||||
//
|
||||
// }
|
||||
|
||||
// 3. 遍历结果集,生成新条码并更新数据库
|
||||
List<Integer> idsToUpdate = new ArrayList<Integer>();
|
||||
@ -117,7 +122,31 @@ public class CodeGenerator {
|
||||
for (int i = 0; i < parts.length - 4; i++) { // 不包括最后两个部分
|
||||
newBasePart.append(parts[i]).append("|");
|
||||
}
|
||||
|
||||
// 辅材出库没有批次
|
||||
if(Charge.isEmpty()) {
|
||||
// 生成一个新的批次
|
||||
LocalDate currentDate = LocalDate.now();
|
||||
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
|
||||
String formattedDate = currentDate.format(formatter);
|
||||
List<String> boxIDs = MaterialPackingServiceImpl.generateBoxID("LabelId", "SDK",
|
||||
1 + ""
|
||||
, formattedDate, "SH", "1010");
|
||||
// 打印boxIDs信息
|
||||
System.out.println("boxIDs:" + boxIDs + formattedDate);
|
||||
|
||||
//生成3位随机数
|
||||
// 计算哈希值并取绝对值
|
||||
int hash = Math.abs(currentDate.toString().hashCode());
|
||||
// 取后3位(范围 000-999)
|
||||
int randomNumber = hash % 1000;
|
||||
// 确保结果为3位数(补零)
|
||||
String formatted = String.format("%03d", randomNumber);
|
||||
newBasePart.append(boxIDs.get(0)).append("-").append(formatted); // 在第五部分后添加流水码
|
||||
}else {
|
||||
newBasePart.append(parts[4]).append("-").append(sequence++); // 在第五部分后添加流水码
|
||||
}
|
||||
|
||||
// for (int i = 6; i < parts.length; i++) { // 添加最后两个部分
|
||||
// newBasePart.append("|").append(parts[i]);
|
||||
// }
|
||||
@ -132,7 +161,6 @@ public class CodeGenerator {
|
||||
|
||||
return newBasePart.toString();
|
||||
|
||||
|
||||
}catch (Exception e) {
|
||||
log.error("Failed to generate pallet number: " + e.getMessage());
|
||||
throw new RuntimeException("生成流水码错误: " + e.getMessage());
|
||||
|
@ -632,7 +632,7 @@ public void SaveUnDoInfo_ForSap(List<String> list, String undoid, EventInfo mak
|
||||
|
||||
// 插入undo物料包装信息
|
||||
// 此SQL语句用于插入新的记录到BS_MATERIALPACKINGUNDOINFO表中,记录详细的undo信息
|
||||
String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE,"
|
||||
String insertUnDOMaterialPackingInfo = "insert into BS_MATERIALPACKINGUNDOINFO (unDoID,preundoid,UNDODETAILNAME,undoidstate,UNDOIDDATE,PREERPLOCATION,PRELOCATIONNAME,"
|
||||
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
||||
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
|
||||
+ "MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
|
||||
@ -640,7 +640,7 @@ public void SaveUnDoInfo_ForSap(List<String> list, String undoid, EventInfo mak
|
||||
+ "LASTEVENTCOMMENT, CREATETIME, CREATEUSER, RECEIVEREQUESTNAME, RECEIVEREQUESTDETAILNAME,"
|
||||
+ "MAKEDATE, RECEIVEACTNO, STOCKINTYPE, RECEIVETIME, RECEIVEUSER, SHIPREQUESTNAME, SHIPREQUESTDETAILNAME, SHIPTIME,"
|
||||
+ "SHIPUSER, REASONCODETYPE, OQARESULTSTATE, OQARESULT, ERPLOCATION, ERPFACTORY, REASONCODE, CHARGE, SUPPLIERNAME,ETCSTATE,ERPEVENTTIME,NPFLAG)"
|
||||
+ "select unDoID,'' as preundoid,UNDODETAILNAME,'Created' as undoidstate,:UNDOIDDATE AS UNDOIDDATE," //
|
||||
+ "select unDoID,'' as preundoid,UNDODETAILNAME,'Created' as undoidstate,:UNDOIDDATE AS UNDOIDDATE, PREERPLOCATION,PRELOCATIONNAME,"
|
||||
+ "SITENAME, MATERIALPACKINGNAME, MATERIALPACKINGTYPE, CONTENTMATERIALTYPE,"
|
||||
+ "MATERIALTYPE, MATERIALSPECNAME, SUPERMATERIALPACKINGNAME, PACKINGGRADE, SUBPACKINGQUANTITY, MATERIALCREATEQUANTITY,"
|
||||
+ "DECODE(MATERIALQUANTITY2,0,MATERIALQUANTITY,MATERIALQUANTITY2) MATERIALQUANTITY, PACKINGSTATE, OLDPACKINGSTATE, STOCKSTATE, OLDSTOCKSTATE, HOLDSTATE, AREANAME, LOCATIONNAME,"
|
||||
|
Loading…
x
Reference in New Issue
Block a user