lisai17@sina.com 2020-10-12 21:49:35 +08:00
parent 368c0dce7f
commit 1351b0f357
2 changed files with 54 additions and 45 deletions

View File

@ -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)

View File

@ -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 {