From 9d224ffabfdf9c4603746383d3da8a9e749e25ff Mon Sep 17 00:00:00 2001 From: "sas.fajri" Date: Mon, 8 Jun 2026 11:18:01 +0700 Subject: [PATCH] FHM08062601IBL - update fo birt cache sp --- docs/pdp-implementation-prompt.md | 2 + ...-08-pdp-fo-birt-sp-patient-print-cache.sql | 2641 +++++++++++++++++ 2 files changed, 2643 insertions(+) create mode 100644 sql/manual_changes/2026-06-08-pdp-fo-birt-sp-patient-print-cache.sql diff --git a/docs/pdp-implementation-prompt.md b/docs/pdp-implementation-prompt.md index f36386e6..d7ed680d 100644 --- a/docs/pdp-implementation-prompt.md +++ b/docs/pdp-implementation-prompt.md @@ -40,6 +40,7 @@ URUTAN EKSEKUSI (ikuti runbook): - sql/manual_changes/2026-05-31-pdp-encrypt-columns.sql - sql/manual_changes/2026-05-31-pdp-update-triggers-enc.sql - sql/manual_changes/2026-05-31-pdp-birt-sp-cache-join.sql (buat patient_print_cache) + - sql/manual_changes/2026-06-08-pdp-fo-birt-sp-patient-print-cache.sql (update keluarga SP report FO lama: invoice, kwitansi, nota, billing) 4. DROP triggers sebelum migration data: mysql one_lab -e 'DROP TRIGGER IF EXISTS vm_patient_ai; DROP TRIGGER IF EXISTS vm_patient_bu; DROP TRIGGER IF EXISTS m_patient_au; DROP TRIGGER IF EXISTS m_patientaddress_ai; DROP TRIGGER IF EXISTS m_patientaddress_bu;' 5. Encrypt m_patient: php scripts/migrate_encrypt_patient.php @@ -99,6 +100,7 @@ Sebelum mulai, pastikan: | `sql/manual_changes/2026-05-31-pdp-encrypt-columns.sql` | Tambah kolom _enc + _bidx | | `sql/manual_changes/2026-05-31-pdp-update-triggers-enc.sql` | Update trigger pakai _enc | | `sql/manual_changes/2026-05-31-pdp-birt-sp-cache-join.sql` | patient_print_cache + update 6 SP BIRT | +| `sql/manual_changes/2026-06-08-pdp-fo-birt-sp-patient-print-cache.sql` | Update keluarga SP report FO lama agar baca `patient_print_cache` | | `scripts/migrate_encrypt_patient.php` | Encrypt 178K patient rows | | `scripts/migrate_nik_bidx.php` | Populate NIK search index | | `scripts/migrate_address_enc.php` | Encrypt address rows | diff --git a/sql/manual_changes/2026-06-08-pdp-fo-birt-sp-patient-print-cache.sql b/sql/manual_changes/2026-06-08-pdp-fo-birt-sp-patient-print-cache.sql new file mode 100644 index 00000000..afe2e4e7 --- /dev/null +++ b/sql/manual_changes/2026-06-08-pdp-fo-birt-sp-patient-print-cache.sql @@ -0,0 +1,2641 @@ +-- PDP: Update FO BIRT SP family to read patient identity from patient_print_cache +-- Covers invoice, kwitansi, nota, billing print variants used by FO reports +DELIMITER $$ +DROP PROCEDURE IF EXISTS `sp_rpt_t_001` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_001`(IN `PID` int, IN `username` varchar(100)) +begin + + + +select sum(T_OrderDetailPrice) into @subtot + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + +select sum(T_OrderDetailDiscTotal) into @disc + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + + + +select + +distinct + +DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + +T_OrderHeaderID, + +DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate,T_OrderHeaderLabNumber as noRegin, + +T_OrderHeaderLabNumberExt as noEX, + +CONCAT( fn_lookup_external(T_OrderHeaderLabNumber,'L')," / ",M_PatientNoReg) AS PIiD, + +CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + +M_PatientNoReg , + +M_TitleName, + +M_SexName, + +M_PatientSuffix, + +COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + +COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + +M_PatientIDNumber, + +M_PatientNote, + +COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + +M_CompanyName, + +M_CompanyAddress, + +M_CompanyPhone , + +M_CompanyEmail , + + M_CompanyPICName as M_CompanyPIC , + +M_MouName, + +T_OrderHeaderM_PatientAge, + +CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + + +CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + +T_OrderHeaderDoctorNote, + +T_OrderHeaderVerificationNote , + +T_OrderHeaderFoNote , + +T_OrderHeaderSamplingNote, + +T_OrderHeaderResultNote, + +T_OrderHeaderSubTotal, + +T_OrderHeaderRounding , + + T_OrderHeaderTotal, + +T_TestCode , + +T_PacketName as paket, + + if(T_TestName is null ,"kosong",T_TestName ) as test, + +if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + +if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + +`fn_get_test_packet`(T_PacketID) as namapaket , + +T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0) T_OrderDetailPrice , + +T_OrderDetailPriceForDisc, + +(T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0)) - + +(T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0)) T_OrderDetailTotal , + +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) diskonsatuan, + +T_OrderDetailDiscAmount , + +T_OrderDetailDiscTotal , + +T_OrderDetailTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailDisc, + +`fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + +IF(Last_StatusPaymentIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + + +CONCAT(`f_terbilang`(T_OrderHeaderTotal),"", "Rupiah") AS terbilang, + +`fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + +S_SystemsCompanyName , + +concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + +S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity,@subtot as subtot,@disc+T_OrderHeaderRounding as disc, + + `fn_get_staff`(T_OrderHeaderCreatedUserID) as M_UserUsername + + + + + + + +from t_orderheader + +left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' + + + +left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + +left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + +left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + +left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + +left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + +left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + +left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + +left join nat_test ON T_TestNat_TestID = Nat_TestID + +left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + +left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + +LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + +LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "INV" and M_No_FormIsActive = 'Y' + +left join conf_systems on S_SystemsID > 0 + + left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + + + + +where + + T_OrderHeaderID = PID + + + +and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + + and + +( + + ( + + T_OrderDetailT_TestIsPanelChildren = 'N' + + and + + ( ( T_TestIsPrintNota = 'y' ) + + or + + T_PacketIsNota = 'Y' + + ) + + ) + + or + + ( + + T_OrderDetailT_TestIsPanelChildren = 'Y' + + and + + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + + ) + +) + +order by T_OrderDetailT_TestSasCode + + + +;end $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_001ii` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_001ii`(IN `PID` int, IN `username` varchar(100)) +begin + +select sum(T_OrderDetailPrice) into @subtot +from t_orderdetail +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + +select sum(T_OrderDetailDiscTotal) into @disc +from t_orderdetail +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + +select +distinct +DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, +T_OrderHeaderID, +DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + fn_lookup_external(T_OrderHeaderLabNumber,'L') as T_OrderHeaderLabNumber, +CONCAT( fn_lookup_external(T_OrderHeaderLabNumber,'L')," / ",M_PatientNoReg) AS PIiD, +CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, +M_PatientNoReg , +M_TitleName, +M_SexName, +M_PatientSuffix, +COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, +COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, +M_PatientIDNumber, +M_PatientNote, +COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , +M_CompanyName, +M_CompanyAddress, +M_CompanyPhone , +M_CompanyEmail , +M_CompanyPIC ,M_MouName, +T_OrderHeaderM_PatientAge, +CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + +CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , +T_OrderHeaderDoctorNote, +T_OrderHeaderVerificationNote , +T_OrderHeaderFoNote , +T_OrderHeaderSamplingNote, +T_OrderHeaderResultNote, +T_OrderHeaderSubTotal, +T_OrderHeaderRounding , + T_OrderHeaderTotal, +T_TestCode , +T_PacketName as paket, + if(T_TestName is null ,"kosong",T_TestName ) as test, +if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, +if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, +`fn_get_test_packet`(T_PacketID) as namapaket , +T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0) T_OrderDetailPrice , +T_OrderDetailPriceForDisc, +(T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0)) - +(T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0)) T_OrderDetailTotal , +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) diskonsatuan, +T_OrderDetailDiscAmount , +T_OrderDetailDiscTotal , +T_OrderDetailTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailDisc, +`fn_report_promise`(T_OrderHeaderID ) AS janjihasil, +IF(Last_StatusPaymentIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + +CONCAT(`f_terbilang`(T_OrderHeaderTotal),"", "Rupiah") AS terbilang, +`fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, +S_SystemsCompanyName , +concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, +S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity,@subtot as subtot,@disc+T_OrderHeaderRounding as disc, + `fn_get_staff`(T_OrderHeaderUserID) as M_UserUsername, +Last_StatusPaymentBillTotal , +Last_StatusPaymentPaid , +Last_StatusPaymentUnpaid + + + +from t_orderheader +left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' + +left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID +left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' +left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' +left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' +left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' +left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' +left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' +left join nat_test ON T_TestNat_TestID = Nat_TestID +left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID +left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID +LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID +LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "INV" +left join conf_systems on S_SystemsID > 0 + left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + +where + T_OrderHeaderID = PID + +and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + and +( + ( + T_OrderDetailT_TestIsPanelChildren = 'N' + and + ( ( T_TestIsPrintNota = 'y' ) + or + T_PacketIsNota = 'Y' + ) + ) + or + ( + T_OrderDetailT_TestIsPanelChildren = 'Y' + and + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + ) +) +order by T_OrderDetailT_TestSasCode + +;end $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_001_eng` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_001_eng`(IN `PID` int, IN `username` varchar(100)) +begin + +select sum(T_OrderDetailPrice) into @subtot +from t_orderdetail +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + +select sum(T_OrderDetailDiscTotal) into @disc +from t_orderdetail +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + +select +distinct +DATE_FORMAT(now(), "%M %d %Y %T") AS DATENOW, +T_OrderHeaderID, +DATE_FORMAT(T_OrderHeaderDate, "%M %d %Y %T") AS T_OrderHeaderDate,T_OrderHeaderLabNumber as noRegin, +T_OrderHeaderLabNumberExt as noEX, +CONCAT( fn_lookup_external(T_OrderHeaderLabNumber,'L')," / ",M_PatientNoReg) AS PIiD, +CONCAT(M_TitleLangName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, +M_PatientNoReg , +M_TitleLangName as M_TitleName, +M_SexName, +M_PatientSuffix, +COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%M %d %Y ")) AS M_PatientDOB, +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, +COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, +M_PatientIDNumber, +M_PatientNote, +COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , +(case +when M_CompanyName = 'Pasien klinisi' then 'CLINICIAN REFERENCE' +when M_CompanyName = 'Pasien mandiri' then 'PERSONAL REQUEST' +else M_CompanyName end ) +as +M_CompanyName, +M_CompanyAddress, +M_CompanyPhone , +M_CompanyEmail , +M_CompanyPIC ,M_MouName, +REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') as T_OrderHeaderM_PatientAge, +CONCAT(REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') ," / ",M_SexCode) AS Umur, + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + +CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , +T_OrderHeaderDoctorNote, +T_OrderHeaderVerificationNote , +T_OrderHeaderFoNote , +T_OrderHeaderSamplingNote, +T_OrderHeaderResultNote, +T_OrderHeaderSubTotal, +T_OrderHeaderRounding , + T_OrderHeaderTotal, +T_TestCode , +T_PacketName as paket, + if(Nat_TestLangName is null ,"kosong",Nat_TestLangName) as test, +if (T_PacketID is null, Nat_TestLangName, T_PacketName) as T_TestNamea, +if (T_PacketID is null,concat(" ",Nat_TestLangName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, +`fn_get_test_packet`(T_PacketID) as namapaket , +T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0) T_OrderDetailPrice , +T_OrderDetailPriceForDisc, +(T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0)) - +(T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0)) T_OrderDetailTotal , +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) diskonsatuan, +T_OrderDetailDiscAmount , +T_OrderDetailDiscTotal , +T_OrderDetailTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailDisc, +`fn_report_promise`(T_OrderHeaderID ) AS janjihasil, +IF(Last_StatusPaymentIsLunas = 'N' , "NOT PAID","PAID") AS Status, + +CONCAT(`f_terbilang`(T_OrderHeaderTotal),"", "Rupiah") AS terbilang, +`fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, +S_SystemsCompanyName , +concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, +S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity,@subtot as subtot,@disc+T_OrderHeaderRounding as disc, + `fn_get_staff`(T_OrderHeaderUserID) as M_UserUsername + + + +from t_orderheader +left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' + +left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID +left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' +left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' +left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' +left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' +left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' +left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' +left join nat_test oN T_TestNat_TestID = Nat_TestID aND Nat_TestIsActive = 'Y' +left join nat_testlang on Nat_TestLangNat_TestID = Nat_TestID and Nat_testLangIsActive = 'Y' and Nat_TestLangLangID = '2' +left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID +left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID +LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID +LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "INV" +left join conf_systems on S_SystemsID > 0 + left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + +where + T_OrderHeaderID = PID + +and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + and +( + ( + T_OrderDetailT_TestIsPanelChildren = 'N' + and + ( ( T_TestIsPrintNota = 'y' ) + or + T_PacketIsNota = 'Y' + ) + ) + or + ( + T_OrderDetailT_TestIsPanelChildren = 'Y' + and + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + ) +) +order by T_OrderDetailT_TestSasCode + +;end $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_002` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_002`(IN `PID` int, IN `an` varchar(200), IN `username` varchar(100)) +begin + + + +select sum(T_OrderDetailPrice) into @subtot + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + +select sum(T_OrderDetailDiscTotal) into @disc + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + + + +select + +distinct + +DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + +T_OrderHeaderID, + +DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + + fn_lookup_external(T_OrderHeaderLabNumber,'L') T_OrderHeaderLabNumber, + +CONCAT(M_PatientNoReg," / ", fn_lookup_external(T_OrderHeaderLabNumber,'L')) AS PIiD, + +CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + +M_PatientNoReg , + +M_TitleName, + +M_SexName, + +M_PatientSuffix, + +COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + +COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + +M_PatientIDNumber, + +M_PatientNote, + +COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + +M_CompanyName, + +M_CompanyAddress, + +M_CompanyPhone , + +M_CompanyEmail , + +M_CompanyPICName ,M_MouName, + +T_OrderHeaderM_PatientAge, + +CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + + +CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + +T_OrderHeaderDoctorNote, + +T_OrderHeaderVerificationNote , + +T_OrderHeaderFoNote , + +T_OrderHeaderSamplingNote, + +T_OrderHeaderResultNote, + +T_OrderHeaderSubTotal, + +T_OrderHeaderRounding , + + T_OrderHeaderTotal, + +T_TestCode , + +T_PacketName as paket, + + if(T_TestName is null ,"kosong",T_TestName ) as test, + +if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + +if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + +`fn_get_test_packet`(T_PacketID) as namapaket , + +T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0) T_OrderDetailPrice , + +T_OrderDetailPriceForDisc, + +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailTotal , + +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) diskonsatuan, + +T_OrderDetailDiscAmount , + +T_OrderDetailDiscTotal , + +T_OrderDetailTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailDisc, + +`fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + +IF(Last_StatusPaymentIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + + +CONCAT(`f_terbilang`(T_OrderHeaderTotal),"", "Rupiah") AS terbilang, + +`fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + +S_SystemsCompanyName , + +concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + +S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity,@subtot as subtot,@disc+T_OrderHeaderRounding as disc + +,`fn_get_staff`(T_OrderHeaderCreatedUserID) as M_UserUsername + + + + + +from t_orderheader + +left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' + + + +left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + +left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + +left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + +left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + +left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + +left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + +left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + +left join nat_test ON T_TestNat_TestID = Nat_TestID + +left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + +left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + +LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + +LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "KWITANSI" + +left join conf_systems on S_SystemsID > 0 + + + +left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + + +where + + T_OrderHeaderID = PID + + + +and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + + and + +( + + ( + + T_OrderDetailT_TestIsPanelChildren = 'N' + + and + + ( ( T_TestIsPrintNota = 'y' ) + + or + + T_PacketIsNota = 'Y' + + ) + + ) + + or + + ( + + T_OrderDetailT_TestIsPanelChildren = 'Y' + + and + + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + + ) + +) + +order by T_OrderDetailT_TestSasCode + + + +;end $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_002_eng` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_002_eng`(IN `PID` int, IN `an` varchar(200), IN `username` varchar(100)) +begin + + + +select sum(T_OrderDetailPrice) into @subtot + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + +select sum(T_OrderDetailDiscTotal) into @disc + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + + + +select + +distinct + +DATE_FORMAT(now(), "%M %d %Y %T") AS DATENOW, + +T_OrderHeaderID, + +DATE_FORMAT(T_OrderHeaderDate, "%M %d %Y %T") AS T_OrderHeaderDate, + + fn_lookup_external(T_OrderHeaderLabNumber,'L') T_OrderHeaderLabNumber, + +CONCAT(M_PatientNoReg," / ", fn_lookup_external(T_OrderHeaderLabNumber,'L')) AS PIiD, + +CONCAT(M_TitleLangName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + +M_PatientNoReg , + +M_TitleLangName as M_TitleName, + +M_SexName, + +M_PatientSuffix, + +COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + +COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + +M_PatientIDNumber, + +M_PatientNote, + +COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + +(case + +when M_CompanyName = 'Pasien klinisi' then 'CLINICIAN REFERENCE' + +when M_CompanyName = 'Pasien mandiri' then 'PERSONAL REQUEST' + +else M_CompanyName end ) + +as M_CompanyName, + +M_CompanyAddress, + +M_CompanyPhone , + +M_CompanyEmail , + +M_CompanyPICName as M_CompanyPIC ,M_MouName, + +REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') as T_OrderHeaderM_PatientAge, + +CONCAT(REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') ," / ",if(M_SexCode = 'L' , 'M','F')) AS Umur, + + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + + +CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + +T_OrderHeaderDoctorNote, + +T_OrderHeaderVerificationNote , + +T_OrderHeaderFoNote , + +T_OrderHeaderSamplingNote, + +T_OrderHeaderResultNote, + +T_OrderHeaderSubTotal, + +T_OrderHeaderRounding , + + T_OrderHeaderTotal, + +T_TestCode , + +T_PacketName as paket, + + if(Nat_TestLangName is null ,"kosong",Nat_TestLangName) as test, + +if (T_PacketID is null, Nat_TestLangName, T_PacketName) as T_TestNamea, + +if (T_PacketID is null,concat(" ",Nat_TestLangName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + +`fn_get_test_packet`(T_PacketID) as namapaket , + +T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0) T_OrderDetailPrice , + +T_OrderDetailPriceForDisc, + +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailTotal , + +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) diskonsatuan, + +T_OrderDetailDiscAmount , + +T_OrderDetailDiscTotal , + +T_OrderDetailTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailDisc, + +`fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + +IF(Last_StatusPaymentIsLunas = 'N' , "NOT PAID","PAID") AS Status, + +concat( `fn_integerToWords`(T_OrderHeaderTotal)," Rupiah") AS terbilang, + +`fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + +S_SystemsCompanyName , + +concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + +S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity,@subtot as subtot,@disc+T_OrderHeaderRounding as disc + +,`fn_get_staff`(T_OrderHeaderCreatedUserID) as M_UserUsername + + + + + +from t_orderheader + +left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' + + + +left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + +left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + +left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + +left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + +left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + +left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + +left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + +left join nat_test oN T_TestNat_TestID = Nat_TestID aND Nat_TestIsActive = 'Y' + +left join nat_testlang on Nat_TestLangNat_TestID = Nat_TestID and Nat_testLangIsActive = 'Y' and Nat_TestLangLangID = '2' + +left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + +left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + +LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + +LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "KWITANSI" + +left join conf_systems on S_SystemsID > 0 + + + +left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + + +where + + T_OrderHeaderID = PID + + + +and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + + and + +( + + ( + + T_OrderDetailT_TestIsPanelChildren = 'N' + + and + + ( ( T_TestIsPrintNota = 'y' ) + + or + + T_PacketIsNota = 'Y' + + ) + + ) + + or + + ( + + T_OrderDetailT_TestIsPanelChildren = 'Y' + + and + + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + + ) + +) + +order by T_OrderDetailT_TestSasCode + + + +;end $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_003` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_003`(IN `PID` int, IN `username` varchar(100)) +BEGIN + +select F_PaymentT_OrderHeaderID into @ohid + +from + +f_payment + +where + +F_PaymentID = PID AND F_PaymentIsActive = 'Y'; + + + +select ifnull(sum(F_PaymentTotal),0) into @amountotherinvoice + +from + +f_payment + +WHERE + +F_PaymentT_OrderHeaderID = @ohid AND F_PaymentIsActive = 'Y' AND F_PaymentID < PID; + + + + + +set @count_payment_test = 0; + +select count(*) into @count_payment_test + +from f_payment + +join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and F_PaymentID=PID; + + + +if @count_payment_test = 0 then + + + + select + + distinct + + DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + + T_OrderHeaderID, + + DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + + T_OrderHeaderLabNumber, + + CONCAT(fn_lookup_external(T_OrderHeaderLabNumber,'L') ," / ",T_OrderHeaderLabNumber) AS PIiD, + +CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + + M_PatientNoReg , + + M_TitleName, + + M_SexName, + + M_PatientSuffix, + + COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + + COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + + M_PatientIDNumber, + + M_PatientNote, + + COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + + M_CompanyName, + + M_CompanyAddress, + + M_CompanyPhone , + + M_CompanyEmail , + + M_CompanyPICName as M_CompanyPIC ,M_MouName, + + T_OrderHeaderM_PatientAge, + + CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + + + CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + + T_OrderHeaderDoctorNote, + + T_OrderHeaderVerificationNote , + + T_OrderHeaderFoNote , + + T_OrderHeaderSamplingNote, + + T_OrderHeaderResultNote, + + F_Payment_OrderHeaderSubTotal as T_OrderHeaderSubTotal, + + F_Payment_OrderHeaderRounding as T_OrderHeaderRounding , + + F_Payment_OrderHeaderTotal as T_OrderHeaderTotal, + + T_TestCode , + + T_PacketName as paket, + + if(T_TestName is null ,"kosong",T_TestName ) as test, + + if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + + if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + + `fn_get_test_packet`(T_PacketID) as namapaket , + + T_OrderDetailPrice + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) T_OrderDetailPrice , + + T_OrderDetailPriceForDisc, + + T_OrderDetailDisc + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDisc, + + T_OrderDetailDiscAmount , + + T_OrderDetailDiscTotal + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDiscTotal , + + T_OrderDetailTotal + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) - fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailTotal, + + `fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + + IF(F_Payment_OrderHeaderIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + + + CONCAT(`f_terbilang`(F_PaymentTotal),"", "Rupiah")AS terbilang, + + F_PaymentID, + + F_PaymentT_OrderHeaderID, + + F_PaymentDate, + + F_PaymentNumber , + + F_PaymentTotal, + + `fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + + S_SystemsCompanyName , + + concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + + S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity, + + `fn_get_count_payment`(F_PaymentID) as idd, + + if(`fn_get_count_payment`(F_PaymentID) = '0', (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) , + + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0))as kurangbayarr , + + + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal , + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as subsubtotal_header, + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal - F_Payment_OrderHeaderRounding , + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) - F_Payment_OrderHeaderRounding) as grandtotal_header, + + if(`fn_get_count_payment`(F_PaymentID) = '0','0', + + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as biayaadmin_header, + + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as kurangbayar, + + ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as administasi, + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as subtotalbaru, + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) -F_Payment_OrderHeaderRounding as grandtotalbaru,`fn_get_staff`(F_PaymentM_UserID) as M_UserUsername, + +if(fn_kirim_wa(T_OrderHeaderID) = "" , "", concat("Kami menyetujui bahwa hasil pemeriksaan dikirim melalui media elektronik WhatsApp No." ,`fn_kirim_wa`(T_OrderHeaderID))) as WA + + + +from t_orderheader + + left join f_payment ON F_PaymentT_OrderHeaderID = T_OrderHeaderID AND F_PaymentIsActive = 'Y' + + left join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and T_OrderHeaderID = @ohid + + left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID + + and ( + + F_Payment_TestT_OrderDetailID = T_OrderDetailID + + or + + ( T_OrderDetailT_TestIsPanel = 'Y' and T_OrderDetailT_TestID = 0 ) + + ) + + + + left join f_payment_orderheader on F_Payment_OrderHeaderF_PaymentID = F_PaymentID + + left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + + left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + + left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + + left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + + left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + + left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + + left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + + left join nat_test ON T_TestNat_TestID = Nat_TestID + + left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + + left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + + LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + + LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" + + left join m_user on F_PaymentM_UserID = M_UserID + + left join conf_systems on S_SystemsID > 0 + +left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + where + + F_PaymentID = PID ; + +else + + select + + distinct + + DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + + T_OrderHeaderID, + + DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + + T_OrderHeaderLabNumber, + + CONCAT(fn_lookup_external(T_OrderHeaderLabNumber,'L') ," / ",T_OrderHeaderLabNumber) AS PIiD, + +CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + + M_PatientNoReg , + + M_TitleName, + + M_SexName, + + M_PatientSuffix, + + COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + + COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + + M_PatientIDNumber, + + M_PatientNote, + + COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + + M_CompanyName, + + M_CompanyAddress, + + M_CompanyPhone , + + M_CompanyEmail , + + M_CompanyPICName as M_CompanyPIC ,M_MouName, + + T_OrderHeaderM_PatientAge, + + CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + + + CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + + T_OrderHeaderDoctorNote, + + T_OrderHeaderVerificationNote , + + T_OrderHeaderFoNote , + + T_OrderHeaderSamplingNote, + + T_OrderHeaderResultNote, + + F_Payment_OrderHeaderSubTotal as T_OrderHeaderSubTotal, + + F_Payment_OrderHeaderRounding as T_OrderHeaderRounding , + + F_Payment_OrderHeaderTotal as T_OrderHeaderTotal, + + T_TestCode , + + T_PacketName as paket, + + if(T_TestName is null ,"kosong",T_TestName ) as test, + + if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + + if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + + `fn_get_test_packet`(T_PacketID) as namapaket , + + T_OrderDetailPrice + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) T_OrderDetailPrice , + + T_OrderDetailPriceForDisc, + + T_OrderDetailDisc + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDisc, + + T_OrderDetailDiscAmount , + + T_OrderDetailDiscTotal + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDiscTotal , + + T_OrderDetailTotal + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) - fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailTotal, + + `fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + + IF(F_Payment_OrderHeaderIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + + + CONCAT(`f_terbilang`(F_PaymentTotal),"", "Rupiah")AS terbilang, + + F_PaymentID, + + F_PaymentT_OrderHeaderID, + + F_PaymentDate, + + F_PaymentNumber , + + F_PaymentTotal, + + `fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + + S_SystemsCompanyName , + + concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + + S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity, + + `fn_get_count_payment`(F_PaymentID) as idd, + + if(`fn_get_count_payment`(F_PaymentID) = '0', (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) , + + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0))as kurangbayarr , + + + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal , + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as subsubtotal_header, + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal - F_Payment_OrderHeaderRounding , + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) - F_Payment_OrderHeaderRounding) as grandtotal_header, + + if(`fn_get_count_payment`(F_PaymentID) = '0','0', + + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as biayaadmin_header, + + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as kurangbayar, + + ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as administasi, + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as subtotalbaru, + + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) -F_Payment_OrderHeaderRounding as grandtotalbaru,`fn_get_staff`(F_PaymentM_UserID) as M_UserUsername, + +if(fn_kirim_wa(T_OrderHeaderID)= "" , "", concat("Kami menyetujui bahwa hasil pemeriksaan dikirim melalui media elektronik WhatsApp No." ,`fn_kirim_wa`(T_OrderHeaderID))) as WA + + + + from t_orderheader + + left join f_payment ON F_PaymentT_OrderHeaderID = T_OrderHeaderID AND F_PaymentIsActive = 'Y' + + join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and T_OrderHeaderID = @ohid + + left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID + + and ( + + F_Payment_TestT_OrderDetailID = T_OrderDetailID + + or + + ( T_OrderDetailT_TestIsPanel = 'Y' and T_OrderDetailT_TestID = 0 ) + + ) + + + + left join f_payment_orderheader on F_Payment_OrderHeaderF_PaymentID = F_PaymentID + + left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + + left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + + left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + + left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + + left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + + left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + + left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + + left join nat_test ON T_TestNat_TestID = Nat_TestID + + left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + + left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + + LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + + LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" + + left join m_user on F_PaymentM_UserID = M_UserID + + left join conf_systems on S_SystemsID > 0 + +left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + where + + F_PaymentID = PID + + + + and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + + and + + ( + + ( + + T_OrderDetailT_TestIsPanelChildren = 'N' + + and + + ( ( T_TestIsPrintNota = 'y' ) + + or + + T_PacketIsNota = 'Y' + + ) + + ) + + or + + ( + + T_OrderDetailT_TestIsPanelChildren = 'Y' + + and + + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + + ) + + ) + + order by T_OrderDetailT_TestSasCode + + ; + + + +end if; + +END $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_003x` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_003x`(IN `PID` int, IN `username` varchar(100)) +BEGIN +select F_PaymentT_OrderHeaderID into @ohid +from +f_payment +where +F_PaymentID = PID AND F_PaymentIsActive = 'Y'; + +select ifnull(sum(F_PaymentTotal),0) into @amountotherinvoice +from +f_payment +WHERE +F_PaymentT_OrderHeaderID = @ohid AND F_PaymentIsActive = 'Y' AND F_PaymentID < PID; + + +set @count_payment_test = 0; +select count(*) into @count_payment_test +from f_payment +join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and F_PaymentID=PID; + +if @count_payment_test = 0 then + + select + distinct + DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + T_OrderHeaderID, + DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + fn_lookup_external(T_OrderHeaderLabNumber,'L') T_OrderHeaderLabNumber, + CONCAT(T_OrderHeaderLabNumber," / ",M_PatientNoReg) AS PIiD, + CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + M_PatientNoReg , + M_TitleName, + M_SexName, + M_PatientSuffix, + COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + M_PatientIDNumber, + M_PatientNote, + COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + M_CompanyName, + M_CompanyAddress, + M_CompanyPhone , + M_CompanyEmail , + M_CompanyPIC ,M_MouName, + T_OrderHeaderM_PatientAge, + CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix) AS M_DoctorName, + + CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + T_OrderHeaderDoctorNote, + T_OrderHeaderVerificationNote , + T_OrderHeaderFoNote , + T_OrderHeaderSamplingNote, + T_OrderHeaderResultNote, + F_Payment_OrderHeaderSubTotal as T_OrderHeaderSubTotal, + F_Payment_OrderHeaderRounding as T_OrderHeaderRounding , + F_Payment_OrderHeaderTotal as T_OrderHeaderTotal, + T_TestCode , + T_PacketName as paket, + if(T_TestName is null ,"kosong",T_TestName ) as test, + if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + `fn_get_test_packet`(T_PacketID) as namapaket , + T_OrderDetailPrice + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) T_OrderDetailPrice , + T_OrderDetailPriceForDisc, + T_OrderDetailDisc + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDisc, + T_OrderDetailDiscAmount , + T_OrderDetailDiscTotal , + T_OrderDetailTotal + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) - fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailTotal, + `fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + IF(F_Payment_OrderHeaderIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + CONCAT(`f_terbilang`(F_PaymentTotal),"", "Rupiah")AS terbilang, + F_PaymentID, + F_PaymentT_OrderHeaderID, + F_PaymentDate, + F_PaymentNumber , + F_PaymentTotal, + `fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + S_SystemsCompanyName , + concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity, + `fn_get_count_payment`(F_PaymentID) as idd, + if(`fn_get_count_payment`(F_PaymentID) = '0', (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) , + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0))as kurangbayarr , + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as subsubtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal - F_Payment_OrderHeaderRounding , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) - F_Payment_OrderHeaderRounding) as grandtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0','0', + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as biayaadmin_header, + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as kurangbayar, + ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as administasi, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as subtotalbaru, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) -F_Payment_OrderHeaderRounding as grandtotalbaru + from t_orderheader + left join f_payment ON F_PaymentT_OrderHeaderID = T_OrderHeaderID AND F_PaymentIsActive = 'Y' + left join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and T_OrderHeaderID = @ohid + left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID + and ( + F_Payment_TestT_OrderDetailID = T_OrderDetailID + or + ( T_OrderDetailT_TestIsPanel = 'Y' and T_OrderDetailT_TestID = 0 ) + ) + + left join f_payment_orderheader on F_Payment_OrderHeaderF_PaymentID = F_PaymentID + left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + left join nat_test ON T_TestNat_TestID = Nat_TestID + left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" + left join conf_systems on S_SystemsID > 0 + + where + F_PaymentID = PID ; +else + select + distinct + DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + T_OrderHeaderID, + DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + fn_lookup_external(T_OrderHeaderLabNumber,'L') T_OrderHeaderLabNumber, + CONCAT(T_OrderHeaderLabNumber," / ",M_PatientNoReg) AS PIiD, + CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + M_PatientNoReg , + M_TitleName, + M_SexName, + M_PatientSuffix, + COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + M_PatientIDNumber, + M_PatientNote, + COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + M_CompanyName, + M_CompanyAddress, + M_CompanyPhone , + M_CompanyEmail , + M_CompanyPIC ,M_MouName, + T_OrderHeaderM_PatientAge, + CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix) AS M_DoctorName, + + CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + T_OrderHeaderDoctorNote, + T_OrderHeaderVerificationNote , + T_OrderHeaderFoNote , + T_OrderHeaderSamplingNote, + T_OrderHeaderResultNote, + F_Payment_OrderHeaderSubTotal as T_OrderHeaderSubTotal, + F_Payment_OrderHeaderRounding as T_OrderHeaderRounding , + F_Payment_OrderHeaderTotal as T_OrderHeaderTotal, + T_TestCode , + T_PacketName as paket, + if(T_TestName is null ,"kosong",T_TestName ) as test, + if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + `fn_get_test_packet`(T_PacketID) as namapaket , + T_OrderDetailPrice + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) T_OrderDetailPrice , + T_OrderDetailPriceForDisc, + T_OrderDetailDisc + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDisc, + T_OrderDetailDiscAmount , + T_OrderDetailDiscTotal , + T_OrderDetailTotal + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) - fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailTotal, + `fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + IF(F_Payment_OrderHeaderIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + CONCAT(`f_terbilang`(F_PaymentTotal),"", "Rupiah")AS terbilang, + F_PaymentID, + F_PaymentT_OrderHeaderID, + F_PaymentDate, + F_PaymentNumber , + F_PaymentTotal, + `fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + S_SystemsCompanyName , + concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity, + `fn_get_count_payment`(F_PaymentID) as idd, + if(`fn_get_count_payment`(F_PaymentID) = '0', (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) , + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0))as kurangbayarr , + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as subsubtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal - F_Payment_OrderHeaderRounding , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) - F_Payment_OrderHeaderRounding) as grandtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0','0', + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as biayaadmin_header, + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as kurangbayar, + ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as administasi, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as subtotalbaru, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) -F_Payment_OrderHeaderRounding as grandtotalbaru + from t_orderheader + left join f_payment ON F_PaymentT_OrderHeaderID = T_OrderHeaderID AND F_PaymentIsActive = 'Y' + join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and T_OrderHeaderID = @ohid + left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID + and ( + F_Payment_TestT_OrderDetailID = T_OrderDetailID + or + ( T_OrderDetailT_TestIsPanel = 'Y' and T_OrderDetailT_TestID = 0 ) + ) + + left join f_payment_orderheader on F_Payment_OrderHeaderF_PaymentID = F_PaymentID + left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + left join nat_test ON T_TestNat_TestID = Nat_TestID + left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" + left join conf_systems on S_SystemsID > 0 + + where + F_PaymentID = PID + + and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + and + ( + ( + T_OrderDetailT_TestIsPanelChildren = 'N' + and + ( ( T_TestIsPrintNota = 'y' ) + or + T_PacketIsNota = 'Y' + ) + ) + or + ( + T_OrderDetailT_TestIsPanelChildren = 'Y' + and + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + ) + ) + order by T_OrderDetailT_TestSasCode + ; + +end if; +END $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_003_eng` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_003_eng`(IN `PID` int, IN `username` varchar(100)) +BEGIN +select F_PaymentT_OrderHeaderID into @ohid +from +f_payment +where +F_PaymentID = PID AND F_PaymentIsActive = 'Y'; + +select ifnull(sum(F_PaymentTotal),0) into @amountotherinvoice +from +f_payment +WHERE +F_PaymentT_OrderHeaderID = @ohid AND F_PaymentIsActive = 'Y' AND F_PaymentID < PID; + + +set @count_payment_test = 0; +select count(*) into @count_payment_test +from f_payment +join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and F_PaymentID=PID; + +if @count_payment_test = 0 then + + select + distinct + DATE_FORMAT(now(), "%M %d %Y %T") AS DATENOW, + T_OrderHeaderID, + DATE_FORMAT(T_OrderHeaderDate, "%M %d %Y %T") AS T_OrderHeaderDate, + fn_lookup_external(T_OrderHeaderLabNumber,'L') T_OrderHeaderLabNumber, + CONCAT(fn_lookup_external(T_OrderHeaderLabNumber,'L') ," / ",T_OrderHeaderLabNumber) AS PIiD, +CONCAT(M_TitleLangName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + M_PatientNoReg , + M_TitleName, + M_SexName, + M_PatientSuffix, + COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + M_PatientIDNumber, + M_PatientNote, + COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + (case +when M_CompanyName = 'Pasien klinisi' then 'CLINICIAN REFERENCE' +when M_CompanyName = 'Pasien mandiri' then 'PERSONAL REQUEST' +else M_CompanyName end ) +as M_CompanyName, + M_CompanyAddress, + M_CompanyPhone , + M_CompanyEmail , + M_CompanyPIC ,M_MouName, + REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') as T_OrderHeaderM_PatientAge, + CONCAT(REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') ," / ",M_SexCode) AS Umur, + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + T_OrderHeaderDoctorNote, + T_OrderHeaderVerificationNote , + T_OrderHeaderFoNote , + T_OrderHeaderSamplingNote, + T_OrderHeaderResultNote, + F_Payment_OrderHeaderSubTotal as T_OrderHeaderSubTotal, + F_Payment_OrderHeaderRounding as T_OrderHeaderRounding , + F_Payment_OrderHeaderTotal as T_OrderHeaderTotal, + T_TestCode , + T_PacketName as paket, + if(Nat_TestLangName is null ,"kosong",Nat_TestLangName ) as test, + if (T_PacketID is null, Nat_TestLangName, T_PacketName) as T_TestNamea, + if (T_PacketID is null,concat(" ",Nat_TestLangName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + `fn_get_test_packet`(T_PacketID) as namapaket , + T_OrderDetailPrice + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) T_OrderDetailPrice , + T_OrderDetailPriceForDisc, + T_OrderDetailDisc + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDisc, + T_OrderDetailDiscAmount , + T_OrderDetailDiscTotal + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDiscTotal , + T_OrderDetailTotal + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) - fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailTotal, + `fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + IF(F_Payment_OrderHeaderIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + CONCAT(`f_terbilang`(F_PaymentTotal),"", "Rupiah")AS terbilang, + F_PaymentID, + F_PaymentT_OrderHeaderID, + F_PaymentDate, + F_PaymentNumber , + F_PaymentTotal, + `fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + S_SystemsCompanyName , + concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity, + `fn_get_count_payment`(F_PaymentID) as idd, + if(`fn_get_count_payment`(F_PaymentID) = '0', (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) , + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0))as kurangbayarr , + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as subsubtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal - F_Payment_OrderHeaderRounding , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) - F_Payment_OrderHeaderRounding) as grandtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0','0', + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as biayaadmin_header, + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as kurangbayar, + ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as administasi, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as subtotalbaru, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) -F_Payment_OrderHeaderRounding as grandtotalbaru,`fn_get_staff`(F_PaymentM_UserID) as M_UserUsername, +if(fn_kirim_wa(T_OrderHeaderID) = "" , "", concat("Kami menyetujui bahwa hasil pemeriksaan dikirim melalui media elektronik WhatsApp No." ,`fn_kirim_wa`(T_OrderHeaderID))) as WA + +from t_orderheader + left join f_payment ON F_PaymentT_OrderHeaderID = T_OrderHeaderID AND F_PaymentIsActive = 'Y' + left join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and T_OrderHeaderID = @ohid + left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID + and ( + F_Payment_TestT_OrderDetailID = T_OrderDetailID + or + ( T_OrderDetailT_TestIsPanel = 'Y' and T_OrderDetailT_TestID = 0 ) + ) + + left join f_payment_orderheader on F_Payment_OrderHeaderF_PaymentID = F_PaymentID + left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' +left join nat_test oN T_TestNat_TestID = Nat_TestID aND Nat_TestIsActive = 'Y' +left join nat_testlang on Nat_TestLangNat_TestID = Nat_TestID and Nat_testLangIsActive = 'Y' and Nat_TestLangLangID = '2' + left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" + left join m_user on F_PaymentM_UserID = M_UserID + left join conf_systems on S_SystemsID > 0 +left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + where + F_PaymentID = PID ; +else + select + distinct + DATE_FORMAT(now(), "%M %d %Y %T") AS DATENOW, + T_OrderHeaderID, + DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + fn_lookup_external(T_OrderHeaderLabNumber,'L') T_OrderHeaderLabNumber, + CONCAT(fn_lookup_external(T_OrderHeaderLabNumber,'L') ," / ",T_OrderHeaderLabNumber) AS PIiD, +CONCAT(M_TitleLangName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + M_PatientNoReg , + M_TitleName, + M_SexName, + M_PatientSuffix, + COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%M %d %Y %T")) AS M_PatientDOB, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + M_PatientIDNumber, + M_PatientNote, + COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + (case +when M_CompanyName = 'Pasien klinisi' then 'CLINICIAN REFERENCE' +when M_CompanyName = 'Pasien mandiri' then 'PERSONAL REQUEST' +else M_CompanyName end ) +as M_CompanyName, + M_CompanyAddress, + M_CompanyPhone , + M_CompanyEmail , + M_CompanyPIC ,M_MouName, + REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') as T_OrderHeaderM_PatientAge, + CONCAT(REPLACE(REPLACE(REPLACE(T_OrderHeaderM_PatientAge, 'tahun', 'year') , 'bulan', 'month') , 'hari', 'days') ," / ",M_SexCode) AS Umur, + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + T_OrderHeaderDoctorNote, + T_OrderHeaderVerificationNote , + T_OrderHeaderFoNote , + T_OrderHeaderSamplingNote, + T_OrderHeaderResultNote, + F_Payment_OrderHeaderSubTotal as T_OrderHeaderSubTotal, + F_Payment_OrderHeaderRounding as T_OrderHeaderRounding , + F_Payment_OrderHeaderTotal as T_OrderHeaderTotal, + T_TestCode , + T_PacketName as paket, + if(Nat_TestLangName is null ,"kosong",Nat_TestLangName ) as test, + if (T_PacketID is null, Nat_TestLangName, T_PacketName) as T_TestNamea, + if (T_PacketID is null,concat(" ",Nat_TestLangName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + `fn_get_test_packet`(T_PacketID) as namapaket , + T_OrderDetailPrice + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) T_OrderDetailPrice , + T_OrderDetailPriceForDisc, + T_OrderDetailDisc + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDisc, + T_OrderDetailDiscAmount , + T_OrderDetailDiscTotal + fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailDiscTotal , + T_OrderDetailTotal + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID) - fn_rpt_profile_child_disc(F_PaymentID, T_OrderDetailID) T_OrderDetailTotal, + `fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + IF(F_Payment_OrderHeaderIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + CONCAT(`f_terbilang`(F_PaymentTotal),"", "Rupiah")AS terbilang, + F_PaymentID, + F_PaymentT_OrderHeaderID, + F_PaymentDate, + F_PaymentNumber , + F_PaymentTotal, + `fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + S_SystemsCompanyName , + concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity, + `fn_get_count_payment`(F_PaymentID) as idd, + if(`fn_get_count_payment`(F_PaymentID) = '0', (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) , + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0))as kurangbayarr , + + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as subsubtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0',F_Payment_OrderHeaderSubTotal - F_Payment_OrderHeaderRounding , + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) - F_Payment_OrderHeaderRounding) as grandtotal_header, + if(`fn_get_count_payment`(F_PaymentID) = '0','0', + ifnull(`fn_get_potongan_header`(T_OrderHeaderID ),0) ) as biayaadmin_header, + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as kurangbayar, + ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as administasi, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) as subtotalbaru, + F_Payment_OrderHeaderSubTotal +ifnull(`fn_get_potongan`(T_OrderHeaderID , F_PaymentID),0) -F_Payment_OrderHeaderRounding as grandtotalbaru,`fn_get_staff`(F_PaymentM_UserID) as M_UserUsername, +if(fn_kirim_wa(T_OrderHeaderID)= "" , "", concat("Kami menyetujui bahwa hasil pemeriksaan dikirim melalui media elektronik WhatsApp No." ,`fn_kirim_wa`(T_OrderHeaderID))) as WA + + from t_orderheader + left join f_payment ON F_PaymentT_OrderHeaderID = T_OrderHeaderID AND F_PaymentIsActive = 'Y' + join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID and T_OrderHeaderID = @ohid + left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID + and ( + F_Payment_TestT_OrderDetailID = T_OrderDetailID + or + ( T_OrderDetailT_TestIsPanel = 'Y' and T_OrderDetailT_TestID = 0 ) + ) + + left join f_payment_orderheader on F_Payment_OrderHeaderF_PaymentID = F_PaymentID + left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' +left join nat_test oN T_TestNat_TestID = Nat_TestID aND Nat_TestIsActive = 'Y' +left join nat_testlang on Nat_TestLangNat_TestID = Nat_TestID and Nat_testLangIsActive = 'Y' and Nat_TestLangLangID = '2' + left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" + left join m_user on F_PaymentM_UserID = M_UserID + left join conf_systems on S_SystemsID > 0 +left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + where + F_PaymentID = PID + + and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + and + ( + ( + T_OrderDetailT_TestIsPanelChildren = 'N' + and + ( ( T_TestIsPrintNota = 'y' ) + or + T_PacketIsNota = 'Y' + ) + ) + or + ( + T_OrderDetailT_TestIsPanelChildren = 'Y' + and + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + ) + ) + order by T_OrderDetailT_TestSasCode + ; + +end if; +END $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_003_pe` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_003_pe`(IN `PID` int, IN `username` varchar(100)) + READS SQL DATA +BEGIN + set @ohid =null; + select F_PaymentT_OrderHeaderID into @ohid + from + f_payment + where + F_PaymentID = PID AND F_PaymentIsActive = 'Y'; + + select ifnull(sum(F_PaymentTotal),0) into @amountotherinvoice + from + f_payment + WHERE + F_PaymentT_OrderHeaderID = @ohid AND F_PaymentIsActive = 'Y' AND F_PaymentID < PID; + + select + distinct + F_PaymentID, T_OrderDetailID, + fn_rpt_profile_child_amount(F_PaymentID, T_OrderDetailID), + DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + T_OrderHeaderID, + DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + T_OrderHeaderLabNumber, + CONCAT(T_OrderHeaderLabNumber," / ",M_PatientNoReg) AS PIiD, + CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + M_PatientNoReg , + M_TitleName, + M_SexName, + M_PatientSuffix, + COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + M_PatientIDNumber, + M_PatientNote, + COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + M_CompanyName, + M_CompanyAddress, + M_CompanyPhone , + M_CompanyEmail , + M_CompanyPIC ,M_MouName, + T_OrderHeaderM_PatientAge, + CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix) AS M_DoctorName, + + CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + T_OrderHeaderDoctorNote, + T_OrderHeaderVerificationNote , + T_OrderHeaderFoNote , + T_OrderHeaderSamplingNote, + T_OrderHeaderResultNote, + F_Payment_OrderHeaderSubTotal as T_OrderHeaderSubTotal, + F_Payment_OrderHeaderRounding as T_OrderHeaderRounding , + F_Payment_OrderHeaderTotal as T_OrderHeaderTotal, + T_TestCode , + T_PacketName as paket, + if(T_TestName is null ,"kosong",T_TestName ) as test, + if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + `fn_get_test_packet`(T_PacketID) as namapaket , + T_OrderDetailPrice, + T_OrderDetailPriceForDisc, + T_OrderDetailDisc , + T_OrderDetailDiscAmount , + T_OrderDetailDiscTotal , + T_OrderDetailTotal, + `fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + IF(Last_StatusPaymentIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + CONCAT(`f_terbilang`(F_PaymentTotal),"", "Rupiah")AS terbilang, + F_PaymentID, + F_PaymentT_OrderHeaderID, + F_PaymentDate, + F_PaymentNumber , + F_PaymentTotal, + `fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + S_SystemsCompanyName , + concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity, + (F_Payment_OrderHeaderTotal -ifnull(@amountotherinvoice,0)-F_PaymentTotal) as kurangbayar + + + + from t_orderheader + join f_payment ON F_PaymentT_OrderHeaderID = T_OrderHeaderID AND F_PaymentIsActive = 'Y' + and T_OrderHeaderID = @ohid + join f_payment_test on F_Payment_TestF_PaymentID = F_PaymentID + join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID + and ( + F_Payment_TestT_OrderDetailID = T_OrderDetailID + or + T_OrderDetailT_TestID = 0 + ) + left join f_payment_orderheader on F_Payment_OrderHeaderF_PaymentID = F_PaymentID + left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" + left join conf_systems on S_SystemsID > 0 + + where + F_PaymentID = PID + + and + ( + ( + T_OrderDetailT_TestIsPanelChildren = 'N' + and + ( T_TestIsPrintNota = 'y' + or + T_PacketIsNota = 'Y' + ) + ) + or + ( + T_OrderDetailT_TestIsPanelChildren = 'Y' + and + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + ) + ) + order by T_OrderDetailT_TestSasCode ; +END $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_006` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_006`(IN `PID` int, IN `username` varchar(100)) +begin + + + +select sum(T_OrderDetailPrice) into @subtot + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + +select sum(T_OrderDetailDiscTotal) into @disc + +from t_orderdetail + +where T_OrderDetailT_OrderHeaderID = PID and T_OrderDetailIsActive = 'Y' limit 1; + + + + + +select + +distinct + +DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, + +T_OrderHeaderID, + +DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, + + fn_lookup_external(T_OrderHeaderLabNumber,'L') T_OrderHeaderLabNumber, + +T_OrderHeaderLabNumber as noRegin, + +CONCAT(M_PatientNoReg," / ", fn_lookup_external(T_OrderHeaderLabNumber,'L')) AS PIiD, + +CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, + +M_PatientNoReg , + +M_TitleName, + +M_SexName, + +M_PatientSuffix, + +COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, + +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, + +COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, + +M_PatientIDNumber, + +M_PatientNote, + +COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , + +M_CompanyName, + +M_CompanyAddress, + +M_CompanyPhone , + +M_CompanyEmail , + +IFNULL(M_CompanyPICName, '-') as M_CompanyPIC, + +M_MouName, + +T_OrderHeaderM_PatientAge, + +CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + + + +CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , + +T_OrderHeaderDoctorNote, + +T_OrderHeaderVerificationNote , + +T_OrderHeaderFoNote , + +T_OrderHeaderSamplingNote, + +T_OrderHeaderResultNote, + +T_OrderHeaderSubTotal, + +T_OrderHeaderRounding , + + T_OrderHeaderTotal, + +T_TestCode , + +T_PacketName as paket, + + if(T_TestName is null ,"kosong",T_TestName ) as test, + +if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, + +if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, + +`fn_get_test_packet`(T_PacketID) as namapaket , + +T_OrderDetailPrice +ifnull( fn_rpt_profile_child_amount_header(T_OrderDetailID),0) T_OrderDetailPrice , + +T_OrderDetailPriceForDisc, + +T_OrderDetailTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailTotal , + +T_OrderDetailDiscTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) diskonsatuan, + +T_OrderDetailDiscAmount , + +T_OrderDetailDiscTotal , + +T_OrderDetailTotal + ifnull(fn_rpt_profile_child_disc_header(T_OrderDetailID),0) T_OrderDetailDisc, + +`fn_report_promise`(T_OrderHeaderID ) AS janjihasil, + +IF(Last_StatusPaymentIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + + + +CONCAT(`f_terbilang`(T_OrderHeaderTotal),"", "Rupiah") AS terbilang, + +`fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, + +S_SystemsCompanyName , + +concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, + +S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity,@subtot as subtot,@disc+T_OrderHeaderRounding as disc + +,`fn_get_staff`(T_OrderHeaderCreatedUserID) as M_UserUsername, + +if(fn_kirim_wa(T_OrderHeaderID) = "" , "", concat("Kami menyetujui bahwa hasil pemeriksaan dikirim melalui media elektronik WhatsApp No." ,`fn_kirim_wa`(T_OrderHeaderID))) as WA + + + + + +from t_orderheader + +left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID and T_OrderDetailIsActive = 'Y' + + + +left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID + +left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' + +left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' + +left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' + +left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' + +left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' + +left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' + +left join nat_test ON T_TestNat_TestID = Nat_TestID + +left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID + +left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID + +LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID + +LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "BP" + +left join conf_systems on S_SystemsID > 0 + + left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + + + + +where + + T_OrderHeaderID = PID + + + +and ( Nat_TestPriceSumToNat_TestID = 0 or Nat_TestPriceSumToNat_TestID is null ) + + and + +( + + ( + + T_OrderDetailT_TestIsPanelChildren = 'N' + + and + + ( ( T_TestIsPrintNota = 'y' ) + + or + + T_PacketIsNota = 'Y' + + ) + + ) + + or + + ( + + T_OrderDetailT_TestIsPanelChildren = 'Y' + + and + + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + + ) + +) + +order by T_OrderDetailT_TestSasCode + + + +;end $$ + +DROP PROCEDURE IF EXISTS `sp_rpt_t_006x` $$ +CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_rpt_t_006x`(IN `PID` int, IN `username` varchar(100)) +BEGIN +select sum(T_OrderDetailPrice) into @subtot +from t_orderdetail +where T_OrderDetailT_OrderHeaderID = PID limit 1; + +select sum(T_OrderDetailDiscTotal) into @disc +from t_orderdetail +where T_OrderDetailT_OrderHeaderID = PID limit 1; + +select +DATE_FORMAT(now(), "%d-%m-%Y %T") AS DATENOW, +T_OrderHeaderID, +DATE_FORMAT(T_OrderHeaderDate, "%d-%m-%Y %T") AS T_OrderHeaderDate, +T_OrderHeaderLabNumber, +CONCAT(T_OrderHeaderLabNumber," / ",M_PatientNoReg) AS PID, +CONCAT(M_TitleName," ",ifnull(M_PatientPrefix,'')," ",COALESCE(NULLIF(ppc.ppc_name,''), M_PatientName)," ",ifnull(M_PatientSuffix,'')) AS M_PatientName, +M_PatientNoReg , + +M_TitleName, +M_SexName, +M_PatientSuffix, +COALESCE(NULLIF(ppc.ppc_dob,''), DATE_FORMAT(M_PatientDOB, "%d-%m-%Y")) AS M_PatientDOB, +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientHP) AS M_PatientHP, +COALESCE(NULLIF(ppc.ppc_hp,''), M_PatientPhone) AS M_PatientPhone, +COALESCE(NULLIF(ppc.ppc_email,''), M_PatientEmail) AS M_PatientEmail, +M_PatientIDNumber, +M_PatientNote, +COALESCE(NULLIF(ppc.ppc_address,''), (SELECT concat(M_PatientAddressDescription," ",M_KelurahanName," ",M_DistrictName," ",M_CityName) from m_patientaddress AS p + left join (select regional_cd, regional_nm as M_KelurahanName, pro_cd, kab_cd, kec_cd from regional) reg_kel on NULLIF(TRIM(M_PatientAddressRegionalCd), "") = reg_kel.regional_cd +left join (select regional_cd, regional_nm as M_DistrictName from regional) reg_kec on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, reg_kel.kec_cd, "000") = reg_kec.regional_cd +left join (select regional_cd, regional_nm as M_CityName from regional) reg_kab on CONCAT(reg_kel.pro_cd, reg_kel.kab_cd, "000000") = reg_kab.regional_cd +left join (select regional_cd, regional_nm as M_ProvinceName from regional) reg_pro on CONCAT(reg_kel.pro_cd, "00000000") = reg_pro.regional_cd + WHERE M_PatientAddressM_PatientID = M_PatientID + ORDER BY M_PatientAddressM_PatientID + LIMIT 1)) AS M_PatientAddressDescription , +M_CompanyName, +M_CompanyAddress, +M_CompanyPhone , +M_CompanyEmail , +M_CompanyPIC ,M_MouName, +T_OrderHeaderM_PatientAge, +CONCAT(T_OrderHeaderM_PatientAge," / ",M_SexCode) AS Umur, + if(T_OrderHeaderAddOnAliasDoctorName is null or T_OrderHeaderAddOnAliasDoctorName = '' ,CONCAT(p.M_DoctorPrefix," ",p.M_DoctorName," ",p.M_DoctorSufix," ",p.M_DoctorSufix2),T_OrderHeaderAddOnAliasDoctorName) AS M_DoctorName, + +CONCAT(pj.M_DoctorPrefix," ",pj.M_DoctorName," ",pj.M_DoctorSufix) AS DokterPJ , +T_OrderHeaderDoctorNote, +T_OrderHeaderVerificationNote , +T_OrderHeaderFoNote , +T_OrderHeaderSamplingNote, +T_OrderHeaderResultNote, +T_OrderHeaderSubTotal, +T_OrderHeaderRounding , + T_OrderHeaderTotal, +T_TestCode , +T_PacketName as paket, + if(T_TestName is null ,"kosong",T_TestName ) as test, +if (T_PacketID is null, T_TestName, T_PacketName) as T_TestNamea, +if (T_PacketID is null,concat(" ",T_TestName), ifnull( concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)),"")) as T_TestName, + concat(T_PacketName,"
",`fn_get_test_packet`(T_PacketID)) as testpaket, +`fn_get_test_packet`(T_PacketID) as namapaket , +T_OrderDetailPrice, +T_OrderDetailPriceForDisc, +T_OrderDetailDisc , +T_OrderDetailDiscAmount , +T_OrderDetailDiscTotal , +T_OrderDetailTotal, +`fn_report_promise`(T_OrderHeaderID ) AS janjihasil, +IF(Last_StatusPaymentIsLunas = 'N' , "BELUM LUNAS","LUNAS") AS Status, + +`fn_get_delivery_patient`(T_OrderHeaderID) as alamatkirim, +S_SystemsCompanyName , +concat(S_SystemsCompanyAddress," ",S_SystemsCompanyCity," ",S_SystemsCompanyCityFooter," Telp. ", S_SystemsCompanyPhone," Fax. ", S_SystemsCompanyFax) as alamatcabang, +S_SystemsEmailAddress,M_No_FormRev,S_SystemsCompanyCity +,@subtot as subtot,@disc+T_OrderHeaderRounding as disc + + + +from t_orderheader +left join t_orderdetail on T_OrderHeaderID = T_OrderDetailT_OrderHeaderID +left join m_patient ON T_OrderHeaderM_PatientID = M_PatientID AND M_PatientIsActive = 'Y' +LEFT JOIN patient_print_cache ppc ON ppc.ppc_order_id = T_OrderHeaderID +left join m_title ON M_PatientM_TitleID = M_TitleID AND M_TitleIsActive = 'Y' +left join m_sex ON M_PatientM_SexID = M_SexID AND M_SexIsActive = 'Y' +left join m_company ON T_OrderHeaderM_CompanyID = M_CompanyID AND M_CompanyIsActive = 'Y' +left join m_mou ON T_OrderHeaderM_MouID = M_MouID AND M_MouIsActive = 'Y' +left join m_doctor p ON T_OrderHeaderSenderM_DoctorID = p.M_DoctorID AND p.M_DoctorIsActive = 'Y' + left join m_doctor pj ON T_OrderHeaderPjM_DoctorID = pj.M_DoctorID AND pj.M_DoctorIsActive = 'Y' +left join t_test ON T_OrderDetailT_TestID = T_TestID AND T_TestIsActive = 'Y' +left join t_orderdetailaddon on T_OrderDetailID = T_OrderDetailAddOnT_OrderDetailID +left join t_packet on T_OrderDetailAddOnT_PacketID = T_PacketID +LEFT JOIN last_statuspayment ON Last_StatusPaymentT_OrderHeaderID = T_OrderHeaderID +LEFT JOIN m_no_form on M_No_FormID > 0 and M_No_FormName = "NOTA" +left join conf_systems on S_SystemsID > 0 + left join t_orderheaderaddon on T_OrderHeaderAddOnT_OrderHeaderID = T_OrderHeaderID + + +where + T_OrderHeaderID = PID + + and +( + ( + T_OrderDetailT_TestIsPanelChildren = 'N' + and + ( T_TestIsPrintNota = 'y' + or + T_PacketIsNota = 'Y' + ) + ) + or + ( + T_OrderDetailT_TestIsPanelChildren = 'Y' + and + T_OrderDetailT_TestIsPanelChildrenPrintNota = 'Y' + ) +) +order by T_OrderDetailT_TestSasCode + +; +END $$ + +DELIMITER ;