db_inventory = $this->load->database("inventory", true); $this->db_inventory_log = $this->load->database('inventory_log', true); $this->db_onex = 'one_aditya'; } function search() { try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $search = "%%"; if (isset($prm['search']) && trim($prm["search"]) != '') { $search = trim($prm["search"]); $search = '%' . $prm['search'] . '%'; } $filter_warehouse = ''; if (isset($prm['warehouse_id']) && intval($prm['warehouse_id']) > 0) { $filter_warehouse = ' AND StockWarehouseID = '.$prm['warehouse_id']; } $order_by = "WarehouseName"; if (isset($prm['order_by'])) { $order_by = trim($prm["order_by"]); } $order_type = "asc"; if (isset($prm['order_type'])) { $order_type = trim($prm["order_type"]); } $order = $order_by.' '.$order_type; $perpage = 10; $offset = ($prm['current_page'] - 1) * $perpage ; $sql = "SELECT COUNT(*) as total FROM ( SELECT StockID as id FROM `stock` JOIN `warehouse` ON StockWarehouseID = WarehouseID $filter_warehouse JOIN `warehousealmari` ON StockWarehouseAlmariID = WarehouseAlmariID JOIN `warehouserack` ON StockWarehouseRackID = WarehouseRackID JOIN `item` ON StockWarehouseRackID = StockItemID JOIN `itemunit` ON StockItemUnitID = ItemUnitID WHERE StockQty > 0 AND ( ItemName like ? ) ) x"; $qry = $this->db_inventory->query($sql,array($search)); $tot_count = 0; $tot_page = 0; if ($qry) { $tot_count = $qry->row()->total; $tot_page = ceil($tot_count/$perpage); } else { //echo $this->db_inventory->last_query(); $this->sys_error_db("purchase order count error", $this->db_inventory->last_query()); exit; } $rows = array(); $sql = "SELECT StockID as id, StockWarehouseID as warehouse_id, WarehouseName as warehouse_name, StockWarehouseAlmariID as almari_id, WarehouseAlmariName as almari_name, WarehouseRackID as rack_id, WarehouseRackName as rack_name, StockStockNumber as stock_number, StockItemID as item_id, ItemName as item_name, StockItemUnitID as unit_id, ItemUnitName as unit_name, StockBatchNo as batch_no, StockED as ed, StockQty as qty FROM `stock` JOIN `warehouse` ON StockWarehouseID = WarehouseID $filter_warehouse JOIN `warehousealmari` ON StockWarehouseAlmariID = WarehouseAlmariID JOIN `warehouserack` ON StockWarehouseRackID = WarehouseRackID JOIN `item` ON StockItemID = ItemID JOIN `itemunit` ON StockItemUnitID = ItemUnitID WHERE StockQty > 0 AND ( ItemName like ? ) ORDER BY $order_by $order_type LIMIT ? OFFSET ?"; $qry = $this->db_inventory->query($sql, array($search, $perpage, $offset)); //echo $this->db_inventory->last_query(); if($qry){ $rows = $qry->result_array(); $result = array("total_page" => $tot_page, "records" => $rows); $this->sys_ok($result); exit; } else{ echo $this->db_inventory->last_query(); $this->sys_error_db("mutasireceive order select error", $this->db_inventory->last_query()); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function get_details(){ try { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $sql = "SELECT * FROM ( SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, PurchaseReceiveNumber as trx_number, 'Penerimaan Purchase' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN purchasereceivedetail ON StockCardReffID = PurchaseReceiveDetailID JOIN purchasereceive ON PurchaseReceiveDetailPurchaseReceiveID = PurchaseReceiveID WHERE StockCardStatus = 'PRV' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, OpnameNumber as trx_number, 'Opname' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN opnamedetail ON StockCardReffID = OpnameDetailID JOIN opname ON OpnameDetailOpnameID = OpnameID WHERE StockCardStatus = 'OPM' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, MutasiInternalNumber as trx_number, 'Mutasi Internal' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN mutasiinternaldetailstock ON MutasiInternalDetailStockID = StockCardReffID JOIN mutasiinternaldetail ON MutasiInternalDetailID = MutasiInternalDetailStockMutasiInternalDetailID JOIN mutasiinternal ON MutasiInternalDetailMutasiInternalID = MutasiInternalID WHERE StockCardStatus = 'MWF' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, MutasiInternalNumber as trx_number, 'Penerimaan Mutasi Internal' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN mutasiinternaldetailstock ON MutasiInternalDetailStockID = StockCardReffID JOIN mutasiinternaldetail ON MutasiInternalDetailID = MutasiInternalDetailStockMutasiInternalDetailID JOIN mutasiinternal ON MutasiInternalDetailMutasiInternalID = MutasiInternalID WHERE StockCardStatus = 'MWT' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, MutasiNumber as trx_number, 'Mutasi Eksternal' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN mutasidetailstock ON MutasiDetailStockID = StockCardReffID JOIN mutasidetail ON MutasiDetailID = MutasiDetailStockMutasiDetailID JOIN mutasi ON MutasiID = MutasiDetailMutasiID WHERE ( StockCardStatus = 'MPB' OR StockCardStatus = 'MBB' )AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, MutasiReceiveNumber as trx_number, 'Penerimaan Mutasi Eksternal' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN mutasireceivedetail ON MutasiReceiveDetailID = StockCardReffID JOIN mutasireceive ON MutasiReceiveID = MutasiReceiveDetailMutasiReceiveID WHERE StockCardStatus = 'MRB' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, StockConversionNumber as trx_number, 'Konversi Satuan Keluar' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN stockconversion ON StockConversionID = StockCardReffID WHERE StockCardStatus = 'CUO' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, StockConversionNumber as trx_number, 'Konversi Satuan Masuk' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN stockconversion ON StockConversionID = StockCardReffID WHERE StockCardStatus = 'CUI' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, MutasiInternalNumber as trx_number, 'Mutasi Internal' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN mutasiinternaldetailstock ON MutasiInternalDetailStockID = StockCardReffID JOIN mutasiinternaldetail ON MutasiInternalDetailStockMutasiInternalDetailID = MutasiInternalDetailID JOIN mutasiinternal ON MutasiInternalDetailMutasiInternalID = MutasiInternalID WHERE StockCardStatus = 'MIG' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' UNION SELECT StockCardID as id, ItemName as item_name, ItemUnitName as unit_name, StockCardBefore as qty_before, StockCardIn as qty_in, StockCardOut as qty_out, StockCardAfter as qty_after, DATE_FORMAT(StockCardDatetime,'%d-%m-%Y %H:%i') as trx_datetime, MutasiInternalReceiveNumber as trx_number, 'Penerimaan Mutasi Internal' as status_name, StockCardStatus as status_code, StockCardDatetime FROM stockcard JOIN item ON StockCardItemID = ItemID JOIN itemunit ON StockCardItemUnitID = ItemUnitID JOIN mutasiinternalreceivedetail ON MutasiInternalReceiveDetailID = StockCardReffID JOIN mutasiinternalreceive ON MutasiInternalReceiveDetailMutasiInternalReceiveID = MutasiInternalReceiveID WHERE StockCardStatus = 'MIR' AND StockCardWarehouseID = {$prm['warehouse_id']} AND StockCardItemID = {$prm['item_id']} AND StockCardItemUnitID = {$prm['unit_id']} AND StockCardBatchNo = '{$prm['batch_no']}' ) x ORDER BY StockCardDatetime ASC "; $query = $this->db_inventory->query($sql); // echo $this->db_inventory->last_query(); if ($query) { $rows = $query->result_array(); //echo $this->db_inventory->last_query(); $result = array( "records" => $rows); $this->sys_ok($result); } else { $this->sys_error_db("mutasidetail rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function search_to_company_address(){ try { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $prm = $this->sys_input; $max_rst = 12; $tot_count =0; $q = [ 'search' => '%' ]; if ($prm['search'] != '') { $q['search'] = "%{$prm['search']}%"; } $sql = " SELECT CompanyAddressID as id, CompanyAddressLabel as name, CompanyAddressDescription as description, M_BranchID as branch_id, M_BranchName as branch_name FROM companyaddress JOIN company ON CompanyAddressCompanyID = CompanyID JOIN $this->db_onex.m_branch ON CompanyM_BranchID = M_BranchID WHERE CompanyName like ? AND CompanyAddressIsActive = 'Y' ORDER BY CompanyName ASC "; $query = $this->db_inventory->query($sql, array($q['search'])); if ($query) { $rows = $query->result_array(); array_push($rows,array('id'=>0,'name'=>'Semua')); //echo $this->db_onedev->last_query(); $result = array( "records" => $rows, "total_display" => sizeof($rows)); $this->sys_ok($result); } else { $this->sys_error_db("companyaddress rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function get_from_company_address(){ try { if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $sql = "SELECT CompanyAddressID as id, CompanyAddressLabel as name, CompanyAddressDescription as description, M_BranchID as branch_id, M_BranchName as branch_name FROM companyaddress JOIN company ON CompanyAddressCompanyID = CompanyID JOIN $this->db_onex.m_branch ON CompanyM_BranchID = M_BranchID WHERE CompanyAddressIsActive = 'Y' ORDER BY CompanyName ASC "; $query = $this->db_inventory->query($sql); if ($query) { $rows = $query->result_array(); array_push($rows,array('id'=>0,'name'=>'Semua')); //echo $this->db_onedev->last_query(); $result = array( "records" => $rows, "total_display" => sizeof($rows)); $this->sys_ok($result); } else { $this->sys_error_db("companyaddress rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function saveAdd(){ try { if (!$this->isLogin) { $this->sys_error("Invalid Token"); exit; } $userid = $this->sys_user['M_UserID']; $prm = $this->sys_input; $note = ""; if (isset($prm['note'])) { $note = trim($prm['note']); } $this->db_inventory->trans_start(); $this->db_inventory->trans_strict(FALSE); $numbering = ''; $sql = "SELECT `fn_numbering`('MRB') as numbering"; $qry = $this->db_inventory->query($sql); if($qry){ $numbering = $qry->row()->numbering; } else{ $this->sys_error_db("get numbering error", $this->db_inventory->last_query()); exit; } $last_id = 0; $now = new DateTime(); $sql = "INSERT INTO mutasireceive( MutasiReceiveNumber, MutasiReceiveDate, MutasiReceiveWarehouseID, MutasiReceiveFromCompanyID, MutasiReceiveNote, MutasiReceiveUserID, MutasiReceiveCreated, MutasiReceiveLastUpdated ) VALUES( ?,?,?,?,?,?,NOW(),NOW() )"; $param_insert = array( $numbering, $prm['receive_date'], $prm['warehouse']['id'], $prm['from_company_address']['id'], $note, $userid ); $qry = $this->db_inventory->query($sql, $param_insert); $last_id = 0; if($qry){ $last_id = $this->db_inventory->insert_id(); } else{ //echo $this->db_inventory->last_query(); $this->sys_error_db("save receive mutasi error", $this->db_inventory->last_query()); exit; } if(count($prm['details'])>0){ foreach ($prm['details'] as $key => $value) { if(intval($value['qty']) > 0){ $arr_insert_detail = array( 'MutasiReceiveDetailMutasiReceiveID' => $last_id, 'MutasiReceiveDetailMutasiTransitDetailID' => $value['transit_detail_id'], 'MutasiReceiveDetailItemID' => $value['item_id'], 'MutasiReceiveDetailItemUnitID' => $value['unit_id'], 'MutasiReceiveDetailStockNumber' => $value['stock_number'], 'MutasiReceiveDetailBatchNo' => $value['batch_no'], 'MutasiReceiveDetailQty' => $value['qty'], 'MutasiReceiveDetailUserID' => $userid, 'MutasiReceiveDetailCreated' => date("Y-m-d H:i:s"), 'MutasiReceiveDetailLastUpdated' => date("Y-m-d H:i:s") ); $valid_ed = $this->validateDate($value['ed'])?$value['value']:NULL; if($valid_ed && $value['ed'] != '0000-00-00') $arr_insert_detail['MutasiReceiveDetailED'] = $value['ed']; $qry = $this->db_inventory->insert('mutasireceivedetail', $arr_insert_detail); //echo $this->db_inventory->last_query(); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("save mutasidetail error", $this->db_inventory->last_query()); exit; } $detail_id = $this->db_inventory->insert_id(); //start insert stock //get default almari $sql = "SELECT WarehouseAlmariID as almari_id, WarehouseRackID as rack_id FROM warehousealmari JOIN warehouserack ON WarehouseRackWarehouseAlmariID = WarehouseAlmariID AND WarehouseRackIsActive = 'Y' AND WarehouseRackRow = 1 AND WarehouseRackCol = 1 WHERE WarehouseAlmariWarehouseID = ? AND WarehouseAlmariIsActive = 'Y' ORDER BY WarehouseAlmariID ASC LIMIT 1"; $qry = $this->db_inventory->query($sql, array($prm['warehouse']['id'])); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("select warehousealmari error", $this->db_inventory->last_query()); exit; } $data_almari_rack = $qry->row_array(); $select_ed = ""; if($valid_ed && $value['ed'] != '0000-00-00') $select_ed = " AND StockED = '{$value['ed']}'"; $sql = "SELECT * FROM stock WHERE StockWarehouseID = ? AND StockWarehouseAlmariID = ? AND StockWarehouseRackID = ? AND StockStockNumber = ? AND StockBatchNo = ? AND StockItemID = ? AND StockItemUnitID = ? $select_ed LIMIT 1"; $qry = $this->db_inventory->query($sql, array( $prm['warehouse']['id'], $data_almari_rack['almari_id'], $data_almari_rack['rack_id'], $value['stock_number'], $value['batch_no'], $value['item_id'], $value['unit_id'] )); //echo $this->db_inventory->last_query(); if($qry->row_array()){ $data_stock_exist = $qry->row_array(); $sql = "UPDATE stock SET StockQty = ? WHERE StockID = ?"; $qry = $this->db_inventory->query($sql, array( $data_stock_exist['StockID'], intval($data_stock_exist['StockQty']) + intval($value['qty']) )); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("update stock error", $this->db_inventory->last_query()); exit; } }else{ $arr_insert_stock = array( 'StockWarehouseID' => $prm['warehouse']['id'], 'StockWarehouseAlmariID' => $data_almari_rack['almari_id'], 'StockWarehouseRackID' => $data_almari_rack['rack_id'], 'StockStockNumber' => $value['stock_number'], 'StockItemID' => $value['item_id'], 'StockItemUnitID' => $value['unit_id'], 'StockBatchNo' => $value['batch_no'], 'StockCardStatus' => 'MRB', 'StockQty' => $value['qty'], 'StockUserID' => $userid ); if($valid_ed && $value['ed'] != '0000-00-00') $arr_insert_stock['StockED'] = $value['ed']; $qry = $this->db_inventory->insert('stock', $arr_insert_stock); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("save mutasidetail error", $this->db_inventory->last_query()); exit; } } //end insert stock //start insert stocklog $arr_insert_stock_log = array( 'StockLogWarehouseID' => $prm['warehouse']['id'], 'StockLogWarehouseAlmariID' => $data_almari_rack['almari_id'], 'StockLogWarehouseRackID' => $data_almari_rack['rack_id'], 'StockLogStockNumber' => $value['stock_number'], 'StockLogItemID' => $value['item_id'], 'StockLogItemUnitID' => $value['unit_id'], 'StockLogBatchNo' => $value['batch_no'], 'StockLogQty' => $value['qty'], 'StockLogDatetime' => date("Y-m-d H:i:s"), 'StockLogUserID' => $userid, 'StockLogReffID' => $detail_id, 'StockLogStatus' => 'MRB' ); if($valid_ed && $value['ed'] != '0000-00-00') $arr_insert_stock_log['StockLogED'] = $value['ed']; $qry = $this->db_inventory->insert('stocklog', $arr_insert_stock_log); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("save stocklog error", $this->db_inventory->last_query()); exit; } //end insert stocklog //start insert stockcard $select_ed_card = ""; if($valid_ed && $value['ed'] != '0000-00-00') $select_ed_card = " AND StockCardED = '{$value['ed']}'"; $sql = "SELECT * FROM stockcard WHERE StockCardWarehouseID = ? AND StockCardItemID = ? AND StockCardItemUnitID = ? AND StockCardBatchNo = ? $select_ed_card ORDER BY StockCardDatetime DESC LIMIT 1"; $qry = $this->db_inventory->query($sql,array( $prm['warehouse']['id'], $value['item_id'], $value['unit_id'], $value['batch_no'] )); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("save stockcard error", $this->db_inventory->last_query()); exit; } $last_qty = 0; if($qry->row_array()){ $last_qty = $qry->row_array()['StockCardAfter']; } $arr_insert_stockcard = array( 'StockCardWarehouseID' => $prm['warehouse']['id'], 'StockCardItemID' => $value['item_id'], 'StockCardItemUnitID' => $value['unit_id'], 'StockCardBatchNo' => $value['batch_no'], 'StockCardBefore' => $last_qty, 'StockCardIn' => $value['qty'], 'StockCardOut' => 0, 'StockCardAfter' => $last_qty+intval($value['qty']), 'StockCardDatetime' => date("Y-m-d H:i:s"), 'StockCardUserID' => $userid ); if($valid_ed && $value['ed'] != '0000-00-00') $arr_insert_stockcard['StockCardED'] = $value['ed']; $qry = $this->db_inventory->insert('stockcard', $arr_insert_stockcard); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("insert stockcard error", $this->db_inventory->last_query()); exit; } //end insert stockcard //start update receive qty di mutasirequestdetail $sql = "SELECT * FROM mutasirequestdetail WHERE MutasiRequestDetailID = ?"; $qry = $this->db_inventory->query($sql,array( $value['mutasi_request_detail_id'], )); if(!$qry){ $this->sys_error_db("select mutasirequestdetail error", $this->db_inventory->last_query()); exit; } $data_request_detail = $qry->row_array(); //print_r($data_request_detail); $status_detail = 'P'; $request_qty = intval($data_request_detail['MutasiRequestDetailQty']); $receive_qty = intval($data_request_detail['MutasiRequestDetailReceiveQty']) + intval($value['qty']); //echo "REQ :".$request_qty; //echo " RCV :".$receive_qty; if($request_qty == $receive_qty) $status_detail = 'D'; $sql = "UPDATE mutasirequestdetail SET MutasiRequestDetailReceiveQty = ?, MutasiRequestDetailStatus = ? WHERE MutasiRequestDetailID = ? "; $qry = $this->db_inventory->query($sql,array( $receive_qty, $status_detail, $value['mutasi_request_detail_id'] )); if(!$qry){ $this->sys_error_db("update mutasirequestdetail error", $this->db_inventory->last_query()); exit; } $status_header = 'P'; $sql = "SELECT COUNT(*) as x_count FROM mutasirequestdetail WHERE MutasiRequestDetailMutasiRequestID = ? AND MutasiRequestDetailIsActive = 'Y' AND ( MutasiRequestDetailStatus <> 'D' AND MutasiRequestDetailStatus <> 'C' )"; $qry = $this->db_inventory->query($sql,array( $data_request_detail['MutasiRequestDetailMutasiRequestID'] )); if(!$qry){ $this->sys_error_db("select mutasirequestdetail by header error", $this->db_inventory->last_query()); exit; } $data_request_header = $qry->row_array(); if($data_request_header['x_count'] == 0) $status_header = 'D'; $sql = "UPDATE mutasirequest SET MutasiRequestStatus = ? WHERE MutasiRequestID = ? "; $qry = $this->db_inventory->query($sql,array( $status_header, $data_request_detail['MutasiRequestDetailMutasiRequestID'], )); if(!$qry){ $this->sys_error_db("update mutasirequestdetail error", $this->db_inventory->last_query()); exit; } $trx_type = 'T'; if(intval($value['branch_to_branch_id']) == 0){ $arr_insert_respon = array( 'MutasiRequestResponType' => $trx_type, 'MutasiRequestResponToCompanyAdddressID' => $value['from_address_company_id'], 'MutasiRequestResponFromCompanyAdddressID' => $value['to_address_company_id'] , 'MutasiRequestResponMutasiRequestDetailID' => $value['mutasi_request_detail_id'], 'MutasiRequestResponMutasiDetailStockID' => $value['detail_stock_id'], 'MutasiRequestResponMutasiDetailID' => $value['mutasi_detail_id'], 'MutasiRequestResponMutasiID' => $value['mutasi_id'], 'MutasiRequestResponStatus' => $status_detail, 'MutasiRequestResponMutasiRequestReceiveID' => $value['mutasi_request_receive_id'], 'MutasiRequestResponReceive' => $receive_qty , 'MutasiRequestResponCreated' => date("Y-m-d H:i:s") ); $qry = $this->db_inventory->insert('mutasirequestrespon', $arr_insert_respon); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("insert mutasirequestrespon error", $this->db_inventory->last_query()); exit; } } //$trx_type = 'B'; //end update receive qty di mutasirequestdetail //start update receive qty di mutasitransitdetail $sql = "UPDATE mutasitransitdetail SET MutasiTransitDetailReceiveQty = ?, MutasiTransitDetailIsReceive = 'S', MutasiTransitDetailMutasiReceiveID = ? WHERE MutasiTransitDetailID = ? "; $qry = $this->db_inventory->query($sql,array( $value['qty'], $last_id, $value['transit_detail_id'], )); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("update receive qty transitdetail error", $this->db_inventory->last_query()); exit; } //end update receive qty di mutasitransitdetail } } if(intval($prm['details'][0]['branch_to_branch_id']) > 0){ //start update isreceive di mutasibranchtobranch $sql = "UPDATE mutasibranchtobranch SET MutasiBranchToBranchBranchIsReceived = 'N', MutasiBranchToBranchBranchLastUpdated = NOW(), MutasiBranchToBranchBranchReceivedID = ? WHERE MutasiBranchToBranchBranchID = ? "; $qry = $this->db_inventory->query($sql,array( $last_id, $value['branch_to_branch_id'] )); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("update receive mutasibranchtobranch error", $this->db_inventory->last_query()); exit; } //end update isreceive di mutasibranchtobranch $sql = "SELECT * FROM mutasibranchtobranch WHERE MutasiBranchToBranchBranchOldID = ?"; $qry = $this->db_inventory->query($sql,array( $value['branch_to_branch_id'] )); //echo $this->db_inventory->last_query(); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("update receive mutasibranchtobranch error", $this->db_inventory->last_query()); exit; } $data_parsing = $qry->row_array(); //print_r($data_parsing); $mutasi = $this->objToArray(json_decode($data_parsing['MutasiBranchToBranchBranchJSON'])); //print_r($mutasi); $mutasi_details = $mutasi['details']; foreach ($mutasi_details as $k_detail => $v_detail) { $sql = "SELECT SUM(MutasiReceiveDetailQty) as received_qty FROM mutasireceivedetail WHERE MutasiReceiveDetailMutasiReceiveID = ? AND MutasiReceiveDetailIsActive = 'Y' AND MutasiReceiveDetailItemID = ? AND MutasiReceiveDetailItemUnitID = ?"; $qry = $this->db_inventory->query($sql,array( $last_id, $v_detail['MutasiDetailItemID'], $v_detail['MutasiDetailItemUnitID'] )); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("select receive mutasireceivedetail error", $this->db_inventory->last_query()); exit; } $mutasi['details'][$k_detail]['MutasiDetailReceiveQty'] = $qry->row()->received_qty; } //print_r($mutasi); //$mutasi['details'] = $mutasi_details; $insert_mutasi_respon = array(); $insert_mutasi_respon['MutasiReceiveResponReceiveID'] = $last_id; $insert_mutasi_respon['MutasiReceiveResponType'] = $mutasi['MutasiType']; $insert_mutasi_respon['MutasiReceiveResponFromCompanyAddressID'] = $prm['details'][0]['to_address_company_id']; $insert_mutasi_respon['MutasiReceiveResponToCompanyAddressID'] = $prm['details'][0]['from_address_company_id']; $insert_mutasi_respon['MutasiReceiveResponJSON'] = json_encode($mutasi); $insert_mutasi_respon['MutasiReceiveResponCreated'] = date("Y-m-d H:i:s"); $insert_mutasi_respon['MutasiReceiveResponLastUpdated'] = date("Y-m-d H:i:s"); $qry = $this->db_inventory->insert('mutasireceiverespon', $insert_mutasi_respon); if(!$qry){ //echo $this->db_inventory->last_query(); $this->sys_error_db("insert mutasireceiverespon error", $this->db_inventory->last_query()); exit; } } } $id = $last_id; $sql = "SELECT mutasireceive.*, '' as details FROM mutasireceive WHERE MutasiReceiveID = ? "; $qry = $this->db_inventory->query($sql, array($id)); //echo $this->db_inventory->last_query(); if(!$qry){ $this->sys_error_db("select mutasireceive error", $this->db_inventory->last_query()); exit; } $row_after = $qry->row_array(); $sql = "SELECT *, '' as details FROM `mutasireceivedetail` WHERE MutasiReceiveDetailMutasiReceiveID = ? AND MutasiReceiveDetailIsActive = 'Y'"; $qry = $this->db_inventory->query($sql, array($id)); if(!$qry){ $this->sys_error_db("select mutasireceivedetail error", $this->db_inventory->last_query()); exit; } $row_after['details'] = $qry->result_array(); $data_log_after = $row_after; $sql = "INSERT INTO mutasireceive_log ( MutasiReceiveLogReceiveID, MutasiReceiveLogStatus, MutasiReceiveLogBefore, MutasiReceiveLogAfter, MutasiReceiveLogUserID, MutasiReceiveLogCreated ) VALUES( ?,?,NULL,?,?,NOW() )"; $qry = $this->db_inventory_log->query($sql, array($id,'ADD',json_encode($data_log_after),$userid)); if(!$qry){ $this->sys_error_db("insert log error", $this->db_inventory_log->last_query()); exit; } $this->db_inventory->trans_complete(); $result = array( "message" => '' ); $this->sys_ok($result); } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function validateDate($date, $format = 'Y-m-d') { $d = DateTime::createFromFormat($format, $date); // The Y ( 4 digits year ) returns TRUE for any integer with any number of digits so changing the comparison from == to === fixes the issue. return $d && $d->format($format) === $date; } function get_data_company_default(){ try{ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $sql = "SELECT CompanyID as id, CompanyName as name, '' as address FROM company JOIN one_aditya.m_branch ON CompanyM_BranchID = M_BranchID AND M_BranchIsDefault = 'Y' WHERE CompanyIsActive = 'Y' LIMIT 1"; $query = $this->db_inventory->query($sql); if ($query) { $row = $query->row_array(); $sql = "SELECT CompanyAddressID as id, CompanyAddressLabel as name, CompanyAddressDescription as description FROM companyaddress WHERE CompanyAddressCompanyID = ? AND CompanyAddressIsActive = 'Y'"; $query = $this->db_inventory->query($sql,array($row['id'])); $data_address = $query->result_array(); $row['address'] = $data_address; $result = array("records" => $row); $this->sys_ok($result); } else { $this->sys_error_db("expedition rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function get_warehouse(){ try{ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $sql = "SELECT WarehouseID as id, WarehouseName as name FROM warehouse JOIN warehousealmari ON WarehouseAlmariWarehouseID = WarehouseID AND WarehouseAlmariIsActive = 'Y' JOIN warehouserack ON WarehouseRackWarehouseAlmariID = WarehouseAlmariID AND WarehouseRackIsActive = 'Y' WHERE WarehouseIsActive = 'Y' GROUP BY WarehouseID"; $query = $this->db_inventory->query($sql); if ($query) { $rows = $query->result_array(); $result = array("records" => $rows); $this->sys_ok($result); } else { $this->sys_error_db("warehouse rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } protected function objToArray($obj) { // Not an object or array if (!is_object($obj) && !is_array($obj)) { return $obj; } // Parse array foreach ($obj as $key => $value) { $arr[$key] = $this->objToArray($value); } // Return parsed array return $arr; } function get_expedition_staff(){ try{ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $sql = "SELECT M_StaffID as id, M_StaffName as name FROM expeditionstaff JOIN $this->db_onex.m_staff ON ExpeditionStaffM_StaffID = M_StaffID AND M_StaffIsActive = 'Y' WHERE ExpeditionStaffIsActive = 'Y'"; $query = $this->db_inventory->query($sql); if ($query) { $rows = $query->result_array(); $result = array("records" => $rows); $this->sys_ok($result); } else { $this->sys_error_db("expedition rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function get_from_company_address_form(){ try{ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $sql = "SELECT CompanyAddressID as id, CompanyAddressLabel as name, 'T' as trx_type, CompanyAddressDescription as description, CompanyName as company_name FROM companyaddress JOIN mutasitransitdetail ON MutasiTransitDetailFromCompanyAddressID = CompanyAddressID AND MutasiTransitDetailIsReceive = 'N' JOIN company ON CompanyAddressCompanyID = CompanyID WHERE CompanyAddressIsActive = 'Y' GROUP BY CompanyAddressID UNION SELECT CompanyAddressID as id, CompanyAddressLabel as name, 'B' as trx_type, CompanyAddressDescription as description, CompanyName as company_name FROM companyaddress JOIN mutasibranchtobranch ON MutasiBranchToBranchBranchFromCompanyAddressID = CompanyAddressID AND MutasiBranchToBranchBranchIsReceived = 'N' JOIN company ON CompanyAddressCompanyID = CompanyID WHERE CompanyAddressIsActive = 'Y' GROUP BY CompanyAddressID"; $query = $this->db_inventory->query($sql); if ($query) { $rows = $query->result_array(); $result = array("records" => $rows); $this->sys_ok($result); } else { $this->sys_error_db("companyaddress rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function get_data_transit(){ try{ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $userid = $this->sys_user['M_UserID']; $prm = $this->sys_input; $id = $prm['company_address_id']; $sql = "SELECT MutasiTransitDetailID as transit_detail_id, MutasiTransitDetailMutasiBranchToBranchBranchID as branch_to_branch_id, MutasiTransitDetailMutasiDetailStockID as detail_stock_id, MutasiTransitDetailMutasiNumber as mutasi_number, MutasiTransitDetailMutasiID as mutasi_id, CompanyName as company_name, ItemID as item_id, ItemUnitID as unit_id, MutasiTransitDetailQty as qty_sent, ItemName as item_name, ItemUnitName as unit_name, CONCAT(ItemName,' : ',ItemUnitName) as itemunit_name, MutasiTransitDetailQty as qty, MutasiTransitDetailBatchNo as batch_no, MutasiTransitDetailStockNumber as stock_number, MutasiTransitDetailED as ed, MutasiTransitDetailFromCompanyAddressID as from_address_company_id, MutasiTransitDetailToCompanyAddressID as to_address_company_id, MutasiTransitDetailExpeditionName as expedition_name, MutasiTransitDetailExpeditionStaff as expedition_staff, MutasiTransitDetailMutasiReceiveID as mutasi_receive_id, MutasiTransitDetailMutasiDetailID as mutasi_detail_id, MutasiTransitDetailMutasiRequestReceiveID as mutasi_request_receive_id, MutasiTransitDetailMutasiRequestDetailID as mutasi_request_detail_id, MutasiTransitDetailNote as note FROM mutasitransitdetail JOIN companyaddress ON MutasiTransitDetailFromCompanyAddressID = CompanyAddressID JOIN company ON CompanyAddressCompanyID = CompanyID JOIN item ON MutasiTransitDetailItemID = ItemID JOIN itemunit ON MutasiTransitDetailItemUnitID = ItemUnitID WHERE MutasiTransitDetailIsSend = 'Y' AND MutasiTransitDetailIsReceive = 'N' AND MutasiTransitDetailIsActive = 'Y' AND MutasiTransitDetailFromCompanyAddressID = ?"; $query = $this->db_inventory->query($sql,array($id)); //echo $this->db_inventory->last_query(); if ($query) { $rows = $query->result_array(); $result = array("records" => $rows); $this->sys_ok($result); } else { $this->sys_error_db("get data transit rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } function get_printout(){ try{ if (! $this->isLogin) { $this->sys_error("Invalid Token"); exit; } $sql = "SELECT * FROM r_report WHERE R_ReportCode = 'MPB' AND R_ReportIsActive = 'Y'"; $query = $this->db_inventory->query($sql); if ($query) { $rows = $query->row_array(); $result = array("records" => $rows); $this->sys_ok($result); } else { $this->sys_error_db("r_report rows",$this->db_inventory); exit; } } catch (Exception $exc) { $message = $exc->getMessage(); $this->sys_error($message); } } }