• Tidak ada hasil yang ditemukan

4. IMPLEMENTASI SISTEM

N/A
N/A
Protected

Academic year: 2022

Membagikan "4. IMPLEMENTASI SISTEM"

Copied!
32
0
0

Teks penuh

(1)

4. IMPLEMENTASI SISTEM

Pembahasan pada bab ini merupakan implementasi dari dasar teori dan desain sistem yang telah dijelaskan pada bab-bab sebelumnya dan menjadi suatu aplikasi yang siap untuk digunakan.

Implementasi aplikasi dibagi menjadi beberapa bagian sesuai dengan kegunaannya masing-masing, diantaranya sebagai berikut:

Tabel 0.1. Implementasi Program Master.

Menu Keterangan No Segmen No DFD

Create Master Bahan Baku

Menambah data bahan baku 4.1 1.1

Create Master BOM Menambah data BOM 4.2 2.1

Tabel 0.2. Implementasi Program Pembelian.

Menu Keterangan No Segmen No DFD

Create PO Membuat PO 4.3 1.1

Create Retur Pembelian Membuat Retur Pembelian 4.4 1.4

Tabel 0.3. Implementasi Program Produksi.

Menu Keterangan No Segmen No DFD

Create SPK Membuat SPK 4.5 2.2

Create Detail Produksi Membuat Detail Produksi 4.6 2.2

Tabel 0.4. Implementasi Program Penjualan.

Menu Keterangan No Segmen No DFD

Create Surat Jalan Membuat Surat Jalan 4.7 3.2 Create Nota Penjualan Membuat Nota Penjualan 4.8 3.3

Tabel 0.5. Implementasi Laporan.

Menu Keterangan No Segmen No DFD

Create Laporan HPP Membuat Laporan HPP 4.9 4.2 Create Laporan WIP Membuat Laporan WIP 4.10 4.2

Tabel 0.6. Function yang digunakan.

Menu Keterangan No Segmen No DFD

Function Backdate Fungsi untuk melakukan Backdate kartu stok

4.11 -

Function Ajax Auto Complete

Fungsi Auto Complete yang memanggil data sesuai kriteria

4.12 -

(2)

4.1 Implementasi Program Master

Pada bagian ini dijelaskan contoh penambahan data master pada sistem, berikut segmen program master yang ditampilkan ialah master bahan baku dan master bom untuk mewakili segmen master yang lain.

4.1.1 Create Master Bahan Baku

Proses penambahan data master bahan baku dapat dilihat pada Segmen Program 4.1. dan 4.2.

Segmen Program 0.1. Create Master Bahan Baku

public function actionCreate() {

$model=new BahanBaku;

if(isset($_POST['BahanBaku'])) {

$model->attributes=$_POST['BahanBaku'];

$simpangambar;

if(strlen(trim(CUploadedFile::getInstance($model,'gambar'))) > 0) {

$simpangambar=CUploadedFile::getInstance($model,'gambar');

$model->gambar=$model->kode.'.'.$simpangambar->extensionName;

$thumbnail_width = 134;

$thumbnail_height = 189;

$thumb_beforeword = "thumb";

$temp=CUploadedFile::getInstance($model,'gambar');

$arr_image_details = getimagesize($temp->tempName); // pass id to thumb name

$original_width = $arr_image_details[0];

$original_height = $arr_image_details[1];

if ($original_width > $original_height) {

$new_width = $thumbnail_width;

$new_height = intval($original_height * $new_width /

$original_width);

} else {

$new_height = $thumbnail_height;

$new_width = intval($original_width * $new_height /

$original_height);

}

$dest_x = intval(($thumbnail_width - $new_width) / 2);

$dest_y = intval(($thumbnail_height - $new_height) / 2);

if ($arr_image_details[2] == 1) {

$imgt = "ImageGIF";

$imgcreatefrom = "ImageCreateFromGIF";

}

if ($arr_image_details[2] == 2) {

$imgt = "ImageJPEG";

$imgcreatefrom = "ImageCreateFromJPEG";

}

if ($arr_image_details[2] == 3) {

$imgt = "ImagePNG";

$imgcreatefrom = "ImageCreateFromPNG";

}

(3)

Segmen Program 0.2. Create Master Bahan Baku (Sambungan)

if ($imgt) {

$old_image = $imgcreatefrom($temp->tempName);

$new_image = imagecreatetruecolor($thumbnail_width,

$thumbnail_height);

imagecopyresized($new_image, $old_image, $dest_x, $dest_y, 0, 0,

$new_width, $new_height, $original_width, $original_height);

$imgt($new_image, Yii::app()->basePath .

'\..\images\users\thumb_foto' . $model->gambar);

} }

$model->status=1;

if($model->save())

$this->redirect(array('view','id'=>$model->id_bahan));

}

$this->render('create',array(

'model'=>$model, ));

}

4.1.2 Create Master BOM

Proses penambahan data master BOM dapat dilihat pada Segmen Program 4.3.

dan 4.4.

Segmen Program 0.3. Create Master BOM

public function actionCreate() {

$temp=Bom::model()->find(array('order'=>"id_bom desc"));

$tempcount=count($temp);

if($tempcount==0)

$next=1;

else

$next=$temp->id_bom+1;

$model=new Bom;

if(isset($_POST['Bom'])) {

$model->attributes=$_POST['Bom'];

$model->status=1;

$model->id_bom=$next;

if($model->save()) {

if(isset($_POST['countBahan'])) {

$tempcount=$_POST['countBahan'];

for($i=0;$i<$tempcount;$i++) {

if(!empty($_POST['id_bahan'][$i])) {

$detailbahan = new DetailBahan;

$detailbahan->id_bahan = $_POST['id_bahan'][$i];

$detailbahan->jumlah = $_POST['jumlah_bahan'][$i];

$detailbahan->satuan = $_POST['satuan_bahan'][$i];

$detailbahan->id_bom = $model->id_bom;

(4)

Segmen Program 0.4. Create Master BOM (Sambungan)

$detailbahan->save();

} } }

if(isset($_POST['countMesin'])) {

$tempcount2=$_POST['countMesin'];

for($i=0;$i<$tempcount2;$i++) {

if(!empty($_POST['id_mesin'][$i])) {

$detailmesin = new DetailMesin;

$detailmesin->id_mesin = $_POST['id_mesin'][$i];

$detailmesin->jumlah = $_POST['jumlah_mesin'][$i];

$detailmesin->satuan = $_POST['satuan_mesin'][$i];

$detailmesin->id_bom = $model->id_bom;

$detailmesin->save();

} } }

if(isset($_POST['countPegawai'])) {

$tempcount3=$_POST['countPegawai'];

for($i=0;$i<$tempcount3;$i++) {

if(!empty($_POST['id_pegawai'][$i])) {

$detailpegawai = new DetailPegawai;

$detailpegawai->id_pegawai = $_POST['id_pegawai'][$i];

$detailpegawai->jumlah = $_POST['jumlah_pegawai'][$i];

$detailpegawai->satuan = $_POST['satuan_pegawai'][$i];

$detailpegawai->id_bom = $model->id_bom;

$detailpegawai->save();

} } }

$this->redirect(array('view','id'=>$model->id_bom));

} }

$this->render('create',array(

'model'=>$model, ));

}

4.2 Implementasi Proses Pembelian

Pada bagian ini ditampilkan contoh segmen transaksi pembelian yaitu

proses Pembuatan PO dan Retur Pembelian. Proses pembelian dimulai dari

pembuatan Purchase Order oleh perusahaan. Setelah itu dilakukan penerimaan

bahan sesuai pesanan yang kemudian dibuat menjadi nota pembelian. Setelah itu

terdapat proses retur pembelian serta pembayaran utang kepada supplier.

(5)

4.2.1 Create Purchase Order

Proses pembuatan Purchase Order kepada pelanggan dapat dilihat pada Segmen Program 4.5. dan 4.6.

Segmen Program 0.5. Create Purchase Order

public function actionCreate() {

$sup=new Supplier;

$temp=Po::model()->find(array('order'=>"no_po desc"));

$tempcount=count($temp);

if($tempcount==0)

$next=1;

else

$next=$temp->no_po+1;

$model=new Po;

$counter=0;

if(isset($_POST['coun'])) {

$tempcount=$_POST['coun'];

for($i=0;$i<$tempcount;$i++) {

if(!empty($_POST['jumlah_bahan'][$i])&&

$_POST['jumlah_bahan'][$i]>0) {

$counter=1;

} } }

if(isset($_POST['Po']) && $counter==1) {

$model->attributes=$_POST['Po'];

$model->status=1;

$model->no_po=$next;

$model->kode="PO-".$model->no_po;

if($model->id_sup!='') {

$nama_sup=Supplier::model()-

>find(array('condition'=>"id_sup='".$model->id_sup."'"));

$model->nama_supplier=$nama_sup->nama_supplier;

}

if($model->save()) {

if(isset($_POST['coun'])) {

$tempcount=$_POST['coun'];

for($i=0;$i<$tempcount;$i++) {

if(!empty($_POST['id_bahan'][$i]) && $_POST['jumlah_bahan'][$i]>0

&& $_POST['harga_bahan'][$i]>0) {

$detailbahan = new DetailPo;

$detailbahan->id_bahan = $_POST['id_bahan'][$i];

$detailbahan->jumlah = $_POST['jumlah_bahan'][$i];

$detailbahan->harga_satuan = $_POST['harga_bahan'][$i];

$detailbahan->jumlah_terima = 0;

$detailbahan->satuan = $_POST['satuan_bahan'][$i];

(6)

Segmen Program 0.6. Create Purchase Order (Sambungan)

$detailbahan->subtotal =

$_POST['harga_bahan'][$i]*$_POST['jumlah_bahan'][$i];;

$detailbahan->no_po = $model->no_po;

$detailbahan->save();

} } }

$this->redirect(array('view','id'=>$model->no_po));

} }

$this->render('create',array(

'model'=>$model, 'sup'=>$sup, 'next'=>$next, ));

}

4.2.2 Create Retur Pembelian

Proses retur pembelian bahan kepada supplier dapat dilihat pada Segmen Program 4.7, 4.8, 4.9, dan 4.10.

Segmen Program 0.7. Create Retur Pembelian

public function actionCreate() {

$temp=ReturPembelian::model()->find(array('order'=>"id_retur desc"));

$tempcount=count($temp);

if($tempcount==0)

$next=1;

else

$next=$temp->id_retur+1;

$model=new ReturPembelian;

if(isset($_POST['ReturPembelian'])) {

$model->attributes=$_POST['ReturPembelian'];

$model->id_retur=$next;

$model->kode="RB-".$model->id_retur;

$model->status=1;

$model->id_pembelian=$_POST['id_pembelian'];

$temp=KartuHutang::model()-

>find(array('condition'=>"id_supplier=".$model-

>id_supplier,'order'=>"nomor DESC"));

$tempcount2=count($temp);

if($tempcount2==0) {

$nomor=1;

$stokreal=0;

} else {

$nomor=$temp->nomor+1;

$stokreal=$temp->saldo;

(7)

Segmen Program 0.8. Create Retur Pembelian (Sambungan)

}

$piutang=new KartuHutang;

$piutang->tanggal=$model->tanggal;

$piutang->id_supplier=$model->id_supplier;

$piutang->id_hutang=$model->kode;

$piutang->jumlah_masuk=$model->harga_total*-1;

$piutang->jumlah_keluar=0;

$piutang->saldo=$stokreal-$model->harga_total;

$piutang->nomor=$nomor;

$piutang->save();

if($model->save()) {

$count=$_POST['coun'];

for($i=0;$i<$count;$i++) {

if(!empty($_POST['id_penerimaan'][$i]) &&

$_POST['retur_spk'][$i]>0) {

$harga=DetailPO::model()-

>find(array('condition'=>"no_po=".$_POST['no_po'][$i]."and id_bahan=".$_POST['id_bahan'][$i]));

$detretur=new DetailRbeli;

$detretur->id_penerimaan=$_POST['id_penerimaan'][$i];

$detretur->id_bahan=$_POST['id_bahan'][$i];

$detretur->id_retur=$model->id_retur;

$detretur->jumlah=$_POST['retur_spk'][$i];

$detretur->harga_satuan=$harga->harga_satuan;

$detretur->subtotal=$detretur->jumlah*$detretur->harga_satuan;

$detretur->save();

$temp=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$_POST['id_bahan'][$i]."and tanggal<='".$model->tanggal."'",'order'=>"nomor DESC"));

$tempcount2=count($temp);

if($tempcount2==0) {

$nomor=1;

$stokreal=0;

$averagereal=0;

} else {

$nomor=$temp->nomor+1;

$stokreal=$temp->stok;

$averagereal=$temp->harga_average;

}

$harga=DetailPO::model()-

>find(array('condition'=>"no_po=".$_POST['no_po'][$i]."and id_bahan=".$_POST['id_bahan'][$i]));

$stok=new KartuStok;

$stok->tanggal=$model->tanggal;

$stok->id_bahan=$_POST['id_bahan'][$i];

$stok->jumlah_masuk=0;

$stok->jumlah_keluar=$_POST['retur_spk'][$i];

$stok->stok=$stokreal-$_POST['retur_spk'][$i];

$stok->harga=$harga->harga_satuan;

if($stok->stok!=0)

$stok->harga_average=(($averagereal*$stokreal

(8)

Segmen Program 0.9. Create Retur Pembelian (Sambungan)

)-($_POST['retur_spk'][$i]*$harga->harga_satuan))/($stokreal-

$_POST['retur_spk'][$i]);

else

$stok->harga_average=0;

$stok->keterangan="Retur dari id retur ".$model->id_retur."

penerimaan barang no ".$_POST['id_penerimaan'][$i];

$stok->nomor=$nomor;

$stok->status=9;

$stok->save();

$idterima=$_POST['id_penerimaan'][$i];

$temp2=KartuStok::model()-

>findAll(array('condition'=>"id_bahan=".$_POST['id_bahan'][$i]."

and tanggal>'".$model->tanggal."'",'order'=>"nomor DESC"));

foreach($temp2 as $detail) {

$temp3=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$_POST['id_bahan'][$i]." and tanggal>'".$model->tanggal."' and nomor=".$detail->nomor));

if(!empty($temp3)) {

$temp3->nomor++;

$temp3->save();

} } } }

$counter=0;

$count=$_POST['coun'];

for($i=0;$i<$count;$i++) {

if(!empty($_POST['id_penerimaan'][$i])) {

if($_POST['retur_spk'][$i]+$_POST['telah_spk'][$i]!=$_POST['jumlah _bahan'][$i])

$counter=1;

} }

if($counter==0) {

$gantistatus=NotaPembelian::model()-

>find(array('condition'=>"id_pembelian=".$_POST['id_pembelian']));

$gantistatus->status=3;

$gantistatus->save();

$gantiterima=Penerimaan::model()-

>find(array('condition'=>"id_penerimaan=".$idterima));

$gantiterima->status=4;

$gantiterima->save();

}

$pel=Supplier::model()->findAll();

foreach($pel as $detail) {

$kartuhutang=KartuHutang::model()-

>findAll(array('condition'=>'id_supplier='.$detail-

>id_sup,'order'=>'tanggal,id_kartu'));

$nomor=1;

foreach($kartuhutang as $details) {

(9)

Segmen Program 0.10. Create Retur Pembelian (Sambungan)

$hutang=KartuHutang::model()-

>find(array('condition'=>'id_kartu='.$details->id_kartu));

$hutang->nomor=$nomor;

$nomor++;

$hutang->save();

} }

$pel1=Supplier::model()->findAll();

foreach($pel1 as $detail) {

$kartuhutang1=KartuHutang::model()-

>findAll(array('condition'=>'id_supplier='.$detail-

>id_sup,'order'=>'id_supplier,nomor'));

foreach($kartuhutang1 as $details) {

$prev=$details->nomor-1;

$hutang=KartuHutang::model()-

>find(array('condition'=>'nomor='.$details->nomor));

$hutangprev=KartuHutang::model()-

>find(array('condition'=>'nomor='.$prev.'and id_supplier='.$hutang->id_supplier));

if(!empty($hutangprev))

$hutang->saldo=$hutangprev->saldo+$hutang->jumlah_masuk-$hutang-

>jumlah_keluar;

else

$hutang->saldo=$hutang->jumlah_masuk-$hutang->jumlah_keluar;

$hutang->save();

} }

BackDate::KartuStok();

$this->redirect(array('view','id'=>$model->id_retur));

} }

$this->render('create',array(

'model'=>$model, 'next'=>$next, ));

}

4.3 Implementasi Proses Produksi

Pada bagian ini ditampilkan contoh segmen transaksi produksi yaitu proses pembuatan SPK dan detail produksi. Proses produksi dimulai dengan pembuatan SPK berdasarkan pesanan pelanggan dan proses detail produksi untuk memasukkan tiap detail tahapannya.

4.3.1 Create SPK

Proses pembuatan SPK dapat dilihat pada Segmen Program 4.11. dan 4.12.

(10)

Segmen Program 0.11. Create SPK

public function actionCreate() {

$temp=SPK::model()->find(array('order'=>"id_spk desc"));

$tempcount=count($temp);

if($tempcount==0)

$next=1;

else

$next=$temp->id_spk+1;

$model=new Spk;

if(isset($_POST['Spk']) && isset($_POST['coun']) &&

$_POST['jum']==1) {

$model->attributes=$_POST['Spk'];

$model->id_spk=$next;

$model->status=1;

$model->kode="SPK-".$model->id_spk;

for($i=0;$i<$_POST['coun'];$i++) {

if(isset($_POST['pro_bahan'][$i]) && $_POST['pro_bahan'][$i]>0) {

$model->id_produk=$_POST['id_bahan'][$i];

$model->jumlah=$_POST['pro_bahan'][$i];

} }

$hrgjual=DetailSo::model()-

>find(array('condition'=>"id_so=".$model->id_so."and id_produk=".$model->id_produk));

$model->harga_jual=$hrgjual->harga_satuan;

$model->jumlah_selesai=0;

if($model->save()) {

$detailso=DetailSO::model()-

>find(array('condition'=>"id_so=".$model->id_so."and id_produk=".$model->id_produk));

$detailso->jumlah_produksi=$detailso->jumlah_produksi+$model-

>jumlah;

$detailso->save();

if(isset($_POST['fix'])) {

if($_POST['fix']==1) {

$gantipo=SO::model()->find(array('condition'=>"id_so=".$model-

>id_so));

$gantipo->status=2;

$gantipo->save();

} }

$coun=0;

$counter=0;

$detailso=DetailSO::model()-

>findAll(array('condition'=>"id_so=".$model->id_so));

foreach($detailso as $detail) {

if($detail->jumlah_produksi>=$detail->jumlah)

$coun++;

$counter++;

}

(11)

Segmen Program 0.12. Create SPK (Sambungan)

if($coun==$counter) {

$detailso=SO::model()->find(array('condition'=>"id_so=".$model-

>id_so));

$detailso->status=2;

$detailso->save();

}

$this->redirect(array('view','id'=>$model->id_spk));

} }

$this->render('create',array(

'model'=>$model, 'next'=>$next, ));

}

4.3.2 Create Detail Produksi

Pada proses ini dimasukkan detail jumlah selesai produksi serta bahan- bahan yang dipakai pada tiap detailnya. Proses pembuatan detail produksi dapat dilihat pada Segmen Program 4.13, 4.14, 4.15 dan 4.16.

Segmen Program 0.13. Create Detail Produksi

public function actionCreate() {

$temp=DetailProduksi::model()->find(array('order'=>"id_detail desc"));

$tempcount=count($temp);

if($tempcount==0)

$next=1;

else

$next=$temp->id_detail+1;

$model=new DetailProduksi;

if(isset($_POST['DetailProduksi'])) {

$model->attributes=$_POST['DetailProduksi'];

$model->status=1;

$model->id_detail=$next;

$hargatotal=0;

$detspk=SPK::model()->find(array('condition'=>"id_spk=".$model-

>id_spk));

$detspk->jumlah_selesai=$detspk->jumlah_selesai+$model->jumlah;

if($detspk->jumlah_selesai>0)

$detspk->status=2;

if($_POST['fix']==1) {

$detspk->status=3;

}

$detspk->save();

if($model->save()) {

if(isset($_POST['countBahan']))

(12)

Segmen Program 0.14. Create Detail Produksi (Sambungan)

{

$tempcount=$_POST['countBahan'];

for($i=0;$i<$tempcount;$i++) {

if(!empty($_POST['id_bahan'][$i])) {

$detailbahan = new BahanAktual;

$detailbahan->id_bahan = $_POST['id_bahan'][$i];

$detailbahan->id_spk = $model->id_spk;

$detailbahan->jumlah = $_POST['jumlah_bahan'][$i];

$temp=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$_POST['id_bahan'][$i]."and tanggal<='".$model->tanggal."'",'order'=>"nomor DESC"));

$tempcount2=count($temp);

if($tempcount2==0) {

$nomor=1;

$stokreal=0;

$averagereal=0;

} else {

$nomor=$temp->nomor+1;

$stokreal=$temp->stok;

$averagereal=$temp->harga_average;

}

if(!empty($_POST['jumlah_bahan'][$i])&&$_POST['jumlah_bahan'][$i]>

0) {

$kartustok = new KartuStok;

$kartustok->tanggal=$model->tanggal;

$kartustok->id_bahan=$_POST['id_bahan'][$i];

$kartustok->jumlah_masuk=0;

$kartustok->jumlah_keluar=$_POST['jumlah_bahan'][$i];

$kartustok->stok=$stokreal-$_POST['jumlah_bahan'][$i];

$kartustok->harga=$averagereal;

$kartustok->harga_average=$averagereal;

$kartustok->keterangan="Digunakan untuk SPK ".$model->id_spk." dan No detail produksi ".$model->id_detail;

$kartustok->nomor=$nomor;

$kartustok->status=3;

$kartustok->id_detail=$model->id_detail;

$kartustok->id_spk=$model->id_spk;

$kartustok->save();

}

$temp2=KartuStok::model()-

>findAll(array('condition'=>"id_bahan=".$_POST['id_bahan'][$i]."

and tanggal>'".$model->tanggal."'",'order'=>"nomor DESC"));

foreach($temp2 as $detail) {

$temp3=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$_POST['id_bahan'][$i]." and tanggal>'".$model->tanggal."' and nomor=".$detail->nomor));

if(!empty($temp3)) {

$temp3->nomor++;

(13)

Segmen Program 0.15. Create Detail Produksi (Sambungan)

$temp3->save();

} }

$detailbahan->harga_satuan = $averagereal;

$detailbahan->total = $detailbahan->jumlah*$detailbahan-

>harga_satuan;

$detailbahan->id_detail = $model->id_detail;

$detailbahan->save();

$hargatotal+=$detailbahan->total;

} } }

if(isset($_POST['countMesin'])) {

$tempcount2=$_POST['countMesin'];

for($i=0;$i<$tempcount2;$i++) {

if(!empty($_POST['id_mesin'][$i])) {

$detailmesin = new MesinAktual;

$detailmesin->id_mesin = $_POST['id_mesin'][$i];

$detailmesin->id_spk = $model->id_spk;

$detailmesin->jumlah = $_POST['jumlah_mesin'][$i];

$temp=Mesin::model()-

>find(array('condition'=>"id_mesin=".$_POST['id_mesin'][$i]));

$detailmesin->harga_satuan=$temp->ongkos_pakai;

$detailmesin->total = $detailmesin->jumlah*$detailmesin-

>harga_satuan;

$detailmesin->id_detail = $model->id_detail;

$detailmesin->save();

$hargatotal+=$detailmesin->total;

} } }

if(isset($_POST['countPegawai'])) {

$tempcount3=$_POST['countPegawai'];

for($i=0;$i<$tempcount3;$i++) {

if(!empty($_POST['id_pegawai'][$i])) {

$detailpegawai = new PegawaiAktual;

$detailpegawai->id_pegawai = $_POST['id_pegawai'][$i];

$detailpegawai->id_spk = $model->id_spk;

$detailpegawai->jumlah = $_POST['jumlah_pegawai'][$i];

$temp=Users::model()-

>find(array('condition'=>"username='".$_POST['id_pegawai'][$i]."'"

));

$detailpegawai->harga_satuan = $temp->gaji;

$detailpegawai->total = $detailpegawai-

>harga_satuan*$detailpegawai->jumlah;

$detailpegawai->id_detail = $model->id_detail;

$detailpegawai->save();

$hargatotal+=$detailpegawai->total;

} } }

(14)

Segmen Program 0.16. Create Detail Produksi (Sambungan)

$temp=KartuStok::model()-

>find(array('condition'=>"id_produk=".$_POST['id_produk']." and tanggal<='".$model->tanggal."'",'order'=>"nomor DESC"));

$tempcount2=count($temp);

if($tempcount2==0) {

$nomor=1;

$stokreal=0;

$averagereal=0;

} else {

$nomor=$temp->nomor+1;

$stokreal=$temp->stok;

$averagereal=$temp->harga_average;

}

if($model->jumlah>0) {

$kartustok = new KartuStok;

$kartustok->tanggal=$model->tanggal;

$kartustok->id_produk=$_POST['id_produk'];

$kartustok->jumlah_masuk=$model->jumlah;

$kartustok->jumlah_keluar=0;

$kartustok->stok=$stokreal+$model->jumlah;

$kartustok->harga=$hargatotal/$model->jumlah;

$kartustok->harga_average=(($averagereal*$stokreal)+($model-

>jumlah*$kartustok->harga))/($model->jumlah+$stokreal);

$kartustok->keterangan="Dari SPK ".$model->id_spk." dan No detail produksi ".$model->id_detail;

$kartustok->nomor=$nomor;

$kartustok->status=5;

$kartustok->id_detail=$model->id_detail;

$kartustok->id_spk=$model->id_spk;

$kartustok->save();

}

$temp2=KartuStok::model()-

>findAll(array('condition'=>"id_produk=".$_POST['id_produk']." and tanggal>'".$model->tanggal."'",'order'=>"nomor DESC"));

foreach($temp2 as $detail) {

$temp3=KartuStok::model()-

>find(array('condition'=>"id_produk=".$_POST['id_produk']." and tanggal>'".$model->tanggal."' and nomor=".$detail->nomor));

if(!empty($temp3)) {

$temp3->nomor++;

$temp3->save();

} }

BackDate::KartuStok();

$this->redirect(array('view','id'=>$model->id_detail));

} }

$this->render('create',array(

'model'=>$model, 'next'=>$next, ));}

(15)

4.4 Implementasi Proses Penjualan

Pada bagian ini ditampilkan contoh segmen transaksi penjualan yaitu proses pembuatan surat jalan dan nota penjualan. Proses penjualan dimulai dari pembuatan SO berdasarkan pesanan dari pelanggan lalu dilakukan produksi sesuai pesanan pelanggan. Setelah produksi selesai dilakukan pengiriman dan pembuatan nota penjualan kepada pelanggan. Setelah itu dapat dilakukan retur penjualan berdasarkan ketentuan yang berlaku serta penerimaan piutang dari pelanggan.

4.4.1 Create Surat Jalan

Proses pembuatan surat jalan dimulai dari memilih surat perintah kerja yang telah selesai di produksi. Proses pembuatan surat jalan dapat dilihat pada segmen Program 4.17, 4.18 dan 4.19.

Segmen Program 0.17. Create Surat Jalan

public function actionCreate() {

$temp=SuratJalan::model()->find(array('order'=>"no_sj desc"));

$tempcount=count($temp);

if($tempcount==0)

$next=1;

else

$next=$temp->no_sj+1;

$model=new SuratJalan;

if(isset($_POST['SuratJalan'])) {

$model->attributes=$_POST['SuratJalan'];

$model->no_sj=$next;

$model->kode="SJ-".$model->no_sj;

$model->status=1;

$count=$_POST['coun'];

for($i=0;$i<$count;$i++) {

if(!empty($_POST['id_pelanggan'][$i])) {

$model->id_pelanggan=$_POST['id_pelanggan'][$i];

$model->nama_pelanggan=$_POST['nama_pelanggan'][$i];

} }

if($model->save()) {

$count=$_POST['coun'];

for($i=0;$i<$count;$i++) {

if(!empty($_POST['id_pelanggan'][$i])) {

$detspk=SPK::model()-

>find(array('condition'=>"id_spk=".$_POST['id_spk'][$i]));

$detspk->no_sj=$model->no_sj;

$detspk->jumlah_terima=$detspk->jumlah_selesai;

(16)

Segmen Program 0.18. Create Surat Jalan (Sambungan)

$detspk->status=4;

$kirim=$detspk->jumlah_selesai;

$detspk->save();

$hargatotal=0;

$iddetail=DetailProduksi::model()-

>findAll(array('condition'=>"id_spk=".$_POST['id_spk'][$i]."and status=1"));

foreach($iddetail as $details) {

$bahanak=BahanAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$pegawaiak=PegawaiAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$mesinak=MesinAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($bahanak as $detail) {

$hargatotal+=$detail->total;

}

foreach($mesinak as $detail) {

$hargatotal+=$detail->total;

}

foreach($pegawaiak as $detail) {

$hargatotal+=$detail->total;

} }

$temp=KartuStok::model()-

>find(array('condition'=>"id_produk=".$_POST['id_produk'][$i]."and tanggal<='".$model->tanggal."'",'order'=>"nomor DESC"));

$tempcount2=count($temp);

if($tempcount2==0) {

$nomor=1;

$stokreal=0;

$averagereal=0;

} else {

$nomor=$temp->nomor+1;

$stokreal=$temp->stok;

$averagereal=$temp->harga_average;

}

$kartustok=new KartuStok;

$kartustok->tanggal=$model->tanggal;

$kartustok->id_produk=$_POST['id_produk'][$i];

$kartustok->jumlah_masuk=0;

$kartustok->jumlah_keluar=$kirim;

$kartustok->stok=$stokreal-$kirim;

$kartustok->harga=$averagereal;

if($kartustok->stok!=0)

$kartustok->harga_average=(($averagereal*$stokreal)- ($kirim*$kartustok->harga))/($stokreal-$kirim);

else

$kartustok->harga_average=0;

$kartustok->keterangan="Digunakan untuk SPK

(17)

Segmen Program 0.19. Create Surat Jalan (Sambungan)

".$_POST['id_spk'][$i]." dan Pengiriman ".$model->no_sj;

$kartustok->nomor=$nomor;

$kartustok->status=8;

$kartustok->id_spk=$_POST['id_spk'][$i];

$kartustok->no_sj=$model->no_sj;

$kartustok->save();

$temp2=KartuStok::model()-

>findAll(array('condition'=>"id_produk=".$_POST['id_produk'][$i]."

and tanggal>'".$model->tanggal."'",'order'=>"nomor DESC"));

foreach($temp2 as $detail) {

$temp3=KartuStok::model()-

>find(array('condition'=>"id_produk=".$_POST['id_produk'][$i]."

and tanggal>'".$model->tanggal."' and nomor=".$detail->nomor));

if(!empty($temp3)) {

$temp3->nomor++;

$temp3->save();

} } } }

BackDate::KartuStok();

$this->redirect(array('view','id'=>$model->no_sj));

} }

$this->render('create',array(

'model'=>$model, 'next'=>$next, ));

}

4.4.2 Create Nota Penjualan

Proses pembuatan nota penjualan dilakukan setelah barang yang dikirim telah diterima dengan baik oleh pelanggan. Proses pembuatan nota penjualan dapat dilihat pada segmen Program 4.20, 4.21, 4.22 dan 4.23.

Segmen Program 0.20. Create Nota Penjualan

public function actionCreate() {

$temp=NotaPenjualan::model()->find(array('order'=>"no_penjualan desc"));

$tempcount=count($temp);

if($tempcount==0)

$next=1;

else

$next=$temp->no_penjualan+1;

$model=new NotaPenjualan;

if(isset($_POST['NotaPenjualan'])) {

$model->attributes=$_POST['NotaPenjualan'];

$model->no_penjualan=$next;

(18)

Segmen Program 0.21. Create Nota Penjualan (Sambungan)

$model->kode="NJ-".$model->no_penjualan;

$model->status=1;

$model->id_pelanggan=$_POST['id_pel'];

$model->nama_pelanggan=$_POST['nama_pel'];

$tempo=Pelanggan::model()-

>find(array('condition'=>"id_pelanggan=".$model->id_pelanggan));

$newDate = date('Y-m-d', strtotime($model->tanggal.'+'.$tempo-

>tempo_bayar.' days'));

$model->jatuh_tempo=$newDate;

if($model->save()) {

$statussj=SuratJalan::model()-

>find(array('condition'=>"no_sj=".$model->no_sj));

$statussj->status=2;

$statussj->save();

$temp=KartuPiutang::model()-

>find(array('condition'=>"id_pelanggan=".$_POST['id_pel'],'order'=

>"nomor DESC"));

$tempcount2=count($temp);

if($tempcount2==0) {

$nomor=1;

$stokreal=0;

} else {

$nomor=$temp->nomor+1;

$stokreal=$temp->saldo;

}

$piutang=new KartuPiutang;

$piutang->tanggal=$model->tanggal;

$piutang->id_pelanggan=$_POST['id_pel'];

$piutang->id_piutang=$model->kode;

$piutang->jumlah_masuk=$model->harga_total;

$piutang->jumlah_keluar=0;

$piutang->saldo=$stokreal+$model->harga_total;

$piutang->nomor=$nomor;

$piutang->save();

$count=$_POST['coun'];

for($i=0;$i<$count;$i++) {

if(!empty($_POST['id_spk'][$i])) {

$detspk=SPK::model()-

>find(array('condition'=>"id_spk=".$_POST['id_spk'][$i]));

$detspk->status=5;

$detspk->jumlah_terima=$detspk->jumlah_selesai-

$_POST['kembali_spk'][$i];

$detspk->save();

} }

for($i=0;$i<$count;$i++) {

if(!empty($_POST['id_spk'][$i]) && $_POST['kembali_spk'][$i]>0) {

$hargatotal=0;

$iddetail=DetailProduksi::model

(19)

Segmen Program 0.22. Create Nota Penjualan (Sambungan)

()->findAll(array('condition'=>"id_spk=".$_POST['id_spk'][$i]."and status=1"));

foreach($iddetail as $details) {

$bahanak=BahanAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$pegawaiak=PegawaiAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$mesinak=MesinAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($bahanak as $detail) {

$hargatotal+=$detail->total;

}

foreach($mesinak as $detail) {

$hargatotal+=$detail->total;

}

foreach($pegawaiak as $detail) {

$hargatotal+=$detail->total;

} }

$temp=KartuStok::model()-

>find(array('condition'=>"id_produk=".$_POST['id_produk'][$i],'ord er'=>"nomor DESC"));

$tempcount2=count($temp);

if($tempcount2==0) {

$nomor=1;

$stokreal=0;

$averagereal=0;

} else {

$nomor=$temp->nomor+1;

$stokreal=$temp->stok;

$averagereal=$temp->harga_average;

}

$kembalibarang=new KartuStok;

$kembalibarang->tanggal=$model->tanggal;

$kembalibarang->id_produk=$_POST['id_produk'][$i];

$kembalibarang->jumlah_masuk=$_POST['kembali_spk'][$i];

$kembalibarang->jumlah_keluar=0;

$kembalibarang->stok=$stokreal+$_POST['kembali_spk'][$i];

$kembalibarang->harga=$hargatotal/$_POST['jumlah_bahan'][$i];

if($kembalibarang->stok!=0)

$kembalibarang-

>harga_average=(($averagereal*$stokreal)+($_POST['kembali_spk'][$i ]*$kembalibarang->harga))/($stokreal+$_POST['kembali_spk'][$i]);

else

$kembalibarang->harga_average=0;

$kembalibarang->keterangan="Pengembalian SPK

".$_POST['id_spk'][$i]." dan Pengiriman ".$_POST['no_sj'][$i];

$kembalibarang->nomor=$nomor;

$kembalibarang->save();

}

(20)

Segmen Program 0.23. Create Nota Penjualan (Sambungan)

}

$pel=Pelanggan::model()->findAll();

foreach($pel as $detail) {

$kartupiutang=KartuPiutang::model()-

>findAll(array('condition'=>'id_pelanggan='.$detail-

>id_pelanggan,'order'=>'tanggal,id_kartu'));

$nomor=1;

foreach($kartupiutang as $details) {

$piutang=KartuPiutang::model()-

>find(array('condition'=>'id_kartu='.$details->id_kartu));

$piutang->nomor=$nomor;

$nomor++;

$piutang->save();

} }

$pel1=Pelanggan::model()->findAll();

foreach($pel1 as $detail) {

$kartupiutang1=KartuPiutang::model()-

>findAll(array('condition'=>'id_pelanggan='.$detail-

>id_pelanggan,'order'=>'id_pelanggan,nomor'));

foreach($kartupiutang1 as $details) {

$prev=$details->nomor-1;

$piutang=KartuPiutang::model()-

>find(array('condition'=>'nomor='.$details->nomor));

$piutangprev=KartuPiutang::model()-

>find(array('condition'=>'nomor='.$prev.'and id_pelanggan='.$piutang->id_pelanggan));

if(!empty($piutangprev))

$piutang->saldo=$piutangprev->saldo+$piutang->jumlah_masuk-

$piutang->jumlah_keluar;

else

$piutang->saldo=$piutang->jumlah_masuk-$piutang->jumlah_keluar;

$piutang->save();

} }

$this->redirect(array('view','id'=>$model->no_penjualan));

} }

$this->render('create',array(

'model'=>$model, 'next'=>$next, ));

}

4.5 Implementasi Pembuatan Laporan

Pada bagian ini ditampilkan beberapa contoh pembuatan laporan pada

sistem. Laporan yang dijelaskan antara lain laporan WIP dan laporan HPP.

(21)

4.5.1 Create Laporan HPP

Proses pembuatan laporan hpp dimulai dengan masukan dari pengguna berupa tanggal baru kemudian ditampilkan laporan HPP dari SPK yang telah selesai diproduksi. Proses pembuatan Laporan HPP dapat dilihat pada segmen Program 4.24. dan 4.25.

Segmen Program 0.24. Create Laporan HPP

public function actionLaporanproduksi() {

if(isset($_POST['tanggal_awal']) && $_POST['tanggal_awal']!='' &&

$_POST['tanggal_akhir']!='') {

$spk=SPK::model()->findAll(array('condition'=>"status>2 and tanggal>='".$_POST['tanggal_awal']."' and tanggal<='".$_POST['tanggal_akhir']."'",'order'=>"id_spk"));

$i=0;

$pro=array();

foreach($spk as $detail) {

$produk=Produk::model()-

>find(array('condition'=>"id_produk=".$detail->id_produk));

$pro[$i]=$produk->nama_produk." ".$produk->tipe." (".$produk-

>panjang."x".$produk->lebar."x".$produk->tinggi.") Model:".$produk->model;

$i++;

}

$hpp=array();

$coun=0;

$tgl=array();

$jual=array();

foreach($spk as $detail) {

$hpp[$coun]=0;

$jual[$coun]=0;

$harga=DetailProduksi::model()-

>findAll(array('condition'=>"id_spk=".$detail->id_spk."and status=1"));

foreach($harga as $details) {

$hppbahan=BahanAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($hppbahan as $dets) {

$hpp[$coun]+=$dets->total;

}

$hppmesin=MesinAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($hppmesin as $dets) {

$hpp[$coun]+=$dets->total;

}

$hpppegawai=PegawaiAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($hpppegawai as $dets)

(22)

Segmen Program 0.25. Create Laporan HPP (Sambungan)

{

$hpp[$coun]+=$dets->total;

} }

$hpp[$coun]/=$detail->jumlah_selesai;

$dettgl=DetailProduksi::model()-

>find(array('condition'=>"id_spk=".$detail->id_spk."and status=1",'order'=>"tanggal desc"));

$tgl[$coun]=$dettgl->tanggal;

$detso=DetailSo::model()-

>find(array('condition'=>"id_so=".$detail->id_so."and id_produk=".$detail->id_produk));

if(!empty($detso))

$jual[$coun]=$detso->harga_satuan;

$coun++;

}

$this->render('laporanproduksi',array(

'coun'=>$coun, 'hpp'=>$hpp, 'spk'=>$spk, 'tgl'=>$tgl, 'jual'=>$jual,

'tglawal'=>$_POST['tanggal_awal'], 'tglakhir'=>$_POST['tanggal_akhir'], 'pro'=>$pro,

));

} else {

$this->render('_laporanproduksi');

} }

4.5.2 Create Laporan WIP

Pada Laporan WIP ditampilkan semua SPK yang sedang diproduksi untuk menampilkan jumlah WIP saat ini. Proses pembuatan Laporan WIP dapat dilihat pada segmen Program 4.26. dan 4.27.

Segmen Program 0.26. Create Laporan WIP

public function actionLaporanwip() {

$wip=SPK::model()-

>findAll(array('condition'=>"status=2",'order'=>"id_spk"));

$hargatotal=array();

$fin=array();

$nama=array();

$coun=0;

foreach($wip as $detail) {

$fin[$coun]=0;

$hargatotal[$coun]=0;

$detspk=DetailProduksi::model()

(23)

Segmen Program 0.27. Create Laporan WIP (Sambungan)

->findAll(array('condition'=>"id_spk=".$detail->id_spk."and status=1"));

foreach($detspk as $details) {

$bahanak=BahanAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$pegawaiak=PegawaiAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$mesinak=MesinAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($bahanak as $detail1) {

$hargatotal[$coun]+=$detail1->total;

}

foreach($mesinak as $detail1) {

$hargatotal[$coun]+=$detail1->total;

}

foreach($pegawaiak as $detail1) {

$hargatotal[$coun]+=$detail1->total;

}

$stok=KartuStok::model()-

>find(array('condition'=>"id_detail=".$details->id_detail."and jumlah_keluar=0"));

if(!empty($stok))

$fin[$coun]=$stok->harga;

}

$namabhn=Produk::model()-

>find(array('condition'=>"id_produk=".$detail->id_produk));

$nama[$coun]=$namabhn->nama_produk." ".$namabhn->tipe."

(".$namabhn->panjang."x".$namabhn->lebar."x".$namabhn->tinggi.") Model:".$namabhn->model;

$coun++;

}

$this->render('laporanwip',array(

'wip'=>$wip,

'hargatotal'=>$hargatotal, 'coun'=>$coun,

'fin'=>$fin, 'nama'=>$nama, ));

}

4.6 Implementasi Fungsi

Pada bagian ini ditampilkan beberapa contoh penggunaan fungsi dalam

aplikasi yaitu fungsi Ajax autocomplete dan fungsi backdate.

(24)

4.6.1 Fungsi Ajax Autocomplete

Dalam fungsi ini menjalankan pencarian database berdasarkan input dari user secara realtime dan ditampilkan pada form program. Fungsi Ajax Autocomplete dapat dilihat pada segmen Program 4.28.

Segmen Program 0.28. Fungsi Ajax Autocomplete

public function actionAjaxGetKode() {

$request=trim($_GET['term']);

if($request!='') {

$model=BahanBaku::model()->findAll(array("condition"=>"

LOWER(nama_bahan) like LOWER('%$request%') and status=1"));

$data=array();

foreach($model as $get) {

$temp=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$get-

>id_bahan,'order'=>"nomor DESC"));

if(count($temp)!=0)

$stokreal=$temp->stok;

else

$stokreal=0;

array_push($data,array(

"label" => $get->nama_bahan." [".$get->tipe."] (".$get-

>panjang."x".$get->lebar.")",

"value" => $get->nama_bahan." [".$get->tipe."] (".$get-

>panjang."x".$get->lebar.")",

"id_bahan" => $get->id_bahan,

"nama_bahan" => $get->nama_bahan,

"kode" => $get->kode,

"satuan" => $get->satuan,

"stok"=>$stokreal ));

}

$this->layout='empty';

echo json_encode($data);

} }

4.6.2 Fungsi Backdate

Fungsi Backdate ialah suatu fungsi yang digunakan untuk melakukan proses perhitungan ulang pada tabel kartu stok. Fungsi Backdate dapat dilihat pada segmen program 4.29. hingga segmen program 4.37.

Segmen Program 0.29. Fungsi Ajax Backdate

$totalbahan=BahanBaku::model()->findAll();

foreach($totalbahan as $bahans) {

(25)

Segmen Program 0.30. Fungsi Ajax Backdate (Sambungan)

$nmr=1;

$urutbahan=KartuStok::model()-

>findAll(array('condition'=>"id_bahan=".$bahans-

>id_bahan,'order'=>"tanggal,id_stok"));

foreach($urutbahan as $urut) {

$ganti=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$urut->id_bahan."and id_stok=".$urut->id_stok));

$ganti->nomor=$nmr;

$ganti->save();

$nmr++;

} }

$totalproduk=Produk::model()->findAll();

foreach($totalproduk as $produks) {

$nmr=1;

$urutproduk=KartuStok::model()-

>findAll(array('condition'=>"id_produk=".$produks-

>id_produk,'order'=>"tanggal,id_stok"));

foreach($urutproduk as $urut) {

$ganti=KartuStok::model()-

>find(array('condition'=>"id_produk=".$urut->id_produk."and id_stok=".$urut->id_stok));

$ganti->nomor=$nmr;

$ganti->save();

$nmr++;

} }

$temp3=KartuStok::model()-

>findAll(array('order'=>"tanggal,nomor"));

foreach($temp3 as $detail) {

if(!empty($detail->id_bahan)) {

$nmrfind=$detail->nomor-1;

$stok=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$detail->id_bahan."and nomor=".$nmrfind));

$kartustok1=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$detail->id_bahan."and nomor=".$detail->nomor));

}

else if(!empty($detail->id_produk)) {

$nmrfind=$detail->nomor-1;

$stok=KartuStok::model()-

>find(array('condition'=>"id_produk=".$detail->id_produk."and nomor=".$nmrfind));

$kartustok1=KartuStok::model()-

>find(array('condition'=>"id_produk=".$detail->id_produk."and nomor=".$detail->nomor));

}

if($detail->status==1) {

(26)

Segmen Program 0.31. Fungsi Ajax Backdate (Sambungan)

if(!empty($stok)) {

$kartustok1->stok=$stok->stok+$kartustok1-

>jumlah_masuk;if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok-

>harga_average+$kartustok1->jumlah_masuk*$kartustok1-

>harga)/($kartustok1->stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

}

$kartustok1->save();

}

else if($detail->status==2) {

if(!empty($stok)) {

$kartustok1->stok=$stok->stok-$kartustok1->jumlah_keluar;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok->harga_average-

$kartustok1->jumlah_keluar*$kartustok1->harga)/($kartustok1-

>stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

}

$kartustok1->save();

}

else if($detail->status==3) {

if(!empty($stok)) {

$kartustok1->stok=$stok->stok-$kartustok1->jumlah_keluar;

$kartustok1->harga=$stok->harga_average;

if($kartustok1->stok!=0)

$kartustok1->harga_average=$kartustok1->harga;

$gantiaktual=BahanAktual::model()-

>find(array('condition'=>"id_detail=".$detail->id_detail."and id_bahan=".$detail->id_bahan));

$gantiaktual->harga_satuan=$kartustok1->harga;

$gantiaktual->total=$gantiaktual->harga_satuan*$gantiaktual-

>jumlah;

$gantiaktual->save();

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

}

$kartustok1->save();

}

else if($detail->status==4) {

(27)

Segmen Program 0.32. Fungsi Ajax Backdate (Sambungan)

$detbahan=BahanAktual::model()-

>findAll(array('condition'=>"id_detail=".$detail->id_detail));

$counb=0;

foreach($detbahan as $detb) {

$counb+=$detb->total;

}

if(!empty($stok)) {

$kartustok1->stok=$stok->stok+$kartustok1->jumlah_masuk;

$kartustok1->harga=$counb/$kartustok1->jumlah_masuk;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok-

>harga_average+$kartustok1->jumlah_masuk*$kartustok1-

>harga)/($kartustok1->stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

}

$kartustok1->save();

}

else if($detail->status==5) {

$lihatspk=SPK::model()->find(array('condition'=>"id_spk=".$detail-

>id_spk));

if($lihatspk->status>2) {

$hargatotal=0;

$iddetail=DetailProduksi::model()-

>findAll(array('condition'=>"id_spk=".$detail->id_spk."and status=1"));

foreach($iddetail as $details) {

$bahanak=BahanAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$pegawaiak=PegawaiAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail);

$mesinak=MesinAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($bahanak as $detail) {

$hargatotal+=$detail->total;

}

foreach($mesinak as $detail) {

$hargatotal+=$detail->total;

}

foreach($pegawaiak as $detail) {

$hargatotal+=$detail->total;

} }

if(!empty($stok)) {

$kartustok1->stok=$stok->stok+$kartustok1->jumlah_masuk;

(28)

Segmen Program 0.33. Fungsi Ajax Backdate (Sambungan)

$kartustok1->harga=$hargatotal/$lihatspk->jumlah_selesai;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok-

>harga_average+$kartustok1->jumlah_masuk*$kartustok1-

>harga)/($kartustok1->stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk;

$kartustok1->harga=$hargatotal/$lihatspk->jumlah_selesai;

if($kartustok1->stok!=0)

$kartustok1->harga_average=$kartustok1->harga;

}

$kartustok1->save();

} else {

$hargabom=0;

$idbom=Produk::model()-

>find(array('condition'=>"id_produk=".$detail->id_produk));

$bombahan=DetailBahan::model()-

>findAll(array('condition'=>"id_bom=".$idbom->id_bom));

foreach($bombahan as $detail) {

$hargabahan=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$detail-

>id_bahan,'order'=>"nomor desc"));

$hargabom+=$detail->jumlah*$hargabahan->harga_average;

}

$bompegawai=DetailPegawai::model()-

>findAll(array('condition'=>"id_bom=".$idbom->id_bom));

foreach($bompegawai as $detail) {

$hargapegawai=Users::model()-

>find(array('condition'=>"username='".$detail->id_pegawai."'"));

$hargabom+=$detail->jumlah*$hargapegawai->gaji;

}

$bommesin=DetailMesin::model()-

>findAll(array('condition'=>"id_bom=".$idbom->id_bom));

foreach($bommesin as $detail) {

$hargamesin=Mesin::model()-

>find(array('condition'=>"id_mesin=".$detail->id_mesin));

$hargabom+=$detail->jumlah*$hargamesin->ongkos_pakai;

}

if(!empty($stok)) {

$kartustok1->stok=$stok->stok+$kartustok1->jumlah_masuk;

$kartustok1->harga=$hargabom;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok-

>harga_average+$kartustok1->jumlah_masuk*$kartustok1-

>harga)/($kartustok1->stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk;

(29)

Segmen Program 0.34. Fungsi Ajax Backdate (Sambungan)

$kartustok1->harga=$hargabom;

if($kartustok1->stok!=0)

$kartustok1->harga_average=$kartustok1->harga;

}

$kartustok1->save();

} }

else if($detail->status==6) {

$lihatspk=SPK::model()->find(array('condition'=>"id_spk=".$detail-

>id_spk));

if($lihatspk->status>2) {

$hargatotal=0;

$iddetail=DetailProduksi::model()-

>findAll(array('condition'=>"id_spk=".$detail->id_spk."and status=1"));

foreach($iddetail as $details) {

$bahanak=BahanAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$pegawaiak=PegawaiAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

$mesinak=MesinAktual::model()-

>findAll(array('condition'=>"id_detail=".$details->id_detail));

foreach($bahanak as $detail) {

$hargatotal+=$detail->total;

}

foreach($mesinak as $detail) {

$hargatotal+=$detail->total;

}

foreach($pegawaiak as $detail) {

$hargatotal+=$detail->total;

} }

if(!empty($stok)) {

$kartustok1->stok=$stok->stok-$kartustok1->jumlah_keluar;

$kartustok1->harga=$hargatotal/$lihatspk->jumlah_selesai;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok->harga_average-

$kartustok1->jumlah_keluar*$kartustok1->harga)/($kartustok1-

>stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_keluar;

$kartustok1->harga=$hargatotal/$lihatspk->jumlah_selesai;

if($kartustok1->stok!=0)

$kartustok1->harga_average=$kartustok1->harga;

}

$kartustok1->save();

} else

(30)

Segmen Program 0.35. Fungsi Ajax Backdate (Sambungan)

{

$hargabom=0;

$idbom=Produk::model()-

>find(array('condition'=>"id_produk=".$detail->id_produk));

$bombahan=DetailBahan::model()-

>findAll(array('condition'=>"id_bom=".$idbom->id_bom));

foreach($bombahan as $detail) {

$hargabahan=KartuStok::model()-

>find(array('condition'=>"id_bahan=".$detail->

id_bahan,'order'=>"nomor desc"));

$hargabom+=$detail->jumlah*$hargabahan->harga_average;

}

$bompegawai=DetailPegawai::model()-

>findAll(array('condition'=>"id_bom=".$idbom->id_bom));

foreach($bompegawai as $detail) {

$hargapegawai=Users::model()-

>find(array('condition'=>"username='".$detail->id_pegawai."'"));

$hargabom+=$detail->jumlah*$hargapegawai->gaji;

}

$bommesin=DetailMesin::model()-

>findAll(array('condition'=>"id_bom=".$idbom->id_bom));

foreach($bommesin as $detail) {

$hargamesin=Mesin::model()-

>find(array('condition'=>"id_mesin=".$detail->id_mesin));

$hargabom+=$detail->jumlah*$hargamesin->ongkos_pakai;

}

if(!empty($stok)) {

$kartustok1->stok=$stok->stok-$kartustok1->jumlah_keluar;

$kartustok1->harga=$hargabom;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok->harga_average-

$kartustok1->jumlah_keluar*$kartustok1->harga)/($kartustok1-

>stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_keluar;

$kartustok1->harga=$hargabom;

if($kartustok1->stok!=0)

$kartustok1->harga_average=$kartustok1->harga;

}

$kartustok1->save();

} }

else if($detail->status==7) {

if(!empty($stok)) {

$kartustok1->stok=$stok->stok-$kartustok1-

>jumlah_keluar+$kartustok1->jumlah_masuk;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok->harga_average-

$kartustok1->jumlah_keluar*$kartustok1->harga+$kartustok;

(31)

Segmen Program 0.36. Fungsi Ajax Backdate (Sambungan)

->jumlah_masuk*$kartustok1->harga)/($kartustok1->stok);

$kartustok1->save();

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

} }

else if($detail->status==8) {

if(!empty($stok)) {

$kartustok1->stok=$stok->stok-$kartustok1->jumlah_keluar;

$kartustok1->harga=$stok->harga_average;

if($kartustok1->stok!=0)

$kartustok1->harga_average=$kartustok1->harga;

$kartustok1->save();

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

} }

else if($detail->status==9) {

if(!empty($stok)) {

$kartustok1->stok=$stok->stok-$kartustok1->jumlah_keluar;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok->harga_average-

$kartustok1->jumlah_keluar*$kartustok1->harga)/($kartustok1-

>stok);

} else {

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

}

$kartustok1->save();

}

else if($detail->status==10) {

if(!empty($stok)) {

$kartustok1->stok=$stok->stok+$kartustok1->jumlah_masuk;

$hargamsk=KartuStok::model()-

>find(array('condition'=>"id_spk=".$kartustok1->id_spk."and no_sj=".$kartustok1->no_sj."and status=8"));

$kartustok1->harga=$hargamsk->harga;

if($kartustok1->stok!=0)

$kartustok1->harga_average=($stok->stok*$stok-

>harga_average+$kartustok1->jumlah_masuk*$kartustok1-

>harga)/($kartustok1->stok);

} else

(32)

Segmen Program 0.37. Fungsi Ajax Backdate (Sambungan)

{

$kartustok1->stok=$kartustok1->jumlah_masuk-$kartustok1-

>jumlah_keluar;

}

$kartustok1->save();

} }

Referensi

Dokumen terkait

Idealnya, pembangunan hukum nasional yang berlaku bagi semua warga negara tanpa memandang agama yang dipeluknya, harus dilakukan dengan hati-hati, karena di antara agama

Hasil penelitian menunjukan bahwa bioproses limbah udang windu melalui tahapan deproteinasi oleh Bacillus licheniformis dosis 4 persen selama 4 hari, dan mineralisasi oleh

Berdasarkan dari hasil studi sebelumnya “Kelayakan Penerapan Pengolahan Air Limbah Domestik Sistem Terpusat dan Lokasi Lahan Basah Buatan di Kota Kendari

Perkiraan ukuran atau berat molekul dari rantai polipeptida sampel yang diuji dapat diketahui dengan menggunakan penanda (Bench Marker Protein) yang telah diketahui berat

Pada awal berdirinya BMT BIMA bertujuan untuk membantu mengembangkan usaha kecil serta melayani kebutuhan perbankan bagi golongan ekonomi lemah yang tidak

Dalam hal terdapat perbedaan data antara DIPA Petikan dengan database RKA-K/L-DIPA Kementerian Keuangan maka yang berlaku adalah data yang terdapat di dalam database