File: /www/exchange2/exchange/custom_reports/support_95.sql
-- Report 1: All d-ETRs in the system with
SET @edso=0,@adso=0,@adso_filtered=0,@days=0,@face_value=0.00;
SET @system_date=CURDATE();
DROP TABLE IF EXISTS temp_reserves;
CREATE TEMPORARY TABLE IF NOT EXISTS temp_reserves (INDEX my_index_name (invoice_id))
AS (
SELECT
@edso:=IFNULL(DATEDIFF(DATE(expected_date), DATE(actual_date)),0) as edso,
@rdso:=DATEDIFF(IF(main_trans.transaction_type=6 AND payment_trans.transaction_date<=@system_date,payment_trans.transaction_date,@system_date),DATE(actual_date)) as rdso,
@face_value:=m.face_value as face_value,
@adso:=IF(@edso>@rdso,@edso,@rdso) as adso,
IF(invoice_reserve.reserve IS NOT NULL, invoice_reserve.reserve, ROUND(IF(@face_value<0,0,(@face_value-@face_value*(m.max_thirty_day_reserve/100)*12*(@adso)/360)-invoice_closed_attributes.processing_fee-@face_value*(purchase_discount/100)),2)) as reserve, m.user_id, m.debtor_id, m.invoice_id
FROM invoice_master m
LEFT JOIN invoice_closed_attributes ON invoice_closed_attributes.invoice_id = m.invoice_id
LEFT JOIN invoice_reserve ON invoice_reserve.invoice_id = invoice_closed_attributes.invoice_id
LEFT JOIN manual_transactions as main_trans ON main_trans.manual_transaction_id = m.manual_transaction_id AND main_trans.status=1
LEFT JOIN manual_transactions as payment_trans ON main_trans.reconcile_payment = payment_trans.manual_transaction_id AND payment_trans.status=1
WHERE m.root_invoice_id > 0 AND m.invoice_status = 3
GROUP BY m.invoice_id
ORDER BY m.actual_date ASC
);
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, invoice_master.actual_date,invoice_master.trade_reference_id, invoice_master.invoice_no , invoice_master.created_at, invoice_master.face_value, invoice_closed.purchase_payment, IF(manual_transactions.manual_transaction_id IS NULL, "","R") as reconcile_status, IFNULL(invoice_reserve.reserve,temp_reserves.reserve) as reserve, IF(manual_transactions.manual_transaction_id IS NOT NULL AND invoice_master.reserve_on=0,"DUE","") as reserve_status,country_mas.currency_code, invoice_closed_attributes.purchase_discount
FROM invoice_master
LEFT JOIN organisation_details ON organisation_details.user_id = invoice_master.user_id
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = invoice_master.debtor_id
LEFT JOIN invoice_closed ON invoice_closed.invoice_id = invoice_master.invoice_id
LEFT JOIN invoice_closed_attributes ON invoice_closed_attributes.invoice_id = invoice_master.invoice_id
LEFT JOIN manual_transactions ON manual_transactions.manual_transaction_id = invoice_master.manual_transaction_id AND manual_transactions.transaction_type=6
LEFT JOIN invoice_reserve ON invoice_reserve.invoice_id = invoice_master.invoice_id
LEFT JOIN temp_reserves ON temp_reserves.invoice_id = invoice_master.invoice_id
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
WHERE invoice_master.root_invoice_id>0 AND invoice_master.invoice_status=3 AND debtors_detail.type="debtor"
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name;
--- Report 2: All [not rejected] c-ETR in the system with:
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, invoice_master.actual_date,invoice_master.trade_reference_id, invoice_master.invoice_no , invoice_master.created_at, invoice_master.face_value,invoice_master.face_value*(100 - invoice_master.payment_discount)/100 as Paid,country_mas.currency_code
FROM invoice_master
LEFT JOIN organisation_details ON organisation_details.user_id = invoice_master.user_id
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = invoice_master.debtor_id
LEFT JOIN invoice_closed ON invoice_closed.invoice_id = invoice_master.invoice_id
LEFT JOIN manual_transactions ON manual_transactions.manual_transaction_id = invoice_master.manual_transaction_id AND manual_transactions.transaction_type=6
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
WHERE invoice_master.root_invoice_id>0 AND invoice_master.invoice_status=3 AND debtors_detail.type="creditor"
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name
--Report 3: All inbound [not rejected] payment transactions (without OPA [Originator Payment on Account] transactions) with:
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, manual_transactions.manual_transaction_id, manual_transactions.transaction_date, manual_transactions.created_at, manual_transactions.amount, country_mas.currency_code, IF(manual_transactions.status=1,"Authorized","Not Authorized") as status, IF(manual_transactions.reconcile_ref<>"","R","") as reconcile_status
FROM manual_transactions
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = manual_transactions.debtors
LEFT JOIN organisation_details ON organisation_details.user_id = manual_transactions.originator_id
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
WHERE transaction_type IN (1,2,9)
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name
--Report 4: All Credit Notes in the system with:
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, manual_transactions.manual_transaction_id, manual_transactions.transaction_date, manual_transactions.created_at, manual_transactions.amount, country_mas.currency_code, IF(manual_transactions.status=1,"Authorized","Not Authorized") as status
FROM manual_transactions
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = manual_transactions.debtors
LEFT JOIN organisation_details ON organisation_details.user_id = manual_transactions.originator_id
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
WHERE transaction_type IN (4)
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name
--Report 5: All Specific Deductibles in the system with:
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, sd_trans.manual_transaction_id, sd_trans.transaction_date, r_trade.created_at, sd_trans.amount, country_mas.currency_code, IF(sd_trans.status=1,"Authorized","Not Authorized") as status
FROM manual_transactions as sd_trans
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = sd_trans.debtors
LEFT JOIN organisation_details ON organisation_details.user_id = sd_trans.originator_id
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
LEFT JOIN manual_transactions as r_trade ON r_trade.manual_transaction_id = sd_trans.reconcile_ref
WHERE sd_trans.transaction_type IN (16)
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name
--Report 6: All Reserve payments [DRP] in the system with:
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, manual_transactions.manual_transaction_id, manual_transactions.transaction_date, manual_transactions.created_at, manual_transactions.amount, country_mas.currency_code, IF(manual_transactions.status=1,"Authorized","Not Authorized") as status
FROM manual_transactions
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = manual_transactions.debtors
LEFT JOIN organisation_details ON organisation_details.user_id = manual_transactions.originator_id
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
WHERE manual_transactions.transaction_type IN (11)
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name
--Report 7: All Reserve adjustments (both positive and negative) in the system with:
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, manual_transactions.manual_transaction_id, manual_transactions.transaction_date, manual_transactions.created_at, IF(manual_transactions.transaction_type=91,manual_transactions.amount,-1*manual_transactions.amount), country_mas.currency_code, IF(manual_transactions.status=1,"Authorized","Not Authorized") as status
FROM manual_transactions
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = manual_transactions.debtors
LEFT JOIN organisation_details ON organisation_details.user_id = manual_transactions.originator_id
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
WHERE manual_transactions.transaction_type IN (91,92)
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name
--Report 8: All Return Payments transactions in the system with:
SELECT organisation_details.organisation_reference_id, organisation_details.organisation_name, debtors_detail.debtor_reference_id, debtors_detail.debtor_name, manual_transactions.manual_transaction_id, manual_transactions.transaction_date, manual_transactions.created_at, manual_transactions.amount, country_mas.currency_code, IF(manual_transactions.status=1,"Authorized","Not Authorized") as status
FROM manual_transactions
LEFT JOIN debtors_detail ON debtors_detail.debtor_id = manual_transactions.debtors
LEFT JOIN organisation_details ON organisation_details.user_id = manual_transactions.originator_id
LEFT JOIN country_mas ON country_mas.country_id = debtors_detail.currency_country
WHERE manual_transactions.transaction_type IN (13)
ORDER BY organisation_details.organisation_name, debtors_detail.debtor_name