first commit
This commit is contained in:
@@ -0,0 +1,154 @@
|
||||
<?php
|
||||
|
||||
/*******************************************************************
|
||||
|
||||
App. Name : Inventory Advanced Systems
|
||||
Module : /apps/php/repo/rekap_do.php
|
||||
Desc. : PHP - Rekap Penjualan Produk Per-DO
|
||||
Created By : Siau Pheng ([email protected]).
|
||||
Created Date : January 25th, 2024.
|
||||
|
||||
(c) 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" ) {
|
||||
$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);
|
||||
|
||||
$ahasil = []; $aprod = [];
|
||||
$db->Query("SELECT A.No_DO,A.Tgl_DO,D.InvID,SUM(D.Stok) Stok FROM (SELECT * FROM inv_jual_do WHERE Tgl_DO BETWEEN '".$tglfrom."' AND '".$tglto."') A LEFT JOIN (SELECT No_DO,No_Jual FROM inv_jual WHERE No_DO IN (SELECT No_DO FROM inv_jual_do WHERE Tgl_DO BETWEEN '".$tglfrom."' AND '".$tglto."')) J ON (J.No_DO=A.No_DO) LEFT JOIN (SELECT No_Ref,InvID,SUM(-Stok) Stok FROM inv_detail WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE No_DO IN (SELECT No_DO FROM inv_jual_do WHERE Tgl_DO BETWEEN '".$tglfrom."' AND '".$tglto."') AND InvID NOT IN (SELECT InvID FROM inv_produk WHERE Grup_InvID IN (".$_SESSION['__APP_IAS']['GRUP_PRODUK_KEMASAN'].",".$_SESSION['__APP_IAS']['GRUP_PRODUK_HADIAH']."))) GROUP BY No_Ref,InvID) D ON (D.No_Ref=J.No_Jual) GROUP BY A.No_DO,D.InvID ORDER BY A.No_DO");
|
||||
while ($db->Next()) {
|
||||
if (!$ahasil[$db->Row("No_DO")]) {
|
||||
$ahasil[$db->Row("No_DO")]['No_DO'] = $db->Row("No_DO");
|
||||
$ahasil[$db->Row("No_DO")]['Tgl_DO'] = tgl_sql2str($db->Row("Tgl_DO"));
|
||||
}
|
||||
$ahasil[$db->Row("No_DO")][$db->Row("InvID")] += $db->RowFloat("Stok", 0);
|
||||
$aprod[$db->Row("InvID")] += $db->RowFloat("Stok", 0);
|
||||
}
|
||||
|
||||
$aproduk = [];
|
||||
$db->Query("SELECT A.InvID,A.Kode_Produk,IFNULL(B.Qty,0) Qty FROM (SELECT * FROM inv_produk) A LEFT JOIN (SELECT * FROM inv_produk_kemasan WHERE SatuanID=2) B ON (B.InvID=A.InvID)");
|
||||
while ($db->Next()) {
|
||||
$aproduk[$db->Row("InvID")] = ['kode' => $db->Row("Kode_Produk"), 'kali' => $db->RowFloat("Qty", 0)];
|
||||
}
|
||||
}
|
||||
|
||||
if ( $data == "print" ) {
|
||||
Report_Header("LAPORAN REKAP DELIVERY ORDER", $tglheader);
|
||||
$pre = new PrintHTML();
|
||||
$pre->set_css("garis");
|
||||
$pre->add_field("No DO",50,"C");
|
||||
$pre->add_field("Tgl DO",30, "C");
|
||||
foreach ($aprod as $_key => $_val) {
|
||||
if ($_key == "") continue;
|
||||
$pre->add_field($aproduk[$_key]['kode'],50,"R","rupiah2");
|
||||
}
|
||||
$pre->add_field("TOTAL",50,"R","rupiah2");
|
||||
$pre->show_fields();
|
||||
|
||||
foreach ($ahasil as $_key => $_val) {
|
||||
$_tot = 0;
|
||||
$_atmp = [$_val['No_DO'], $_val['Tgl_DO']];
|
||||
foreach ($aprod as $_key2 => $_val2) {
|
||||
if ($_key2 == "") continue;
|
||||
array_push($_atmp, $_val[$_key2] / $aproduk[$_key2]['kali']);
|
||||
$_tot += $_val[$_key2] / $aproduk[$_key2]['kali'];
|
||||
}
|
||||
array_push($_atmp, $_tot);
|
||||
$pre->add_value($_atmp);
|
||||
}
|
||||
$_tot = 0;
|
||||
$_atmp = ["TOTAL", ""];
|
||||
foreach ($aprod as $_key2 => $_val2) {
|
||||
if ($_key2 == "") continue;
|
||||
array_push($_atmp, $_val2 / $aproduk[$_key2]['kali']);
|
||||
$_tot += $_val2 / $aproduk[$_key2]['kali'];
|
||||
}
|
||||
array_push($_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 REKAP DELIVERY ORDER</b>");
|
||||
$xls->add_header($tglheader);
|
||||
|
||||
$xls->add_field("No DO", 20, "C");
|
||||
$xls->add_field("Tgl DO", 15, "C");
|
||||
foreach ($aprod as $_key => $_val) {
|
||||
if ($_key == "") continue;
|
||||
$xls->add_field($aproduk[$_key]['kode'],12,"R,N");
|
||||
}
|
||||
$xls->add_field("TOTAL",12,"R,N");
|
||||
$xls->add_sheet("REKAP DO", false);
|
||||
$xls->show_headers();
|
||||
|
||||
foreach ($ahasil as $_key => $_val) {
|
||||
$_tot = 0;
|
||||
$_atmp = [$_val['No_DO'], $_val['Tgl_DO']];
|
||||
foreach ($aprod as $_key2 => $_val2) {
|
||||
if ($_key2 == "") continue;
|
||||
array_push($_atmp, $_val[$_key2] / $aproduk[$_key2]['kali']);
|
||||
$_tot += $_val[$_key2] / $aproduk[$_key2]['kali'];
|
||||
}
|
||||
array_push($_atmp, $_tot);
|
||||
$xls->add_value($_atmp);
|
||||
}
|
||||
$_tot = 0;
|
||||
$_atmp = ["TOTAL", ""];
|
||||
foreach ($aprod as $_key2 => $_val2) {
|
||||
if ($_key2 == "") continue;
|
||||
array_push($_atmp, $_val2 / $aproduk[$_key2]['kali']);
|
||||
$_tot += $_val2 / $aproduk[$_key2]['kali'];
|
||||
}
|
||||
array_push($_atmp, $_tot);
|
||||
$xls->add_value($_atmp);
|
||||
|
||||
$xls->add_stamp(1, true);
|
||||
$xls->send("Laporan Rekap Delivery Order.xlsx");
|
||||
unset($xls);
|
||||
|
||||
} else if ( $data == "default") {
|
||||
$form = new Form($db);
|
||||
$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-4 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-4 col-form-label" for="Tgl_To">Sampai Tanggal</label>
|
||||
<div class="col">'.$ttglto.'</div>
|
||||
</div>';
|
||||
}
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user