diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java index 657e863..e92a997 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempController.java @@ -106,9 +106,9 @@ public class OrderTempController extends BaseController { String invoice_code = get("invoice_code"); String memo = get("memo"); String printer = get("printer", Enums.PrinterIdEnum.printer1.name()); - int req_receipt = getInt("req_receipt", 0); // 是否需要发票,0 默认不需要,1需要 +// int req_receipt = getInt("req_receipt", 0); // 是否需要发票,0 默认不需要,1需要 - renderJson(OrderTempSyncService.me.payordercluster(uuid, transport_id, ordercluster_id, invoice_number, invoice_code, memo, printer, tokenuser, req_receipt)); + renderJson(OrderTempSyncService.me.payordercluster(uuid, transport_id, ordercluster_id, invoice_number, invoice_code, memo, printer, tokenuser)); } @Before(OrderTempPrepayValidator.class) diff --git a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java index a9df062..f89b6e9 100644 --- a/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java +++ b/ssjygl-xsx-local/src/main/java/com/cowr/local/ssjygl/order/ordertemp/OrderTempSyncService.java @@ -224,8 +224,7 @@ public class OrderTempSyncService { String invoice_code, String memo, String printerId, - Sysuser sysuser, - int req_receipt + Sysuser sysuser ) { OrderTemp order = new OrderTemp(); @@ -259,11 +258,6 @@ public class OrderTempSyncService { return Result.failedstr("毛重 %.2f 吨,不能超过 %s 吨", transport.getSecondWeight(), Config.configprop.getInt("weigh.max")); } - InvoiceReceive receive = InvoiceReceiveService.me.checkReceive(transport.getSupermarketId(), invoice_number, invoice_code); - if (receive == null) { - return Result.failed("没有有效的发票领用记录,或者发票已经被使用"); - } - BigDecimal net_weight = transport.getSecondWeight().subtract(transport.getFirstWeight()); // 销售的用第二次减第一次 OrderclusterTruck ot = OrderclusterTruck.dao.findFirst("select * from ordercluster_truck t \n" + @@ -302,14 +296,27 @@ public class OrderTempSyncService { return Result.failedstr("未查到有效的单价信息"); } + InvoiceReceive receive = null; + + // 零散客户需要开具发票的,需要检查是否有有效的领用记录 + if (ordercluster.getReqReceipt() == 1) { + receive = InvoiceReceiveService.me.checkReceive(transport.getSupermarketId(), invoice_number, invoice_code); + + if (receive == null) { + return Result.failed("没有有效的发票领用记录,或者发票已经被使用"); + } + + order.setInvoiceCode(invoice_code); + order.setInvoiceNumber(invoice_number); + + order.setInvoiceType(1); // 需要开发票的,都是冠名发票 + } else { + order.setInvoiceType(2); // 不需要开发票的,都是要专票的 + } + Date now = new Date(); SyncTask synctask = new SyncTask(); -// if (req_receipt == 1) { // 需要同时开具发票 - order.setInvoiceCode(invoice_code); - order.setInvoiceNumber(invoice_number); -// } - order.setTransportId(transport.getId()); order.setSupermarketId(transport.getSupermarketId()); order.setTruckLicense(transport.getTruckLicense()); @@ -381,6 +388,7 @@ public class OrderTempSyncService { transport.setArriveTime(now); transport.setType(OrderTypeEnum.TEMP.getTypeid()); + InvoiceReceive finalReceive = receive; boolean ret = Db.tx(new IAtom() { @Override public boolean run() { @@ -420,40 +428,40 @@ public class OrderTempSyncService { return false; } -// if (req_receipt == 1) { // 需要同时开具发票 - // 这里的 finalReceive 在前面肯定验证过了 - receive.setSurplus(receive.getSurplus() - 1); - receive.setCurrentCode(invoice_code); + if (ordercluster.getReqReceipt() == 1) { // 需要同时开具发票 + // 这里的 finalReceive 在前面肯定验证过了 + finalReceive.setSurplus(finalReceive.getSurplus() - 1); + finalReceive.setCurrentCode(invoice_code); - ret = receive.update(); + ret = finalReceive.update(); - if (!ret) { - log.error("发票领用信息更新失败", invoice_code); - return false; + if (!ret) { + log.error("发票领用信息更新失败", invoice_code); + return false; + } + + InvoiceLog invoiceLog = new InvoiceLog(); + invoiceLog.setId(StrKit.getRandomUUID()); + invoiceLog.setInvoiceReceiveId(finalReceive.getId()); + invoiceLog.setCode(invoice_code); + invoiceLog.setInvoiceNumber(invoice_number); + invoiceLog.setState(OrderStateEnum.RECEIVED.getStateid()); + invoiceLog.setSettlementTime(now); + invoiceLog.setSettlementUserId(order.getSettlementUserId()); // 发票使用人 + invoiceLog.setSettlementUserName(order.getSettlementUserName()); + invoiceLog.setOrderSn(order.getSn()); + invoiceLog.setType(OrderTypeEnum.TEMP.getTypeid()); + + ret = invoiceLog.save(); + + if (!ret) { + return false; + } + + synctask.addSaveData(invoiceLog); + synctask.addUpdateData(finalReceive); } - InvoiceLog invoiceLog = new InvoiceLog(); - invoiceLog.setId(StrKit.getRandomUUID()); - invoiceLog.setInvoiceReceiveId(receive.getId()); - invoiceLog.setCode(invoice_code); - invoiceLog.setInvoiceNumber(invoice_number); - invoiceLog.setState(OrderStateEnum.RECEIVED.getStateid()); - invoiceLog.setSettlementTime(now); - invoiceLog.setSettlementUserId(order.getSettlementUserId()); // 发票使用人 - invoiceLog.setSettlementUserName(order.getSettlementUserName()); - invoiceLog.setOrderSn(order.getSn()); - invoiceLog.setType(OrderTypeEnum.TEMP.getTypeid()); - - ret = invoiceLog.save(); - - if (!ret) { - return false; - } - - synctask.addSaveData(invoiceLog); - synctask.addUpdateData(receive); -// } - // 在这里更新sn字段之后存入 synctask.addSaveData(order); synctask.addUpdateData(transport); @@ -573,7 +581,8 @@ public class OrderTempSyncService { InvoiceReceive receive = null; // 2020-09-29 需要开具专票的,先开具结算单,不打发票 - if (CliCacheData.SUP.getInvoiceType() == 2 && customer.getInvoiceType() == 2) { + // 2020-10-12 所有超市都可以开结算单 + if ( customer.getInvoiceType() == 2) { order.setInvoiceType(2); // 需要专票的,在结算开了专票之后,再修改 invoice_site 字段 } else {