$total_bm ]);
+= $this->request-
>getPost("jml_item$a"); // ambil id_bm
$a++; $id_bm =
} $this->bmModel-
>select('id_bm')-
// olah file >orderBy('id_bm', 'DESC')-
upload >get()->getRowArray();
$file = $this- for ($a = 1; $a
>request- <= $jumlahData; $a++) {
>getFile('bukti_scan');
// insert
$filename = data ke database item_bm
$file->getName();
$this-
$file- >itemModel->save([
>store('bukti_scan/',
$filename);
'id_bm' =>
$id_bm['id_bm'],
// insert data
ke database barang_masuk 'id_stok' => $this-
>request-
$this- >getPost("item$a"),
>bmModel->save([
'jumlah' => $this-
'no_po' =>
$this->request- >request-
>getPost('no_po'), >getPost("jml_item$a"),
'no_do' => 'packing' => $this-
$this->request-
>getPost('no_do'), >request-
>getPost("packing$a"),
'jumlah_item' =>
$jumlahData,
'total_bm' 'keterangan' => $this-
=> $total_bm, >request-
>getPost("keterangan$a")
'tgl_bm'
=> $this->request- ]);
>getPost('tgl_bm'),
'id_pmsk' // ubah
dan update data stok
=> $this->request-
>getPost('id_pmsk'), $id_stok =
$this->request-
'bukti_scan' => $filename >getPost("item$a");
265
$jumlahStok = $this- $jumlahData =
>stokModel-
$this->bmModel-
>where('id_stok',
$id_stok)- >where('id_bm', $id_bm)-
>findColumn('jml_stok');
>findColumn('jumlah_item')
;
$jumlahStokBaru = $id_stok = $this-
$jumlahStok[0] + $this- >bmModel-
>request- >table('barang_masuk')-
>getPost("jml_item$a"); >join('item_bm',
'barang_masuk.id_bm =
item_bm.id_bm')-
$this- >where('barang_masuk.id_bm
>stokModel->save([
', $id_bm)-
>findColumn('id_stok');
'id_stok' => $id_stok,
'jml_stok' => $items = [];
$jumlahStokBaru
for ($i = 0; $i <=
]); $jumlahData[0] - 1; $i++)
{
}
array_push($items, $this-
>stokModel->table('stok')-
// tampilkan >join('barang',
pesan berhasil
'barang.id_brg =
session()-
>setFlashdata('flash_tamba stok.id_brg')-
h', 'Berhasil menambahkan
data.'); >where('id_stok',
$id_stok[$i])->findAll());
}
// kembali ke $data = [
index 'title' =>
return 'SISKA | Ubah Data Barang
redirect()- Masuk',
>to('barangmasuk');
'role' =>
session('role'),
}
'nama_user' =>
} session('nama_user'),
public function 'nama_jabatan'
=>
ubahTampil($id_bm) session('nama_jabatan'),
{
266
'jumlahData' user tidak mengubah no_po
=> $jumlahData[0], (harus unik)
'errors' => $no_poLama =
\Config\Services::validati
on(), $this->bmModel-
>getWhere(['id_bm' =>
'ubah' => $id_bm])->getRowArray();
$this->bmModel- if ($this-
>table('barang_masuk')- >request->getPost('no_po')
== $no_poLama['no_po']) {
>join('pemasok',
'barang_masuk.id_pmsk = $rule_po =
'required';
pemasok.id_pmsk')-
>join('item_bm',
'barang_masuk.id_bm = } else {
item_bm.id_bm')- $rule_po =
>where('barang_masuk.id_bm 'required|is_unique[barang
', $id_bm)->findAll(), _masuk.no_po]';
'stok' => }
$this->stokModel- =
>table('stok')- // pengkondisian
>join('barang', untuk rule no_po apabila
'barang.id_brg
user tidak mengubah no_po
stok.id_brg')->get()- (harus unik)
>getResultArray(),
'pemasok' => $no_doLama =
$this->pemasokModel- $this->bmModel-
>get()->getResultArray(),
>getWhere(['id_bm' =>
'items' =>
$id_bm])->getRowArray();
$items,
if ($this-
'time' => >request->getPost('no_do')
== $no_doLama['no_do']) {
$this->myTime->getHour()
]; $rule_do =
'required';
return
} else {
view('pages/barangmasuk_ub
ah', $data); $rule_do =
} 'required|is_unique[barang
_masuk.no_do]';
public function }
ubahData($id_bm,
$jumlahData) // pengkondisian
{ untuk rule bukti scan
// pengkondisian apabila user tidak
untuk rule no_po apabila
mengubah bukti scan
267
$bukti_scan =
$this->bmModel- 'is_unique' => 'Nomor
delivery order sudah ada.'
>getWhere(['id_bm' =>
$id_bm])->getRowArray(); ]
if ($this- ],
>request-
>getFile('bukti_scan')- 'no_po' => [
>getName() == 'rules' =>
$bukti_scan['bukti_scan']) $rule_po,
{
$rule_file = 'errors'
'max_size[bukti_scan,5000] => [
|ext_in[bukti_scan,pdf]';
} else { 'required' => 'Harap
dilengkapi.',
$rule_file =
'is_unique' => 'Nomor
'uploaded[bukti_scan]|max_ purchase order sudah ada.'
size[bukti_scan,5000]|ext_
in[bukti_scan,pdf]';
} ]
],
if (!$this- 'tgl_bm' => [
>validate([
'rules' =>
'id_pmsk' => [ 'required|valid_date',
'rules' => 'errors'
'required', => [
'errors' 'required' => 'Harap
dilengkapi.',
=> [
'required' => 'Harap 'valid_date' => 'Tanggal
dilengkapi.' tidak sesuai format.'
] ]
], ],
'no_do' => [ 'bukti_scan'
'rules' => => [
$rule_do, 'rules' =>
'errors' $rule_file,
=> [ 'errors'
'required' => 'Harap => [
dilengkapi.',
268
'uploaded' => 'Harap 'numeric' => 'Harap
dilengkapi.',
gunakan angka.' ]
],
'max_size' => 'Maksimal
5Mb.',
'ext_in' => 'File harus "packing$i" => [
PDF.'
'rules' => 'required',
]
'errors' => [
]
'required' => 'Harap
])) { dilengkapi.'
for ($i = 0; $i ]
<= $jumlahData - 1; $i++)
{ ]
if
(!$this->validate([
])) {
"item$i" => [ if ($i
== $jumlahData - 1) {
'rules' => 'required', //
'errors' => [ kembalikan ke index dengan
data + errors
'required' => 'Harap return redirect()-
dilengkapi.'
] >to("barangmasuk/ubahTampi
],
l/$id_bm")->withInput();
}
}
"jml_item$i" => [ }
} else {
'rules' => for ($i = 0; $i
'required|numeric', <= $jumlahData - 1; $i++)
{
'errors' => [ if
(!$this->validate([
'required' => 'Harap
dilengkapi.',
"item$i" => [
269
'rules' => 'required', //
kembalikan ke index dengan
data + errors
'errors' => [
return redirect()-
'required' => 'Harap >to("barangmasuk/ubahTampi
dilengkapi.'
] l/$id_bm")->withInput();
],
}
}
}
"jml_item$i" => [
// olah data
'rules' => total bm
'required|numeric',
$total_bm = 0;
'errors' => [ $a = 0;
'required' => 'Harap while ($a <=
dilengkapi.', $jumlahData - 1) {
'numeric' => 'Harap $total_bm
] += $this->request-
], >getPost("jml_item$a");
gunakan angka.' $a++;
}
"packing$i" => [ // olah file
upload
'rules' => 'required', $file = $this-
>request-
>getFile('bukti_scan');
'errors' => [ $filename =
$file->getName();
'required' => 'Harap $file-
dilengkapi.' >store('bukti_scan/',
$filename);
]
]
])) { // update data
ke database barang_masuk
if ($i
== $jumlahData - 1) { $this-
>bmModel->save([
270
'id_bm' => for ($a = 0; $a
$id_bm, <= $jumlahData - 1; $a++)
{
'no_po' =>
$this->request- // update
>getPost('no_po'), data ke database item_bm
'no_do' => $this-
>itemModel->save([
$this->request-
>getPost('no_do'),
'jumlah_item' => 'id_item_bm' =>
$jumlahData, $id_item_bm[$a],
'total_bm' 'id_bm' => $id_bm,
=> $total_bm,
'tgl_bm' 'id_stok' => $this-
=> $this->request- >request-
>getPost('tgl_bm'), >getPost("item$a"),
'id_pmsk' 'jumlah' => $this-
=> $this->request- >request-
>getPost('id_pmsk'), >getPost("jml_item$a"),
'bukti_scan' => $filename
]);
// query 'packing' => $this-
id_item_bm untuk melakukan >request-
update data item_bm >getPost("packing$a"),
$id_item_bm = 'keterangan' => $this-
$this->itemModel- >request-
>where('id_bm', $id_bm)- >getPost("keterangan$a")
>findColumn('id_item_bm');
]);
// query
jumlah item untuk // ubah
dan update data stok
melakukan update data stok
$id_stok =
$jumlahLama = $this->request-
$this->itemModel- >getPost("item$a");
>where('id_bm', $id_bm)-
>findColumn('jumlah');
$jumlahStok = $this-
>stokModel-
>where('id_stok',
271
$id_stok)- 'jml_stok' =>
>findColumn('jml_stok'); $jumlahStokBaru
$jumlahStokBaru = ]);
$jumlahStok[0] + $this- }
>request-
>getPost("jml_item$a");
// jika // tampilkan
pesan berhasil
jumlah stok
session()-
bertambah/berkurang/tidak >setFlashdata('flash_ubah'
, 'Berhasil menambahkan
di ubah data.');
if ($this- // kembali ke
>request- index
>getPost("jml_item$a") >
$jumlahLama[$a]) {
$jumlahStokBaru = return
$jumlahStok[0] + ($this- redirect()-
>to('barangmasuk');
>request-
>getPost("jml_item$a") - }
$jumlahLama[$a]); }
} elseif public function
($this->request- status($id_bm)
>getPost("jml_item$a") ==
$jumlahLama[$a]) {
$jumlahStokBaru = {
$jumlahStok[0];
$data = [
} else { 'title' =>
'SISKA | Status Data Barang
$jumlahStokBaru = Masuk',
$jumlahStok[0] - 'role' =>
session('role'),
($jumlahLama[$a] - $this-
>request- 'nama_user' =>
session('nama_user'),
>getPost("jml_item$a"));
} 'nama_jabatan'
=>
$this- session('nama_jabatan'),
>stokModel->save([
'status' =>
'id_stok' => $id_stok,
$this->bmModel-
>where('id_bm', $id_bm)-
>findAll(),
272
'time' => $this-
>bmModel->save([
$this->myTime->getHour()
];
return 'id_bm' => $id_bm,
view('pages/barangmasuk_st 'confirm_mg' => 0
atus', $data);
} ]);
session()-
public function >setFlashdata('flash_konfi
konfirmasi($id_bm) rmasi_0', 'Konfirmasi
barang masuk dibatalkan');
{ return
$konfirmasi = redirect()-
$this->request- >to('barangmasuk');
>getPost('konfirmasi');
}
}
// jika role == // jika role ==
manajer staff barang
if ($this- elseif ($this-
>request->getPost('role')
== 3) { >request->getPost('role')
if == 5) {
($konfirmasi == 'true') {
if
$this- ($konfirmasi == 'true') {
>bmModel->save([
$this-
>bmModel->save([
'id_bm' => $id_bm, 'id_bm' => $id_bm,
'confirm_mg' => 1 'confirm_wh' => 1
]); ]);
session()- session()-
>setFlashdata('flash_konfi >setFlashdata('flash_konfi
rmasi_1', 'Berhasil rmasi_1', 'Berhasil
melakukan konfirmasi melakukan konfirmasi
barang masuk'); barang masuk');
return return
redirect()- redirect()-
>to('barangmasuk'); >to('barangmasuk');
} elseif } elseif
($konfirmasi == 'false') { ($konfirmasi == 'false') {
273
$this- {
>bmModel->save([ $this->bmModel-
'id_bm' => $id_bm, >delete($id_bm);
session()-
'confirm_wh' => 0
>setFlashdata('flash_hapus
]); ', 'Berhasil menghapus
data.');
session()-
return redirect()-
>setFlashdata('flash_konfi >to('barangmasuk');
rmasi_0', 'Konfirmasi }
}
barang masuk dibatalkan'); Suratjalan.php
<?php
return
namespace App\Controllers;
redirect()-
>to('barangmasuk'); use
App\Models\PelangganModel;
} use App\Models\StokModel;
use
} App\Models\SuratJalanModel
;
} use
App\Models\ItemSJModel;
public function use CodeIgniter\I18n\Time;
use Dompdf\Dompdf;
readFile($id_bm) use
PHPUnit\TextUI\XmlConfigur
{ ation\CodeCoverage\Report\
Php;
$filename = $this-
class Suratjalan extends
>bmModel->where('id_bm', BaseController
{
$id_bm)-
>findColumn('bukti_scan'); protected
$pelangganModel;
$this->response-
>setContentType('applicati protected $stokModel;
on/pdf');
274
header("Content-
Disposition: inline;
filename=$filename[0]");
@readfile('C:\xampp\htdocs
\siska\writable\uploads\bu
kti_scan\\' .
$filename[0]);
}
public function
hapus($id_bm)
protected $sjModel; if ($katakunci) {
protected $itemModel;
protected $myTime; $sj-
>search($katakunci);
public function
__construct() } else {
{ $sj;
}
$this- new $data = [
>pelangganModel =
PelangganModel();
$this->stokModel = 'title' =>
new StokModel();
'SISKA | Data Surat Jalan',
$this->sjModel = 'role' =>
new SuratJalanModel(); session('role'),
$this->itemModel = 'nama_user' =>
new ItemSJModel(); session('nama_user'),
$this->myTime = 'nama_jabatan'
new Time('now',
'Asia/Bangkok'); =>
session('nama_jabatan'),
} 'sj' => $sj-
>paginate(5, 'sj'),
'pager' =>
$sj->pager,
public function
index()
'errors' =>
{ \Config\Services::validati
on(),
// query dan join
data surat jalan 'stok' =>
$sj = $this- $this->stokModel-
>sjModel- >table('stok')-
>table('surat_jalan')- >select('*')-
>select('*')- >join('barang',
>join('pelanggan', 'barang.id_brg =
'surat_jalan.id_pel = stok.id_brg')->findAll(),
pelanggan.id_pel')- 'pelanggan' =>
>orderBy('tgl_sj'); $this->pelangganModel-
>findAll(),
// pencarian 'time' =>
$katakunci $this->myTime->getHour()
$this->request-
>getPost('katakunci'); = ];
275
return 'confirm_mg' => 0
view('pages/suratjalan',
$data); ]);
} session()-
>setFlashdata('flash_konfi
public function rmasi_0', 'Konfirmasi
konfirmasi($id_sj) surat jalan dibatalkan.');
{ return
$konfirmasi = redirect()-
$this->request- >to('suratjalan');
>getPost('konfirmasi');
}
}
// jika role = // jika role =
manajer staff barang
if ($this- elseif ($this-
>request->getPost('role')
== 3) { >request->getPost('role')
if == 5) {
($konfirmasi == 'true') {
if
$this- ($konfirmasi == 'true') {
>sjModel->save([
$this-
>sjModel->save([
'id_sj' => $id_sj, 'id_sj' => $id_sj,
'confirm_mg' => 1 'is_done' => 1
]); ]);
session()- session()-
>setFlashdata('flash_konfi >setFlashdata('flash_konfi
rmasi_1', 'Berhasil rmasi_1', 'Berhasil
melakukan konfirmasi surat melakukan konfirmasi surat
jalan.'); jalan.');
return return
redirect()- redirect()-
>to('suratjalan'); >to('suratjalan');
} elseif } elseif
($konfirmasi == 'false') { ($konfirmasi == 'false') {
$this- $this-
>sjModel->save([ >sjModel->save([
'id_sj' => $id_sj, 'id_sj' => $id_sj,
276
'is_done' => 0 public function
tambahData()
]);
session()- {
>setFlashdata('flash_konfi if
rmasi_0', 'Konfirmasi (isset($_POST['jumlahData'
])) {
surat jalan dibatalkan.');
return if (!$this-
>validate([
redirect()-
>to('suratjalan');
} 'jumlahData' => [
}
} 'rules' =>
'required|numeric',
public function 'errors' => [
status($id_sj)
{ 'required' => 'Harap
dilengkapi',
$data = [
'title' => 'numeric' => 'Gunakan
hanya angka'
'SISKA | Status Data Surat
Jalan',
'role' => ]
session('role'),
]
'nama_user' => ])) {
session('nama_user'),
'nama_jabatan' return
redirect()-
=>
session('nama_jabatan'), >to('suratjalan')-
>withInput();
'status' => } else {
$this->sjModel- $data = [
>where('id_sj', $id_sj)-
>findAll(), 'title' => 'SISKA | Tambah
Data Surat Jalan',
'time' =>
'role'
$this->myTime->getHour() => session('role'),
];
return
view('pages/suratjalan_sta
tus', $data);
}
277
'nama_user' => 'nama_user' =>
session('nama_user'), session('nama_user'),
'nama_jabatan' => 'nama_jabatan' =>
session('nama_jabatan'), session('nama_jabatan'),
'errors' => 'errors'
\Config\Services::validati =>
on(), \Config\Services::validati
on(),
'jumlahData' => $this- 'jumlahData' =>
>request- session('jumlahData'),
>getPost('jumlahData'),
'stok' =>
'stok' $this->stokModel- =
>table('stok')-
=> $this->stokModel- >select('*')-
>join('barang',
>table('stok')-
'barang.id_brg
>select('*')- stok.id_brg')->get()-
>getResultArray(),
>join('barang',
'barang.id_brg =
stok.id_brg')->get()-
>getResultArray(),
'pelanggan' => $this- 'pelanggan' => $this-
>pelangganModel->get()-
>pelangganModel->get()- >getResultArray(),
>getResultArray(),
'time' =>
=> 'time' $this->myTime->getHour()
>getHour() $this->myTime-
];
];
return return
view('pages/suratjalan_tam view('pages/suratjalan_tam
bah', $data); bah', $data);
} }
} else { }
$data = [ public function
'title' => tambah($jumlahData)
'SISKA | Tambah Data Surat
Jalan', {
'role' => if (!$this-
session('role'), >validate([ 278
'id_pel' => [ 'tgl_sj' => [
'rules' => 'rules' =>
'required|valid_date',
'required',
'errors' 'errors'
=> [ => [
'required' => 'Harap 'required' => 'Harap
dilengkapi.' dilengkapi.',
]
], 'valid_date' => 'Tanggal
tidak sesuai format.'
'no_inv' => [
]
'rules' =>
'required|is_unique[surat_ ]
jalan.no_inv]',
])) {
'errors'
=> [ for ($i = 1; $i
<= $jumlahData; $i++) {
'required' => 'Harap
dilengkapi.', if
(!$this->validate([
'is_unique' => 'Nomor "item$i" => [
invoice sudah ada.'
] 'rules' => 'required',
],
'no_po' => [ 'errors' => [
'rules' => 'required' => 'Harap
dilengkapi.'
'required|is_unique[surat_ ]
jalan.no_po]', ],
'errors'
=> [
'required' => 'Harap "jml_item$i" => [
dilengkapi.',
'is_unique' => 'Nomor 'rules' =>
purchase order sudah ada.' 'required|numeric',
] 'errors' => [
],
279
'required' => 'Harap if
dilengkapi.', (!$this->validate([
"item$i" => [
'numeric' => 'Harap
gunakan angka.' ] 'rules' => 'required',
],
'errors' => [
"packing$i" => [ 'required' => 'Harap
dilengkapi.'
]
'rules' => 'required', ],
'errors' => [
"jml_item$i" => [
'required' => 'Harap
dilengkapi.'
'rules' =>
'required|numeric',
]
]
])) { 'errors' => [
if ($i 'required' => 'Harap
== $jumlahData) { dilengkapi.',
// 'numeric' => 'Harap
kembalikan ke index dengan gunakan angka.' ]
data + errors ],
session()-
>setFlashdata('jumlahData'
, $jumlahData);
"packing$i" => [
return redirect()-
>to('suratjalan/tambahData 'rules' => 'required',
')->withInput();
} 'errors' => [
}
} 'required' => 'Harap
dilengkapi.'
} else { ]
]
for ($i = 1; $i
<= $jumlahData; $i++) { 280
])) { 'no_inv'
if ($i => $this->request-
== $jumlahData) { >getPost('no_inv'),
// 'jumlah_item' =>
kembalikan ke index dengan $jumlahData,
data + errors
session()- 'total_sj'
=> $total_sj,
>setFlashdata('jumlahData'
, $jumlahData); 'tgl_sj'
=> $this->request-
>getPost('tgl_sj'),
return redirect()- 'id_pel'
=> $this->request-
>to('suratjalan/tambahData >getPost('id_pel')
')->withInput();
} ]);
}
} // ambil id_sj
$id_sj =
// olah data $this->sjModel-
total sj >select('id_sj')-
>orderBy('id_sj', 'DESC')-
$total_sj = 0; >get()->getRowArray();
$a = 1;
while ($a <= for ($a = 1; $a
$jumlahData) { <= $jumlahData; $a++) {
$total_sj // insert
data ke database item_sj
+= $this->request-
>getPost("jml_item$a"); $this-
>itemModel->save([
$a++;
} 'id_sj' =>
$id_sj['id_sj'],
// insert data 'id_stok' => $this-
ke database barang_masuk
>request-
$this- >getPost("item$a"),
>sjModel->save([
'jumlah' => $this-
'no_po' =>
$this->request- >request-
>getPost('no_po'), >getPost("jml_item$a"),
281
'packing' => $this- h', 'Berhasil menambahkan
>request- data.');
>getPost("packing$a"),
// kembali ke
'keterangan' => $this-
>request- index
>getPost("keterangan$a")
return
]); redirect()-
>to('suratjalan');
}
// ubah }
dan update data stok
public function
$id_stok =
$this->request- ubahTampil($id_sj)
>getPost("item$a");
{
$jumlahStok = $this- $jumlahData =
>stokModel-
>where('id_stok', $this->sjModel-
$id_stok)-
>findColumn('jml_stok'); >where('id_sj', $id_sj)-
>findColumn('jumlah_item')
;
$jumlahStokBaru = $id_stok = $this-
$jumlahStok[0] - $this- >sjModel-
>request- >table('surat_jalan')-
>getPost("jml_item$a"); >join('item_sj',
'surat_jalan.id_sj =
$this- item_sj.id_sj')-
>stokModel->save([
>where('surat_jalan.id_sj'
, $id_sj)-
>findColumn('id_stok');
'id_stok' => $id_stok,
'jml_stok' => $items = [];
$jumlahStokBaru
for ($i = 0; $i <=
]); $jumlahData[0] - 1; $i++)
{
}
array_push($items, $this-
>stokModel->table('stok')-
// tampilkan >join('barang',
pesan berhasil
'barang.id_brg =
session()-
>setFlashdata('flash_tamba stok.id_brg')-
282
>where('id_stok', 'items' =>
$id_stok[$i])->findAll());
$items,
}
'time' =>
$this->myTime->getHour()
$data = [ ];
'title' => return
view('pages/suratjalan_uba
'SISKA | Ubah Data Barang h', $data);
Masuk',
'role' => }
session('role'),
'nama_user' => public function
session('nama_user'), ubahData($id_sj,
$jumlahData)
'nama_jabatan'
{
=>
session('nama_jabatan'), // pengkondisian
'jumlahData' untuk rule no_po apabila
=> $jumlahData[0], user tidak mengubah no_po
(harus unik)
'errors' =>
$no_poLama =
\Config\Services::validati
on(), $this->sjModel-
'ubah' => >getWhere(['id_sj' =>
$this->sjModel- $id_sj])->getRowArray();
>table('surat_jalan')- if ($this-
>join('pelanggan', >request->getPost('no_po')
== $no_poLama['no_po']) {
'pelanggan.id_pel =
surat_jalan.id_pel')- $rule_po =
'required';
>join('item_sj',
'item_sj.id_sj =
surat_jalan.id_sj')- } else {
>where('surat_jalan.id_sj' $rule_po =
, $id_sj)->findAll(), 'required|is_unique[surat_
'stok' => jalan.no_po]';
=
$this->stokModel- }
>table('stok')-
>join('barang', // pengkondisian
'barang.id_brg untuk rule no_inv apabila
stok.id_brg')->get()-
>getResultArray(), user tidak mengubah no_inv
(harus unik)
'pelanggan' =>
$no_invLama =
$this->pelangganModel- $this->sjModel-
>get()->getResultArray(),
283
>getWhere(['id_sj' => ],
'no_po' => [
$id_sj])->getRowArray();
'rules' =>
if ($this-
'errors'
>request- $rule_po,
=> [
>getPost('no_inv') ==
$no_invLama['no_inv']) {
$rule_inv =
'required';
} else { 'required' => 'Harap
dilengkapi.',
$rule_inv = 'is_unique' => 'Nomor
purchase order sudah ada.'
'required|is_unique[surat_
jalan.no_inv]';
} ]
],
if (!$this- 'tgl_sj' => [
>validate([
'id_pel' => [ 'rules' =>
'required|valid_date',
'rules' => 'errors'
'required', => [
'errors'
=> [ 'required' => 'Harap
dilengkapi.',
'required' => 'Harap
dilengkapi.'
'valid_date' => 'Tanggal
] tidak sesuai format.'
], ]
'no_inv' => [ ]
'rules' => ])) {
$rule_inv, for ($i = 0; $i
<= $jumlahData - 1; $i++)
'errors' {
=> [ if
(!$this->validate([
'required' => 'Harap
dilengkapi.',
"item$i" => [
'is_unique' => 'Nomor 'rules' => 'required',
invoice sudah ada.'
]
284
'errors' => [ return redirect()-
>to("suratjalan/ubahTampil
'required' => 'Harap /$id_sj")->withInput();
dilengkapi.'
] }
],
}
}
} else {
"jml_item$i" => [ for ($i = 0; $i
<= $jumlahData - 1; $i++)
'rules' => {
'required|numeric',
if
(!$this->validate([
'errors' => [
"item$i" => [
'required' => 'Harap
dilengkapi.',
'rules' => 'required',
'numeric' => 'Harap 'errors' => [
gunakan angka.' ]
],
'required' => 'Harap
dilengkapi.'
]
"packing$i" => [ ],
'rules' => 'required', "jml_item$i" => [
'errors' => [ 'rules' =>
'required|numeric',
'required' => 'Harap
dilengkapi.'
'errors' => [
]
] 'required' => 'Harap
dilengkapi.',
])) {
if ($i 'numeric' => 'Harap
== $jumlahData - 1) {
gunakan angka.' ]
],
//
285
kembalikan ke index dengan
data + errors
"packing$i" => [ // update data
ke database barang_masuk
'rules' => 'required', $this-
>sjModel->save([
'id_sj' =>
'errors' => [ $id_sj,
'required' => 'Harap 'no_po' =>
dilengkapi.'
$this->request-
>getPost('no_po'),
] 'no_inv'
] => $this->request-
>getPost('no_inv'),
])) {
if ($i 'jumlah_item' =>
== $jumlahData - 1) { $jumlahData,
// 'total_sj'
=> $total_sj,
kembalikan ke index dengan
data + errors 'tgl_sj'
return redirect()- => $this->request-
>getPost('tgl_sj'),
>to("suratjalan/ubahTampil 'id_pel'
/$id_sj")->withInput(); => $this->request-
>getPost('id_pel')
}
} ]);
}
// olah data // query
id_item_sj untuk melakukan
total sj update data item_sj
$total_sj = 0; $id_item_sj =
$this->itemModel-
$a = 0; >where('id_sj', $id_sj)-
>findColumn('id_item_sj');
while ($a <=
$jumlahData - 1) {
$total_sj // query
+= $this->request- jumlah item untuk
>getPost("jml_item$a");
melakukan update data stok
$a++; $jumlahLama =
$this->itemModel-
}
>where('id_sj', $id_sj)-
>findColumn('jumlah');
286
for ($a = 0; $a $id_stok)-
>findColumn('jml_stok');
<= $jumlahData - 1; $a++)
{
$jumlahStokBaru =
// update $jumlahStok[0] + $this-
data ke database item_sj
>request-
$this-
>itemModel->save([ >getPost("jml_item$a");
// jika
'id_item_sj' => jumlah stok
$id_item_sj[$a],
bertambah/berkurang/tidak
di ubah
'id_sj' => $id_sj, if ($this-
'id_stok' => $this- >request-
>request- >getPost("jml_item$a") >
>getPost("item$a"), $jumlahLama[$a]) {
$jumlahStokBaru =
$jumlahStok[0] - ($this-
'jumlah' => $this- >request-
>request- >getPost("jml_item$a") -
>getPost("jml_item$a"),
$jumlahLama[$a]);
'packing' => $this- } elseif
>request- ($this->request-
>getPost("packing$a"), >getPost("jml_item$a") ==
$jumlahLama[$a]) {
'keterangan' => $this- $jumlahStokBaru =
>request- $jumlahStok[0];
>getPost("keterangan$a")
} else {
]);
$jumlahStokBaru =
$jumlahStok[0] +
($jumlahLama[$a] - $this-
// ubah >request-
dan update data stok
>getPost("jml_item$a"));
$id_stok =
$this->request- }
>getPost("item$a");
$this-
$jumlahStok = $this- >stokModel->save([
>stokModel-
>where('id_stok', 'id_stok' => $id_stok,
287
'jml_stok' => // query id_stok
$jumlahStokBaru tabel sj dan
dari join
]); item_sj
} $id_stok = $this-
>sjModel-
>table('surat_jalan')-
>join('pelanggan',
// tampilkan 'pelanggan.id_pel =
pesan berhasil
surat_jalan.id_pel')-
session()-
>setFlashdata('flash_ubah' >join('item_sj',
, 'Berhasil menambahkan
data.'); 'surat_jalan.id_sj =
item_sj.id_sj')-
>where('surat_jalan.id_sj'
, $id_sj)-
>findColumn('id_stok');
// kembali ke // query item dari
join tabel item_sj dan stok
index
return $builder = $this-
redirect()- >stokModel->table('stok')-
>to('suratjalan');
>join('barang',
}
'stok.id_brg =
} barang.id_brg');
public function // pengkondisian
hapus($id_sj)
if
{ (count($id_stok) != 5) {
$this->sjModel- if
>delete($id_sj); (count($id_stok) != 4) {
session()- if
>setFlashdata('flash_hapus (count($id_stok) != 3) {
', 'Berhasil menghapus
data.'); if
(count($id_stok) != 2) {
return redirect()- $builder->where('id_stok',
>to('suratjalan'); $id_stok[0]);
}
$item = $builder-
} else
public function >findAll();
exportpdf($id_sj)
{ {
288
$builder->where('id_stok', >orWhere('id_stok', =
$id_stok[0])- $id_stok[4]);
>orWhere('id_stok', $item
$id_stok[1]); $builder->findAll();
}
$item = $builder-
>findAll(); } $data = [
} else {
'title' =>
'SISKA | Export Surat
Jalan',
$builder->where('id_stok', 'sj' => $this-
$id_stok[0])-
>sjModel-
>orWhere('id_stok',
$id_stok[1])- >table('surat_jalan')-
>orWhere('id_stok',
$id_stok[2]); >join('pelanggan',
'pelanggan.id_pel =
surat_jalan.id_pel')-
$item >join('item_sj',
= $builder->findAll();
'item_sj.id_sj =
surat_jalan.id_sj')-
} >where('surat_jalan.id_sj'
} else { , $id_sj)->findAll(),
$builder- 'item' =>
>where('id_stok',
$id_stok[0])- $item
>orWhere('id_stok', ];
$id_stok[1])-
>orWhere('id_stok', // instantiate and
$id_stok[2])- use the dompdf class
>orWhere('id_stok', $dompdf = new
$id_stok[3]); Dompdf();
$item =
$builder->findAll();
} $html =
} else { view('pdf/sj_pdf', $data);
$builder- $dompdf-
>where('id_stok', >loadHtml($html);
$id_stok[0])-
>orWhere('id_stok', // (Optional)
$id_stok[1])- Setup the paper size and
>orWhere('id_stok', orientation
$id_stok[2])-
>orWhere('id_stok',
$id_stok[3])-
289
$dompdf- // Output the
generated PDF to Browser
>setPaper('A4',
'portrait'); $dompdf-
>stream('suratjalan.pdf',
as PDF // Render the HTML array('Attachment' => 0));
$dompdf->render();
}
}
Source Code Views
barang.php <nav class="nav"
style="min-height:
<?= $this- 100vh;">
>extend('layout/template.p
hp'); ?> <div
class="container-md">
<?= $this- <div
>section('content'); ?>
class="row justify-
content-center mx-0">
<!-- Barang CSS --> <div
class="col-md-12 mt-2">
<link rel="stylesheet"
href="<?= <img
src="<?=
base_url('public/assets/cs base_url('public/assets/im
g/logosiska_sidebar.svg');
s/barang/barang.css'); ?>" ?>" class="img-fluid" />
/>
</head> </div>
<body> <div
class="col-md-12 mt-1">
<div class="container-
fluid m-0 p-0"> <hr
<div class="row g-0"> class="border border-1
border-white"
style="opacity: unset;">
</div>
<!-- Sidebar --> dashboard" <div id="sb-
12 mb-2"> class="col-md-
<div class="col-md-2
align-self-stretch" <a
style="background-color:
rgb(46, 80, 199, 0.85)"> class="nav-link text-
decoration-none text-
white" href="<?=
290
base_url('dashboard'); margin: auto;" viewBox="0
?>"> 0 16 16">
<svg <path
xmlns="http://www.w3.org/2 d="M8.186 1.113a.5.5 0 0 0-
000/svg" width="50" .372 0L1.846
height="50" fill="white" 3.5l2.404.961L10.404 2l-
class="bi bi-bar-chart- 2.218-.887zm3.564
line" style="display: 1.426L5.596 5 8 5.961
block; margin: auto;" 14.154 3.5l-2.404-
viewBox="0 0 16 16"> .961zm3.25 1.7-6.5
<path 2.6v7.922l6.5-
d="M11 2a1 1 0 0 1 1-1h2a1
1 0 0 1 1 1v12h.5a.5.5 0 0 2.6V4.24zM7.5
1 0 1H.5a.5.5 0 0 1 0-1H1v-
3a1 1 0 0 1 1-1h2a1 1 0 0 14.762V6.838L1
1 1 1v3h1V7a1 1 0 0 1 1- 4.239v7.923l6.5
1h2a1 1 0 0 1 1 1v7h1V2zm1
12h2V2h-2v12zm-3 2.6zM7.443.184a1.5 1.5 0 0
0V7H7v7h2zm-5 0v-3H2v3h2z"
/> 1 1.114 0l7.129 2.852A.5.5
0 0 1 16 3.5v8.662a1 1 0 0
1-.629.928l-7.185
2.874a.5.5 0 0 1-.372 0L.63
13.09a1 1 0 0 1-.63-
.928V3.5a.5.5 0 0 1 .314-
</svg> .464L7.443.184z" />
<h6 </svg>
class="text-white text- <h6
uppercase text-center fw- class="text-white text-
light mt-3" style="letter-
spacing: uppercase text-center fw-
0.3em;">Dashboard</h6> light mt-3" style="letter-
spacing: 0.3em;">Stok</h6>
</a> </a>
</div> </div>
<div id="sb- transaksi" <div id="sb-
stok" class="col-md-12 mb- 12 mb-2"> class="col-md-
2">
<a <a
class="nav-link active class="nav-link text-
text-decoration-none" decoration-none" href="<?=
aria-current="page" base_url('barangmasuk');
href="<?= ?>">
base_url('stok'); ?>">
<svg <svg
xmlns="http://www.w3.org/2 xmlns="http://www.w3.org/2
000/svg" width="50" 000/svg" width="50"
height="50" fill="white" height="50" fill="white"
class="bi bi-box-seam" class="bi bi-cart3"
style="display: block; style="display: block;
291
margin: auto;" viewBox="0 <path
0 16 16"> fill-rule="evenodd"
d="M10.854 7.146a.5.5 0 0
<path
d="M0 1.5A.5.5 0 0 1 .5 1 0 .708l-3 3a.5.5 0 0 1-
.708 0l-1.5-1.5a.5.5 0 1 1
1H2a.5.5 0 0 1 .708-.708L7.5 9.793l2.646-
.485.379L2.89 3H14.5a.5.5 2.647a.5.5 0 0 1 .708 0z"
0 0 1 .49.598l-1 5a.5.5 0 />
0 1-.465.401l-
9.397.472L4.415 11H13a.5.5 <path
0 0 1 0 1H4a.5.5 0 0 1- d="M4 1.5H3a2 2 0 0 0-2
.491-.408L2.01 3.607 1.61 2V14a2 2 0 0 0 2 2h10a2 2
2H.5a.5.5 0 0 1-.5- 0 0 0 2-2V3.5a2 2 0 0 0-2-
.5zM3.102 4l.84 4.479 2h-1v1h1a1 1 0 0 1 1 1V14a1
9.144-.459L13.89 1 0 0 1-1 1H3a1 1 0 0 1-1-
4H3.102zM5 12a2 2 0 1 0 0 1V3.5a1 1 0 0 1 1-1h1v-1z"
4 2 2 0 0 0 0-4zm7 0a2 2 0 />
1 0 0 4 2 2 0 0 0 0-4zm-7
1a1 1 0 1 1 0 2 1 1 0 0 1 <path
d="M9.5 1a.5.5 0 0 1
0-2zm7 0a1 1 0 1 1 0 2 1 1 .5.5v1a.5.5 0 0 1-.5.5h-
0 0 1 0-2z" />
3a.5.5 0 0 1-.5-.5v-1a.5.5
</svg> 0 0 1 .5-.5h3zm-3-1A1.5 1.5
0 0 0 5 1.5v1A1.5 1.5 0 0
<h6 0 6.5 4h3A1.5 1.5 0 0 0 11
class="text-white text- 2.5v-1A1.5 1.5 0 0 0 9.5
uppercase text-center fw- 0h-3z" />
light mt-3" style="letter-
</svg>
spacing:
0.3em;">Transaksi</h6> <h6
</a> class="text-white text-
uppercase text-center fw-
</div> light mt-3" style="letter-
spacing:
laporan" <div id="sb- 0.3em;">Laporan</h6>
mb-2"> class="col-md-12
</a>
<a </div>
class="nav-link text-
decoration-none" href="<?= <div
base_url('laporan'); ?>"> class="d-grid col-10 mx-
auto">
<svg
xmlns="http://www.w3.org/2 <button
type="button" class="btn
000/svg" width="50" btn-lg btn-danger fw-light
rounded-1" style="letter-
height="50" fill="white"
spacing: 0.05px;" data-bs-
class="bi bi-clipboard- toggle="modal" data-bs-
target="#logout">
check" style="display:
block; margin: auto;"
viewBox="0 0 16 16">
292
class="bi <i <ul
right"></i> bi-box-arrow- class="navbar-nav">
Keluar <li
class="nav-item1">
</button> <a
</div> id="a-stok" class="nav-
link" href="<?=
</div> base_url('stok'); ?>">
</div> <h4>Data Stok Barang</h4>
</nav> </a>
</div> </li>
<!-- End of Sidebar <li
--> class="nav-item2 ms-5">
<div class="col-md- <a
10">
id="a-barang" class="nav-
link active" aria-
current="page" href="<?=
<!-- Navbar --> base_url('barang'); ?>">
<nav class="navbar <h4>Data Barang</h4>
navbar-expand-md navbar- <hr
light bg-body shadow-sm">
style="border: 0.13em
<div
solid #61d9ff; opacity:
class="container-fluid
justify-content-end"> 80%; margin: 0" />
<button </a>
class="navbar-toggler" </li>
type="button" data-bs- </ul>
toggle="collapse" data-bs- </div>
target="#navbarNav" aria-
controls="navbarNav" aria- <ul class="nav
expanded="false" aria- flex-column p-2 me-3 text-
end">
label="Toggle navigation">
<span <li
class="nav-item-navbar">
class="navbar-toggler-
icon"></span>
</button> <h5
class="fw-bold">Selamat
<div <?php if
class="collapse navbar- ($time >= 5 and $time <=
mt-5" 10) : ?>
collapse ms-4
id="navbarNav">
Pagi,
293
<?php <!-- Content -->
elseif ($time > 10 and
$time <= 15) : ?> <div id="konten"
class="container-md">
Siang,
<div class="row
<?php py-3 px-3 m-0">
elseif ($time > 15 and
$time <= 18) : ?> <!-- Tombol
tambah -->
Sore,
<div
<?php class="col-md-4">
elseif ($time > 18) : ?>
<button <?=
Malam,
($role != 1 && $role != 4)
<?php
elseif ($time >= 1 and ? 'disabled' : '' ?>
$time <= 4) : ?>
class="btn btn-success fw-
light fs-5" type="button"
Begadang, style="letter-spacing:
0.05em" data-bs-
<?php toggle="modal" data-bs-
Selamat
endif; ?> target="#tambah">
Bekerja!</h5> <i
bi-plus-
</li> class="bi
circle"></i>
<li
class="nav-item-navbar"> Tambah
<h5 </button>
class="fw-normal"><?=
$nama_user; ?></h5> </div>
</li> <!-- End of
Tombol tambah -->
<li
class="nav-item-navbar">
<h6 <!-- Pencarian
-->
class="fw-light"><?=
$nama_jabatan[0]; ?></h6> <div
</li> class="col-md-8 d-flex
justify-content-end mb-3">
</ul> <form
</div> action="<?= ?>"
base_url('barang');
</nav> method="POST">
<!-- End of Navbar <div
-->
class="input-group"
style="width: 16em;
height: 2.8em;">
294
<input <div
id="cari" name="katakunci" class="alert alert-danger
class="form-control alert-dismissible fade
rounded-1" type="text" show" role="alert">
placeholder="Cari . . ." /> Gagal
menambahkan data.
<button
class="btn btn-outline- <button
primary" type="submit"><i type="button" class="btn-
class="bi bi- close" data-bs-
search"></i></button> dismiss="alert" aria-
</div> label="Close"></button>
</form> </div>
</div> <?php elseif
<!-- End of ($errors-
Pencarian --> >hasError('jenis_brg')) :
?>
<div
<!-- Pesan class="alert alert-danger
Gagal / Berhasil --> alert-dismissible fade
<div show" role="alert">
class="col-md-12">
Gagal
<?php if menambahkan data.
:
($errors- <button
>hasError('nama_brg'))
?> type="button" class="btn-
close" data-bs-
<div dismiss="alert" aria-
class="alert alert-danger label="Close"></button>
alert-dismissible fade </div>
show" role="alert"> <?php elseif
Gagal ($errors-
menambahkan data. >hasError('harga_brg')) :
?>
<button
<div
type="button" class="btn-
class="alert alert-danger
close" data-bs-
alert-dismissible fade
dismiss="alert" aria-
show" role="alert">
label="Close"></button>
</div> Gagal
menambahkan data.
<?php elseif
<button
($errors-
>hasError('kategori_brg')) type="button" class="btn-
: ?>
close" data-bs-
dismiss="alert" aria-
label="Close"></button>
295
</div> alert-dismissible fade
<?php elseif show" role="alert">
(session()-
>getFlashdata('flash_tamba <?=
h')) : ?> session()-
<div >getFlashdata('flash_ubah'
); ?>
class="alert alert-success <button
alert-dismissible fade type="button" class="btn-
show" role="alert"> close" data-bs-
<?= dismiss="alert" aria-
session()-
>getFlashdata('flash_tamba label="Close"></button>
h'); ?>
</div>
<button <?php endif;
?>
type="button" class="btn- </div>
close" data-bs-
dismiss="alert" aria- <!-- End of
Pesan Gagal / Berhasil -->
label="Close"></button>
</div>
<?php elseif <!-- Tabel
(session()-
Data -->
>getFlashdata('flash_hapus
')) : ?> <div
class="col-md-12">
<div
<div
class="alert alert-success class="card rounded-3">
alert-dismissible fade
show" role="alert"> <div
class="card-body">
<?=
class="table <table
session()- responsive-md"> table-
>getFlashdata('flash_hapus
'); ?>
<button <thead
class="fs-5" style="color:
type="button" class="btn- #2e50c7;">
close" data-bs-
dismiss="alert" aria- <tr>
label="Close"></button>
</div> <th class="text-center"
scope="col">No.</th>
<?php elseif
<th scope="col">Nama
(session()- Barang</th>
>getFlashdata('flash_ubah'
)) : ?>
<div
class="alert alert-success
296
<th scope="col">Jenis</th> <td><?=
$brg['kategori_brg'];
<th ?></td>
scope="col">Kategori</th>
<td class="text-
<th class="text-center" center">Rp. <?=
scope="col">Harga $brg['harga_brg']; ?></td>
Satuan</th>
<td class="text-center">
<th class="text-center" <?php if ($role != 1 &&
scope="col"></th>
$role != 2 && $role != 3 &&
</tr> $role != 4) : ?>
</thead> <a class="btn btn-primary
btn-sm me-1 rounded-1
<tbody disabled" role="button"
aria-disabled="true">
class="fw-light fs-5"
style="color: #2e50c7;">
<?php $no = $pager- <i class="bi bi-pencil-
>getDetails('barang')['per square"></i>
Page'] * $pager- </a>
>getCurrentPage('barang')
- ($pager- <?php else : ?>
>getDetails('barang')['per
Page'] - 1) ?>
<a class="btn btn-primary
<?php foreach ($barang as btn-sm me-1 rounded-1"
$brg) : ?>
role="button" href="<?=
base_url($segments =
<tr> ['barang/ubahTampil/' .
$brg['id_brg']]); ?>">
<td class="text- <i class="bi bi-pencil-
center"><?= $no++ ?></td> square"></i>
<td><?= $brg['nama_brg']; </a>
?></td>
<td><?= $brg['jenis_brg']; <?php endif; ?>
?></td>
<button <?= ($role != 1 &&
$role != 4) ? 'disabled' :
297
'' ?> class="btn btn- </div>
danger btn-sm rounded-1" <!-- End of
Content -->
type="button" data-bs-
toggle="modal" data-bs-
target="#hapus">
<i class="bi bi- </div>
trash"></i> </div>
</div>
</button>
</td> <!-- Pop Up Tambah Data
-->
</tr> <div class="modal fade"
id="tambah" data-bs-
backdrop="static" data-bs-
<?php endforeach; ?> keyboard="false"
tabindex="-1" aria-
</tbody> labelledby="staticBackdrop
</table>
Label" aria-hidden="true">
</div>
</div> <div class="modal-
</div> modal-dialog-
dialog
<!-- End of centered">
Tabel Data -->
<div class="modal-
content">
<div class="modal-
header justify-content-
center">
<!-- <h3
Pagination -->
class="modal-title fw-
<div
class="col-md-4 offset-4 normal"
mt-4">
id="staticBackdropLabel"
<?= $pager-
>links('barang', style="color:
'pagination'); ?>
#2e50c7">Tambah Data
</div>
Barang</h3>
<!-- End of
Pagination --> </div>
<form
method="POST" action="<?=
base_url('barang/tambah');
?>">
</div> <div
class="modal-body"
style="background-color:
#efefef">
298
<div 'Sedang') ? 'selected' : ''
class="row g-2"> ?>
value="Sedang">Sedang</opt
<div ion>
class="col-md-10 offset-
1"> <option
<?= (old('jenis_brg') ==
<input 'Kecil') ? 'selected' : ''
id="nama_brg" ?>
name="nama_brg" value="Kecil">Kecil</optio
type="text" class="form- n>
control <?= ($errors-
>hasError('nama_brg')) ? <option
'is-invalid' : ''; ?>" <?= (old('jenis_brg') ==
placeholder="Nama barang" 'Trans') ? 'selected' : ''
value="<?= ?>
old('nama_brg'); ?>" /> value="Trans">Trans</optio
n>
<div
class="invalid-feedback"> <option
<?= (old('jenis_brg') ==
<?= 'Brown') ? 'selected' : ''
$errors- ?>
>getError('nama_brg'); ?> value="Brown">Brown</optio
n>
</div>
<option
</div> <?= (old('jenis_brg') ==
'Lainnya') ? 'selected' :
<div '' ?>
class="col-md-5 offset-1"> value="Lainnya">Lainnya</o
ption>
<select
id="jenis_brg" </select>
name="jenis_brg" id="Jenis
barang" class="form-select <div
<?= ($errors- class="invalid-feedback">
>hasError('jenis_brg')) ?
'is-invalid' : ''; ?>"> <?=
<option $errors-
<?= (old('jenis_brg') == >getError('jenis_brg'); ?>
'') ? 'selected' : '' ?>
disabled>Jenis </div>
barang</option>
</div>
<option
<?= (old('jenis_brg') == <div
'Besar') ? 'selected' : '' class="col-md-5">
?>
value="Besar">Besar</optio <select
n>
id="kategori_brg"
<option
<?= (old('jenis_brg') == name="kategori_brg"
id="Kategori barang"
class="form-select <?=
($errors-
299
>hasError('kategori_brg')) <option
? 'is-invalid' : ''; ?>"> <?= (old('kategori_brg')
== 'Strapp Band') ?
<option
<?= (old('kategori_brg') 'selected' : '' ?>
== '') ? 'selected' : '' ?> value="Strapp Band">Strapp
disabled>Kategori Band</option>
barang</option>
<option
<option <?= (old('kategori_brg')
<?= (old('kategori_brg') == 'Styrofoam') ?
== 'Stretch Film') ?
'selected' : '' ?> 'selected' : '' ?>
value="Stretch value="Styrofoam">Styrofoa
Film">Stretch m</option>
Film</option>
<option
<option <?= (old('kategori_brg')
<?= (old('kategori_brg') == 'Adhesive Tape') ?
== 'Opp Tape') ? 'selected'
: '' ?> value="Opp 'selected' : '' ?>
Tape">Opp Tape</option> value="Adhesive
Tape">Adhesive
<option Tape</option>
<?= (old('kategori_brg')
== 'Selotape') ? <option
'selected' : '' ?> <?= (old('kategori_brg')
value="Selotape">Selotape<
/option> == 'Bubble Pack') ?
'selected' : '' ?>
<option value="Bubble Pack">Bubble
<?= (old('kategori_brg') Pack</option>
== 'Masking Tape') ?
'selected' : '' ?> <option
value="Masking <?= (old('kategori_brg')
Tape">Masking
Tape</option> == 'Arrow Tape') ?
'selected' : '' ?>
<option value="Arrow Tape">Arrow
<?= (old('kategori_brg') Tape</option>
== 'Double Tape') ?
'selected' : '' ?> <option
value="Double Tape">Double
Tape</option> <?= (old('kategori_brg')
<option == 'Air Bubble') ?
<?= (old('kategori_brg')
== 'Packing Siku') ? 'selected' : '' ?>
'selected' : '' ?>
value="Packing value="Air Bubble">Air
Siku">Packing
Siku</option> Bubble</option>
<option
<?= (old('kategori_brg')
== 'Protection Tape') ?
'selected' : '' ?>
value="Protection
Tape">Protection
Tape</option>
</select>
300
<div <button
class="invalid-feedback">
type="button" class="btn
<?=
$errors- btn-danger btn-lg fw-light
>getError('kategori_brg');
?> rounded-1" style="width:
</div> 40%; letter-spacing:
</div> 0.05em;" data-bs-
<div dismiss="modal">
class="col-md-10 offset-
1"> bi-x-square <i class="bi
2"></i>Batal me-sm-
<div
class="input-group"> </button>
<span <button
class="input-group-text
rupiah">Rp</span> type="submit" class="btn
<input btn-success btn-lg fw-
id="harga_brg"
name="harga_brg" light rounded-1"
type="number" class="form-
control <?= ($errors- style="width: 40%; letter-
>hasError('harga_brg')) ?
'is-invalid' : ''; ?>" spacing: 0.05em;">
placeholder="Harga satuan"
value="<?= <i class="bi
old('harga_brg'); ?>" />
bi-archive me-sm-
<div
class="invalid-feedback"> 2"></i>Simpan
<?= </button>
$errors-
>getError('harga_brg'); ?> </div>
</div> </form>
</div> </div>
</div> </div>
</div> </div>
</div> <!-- End of Pop Up Tambah
Data -->
<div
class="modal-footer d-grid <!-- Pop Up Hapus Data -
d-md-flex justify-content- ->
center">
<div class="modal fade"
id="hapus" data-bs-
backdrop="static" data-bs-
keyboard="false"
tabindex="-1" aria-
labelledby="staticBackdrop
Label" aria-hidden="true">
<div class="modal-
modal-dialog-
dialog
centered">
301
<div class="modal- name="_method"
content"> value="DELETE">
<div class="modal- <button
header justify-content-
center"> type="submit" class="btn
btn-success btn-lg fw-
<h3 light rounded-1"
class="modal-title" style="width: 9.43em;
id="staticBackdropLabel" letter-spacing: 0.05em;">
style="color: <i class="bi
#2e50c7">Hapus Data bi-check-square me-sm-
Barang</h3> 2"></i>Ya
</div> </button>
<div class="modal- </div>
body justify-content- </form>
center" style="background-
color: #efefef"> </div>
<h5 class="text- </div>
center" style="color: </div>
#2e50c7">Apakah Anda yakin
ingin menghapus data <!-- End of Pop Up Hapus
Data -->
barang?</h5>
</div>
<form <!-- Pop Up Konfirmasi
Logout -->
method="POST" action="<?=
base_url($segments = <div class="modal fade"
['barang/' . id="logout" data-bs-
$brg['id_brg']]); ?>"> backdrop="static" data-bs-
<div keyboard="false"
class="modal-footer tabindex="-1" aria-
justify-content-center">
labelledby="staticBackdrop
<button Label" aria-hidden="true">
type="button" class="btn <div class="modal-
dialog modal-dialog-
btn-danger btn-lg fw-light centered">
rounded-1 me-1"
style="width: 9.43em; <div class="modal-
content">
letter-spacing: 0.05em;"
data-bs-dismiss="modal">
bi-x-square <i class="bi <div class="modal-
2"></i>Tidak me-sm-
header justify-content-
center">
</button> <h3
class="modal-title"
<input id="staticBackdropLabel"
type="hidden"
302
style="color: </div>
#2e50c7">Logout</h3>
<!-- End of Pop Up
</div> Konfirmasi Logout -->
<div class="modal- <?= $this->endSection();
?>
body justify-content-
stok.php
center" style="background-
<?= $this-
color: #efefef"> >extend('layout/template.p
hp'); ?>
<h5 class="text-
center" style="color:
#2e50c7">Apakah Anda yakin
ingin keluar dari
sistem?</h5> <?= $this-
>section('content'); ?>
</div>
<div class="modal- <!-- Stok CSS -->
footer justify-content-
center"> <link rel="stylesheet"
<button href="<?=
type="button" class="btn base_url('public/assets/cs
btn-danger btn-lg fw-light s/stok/stok.css'); ?>" />
rounded-1 me-1"
style="width: 9.43em; </head>
letter-spacing: 0.05em;"
data-bs-dismiss="modal">
<i class="bi <body>
me-sm-
bi-x-square <div class="container-
2"></i>Tidak fluid m-0 p-0">
</button> <div class="row g-0">
<a class="btn
btn-success btn-lg fw-
light rounded-1" <!-- Sidebar -->
style="width: 9.43em; <div class="col-md-2
align-self-stretch"
letter-spacing: 0.05em;"
style="background-color:
href="<?= rgb(46, 80, 199, 0.85)">
base_url('login/logout');
?>" role="button">
<i class="bi <nav class="nav"
bi-check-square me-sm- style="min-height:
100vh;">
2"></i>Ya
</a> <div
class="container-md">
</div>
<div
</div>
class="row justify-
</div> content-center mx-0">
303
<div <h6
class="col-md-12 mt-2"> class="text-white text-
uppercase text-center fw-
<img
src="<?= light mt-3" style="letter-
spacing:
base_url('public/assets/im 0.3em;">Dashboard</h6>
g/logosiska_sidebar.svg');
?>" class="img-fluid" /> </a>
</div> </div>
<div <div id="sb-
class="col-md-12 mt-1">
stok" class="col-md-12 mb-
<hr 2">
class="border border-1 <a
border-white" class="nav-link active
style="opacity: unset;"> text-decoration-none"
</div> aria-current="page"
href="<?=
<div id="sb- base_url('stok'); ?>">
class="col-md-
dashboard" <svg
12 mb-2">
xmlns="http://www.w3.org/2
<a 000/svg" width="50"
class="nav-link text- height="50" fill="white"
decoration-none text- class="bi bi-box-seam"
white" href="<?= style="display: block;
base_url('dashboard'); margin: auto;" viewBox="0
?>"> 0 16 16">
<svg <path
xmlns="http://www.w3.org/2 d="M8.186 1.113a.5.5 0 0 0-
000/svg" width="50" .372 0L1.846
height="50" fill="white" 3.5l2.404.961L10.404 2l-
class="bi bi-bar-chart- 2.218-.887zm3.564
line" style="display: 1.426L5.596 5 8 5.961
block; margin: auto;" 14.154 3.5l-2.404-
viewBox="0 0 16 16"> .961zm3.25 1.7-6.5
<path 2.6v7.922l6.5-
d="M11 2a1 1 0 0 1 1-1h2a1
2.6V4.24zM7.5
1 0 0 1 1 1v12h.5a.5.5 0 0
1 0 1H.5a.5.5 0 0 1 0-1H1v- 14.762V6.838L1
3a1 1 0 0 1 1-1h2a1 1 0 0
1 1 1v3h1V7a1 1 0 0 1 1- 4.239v7.923l6.5
1h2a1 1 0 0 1 1 1v7h1V2zm1 2.6zM7.443.184a1.5 1.5 0 0
12h2V2h-2v12zm-3
0V7H7v7h2zm-5 0v-3H2v3h2z" 1 1.114 0l7.129 2.852A.5.5
/>
0 0 1 16 3.5v8.662a1 1 0 0
1-.629.928l-7.185
2.874a.5.5 0 0 1-.372 0L.63
13.09a1 1 0 0 1-.63-
.928V3.5a.5.5 0 0 1 .314-
</svg> .464L7.443.184z" />
</svg>
304
<h6 light mt-3" style="letter-
class="text-white text-
uppercase text-center fw- spacing:
0.3em;">Transaksi</h6>
light mt-3" style="letter-
spacing: 0.3em;">Stok</h6> </a>
</a> </div>
</div> laporan" <div id="sb-
mb-2"> class="col-md-12
transaksi" <div id="sb- <a
12 mb-2"> class="col-md-
class="nav-link text-
<a decoration-none" href="<?=
class="nav-link text- base_url('laporan'); ?>">
decoration-none" href="<?= <svg
base_url('barangmasuk'); xmlns="http://www.w3.org/2
?>"> 000/svg" width="50"
<svg height="50" fill="white"
xmlns="http://www.w3.org/2 class="bi bi-clipboard-
000/svg" width="50" check" style="display:
height="50" fill="white" block; margin: auto;"
class="bi bi-cart3" viewBox="0 0 16 16">
style="display: block; <path
margin: auto;" viewBox="0 fill-rule="evenodd"
d="M10.854 7.146a.5.5 0 0
0 16 16"> 1 0 .708l-3 3a.5.5 0 0 1-
.708 0l-1.5-1.5a.5.5 0 1 1
<path
d="M0 1.5A.5.5 0 0 1 .5 .708-.708L7.5 9.793l2.646-
2.647a.5.5 0 0 1 .708 0z"
1H2a.5.5 0 0 1 />
.485.379L2.89 3H14.5a.5.5
0 0 1 .49.598l-1 5a.5.5 0 <path
0 1-.465.401l- d="M4 1.5H3a2 2 0 0 0-2
2V14a2 2 0 0 0 2 2h10a2 2
9.397.472L4.415 11H13a.5.5
0 0 1 0 1H4a.5.5 0 0 1- 0 0 0 2-2V3.5a2 2 0 0 0-2-
.491-.408L2.01 3.607 1.61 2h-1v1h1a1 1 0 0 1 1 1V14a1
2H.5a.5.5 0 0 1-.5- 1 0 0 1-1 1H3a1 1 0 0 1-1-
.5zM3.102 4l.84 4.479 1V3.5a1 1 0 0 1 1-1h1v-1z"
/>
9.144-.459L13.89
4H3.102zM5 12a2 2 0 1 0 0 <path
4 2 2 0 0 0 0-4zm7 0a2 2 0
1 0 0 4 2 2 0 0 0 0-4zm-7 d="M9.5 1a.5.5 0 0 1
.5.5v1a.5.5 0 0 1-.5.5h-
1a1 1 0 1 1 0 2 1 1 0 0 1 3a.5.5 0 0 1-.5-.5v-1a.5.5
0-2zm7 0a1 1 0 1 1 0 2 1 1 0 0 1 .5-.5h3zm-3-1A1.5 1.5
0 0 1 0-2z" />
0 0 0 5 1.5v1A1.5 1.5 0 0
</svg> 0 6.5 4h3A1.5 1.5 0 0 0 11
2.5v-1A1.5 1.5 0 0 0 9.5
<h6 0h-3z" />
class="text-white text-
uppercase text-center fw-
305
</svg> <div
<h6 class="container-fluid
class="text-white text- justify-content-end">
uppercase text-center fw-
<button
light mt-3" style="letter-
spacing: class="navbar-toggler"
0.3em;">Laporan</h6>
type="button" data-bs-
toggle="collapse" data-bs-
</a> target="#navbarNav" aria-
controls="navbarNav" aria-
</div> expanded="false" aria-
<div label="Toggle navigation">
class="d-grid col-10 mx- <span
auto">
class="navbar-toggler-
<button icon"></span>
type="button" class="btn
btn-lg btn-danger fw-light </button>
rounded-1" style="letter- <div
spacing: 0.05px;" data-bs-
toggle="modal" data-bs- class="collapse navbar-
target="#logout"> mt-5"
collapse ms-4
id="navbarNav">
class="bi <i <ul
right"></i> bi-box-arrow- class="navbar-nav">
Keluar <li
class="nav-item1">
</button> <a
id="a-stok" class="nav-
</div> link active" aria-
</div> current="page" href="<?=
base_url('stok'); ?>">
</div>
</nav> <h4>Data Stok Barang</h4>
</div> <hr
<!-- End of Sidebar style="border: 0.13em
-->
solid #61d9ff; opacity:
80%; margin: 0" />
</a>
<div class="col-sm- </li>
10">
<li
class="nav-item2 ms-5">
<!-- Navbar --> <a
<nav class="navbar id="a-barang" class="nav-
navbar-expand-md navbar-
light bg-body shadow-sm"> link" href="<?=
base_url('barang'); ?>">
306
<h4>Data Barang</h4> <li
class="nav-item-navbar">
</a>
<h5
</li> class="fw-normal"><?=
$nama_user; ?></h5>
</ul>
</li>
</div>
<li
<ul class="nav class="nav-item-navbar">
flex-column p-2 me-3 text-
end"> <h6
class="fw-light"><?=
<li $nama_jabatan[0]; ?></h6>
class="nav-item-navbar">
</li>
<h5
class="fw-bold">Selamat </ul>
<?php if </div>
($time >= 5 and $time <=
10) : ?> </nav>
Pagi, <!-- End of Navbar
-->
<?php
elseif ($time > 10 and <!-- Content -->
$time <= 15) : ?>
<div id="konten"
Siang, class="container-md">
<?php <div class="row
elseif ($time > 15 and py-3 px-3 m-0">
$time <= 18) : ?>
<form
Sore,
action="<?=
<?php
elseif ($time > 18) : ?> base_url('stok'); ?>"
Malam, method="POST"
<?php style="display: flex;">
elseif ($time >= 1 and
$time <= 4) : ?> <div
class="col-md-8 d-flex">
Begadang,
<!--
endif; ?> <?php Tombol tambah -->
Selamat
<div
Bekerja!</h5> class="me-3">
</li> <button
<?= ($role != 1 && $role !=
307
4) ? 'disabled' : '' ?> 'selected' : '';
class="btn btn-success fw- ?>>B</option>
light fs-5" type="button"
style="letter-spacing: <option value="3" <?=
0.05em" data-bs- ($filterABC == 3) ?
'selected' : '';
toggle="modal" data-bs- ?>>C</option>
target="#tambah">
class="bi <i </select>
circle"></i> bi-plus-
Tambah <button class="btn btn-
outline-primary fs-5"
</button> type="submit"><i class="bi
</div> bi-arrow-
<!-- End clockwise"></i></button>
of Tombol tambah -->
</div>
</div>
<!-- <!-- End
Filter by Kategori --> of Filter by Kategori -->
<div <!--
class="me-3">
Tombol pengaturan
<div
class="input-group"> klasifikasi -->
<div
<select class="form-select class="">
fw-light fs-5" <button
name="filterABC" <?= ($role != 1 && $role !=
id="filterABC"> 4) ? 'disabled' : '' ?>
class="btn btn-secondary
<option value="0" <?= fw-light fs-5"
($filterABC == 0) ?
'selected' : ''; ?>>- type="button" data-bs-
</option>
toggle="modal" data-bs-
target="#periode">
<option value="1" <?= class="bi <i
fill"></i> bi-gear-
($filterABC == 1) ?
</button>
'selected' : '';
?>>A</option> </div>
<option value="2" <?= <!-- End
($filterABC == 2) ? of tombol pengaturan
klasifikasi -->
308
</div> <button
type="button" class="btn-
close" data-bs-
<!-- dismiss="alert" aria-
Pencarian -->
label="Close"></button>
<div </div>
class="col-md-4 d-flex <?php elseif
justify-content-end mb-3"> ($errors-
<div >hasError('jml_stok')) :
?>
class="input-group"
style="width: 16em; <div
height: 2.8em;"> class="alert alert-danger
<input alert-dismissible fade
id="cari" name="katakunci" show" role="alert">
class="form-control Gagal
menambahkan data.
rounded-1" type="text"
placeholder="Cari . . ." />
<button <button
class="btn btn-outline- type="button" class="btn-
primary" type="submit"><i close" data-bs-
class="bi bi- dismiss="alert" aria-
search"></i></button> label="Close"></button>
</div> </div>
</div> <?php elseif
<!-- End of ($errors-
Pencarian -->
>hasError('bts_stok')) :
?>
</form> <div
class="alert alert-danger
alert-dismissible fade
<!-- Pesan show" role="alert">
Gagal / Berhasil --> Gagal
menambahkan data.
<div
class="col-md-12"> <button
<?php if type="button" class="btn-
($errors- close" data-bs-
>hasError('id_brg')) : ?> dismiss="alert" aria-
<div label="Close"></button>
class="alert alert-danger </div>
alert-dismissible fade <?php elseif
show" role="alert"> (session()-
Gagal >getFlashdata('flash_tamba
menambahkan data. h')) : ?>
309
<div <button
class="alert alert-success type="button" class="btn-
alert-dismissible fade close" data-bs-
show" role="alert"> dismiss="alert" aria-
<?= label="Close"></button>
session()- </div>
>getFlashdata('flash_tamba <?php elseif
h'); ?>
(session()-
<button
>getFlashdata('setPeriode_
type="button" class="btn- berhasil')) : ?>
close" data-bs- <div
dismiss="alert" aria- class="alert alert-success
label="Close"></button> alert-dismissible fade
</div> show" role="alert">
<?php elseif <?=
(session()- session()-
>getFlashdata('flash_hapus >getFlashdata('setPeriode_
')) : ?> berhasil'); ?>
<div <button
class="alert alert-success type="button" class="btn-
alert-dismissible fade close" data-bs-
show" role="alert"> dismiss="alert" aria-
<?= label="Close"></button>
session()-
>getFlashdata('flash_hapus </div>
'); ?>
<?php elseif
<button (session()-
>getFlashdata('setPeriode_
type="button" class="btn- gagal')) : ?>
close" data-bs- <div
dismiss="alert" aria- class="alert alert-danger
label="Close"></button> alert-dismissible fade
</div> show" role="alert">
<?php elseif <?=
(session()- session()-
>getFlashdata('flash_ubah' >getFlashdata('setPeriode_
)) : ?> gagal'); ?>
<div <button
class="alert alert-success type="button" class="btn-
alert-dismissible fade close" data-bs-
show" role="alert"> dismiss="alert" aria-
<?= label="Close"></button>
session()- </div>
>getFlashdata('flash_ubah'
); ?>
310
<?php endif; <th class="text-center"
?> scope="col"></th>
</div> </tr>
<!-- End of
Pesan Gagal / Berhasil -->
</thead>
<!-- Tabel <tbody
Data --> class="fw-light fs-5"
<div style="color: #2e50c7;">
class="col-md-12">
<div <?php $no = $pager-
class="card rounded-3"> >getDetails('stok')['perPa
<div ge'] * $pager-
class="card-body"> >getCurrentPage('stok') -
($pager-
class="table <table >getDetails('stok')['perPa
responsive-md"> table- ge'] - 1) ?>
<thead <?php foreach ($stok as
$stk) : ?>
class="fs-5" style="color:
#2e50c7;">
<tr> <tr>
<th class="text-center" <td class="text-
scope="col">No.</th> center"><?= $no++ ?></td>
<th scope="col">Nama <td><?= $stk['nama_brg'];
Barang</th> ?></td>
<th scope="col">Jenis</th> <td><?= $stk['jenis_brg'];
?></td>
<th <td><?=
scope="col">Kategori</th> $stk['kategori_brg'];
?></td>
<th class="text-center"
scope="col">Jumlah</th> <td class="text-
<th class="text-center" center"><?=
$stk['jml_stok']; ?></td>
scope="col">Batas Stok
Minimum</th> <td class="text-
311
center"><?= <i class="bi bi-
$stk['bts_stok']; ?></td> trash"></i>
<td class="text-center">
</button>
<?php if ($role != 1 && </td>
$role != 2 && $role != 3 &&
$role != 4) : ?>
</tr>
<a class="btn btn-primary <?php endforeach; ?>
btn-sm me-1 rounded-1
disabled" role="button"
aria-disabled="true">
<i class="bi bi-pencil- </tbody>
square"></i> </table>
</a> </div>
</div>
<?php else : ?> </div>
<!-- End of
Tabel Data -->
<a class="btn btn-primary
btn-sm me-1 rounded-1" <!--
Pagination -->
role="button" href="<?=
base_url($segments =
['stok/ubahTampil/' . <div
$stk['id_stok']]); ?>"> class="col-md-4 offset-4
mt-4">
<i class=" bi bi-pencil- <?= $pager-
square"></i>
>links('stok',
'pagination'); ?>
</a> </div>
<?php endif; ?> <!-- End of
Pagination -->
<button <?= ($role != 1 &&
$role != 4) ? 'disabled' : </div>
'' ?> class="btn btn- </div>
danger btn-sm rounded-1"
type="button" data-bs- <!-- End of
Content -->
toggle="modal" data-bs-
target="#hapus">
312
</div> <select
</div>
</div> id="id_brg" name="id_brg"
class="form-select <?=
($errors-
>hasError('id_brg')) ?
'is-invalid' : ' '; ?>">
<!-- Pop Up Tambah Data <option
-->
selected disabled>Nama
<div class="modal fade" barang</option>
id="tambah" data-bs- <?php
backdrop="static" data-bs- foreach ($barang as $brg)
: ?>
keyboard="false"
tabindex="-1" aria-
labelledby="staticBackdrop <option value="<?=
Label" aria-hidden="true"> $brg['id_brg'] ?>"><?=
<div class="modal- $brg['nama_brg'];
modal-dialog-
dialog ?></option>
centered">
<?php
<div class="modal-
content"> endforeach; ?>
<div class="modal- </select>
header justify-content- <div
center"> class="invalid-feedback">
<h3 <?=
class="modal-title" $errors-
>getError('id_brg'); ?>
id="staticBackdropLabel"
style="color: </div>
#2e50c7">Tambah Data
Stok</h3> </div>
</div> <div
class="col-md-5 offset-1">
<form
<input
method="POST" action="<?= id="jml_stok"
name="jml_stok"
base_url('stok/tambah');
?>"> type="text" class="form-
control <?= ($errors-
<div >hasError('jml_stok')) ?
class="modal-body" 'is-invalid' : ' '; ?>"
placeholder="Jumlah
style="background-color: barang" />
#efefef">
<div <div
class="row g-2"> class="invalid-feedback">
<div class="
col-md-10 offset-1">
313
<?= <button
$errors- type="submit" class="btn
>getError('jml_stok'); ?>
btn-success btn-lg fw-
</div> light rounded-1"
style="width: 40%; letter-
</div> spacing: 0.05em;">
<div <i class="bi
class="col-md-5">
bi-archive me-sm-
<input 2"></i>Simpan
id="bts_stok"
</button>
name="bts_stok"
type="text" class="form- </div>
control <?= ($errors-
>hasError('bts_stok')) ? </form>
'is-invalid' : ' '; ?>" </div>
placeholder="Batas stok
minimum" /> </div>
<div </div>
class="invalid-feedback">
<!-- End of Pop Up Tambah
<?= Data -->
$errors- <!-- Pop Up Pengaturan
>getError('bts_stok'); ?> Klasifikasi -->
</div>
</div> <div class="modal fade"
</div> id="periode" data-bs-
backdrop="static" data-bs-
</div> keyboard="false"
tabindex="-1" aria-
<div labelledby="staticBackdrop
class="modal-footer d-grid
d-md-flex justify-content- Label" aria-hidden="true">
center">
<div class="modal-
dialog modal-dialog-
centered">
<button
type="button" class="btn <div class="modal-
content">
btn-danger btn-lg fw-light
rounded-1" style="width:
40%; letter-spacing: <div class="modal-
0.05em;" data-bs- header justify-content-
center">
dismiss="modal">
bi-x-square <i class="bi <h3
2"></i>Batal me-sm- class="modal-title"
id="staticBackdropLabel"
</button>
style="color:
#2e50c7">Pengaturan
Klasifikasi ABC</h3>
314