Explorar o código

Merge branch 'dev_wf' of wugg/phpstock into version1.5

wufeng %!s(int64=2) %!d(string=hai) anos
pai
achega
1c494ce7ef
Modificáronse 1 ficheiros con 27 adicións e 29 borrados
  1. 27 29
      app/command/SplitSale.php

+ 27 - 29
app/command/SplitSale.php

@@ -48,13 +48,6 @@ class SplitSale extends Command
                     ->select()
                     ->toArray();
 
-                $all_orderCode = array_column($data, 'orderCode');
-
-                //已经拆分过的原订单号
-                $exist_sale_code = Db::name('sale_caixiao')
-                    ->whereIn('oldCode', $all_orderCode)
-                    ->column('id', 'oldCode');
-
                 foreach ($data as $sale) {
 
                     //补充商品信息
@@ -136,8 +129,8 @@ class SplitSale extends Command
                             //只处理销售单
 
                             //供应商事先覆盖
-                            $supplier = ['No' => $pay_rate['companyNo'], 'name' => $pay_rate['companyName']];
-                            if ($pay_rate['is_qrd'] == 1) $this->_handle_sale_caixiao($exist_sale_code, $sale, $orderCode, $cgdNo, $pay_rate, $sale_total, $customer, $supplier);
+                            $supplier = ['No' => $sale['supplierNo'], 'name' => Db::name('business')->where('companyNo', $sale['supplierNo'])->value('company', '')];
+                            if ($pay_rate['is_qrd'] == 1) $this->_handle_sale_caixiao($sale, $orderCode, $cgdNo, $sale_total, $customer, $supplier);
 
                         } else {
 
@@ -145,7 +138,7 @@ class SplitSale extends Command
                             $supplier = ['No' => $pay_rate['companyNo'], 'name' => $pay_rate['companyName']];
 
                             //需要生成销售单
-                            if ($pay_rate['is_qrd'] == 1) $this->_handle_sale_caixiao($exist_sale_code, $sale, $orderCode, $cgdNo, $pay_rate, $sale_total, $customer, $supplier);
+                            if ($pay_rate['is_qrd'] == 1) $this->_handle_sale_caixiao($sale, $orderCode, $cgdNo, $sale_total, $customer, $supplier);
 
                             //需要生成采购单
                             if ($pay_rate['is_cgd'] == 1) $this->_handle_cgd_caixiao($cgd, $sale, $pay_rate, $cgdNo, $orderCode, $cgd_total);
@@ -160,8 +153,15 @@ class SplitSale extends Command
 
                         //把自己覆盖到上一个记录的供应商记录中
                         if (isset($this->cgd_insert[$this->cgd_key - 1])) {
+
+                            $supplier = Db::name('supplier')
+                                ->field('id,person,personid')
+                                ->where('code', $pay_rate['companyNo'])
+                                ->findOrEmpty();
                             $this->cgd_insert[$this->cgd_key - 1]['supplierNo'] = $pay_rate['companyNo'];
                             $this->cgd_insert[$this->cgd_key - 1]['supplier_name'] = $pay_rate['companyName'];
+                            $this->cgd_insert[$this->cgd_key - 1]['supplier_persion'] = $supplier['person'] ?? '';
+                            $this->cgd_insert[$this->cgd_key - 1]['supplier_persionid'] = $supplier['personid'] ?? 0;
                         }
 
                     }
@@ -187,7 +187,7 @@ class SplitSale extends Command
     }
 
     //构建销售单
-    private function _handle_sale_caixiao(array $exist_sale_code = [], array $sale = [], string $orderCode = '', string $cgdNo = '', array $pay_rate = [], float $sale_total = 0.00, array $customer = [], array $supplier = [])
+    private function _handle_sale_caixiao(array $sale = [], string $orderCode = '', string $cgdNo = '', float $sale_total = 0.00, array $customer = [], array $supplier = [])
     {
 
         $tmp_sale = [
@@ -212,14 +212,16 @@ class SplitSale extends Command
             'send_status' => $sale['send_status'] ?? 0,
         ];
 
-        if (isset($exist_sale_code[$sale['orderCode']])) {
+        $tmp = Db::name('sale_caixiao')
+            ->field('id')
+            ->where(['oldCode' => $sale['orderCode'], 'customer_code' => $customer['No']])
+            ->findOrEmpty();
+
+        if (!empty($tmp)) {
             Db::name('sale_caixiao')
-                ->where('id', $exist_sale_code[$sale['orderCode']])
+                ->where('id', $tmp['id'])
                 ->update($tmp_sale);
         } else {
-            $supplier_name = Db::name('business')
-                ->where('companyNo', $sale['supplierNo'] ?? '')
-                ->value('company', '');
             $this->sale_insert[] = array_merge($tmp_sale, [
                 'orderCode' => $orderCode,
                 'apply_id' => $sale['apply_id'] ?? 0,
@@ -298,20 +300,16 @@ class SplitSale extends Command
             'updatetime' => $this->date,
         ];
 
-        if (isset($exist_sale_code[$sale['orderCode']])) {
+        $tmp = Db::name('cgd_caixiao')
+            ->field('id')
+            ->where(['oldCode' => $sale['orderCode'], 'companyNo' => $pay_rate['companyNo']])
+            ->findOrEmpty();
+
+        if (!empty($tmp)) {
             Db::name('cgd_caixiao')
-                ->where([
-                    'oldCode' => $sale['orderCode'],
-                    'companyNo' => $pay_rate['companyNo']
-                ])
+                ->where('id', $tmp['id'])
                 ->update($tmp_cgd);
         } else {
-
-            $supplier = Db::name('supplier')
-                ->field('id,name,code,person,personid')
-                ->where('code', $cgd['supplierNo'] ?? '')
-                ->findOrEmpty();
-
             $this->cgd_insert[$this->cgd_key] = array_merge($tmp_cgd, [
                 'cgdNo' => $cgdNo,
                 'bkcode' => $cgd['bkcode'] ?? '',
@@ -342,8 +340,8 @@ class SplitSale extends Command
                 'lead_time' => $sale['lead_time'] ?? 0,
                 'is_diff' => $sale['is_diff'],
                 'addtime' => $this->date,
-                'supplier_persion' => $supplier['person'],
-                'supplier_persionid' => $supplier['personid'],
+                'supplier_persion' => '',
+                'supplier_persionid' => '',
                 'pay_id' => $sale['pay_id'],
                 'oldCode' => $sale['orderCode']
             ]);