137 lines
6.8 KiB
PHP
137 lines
6.8 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
App. Name : Inventory Advanced Systems
|
|
Module : /apps/php/repo/bonus_supir.php
|
|
Desc. : PHP - Laporan Bonus Penjualan Supir
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : June 8th, 2011.
|
|
Last Modified : July 10th, 2021.
|
|
|
|
(c) 2011 - 2021, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
|
require_once(__DIR__."/../func/ias.php");
|
|
require_once(__DIR__."/../func/report.php");
|
|
|
|
use siaupheng\fonia3\DB\MySQL;
|
|
use siaupheng\fonia3\DB\SQL;
|
|
use siaupheng\fonia3\Web\Param;
|
|
use siaupheng\fonia3\Web\Table;
|
|
use siaupheng\fonia3\Web\Form;
|
|
use siaupheng\fonia3\Printer\PrintHTML;
|
|
|
|
$db = (is_resource($db)) ? $db : new MySQL();
|
|
$ajson = [];
|
|
$data = Param::Get("data");
|
|
|
|
if ( $data == "print" || $data == "export" ) {
|
|
$tipe = Param::Get("Tipe"); // R or D
|
|
$tglfrom = Param::Get("Tgl_From");
|
|
$tglto = Param::Get("Tgl_To");
|
|
|
|
// generate report header
|
|
$tglheader = "Periode : ".$tglfrom;
|
|
if ($tglfrom!==$tglto) $tglheader .= " S/D ".$tglto;
|
|
$tglfrom = tgl_sql2str($tglfrom);
|
|
$tglto = tgl_sql2str($tglto);
|
|
|
|
$tsql = " AND P.Grup_InvID<>".$_SESSION['__APP_IAS']['GRUP_PRODUK_KEMASAN']." AND P.Grup_InvID<>".$_SESSION['__APP_IAS']['GRUP_PRODUK_HADIAH'];
|
|
|
|
if ($tipe=="R") {
|
|
$db->Query("SELECT D.PegID,S.Nama_Satuan,SUM(D.Qty) Qty,G.Nama_Pegawai FROM (SELECT D.InvID,D.SatuanID,SUM(IFNULL(-D.Qty/D.Person,0)) Qty,SUBSTRING_INDEX(SUBSTRING_INDEX(D.Picker2,',',P.PegID),',',-1) PegID FROM para_pegawai P INNER JOIN (SELECT A.*,IF(B.SupirID>0,1,0)+IF(B.A_Picker='0',0,LENGTH(B.A_Picker)-LENGTH(REPLACE(B.A_Picker,',',''))+1) Person,CONCAT(B.SupirID,',',B.A_Picker) Picker2 FROM (SELECT * FROM inv_detail USE INDEX (NO_REF) WHERE (Tgl_Ref BETWEEN '".$tglfrom."' AND '".$tglto."') AND Promo=0) A LEFT JOIN (SELECT * FROM inv_jual WHERE (Tgl_Jual BETWEEN '".$tglfrom."' AND '".$tglto."') AND Rekap=1 AND SupirID>0) B ON (A.No_Ref=B.No_Jual)) D ON (CHAR_LENGTH(D.Picker2)-CHAR_LENGTH(REPLACE(D.Picker2,',',''))>=P.PegID-1) GROUP BY D.InvID,D.SatuanID,SUBSTRING_INDEX(SUBSTRING_INDEX(D.Picker2,',',P.PegID),',',-1)) D LEFT JOIN inv_produk P ON (P.InvID=D.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=D.SatuanID) LEFT JOIN para_pegawai G ON (G.PegID=D.PegID) WHERE D.PegID>0".$tsql." GROUP BY D.PegID,D.SatuanID ORDER BY G.Nama_Pegawai");
|
|
} else {
|
|
$db->Query("SELECT D.PegID,P.Nama_Produk,S.Nama_Satuan,SUM(D.Qty) Qty,G.Nama_Pegawai FROM (SELECT D.InvID,D.SatuanID,SUM(IFNULL(-D.Qty/D.Person,0)) Qty,SUBSTRING_INDEX(SUBSTRING_INDEX(D.Picker2,',',P.PegID),',',-1) PegID FROM para_pegawai P INNER JOIN (SELECT A.*,IF(B.SupirID>0,1,0)+IF(B.A_Picker='0',0,LENGTH(B.A_Picker)-LENGTH(REPLACE(B.A_Picker,',',''))+1) Person,CONCAT(B.SupirID,',',B.A_Picker) Picker2 FROM (SELECT * FROM inv_detail USE INDEX (NO_REF) WHERE (Tgl_Ref BETWEEN '".$tglfrom."' AND '".$tglto."') AND Promo=0) A LEFT JOIN (SELECT * FROM inv_jual WHERE (Tgl_Jual BETWEEN '".$tglfrom."' AND '".$tglto."') AND Rekap=1 AND SupirID>0) B ON (A.No_Ref=B.No_Jual)) D ON (CHAR_LENGTH(D.Picker2)-CHAR_LENGTH(REPLACE(D.Picker2,',',''))>=P.PegID-1) GROUP BY D.InvID,D.SatuanID,SUBSTRING_INDEX(SUBSTRING_INDEX(D.Picker2,',',P.PegID),',',-1)) D LEFT JOIN inv_produk P ON (P.InvID=D.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=D.SatuanID) LEFT JOIN para_pegawai G ON (G.PegID=D.PegID) WHERE D.PegID>0".$tsql." GROUP BY D.PegID,D.InvID,D.SatuanID ORDER BY D.PegID");
|
|
}
|
|
}
|
|
|
|
if ( $data == "print" ) {
|
|
Report_Header("LAPORAN ".($tipe=="R"?"REKAP":"DETAIL")." BONUS PENJUALAN SUPIR & PICKER", $tglheader);
|
|
$pre = new PrintHTML();
|
|
$pre->set_css("garis");
|
|
|
|
if ($tipe=="R") {
|
|
$pre->add_field("NO.", 40, "C", "uang");
|
|
$pre->add_field("NAMA SUPIR / PICKER", 200);
|
|
$pre->add_field("JUMLAH", 100);
|
|
$pre->show_fields();
|
|
|
|
$nomor = 1; $arekap = array();
|
|
while ($db->Next()) {
|
|
$arekap[$db->Row("Nama_Pegawai")][$db->Row("Nama_Satuan")] += $db->Row("Qty");
|
|
}
|
|
foreach ($arekap as $nama => $ket) {
|
|
$ket_tot = "";
|
|
foreach ($ket as $key => $val) {
|
|
if ($val > 0) $ket_tot .= " / ".uang($val,2)." ".strtoupper($key);
|
|
}
|
|
$ket_tot = substr($ket_tot, 3);
|
|
$pre->add_value( $nomor, $nama, $ket_tot );
|
|
$nomor++;
|
|
}
|
|
|
|
} else {
|
|
$pre->add_field("NO.", 40, "C", "uang");
|
|
$pre->add_field("NAMA PRODUK", 320);
|
|
$pre->add_field("QTY", 60, "R");
|
|
$pre->add_field("SATUAN", 80);
|
|
|
|
$nomor = 1; $supir = ""; $atot = array();
|
|
while ($db->Next()) {
|
|
if ($supir <> $db->Row("PegID")) {
|
|
if ($supir <> "") {
|
|
$ket_tot = "";
|
|
foreach ($atot as $key => $val) {
|
|
if ($val > 0) $ket_tot .= " / ".uang($val,2)." ".strtoupper($key);
|
|
}
|
|
$atot = array();
|
|
$ket_tot = substr($ket_tot, 3);
|
|
$pre->add_span(array("TOTAL BONUS : ".$ket_tot,4,"C,B"));
|
|
$pre->add_span(array(" ",4,"L,NB"));
|
|
$nomor = 1;
|
|
}
|
|
$pre->add_span(array("Nama Supir / Picker : ".$db->Row("Nama_Pegawai"),4,"L"));
|
|
$pre->show_fields();
|
|
}
|
|
$pre->add_value( $nomor, $db->Row("Nama_Produk"), uang($db->Row("Qty"),2), $db->Row("Nama_Satuan") );
|
|
$supir = $db->Row("PegID");
|
|
$atot[$db->Row("Nama_Satuan")] += $db->Row("Qty");
|
|
$nomor++;
|
|
}
|
|
$ket_tot = "";
|
|
foreach ($atot as $key => $val) {
|
|
if ($val > 0) $ket_tot .= " / ".uang($val,2)." ".strtoupper($key);
|
|
}
|
|
$ket_tot = substr($ket_tot, 3);
|
|
$pre->add_span(array("TOTAL BONUS : ".$ket_tot,4,"C,B"));
|
|
}
|
|
$pre->add_stamp(1, true);
|
|
$pre->show();
|
|
|
|
} else if ( $data == "default") {
|
|
$form = new Form($db);
|
|
$ttipe = $form->radio("_", "Tipe", "R", true, false, ["R"=>"Rekap","D"=>"Detail"]);
|
|
$ttglfrom = $form->datebox("_", "Tgl_From", tgl_ymd(), true, false);
|
|
$ttglto = $form->datebox("_", "Tgl_To", tgl_ymd(), true, false);
|
|
echo '
|
|
<div class="row mb-1">
|
|
<label class="col-sm-5 col-lg-3 col-form-label" for="Tipe">Tipe Laporan</label>
|
|
<div class="col">'.$ttipe.'</div>
|
|
</div>
|
|
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
|
|
<div class="row mb-1">
|
|
<label class="col-sm-5 col-lg-3 col-form-label" for="Tgl_From">Dari Tanggal</label>
|
|
<div class="col">'.$ttglfrom.'</div>
|
|
</div>
|
|
<div class="row mb-1">
|
|
<label class="col-sm-5 col-lg-3 col-form-label" for="Tgl_To">Sampai Tanggal</label>
|
|
<div class="col">'.$ttglto.'</div>
|
|
</div>';
|
|
|
|
}
|
|
|
|
?>
|