|
|
|
@ -1,5 +1,6 @@
|
|
|
|
|
package com.glxp.sale.admin.thread;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.glxp.sale.admin.constant.Constant;
|
|
|
|
|
import com.glxp.sale.admin.constant.ConstantStatus;
|
|
|
|
|
import com.glxp.sale.admin.constant.ConstantType;
|
|
|
|
@ -210,13 +211,33 @@ public class InvProductsTrService {
|
|
|
|
|
//普通出库补单-- //补采购入库或寄售转入单
|
|
|
|
|
public void addUseOutOrder(OrderEntity orderEntity, List<InvProductDetailEntity> invProductDetailEntities, List<BussinessChangeTypeEntity> bussinessChangeTypeEntities) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BussinessChangeTypeEntity advChangeTypeEntity = null;
|
|
|
|
|
BussinessChangeTypeEntity norChangeTypeEntity = null;
|
|
|
|
|
BussinessChangeTypeEntity outChangeTypeEntity = null;
|
|
|
|
|
BussinessChangeTypeEntity innorChangeTypeEntity = null;
|
|
|
|
|
for (BussinessChangeTypeEntity bussinessChangeTypeEntity : bussinessChangeTypeEntities) {
|
|
|
|
|
if (bussinessChangeTypeEntity.getChangeType() == ConstantStatus.ORDER_CHANGE_NORMAL_ADV_IN) {
|
|
|
|
|
advChangeTypeEntity = bussinessChangeTypeEntity;
|
|
|
|
|
} else if (bussinessChangeTypeEntity.getChangeType() == ConstantStatus.ORDER_CHANGE_NORMAL_IN) {
|
|
|
|
|
outChangeTypeEntity = bussinessChangeTypeEntity;
|
|
|
|
|
} else if (bussinessChangeTypeEntity.getChangeType() == ConstantStatus.ORDER_CHANGE_INNOR_NORMAL_IN) {
|
|
|
|
|
innorChangeTypeEntity = bussinessChangeTypeEntity;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
List<WarehouseEntity> warehouseEntities = codesService.findByReceiptId(orderEntity.getId());
|
|
|
|
|
List<WarehouseEntity> inList = new ArrayList<>();
|
|
|
|
|
List<WarehouseEntity> preiInList = new ArrayList<>();
|
|
|
|
|
for (WarehouseEntity warehouseEntity : warehouseEntities) {
|
|
|
|
|
/**
|
|
|
|
|
* 如果出库单据需要缺量自动补录入库单据?
|
|
|
|
|
* if(出库单据的当前仓库为1级库,仓库等级=1)
|
|
|
|
|
* {可能需要补录的入库单据有两种:《供应商入库》《寄售转入库》}
|
|
|
|
|
* else(仓库等级>1)
|
|
|
|
|
* {可能需要补录的入库单据有一种:《调拨入库》}
|
|
|
|
|
*/
|
|
|
|
|
InvWarehouseEntity locWarehouseEntity = invWarehouseService.selectByCode(warehouseEntity.getLocStorageCode());
|
|
|
|
|
|
|
|
|
|
if (isAdavnce(warehouseEntity)) {//补寄售转入
|
|
|
|
|
if (locWarehouseEntity.getLevel() == 1 && isAdavnce(warehouseEntity)) {//补寄售转入
|
|
|
|
|
|
|
|
|
|
//获取普通出入库结余数量
|
|
|
|
|
int actCount = getActCount(warehouseEntity);
|
|
|
|
@ -231,7 +252,21 @@ public class InvProductsTrService {
|
|
|
|
|
} else {
|
|
|
|
|
count = warehouseEntity.getCount();
|
|
|
|
|
}
|
|
|
|
|
InvWarehouseEntity invWarehouseEntity = invWarehouseService.findDefault(true, true);
|
|
|
|
|
/**
|
|
|
|
|
* 《寄售转入库》往来单位:
|
|
|
|
|
* 单据类型的当前仓库(如果当前仓库有设置,则判断该当前仓库是否为1级库并且仓库类型=寄售,如果没设置,那么往来单位自动为默认寄售仓库),当前仓库:出库单据的当前仓库
|
|
|
|
|
*/
|
|
|
|
|
BussinessTypeEntity bussinessTypeEntity = bussinessTypeService.findBTByAction(advChangeTypeEntity.getScAction());
|
|
|
|
|
InvWarehouseEntity invWarehouseEntity;
|
|
|
|
|
if (!StrUtil.isEmpty(bussinessTypeEntity.getStorageCode())) {
|
|
|
|
|
invWarehouseEntity = invWarehouseService.selectByCode(bussinessTypeEntity.getStorageCode());
|
|
|
|
|
if (!invWarehouseEntity.getAdvanceType() || invWarehouseEntity.getLevel() > 1) {
|
|
|
|
|
//todo 补单失败,当前仓库设置错误
|
|
|
|
|
orderEntity.setRemark("该补录单,单据类型" + bussinessTypeEntity.getName() + "当前仓库设置错误,无法补单");
|
|
|
|
|
orderEntity.setError(true);
|
|
|
|
|
}
|
|
|
|
|
} else
|
|
|
|
|
invWarehouseEntity = invWarehouseService.findDefault(true, true);
|
|
|
|
|
int invCount = getCountByOrder(null, warehouseEntity.getCode(), warehouseEntity.getSupId(), invWarehouseEntity.getCode());
|
|
|
|
|
if (invCount <= 0) {
|
|
|
|
|
invCount = getCountByOrder(null, code, warehouseEntity.getSupId(), invWarehouseEntity.getCode());
|
|
|
|
@ -267,20 +302,23 @@ public class InvProductsTrService {
|
|
|
|
|
count = warehouseEntity.getCount();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//获取当前仓库
|
|
|
|
|
InvWarehouseEntity invWarehouseEntity = invWarehouseService.selectByCode(warehouseEntity.getLocStorageCode());
|
|
|
|
|
int invCount = 0;
|
|
|
|
|
if (invWarehouseEntity.getPcode() != null && !invWarehouseEntity.getPcode().equals("0")) {
|
|
|
|
|
//上级仓库
|
|
|
|
|
|
|
|
|
|
InvWarehouseEntity pInWarehouseEntity = invWarehouseService.selectByCode(invWarehouseEntity.getPcode());
|
|
|
|
|
if (locWarehouseEntity.getLevel() > 1) {//补调拨入库
|
|
|
|
|
/**
|
|
|
|
|
* 调拨入库》往来单位:出库单据的当前仓库的父级仓库,当前仓库:出库单据的当前仓库;
|
|
|
|
|
*/
|
|
|
|
|
InvWarehouseEntity pInWarehouseEntity = invWarehouseService.selectByCode(locWarehouseEntity.getPcode());
|
|
|
|
|
warehouseEntity.setFromCorp(pInWarehouseEntity.getName());
|
|
|
|
|
warehouseEntity.setFromCorpId(pInWarehouseEntity.getCode());
|
|
|
|
|
invCount = getCountByOrder(null, warehouseEntity.getCode(), warehouseEntity.getSupId(), invWarehouseEntity.getPcode());
|
|
|
|
|
invCount = getCountByOrder(null, warehouseEntity.getCode(), warehouseEntity.getSupId(), locWarehouseEntity.getPcode());
|
|
|
|
|
if (invCount <= 0) {
|
|
|
|
|
invCount = getCountByOrder(null, code, warehouseEntity.getSupId(), invWarehouseEntity.getPcode());
|
|
|
|
|
invCount = getCountByOrder(null, code, warehouseEntity.getSupId(), locWarehouseEntity.getPcode());
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
norChangeTypeEntity = innorChangeTypeEntity;
|
|
|
|
|
} else { //补供应商入库
|
|
|
|
|
/**
|
|
|
|
|
* 供应商入库》往来单位:根据产品指定的供应商,当前仓库:出库单据的当前仓库;
|
|
|
|
|
*/
|
|
|
|
|
//供应商
|
|
|
|
|
warehouseEntity.setFromCorpId(warehouseEntity.getSupId());
|
|
|
|
|
BasicUnitMaintainEntity basicUnitMaintainEntity = basicUnitMaintainService.selectByErpId(warehouseEntity.getSupId());
|
|
|
|
@ -289,6 +327,7 @@ public class InvProductsTrService {
|
|
|
|
|
if (invCount <= 0) {
|
|
|
|
|
invCount = getCountByOrder(null, code, warehouseEntity.getSupId(), null);
|
|
|
|
|
}
|
|
|
|
|
norChangeTypeEntity = outChangeTypeEntity;
|
|
|
|
|
}
|
|
|
|
|
if (invCount > 0) {
|
|
|
|
|
if (count > invCount) {
|
|
|
|
@ -306,15 +345,7 @@ public class InvProductsTrService {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
BussinessChangeTypeEntity advChangeTypeEntity = null;
|
|
|
|
|
BussinessChangeTypeEntity norChangeTypeEntity = null;
|
|
|
|
|
for (BussinessChangeTypeEntity bussinessChangeTypeEntity : bussinessChangeTypeEntities) {
|
|
|
|
|
if (bussinessChangeTypeEntity.getChangeType() == ConstantStatus.ORDER_CHANGE_NORMAL_ADV_IN) {
|
|
|
|
|
advChangeTypeEntity = bussinessChangeTypeEntity;
|
|
|
|
|
} else if (bussinessChangeTypeEntity.getChangeType() == ConstantStatus.ORDER_CHANGE_NORMAL_IN) {
|
|
|
|
|
norChangeTypeEntity = bussinessChangeTypeEntity;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (inList.size() > 0) {
|
|
|
|
|
List<WarehouseEntity> temps = filterMapCodes(inList);
|
|
|
|
|
buildInOrder(norChangeTypeEntity, temps, orderEntity); //3.生成采购入库流转单据
|
|
|
|
@ -779,7 +810,12 @@ public class InvProductsTrService {
|
|
|
|
|
outOrder.setActDate(DateUtil.getBeforeDay(outOrder.getActDate(), bussinessChangeTypeEntity.getBeforeTime()));
|
|
|
|
|
outOrder.setAction(bussinessChangeTypeEntity.getScAction());
|
|
|
|
|
outOrder.setMainAction(ConstantType.TYPE_PUT);
|
|
|
|
|
outOrder.setContrastStatus(ConstantStatus.ORDER_CHECK_UN);
|
|
|
|
|
if (orderEntity.isError()) {
|
|
|
|
|
outOrder.setContrastStatus(ConstantStatus.ORDER_CHECK_FAIL);
|
|
|
|
|
} else {
|
|
|
|
|
outOrder.setContrastStatus(ConstantStatus.ORDER_CHECK_UN);
|
|
|
|
|
}
|
|
|
|
|
outOrder.setRemark(orderEntity.getRemark());
|
|
|
|
|
outOrder.setCustomerId(Constant.SYSTEM_CUSTOMER_ID);
|
|
|
|
|
outOrder.setFromCorp(temps.get(0).getFromCorp());
|
|
|
|
|
outOrder.setFromCorpId(temps.get(0).getFromCorpId());
|
|
|
|
|