first commit
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
/*******************************************************************
|
||||
|
||||
App. Name : INVENTORY AND SALES SYSTEMS
|
||||
Module : /apps/cfg/assets.php
|
||||
Desc. : Konfigurasi Assets Aplikasi [css / js]
|
||||
Created By : Siau Pheng ([email protected]).
|
||||
Created Date : November 23rd, 2019.
|
||||
Last Modified : September 24th, 2025.
|
||||
|
||||
(c) 2019 - 2025, 3FONIA Software; WWW.3FONIA.COM.
|
||||
|
||||
*******************************************************************/
|
||||
|
||||
$A_CSS = ["bootstrap/bootstrap.icon.css", "bootstrap/bootstrap.css"];
|
||||
$A_JS = ["jquery/jquery.js", "jquery/jquery.base64.js", "bootstrap/bootstrap.bundle.js", "fonia3.js"];
|
||||
|
||||
if (!user_logged()) {
|
||||
$A_JS[] = "jquery/jquery.backstretch.js";
|
||||
|
||||
} else {
|
||||
//$A_CSS[] = "coreui/coreui.chartjs.css";
|
||||
//$A_CSS[] = "datatables/dataTables.bootstrap5.css";
|
||||
//$A_CSS[] = "datatables/responsive.bootstrap5.css";
|
||||
//$A_CSS[] = "datatables/scroller.bootstrap5.css";
|
||||
//$A_CSS[] = "datatables/stateRestore.bootstrap5.css";
|
||||
//$A_CSS[] = "select2/select2.css";
|
||||
//$A_CSS[] = "select2/select2-bootstrap-5-theme.css";
|
||||
//$A_CSS[] = "bootstrap/bootstrap.datepicker.css";
|
||||
//$A_CSS[] = "simplebar.css";
|
||||
//$A_CSS[] = "lightbox.css";
|
||||
//$A_CSS[] = "codemirror.css";
|
||||
//$A_CSS[] = "summernote-bs4.css";
|
||||
$A_CSS[] = "default.css";
|
||||
//$A_CSS[] = "print.css";
|
||||
|
||||
$A_JS = [
|
||||
"jquery/jquery.js",
|
||||
"jquery/jquery.base64.js",
|
||||
//"jquery/jquery.autosize.js",
|
||||
//"jquery/jquery.maskedinput.js",
|
||||
//"jquery/jquery.validate.js",
|
||||
"bootstrap/bootstrap.bundle.js",
|
||||
//"bootstrap/bootstrap.datepicker.js",
|
||||
//"bootstrap/bootstrap.autocomplete.js",
|
||||
//"datatables/jquery.dataTables.js",
|
||||
//"datatables/dataTables.bootstrap5.js",
|
||||
//"datatables/dataTables.responsive.js",
|
||||
//"datatables/responsive.bootstrap5.js",
|
||||
//"datatables/dataTables.scroller.js",
|
||||
//"datatables/dataTables.stateRestore.js",
|
||||
//"datatables/stateRestore.bootstrap5.js",
|
||||
//"codemirror/codemirror.js",
|
||||
//"codemirror/xml.js",
|
||||
//"moment.js",
|
||||
//"select2/select2.js",
|
||||
//"chart/chart.js",
|
||||
//"chart/chartjs-plugin-datalabels.js",
|
||||
//"simplebar.js",
|
||||
//"lightbox.js",
|
||||
//"summernote-bs4.js",
|
||||
//"html5-qrcode.js",
|
||||
"fonia3.js",
|
||||
//"print.js",
|
||||
//"pdf.js",
|
||||
//"export.js",
|
||||
//"simulator.js",
|
||||
//"pole-display.js"
|
||||
];
|
||||
}
|
||||
|
||||
?>
|
||||
@@ -0,0 +1,127 @@
|
||||
/*******************************************************************
|
||||
|
||||
Module : /assets/js/display.js
|
||||
Desc. : JS - Halaman Utama Display
|
||||
Created By : Siau Pheng ([email protected]).
|
||||
Created Date : May 24th, 2010.
|
||||
Last Modified : January 2nd, 2026.
|
||||
|
||||
(c) 2010 - 2026, 3FONIA Software; WWW.3FONIA.COM.
|
||||
|
||||
*******************************************************************/
|
||||
|
||||
$(document).ready(function(){
|
||||
jQuery('#preloader').remove();
|
||||
DispJS.loading();
|
||||
});
|
||||
|
||||
var DispJS = {
|
||||
PHP: FoniaJS.WEB_PATH+'apps/php/display.php',
|
||||
DEF_PROMO_DUR: 10,
|
||||
DEF_THANK_TIME: 1,
|
||||
DEF_IDLE_TIME: 5,
|
||||
IDLE_TIME: 0,
|
||||
ISSHOW_POS: false,
|
||||
ISSHOW_THANK: false,
|
||||
|
||||
loading: function(){
|
||||
new Request.JSON({
|
||||
url: this.PHP,
|
||||
sendParam: ['data=default'],
|
||||
onSuccess: function(ares){
|
||||
$('#pageContent').html(ares.html);
|
||||
this.data_query('config');
|
||||
this.data_query('info-promo');
|
||||
this.data_query('info-iklan');
|
||||
this.hide_pos();
|
||||
this.hide_thank();
|
||||
setInterval(function(){
|
||||
if (DispJS.IDLE_TIME >= DispJS.DEF_THANK_TIME || DispJS.IDLE_TIME >= DispJS.DEF_IDLE_TIME) {
|
||||
if (DispJS.ISSHOW_POS) { DispJS.hide_pos(); DispJS.ISSHOW_POS = false }
|
||||
if (DispJS.IDLE_TIME < DispJS.DEF_IDLE_TIME) {
|
||||
if (DispJS.ISSHOW_THANK) { DispJS.show_thank(); }
|
||||
} else {
|
||||
if (DispJS.ISSHOW_THANK) { DispJS.data_query('close-thank'); }
|
||||
}
|
||||
DispJS.data_query('count-delay');
|
||||
} else {
|
||||
if (DispJS.ISSHOW_THANK) { DispJS.data_query('close-thank'); }
|
||||
if (!DispJS.ISSHOW_POS) { DispJS.show_pos(); DispJS.ISSHOW_POS = true }
|
||||
if ($('#divShop').length) DispJS.data_query('info-shop');
|
||||
}
|
||||
}, 1000);
|
||||
}.bind(this)
|
||||
}).send();
|
||||
},
|
||||
|
||||
hide_pos: function(){
|
||||
$('#divBanner').removeClass('d-none');
|
||||
$('#divShop').addClass('d-none');
|
||||
},
|
||||
|
||||
show_pos: function(){
|
||||
$('#divBanner').addClass('d-none');
|
||||
$('#divShop').removeClass('d-none');
|
||||
this.data_query('shop');
|
||||
},
|
||||
|
||||
hide_thank: function(){
|
||||
$('#divBlur').addClass('d-none');
|
||||
$('#divThank').addClass('d-none');
|
||||
},
|
||||
|
||||
show_thank: function(){
|
||||
$('#divBlur').removeClass('d-none');
|
||||
$('#divThank').removeClass('d-none');
|
||||
this.data_query('thank');
|
||||
},
|
||||
|
||||
data_query: function(tipe){
|
||||
if (tipe=='config'){
|
||||
$.post(this.PHP, {data:'config'}, function(ajson){
|
||||
if (ajson.PROMO_DURASI) DispJS.DEF_PROMO_DUR = ajson.PROMO_DURASI;
|
||||
if (ajson.PROMO_IDLE) DispJS.DEF_IDLE_TIME = ajson.PROMO_IDLE;
|
||||
if (ajson.BANNER_TEXT) $('#divBanner').html(ajson.BANNER_TEXT);
|
||||
}, 'json');
|
||||
} else if (tipe=='info-iklan'){
|
||||
$.post(this.PHP, {data:'info-iklan'}, function(data){
|
||||
$('#divIklan').html(data);
|
||||
const car_iklan = new bootstrap.Carousel('#divIklan', {
|
||||
interval: DispJS.DEF_PROMO_DUR
|
||||
});
|
||||
});
|
||||
} else if (tipe=='info-promo'){
|
||||
$.post(this.PHP, {data:'info-promo'}, function(data){
|
||||
$('#divPromo').html(data);
|
||||
const car_iklan = new bootstrap.Carousel('#divPromo', {
|
||||
interval: DispJS.DEF_PROMO_DUR
|
||||
});
|
||||
});
|
||||
} else if (tipe=='count-delay'){
|
||||
$.post(this.PHP, {data:'count-delay'}, function(ajson){
|
||||
if (parseInt(ajson.total)==0) this.IDLE_TIME++; else this.IDLE_TIME = 0;
|
||||
this.ISSHOW_THANK = (parseInt(ajson.thank)==1) ? true : false;
|
||||
}.bind(this), 'json');
|
||||
} else if (tipe=='shop'){
|
||||
$.post(this.PHP, {data:'shop'}, function(data){
|
||||
$('#divShop').html(data);
|
||||
});
|
||||
} else if (tipe=='thank'){
|
||||
$.post(this.PHP, {data:'thank'}, function(data){
|
||||
$('#divThank').html(data);
|
||||
});
|
||||
} else if (tipe=='close-thank'){
|
||||
$.post(this.PHP, {data:'close-thank'}, function(){
|
||||
this.ISSHOW_THANK = false;
|
||||
this.hide_thank();
|
||||
}.bind(this));
|
||||
} else if (tipe=='info-shop'){
|
||||
$.post(this.PHP, {data:'info-shop'}, function(ajson){
|
||||
$('#Total_Harga').html(ajson.Total_Harga);
|
||||
$('#Info_Qty').html(ajson.Info_Qty);
|
||||
$('#Info_Barang').html(ajson.Info_Barang);
|
||||
if (parseFloat($('#Total_Harga').html())==0) this.IDLE_TIME++; else this.IDLE_TIME = 0;
|
||||
}.bind(this), 'json');
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,156 @@
|
||||
<?php
|
||||
|
||||
/*******************************************************************
|
||||
|
||||
Module : /apps/php/display.php
|
||||
Desc. : PHP - Halaman Utama Display
|
||||
Created By : Siau Pheng ([email protected]).
|
||||
Created Date : May 24th, 2010.
|
||||
Last Modified : January 2nd, 2026.
|
||||
|
||||
(c) 2010 - 2026, 3FONIA Software; WWW.3FONIA.COM.
|
||||
|
||||
*******************************************************************/
|
||||
|
||||
require_once(__DIR__."/../../../../../vendor/autoload.php");
|
||||
require_once(__DIR__."/../../../apps/cfg/mysql.php");
|
||||
|
||||
use siaupheng\fonia3\DB\MySQL;
|
||||
use siaupheng\fonia3\Web\Param;
|
||||
|
||||
$db = $db ?? new MySQL();
|
||||
$ajson = [];
|
||||
$data = Param::Get("data");
|
||||
$id_reg = $_SESSION['__WEB_APP']['APP_DISPLAY'];
|
||||
|
||||
if ( in_array($data, ["info-shop","count-delay","close-thank","thank"]) ) {
|
||||
$app_disp = [];
|
||||
$db->Query("SELECT * FROM disp_login WHERE IP='".$_SERVER['REMOTE_ADDR']."' AND CabID='".$_SESSION['__APP_INV']['CABANGID']."' ORDER BY Date DESC LIMIT 1");
|
||||
if ($db->Next()) $app_disp = $db->AllRow();
|
||||
}
|
||||
|
||||
if ( $data == "config" ) {
|
||||
$ainfo = [];
|
||||
$db->Query("SELECT * FROM disp_config WHERE REG_ID='".$id_reg."' LIMIT 1");
|
||||
if ($db->Next()) $ainfo = $db->AllRow();
|
||||
$ajson['BANNER_TEXT'] = '<div class="marquee-content" style="color:'.$ainfo['Warna'].';font-size:'.$ainfo['Font'].'pt;">'.$ainfo['Text_Run'].'</div>';
|
||||
$ajson['PROMO_IDLE'] = $ainfo['Promo_Idle'];
|
||||
$ajson['PROMO_DURASI'] = (int)$ainfo['Promo_Durasi'] * 1000;
|
||||
|
||||
} else if ( $data == "info-iklan" ) {
|
||||
$info_iklan = '<div class="carousel-inner">'; $iklan = 0;
|
||||
$db->Query("SELECT * FROM disp_promo WHERE Aktif=1 AND Tipe=2 AND CabID IN (0,".$_SESSION['__APP_INV']['CABANGID'].") AND Image IS NOT NULL ORDER BY Tanggal");
|
||||
while ($db->Next()){
|
||||
$info_iklan .= '<div class="carousel-item'.($iklan==0?' active':'').'"><img src="data:'.$db->Row("Mime").';base64,'.base64_encode($db->Row("Image")).'" class="m-auto d-block"></div>';
|
||||
$iklan++;
|
||||
}
|
||||
if ($iklan == 0) $info_iklan .= '<div class="carousel-item active"><img src="'.$_SESSION['__WEB_APP']['WEB_PATH'].'/assets/images/logo600.png" class="m-auto d-block"></div>';
|
||||
$info_iklan .= '</div>';
|
||||
echo $info_iklan;
|
||||
|
||||
} else if ( $data == "info-promo" ) {
|
||||
$info_promo = '<div class="carousel-inner">'; $promo = 0;
|
||||
$db->Query("SELECT * FROM disp_promo WHERE Aktif=1 AND Tipe=1 AND CabID IN (0,".$_SESSION['__APP_INV']['CABANGID'].") ORDER BY Tanggal, PromoID");
|
||||
while ($db->Next()){
|
||||
$_text = str_replace(["[br]","[i]","[/i]","[b]","[/b]"], ["<br/>","<i>","</i>","<b>","</b>"], $db->Row("Info"));
|
||||
$_text = '<span style="color:'.$db->Row("Warna").';font-size:'.$db->Row("Font").'pt;">' . $_text . '</span>';
|
||||
if ($db->Row("Image","")<>"") {
|
||||
$_text = '<div class="row h-100 align-items-center"><div class="col-2 text-center"><img src="data:'.$db->Row("Mime").';base64,'.base64_encode($db->Row("Image")).'" class="pt-2"></div><div class="col-10">' . $_text ."</div></div>";
|
||||
}
|
||||
$info_promo .= '<div class="carousel-item'.($promo==0?' active':'').'">'.$_text."</div>";
|
||||
$promo++;
|
||||
}
|
||||
echo $info_promo."</div>";
|
||||
|
||||
} else if ( $data == "count-delay" ) {
|
||||
$ajson = ['total' => 0, 'thank' => 0];
|
||||
$db->Query("SELECT SUM(-D.Qty*(D.Harga_Jual-D.Disk_Rupiah)) Total FROM tmp_inv_detail D WHERE D.No_Ref='".$app_disp['No_Pos']."' AND D.Unix='".$app_disp['Unix']."'");
|
||||
if ($db->Next()) $ajson['total'] = $db->RowFloat("Total", 0);
|
||||
$db->Query("SELECT IF(No_Cetak='',0,1) Ada FROM disp_login WHERE UserID='".$app_disp['UserID']."' AND Unix='".$app_disp['Unix']."'");
|
||||
if ($db->Next()) $ajson['thank'] = $db->RowFloat("Ada", 0);
|
||||
|
||||
} else if ( $data == "shop" ) {
|
||||
echo '
|
||||
<div class="row g-0 my-2">
|
||||
<div class="col-7 pe-3 text-end" id="Info_Barang">
|
||||
</div>
|
||||
<div class="col-5 pe-2">
|
||||
<div class="border border-success border-opacity-75 rounded rounded-4 bg-warning bg-gradient" style="--bs-bg-opacity:.75;">
|
||||
<div class="row pe-2">
|
||||
<div class="col-4 text-end fs-3" id="Info_Qty"></div>
|
||||
<div class="col-8 text-end display-1 fw-light border-light border-start" id="Total_Harga">0</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>';
|
||||
|
||||
} else if ( $data == "info-shop" ) {
|
||||
$ashop = ['Total'=>0, 'Item'=>0, 'Qty'=>0];
|
||||
$db->Query("SELECT SUM(-D.Qty*(D.Harga_Jual-D.Disk_Rupiah)) Total,COUNT(*) Item, SUM(-D.Qty) Qty FROM tmp_inv_detail D WHERE D.No_Ref='".$app_disp['No_Pos']."' AND D.Unix='".$app_disp['Unix']."'");
|
||||
if ($db->Next()) $ashop = $db->AllRow();
|
||||
|
||||
$info_barang = '<img src="'.$aapp['WEB_PATH'].'assets/images/logo60.png">';
|
||||
if ($ashop['Item'] > 0) {
|
||||
$db->Query("SELECT * FROM (SELECT -D.Qty Qty2,D.Harga_Jual,P.Nama_Lengkap FROM tmp_inv_detail D LEFT JOIN vi_inv_produk P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID) WHERE D.No_Ref='".$app_disp['No_Pos']."' AND D.Unix='".$app_disp['Unix']."' AND D.Promo<2 ORDER BY D.ID DESC LIMIT 1) A");
|
||||
if ($db->Next()) {
|
||||
$info_barang = '<span class="display-4 fw-light">'.$db->Row("Nama_Lengkap").'</span><br><span class="fs-4">Qty : '.rupiah($db->Row("Qty2")).' / Rp. '.rupiah($db->Row("Harga_Jual")).'</span>';
|
||||
}
|
||||
}
|
||||
|
||||
$ajson['Info_Barang'] = $info_barang;
|
||||
$ajson['Total_Harga'] = rupiah($ashop['Total']);
|
||||
$ajson['Info_Qty'] = rupiah($ashop['Item'])." Items<br>".rupiah($ashop['Qty'])." Qty";
|
||||
|
||||
} else if ( $data == "close-thank" ) {
|
||||
$db->Query("UPDATE disp_login SET No_Cetak='' WHERE UserID='".$app_disp['UserID']."' AND Unix='".$app_disp['Unix']."'");
|
||||
|
||||
} else if ( $data == "thank" ) {
|
||||
$db->Query("SELECT J.*,(J.Total_Bayar-J.Total_Jual+J.Total_Diskon+J.Total_Potong) Total_Sisa,UCASE(LEFT(B.Nama_Kartu,23)) Kode_Kartu2,UCASE(J.Nama_Kartu) Nama_Kartu2,RIGHT(J.No_Kartu,4) No_Kartu2 FROM inv_jual J LEFT JOIN para_rek_pos B ON (J.KartuID=B.KartuID) WHERE J.No_Jual='".$app_disp['No_Cetak']."'");
|
||||
if ($db->Next()) $anota = $db->AllRow();
|
||||
|
||||
$nhemat = $anota['Total_Diskon'] + $anota['Total_Potong'];
|
||||
echo '
|
||||
<div class="row">
|
||||
<div class="col-6 text-center">
|
||||
<img class="img-fluid mt-5" src="'.$aapp['WEB_PATH'].'assets/images/logo300.png" alt="'.$aapp['REG_NAME'].'">
|
||||
</div>
|
||||
<div class="col-6 fs-2 text-center">
|
||||
';
|
||||
|
||||
echo 'Jumlah Belanja Anda Rp. '.rupiah($anota['Total_Jual']-$anota['Total_Diskon']).'<br>';
|
||||
if ($anota['Total_Diskon']>0) echo '<i>Anda Mendapatkan Diskon Rp. '.rupiah($anota['Total_Diskon']).'</i><br>';
|
||||
if ($anota['Total_Potong']>0) echo '<i>Anda Mendapatkan Potongan Promo Rp. '.rupiah($anota['Total_Potong']).'</i><br>';
|
||||
|
||||
echo 'Jumlah Pembayaran Anda Rp. '.rupiah($anota['Total_Bayar']).'<br><br>';
|
||||
|
||||
if ($anota['KartuID']==0) {
|
||||
echo '<span style="font-size:23pt;color:red;">Sisa Pembayaran Rp. '.rupiah($anota['Total_Sisa']).'</span><br>';
|
||||
} else {
|
||||
echo '<b>Anda Melakukan Pembayaran Dengan : <br>'.$anota['Kode_Kartu2']." - ".$anota['No_Kartu2'].'</b><br>';
|
||||
}
|
||||
|
||||
if ($nhemat>0) echo '<span style="font-size:18pt;color:orange;"><i>Anda Mendapatkan Penghematan Sebesar Rp. '.rupiah($nhemat).'</span></i><br>';
|
||||
|
||||
echo '<br>Terima Kasih Telah Berbelanja di Toko Kami<br>Selamat Berbelanja Kembali :)';
|
||||
echo '</div></div>';
|
||||
|
||||
} else if ( $data == "default" ) {
|
||||
$ajson['html'] = '
|
||||
<div class="disp-atas overflow-hidden fixed-top">
|
||||
<div class="marquee-container overflow-hidden bg-light shadow-sm" id="divBanner"></div>
|
||||
<div id="divShop"> </div>
|
||||
</div>
|
||||
|
||||
<div class="disp-tengah overflow-hidden">
|
||||
<div id="divBlur" class="bg-white bg-opacity-75 d-none"> </div>
|
||||
<div id="divIklan" class="carousel slide" data-bs-ride="carousel"> </div>
|
||||
<div id="divThank"> </div>
|
||||
</div>
|
||||
|
||||
<div class="disp-bawah overflow-hidden fixed-bottom border-top border-warning">
|
||||
<div id="divPromo" class="carousel slide carousel-fade" data-bs-ride="carousel"> </div>
|
||||
</div>';
|
||||
}
|
||||
|
||||
send_json($ajson);
|
||||
?>
|
||||
Reference in New Issue
Block a user