vendor/lm/engine-inventory-matrix/src/Service/InventoryMatrixService.php line 144

Open in your IDE?
  1. <?php
  2. namespace Lm\Engine\InventoryMatrix\Service;
  3. use Lm\Engine\EC\Entity\GoodsWithRelated;
  4. use Lm\Engine\SokujitsuHassou\SokujitsuHassou;
  5. use Lm\Engine\Zaiko\Entity\SkuExtended;
  6. use Lm\Engine\Zaiko\NyuukaYoteibi;
  7. use Lm\Engine\Zaiko\Yoyaku;
  8. use Lm\Service\Db\SqlService;
  9. class InventoryMatrixService
  10. {
  11.     public function getGoodsColorSelectSql($goodsId)
  12.     {
  13.         $strSql "SELECT
  14.                         *
  15.                     FROM (
  16.                         SELECT
  17.                             gcl_parent.gcl_id
  18.                         ,   gcl_parent.gcl_display
  19.                         ,   color_id
  20.                         ,   color_display
  21.                         ,   color_name
  22.                         ,   color_rgb
  23.                         ,    gcl_parent.gcl_id AS parent_gcl_id
  24.                         ,    gcl_main.gcl_id AS main_gcl_id
  25.                         ,    gcl_sub.gcl_id AS sub_gcl_id
  26.                         ,    gcl_other.gcl_id AS other_gcl_id
  27.                         FROM goods_table
  28.                         LEFT JOIN goods_color_table AS gcl_parent ON goods_id = gcl_parent.gcl_goods AND gcl_parent.gcl_display_status = 1
  29.                         LEFT JOIN color_table ON color_id = gcl_parent.gcl_color_id
  30.                         LEFT JOIN gsp_gcl_table ON gcl_parent.gcl_id = gsp_gcl_parent
  31.                         LEFT JOIN goods_color_table AS gcl_main ON gcl_main.gcl_id = gsp_gcl_main
  32.                         LEFT JOIN goods_color_table AS gcl_sub ON gcl_sub.gcl_id = gsp_gcl_sub
  33.                         LEFT JOIN goods_color_table AS gcl_other ON gcl_other.gcl_id = gsp_gcl_other
  34.                         WHERE goods_id = {$goodsId}
  35.                     ) AS `goods`
  36.                     ORDER BY
  37.                         gcl_display
  38.                     ,   color_display
  39.                     ,   CAST( color_name AS binary )";
  40.         $data = (new SqlService())
  41.             ->Sql($strSql)
  42.             ->FetchAll();
  43.         if (is_null($data)) {
  44.             return false;
  45.         }
  46.         $tmpRow 0;
  47.         $color_array = array();
  48.         foreach ($data as $row) {
  49.             $tmpRow++;
  50.             $color_array[$tmpRow 1]['gcl_id'] = $row['gcl_id'];
  51.             $color_array[$tmpRow 1]['color_name'] = $row['color_name'];
  52.             $color_array[$tmpRow 1]['color_rgb'] = $row['color_rgb'];
  53.             $color_array[$tmpRow 1]['main_gcl_id'] = $row['main_gcl_id'];
  54.             $color_array[$tmpRow 1]['sub_gcl_id'] = $row['sub_gcl_id'];
  55.             $color_array[$tmpRow 1]['other_gcl_id'] = $row['other_gcl_id'];
  56.         }
  57.         return $color_array;
  58.     }
  59.     public function getGoodsSizeListById($goodsId)
  60.     {
  61.         $strSql "SELECT gp_parent.gp_id, size_name,
  62.                 (CASE WHEN cp_price IS NOT NULL AND cp_price > 0 THEN cp_price ELSE ROUND(gp_parent.gp_price2 * (1+ 10/100)) END) as gp_price
  63.                 ,    gp_parent.gp_id AS parent_gp_id
  64.                 ,    gp_main.gp_id AS main_gp_id
  65.                 ,    gp_sub.gp_id AS sub_gp_id
  66.                 ,    gp_other.gp_id AS other_gp_id
  67.                 FROM goods_price_table AS gp_parent
  68.                 INNER JOIN size_table ON gp_parent.gp_size_id = size_id
  69.                 LEFT JOIN campaign_price_table ON cp_gp = gp_parent.gp_id AND `cp_end_datetime` >= NOW() and `cp_start_datetime` <= NOW() and cp_del_flg =0
  70.                 LEFT JOIN gsp_gp_table ON gp_parent.gp_id = gsp_gp_parent
  71.                 LEFT JOIN goods_price_table AS gp_main ON gp_main.gp_id = gsp_gp_main
  72.                 LEFT JOIN goods_price_table AS gp_sub ON gp_sub.gp_id = gsp_gp_sub
  73.                 LEFT JOIN goods_price_table AS gp_other ON gp_other.gp_id = gsp_gp_other
  74.                 WHERE gp_parent.gp_goods = {$goodsId}
  75.                 AND ( gp_parent.gp_display IS NULL OR ( gp_parent.gp_display IS NOT NULL AND gp_parent.gp_display != 99 ) )
  76.                 ORDER BY gp_parent.gp_display,size_display";
  77.         $data = ((array)((new SqlService())
  78.             ->Sql($strSql)
  79.             ->FetchAll()));
  80.         $tmpArray1 = [];
  81.         $tmpArray2 = [];
  82.         foreach ($data as $row) {
  83.             $tmpArray1[$row['gp_id']] = $row['size_name'];
  84.             $tmpArray2[$row['gp_id']] = $row;
  85.         }
  86.         // サイズ名で並び替え
  87.         $tmpRow 0;
  88.         $size_array = array();
  89.         foreach ($tmpArray1 as $key => $val) {
  90.             $tmpRow++;
  91.             $size_array[$tmpRow 1]['gp_id'] = $key;
  92.             $size_array[$tmpRow 1]['size_name'] = $val;
  93.             $size_array[$tmpRow 1]['gp_price'] = $tmpArray2[$key]['gp_price'];
  94.             $size_array[$tmpRow 1]['main_gp_id'] = $tmpArray2[$key]['main_gp_id'];
  95.             $size_array[$tmpRow 1]['sub_gp_id'] = $tmpArray2[$key]['sub_gp_id'];
  96.             $size_array[$tmpRow 1]['other_gp_id'] = $tmpArray2[$key]['other_gp_id'];
  97.         }
  98.         return $size_array;
  99.     }
  100.     public function getGoodsJanById($goods_id)
  101.     {
  102.         $sqlService = (new SqlService());
  103.         $result = ((array)($sqlService->Table('jancode_table')
  104.             ->Set('jan_goods'$goods_id)
  105.             ->Finds()));
  106.         $janList = array();
  107.         $janColors = array();
  108.         foreach ($result as $row) {
  109.             $janList[$row['jan_color']][$row['jan_price']] = $row['jan_id'];
  110.             $janColors[$row['jan_color']][$row['jan_price']] = $row['jan_shiire_color'];
  111.         }
  112.         return array($janList$janColors);
  113.     }
  114.     public function getGoodsStockDate($goodsId NULL$isMatrix NULL$janId NULL$gpId NULL$gclId NULL$datetime NULL)
  115.     {
  116.         return (new NyuukaYoteibi())
  117.             ->calculate($goodsId$isMatrix$janId$gpId$gclId$datetime)
  118.         ;
  119.     }
  120.     public function getGoodsStock($goods_id NULL$is_matrix false$jan_id NULL$gp_id NULL$gcl_id NULL$date NULL)
  121.     {
  122.         return GoodsWithRelated::getStockById($goods_id$is_matrix$jan_id$gp_id$gcl_id$date);
  123.     }
  124.     public function getGoodsReservation($goodsId null$isMatrix null$janId null$gpId null$gclId null$datetime null)
  125.     {
  126.         return (new Yoyaku())
  127.             ->check($goodsId$isMatrix$janId$gpId$gclId$datetime)
  128.         ;
  129.     }
  130.     public function getGoodsSameDayShipping($goods_id NULL$is_matrix NULL$jan_id NULL$gp_id NULL$gcl_id NULL$amount NULL$date NULL)
  131.     {
  132.         return (new SokujitsuHassou())
  133.             ->check($goods_id$is_matrix$jan_id$gcl_id$gp_id$date$amount);
  134.     }
  135.     // 売れ筋カラー取得
  136.     public function getSellingColorSql($goods_id$goods_count)
  137.     {
  138.         $limit = (int)($goods_count 5);
  139.         $strSql "SELECT * FROM (
  140.                     SELECT *
  141.                     FROM `selling_color_count_table`
  142.                     WHERE `scc_goods_id` = " $goods_id "
  143.                     ORDER BY `scc_amount` desc
  144.                 ) as data
  145.                 limit " $limit;
  146.         $temp_list = (new SqlService())
  147.             ->Sql($strSql)
  148.             ->FetchAll();
  149.         $selling_list = array();
  150.         foreach ((array)$temp_list as $selling) {
  151.             $selling_list[$selling['scc_gcl']] = $selling;
  152.         }
  153.         return $selling_list;
  154.     }
  155. }