Files
ias/apps/php/repo/bonus_supir.php
T
2026-01-22 15:30:17 +07:00

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("&nbsp;",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>';
}
?>