| 
				Server : Apache System : Linux server.mata-lashes.com 3.10.0-1160.90.1.el7.x86_64 #1 SMP Thu May 4 15:21:22 UTC 2023 x86_64 User : matalashes ( 1004) PHP Version : 8.1.29 Disable Function : NONE Directory : /home/matalashes/public_html/kite.mata-lashes.com/app/Controllers/Ic/  | 
Upload File :  | 
<?php
namespace App\Controllers\Ic;
use \App\Controllers\Ps\PS_Controller;
use CodeIgniter\HTTP\RequestInterface;
use CodeIgniter\HTTP\ResponseInterface;
use Psr\Log\LoggerInterface;
use App\Libraries\Ps\Mylibpublic;
class Kirimbarangfgiic extends PS_Controller
{
    private $id_column_name = 'mb_id';
    public function initController(RequestInterface $request, ResponseInterface $response, LoggerInterface $logger)
    {
        parent::initController($request, $response, $logger); // TODO: Change the autogenerated stub
        parent::setPageTitleBreadcrumb(true, 'List Pengiriman Barang', array('l1' => 'Kirim Barang FGI', 'l2' => 'List Pengiriman Barang FGI'));
        parent::setURLActionTable($this->class);
        parent::setContentView($this->class);
        parent::setBaseContAndModel($this->class, 'KirimBarangFgiIc');
        $this->validation_input = $this->validation->setRules([
            "tkb_fgiic_status" => [
                'label' => 'Status',
                'rules' => 'required',
            ],
            "tkb_fgiic_fic_no" => [
                'label' => 'Number',
                'rules' => 'required',
            ],
            "tkb_fgiic_fic_date" => [
                'label' => 'Date',
                'rules' => 'required',
            ]
        ]);
    }
    public function index()
    {
        parent::filterStoreLoad();
        // parent::indexLoad();
        $this->session->set('trash', false);
        $this->session->set('keyword', '');
        $start = date('Y-m-01');
        $end = date('Y-m-t'); 
        if ($_POST) {
            $start = $this->request->getVar('start');
            $end = $this->request->getVar('end');
        }
        $dtl = new \App\Models\KirimBarangFgiIc();
        $pagination = $dtl->where('deleted_at', null)
                    // ->where('date(created_at) >=', $start)
                    // ->where('date(created_at) <=', $end)
                    ->findAll();
        $this->view_data['_data'] = $pagination;
        $this->view_data['start'] = $start; 
        $this->view_data['end'] = $end;
        $this->render->viewAdmin($this->content_views['table_view'], $this);
    }
    public function action($state = '', $id = '')
    {
        $id = $this->myLib->reveal_id($id);
        if ($id == 'override404') {
            return redirect()->route('override404');
        }
        $barang = new  \App\Models\MasterBarang();
        $this->view_data['_barang'] = $barang->where('deleted_at', null)->findAll();
        $pob = new  \App\Models\MasterPob();
        $this->view_data['_pob'] = $pob->where('deleted_at', null)->findAll();
        $bulumata = new  \App\Models\MasterBulumata();
        $this->view_data['_bulumata'] = $bulumata->where('deleted_at', null)->findAll();
        if ($state == 'add') {
            $this->mylib = new Mylibpublic();
            $this->view_data['state'] = 'add';
            $this->view_data['button'] = 'Simpan';
            $this->view_data['upload_data'] = $this->upload_data;
            if ($_POST) {
                if (!$this->validation_input->withRequest($this->request)->run()) {
                    $this->view_data['error'] = true;
                    $this->view_data['message'] = 'Ada kesalahan dalam pengisian form!';
                    $this->view_data['error_list'] = $this->validation_input->getErrors();
                } else {
                    unset($_POST['id']);
                    $_mdl = $this->myLib->getNewModel($this->models['base_model']);
                    $_datamodel = array();
                    $_datamodel['tkb_fgiic_pob'] = $this->request->getVar('tkb_fgiic_pob');
                    $_datamodel['tkb_fgiic_parsial'] = $this->request->getVar('tkb_fgiic_parsial');
                    $_datamodel['tkb_fgiic_fic_no'] = $this->request->getVar('tkb_fgiic_fic_no');
                    $_datamodel['tkb_fgiic_fic_date'] = $this->request->getVar('tkb_fgiic_fic_date');
                    $_datamodel['tkb_fgiic_status'] = 0;
                    $item = count($this->request->getVar('barang'));
                    $brg = $this->request->getVar('barang');
                    $n = $this->request->getVar('nilai');
                    $b = $this->request->getVar('bulumata');
                    $qbm = $this->request->getVar('qty_bm');
                    $tkb_fgiic_item = array();
                    $sum = 0;
                    for ($j=0; $j < $item; $j++) {
                        $valqbm = str_replace('.',"",$qbm[$j]);
                        $data = array(
                            'barang' => json_decode($brg[$j]),
                            'nilai' => $n[$j],
                            'bulumata' => $b[$j],
                            'qty_bm' => $valqbm,
                        ); 
                        array_push($tkb_fgiic_item, $data);
                    }
                    $_datamodel['tkb_fgiic_item'] = json_encode($tkb_fgiic_item);
                    if(isset($_POST['kirim'])){
                        $_datamodel['tkb_fgiic_status'] = 1;
                        $_datamodel['tkb_fgiic_status_mkt'] = 0;
                        $_datamodel['tkb_fgiic_status_sc'] = 0;
                        //update pengiriman
                        $kirimBarang = new  \App\Models\KirimBarangPro();
                        $_kirimBarang = $kirimBarang->where('deleted_at', null)->where('tkb_pro_iskirim', 0)->orderBy('tkb_pro_id', 'ASC')->findAll();
                        
                        foreach ($_kirimBarang as $d) {
                            $json = json_decode($d->tkb_pro_item);
                            $temp_barang = array();
                            $flag = true;
                            foreach($json as $j){
                                $i = $j->item;
                                $b = $j->bulumata;
                                $qty = $j->qty;
                                $qty_bm = $j->qty_bm;
                                $p = $j->pob;
                                $qty_kirim = $j->qty_kirim;
                                for ($j=0; $j < $item; $j++) {
                                    $valqbm = str_replace('.',"",$qbm[$j]);
                                    $barang = json_decode($brg[$j]);
                                    if(!empty($barang)){
                                        foreach($barang as $h){
                                            if($h->tkb_pro_id == $d->tkb_pro_id && $i == $h->item && $b == $h->bulumata){
                                                //update qty_kirim
                                                $qty_kirim = $qty_kirim + $h->qty;
                                                // update stok
                                                $stok = new  \App\Models\MasterStok();
                                                $dtm = array(
                                                    'mb_id' => $i,
                                                    'ms_stok_fgi_transit' => (int)$h->qty,
                                                );
                                                $stok->save($dtm);
                                                $stokbm = new  \App\Models\MasterStokbulumata();
                                                $datamodelbm = array(
                                                    'mbm_id' => $b,
                                                    'msb_stok_transit' => (int)$valqbm,
                                                    'msb_pob' => $p,
                                                );
                                                $stokbm->save($datamodelbm);
                                            }
                                        }
                                    }
                                }
                                $datas = [
                                    'item' => $i,
                                    'qty' => $qty,
                                    'qty_kirim' => $qty_kirim,
                                    'qty_bm' => $qty_bm,
                                    'pob' => $p,
                                    'bulumata' => $b,
                                ]; 
                                array_push($temp_barang,$datas);
                                if($qty_kirim < $qty){
                                    $flag = false;
                                }
                            }
                            if($flag){
                                $_datamodels['tkb_pro_iskirim'] = 1;
                            }else{
                                $_datamodels['tkb_pro_iskirim'] = 0;
                            }
                            $_datamodels['tkb_pro_item'] = json_encode($temp_barang);
                            $kirimBarangs = new  \App\Models\KirimBarangPro();
                            $kirimBarangs->update($d->tkb_pro_id, $_datamodels);
                                // log_message('alert','id '.$d->tkb_pro_id);
                                // log_message('alert','data updated '.json_encode($temp_barang));
                        }
                    }
                    try {
                        if (!$_mdl->save($_datamodel)) {
                            throw new \CodeIgniter\Database\Exceptions\DatabaseException();
                        } else {
                            $this->setMessage(false, true, $this->msgLib->scs_add());
                        }
                    } catch (Exception $e) {
                        $this->setMessage(true, false, $this->msgLib->err_add());
                    }
                }
            }
            $this->render->viewAdmin($this->content_views['form_add_view'], $this);
        } else if ($state == 'edit') {
            // parent::stateEdit($id);      
            $mdl = $this->myLib->getNewModel($this->models['base_model']);
            $_data = $mdl->find($id);
            $this->view_data['state'] = 'edit';
            $this->view_data['button'] = 'Simpan';
            $this->view_data['id'] = $id;
            $this->view_data['_data'] = $_data;
            $this->view_data['upload_data'] = $this->upload_data;
            if ($_POST) {
                if (!$this->validation_input->withRequest($this->request)->run()) {
                    $this->view_data['error'] = true;
                    $this->view_data['message'] = 'Ada kesalahan dalam pengisian form!';
                    $this->view_data['error_list'] = $this->validation_input->getErrors();
                } else {
                    unset($_POST['id']);
                    $_datamodel['tkb_fgiic_pob'] = $this->request->getVar('tkb_fgiic_pob');
                    $_datamodel['tkb_fgiic_parsial'] = $this->request->getVar('tkb_fgiic_parsial');
                    $_datamodel['tkb_fgiic_fic_no'] = $this->request->getVar('tkb_fgiic_fic_no');
                    $_datamodel['tkb_fgiic_fic_date'] = $this->request->getVar('tkb_fgiic_fic_date');
                    $_datamodel['tkb_fgiic_status'] = 0;
                    
                    $item = count($this->request->getVar('bulumata'));
                    $brg = $this->request->getVar('barang');
                    $n = $this->request->getVar('nilai');
                    $b = $this->request->getVar('bulumata');
                    $qbm = $this->request->getVar('qty_bm');
                    $tkb_fgiic_item = array();
                    $sum = 0;
                    for ($j=0; $j < $item; $j++) {
                        $valqbm = str_replace('.',"",$qbm[$j]);
                        $data = array(
                            'barang' => json_decode($brg[$j]),
                            'nilai' => $n[$j],
                            'bulumata' => $b[$j],
                            'qty_bm' => $valqbm,
                        );
                        array_push($tkb_fgiic_item, $data);
                    }
                    $_datamodel['tkb_fgiic_item'] = json_encode($tkb_fgiic_item);
                    if(isset($_POST['kirim'])){
                        $_datamodel['tkb_fgiic_status'] = 1;
                        $_datamodel['tkb_fgiic_status_mkt'] = 0;
                        $_datamodel['tkb_fgiic_status_sc'] = 0;
                        //update pengiriman
                        $kirimBarang = new  \App\Models\KirimBarangPro();
                        $_kirimBarang = $kirimBarang->where('deleted_at', null)->where('tkb_pro_iskirim', 0)->orderBy('tkb_pro_id', 'ASC')->findAll();
                        $qty_kirim = 0;
                        foreach ($_kirimBarang as $d) {
                            $json = json_decode($d->tkb_pro_item);
                            $temp_barang = array();
                            $flag = true;
                            foreach($json as $j){
                                $i = $j->item;
                                $b = $j->bulumata;
                                $qty = $j->qty;
                                $qty_bm = $j->qty_bm;
                                $p = $j->pob;
                                $qty_kirim = $j->qty_kirim;
                                for ($j=0; $j < $item; $j++) {
                                    $valqbm = str_replace('.',"",$qbm[$j]);
                                    $barang = json_decode($brg[$j]);
                                    if(!empty($barang)){
                                        foreach($barang as $h){
                                            // if($h->tkb_pro_id == $d->tkb_pro_id && $i == $h->item){
                                            if($h->tkb_pro_id == $d->tkb_pro_id && $i == $h->item && $b == $h->bulumata){
                                                //update qty_kirim
                                                $qty_kirim = $qty_kirim + $h->qty;
                                                //update stok
                                                $stok = new  \App\Models\MasterStok();
                                                $dtm = array(
                                                    'mb_id' => $i,
                                                    'ms_stok_fgi_transit' => (int)$h->qty,
                                                );
                                                $stok->save($dtm);
                                                $stokbm = new  \App\Models\MasterStokbulumata();
                                                $datamodelbm = array(
                                                    'mbm_id' => $b,
                                                    'msb_stok_transit' => (int)$valqbm,
                                                    'msb_pob' => $p,
                                                );
                                                $stokbm->save($datamodelbm);
                                            }
                                        }
                                    }
                                }
                                $datas = [
                                    'item' => $i,
                                    'qty' => $qty,
                                    'qty_kirim' => $qty_kirim,
                                    'qty_bm' => $qty_bm,
                                    'pob' => $p,
                                    'bulumata' => $b,
                                ]; 
                                array_push($temp_barang,$datas);
                                if($qty_kirim < $qty){
                                    $flag = false;
                                }
                            }
                            if($flag){
                                $_datamodels['tkb_pro_iskirim'] = 1;
                            }else{
                                $_datamodels['tkb_pro_iskirim'] = 0;
                            }
                                // log_message('alert','data updated '.json_encode($temp_barang));
                            $_datamodels['tkb_pro_item'] = json_encode($temp_barang);
                            $kirimBarangs = new  \App\Models\KirimBarangPro();
                            $kirimBarangs->update($d->tkb_pro_id, $_datamodels);
                        }
                    }
                    try {
                        if (!$mdl->update($id, $_datamodel)) {
                            throw new \CodeIgniter\Database\Exceptions\DatabaseException();
                        } else {
                            $this->setMessage(false, true, $this->msgLib->scs_edit());
                        }
                    } catch (Exception $e) {
                        $this->setMessage(true, false, $this->msglib->err_edit());
                    }
                }
            }
            $this->render->viewAdmin($this->content_views['form_edit_view'], $this);
        } else if ($state == 'delete') {
            $this->view_data['state'] = 'delete';
            $mdl = $this->myLib->getNewModel($this->models['base_model']);
            $_data = $mdl->find($id);
            
            $json = json_decode($_data->tkb_fgiic_item);
            foreach($json as $j){
                $brg = $j->barang;
                $n = $j->nilai;
                $b = $j->bulumata;
                $qbm = $j->qty_bm;
                $barang = json_encode($brg);
                    if(!empty($brg)){
                        foreach($brg as $h){
                            $stok = new  \App\Models\MasterStok();
                            $dtm = array(
                                'mb_id' => $h->item,
                                'ms_stok_fgi' => (int)$h->qty,
                                'ms_alasan' => 'canceled transaction',
                            );
                            $stok->save($dtm);
                        }
                            $stokbm = new  \App\Models\MasterStokbulumata();
                            $datamodelbm = array(
                                'mbm_id' => $b,
                                'msb_stok' => (int)$qbm,
                                'msb_pob' => $_data->tkb_fgiic_pob,
                                'msb_alasan' => 'canceled transaction',
                            );
                            $stokbm->save($datamodelbm);
                     }       
                }
            $this->view_data['upload_data'] = $this->upload_data;
            try {
                if (!$mdl->delete($id)) {
                    throw new \CodeIgniter\Database\Exceptions\DatabaseException();
                } else {
                    $this->setMessage(false, true, $this->msgLib->scs_del());
                }
            } catch (Exception $e) {
                $this->setMessage(false, true, $this->msglib->err_del());
            }
            $this->render->viewAdmin($this->content_views['form_delete_view'], $this);
            // parent::stateDelete($id);
        } else if ($state == 'restore') {
            parent::stateRestore($this->id_column_name, $id);
        } else if ($state == 'deletepermanent') {
            parent::stateDeletePermanent($this->id_column_name, $id);
        } else if ($state == 'view') {
            parent::stateView($id);
        } else {
            return redirect()->route('override404');
        }
    }
    public function trash()
    {
        parent::filterStoreLoad();
        parent::trashView();
    }  
    public function cekstok(){
        if(isset($_POST)){
            $id=$_POST['id'];
            $brg = new  \App\Models\MasterStok();
            $_brg = $brg->get_sum_stok_fgi($id);
            if ($_brg->stok != 0) {
                echo json_encode(array(
                    "statusCode"=>200,
                    "stok"=>$_brg->stok
                ));
            } else {
                echo json_encode(array(
                    "statusCode"=>400,
                    "stok"=>0
                )); 
            }
        }
    } 
    public function cekstokbulumata(){
        if(isset($_POST)){
            $id=$_POST['id'];
            $pob=$_POST['pob'];
            $brg = new  \App\Models\MasterStokbulumata();
            $_brg = $brg->get_sum_stokbm_transit_pob($id,$pob);
            if ($_brg->stok != 0) {
                echo json_encode(array(
                    "statusCode"=>200,
                    "stok"=>$_brg->stok
                ));
            } else {
                echo json_encode(array(
                    "statusCode"=>400,
                    "stok"=>0
                )); 
            }
        }
    } 
    public function checkpassword()
    {
        $confirm_password = $_POST['cp'];
        $brg = new  \App\Models\MasterPasskeu();
        $_brg = $brg->first();
        $password = $_brg->mpkeu_pass;
        if($confirm_password == $password){
            $mdl = $this->myLib->getNewModel($this->models['base_model']);
            echo json_encode(array(
                "statusCode"=>200
            )); 
        }else{
            echo json_encode(array(
                "statusCode"=>400
            ));  
        }
    }
    public function cekbarang(){
        if(isset($_POST)){
            $id=$_POST['id'];
            $value=$_POST['value'];
           
            $kirimBarang = new  \App\Models\KirimBarangPro();
            $_kirimBarang = $kirimBarang->where('deleted_at', null)->where('tkb_pro_iskirim', 0)->orderBy('tkb_pro_id', 'ASC')->findAll();
            $bm = new  \App\Models\MasterBulumata();
            $_bm = $bm->where('mbm_id', $id)->first();
            $konversi = $_bm->mbm_konversi ?? 1;
            $flag = true;
            $kirim = $value*$konversi;
            $sisa_kirim = $value*$konversi;
            $defParams = array();
            $temp_barang_show = array();
            $temp_barang_list = array();
            log_message('alert','jml kirim '.$kirim);
            foreach ($_kirimBarang as $d) {
                if($flag){
                    $json = json_decode($d->tkb_pro_item);
                    foreach($json as $j){
                        $i = $j->item;
                        $b = $j->bulumata;
                        $qty = $j->qty;
                        $qty_bm = $j->qty_bm;
                        $p = $j->pob;
                        $qty_kirim = $j->qty_kirim;
                        if($qty_kirim < $qty){
                            if ($b == $id){
                                $sisaStok = $qty - $qty_kirim;//50
                                if($sisaStok >= $kirim){//stok lebih besar dari jml dikirim
                                    $qty_kirim = (int)$qty_kirim + (int)$kirim; //disimpan untuk memotong qty_kirim
                                    $data = array(
                                        'tkb_pro_id' => $d->tkb_pro_id,
                                        'item' => $i,
                                        'bulumata' => $b,
                                        'qty' => $kirim,
                                    ); 
                                    $barang = new  \App\Models\MasterBarang();
                                    $_barang = $barang->where('mb_id', $i)->where('deleted_at', null)->first();
                                    $dl = array(
                                        'brg' => $_barang->mb_kode,
                                        'qty' => $kirim,
                                    ); 
                                    if($kirim > 0){
                                        array_push($temp_barang_show,$data);
                                        array_push($temp_barang_list,$dl);
                                    }
                                    $kirim = 0;
                                    $flag = false;
                                } else{ //stok lebih kecil dari jml kirim
   
                                    $kirim = $kirim-$sisaStok;
                                    $qty_kirim = $qty_kirim + $sisaStok; //disimpan untuk memotong qty_kirim
                                    $data = array(
                                        'tkb_pro_id' => $d->tkb_pro_id,
                                        'item' => $i,
                                        'bulumata' => $b,
                                        'qty' => $sisaStok,
                                    ); 
                                    $barang = new  \App\Models\MasterBarang();
                                    $_barang = $barang->where('mb_id', $i)->where('deleted_at', null)->first();
                                    $dl = array(
                                        'brg' => $_barang->mb_kode,
                                        'qty' => $sisaStok,
                                    ); 
                                    if($sisaStok > 0){
                                        array_push($temp_barang_show,$data);
                                        array_push($temp_barang_list,$dl);
                                    }
                                    if($kirim <= 0){
                                        $flag = false;
                                    }
                                }
                            }
                        }
                    }
                }
                
            }
            log_message('alert','temp data barang '.json_encode($temp_barang_list));
            // log_message('alert','-------------------------------');
                echo json_encode(array(
                    "statusCode"=>200,
                    "barang"=> json_encode($temp_barang_show),
                    "baranglist"=> json_encode($temp_barang_list)
                ));
        }
    }
}