diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/receiptin/controller/ReceiptinController.java b/SC-boot/linkage-scm/src/main/java/jnpf/receiptin/controller/ReceiptinController.java index d41ff606..f8fe35c5 100644 --- a/SC-boot/linkage-scm/src/main/java/jnpf/receiptin/controller/ReceiptinController.java +++ b/SC-boot/linkage-scm/src/main/java/jnpf/receiptin/controller/ReceiptinController.java @@ -192,6 +192,7 @@ public class ReceiptinController { for(Receiptin_item0Entity entitys : Receiptin_item0List){ entitys.setId(RandomUtil.uuId()); entitys.setReceiptinId(entity.getId()); + entitys.setBatchno(generaterSwapUtil.getBillNumber("receiptin-num", false)); receiptin_item0Service.save(entitys); } //采购订单状态为2 diff --git a/SC-boot/linkage-scm/src/main/java/jnpf/saleorder/controller/SaleorderitemController.java b/SC-boot/linkage-scm/src/main/java/jnpf/saleorder/controller/SaleorderitemController.java index dc2cbdf4..417264ef 100644 --- a/SC-boot/linkage-scm/src/main/java/jnpf/saleorder/controller/SaleorderitemController.java +++ b/SC-boot/linkage-scm/src/main/java/jnpf/saleorder/controller/SaleorderitemController.java @@ -9,6 +9,7 @@ import cn.hutool.extra.expression.engine.jfireel.JfireELEngine; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import io.swagger.annotations.Api; @@ -36,11 +37,15 @@ import jnpf.customer.service.CustomerService; import jnpf.exception.DataException; import jnpf.materialvo.entity.MaterialEntity; import jnpf.materialvo.service.MaterialService; +import jnpf.paymentdoc.entity.PaymentdocItem1Entity; +import jnpf.paymentdoc.service.PaymentdocItem1Service; import jnpf.poundlist.entity.PoundlistEntity; import jnpf.poundlist.service.PoundlistService; import jnpf.purchaseorder.entity.Purchaseorder_item0Entity; import jnpf.purchaseorder.entity.PurchaseorderitemEntity; +import jnpf.purchaseorder.service.Purchaseorder_item0Service; import jnpf.purchaseorder.service.PurchaseorderitemService; +import jnpf.receiptin.entity.ReceiptinEntity; import jnpf.receiptin.entity.Receiptin_item0Entity; import jnpf.receiptin.service.Receiptin_item0Service; import jnpf.receiptout.entity.ReceiptoutEntity; @@ -57,8 +62,10 @@ import jnpf.vehicle.service.VehicleService; import jnpf.warehouse.entity.WareHouseEntity; import jnpf.warehouse.service.WareHouseService; import org.apache.commons.lang3.ObjectUtils; +import org.apache.commons.lang3.RandomUtils; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.annotations.Param; +import org.springframework.beans.BeanUtils; import org.springframework.security.core.parameters.P; import org.springframework.transaction.annotation.Transactional; import jnpf.base.entity.ProvinceEntity; @@ -186,6 +193,11 @@ public class SaleorderitemController { @Resource private AccountingMapper accountingMapper; + @Autowired + private Purchaseorder_item0Service purchaseorder_item0Service; + @Autowired + private PaymentdocItem1Service paymentdocItem1Service; + /** * 修改磅单单价 @@ -521,6 +533,118 @@ public class SaleorderitemController { return ActionResult.success(vo); } + @Transactional + public void settlement(List salesorderItem0List) throws DataException { + for (Salesorder_item0Entity entity : salesorderItem0List){ + PoundlistEntity poundlistEntity = poundlistService.getInfo(entity.getPoundlistId()); + if (ObjectUtils.isNotEmpty(poundlistEntity)){ + //磅单调整 + PoundlistEntity poundlistEntityCopy = new PoundlistEntity(); + BeanUtils.copyProperties(poundlistEntity, poundlistEntityCopy); + String mainId =RandomUtil.uuId(); + poundlistEntityCopy.setSalesStatus("99"); + poundlistEntityCopy.setSalesorderId(null); + BigDecimal newSettlement = poundlistEntity.getSettlement().subtract(entity.getSettlement()); + poundlistEntityCopy.setSettlement(newSettlement); + poundlistEntityCopy.setPurchaseAmounts(poundlistEntity.getPurchasePrice().multiply(newSettlement).setScale(2,BigDecimal.ROUND_HALF_UP)); + poundlistEntityCopy.setSalesAmounts(poundlistEntity.getSalesPrice().multiply(newSettlement).setScale(2,BigDecimal.ROUND_HALF_UP)); + poundlistEntityCopy.setSourceId(poundlistEntity.getId()); + poundlistEntityCopy.setId(mainId); + poundlistService.save(poundlistEntityCopy); + poundlistEntity.setSettlement(entity.getSettlement()); + poundlistEntity.setPurchaseAmounts(poundlistEntity.getPurchaseAmounts().subtract(poundlistEntityCopy.getPurchaseAmounts().setScale(2,BigDecimal.ROUND_HALF_UP))); + poundlistService.updateById(poundlistEntity); + //采购订单调整 + LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.eq(Purchaseorder_item0Entity::getPoundlistId,poundlistEntity.getId()); + Purchaseorder_item0Entity purchaseorder_item0Entity = purchaseorder_item0Service.getOne(queryWrapper); + if (ObjectUtils.isNotEmpty(purchaseorder_item0Entity)){ + Purchaseorder_item0Entity purchaseorder_item0EntityCopy = new Purchaseorder_item0Entity(); + BeanUtils.copyProperties(purchaseorder_item0Entity,purchaseorder_item0EntityCopy); + purchaseorder_item0Entity.setSettlement(entity.getSettlement()); + purchaseorder_item0Entity.setAmount(poundlistEntity.getPurchaseAmounts()); + switch (purchaseorder_item0Entity.getRate()) { + case "1": + purchaseorder_item0Entity.setNotAmount(purchaseorder_item0Entity.getAmount().divide(new BigDecimal("1.09"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "2": + purchaseorder_item0Entity.setNotAmount(purchaseorder_item0Entity.getAmount().divide(new BigDecimal("1.06"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "3": + purchaseorder_item0Entity.setNotAmount(purchaseorder_item0Entity.getAmount().divide(new BigDecimal("1.05"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "4": + purchaseorder_item0Entity.setNotAmount(purchaseorder_item0Entity.getAmount().divide(new BigDecimal("1.03"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "5": + purchaseorder_item0Entity.setNotAmount(purchaseorder_item0Entity.getAmount().divide(new BigDecimal("1"),2,BigDecimal.ROUND_HALF_UP)); + break; + default: + purchaseorder_item0Entity.setNotAmount(purchaseorder_item0Entity.getAmount().divide(new BigDecimal("1.13"),2,BigDecimal.ROUND_HALF_UP)); + break; + } + purchaseorder_item0Service.updateById(purchaseorder_item0Entity); + String purchaseItemId =RandomUtil.uuId(); + purchaseorder_item0EntityCopy.setId(purchaseItemId); + purchaseorder_item0EntityCopy.setPoundlistId(poundlistEntityCopy.getId()); + purchaseorder_item0EntityCopy.setSettlement(poundlistEntityCopy.getSettlement()); + purchaseorder_item0EntityCopy.setAmount(poundlistEntityCopy.getPurchaseAmounts()); + switch (purchaseorder_item0EntityCopy.getRate()) { + case "1": + purchaseorder_item0EntityCopy.setNotAmount(purchaseorder_item0EntityCopy.getAmount().divide(new BigDecimal("1.09"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "2": + purchaseorder_item0EntityCopy.setNotAmount(purchaseorder_item0EntityCopy.getAmount().divide(new BigDecimal("1.06"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "3": + purchaseorder_item0EntityCopy.setNotAmount(purchaseorder_item0EntityCopy.getAmount().divide(new BigDecimal("1.05"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "4": + purchaseorder_item0EntityCopy.setNotAmount(purchaseorder_item0EntityCopy.getAmount().divide(new BigDecimal("1.03"),2,BigDecimal.ROUND_HALF_UP)); + break; + case "5": + purchaseorder_item0EntityCopy.setNotAmount(purchaseorder_item0EntityCopy.getAmount().divide(new BigDecimal("1"),2,BigDecimal.ROUND_HALF_UP)); + break; + default: + purchaseorder_item0EntityCopy.setNotAmount(purchaseorder_item0EntityCopy.getAmount().divide(new BigDecimal("1.13"),2,BigDecimal.ROUND_HALF_UP)); + break; + } + purchaseorder_item0Service.save(purchaseorder_item0EntityCopy); + //入库单调整 + LambdaQueryWrapper queryWrapper1 = new LambdaQueryWrapper<>(); + queryWrapper1.eq(Receiptin_item0Entity::getPoundlistId,poundlistEntity.getId()); + Receiptin_item0Entity receiptin_item0Entity = receiptin_item0Service.getOne(queryWrapper1); + if (ObjectUtils.isNotEmpty(receiptin_item0Entity)){ + Receiptin_item0Entity receiptin_item0EntityCopy = new Receiptin_item0Entity(); + BeanUtils.copyProperties(receiptin_item0Entity,receiptin_item0EntityCopy); + receiptin_item0Entity.setNum(entity.getSettlement()); + receiptin_item0Entity.setAmount(purchaseorder_item0Entity.getAmount()); + receiptin_item0Entity.setRateamount(purchaseorder_item0Entity.getAmount().subtract(purchaseorder_item0Entity.getNotAmount().setScale(2,BigDecimal.ROUND_HALF_UP))); + receiptin_item0Service.updateById(receiptin_item0Entity); + String receiptinItemId = RandomUtil.uuId(); + receiptin_item0EntityCopy.setId(receiptinItemId); + receiptin_item0EntityCopy.setPoundlistId(poundlistEntityCopy.getId()); + receiptin_item0EntityCopy.setNum(purchaseorder_item0EntityCopy.getSettlement()); + receiptin_item0EntityCopy.setAmount(purchaseorder_item0EntityCopy.getAmount()); + receiptin_item0EntityCopy.setRateamount(purchaseorder_item0EntityCopy.getAmount().subtract(purchaseorder_item0EntityCopy.getNotAmount().setScale(2,BigDecimal.ROUND_HALF_UP))); + receiptin_item0EntityCopy.setBatchno(generaterSwapUtil.getBillNumber("receiptin-num", false)); + receiptin_item0Service.save(receiptin_item0EntityCopy); + } + LambdaQueryWrapper queryWrapper2 = new LambdaQueryWrapper<>(); + queryWrapper2.eq(PaymentdocItem1Entity::getPoundlistId,poundlistEntity.getId()); + PaymentdocItem1Entity paymentdocItem1Entity = paymentdocItem1Service.getOne(queryWrapper2); + if (ObjectUtils.isNotEmpty(paymentdocItem1Entity)){ + PaymentdocItem1Entity paymentdocItem1EntityCopy = new PaymentdocItem1Entity(); + BeanUtils.copyProperties(paymentdocItem1Entity,paymentdocItem1EntityCopy); + String paymentItemId = RandomUtil.uuId(); + paymentdocItem1EntityCopy.setId(paymentItemId); + paymentdocItem1EntityCopy.setPoundlistId(poundlistEntityCopy.getId()); + paymentdocItem1Service.save(paymentdocItem1EntityCopy); + } + } + } + } + } /** * 创建 @@ -543,6 +667,7 @@ public class SaleorderitemController { } //先判断磅单是否开进项票 List Salesorder_item0List = JsonUtil.getJsonToList(saleorderitemCrForm.getSalesorder_item0List(),Salesorder_item0Entity.class); + for (Salesorder_item0Entity salesorder_item0Entity : Salesorder_item0List){ PoundlistEntity poundlistEntity = poundlistService.getInfo(salesorder_item0Entity.getPoundlistId()); if(ObjectUtils.isNotEmpty(poundlistEntity) && poundlistEntity.getPurchaseStatus() != null){ @@ -550,6 +675,16 @@ public class SaleorderitemController { return ActionResult.fail("存在磅单号为【磅单号-"+poundlistEntity.getPoundlistNo()+"】未开票或未入库"); } } + if(ObjectUtils.isNotEmpty(poundlistEntity) && poundlistEntity.getSettlement() != null){ + if (salesorder_item0Entity.getSettlement().compareTo(poundlistEntity.getSettlement()) > 0){ + VehicleEntity vehicleEntity = vehicleService.getById(poundlistEntity.getVehicleId()); + if (ObjectUtils.isNotEmpty(vehicleEntity)) { + return ActionResult.fail(vehicleEntity.getTicketno() + "结算重量最多只能为" + poundlistEntity.getSettlement()); + } + }else if (salesorder_item0Entity.getSettlement().compareTo(poundlistEntity.getSettlement()) < 0){ + settlement(Salesorder_item0List); + } + } } String mainId =RandomUtil.uuId(); UserInfo userInfo=userProvider.get(); @@ -1088,6 +1223,20 @@ public class SaleorderitemController { }else{ return ActionResult.fail("账期不存在,无法在此区间开展业务"); } + List Salesorder_item0List = JsonUtil.getJsonToList(saleorderitemUpForm.getSalesorder_item0List(),Salesorder_item0Entity.class); + for (Salesorder_item0Entity salesorder_item0Entity : Salesorder_item0List){ + PoundlistEntity poundlistEntity = poundlistService.getInfo(salesorder_item0Entity.getPoundlistId()); + if(ObjectUtils.isNotEmpty(poundlistEntity) && poundlistEntity.getSettlement() != null){ + if (salesorder_item0Entity.getSettlement().compareTo(poundlistEntity.getSettlement()) > 0){ + VehicleEntity vehicleEntity = vehicleService.getById(poundlistEntity.getVehicleId()); + if (ObjectUtils.isNotEmpty(vehicleEntity)) { + return ActionResult.fail(vehicleEntity.getTicketno() + "结算重量最多只能为" + poundlistEntity.getSettlement()); + } + }else if (salesorder_item0Entity.getSettlement().compareTo(poundlistEntity.getSettlement()) < 0){ + settlement(Salesorder_item0List); + } + } + } UserInfo userInfo=userProvider.get(); SaleorderitemEntity entity= saleorderitemService.getInfo(id); if(entity!=null){ @@ -1100,11 +1249,11 @@ public class SaleorderitemController { Salesorder_item0queryWrapper.lambda().eq(Salesorder_item0Entity::getSalesOrderId, entity.getId()); salesorder_item0Service.remove(Salesorder_item0queryWrapper); - List Salesorder_item0List = JsonUtil.getJsonToList(saleorderitemUpForm.getSalesorder_item0List(),Salesorder_item0Entity.class); for(Salesorder_item0Entity entitys : Salesorder_item0List){ if (entitys.getUnitPrice() != null && entitys.getPoundlistId() !=null) { PoundlistEntity poundlistEntity = new PoundlistEntity(); poundlistEntity.setSalesPrice(entitys.getUnitPrice()); + poundlistEntity.setSalesAmounts(entitys.getPrice()); poundlistEntity.setId(entitys.getPoundlistId()); poundlistService.updateById(poundlistEntity); } diff --git a/SC-web/src/views/scm/basicInformation/poundlist/salesForm.vue b/SC-web/src/views/scm/basicInformation/poundlist/salesForm.vue index 4cb69412..e56f7795 100644 --- a/SC-web/src/views/scm/basicInformation/poundlist/salesForm.vue +++ b/SC-web/src/views/scm/basicInformation/poundlist/salesForm.vue @@ -291,7 +291,7 @@ @@ -935,6 +935,34 @@ this.dataForm.price = price this.dataForm.notPrice = notPrice }, + editSettlement(row){ + var advanceAmount = 0 + var settlement = 0 + var price = 0 + var notPrice = 0 + var rate = 13 + this.taxRateOptions.forEach((item, index) => { + if (item.id == row.rate) { + rate = parseInt(item.fullName) + } + }) + this.dataForm.salesorder_item0List.forEach((item, index) => { + if (row.vehicleId == item.vehicleId) { + item.price = this.jnpf.floatMul(item.settlement, item.unitPrice).toFixed(2)//子表金额 + item.noPrice = this.jnpf.floatDiv(item.price, this.jnpf.floatAdd(1, this.jnpf.floatDiv(rate, 100))).toFixed(2)//子表不含税金额 + } + if (item.advance == '1') {//垫资 + advanceAmount = this.jnpf.floatAdd(advanceAmount, item.price)//垫资金额 + } + settlement = this.jnpf.floatAdd(settlement, item.settlement)//结算重量 + price = this.jnpf.floatAdd(price, item.price)//主表金额 + notPrice = this.jnpf.floatAdd(notPrice, item.noPrice)//主表不含税金额 + }) + this.dataForm.advanceAmount = advanceAmount + this.dataForm.num = settlement + this.dataForm.price = price + this.dataForm.notPrice = notPrice + }, getSummaries(param) { const { columns, data } = param const sums = [] diff --git a/SC-web/src/views/scm/basicInformation/saleorder/Form.vue b/SC-web/src/views/scm/basicInformation/saleorder/Form.vue index ed6150fb..2bb35b3a 100644 --- a/SC-web/src/views/scm/basicInformation/saleorder/Form.vue +++ b/SC-web/src/views/scm/basicInformation/saleorder/Form.vue @@ -228,7 +228,7 @@ @@ -846,7 +846,6 @@ this.dataForm.notPrice = notPrice }, editUnitPrice(row) { - debugger var advanceAmount = 0; var price = 0; var notPrice = 0; @@ -860,10 +859,10 @@ }) } item.price = this.jnpf.floatMul(item.unitPrice,item.settlement);//子表金额 - debugger this.taxRateOptions.forEach((item2) => { if (item2.id == row.rate) { - item.noPrice = this.jnpf.floatDiv(this.jnpf.floatMul(item.price,(this.jnpf.floatSub(100,item2.fullName))), 100);//子表不含税金额 + // item.noPrice = this.jnpf.floatDiv(this.jnpf.floatMul(item.price,(this.jnpf.floatSub(100,item2.fullName))), 100);//子表不含税金额 + item.noPrice = this.jnpf.floatDiv(item.price,this.jnpf.floatAdd(1, this.jnpf.floatDiv(item2.fullName, 100))).toFixed(2);//子表不含税金额 } }); } @@ -895,6 +894,34 @@ // }) // }) }, + editSettlement(row){ + var advanceAmount = 0 + var settlement = 0 + var price = 0 + var notPrice = 0 + var rate = 13 + this.taxRateOptions.forEach((item, index) => { + if (item.id == row.rate) { + rate = parseInt(item.fullName) + } + }) + this.dataForm.salesorder_item0List.forEach((item, index) => { + if (row.vehicleId == item.vehicleId) { + item.price = this.jnpf.floatMul(item.settlement, item.unitPrice).toFixed(2)//子表金额 + item.noPrice = this.jnpf.floatDiv(item.price, this.jnpf.floatAdd(1, this.jnpf.floatDiv(rate, 100))).toFixed(2)//子表不含税金额 + } + if (item.advance == '1') {//垫资 + advanceAmount = this.jnpf.floatAdd(advanceAmount, item.price)//垫资金额 + } + settlement = this.jnpf.floatAdd(settlement, item.settlement)//结算重量 + price = this.jnpf.floatAdd(price, item.price)//主表金额 + notPrice = this.jnpf.floatAdd(notPrice, item.noPrice)//主表不含税金额 + }) + this.dataForm.advanceAmount = advanceAmount + this.dataForm.num = settlement + this.dataForm.price = price + this.dataForm.notPrice = notPrice + }, computeNoPrice() { let notPrice = 0; for (let i = 0; i < this.dataForm.salesorder_item0List.length; i++) {