/var/www/hkosl.com/littleark/webadmin/models/ProInstallment.php


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;
    }
}