Parcourir la source

Merge branch 'master' of http://git.huaml.com/zhh/huahuibao

林琦海 il y a 5 ans
Parent
commit
211bf05680

+ 1 - 0
app-hd/controllers/PurchaseClearController.php

@@ -17,6 +17,7 @@ class PurchaseClearController extends BaseController
     {
         $post = Yii::$app->request->post();
         $current = time();
+        //查找还有没待清算的订单
         $list = PurchaseClearClass::getAllByCondition(['shopId' => $this->shopId, 'status' => PurchaseClearClass::STATUS_AWAIT_PAY], null, '*', null, true);
         if (!empty($list)) {
             foreach ($list as $item) {

+ 95 - 77
biz-ghs/order/classes/OrderClearClass.php

@@ -3,91 +3,109 @@
 namespace bizGhs\order\classes;
 
 use biz\ghs\classes\GhsClass;
-use bizGhs\product\classes\ProductClass;
-use biz\sj\classes\MerchantAssetClass;
-use bizGhs\admin\classes\AdminClass;
 use bizGhs\custom\classes\CustomClass;
-use bizGhs\stat\classes\StatOrderCountClass;
 use common\components\orderSn;
-use common\components\stringUtil;
 use common\components\util;
-use Yii;
 use bizGhs\base\classes\BaseClass;
 use bizHd\purchase\classes\PurchaseClass;
 use bizHd\purchase\classes\PurchaseClearClass;
 
 class OrderClearClass extends BaseClass
 {
-	
-	public static $baseFile = '\bizGhs\order\models\OrderClear';
-	
-	//订单结算 ssh 2021.3.14
-	public static function clear($post, $idText, $sjId)
-	{
-		$customId = $post['customId'];
-		$data = json_decode($idText, true);
-		$ids = array_column($data, 'id');
-		if (empty($ids)) {
-			util::fail('请选择交易记录');
-		}
-		$list = OrderClass::getByIds($ids);
-		if (empty($list)) {
-			util::fail('请选择订单');
-		}
-		$amount = 0;
-		foreach ($list as $key => $val) {
-			if ($val['merchantId'] != $sjId) {
-				util::fail('只能结算自己的订单单哦');
-			}
-			if ($val['debt'] == 0) {
-				util::fail('有订单已经结算过了');
-			}
-			if ($val['customId'] != $customId) {
-				util::fail('每次只能结算一个客户的订单');
-			}
-			$amount = bcadd($amount, $val['actPrice'], 2);
-		}
-		$custom = CustomClass::getCustom($customId);
-		$debtAmount = $custom['debtAmount'] ?? 0.00;
-		if ($debtAmount < $amount) {
-			util::fail('客户欠款金额有问题');
-		}
-		$remain = bcsub($debtAmount, $amount, 2);
-		$updateData = [
-			'debtAmount' => $remain,
-			'debtNum' => bcsub($custom['debtNum'], count($list)),
-		];
-		if ($remain == 0.00) {
-			$updateData['isDebt'] = 0;
-		}
-		CustomClass::updateById($customId, $updateData);
-		$orderSn = orderSn::getPurchaseClearSn();
-		$clearData = [
-			'prePrice' => $amount,
-			'actPrice' => $amount,
-			'ghsId' => $custom['ghsId'],
-			'ghsShopAdminId' => $post['ghsShopAdminId'],
-			'ghsShopAdminName' => $post['ghsShopAdminName'],
-			'sjId' => $sjId,
-			'orderSn' => $orderSn,
-			'saleIds' => implode(',', $ids),
-			'status' => 2,
-			'type' => 2,
-			'customId' => $customId,
-			'deadline' => date("Y-m-d H:i:s"),
-		];
-		$return = PurchaseClearClass::add($clearData);
-		$clearId = $return['id'];
-		// 供货商状态修改
-		OrderClass::updateByIds($ids, ['debt' => 0, 'clearId' => $clearId]);
-		// 采购商状态修改
-		PurchaseClass::updateByIds(array_column($list, 'purchaseId'), ['debt' => 2, 'clearId' => $clearId]);
-        //供货商欠款变更
-        GhsClass::counters(['debtAmount' => -$amount, 'debtNum' => -count($list)], ['id' => $custom['ghsId']]);
-        // 更新欠款状态
-        GhsClass::updateByCondition([
-            'id' => $custom['ghsId'],
-            'debtAmount' => '0.00'
-        ], ['debt' => 1]);
+
+    public static $baseFile = '\bizGhs\order\models\OrderClear';
+
+    //订单结算 ssh 2021.3.14
+    public static function clear($post, $idText, $sjId)
+    {
+        $customId = $post['customId'];
+        $data = json_decode($idText, true);
+        $ids = array_column($data, 'id');
+        if (empty($ids)) {
+            util::fail('请选择交易记录');
+        }
+        $list = OrderClass::getByIds($ids);
+        if (empty($list)) {
+            util::fail('请选择订单');
+        }
+        $amount = 0;
+        $purchaseArr = [];
+        foreach ($list as $key => $val) {
+            if ($val['merchantId'] != $sjId) {
+                util::fail('只能结算自己的订单单哦');
+            }
+            if ($val['debt'] == 0) {
+                util::fail('有订单已经结算过了');
+            }
+            if ($val['customId'] != $customId) {
+                util::fail('每次只能结算一个客户的订单');
+            }
+            $amount = bcadd($amount, $val['actPrice'], 2);
+            $purchaseId = $val['purchaseId'] ?? 0;
+            if (!empty($purchaseId)) {
+                $purchaseArr[] = $purchaseId;
+            }
+        }
+        $purchaseString = '';
+        if (!empty($purchaseArr)) {
+            $purchaseString = implode(',', $purchaseArr);
+        }
+
+        $custom = CustomClass::getLockById($customId);
+        if (empty($custom)) {
+            util::fail('没有找到客户');
+        }
+        $debtAmount = $custom->debtAmount ?? 0.00;
+        if ($debtAmount < $amount) {
+            util::fail('客户欠款金额有问题');
+        }
+        $remain = bcsub($debtAmount, $amount, 2);
+        $num = bcsub($custom->debtNum, count($list));
+        $isDebt = 1;
+        if ($remain == 0.00) {
+            $isDebt = 0;
+        }
+        //客户资产变更
+        $custom->isDebt = $isDebt;
+        $custom->debtAmount = $remain;
+        $custom->debtNum = $num;
+        $custom->save();
+
+        $orderSn = orderSn::getPurchaseClearSn();
+        $clearData = [
+            'prePrice' => $amount,
+            'actPrice' => $amount,
+            'ghsId' => $custom->ghsId,
+            'ghsShopAdminId' => $post['ghsShopAdminId'],
+            'ghsShopAdminName' => $post['ghsShopAdminName'],
+            'sjId' => $sjId,
+            'orderSn' => $orderSn,
+            'saleIds' => implode(',', $ids),
+            'status' => 2,
+            'type' => 2,
+            'customId' => $customId,
+            'deadline' => date("Y-m-d H:i:s"),
+            'purchaseIds' => $purchaseString,
+        ];
+        $return = PurchaseClearClass::add($clearData);
+        $clearId = $return['id'];
+
+        // 销售单状态变更
+        OrderClass::updateByIds($ids, ['debt' => 0, 'clearId' => $clearId]);
+        // 采购单状态变更
+        PurchaseClass::updateByIds($purchaseArr, ['debt' => 2, 'clearId' => $clearId]);
+
+        $ghsId = $custom->ghsId;
+        $ghs = GhsClass::getLockById($ghsId);
+        if (empty($ghs)) {
+            util::fail('没有找到供货商');
+        }
+        $remainAmount = bcsub($ghs->debtAmount, $amount, 2);
+        $num = bcsub($ghs->debtNum, count($list));
+        $ghs->debtAmount = $remainAmount;
+        $ghs->debtNum = $num;
+        $ghs->debt = $remainAmount > 0 ? 2 : 1;
+        $ghs->save();
     }
+
 }

+ 34 - 23
biz-hd/purchase/classes/PurchaseClearClass.php

@@ -5,11 +5,9 @@ namespace bizHd\purchase\classes;
 use biz\ghs\classes\GhsClass;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\order\classes\OrderClass;
-use bizGhs\order\classes\OrderClearClass;
 use bizHd\base\classes\BaseClass;
 use common\components\orderSn;
 use common\components\util;
-use OrderModel;
 use Yii;
 
 class PurchaseClearClass extends BaseClass
@@ -34,12 +32,21 @@ class PurchaseClearClass extends BaseClass
             util::fail('请选择采购单');
         }
         $totalPrice = 0;
+        $currentGhsId = $data['ghsId'] ?? 0;
+        $saleArr = [];
         foreach ($purchaseList as $purchase) {
             if ($purchase->debt != PurchaseClass::DEBT_YES) {
                 util::fail('请选择有欠款的采购单');
             }
+            if ($purchase->ghsId != $currentGhsId) {
+                util::fail('请选择同个供货商的订单');
+            }
             $totalPrice = bcadd($totalPrice, $purchase->actPrice, 2);
+            $saleId = $purchase->saleId;
+            $saleArr[] = $saleId;
         }
+        $saleString = implode(',', $saleArr);
+        $data['saleIds'] = $saleString;
         $data['actPrice'] = $totalPrice;
         $data['prePrice'] = $totalPrice;
         $data['orderSn'] = $orderSn;
@@ -82,15 +89,18 @@ class PurchaseClearClass extends BaseClass
         $purchaseIds = $order->purchaseIds;
         $arr = explode(',', $purchaseIds);
 
-        //供货商欠款变更
+        //供货商欠款变更
         $ghsId = $order->ghsId;
-        $ghs = GhsClass::getById($ghsId, true);
-        $ghs->debtAmount = bcsub($ghs->debtAmount, $order->actPrice, 2);
+        $ghs = GhsClass::getLockById($ghsId);
+        if (empty($ghs)) {
+            util::fail('没有找到供货商信息');
+        }
+        $currentAmount = bcsub($ghs->debtAmount, $order->actPrice, 2);
+        $ghs->debtAmount = $currentAmount;
         $ghs->debtNum -= count($arr);
-        $ghs->debt = $ghs->debtAmount > 0 ? 2 : 1;
+        $ghs->debt = $currentAmount > 0 ? 2 : 1;
         $ghs->save();
 
-
         if (empty($arr)) {
             $msg = "结算订单 orderSn:{$orderSn} 支付成功,回调处理,没有找到采购订单";
             util::fail($msg);
@@ -100,28 +110,29 @@ class PurchaseClearClass extends BaseClass
             $msg = "结算订单 orderSn:{$orderSn} 支付成功,回调处理,没有找到采购订单!";
             util::fail($msg);
         }
-        // 供货商销售id
+        //采购单状态变更
         $saleIds = [];
-        //采购单状态变化
         foreach ($list as $purchase) {
-            $purchase->debt = 2;
+            $purchase->debt = PurchaseClass::DEBT_NO;
             $purchase->payWay = $payWay;
             $purchase->clearId = $clearId;
             $purchase->save();
-
             $saleIds[] = $purchase->saleId;
         }
-        // 供货商状态变化
-        OrderClass::updateByIds($saleIds, ['debt' => 0, 'payWay' => $payWay, 'clearId' => $clearId]);
-        // 采购商欠款信息变化
-        CustomClass::counters([
-            'debtAmount' => -$order->actPrice,
-            'debtNum' => -count($list)
-        ], ['id' => $ghs->customId]);
-        // 更新欠款状态
-        CustomClass::updateByCondition([
-            'id' => $ghs->customId,
-            'debtAmount' => '0.00'
-        ], ['isDebt' => 0]);
+
+        //销售单状态变化
+        OrderClass::updateByIds($saleIds, ['debt' => OrderClass::DEBT_NO, 'clearId' => $clearId]);
+
+        //客户欠款变化
+        $customId = $ghs->customId;
+        $custom = CustomClass::getLockById($customId);
+        if (empty($custom)) {
+            util::fail('没有找到客户信息');
+        }
+        $remain = bcsub($custom->debtAmount, $order->actPrice, 2);
+        $custom->debtAmount = $remain;
+        $custom->debtNum -= count($arr);
+        $custom->isDebt = $remain > 0 ? 1 : 0;
+        $custom->save();
     }
 }

+ 0 - 1
biz-hd/purchase/services/PurchaseService.php

@@ -5,7 +5,6 @@ namespace bizHd\purchase\services;
 use biz\ghs\models\Ghs;
 use biz\shop\classes\ShopCouponClass;
 use biz\shop\models\Shop;
-use biz\shop\models\ShopCoupon;
 use bizGhs\custom\classes\CustomClass;
 use bizGhs\order\classes\OrderClass;
 use bizGhs\order\services\OrderService;

+ 1 - 1
common/components/payUtil.php

@@ -29,7 +29,7 @@ class payUtil
                     PurchaseService::thirdPay($payWay, $orderSn, $totalFee, $attach);
                     break;
                 case dict::getDict('capitalType', 'hdPurchaseClear', 'id'):
-                    //零售采购订单结
+                    //零售采购订单结清欠款
                     PurchaseClearClass::thirdPay($payWay, $orderSn, $totalFee, $attach);
                     break;
                 case dict::getDict('capitalType', 'xhOrder', 'id'):