shish пре 5 година
родитељ
комит
4b3070002d
4 измењених фајлова са 237 додато и 174 уклоњено
  1. 22 17
      app/ghs/controllers/OrderClearController.php
  2. 54 20
      biz-ghs/order/classes/OrderClearClass.php
  3. 153 136
      common/components/orderSn.php
  4. 8 1
      sql.sql

+ 22 - 17
app/ghs/controllers/OrderClearController.php

@@ -8,21 +8,26 @@ use common\components\util;
 
 class OrderClearController extends BaseController
 {
-
-    //收款 shish 2021.2.4
-    public function actionClear()
-    {
-        $id = Yii::$app->request->post('id');
-        if (empty($id)) {
-            util::fail('请选择交易记录');
-        }
-        $data = json_decode($id, true);
-        $ids = array_column($data, 'id');
-        if (empty($ids)) {
-            util::fail('请选择交易记录');
-        }
-        OrderClearClass::clear($ids, $this->sjId);
-        util::complete();
-    }
-
+	
+	//收款 shish 2021.2.4
+	public function actionClear()
+	{
+		$id = Yii::$app->request->post('id');
+		$customId = Yii::$app->request->post('customId');
+		if (empty($id)) {
+			util::fail('请选择交易记录');
+		}
+		$connection = Yii::$app->db;
+		$transaction = $connection->beginTransaction();
+		try {
+			OrderClearClass::clear($customId, $id, $this->sjId);
+			$transaction->commit();
+		} catch (\Exception $exception) {
+			$transaction->rollBack();
+			Yii::info("批量收款失败:" . $exception->getMessage());
+			util::fail('操作失败');
+		}
+		util::complete();
+	}
+	
 }

+ 54 - 20
biz-ghs/order/classes/OrderClearClass.php

@@ -15,24 +15,58 @@ use bizGhs\base\classes\BaseClass;
 
 class OrderClearClass extends BaseClass
 {
+	
+	public static $baseFile = '\bizGhs\order\models\OrderClear';
+	
+	//订单结算 shish 2021.3.14
+	public static function clear($customId, $idText, $sjId)
+	{
+		$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];
+		if ($remain == 0.00) {
+			$updateData['isDebt'] = 0;
+		}
+		CustomClass::updateById($customId, $updateData);
+		$orderSn = orderSn::getGhsOrderClearSn();
+		$clearData = [
+			'prePrice' => $amount,
+			'actPrice' => $amount,
+			'sjId' => $sjId,
+			'orderSn' => $orderSn,
+			'orderText' => $idText,
+			'clearType' => 2,
+			'customId' => $customId,
+		];
+		$return = self::add($clearData);
+		$clearId = $return['id'];
+		OrderClass::updateByIds($ids, ['debt' => 0, 'clearId' => $clearId]);
+	}
 
-    public static $baseFile = '\bizGhs\order\models\OrderClear';
-
-    //订单结算 shish 2021.3.14
-    public static function clear($ids, $sjId)
-    {
-        $list = OrderClass::getByIds($ids);
-        if (empty($list)) {
-            util::fail('请选择订单');
-        }
-        foreach ($list as $key => $val) {
-            if ($val['merchantId'] != $sjId) {
-                util::fail('只能结算自己的订单单哦');
-            }
-            if ($val['debt'] != 1) {
-                util::fail('您有订单已经结算过了');
-            }
-        }
-    }
-
-}
+}

+ 153 - 136
common/components/orderSn.php

@@ -2,6 +2,7 @@
 
 namespace common\components;
 
+use bizGhs\order\classes\OrderClass;
 use bizHd\purchase\classes\PurchaseClearSnClass;
 use biz\recharge\classes\RechargeSnClass;
 use bizGhs\check\classes\CheckSnClass;
@@ -13,140 +14,156 @@ use yii\imagine\Image;
 //订单号生成 shish 2021.1.19
 class orderSn
 {
-
-    //供货商订单号生成 shish 2021.1.19
-    public static function getGhsOrderSn()
-    {
-        $prefix = 'XSD_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'XSD';
-        }
-        $respond = OrderSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('订单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //零售商订单号生成 shish 2021.1.19
-    public static function getOrderSn()
-    {
-        $prefix = 'KD_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'KD';
-        }
-        $respond = \bizHd\order\classes\OrderSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('订单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //供货商采购单号 shish 2021.1.19
-    public static function getGhsPurchaseSn()
-    {
-        $prefix = 'PH_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'PH';
-        }
-        $respond = PurchaseSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('采购单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //供货商盘点单号 shish 2021.1.19
-    public static function getGhsCheckSn()
-    {
-        $prefix = 'PD_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'PD';
-        }
-        $respond = CheckSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('盘点单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //零售商采购单号 shish 2021.1.19
-    public static function getPurchaseSn()
-    {
-        $prefix = 'CG_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'CG';
-        }
-        $respond = \bizHd\purchase\classes\PurchaseSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('采购单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //零售商采购单号 shish 2021.1.19
-    public static function getPurchaseClearSn()
-    {
-        $prefix = 'PC_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'PC';
-        }
-        $respond = PurchaseClearSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //供货商入库订单号 linqh 2021.1.23
-    public static function getGhsStockInSn()
-    {
-        $prefix = 'RK_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'RK';
-        }
-        $respond = \bizGhs\order\classes\StockInSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('入库单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //供货商出库订单号 linqh 2021.1.23
-    public static function getGhsStockOutSn()
-    {
-        $prefix = 'CK_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'CK';
-        }
-        $respond = \bizGhs\order\classes\StockOutSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('出库单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
-    //充值单号 shish 2021.2.20
-    public static function getRechargeSn()
-    {
-        $prefix = 'CZ_CS';
-        if (getenv('YII_ENV', 'local') == 'production') {
-            $prefix = 'CZ';
-        }
-        $respond = RechargeSnClass::add(['id' => null]);
-        $id = $respond['id'] ?? 0;
-        if (empty($id)) {
-            util::fail('充值单号没有生成');
-        }
-        return $prefix . $id;
-    }
-
+	
+	//供货商订单号生成 shish 2021.1.19
+	public static function getGhsOrderSn()
+	{
+		$prefix = 'XSD_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'XSD';
+		}
+		$respond = OrderSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('订单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//零售商订单号生成 shish 2021.1.19
+	public static function getOrderSn()
+	{
+		$prefix = 'KD_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'KD';
+		}
+		$respond = \bizHd\order\classes\OrderSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('订单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//供货商采购单号 shish 2021.1.19
+	public static function getGhsPurchaseSn()
+	{
+		$prefix = 'PH_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'PH';
+		}
+		$respond = PurchaseSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('采购单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//供货商盘点单号 shish 2021.1.19
+	public static function getGhsCheckSn()
+	{
+		$prefix = 'PD_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'PD';
+		}
+		$respond = CheckSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('盘点单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//零售商采购单号 shish 2021.1.19
+	public static function getPurchaseSn()
+	{
+		$prefix = 'CG_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'CG';
+		}
+		$respond = \bizHd\purchase\classes\PurchaseSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('采购单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//零售商采购单号 shish 2021.1.19
+	public static function getPurchaseClearSn()
+	{
+		$prefix = 'PC_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'PC';
+		}
+		$respond = PurchaseClearSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//供货商入库订单号 linqh 2021.1.23
+	public static function getGhsStockInSn()
+	{
+		$prefix = 'RK_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'RK';
+		}
+		$respond = \bizGhs\order\classes\StockInSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('入库单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//供货商出库订单号 linqh 2021.1.23
+	public static function getGhsStockOutSn()
+	{
+		$prefix = 'CK_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'CK';
+		}
+		$respond = \bizGhs\order\classes\StockOutSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('出库单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//充值单号 shish 2021.2.20
+	public static function getRechargeSn()
+	{
+		$prefix = 'CZ_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'CZ';
+		}
+		$respond = RechargeSnClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('充值单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
+	//供货商批量结算订单号 shish 2021.3.15
+	public static function getGhsOrderClearSn()
+	{
+		// BOC batchOrderClear
+		$prefix = 'BOC_CS';
+		if (getenv('YII_ENV', 'local') == 'production') {
+			$prefix = 'BOC';
+		}
+		$respond = OrderClass::add(['id' => null]);
+		$id = $respond['id'] ?? 0;
+		if (empty($id)) {
+			util::fail('订单号没有生成');
+		}
+		return $prefix . $id;
+	}
+	
 }

+ 8 - 1
sql.sql

@@ -1422,4 +1422,11 @@ RENAME TABLE `xhWxMiniBase` TO `xhWxMini`;
 ALTER TABLE xhWxOpen DROP COLUMN `appIdCreated`;
 ALTER TABLE xhAdmin MODIFY `identity` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '用户身份 1客户 2员工';
 ALTER TABLE `xhShop` ADD `txBalance` DECIMAL(9,2) NOT NULL DEFAULT '0.00' COMMENT '可提现余额' AFTER `balance`;
-ALTER TABLE xhCash MODIFY `status` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '1处理中 2已完成';
+ALTER TABLE xhCash MODIFY `status` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '1处理中 2已完成';
+ALTER TABLE xhGhsOrderClear CHANGE `orderIds` `orderStr` TEXT COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单id的json串';
+ALTER TABLE xhGhsOrderClear CHANGE `orderStr` `orderText` TEXT COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '订单id的json文本串';
+ALTER TABLE xhGhsOrderClear ADD customId INT NOT NULL DEFAULT 0 COMMENT '客户id' AFTER `sjId`;
+ALTER TABLE xhGhsOrderClear ADD shopAdminId INT NOT NULL DEFAULT 0 COMMENT '员工id' AFTER `customId`;
+ALTER TABLE xhGhsOrderClear ADD clearType TINYINT NOT NULL DEFAULT 1 COMMENT '清算方式 1花店发起清算 2供货商发起清算' AFTER `shopAdminId`;
+ALTER TABLE `xhGhsOrder` MODIFY `debt` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '0正常订单 1欠款';
+ALTER TABLE `xhGhsOrder` ADD clearId INT NOT NULL DEFAULT 0 COMMENT '欠款清算id' AFTER `debt`;