diff --git a/erp_web/js/pages/materials/in_out.js b/erp_web/js/pages/materials/in_out.js index d9c9d249..a92bf39b 100644 --- a/erp_web/js/pages/materials/in_out.js +++ b/erp_web/js/pages/materials/in_out.js @@ -1737,7 +1737,7 @@ $("#ProjectIdShow").text(depotHeadInfo[10]); $("#NumberShow").text(depotHeadInfo[2]); $("#OperTimeShow").text(depotHeadInfo[4]); - $('#OrganIdShow').text(depotHeadInfo[11]); + $('#OrganIdShow').text(depotHeadInfo[11]=="undefined"?'':depotHeadInfo[11]); $("#HandsPersonIdShow").text(depotHeadInfo[12]); if(depotHeadInfo[13] && depotHeadInfo[13]!="undefined"){ $("#AccountIdShow").text(depotHeadInfo[13]); //结算账户 diff --git a/erp_web/pages/manage/serialNumber.html b/erp_web/pages/manage/serialNumber.html index 83df0f76..903f49a3 100644 --- a/erp_web/pages/manage/serialNumber.html +++ b/erp_web/pages/manage/serialNumber.html @@ -188,30 +188,42 @@ pageList: initPageNum, columns: [[ {field: 'id', width: 35, align: "center", checkbox: true}, + {field: 'depotheadId', hidden: true}, + {field: 'depotHeadType', hidden: true}, { title: '操作', field: 'op', align: "center", width: 60, formatter: function (value, rec) { var str = ''; var rowInfo = rec.id + 'AaBb' + rec.materialId + 'AaBb' + rec.materialName + 'AaBb' + rec.serialNumber + 'AaBb' + rec.isSell + 'AaBb' + rec.remark + 'AaBb' + rec.deleteFlag + 'AaBb' + rec.createTime + 'AaBb' + rec.updateTime + 'AaBb' + rec.creator + 'AaBb' + rec.updater - + 'AaBb' + rec.creatorName + 'AaBb' + rec.updaterName; + + 'AaBb' + rec.creatorName + 'AaBb' + rec.updaterName +'AaBb' + rec.depotheadId+'AaBb' + rec.depotHeadNumber +'AaBb' + rec.depotHeadType; str += '   '; str += ''; return str; } }, - {title: '商品名称', field: 'materialName', width: 100}, - {title: '序列号', field: 'serialNumber', width: 200}, - {title: '已卖出', field: 'isSell', width: 60 , formatter: function (value) { + {title: '商品名称', align: "center",field: 'materialName', width: 100}, + {title: '序列号',align: "center", field: 'serialNumber', width: 200}, + {title: '单据编号', align: "center", field: 'depotHeadNumber', width: 140, + formatter: function (value, row) { + if(row.depotHeadNumber){ + + return "" + + row.depotHeadNumber + ""; + } + return ''; + } + }, + {title: '已卖出', align: "center", field: 'isSell', width: 60 , formatter: function (value) { return value=='1' ? "是" : "否"; } }, - {title: '已删除', field: 'deleteFlag', width: 60, formatter: function (value) { + {title: '已删除', align: "center", field: 'deleteFlag', width: 60, formatter: function (value) { return value=='1' ? "是" : "否"; } }, - {title: '创建时间', field: 'createTime', width: 140,formatter: formatDatebox}, - {title: '更新时间', field: 'updateTime', width: 140,formatter: formatDatebox}, - {title: '备注', field: 'remark',width: 300} + {title: '创建时间',align: "center", field: 'createTime', width: 140,formatter: formatDatebox}, + {title: '更新时间', align: "center", field: 'updateTime', width: 140,formatter: formatDatebox}, + {title: '备注',align: "center", field: 'remark',width: 200} ]], toolbar: [ { diff --git a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java index 6e795ca1..8056ad58 100644 --- a/src/main/java/com/jsh/erp/constants/ExceptionConstants.java +++ b/src/main/java/com/jsh/erp/constants/ExceptionConstants.java @@ -32,10 +32,10 @@ public class ExceptionConstants { public static final int SERIAL_NUMBERE_ALREADY_EXISTS_CODE = 10500000; public static final String SERIAL_NUMBERE_ALREADY_EXISTS_MSG = "序列号已存在"; /**序列号不能为为空*/ - public static final int SERIAL_NUMBERE_NOT_BE_EMPTY_CODE = 10500000; + public static final int SERIAL_NUMBERE_NOT_BE_EMPTY_CODE = 10500001; public static final String SERIAL_NUMBERE_NOT_BE_EMPTY_MSG = "序列号不能为为空"; /**商品%s下序列号不充足,请补充后重试*/ - public static final int MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_CODE = 10500000; + public static final int MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_CODE = 10500002; public static final String MATERIAL_SERIAL_NUMBERE_NOT_ENOUGH_MSG = "商品:%s下序列号不充足,请补充后重试"; @@ -56,6 +56,9 @@ public class ExceptionConstants { //该商品已绑定序列号数量小于等于商品现有库存 public static final int MATERIAL_SERIAL_NUMBERE_NOT_MORE_THAN_STORAGE_CODE = 8000003; public static final String MATERIAL_SERIAL_NUMBERE_NOT_MORE_THAN_STORAGE_MSG = "该商品已绑定序列号数量大于等于商品现有库存"; + //商品库存不足 + public static final int MATERIAL_STOCK_NOT_ENOUGH_CODE = 8000004; + public static final String MATERIAL_STOCK_NOT_ENOUGH_MSG = "商品:%s库存不足"; /** * 标准正常返回/操作成功返回 diff --git a/src/main/java/com/jsh/erp/datasource/entities/SerialNumberEx.java b/src/main/java/com/jsh/erp/datasource/entities/SerialNumberEx.java index bd29dff4..218adde6 100644 --- a/src/main/java/com/jsh/erp/datasource/entities/SerialNumberEx.java +++ b/src/main/java/com/jsh/erp/datasource/entities/SerialNumberEx.java @@ -19,6 +19,10 @@ public class SerialNumberEx extends SerialNumber{ * 更新者名称 * */ private String updaterName; + /**单据编号*/ + private String depotHeadNumber; + /**单据类型(出库入库)*/ + private String depotHeadType; public String getMaterialName() { return materialName; @@ -43,4 +47,20 @@ public class SerialNumberEx extends SerialNumber{ public void setUpdaterName(String updaterName) { this.updaterName = updaterName; } + + public String getDepotHeadNumber() { + return depotHeadNumber; + } + + public void setDepotHeadNumber(String depotHeadNumber) { + this.depotHeadNumber = depotHeadNumber; + } + + public String getDepotHeadType() { + return depotHeadType; + } + + public void setDepotHeadType(String depotHeadType) { + this.depotHeadType = depotHeadType; + } } diff --git a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java index 63b5dfac..3b8e0651 100644 --- a/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java +++ b/src/main/java/com/jsh/erp/service/depotItem/DepotItemService.java @@ -3,11 +3,13 @@ package com.jsh.erp.service.depotItem; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.jsh.erp.constants.BusinessConstants; +import com.jsh.erp.constants.ExceptionConstants; import com.jsh.erp.datasource.entities.*; import com.jsh.erp.datasource.mappers.DepotHeadMapper; import com.jsh.erp.datasource.mappers.DepotItemMapper; import com.jsh.erp.datasource.mappers.DepotItemMapperEx; import com.jsh.erp.datasource.mappers.SerialNumberMapperEx; +import com.jsh.erp.exception.BusinessRunTimeException; import com.jsh.erp.service.material.MaterialService; import com.jsh.erp.service.serialNumber.SerialNumberService; import com.jsh.erp.service.user.UserService; @@ -246,8 +248,20 @@ public class DepotItemService { if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) &&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())){ DepotItem depotItem = getDepotItem(tempDeletedJson.getLong("Id")); - serialNumberMapperEx.cancelSerialNumber(depotItem.getMaterialid(),depotItem.getHeaderid(),depotItem.getOpernumber().intValue(), - new Date(),userInfo==null?null:userInfo.getId()); + if(depotItem==null){ + continue; + } + /** + * 判断商品是否开启序列号,开启的收回序列号,未开启的跳过 + * */ + Material material= materialService.getMaterial(depotItem.getMaterialid()); + if(material==null){ + continue; + } + if(BusinessConstants.ENABLE_SERIAL_NUMBER_ENABLED.equals(material.getEnableSerialNumber())){ + serialNumberMapperEx.cancelSerialNumber(depotItem.getMaterialid(),depotItem.getHeaderid(),depotItem.getOpernumber().intValue(), + new Date(),userInfo==null?null:userInfo.getId()); + } } this.deleteDepotItem(tempDeletedJson.getLong("Id")); } @@ -328,13 +342,34 @@ public class DepotItemService { if (tempInsertedJson.get("MType") != null) { depotItem.setMtype(tempInsertedJson.getString("MType")); } - this.insertDepotItemWithObj(depotItem); - /**出库时处理序列号*/ - if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType()) - &&!BusinessConstants.SUB_TYPE_TRANSFER.equals(depotHead.getSubtype())){ - //查询单据子表中开启序列号的数据列表 - serialNumberService.checkAndUpdateSerialNumber(depotItem,userInfo); + /** + * 出库时判断库存是否充足 + * */ + if(BusinessConstants.DEPOTHEAD_TYPE_OUT.equals(depotHead.getType())){ + if(depotItem==null){ + continue; + } + Material material= materialService.getMaterial(depotItem.getMaterialid()); + if(material==null){ + continue; + } + if(getCurrentInStock(depotItem.getMaterialid()) + +