Browse Source

调整结算页发票选择的逻辑

hulh 8 years ago
parent
commit
297fce8afb

+ 40 - 22
src/main/java/com/uas/platform/b2c/trade/order/service/impl/OrderServiceImpl.java

@@ -800,28 +800,6 @@ public class OrderServiceImpl implements OrderService {
                 throw new IllegalOperatorException("对应的店铺的信息不存在");
             }
             or.setStoreid(storeid);
-            if (sysConf.getStoreid().equals(storeid)){ //如果是寄售类型的订单
-                if (or.getInvoiceid() != null && or.getInvoicetype() == Type.Bill_NoDeduct.value()){ //发票为普票
-                    //将普票类型修改为专票
-                    List<Bill> billOne;
-                    if (SystemSession.getUser().getEnterprise() != null){
-                        billOne = billDao.getBillByUseruuAndEnuuAndKind(SystemSession.getUser().getUserUU(),
-                                SystemSession.getUser().getEnterprise().getUu(), Type.Bill_Deduct.value());
-                    }else {
-                        billOne = billDao.getBillByUseruuAndDissociativeAndKind(SystemSession.getUser().getUserUU(),
-                                Type.PERSONAL.value(), Type.Bill_Deduct.value());
-                    }
-                    if (CollectionUtils.isEmpty(billOne)){
-                        throw new IllegalOperatorException("对应专用发票信息不存在,请完善后重试");
-                    }else {
-                        Bill bill = billOne.get(0);
-                        or.setInvoicetype(Type.Bill_Deduct.value());
-                        or.setInvoiceid(bill.getId());
-                        or.setInvoicetitle(bill.getHead());
-                        or.setInvoiceAddress(FastjsonUtils.toJson(bill));
-                    }
-                }
-            }
             or.setStoreName(storeIn.getStoreName());
             or.setSellerenuu(storeIn.getEnUU());
             Enterprise enterprise = enterpriseDao.findByUu(storeIn.getEnUU());
@@ -834,6 +812,7 @@ public class OrderServiceImpl implements OrderService {
             or.setSellCompanyArea(enterprise.getEnArea());
             or.setSellCompanyAddress(enterprise.getEnAddress());
             or.setOrderDetails(newOrderDetails);
+            updateOrderBill(or);
             or.setOrderid(createNumberService.generateOrderNumber(EncodingRulesConstant.ORDER, "trade$order", 8));
             orders.add(or);
         }
@@ -847,6 +826,45 @@ public class OrderServiceImpl implements OrderService {
         return ResultMap.success(orderList);
     }
 
+    /**
+     * 调整订单的发票类型
+     * 寄售类型,若选择普票(没有专票信息,修改为不开票。有则修改成专票)
+     * @param order
+     */
+    public void updateOrderBill(Order order){
+        if (sysConf.getStoreid().equals(order.getStoreid())){ //如果是寄售类型的订单
+            if (order.getInvoiceid() != null && order.getInvoicetype() == Type.Bill_NoDeduct.value()){ //发票为普票
+                //将普票类型修改为专票
+                List<Bill> billOne;
+                if (SystemSession.getUser().getEnterprise() != null){
+                    billOne = billDao.getBillByUseruuAndEnuuAndKind(SystemSession.getUser().getUserUU(),
+                            SystemSession.getUser().getEnterprise().getUu(), Type.Bill_Deduct.value());
+                }else {
+                    billOne = billDao.getBillByUseruuAndDissociativeAndKind(SystemSession.getUser().getUserUU(),
+                            Type.PERSONAL.value(), Type.Bill_Deduct.value());
+                }
+                if (CollectionUtils.isEmpty(billOne)){
+                    //没有专票信息,则修改成暂不开票
+                    order.setInvoicetype(Type.Bill_No.value());
+                    order.setInvoiceid(null);
+                    order.setInvoicetitle(null);
+                    order.setInvoiceAddress(null);
+                    order.setVatBillStatus(Status.NEEDNO_BILL.value()); // 不需要开票
+                    Set<OrderDetail> orderDetails = order.getOrderDetails();
+                    for (OrderDetail orderDetail : orderDetails) {
+                        orderDetail.setBillStatus(Status.NEEDNO_BILL.value());
+                    }
+                }else {
+                    Bill bill = billOne.get(0);
+                    order.setInvoicetype(Type.Bill_Deduct.value());
+                    order.setInvoiceid(bill.getId());
+                    order.setInvoicetitle(bill.getHead());
+                    order.setInvoiceAddress(FastjsonUtils.toJson(bill));
+                }
+            }
+        }
+    }
+
     /**
      * <h1>将orderInfos的信息封装进Order的List集合中,便于操作。</h1>
      *

+ 17 - 7
src/main/webapp/resources/js/usercenter/controllers/forstore/order_pay_ctrl.js

@@ -473,12 +473,18 @@ define(['app/app'], function(app) {
 			$scope.showBillFrame = false;
 		};
 
+		$scope.perfectLater = function () {
+			$scope.showBillFrame = false;
+			$scope.imperfect = true;
+		};
+
 		$scope.goToBillPage = function () {
 			$scope.showBillFrame = false;
-			window.open("user#/invoice");
+			window.open("user#/invoice", '_self');
 		};
 
 		//确认付款
+		$scope.imperfect = false;//暂不完善
 		$scope.confirmPay = function() {
 			if($scope.order.status == 502 || $scope.order.status == 503) {
 				var arr = [];
@@ -506,17 +512,21 @@ define(['app/app'], function(app) {
 				toaster.pop("info", "请选择一个自提点");
 				return ;
 			}
-			var validBill = checkBill();
-			if (!validBill){
-				// toaster.pop('info', '请完善专票信息');
-				$scope.showBillFrame = true;
-				return ;
-			}
 			var orderInfos = [], orderInfo;
 			orderInfo = generateOrderInfo();
 			if(orderInfo == null) {
 				return ;
 			}
+			if(!$scope.imperfect){
+				var validBill = checkBill();
+				if (!validBill){
+					// toaster.pop('info', '请完善专票信息');
+					$scope.showBillFrame = true;
+					return ;
+				}
+			}
+			console.log("可以付款了");
+			return;
 			orderInfos.push(orderInfo);
 
 			Order.ensure({orderid: enIdFilter($scope.order.orderid)}, orderInfos, function(data){

+ 2 - 2
src/main/webapp/resources/view/usercenter/forstore/order_pay.html

@@ -887,8 +887,8 @@
 			<a ng-click="cancelFrame()"><i style="font-size: 20px" class="fa fa-close fa-lg" aria-hidden="true"></i></a>
 		</div>
 		<div class="company-name">
-			<p>您还未填写&nbsp;<a target="_blank" ng-click="goToBillPage()">增值税专票信息</a>&nbsp;,请进行完善,否则无法进行付款</p>
-			<P>前往买家&nbsp;<a target="_blank" ng-click="goToBillPage()" class="send">发票管理&nbsp;<i class="fa fa-arrow-right"></i></a></P>
+			<p>您还未填写&nbsp;<a ng-click="goToBillPage()">增值税专票信息</a>&nbsp;,请进行完善,否则无法开具寄售产品发票</p>
+			<P><button class="btn" ng-click="perfectLater()" style="background: #5078cb;border-radius:0px;color:#fff;">暂不完善</button>&nbsp;<a ng-click="goToBillPage()" class="send">立刻完善&nbsp;<i class="fa fa-arrow-right"></i></a></P>
 		</div>
 	</div>
 </div>