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

183 lines
6.7 KiB
PHP

<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/repo/rekap_outlet_oli.php
Desc. : PHP - Rekap Penj. Outlet Produk Sosro & Oli
Created By : Siau Pheng ([email protected]).
Created Date : November 20th, 2014.
Last Modified : January 20th, 2024.
(c) 2014 - 2024, 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\Web\Param;
use siaupheng\fonia3\Web\Form;
use siaupheng\fonia3\Printer\PrintHTML;
use siaupheng\fonia3\Data\SimpleXLS;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
if ( $data == "print" || $data == "export" ) {
$tipe = Param::Get("Tipe", 1); // 1, 2
$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);
$sjudul = "OLI"; $tsql1 = ""; $tsql2 = "/B.Qty"; $tsql3 = "5";
if ($tipe==1) {
$sjudul = "SOSRO"; $tsql1 = " NOT"; $tsql2 = ""; $tsql3 = "3";
}
$tsql = (Param::Get("Semua",2)==1) ? " WHERE D.OutletID2 IS NOT NULL" : "";
$ahasil = []; $aprod = [];
$db->Query("SELECT O.OutletID,O.Nama_Outlet,O.Alamat_Outlet,D.* FROM (SELECT * FROM para_outlet WHERE Grup_OutletID".$tsql1." IN (14,18,19,20,21,22,23,25,26,27,28,29,30,31,32,33,34,35,36)) O LEFT JOIN (SELECT A.No_Ref,A.InvID,SUM(-A.Stok)".$tsql2." Qty,J.OutletID OutletID2,S.Nama_Pegawai Nama_Sales FROM inv_detail A LEFT JOIN inv_jual J ON (A.No_Ref=J.No_Jual) LEFT JOIN para_pegawai S ON (J.SalesID=S.PegID) LEFT JOIN inv_produk_kemasan B ON (A.InvID=B.InvID AND B.SatuanID=2) WHERE (A.Tgl_Ref BETWEEN '".$tglfrom."' AND '".$tglto."') AND A.InvID IN (SELECT InvID FROM inv_produk WHERE Grup_InvID=".$tsql3." ORDER BY Kode_Produk) AND A.NotaID=5 AND J.Rekap=1 GROUP BY A.No_Ref,A.InvID) D ON (O.OutletID=D.OutletID2)".$tsql." ORDER BY O.Nama_Outlet");
while ($db->Next()) {
if (!$ahasil[$db->Row("OutletID")]) {
$ahasil[$db->Row("OutletID")]['Nama'] = $db->Row("Nama_Outlet");
$ahasil[$db->Row("OutletID")]['Alamat'] = $db->Row("Alamat_Outlet");
$ahasil[$db->Row("OutletID")]['Sales'] = $db->Row("Nama_Sales");
}
$ahasil[$db->Row("OutletID")][$db->Row("InvID")] += $db->RowFloat("Qty", 0);
$aprod[$db->Row("InvID")] += $db->RowFloat("Qty", 0);
}
$aproduk = array();
$db->Query("SELECT InvID,Kode_Produk FROM inv_produk WHERE Grup_InvID='".$tsql3."'");
while ($db->Next()) {
$aproduk[$db->Row("InvID")] = $db->Row("Kode_Produk");
}
}
if ( $data == "print" ) {
Report_Header("LAPORAN PENJUALAN ".$sjudul, $tglheader);
$pre = new PrintHTML();
$pre->set_css("garis");
$pre->add_field("NO.",5,"C");
$pre->add_field("NAMA OUTLET",80);
$pre->add_field("ALAMAT OUTLET",100);
$pre->add_field("SALES",20);
foreach ($aprod as $_key => $_val) {
if ($_key == "") continue;
$pre->add_field($aproduk[$_key],50,"R","rupiah2");
}
$pre->add_field("TOTAL",50,"R","rupiah2");
$pre->show_fields();
$tot = 0; $no = 1;
foreach ($ahasil as $_key => $_val) {
$_tot = 0;
$_atmp = array($no, $_val['Nama'], $_val['Alamat'], $_val['Sales']);
foreach ($aprod as $_key2 => $_val2) {
if ($_key2 == "") continue;
$_atmp[] = $_val[$_key2];
$_tot += $_val[$_key2];
}
$_atmp[] = $_tot;
$pre->add_value($_atmp);
$no++;
}
$_tot = 0;
$_atmp = array("", "TOTAL", "", "");
foreach ($aprod as $_key2 => $_val2) {
if ($_key2 == "") continue;
$_atmp[] = $_val2;
$_tot += $_val2;
}
$_atmp[] = $_tot;
$pre->add_value($_atmp);
$pre->add_stamp(0, true);
$pre->show();
} else if ( $data == "export" ) {
$xls = new SimpleXLS([
'title'=>"Laporan Penjualan ".ucfirst($sjudul)."",
'subject'=>"PT.PMS",
'desc'=>"Export Data dari IAS"
]);
$xls->add_header("<b>".strtoupper($_SESSION['__WEB_APP']['REG_NAME'])."</b>");
$xls->add_header("<b>LAPORAN PENJUALAN ".$sjudul."</b>");
$xls->add_header($tglheader);
$xls->add_field("NO.", 6, "C");
$xls->add_field("NAMA OUTLET", 30, "L");
$xls->add_field("ALAMAT OUTLET", 80, "L");
$xls->add_field("SALES", 20, "L");
foreach ($aprod as $_key => $_val) {
if ($_key == "") continue;
$xls->add_field($aproduk[$_key],12,"R,N");
}
$xls->add_field("TOTAL",12,"R,N");
$xls->add_sheet("REKAP PENJUALAN ".$sjudul, false);
$xls->show_headers();
$tot = 0; $no = 1;
foreach ($ahasil as $_key => $_val) {
$_tot = 0;
$_atmp = array($no, $_val['Nama'], $_val['Alamat'], $_val['Sales']);
foreach ($aprod as $_key2 => $_val2) {
if ($_key2 == "") continue;
$_atmp[] = $_val[$_key2];
$_tot += $_val[$_key2];
}
$_atmp[] = $_tot;
$xls->add_value($_atmp);
$no++;
}
$_tot = 0;
$_atmp = array("", "TOTAL", "", "");
foreach ($aprod as $_key2 => $_val2) {
if ($_key2 == "") continue;
$_atmp[] = $_val2;
$_tot += $_val2;
}
$_atmp[] = $_tot;
$xls->add_value($_atmp);
$xls->add_stamp(1, true);
$xls->send("Laporan Penjualan ".ucfirst($sjudul).".xlsx");
unset($xls);
} else if ( $data == "default") {
$form = new Form($db);
$ttipe = $form->radio("_", "Tipe", 1, true, false, [1=>"Sosro",2=>"Oli"], null);
$tsemua = $form->radio("_", "Semua", 2, true, false, [1=>"Ya",2=>"Tidak"]);
$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">
<label class="col-sm-5 col-lg-3 col-form-label" for="Semua">Semua Outlet</label>
<div class="col">'.$tsemua.'</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>';
}
?>