HEX
Server: Apache/2.2.15 (CentOS)
System: Linux ip-10-0-2-146.eu-west-1.compute.internal 2.6.32-754.35.1.el6.centos.plus.x86_64 #1 SMP Sat Nov 7 11:33:42 UTC 2020 x86_64
User: root (0)
PHP: 5.6.40
Disabled: NONE
Upload Files
File: /www/exchange2/sql/archive/2019-04-25-TK23054.sql
ALTER TABLE `organisation_details`
    ADD `face_value_charge` DOUBLE(5, 3) NOT NULL DEFAULT 0;
ALTER TABLE `invoice_master`
    ADD `face_value_charge_applied` BOOLEAN NOT NULL DEFAULT FALSE;

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)) 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);
    IF (reserve IS NOT NULL AND (system_date = CURDATE() OR system_date >= payment_date)) THEN
        RETURN reserve;
    ELSEIF (@adso >= 180 AND override_180_day_rule = 0) THEN
        RETURN face_value * sr / 100 * 12 * (180 - @adso) / 360 - trade_comission -
               face_value * face_value_charge / 100;
    ELSE
        RETURN face_value - face_value * sr / 100 * 12 * 180 / 360 - face_value * pp / 100 +
               face_value * sr / 100 * 12 * (180 - @adso) / 360 - trade_comission -
               face_value * face_value_charge / 100;
    END IF;
END$$
DELIMITER ;