Advertisement
widana

Untitled

Oct 17th, 2018
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.71 KB | None | 0 0
  1. <?php
  2.  
  3. namespace Sts\WebToko\BO;
  4.  
  5. use Sts\PleafCore\BusinessFunction;
  6. use Sts\WebToko\Model\Product;
  7. use Sts\WebToko\Model\RecordOwner;
  8. use Sts\WebToko\Model\InProductBalance;
  9. use Sts\WebToko\Model\InProductBalanceStock;
  10. use Sts\WebToko\Model\Warehouse;
  11. use Sts\WebToko\Model\SellPriceLevel;
  12. use DB;
  13. /**
  14.  * @in
  15.  * @In(["keyword","string","true","doc no OP"])
  16.  * @In(["limit","numeric","true","limit"])
  17.  * @In(["offset","numeric","true","offset"])
  18.  */
  19. class GetProductPosList implements BusinessFunction {
  20.  
  21.     public function getDescription(){
  22.         return "Get Product Pos List";
  23.     }
  24.  
  25.     public function execute($dto){                    
  26.  
  27.         $keyword        = strtoupper($dto["keyword"]);                    
  28.  
  29.         $limit          = $dto["limit"];
  30.         $offset         = $dto["offset"];
  31.         $recordOwnerId  = $dto["record_owner_id"];
  32.  
  33.         $recordOwner    = RecordOwner::find($recordOwnerId);        
  34.  
  35.         $raw = "
  36.        WITH product_list AS (
  37.  
  38.                SELECT A.product_id, A.product_code, A.product_name, A.product_local_name, A.part_no, A.brand_name,
  39.                B.qty1, B.qty2, B.qty3, B.qty4, B.qty5, B.price1, B.price2, B.price3, B.price4, B.price5, B.price1 as price,
  40.                 D.qty as current_qty, D.product_balance_id, D.product_balance_stock_id 
  41.                 FROM m_product A   
  42.                JOIN m_sell_price_level B ON B.product_id = A.product_id
  43.                JOIN in_product_balance C ON C.product_id = A.product_id
  44.                JOIN in_product_balance_stock D ON D.product_balance_id = C.product_balance_id
  45.                    AND A.product_id = C.product_id
  46.                    AND D.warehouse_id = :warehouseId
  47.                    AND D.product_status = 'GOOD'
  48.                    AND D.record_owner_id = :recordOwnerId
  49.                WHERE A.record_owner_id IN (:recordOwnerId, -99)
  50.                AND B.record_owner_id = :recordOwnerId
  51.                AND (UPPER(A.product_code) LIKE :keyword OR UPPER(A.product_name) LIKE :keyword)
  52.                ORDER BY A.product_name ASC
  53.                LIMIT :limit OFFSET :offset            
  54.            )
  55.            SELECT *, f_get_product_ctgr_name_by_product_id(product_id) as category_name, f_get_sub_product_ctgr_name_by_product_id(product_id) as sub_category_name
  56.            FROM product_list
  57.            ";
  58.  
  59.         $result = DB::select(DB::raw($raw), [
  60.             "warehouseId"   => $recordOwner->warehouse_id,
  61.             "recordOwnerId" => $recordOwnerId,
  62.             "keyword"       => "%".$keyword."%",
  63.             "limit"         => $limit,
  64.             "offset"        => $offset
  65.         ]);
  66.  
  67.         return [
  68.             "productList" => $result
  69.         ];
  70.     }
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement