diff --git a/app/Config/Routes.php b/app/Config/Routes.php index 8af7681..1566b77 100644 --- a/app/Config/Routes.php +++ b/app/Config/Routes.php @@ -165,6 +165,7 @@ $routes->get('/activities/newtextarea', 'Activities::newtextarea'); $routes->get('/activities/activitiesproduct/(:num)', 'Activities::activitiesproduct/$1'); $routes->get('/activities/dummy', 'Activities::dummy'); $routes->match(['get','post'],'/activities/create', 'Activities::edit/0'); +$routes->match(['get','post'],'/activities/refer/(:num)', 'Activities::createrefer/$1'); $routes->match(['get','post'],'/activities/savesend', 'Activities::savesend'); $routes->match(['get','post'],'/activities/edit/(:num)', 'Activities::edit/$1'); $routes->match(['get','post'],'/activities/editsend', 'Activities::editsend'); diff --git a/app/Controllers/Activities.php b/app/Controllers/Activities.php index 4afa7bb..287e662 100644 --- a/app/Controllers/Activities.php +++ b/app/Controllers/Activities.php @@ -26,7 +26,9 @@ class Activities extends Controller { 'MT' => 'Marketing', 'PS' => 'Product Specialist', ); - $this->data['stats'] = array('O'=>'Open', 'A'=>'Accepted', 'P'=>'Pending', 'C'=> 'Close', 'S' => 'Suspend', 'D' => 'Disable'); + $this->data['stats'] = array('O'=>'Open', 'R'=>'Refer', 'A'=>'Accepted', 'P'=>'Pending', 'C'=>'Close', + // 'S'=>'Suspend', 'D'=>'Disable' + ); $this->data['actbys'] = array( 'P'=>'Product ( Equipment / System )' , 'V'=> 'Vendor', 'C'=>'Consumables / Reagent', 'O'=>'Other'); $this->data['exports'] = array('P'=>'PDF', 'E'=> 'Excel'); $this->data['acttypes'] = array(1=>'Incident Report', 2=> 'Change Request', 3=>'Project', 4=>'Support', 5=>'Maintenance', 6=>'Training', 7=>'Refurbish', 9=>'Training Customer/TSO'); @@ -159,9 +161,9 @@ class Activities extends Controller { -- OR ( a.reportdate between '$reportdate 00:00:00' and '$closedate 23:59:59' $filterquery $areaquery ) OR ( a.activitystatus='O' $filterquery $areaquery ) OR ( a.activitystatus='P' $filterquery ) + OR ( a.activitystatus='R' ) GROUP BY a.actid - order by field(a.activitystatus,'O','C','R'), a.closedate desc, a.reportdate desc"; - + order by field(a.activitystatus,'O','R','C'), a.closedate desc, a.reportdate desc"; // $sql = "SELECT s.sitename, pc.productname, v.vendorname, u.firstname AS username, up.userposid, at.fulltext, a.* // -- ,ad.* // FROM @@ -191,6 +193,8 @@ class Activities extends Controller { $data['sql'] = $sql; $data['tampildata'] = $result; + // dd($sql); + return view('activities_index', $data); } @@ -263,6 +267,9 @@ class Activities extends Controller { $data['actid'] = $actid; $siteid = ''; $actby = ''; + + $data['actid_ref_status'] = 'disabled'; // Khusus untuk refer create + $data['reff'] = []; //Reff if($actid != 0) { $sql = "select * from activities where actid=$actid"; @@ -271,7 +278,22 @@ class Activities extends Controller { $data['activities'] = $results; $siteid = $results[0]['siteid']; $actby = $results[0]['actby']; - + + // Khusus Untuk Refer Edit + if ($results[0]['actid_ref'] > 0 ) { + $act_reff = $results[0]['actid_ref']; + $data['actid_ref_status'] = ''; + $sql = "SELECT a.actid, a.subject, CONCAT(u.firstname,' ',u.lastname) as fullname, s.sitename + FROM activities a + LEFT JOIN sites s ON a.`siteid`=s.`siteid` + LEFT JOIN users u ON a.`userid_owner`=u.`userid` + WHERE a.actid=$act_reff"; + // -- AND a.actid = $actid + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['reff'] = $results; + } + $sql = "select actdetailid, acttextid, textvalue from actdetail where actid=$actid order by acttextid, createdate desc"; $query = $db->query($sql); $results = $query->getResultArray(); @@ -281,7 +303,7 @@ class Activities extends Controller { $data['activities'][0]['acttextid'][] = $result['acttextid']; $data['activities'][0]['textvalue'][] = $result['textvalue']; } - + $sql = "select * from invtrans where actid='$actid'"; $query = $db->query($sql); $results = $query->getResultArray(); @@ -292,7 +314,7 @@ class Activities extends Controller { $query = $db->query($sql); $results = $query->getResultArray(); $data['users'] = $results; - + $sql = "select siteid, enddate, sitename from sites where enddate is null order by siteid"; $query = $db->query($sql); $results = $query->getResultArray(); @@ -325,8 +347,8 @@ class Activities extends Controller { $data['unitgroup'] = $results; $sql = "SELECT p.productid, s.sitename, pc.productname, p.productnumber FROM products p - LEFT JOIN productcatalog pc ON p.`catalogid`=pc.`catalogid` - LEFT JOIN sites s ON s.`siteid`=p.`siteid`"; + LEFT JOIN productcatalog pc ON p.`catalogid`=pc.`catalogid` + LEFT JOIN sites s ON s.`siteid`=p.`siteid`"; $query = $db->query($sql); $results = $query->getResultArray(); $data['products'] = $results; @@ -353,14 +375,14 @@ class Activities extends Controller { 'actdetailid' => 'required' ]; $data['new_value'] = [ - 'actid_ref' => $this->request->getVar('actid_ref'), + 'actid_ref' => (int) $this->request->getVar('actid_ref'), 'actby' => $this->request->getVar('actby'), 'siteid' => $this->request->getVar('siteid'), 'acttypeid' => $this->request->getVar('acttypeid'), 'userid_owner' => $this->request->getVar('userid_owner'), 'userid_creator' => $this->request->getVar('userid_creator'), 'activitystatus' => $this->request->getVar('activitystatus'), - 'referid' => $this->request->getVar('referid'), + // 'referid' => $this->request->getVar('referid'), 'reportfrom' => $this->request->getVar('reportfrom'), 'reportdate' => $this->request->getVar('reportdate'), 'opendate' => $this->request->getVar('opendate'), @@ -388,8 +410,8 @@ class Activities extends Controller { $data['new_value']['productid'] = null; $data['new_value']['swversion'] = null; } - - if($this->validate($rules)) { + + if ($this->validate($rules)) { $db = \Config\Database::connect(); if($actid == 0) { @@ -410,7 +432,7 @@ class Activities extends Controller { $activitiesModel = new ActivitiesModel(); $activitiesModel->set('createdate', 'NOW()', FALSE); $activitiesModel->insert($data['new_value']); - + // Create Activities Status Log $actid = $activitiesModel->getInsertID(); $actstatus = $data['new_value']['activitystatus']; @@ -430,6 +452,12 @@ class Activities extends Controller { // update edit $activitiesModel = new ActivitiesModel(); $activitiesModel->update($actid,$data['new_value']); + + // REFF UPDATE + if ($data['new_value']['activitystatus'] == 'C' && $data['new_value']['actid_ref'] > 0 ) { + // Update field 'activitystatus' menjadi 'C' untuk actid yang REF + $activitiesModel->update($data['new_value']['actid_ref'], ['activitystatus' => 'C']); + } // clear other act by if($actby == 'P') { // product @@ -561,8 +589,270 @@ class Activities extends Controller { } } $data['actid'] = $actid; + $data['refer_page'] = false; // Khusus untuk controller refer return view('activities_editor',$data); } + + public function createrefer($actid) { + + $db = \Config\Database::connect(); + + // Digunakan Untuk Get Reff ID saja + $sql = "SELECT a.actid, a.subject, CONCAT(u.firstname,' ',u.lastname) as fullname, s.sitename + FROM activities a + LEFT JOIN sites s ON a.`siteid`=s.`siteid` + LEFT JOIN users u ON a.`userid_owner`=u.`userid` + WHERE a.activitystatus='R' and a.actid=$actid"; + // -- AND a.actid = $actid + $query = $db->query($sql); + $results = $query->getResultArray(); + if (empty($results)) {// Jika KOSONG ALIAS TIDAK ADA REFF ID + return redirect()->to('/activities'); + } + $data['reff'] = $results; + + // Hilangkan Reff ID + unset($this->data['stats']['R']); + unset($this->data['stats']['A']); + unset($this->data['stats']['P']); + $data['controller'] = $this; + // $data['actid'] = $actid; + $siteid = ''; + $actby = ''; + + $sql = "select * from activities where actid=$actid"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['activities'] = $results; + + $data['activities'][0]['reportdate'] = date("Y-m-d H:i:s"); + $data['activities'][0]['opendate'] = date("Y-m-d H:i:s"); + $data['activities'][0]['closedate'] = null; + $data['activities'][0]['reportfrom'] = null; + $data['activities'][0]['subject'] = null; + $data['activities'][0]['activitystatus'] = 'O'; + $data['activities'][0]['action'] = null; + $data['activities'][0]['userid_owner'] = $_SESSION['userid']; + $data['activities'][0]['userid_creator'] = $_SESSION['userid']; + $data['activities'][0]['attachment'] = null; + $data['actid_ref'] = $actid; + + $siteid = $results[0]['siteid']; + $actby = $results[0]['actby']; + + $sql = "select userid, firstname, lastname from users where enddate is null order by firstname"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['users'] = $results; + + $sql = "select siteid, enddate, sitename from sites where enddate is null order by siteid"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['sites'] = $results; + + $sql = "select * from acttype"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['acttype'] = $results; + + $sql = "select * from acttext"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['acttext'] = $results; + + $data['medias'] = $this->data['medias']; + $data['actions'] = $this->data['actions']; + $data['stats'] = $this->data['stats']; + $data['actbys'] = $this->data['actbys']; + + // invtrans + $data['purposes'] = $this->data['itx_purposes']; + $data['conditions'] = $this->data['itx_conditions']; + + $sql = " SELECT u.*, c.`productname`, c.catalognumber FROM unitgroup u + LEFT JOIN productcatalog c ON u.`catalogid`=c.`catalogid` + WHERE c.productaliasid<>0 AND u.`enddate` IS NULL"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['unitgroup'] = $results; + + $sql = "SELECT p.productid, s.sitename, pc.productname, p.productnumber FROM products p + LEFT JOIN productcatalog pc ON p.`catalogid`=pc.`catalogid` + LEFT JOIN sites s ON s.`siteid`=p.`siteid`"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['products'] = $results; + + $sql = "SELECT * FROM invcounters"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['invcounters'] = $results; + + $sql = "SELECT * FROM vendors"; + $query = $db->query($sql); + $results = $query->getResultArray(); + $data['vendors'] = $results; + + if( $this->request->getVar('siteid') != '' ) { $siteid = $this->request->getVar('siteid'); } + + if ($this->request->getMethod() === 'POST') { + $rules = [ + 'subject' => 'required', + 'siteid' => 'required', + 'userid_creator' => 'required', + 'reportdate' => 'required', + 'activitystatus' => 'required', + 'actdetailid' => 'required' + ]; + $data['new_value'] = [ + 'actid_ref' => $this->request->getVar('actid_ref'), + 'actby' => $this->request->getVar('actby'), + 'siteid' => $this->request->getVar('siteid'), + 'acttypeid' => $this->request->getVar('acttypeid'), + 'userid_owner' => $this->request->getVar('userid_owner'), + 'userid_creator' => $this->request->getVar('userid_creator'), + 'activitystatus' => $this->request->getVar('activitystatus'), + 'reportfrom' => $this->request->getVar('reportfrom'), + 'reportdate' => $this->request->getVar('reportdate'), + 'opendate' => $this->request->getVar('opendate'), + 'closedate' => $this->request->getVar('closedate'), + 'media' => $this->request->getVar('media'), + 'action' => $this->request->getVar('action'), + 'subject' => $this->request->getVar('subject'), + 'attachment' => $this->request->getVar('attachment'), + 'actdetailid' => $this->request->getVar('actdetailid'), + 'acttextid' => $this->request->getVar('acttextid'), + 'textvalue' => $this->request->getVar('textvalue') + ]; + + $actby = $this->request->getVar('actby'); + if($actby == 'P') { + $data['new_value']['productid'] = $this->request->getVar('productid'); + $data['new_value']['swversion'] = $this->request->getVar('swversion'); + $data['new_value']['vendorid'] = null; + } elseif($actby == 'V') { + $data['new_value']['vendorid'] = $this->request->getVar('vendorid'); + $data['new_value']['productid'] = null; + $data['new_value']['swversion'] = null; + } else { + $data['new_value']['vendorid'] = null; + $data['new_value']['productid'] = null; + $data['new_value']['swversion'] = null; + } + + if($this->validate($rules)) { + + // Cek apakah ada duplikasi data + $exists = $db->table('activities') + ->where('subject', $data['new_value']['subject']) + ->where('siteid', $data['new_value']['siteid']) + ->where('reportdate', $data['new_value']['reportdate']) + ->where('opendate', $data['new_value']['opendate']) + ->where('closedate', $data['new_value']['closedate']) + ->where('userid_creator', $data['new_value']['userid_creator']) + ->get()->getRow(); + if ($exists) { // Jika ada maka Redirect + return redirect()->to('/activities'); + } + + // Create Activities + $activitiesModel = new ActivitiesModel(); + $activitiesModel->set('createdate', 'NOW()', FALSE); + $activitiesModel->insert($data['new_value']); + + // REFF UPDATE + if ($data['new_value']['activitystatus'] == 'C') { + // Update field 'activitystatus' menjadi 'C' untuk actid yang REF + $activitiesModel->update($actid, ['activitystatus' => 'C']); + } + + // Create Activities Status Log + $actid = $activitiesModel->getInsertID(); + $actstatus = $data['new_value']['activitystatus']; + $userid = $data['new_value']['userid_creator']; + $sql = "INSERT INTO actstatus_log (activityid, activitystatus, userid, logdate) + VALUES ($actid,'$actstatus', $userid, NOW())"; + $query = $db->query($sql); + + $acttextid = $data['new_value']['acttextid']; + $textvalue = $data['new_value']['textvalue']; + foreach($data['new_value']['acttextid'] as $qindex => $qacttextid) { + $qtextvalue = $db->escapeString($textvalue[$qindex]); + $sql = "insert into actdetail (actid, acttextid, textvalue, createdate) values ('$actid','$qacttextid', '$qtextvalue', NOW())"; + $query = $db->query($sql); + } + + // act by consumables + $actconid_delete = $this->request->getVar('actconid_delete'); + if($actconid_delete != '') { + $actconid_del = explode(' ',$actconid_delete); + foreach($actconid_del as $actconid) { + $sql = "delete from actconsumables where actconid='$actconid'"; + $query = $db->query($sql); + } + } + $catalogid = $this->request->getVar('catalogid'); + if(isset($catalogid)) { + $lotnumber = $this->request->getVar('lotnumber'); + $sql = "INSERT INTO actconsumables ( actid, catalogid, lotnumber ) VALUES "; + foreach($catalogid as $qid => $qvalue) { + $sql .= "( '$actid' , '". $catalogid[$qid]."', '". $lotnumber[$qid]."' ),"; + } + $sql = rtrim($sql, ','); + $query = $db->query($sql); + } + + // invtrans + $itxid_delete = $this->request->getVar('itxid_delete'); + if($itxid_delete!='') { + $itxid_del =explode(' ',$itxid_delete); + foreach($itxid_del as $itxid) { + $sql = "delete from invtrans where itxid='$itxid'"; + $query = $db->query($sql); + } + } + + $dests = $this->request->getVar('dests'); + $origins = $this->request->getVar('origins'); + if(isset($dests)) { + foreach($dests as $qdata) { + $qdata = explode("|",$qdata); + $desttype[] = $qdata[0]; + $destid[] = $qdata[1]; + } + foreach($origins as $qdata) { + $qdata = explode("|",$qdata); + $origtype[] = $qdata[0]; + $origid[] = $qdata[1]; + } + $unitgroupid = $this->request->getVar('unitgroupid'); + $lotnumber = $this->request->getVar('lotnumber'); + $qty = $this->request->getVar('qty'); + $conditions = $this->request->getVar('conditions'); + $itxdate = $this->request->getVar('itxdate'); + $purpose = $this->request->getVar('purpose'); + $sql = "INSERT INTO invtrans ( actid, desttype, destid, origtype, origid, unitgroupid, lotnumber, qty, conditions, purpose, itxdate ) VALUES "; + foreach($origid as $qid => $qorigid) { + $sql .= "( '$actid', '".$desttype[$qid]."', '".$destid[$qid]."', '".$origtype[$qid]."', '".$qorigid."', '". + $unitgroupid[$qid]."', '".$lotnumber[$qid]."', '".$qty[$qid]."', '".$conditions[$qid]."', '".$purpose[$qid]."', '".$itxdate[$qid]."' ),"; + } + $sql = rtrim($sql, ','); + //echo "$sql"; + $query = $db->query($sql); + } + $reportdate = substr($data['new_value']['reportdate'],0,10); + return redirect()->to('activities/?reportdate='.$reportdate); + } else { + $data['validation'] = $this->validator; + return view('activities_editor',$data); + } + } + $data['actid'] = $actid; + $data['actid_ref_status'] = ''; // Khusus untuk refer + $data['refer_page'] = true; // Khusus untuk controller refer + return view('activities_editor',$data); + + } public function newtextarea($textareaid=null) { $db = \Config\Database::connect(); @@ -601,7 +891,7 @@ class Activities extends Controller { $data['vendorid'] = $vendorid; return view('activities_getvendor', $data); } - + public function getconsumable($actid=null){ $db = \Config\Database::connect(); $sql = "SELECT c.catalogid, c.catalognumber, c.productname, v.`vendorname` diff --git a/app/Models/ActivitiesModel.php b/app/Models/ActivitiesModel.php index a4deb10..98911c8 100644 --- a/app/Models/ActivitiesModel.php +++ b/app/Models/ActivitiesModel.php @@ -6,7 +6,7 @@ class ActivitiesModel extends Model { protected $table = 'activities'; protected $primaryKey = 'actid'; protected $allowedFields = [ - 'ref_actid', 'acttypeid', 'subject', 'actby', 'productid', 'siteid', 'vendorid', + 'actid_ref', 'acttypeid', 'subject', 'actby', 'productid', 'siteid', 'vendorid', 'contactid', 'media', 'action', 'swversion', 'userid_creator', 'userid_owner', 'reportfrom', 'reportdate', 'opendate', 'closedate', 'activitystatus', 'attachment' diff --git a/app/Views/activities_editor.php b/app/Views/activities_editor.php index 5730d2e..b42718c 100644 --- a/app/Views/activities_editor.php +++ b/app/Views/activities_editor.php @@ -1,8 +1,9 @@ + extend('layouts/main.php') ?> section('content') ?> +
@@ -204,7 +214,7 @@ if(isset($data)) { $stat) { - if( $statcode == 'S' OR $statcode == 'D') {continue;} + // if( $statcode == 'S' OR $statcode == 'D') {continue;} if( $statcode == $activitystatus ) { echo ""; } else { echo ""; } } @@ -214,8 +224,23 @@ if(isset($data)) {
- - + + +
@@ -656,11 +681,16 @@ $('#actby').change(function() { }) +if ($('#status').val() == 'R') { + $("#opendate").prop('disabled', false); $("#actid_ref").prop('disabled', true); $(".closedate").prop('disabled', false); +} + // disable closedate if open // disabble closedate, opendate, useridowner if pending $('#status').change(function() { - if(this.value=='O'){ $(".closedate").prop('disabled', true); $("#opendate").prop('disabled', false);} - else if(this.value=='P'){ $("#userid_owner").prop('disabled', true); $("#opendate").prop('disabled', true); $(".closedate").prop('disabled', true); } + if(this.value=='R' || this.value=='r'){ $("#opendate").prop('disabled', false); $(".closedate").prop('disabled', false);} + else if(this.value=='O'){$(".closedate").prop('disabled', true); $("#opendate").prop('disabled', false); } + else if(this.value=='P'){$("#userid_owner").prop('disabled', true); $("#opendate").prop('disabled', true); $(".closedate").prop('disabled', true); } else { $(".closedate").prop('disabled', false); $("#opendate").prop('disabled', false);} }) diff --git a/app/Views/activities_index.php b/app/Views/activities_index.php index 220d803..e480fc5 100644 --- a/app/Views/activities_index.php +++ b/app/Views/activities_index.php @@ -352,13 +352,30 @@ } ?> - href="activities/detail/" onclick="window.open(this.href, 'Activity Detail','width=900,height=800,toolbar=1,resizable=0'); return false;"> + + href="activities/detail/" onclick="window.open(this.href, 'Activity Detail','width=900,height=800,toolbar=1,resizable=0'); return false;"> + 0) { ?> +
+ Reff AR + + Open"; } else if($activitystatus == "C") { echo ""; } - else if($activitystatus == "R") { echo ""; } + else if ($activitystatus == "R") { + if ($row['userid_owner'] == session()->get('userid')) { + echo "";; + } else { + echo ' + + Refer + + '; + } + } else if($activitystatus == "P") { echo ""; } else if($activitystatus == "S") { echo ""; } else if($activitystatus == "D") { echo ""; }