|
|
@@ -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();
|
|
|
}
|
|
|
+
|
|
|
}
|