= 3001 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.7; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.8; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.9; break; }; #地區經理經理獎金($region_manager_bonus) $region_manager_bonus = 170; #專任契約經理獎金($regular_contract_manger_bonus) if (($regular_contract_manger_id) != '') { $regular_contract_manger_bonus = 100; } break; case "free_to_charge": switch ($fee_per_st) { case ($fee_per_st <= 3000): $sales_bonus = ($fee_per_st) * 0.3; break; case ($fee_per_st >= 3001 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.35; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.4; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.5; break; }; #地區經理經理獎金($region_manager_bonus) $region_manager_bonus = 100; #專任契約經理獎金($regular_contract_manger_bonus) if (($regular_contract_manger_id) != '') { $regular_contract_manger_bonus = 100; } break; case "renew_priceissue": switch ($fee_per_st) { case ($fee_per_st <= 3000): $sales_bonus = ($fee_per_st) * 0.25; break; case ($fee_per_st >= 3001 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.3; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.35; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.4; break; }; #地區經理經理獎金($region_manager_bonus) $region_manager_bonus = 100; #專任契約經理獎金($regular_contract_manger_bonus) if (($regular_contract_manger_id) != '') { $regular_contract_manger_bonus = 100; } break; }; #合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) switch ($discount) { case ($discount < 0.6): $sales_bonus = $sales_bonus * 0.7; break; case ($discount >= 0.6 and $discount < 0.8): $sales_bonus = $sales_bonus * 0.8; break; case ($discount >= 0.8): $sales_bonus = $sales_bonus * 1.0; break; }; #簽約年數($contract_years):1年(1),超過1年(above) switch ($contract_years) { case $contract_years == "one": #契約員獎金 array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($sales_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); #地區經理經理獎金 array_push($bonus_array, [ "bonus_type" => "2", #獎金名稱 "bonus_receiver" => $region_manger_id, #發放人員 "bonus_amount" => round($region_manager_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); #專任契約經理獎金 if (($regular_contract_manger_id) != '') { array_push($bonus_array, [ "bonus_type" => "3", #獎金名稱 "bonus_receiver" => $regular_contract_manger_id, #發放人員 "bonus_amount" => round($regular_contract_manger_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); } $result_array = [ "ver" => $ver, #獎金版本 "result_status" => "success", #計算結果 "bonus_array" => $bonus_array #獎金水庫 ]; break; case $contract_years == "above_two": /*** 以下第1年獎金 ***/ #契約員獎金 array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($sales_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); #地區經理經理獎金 array_push($bonus_array, [ "bonus_type" => "2", #獎金名稱 "bonus_receiver" => $region_manger_id, #發放人員 "bonus_amount" => round($region_manager_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); #專任契約經理獎金 if (($regular_contract_manger_id) != '') { array_push($bonus_array, [ "bonus_type" => "3", #獎金名稱 "bonus_receiver" => $regular_contract_manger_id, #發放人員 "bonus_amount" => round($regular_contract_manger_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); } /*** 以上第1年獎金 ***/ /*** 以下第2年獎金 ***/ #第2年契約員獎金 array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($sales_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +13 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); #第2年地區經理經理獎金 array_push($bonus_array, [ "bonus_type" => "2", #獎金名稱 "bonus_receiver" => $region_manger_id, #發放人員 "bonus_amount" => round($region_manager_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +13 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); #第2年專任契約經理獎金 if (($regular_contract_manger_id) != '') { array_push($bonus_array, [ "bonus_type" => "3", #獎金名稱 "bonus_receiver" => $regular_contract_manger_id, #發放人員 "bonus_amount" => round($regular_contract_manger_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +13 months")), #預計發放時間 "bonus_regulation" => "合約簽回及保養款項收回的次月一次性發" #發放規定 ]); } /*** 以上第2年獎金 ***/ $result_array = [ "ver" => $ver, #獎金版本 "result_status" => "success", #計算結果 "bonus_array" => $bonus_array #獎金水庫 ]; break; } } else { array_push($bonus_array, [ "bonus_type" => "error", #獎金名稱 "bonus_receiver" => "error", #發放人員 "bonus_amount" => 0, #金額 "pay_day_due" => "9999-1-1", #預計發放時間 "bonus_regulation" => "error" #發放規定 ]); $result_array = [ "ver" => $ver, #獎金版本 "result_status" => "error", #計算結果 "bonus_array" => $bonus_array #獎金水庫 ]; } return $result_array; }; ## 4/1 後套用 2.1 版本 function maintenance_contract_bonus_v2_1($ver, $contract_type, $payment_period, $discount, $fee_per_st, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id = '') { // $fee_per_st = round($fee_per_st); $bonus_array = []; if ($ver == "2.1") { // $discount = round(($fee_per_st - $commission_fee) / $elevator_list_price, 2); // $discount = ($fee_per_st - $commission_fee) / $elevator_list_price; #契約總類($contract_type):新簽約(new)、免保轉有費(free_to_charge)、續簽約(原價或僅契約金額異動)(renew_priceissue) switch ($contract_type) { case "new": #契約員獎金($sales_bonus) #合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) switch ($discount) { case ($discount >= 0.8): switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.6; break; case ($fee_per_st >= 3000 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.7; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.8; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.9; break; }; break; case ($discount >= 0.6 and $discount < 0.8): switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.48; break; case ($fee_per_st >= 3000 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.56; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.64; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.72; break; }; break; case ($discount < 0.6): switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.42; break; case ($fee_per_st >= 3000 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.49; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.56; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.63; break; }; break; }; #地區處長獎金($region_director_bonus) $region_director_bonus = 170; #專任契約經理獎金($regular_contract_manger_bonus) $regular_contract_manger_bonus = 300; break; case "free_to_charge": switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.3; break; case ($fee_per_st >= 3000 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.35; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.4; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.45; break; }; #地區處長獎金($region_director_bonus) $region_director_bonus = 170; #專任契約經理獎金($regular_contract_manger_bonus) $regular_contract_manger_bonus = 300; break; case "renew_priceissue": switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.25; break; case ($fee_per_st >= 3000 and $fee_per_st <= 3499): $sales_bonus = ($fee_per_st) * 0.3; break; case ($fee_per_st >= 3500 and $fee_per_st <= 3999): $sales_bonus = ($fee_per_st) * 0.35; break; case ($fee_per_st >= 4000): $sales_bonus = ($fee_per_st) * 0.4; break; }; #地區處長獎金($region_director_bonus) $region_director_bonus = 170; #專任契約經理獎金($regular_contract_manger_bonus) $regular_contract_manger_bonus = 300; break; }; #地區處長獎金 array_push($bonus_array, [ "bonus_type" => "2", #獎金名稱 "bonus_receiver" => $region_director_id, #發放人員 "bonus_amount" => round($region_director_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "第1次款項收回後,次月發放" #發放規定 ]); #專任契約經理獎金 if ($regular_contract_manger_id != '') { array_push($bonus_array, [ "bonus_type" => "3", #獎金名稱 "bonus_receiver" => $regular_contract_manger_id, #發放人員 "bonus_amount" => round($regular_contract_manger_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "第1次款項收回後,次月發放" #發放規定 ]); } #契約員獎金 switch ($payment_period) { #年付 case "annually": array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($sales_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +1 months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); break; #半年付 case "semiannually": $payment_ratio_due_array = array(0.5, 0.5); $payday_due_array = array(1, 7); for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); } break; #季付 case "quarterly": $payment_ratio_due_array = array(0.25, 0.25, 0.25, 0.25); $payday_due_array = array(1, 4, 7, 10); for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); } break; #2月1次 case "bimonthly": $payment_ratio_due_array = array(); for ($i = 0; $i < 6; $i++) { array_push($payment_ratio_due_array, 1 / 6); } $payday_due_array = array(1, 3, 5, 7, 9, 11); for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); } break; #月付 case "monthly": $payment_ratio_due_array = array(); // $payment_ratio_due_array = array(); for ($i = 0; $i < 12; $i++) { array_push($payment_ratio_due_array, 1 / 12); } $payday_due_array = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12); for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); } break; } $result_array = [ "ver" => $ver, #獎金版本 "result_status" => "success", #計算結果 "bonus_array" => $bonus_array #獎金水庫 ]; } else { array_push($bonus_array, [ "bonus_type" => "error", #獎金名稱 "bonus_receiver" => "error", #發放人員 "bonus_amount" => 0, #金額 "pay_day_due" => "9999-1-1", #預計發放時間 "bonus_regulation" => "error" #發放規定 ]); $result_array = [ "ver" => $ver, #獎金版本 "result_status" => "error", #計算結果 "bonus_array" => $bonus_array #獎金水庫 ]; } return $result_array; }; ## 五年以上長約 function maintenance_longterm_contract_m1_free_charge_bonus_v2_1($ver, $contract_type, $payment_period, $payment_period_amount, $elevator_list_price, $fee_per_st, $commission_fee, $receivable_date_due, $sales_id, $region_director_id, $regular_contract_manger_id = '') { $bonus_array = []; if ($ver == "2.1") { $discount = ($fee_per_st - $commission_fee) / $elevator_list_price; #契約總類($contract_type):簽長約並免費送M1 (longcontract_m1_free_charge) switch ($contract_type) { case "longcontract_m1_free_charge": #契約員獎金($sales_bonus) #合約折扣率($discount):大於80%以上(含)(above_80)、60-79%(含)以上(60_to_79)、折扣率59% (含)以下(below_59) switch ($discount) { case ($discount >= 0.8): switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.6; break; case ($fee_per_st >= 3000 and $fee_per_st < 4000): $sales_bonus = ($fee_per_st) * 0.7; break; case ($fee_per_st >= 4000 and $fee_per_st < 5000): $sales_bonus = ($fee_per_st) * 0.8; break; case ($fee_per_st >= 5000 and $fee_per_st < 6000): $sales_bonus = ($fee_per_st) * 0.9; break; case ($fee_per_st >= 6000): $sales_bonus = ($fee_per_st) * 1.0; break; }; break; case ($discount >= 0.6 and $discount < 0.8): switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.42; break; case ($fee_per_st >= 3000 and $fee_per_st <= 4000): $sales_bonus = ($fee_per_st) * 0.49; break; case ($fee_per_st >= 4000 and $fee_per_st < 5000): $sales_bonus = ($fee_per_st) * 0.56; break; case ($fee_per_st >= 5000 and $fee_per_st < 6000): $sales_bonus = ($fee_per_st) * 0.63; break; case ($fee_per_st >= 6000): $sales_bonus = ($fee_per_st) * 0.7; break; }; break; case ($discount < 0.6): switch ($fee_per_st) { case ($fee_per_st < 3000): $sales_bonus = ($fee_per_st) * 0.3; break; case ($fee_per_st >= 3000 and $fee_per_st < 4000): $sales_bonus = ($fee_per_st) * 0.35; break; case ($fee_per_st >= 4000 and $fee_per_st < 5000): $sales_bonus = ($fee_per_st) * 0.4; break; case ($fee_per_st >= 5000 and $fee_per_st < 6000): $sales_bonus = ($fee_per_st) * 0.45; break; case ($fee_per_st >= 6000): $sales_bonus = ($fee_per_st) * 0.5; break; }; break; }; #地區處長獎金($region_director_bonus) $region_director_bonus = 170; #專任契約經理獎金($regular_contract_manger_bonus) $regular_contract_manger_bonus = 300; break; }; #付款方式$payment_period: 每月支付(monthly), 2月1次(bimonthly), 季付(quarterly), 半年付(semiannually), 年付(annually) array_push($bonus_array, [ "bonus_type" => "2", #獎金名稱 "bonus_receiver" => $region_director_id, #發放人員 "bonus_amount" => round($region_director_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +12 months")), #預計發放時間 "bonus_regulation" => "訂金收回後次月發放" #發放規定 ]); #專任契約經理獎金 if ($regular_contract_manger_id != '') { array_push($bonus_array, [ "bonus_type" => "3", #獎金名稱 "bonus_receiver" => $regular_contract_manger_id, #發放人員 "bonus_amount" => round($regular_contract_manger_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +12 months")), #預計發放時間 "bonus_regulation" => "訂金收回後次月發放" #發放規定 ]); } #地區處長獎金、專任契約經理、契約員獎金 switch ($payment_period) { #簽長約免費贈送控制系統,因屬於公司特殊政策,所以無汰改獎金,合約期內每月領取契約獎金 #總支付期數$payment_period_amount: 總支付期數,依規定5年約至少60期, #年繳 case 'annually': $payment_ratio_due_array = array(); $a = $payment_period_amount / 12; for ($i = 0; $i < $a; $i++) { array_push($payment_ratio_due_array, 1 / $a); } $payday_due_array = array(); for ($i = 0; $i < $a; $i++) { array_push($payday_due_array, $i + 1); } for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] year")), #預計發放時間 "bonus_regulation" => "每次收款後,按收款比率次月發放" #發放規定 ]); } break; #半年繳 case 'semiannually': $payment_ratio_due_array = array(); $a = $payment_period_amount / 6; for ($i = 0; $i < $a; $i++) { array_push($payment_ratio_due_array, 1 / $a); } $payday_due_array = array(); for ($i = 0; $i < $a; $i++) { array_push($payday_due_array, ($i + 1) * 6); } for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每次收款後,按收款比率次月發放" #發放規定 ]); } break; #季繳 case 'quarterly': $a = $payment_period_amount / 3; $payment_ratio_due_array = array(); for ($i = 0; $i < $a; $i++) { array_push($payment_ratio_due_array, 1 / $a); } $payday_due_array = array(); for ($i = 0; $i < $a; $i++) { array_push($payday_due_array, ($i + 1) * 4); } for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); } break; #雙月繳 case 'bimonthly': $a = $payment_period_amount / 2; $payment_ratio_due_array = array(); for ($i = 0; $i < $a; $i++) { array_push($payment_ratio_due_array, 1 / $a); } $payday_due_array = array(); for ($i = 0; $i < $a; $i++) { array_push($payday_due_array, ($i + 1) * 2); } for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); } break; break; #月繳 case 'monthly': #產生契約員每個月的獎金應發比例 $payment_ratio_due_array = array(); for ($i = 0; $i < $payment_period_amount; $i++) { array_push($payment_ratio_due_array, 1 / $payment_period_amount); } $payday_due_array = array(); for ($i = 0; $i < $payment_period_amount; $i++) { array_push($payday_due_array, $i + 1); } for ($i = 0; $i < count($payment_ratio_due_array); $i++) { if ($i < count($payment_ratio_due_array) - 1) { $current_bonus = round($sales_bonus * $payment_ratio_due_array[$i]); #金額 } else { $current_bonus = round($sales_bonus - $i * round($sales_bonus * $payment_ratio_due_array[$i])); #最後一次金額 }; array_push($bonus_array, [ "bonus_type" => "1", #獎金名稱 "bonus_receiver" => $sales_id, #發放人員 "bonus_amount" => round($current_bonus), #金額 "pay_day_due" => date("Y-m-d", strtotime("$receivable_date_due +$payday_due_array[$i] months")), #預計發放時間 "bonus_regulation" => "每月收款後,按收款比率次月發放" #發放規定 ]); } break; } $result_array = [ "ver" => $ver, #獎金版本 "result_status" => "success", #計算結果 "bonus_array" => $bonus_array #獎金水庫 ]; } else { array_push($bonus_array, [ "bonus_type" => "error", #獎金名稱 "bonus_receiver" => "error", #發放人員 "bonus_amount" => 0, #金額 "pay_day_due" => "9999-1-1", #預計發放時間 "bonus_regulation" => "error" #發放規定 ]); $result_array = [ "ver" => $ver, #獎金版本 "result_status" => "error", #計算結果 "bonus_array" => $bonus_array #獎金水庫 ]; } return $result_array; };