Advertisement
maprangsoft

สูตรคำนวนราคาใหม่ BSO

Mar 5th, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.39 KB | None | 0 0
  1. <?php
  2. use App\Model\WorkDescription;
  3. use App\Model\WorkSelect;
  4.  
  5. function calNewPrice($workDescId, $qty, $option = null)
  6. {
  7.  
  8.     $selects = WorkSelect::select(
  9.         'select_id',
  10.         'wd.work_desc_main_id',
  11.         'work_selects.work_desc_id',
  12.         'qty',
  13.         'area_id'
  14.     )
  15.         ->join('work_descriptions AS wd', 'wd.work_desc_id', '=', 'work_selects.work_desc_id')
  16.         ->where('work_selects.work_desc_id', $workDescId)
  17.         ->get();
  18.  
  19.     $workDescId = $selects->pluck('work_desc_main_id');
  20.  
  21.     $workDescriptions = WorkDescription::with('work_cost')
  22.         ->whereIn('work_desc_main_id', $workDescId)->get();
  23.  
  24.         $want = $qty; //จำนวนที่ต้องการ
  25.         $sum = 0;
  26.         $arrLaborCost = [];
  27.         $arrConditionValue = [];
  28.         $unitPrice = 0;
  29.  
  30. foreach ($workDescriptions as $workDescription) {
  31.  
  32.     $arrLaborCost[] = $workDescription->work_cost->labor_cost; //เก็บค่าแรงใส่ใน array
  33.     $arrConditionValue[] = $workDescription->work_cost->condition_value; //เก็บเงื่อนไขใส่ใน array
  34.  
  35.            if ($workDescription->work_cost->case == 1) { //กรณีที่ 1 คูณจำนวนเข้าไปตรงๆเลย
  36.  
  37.             $sum = $workDescription->work_cost->labor_cost * $want;
  38.             $unitPrice = $workDescription->work_cost->labor_cost;
  39.  
  40.            } elseif ($workDescription->work_cost->case == 2) { //กรณีที่ 2
  41.  
  42.                if ($workDescription->work_cost->condition == "less_equal_to") {
  43.                    if ($want <= $workDescription->work_cost->condition_value) {
  44.                     $sum = $workDescription->work_cost->labor_cost . "\n";
  45.                     $unitPrice = $workDescription->work_cost->labor_cost;
  46.                    }
  47.                } elseif ($workDescription->work_cost->condition == "greater_equal_to") {
  48.                    if ($want >= $workDescription->work_cost->condition_value) {
  49.                     $sum = $want * $workDescription->work_cost->labor_cost;
  50.                     $unitPrice = $workDescription->work_cost->labor_cost;
  51.                    }
  52.                }
  53.  
  54.  
  55.  
  56.            } elseif ($workDescription->work_cost->case == 3) { //กรณีที่ 3
  57.  
  58.                if ($workDescription->work_cost->condition == "less_equal_to") {
  59.  
  60.                    if ($want <= $workDescription->work_cost->condition_value) {
  61.                        $sum = $workDescription->work_cost->labor_cost . "\n";
  62.                        $unitPrice = $workDescription->work_cost->labor_cost;
  63.                    }
  64.  
  65.                }
  66.  
  67.                if ($workDescription->work_cost->condition == "greater_equal_to") {
  68.                    $difference = ($want - $arrConditionValue[0]); //หาส่วนต่าง
  69.  
  70.                    if ($want >= $workDescription->work_cost->condition_value) {
  71.                        $sum = ($difference * $workDescription->work_cost->labor_cost) + $arrLaborCost[0]; //$arrLaborCost[0] ตือราคาแรก
  72.                        $unitPrice = $workDescription->work_cost->labor_cost;
  73.                        //echo $sum . "\n";
  74.                    }
  75.                }
  76.  
  77.            } //end if main
  78.         } //end foreach
  79.  
  80.         if($option != '' && $option == 'unitPrice'){
  81.             return $unitPrice;
  82.         }else{
  83.             return $sum;
  84.         }
  85.  
  86.  
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement