Advertisement
Guest User

Untitled

a guest
Dec 10th, 2019
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.12 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Sts\CmsActivity\BO;
  4.  
  5. use Sts\PleafCore\BusinessFunction;
  6. use Sts\PleafCore\CreateNativeQuery;
  7. use Sts\PleafCore\DefaultBusinessFunction;
  8. use DB;
  9. use Log;
  10. use Sts\PleafCore\QueryBuilder;
  11.  
  12. /**
  13. *
  14. * @in
  15. *
  16. * @out
  17. */
  18. class GetRealizationVisitPlanSummary extends DefaultBusinessFunction implements BusinessFunction {
  19.  
  20. public function getDescription(){
  21. return "change here";
  22. }
  23.  
  24. public function process($dto){
  25.  
  26. $output_total_visit_plan = self::getTotalVisitPlan($dto);
  27. $output_total_realization_visit_plan = self::getTotalRealizationVisitPlan($dto);
  28. $output_total_customer_order = self::getTotalCustomerOrder($dto);
  29.  
  30.  
  31. Log::info('A TOTAL VISIT PLAN');
  32. Log::debug($output_total_visit_plan);
  33. Log::info('A TOTAL REALIZATION VISIT PLAN');
  34. Log::debug($output_total_realization_visit_plan);
  35. Log::info('A TOTAL CUSTOMER ORDER');
  36. Log::debug($output_total_customer_order);
  37.  
  38. $total_visit_plan = $output_total_visit_plan['total_visit_plan']->count;
  39. $total_realization_visit_plan = $output_total_realization_visit_plan['total_realization_visit_plan']->count;
  40. $total_customer_order = $output_total_customer_order['total_customer_order']->count;
  41.  
  42. Log::info('TOTAL VISIT PLAN');
  43. Log::debug($total_visit_plan);
  44. Log::info('TOTAL REALIZATION VISIT PLAN');
  45. Log::debug($total_realization_visit_plan);
  46. Log::info('TOTAL CUSTOMER ORDER');
  47. Log::debug($total_customer_order);
  48.  
  49. $realization_visit_plan_percentage = ($total_visit_plan != 0) ? number_format(($total_realization_visit_plan / $total_visit_plan) * 100, 2) : 0;
  50. $customer_order_percentage = ($total_visit_plan != 0) ? number_format(($total_customer_order / $total_visit_plan) * 100, 2) : 0;
  51.  
  52.  
  53. return[
  54. "total_visit_plan" => $total_visit_plan,
  55. "total_realization_visit_plan" => $total_realization_visit_plan,
  56. "total_order_customer" => $total_customer_order,
  57. "realization_visit_plan_percentage" => $realization_visit_plan_percentage,
  58. "order_customer_percentage" => $customer_order_percentage
  59. ];
  60.  
  61. }
  62.  
  63.  
  64. private function getTotalVisitPlan($input){
  65.  
  66. $user_id = $input['user_id'];
  67. $tenant_id = $input['tenant_id'];
  68. $ou_id = $input['ou_id'];
  69. $salesman_id = $input['salesman_id'];
  70. $date_from = $input['date_from'];
  71. $date_to = $input['date_to'];
  72.  
  73. \Log::info('QUERY TOTAL RENCANA KUNJUNGAN');
  74. $queryBuilder = new QueryBuilder();
  75. $queryBuilder
  76. ->add(" SELECT COUNT(1) ")
  77. ->add(" FROM sl_salesman_visit_plan A ")
  78. ->add(" INNER JOIN m_partner_ou B ON A.salesman_id = B.partner_id ")
  79. ->add(" WHERE EXISTS( ")
  80. ->add(" SELECT 1 ")
  81. ->add(" FROM t_user X, t_user_role Y, t_policy_ou Z ")
  82. ->add(" WHERE X.tenant_id = A.tenant_id AND ")
  83. ->add(" X.user_id = $user_id AND ")
  84. ->add(" X.user_id = Y.user_id AND ")
  85. ->add(" X.policy_default_id = Z.policy_id AND ")
  86. ->add(" B.ou_id = Z.ou_id ")
  87. ->add(" ) AND A.tenant_id = $tenant_id ")
  88. ->add(" AND A.visit_date >= '".$date_from."' ")
  89. ->add(" AND A.visit_date <= '".$date_to."' ")
  90. ->addIfNotEmpty($salesman_id, " AND A.salesman_id = $salesman_id ")
  91. ->addIfNotEmpty($ou_id, " AND B.ou_id = $ou_id ");
  92.  
  93. \Log::debug($queryBuilder->toString());
  94. $query = new CreateNativeQuery($queryBuilder->toString());
  95.  
  96. $result = $query->getFirstRow();
  97.  
  98. return [
  99. "total_visit_plan" => $result
  100. ];
  101. }
  102.  
  103.  
  104. private function getTotalRealizationVisitPlan($input){
  105.  
  106. $user_id = $input['user_id'];
  107. $tenant_id = $input['tenant_id'];
  108. $ou_id = $input['ou_id'];
  109. $salesman_id = $input['salesman_id'];
  110. $date_from = $input['date_from'];
  111. $date_to = $input['date_to'];
  112.  
  113. \Log::info('QUERY TOTAL REALISASI RENCANA KUNJUNGAN');
  114. $queryBuilder = new QueryBuilder();
  115. $queryBuilder
  116. ->add(" SELECT COUNT(1) ")
  117. ->add(" FROM sl_salesman_visit_plan A ")
  118. ->add(" INNER JOIN m_partner_ou B ON A.salesman_id = B.partner_id ")
  119. ->add(" INNER JOIN sl_salesman_visit_realization C ON A.salesman_id = C.salesman_id ")
  120. ->add(" WHERE EXISTS( ")
  121. ->add(" SELECT 1 ")
  122. ->add(" FROM t_user X, t_user_role Y, t_policy_ou Z ")
  123. ->add(" WHERE X.tenant_id = A.tenant_id AND ")
  124. ->add(" X.user_id = $user_id AND ")
  125. ->add(" X.user_id = Y.user_id AND ")
  126. ->add(" X.policy_default_id = Z.policy_id AND ")
  127. ->add(" B.ou_id = Z.ou_id ")
  128. ->add(" ) AND A.tenant_id = $tenant_id ")
  129. ->add(" AND A.visit_date >= '".$date_from."' ")
  130. ->add(" AND A.visit_date <= '".$date_to."' ")
  131. ->addIfNotEmpty($salesman_id, " AND A.salesman_id = $salesman_id ")
  132. ->addIfNotEmpty($ou_id, " AND B.ou_id = $ou_id ");
  133.  
  134. \Log::debug($queryBuilder->toString());
  135. $query = new CreateNativeQuery($queryBuilder->toString());
  136.  
  137. $result = $query->getFirstRow();
  138.  
  139. return [
  140. "total_realization_visit_plan" => $result
  141. ];
  142. }
  143.  
  144. private function getTotalCustomerOrder($input){
  145.  
  146. $user_id = $input['user_id'];
  147. $tenant_id = $input['tenant_id'];
  148. $ou_id = $input['ou_id'];
  149. $salesman_id = $input['salesman_id'];
  150. $date_from = $input['date_from'];
  151. $date_to = $input['date_to'];
  152.  
  153. \Log::info('QUERY TOTAL ORDER TOKO');
  154. $queryBuilder = new QueryBuilder();
  155. $queryBuilder
  156. ->add(" SELECT COUNT(1) ")
  157. ->add(" FROM sl_salesman_visit_plan A ")
  158. ->add(" INNER JOIN m_partner_ou B ON A.salesman_id = B.partner_id ")
  159. ->add(" INNER JOIN m_user_partner D ON A.salesman_id = D.partner_id ")
  160. ->add(" INNER JOIN sl_order C ON A.visit_date = C.doc_date ")
  161. ->add(" AND A.customer_id = C.toko_partner_id ")
  162. ->add(" AND C.salesman_user_id = D.user_id ")
  163. ->add(" WHERE EXISTS( ")
  164. ->add(" SELECT 1 ")
  165. ->add(" FROM t_user X, t_user_role Y, t_policy_ou Z ")
  166. ->add(" WHERE X.tenant_id = A.tenant_id AND ")
  167. ->add(" X.user_id = $user_id AND ")
  168. ->add(" X.user_id = Y.user_id AND ")
  169. ->add(" X.policy_default_id = Z.policy_id AND ")
  170. ->add(" B.ou_id = Z.ou_id ")
  171. ->add(" ) AND A.tenant_id = $tenant_id ")
  172. ->add(" AND A.visit_date >= '".$date_from."' ")
  173. ->add(" AND A.visit_date <= '".$date_to."' ")
  174. ->addIfNotEmpty($salesman_id, " AND A.salesman_id = $salesman_id ")
  175. ->addIfNotEmpty($ou_id, " AND B.ou_id = $ou_id ");
  176.  
  177. \Log::debug($queryBuilder->toString());
  178. $query = new CreateNativeQuery($queryBuilder->toString());
  179.  
  180. $result = $query->getFirstRow();
  181.  
  182. return [
  183. "total_customer_order" => $result
  184. ];
  185. }
  186.  
  187.  
  188.  
  189. /**protected function rules(){
  190. * Add Validation Data
  191. *return [
  192. * "code" => "required|val_tenant"
  193. *];
  194.  
  195. }*/
  196. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement