155 lines
4.6 KiB
PHP
155 lines
4.6 KiB
PHP
<?php
|
|
|
|
class InterestRate{
|
|
const SYSTEM_FINANCING_RATE_ID = 1;
|
|
|
|
/**
|
|
* get interest rate
|
|
* @return HashArray interest rate value
|
|
*/
|
|
public function getInterestRate(){
|
|
global $database;
|
|
$data = [];
|
|
$sql = "SELECT
|
|
f.interestRate
|
|
FROM ".TABLES['financing']." f
|
|
WHERE f.id=".self::SYSTEM_FINANCING_RATE_ID;
|
|
$query = $database->query($sql);
|
|
$row = $database->fetchArray($query);
|
|
$data['interestRate'] = isset($row['interestRate']) ? $row['interestRate'] : 0;
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* get interest rate for each customer
|
|
* @return HashArray interest rate value for every customer in the system
|
|
*/
|
|
public function getInterestRateForCustomers(){
|
|
global $database;
|
|
$data = [];
|
|
$interestRate = $this->getInterestRate()['interestRate'];
|
|
|
|
$sql = "SELECT
|
|
rcd.discount,
|
|
rcd.idCustomer
|
|
FROM
|
|
".TABLES['rel_customer_discount']." rcd";
|
|
$query = $database->query($sql);
|
|
while($row = $database->fetchArray($query)) {
|
|
$data[$row['idCustomer']] = $interestRate - $row['discount'];
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* save interest rate
|
|
* @param Float $interestRateValue interest rate value
|
|
* @return Array update message
|
|
*/
|
|
public function saveInterestRate($interestRate){
|
|
global $database;
|
|
$interestRate = $database->escapeValue($interestRate);
|
|
$data = [];
|
|
|
|
if(!$interestRate){
|
|
$data['messages'][] = [
|
|
'code' => 'error',
|
|
'message' => 'NO_INTEREST_RATE'
|
|
];
|
|
|
|
return $data;
|
|
}
|
|
|
|
$checkMessage = $database->invalidNumber('interestRate', $interestRate, 0, 100);
|
|
if($checkMessage){
|
|
$data['messages'][] = $checkMessage;
|
|
}
|
|
|
|
$sql = "UPDATE ".TABLES['financing']."
|
|
SET interestRate = $interestRate
|
|
WHERE id=".self::SYSTEM_FINANCING_RATE_ID;
|
|
$query = $database->query($sql);
|
|
|
|
$data['messages'][] = [
|
|
'code' => 'success',
|
|
'message' => 'INTEREST_RATE_UPDATED'
|
|
];
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* get customers discounts
|
|
* @return HashArray interest rate value
|
|
*/
|
|
public function getCustomersAndDiscount() {
|
|
global $database;
|
|
$data = $this->getInterestRate();
|
|
|
|
$sql = "SELECT
|
|
c.id AS idCustomer,
|
|
c.name,
|
|
IFNULL(rcd.discount, 0) AS discount
|
|
FROM
|
|
".TABLES['customers']." c
|
|
LEFT JOIN ".TABLES['rel_customer_discount']." rcd
|
|
ON c.id = rcd.idCustomer";
|
|
$data['customers'] = $database->fetchResultArray($sql);
|
|
|
|
return $data;
|
|
}
|
|
|
|
/**
|
|
* save discount for customer - financing
|
|
* @param Array $details id of the customer and the discount applied for each
|
|
* @return Array update message
|
|
*/
|
|
public function saveCustomersDiscount($details) {
|
|
global $database;
|
|
$interestRate = $this->getInterestRate()['interestRate'];
|
|
$insertValues = '';
|
|
$affectedRows = 0;
|
|
$data = [];
|
|
|
|
if(!count($details)) {
|
|
$data['messages'][] = [
|
|
'code' => 'error',
|
|
'message' => 'CUSTOMERS_DISCOUNT_EMPTY'
|
|
];
|
|
|
|
return $data;
|
|
}
|
|
|
|
foreach($details as $customerDiscounts) {
|
|
$discount = floatval($customerDiscounts['discount']);
|
|
if($discount > $interestRate || $discount < 0) {
|
|
$data['messages'][] = [
|
|
'code' => 'warning',
|
|
'message' => 'DISCOUNT_NOT_VALID',
|
|
'key' => $customerDiscounts['name']
|
|
];
|
|
} else {
|
|
$sql = "INSERT INTO ".TABLES['rel_customer_discount']."
|
|
(idCustomer, discount)
|
|
VALUES (".$customerDiscounts['idCustomer'].", '$discount')
|
|
ON DUPLICATE KEY
|
|
UPDATE
|
|
discount = '$discount'";
|
|
$row = $database->query($sql);
|
|
$affectedRows += $database->affectedRows();
|
|
}
|
|
}
|
|
|
|
if($affectedRows) {
|
|
$data['messages'][] = [
|
|
'code' => 'success',
|
|
'message' => 'DISCOUNT_UPDATED'
|
|
];
|
|
}
|
|
|
|
return $data;
|
|
}
|
|
}
|