114 lines
7.2 KiB
PHP
114 lines
7.2 KiB
PHP
<?php
|
|
|
|
/*******************************************************************
|
|
|
|
App. Name : Inventory Advanced Systems
|
|
Module : /apps/php/xls/jual.php
|
|
Desc. : PHP - Export XLS Penjualan
|
|
Created By : Siau Pheng ([email protected]).
|
|
Created Date : April 2rd, 2011.
|
|
Last Modified : July 5th, 2025.
|
|
|
|
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
|
|
|
|
*******************************************************************/
|
|
|
|
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
|
require_once(__DIR__."/../func/ias.php");
|
|
|
|
use siaupheng\fonia3\DB\MySQL;
|
|
use siaupheng\fonia3\DB\SQL;
|
|
use siaupheng\fonia3\Web\Param;
|
|
use siaupheng\fonia3\Web\Form;
|
|
use siaupheng\fonia3\Data\SimpleXLS;
|
|
|
|
$db = (is_resource($db)) ? $db : new MySQL();
|
|
$ajson = [];
|
|
$data = Param::Get("data");
|
|
$id_grup = Param::Get("Grup_InvID", 0);
|
|
$tgl_from = Param::Get("Tgl_From");
|
|
$tgl_to = Param::Get("Tgl_To");
|
|
|
|
if ( $data == "download" ) {
|
|
// generate report header
|
|
$tglheader = $tgl_from;
|
|
if ($tgl_from!==$tgl_to) $tglheader .= " S/D ".$tgl_to;
|
|
$tgl_from = tgl_sql2str($tgl_from);
|
|
$tgl_to = tgl_sql2str($tgl_to);
|
|
|
|
$qsql = "";
|
|
if ($id_grup > 0) {
|
|
$qsql .= " AND InvID IN (SELECT InvID FROM inv_produk WHERE Grup_InvID='".$id_grup."')";
|
|
} else {
|
|
$qsql .= " AND InvID IN (SELECT InvID FROM inv_produk WHERE Grup_InvID NOT IN ('".$_SESSION['__APP_IAS']['GRUP_PRODUK_KEMASAN']."','".$_SESSION['__APP_IAS']['GRUP_PRODUK_HADIAH']."'))";
|
|
}
|
|
|
|
$db->Query("SELECT D.*,J.*,CONCAT(P.Nama_Produk,_latin1' ',S.Nama_Satuan) Nama_Produk,IFNULL(R.Nama_Rasa,'') Rasa,OG.Nama_Grup Grup_Outlet,PG.Nama_Grup Grup_Produk,O.Nama_Outlet,CONCAT(O.Alamat_Outlet,_latin1', ',O.Kota_Outlet) Alamat_Outlet,PS.Nama_Pegawai Nama_Sales,PO.Nama_Pegawai Nama_Supir,Nama_Picker(J.A_Picker) Nama_Picker FROM (SELECT No_Ref,InvID,RasaID,SatuanID,-Qty Qty,Harga_Jual,Total_Diskon,(-Qty*Harga_Jual)-Total_Diskon Jumlah FROM inv_detail WHERE NotaID=5 AND (Tgl_Ref BETWEEN '".$tgl_from."' AND '".$tgl_to."')".$qsql.") D LEFT JOIN (SELECT No_Jual,No_Faktur,No_DO,Tgl_Jual,Tgl_Lunas,OutletID,SalesID,HelperID,SupirID,A_Picker,CK,IF(Rekap=1,'Antar','Belum Antar') Status_Order,Catatan FROM inv_jual WHERE Tgl_Jual BETWEEN '".$tgl_from."' AND '".$tgl_to."') J ON (J.No_Jual=D.No_Ref) LEFT JOIN para_outlet O ON (O.OutletID=J.OutletID) LEFT JOIN para_outlet_grup OG ON (OG.Grup_OutletID=O.Grup_OutletID) LEFT JOIN inv_produk P ON (P.InvID=D.InvID) LEFT JOIN inv_produk_grup PG ON (PG.Grup_InvID=P.Grup_InvID) LEFT JOIN para_satuan S ON (S.SatuanID=D.SatuanID) LEFT JOIN para_rasa R ON (R.RasaID=D.RasaID) LEFT JOIN para_pegawai PS ON (J.SalesID=PS.PegID) LEFT JOIN para_pegawai PO ON (J.SupirID=PO.PegID) ORDER BY J.Tgl_Jual,J.No_Jual,P.Nama_Produk");
|
|
|
|
/* QUERY MANUAL
|
|
SELECT DATE_FORMAT(J.Tgl_Jual,'%d-%m-%Y'), DATE_FORMAT(J.Tgl_Lunas,'%d-%m-%Y'), J.No_Jual, J.No_Faktur, J.No_DO, PS.Nama_Pegawai, OG.Nama_Grup, O.Nama_Outlet, CONCAT(O.Alamat_Outlet,_latin1', ',O.Kota_Outlet), CONCAT(P.Nama_Produk,_latin1' ',S.Nama_Satuan), IFNULL(R.Nama_Rasa,''), round(Qty,2), round(Harga_Jual,2), round(Total_Diskon,2), round(Jumlah,2), PG.Nama_Grup, Status_Order, CK, PO.Nama_Pegawai, Nama_Picker(J.A_Picker), Catatan FROM (SELECT No_Ref,InvID,RasaID,SatuanID,-Qty Qty,Harga_Jual,Total_Diskon,(-Qty*Harga_Jual)-Total_Diskon Jumlah FROM inv_detail WHERE NotaID=5 AND (Tgl_Ref BETWEEN '2024-01-01' AND '2024-12-31') AND InvID IN (SELECT InvID FROM inv_produk WHERE Grup_InvID=3)) D LEFT JOIN (SELECT No_Jual,No_Faktur,No_DO,Tgl_Jual,Tgl_Lunas,OutletID,SalesID,HelperID,SupirID,A_Picker,CK,IF(Rekap=1,'Antar','Belum Antar') Status_Order,Catatan FROM inv_jual WHERE Tgl_Jual BETWEEN '2024-01-01' AND '2024-12-31') J ON (J.No_Jual=D.No_Ref) LEFT JOIN para_outlet O ON (O.OutletID=J.OutletID) LEFT JOIN para_outlet_grup OG ON (OG.Grup_OutletID=O.Grup_OutletID) LEFT JOIN inv_produk P ON (P.InvID=D.InvID) LEFT JOIN inv_produk_grup PG ON (PG.Grup_InvID=P.Grup_InvID) LEFT JOIN para_satuan S ON (S.SatuanID=D.SatuanID) LEFT JOIN para_rasa R ON (R.RasaID=D.RasaID) LEFT JOIN para_pegawai PS ON (J.SalesID=PS.PegID) LEFT JOIN para_pegawai PO ON (J.SupirID=PO.PegID) ORDER BY J.Tgl_Jual,J.No_Jual,P.Nama_Produk
|
|
*/
|
|
|
|
$xls = new SimpleXLS([
|
|
'title'=>"Data Penjualan",
|
|
'subject'=>"PT.PMS",
|
|
'desc'=>"Export Data Penjualan dari IAS"
|
|
]);
|
|
$xls->add_span(["<b>".strtoupper($_SESSION['__WEB_APP']['REG_NAME'])."</b>",1]);
|
|
$xls->add_span(["<b>DATA DETAIL PENJUALAN PRODUK</b>",1]);
|
|
$xls->add_span(["Periode : ".$tglheader,1]);
|
|
|
|
$xls->add_field("TANGGAL NOTA", 12, "C", "tgl_sql2str");
|
|
$xls->add_field("TANGGAL LUNAS", 12, "C", "tgl_sql2str");
|
|
$xls->add_field("NO. NOTA", 12, "C");
|
|
$xls->add_field("NO. FAKTUR", 12, "L");
|
|
$xls->add_field("NO. DO", 12, "C");
|
|
$xls->add_field("NAMA SALES", 12, "L");
|
|
$xls->add_field("GRUP OUTLET", 12, "L");
|
|
$xls->add_field("NAMA OUTLET", 15, "L");
|
|
$xls->add_field("ALAMAT OUTLET", 25, "L");
|
|
$xls->add_field("NAMA PRODUK", 45, "L");
|
|
$xls->add_field("VARIAN / RASA", 15, "L");
|
|
$xls->add_field("QTY", 15, "R,N");
|
|
$xls->add_field("HARGA SATUAN", 15, "R,N");
|
|
$xls->add_field("DISKON", 15, "R,N");
|
|
$xls->add_field("TOTAL", 15, "R,N");
|
|
$xls->add_field("GRUP PRODUK", 15, "L");
|
|
$xls->add_field("STATUS ORDER", 10, "L");
|
|
$xls->add_field("C / K", 5, "L");
|
|
$xls->add_field("NAMA SUPIR", 12, "L");
|
|
$xls->add_field("NAMA PICKER", 12, "L");
|
|
$xls->add_field("CATATAN", 12, "L");
|
|
$xls->add_sheet("".str_replace("S/D","-",$tglheader), true);
|
|
//$xls->show_headers();
|
|
|
|
while ($db->Next()) {
|
|
$xls->add_value($db->Row("Tgl_Jual"), $db->Row("Tgl_Lunas"), $db->Row("No_Jual"), $db->Row("No_Faktur"), $db->Row("No_DO"), $db->Row("Nama_Sales"), $db->Row("Grup_Outlet"), $db->Row("Nama_Outlet"), $db->Row("Alamat_Outlet"), $db->Row("Nama_Produk"), $db->Row("Rasa"), $db->RowFloat("Qty"), $db->RowFloat("Harga_Jual"), $db->RowFloat("Total_Diskon"), $db->RowFloat("Jumlah"), $db->Row("Grup_Produk"), $db->Row("Status_Order"), $db->Row("CK"), $db->Row("Nama_Supir"), $db->Row("Nama_Picker"), $db->Row("Catatan"));
|
|
}
|
|
$xls->add_stamp(1, true);
|
|
$xls->send("Data Penjualan Produk ".str_replace("S/D","-",$tglheader).".xlsx");
|
|
unset($xls);
|
|
|
|
} else if ( $data == "default") {
|
|
$form = new Form($db);
|
|
$tgrup = $form->option_db("_", "Grup_InvID", 0, true, false, "inv_produk_grup", ["Grup_InvID","Nama_Grup"], "Grup_InvID NOT IN ('".$_SESSION['__APP_IAS']['GRUP_PRODUK_KEMASAN']."','".$_SESSION['__APP_IAS']['GRUP_PRODUK_HADIAH']."') ORDER BY Nama_Grup", [0,"SEMUA GRUP PRODUK"]);
|
|
$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="Grup_InvID">Grup Produk</label>
|
|
<div class="col">'.$tgrup.'</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>';
|
|
}
|
|
|
|
send_json($ajson);
|
|
?>
|