first commit
This commit is contained in:
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
/*******************************************************************
|
||||
|
||||
App. Name : Inventory Advanced Systems
|
||||
Module : /apps/php/repo/jual.php
|
||||
Desc. : PHP - Laporan Penjualan
|
||||
Created By : Siau Pheng ([email protected]).
|
||||
Created Date : April 12th, 2011.
|
||||
Last Modified : February 4th, 2024.
|
||||
|
||||
(c) 2011 - 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\DB\SQL;
|
||||
use siaupheng\fonia3\Web\Param;
|
||||
use siaupheng\fonia3\Web\Table;
|
||||
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"); // R or D
|
||||
$rekap = Param::Get("Rekap"); // X, 1, 0
|
||||
$ck = Param::Get("CK", "X");
|
||||
$id_outlet = Param::Get("OutletID", 0);
|
||||
$id_sales = Param::Get("SalesID", "SEMUA");
|
||||
$id_grup = Param::Get("Grup_InvID");
|
||||
$tglfrom = Param::Get("Tgl_From");
|
||||
$tglto = Param::Get("Tgl_To");
|
||||
$aoutlet = []; $agroup = []; $asales = [];
|
||||
if ($id_outlet > 0) {
|
||||
$db->Query("SELECT * FROM para_outlet WHERE OutletID='".$id_outlet."' LIMIT 1");
|
||||
if ($db->Next()) $aoutlet = $db->AllRow();
|
||||
}
|
||||
if ($id_grup > 0) {
|
||||
$db->Query("SELECT * FROM inv_produk_grup WHERE Grup_InvID='".$id_grup."' LIMIT 1");
|
||||
if ($db->Next()) $agroup = $db->AllRow();
|
||||
}
|
||||
if (!in_array($id_sales, [0,"NON","SEMUA"])) {
|
||||
$db->Query("SELECT Nama_Pegawai Nama_Sales FROM para_pegawai WHERE PegID='".$id_sales."' LIMIT 1");
|
||||
if ($db->Next()) $asales = $db->AllRow();
|
||||
}
|
||||
if ($id_sales=="NON") $asales['Nama_Sales'] = "TANPA SALES";
|
||||
|
||||
// generate report header
|
||||
$tglheader = "Periode : ".$tglfrom;
|
||||
if ($tglfrom!==$tglto) $tglheader .= " s/d ".$tglto;
|
||||
$tglfrom = tgl_sql2str($tglfrom);
|
||||
$tglto = tgl_sql2str($tglto);
|
||||
|
||||
$tsql = ($id_outlet>0) ? " AND OutletID='".$id_outlet."'" : "";
|
||||
$tsql .= (!in_array($id_sales, [0,"NON","SEMUA"])) ? " AND SalesID='".$id_sales."'" : "";
|
||||
$tsql .= ($id_sales=="NON") ? " AND SalesID=0" : "";
|
||||
$tsql .= ($rekap<>"X") ? " AND Rekap='".intval($rekap)."'" : "";
|
||||
$tsql .= ($ck=="X") ? "" : ($ck=="C" ? " AND (Tgl_Jual=Tgl_JT OR Tgl_JT='0000-00-00')" : " AND (Tgl_Jual<>Tgl_JT AND Tgl_JT<>'0000-00-00')");
|
||||
|
||||
if ($tipe=="R") {
|
||||
$db->Query("SELECT J.*,O.Nama_Outlet FROM (SELECT OutletID,SUM(Total_Jual) Total_Jual,SUM(Total_Diskon) Total_Diskon,SUM(Total_Jual-Total_Diskon) Total FROM inv_jual WHERE Data_Jual=1 AND (Tgl_Jual BETWEEN '".$tglfrom."' AND '".$tglto."')".$tsql." GROUP BY OutletID) J LEFT JOIN para_outlet O ON (J.OutletID=O.OutletID) ORDER BY O.Nama_Outlet");
|
||||
} else {
|
||||
$tgrup = ($id_grup>0) ? " AND InvID IN (SELECT InvID FROM inv_produk WHERE Grup_InvID='".$id_grup."')" : "";
|
||||
$db->Query("SELECT J.*,D.*,O.Nama_Outlet,S.Nama_Pegawai FROM (SELECT No_Jual,OutletID,SalesID,Tgl_Jual,DATE_FORMAT(Tgl_Jual,'%d-%m-%Y') Tgl_Jual2,Tgl_Lunas,DATE_FORMAT(Tgl_Lunas,'%d-%m-%Y') Tgl_Lunas2,IF(Tgl_Jual=Tgl_JT OR Tgl_JT='0000-00-00','C','K') CK,No_Faktur,Catatan FROM inv_jual WHERE Data_Jual=1 AND (Tgl_Jual BETWEEN '".$tglfrom."' AND '".$tglto."')".$tsql.") J LEFT JOIN (SELECT No_Ref,SUM(-Qty*Harga_Jual) Total_Jual,SUM(Total_Diskon) Total_Diskon FROM inv_detail WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE Data_Jual=1 AND (Tgl_Jual BETWEEN '".$tglfrom."' AND '".$tglto."')".$tsql.")".$tgrup." GROUP BY No_Ref) D ON (D.No_Ref=J.No_Jual) LEFT JOIN para_outlet O ON (J.OutletID=O.OutletID) LEFT JOIN para_pegawai S ON (S.PegID=J.SalesID) WHERE D.Total_Jual<>0 ORDER BY J.No_Jual");
|
||||
}
|
||||
}
|
||||
|
||||
if ( $data == "print" ) {
|
||||
Report_Header("LAPORAN ".($tipe=="R"?"REKAP":"DETAIL")." PENJUALAN", $tglheader);
|
||||
$pre = new PrintHTML();
|
||||
$pre->set_css("garis");
|
||||
|
||||
if ($tipe=="R") {
|
||||
if ($id_outlet>0) echo "Nama Outlet : ".$aoutlet['Nama_Outlet']."<br>";
|
||||
if ($id_sales>0 || $id_sales=="NON") echo "Nama Sales : ".$asales['Nama_Sales']."<br>";
|
||||
|
||||
$pre->add_field("NO.",10,"C");
|
||||
$pre->add_field("NAMA OUTLET",80);
|
||||
$pre->add_field("SUB. TOTAL",20,"R","rupiah");
|
||||
$pre->add_field("DISKON",20,"R","rupiah");
|
||||
$pre->add_field("TOTAL",20,"R","rupiah");
|
||||
$pre->show_fields();
|
||||
|
||||
$subtotal = 0; $diskon = 0; $nomor = 0;
|
||||
while ($db->Next()) {
|
||||
$subtotal += $db->Row("Total_Jual");
|
||||
$diskon += $db->Row("Total_Diskon");
|
||||
$pre->add_value(++$nomor, $db->Row("Nama_Outlet"), $db->Row("Total_Jual"), $db->Row("Total_Diskon"), $db->Row("Total"));
|
||||
}
|
||||
$pre->add_span(array(""),array("GRAND TOTAL",1,"L,B"),array($subtotal,1,"R,B","rupiah"),array($diskon,1,"R,B","rupiah"),array($subtotal-$diskon,1,"R,B","rupiah"));
|
||||
|
||||
} else {
|
||||
if ($id_outlet>0) echo "Nama Outlet : ".$aoutlet['Nama_Outlet']."<br>";
|
||||
if ($id_sales>0 || $id_sales=="NON") echo "Nama Sales : ".$asales['Nama_Sales']."<br>";
|
||||
if ($id_grup>0) echo "Nama Grup Produk : ".$agroup['Nama_Grup']."<br>";
|
||||
|
||||
$pre->add_field("No. Nota",10,"C");
|
||||
$pre->add_field("Tgl. Nota",10,"C");
|
||||
$pre->add_field("Tgl. Lunas",10,"C");
|
||||
$pre->add_field("No. Faktur",10);
|
||||
$pre->add_field("Nama Outlet",80);
|
||||
$pre->add_field("Nama Sales",30);
|
||||
$pre->add_field("Sub. Total",20,"R","rupiah");
|
||||
$pre->add_field("Diskon",20,"R","rupiah");
|
||||
$pre->add_field("Total",20,"R","rupiah");
|
||||
$pre->add_field("C/K", 6, "C");
|
||||
$pre->add_field("Catatan", 30);
|
||||
$pre->show_fields();
|
||||
|
||||
$subtotal = 0; $diskon = 0;
|
||||
while ($db->Next()) {
|
||||
$subtotal += $db->Row("Total_Jual");
|
||||
$diskon += $db->Row("Total_Diskon");
|
||||
$pre->add_value($db->Row("No_Jual"), $db->Row("Tgl_Jual2"), $db->Row("Tgl_Lunas2"), $db->Row("No_Faktur"), $db->Row("Nama_Outlet"), $db->Row("Nama_Pegawai"), $db->Row("Total_Jual"), $db->Row("Total_Diskon"), $db->Row("Total_Jual")-$db->Row("Total_Diskon"), $db->Row("CK"), $db->Row("Catatan"));
|
||||
}
|
||||
$pre->add_span(array("",2),array("GRAND TOTAL",4,"L,B"),array($subtotal,1,"R,B","rupiah"),array($diskon,1,"R,B","rupiah"),array($subtotal-$diskon,1,"R,B","rupiah"), array("",1), array("",1));
|
||||
}
|
||||
$pre->add_stamp(1, true);
|
||||
$pre->show();
|
||||
|
||||
} else if ( $data == "export" ) {
|
||||
$xls = new SimpleXLS([
|
||||
'title'=>"Laporan ".($tipe=="R"?"Rekap":"Detail")." Penjualan",
|
||||
'subject'=>"PT.PMS",
|
||||
'desc'=>"Export Data dari IAS"
|
||||
]);
|
||||
$xls->add_header("<b>".strtoupper($_SESSION['__WEB_APP']['REG_NAME'])."</b>");
|
||||
$xls->add_header("<b>LAPORAN ".($tipe=="R"?"REKAP":"DETAIL")." PENJUALAN</b>");
|
||||
$xls->add_header($tglheader);
|
||||
|
||||
if ($tipe=="R") {
|
||||
$xls->add_field("NO.", 10, "C");
|
||||
$xls->add_field("NAMA OUTLET", 80, "L");
|
||||
$xls->add_field("SUB. TOTAL", 20, "R,N");
|
||||
$xls->add_field("DISKON", 20, "R,N");
|
||||
$xls->add_field("TOTAL", 20, "R,N");
|
||||
$xls->add_sheet("REKAP PENJUALAN", false);
|
||||
|
||||
if ($id_outlet>0) $xls->add_span(["Nama Outlet",2,"L"],[$aoutlet['Nama_Outlet'],3]);
|
||||
if ($id_sales>0 || $id_sales=="NON") $xls->add_span(["Nama Sales",2,"L"],[$asales['Nama_Sales'],3]);
|
||||
$xls->show_headers();
|
||||
|
||||
$subtotal = 0; $diskon = 0; $nomor = 0;
|
||||
while ($db->Next()) {
|
||||
$nomor++;
|
||||
$subtotal += $db->RowFloat("Total_Jual");
|
||||
$diskon += $db->RowFloat("Total_Diskon");
|
||||
$xls->add_value($nomor, $db->Row("Nama_Outlet"), $db->RowFloat("Total_Jual"), $db->RowFloat("Total_Diskon"), $db->RowFloat("Total"));
|
||||
}
|
||||
$xls->add_span(["GRAND TOTAL",2,"C,B"],[$subtotal,1,"R,B,N"],[$diskon,1,"R,B,N"],[$subtotal-$diskon,1,"R,B,N"]);
|
||||
|
||||
} else {
|
||||
$xls->add_field("NO. NOTA", 12, "C");
|
||||
$xls->add_field("TGL. NOTA", 12, "C");
|
||||
$xls->add_field("TGL. LUNAS", 12, "C");
|
||||
$xls->add_field("NO. FAKTUR", 12, "L");
|
||||
$xls->add_field("NAMA OUTLET", 60, "L");
|
||||
$xls->add_field("NAMA SALES", 20, "L");
|
||||
$xls->add_field("SUB. TOTAL", 20, "R,N");
|
||||
$xls->add_field("DISKON", 20, "R,N");
|
||||
$xls->add_field("TOTAL", 20, "R,N");
|
||||
$xls->add_field("C/K", 4, "C");
|
||||
$xls->add_field("CATATAN", 20, "L");
|
||||
$xls->add_sheet("DETAIL PENJUALAN", false);
|
||||
|
||||
if ($id_outlet>0) $xls->add_span(["Nama Outlet",3,"L"],[$aoutlet['Nama_Outlet'],8]);
|
||||
if ($id_sales>0 || $id_sales=="NON") $xls->add_span(["Nama Sales",3,"L"],[$asales['Nama_Sales'],8]);
|
||||
if ($id_grup>0) $xls->add_span(["Nama Grup Produk",3,"L"],[$agroup['Nama_Grup'],8]);
|
||||
$xls->show_headers();
|
||||
|
||||
$subtotal = 0; $diskon = 0;
|
||||
while ($db->Next()) {
|
||||
$subtotal += $db->RowFloat("Total_Jual");
|
||||
$diskon += $db->RowFloat("Total_Diskon");
|
||||
$xls->add_value($db->Row("No_Jual"), $db->Row("Tgl_Jual"), ($db->Row("Tgl_Lunas")=="0000-00-00"?"":$db->Row("Tgl_Lunas")), $db->Row("No_Faktur"), $db->Row("Nama_Outlet"), $db->Row("Nama_Pegawai"), $db->RowFloat("Total_Jual"), $db->RowFloat("Total_Diskon"), $db->RowFloat("Total_Jual")-$db->RowFloat("Total_Diskon"), $db->Row("CK"), $db->Row("Catatan"));
|
||||
}
|
||||
$xls->add_span(["GRAND TOTAL",6,"C,B"],[$subtotal,1,"R,B,N"],[$diskon,1,"R,B,N"],[$subtotal-$diskon,1,"R,B,N"],[""],[""]);
|
||||
}
|
||||
$xls->add_stamp(1, true);
|
||||
$xls->send("Laporan Penjualan.xlsx");
|
||||
unset($xls);
|
||||
|
||||
} else if ( $data == "brow-outlet" ) {
|
||||
$tcari = trim(Param::Get("Cari_Outlet"));
|
||||
$tsql = ($tcari=="") ? " LIMIT 100" : " AND CONCAT(Nama_Outlet,Telp_Outlet,Nama_Outlet) LIKE '%".$tcari."%'";
|
||||
|
||||
$obj = new Table($db);
|
||||
$obj->set_query("SELECT * FROM vi_para_outlet WHERE Aktif=1".$tsql);
|
||||
$obj->add_field("OutletID", "ID", "hid");
|
||||
$obj->add_field("Kode_Outlet", "Kode", "c");
|
||||
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
|
||||
$obj->add_field("Alamat_Kota", "Alamat & Kota", "awr");
|
||||
$obj->set_field_order("Nama_Outlet", "A");
|
||||
$obj->add_row_btn("save", "Pilih", "RepoJualJS.outlet_select");
|
||||
$obj->set_func_navi("RepoJualJS.data_query('brow-outlet')");
|
||||
$ajson[] = $obj->json_table("divBrowOutlet");
|
||||
|
||||
} else if ( $data == "auto-outlet" ) {
|
||||
$tcari = Param::Get("Auto_Query");
|
||||
$ajson['autodata'] = [['value' => 0, 'text' => "SEMUA OUTLET", 'data' => ""]];
|
||||
if (is_string($tcari) && strlen($tcari) < 64) {
|
||||
$db->Query("SELECT * FROM vi_para_outlet WHERE Aktif=1 AND CONCAT(Nama_Outlet,Alamat_Outlet) LIKE '%".$tcari."%' ORDER BY Nama_Outlet LIMIT 50");
|
||||
while ($db->Next()) {
|
||||
$ajson['autodata'][] = ['value'=>$db->Row("OutletID"), 'text'=>$db->Row("Nama_Alamat"), 'data'=>$db->Row("Alamat_Kota")];
|
||||
}
|
||||
}
|
||||
|
||||
} else if ( $data == "default") {
|
||||
$asales = ['SEMUA' => "SEMUA SALES", 'NON' => "TANPA-SALES"];
|
||||
$db->Query("SELECT PegID,Nama_Pegawai FROM para_pegawai WHERE Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_SALES']."' ORDER BY Nama_Pegawai");
|
||||
while ($db->Next()){
|
||||
$asales[$db->Row("PegID")] = $db->Row("Nama_Pegawai");
|
||||
}
|
||||
|
||||
$form = new Form($db);
|
||||
$ttipe = $form->radio("_", "Tipe", "R", true, false, ["R"=>"Rekap","D"=>"Detail"], null, "RepoJualJS.oc_Tipe();");
|
||||
$trekap = $form->radio("_", "Rekap", "X", true, false, ["1"=>"Antar","0"=>"Belum Antar","X"=>"Semua"]);
|
||||
$tck = $form->radio("_", "CK", "X", true, false, ["C"=>"Cash","K"=>"Kredit","X"=>"Semua"]);
|
||||
$toutlet = $form->textauto("_", "Nama_Outlet", ['value'=>0,'text'=>"SEMUA OUTLET"], true, false);
|
||||
$tsales = $form->option("_", "SalesID", "SEMUA", true, false, $asales);
|
||||
$tgrup = $form->option_db("_", "Grup_InvID", 0, true, false, "inv_produk_grup", ["Grup_InvID","Nama_Grup"], "TRUE ORDER BY Nama_Grup", [0,"SEMUA GRUP"]);
|
||||
$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="Rekap">Status Order</label>
|
||||
<div class="col">'.$trekap.'</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-5 col-lg-3 col-form-label" for="CK">Status Bayar</label>
|
||||
<div class="col">'.$tck.'</div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-5 col-lg-3 col-form-label" for="Nama_Outlet">Nama Outlet</label>
|
||||
<div class="col"><div class="input-group">'.$toutlet.'<button class="btn btn-info" type="button" onclick="RepoJualJS.outlet_brow();"><i class="bi-search"></i></button></div></div>
|
||||
</div>
|
||||
<div class="row mb-1">
|
||||
<label class="col-sm-5 col-lg-3 col-form-label" for="SalesID">Nama Sales</label>
|
||||
<div class="col">'.$tsales.'</div>
|
||||
</div>
|
||||
<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"><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>
|
||||
<input type="hidden" id="OutletID" value="0">';
|
||||
|
||||
}
|
||||
|
||||
send_json($ajson);
|
||||
?>
|
||||
Reference in New Issue
Block a user