|
|
@ -291,154 +291,164 @@ public class AsBusrepairInventorybillService extends MybatisBaseService<AsBusrep |
|
|
|
List<AsBusrepairInventorybillDetailSDto> detailList = dto.getDetailList(); |
|
|
|
if (!detailList.isEmpty()) { |
|
|
|
for (AsBusrepairInventorybillDetailSDto sDto : detailList) { |
|
|
|
AsBusrepairInventorybillDetail detail = new AsBusrepairInventorybillDetail(); |
|
|
|
BeanUtil.copyProperties(sDto, detail,"id","sid"); |
|
|
|
// if (StringUtils.isNotBlank(sDto.getOutboundCount())) {
|
|
|
|
// detail.setCurrentCount(new BigDecimal(sDto.getOutboundCount()));
|
|
|
|
// }
|
|
|
|
if (isEnable == 1) { |
|
|
|
if (StringUtils.isNotBlank(sDto.getCount())) { |
|
|
|
detail.setCurrentCount(new BigDecimal(sDto.getCount())); |
|
|
|
} |
|
|
|
} else if (isEnable == 2) { |
|
|
|
String sid = sDto.getSid(); |
|
|
|
AsBusrepairInventorybillDetail detailUpdate = asBusrepairInventorybillDetailService.fetchBySid(sid); |
|
|
|
BigDecimal count = BigDecimal.ZERO; |
|
|
|
BigDecimal currentCount = BigDecimal.ZERO; |
|
|
|
BigDecimal discount = BigDecimal.ZERO;//折扣
|
|
|
|
BigDecimal cost = BigDecimal.ZERO;//成本单价
|
|
|
|
BigDecimal price = BigDecimal.ZERO;// 单价
|
|
|
|
if (null != detailUpdate) { |
|
|
|
if (null != detailUpdate.getCurrentCount()) { |
|
|
|
currentCount = detailUpdate.getCurrentCount(); |
|
|
|
BigDecimal count = BigDecimal.ZERO; |
|
|
|
if (StringUtils.isNotBlank(sDto.getCount())) { |
|
|
|
count = new BigDecimal(sDto.getCount()); |
|
|
|
} |
|
|
|
if (count.compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
AsBusrepairInventorybillDetail detail = new AsBusrepairInventorybillDetail(); |
|
|
|
BeanUtil.copyProperties(sDto, detail,"id","sid"); |
|
|
|
if (isEnable == 1) { |
|
|
|
detail.setCurrentCount(count); |
|
|
|
} else if (isEnable == 2) { |
|
|
|
String sid = sDto.getSid(); |
|
|
|
AsBusrepairInventorybillDetail detailUpdate = asBusrepairInventorybillDetailService.fetchBySid(sid); |
|
|
|
BigDecimal currentCount = BigDecimal.ZERO; |
|
|
|
BigDecimal discount = BigDecimal.ZERO;//折扣
|
|
|
|
BigDecimal cost = BigDecimal.ZERO;//成本单价
|
|
|
|
BigDecimal price = BigDecimal.ZERO;// 单价
|
|
|
|
if (null != detailUpdate) { |
|
|
|
if (null != detailUpdate.getCurrentCount()) { |
|
|
|
currentCount = detailUpdate.getCurrentCount(); |
|
|
|
} |
|
|
|
if (null != detailUpdate.getDiscount()) { |
|
|
|
discount = new BigDecimal(detailUpdate.getDiscount()).multiply(new BigDecimal("0.1")); |
|
|
|
} |
|
|
|
if (null != detailUpdate.getPrice()) { |
|
|
|
price = detailUpdate.getPrice(); |
|
|
|
} |
|
|
|
if (null != detailUpdate.getCost()) { |
|
|
|
cost = detailUpdate.getCost(); |
|
|
|
} |
|
|
|
BigDecimal subtract = currentCount.subtract(count); |
|
|
|
detailUpdate.setCurrentCount(subtract); |
|
|
|
BigDecimal priceSubtract = subtract.multiply(price).multiply(discount); |
|
|
|
BigDecimal amountAll = price.multiply(subtract); |
|
|
|
detailUpdate.setDiscountAmount(amountAll.subtract(priceSubtract)); |
|
|
|
detailUpdate.setAmount(priceSubtract); |
|
|
|
detailUpdate.setCostTotal(subtract.multiply(cost)); |
|
|
|
asBusrepairInventorybillDetailService.updateById(detailUpdate); |
|
|
|
detail.setCurrentCount(subtract); |
|
|
|
if (StringUtils.isNotBlank(sDto.getReturnAmount())) { |
|
|
|
detail.setAmount(new BigDecimal(sDto.getReturnAmount())); |
|
|
|
} |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(sDto.getCount())) { |
|
|
|
count = new BigDecimal(sDto.getCount()); |
|
|
|
} |
|
|
|
detail.setBillSid(entity.getSid()); |
|
|
|
String inventorySid = sDto.getInventorySid(); |
|
|
|
WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData(); |
|
|
|
//销售价
|
|
|
|
// BigDecimal goodsPrice = new BigDecimal(sDto.getPrice()).multiply(new BigDecimal(sDto.getDiscount())).multiply(new BigDecimal("0.1"));
|
|
|
|
BigDecimal goodsPrice = new BigDecimal(sDto.getPrice()); |
|
|
|
//税率
|
|
|
|
BigDecimal taxRate = BigDecimal.ZERO; |
|
|
|
if (null != inventory) { |
|
|
|
if (null != inventory.getTaxRate()) { |
|
|
|
if (inventory.getTaxRate().compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
detail.setIsTaxRate(1); |
|
|
|
taxRate = inventory.getTaxRate(); |
|
|
|
} else { |
|
|
|
detail.setIsTaxRate(0); |
|
|
|
} |
|
|
|
} else { |
|
|
|
detail.setIsTaxRate(0); |
|
|
|
} |
|
|
|
if (null != detailUpdate.getDiscount()) { |
|
|
|
discount = new BigDecimal(detailUpdate.getDiscount()).multiply(new BigDecimal("0.1")); |
|
|
|
if (StringUtils.isNotBlank(inventory.getManufacturerName())) { |
|
|
|
detail.setManufacturerName(inventory.getManufacturerName()); |
|
|
|
} |
|
|
|
if (null != detailUpdate.getPrice()) { |
|
|
|
price = detailUpdate.getPrice(); |
|
|
|
if (StringUtils.isNotBlank(inventory.getManufacturerSid())) { |
|
|
|
detail.setManufacturerSid(inventory.getManufacturerSid()); |
|
|
|
} |
|
|
|
if (null != detailUpdate.getCost()) { |
|
|
|
cost = detailUpdate.getCost(); |
|
|
|
if (StringUtils.isNotBlank(inventory.getSupplierName())) { |
|
|
|
detail.setSupplierName(inventory.getSupplierName()); |
|
|
|
} |
|
|
|
BigDecimal subtract = currentCount.subtract(count); |
|
|
|
detailUpdate.setCurrentCount(subtract); |
|
|
|
BigDecimal priceSubtract = subtract.multiply(price).multiply(discount); |
|
|
|
BigDecimal amountAll = price.multiply(subtract); |
|
|
|
detailUpdate.setDiscountAmount(amountAll.subtract(priceSubtract)); |
|
|
|
detailUpdate.setAmount(priceSubtract); |
|
|
|
detailUpdate.setCostTotal(subtract.multiply(cost)); |
|
|
|
asBusrepairInventorybillDetailService.updateById(detailUpdate); |
|
|
|
detail.setCurrentCount(subtract); |
|
|
|
if (StringUtils.isNotBlank(sDto.getReturnAmount())) { |
|
|
|
detail.setAmount(new BigDecimal(sDto.getReturnAmount())); |
|
|
|
if (StringUtils.isNotBlank(inventory.getSupplierSid())) { |
|
|
|
detail.setSupplierSid(inventory.getSupplierSid()); |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
detail.setBillSid(entity.getSid()); |
|
|
|
String inventorySid = sDto.getInventorySid(); |
|
|
|
WmsInventory inventory = wmsInventoryFeign.fetchEntityBySid(inventorySid).getData(); |
|
|
|
if (null != inventory) { |
|
|
|
if (null != inventory.getTaxRate()) { |
|
|
|
if (inventory.getTaxRate().compareTo(BigDecimal.ZERO) > 0) { |
|
|
|
detail.setIsTaxRate(1); |
|
|
|
} else { |
|
|
|
detail.setIsTaxRate(0); |
|
|
|
if (null != inventory.getCost()) { |
|
|
|
BigDecimal cost = inventory.getCost(); |
|
|
|
detail.setCost(cost); |
|
|
|
BigDecimal c = new BigDecimal(sDto.getCount()); |
|
|
|
BigDecimal multiply = c.multiply(cost); |
|
|
|
detail.setCostTotal(multiply); |
|
|
|
} |
|
|
|
} else { |
|
|
|
detail.setIsTaxRate(0); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(inventory.getManufacturerName())) { |
|
|
|
detail.setManufacturerName(inventory.getManufacturerName()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(inventory.getManufacturerSid())) { |
|
|
|
detail.setManufacturerSid(inventory.getManufacturerSid()); |
|
|
|
if (StringUtils.isNotBlank(dto.getWarehouseManager())) { |
|
|
|
detail.setOperName(dto.getWarehouseManager()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(inventory.getSupplierName())) { |
|
|
|
detail.setSupplierName(inventory.getSupplierName()); |
|
|
|
if (StringUtils.isNotBlank(dto.getWarehouseManagerSid())) { |
|
|
|
detail.setOperUserSid(dto.getWarehouseManagerSid()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(inventory.getSupplierSid())) { |
|
|
|
detail.setSupplierSid(inventory.getSupplierSid()); |
|
|
|
if (StringUtils.isNotBlank(sDto.getPrice())) { |
|
|
|
detail.setGoodsDetailsPrice(new BigDecimal(sDto.getPrice())); |
|
|
|
} |
|
|
|
if (null != inventory.getCost()) { |
|
|
|
BigDecimal cost = inventory.getCost(); |
|
|
|
detail.setCost(cost); |
|
|
|
BigDecimal c = new BigDecimal(sDto.getCount()); |
|
|
|
BigDecimal multiply = c.multiply(cost); |
|
|
|
detail.setCostTotal(multiply); |
|
|
|
detail.setIsEnable(isEnable); |
|
|
|
detail.setBillBusTypeKey("001"); |
|
|
|
detail.setBillBusTypeValue("维修用料"); |
|
|
|
detail.setDiscount(10); |
|
|
|
detail.setDiscountAmount(new BigDecimal("0")); |
|
|
|
asBusrepairInventorybillDetailService.insert(detail); |
|
|
|
WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); |
|
|
|
countQuery.setSid(sDto.getInventorySid()); |
|
|
|
countQuery.setCount(new BigDecimal(sDto.getCount())); |
|
|
|
if (busTypeKey.equals("0")) { |
|
|
|
//维修出库
|
|
|
|
countQuery.setAddOrReduce(1); |
|
|
|
WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto(); |
|
|
|
BigDecimal wiCount = inventory.getCount(); |
|
|
|
BigDecimal subtractCount = wiCount.subtract(count); |
|
|
|
recordDto.setInventorySid(inventorySid); |
|
|
|
recordDto.setCreateBySid(dto.getCreateBySid()); |
|
|
|
recordDto.setUseOrgSid(dto.getDeptSid()); |
|
|
|
recordDto.setCreateOrgSid(dto.getCreateOrgSid()); |
|
|
|
recordDto.setHandlerSid(dto.getCreateBySid()); |
|
|
|
recordDto.setHandlerName(dto.getCreateByName()); |
|
|
|
recordDto.setGoodsID(inventory.getGoodsID()); |
|
|
|
recordDto.setSourceBillSid(dto.getSourceBillSid()); |
|
|
|
recordDto.setBillNo(dto.getSourceBillNo()); |
|
|
|
recordDto.setBillType("0"); |
|
|
|
recordDto.setBusTypeKey("11"); |
|
|
|
recordDto.setBusTypeValue("销售出库"); |
|
|
|
BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid"); |
|
|
|
recordDto.setCount(sDto.getCount()); |
|
|
|
recordDto.setCurrentCount(subtractCount.toString()); |
|
|
|
recordDto.setCustomerSid(customerSid); |
|
|
|
recordDto.setCustomerName(customerName); |
|
|
|
recordDto.setTaxRate(taxRate.toString()); |
|
|
|
recordDto.setCost(goodsPrice.toString()); |
|
|
|
recordDto.setAmount(goodsPrice.multiply(count).toString()); |
|
|
|
wmsInventoryRecordFeign.save(recordDto); |
|
|
|
} else if (busTypeKey.equals("1")) { |
|
|
|
//维修退库
|
|
|
|
countQuery.setAddOrReduce(0); |
|
|
|
WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto(); |
|
|
|
BigDecimal wiCount = inventory.getCount(); |
|
|
|
BigDecimal add = wiCount.add(count); |
|
|
|
recordDto.setInventorySid(inventorySid); |
|
|
|
recordDto.setCreateBySid(dto.getCreateBySid()); |
|
|
|
recordDto.setUseOrgSid(dto.getDeptSid()); |
|
|
|
recordDto.setCreateOrgSid(dto.getCreateOrgSid()); |
|
|
|
recordDto.setHandlerSid(dto.getCreateBySid()); |
|
|
|
recordDto.setHandlerName(dto.getCreateByName()); |
|
|
|
recordDto.setGoodsID(inventory.getGoodsID()); |
|
|
|
recordDto.setSourceBillSid(dto.getSourceBillSid()); |
|
|
|
recordDto.setBillNo(dto.getSourceBillNo()); |
|
|
|
recordDto.setBillType("1"); |
|
|
|
recordDto.setBusTypeKey("02"); |
|
|
|
recordDto.setBusTypeValue("退货入库"); |
|
|
|
BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid"); |
|
|
|
recordDto.setCount(sDto.getCount()); |
|
|
|
recordDto.setCurrentCount(add.toString()); |
|
|
|
recordDto.setCustomerSid(customerSid); |
|
|
|
recordDto.setCustomerName(customerName); |
|
|
|
recordDto.setTaxRate(taxRate.toString()); |
|
|
|
recordDto.setCost(goodsPrice.toString()); |
|
|
|
recordDto.setAmount(goodsPrice.multiply(count).toString()); |
|
|
|
wmsInventoryRecordFeign.save(recordDto); |
|
|
|
} |
|
|
|
wmsInventoryFeign.updateInventoryCount(countQuery); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(dto.getWarehouseManager())) { |
|
|
|
detail.setOperName(dto.getWarehouseManager()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(dto.getWarehouseManagerSid())) { |
|
|
|
detail.setOperUserSid(dto.getWarehouseManagerSid()); |
|
|
|
} |
|
|
|
if (StringUtils.isNotBlank(sDto.getPrice())) { |
|
|
|
detail.setGoodsDetailsPrice(new BigDecimal(sDto.getPrice())); |
|
|
|
} |
|
|
|
detail.setIsEnable(isEnable); |
|
|
|
detail.setBillBusTypeKey("001"); |
|
|
|
detail.setBillBusTypeValue("维修用料"); |
|
|
|
detail.setDiscount(10); |
|
|
|
detail.setDiscountAmount(new BigDecimal("0")); |
|
|
|
asBusrepairInventorybillDetailService.insert(detail); |
|
|
|
WmsUpdateCountQuery countQuery = new WmsUpdateCountQuery(); |
|
|
|
countQuery.setSid(sDto.getInventorySid()); |
|
|
|
countQuery.setCount(new BigDecimal(sDto.getCount())); |
|
|
|
if (busTypeKey.equals("0")) { |
|
|
|
//维修出库
|
|
|
|
countQuery.setAddOrReduce(1); |
|
|
|
WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto(); |
|
|
|
BigDecimal wiCount = inventory.getCount(); |
|
|
|
BigDecimal subtractCount = wiCount.subtract(new BigDecimal(sDto.getCount())); |
|
|
|
recordDto.setInventorySid(inventorySid); |
|
|
|
recordDto.setCreateBySid(dto.getCreateBySid()); |
|
|
|
recordDto.setUseOrgSid(dto.getDeptSid()); |
|
|
|
recordDto.setCreateOrgSid(dto.getCreateOrgSid()); |
|
|
|
recordDto.setHandlerSid(dto.getCreateBySid()); |
|
|
|
recordDto.setHandlerName(dto.getCreateByName()); |
|
|
|
recordDto.setGoodsID(inventory.getGoodsID()); |
|
|
|
recordDto.setSourceBillSid(dto.getSourceBillSid()); |
|
|
|
recordDto.setBillNo(dto.getSourceBillNo()); |
|
|
|
recordDto.setBillType("0"); |
|
|
|
recordDto.setBusTypeKey("11"); |
|
|
|
recordDto.setBusTypeValue("销售出库"); |
|
|
|
BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid"); |
|
|
|
recordDto.setCount(sDto.getCount()); |
|
|
|
recordDto.setCurrentCount(subtractCount.toString()); |
|
|
|
recordDto.setCustomerSid(customerSid); |
|
|
|
recordDto.setCustomerName(customerName); |
|
|
|
wmsInventoryRecordFeign.save(recordDto); |
|
|
|
} else if (busTypeKey.equals("1")) { |
|
|
|
//维修退库
|
|
|
|
countQuery.setAddOrReduce(0); |
|
|
|
WmsInventoryRecordDto recordDto = new WmsInventoryRecordDto(); |
|
|
|
BigDecimal wiCount = inventory.getCount(); |
|
|
|
BigDecimal add = wiCount.add(new BigDecimal(sDto.getCount())); |
|
|
|
recordDto.setInventorySid(inventorySid); |
|
|
|
recordDto.setCreateBySid(dto.getCreateBySid()); |
|
|
|
recordDto.setUseOrgSid(dto.getDeptSid()); |
|
|
|
recordDto.setCreateOrgSid(dto.getCreateOrgSid()); |
|
|
|
recordDto.setHandlerSid(dto.getCreateBySid()); |
|
|
|
recordDto.setHandlerName(dto.getCreateByName()); |
|
|
|
recordDto.setGoodsID(inventory.getGoodsID()); |
|
|
|
recordDto.setSourceBillSid(dto.getSourceBillSid()); |
|
|
|
recordDto.setBillNo(dto.getSourceBillNo()); |
|
|
|
recordDto.setBillType("1"); |
|
|
|
recordDto.setBusTypeKey("02"); |
|
|
|
recordDto.setBusTypeValue("退货入库"); |
|
|
|
BeanUtil.copyProperties(inventory, recordDto, "sid", "createBySid"); |
|
|
|
recordDto.setCount(sDto.getCount()); |
|
|
|
recordDto.setCurrentCount(add.toString()); |
|
|
|
recordDto.setCustomerSid(customerSid); |
|
|
|
recordDto.setCustomerName(customerName); |
|
|
|
wmsInventoryRecordFeign.save(recordDto); |
|
|
|
} |
|
|
|
wmsInventoryFeign.updateInventoryCount(countQuery); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
return entity.getSid(); |
|
|
|