1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
<?php
class ProInstallment extends BaseModel { protected $table = "pro_installment";
public function proProductSku() { return $this->belongsTo('ProProductSku', 'sku_id', 'id'); }
public function proInstallmentDtls() { return $this->hasMany('ProInstallmentDtl', 'pro_installment_id', 'id'); }
public function parsePaymenttermJson() { return json_decode($this->paymentterm_json); }
public static function paymenttermToJson($request) { return json_encode(self::paytermProcess($request)); }
public static function paytermProcess($request) { global $site_info;
$supplier = Supplier::find($request['supplier_id']);
// todo: convert amount to platform base currency using supplier currency rate // vdump($request); $paymentterm = [ 'supplier_currency' => $supplier->currency->iso_code, ]; switch ($request['paymentterm']) { case 'ONE_OFF': $paymentterm['paymentterm'] = $request['paymentterm']; $paymentterm['supplier_total_amount'] = (float) $request['total_amount']; $paymentterm['total_amount'] = (float) get_currency_price($paymentterm['supplier_total_amount'], $supplier->id, $site_info['currency_code'], 2); break;
case 'INSTALLMENT': $paymentterm['paymentterm'] = $request['paymentterm']; // $total_amount = 0; foreach ($request['installmentDtl_name'] as $i => $installmentDtl_name) { if ($request['installmentDtl_name'][$i] && $request['installmentDtl_amount'][$i]) { $paymentterm['installmentDtl'][] = [ 'name' => $request['installmentDtl_name'][$i], 'supplier_amount' => $request['installmentDtl_amount'][$i], 'amount' => (float) get_currency_price($request['installmentDtl_amount'][$i], $supplier->id, $site_info['currency_code'], 2), ]; $paymentterm['supplier_total_amount'] += $request['installmentDtl_amount'][$i]; } $paymentterm['total_amount'] = (float) get_currency_price($paymentterm['supplier_total_amount'], $supplier->id, $site_info['currency_code'], 2); } break;
case 'SUBSCRIPTION': $paymentterm['paymentterm'] = $request['paymentterm']; $paymentterm['subscription_period'] = $request['subscription_period']; $paymentterm['subscription_price'] = (float) get_currency_price($request['subscription_price'], $supplier->id, $site_info['currency_code'], 2); $paymentterm['supplier_subscription_price'] = (float) $request['subscription_price']; $paymentterm['supplier_total_amount'] = $paymentterm['supplier_subscription_price']; $paymentterm['total_amount'] = $paymentterm['subscription_price']; break;
default: exit('Invalid Request'); break; } // vdump($request, $paymentterm);exit; return $paymentterm; } }
|