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())
+
+