File: /www/exchange2/sql/archive/2019-09-17-TK23588.sql
ALTER TABLE `organisation_details`
ADD `ldc_premium` DOUBLE(6, 3) NOT NULL DEFAULT 0 AFTER `credebt_facility_type`,
ADD `creditor_ldc_premium` DOUBLE(6, 3) NOT NULL DEFAULT 0 AFTER `ldc_premium`;
ALTER TABLE `debtors_detail`
ADD `ldc_premium` DOUBLE(6, 3) NULL DEFAULT NULL;
ALTER TABLE `invoice_master`
ADD `ldc_premium` DOUBLE(6, 3) NOT NULL DEFAULT 0;
ALTER TABLE `organisation_details`
ADD `agent_commission` DOUBLE(6, 3) NOT NULL DEFAULT 0 AFTER `creditor_ldc_premium`,
ADD `creditor_agent_commission` DOUBLE(6, 3) NOT NULL DEFAULT 0 AFTER `agent_commission`;
ALTER TABLE `debtors_detail`
ADD `agent_commission` DOUBLE(6, 3) NULL DEFAULT NULL;
ALTER TABLE `invoice_master`
ADD `agent_commission` DOUBLE(6, 3) NOT NULL DEFAULT 0;
DROP FUNCTION IF EXISTS `getReserve`;
DELIMITER $$
CREATE FUNCTION `getReserve`(`expected_date` DATE,
`issue_date` DATE,
`payment_date` DATE,
`system_date` DATE,
`reserve` DOUBLE(10, 2),
`face_value` DOUBLE,
`sr` DOUBLE(4, 3),
`pp` DOUBLE(5, 3),
`trade_comission` DOUBLE(7, 4),
`override_180_day_rule` TINYINT(1),
`face_value_charge` DOUBLE(5, 3),
`credebt_facility_type` VARCHAR(20),
`face_value_charge_applied` TINYINT(1),
`ldc_premium` DOUBLE(6, 3),
`agent_commission` DOUBLE(6, 3)) RETURNS decimal(20, 10)
BEGIN
SET
@edso = IFNULL(DATEDIFF(DATE(expected_date), DATE(issue_date)), 0),
@rdso =
DATEDIFF(IF(reserve IS NOT NULL AND payment_date <= system_date, payment_date, system_date),
DATE(issue_date)),
@adso = IF(@edso > @rdso, @edso, @rdso),
@sr = sr * 100 / (100 - agent_commission),
@face_value_charge = face_value_charge * 100 / (100 - agent_commission);
IF (reserve IS NOT NULL AND (system_date = CURDATE() OR system_date >= payment_date)) THEN
RETURN reserve;
ELSEIF ((`credebt_facility_type` = 'fixed' AND `payment_date` IS NULL) OR
(`face_value_charge_applied` = 1 AND `payment_date` IS NOT NULL)) THEN
RETURN face_value - face_value * pp / 100 - face_value * @face_value_charge / 100 -
face_value * ldc_premium / 100 - trade_comission;
ELSEIF (@adso >= 180 AND override_180_day_rule = 0) THEN
RETURN face_value * @sr / 100 * 12 * (180 - @adso) / 360 - face_value * ldc_premium / 100 - trade_comission;
ELSE
RETURN face_value - face_value * @sr / 100 * 12 * 180 / 360 - face_value * pp / 100 +
face_value * @sr / 100 * 12 * (180 - @adso) / 360 - face_value * ldc_premium / 100 - trade_comission;
END IF;
END$$
DELIMITER ;
ALTER TABLE `site_settings`
ADD `ldc_premium` DOUBLE(6, 3) NOT NULL DEFAULT 0,
ADD `agent_commission` DOUBLE(6, 3) NOT NULL DEFAULT 0;