Evra70

SummaryInvoice

May 14th, 2020
305
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.55 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Sts\CmsActivity\BO;
  4.  
  5. use Sts\PleafCore\BusinessFunction;
  6. use Sts\CmsActivity\Model\SlInvoiceVisitPlan;
  7. use DB;
  8. use Log;
  9.  
  10. /**
  11. * @author Bahar, 08/11/2019
  12. * @in
  13. *
  14. * @out
  15. */
  16.  
  17. class GetSummaryInvoice implements BusinessFunction
  18. {
  19.  
  20. public function getDescription()
  21. {
  22. return "Mendapatkan Daftar Summary Invoice Customer";
  23. }
  24.  
  25. public function execute($dto)
  26. {
  27. \Log::info('GetSumarryInvoice');
  28.  
  29. $admin_process_visit_plan_id = $dto["admin_process_visit_plan_id"];
  30.  
  31. $query = " SELECT A.customer_id, f_get_partner_code(A.customer_id) AS customer_code, f_get_partner_name(A.customer_id) AS customer_name,
  32. COALESCE(SUM(D.payment_amount),0) AS payment_amount,
  33. count(1) AS total_invoice, COUNT(1) FILTER (WHERE A.status = 'E') AS total_invoice_exchange,
  34. COUNT(1) FILTER (WHERE A.status = 'P') AS total_invoice_payment, COUNT(1) FILTER (WHERE A.status = 'N') AS total_unexchange_invoice,
  35. COUNT(1) FILTER (WHERE A.status = 'C') AS total_cancel_invoice
  36. FROM sl_invoice_visit_plan A
  37. INNER JOIN sl_admin_process_visit_plan B ON A.admin_process_visit_plan_id = B.admin_process_visit_plan_id
  38. LEFT JOIN sl_invoice_payment C ON A.admin_process_visit_plan_id = C.admin_process_visit_plan_id AND A.customer_id = C.customer_id
  39. LEFT JOIN sl_invoice_payment_item D ON C.invoice_payment_id = D.invoice_payment_id
  40. WHERE A.admin_process_visit_plan_id = $admin_process_visit_plan_id
  41. GROUP BY A.customer_id
  42. ";
  43.  
  44. $query2 = " SELECT COALESCE(SUM(D.payment_amount) FILTER (WHERE D.type_payment = 'CASH'),0) AS cash,
  45. COALESCE(SUM(D.payment_amount) FILTER (WHERE D.type_payment = 'NONCASH'),0) AS non_cash
  46. FROM sl_invoice_visit_plan A
  47. INNER JOIN sl_admin_process_visit_plan B ON A.admin_process_visit_plan_id = B.admin_process_visit_plan_id
  48. LEFT JOIN sl_invoice_payment C ON A.admin_process_visit_plan_id = C.admin_process_visit_plan_id AND A.customer_id = C.customer_id
  49. LEFT JOIN sl_invoice_payment_item D ON C.invoice_payment_id = D.invoice_payment_id
  50. WHERE A.admin_process_visit_plan_id = $admin_process_visit_plan_id
  51. ";
  52.  
  53. $result = DB::select($query);
  54. $result2 = collect(DB::select($query2))->first();
  55.  
  56. return [
  57. "summaryCustomerList" => $result,
  58. "summaryPayment" => $result2
  59. ];
  60. }
  61. }
Add Comment
Please, Sign In to add comment