Advertisement
Guest User

Untitled

a guest
Jun 18th, 2019
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.24 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Sts\WebToko\BO;
  4.  
  5. use Sts\PleafCore\DefaultBusinessFunction;
  6. use Sts\PleafCore\BusinessFunction;
  7. use Sts\PleafCore\QueryBuilder;
  8. use Sts\PleafCore\CreateNativeQuery;
  9. use Sts\WebToko\Helpers\ConditionExpression;
  10. use Sts\WebToko\Model\PuPr;
  11. use Sts\WebToko\Model\PuPrItem;
  12.  
  13. class GetPurchaseRequestAdvanceList extends DefaultBusinessFunction implements BusinessFunction {
  14.  
  15.     public function getDescription() {
  16.      return "Get Purchase Request Advance List";
  17.     }
  18.  
  19.     public function process($dto) {
  20.  
  21.         $supplier_id = $dto["supplier_id"];
  22.         $record_owner_id = $dto["record_owner_id"];
  23.         $date_from = $dto["date_from"];
  24.         $date_to = $dto["date_to"];
  25.         $doc_no = $dto["doc_no"];
  26.         $flg_preorder = $dto["flg_preorder"];
  27.         $status_doc = $dto["status_doc"];
  28.         $limit = $dto["limit"];
  29.         $offset = $dto["offset"];
  30.  
  31.         $queryBuilder = new QueryBuilder();
  32.         $queryBuilder
  33.                     ->add(" SELECT ")
  34.                     ->add(" A.pr_id, A.doc_no, A.doc_date, A.supplier_id, f_get_supplier_code(A.supplier_id) AS supplier_code, ")
  35.                     ->add(" A.ext_doc_no, A.ext_doc_date, A.remark, A.curr_code, A.flg_from_preorder, ")
  36.                     ->add(" f_get_supplier_name(A.supplier_id) AS supplier_name, f_get_doc_desc(A.doc_type_id) AS doc_desc, ")
  37.                     ->add(" A.status_doc, COALESCE(SUM(B.qty_request), 0) AS total_qty_request, COUNT(B.product_id) AS total_product, ")
  38.                     ->add(" COALESCE(SUM(B.item_amount), 0) AS total_item_amount, COALESCE(SUM(B.qty_quotation), 0) AS total_qty_quotation, ")
  39.                     ->add(" COALESCE(SUM(B.final_item_amount), 0) AS final_item_amount, ")
  40.                     ->add(" COALESCE(SUM(B.bargain_unit_price), 0) AS total_bargain_unit_price, COALESCE(SUM(B.final_unit_price), 0) AS final_unit_price, A.version ")
  41.                     ->add(" FROM ")->add(PuPr::getTableName())->add(" A ")
  42.                     ->add(" LEFT JOIN ")->add(PuPrItem::getTableName())->add(" B ON A.pr_id = B.pr_id ")
  43.                     ->add(" WHERE A.record_owner_id = :record_owner_id ")
  44. //                    ->add(" AND A.doc_date BETWEEN :date_from AND :date_to ")
  45.                     ->addIfNotEmpty($date_from, " AND A.doc_date >= :date_from ")
  46.                     ->addIfNotEmpty($date_to, " AND A.doc_date <= :date_to ")
  47.                     ->addIfNotEquals($doc_no, _EMPTY_VALUE, "AND".ConditionExpression::likeCaseInsensitive(" A.doc_no ", $doc_no))
  48.                     ->addIfNotEquals($status_doc, _EMPTY_VALUE, " AND A.status_doc = :status_doc ")
  49.                     ->addIfNotEquals($supplier_id, -1, " AND A.supplier_id = :supplier_id ")
  50.                     ->addIfNotEmpty($flg_preorder, " AND A.flg_from_preorder = :flg_preorder ")
  51.                     ->add(" GROUP BY A.pr_id, A.doc_no, A.doc_date, A.supplier_id, A.doc_type_id, A.status_doc, ")
  52.                     ->add("     A.ext_doc_no, A.ext_doc_date, A.remark, A.curr_code, A.flg_from_preorder, A.version, A.update_datetime")
  53.                     ->add(" ORDER BY A.doc_no DESC, A.doc_date DESC, A.update_datetime DESC")
  54.                     ->add(" LIMIT :limit OFFSET :offset ");
  55.  
  56.         $query = new CreateNativeQuery($queryBuilder->toString());
  57.         $query->setParameter("record_owner_id", $record_owner_id);
  58.         if($status_doc != _EMPTY_VALUE)$query->setParameter("status_doc", $status_doc);
  59.         if($supplier_id != -1)$query->setParameter("supplier_id", $supplier_id);
  60.         if($flg_preorder != _EMPTY_VALUE)$query->setParameter("flg_preorder", $flg_preorder);
  61.         if($date_from != _EMPTY_VALUE)$query->setParameter("date_from", $date_from);
  62.         if($date_to != _EMPTY_VALUE)$query->setParameter("date_to", $date_to);
  63.         $query->setParameter("limit", $limit);
  64.         $query->setParameter("offset", $offset);
  65.  
  66.         $result = $query->getResultList();
  67.  
  68.         return [
  69.             "purchase_request_list" => $result
  70.         ];
  71.  
  72.     }
  73.  
  74.     protected function rules() {
  75.  
  76.         return [
  77.             "supplier_id" => "required",
  78.             "record_owner_id" => "required",
  79.             "doc_type_id" => "required",
  80.             "limit" => "required",
  81.             "offset" => "required"
  82.         ];
  83.  
  84.     }
  85.  
  86. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement