|
@@ -436,6 +436,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
* @return 库存总账
|
|
|
*/
|
|
|
public TWhgenleg queryTWhgenleg(TWarehouseBills warehouseBills, TWarehousebillsitems warehousebillsitems, String ifCntrno) {
|
|
|
+ // 货转时如果调出操作是10-1且计费日期10-1那么调入的时候也要判断计费日期10-1业务日期10-1,调入之后吧id赋值给费用明细新加字段中
|
|
|
+ // 调拨同理
|
|
|
+
|
|
|
TWhgenleg tWhgenleg = new TWhgenleg();
|
|
|
// 客户
|
|
|
tWhgenleg.setfCorpid(warehouseBills.getfCorpid());
|
|
@@ -452,6 +455,14 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
tWhgenleg.setfMarks(warehousebillsitems.getfMarks());
|
|
|
// 业务日期
|
|
|
tWhgenleg.setfBsdate(warehousebillsitems.getfBsdate());
|
|
|
+ 1
|
|
|
+ 1
|
|
|
+ 1
|
|
|
+ 1
|
|
|
+ 11
|
|
|
+ 1
|
|
|
+ 1
|
|
|
+ 1
|
|
|
if ("1".equals(ifCntrno)) {
|
|
|
tWhgenleg.setfCntrno(warehousebillsitems.getfCntrno());
|
|
|
}
|
|
@@ -3595,6 +3606,9 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
List<TFees> feesList = new ArrayList<>();
|
|
|
List<TWarehousebillsfees> warehousebillsfees = new ArrayList<>();
|
|
|
for (TWarehousebillsitems wbItem : warehousebillsitemsList) {
|
|
|
+ if (StringUtils.isNull(wbItem.getfSrcid())) {
|
|
|
+ throw new WarehouseException("仓储明细找不对库存总帐信息");
|
|
|
+ }
|
|
|
// 如果业务时间超出当前时间则不允许
|
|
|
if (wbItem.getfBsdate().after(new Date())) {
|
|
|
throw new WarehouseException("业务日期不得超出当前日期");
|
|
@@ -3620,90 +3634,77 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
transferWarehouselocid = wbItem.getfTransferWarehouselocid();
|
|
|
// wbItem.setfWarehouselocid(transferWarehouselocid);
|
|
|
}
|
|
|
- // 查询总账是否存在
|
|
|
- TWhgenleg tWhgenle = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
|
|
|
-
|
|
|
- if (Objects.nonNull(tWhgenle) && wbItem.getfBsdate().before(tWarehouseBills.getfChargedate())) {
|
|
|
+ // 根据来源编号查出库存总账的信息
|
|
|
+ TWhgenleg tWhgenle = tWhgenlegMapper.selectTWhgenlegById(wbItem.getfSrcid());
|
|
|
+ // 查询总账是否存在
|
|
|
+ if (Objects.isNull(tWhgenle)) {
|
|
|
+ throw new WarehouseException("库存明细第" + i + "行找不到库存信息");
|
|
|
+ }
|
|
|
+ if (wbItem.getfBsdate().before(tWarehouseBills.getfChargedate())) {
|
|
|
throw new WarehouseException("业务日期不得超出库存总帐日期");
|
|
|
}
|
|
|
// 入库数特殊不判断入账
|
|
|
if ("SJCK".equals(billsType)) { // 出库 查询
|
|
|
- if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("库存明细第" + i + "行库存为空");
|
|
|
- } else { // 非空修改库存总账
|
|
|
- //校验计费日期是等于库存总帐计费日,如果不相等则报错
|
|
|
- checkWhgenleg(wbItem, tWhgenle);
|
|
|
- // 库存 < 出库件数
|
|
|
- if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("库存明细第" + i + "行库存不足");
|
|
|
- }
|
|
|
- // 更新库存总账
|
|
|
- updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
|
|
|
- if (StringUtils.isNull(tWarehouseBills.getfBsdate()) || StringUtils.isNull(wbItem.getfChargedate())) {
|
|
|
- return AjaxResult.error("库存明细第" + i + "行请检查日期,操作终止");
|
|
|
- }
|
|
|
- DateUtils.getDateDay(tWarehouseBills.getfBsdate(), wbItem.getfChargedate());
|
|
|
- if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
|
|
|
- return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
|
|
|
- }
|
|
|
+ if (StringUtils.isNull(tWarehouseBills.getfBsdate()) || StringUtils.isNull(wbItem.getfChargedate())) {
|
|
|
+ return AjaxResult.error("库存明细第" + i + "行请检查日期,操作终止");
|
|
|
+ }
|
|
|
+ if (StringUtils.isNull(tWarehouseBills.getfCorpid())) {
|
|
|
+ return AjaxResult.error("库存明细第" + i + "行请检查客户信息,操作终止");
|
|
|
+ }
|
|
|
+ //校验计费日期是等于库存总帐计费日,如果不相等则报错
|
|
|
+ checkWhgenleg(wbItem, tWhgenle);
|
|
|
+ // 库存 < 出库件数
|
|
|
+ if (tWhgenle.getfQtyblc() < wbItem.getfQty()) {
|
|
|
+ return AjaxResult.error("库存明细第" + i + "行库存不足");
|
|
|
}
|
|
|
+ // 更新库存总账
|
|
|
+ updateTWhgenlegData(wbItem, tWhgenle.getfId(), billsType);
|
|
|
wbItem.setfBillstatus(40L);
|
|
|
} else if (WarehouseTypeEnum.CKDB.getType().equals(billsType) || WarehouseTypeEnum.HWTG.getType().equals(billsType)) { // 调拨查询
|
|
|
- if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
|
|
|
+ //校验计费日期是等于库存总帐计费日,如果不相等则报错
|
|
|
+ checkWhgenleg(wbItem, tWhgenle);
|
|
|
+ if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
|
|
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("库存明细第" + i + "行库存为空");
|
|
|
- } else { // 非空修改库存总账
|
|
|
- //校验计费日期是等于库存总帐计费日,如果不相等则报错
|
|
|
- checkWhgenleg(wbItem, tWhgenle);
|
|
|
- if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("库存明细第" + i + "行库存不足");
|
|
|
- } else { // 2、 库存足够 先 进行出库操作
|
|
|
- wbItem.setfWarehouselocid(warehouselocId);
|
|
|
- updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
|
|
|
- }
|
|
|
- if (WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
|
|
|
- tWarehouseBills.setfTrademodeid(tWarehouseBills.getfNewTrademodeid());
|
|
|
- }
|
|
|
- // 3、 进行入库操作 查询是否存在库存
|
|
|
- wbItem.setfWarehouselocid(transferWarehouselocid); // 新库区
|
|
|
- TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
|
|
|
- if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
|
|
|
- instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
|
|
|
- } else { // 4、 存在 进行跟新库存
|
|
|
- updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
|
|
|
- }
|
|
|
+ throw new WarehouseException("库存明细第" + i + "行库存不足");
|
|
|
+ } else { // 2、 库存足够 先 进行出库操作
|
|
|
+ wbItem.setfWarehouselocid(warehouselocId);
|
|
|
+ updateTWhgenlegData(wbItem, tWhgenle.getfId(), WarehouseTypeEnum.SJCK.getType());
|
|
|
+ }
|
|
|
+ if (WarehouseTypeEnum.HWTG.getType().equals(billsType)) {
|
|
|
+ tWarehouseBills.setfTrademodeid(tWarehouseBills.getfNewTrademodeid());
|
|
|
+ }
|
|
|
+ // 3、 进行入库操作 查询是否存在库存
|
|
|
+ wbItem.setfWarehouselocid(transferWarehouselocid); // 新库区
|
|
|
+ // todo:: 需要完善的地方 缺一个字段用来存储 货转新总帐查询
|
|
|
+ TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
|
|
|
+
|
|
|
+ if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
|
|
|
+ instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
|
|
|
+ } else { // 4、 存在 进行跟新库存
|
|
|
+ updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
|
|
|
}
|
|
|
wbItem.setfWarehouselocid(warehouselocId);
|
|
|
wbItem.setfBillstatus(40L);
|
|
|
} else if (WarehouseTypeEnum.HQZY.getType().equals(billsType)) { // 货转
|
|
|
wbItem.setfBillstatus(6L);
|
|
|
wbItem.setfBillingway(tWarehouseBills.getfBillingway());
|
|
|
- if (StringUtils.isNull(tWhgenle)) { // 为空 提示没有库存
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("库存明细第" + i + "行库存为空");
|
|
|
- } else { // 非空修改库存总账
|
|
|
- //校验计费日期是等于库存总帐计费日,如果不相等则报错
|
|
|
- checkWhgenleg(wbItem, tWhgenle);
|
|
|
- if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
|
|
|
- TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
|
|
- return AjaxResult.error("库存明细第" + i + "行库存不足");
|
|
|
- } else { // 2、 库存足够 先 进行出库操作
|
|
|
- updateTWhgenlegData(wbItem, tWhgenle.getfId(), "SJCK");
|
|
|
- }
|
|
|
- long corpId = tWarehouseBills.getfCorpid();
|
|
|
- tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid());
|
|
|
- // 3、 进行入库操作 查询是否存在库存
|
|
|
- TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
|
|
|
- if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
|
|
|
- instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
|
|
|
- } else { // 4、 存在 进行跟新库存
|
|
|
- updateTWhgenlegData(wbItem, tWhgenle1.getfId(), "SJRK");
|
|
|
- }
|
|
|
- tWarehouseBills.setfCorpid(corpId);
|
|
|
- }
|
|
|
+ //校验计费日期是等于库存总帐计费日,如果不相等则报错
|
|
|
+ checkWhgenleg(wbItem, tWhgenle);
|
|
|
+ if (tWhgenle.getfQtyblc() < wbItem.getfQty()) { // 1、 库存 < 调拨件数 提示库存不足
|
|
|
+ throw new WarehouseException("库存明细第" + i + "行库存不足");
|
|
|
+ } else { // 2、 库存足够 先 进行出库操作
|
|
|
+ updateTWhgenlegData(wbItem, tWhgenle.getfId(), WarehouseTypeEnum.SJCK.getType());
|
|
|
+ }
|
|
|
+ long corpId = tWarehouseBills.getfCorpid();
|
|
|
+ tWarehouseBills.setfCorpid(tWarehouseBills.getfTocorpid());
|
|
|
+ // 3、 进行入库操作 查询是否存在库存
|
|
|
+ TWhgenleg tWhgenle1 = queryTWhgenleg(tWarehouseBills, wbItem, goods.getIfCntrno());
|
|
|
+ if (StringUtils.isNull(tWhgenle1)) { // 5、 不存在 进行新增库存
|
|
|
+ instalTWhgenleg(tWarehouseBills, wbItem, loginUser.getUser());
|
|
|
+ } else { // 4、 存在 进行跟新库存
|
|
|
+ updateTWhgenlegData(wbItem, tWhgenle1.getfId(), WarehouseTypeEnum.SJRK.getType());
|
|
|
+ }
|
|
|
+ tWarehouseBills.setfCorpid(corpId);
|
|
|
}
|
|
|
i++;
|
|
|
int num = 0;
|
|
@@ -3715,7 +3716,7 @@ public class TWarehouseBillsServiceImpl implements ITWarehouseBillsService {
|
|
|
wbItem.setUpdateBy(loginUser.getUser().getUserName());
|
|
|
wbItem.setUpdateTime(new Date());
|
|
|
num = tWarehousebillsitemsMapper.updateTWarehousebillsitems(wbItem);
|
|
|
- if ("SJCK".equals(billsType)) {
|
|
|
+ if (WarehouseTypeEnum.SJCK.getType().equals(billsType)) {
|
|
|
// 添加状态log
|
|
|
insertTWarehousebillsLog(wbItem, 40L, loginUser);
|
|
|
}
|