Syehaji93

Additional Controller

Aug 28th, 2023
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 18.16 KB | Source Code | 0 0
  1. public function additional_scan()
  2. {
  3.     if($this->request->isAJAX())
  4.     {
  5.         $part_code = $this->request->getVar('part_code');
  6.         $qty_part = $this->request->getVar('qty_part');
  7.         $pl_unix = $this->request->getVar('pl_unix');
  8.         $var = "/^[0-9]*$/";
  9.         $respon = "";
  10.  
  11.         if($part_code === NULL)
  12.         {
  13.             $respon = 0;
  14.             $data = " ";
  15.             $res = 'Part code tidak boleh kosong';
  16.         }elseif(!preg_match($var,$part_code)){
  17.             $respon = 0;
  18.             $data = " ";
  19.             $res = 'Input part code harus angka';
  20.         }elseif(strlen($part_code) < 5){
  21.             $respon = 0;
  22.             $data = " ";
  23.             $res = 'Part code kurang dari 5 digit';
  24.         }elseif(strlen($part_code) > 5){
  25.             $respon = 0;
  26.             $data = " ";
  27.             $res = 'Part code lebih dari 5 digit';
  28.         }else{
  29.             //TAMBAHKAN VALIDASI JIKA PART CODE TIDAK TERDAFTAR
  30.             $row = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_part_code' => $part_code])->first();
  31.  
  32.             if(!$row)
  33.             {
  34.                 $respon = 0;
  35.                 $data = " ";
  36.                 $res = 'Part code tidak terdaftar';
  37.             }else{
  38.                 $id       = $row['dt_id'];
  39.                 $tot_scan = $row['dt_tot_scan'];
  40.                 $has_scan = $row['dt_has_scan'];
  41.                 $result   = $row['dt_result'];
  42.    
  43.                 //jika part additional
  44.                 if($tot_scan != 0 AND $tot_scan != $has_scan AND $result == 'Open')   //cek jika total scan tidak 0 dan hasil scan tidak sama dengan total scan
  45.                 {
  46.                     $tambah = $has_scan + $qty_part;
  47.                     $d_update_1 = [
  48.                         'dt_has_scan' => $tambah,
  49.                         'update_by'   => $this->session->get('user_name'),
  50.                         'update_date' => date('Y-m-d H:i:s')
  51.                     ];
  52.                    
  53.                     $log_scan = [
  54.                         'pl_unix'       => $pl_unix,
  55.                         'ls_part_code'  => $part_code,
  56.                         'ls_num_scan'   => $tambah,
  57.                         'created_by'    => $this->session->get('user_name'),
  58.                         'created_date'  => date('Y-m-d H:i:s')
  59.                     ];
  60.    
  61.                     $this->m_detail_picking->update($id, $d_update_1); //input data
  62.                     $this->m_log_scan->insert($log_scan);
  63.    
  64.                     $rd = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_part_code' => $part_code])->first();
  65.                     $t_scan = $rd['dt_tot_scan'];
  66.                     $h_scan = $rd['dt_has_scan'];
  67.                     $r_scan = $rd['dt_result'];
  68.    
  69.                     // for reload data
  70.                     // $rw = $this->m_picking_data->where('pl_unix', $pl_unix)->first();
  71.                     $query = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' ");
  72.                     $rw = $query->getFirstRow();
  73.                     $query = $this->db->query("SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' AND dt_result = 'Open' ORDER BY dt_part_wh_code ASC");
  74.                     $rs = $query->getResult();
  75.    
  76.                     //update status results
  77.                     $query_status = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' ");
  78.                     $row_status = $query_status->getResult();
  79.    
  80.                     $temp_res = [];
  81.                     foreach($row_status as $hs)
  82.                     {
  83.                         $dt_result = $hs->dt_result;
  84.    
  85.                         $temp_res[] = (object) [
  86.                             'result' => $dt_result
  87.                         ];
  88.                     }
  89.    
  90.                     $arraySearch = array_search('Open', array_column($temp_res,'result'));
  91.                     if($arraySearch === FALSE)
  92.                     {
  93.                         $has_result = 'Close';
  94.                     }else{
  95.                         $has_result = 'Open';
  96.                     }
  97.                     //update status results
  98.    
  99.                     $total_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0])->get()->getNumRows();
  100.                     $before_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Open'])->get()->getNumRows();
  101.                     $after_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Close'])->get()->getNumRows();
  102.        
  103.                     $data = [
  104.                         'heading'           => 'Picking',
  105.                         'judul'             => 'Double Check Picking',
  106.                         'unix'              => $rw->pl_unix,
  107.                         'product_id'        => $rw->dt_product_id,
  108.                         'product_name'      => $rw->dt_product_name,
  109.                         'lot_control'       => $rw->dt_lot_control,
  110.                         'operation_number'  => $rw->dt_operation_number,
  111.                         'delivery'          => $rw->dt_delivery,
  112.                         'result'            => $has_result,
  113.                         'total_scan'        => $total_scan,
  114.                         'before_scan'       => $before_scan,
  115.                         'after_scan'        => $after_scan,
  116.                         'tampil_detail'     => $rs
  117.                     ];
  118.    
  119.                     $respon = 1;
  120.    
  121.                     if($t_scan == $h_scan AND $r_scan == 'Open')    //jika total scan sama dengan hasil scan dan result open
  122.                     {
  123.                         $i_res = 'Close';
  124.                         $d_update_2 = [
  125.                             'dt_result'   => $i_res,
  126.                             'update_by'   => $this->session->get('user_name'),
  127.                             'update_date' => date('Y-m-d H:i:s')
  128.                         ];
  129.    
  130.                         /*$log_scan = [
  131.                             'pl_unix'       => $pl_unix,
  132.                             'ls_part_code'  => $part_code,
  133.                             'ls_num_scan'   => $tambah,
  134.                             'created_by'    => $this->session->get('user_name'),
  135.                             'created_date'  => date('Y-m-d H:i:s')
  136.                         ];*/
  137.    
  138.                         $this->m_detail_picking->update($id, $d_update_2);
  139.                         // $this->m_log_scan->insert($log_scan);
  140.    
  141.                         // update data
  142.                         $query = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' ");
  143.                         $rw = $query->getFirstRow();
  144.                         $query = $this->db->query("SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' AND dt_result = 'Open' ORDER BY dt_part_wh_code ASC");
  145.                         $rs = $query->getResult();
  146.    
  147.                         //update status results
  148.                         $query_status = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' ");
  149.                         $row_status = $query_status->getResult();
  150.    
  151.                         $temp_res = [];
  152.                         foreach($row_status as $hs)
  153.                         {
  154.                             $dt_result = $hs->dt_result;
  155.    
  156.                             $temp_res[] = (object) [
  157.                                 'result' => $dt_result
  158.                             ];
  159.                         }
  160.    
  161.                         $arraySearch = array_search('Open', array_column($temp_res,'result'));
  162.                         if($arraySearch === FALSE)
  163.                         {
  164.                             $has_result = 'Close';
  165.                         }else{
  166.                             $has_result = 'Open';
  167.                         }
  168.                         //update status results
  169.    
  170.                         $total_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0])->get()->getNumRows();
  171.                         $before_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Open'])->get()->getNumRows();
  172.                         $after_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Close'])->get()->getNumRows();
  173.                        
  174.                         $data = [
  175.                             'heading'           => 'Picking',
  176.                             'judul'             => 'Double Check Picking',
  177.                             'unix'              => $rw->pl_unix,
  178.                             'product_id'        => $rw->dt_product_id,
  179.                             'product_name'      => $rw->dt_product_name,
  180.                             'lot_control'       => $rw->dt_lot_control,
  181.                             'operation_number'  => $rw->dt_operation_number,
  182.                             'delivery'          => $rw->dt_delivery,
  183.                             'result'            => $has_result,
  184.                             'total_scan'        => $total_scan,
  185.                             'before_scan'       => $before_scan,
  186.                             'after_scan'        => $after_scan,
  187.                             'tampil_detail'     => $rs
  188.                         ];
  189.                         $res = 'Part '.$part_code.' Berhasil di verifikasi';
  190.                         $respon = 1;
  191.                     }else{
  192.                         // update data
  193.                         $query = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' ");
  194.                         $rw = $query->getFirstRow();
  195.                         $query = $this->db->query("SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' AND dt_result = 'Open' ORDER BY dt_part_wh_code ASC");
  196.                         $rs = $query->getResult();
  197.    
  198.                         //update status results
  199.                         $query_status = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' ");
  200.                         $row_status = $query_status->getResult();
  201.    
  202.                         $temp_res = [];
  203.                         foreach($row_status as $hs)
  204.                         {
  205.                             $dt_result = $hs->dt_result;
  206.    
  207.                             $temp_res[] = (object) [
  208.                                 'result' => $dt_result
  209.                             ];
  210.                         }
  211.    
  212.                         $arraySearch = array_search('Open', array_column($temp_res,'result'));
  213.                         if($arraySearch === FALSE)
  214.                         {
  215.                             $has_result = 'Close';
  216.                         }else{
  217.                             $has_result = 'Open';
  218.                         }
  219.                         //update status results
  220.    
  221.                         $total_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0])->get()->getNumRows();
  222.                         $before_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Open'])->get()->getNumRows();
  223.                         $after_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Close'])->get()->getNumRows();
  224.                        
  225.                         $data = [
  226.                             'heading'           => 'Picking',
  227.                             'judul'             => 'Double Check Picking',
  228.                             'unix'              => $rw->pl_unix,
  229.                             'product_id'        => $rw->dt_product_id,
  230.                             'product_name'      => $rw->dt_product_name,
  231.                             'lot_control'       => $rw->dt_lot_control,
  232.                             'operation_number'  => $rw->dt_operation_number,
  233.                             'delivery'          => $rw->dt_delivery,
  234.                             'result'            => $has_result,
  235.                             'total_scan'        => $total_scan,
  236.                             'before_scan'       => $before_scan,
  237.                             'after_scan'        => $after_scan,
  238.                             'tampil_detail'     => $rs
  239.                         ];
  240.                         $res = 'Part '.$part_code.' Berhasil di verifikasi';
  241.    
  242.                         $respon = 1;
  243.                     }
  244.                    
  245.                 }else{
  246.                     // update data
  247.                     $query = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' ");
  248.                     $rw = $query->getFirstRow();
  249.                     $query = $this->db->query("SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' AND dt_result = 'Open' ORDER BY dt_part_wh_code ASC");
  250.                     $rs = $query->getResult();
  251.    
  252.                     //update status results
  253.                     $query_status = $this->db->query(" SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != '0' ");
  254.                     $row_status = $query_status->getResult();
  255.    
  256.                     $temp_res = [];
  257.                     foreach($row_status as $hs)
  258.                     {
  259.                         $dt_result = $hs->dt_result;
  260.    
  261.                         $temp_res[] = (object) [
  262.                             'result' => $dt_result
  263.                         ];
  264.                     }
  265.    
  266.                     $arraySearch = array_search('Open', array_column($temp_res,'result'));
  267.                     if($arraySearch === FALSE)
  268.                     {
  269.                         $has_result = 'Close';
  270.                     }else{
  271.                         $has_result = 'Open';
  272.                     }
  273.                     //update status results
  274.    
  275.                     $total_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0])->get()->getNumRows();
  276.                     $before_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Open'])->get()->getNumRows();
  277.                     $after_scan = $this->m_detail_picking->where(['pl_unix' => $pl_unix, 'dt_tot_scan !=' => 0, 'dt_result' => 'Close'])->get()->getNumRows();
  278.                    
  279.                     $data = [
  280.                         'heading'           => 'Picking',
  281.                         'judul'             => 'Double Check Picking',
  282.                         'unix'              => $rw->pl_unix,
  283.                         'product_id'        => $rw->dt_product_id,
  284.                         'product_name'      => $rw->dt_product_name,
  285.                         'lot_control'       => $rw->dt_lot_control,
  286.                         'operation_number'  => $rw->dt_operation_number,
  287.                         'delivery'          => $rw->dt_delivery,
  288.                         'result'            => $has_result,
  289.                         'total_scan'        => $total_scan,
  290.                         'before_scan'       => $before_scan,
  291.                         'after_scan'        => $after_scan,
  292.                         'tampil_detail'     => $rs
  293.                     ];
  294.                     $res = 'Data sudah close';
  295.                     $respon = 0;
  296.                 }
  297.    
  298.                 // ./ UPDATE STATUS DELIVERY
  299.                 // cek data apakah picking sudah close semuanya
  300.                 $sql = $this->db->query("SELECT * FROM pl_details WHERE pl_unix = '".$pl_unix."' AND dt_tot_scan != 0 ");
  301.                 $cek_status = $sql->getResult();
  302.    
  303.                 $temp_status = [];
  304.    
  305.                 foreach($cek_status as $datas)
  306.                 {
  307.                     $rslt = $datas->dt_result;
  308.                     $temp_status[] = (object) [
  309.                         'rslt' => $rslt
  310.                     ];
  311.                 }
  312.    
  313.                 $flag_status = "";
  314.                 $srcStatus = array_search('Open', array_column($temp_status,'rslt'));
  315.                 if($srcStatus === FALSE)
  316.                 {
  317.                     $flag_status = TRUE;
  318.                 }else{
  319.                     // $res = 'Data belum close';
  320.                     $flag_status = FALSE;
  321.                 }
  322.                
  323.                 if($flag_status === TRUE)
  324.                 {
  325.                     $update_status = [
  326.                         'dl_status'   => 'ST-4',
  327.                         'update_by'   => $this->session->get('user_name'),
  328.                         'update_date' => date('Y-m-d H:i:s')
  329.                     ];
  330.  
  331.                     $update_result = [
  332.                         'dt_result' => 'Close',
  333.                         'update_by'   => $this->session->get('user_name'),
  334.                         'update_date' => date('Y-m-d H:i:s')
  335.                     ];
  336.                 }elseif($flag_status === FALSE){
  337.                     // $update_status = "LANJUT";
  338.                     $update_status = [
  339.                         'dl_temp'   => NULL
  340.                     ];
  341.  
  342.                     $update_result = [
  343.                         'dt_result' => 'Open'
  344.                     ];
  345.                 }
  346.    
  347.                 //ambil data dari m_delivery
  348.                 $row_delivery = $this->m_delivery->where(['dl_unix' => $pl_unix])->first();
  349.    
  350.                 $dl_id      = $row_delivery['dl_id'];
  351.                 $dl_status  = $row_delivery['dl_status'];
  352.                 //Update delivery
  353.                 $this->m_delivery->update($dl_id, $update_status);
  354.                 // ./ UPDATE STATUS DELIVERY
  355.  
  356.                 $row_result = $this->m_picking_data->where(['pl_unix' => $pl_unix])->first();
  357.                 $pl_id = $row_result['pl_id'];
  358.                 $this->m_picking_data->update($pl_id, $update_result);
  359.                
  360.                 // ./part additional
  361.             }
  362.         }
  363.  
  364.         $msg = [
  365.             'respon' => $respon,
  366.             'data' => $res,
  367.             'res' => $data
  368.             // 'res' => view('Picking/pickingCheck', $data)
  369.         ];
  370.  
  371.         echo json_encode($msg);
  372.     }else{
  373.         exit('Maaf request tidak dapat diproses!');
  374.     }
  375. }
Add Comment
Please, Sign In to add comment