cqp 2 месяцев назад
Родитель
Сommit
20dd2aaf6d

+ 1 - 1
app/Model/ExpenseClaimsDetails.php

@@ -4,7 +4,7 @@ namespace App\Model;
 
 class ExpenseClaimsDetails extends DataScopeBaseModel
 {
-    //设备日工时单
+    //项目费用
     protected $table = "expense_claims_details"; //指定表
     const CREATED_AT = 'crt_time';
     const UPDATED_AT = 'upd_time';

+ 13 - 9
app/Service/ExpenseClaimsService.php

@@ -156,14 +156,17 @@ class ExpenseClaimsService extends Service
             // 判断:claim_date 必须早于 month
             // 如果 claim_date 是 2026-02-28,而 month 是 2026-03-01,则校验通过
             if ($claimTime < $monthStart || $claimTime > $monthEnd) return [false, "第" . ($index + 1) . "行项费用产生日期必须在当前月份内(" . date("Y-m", $data['month']) . ")"];
-            if( ! empty($item['entrust_type']) ) {
-                if(! isset(ExpenseClaimsDetails::State_Type[$item['entrust_type']])) return [false, "第" . ($index + 1) . "委托类型不存在"];
-                $title = ExpenseClaimsDetails::State_Type[$item['entrust_type']];
-                if(! isset($item['entrust_amount'])) return [false, "第" . ($index + 1) . "行{$title}金额不能存在"];
-                $res = $this->checkNumber($item['entrust_amount'], 2, 'non-negative');
-                if (!$res['valid']) return [false, "第" . ($index + 1) . "行{$title}金额". $res['error']];
-                if(floatval($item['entrust_amount'] > $item['amount'])) return [false, "第" . ($index + 1) . "行{$title}金额不能超过费用金额"];
-            }
+            if(! isset(ExpenseClaimsDetails::State_Type[$item['entrust_type']])) return [false, "第" . ($index + 1) . "委托类型不存在"];
+            $title = ExpenseClaimsDetails::State_Type[$item['entrust_type']];
+
+            if(! isset($item['entrust1_amount'])) return [false, "第" . ($index + 1) . "行{$title}金额不能存在"];
+            $res = $this->checkNumber($item['entrust1_amount'], 2, 'non-negative');
+            if (!$res['valid']) return [false, "第" . ($index + 1) . "行{$title}金额". $res['error']];
+            if(! isset($item['entrust2_amount'])) return [false, "第" . ($index + 1) . "行{$title}金额不能存在"];
+            $res = $this->checkNumber($item['entrust2_amount'], 2, 'non-negative');
+            if (!$res['valid']) return [false, "第" . ($index + 1) . "行{$title}金额". $res['error']];
+            $tmp = bcadd($item['entrust1_amount'], $item['entrust2_amount'],2);
+            if(floatval($tmp) > $item['amount']) return [false, "第" . ($index + 1) . "行委托金额总和不能超过费用金额"];
         }
 
         $query = ExpenseClaims::where('top_depart_id', $data['top_depart_id'])
@@ -379,7 +382,8 @@ class ExpenseClaimsService extends Service
                 'fee_code' => $tmpFee ? $tmpFee->code : '',
                 'fee_title' => $tmpFee ? $tmpFee->title : '',
                 'amount' => $item->amount,
-                'entrust_amount' => $item->entrust_amount,
+                'entrust1_amount' => $item->entrust1_amount,
+                'entrust2_amount' => $item->entrust2_amount,
                 'claim_date' => $item->claim_date ? date('Y-m-d', $item->claim_date) : '',
                 'voucher_no' => $item->voucher_no,
                 'remark' => $item->remark,

+ 15 - 14
app/Service/ImportService.php

@@ -3806,7 +3806,8 @@ class ImportService extends Service
         $feeIdx = array_search('fee_id', $keys);
         $claimDateIdx = array_search('claim_date', $keys);
         $amountIdx = array_search('amount', $keys);
-        $eAmountIdx = array_search('entrust_amount', $keys);
+        $eAmountIdx = array_search('entrust1_amount', $keys);
+        $e2AmountIdx = array_search('entrust2_amount', $keys);
         $eTypeIdx = array_search('entrust_type', $keys);
         $exTypeIdx = array_search('expense_type', $keys);
 
@@ -3927,22 +3928,22 @@ class ImportService extends Service
             } else {
                 $v_tmp = $state_map[$e_text];
                 $array[$rowIndex][$eTypeIdx] = $v_tmp;
+            }
 
-                if($v_tmp > 0){
-                    $e2_text = $row[$eAmountIdx];
-                    if($e2_text == '') {
-                        $errors[] = "第{$line}行:{$e_text}金额必填";
-                    }else{
-                        $res = $this->checkNumber($e2_text, 2, 'non-negative');
-                        if (!$res['valid']) {
-                            $errors[] = "第{$line}行:{$e_text}金额" . $res['error'];
-                        }else{
-                            if($e2_text > $amount) $errors[] = "第{$line}行:{$e_text}金额不能超过费用金额";
-                        }
-                    }
-                }
+            $e1_text = $row[$eAmountIdx];
+            $res = $this->checkNumber($e1_text, 2, 'non-negative');
+            if (!$res['valid']) {
+                $errors[] = "第{$line}行:境内委托金额" . $res['error'];
+            }
+            $e2_text = $row[$e2AmountIdx];
+            $res = $this->checkNumber($e2_text, 2, 'non-negative');
+            if (!$res['valid']) {
+                $errors[] = "第{$line}行:境外委托金额" . $res['error'];
             }
 
+            $tmp = bcadd($e1_text, $e2_text,2);
+            if(floatval($tmp) > $amount) return [false, "第{$line}行委托金额总和不能超过费用金额"];
+
             //是否定位到人
             $ex_text = $row[$exTypeIdx] ?? '';
             if (!isset($ex_map[$ex_text])) {

+ 14 - 3
config/excel/feeOrder.php

@@ -146,9 +146,20 @@ return [
             'comments' => '选填'
         ],
         [
-            'key' =>'entrust_amount',
-            'export' =>'entrust_amount',
-            'value' => '委托金额',
+            'key' =>'entrust1_amount',
+            'export' =>'entrust1_amount',
+            'value' => '境内委托金额',
+            'required' => false,
+            'is_main' => false,
+            'unique' => false,
+            'enums' => [],
+            'default' => 0,
+            'comments' => ''
+        ],
+        [
+            'key' =>'entrust2_amount',
+            'export' =>'entrust3_amount',
+            'value' => '境外委托金额',
             'required' => false,
             'is_main' => false,
             'unique' => false,