first commit

This commit is contained in:
2026-01-22 15:30:17 +07:00
commit a971b97d88
181 changed files with 22279 additions and 0 deletions
+6
View File
@@ -0,0 +1,6 @@
# ignore cache content
cache/*.js
cache/*.css
# ignore mysql.php
mysql.php
+22
View File
@@ -0,0 +1,22 @@
# IAS
Aplikasi Stok dan Penjualan PT. Ponti Mitra Sejati
## Description
Copy of IAS
## Authors
Developer dan programmer
[@siaupheng](mailto:[email protected])
## Version History
* 1.0
* Initial Release
## License
This project is licensed.
+77
View File
@@ -0,0 +1,77 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/cfg/app.php
Desc. : Konfigurasi Global Aplikasi
Created By : Siau Pheng ([email protected]).
Created Date : November 7th, 2009.
Last Modified : January 6th, 2025.
(c) 2009 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../vendor/autoload.php");
require_once(__DIR__."/mysql.php");
use siaupheng\fonia3\DB\MySQL;
$db = (is_resource($db)) ? $db : new MySQL();
if (($_SESSION['__WEB_APP']['APP_CODE'] ?? "")<>"1012834101") {
foreach ($_SESSION as $_key => $_val) {
if (substr($_key,0,5)=="__WEB") unset($_SESSION[$_key]);
if (substr($_key,0,5)=="__APP") unset($_SESSION[$_key]);
}
}
if (!isset($_SESSION['__WEB_APP'])) {
$real_path = str_replace("\\", "/", __DIR__);
$real_path = str_replace("apps/cfg", "", $real_path);
$web_path = str_replace($_SERVER['DOCUMENT_ROOT'], "/", $real_path);
$web_path = str_replace("//", "/", $web_path);
$real_path = str_replace("//", "/", $real_path);
$apps = [];
$apps['APP_CODE'] = "1012834101";
$apps['APP_NAME'] = "IAS";
$apps['APP_NAMES'] = "Inventory Advanced Systems";
$apps['APP_VER'] = "4.0";
$apps['APP_UPDATED'] = "Jan 10th, 2026.";
$apps['APP_SID'] = md5(time());
$apps['APP_LOCALE'] = ['id'=>"Indonesia", 'en'=>"English"];
$apps['DEF_LOCALE'] = "id";
$apps['AUTH_OVER'] = true;
$apps['AUTH_LEVEL'] = 1;
$apps['USER_LEVEL'] = [0=>"Administrator", 1=>"Supervisor", 9=>"Operator"];
$apps['USER_LOG'] = true;
$apps['USE_QZTRAY'] = false;
$apps['CREATOR_YEAR'] = "2010";
$apps['CREATOR_NAME'] = "3fonia Software";
$apps['CREATOR_WEBSITE'] = "https://www.3fonia.com";
$apps['WEB_PATH'] = $web_path;
$apps['REAL_PATH'] = $real_path;
$apps['MODULE_PATH'] = "../";
$apps['PARENT_SUB'] = false;
$apps['PARENT_CODE'] = "1012834101";
$apps['PARENT_SITE'] = "http://192.168.1.100";
$apps['SERVER_ID'] = "0";
$db->Query("SELECT * FROM app_config WHERE REG_ID='".$apps['APP_CODE']."' LIMIT 1");
if ($db->Next()) $apps = array_merge($apps, $db->AllRow());
if ($apps['APP_BUILD']<>"") $apps['APP_VER'] = $apps['APP_BUILD'];
$_SESSION['__WEB_APP'] = $apps;
}
if (!isset($_SESSION['__APP_IAS'])) {
$db->Query("SELECT * FROM ias_config WHERE REG_ID='".$apps['PARENT_CODE']."' LIMIT 1");
if ($db->Next()) $_SESSION['__APP_IAS'] = $db->AllRow();
}
if (file_exists(__DIR__."/../../../global.php")) {
require(__DIR__."/../../../global.php");
}
?>
+78
View File
@@ -0,0 +1,78 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced 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 : October 27th, 2023.
(c) 2019 - 2023, 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[] = "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"
];
// add qz support
if (($_SESSION['__WEB_APP']['USE_QZTRAY'] ?? false) == true) {
$A_JS[] = "qz/qz-tray.js";
}
}
?>
+25
View File
@@ -0,0 +1,25 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/cfg/mysql.php
Desc. : Konfigurasi Server MySQL
Created By : Siau Pheng ([email protected]).
Created Date : November 7th, 2009.
Last Modified : January 2nd, 2023.
(c) 2009 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
$APP_DATA = [
'host' => "127.0.0.1",
'port' => "3306",
'user' => "ias_pms",
'pwd' => "14sp0nt12810",
'db' => "ias_pms",
'sock' => ""
];
?>
+55
View File
@@ -0,0 +1,55 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/csv/faktur_pajak.js
Desc. : JS - Export Data Faktur Pajak
Created By : Siau Pheng ([email protected]).
Created Date : April 2rd, 2011.
Last Modified : November 18th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var CSVFPJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_FP').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#csvNormal').click(function(){
this.proses_dload(0);
}.bind(this));
$('#csvPengganti').click(function(){
this.proses_dload(1);
}.bind(this));
FoniaJS.setFocus('#Cari_FP');
},
proses_dload: function(jenis){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'download');
dload.add_param('Tgl_From');
dload.add_param('Tgl_To');
dload.add_param('Jenis_FP', jenis);
dload.download();
this.data_query('detail');
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Tgl_From','Tgl_To','Cari_FP']
}).send();
}
}
};
+55
View File
@@ -0,0 +1,55 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/csv/faktur_pajak_biaya.js
Desc. : JS - Export Data Faktur Pajak Biaya
Created By : Siau Pheng ([email protected]).
Created Date : February 11th, 2017.
Last Modified : November 18th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var CSVBiayaJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_FP').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#csvNormal').click(function(){
this.proses_dload(0);
}.bind(this));
$('#csvPengganti').click(function(){
this.proses_dload(1);
}.bind(this));
FoniaJS.setFocus('#Cari_FP');
},
proses_dload: function(jenis){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'download');
dload.add_param('Tgl_From');
dload.add_param('Tgl_To');
dload.add_param('Jenis_FP', jenis);
dload.download();
this.data_query('detail');
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Tgl_From','Tgl_To','Cari_FP']
}).send();
}
}
};
+305
View File
@@ -0,0 +1,305 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/beli.js
Desc. : JS - Transaksi Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : May 22th, 2010.
Last Modified : March 24th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var BeliJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Beli').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Beli').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Beli').val());
},
tx_hapus: function(){
if (!$('#No_Beli').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Beli').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Beli'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Beli').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Beli').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($('#SupID').val()==0){
FoniaJS.showError("Silakan pilih Nama Supplier !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Beli').val('');
}.bind(this), 'danger');
},
tx_print: function(prt){
if ($('#No_Beli').val()) {
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", "beli");
cetak.add_param("Nomor_Cetak", $('#No_Beli').val());
if (prt) cetak.doPrint(); else cetak.doPreview();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
},
produk_brow: function(){//not yet
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Produk" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowProduk">&nbsp;</div>');
this.winBProduk = FoniaJS.showWindow('BProduk', 'Daftar Produk', _isi, 900, '', function(){
$('#winBProduk').find('#Cari_Produk').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butSearch').click(function(e){
this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butAll').click(function(){
$('#winBProduk').find('#Cari_Produk').val('');
this.data_query('brow-produk');
}.bind(this));
this.data_query('brow-produk');
FoniaJS.setFocus('#Cari_Produk');
}.bind(this));
},
produk_select: function(acell){//not yet
FoniaJS.closeWindow(this.winBProduk);
//this.detail_produk(0, acell[0], acell[1], acell[3], acell[4], 1, 0, 0, 'insert');
},
detail_produk: function(mode, ID){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-produk','No_Beli','mode','mode_detail='+mode,'ID='+ID],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Produk', a.html, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this));
FoniaJS.AutoComplete('#Nama_Produk', this.PHP, ['data=auto-produk','No_Beli'], this.Produk_Comp, this.Produk_Key);
$('#Nama_Produk').on('click', function(){
$('#Nama_Produk').select();
});
$('#Qty').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && parseInt(e.target.value)>0) FoniaJS.setFocus('#Harga_Pokok');
}.bind(this));
$('#Harga_Pokok').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13) FoniaJS.setFocus('#Total_Diskon');
}.bind(this));
$('#Total_Diskon').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && FoniaJS.StrToFloat($('#Jumlah').val())>0) this.detail_simpan();
}.bind(this));
if ($('#mode_detail').val() == 'insert' && $('#InvID').val() == 0) {
FoniaJS.setFocus('#Nama_Produk');
} else {
this.Hitung_Detail();
FoniaJS.setFocus('#Qty');
}
}.bind(this), false);
}.bind(this)
}).send();
},
detail_tambah: function(){
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
this.detail_produk('insert', 0);
},
detail_ubah: function(acell){
this.detail_produk('update', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Beli','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
detail_simpan: function(){
if (parseInt($('#InvID').val())==0) {
FoniaJS.showError('Silakan masukkan Nama Produk !');
return;
}
var _mdetail = $('#mode_detail').val();
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail','No_Beli','GudangID','ID','InvID','SatuanID','Qty','Harga_Pokok','Total_Diskon'],
onSuccess: function(){
if (_mdetail=='insert') { this.detail_tambah(); } else FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Beli'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Beli','Tgl_Beli','Tgl_JT','GudangID','No_Faktur','No_Pajak','SupID'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Beli').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($("#No_Beli")) && ($("#No_Beli").val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($("#mode").val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butUbah').prop('disabled', ($('#Lunas').val()==1 ? true : false));
$('#butHapus').prop('disabled', ($('#Lunas').val()==1 ? true : false));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Beli');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Beli']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-produk"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-produk','Cari_Produk'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Produk');
}
}).send();
}
},
oc_SupID: function(obj){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=info-sup','SupID='+obj.value]
}).send();
},
Produk_Comp: function(item){
var adata = item.data.split(':');
$('#InvID').val(item.value);
$('#SatuanID').val(adata[0]);
$('#Nama_Satuan').val(adata[1]);
FoniaJS.setFocus('#Qty');
},
Produk_Key: function(key){
if (key == 13) {
} else if (key == 118) {//f7
} else if (key == 119) {//f8
} else if (key == 120) {//f9
}
},
Hitung_Detail: function(){
$('#Jumlah').val(FoniaJS.FloatToStr((FoniaJS.StrToFloat($('#Qty').val()) * FoniaJS.StrToFloat($('#Harga_Pokok').val())) - FoniaJS.StrToFloat($('#Total_Diskon').val()), 2));
}
};
+182
View File
@@ -0,0 +1,182 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/beli_lunas.js
Desc. : JS - Transaksi Pelunasan Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : March 7th, 2011.
Last Modified : May 19th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var BeliLunasJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butMode').click(function(){this.tx_mode();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
if (FoniaJS.User.Level>0) $('#butMode').hide();
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_mode: function(){
var mode = ($('#Mode_Tampil').val()==1) ? 0 : 1;
$('#Mode_Tampil').val(mode);
$('#butMode').html('<i class="bi-list me-2"></i>'+(mode==1?'Semua':'Normal'));
this.data_query('tabel-nota');
},
tx_batal: function(){
$('#divTXNota').removeClass('d-none');
$('#divDetailNota').addClass('d-none');
$('#divDetailBayar').addClass('d-none');
if (FoniaJS.User.Level==0) $('#butMode').removeClass('d-none');
$('#butBatal').addClass('d-none');
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#Nama_Sup').prop('disabled', false).removeClass('disabled').addClass('enabled');
this.data_query('tabel-nota');
},
sup_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Sup" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowSup">&nbsp;</div>');
this.winBSup = FoniaJS.showWindow('BSup', 'Daftar Supplier', _isi, 900, '', function(){
$('#winBSup').find('#Cari_Sup').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-sup');
}.bind(this));
$('#winBSup').find('#butSearch').click(function(e){
this.data_query('brow-sup');
}.bind(this));
$('#winBSup').find('#butAll').click(function(){
$('#winBSup').find('#Cari_Sup').val('');
this.data_query('brow-sup');
}.bind(this));
this.data_query('brow-sup');
FoniaJS.setFocus('#Cari_Sup');
}.bind(this));
},
sup_select: function(acell){
FoniaJS.closeWindow(this.winBSup);
$('#SupID').val(acell[0]);
$('#Nama_Sup').val(acell[2]);
$('#Alamat_Sup').val(acell[4]);
this.data_query('tabel-nota');
},
nota_select: function(acell){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-nota','No_Beli='+acell[1],'Tipe_Nota='+acell[0]],
onSuccess: function(ajson){
$('#divDetailNota').html(ajson.html);
$('#divTXNota').addClass('d-none');
$('#divDetailNota').removeClass('d-none');
$('#divDetailBayar').removeClass('d-none');
if (FoniaJS.User.Level==0) $('#butMode').addClass('d-none');
$('#butBatal').removeClass('d-none');
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#Nama_Sup').prop('disabled', true).removeClass('enabled').addClass('disabled');
this.data_query('tabel-bayar');
}.bind(this)
}).send();
},
bayar_show: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-bayar','No_Beli','Total_Sisa'],
onSuccess: function(ajson){
this.winBayar = FoniaJS.showWindow('Bayar', 'Detail Pembayaran', ajson.html, 500, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winBayar').find('#butWSimpan').click(function(){this.bayar_simpan();}.bind(this));
this.Hitung_Detail();
FoniaJS.setFocus('#Total_Bayar');
}.bind(this), false);
}.bind(this)
}).send();
},
bayar_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-bayar','mode_detail=delete','No_Beli','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
bayar_simpan: function(){
if ((FoniaJS.StrToFloat($('#Total_Bayar').val()) + FoniaJS.StrToFloat($('#Total_Potong').val())) > $('#Total_Sisa').val()){
FoniaJS.showError("Jumlah pelunasan melebihi jumlah faktur!");
return;
}
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-bayar','mode_detail=insert','No_Beli','Tipe','Tgl_Bayar','Tgl_Cair','Total_Bayar','Total_Potong','Tipe_Nota'],
onSuccess: function(){
FoniaJS.closeWindow(this.winBayar);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
new Request.JSON({
url: this.PHP,
sendParam: ['data=master','SupID'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')],
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
this.tx_batal();
FoniaJS.AutoComplete('#Nama_Sup', this.PHP, ['data=auto-sup'], this.Sup_Comp);
$('#Nama_Sup').on('click', function(){
$('#Nama_Sup').select();
});
if (ajson.error) {
FoniaJS.showError(ajson.error);
}
FoniaJS.setFocus('#Nama_Sup');
}.bind(this)
}).send();
} else if (tipe=="tabel-nota"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-nota','SupID','Mode_Tampil']
}).send();
} else if (tipe=="tabel-bayar"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-bayar','No_Beli','Lunas','Mode_Tampil']
}).send();
} else if (tipe=="brow-sup"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-sup','Cari_Sup'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Sup');
}
}).send();
}
},
Sup_Comp: function(item){
$('#SupID').val(item.value);
$('#Alamat_Sup').val(item.data);
BeliLunasJS.data_query('tabel-nota');
},
Hitung_Detail: function(){
$('#Temp_Sisa').val(FoniaJS.FloatToStr(FoniaJS.StrToFloat($('#Temp_Total').val()) - FoniaJS.StrToFloat($('#Total_Bayar').val()) - FoniaJS.StrToFloat($('#Total_Potong').val()), 2));
},
oc_Tipe: function(){
if ($('#Tipe').val()==1){
$('#divTglCair').addClass('d-none');
} else {
$('#divTglCair').removeClass('d-none');
}
}
};
+239
View File
@@ -0,0 +1,239 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/beli_pajak.js
Desc. : JS - Pembuatan Nota Retur Pajak
Created By : Siau Pheng ([email protected]).
Created Date : October 23rd, 2015.
Last Modified : May 16th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var BeliPajakJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Nota Retur Pajak', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Pajak').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Pajak').val()){
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Pajak').val());
},
tx_hapus: function(){
if (!$('#No_Pajak').val()){
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Pajak').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Pajak'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Pajak').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Pajak').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($('#SupID').val()==0){
FoniaJS.showError("Silakan pilih Nama Supplier !");
return;
}
if ($('#No_Pajak').val().indexOf('BARU')!==-1) {
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
FoniaJS.setFocus('#No_Pajak');
return;
}
if ($('#No_Retur').val()=='') {
FoniaJS.showError("Silakan masukkan Nomor Retur !");
FoniaJS.setFocus('#No_Retur');
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Pajak').val('');
}.bind(this), 'danger');
},
tx_print: function(prt){
if ($('#No_Pajak').val()) {
var dpdf = new cPDF(FoniaJS.WEB_PATH+'apps/php/repo/fp.php');
dpdf.add_param("data", "fp-retur");
dpdf.add_param("Nomor_Cetak", $('#No_Pajak').val());
dpdf.showPDF();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
},
beli_brow: function(){
if ($('#SupID').val()==0){
FoniaJS.showError("Silakan pilih Nama Supplier !");
return;
}
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Beli" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowBeli">&nbsp;</div>');
this.winBBeli = FoniaJS.showWindow('BBeli', 'Daftar Transaksi Retur Pembelian', _isi, 900, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winBBeli').find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this));
$('#winBBeli').find('#Cari_Beli').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-beli');
}.bind(this));
$('#winBBeli').find('#butSearch').click(function(e){
this.data_query('brow-beli');
}.bind(this));
$('#winBBeli').find('#butAll').click(function(){
$('#winBBeli').find('#Cari_Beli').val('');
this.data_query('brow-beli');
}.bind(this));
this.data_query('brow-beli');
FoniaJS.setFocus('#Cari_Beli');
}.bind(this));
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[0]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Pajak','No_Temp','No_Beli='+acell[0]]
}).send();
}.bind(this), 'danger');
},
detail_simpan: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=insert','No_Pajak','No_Temp'],
onSuccess: function(){
FoniaJS.closeWindow(this.winBBeli);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Pajak'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:''),'No_Temp'];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','mode_detail='+$('#mode').val(),'No_Pajak','No_Temp','Tgl_Pajak','No_NPWP','Nama_NPWP','SupID','No_Retur','Tgl_Retur'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Pajak').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($("#No_Pajak")) && ($("#No_Pajak").val() !== '') && ($.inArray($("#mode").val(),['add','edit']) == -1)) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($("#mode").val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butBatal').prop('disabled', ($('#mode').val()=='add' ? false : true ));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Pajak');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Pajak','No_Temp']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-beli"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-beli','Cari_Beli','SupID'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Beli');
}
}).send();
}
},
oc_SupID: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=info-npwp','SupID']
}).send();
}
};
+298
View File
@@ -0,0 +1,298 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/beli_retur.js
Desc. : JS - Transaksi Retur Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : March 25th, 2011.
Last Modified : May 15th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var BeliReturJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Beli').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Beli').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Beli').val());
},
tx_hapus: function(){
if (!$('#No_Beli').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Beli').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Beli'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Beli').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Beli').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($('#SupID').val()==0){
FoniaJS.showError("Silakan pilih Nama Supplier !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Beli').val('');
}.bind(this), 'danger');
},
tx_print: function(prt){
if ($('#No_Beli').val()) {
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", "retur-beli");
cetak.add_param("Nomor_Cetak", $('#No_Beli').val());
if (prt) cetak.doPrint(); else cetak.doPreview();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
},
produk_brow: function(){//not yet
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Produk" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowProduk">&nbsp;</div>');
this.winBProduk = FoniaJS.showWindow('BProduk', 'Daftar Produk', _isi, 900, '', function(){
$('#winBProduk').find('#Cari_Produk').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butSearch').click(function(e){
this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butAll').click(function(){
$('#winBProduk').find('#Cari_Produk').val('');
this.data_query('brow-produk');
}.bind(this));
this.data_query('brow-produk');
FoniaJS.setFocus('#Cari_Produk');
}.bind(this));
},
produk_select: function(acell){//not yet
FoniaJS.closeWindow(this.winBProduk);
//this.detail_produk(0, acell[0], acell[1], acell[3], acell[4], 1, 0, 0, 'insert');
},
detail_produk: function(mode, ID){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-produk','No_Beli','mode','mode_detail='+mode,'ID='+ID],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Produk', a.html, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this));
FoniaJS.AutoComplete('#Nama_Produk', this.PHP, ['data=auto-produk','No_Beli'], this.Produk_Comp, this.Produk_Key);
$('#Nama_Produk').on('click', function(){
$('#Nama_Produk').select();
});
$('#Qty').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && parseInt(e.target.value)>0) FoniaJS.setFocus('#Harga_Pokok');
}.bind(this));
$('#Harga_Pokok').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && FoniaJS.StrToFloat($('#Jumlah').val())>0) this.detail_simpan();
}.bind(this));
if ($('#mode_detail').val() == 'insert' && $('#InvID').val() == 0) {
FoniaJS.setFocus('#Nama_Produk');
} else {
this.Hitung_Detail();
FoniaJS.setFocus('#Qty');
}
}.bind(this), false);
}.bind(this)
}).send();
},
detail_tambah: function(){
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
if ($('#SupID').val()==0){
FoniaJS.showError("Silakan pilih Nama Supplier !");
return;
}
this.detail_produk('insert', 0);
},
detail_ubah: function(acell){
this.detail_produk('update', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Beli','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
detail_simpan: function(){
if (parseInt($('#InvID').val())==0) {
FoniaJS.showError('Silakan masukkan Nama Produk !');
return;
}
var _mdetail = $('#mode_detail').val();
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail','No_Beli','GudangID','ID','InvID','SatuanID','Qty','Harga_Pokok'],
onSuccess: function(){
if (_mdetail=='insert') { this.detail_tambah(); } else FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Beli'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Beli','Tgl_Beli','GudangID','SupID','No_Pajak','Catatan'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Beli').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($("#No_Beli")) && ($("#No_Beli").val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($("#mode").val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butUbah').prop('disabled', ($('#Lunas').val()==1 ? true : false));
$('#butHapus').prop('disabled', ($('#Lunas').val()==1 ? true : false));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Jual');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Beli']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-produk"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-produk','Cari_Produk'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Produk');
}
}).send();
}
},
Produk_Comp: function(item){
var adata = item.data.split(':');
$('#InvID').val(item.value);
$('#SatuanID').val(adata[0]);
$('#Nama_Satuan').val(adata[1]);
FoniaJS.setFocus('#Qty');
},
Produk_Key: function(key){
if (key == 13) {
} else if (key == 118) {//f7
} else if (key == 119) {//f8
} else if (key == 120) {//f9
}
},
Hitung_Detail: function(){
$('#Jumlah').val(FoniaJS.FloatToStr(FoniaJS.StrToFloat($('#Qty').val()) * FoniaJS.StrToFloat($('#Harga_Pokok').val()), 2));
}
};
+301
View File
@@ -0,0 +1,301 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/biaya_pajak.js
Desc. : JS - Pembuatan Faktur Pajak Biaya
Created By : Siau Pheng ([email protected]).
Created Date : February 9th, 2017.
Last Modified : January 8th, 2025.
(c) 2017 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var BiayaPajakJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_cek();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#printFaktur').click(function(){this.tx_print_faktur();}.bind(this));
$('#printFP').click(function(){this.tx_print_fp();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Biaya').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Biaya').val()){
FoniaJS.showError("Silakan masukkan Nomor Faktur !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Biaya').val());
},
tx_hapus: function(){
if (!$('#No_Biaya').val()){
FoniaJS.showError("Silakan masukkan Nomor Faktur !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Biaya').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Biaya'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Biaya').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Biaya').val());
}.bind(this), 'danger');
},
tx_cek: function(){
if ($('#No_Pajak').val()==$('#No_Pajak2').val()){
this.tx_simpan();
return true;
}
new Request.JSON({
url: this.PHP,
sendParam: ['data=check-nsfp','No_Pajak'],
onSuccess: function(adata){
if (adata.ada==true) {
FoniaJS.showInfo("Nomor Seri FP telah dipergunakan !");
} else {
this.tx_simpan();
}
}.bind(this)
}).send();
},
tx_simpan: function(){
if ($.trim($('#No_NPWP').val())!==$.trim($('#No_NPWP2').val())) $('#SupID').val(0);
if ($('#SupID').val()==0 && $('#No_NPWP').val().length<15) {
FoniaJS.showError("Nomor NPWP tidak kurang dari 15 digit !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Biaya').val('');
}.bind(this), 'danger');
},
tx_print_faktur: function(prt){
if ($('#No_Biaya').val()) {
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", "biaya");
cetak.add_param("Nomor_Cetak", $('#No_Biaya').val());
if (prt) cetak.doPrint(); else cetak.doPreview();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Faktur !");
},
tx_print_fp: function(prt){
if ($('#No_Biaya').val()) {
var dpdf = new cPDF(FoniaJS.WEB_PATH+'apps/php/repo/fp.php');
dpdf.add_param("data", "fp-biaya");
dpdf.add_param("Nomor_Cetak", $('#No_Biaya').val());
dpdf.showPDF();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Faktur !");
},
npwp_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_NPWP" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowNPWP">&nbsp;</div>');
this.winBNPWP = FoniaJS.showWindow('BNPWP', 'Daftar NPWP Supplier', _isi, 900, null, function(){
$('#winBNPWP').find('#Cari_NPWP').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-npwp');
}.bind(this));
$('#winBNPWP').find('#butSearch').click(function(e){
this.data_query('brow-npwp');
}.bind(this));
$('#winBNPWP').find('#butAll').click(function(){
$('#winBNPWP').find('#Cari_NPWP').val('');
this.data_query('brow-npwp');
}.bind(this));
this.data_query('brow-npwp');
FoniaJS.setFocus('#Cari_NPWP');
}.bind(this));
},
npwp_select: function(acell){
FoniaJS.closeWindow(this.winBNPWP);
$('#SupID').val(acell[0]);
$('#No_NPWP').val(acell[1]);
$('#No_NPWP2').val(acell[1]);
$('#No_NITKU').val(acell[2]);
$('#Nama_NPWP').val(acell[3]);
$('#Alamat_NPWP').val(acell[5]);
},
detail_biaya: function(mode, ID){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-biaya','No_Biaya','mode','mode_detail='+mode,'ID='+ID],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Biaya', a.html, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail')
.find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this)).end()
.find('#Qty').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && parseInt(e.target.value)>0) FoniaJS.setFocus('#Harga_Jual');
}.bind(this)).end()
.find('#Harga_Jual').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && FoniaJS.StrToFloat($('#Qty').val())>0) this.detail_simpan();
}.bind(this));
this.Hitung_Detail();
FoniaJS.setFocus('#Uraian_Biaya');
}.bind(this), false);
}.bind(this)
}).send();
},
detail_reset: function(){
$('#ID').val(0);
$('#Uraian_Biaya').val('');
$('#Qty').val(0);
$('#Harga_Jual').val(0);
FoniaJS.setFocus('#Uraian_Biaya');
},
detail_tambah: function(){
this.detail_biaya('insert', 0);
},
detail_ubah: function(acell){
this.detail_biaya('update', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Biaya','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
detail_simpan: function(){
var _mdetail = $('#mode_detail').val();
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail','No_Biaya','ID','Uraian_Biaya','Qty','Harga_Jual'],
onSuccess: function(){
if (_mdetail=='insert') { this.detail_reset(); } else FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Biaya'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Biaya','Tgl_Biaya','No_Pajak','Tgl_Pajak','SupID','No_NPWP','No_NITKU','Nama_NPWP','Alamat_NPWP','Uraian'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Biaya').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Biaya')) && ($('#No_Biaya').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butPrint').prop('disabled', ($('#No_Biaya').val()?false:true));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Biaya');
}
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Biaya','Tgl_Biaya']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-npwp"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-npwp','Cari_NPWP'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_NPWP');
}
}).send();
}
},
Hitung_Detail: function(){
$('#Jumlah').val(FoniaJS.FloatToStr(FoniaJS.StrToFloat($('#Qty').val()) * FoniaJS.StrToFloat($('#Harga_Jual').val()), 2));
}
};
+406
View File
@@ -0,0 +1,406 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual.js
Desc. : JS - Transaksi Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : May 24th, 2010.
Last Modified : October 29th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Jual').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Jual').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Jual').val());
},
tx_hapus: function(){
if (!$('#No_Jual').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Jual').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Jual','Rekap'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Jual').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Jual').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($('#OutletID').val()==0){
FoniaJS.showError("Silakan pilih Nama Outlet !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Jual').val('');
}.bind(this), 'danger');
},
tx_print: function(prt){
if ($('#No_Jual').val()) {
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", "jual");
cetak.add_param("Nomor_Cetak", $('#No_Jual').val());
if (prt) cetak.doPrint(); else cetak.doPreview();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[2]);
$('#Alamat_Outlet').val(acell[3]);
},
produk_brow: function(){
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
if ($('#OutletID').val()==0){
FoniaJS.showError("Silakan pilih Nama Outlet !");
return;
}
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Produk" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowProduk">&nbsp;</div>');
this.winBProduk = FoniaJS.showWindow('BProduk', 'Daftar Produk', _isi, 900, '', function(){
$('#winBProduk').find('#Cari_Produk').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butSearch').click(function(e){
this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butAll').click(function(){
$('#winBProduk').find('#Cari_Produk').val('');
this.data_query('brow-produk');
}.bind(this));
this.data_query('brow-produk');
FoniaJS.setFocus('#Cari_Produk');
}.bind(this));
},
produk_select: function(acell){
FoniaJS.closeWindow(this.winBProduk);
this.detail_produk('insert', 0, acell[0], acell[1]);
},
detail_produk: function(mode, ID, InvID, SatuanID){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-produk','No_Jual','mode','mode_detail='+mode,'ID='+ID,'InvID='+InvID,'SatuanID='+SatuanID],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Produk', a.html, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this));
FoniaJS.AutoComplete('#Nama_Produk', this.PHP, ['data=auto-produk','No_Jual'], this.Produk_Comp, this.Produk_Key);
$('#Nama_Produk').on('click', function(){
$('#Nama_Produk').select();
});
$('#Qty').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && parseInt(e.target.value)>0) FoniaJS.setFocus('#Harga_Jual');
}.bind(this));
$('#Harga_Jual').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13) FoniaJS.setFocus('#Total_Diskon');
}.bind(this));
$('#Total_Diskon').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && FoniaJS.StrToFloat($('#Qty').val())>0) this.detail_simpan();
}.bind(this));
if ($('#mode_detail').val() == 'insert' && $('#InvID').val() == 0) {
FoniaJS.setFocus('#Nama_Produk');
} else {
this.oc_RasaID();
this.oc_HargaJual();
this.Hitung_Detail();
FoniaJS.setFocus('#Qty');
}
}.bind(this), false);
}.bind(this)
}).send();
},
detail_reset: function(){
$('#Nama_Produk').val('');
$('#Nama_Satuan').val('');
$('#Qty').val('0.00');
$('#Total_Diskon').val('0.00');
$('#RasaID').empty();
$('#Harga_Jual').empty().append('<option selected="selected" value="0">0</option>').trigger('change');
$('#Pro_SQ').prop('checked', false).trigger('change');
$('#Pro_SD').prop('checked', false).trigger('change');
$('#Pro_ID').prop('checked', false).trigger('change');
$('#ID').val(0);
$('#InvID').val(0);
$('#SatuanID').val(0);
$('#Harga_Pokok').val(0);
FoniaJS.setFocus('#Nama_Produk');
},
detail_tambah: function(){
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
if ($('#OutletID').val()==0){
FoniaJS.showError("Silakan pilih Nama Outlet !");
return;
}
this.detail_produk('insert', 0, 0, 0);
},
detail_ubah: function(acell){
this.detail_produk('update', acell[0], 0, 0);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Jual','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
detail_simpan: function(){
if (parseInt($('#InvID').val())==0) {
FoniaJS.showError('Silakan masukkan Nama Produk !');
return;
}
var _mdetail = $('#mode_detail').val();
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail','No_Jual','GudangID','InvID','RasaID','SatuanID','Qty','Harga_Pokok','Harga_Jual','Total_Diskon','ID','Pro_SQ','Pro_SD','Pro_ID'],
onSuccess: function(){
if (_mdetail=='insert') { this.detail_reset(); } else FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Jual'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Jual','No_Faktur','Tgl_Jual','Tgl_JT','GudangID','OutletID','SalesID','HelperID','SupirID','A_Picker','Rekap','Catatan','CK'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet','No_Jual'], this.Outlet_Comp);
$('#No_Jual').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Jual')) && ($('#No_Jual').val() !== '')) this.data_query('master');
}
}.bind(this));
$('#Tgl_Jual').change(function(e){
this.oc_CK();
}.bind(this));
$('#No_Faktur').addClass('w-auto');
this.oc_CK();
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butUbah').prop('disabled', ($('#Lunas').val()==1 ? true : false));
$('#butHapus').prop('disabled', ($('#Lunas').val()==1 ? true : false));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Jual');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Jual']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
} else if (tipe=="brow-produk"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-produk','Cari_Produk'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Produk');
}
}).send();
}
},
Outlet_Comp: function(item){
var adata = item.data.split(':');
$('#OutletID').val(item.value);
$('#Alamat_Outlet').val(adata[0]);
},
Produk_Comp: function(item){
var adata = item.data.split(':');
$('#InvID').val(item.value);
$('#SatuanID').val(adata[0]);
$('#Nama_Satuan').val(adata[1]);
JualJS.oc_RasaID();
JualJS.oc_HargaJual();
FoniaJS.setFocus('#Qty');
},
Produk_Key: function(key){
if (key == 13) {
} else if (key == 118) {//f7
} else if (key == 119) {//f8
} else if (key == 120) {//f9
}
},
oc_RasaID: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=option-rasa','InvID','RasaID']
}).send();
},
oc_HargaJual: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=option-harga','InvID','SatuanID','OutletID'],
onSuccess: function(){
this.Hitung_Detail();
}.bind(this)
}).send();
},
oc_CK: function(){
if ($.inArray($('#mode').val(),['add','edit']) == -1) return false;
if ($('#CK').val()=='K') {
var tgljt = moment($('#Tgl_Jual').val(), 'DD-MM-YYYY').add($('#Termin').val(), 'days');
$('#Tgl_JT').val(tgljt.format('DD-MM-YYYY'));
} else {
$('#Tgl_JT').val($('#Tgl_Jual').val());
}
},
Hitung_Detail: function(){
if (parseInt($('#Pro_SQ').val())==1) {
$('#Total_Diskon').val(FoniaJS.FloatToStr($('#Harga_Jual').val()*FoniaJS.StrToFloat($('#Qty').val()), 2));
$('#Total_Diskon').prop('readonly', true);
} else {
$('#Total_Diskon').prop('readonly', false);
}
$('#Jumlah').val(FoniaJS.FloatToStr((FoniaJS.StrToFloat($('#Qty').val()) * FoniaJS.StrToFloat($('#Harga_Jual').val())) - FoniaJS.StrToFloat($('#Total_Diskon').val()), 2));
}
};
+248
View File
@@ -0,0 +1,248 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_do.js
Desc. : JS - Pembuatan Delivery Order Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 4th, 2011.
Last Modified : January 20th, 2024.
(c) 2010 - 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualDOJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butStatus').click(function(){this.tx_status();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_DO').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_DO').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_DO').val());
},
tx_hapus: function(){
if (!$('#No_DO').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_DO').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_DO'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_DO').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_DO').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_DO').val('');
}.bind(this), 'danger');
},
tx_status: function(){
if (!$('#No_DO').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Anda Yakin untuk ubah STATUS ORDER semua nota pada DO ini menjadi Terantar?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=status','No_DO'],
onSuccess: function(adata){
if (adata.status==true){
FoniaJS.showInfo('Proses ubah STATUS ORDER selesai!');
}else{
FoniaJS.showInfo('Ada Masalah pada proses, silakan ulangi lagi!');
}
}.bind(this)
}).send();
}.bind(this), 'warning');
},
tx_print: function(){
if (!$('#No_DO').val()) {
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
var _html = new String('<div class="row mb-1"><label class="col-sm-5 col-lg-3 col-form-label" for="Tipe">Cetak Laporan</label><div class="col col-form-label"><input type="hidden" id="Tipe" value="do-produk"><div class="form-check form-check-inline mr-2"><input class="form-check-input" id="Tipe1" type="radio" value="do-produk" name="Tipe" checked="checked" onclick="if(this.checked)$(\'#Tipe\').val(this.value);" required="false"><label class="form-check-label" for="Tipe1">Daftar Produk</label></div><div class="form-check form-check-inline mr-2"><input class="form-check-input" id="Tipe0" type="radio" value="do-faktur" name="Tipe" onclick="if(this.checked)$(\'#Tipe\').val(this.value);" required="false"><label class="form-check-label" for="Tipe0">Daftar Faktur</label></div></div></div><div class="row mb-1"><label class="col-sm-5 col-lg-3 col-form-label" for="Cetak_Catatan">Cetak Catatan</label><div class="col col-form-label"><input type="hidden" id="Cetak_Catatan" value="1"><div class="form-check form-check-inline mr-2"><input class="form-check-input" id="Cetak_Catatan1" type="radio" value="1" name="Cetak_Catatan" checked="checked" onclick="if(this.checked)$(\'#Cetak_Catatan\').val(this.value);" required="false"><label class="form-check-label" for="Cetak_Catatan1">Ya</label></div><div class="form-check form-check-inline mr-2"><input class="form-check-input" id="Cetak_Catatan0" type="radio" value="0" name="Cetak_Catatan" onclick="if(this.checked)$(\'#Cetak_Catatan\').val(this.value);" required="false"><label class="form-check-label" for="Cetak_Catatan0">Tidak</label></div></div></div>');
this.winCetak = FoniaJS.showWindow('Cetak', 'Cetak Delivery Order Penjualan', _html, 500, [{},{i:'butWPrint',v:'Cetak',c:'info'},{i:'butWPrev',v:'Pratinjau',c:'secondary'}], function(){
$('#winCetak')
.find('#butWPrev').click(function(){this.tx_print_select(false);}.bind(this)).end()
.find('#butWPrint').click(function(){this.tx_print_select(true);}.bind(this));
}.bind(this), false);
},
tx_print_select: function(prt){
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", $('#Tipe').val());
cetak.add_param("Nomor_Cetak", $('#No_DO').val());
cetak.add_param("Cetak_Catatan");
if (prt) cetak.doPrint(); else cetak.doPreview();
},
jual_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col d-flex justify-content-between"><div class="input-group me-3"><input class="form-control" id="Cari_Jual" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div><button class="btn btn-success shadow-none" type="button" id="butWSimpan">Simpan</button></div></div><div id="divBrowJual">&nbsp;</div>');
this.winBJual = FoniaJS.showWindow('BJual', 'Daftar Transaksi Penjualan', _isi, 900, null, function(){
$('#winBJual').find('#butWSimpan').click(function(){this.jual_simpan();}.bind(this));
$('#winBJual').find('#Cari_Jual').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-jual');
}.bind(this));
$('#winBJual').find('#butSearch').click(function(e){
this.data_query('brow-jual');
}.bind(this));
$('#winBJual').find('#butAll').click(function(){
$('#winBJual').find('#Cari_Jual').val('');
this.data_query('brow-jual');
}.bind(this));
this.data_query('brow-jual');
FoniaJS.setFocus('#Cari_Jual');
}.bind(this));
},
jual_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[0]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_DO','No_Jual='+acell[0]]
}).send();
}.bind(this), 'danger');
},
jual_simpan: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=insert','No_DO'],
onSuccess: function(){
FoniaJS.closeWindow(this.winBJual);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_DO'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_DO','Tgl_DO','MobilID','SupirID','A_Picker','Catatan'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_DO').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_DO')) && ($('#No_DO').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butStatus').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butStatus').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butPrint').prop('disabled', ($('#No_DO').val() ? false : true));
$('#butStatus').prop('disabled', ($('#No_DO').val() ? false : true));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_DO');
}
if ($('#mode').val()=='print') this.tx_print_faktur(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_DO']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-jual"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-jual','Cari_Jual'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Jual');
}
}).send();
}
}
};
+182
View File
@@ -0,0 +1,182 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_lunas.js
Desc. : JS - Transaksi Pelunasan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : February 28th, 2011.
Last Modified : October 19th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualLunasJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butMode').click(function(){this.tx_mode();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
if (FoniaJS.User.Level>1) $('#butMode').hide();
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_mode: function(){
var mode = ($('#Mode_Tampil').val()==1) ? 0 : 1;
$('#Mode_Tampil').val(mode);
$('#butMode').html('<i class="bi-list me-2"></i>'+(mode==1?'Semua':'Normal'));
this.data_query('tabel-nota');
},
tx_batal: function(){
$('#divTXNota').removeClass('d-none');
$('#divDetailNota').addClass('d-none');
$('#divDetailBayar').addClass('d-none');
if (FoniaJS.User.Level<=1) $('#butMode').removeClass('d-none');
$('#butBatal').addClass('d-none');
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#Nama_Outlet').prop('disabled', false).removeClass('disabled').addClass('enabled');
this.data_query('tabel-nota');
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[1]);
$('#Alamat_Outlet').val(acell[4]);
this.data_query('tabel-nota');
},
nota_select: function(acell){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-nota','No_Jual='+acell[1],'Tipe_Nota='+acell[0]],
onSuccess: function(ajson){
$('#divDetailNota').html(ajson.html);
$('#divTXNota').addClass('d-none');
$('#divDetailNota').removeClass('d-none');
$('#divDetailBayar').removeClass('d-none');
if (FoniaJS.User.Level==0) $('#butMode').addClass('d-none');
$('#butBatal').removeClass('d-none');
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#Nama_Outlet').prop('disabled', true).removeClass('enabled').addClass('disabled');
this.data_query('tabel-bayar');
}.bind(this)
}).send();
},
bayar_show: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-bayar','No_Jual','Total_Sisa'],
onSuccess: function(ajson){
this.winBayar = FoniaJS.showWindow('Bayar', 'Detail Pembayaran', ajson.html, 500, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winBayar').find('#butWSimpan').click(function(){this.bayar_simpan();}.bind(this));
this.Hitung_Detail();
FoniaJS.setFocus('#Total_Bayar');
}.bind(this), false);
}.bind(this)
}).send();
},
bayar_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-bayar','mode_detail=delete','No_Jual','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
bayar_simpan: function(){
if ((FoniaJS.StrToFloat($('#Total_Bayar').val()) + FoniaJS.StrToFloat($('#Total_Potong').val())) > $('#Total_Sisa').val()){
FoniaJS.showError("Jumlah pelunasan melebihi jumlah faktur!");
return;
}
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-bayar','mode_detail=insert','No_Jual','Tipe','Tgl_Bayar','Tgl_Cair','Total_Bayar','Total_Potong','Tipe_Nota','Rekap'],
onSuccess: function(){
FoniaJS.closeWindow(this.winBayar);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
new Request.JSON({
url: this.PHP,
sendParam: ['data=master','OutletID'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')],
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
this.tx_batal();
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet'], this.Outlet_Comp);
$('#Nama_Outlet').on('click', function(){
$('#Nama_Outlet').select();
});
if (ajson.error) {
FoniaJS.showError(ajson.error);
}
FoniaJS.setFocus('#Nama_Outlet');
}.bind(this)
}).send();
} else if (tipe=="tabel-nota"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-nota','OutletID','Mode_Tampil']
}).send();
} else if (tipe=="tabel-bayar"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-bayar','No_Jual','Lunas','Mode_Tampil']
}).send();
} else if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
}
},
Outlet_Comp: function(item){
$('#OutletID').val(item.value);
$('#Alamat_Outlet').val(item.data);
JualLunasJS.data_query('tabel-nota');
},
Hitung_Detail: function(){
$('#Temp_Sisa').val(FoniaJS.FloatToStr(FoniaJS.StrToFloat($('#Temp_Total').val()) - FoniaJS.StrToFloat($('#Total_Bayar').val()) - FoniaJS.StrToFloat($('#Total_Potong').val()), 2));
},
oc_Tipe: function(){
if ($('#Tipe').val()==1){
$('#divTglCair').addClass('d-none');
} else {
$('#divTglCair').removeClass('d-none');
}
}
};
+63
View File
@@ -0,0 +1,63 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_lunas_sales.js
Desc. : JS - Transaksi Pelunasan Sales
Created By : Siau Pheng ([email protected]).
Created Date : March 29th, 2012.
Last Modified : May 26th, 2023.
(c) 2012 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualLunasSalesJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_simpan: function(){
if ($('#Tgl_Bayar').val()=='00-00-0000'){
FoniaJS.showError("Silakan pilih Tanggal Bayar !");
return;
}
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode=bayar','SalesID','Tgl_Bayar']
}).send();
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
}.bind(this), 'danger');
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
new Request.JSON({
url: this.PHP,
sendParam: ['data=master','mode='+mode,'SalesID'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')],
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
this.data_query('tabel-detail');
if (ajson.error) {
FoniaJS.showError(ajson.error);
$('#SalesID').focus();
}
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','SalesID']
}).send();
}
}
};
+118
View File
@@ -0,0 +1,118 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_lunas_tagihan.js
Desc. : JS - Transaksi Pelunasan Daftar Tagihan
Created By : Siau Pheng ([email protected]).
Created Date : March 17th, 2012.
Last Modified : January 20th, 2024.
(c) 2012 - 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualLunasTagihanJS = {
PHP: '',
KODE: '',
loading: function(q){
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Tagih').val(acell[0]);
this.data_query('master', 'view');
},
jual_detail: function(acell){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-jual','No_Jual='+acell[0]],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Transaksi', a.html, 900, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.jual_simpan();}.bind(this));
this.oc_Tipe();
FoniaJS.setFocus('#Total_Bayar');
}.bind(this), false);
}.bind(this)
}).send();
},
jual_simpan: function(){
if ((FoniaJS.StrToFloat($('#Total_Bayar').val()) + FoniaJS.StrToFloat($('#Total_Potong').val())) > $('#Total_Sisa').val()){
FoniaJS.showError('Jumlah pelunasan melebihi jumlah faktur !');
return;
}
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode_detail=insert','No_Tagih','No_Jual','Tipe','Tgl_Bayar','Tgl_Cair','Total_Bayar','Total_Potong','Rekap'],
onSuccess: function(){
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
new Request.JSON({
url: this.PHP,
sendParam: ['data=master','mode='+mode,'No_Tagih'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')],
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Tagih').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Tagih')) && ($('#No_Tagih').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Tagih');
}
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Tagih']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
}
},
oc_Tipe: function(){
if (parseInt($('#Tipe').val())==1) {
$('#Tgl_Cair').prop('disabled', true).prop('readonly', true).removeClass('enabled').addClass('disabled');
} else {
$('#Tgl_Cair').prop('disabled', false).prop('readonly', false).removeClass('disabled').addClass('enabled');
}
}
};
+76
View File
@@ -0,0 +1,76 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_pajak.js
Desc. : JS - Pembuatan Faktur Pajak Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 13th, 2011.
Last Modified : December 27th, 2024.
(c) 2011 - 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualPajakJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('tabel-detail');
$('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('tabel-detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('tabel-detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_TX').val('');
this.data_query('tabel-detail');
}.bind(this));
FoniaJS.setFocus('#Cari_TX');
},
tx_select: function(acell){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-nsfp','No_Jual='+acell[0]],
onSuccess: function(a){
this.winDFP = FoniaJS.showWindow('DFP', 'Informasi Pembuatan Faktur Pajak', a.html, 900, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDFP').find('#butWSimpan').click(function(){this.tx_simpan();}.bind(this));
FoniaJS.setFocus('#No_Pajak');
}.bind(this), false);
}.bind(this)
}).send();
},
tx_simpan: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=check-nsfp','No_Pajak'],
onSuccess: function(adata){
if (adata.ada==true) {
FoniaJS.showInfo('Nomor Seri FP telah dipergunakan !');
} else {
this.data_query('tabel-detail', 'save-nsfp');
}
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="tabel-detail"){
var sparam = ['data=tabel-detail','mode='+mode,'Cari_TX'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save-nsfp') sparam.push('No_Jual','No_Pajak','Tgl_Pajak','No_NPWP','Nama_NPWP','Alamat_NPWP','OutletID');
new Request.JSONF({
url: this.PHP,
sendParam: sparam,
onSuccess: function(){
FoniaJS.closeWindow(this.winDFP);
FoniaJS.setFocus('#Cari_TX');
}.bind(this)
}).send();
}
}
};
+259
View File
@@ -0,0 +1,259 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_pajak_2025.js
Desc. : JS - Pembuatan FP Gabungan Penjualan 2025
Created By : Siau Pheng ([email protected]).
Created Date : March 13th, 2011.
Last Modified : January 8th, 2025.
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualPajak2025JS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX')
.find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this)).end()
.find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this)).end()
.find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Pajak').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Pajak').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Pajak').val());
},
tx_hapus: function(){
if (!$('#No_Pajak').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Pajak').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Pajak'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Pajak').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Pajak').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($.trim($('#No_NPWP').val())!==$.trim($('#No_NPWP2').val())) $('#OutletID').val(0);
if ($('#OutletID').val()==0 && $('#No_NPWP').val().length<15) {
FoniaJS.showError("Nomor NPWP tidak kurang dari 15 digit !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Pajak').val('');
}.bind(this), 'danger');
},
/*tx_print: function(prt){
if ($('#No_Pajak').val()) {
var dpdf = new cPDF(FoniaJS.WEB_PATH+'apps/php/repo/fp.php');
dpdf.add_param("data", "fp-jual");
dpdf.add_param("Nomor_Cetak", $('#No_Pajak').val());
dpdf.showPDF();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
},*/
npwp_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_NPWP" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowNPWP">&nbsp;</div>');
this.winBNPWP = FoniaJS.showWindow('BNPWP', 'Daftar NPWP Outlet', _isi, 900, null, function(){
$('#winBNPWP')
.find('#Cari_NPWP').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-npwp');
}.bind(this)).end()
.find('#butSearch').click(function(e){
this.data_query('brow-npwp');
}.bind(this)).end()
.find('#butAll').click(function(){
$('#winBNPWP').find('#Cari_NPWP').val('');
this.data_query('brow-npwp');
}.bind(this));
this.data_query('brow-npwp');
FoniaJS.setFocus('#Cari_NPWP');
}.bind(this));
},
npwp_select: function(acell){
FoniaJS.closeWindow(this.winBNPWP);
$('#OutletID').val(acell[0]);
$('#No_NPWP').val(acell[1]);
$('#No_NPWP2').val(acell[1]);
$('#No_NITKU').val(acell[2]);
$('#Nama_NPWP').val(acell[3]);
$('#Alamat_NPWP').val(acell[5]);
},
jual_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col d-flex justify-content-between"><div class="input-group me-3"><input class="form-control" id="Cari_Jual" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div><button class="btn btn-success shadow-none" type="button" id="butWSimpan">Simpan</button></div></div><div id="divBrowJual">&nbsp;</div>');
this.winBJual = FoniaJS.showWindow('BJual', 'Daftar Transaksi Penjualan', _isi, 900, null, function(){
$('#winBJual')
.find('#butWSimpan').click(function(){this.jual_simpan();}.bind(this)).end()
.find('#Cari_Jual').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-jual');
}.bind(this)).end()
.find('#butSearch').click(function(e){
this.data_query('brow-jual');
}.bind(this)).end()
.find('#butAll').click(function(){
$('#winBJual').find('#Cari_Jual').val('');
this.data_query('brow-jual');
}.bind(this));
this.data_query('brow-jual');
FoniaJS.setFocus('#Cari_Jual');
}.bind(this));
},
jual_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[0]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Pajak','No_Jual='+acell[0]]
}).send();
}.bind(this), 'danger');
},
jual_simpan: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=insert','No_Pajak'],
onSuccess: function(){
FoniaJS.closeWindow(this.winBJual);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Pajak'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Pajak','Tgl_Pajak','OutletID','No_NPWP','No_NITKU','Nama_NPWP','Alamat_NPWP'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Pajak').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Pajak')) && ($('#No_Pajak').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
//$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
//$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butBatal').prop('disabled', ($('#mode').val()=='edit' ? true : false));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Pajak');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Pajak']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-npwp"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-npwp','Cari_NPWP'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_NPWP');
}
}).send();
} else if (tipe=="brow-jual"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-jual','Cari_Jual'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Jual');
}
}).send();
}
}
};
+277
View File
@@ -0,0 +1,277 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_pajak_gab.js
Desc. : JS - Pembuatan Faktur Pajak Gabungan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 13th, 2011.
Last Modified : October 29th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualPajakGabJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_cek();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Pajak').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Pajak').val()){
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Pajak').val());
},
tx_hapus: function(){
if (!$('#No_Pajak').val()){
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Pajak').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Pajak'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Pajak').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Pajak').val());
}.bind(this), 'danger');
},
tx_cek: function(){
if ($('#No_Pajak').val()==$('#No_TRX').val()){
this.tx_simpan();
return true;
}
new Request.JSON({
url: this.PHP,
sendParam: ['data=check-nsfp','No_Pajak'],
onSuccess: function(adata){
if (adata.ada==true) {
FoniaJS.showInfo("Nomor Seri FP telah dipergunakan !");
} else {
this.tx_simpan();
}
}.bind(this)
}).send();
},
tx_simpan: function(){
if ($.trim($('#No_NPWP').val())!==$.trim($('#No_NPWP2').val())) $('#OutletID').val(0);
if ($('#OutletID').val()==0 && $('#No_NPWP').val().length<15) {
FoniaJS.showError("Nomor NPWP tidak kurang dari 15 digit !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Pajak').val('');
}.bind(this), 'danger');
},
tx_print: function(prt){
if ($('#No_Pajak').val()) {
var dpdf = new cPDF(FoniaJS.WEB_PATH+'apps/php/repo/fp.php');
dpdf.add_param("data", "fp-jual");
dpdf.add_param("Nomor_Cetak", $('#No_Pajak').val());
dpdf.showPDF();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
},
npwp_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_NPWP" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowNPWP">&nbsp;</div>');
this.winBNPWP = FoniaJS.showWindow('BNPWP', 'Daftar NPWP Outlet', _isi, 900, null, function(){
$('#winBNPWP').find('#Cari_NPWP').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-npwp');
}.bind(this));
$('#winBNPWP').find('#butSearch').click(function(e){
this.data_query('brow-npwp');
}.bind(this));
$('#winBNPWP').find('#butAll').click(function(){
$('#winBNPWP').find('#Cari_NPWP').val('');
this.data_query('brow-npwp');
}.bind(this));
this.data_query('brow-npwp');
FoniaJS.setFocus('#Cari_NPWP');
}.bind(this));
},
npwp_select: function(acell){
FoniaJS.closeWindow(this.winBNPWP);
$('#OutletID').val(acell[0]);
$('#No_NPWP').val(acell[1]);
$('#No_NPWP2').val(acell[1]);
$('#Nama_NPWP').val(acell[2]);
$('#Alamat_NPWP').val(acell[4]);
},
jual_brow: function(){
if ($('#No_Pajak').val()==''){
FoniaJS.showError("Silakan masukkan Nomor Seri FP !");
return;
}
var _isi = new String('<div class="row mb-1"><div class="col d-flex justify-content-between"><div class="input-group me-3"><input class="form-control" id="Cari_Jual" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div><button class="btn btn-success shadow-none" type="button" id="butWSimpan">Simpan</button></div></div><div id="divBrowJual">&nbsp;</div>');
this.winBJual = FoniaJS.showWindow('BJual', 'Daftar Transaksi Penjualan', _isi, 900, null, function(){
$('#winBJual').find('#butWSimpan').click(function(){this.jual_simpan();}.bind(this));
$('#winBJual').find('#Cari_Jual').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-jual');
}.bind(this));
$('#winBJual').find('#butSearch').click(function(e){
this.data_query('brow-jual');
}.bind(this));
$('#winBJual').find('#butAll').click(function(){
$('#winBJual').find('#Cari_Jual').val('');
this.data_query('brow-jual');
}.bind(this));
this.data_query('brow-jual');
FoniaJS.setFocus('#Cari_Jual');
}.bind(this));
},
jual_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[0]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Pajak','No_TRX','No_Jual='+acell[0]]
}).send();
}.bind(this), 'danger');
},
jual_simpan: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=insert','No_Pajak','No_TRX'],
onSuccess: function(){
FoniaJS.closeWindow(this.winBJual);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Pajak'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:''),'No_TRX'];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Pajak','No_TRX','Tgl_Pajak','OutletID','No_NPWP','Nama_NPWP','Alamat_NPWP'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Pajak').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Pajak')) && ($('#No_Pajak').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butBatal').prop('disabled', ($('#mode').val()=='edit' ? true : false));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Pajak');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Pajak','No_TRX']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-npwp"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-npwp','Cari_NPWP'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_NPWP');
}
}).send();
} else if (tipe=="brow-jual"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-jual','Cari_Jual'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Jual');
}
}).send();
}
}
};
+377
View File
@@ -0,0 +1,377 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_retur.js
Desc. : JS - Transaksi Retur Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 28th, 2011.
Last Modified : May 22nd, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualReturJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Jual').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Jual').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_Jual').val());
},
tx_hapus: function(){
if (!$('#No_Jual').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Jual').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Jual'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Jual').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_Jual').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($('#OutletID').val()==0){
FoniaJS.showError("Silakan pilih Nama Outlet !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Jual').val('');
}.bind(this), 'danger');
},
tx_print: function(prt){
if ($('#No_Jual').val()) {
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", "retur-jual");
cetak.add_param("Nomor_Cetak", $('#No_Jual').val());
if (prt) cetak.doPrint(); else cetak.doPreview();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[2]);
$('#Alamat_Outlet').val(acell[3]);
},
produk_brow: function(){
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
if ($('#OutletID').val()==0){
FoniaJS.showError("Silakan pilih Nama Outlet !");
return;
}
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Produk" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowProduk">&nbsp;</div>');
this.winBProduk = FoniaJS.showWindow('BProduk', 'Daftar Produk', _isi, 900, '', function(){
$('#winBProduk').find('#Cari_Produk').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butSearch').click(function(e){
this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butAll').click(function(){
$('#winBProduk').find('#Cari_Produk').val('');
this.data_query('brow-produk');
}.bind(this));
this.data_query('brow-produk');
FoniaJS.setFocus('#Cari_Produk');
}.bind(this));
},
produk_select: function(acell){
FoniaJS.closeWindow(this.winBProduk);
this.detail_produk('insert', 0, acell[0], acell[1]);
},
detail_produk: function(mode, ID, InvID, SatuanID){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-produk','No_Jual','mode','mode_detail='+mode,'ID='+ID,'InvID='+InvID,'SatuanID='+SatuanID],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Produk', a.html, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this));
FoniaJS.AutoComplete('#Nama_Produk', this.PHP, ['data=auto-produk','No_Jual'], this.Produk_Comp, this.Produk_Key);
$('#Nama_Produk').on('click', function(){
$('#Nama_Produk').select();
});
$('#Qty').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && parseInt(e.target.value)>0) FoniaJS.setFocus('#Harga_Jual');
}.bind(this));
$('#Harga_Jual').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && FoniaJS.StrToFloat($('#Qty').val())>0) this.detail_simpan();
}.bind(this));
if ($('#mode_detail').val() == 'insert' && $('#InvID').val() == 0) {
FoniaJS.setFocus('#Nama_Produk');
} else {
this.oc_RasaID();
this.oc_HargaJual();
this.Hitung_Detail();
FoniaJS.setFocus('#Qty');
}
}.bind(this), false);
}.bind(this)
}).send();
},
detail_reset: function(){
$('#Nama_Produk').val('');
$('#Nama_Satuan').val('');
$('#Qty').val('0.00');
$('#RasaID').empty();
$('#Harga_Jual').empty().append('<option selected="selected" value="0">0</option>').trigger('change');
$('#ID').val(0);
$('#InvID').val(0);
$('#SatuanID').val(0);
$('#Harga_Pokok').val(0);
FoniaJS.setFocus('#Nama_Produk');
},
detail_tambah: function(){
if ($('#GudangID').val()==0){
FoniaJS.showError("Silakan pilih Lokasi Gudang !");
return;
}
if ($('#OutletID').val()==0){
FoniaJS.showError("Silakan pilih Nama Outlet !");
return;
}
this.detail_produk('insert', 0, 0, 0);
},
detail_ubah: function(acell){
this.detail_produk('update', acell[0], 0, 0);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Jual','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
detail_simpan: function(){
if (parseInt($('#InvID').val())==0) {
FoniaJS.showError('Silakan masukkan Nama Produk !');
return;
}
var _mdetail = $('#mode_detail').val();
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail','No_Jual','GudangID','InvID','RasaID','SatuanID','Qty','Harga_Pokok','Harga_Jual','ID'],
onSuccess: function(){
if (_mdetail=='insert') { this.detail_reset(); } else FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Jual'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Jual','Tgl_Jual','GudangID','OutletID','Catatan'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet','No_Jual'], this.Outlet_Comp);
$('#No_Jual').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Jual')) && ($('#No_Jual').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butUbah').prop('disabled', ($('#Lunas').val()==1 ? true : false));
$('#butHapus').prop('disabled', ($('#Lunas').val()==1 ? true : false));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Jual');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Jual']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
} else if (tipe=="brow-produk"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-produk','Cari_Produk'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Produk');
}
}).send();
}
},
Outlet_Comp: function(item){
var adata = item.data.split(':');
$('#OutletID').val(item.value);
$('#Alamat_Outlet').val(adata[0]);
},
Produk_Comp: function(item){
var adata = item.data.split(':');
$('#InvID').val(item.value);
$('#SatuanID').val(adata[0]);
$('#Nama_Satuan').val(adata[1]);
JualReturJS.oc_RasaID();
JualReturJS.oc_HargaJual();
FoniaJS.setFocus('#Qty');
},
Produk_Key: function(key){
if (key == 13) {
} else if (key == 118) {//f7
} else if (key == 119) {//f8
} else if (key == 120) {//f9
}
},
oc_RasaID: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=option-rasa','InvID']
}).send();
},
oc_HargaJual: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=option-harga','InvID','SatuanID','OutletID'],
onSuccess: function(){
this.Hitung_Detail();
}.bind(this)
}).send();
},
Hitung_Detail: function(){
$('#Jumlah').val(FoniaJS.FloatToStr(FoniaJS.StrToFloat($('#Qty').val()) * FoniaJS.StrToFloat($('#Harga_Jual').val()), 2));
}
};
+148
View File
@@ -0,0 +1,148 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_retur_kemas.js
Desc. : JS - Transaksi Retur Kemasan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : February 27th, 2011.
Last Modified : May 21st, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualReturKemasJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Jual').val(acell[0]);
this.data_query('master', 'view');
},
tx_ubah: function(){
if (!$('#No_Jual').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
this.data_query('master', 'edit');
},
tx_simpan: function(){
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Jual').val('');
}.bind(this), 'danger');
},
detail_produk: function(mode, InvID, SatuanID, QtyO, QtyI, HargaP, HargaJ){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-produk','No_Jual','mode_detail='+mode,'InvID='+InvID,'SatuanID='+SatuanID,'QtyOut='+QtyO,'QtyIn='+QtyI,'Harga_Pokok='+HargaP,'Harga_Jual='+HargaJ],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Produk', a.html, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this));
$('#QtyIn').keyup(function(e) {
if (e.which==13 && FoniaJS.StrToFloat($('#QtyIn').val())>0) this.detail_simpan();
}.bind(this));
FoniaJS.setFocus('#QtyIn');
}.bind(this), false);
}.bind(this)
}).send();
},
detail_ubah: function(acell){
this.detail_produk('update', acell[0], acell[1], acell[4],acell[5], acell[6], acell[7]);
},
detail_simpan: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=update','No_Jual','GudangID','InvID','SatuanID','QtyOut','QtyIn','Harga_Pokok','Harga_Jual'],
onSuccess: function(){
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Jual'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Jual','Tgl_Jual','GudangID','Rekap'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Jual').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Jual')) && ($('#No_Jual').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butUbah').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butUbah').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#butUbah').prop('disabled', ($('#Lunas').val()==1 ? true : false));
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Jual');
}
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Jual']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
}
}
};
+79
View File
@@ -0,0 +1,79 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_status.js
Desc. : JS - Validasi Status Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 8th, 2011.
Last Modified : May 21st, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualStatusJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
this.data_query('tabel-detail');
$('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('tabel-detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('tabel-detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_TX').val('');
this.data_query('tabel-detail');
}.bind(this));
FoniaJS.setFocus('#Cari_TX');
},
tx_ubah: function(){
this.data_query('tabel-detail', 'edit');
},
tx_simpan: function(){
this.data_query('tabel-detail', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('tabel-detail', 'cancel');
}.bind(this), 'danger');
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="tabel-detail"){
var sparam = ['data=tabel-detail','mode='+mode,'Cari_TX'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam.push('mode_detail=insert');
new Request.JSONF({
url: this.PHP,
sendParam: sparam,
onSuccess: function(){
var _disa = false;
if ($.inArray(mode,['add','edit']) !== -1) {
$('#butUbah').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
_disa = true;
} else {
$('#butUbah').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
$('#Cari_TX').prop('disabled', _disa);
$('#butSearch').prop('disabled', _disa);
$('#butAll').prop('disabled', _disa);
FoniaJS.setFocus('#Cari_TX');
}.bind(this)
}).send();
}
}
};
+236
View File
@@ -0,0 +1,236 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/jual_tagihan.js
Desc. : JS - Pembuatan Daftar Tagihan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 10th, 2011.
Last Modified : January 22nd, 2024.
(c) 2011 - 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var JualTagihanJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_Tagih').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_Tagih').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
this.data_query('master', 'edit');
},
tx_hapus: function(){
if (!$('#No_Tagih').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_Tagih').val()+'</strong> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_Tagih'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_Tagih').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($('#SalesID').val()==0){
FoniaJS.showError("Silakan masukkan Nama Sales !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_Tagih').val('');
}.bind(this), 'danger');
},
tx_print: function(){
if (!$('#No_Tagih').val()) {
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
var _html = new String('<div class="row mb-1"><label class="col-sm-6 col-lg-5 col-form-label">Nomor Tagihan</label><div class="col"><input type="text" class="form-control" value="'+$('#No_Tagih').val()+'" readonly=""></div></div><div class="row mb-1"><label class="col-sm-6 col-lg-5 col-form-label" for="Cetak_Lunas">Termasuk Nota Lunas ?</label><div class="col col-form-label"><input type="hidden" id="Cetak_Lunas" value="0"><div class="form-check form-check-inline mr-2"><input class="form-check-input" id="Cetak_Lunas1" type="radio" value="1" name="Cetak_Lunas" checked="checked" onclick="if(this.checked)$(\'#Cetak_Lunas\').val(this.value);" required="false"><label class="form-check-label" for="Cetak_Lunas1">Ya</label></div><div class="form-check form-check-inline mr-2"><input class="form-check-input" id="Cetak_Lunas0" type="radio" value="0" name="Cetak_Lunas" onclick="if(this.checked)$(\'#Cetak_Lunas\').val(this.value);" required="false"><label class="form-check-label" for="Cetak_Lunas0">Tidak</label></div></div></div>');
this.winCetak = FoniaJS.showWindow('Cetak', 'Cetak Daftar Tagihan Penjualan', _html, 500, [{},{i:'butWPrint',v:'Cetak',c:'info'},{i:'butWPrev',v:'Pratinjau',c:'secondary'}], function(){
$('#winCetak')
.find('#butWPrev').click(function(){this.tx_print_select(false);}.bind(this)).end()
.find('#butWPrint').click(function(){this.tx_print_select(true);}.bind(this));
}.bind(this), false);
},
tx_print_select: function(prt){
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", "tagih");
cetak.add_param("Nomor_Cetak", $('#No_Tagih').val());
cetak.add_param("Cetak_Lunas");
if (prt) cetak.doPrint(); else cetak.doPreview();
},
jual_brow: function(){
if ($('#SalesID').val()==0){
FoniaJS.showError("Silakan masukkan Nama Sales !");
return;
}
var _isi = new String('<div class="row mb-1"><div class="col d-flex justify-content-between"><div class="input-group me-3"><input class="form-control" id="Cari_Jual" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div><button class="btn btn-success shadow-none" type="button" id="butWSimpan">Simpan</button></div></div><div id="divBrowJual">&nbsp;</div>');
this.winBJual = FoniaJS.showWindow('BJual', 'Daftar Transaksi Penjualan', _isi, 900, null, function(){
$('#winBJual').find('#butWSimpan').click(function(){this.jual_simpan();}.bind(this));
$('#winBJual').find('#Cari_Jual').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-jual');
}.bind(this));
$('#winBJual').find('#butSearch').click(function(e){
this.data_query('brow-jual');
}.bind(this));
$('#winBJual').find('#butAll').click(function(){
$('#winBJual').find('#Cari_Jual').val('');
this.data_query('brow-jual');
}.bind(this));
this.data_query('brow-jual');
FoniaJS.setFocus('#Cari_Jual');
}.bind(this));
},
jual_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[0]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_Tagih','Tgl_Tagih','No_Jual='+acell[0]]
}).send();
}.bind(this), 'danger');
},
jual_simpan: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=insert','No_Tagih','Tgl_Tagih'],
onSuccess: function(){
FoniaJS.closeWindow(this.winBJual);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_Tagih'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_Tagih','Tgl_Tagih','SalesID'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_Tagih').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_Tagih')) && ($('#No_Tagih').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_Tagih');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_Tagih','Tgl_Tagih']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-jual"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-jual','No_Tagih','Cari_Jual'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Jual');
}
}).send();
}
},
oc_SalesID: function(obj){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=info-sales','SalesID='+obj.value]
}).send();
}
};
+305
View File
@@ -0,0 +1,305 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/ias/manual_do.js
Desc. : JS - Transaksi Pembuatan DO Manual
Created By : Siau Pheng ([email protected]).
Created Date : January 23rd, 2024.
(c) 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var ManualDOJS = {
PHP: '',
KODE: '',
loading: function(q){
$('#butTambah').click(function(){this.tx_tambah();}.bind(this));
$('#butUbah').click(function(){this.tx_ubah();}.bind(this));
$('#butHapus').click(function(){this.tx_hapus();}.bind(this));
$('#butSimpan').click(function(){this.tx_simpan();}.bind(this));
$('#butBatal').click(function(){this.tx_batal();}.bind(this));
$('#butPrint').click(function(){this.tx_print();}.bind(this));
this.data_query('master', 'view', ((typeof(q)!=='undefined') ? q : ''));
},
tx_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowTX">&nbsp;</div>');
this.winBTX = FoniaJS.showWindow('BTX', 'Daftar Transaksi', _isi, 900, '', function(){
$('#winBTX').find('#Cari_TX').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butSearch').click(function(e){
this.data_query('brow-tx');
}.bind(this));
$('#winBTX').find('#butAll').click(function(){
$('#winBTX').find('#Cari_TX').val('');
this.data_query('brow-tx');
}.bind(this));
this.data_query('brow-tx');
FoniaJS.setFocus('#Cari_TX');
}.bind(this));
},
tx_select: function(acell){
FoniaJS.closeWindow(this.winBTX);
$('#No_MDO').val(acell[0]);
this.data_query('master', 'view');
},
tx_tambah: function(){
this.data_query('master', 'add');
},
tx_ubah: function(){
if (!$('#No_MDO').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showAuth(function(){this.data_query('master', 'edit')}.bind(this), this, 'EDIT '+$('#No_MDO').val());
},
tx_hapus: function(){
if (!$('#No_MDO').val()){
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
return;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <strong>'+$('#No_MDO').val()+'</strong> ?', function(){
FoniaJS.showAuth(function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=delete','No_MDO'],
onSuccess: function(adata){
if (adata.status==true){
$('#No_MDO').val('');
this.data_query('master', 'view');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), this, 'DELETE '+$('#No_MDO').val());
}.bind(this), 'danger');
},
tx_simpan: function(){
if ($('#SuperID').val()==0){
FoniaJS.showError("Silakan pilih Nama Supir !");
return;
}
this.data_query('master', 'save');
},
tx_batal: function(){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan membatalkan ?', function(){
this.data_query('master', 'cancel');
$('#No_MDO').val('');
}.bind(this), 'danger');
},
tx_print: function(prt){
if ($('#No_MDO').val()) {
var cetak = new cPRINTER(FoniaJS.WEB_PATH+'apps/php/repo/nota.php');
cetak.add_param("data", "mdo");
cetak.add_param("Nomor_Cetak", $('#No_MDO').val());
if (prt) cetak.doPrint(); else cetak.doPreview();
return;
}
FoniaJS.showError("Silakan masukkan Nomor Transaksi !");
},
produk_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Produk" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowProduk">&nbsp;</div>');
this.winBProduk = FoniaJS.showWindow('BProduk', 'Daftar Produk', _isi, 900, '', function(){
$('#winBProduk').find('#Cari_Produk').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butSearch').click(function(e){
this.data_query('brow-produk');
}.bind(this));
$('#winBProduk').find('#butAll').click(function(){
$('#winBProduk').find('#Cari_Produk').val('');
this.data_query('brow-produk');
}.bind(this));
this.data_query('brow-produk');
FoniaJS.setFocus('#Cari_Produk');
}.bind(this));
},
produk_select: function(acell){
FoniaJS.closeWindow(this.winBProduk);
this.detail_produk('insert', 0, acell[0], acell[1]);
},
detail_produk: function(mode, ID, InvID, SatuanID){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-produk','No_MDO','mode','mode_detail='+mode,'ID='+ID,'InvID='+InvID,'SatuanID='+SatuanID],
onSuccess: function(a){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Produk', a.html, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_simpan();}.bind(this));
FoniaJS.AutoComplete('#Nama_Produk', this.PHP, ['data=auto-produk','No_MDO'], this.Produk_Comp, this.Produk_Key);
$('#Nama_Produk').on('click', function(){
$('#Nama_Produk').select();
});
$('#Muat').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && parseInt(e.target.value)>0) FoniaJS.setFocus('#Kembali');
}.bind(this));
$('#Kembali').keyup(function(e) {
this.Hitung_Detail();
if (e.which==13 && FoniaJS.StrToFloat($('#Muat').val())>0) this.detail_simpan();
}.bind(this));
if ($('#mode_detail').val() == 'insert' && $('#InvID').val() == 0) {
FoniaJS.setFocus('#Nama_Produk');
} else {
this.oc_RasaID();
this.Hitung_Detail();
FoniaJS.setFocus('#Muat');
}
}.bind(this), false);
}.bind(this)
}).send();
},
detail_reset: function(){
$('#Nama_Produk').val('');
$('#Nama_Satuan').val('');
$('#Muat').val('0.00');
$('#Kembali').val('0.00');
$('#Terantar').val('0.00');
$('#RasaID').empty();
$('#ID').val(0);
$('#InvID').val(0);
$('#SatuanID').val(0);
FoniaJS.setFocus('#Nama_Produk');
},
detail_tambah: function(){
this.detail_produk('insert', 0, 0, 0);
},
detail_ubah: function(acell){
this.detail_produk('update', acell[0], 0, 0);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Hapus item <strong>"'+acell[1]+'"</strong> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail=delete','No_MDO','ID='+acell[0]]
}).send();
}.bind(this), 'danger');
},
detail_simpan: function(){
if (parseInt($('#InvID').val())==0) {
FoniaJS.showError('Silakan masukkan Nama Produk !');
return;
}
var _mdetail = $('#mode_detail').val();
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','mode_detail','No_MDO','InvID','RasaID','SatuanID','Muat','Kembali','ID'],
onSuccess: function(){
if (_mdetail=='insert') { this.detail_reset(); } else FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode, kd_tx){
if (tipe=="master"){
var sparam = ['data=master','mode='+mode,'No_MDO'+((typeof(kd_tx)!=='undefined')?'='+kd_tx:'')];
if ((mode ?? '')=='save') sparam = ['data=master','mode=save','No_MDO','Tgl_MDO','SupirID','Catatan'];
new Request.JSON({
url: this.PHP,
sendParam: sparam,
onSuccess: function(ajson){
$('#divTXMaster').html(ajson.html);
$('#No_MDO').keyup(function(e){
if ((e.which || e.keyCode) == 13) {
if (($('#No_MDO')) && ($('#No_MDO').val() !== '')) this.data_query('master');
}
}.bind(this));
this.data_query('tabel-detail');
if ($.inArray($('#mode').val(),['add','edit']) !== -1) {
$('#butBrow').prop('disabled', true).removeClass('btn-info').addClass('btn-secondary');
$('#butTambah').addClass('d-none');
$('#butUbah').addClass('d-none');
$('#butHapus').addClass('d-none');
$('#butPrint').addClass('d-none');
$('#butSimpan').removeClass('d-none');
$('#butBatal').removeClass('d-none');
} else {
$('#butBrow').prop('disabled', false).removeClass('btn-secondary').addClass('btn-info');
$('#butTambah').removeClass('d-none');
$('#butUbah').removeClass('d-none');
$('#butHapus').removeClass('d-none');
$('#butPrint').removeClass('d-none');
$('#butSimpan').addClass('d-none');
$('#butBatal').addClass('d-none');
}
if (ajson.error) {
FoniaJS.showError(ajson.error);
FoniaJS.setFocus('#No_MDO');
}
if ($('#mode').val()=='print') this.tx_print(true);
}.bind(this)
}).send();
} else if (tipe=="tabel-detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-detail','mode','No_MDO']
}).send();
} else if (tipe=="brow-tx"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-tx','Cari_TX'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_TX');
}
}).send();
} else if (tipe=="brow-produk"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-produk','Cari_Produk'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Produk');
}
}).send();
}
},
Produk_Comp: function(item){
var adata = item.data.split(':');
$('#InvID').val(item.value);
$('#SatuanID').val(adata[0]);
$('#Nama_Satuan').val(adata[1]);
ManualDOJS.oc_RasaID();
FoniaJS.setFocus('#Muat');
},
Produk_Key: function(key){
if (key == 13) {
} else if (key == 118) {//f7
} else if (key == 119) {//f8
} else if (key == 120) {//f9
}
},
oc_RasaID: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=option-rasa','InvID','RasaID']
}).send();
},
Hitung_Detail: function(){
$('#Terantar').val(FoniaJS.FloatToStr(FoniaJS.StrToFloat($('#Muat').val()) - FoniaJS.StrToFloat($('#Kembali').val()), 2));
}
};
+79
View File
@@ -0,0 +1,79 @@
/*******************************************************************
Module : /apps/js/index.js
Desc. : JS - Halaman Utama Desktop
Created By : Siau Pheng ([email protected]).
Created Date : May 24th, 2010.
Last Modified : March 21st, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
$(document).ready(function(){
jQuery("#preloader").remove();
loadSidebar();
IndexJS.loading();
//if ('undefined' !== typeof qz) startConnection();
});
var IndexJS = {
Auto_Event: null,
Item_Update: 0,
loading: function(){
new Request.JSON({
url: FoniaJS.WEB_PATH+'apps/php/index.php',
sendParam: ['data=default'],
onSuccess: function(ares){
$('#pageContent').html(ares.content);
$('#pageToolbarTop').html('');
$('#pageToolbarBot').html('');
//this.loadSMS10();
this.loadBarChart();
}.bind(this)
}).send();
},
loadBarChart: function(){
if (!$('#barChart').length) return;
new Request.JSON({
url: FoniaJS.WEB_PATH+'apps/php/index.php',
sendParam: ['data=jual-chart'],
onSuccess: function(ares){
if (ares.tipe=='chart') {
var ctx = Chart.getChart('barChart');
if (typeof ctx !== 'undefined') ctx.destroy();
var myChart = new Chart($('#barChart'), {
type: ares.chart.type,
data: ares.chart.data,
options: ares.chart.options
});
}
}
}).send();
}
};
function loadSidebar(){
const mySidebar = document.getElementById('sidebarMain');
mySidebar.addEventListener('shown.bs.modal', () => {
document.querySelectorAll('.sidebar .nav-link').forEach((element) => {
element.addEventListener('click', (e) => {
let nextEl = element.nextElementSibling, parentEl = element.parentElement;
if (nextEl){
e.preventDefault();
let mycollapse = new bootstrap.Collapse(nextEl);
if (nextEl.classList.contains('show')){
mycollapse.hide();
} else {
mycollapse.show();
var opened_submenu = parentEl.parentElement.querySelector('.submenu.show');
if (opened_submenu){ new bootstrap.Collapse(opened_submenu); }
}
}
});
})
});
}
+88
View File
@@ -0,0 +1,88 @@
/*******************************************************************
Module : /apps/js/login.js
Desc. : JS - Halaman Proses Login
Created By : Siau Pheng ([email protected]).
Created Date : January 15th, 2008.
Last Modified : June 28th, 2020.
(c) 2008 - 2020, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
$(document).ready(function(){
$('#butLogin').click(LoginJS.Proses_Login);
$('#Username').keydown(function(e){
if (e.which==13) $('#Password').focus();
});
$('#Password').keydown(function(e){
if (e.which==13) $('#butLogin').trigger('click');
});
LoginJS.Tampil_Login();
document.oncontextmenu = new Function ('return false');
$.backstretch([
[
{ width: 1280, url: FoniaJS.WEB_PATH+"assets/images/bs/office_1280.jpg" },
{ width: 960, url: FoniaJS.WEB_PATH+"assets/images/bs/office_960.jpg" }
],
[
{ width: 1280, url: FoniaJS.WEB_PATH+"assets/images/bs/iphone_1280.jpg" },
{ width: 960, url: FoniaJS.WEB_PATH+"assets/images/bs/iphone_960.jpg" }
],
[
{ width: 1280, url: FoniaJS.WEB_PATH+"assets/images/bs/inven_1280.jpg" },
{ width: 960, url: FoniaJS.WEB_PATH+"assets/images/bs/inven_960.jpg" }
],
[
{ width: 1280, url: FoniaJS.WEB_PATH+"assets/images/bs/work_1280.jpg" },
{ width: 960, url: FoniaJS.WEB_PATH+"assets/images/bs/work_960.jpg" }
]
], {
duration: 6000,
transition: 'push_left|push_right|cover_up|cover_down|fade',
transitionDuration: 600
});
});
var LoginJS = {
Tampil_Login: function(){
var Username = FoniaJS.getCookie('Username');
if (Username != '') {
$('#Username').val(Username);
FoniaJS.setFocus('#Password');
} else {
FoniaJS.setFocus('#Username');
}
},
Proses_Login: function(){
if (!$('#Username').val()){
$('#Username').focus();
FoniaJS.showError('Silahkan masukkan Username !');
return false;
}
if (!$('#Password').val()){
$('#Password').focus();
FoniaJS.showError('Silahkan masukkan Password !');
return false;
}
new Request.JSON({
url: FoniaJS.WEB_PATH+'apps/php/login.php',
sendParam: ['mode=login','Username','Password'],
onSuccess: function(respon){
if (respon.hasil == 'SUKSES'){
FoniaJS.setCookie('Username', $('#Username').val(), 365);
$('#divLoginMsg').html(respon.pesan).removeClass('d-none');
$('.input-group').addClass('d-none');
setTimeout(function(){self.location = FoniaJS.WEB_PATH+'?auth='+(respon.token??'');}, 1600);
}else{
FoniaJS.showInfo(respon.pesan, 3000);
if (respon.redir) setTimeout(function(){self.location = respon.redir;}, 600);
}
}
}).send();
}
};
+35
View File
@@ -0,0 +1,35 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/beli.js
Desc. : JS - Laporan Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : April 12th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoBeliJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param('data', 'print');
cetak.add_param('Tipe');
cetak.add_param('SupID');
cetak.add_param('Tgl_From');
cetak.add_param('Tgl_To');
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
}
};
+35
View File
@@ -0,0 +1,35 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/beli_retur.js
Desc. : JS - Laporan Retur Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : April 12th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoBeliReturJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("SupID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
}
};
+34
View File
@@ -0,0 +1,34 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/bonus_supir.js
Desc. : JS - Laporan Bonus Penjualan Supir
Created By : Siau Pheng ([email protected]).
Created Date : June 8th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoBonusSupirJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
}
};
+35
View File
@@ -0,0 +1,35 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/hutang.js
Desc. : JS - Laporan Hutang Supplier
Created By : Siau Pheng ([email protected]).
Created Date : July 17th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoHutangJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("SupID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
}
};
+107
View File
@@ -0,0 +1,107 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/jual.js
Desc. : JS - Laporan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : April 12th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoJualJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet'], this.Outlet_Comp);
$('#Nama_Outlet').on('click', function(){
$('#Nama_Outlet').select();
});
this.oc_Tipe();
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("Rekap");
cetak.add_param("OutletID");
cetak.add_param("SalesID");
cetak.add_param("Grup_InvID");
cetak.add_param("CK");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'export');
dload.add_param("Tipe");
dload.add_param("Rekap");
dload.add_param("OutletID");
dload.add_param("SalesID");
dload.add_param("Grup_InvID");
dload.add_param("CK");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[2]);
},
data_query: function(tipe){
if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
}
},
Outlet_Comp: function(item){
$('#OutletID').val(item.value);
},
oc_Tipe: function(){
if ($('#Tipe').val()=='R') {
$('#Grup_InvID').val(0).trigger('change');
$('#Grup_InvID').prop('disabled', true);
} else
$('#Grup_InvID').prop('disabled', false);
}
};
+43
View File
@@ -0,0 +1,43 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/jual_harian.js
Desc. : JS - Laporan Penjualan Harian
Created By : Siau Pheng ([email protected]).
Created Date : June 6th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoJualHarianJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Rekap");
cetak.add_param("Tgl_Data");
cetak.add_param("Grup_InvID");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Rekap");
dload.add_param("Tgl_Data");
dload.add_param("Grup_InvID");
dload.download();
}
};
+39
View File
@@ -0,0 +1,39 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/jual_harian_pajak.js
Desc. : JS - Laporan Penjualan Harian Pajak
Created By : Siau Pheng ([email protected]).
Created Date : November 11st, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoJualHarianPJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tgl_Data");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Tgl_Data");
dload.download();
}
};
+80
View File
@@ -0,0 +1,80 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/jual_retur.js
Desc. : JS - Laporan Retur Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : April 12th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoJualReturJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet'], this.Outlet_Comp);
$('#Nama_Outlet').on('click', function(){
$('#Nama_Outlet').select();
});
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("OutletID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[2]);
},
data_query: function(tipe){
if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
}
},
Outlet_Comp: function(item){
$('#OutletID').val(item.value);
}
};
+34
View File
@@ -0,0 +1,34 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/keluar.js
Desc. : JS - Laporan Pengeluaran
Created By : Siau Pheng ([email protected]).
Created Date : July 17th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoKeluarJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
}
};
+45
View File
@@ -0,0 +1,45 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/outlet.js
Desc. : JS - Laporan Daftar Outlet
Created By : Siau Pheng ([email protected]).
Created Date : March 25th, 2011.
Last Modified : March 26th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoOutletJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param('data', 'print');
cetak.add_param('Grup_OutletID');
cetak.add_param('Grup_InvID');
cetak.add_param('Aktif');
cetak.add_param('Tgl_Cetak');
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'export');
dload.add_param('Grup_OutletID');
dload.add_param('Grup_InvID');
dload.add_param('Aktif');
dload.add_param('Tgl_Cetak');
dload.download();
}
};
+98
View File
@@ -0,0 +1,98 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/piutang.js
Desc. : JS - Laporan Piutang Outlet
Created By : Siau Pheng ([email protected]).
Created Date : July 17th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoPiutangJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet'], this.Outlet_Comp);
$('#Nama_Outlet').on('click', function(){
$('#Nama_Outlet').select();
});
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("OutletID");
cetak.add_param("Grup_OutletID");
cetak.add_param("SalesID");
cetak.add_param("Grup_InvID");
cetak.add_param("TipeDT");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Tipe");
dload.add_param("OutletID");
dload.add_param("Grup_OutletID");
dload.add_param("SalesID");
dload.add_param("Grup_InvID");
dload.add_param("TipeDT");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[2]);
},
data_query: function(tipe){
if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
}
},
Outlet_Comp: function(item){
$('#OutletID').val(item.value);
}
};
+41
View File
@@ -0,0 +1,41 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/produk.js
Desc. : JS - Laporan Daftar Produk
Created By : Siau Pheng ([email protected]).
Created Date : May 26th, 2010.
Last Modified : March 21st, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoProdukJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param('data', 'print');
cetak.add_param('Grup_InvID');
cetak.add_param('Tgl_Cetak');
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'export');
dload.add_param('Grup_InvID');
dload.add_param('Tgl_Cetak');
dload.download();
}
};
+40
View File
@@ -0,0 +1,40 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_do.js
Desc. : JS - Rekap Penjualan Produk Per-DO
Created By : Siau Pheng ([email protected]).
Created Date : January 24th, 2024.
(c) 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapDOJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
}
};
+41
View File
@@ -0,0 +1,41 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_fp.js
Desc. : JS - Rekap Faktur Pajak Keluaran
Created By : Siau Pheng ([email protected]).
Created Date : August 30th, 2016.
Last Modified : July 4th, 2023.
(c) 2016 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapFPJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
}
};
+40
View File
@@ -0,0 +1,40 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_fp_biaya.js
Desc. : JS - Rekap Faktur Pajak Biaya
Created By : Siau Pheng ([email protected]).
Created Date : December 31st, 2024.
(c) 2016 - 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapFPBJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
}
};
+90
View File
@@ -0,0 +1,90 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_outlet.js
Desc. : JS - Laporan R. Penjualan Produk/Outlet
Created By : Siau Pheng ([email protected]).
Created Date : April 16th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapOutletJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet'], this.Outlet_Comp);
$('#Nama_Outlet').on('click', function(){
$('#Nama_Outlet').select();
});
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("OutletID");
cetak.add_param("Grup_InvID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("OutletID");
dload.add_param("Grup_InvID");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[2]);
},
data_query: function(tipe){
if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
}
},
Outlet_Comp: function(item){
$('#OutletID').val(item.value);
}
};
+47
View File
@@ -0,0 +1,47 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_outlet_oli.js
Desc. : JS - 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.
*******************************************************************/
var RepoRekapOLJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("Grup_OutletID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
cetak.add_param("Semua");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Tipe");
dload.add_param("Grup_OutletID");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.add_param("Semua");
dload.download();
}
};
+49
View File
@@ -0,0 +1,49 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_outlet_produk.js
Desc. : JS - Laporan Rekap Penj. Outlet/Produk
Created By : Siau Pheng ([email protected]).
Created Date : November 4th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapOPJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("InvID");
cetak.add_param("Rekap");
cetak.add_param("Grup_OutletID");
cetak.add_param("SalesID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("InvID");
dload.add_param("Rekap");
dload.add_param("Grup_OutletID");
dload.add_param("SalesID");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
}
};
+59
View File
@@ -0,0 +1,59 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_promo.js
Desc. : JS - Laporan Penjualan Produk Promo
Created By : Siau Pheng ([email protected]).
Created Date : July 22th, 2011.
Last Modified : March 28th, 2025.
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapPromoJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
this.oc_Grup();
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("Rekap");
cetak.add_param("SalesID");
cetak.add_param("Grup_InvID");
cetak.add_param("InvID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("Tipe");
dload.add_param("Rekap");
dload.add_param("SalesID");
dload.add_param("Grup_InvID");
dload.add_param("InvID");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
},
oc_Grup: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=option-produk','Grup_InvID','InvID']
}).send();
}
};
+82
View File
@@ -0,0 +1,82 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_sales.php
Desc. : JS - Laporan R. Penjualan Produk/Sales
Created By : Siau Pheng ([email protected]).
Created Date : April 15th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapSalesJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
FoniaJS.AutoComplete('#Nama_Outlet', this.PHP, ['data=auto-outlet'], this.Outlet_Comp);
$('#Nama_Outlet').on('click', function(){
$('#Nama_Outlet').select();
});
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param('data', 'print');
cetak.add_param('Rekap');
cetak.add_param('SalesID');
cetak.add_param('OutletID');
cetak.add_param('Grup_InvID');
cetak.add_param('Tgl_From');
cetak.add_param('Tgl_To');
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
outlet_brow: function(){
var _isi = new String('<div class="row mb-1"><div class="col"><div class="input-group"><input class="form-control" id="Cari_Outlet" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div></div></div><div id="divBrowOutlet">&nbsp;</div>');
this.winBOutlet = FoniaJS.showWindow('BOutlet', 'Daftar Outlet', _isi, 900, '', function(){
$('#winBOutlet').find('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butSearch').click(function(e){
this.data_query('brow-outlet');
}.bind(this));
$('#winBOutlet').find('#butAll').click(function(){
$('#winBOutlet').find('#Cari_Outlet').val('');
this.data_query('brow-outlet');
}.bind(this));
this.data_query('brow-outlet');
FoniaJS.setFocus('#Cari_Outlet');
}.bind(this));
},
outlet_select: function(acell){
FoniaJS.closeWindow(this.winBOutlet);
$('#OutletID').val(acell[0]);
$('#Nama_Outlet').val(acell[2]);
},
data_query: function(tipe){
if (tipe=="brow-outlet"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=brow-outlet','Cari_Outlet'],
onSuccess: function(){
FoniaJS.setFocus('#Cari_Outlet');
}
}).send();
}
},
Outlet_Comp: function(item){
$('#OutletID').val(item.value);
}
};
+45
View File
@@ -0,0 +1,45 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/rekap_sup.js
Desc. : JS - Laporan Rekap Pembelian / Supplier
Created By : Siau Pheng ([email protected]).
Created Date : March 5th, 2012.
Last Modified : July 4th, 2023.
(c) 2012 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoRekapSupJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("SupID");
cetak.add_param("Grup_InvID");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("SupID");
dload.add_param("Grup_InvID");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
}
};
+41
View File
@@ -0,0 +1,41 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/stok_akhir.js
Desc. : JS - Laporan Stok Akhir Produk
Created By : Siau Pheng ([email protected]).
Created Date : January 24th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoStokAkhirJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("GudangID");
cetak.add_param("Tgl_Data");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("GudangID");
dload.add_param("Tgl_Data");
dload.download();
}
};
+49
View File
@@ -0,0 +1,49 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/stok_mutasi.js
Desc. : JS - Laporan Mutasi Stok Produk
Created By : Siau Pheng ([email protected]).
Created Date : July 16th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoStokMutasiJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("GudangID");
cetak.add_param("InvID");
cetak.add_param("Nota_Pajak");
cetak.add_param("Tipe_Data");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "export");
dload.add_param("GudangID");
dload.add_param("InvID");
dload.add_param("Nota_Pajak");
dload.add_param("Tipe_Data");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
}
};
+42
View File
@@ -0,0 +1,42 @@
/*******************************************************************
Module : /apps/js/repo/supervisi.js
Desc. : JS - Laporan Supervisi
Created By : Siau Pheng ([email protected]).
Created Date : June 1st, 2013.
Last Modified : March 26th, 2023.
(c) 2013 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoSuperJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butPrint').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param('data', 'print');
cetak.add_param('UserID');
cetak.add_param('Tgl_From');
cetak.add_param('Tgl_To');
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'export');
dload.add_param('UserID');
dload.add_param('Tgl_From');
dload.add_param('Tgl_To');
dload.download();
}
};
+34
View File
@@ -0,0 +1,34 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/repo/terima.js
Desc. : JS - Laporan Penerimaan
Created By : Siau Pheng ([email protected]).
Created Date : July 17th, 2011.
Last Modified : July 4th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RepoTerimaJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butCetak').click(function(){this.proses_print('print');}.bind(this));
$('#butPreview').click(function(){this.proses_print('preview');}.bind(this));
//$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_print: function(prt){
var cetak = new cPRINTER(this.PHP);
cetak.set_zoom(90);
cetak.add_param("data", "print");
cetak.add_param("Tipe");
cetak.add_param("Tgl_From");
cetak.add_param("Tgl_To");
if (prt=='print') { cetak.doPrint(); } else cetak.doPreview();
}
};
+80
View File
@@ -0,0 +1,80 @@
/*******************************************************************
Module : /apps/js/sys/about.js
Desc. : JS - Informasi Aplikasi
Created By : Siau Pheng ([email protected]).
Created Date : November 23th, 2011.
Last Modified : May 1st, 2022.
(c) 2011 - 2022, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var AboutJS = {
PHP: '',
KODE: '',
loading: function(){
$('#win'+this.KODE).find('#divBuildInfo').html('<p>Aplikasi dibuat dengan komponen :<br>- jQuery Version '+$().jquery+' <br>- Bootstrap Version '+$.fn.tooltip.Constructor.VERSION+' <br>- FoniaJS Version '+FoniaJS.version+' <br>- FoniaPHP Version '+FoniaJS.phpversion+'</p>');
},
proses_checkdb: function(){
new Request({
url: this.PHP,
sendParam: ['data=check_db'],
onSuccess: function(txt){
this.winCheck = FoniaJS.showWindow('CekDB', 'Cek, Perbaiki dan Optimalisasi Database', txt, 500, [{},{i:'butTutup'},{i:'butWProses',v:'Proses DB !',c:'success'}], function(){
$('#winCekDB').find('#butWProses').click(function(){this.checkdb_run();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
proses_update: function(){
new Request({
url: this.PHP,
sendParam: ['data=check_update'],
onSuccess: function(txt){
this.winUpdate = FoniaJS.showWindow('CekApp', 'Cek dan Update Aplikasi', txt, 500, [{},{i:'butTutup'},{i:'butWUpdate',v:'Proses Update !',c:'success'}], function(){
$('#winCekApp').find('#butWUpdate').click(function(){this.update_run();}.bind(this));
var tomb = $('#winCekApp').find('#butWUpdate');
if ($('#file_online').val()==1){
tomb.prop('disabled', false);
} else {
tomb.html('Telah Update!').prop('disabled', true);
}
}.bind(this));
}.bind(this)
}).send();
},
checkdb_run: function(){
new Request({
url: this.PHP,
sendParam: ['data=proses_db','DB_Cek','DB_Repair','DB_Opti'],
onSuccess: function(txt){
if ($('#DB_Hasil')) $('#DB_Hasil').removeClass('d-none').html(txt);
FoniaJS.showInfo('Proses Database selesai', 2000);
}
}).send();
},
update_run: function(){
if ($('#file_online')){
if ($('#file_online').val()==1){
new Request.JSON({
url: this.PHP,
sendParam: ['data=proses_update','file_web','file_sql','file_build'],
onSuccess: function(adata){
if (adata.sukses==true) {
FoniaJS.showInfo('Aplikasi telah di Update.<br>Silakan Log Out dari Aplikasi<br>Lalu refresh browser Anda!');
} else {
FoniaJS.showInfo('Aplikasi gagal di Update.');
}
}
}).send();
}
return false;
}
}
};
+55
View File
@@ -0,0 +1,55 @@
/*******************************************************************
Module : /apps/js/sys/chpasswd.js
Desc. : JS - Perubahan Password Operator
Created By : Siau Pheng ([email protected]).
Created Date : December 7th, 2008.
Last Modified : April 25th, 2020.
(c) 2008 - 2020, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var SYSChpasswdJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butSave').click(function(){this.proses_save();}.bind(this));
FoniaJS.setFocus('#LPass');
},
proses_save: function(){
if ($("#LPass").val()=="") {
FoniaJS.showInfo("Silakan masukkan password lama Anda!");
FoniaJS.setFocus("#LPass");
return false;
} else if ($("#BPass1").val()=="") {
FoniaJS.showInfo("Silakan masukkan password baru 1 Anda!");
FoniaJS.setFocus("#BPass1");
return false;
} else if ($("#BPass2").val()=="") {
FoniaJS.showInfo("Silakan masukkan password baru 2 Anda!");
FoniaJS.setFocus("#BPass2");
return false;
} else if ($("#BPass1").val()!=$("#BPass2").val()) {
FoniaJS.showInfo("Password baru 1 dan 2 Anda tidak sama!");
FoniaJS.setFocus("#BPass1");
return false;
}
new Request.JSON({
url: this.PHP,
sendParam: ['data=chpasswd','LPass','BPass1','BPass2'],
onSuccess: function(ajson){
if (ajson.status == true) {
FoniaJS.showInfo(ajson.msg);
FoniaJS.closeWindow('#win'+this.KODE);
} else {
FoniaJS.showError(ajson.msg);
}
}.bind(this)
}).send();
}
};
+59
View File
@@ -0,0 +1,59 @@
/*******************************************************************
Module : /apps/js/sys/config.js
Desc. : JS - Konfigurasi Aplikasi
Created By : Siau Pheng ([email protected]).
Created Date : May 25th, 2010.
Last Modified : May 1st, 2022.
(c) 2010 - 2022, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var ConfigJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butUbah').click(function(){this.proses_edit();}.bind(this));
$('#butSimpan').click(function(){this.proses_save();}.bind(this));
this.data_query('view');
},
proses_edit: function(){
this.data_query('edit');
},
proses_save: function(){
new Request({
url: this.PHP,
sendParam: ['data=master','mode=save','REG_ID','REG_ADDRESS','REG_CITY','REG_POSTCODE','REG_PHONE','REG_FAX','REG_WEBSITE','REG_EMAIL'],
onSuccess: function(txt){
$('#divMaster').html(txt);
this.update_event();
}.bind(this)
}).send()
},
data_query: function(mode){
new Request({
url: this.PHP,
sendParam: ['data=master','mode='+mode,'REG_ID'],
onSuccess: function(txt){
$('#divMaster').html(txt);
this.update_event();
}.bind(this)
}).send()
},
update_event: function(){
if ($.inArray($('#mode').val(), ['edit']) >= 0) {
$("#butUbah").prop('disabled', true);
$("#butSimpan").prop('disabled', false);
} else {
$("#butUbah").prop('disabled', false);
$("#butSimpan").prop('disabled', true);
}
}
};
+146
View File
@@ -0,0 +1,146 @@
/*******************************************************************
Module : /apps/js/sys/menu_grup.js
Desc. : JS - Manajemen Data Grup Login Menu
Created By : Siau Pheng ([email protected]).
Created Date : August 8th, 2013.
Last Modified : January 1st, 2026.
(c) 2013 - 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var MenuGrupJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Grup').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Grup').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Grup');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=grup-detail','mode='+mode,'Grup_MenuID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Informasi Grup Menu', txt, 'lg', [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm("Konfirmasi", "Yakin akan hapus "+acell[1]+"?", function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','Grup_MenuID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=save','mode','Grup_MenuID','Nama_Grup','Ket','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
menu_show: function(acell){
new Request({
url: this.PHP,
sendParam: ['data=menu','Grup_MenuID='+acell[0]],
onSuccess: function(txt){
this.winMenu = FoniaJS.showWindow('Menu', 'Hak Akses Modul', txt, 'lg', [{i:'butWSelAll',v:'Pilih Semua',c:'info'},{i:'butWClrAll',v:'Hapus Semua',c:'info'},{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winMenu')
.find('#butWSelAll').click(function(){this.menu_ceksemua();}.bind(this)).end()
.find('#butWClrAll').click(function(){this.menu_hapussemua();}.bind(this)).end()
.find('#butWSimpan').click(function(){this.menu_simpan();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
menu_cek: function(el){
var t_modul = el.value, b_check = el.checked;
$('#tabMenuList tbody input[type="checkbox"]').map(function(i, b){
var t_menu = $(b);
if (t_menu.hasClass(t_modul)) t_menu.prop('checked', b_check);
});
el.prop('checked', !b_check);
},
menu_ceksemua: function(){
$('#tabMenuList tbody input[type="checkbox"]').prop('checked', true);
},
menu_hapussemua: function(){
$('#tabMenuList tbody input[type="checkbox"]').prop('checked', false);
},
menu_simpan: function(){
var alist = $('#R_MENU').val().split(',');
$('#tabMenuList tbody input[type="checkbox"]:checked').map(function(i, b){
alist.push($(b).val());
});
new Request.JSONF({
url: this.PHP,
sendParam: ['data=save-menu','Grup_MenuID','Menu='+alist.join()],
onSuccess: function(adata){
if (adata.status==true){
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winMenu);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Grup']
}).send()
}
}
};
+189
View File
@@ -0,0 +1,189 @@
/*******************************************************************
Module : /apps/js/sys/operator.js
Desc. : JS - Manajemen Data Pengguna
Created By : Siau Pheng ([email protected]).
Created Date : March 12th, 2008.
Last Modified : January 1st, 2026.
(c) 2008 - 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var OperatorJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_User').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_User').val('');
this.data_query('detail');
}.bind(this));
$('#butFilter').click(function(){this.filter_show();}.bind(this));
FoniaJS.setFocus('#Cari_User');
},
filter_show: function(){
new Request({
url: this.PHP,
sendParam: ['data=detail_filter','Filter_Level'],
onSuccess: function(txt){
this.winFilter = FoniaJS.showWindow('FLevel', 'Filter Data Pengguna / Level', txt, 400, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winFLevel').find('#butWSimpan').click(function(){this.filter_simpan();}.bind(this));
$('#winFLevel').find('#Fi_Level').focus();
}.bind(this));
}.bind(this)
}).send();
},
filter_simpan: function(){
$('#Filter_Level').val($('#Fi_Level').val());
FoniaJS.closeWindow(this.winFilter);
this.data_query('detail');
},
detail_show: function(mode, UserID){
new Request({
url: this.PHP,
sendParam: ['data=user-detail','mode='+mode,'UserID='+UserID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Informasi Pengguna', txt, 'lg', [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_check();}.bind(this));
this.oc_Level();
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm("Konfirmasi", "Yakin akan hapus ["+acell[1]+"] "+acell[2]+"?", function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','UserID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_check: function(){
if ($('#Username').val().toUpperCase()==$('#UserLama').val().toUpperCase()) {
this.detail_save();
return;
}
new Request.JSON({
url: this.PHP,
sendParam: ['data=user-check','Username'],
onSuccess: function(adata){
if (adata.ada==true) {
FoniaJS.showInfo("Username telah ada dalam sistem !");
} else {
this.detail_save();
}
}.bind(this)
}).send();
},
detail_save: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=save','mode','UserID','Username','Nama','Posisi','Level','Password','Grup_MenuID','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
menu_show: function(acell){
new Request({
url: this.PHP,
sendParam: ['data=menu','UserID='+acell[0]],
onSuccess: function(txt){
this.winMenu = FoniaJS.showWindow('Menu', 'Hak Akses Modul', txt, 'lg', [{i:'butWSelAll',v:'Pilih Semua',c:'info'},{i:'butWClrAll',v:'Hapus Semua',c:'info'},{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winMenu')
.find('#butWSelAll').click(function(){this.menu_ceksemua();}.bind(this)).end()
.find('#butWClrAll').click(function(){this.menu_hapussemua();}.bind(this)).end()
.find('#butWSimpan').click(function(){this.menu_simpan();}.bind(this)).end()
.find('#tabMenuList thead input[type="checkbox"]:disabled').prop('indeterminate', true);
}.bind(this));
}.bind(this)
}).send();
},
menu_cek: function(el){
var t_modul = el.value, b_check = el.checked;
$('#tabMenuList tbody input[type="checkbox"]').map(function(i, b){
var t_menu = $(b);
if (t_menu.hasClass(t_modul)) t_menu.prop('checked', b_check);
});
el.prop('checked', !b_check);
},
menu_ceksemua: function(){
$('#tabMenuList tbody input[type="checkbox"]:not(:disabled)').prop('checked', true);
},
menu_hapussemua: function(){
$('#tabMenuList tbody input[type="checkbox"]:not(:disabled)').prop('checked', false);
},
menu_simpan: function(){
var alist = $('#R_MENU').val().split(',');
$('#tabMenuList tbody input[type="checkbox"]:not(:disabled):checked').map(function(i, b){
alist.push($(b).val());
});
new Request.JSONF({
url: this.PHP,
sendParam: ['data=save-menu','UserID','Menu='+alist.join()],
onSuccess: function(adata){
if (adata.status==true){
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winMenu);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Filter_Level','Cari_User']
}).send()
}
},
oc_Level: function(){
}
};
+49
View File
@@ -0,0 +1,49 @@
/*******************************************************************
Module : /apps/js/sys/super.js
Desc. : JS - Informasi Supervisi Operator
Created By : Siau Pheng ([email protected]).
Created Date : September 11st, 2012.
Last Modified : March 19th, 2023.
(c) 2012 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var SuperJS = {
PHP: '',
KODE: '',
AJ: null,
loading: function(){
this.data_query('detail');
if ($('#divSuper').length == 1){
SuperJS.AJ = setInterval(function(){
SuperJS.data_query('detail');
}, 1000);
}
},
detail_select: function(acell){
new Request({
url: this.PHP,
sendParam: ['data=save','USERID='+acell[0],'KODE='+acell[1],'REQ_SID='+acell[2],'REQ='+acell[7]],
onSuccess: function(){
this.data_query('detail');
}.bind(this)
}).send();
},
data_query: function(tipe){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail'],
onSuccess: function(){
if ($('#divSuper').length == 0) clearInterval(SuperJS.AJ);
}
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/gudang.js
Desc. : JS - Tabel Master Lokasi Gudang
Created By : Siau Pheng ([email protected]).
Created Date : December 7th, 2010.
Last Modified : March 19th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var GudangJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Gudang').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Gudang').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Gudang');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=gudang-detail','mode='+mode,'GudangID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Lokasi Gudang', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','GudangID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','GudangID','Kode_Gudang','Nama_Gudang','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Gudang']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/mobil.js
Desc. : JS - Tabel Master Kendaraan
Created By : Siau Pheng ([email protected]).
Created Date : March 4th, 2011.
Last Modified : March 20th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var MobilJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Mobil').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Mobil').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Mobil');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=mobil-detail','mode='+mode,'MobilID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Kendaraan', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','MobilID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','MobilID','Kode_Mobil','Nama_Mobil','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Mobil']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/outlet.js
Desc. : JS - Tabel Master Outlet
Created By : Siau Pheng ([email protected]).
Created Date : December 7th, 2010.
Last Modified : January 5th, 2025.
(c) 2010 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var OutletJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Outlet').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Outlet').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Outlet');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=outlet-detail','mode='+mode,'OutletID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Outlet', txt, 800, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','OutletID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','OutletID','Grup_OutletID','Tipe_OutletID','Nama_Outlet','Alamat_Outlet','Kota_Outlet','Telp_Outlet','Prov_LokasiID','Email_Outlet','No_NPWP','No_NITKU','No_NIK','Nama_NPWP','Alamat_NPWP','Tgl_Daftar','GG','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Outlet']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/outlet_grup.js
Desc. : JS - Tabel Master Grup Outlet
Created By : Siau Pheng ([email protected]).
Created Date : December 7th, 2010.
Last Modified : March 19th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var OutletGrupJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Grup').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Grup').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Grup');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=grup-detail','mode='+mode,'Grup_OutletID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Grup Outlet', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','Grup_OutletID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','Grup_OutletID','Kode_Grup','Nama_Grup','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Grup']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/outlet_tipe.js
Desc. : JS - Tabel Master Tipe Outlet
Created By : Siau Pheng ([email protected]).
Created Date : January 21th, 2011.
Last Modified : March 19th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var OutletTipeJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Tipe').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Tipe').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Tipe');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=tipe-detail','mode='+mode,'Tipe_OutletID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Tipe Outlet', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','Tipe_OutletID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','Tipe_OutletID','Kode_Tipe','Nama_Tipe','Keterangan','Opsi','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Tipe']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/pegawai.js
Desc. : JS - Tabel Master Pegawai
Created By : Siau Pheng ([email protected]).
Created Date : December 7th, 2010.
Last Modified : March 20th, 2023.
(c) 2010 - 2013, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var PegawaiJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Peg').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Peg').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Peg');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=pegawai-detail','mode='+mode,'PegID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Pegawai', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','PegID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','PegID','Jenis_PegID','Kode_Pegawai','Nama_Pegawai','Alamat_Pegawai','Telp_Pegawai','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Peg']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/pegawai_jenis.js
Desc. : JS - Tabel Master Jenis Pegawai
Created By : Siau Pheng ([email protected]).
Created Date : February 8th, 2011.
Last Modified : March 20th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var PegawaiJenisJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Jenis').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Jenis').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Jenis');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=jenis-detail','mode='+mode,'Jenis_PegID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Jenis Pegawai', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','Jenis_PegID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','Jenis_PegID','Kode_Jenis','Nama_Jenis','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Jenis']
}).send();
}
}
};
+426
View File
@@ -0,0 +1,426 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/produk.js
Desc. : JS - Tabel Master Produk
Created By : Siau Pheng ([email protected]).
Created Date : May 19th, 2010.
Last Modified : January 10th, 2026.
(c) 2010 - 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var ProdukJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butFilter').click(function(){this.filter_show();}.bind(this));
this.data_query('tabel-produk');
$('#Cari_Produk').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('tabel-produk');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('tabel-produk');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Produk').val('');
this.data_query('tabel-produk');
}.bind(this));
FoniaJS.setFocus('#Cari_Produk');
},
filter_show: function(){
new Request({
url: this.PHP,
sendParam: ['data=detail-filter','Filter_Produk'],
onSuccess: function(txt){
this.winFilter = FoniaJS.showWindow('Filter', 'Filter Produk Sesuai Grup', txt, 400, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winFilter').find('#butWSimpan').click(function(){this.filter_simpan();}.bind(this));
}.bind(this));
$('#Fi_Produk').focus();
}.bind(this)
}).send();
},
filter_simpan: function(){
$('#Filter_Produk').val($('#Fi_Produk').val());
FoniaJS.closeWindow(this.winFilter);
this.data_query('tabel-produk');
},
produk_show: function(mode, ID){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-produk','mode='+mode,'InvID='+ID],
onSuccess: function(ajson){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Produk', ajson.html, 'xl', [{},{i:'butWBtl',v:'Batal',c:'danger'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail')
.find('#butWSimpan').click(function(){this.produk_simpan();}.bind(this)).end()
.find('#butWBtl').click(function(){this.produk_batal();}.bind(this));
this.data_query('tabel-varian');
this.data_query('tabel-kemasan');
this.data_query('tabel-harga');
}.bind(this));
}.bind(this)
}).send();
},
produk_restore: function(acell){
new Request.JSON({
url: this.PHP,
sendParam: ['data=restore-detail','InvID='+acell[0]],
onSuccess: function(ajson){
this.winBRest = FoniaJS.showWindow('BRest', 'Informasi Backup Produk', ajson.html, 'xl', [], function(){
this.data_query('restore-tabel');
}.bind(this));
}.bind(this)
}).send();
},
produk_restore_select: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan restore data Produk ke versi tanggal : <b>"'+acell[0]+'"</b> ?<br><br><span class="text-danger fw-bold">HARAP KONFIRMASI KEMBALI, TERIMA KASIH!</span>', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=restore-proses','InvID','MD5Key='+acell[1]],
onSuccess: function(adata){
if (adata.status==true){
FoniaJS.showInfo('Sukses restore Data Produk ini!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses restore!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
produk_restore_form: function(acell, div){
new Request.JSON({
url: this.PHP,
sendParam: ['data=restore-form','InvID','MD5Key='+acell[1]],
onSuccess: function(adata){
$(div).html(adata.html);
}.bind(this)
}).send();
},
produk_tambah: function(){
this.produk_show('add', 0);
},
produk_ubah: function(acell){
this.produk_show('edit', acell[0]);
},
produk_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','InvID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('tabel-produk');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
produk_simpan: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','InvID','Grup_InvID','Kode_Produk','Nama_Produk='+encodeURIComponent($('#Nama_Produk').val()),'Kode_FP','StokID','NormalID','Harga_Pokok','Stok_Min','Pajak','Hadiah','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('tabel-produk');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
produk_batal: function(){
if ($('#mode').val()=='add'){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan batalkan Penambahan Produk ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=cancel','InvID','mode_before=add'],
onSuccess: function(){
this.data_query('tabel-produk');
}.bind(this)
}).send();
}.bind(this), 'danger');
return false;
}
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan batalkan Perubahan Detail Produk ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=cancel','InvID'],
onSuccess: function(){
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
}.bind(this), 'danger');
},
varian_batal: function(){
var dt = $('#divVarianTabel').DataTable(), tr, l_row;
tr = $('#butBatalVarian').closest('tr');
l_row = dt.row(tr.prev('tr'));
if (l_row.child.isShown()) l_row.nodes().to$().find('.fon-tabel-dt').click();
if (l_row.data()[0]=='0') l_row.remove().draw(true);
},
varian_add: function(){
var dt = $('#divVarianTabel').DataTable(), l_row;
dt.order([0,'desc']);
l_row = dt.row(':last');
if (!dt.data().count() || l_row.data()[0]!=='0'){
dt.row.add(['0','','','<a class="table-icon fon-tabel-dt" tabindex="-1" title="Detail"><i class="bi-pencil"></i></a>']).draw(true);
l_row = dt.row(':last');
}
if (!l_row.child.isShown()) l_row.nodes().to$().find('.fon-tabel-dt').click();
},
varian_form: function(acell, div){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-varian','InvID','InvVarianID='+acell[0]],
onSuccess: function(adata){
$(div).html(adata.html);
$(div)
.find('#butBatalVarian').click(function(e){
this.varian_batal();
}.bind(this)).end()
.find('#butSimpanVarian').click(function(e){
this.varian_save();
}.bind(this));
}.bind(this)
}).send();
},
varian_del: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[1]+'"</b> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-varian','mode','mode_detail=delete','InvID','InvVarianID='+acell[0]],
onSuccess: function(){
FoniaJS.showInfo('Proses hapus data sukses!');
}.bind(this)
}).send();
}.bind(this), 'danger');
},
varian_save: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-varian','mode','mode_detail=update','InvID','InvVarianID','RasaID'],
onSuccess: function(){
FoniaJS.showInfo('Sukses menyimpan varian / rasa produk.');
}.bind(this)
}).send();
},
kemasan_batal: function(){
var dt = $('#divKemasanTabel').DataTable(), tr, l_row;
tr = $('#butBatalKemasan').closest('tr');
l_row = dt.row(tr.prev('tr'));
if (l_row.child.isShown()) l_row.nodes().to$().find('.fon-tabel-dt').click();
if (l_row.data()[0]=='0') l_row.remove().draw(true);
},
kemasan_add: function(){
var dt = $('#divKemasanTabel').DataTable(), l_row;
dt.order([0,'desc']);
l_row = dt.row(':last');
if (!dt.data().count() || l_row.data()[0]!=='0'){
dt.row.add(['0','',0,'<a class="table-icon fon-tabel-dt" tabindex="-1" title="Detail"><i class="bi-pencil"></i></a>']).draw(true);
l_row = dt.row(':last');
}
if (!l_row.child.isShown()) l_row.nodes().to$().find('.fon-tabel-dt').click();
},
kemasan_form: function(acell, div){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-kemasan','InvID','InvKemasanID='+acell[0]],
onSuccess: function(adata){
$(div).html(adata.html);
$(div)
.find('#butBatalKemasan').click(function(e){
this.kemasan_batal();
}.bind(this)).end()
.find('#butSimpanKemasan').click(function(e){
this.kemasan_check();
}.bind(this));
}.bind(this)
}).send();
},
kemasan_del: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[1]+'"</b> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-kemasan','mode','mode_detail=delete','InvID','InvKemasanID='+acell[0]],
onSuccess: function(){
FoniaJS.showInfo('Proses hapus data sukses!');
}.bind(this)
}).send();
}.bind(this), 'danger');
},
kemasan_save: function(){
if ($('#Qty').val()==0){
FoniaJS.showInfo('Mohon isi jumlah Qty / Kemasan !');
return false;
}
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-kemasan','mode','mode_detail=update','InvID','InvKemasanID','SatuanID','SatuanLamaID','Qty'],
onSuccess: function(){
FoniaJS.showInfo('Sukses menyimpan kemasan produk.');
this.data_query('tabel-harga');
}.bind(this)
}).send();
},
kemasan_check: function(){
if ($('#SatuanID').val()==$('#SatuanLamaID').val()) {
this.kemasan_save();
return;
}
new Request.JSONF({
url: this.PHP,
sendParam: ['data=check-kemasan','InvID','SatuanID'],
onSuccess: function(adata){
if (adata.ada==true) {
FoniaJS.showInfo("Nama kemasan telah ada dalam sistem!");
} else {
this.kemasan_save();
}
}.bind(this)
}).send();
},
harga_batal: function(){
var dt = $('#divHargaTabel').DataTable(), tr, l_row;
tr = $('#butBatalHarga').closest('tr');
l_row = dt.row(tr.prev('tr'));
if (l_row.child.isShown()) l_row.nodes().to$().find('.fon-tabel-dt').click();
if (l_row.data()[0]=='0') l_row.remove().draw(true);
},
harga_add: function(){
var dt = $('#divHargaTabel').DataTable(), l_row;
dt.order([0,'desc']);
l_row = dt.row(':last');
if (!dt.data().count() || l_row.data()[0]!=='0'){
dt.row.add(['0','','','00-00-0000',0,'<a class="table-icon fon-tabel-dt" tabindex="-1" title="Detail"><i class="bi-pencil"></i></a>']).draw(true);
l_row = dt.row(':last');
}
if (!l_row.child.isShown()) l_row.nodes().to$().find('.fon-tabel-dt').click();
},
harga_form: function(acell, div){
new Request.JSON({
url: this.PHP,
sendParam: ['data=detail-harga','InvID','InvHargaID='+acell[0]],
onSuccess: function(adata){
$(div).html(adata.html);
$(div)
.find('#butBatalHarga').click(function(e){
this.harga_batal();
}.bind(this)).end()
.find('#butSimpanHarga').click(function(e){
this.harga_check();
}.bind(this));
}.bind(this)
}).send();
},
harga_del: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-harga','mode','mode_detail=delete','InvID','InvHargaID='+acell[0]],
onSuccess: function(){
var dt = $('#divHargaTabel').DataTable();
dt.order([1,'asc'],[2,'asc'],[3,'asc']);
FoniaJS.showInfo('Proses hapus data sukses!');
}.bind(this)
}).send();
}.bind(this), 'danger');
},
harga_save: function(){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-harga','mode','mode_detail=update','InvID','InvHargaID','SatuanID','Grup_OutletID','Tanggal','Harga_Jual'],
onSuccess: function(){
var dt = $('#divHargaTabel').DataTable();
dt.order([1,'asc'],[2,'asc'],[3,'asc']);
FoniaJS.showInfo('Sukses menyimpan harga jual produk.');
}.bind(this)
}).send();
},
harga_check: function(){
if (($('#SatuanID').val()==$('#SatuanLamaID').val()) && ($('#Grup_OutletID').val()==$('#GrupLamaID').val()) && ($('#Tanggal').val()==$('#TanggalLama').val())) {
this.harga_save();
return;
}
new Request.JSONF({
url: this.PHP,
sendParam: ['data=check-harga','InvID','SatuanID','Grup_OutletID','Tanggal'],
onSuccess: function(adata){
if (adata.ada==true) {
FoniaJS.showInfo("Harga Satuan per Group Outlet telah ada dalam sistem!");
} else {
this.harga_save();
}
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="tabel-produk"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-produk','Cari_Produk','Filter_Produk']
}).send();
} else if (tipe=="tabel-varian"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-varian','mode','InvID']
}).send();
} else if (tipe=="tabel-kemasan"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-kemasan','mode','InvID']
}).send();
} else if (tipe=="tabel-harga"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=tabel-harga','mode','InvID'],
onSuccess: function(){
var dt = $('#divHargaTabel').DataTable();
dt.order([1,'asc'],[2,'asc'],[3,'asc']);
}
}).send();
} else if (tipe=="restore-tabel"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=restore-tabel','InvID']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/produk_grup.js
Desc. : JS - Tabel Master Grup Produk
Created By : Siau Pheng ([email protected]).
Created Date : February 8th, 2011.
Last Modified : March 19th, 2023.
(c) 2011 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var ProdukGrupJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Grup').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Grup').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Grup');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=grup-detail','mode='+mode,'Grup_InvID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Grup Produk', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','Grup_InvID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','Grup_InvID','Kode_Grup','Nama_Grup','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Grup']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/rasa.js
Desc. : JS - Tabel Master Rasa Produk
Created By : Siau Pheng ([email protected]).
Created Date : December 7th, 2010.
Last Modified : March 19th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var RasaJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Rasa').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Rasa').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Rasa');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=rasa-detail','mode='+mode,'RasaID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Rasa Produk', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','RasaID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','RasaID','Kode_Rasa','Nama_Rasa','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Rasa']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/satuan.js
Desc. : JS - Tabel Master Satuan Produk
Created By : Siau Pheng ([email protected]).
Created Date : May 19th, 2010.
Last Modified : March 19th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var SatuanJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Satuan').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Satuan').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Satuan');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=satuan-detail','mode='+mode,'SatuanID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Satuan', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','SatuanID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','SatuanID','Kode_Satuan','Nama_Satuan','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Satuan']
}).send();
}
}
};
+96
View File
@@ -0,0 +1,96 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/tab/supplier.js
Desc. : JS - Tabel Master Supplier
Created By : Siau Pheng ([email protected]).
Created Date : December 7th, 2010.
Last Modified : March 19th, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var SupplierJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_Sup').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butAll').click(function(){
$('#Cari_Sup').val('');
this.data_query('detail');
}.bind(this));
FoniaJS.setFocus('#Cari_Sup');
},
detail_show: function(mode, ID){
new Request({
url: this.PHP,
sendParam: ['data=sup-detail','mode='+mode,'SupID='+ID],
onSuccess: function(txt){
this.winDetail = FoniaJS.showWindow('Detail', 'Detail Supplier', txt, 600, [{},{i:'butTutup'},{i:'butWSimpan',v:'Simpan',c:'success'}], function(){
$('#winDetail').find('#butWSimpan').click(function(){this.detail_save();}.bind(this));
}.bind(this));
}.bind(this)
}).send();
},
detail_tambah: function(){
this.detail_show('add', 0);
},
detail_ubah: function(acell){
this.detail_show('edit', acell[0]);
},
detail_hapus: function(acell){
FoniaJS.showConfirm('Konfirmasi', 'Yakin akan hapus <b>"'+acell[2]+'"</b> ?', function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode=del','SupID='+acell[0]],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses hapus data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses hapus data!');
}
}.bind(this)
}).send();
}.bind(this), 'danger');
},
detail_save: function(){
new Request.JSON({
url: this.PHP,
sendParam: ['data=save','mode','SupID','Kode_Sup','Nama_Sup','Alamat_Sup','Kota_Sup','Telp_Sup','No_NPWP','No_NITKU','Aktif'],
onSuccess: function(adata){
if (adata.status==true){
this.data_query('detail');
FoniaJS.showInfo('Proses simpan data sukses!');
}else{
FoniaJS.showInfo('Ada masalah dalam proses simpan data!');
}
FoniaJS.closeWindow(this.winDetail);
}.bind(this)
}).send();
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Cari_Sup']
}).send();
}
}
};
+31
View File
@@ -0,0 +1,31 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/xls/jual.js
Desc. : JS - Export XLS Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : April 2rd, 2011.
Last Modified : June 27th, 2025.
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var XLSJualJS = {
PHP: '',
KODE: '',
loading: function(){
$('#butExcel').click(function(){this.proses_dload();}.bind(this));
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param("data", "download");
dload.add_param("Grup_InvID");
dload.add_param("Tgl_From");
dload.add_param("Tgl_To");
dload.download();
}
};
+51
View File
@@ -0,0 +1,51 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/xml/fp_biaya.js
Desc. : JS - Export XML Faktur Pajak Invoice Biaya
Created By : Siau Pheng ([email protected]).
Created Date : April 2rd, 2011.
Last Modified : January 8th, 2025.
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var XMLFPBJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_FP').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butXML').click(function(){
this.proses_dload();
}.bind(this));
FoniaJS.setFocus('#Cari_FP');
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'download');
dload.add_param('Tgl_From');
dload.add_param('Tgl_To');
dload.download();
this.data_query('detail');
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Tgl_From','Tgl_To','Cari_FP']
}).send();
}
}
};
+51
View File
@@ -0,0 +1,51 @@
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/js/xml/fp_jual.js
Desc. : JS - Export XML Faktur Pajak Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : April 2rd, 2011.
Last Modified : January 6th, 2025.
(c) 2011 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
var XMLFPJJS = {
PHP: '',
KODE: '',
loading: function(){
this.data_query('detail');
$('#Cari_FP').keydown(function(e){
var key = e.keyCode || e.which || 0;
if (key==13 && e.target.value!='') this.data_query('detail');
}.bind(this));
$('#butSearch').click(function(e){
this.data_query('detail');
}.bind(this));
$('#butXML').click(function(){
this.proses_dload();
}.bind(this));
FoniaJS.setFocus('#Cari_FP');
},
proses_dload: function(){
var dload = new cEXPORT(this.PHP);
dload.add_param('data', 'download');
dload.add_param('Tgl_From');
dload.add_param('Tgl_To');
dload.download();
this.data_query('detail');
},
data_query: function(tipe, mode){
if (tipe=="detail"){
new Request.JSONF({
url: this.PHP,
sendParam: ['data=detail','Tgl_From','Tgl_To','Cari_FP']
}).send();
}
}
};
+110
View File
@@ -0,0 +1,110 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/csv/faktur_pajak.php
Desc. : PHP - Export Data Faktur Pajak
Created By : Siau Pheng ([email protected]).
Created Date : April 2rd, 2011.
Last Modified : August 13th, 2024.
(c) 2011 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
use siaupheng\fonia3\Data\CSV;
$db = (is_resource($db)) ? $db : new MySQL();
$db2 = $db2 ?? new MySQL();
$ajson = [];
$data = Param::Get("data");
$tgl_from = tgl_sql2str(Param::Get("Tgl_From"));
$tgl_to = tgl_sql2str(Param::Get("Tgl_To"));
$jenis_fp = Param::Get("Jenis_FP", 0);
if ( $data == "download" ) {
$aval = [];
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") array_push($aval, str_replace("_",".",$_key));
}
$tsql = (count($aval)==0) ? "FALSE" : "No_Pajak IN ('".implode("','",$aval)."')";
$pre = new CSV();
$pre->add_field("FK");
$pre->add_field("KD_JENIS_TRANSAKSI");
$pre->add_field("FG_PENGGANTI");
$pre->add_field("NOMOR_FAKTUR");
$pre->add_field("MASA_PAJAK");
$pre->add_field("TAHUN_PAJAK");
$pre->add_field("TANGGAL_FAKTUR");
$pre->add_field("NPWP");
$pre->add_field("NAMA");
$pre->add_field("ALAMAT_LENGKAP");
$pre->add_field("JUMLAH_DPP");
$pre->add_field("JUMLAH_PPN");
$pre->add_field("JUMLAH_PPNBM");
$pre->add_field("ID_KETERANGAN_TAMBAHAN");
$pre->add_field("FG_UANG_MUKA");
$pre->add_field("UANG_MUKA_DPP");
$pre->add_field("UANG_MUKA_PPN");
$pre->add_field("UANG_MUKA_PPNBM");
$pre->add_field("REFERENSI");
$pre->add_field("KODE_DOKUMEN_PENDUKUNG");
$pre->add_value("LT","NPWP","NAMA","JALAN","BLOK","NOMOR","RT","RW","KECAMATAN","KELURAHAN","KABUPATEN","PROPINSI","KODE_POS","NOMOR_TELEPON","","","","","","");
$pre->add_value("OF","KODE_OBJEK","NAMA","HARGA_SATUAN","JUMLAH_BARANG","HARGA_TOTAL","DISKON","DPP","PPN","TARIF_PPNBM","PPNBM","","","","","","","","","");
$db->Query("SELECT P.*,DATE_FORMAT(P.Tgl_Pajak,'%Y') Tahun_Pajak,DATE_FORMAT(P.Tgl_Pajak,'%c') Bulan_Pajak,DATE_FORMAT(P.Tgl_Pajak,'%d/%m/%Y') Tgl_Faktur,IF(P.OutletID=0,P.Alamat_NPWP,O.Alamat_NPWP) Alamat_NPWP2 FROM (SELECT * FROM inv_jual_pajak WHERE ".$tsql.") P LEFT JOIN para_outlet O ON (P.OutletID=O.OutletID) ORDER BY P.No_Pajak");
while ($db->Next()) {
$pre->add_value("FK", "01", $jenis_fp, rapi_fp($db->Row("No_Pajak")), $db->Row("Bulan_Pajak"), $db->Row("Tahun_Pajak"), $db->Row("Tgl_Faktur"), $db->Row("No_NPWP"), $db->Row("Nama_NPWP"), rapi_alamat($db->Row("Alamat_NPWP2")), $db->Row("Jumlah_DPP"), $db->Row("Jumlah_PPN"), 0, "", 0, 0, 0, 0, "", "");
$db2->Query("SELECT P.*,R.Nama_Rasa,D.Qty,D.Harga,D.Total_Jual,D.Total_Diskon,ROUND((D.Total_Jual-D.Total_Diskon)*D.PPN,4) Total_PPN FROM (SELECT InvID,RasaID,SUM(-Qty) Qty,ROUND(Harga_Jual/(1+PPN),2) Harga,SUM(-Qty*ROUND(Harga_Jual/(1+PPN),2)) Total_Jual,SUM(IF(Total_Diskon=(-Qty*Harga_Jual),-Qty*ROUND(Harga_Jual/(1+PPN),2),ROUND(Total_Diskon/(1+PPN),2))) Total_Diskon,PPN FROM inv_detail WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$db->Row("No_Pajak")."') AND Qty<>0 GROUP BY InvID, RasaID, SatuanID ORDER BY InvID, RasaID, SatuanID) D LEFT JOIN inv_produk P ON (D.InvID=P.InvID) LEFT JOIN para_rasa R ON (D.RasaID=R.RasaID) WHERE P.Pajak=1 ORDER BY P.Nama_Produk");
while ($db2->Next()) {
$pre->add_value("OF", $db2->Row("Kode_Produk"), $db2->Row("Nama_Produk").data_rasafp($db2->Row("Nama_Rasa")), $db2->Row("Harga"), $db2->Row("Qty"), $db2->Row("Total_Jual"), $db2->Row("Total_Diskon"), $db2->Row("Total_Jual")-$db2->Row("Total_Diskon"), $db2->Row("Total_PPN"), "0", "0", "", "", "", "", "", "", "", "", "");
}
$db2->Query("UPDATE inv_jual_pajak SET XFP=XFP+1 WHERE No_Pajak='".$db->Row("No_Pajak")."' LIMIT 1");
}
$pre->download("FP-".Param::Get("Tgl_From").".csv");
} else if ( $data == "detail" ) {
$tcari = trim(Param::Get("Cari_FP"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(No_Pajak,No_NPWP,Nama_NPWP,DATE_FORMAT(Tgl_Pajak,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$tot_fp = 50;
$db->Query("SELECT COUNT(*) FP FROM inv_jual_pajak P WHERE P.Tgl_Pajak BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql);
if ($db->Next()) $tot_fp = $db->RowFloat("FP", 50);
$obj = new Table($db);
$obj->set_query("SELECT *,'N' Nota FROM inv_jual_pajak WHERE Tgl_Pajak BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql);
$obj->set_query_footer("SELECT SUM(Jumlah_DPP) Jumlah_DPP,SUM(Jumlah_PPN) Jumlah_PPN FROM inv_jual_pajak WHERE Tgl_Pajak BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql);
$obj->add_field("No_Pajak", "NSFP", "c");
$obj->add_field("Tgl_Pajak", "Tgl. FP", "c", "sqltgl");
$obj->add_field("No_NPWP", "NPWP", "l");
$obj->add_field("Nama_NPWP", "Nama NPWP", "awr");
$obj->add_field("Jumlah_DPP", "Jumlah DPP", "r", "rupiah", "rupiah");
$obj->add_field("Jumlah_PPN", "Jumlah PPN", "r", "rupiah", "rupiah");
$obj->add_field("XFP", "CSV", "c");
$obj->set_field_order("No_Pajak", "A");
$obj->add_row_checkbox("No_Pajak", "Nota", ["Y","N"]);
$obj->set_func_navi("CSVFPJS.data_query('detail')");
$ajson[] = $obj->json_table("divDetail", $tot_fp);
} else if ( $data == "default") {
$form = new Form($db);
$tdari = $form->datebox("_", "Tgl_From", tgl_ymd(), true, false);
$tsamp = $form->datebox("_", "Tgl_To", tgl_ymd(), true, false);
echo '
<div class="card"><div class="card-header custom-style">Export Data Faktur Pajak Penjualan</div><div class="card-body"><div class="row mb-1"><div class="col d-flex justify-content-between"><div class="d-flex">'.$tdari.'<div><input type="text" class="form-control-plaintext text-center px-2" value="S / D"></div>'.$tsamp.'</div><div class="ms-2 input-group"><input class="form-control" id="Cari_FP" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button></div><button class="btn btn-info shadow-none ms-2 dropdown-toggle" id="butCSV" type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="bi-cloud-download me-2"></i>Export CSV</button><div class="dropdown-menu" aria-labelledby="butCSV"><a class="dropdown-item" href="#" id="csvNormal">Faktur Pajak Normal</a><a class="dropdown-item" href="#" id="csvPengganti">Faktur Pajak Pengganti</a></div></div></div><div id="divDetail">&nbsp;</div></div></div>';
}
send_json($ajson);
?>
+112
View File
@@ -0,0 +1,112 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/csv/faktur_pajak_biaya.php
Desc. : PHP - Export Data Faktur Pajak Biaya
Created By : Siau Pheng ([email protected]).
Created Date : February 11th, 2017.
Last Modified : August 13th, 2024.
(c) 2011 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
use siaupheng\fonia3\Data\CSV;
$db = (is_resource($db)) ? $db : new MySQL();
$db2 = $db2 ?? new MySQL();
$ajson = [];
$data = Param::Get("data");
$tgl_from = tgl_sql2str(Param::Get("Tgl_From"));
$tgl_to = tgl_sql2str(Param::Get("Tgl_To"));
$jenis_fp = Param::Get("Jenis_FP", 0);
if ( $data == "download" ) {
$aval = [];
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") array_push($aval, str_replace("_",".",$_key));
}
$tsql = (count($aval)==0) ? "FALSE" : "No_Pajak IN ('".implode("','",$aval)."')";
$db->Query("SELECT P.*,DATE_FORMAT(P.Tgl_Pajak,'%Y') Tahun_Pajak,DATE_FORMAT(P.Tgl_Pajak,'%c') Bulan_Pajak,DATE_FORMAT(P.Tgl_Pajak,'%d/%m/%Y') Tgl_Faktur,IF(P.SupID=0,P.Alamat_NPWP,CONCAT(S.Alamat_Sup,' ',S.Kota_Sup)) Alamat_NPWP2 FROM (SELECT * FROM biaya_pajak WHERE ".$tsql.") P LEFT JOIN para_supplier S ON (S.SupID=P.SupID) ORDER BY P.No_Pajak");
$pre = new CSV();
$pre->add_field("FK");
$pre->add_field("KD_JENIS_TRANSAKSI");
$pre->add_field("FG_PENGGANTI");
$pre->add_field("NOMOR_FAKTUR");
$pre->add_field("MASA_PAJAK");
$pre->add_field("TAHUN_PAJAK");
$pre->add_field("TANGGAL_FAKTUR");
$pre->add_field("NPWP");
$pre->add_field("NAMA");
$pre->add_field("ALAMAT_LENGKAP");
$pre->add_field("JUMLAH_DPP");
$pre->add_field("JUMLAH_PPN");
$pre->add_field("JUMLAH_PPNBM");
$pre->add_field("ID_KETERANGAN_TAMBAHAN");
$pre->add_field("FG_UANG_MUKA");
$pre->add_field("UANG_MUKA_DPP");
$pre->add_field("UANG_MUKA_PPN");
$pre->add_field("UANG_MUKA_PPNBM");
$pre->add_field("REFERENSI");
$pre->add_field("KODE_DOKUMEN_PENDUKUNG");
$pre->add_value("LT","NPWP","NAMA","JALAN","BLOK","NOMOR","RT","RW","KECAMATAN","KELURAHAN","KABUPATEN","PROPINSI","KODE_POS","NOMOR_TELEPON","","","","","","");
$pre->add_value("OF","KODE_OBJEK","NAMA","HARGA_SATUAN","JUMLAH_BARANG","HARGA_TOTAL","DISKON","DPP","PPN","TARIF_PPNBM","PPNBM","","","","","","","","","");
while ($db->Next()) {
$pre->add_value("FK", "01", $jenis_fp, rapi_fp($db->Row("No_Pajak")), $db->Row("Bulan_Pajak"), $db->Row("Tahun_Pajak"), $db->Row("Tgl_Faktur"), $db->Row("No_NPWP"), $db->Row("Nama_NPWP"), rapi_alamat($db->Row("Alamat_NPWP2")), $db->Row("Jumlah_DPP"), $db->Row("Jumlah_PPN"), 0, "", 0, 0, 0, 0, "", "");
$db2->Query("SELECT *,(Qty*Harga_Jual) Total_Jual,(Qty*Harga_Jual)*PPN Total_PPN FROM biaya_pajak_detail WHERE No_Biaya='".$db->Row("No_Biaya")."' ORDER BY ID");
while ($db2->Next()) {
$pre->add_value("OF", "", $db2->Row("Uraian_Biaya"), $db2->Row("Harga_Jual"), $db2->Row("Qty"), $db2->Row("Total_Jual"), 0, $db2->Row("Total_Jual"), $db2->Row("Total_PPN"), "0", "0", "", "", "", "", "", "", "", "", "");
}
$db2->Query("UPDATE biaya_pajak SET XFP=XFP+1 WHERE No_Pajak='".$db->Row("No_Pajak")."' LIMIT 1");
}
$pre->download("FP-".Param::Get("Tgl_From").".csv");
} else if ( $data == "detail" ) {
$tcari = trim(Param::Get("Cari_FP"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(No_Pajak,No_NPWP,Nama_NPWP,DATE_FORMAT(Tgl_Pajak,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$tot_fp = 50;
$db->Query("SELECT COUNT(*) FP FROM biaya_pajak WHERE Tgl_Pajak BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql);
if ($db->Next()) $tot_fp = $db->RowFloat("FP", 50);
$obj = new Table($db);
$obj->set_query("SELECT *,'N' Nota FROM biaya_pajak WHERE Tgl_Pajak BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql);
$obj->set_query_footer("SELECT SUM(Jumlah_DPP) Jumlah_DPP,SUM(Jumlah_PPN) Jumlah_PPN FROM biaya_pajak WHERE Tgl_Pajak BETWEEN '".$tgl_from."' AND '".$tgl_to."'".$tsql);
$obj->add_field("No_Pajak", "NSFP", "c");
$obj->add_field("Tgl_Pajak", "Tgl. FP", "c", "sqltgl");
$obj->add_field("No_NPWP", "NPWP", "l");
$obj->add_field("Nama_NPWP", "Nama NPWP", "awr");
$obj->add_field("Jumlah_DPP", "Jumlah DPP", "r", "rupiah", "rupiah");
$obj->add_field("Jumlah_PPN", "Jumlah PPN", "r", "rupiah", "rupiah");
$obj->add_field("XFP", "CSV", "c");
$obj->set_field_order("No_Pajak", "A");
$obj->add_row_checkbox("No_Pajak", "Nota", ["Y","N"]);
$obj->set_func_navi("CSVBiayaJS.data_query('detail')");
$ajson[] = $obj->json_table("divDetail", $tot_fp);
} else if ( $data == "default") {
$form = new Form($db);
$tdari = $form->datebox("_", "Tgl_From", tgl_ymd(), true, false);
$tsamp = $form->datebox("_", "Tgl_To", tgl_ymd(), true, false);
echo '
<div class="card"><div class="card-header custom-style">Export Data Faktur Pajak Biaya</div><div class="card-body"><div class="row mb-1"><div class="col d-flex justify-content-between"><div class="d-flex">'.$tdari.'<div><input type="text" class="form-control-plaintext text-center px-2" value="S / D"></div>'.$tsamp.'</div><div class="ms-2 input-group"><input class="form-control" id="Cari_FP" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button></div><button class="btn btn-info shadow-none ms-2 dropdown-toggle" id="butCSV" type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="bi-cloud-download me-2"></i>Export CSV</button><div class="dropdown-menu" aria-labelledby="butCSV"><a class="dropdown-item" href="#" id="csvNormal">Faktur Pajak Normal</a><a class="dropdown-item" href="#" id="csvPengganti">Faktur Pajak Pengganti</a></div></div></div><div id="divDetail">&nbsp;</div></div></div>';
}
send_json($ajson);
?>
+48
View File
@@ -0,0 +1,48 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/func/biaya.php
Desc. : PHP - Fungsi - Fungsi Biaya
Created By : Siau Pheng ([email protected]).
Created Date : May 1st, 2012.
Last Modified : January 6th, 2025.
(c) 2012 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
$fdb = (is_resource($fdb)) ? $fdb : new MySQL();
function Biaya_Copy($no_bia = "") {
global $fdb;
if ($no_bia == "") return;
Biaya_Cancel($no_bia);
$fdb->Query("INSERT INTO tmp_biaya_detail (No_Biaya,ID,Uraian_Biaya,Qty,Harga_Jual,PPN,UserID) SELECT No_Biaya,ID,Uraian_Biaya,Qty,Harga_Jual,PPN,UserID FROM biaya_pajak_detail WHERE No_Biaya='".$no_bia."'");
}
function Biaya_Save($no_bia = "", $is_baru = false, $no_lama = "", $ppn = 0) {
global $fdb;
if ($no_bia == "") return;
$fdb->Query("DELETE FROM biaya_pajak_detail WHERE No_Biaya='".$no_bia."'");
if ($is_baru) {
Biaya_Cancel($no_bia);
$fdb->Query("UPDATE tmp_biaya_detail SET No_Biaya='".$no_bia."' WHERE No_Biaya='".$no_lama."'");
}
$fdb->Query("INSERT INTO biaya_pajak_detail (No_Biaya,ID,Uraian_Biaya,Qty,Harga_Jual,PPN,UserID) SELECT No_Biaya,ID,Uraian_Biaya,Qty,Harga_Jual,'".$ppn."',UserID FROM tmp_biaya_detail WHERE No_Biaya='".$no_bia."'");
Biaya_Cancel($no_bia);
}
function Biaya_Cancel($no_bia = "") {
global $fdb;
if ($no_bia == "") return;
$fdb->Query("DELETE FROM tmp_biaya_detail WHERE No_Biaya='".$no_bia."'");
}
?>
+58
View File
@@ -0,0 +1,58 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/func/dt.php
Desc. : PHP - Fungsi - Fungsi Daftar Tagihan
Created By : Siau Pheng ([email protected]).
Created Date : May 1st, 2012.
Last Modified : January 6th, 2025.
(c) 2012 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
$fdb = (is_resource($fdb)) ? $fdb : new MySQL();
function DT_Copy($no_tagih = "") {
global $fdb;
if ($no_tagih == "") return;
DT_Cancel($no_tagih);
$fdb->Query("INSERT INTO tmp_jual_dt_detail (No_Tagih,No_Jual,ID,UserID) SELECT No_Tagih,No_Jual,ID,UserID FROM inv_jual_tagih_detail WHERE No_Tagih='".$no_tagih."'");
}
function DT_Save($no_tagih = "", $is_baru = false, $no_lama = "") {
global $fdb;
if ($no_tagih == "") return;
if (!$is_baru) {
$fdb->Query("UPDATE inv_jual J,(SELECT No_Jual,GROUP_CONCAT(No_Tagih SEPARATOR ', ') No_Tagih FROM inv_jual_tagih_detail WHERE No_Jual IN (SELECT No_Jual FROM inv_jual_tagih_detail WHERE No_Tagih='".$no_tagih."') AND No_Tagih<>'".$no_tagih."' GROUP BY No_Jual) A SET J.No_Tagih=A.No_Tagih WHERE A.No_Jual=J.No_Jual AND A.No_Jual IN (SELECT No_Jual FROM inv_jual_tagih_detail WHERE No_Tagih='".$no_tagih."')");
$fdb->Query("DELETE FROM inv_jual_tagih_detail WHERE No_Tagih='".$no_tagih."'");
}
if ($is_baru) {
DT_Cancel($no_tagih);
$fdb->Query("UPDATE tmp_jual_dt_detail SET No_Tagih='".$no_tagih."' WHERE No_Tagih='".$no_lama."' AND Unix='".user_unix()."'");
}
$fdb->Query("INSERT INTO inv_jual_tagih_detail (No_Tagih,No_Jual,ID,UserID) SELECT No_Tagih,No_Jual,ID,UserID FROM tmp_jual_dt_detail WHERE No_Tagih='".$no_tagih."'");
$fdb->Query("UPDATE inv_jual J,(SELECT No_Jual,GROUP_CONCAT(No_Tagih SEPARATOR ', ') No_Tagih FROM inv_jual_tagih_detail WHERE No_Jual IN (SELECT No_Jual FROM tmp_jual_dt_detail WHERE No_Tagih='".$no_tagih."') GROUP BY No_Jual) A SET J.No_Tagih=A.No_Tagih WHERE A.No_Jual=J.No_Jual AND A.No_Jual IN (SELECT No_Jual FROM tmp_jual_dt_detail WHERE No_Tagih='".$no_tagih."')");
DT_Cancel($no_tagih);
}
function DT_Delete($no_tagih = "") {
global $fdb;
if ($no_tagih == "") return;
$fdb->Query("UPDATE inv_jual J,(SELECT No_Jual,GROUP_CONCAT(No_Tagih SEPARATOR ', ') No_Tagih FROM inv_jual_tagih_detail WHERE No_Jual IN (SELECT No_Jual FROM inv_jual_tagih_detail WHERE No_Tagih='".$no_tagih."') AND No_Tagih<>'".$no_tagih."' GROUP BY No_Jual) A SET J.No_Tagih=A.No_Tagih WHERE A.No_Jual=J.No_Jual AND A.No_Jual IN (SELECT No_Jual FROM inv_jual_tagih_detail WHERE No_Tagih='".$no_tagih."')");
}
function DT_Cancel($no_tagih = "") {
global $fdb;
if ($no_tagih == "") return;
$fdb->Query("DELETE FROM tmp_jual_dt_detail WHERE No_Tagih='".$no_tagih."'");
}
?>
+168
View File
@@ -0,0 +1,168 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/func/ias.php
Desc. : PHP - Fungsi - Fungsi IAS
Created By : Siau Pheng ([email protected]).
Created Date : May 1st, 2012.
Last Modified : January 6th, 2025.
(c) 2012 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
$fdb = (is_resource($fdb)) ? $fdb : new MySQL();
/************************* MASTER OUTLET *************************/
function Outlet_Baru() {
global $fdb;
$tno = "P-"; $ino = 0;
$fdb->Query("SELECT MAX(RIGHT(Kode_Outlet,5)) Nomor FROM para_outlet");
if ($fdb->Next()) $ino = intval($fdb->Row("Nomor", 0));
$tno .= isi_nol($ino+1, 5);
return $tno;
}
/************************* TRANSAKSI *************************/
function Nomor_Baru($tipe = "B", $tgl = "", $bsave = false) {
global $fdb;
//SCS = U G K M O
//IAS = B J C R D T F N P
$atipe = ['B'=>["No_Beli","inv_beli"],'J'=>["No_Jual","inv_jual"],'C'=>["No_Beli","inv_beli"],'R'=>["No_Jual","inv_jual"],'D'=>["No_DO","inv_jual_do"],'T'=>["No_Tagih","inv_jual_tagih"],'F'=>["No_Biaya","biaya_pajak"],'N'=>["No_MDO","manual_do"],'P'=>["No_Pajak","inv_jual_pajak"]];
if ($tgl == "") {
$tno = $tipe . date("y") . abjad(date("n"));
} else {
$tmp = explode("-", $tgl);
$tno = $tipe . substr($tmp[2],2,2) . abjad(intval($tmp[1]));
}
$tno .= user_id(2);
$ino = 0;
$fdb->Query("SELECT MAX(RIGHT(".$atipe[$tipe][0].",4)) Nomor FROM ".$atipe[$tipe][1]." WHERE LEFT(".$atipe[$tipe][0].",".strlen($tno).")='".$tno."' AND RIGHT(".$atipe[$tipe][0].",4)".(($_SESSION['__WEB_APP']['NOMOR_INC'] ?? 0)==0?"<5000":">".$_SESSION['__WEB_APP']['NOMOR_INC']));
if ($fdb->Next()) $ino = intval($fdb->Row("Nomor", 0));
if ($ino==0 && ($_SESSION['__WEB_APP']['NOMOR_INC'] ?? 0)>0) $ino += $_SESSION['__WEB_APP']['NOMOR_INC'];
$tno .= isi_nol($ino+1, 4);
if ($bsave==true) $fdb->Query("INSERT INTO ".$atipe[$tipe][1]." SET ".$atipe[$tipe][0]."='".$tno."'");
return $tno;
}
function Detail_Copy($no_ref = "") {
global $fdb;
if ($no_ref == "") return;
Detail_Cancel($no_ref);
$fdb->Query("INSERT INTO tmp_inv_detail (No_Ref,ID,Tgl_Ref,NotaID,GudangID,InvID,RasaID,SatuanID,Qty,Stok,Harga_Pokok,Harga_Jual,Total_Diskon,Promo,Pro_SQ,Pro_SD,Pro_ID,UserID) SELECT No_Ref,ID,Tgl_Ref,NotaID,GudangID,InvID,RasaID,SatuanID,Qty,Stok,Harga_Pokok,Harga_Jual,Total_Diskon,Promo,Pro_SQ,Pro_SD,Pro_ID,UserID FROM inv_detail WHERE No_Ref='".$no_ref."'");
}
function Detail_Save($no_ref = "", $stgl = "", $igudang = 0, $is_baru = false, $no_lama = "") {
global $fdb;
if ($no_ref == "") return;
if (!$is_baru) $fdb->Query("DELETE FROM inv_detail WHERE No_Ref='".$no_ref."'");
if ($is_baru) {
Detail_Cancel($no_ref);
$fdb->Query("UPDATE tmp_inv_detail SET No_Ref='".$no_ref."' WHERE No_Ref='".$no_lama."' AND Unix='".user_unix()."'");
}
$qtgl = ($stgl == "") ? "0000-00-00" : tgl_sql2str($stgl);
$fdb->Query("INSERT INTO inv_detail (No_Ref,ID,Tgl_Ref,NotaID,GudangID,InvID,RasaID,SatuanID,Qty,Stok,Harga_Pokok,Harga_Jual,Total_Diskon,Promo,Pro_SQ,Pro_SD,Pro_ID,UserID) SELECT No_Ref,ID,'".$qtgl."',NotaID,'".$igudang."',InvID,RasaID,SatuanID,Qty,Stok,Harga_Pokok,Harga_Jual,Total_Diskon,Promo,Pro_SQ,Pro_SD,Pro_ID,UserID FROM tmp_inv_detail WHERE No_Ref='".$no_ref."'");
Detail_Cancel($no_ref);
}
function Detail_Cancel($no_ref = "") {
global $fdb;
if ($no_ref == "") return;
$fdb->Query("DELETE FROM tmp_inv_detail WHERE No_Ref='".$no_ref."'");
}
function Param_Picker($tpicker = "0") {
if ($tpicker == "0") return "0";
$apicker = array_filter(explode(",", $tpicker));
return (count($apicker)==0 ? "0" : implode(",", $apicker));
}
/*************************** FUNGSI DATABASE SCS *****************************/
function scs_update_jual($nomor, $baru = false) {
global $fdb;
if ($baru == false) scs_delete_jual($nomor);
$fdb->Query("INSERT INTO scs_pms.inv_jual SELECT J.No_Jual,J.Tgl_Jual,J.GudangID,J.OutletID,J.No_Faktur,J.Data_Jual,J.UserID FROM inv_jual J WHERE J.No_Jual='".$nomor."'");
$fdb->Query("INSERT INTO scs_pms.inv_detail SELECT D.No_Ref,NULL,D.Tgl_Ref,D.NotaID,D.GudangID,D.InvID,D.SatuanID,SUM(D.Qty),SUM(D.Stok),D.UserID FROM inv_detail D WHERE D.No_Ref='".$nomor."' GROUP BY D.InvID,D.SatuanID");
}
function scs_delete_jual($nomor) {
global $fdb;
$fdb->Query("DELETE FROM scs_pms.inv_detail WHERE No_Ref='".$nomor."'");
$fdb->Query("DELETE FROM scs_pms.inv_jual WHERE No_Jual='".$nomor."'");
}
/*************************** FUNGSI FAKTUR PAJAK *****************************/
function FP_Baru() {
global $fdb;
$tno = $_SESSION['__APP_IAS']['NSFP_LAST']."."; $n_seri = 0;
$fdb->Query("SELECT MAX(RIGHT(No_Pajak,8)) Nomor FROM biaya_pajak WHERE LEFT(No_Pajak,".strlen($tno).")='".$tno."'");
if ($fdb->Next()) $n_seri = $fdb->RowFloat("Nomor", 0);
$fdb->Query("SELECT MAX(RIGHT(No_Pajak,8)) Nomor FROM inv_jual_pajak WHERE LEFT(No_Pajak,".strlen($tno).")='".$tno."'");
if ($fdb->Next()) $n_seri = max($n_seri , $fdb->RowFloat("Nomor", 0));
$tno .= isi_nol(++$n_seri, 8);
return $tno;
}
function FP_Update($nomor = "") {
global $fdb;
if (trim($nomor)=="") return;
$nsfp_last = format_nofp($nomor);
$nsfp_last = explode(".", $nsfp_last);
if ($nsfp_last[0] !== $_SESSION['__APP_IAS']['NSFP_LAST']) {
$_SESSION['__APP_IAS']['NSFP_LAST'] = $nsfp_last[0];
$fdb->Query("UPDATE ias_config SET NSFP_LAST='".$nsfp_last[0]."' WHERE REG_ID='".$_SESSION['__WEB_APP']['PARENT_CODE']."' LIMIT 1");
}
}
function rapi_fp($nilai) {
$hasil = str_replace([".","-"], "", $nilai);
if (strlen($hasil)>13) $hasil = substr($hasil, strlen($hasil)-13);
return $hasil;
}
function format_nofp($nilai) {
$nilai = rapi_fp($nilai);
return substr($nilai,0,3)."-".substr($nilai,3,2).".".substr($nilai,5);
}
function rapi_alamat($nilai) {
if (trim($nilai)=="") return "PONTIANAK";
$hasil = str_replace(["\n","\r"], "", $nilai);
return $hasil;
}
function data_rasafp($nilai) {
$hasil = trim($nilai);
if ($hasil<>"") $hasil = " (".$hasil.")";
return $hasil;
}
function Format_Stok($total=0, $kali=1, $sat_norm="", $sat_stok="") {
if ($kali > 0) {
$norm = floor($total / $kali);
$sisa = $total - ($norm * $kali);
} else {
$norm = 0;
$sisa = $total;
}
$stok = uang($norm,0)." ".$sat_norm;
if ($sat_norm<>$sat_stok) $stok .= ", ".uang($sisa,0)." ".$sat_stok;
return $stok;
}
function Form_Info($pesan="") {
return '<button class="btn btn-outline-secondary shadow-none text-info" title="'.$pesan.'"><i class="bi-lightbulb"></i></button>';
}
?>
+48
View File
@@ -0,0 +1,48 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/func/mdo.php
Desc. : PHP - Fungsi - Fungsi Manual DO
Created By : Siau Pheng ([email protected]).
Created Date : May 1st, 2012.
Last Modified : January 6th, 2025.
(c) 2012 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
$fdb = (is_resource($fdb)) ? $fdb : new MySQL();
function MDO_Copy($no_mdo = "") {
global $fdb;
if ($no_mdo == "") return;
MDO_Cancel($no_mdo);
$fdb->Query("INSERT INTO tmp_manual_do_detail (No_MDO,ID,InvID,RasaID,SatuanID,Qty,Muat,Kembali,UserID) SELECT No_MDO,ID,InvID,RasaID,SatuanID,Qty,Muat,Kembali,UserID FROM manual_do_detail WHERE No_MDO='".$no_mdo."'");
}
function MDO_Save($no_mdo = "", $is_baru = false, $no_lama = "") {
global $fdb;
if ($no_mdo == "") return;
if (!$is_baru) $fdb->Query("DELETE FROM manual_do_detail WHERE No_MDO='".$no_mdo."'");
if ($is_baru) {
MDO_Cancel($no_mdo);
$fdb->Query("UPDATE tmp_manual_do_detail SET No_MDO='".$no_mdo."' WHERE No_MDO='".$no_lama."' AND Unix='".user_unix()."'");
}
$fdb->Query("INSERT INTO manual_do_detail (No_MDO,ID,InvID,RasaID,SatuanID,Qty,Muat,Kembali,UserID) SELECT No_MDO,ID,InvID,RasaID,SatuanID,Qty,Muat,Kembali,UserID FROM tmp_manual_do_detail WHERE No_MDO='".$no_mdo."'");
MDO_Cancel($no_mdo);
}
function MDO_Cancel($no_mdo = "") {
global $fdb;
if ($no_mdo == "") return;
$fdb->Query("DELETE FROM tmp_manual_do_detail WHERE No_MDO='".$no_mdo."'");
}
?>
+35
View File
@@ -0,0 +1,35 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/func/report.php
Desc. : PHP - Fungsi - Fungsi Report
Created By : Siau Pheng ([email protected]).
Created Date : May 1st, 2012.
Last Modified : January 6th, 2025.
(c) 2012 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\DB\SQL;
$fdb = (is_resource($fdb)) ? $fdb : new MySQL();
function Report_Header($tlapor="", $tperiod="") {
$thasil = '<div class="text-center" style="font-size:1.1rem;"><b>'.strtoupper($_SESSION['__WEB_APP']['REG_NAME']);
$thasil .= (($tlapor=="") ? "" : '<br>'.$tlapor) . '</b>';
$thasil .= ($tperiod=="") ? "" : '<br><span style="font-size:1rem;">'.$tperiod.'</span>';
$thasil .= '</div><br>';
echo $thasil;
}
function Report_Stamp($ctk_ke=1, $bnama=false) {
return $_SESSION['__WEB_APP']['APP_NAME']."v".$_SESSION['__WEB_APP']['APP_VER'].date("\@ymd.His")."-".user_id(3).(($bnama==true)?"/".strtoupper(user_user()):"").(($ctk_ke>0)?"#".isi_nol($ctk_ke,2):"");
}
?>
+328
View File
@@ -0,0 +1,328 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/beli.php
Desc. : PHP - Transaksi Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : May 22th, 2010.
Last Modified : March 24th, 2023.
(c) 2010 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Beli", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Beli'=>$nomor];
if ($mode == "add") {
$atabel['No_Beli'] = "TB-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_Beli'] = tgl_ymd();
$atabel['Tgl_JT'] = tgl_ymd();
$atabel['GudangID'] = 1;
$nomor = "";
} else if ($mode == "edit") {
Detail_Copy($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("B", Param::Get("Tgl_Beli"), true);
Detail_Save($nomor, Param::Get("Tgl_Beli"), Param::Get("GudangID"), $b_baru, $no_lama);
$anota = ['Beli'=>0, 'Diskon'=>0];
$db->Query("SELECT SUM(Qty*Harga_Pokok) Beli, SUM(Total_Diskon) Diskon FROM inv_detail WHERE No_Ref='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("inv_beli");
//$sql->add_param("No_Beli", $nomor);
$sql->add_param_date("Tgl_Beli");
$sql->add_param_date("Tgl_JT");
$sql->add_param("Termin", "IF(Tgl_JT='0000-00-00',0,DATEDIFF(Tgl_JT,Tgl_Beli))", true);
$sql->add_param("No_Faktur");
$sql->add_param("No_Pajak");
$sql->add_param("GudangID");
$sql->add_param("SupID");
$sql->add_param("Total_Beli", $anota['Beli']);
$sql->add_param("Total_Diskon", $anota['Diskon']);
$sql->add_param_userid();
$sql->add_where("No_Beli", $nomor);
$sql->UpdateDB();
$mode = "view";//todo: print jika langsung cetak
} else if ($mode == "cancel") {
Detail_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_Beli'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_beli WHERE Data_Beli=1 AND No_Beli='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
if ($atabel['SupID']>0) {
$db->Query("SELECT Alamat_Sup FROM para_supplier WHERE SupID='".$atabel['SupID']."' LIMIT 1");
if ($db->Next()) $atabel['Alamat_Sup'] = $db->Row("Alamat_Sup");
}
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_Beli", $atabel['No_Beli'], !$enable, true, "text", "nomor transaksi");
$tfaktur = $form->textbox("_", "No_Faktur", $atabel['No_Faktur'], $enable, true, "text", "nomor faktur");
$tpajak = $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], $enable, true, "text", "nomor faktur pajak");
$ttglnota = $form->datebox("_", "Tgl_Beli", $atabel['Tgl_Beli'], $enable, true);
$ttgljt = $form->datebox("_", "Tgl_JT", $atabel['Tgl_JT'], $enable, true);
$tgud = $form->option_db("_", "GudangID", $atabel['GudangID'], $enable, true, "vi_para_gudang", ["GudangID","Nama_Gudang2"], "Aktif=1 ORDER BY Nama_Gudang", [0,"&nbsp;"]);
$tsup = $form->option_db("_", "SupID", $atabel['SupID'], $enable, true, "para_supplier", ["SupID","Nama_Sup"], "Aktif=1 ORDER BY Nama_Sup", [0,"&nbsp;"], null, "BeliJS.oc_SupID(this);");
$tsupal = $form->textbox("_", "Alamat_Sup", $atabel['Alamat_Sup'], false, false, "text");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Beli">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="BeliJS.tx_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="Tgl_Beli">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Tgl_JT">Jatuh Tempo</label>
<div class="col-sm-7 col-lg-5">'.$ttgljt.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="GudangID">Lokasi Gudang</label>
<div class="col">'.$tgud.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Faktur">Nomor Faktur</label>
<div class="col">'.$tfaktur.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Pajak">Nomor Faktur Pajak</label>
<div class="col">'.$tpajak.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="SupID">Nama Supplier</label>
<div class="col">'.$tsup.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Alamat Supplier</label>
<div class="col">'.$tsupal.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("DELETE FROM inv_beli WHERE No_Beli='".$nomor."'");
$db->Query("DELETE FROM inv_detail WHERE No_Ref='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
$iqty = doubleval(Param::Get("Qty", 0)); $istok = $iqty;
$db->Query("SELECT Qty FROM inv_produk_kemasan WHERE InvID='".Param::Get("InvID")."' AND SatuanID='".Param::Get("SatuanID")."'");
if ($db->Next()) $istok = $db->Row("Qty", 1) * $iqty;
$tot_diskon = ($iqty==0) ? 0 : Param::Get("Total_Diskon", 0);
$sql = new SQL($db);
$sql->set_table("tmp_inv_detail");
$sql->add_param("No_Ref", $nomor);
$sql->add_param("InvID");
$sql->add_param("SatuanID");
$sql->add_param("Qty", $iqty);
$sql->add_param("Stok", $istok);
$sql->add_param("Harga_Pokok");
$sql->add_param("Total_Diskon", $tot_diskon);
$sql->add_param_unix();
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Ref", $nomor);
if ( $mode_detail == "insert" ) {
$sql->add_param("NotaID", 3);
$sql->InsertDB();
} else if ( $mode_detail == "update" ) {
$sql->UpdateDB();
} else if ( $mode_detail == "delete" ) {
$sql->DeleteDB();
}
}
$qview = ""; $qtabel = "inv_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_inv_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT D.*,P.Nama_Lengkap2 Nama_Produk,(D.Qty*D.Harga_Pokok)-D.Total_Diskon Total FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview.") D LEFT JOIN vi_inv_produk2 P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID)");
$obj->set_query_footer("SELECT SUM(D.Total_Diskon) Total_Diskon,SUM((D.Qty*D.Harga_Pokok)-D.Total_Diskon) Total FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview.") D");
$obj->add_field("ID", "ID", "c");
$obj->add_field("Nama_Produk", "Nama Produk", "awr");
$obj->add_field("Qty", "Qty", "r", "rupiah2");
$obj->add_field("Harga_Pokok", "Harga @", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
$obj->set_field_order("ID", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("clipboard", "Ubah", "BeliJS.detail_ubah");
$obj->add_row_btn("trash", "Hapus", "BeliJS.detail_hapus", "Unix", user_unix());
$obj->set_func_btn("BeliJS.detail_tambah", '<i class="bi-plus-lg me-1"></i> Produk');
//$obj->set_func_btn("BeliJS.produk_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("BeliJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? " LIMIT 100" : " AND CONCAT(No_Beli,No_Faktur) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT B.*,S.Nama_Sup FROM (SELECT *,Total_Beli-Total_Diskon Jumlah FROM inv_beli WHERE Data_Beli=1".$tsql.") B LEFT JOIN para_supplier S ON (B.SupID=S.SupID)");
$obj->add_field("No_Beli", "No. Trans", "c");
$obj->add_field("Tgl_Beli", "Tgl. Beli", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Sup", "Nama Supplier", "awr");
$obj->add_field("Total_Beli", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Jumlah", "TOTAL", "r", "rupiah");
$obj->set_field_order("No_Beli", "D");
$obj->add_row_btn("save", "Pilih", "BeliJS.tx_select");
$obj->set_func_navi("BeliJS.data_query('brow-tx')");
$ajson[] = $obj->json_table("divBrowTX");
} else if ( $data == "brow-produk" ) {//not yet
$tcari = trim(Param::Get("Cari_Produk"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(Kode_Produk,Nama_Lengkap) LIKE '%".$tcari."%'";
$obj = new cGRIDTABLE();
$obj->set_query("SELECT * FROM vi_inv_produk2 WHERE Aktif=1".$tsql);
$obj->add_field("InvID", "InvID", "hidden");
$obj->add_field("SatuanID", "SatuanID", "hidden");
$obj->add_field("Kode_Produk", "Kode Produk", "center");
$obj->add_field("Nama_Lengkap2", "Nama Produk");
$obj->add_field("Nama_Satuan", "Nama Satuan", "hidden");
$obj->set_field_order("Nama_Lengkap", "A");
$obj->set_func_select("BeliJS.browse_produk_select", false);
$obj->set_func_navi("BeliJS.data_query('brow-produk')");
$ajson[] = $obj->json_table("divBrowProduk");
} else if ( $data == "auto-produk" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
if (is_string($tcari) && strlen($tcari) < 64) {
$db->Query("SELECT P.InvID,P.Nama_Lengkap,CONCAT(P.SatuanID,':',P.Nama_Satuan) Data2 FROM vi_inv_produk2 P WHERE Aktif=1 AND CONCAT(Nama_Lengkap) LIKE '%".$tcari."%' ORDER BY Nama_Lengkap LIMIT 50");
while ($db->Next()) {
$ajson['autodata'][] = ['value'=>$db->Row("InvID"), 'text'=>$db->Row("Nama_Lengkap"), 'data'=>$db->Row("Data2")];
}
}
} else if ($data == "detail-produk") {
$id = Param::Get("ID", 0); $atabel = ['ID'=>$id];
if ($id > 0) {
$db->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$nomor."' AND ID='".$id."' LIMIT 1");
if ($db->Next()) $atabel = $db->AllRow();
}
if ($atabel['InvID']>0 && $atabel['SatuanID']>0) {
$db->Query("SELECT Nama_Lengkap2 Nama_Produk,Nama_Satuan FROM vi_inv_produk2 WHERE InvID='".$atabel['InvID']."' AND SatuanID='".$atabel['SatuanID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
$form = new Form($db);
$tnama = $form->textauto("_", "Nama_Produk", ['value'=>$atabel['InvID'],'text'=>$atabel['Nama_Produk']], true, true, "ketik nama produk");
$tqty = $form->textbox("_", "Qty", $atabel['Qty'], true, true, "double");
$thpp = $form->textbox("_", "Harga_Pokok", $atabel['Harga_Pokok'], true, true, "double");
$tdis = $form->textbox("_", "Total_Diskon", $atabel['Total_Diskon'], true, true, "double");
$ttot = $form->textbox("_", "Jumlah", 0, false, false, "double");
$tsat = $form->textbox("_", "Nama_Satuan", $adetail['Nama_Satuan'], false, false, "text");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Nama_Produk">Nama Produk</label>
<div class="col">'.$tnama.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Qty">Qty</label>
<div class="col-sm-4 col-lg-5">'.$tqty.'</div>
<div class="col-sm-4 col-lg-4">'.$tsat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Harga_Pokok">Harga (@)</label>
<div class="col-sm-4 col-lg-5">'.$thpp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Total_Diskon">Diskon</label>
<div class="col-sm-4 col-lg-5">'.$tdis.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Total</label>
<div class="col-sm-4 col-lg-5">'.$ttot.'</div>
</div>
<input type="hidden" id="ID" value="'.$atabel['ID'].'" >
<input type="hidden" id="InvID" value="'.$atabel['InvID'].'" >
<input type="hidden" id="SatuanID" value="'.$atabel['SatuanID'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >
';
} else if ( $data == "info-sup") {
$arec = [];
$db->Query("SELECT * FROM para_supplier WHERE SupID='".Param::Get("SupID", 0)."' LIMIT 1");
if ($db->Next()) $arec = $db->AllRow();
$ajson[] = array('type'=>"form", 'id'=>"Alamat_Sup", 'value'=>$arec['Alamat_Sup']);
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Pembelian</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+280
View File
@@ -0,0 +1,280 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/beli_lunas.php
Desc. : PHP - Transaksi Pelunasan Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : March 7th, 2011.
Last Modified : May 19th, 2023.
(c) 2011 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$id_sup = Param::Get("SupID", 0);
$nomor = Param::Get("No_Beli", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['SupID'=>0, 'Nama_Sup'=>"", 'Alamat_Sup'=>""];
$form = new Form($db);
$tsup = $form->textauto("_", "Nama_Sup", ['value'=>$atabel['SupID'],'text'=>$atabel['Nama_Sup']], true, false, "ketik nama supplier");
$tsupal = $form->textbox("_", "Alamat_Sup", $atabel['Alamat_Sup'], false, false, "text");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label" for="Nama_Sup">Nama Supplier</label>
<div class="col"><div class="input-group">'.$tsup.'<button id="butBrow" class="btn btn-info" type="button" onclick="BeliLunasJS.sup_brow();"><i class="bi-search"></i></button></div></div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label">Alamat Supplier</label>
<div class="col">'.$tsupal.'</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="SupID" value="0" >
<input type="hidden" id="Mode_Tampil" value="0" >
';
} else if ( $data == "tabel-nota" ) {
$tsql = (Param::Get("Mode_Tampil", 0)==1) ? "" : " AND Lunas=0";
$obj = new Table($db);
$obj->set_query("SELECT *,Total_Beli-Total_Diskon Total,IF(Data_Beli=1,'B','R') Tipe FROM inv_beli WHERE SupID='".$id_sup."'".$tsql);
$obj->set_query_footer("SELECT SUM(Total_Beli-Total_Diskon) Total FROM inv_beli WHERE SupID='".$id_sup."'".$tsql);
$obj->add_field("Tipe", "Tipe", "hid");
$obj->add_field("No_Beli", "No. Trans", "c");
$obj->add_field("Tgl_Beli", "Tgl. Trans", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tgl_JT", "Jatuh Tempo", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Total_Beli", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
if (Param::Get("Mode_Tampil", 0)==1) $obj->add_field("Lunas", "Lunas", "c", "checkbox");
$obj->set_field_order("No_Beli", "A");
$obj->add_row_btn("save", "Pilih", "BeliLunasJS.nota_select");
$obj->set_func_navi("BeliLunasJS.data_query('tabel-nota')");
$ajson[] = $obj->json_table("divTXNota");
} else if ( $data == "tabel-bayar" ) {
$lunas = Param::Get("Lunas", 0);
if (in_array($mode_detail, ["insert","delete"])) {
$sql = new SQL($db);
$sql->set_table("inv_beli_lunas");
$sql->add_param("No_Beli");
$sql->add_param_date("Tgl_Bayar");
if (Param::Get("Tipe", 0) == 2) $sql->add_param_date("Tgl_Cair");
$sql->add_param("Tipe");
$sql->add_param("Total_Bayar");
$sql->add_param("Total_Potong");
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Beli", $nomor);
if ($mode_detail == "insert") {
$sql->InsertDB();
} else if ($mode_detail == "delete") {
$sql->DeleteDB();
}
$anota = ['Bayar'=>0, 'Potong'=>0, 'Total_Sisa'=>0, 'Lunas'=>0];
$db->Query("SELECT SUM(Total_Bayar) Bayar,SUM(Total_Potong) Potong FROM inv_beli_lunas WHERE No_Beli='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$db->Query("UPDATE inv_beli SET Total_Bayar='".$anota['Bayar']."',Total_Potong='".$anota['Potong']."',Lunas=IF(Total_Beli-Total_Diskon-Total_Bayar-Total_Potong=0,1,0),Tgl_Lunas=IF(Lunas=1,'".tgl_sql2str(Param::Get("Tgl_Bayar"))."','0000-00-00') WHERE No_Beli='".$nomor."'");
$db->Query("SELECT Lunas,Total_Beli-Total_Diskon-Total_Bayar-Total_Potong Total_Sisa FROM inv_beli WHERE No_Beli='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$lunas = $anota['Lunas'];
$ajson[] = array('type'=>"form", 'id'=>"Total_Sisa", 'value'=>$anota['Total_Sisa']);
$ajson[] = array('type'=>"form", 'id'=>"Lunas", 'value'=>$anota['Lunas']);
}
$obj = new Table($db);
$obj->set_query("SELECT * FROM inv_beli_lunas WHERE No_Beli='".$nomor."' ORDER BY ID");
$obj->add_field("ID", "ID", "hid");
$obj->add_field("Tgl_Bayar", "Tgl. Bayar", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tipe", "Tipe", "l", [1=>"Cash",2=>"Giro"]);
$obj->add_field("Tgl_Cair", "Tgl. BG", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Total_Bayar", "Jumlah Bayar", "r", "rupiah");
$obj->add_field("Total_Potong", "Pemotongan", "r", "rupiah");
$obj->set_field_order("Tgl_Bayar", "A");
if ($_SESSION['__WEB_USER']['Level']==0 && ($lunas==0 || ($lunas==1 && Param::Get('Mode_Tampil',0)==1))) {
$obj->add_row_btn("trash", "Hapus", "BeliLunasJS.bayar_hapus", "No_Beli", $nomor);
}
if ($lunas == 0) {
$obj->set_func_btn("BeliLunasJS.bayar_show", '<i class="bi-wallet me-1"></i> Pembayaran');
}
$obj->set_func_navi("BeliLunasJS.data_query('tabel-bayar')");
$ajson[] = $obj->json_table("divDetailBayar");
} else if ( $data == "brow-sup" ) {
$tcari = trim(Param::Get("Cari_Sup"));
$tsql = ($tcari=="") ? " LIMIT 100" : " AND CONCAT(Kode_Sup,Nama_Sup,Telp_Sup) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT * FROM para_supplier WHERE Aktif=1".$tsql);
$obj->add_field("SupID", "ID", "hid");
$obj->add_field("Kode_Sup", "Kode", "l");
$obj->add_field("Nama_Sup", "Nama Supplier", "awr");
$obj->add_field("Telp_Sup", "Telp", "l");
$obj->add_field("Alamat_Sup", "Alamat", "hid");
$obj->set_field_order("Kode_Sup", "A");
$obj->add_row_btn("save", "Pilih", "BeliLunasJS.sup_select");
$obj->set_func_navi("BeliLunasJS.data_query('brow-sup')");
$ajson[] = $obj->json_table("divBrowSup");
} else if ( $data == "auto-sup" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
if (is_string($tcari) && strlen($tcari) < 64) {
$db->Query("SELECT * FROM para_supplier WHERE Aktif=1 AND CONCAT(Kode_Sup,Nama_Sup,Telp_Sup) LIKE '%".$tcari."%' ORDER BY Kode_Sup LIMIT 50");
while ($db->Next()) {
$ajson['autodata'][] = ['value'=>$db->Row("SupID"), 'text'=>$db->Row("Nama_Sup"), 'data'=>$db->Row("Alamat_Sup")];
}
}
} else if ($data == "detail-nota") {
$atabel = ['No_Beli'=>$nomor]; $tipe = Param::Get("Tipe_Nota", "B");
$db->Query("SELECT *,Total_Beli-Total_Diskon Jumlah,Total_Beli-Total_Diskon-Total_Bayar-Total_Potong Sisa_Bayar FROM inv_beli WHERE No_Beli='".$nomor."'");
if ($db->Next()) $atabel = $db->AllRow();
$form = new Form($db);
$tnota = $form->textbox("_", "No_Beli", $atabel['No_Beli'], false, false, "text");
$tpajak= $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], false, false, "text");
$tfaktur = $form->textbox("_", "No_Faktur", $atabel['No_Faktur'], false, false, "text");
$ttglnota = $form->datebox("_", "Tgl_Beli", $atabel['Tgl_Beli'], false, false);
$ttgljt = $form->datebox("_", "Tgl_JT", $atabel['Tgl_JT'], false, false);
$ttot_beli = $form->textbox("_", "Total_Beli", $atabel['Total_Beli'], false, false, "double");
$ttot_dis = $form->textbox("_", "Total_Diskon", $atabel['Total_Diskon'], false, false, "double");
$tjumlah = $form->textbox("_", "Jumlah", $atabel['Jumlah'], false, false, "double");
$ajson['html'] = '
<div class="row">
<div class="col text-center fs-5 pb-1">Informasi Faktur / Retur</div>
</div>
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">No. '.(($tipe=="B")?"Transaksi":"Retur").'</label>
<div class="col">'.$tnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">No. Seri FP</label>
<div class="col-sm-7 col-lg-5">'.$tpajak.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Tgl. '.(($tipe=="B")?"Transaksi":"Retur").'</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jatuh Tempo</label>
<div class="col-sm-7 col-lg-5">'.$ttgljt.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">'.(($tipe=="B")?"No. Faktur":"Catatan").'</label>
<div class="col">'.$tfaktur.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah '.(($tipe=="B")?"Transaksi":"Retur").'</label>
<div class="col">'.$ttot_beli.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah Diskon</label>
<div class="col">'.$ttot_dis.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Total '.(($tipe=="B")?"Faktur":"Retur").'</label>
<div class="col">'.$tjumlah.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="Total_Sisa" value="'.$atabel['Sisa_Bayar'].'" >
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="Tipe_Nota" value="'.$tipe.'" >
';
} else if ($data == "detail-bayar") {
$form = new Form($db);
$ttglbyr = $form->datebox("_", "Tgl_Bayar", tgl_ymd(), true, false);
$ttglcair = $form->datebox("_", "Tgl_Cair", tgl_ymd(), true, false);
$ttipe = $form->radio("_", "Tipe", 1, true, false, [1=>"Cash",2=>"Giro"], null, "BeliLunasJS.oc_Tipe();");
$ttotal = $form->textbox("_", "Temp_Total", Param::Get("Total_Sisa",0), false, false, "double");
$tsisa = $form->textbox("_", "Temp_Sisa", 0, false, false, "double");
$tbayar = $form->textbox("_", "Total_Bayar", Param::Get("Total_Sisa",0), true, false, "double", null, null, null, "BeliLunasJS.Hitung_Detail();");
$tpotong = $form->textbox("_", "Total_Potong", 0, true, false, "double", null, null, null, "BeliLunasJS.Hitung_Detail();");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Tipe">Tipe Bayar</label>
<div class="col">'.$ttipe.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Tgl_Bayar">Tanggal Bayar</label>
<div class="col">'.$ttglbyr.'</div>
</div>
<div class="row mb-1 d-none" id="divTglCair">
<label class="col-sm-6 col-lg-4 col-form-label" for="Tgl_Cair">Tanggal Giro</label>
<div class="col">'.$ttglcair.'</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-6 col-lg-4 col-form-label">Total Faktur</label>
<div class="col">'.$ttotal.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Total_Bayar">Jumlah Bayar</label>
<div class="col">'.$tbayar.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Total_Potong">Potongan</label>
<div class="col">'.$tpotong.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label">Sisa Tagihan</label>
<div class="col">'.$tsisa.'</div>
</div>
';
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Pelunasan Pembelian</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-secondary mb-1 ms-2" id="butMode" type="button"><i class="bi-list me-2"></i>Normal</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divTXNota">&nbsp;</div>
<div id="divDetailNota" class="d-none">&nbsp;</div>
<div id="divDetailBayar" class="d-none">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+243
View File
@@ -0,0 +1,243 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/beli_pajak.php
Desc. : PHP - Pembuatan Nota Retur Pajak
Created By : Siau Pheng ([email protected]).
Created Date : October 23rd, 2015.
Last Modified : December 27th, 2024.
(c) 2010 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Pajak", "");
$no_temp = Param::Get("No_Temp", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Pajak'=>$nomor];
if ($mode == "add") {
$atabel['No_Pajak'] = "FP-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_Pajak'] = tgl_ymd();
$atabel['Tgl_Retur'] = tgl_ymd();
$atabel['SupID'] = 0;
$nomor = "";
} else if ($mode == "save") {
$ppn = 0.11;
//$ppn = (tgl_sql2str(Param::Get("Tgl_Pajak",tgl_dmy())) >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN'] : 0.11;
// UPDATE INV_BELI_PAJAK
$db->Query("UPDATE inv_detail A,(SELECT No_Beli FROM inv_beli WHERE Data_Beli=0 AND No_Pajak='".$no_temp."') B SET A.PPN='".$ppn."' WHERE A.No_Ref=B.No_Beli");
$tot_dpp = 0;
$db->Query("SELECT ROUND((-Qty*Harga_Pokok)/(1+PPN)) Total_DPP FROM inv_detail WHERE No_Ref IN (SELECT No_Beli FROM inv_beli WHERE Data_Beli=0 AND No_Pajak='".$no_temp."')");
while ($db->Next()) {
$tot_dpp += $db->RowFloat("Total_DPP", 0);
}
$sql = new SQL($db);
$sql->set_table("inv_beli_pajak");
$sql->add_param_date("Tgl_Pajak");
$sql->add_param_date("Tgl_Retur");
$sql->add_param("No_Retur");
$sql->add_param("No_NPWP");
$sql->add_param("Nama_NPWP");
$sql->add_param("PPN", $ppn);
$sql->add_param("Jumlah_DPP", $tot_dpp);
$sql->add_param("Jumlah_PPN", "CEIL(Jumlah_DPP*PPN)",true);
$sql->add_param("SupID");
$sql->add_param_userid();
$sql->add_where("No_Pajak", $nomor);
if ($mode_detail == "add") {
$sql->add_param("No_Pajak", $nomor);
$sql->InsertDB();
$db->Query("UPDATE inv_beli SET No_Pajak='".$nomor."' WHERE Data_Beli=0 AND No_Pajak='".$no_temp."'");
$mode = "view";
} elseif ($mode_detail == "edit") $sql->UpdateDB();
} else if ($mode == "cancel") {
$db->Query("UPDATE inv_beli SET No_Pajak='' WHERE Data_Beli=0 AND No_Pajak='".$no_temp."'");
$mode = "view";
$nomor = ""; $atabel['No_Pajak'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_beli_pajak WHERE No_Pajak='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tpajak = $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], ($mode=="edit"?false:true), true, "text", "nomor seri fp");
$tretur = $form->textbox("_", "No_Retur", $atabel['No_Retur'], $enable, true, "text", "nomor retur");
$ttglpajak = $form->datebox("_", "Tgl_Pajak", $atabel['Tgl_Pajak'], $enable, true);
$ttglretur = $form->datebox("_", "Tgl_Retur", $atabel['Tgl_Retur'], $enable, true);
$tsup = $form->option_db("_", "SupID", $atabel['SupID'], $enable, false, "para_supplier", ["SupID","Nama_Sup"], "Aktif=1 ORDER BY Nama_Sup", [0,"&nbsp;"], null, "BeliPajakJS.oc_SupID();");
$tnpwp = $form->textbox("_", "No_NPWP", $atabel['No_NPWP'], false, false, "text", "no npwp");
$tnamanpwp = $form->textbox("_", "Nama_NPWP", $atabel['Nama_NPWP'], false, false, "text", "nama npwp");
$tppn = $form->textbox("_", "Jumlah_PPN", $atabel['Jumlah_PPN'], false, false, "double");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Pajak">Nomor Seri FP</label>
<div class="col"><div class="input-group">'.$tpajak.'<button id="butBrow" class="btn btn-info" type="button" onclick="BeliPajakJS.tx_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="Tgl_Pajak">Tanggal FP</label>
<div class="col-sm-7 col-lg-5">'.$ttglpajak.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Retur">Nomor Retur</label>
<div class="col">'.$tretur.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Tgl_Retur">Tanggal Retur</label>
<div class="col-sm-7 col-lg-5">'.$ttglretur.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="SupID">Nama Supplier</label>
<div class="col">'.$tsup.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_NPWP">Nomor NPWP</label>
<div class="col">'.$tnpwp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Nama_NPWP">Nama NPWP</label>
<div class="col">'.$tnamanpwp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Jumlah_PPN">Total PPN</label>
<div class="col">'.$tppn.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="No_Temp" value="'.$atabel['No_Pajak'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("UPDATE inv_detail A,(SELECT No_Beli FROM inv_beli WHERE Data_Beli=0 AND No_Pajak='".$nomor."') B SET A.PPN=0 WHERE A.No_Ref=B.No_Beli");
$db->Query("UPDATE inv_beli SET No_Pajak='' WHERE Data_Beli=0 AND No_Pajak='".$nomor."'");
$db->Query("DELETE FROM inv_beli_pajak WHERE No_Pajak='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","delete"])) {
if ( $mode_detail == "insert" ) {
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") $db->Query("UPDATE inv_beli SET No_Pajak='".$no_temp."' WHERE Data_Beli=0 AND No_Beli='".$_key."'");
}
} else if ( $mode_detail == "delete" ) {
$db->Query("UPDATE inv_beli SET No_Pajak='' WHERE Data_Beli=0 AND No_Beli='".Param::Get("No_Beli")."'");
}
}
$obj = new Table($db);
$obj->set_query("SELECT B.*,S.Nama_Sup FROM (SELECT * FROM inv_beli WHERE Data_Beli=0 AND ".(trim($no_temp)==""?"FALSE":"No_Pajak='".$no_temp."'").") B LEFT JOIN para_supplier S ON (B.SupID=S.SupID)");
$obj->add_field("No_Beli", "No. Trans", "c");
$obj->add_field("Tgl_Beli", "Tgl. Trans", "c", "sqltgl");
$obj->add_field("Nama_Sup", "Nama Supplier", "awr");
$obj->add_field("Total_Beli", "TOTAL", "r", "rupiah");
$obj->set_field_order("No_Beli", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("trash", "Hapus", "BeliPajakJS.detail_hapus", "No_Pajak", $no_temp);
$obj->set_func_btn("BeliPajakJS.beli_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("BeliPajakJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? " LIMIT 100" : " WHERE CONCAT(No_Retur,No_Pajak,No_NPWP,DATE_FORMAT(Tgl_Pajak,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT * FROM inv_beli_pajak".$tsql);
$obj->add_field("No_Pajak", "No. Seri FP", "c");
$obj->add_field("Tgl_Pajak", "Tgl. FP", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tgl_Retur", "Tgl. Retur", "c", "sqltgl", null, "val-tgl");
$obj->add_field("No_NPWP", "No. NPWP", "l");
$obj->add_field("Nama_NPWP", "Nama NPWP", "awr");
$obj->set_field_order("No_Pajak", "D");
$obj->add_row_btn("save", "Pilih", "BeliPajakJS.tx_select");
$obj->set_func_navi("BeliPajakJS.data_query('brow-tx')");
$ajson[] = $obj->json_table("divBrowTX");
} else if ( $data == "brow-beli" ) {
$tcari = trim(Param::Get("Cari_Beli"));
$tsql = ($tcari=="") ? "" : " WHERE CONCAT(B.No_Beli,S.Nama_Sup) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT B.*,S.Nama_Sup,'N' Nota FROM (SELECT * FROM inv_beli WHERE Data_Beli=0 AND No_Pajak='') B LEFT JOIN para_supplier S ON (B.SupID=S.SupID)".$tsql);
$obj->add_field("No_Beli", "No. Trans", "c");
$obj->add_field("Tgl_Beli", "Tgl. Trans", "c", "sqltgl");
$obj->add_field("Nama_Sup", "Nama Supplier", "awr");
$obj->add_field("Total_Beli", "TOTAL", "r", "rupiah");
$obj->set_field_order("No_Beli", "A");
$obj->add_row_checkbox("No_Beli", "Nota", ["Y","N"]);
$obj->set_func_navi("BeliPajakJS.data_query('brow-beli')");
$ajson[] = $obj->json_table("divBrowBeli");
} else if ( $data == "info-npwp") {
$ainfo = ['No_NPWP'=>"000000000000",'Nama_NPWP'=>"Nama NPWP"];
$db->Query("SELECT Nama_Sup Nama_NPWP,No_NPWP FROM para_supplier WHERE SupID='".Param::Get("SupID")."' LIMIT 1");
if ($db->Next()) $ainfo = $db->AllRow();
$ajson[] = ['type'=>"form", 'id'=>"No_NPWP", 'value'=>$db->Row("No_NPWP")];
$ajson[] = ['type'=>"form", 'id'=>"Nama_NPWP", 'value'=>$db->Row("Nama_NPWP")];
} else if ( $data == "pdf") {
nota_retur_pajak(Param::Get("Nomor_Cetak"));
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Pembuatan Nota Retur Pajak</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+297
View File
@@ -0,0 +1,297 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/beli_retur.php
Desc. : PHP - Transaksi Retur Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : March 25th, 2011.
Last Modified : May 15th, 2023.
(c) 2010 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Beli", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Beli'=>$nomor];
if ($mode == "add") {
$atabel['No_Beli'] = "RB-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_Beli'] = tgl_ymd();
$atabel['GudangID'] = 1;
$atabel['SupID'] = 0;
$nomor = "";
} else if ($mode == "edit") {
Detail_Copy($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("C", Param::Get("Tgl_Beli"), true);
Detail_Save($nomor, Param::Get("Tgl_Beli"), Param::Get("GudangID"), $b_baru, $no_lama);
$anota = ['Beli'=>0];
$db->Query("SELECT SUM(-Qty*Harga_Pokok) Retur_Beli FROM inv_detail WHERE No_Ref='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("inv_beli");
//$sql->add_param("No_Beli", $nomor);
$sql->add_param_date("Tgl_Beli");
$sql->add_param("No_Faktur", Param::Get("Catatan"));
$sql->add_param("No_Pajak");
$sql->add_param("GudangID");
$sql->add_param("SupID");
$sql->add_param("Total_Beli", $anota['Retur_Beli']);
$sql->add_param("Data_Beli", 0);
$sql->add_param_userid();
$sql->add_where("No_Beli", $nomor);
$sql->UpdateDB();
$mode = "view";//todo: print jika langsung cetak
} else if ($mode == "cancel") {
Detail_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_Beli'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_beli WHERE Data_Beli=0 AND No_Beli='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_Beli", $atabel['No_Beli'], !$enable, true, "text", "nomor transaksi");
$tpajak = $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], $enable, true, "text", "nomor faktur pajak");
$ttglnota = $form->datebox("_", "Tgl_Beli", $atabel['Tgl_Beli'], $enable, true);
$tgud = $form->option_db("_", "GudangID", $atabel['GudangID'], $enable, true, "vi_para_gudang", ["GudangID","Nama_Gudang2"], "Aktif=1 ORDER BY Nama_Gudang", [0,"&nbsp;"]);
$tsup = $form->option_db("_", "SupID", $atabel['SupID'], $enable, true, "para_supplier", ["SupID","Nama_Sup"], "Aktif=1 ORDER BY Nama_Sup", [0,"&nbsp;"]);
$tcatat = $form->textbox("_", "Catatan", $atabel['No_Faktur'], $enable, true, "text", "catatan transaksi");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Beli">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="BeliReturJS.tx_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="Tgl_Beli">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="GudangID">Lokasi Gudang</label>
<div class="col">'.$tgud.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="SupID">Nama Supplier</label>
<div class="col">'.$tsup.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Pajak">Nomor Faktur Pajak</label>
<div class="col">'.$tpajak.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Faktur">Catatan</label>
<div class="col">'.$tcatat.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("DELETE FROM inv_beli WHERE No_Beli='".$nomor."'");
$db->Query("DELETE FROM inv_detail WHERE No_Ref='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
$iqty = doubleval(Param::Get("Qty", 0)) * -1; $istok = $iqty;
$db->Query("SELECT Qty FROM inv_produk_kemasan WHERE InvID='".Param::Get("InvID")."' AND SatuanID='".Param::Get("SatuanID")."'");
if ($db->Next()) $istok = $db->Row("Qty", 1) * $iqty;
$sql = new SQL($db);
$sql->set_table("tmp_inv_detail");
$sql->add_param("No_Ref", $nomor);
$sql->add_param("InvID");
$sql->add_param("SatuanID");
$sql->add_param("Qty", $iqty);
$sql->add_param("Stok", $istok);
$sql->add_param("Harga_Pokok");
$sql->add_param_unix();
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Ref", $nomor);
if ( $mode_detail == "insert" ) {
$sql->add_param("NotaID", 4);
$sql->InsertDB();
} else if ( $mode_detail == "update" ) {
$sql->UpdateDB();
} else if ( $mode_detail == "delete" ) {
$sql->DeleteDB();
}
}
$qview = ""; $qtabel = "inv_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_inv_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT D.*,P.Nama_Lengkap2 Nama_Produk,-D.Qty Qty2,(-D.Qty*D.Harga_Pokok) Total FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview.") D LEFT JOIN vi_inv_produk2 P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID)");
$obj->set_query_footer("SELECT SUM(-D.Qty*D.Harga_Pokok) Total FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview.") D");
$obj->add_field("ID", "ID", "c");
$obj->add_field("Nama_Produk", "Nama Produk", "awr");
$obj->add_field("Qty2", "Qty", "r", "rupiah2");
$obj->add_field("Harga_Pokok", "Harga @", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
$obj->set_field_order("ID", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("clipboard", "Ubah", "BeliReturJS.detail_ubah");
$obj->add_row_btn("trash", "Hapus", "BeliReturJS.detail_hapus", "Unix", user_unix());
$obj->set_func_btn("BeliReturJS.detail_tambah", '<i class="bi-plus-lg me-1"></i> Produk');
//$obj->set_func_btn("BeliReturJS.produk_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("BeliReturJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? " LIMIT 100" : " AND CONCAT(No_Beli,No_Faktur) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT B.*,S.Nama_Sup FROM (SELECT * FROM inv_beli WHERE Data_Beli=0".$tsql.") B LEFT JOIN para_supplier S ON (B.SupID=S.SupID)");
$obj->add_field("No_Beli", "No. Trans", "c");
$obj->add_field("Tgl_Beli", "Tgl. Retur", "c", "sqltgl", null, "val-tgl");
$obj->add_field("No_Pajak", "Nota Pajak", "l");
$obj->add_field("Nama_Sup", "Nama Supplier", "awr");
$obj->add_field("Total_Beli", "Total Retur", "r", "rupiah");
$obj->set_field_order("No_Beli", "D");
$obj->add_row_btn("save", "Pilih", "BeliReturJS.tx_select");
$obj->set_func_navi("BeliReturJS.data_query('brow-tx')");
$ajson[] = $obj->json_table("divBrowTX");
} else if ( $data == "brow-produk" ) {//not yet
$tcari = trim(Param::Get("Cari_Produk"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(Kode_Produk,Nama_Lengkap) LIKE '%".$tcari."%'";
$obj = new cGRIDTABLE();
$obj->set_query("SELECT * FROM vi_inv_produk2 WHERE Aktif=1".$tsql);
$obj->add_field("InvID", "InvID", "hidden");
$obj->add_field("SatuanID", "SatuanID", "hidden");
$obj->add_field("Kode_Produk", "Kode Produk", "center");
$obj->add_field("Nama_Lengkap2", "Nama Produk");
$obj->add_field("Nama_Satuan", "Nama Satuan", "hidden");
$obj->set_field_order("Nama_Lengkap", "A");
$obj->set_func_select("BeliReturJS.browse_produk_select", false);
$obj->set_func_navi("BeliReturJS.data_query('brow-produk')");
$ajson[] = $obj->json_table("divBrowProduk");
} else if ( $data == "auto-produk" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
if (is_string($tcari) && strlen($tcari) < 64) {
$db->Query("SELECT P.InvID,P.Nama_Lengkap,CONCAT(P.SatuanID,':',P.Nama_Satuan) Data2 FROM vi_inv_produk2 P WHERE Aktif=1 AND CONCAT(Nama_Lengkap) LIKE '%".$tcari."%' ORDER BY Nama_Lengkap LIMIT 50");
while ($db->Next()) {
$ajson['autodata'][] = ['value'=>$db->Row("InvID"), 'text'=>$db->Row("Nama_Lengkap"), 'data'=>$db->Row("Data2")];
}
}
} else if ($data == "detail-produk") {
$id = Param::Get("ID", 0); $atabel = ['ID'=>$id];
if ($id > 0) {
$db->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$nomor."' AND ID='".$id."' LIMIT 1");
if ($db->Next()) $atabel = $db->AllRow();
}
if ($atabel['InvID']>0 && $atabel['SatuanID']>0) {
$db->Query("SELECT Nama_Lengkap2 Nama_Produk,Nama_Satuan FROM vi_inv_produk2 WHERE InvID='".$atabel['InvID']."' AND SatuanID='".$atabel['SatuanID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
$form = new Form($db);
$tnama = $form->textauto("_", "Nama_Produk", ['value'=>$atabel['InvID'],'text'=>$atabel['Nama_Produk']], true, true, "ketik nama produk");
$tqty = $form->textbox("_", "Qty", $atabel['Qty'], true, true, "double");
$thpp = $form->textbox("_", "Harga_Pokok", $atabel['Harga_Pokok'], true, true, "double");
$ttot = $form->textbox("_", "Jumlah", 0, false, false, "double");
$tsat = $form->textbox("_", "Nama_Satuan", $adetail['Nama_Satuan'], false, false, "text");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Nama_Produk">Nama Produk</label>
<div class="col">'.$tnama.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Qty">Qty</label>
<div class="col-sm-4 col-lg-5">'.$tqty.'</div>
<div class="col-sm-4 col-lg-4">'.$tsat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Harga_Pokok">Harga (@)</label>
<div class="col-sm-4 col-lg-5">'.$thpp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Total</label>
<div class="col-sm-4 col-lg-5">'.$ttot.'</div>
</div>
<input type="hidden" id="ID" value="'.$atabel['ID'].'" >
<input type="hidden" id="InvID" value="'.$atabel['InvID'].'" >
<input type="hidden" id="SatuanID" value="'.$atabel['SatuanID'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >
';
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Retur Pembelian</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+334
View File
@@ -0,0 +1,334 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/biaya_pajak.php
Desc. : PHP - Pembuatan Faktur Pajak Biaya
Created By : Siau Pheng ([email protected]).
Created Date : February 9th, 2017.
Last Modified : January 8th, 2025.
(c) 2017 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func/ias.php");
require_once(__DIR__."/../func/biaya.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;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Biaya", "");
$ppn = 0.11;
//$ppn = (tgl_sql2str(Param::Get("Tgl_Biaya",tgl_dmy())) >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN'] : 0.11;
$ppn_string = "11";
//$ppn_string = ($atabel['Tgl_Biaya'] >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN_STRING'] : "11";
$ppn_string = "11";
//$ppn_string = (tgl_sql2str(Param::Get("Tgl_Biaya",tgl_dmy())) >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN_STRING'] : "11";
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Biaya'=>$nomor];
if ($mode == "add") {
$atabel['No_Biaya'] = "FPB-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['No_Pajak'] = FP_Baru();
$atabel['Tgl_Biaya'] = tgl_ymd();
$atabel['Tgl_Pajak'] = tgl_ymd();
$atabel['SupID'] = 0;
$atabel['No_NPWP'] = "0000000000000000";
$atabel['No_NITKU'] = "000000";
$nomor = "";
} else if ($mode == "edit") {
Biaya_Copy($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("F", Param::Get("Tgl_Biaya"), true);
Biaya_Save($nomor, $b_baru, $no_lama, $ppn);
$anota = ['DPP'=>0, 'PPN'=>0];
$db->Query("SELECT SUM(Qty*Harga_Jual) DPP,ROUND(SUM(Qty*Harga_Jual)*PPN) PPN FROM biaya_pajak_detail WHERE No_Biaya='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("biaya_pajak");
$sql->add_param_date("Tgl_Biaya");
$sql->add_param("Uraian");
$sql->add_param("No_Pajak");
$sql->add_param_date("Tgl_Pajak");
$sql->add_param("No_NPWP");
$sql->add_param("No_NITKU");
$sql->add_param("Nama_NPWP");
$sql->add_param("Alamat_NPWP");
$sql->add_param("Jumlah_DPP", $anota['DPP']);
$sql->add_param("Jumlah_PPN", $anota['PPN']);
$sql->add_param("SupID");
$sql->add_param_userid();
$sql->add_where("No_Biaya", $nomor);
$sql->UpdateDB();
FP_Update(Param::Get("No_Pajak"));
$mode = "view";
} else if ($mode == "cancel") {
Biaya_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_Biaya'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM biaya_pajak WHERE No_Biaya='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_Biaya", $atabel['No_Biaya'], !$enable, false, "text", "nomor faktur");
$ttgl = $form->datebox("_", "Tgl_Biaya", $atabel['Tgl_Biaya'], $enable, false);
$turai = $form->textarea("_", "Uraian", $atabel['Uraian'], $enable, false, 2);
$tnsfp = $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], $enable, false, "text", "nomor seri fp, XXX-XX.12345678");
$tnsfp_tgl = $form->datebox("_", "Tgl_Pajak", $atabel['Tgl_Pajak'], $enable, false);
$tnpwp = $form->textbox("_", "No_NPWP", $atabel['No_NPWP'], $enable, false, "text");
$tnpwp_nam = $form->textbox("_", "Nama_NPWP", $atabel['Nama_NPWP'], $enable, false, "text");
$tnpwp_ala = $form->textarea("_", "Alamat_NPWP", $atabel['Alamat_NPWP'], $enable, false, 2);
$tdpp = $form->textbox("_", "Jumlah_DPP", $atabel['Jumlah_DPP'], false, false, "double");
$tppn = $form->textbox("_", "Jumlah_PPN", $atabel['Jumlah_PPN'], false, false, "double");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Biaya">Nomor Faktur</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="BiayaPajakJS.tx_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="Tgl_Biaya">Tanggal Faktur</label>
<div class="col-sm-7 col-lg-5">'.$ttgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Uraian">Uraian / Catatan</label>
<div class="col">'.$turai.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah DPP</label>
<div class="col">'.$tdpp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah PPN ('.$ppn_string.'%)</label>
<div class="col">'.$tppn.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Pajak">Nomor Seri FP</label>
<div class="col">'.$tnsfp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Tgl_Pajak">Tanggal FP</label>
<div class="col-sm-7 col-lg-5">'.$tnsfp_tgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_NPWP">NPWP</label>
<div class="col"><div class="input-group">'.$tnpwp.'<button class="btn '.($enable?'btn-info':'btn-secondary').'" type="button"'.($enable?'':' disabled').' onclick="BiayaPajakJS.npwp_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="Nama_NPWP">Nama NPWP</label>
<div class="col">'.$tnpwp_nam.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Alamat_NPWP">Alamat NPWP</label>
<div class="col">'.$tnpwp_ala.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="SupID" value="'.$atabel['SupID'].'" >
<input type="hidden" id="No_NPWP2" value="'.$atabel['No_NPWP'].'" >
<input type="hidden" id="No_Pajak2" value="'.$atabel['No_Pajak'].'" >
<input type="hidden" id="No_NITKU" value="'.$atabel['No_NITKU'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >';
} else if ( $data == "delete" ) {
$db->Query("DELETE FROM biaya_pajak WHERE No_Biaya='".$nomor."'");
$db->Query("DELETE FROM biaya_pajak_detail WHERE No_Biaya='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
$sql = new SQL($db);
$sql->set_table("tmp_biaya_detail");
$sql->add_param("Uraian_Biaya");
$sql->add_param("Qty");
$sql->add_param("Harga_Jual");
$sql->add_param_unix();
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Biaya", $nomor);
if ( $mode_detail == "insert" ) {
$sql->add_param("No_Biaya", $nomor);
$sql->add_param("PPN", $ppn);
$sql->InsertDB();
} else if ( $mode_detail == "update" ) {
$sql->UpdateDB();
} else if ( $mode_detail == "delete" ) {
$sql->DeleteDB();
}
}
$qview = ""; $qtabel = "biaya_pajak_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_biaya_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT *,(Qty*Harga_Jual*PPN) Total_PPN,(Qty*Harga_Jual*(1+PPN)) Total FROM ".$qtabel." WHERE No_Biaya='".$nomor."' ".$qview);
$obj->set_query_footer("SELECT COUNT(*) Uraian_Biaya,SUM(Qty*Harga_Jual*PPN) Total_PPN,SUM(Qty*Harga_Jual*(1+PPN)) Total FROM ".$qtabel." WHERE No_Biaya='".$nomor."' ".$qview);
$obj->add_field("ID", "ID", "c");
$obj->add_field("Uraian_Biaya", "Uraian", "awr", "", "items");
$obj->add_field("Qty", "Qty", "c");
$obj->add_field("Harga_Jual", "Harga @", "r", "rupiah");
$obj->add_field("Total_PPN", "PPN (".$ppn_string."%)", "r", "rupiah", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
$obj->set_field_order("ID", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("clipboard", "Ubah", "BiayaPajakJS.detail_ubah");
$obj->add_row_btn("trash", "Hapus", "BiayaPajakJS.detail_hapus", "Unix", user_unix());
$obj->set_func_btn("BiayaPajakJS.detail_tambah", '<i class="bi-plus-lg me-1"></i> Produk');
}
$obj->set_func_navi("BiayaPajakJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
if (in_array($mode_detail, ["insert","update","delete"])) {
$tot_dpp = 0; $tot_ppn = 0;
$db->Query("SELECT SUM(Qty*Harga_Jual) Total_DPP,ROUND(SUM(Qty*Harga_Jual)*PPN) Total_PPN FROM ".$qtabel." WHERE No_Biaya='".$nomor."'");
if ($db->Next()) {
$tot_dpp = $db->Row("Total_DPP", 0);
$tot_ppn = $db->Row("Total_PPN", 0);
}
$ajson[] = ['type'=>"form", 'id'=>"Jumlah_DPP", 'value'=>rupiah($tot_dpp)];
$ajson[] = ['type'=>"form", 'id'=>"Jumlah_PPN", 'value'=>rupiah($tot_ppn)];
}
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? " ORDER BY No_Biaya DESC LIMIT 100" : " WHERE CONCAT(No_Biaya,No_Pajak,No_NPWP,DATE_FORMAT(Tgl_Pajak,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT P.* FROM (SELECT * FROM biaya_pajak".$tsql.") P");
$obj->add_field("No_Biaya", "No. Faktur", "c");
$obj->add_field("Tgl_Biaya", "Tgl. Faktur", "c", "sqltgl", null, "val-tgl");
$obj->add_field("No_Pajak", "NSFP", "c");
$obj->add_field("No_NPWP", "NPWP", "l");
$obj->add_field("Nama_NPWP", "Nama NPWP", "awr");
$obj->set_field_order("No_Biaya", "D");
$obj->add_row_btn("save", "Pilih", "BiayaPajakJS.tx_select");
$obj->set_func_navi("BiayaPajakJS.data_query('brow-tx')");
$ajson[] = $obj->json_table("divBrowTX");
} else if ( $data == "brow-npwp" ) {
$tcari = trim(Param::Get("Cari_NPWP"));
$tsql = ($tcari=="") ? " LIMIT 100" : " AND CONCAT_WS(S.Nama_Sup,S.No_NPWP) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT S.*,CONCAT(S.Alamat_Sup,' ',S.Kota_Sup) Alamat_Kota FROM para_supplier S WHERE S.Aktif=1".$tsql."");
$obj->add_field("SupID", "ID", "hid");
$obj->add_field("No_NPWP", "NPWP", "c");
$obj->add_field("No_NITKU", "NITKU", "c");
$obj->add_field("Nama_Sup", "Nama NPWP / NIK", "awr");
$obj->add_field("Nama_Alamat", "Nama Supplier", "awr");
$obj->add_field("Alamat_Kota", "Alamat Kota", "hid");
$obj->set_field_order("No_NPWP", "A");
$obj->add_row_btn("save", "Pilih", "BiayaPajakJS.npwp_select");
$obj->set_func_navi("BiayaPajakJS.data_query('brow-npwp')");
$ajson[] = $obj->json_table("divBrowNPWP");
} else if ($data == "detail-biaya") {
$id = Param::Get("ID", 0); $atabel = ['ID'=>$id];
if ($id > 0) {
$db->Query("SELECT * FROM tmp_biaya_detail WHERE No_Biaya='".$nomor."' AND ID='".$id."' LIMIT 1");
if ($db->Next()) $atabel = $db->AllRow();
}
$form = new Form($db);
$turai = $form->textarea("_", "Uraian_Biaya", $atabel['Uraian_Biaya'], true, false, 2, "uraian biaya");
$tqty = $form->textbox("_", "Qty", $atabel['Qty'], true, false, "double");
$tharga = $form->textbox("_", "Harga_Jual", $atabel['Harga_Jual'], true, false, "double");
$ttot = $form->textbox("_", "Jumlah", 0, false, false, "double");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Uraian_Biaya">Uraian Biaya</label>
<div class="col">'.$turai.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Qty">Qty</label>
<div class="col-sm-4 col-lg-5">'.$tqty.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Harga_Jual">Harga (@)</label>
<div class="col-sm-4 col-lg-5">'.$tharga.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Total</label>
<div class="col-sm-4 col-lg-5">'.$ttot.'</div>
</div>
<input type="hidden" id="ID" value="'.$atabel['ID'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >';
} else if ( $data == "check-nsfp" ) {
$ada = 0;
$db->Query("SELECT COUNT(*) Item FROM biaya_pajak WHERE No_Pajak='".Param::Get("No_Pajak")."'");
if ($db->Next()) $ada = $db->Row("Item", 0);
if ($ada == 0) {
$db->Query("SELECT COUNT(*) Item FROM inv_jual_pajak WHERE No_Pajak='".Param::Get("No_Pajak")."'");
if ($db->Next()) $ada = $db->Row("Item", 0);
}
$ajson['ada'] = ($ada > 0) ? true : false;
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Pembuatan Faktur Pajak Biaya</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2 dropdown-toggle" id="butPrint" type="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"><i class="bi-printer me-2"></i>Cetak</button>
<div class="dropdown-menu" aria-labelledby="butPrint">
<a class="dropdown-item" href="#" id="printFaktur">Cetak Faktur</a>
<a class="dropdown-item" href="#" id="printFP">Cetak Faktur Pajak</a>
</div>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+458
View File
@@ -0,0 +1,458 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual.php
Desc. : PHP - Transaksi Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : May 24th, 2010.
Last Modified : January 22nd, 2024.
(c) 2010 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Jual", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Jual'=>$nomor, 'CK'=>"K", 'A_Picker'=>"0"];
if ($mode == "add") {
$atabel['No_Jual'] = "TJ-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_Jual'] = tgl_ymd();
$atabel['Termin'] = $_SESSION['__APP_IAS']['INVOICE_JUAL_HARI'];
$atabel['GudangID'] = 1;
$atabel['OutletID'] = 0;
$atabel['Rekap'] = 0;
$nomor = "";
} else if ($mode == "edit") {
Detail_Copy($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("J", Param::Get("Tgl_Jual"), true);
Detail_Save($nomor, Param::Get("Tgl_Jual"), Param::Get("GudangID"), $b_baru, $no_lama);
$anota = ['Jual'=>0, 'Diskon'=>0];
$db->Query("SELECT SUM(-Qty*Harga_Jual) Jual, SUM(Total_Diskon) Diskon FROM inv_detail WHERE No_Ref='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("inv_jual");
$sql->add_param_date("Tgl_Jual");
$sql->add_param_date("Tgl_JT");
$sql->add_param("Termin", "IF(Tgl_JT='0000-00-00',0,DATEDIFF(Tgl_JT,Tgl_Jual))", true);
$sql->add_param("No_Faktur");
$sql->add_param("GudangID");
$sql->add_param("OutletID");
$sql->add_param("SalesID");
$sql->add_param("HelperID");
$sql->add_param("SupirID");
$sql->add_param("A_Picker", Param_Picker(Param::Get("A_Picker","0")));
$sql->add_param("Total_Jual", $anota['Jual']);
$sql->add_param("Total_Diskon", $anota['Diskon']);
$sql->add_param("Catatan");
$sql->add_param("CK");
$sql->add_param_userid();
$sql->add_where("No_Jual", $nomor);
if ($b_baru) $sql->add_param_date("Tgl_Nota", Param::Get("Tgl_Jual"));
$sql->UpdateDB();
if (!$b_baru && Param::Get("Rekap",0)==1) {
// update ke SCS
scs_update_jual($nomor);
}
/* PELUNASAN JIKA CASH
if (Param::Get("CK", "K") == "C") {
$tot_bayar = $anota['Jual']-$anota['Diskon'];
$db->Query("DELETE FROM inv_jual_lunas WHERE No_Jual='".$nomor."'");
$db->Query("INSERT INTO inv_jual_lunas (No_Jual,Tgl_Bayar,Total_Bayar,UserID) VALUES('".$nomor."','".tgl_sql2str(Param::Get("Tgl_Jual"))."','".$tot_bayar."','".user_id()."')");
$db->Query("UPDATE inv_jual SET Total_Bayar='".$tot_bayar."',Lunas=IF(Total_Jual-Total_Diskon-Total_Bayar-Total_Potong=0,1,0),Tgl_Lunas=IF(Lunas=1,'".tgl_sql2str(Param::Get("Tgl_Jual"))."','0000-00-00') WHERE No_Jual='".$nomor."'");
}*/
$mode = "view";//todo: print jika langsung cetak
} else if ($mode == "cancel") {
Detail_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_Jual'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_jual WHERE Data_Jual=1 AND No_Jual='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
if ($atabel['OutletID']>0) {
$db->Query("SELECT Nama_Alamat Nama_Outlet,Alamat_Kota Alamat_Outlet FROM vi_para_outlet WHERE OutletID='".$atabel['OutletID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_Jual", $atabel['No_Jual'], !$enable, true, "text", "nomor transaksi");
$tfaktur = $form->textbox("_", "No_Faktur", $atabel['No_Faktur'], $enable, true, "text", "nomor faktur");
$ttglnota = $form->datebox("_", "Tgl_Jual", $atabel['Tgl_Jual'], $enable, true);
$ttgljt = $form->datebox("_", "Tgl_JT", $atabel['Tgl_JT'], $enable, true);
$tgud = $form->option_db("_", "GudangID", $atabel['GudangID'], $enable, true, "vi_para_gudang", ["GudangID","Nama_Gudang2"], "Aktif=1 ORDER BY Nama_Gudang", [0,"&nbsp;"]);
$toutl = $form->textauto("_", "Nama_Outlet", ['value'=>$atabel['OutletID'],'text'=>$atabel['Nama_Outlet']], $enable, true, "ketik nama outlet");
$toutlal = $form->textbox("_", "Alamat_Outlet", $atabel['Alamat_Outlet'], false, false, "text");
$tsales = $form->option_db("_", "SalesID", $atabel['SalesID'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_SALES']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"]);
$thelper = $form->option_db("_", "HelperID", $atabel['HelperID'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_HELPER']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"]);
$tsupir = $form->option_db("_", "SupirID", $atabel['SupirID'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_SUPIR']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"]);
$tpicker = $form->option_db("_", "A_Picker", $atabel['A_Picker'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_PICKER']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"], null, null, true);
$tno_do = $form->textbox("_", "No_DO", $atabel['No_DO'], false, false, "text");
$tno_tagih = $form->textbox("_", "No_Tagih", $atabel['No_Tagih'], false, false, "text");
$tno_pajak = $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], false, false, "text");
$ttgllunas = $form->datebox("_", "Tgl_Lunas", $atabel['Tgl_Lunas'], false, false);
$tcatat = $form->textarea("_", "Catatan", $atabel['Catatan'], $enable, true, 1);
$tck = ($enable) ? '<select class="form-select" id="CK" name="CK" onchange="JualJS.oc_CK();"><option value="C"'.($atabel['CK']=="C"?' selected="selected"':'').'>Tunai</option><option value="K"'.($atabel['CK']=="K"?' selected="selected"':'').'>Non Tunai</option></select>' : '<button class="btn btn-secondary" type="button" disabled="">'.['C'=>"Tunai",'K'=>"Non Tunai"][$atabel['CK']].'</button>';
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Jual">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualJS.tx_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="Tgl_Jual">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Tgl_JT">Jatuh Tempo</label>
<div class="col-sm-7 col-lg-5">'.$ttgljt.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="GudangID">Lokasi Gudang</label>
<div class="col">'.$tgud.'</div>
</div>
<div class="row mb-1 collapse iextra" id="iex1">
<label class="col-sm-5 col-lg-3 col-form-label">No. DO</label>
<div class="col">'.$tno_do.'</div>
</div>
<div class="row mb-1 collapse iextra" id="iex2">
<label class="col-sm-5 col-lg-3 col-form-label">No. Tagihan</label>
<div class="col">'.$tno_tagih.'</div>
</div>
<div class="row mb-1 collapse iextra" id="iex3">
<label class="col-sm-5 col-lg-3 col-form-label">No. Seri FP</label>
<div class="col">'.$tno_pajak.'</div>
</div>
<div class="row mb-1 collapse iextra" id="iex4">
<label class="col-sm-5 col-lg-3 col-form-label">Tanggal Lunas</label>
<div class="col-sm-7 col-lg-5">'.$ttgllunas.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Faktur">Nomor Faktur</label>
<div class="col"><div class="input-group">'.$tfaktur.$tck.'</div></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">'.$toutl.'<button class="btn '.($enable?'btn-info':'btn-secondary').'" type="button"'.($enable?'':' disabled').' onclick="JualJS.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">Alamat Outlet</label>
<div class="col">'.$toutlal.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="SalesID">Nama Sales <span class="float-end"><a class="text-decoration-none text-active" type="button" data-bs-toggle="collapse" data-bs-target=".iextra" aria-expanded="false" aria-controls="iex1 iex2 iex3 iex4 iex5 iex6 iex7"><i class="fw-bolder bi-arrows-expand"></i></a></span></label>
<div class="col">'.$tsales.'</div>
</div>
<div class="row mb-1 collapse iextra" id="iex5">
<label class="col-sm-5 col-lg-3 col-form-label">Nama Helper</label>
<div class="col">'.$thelper.'</div>
</div>
<div class="row mb-1 collapse iextra" id="iex6">
<label class="col-sm-5 col-lg-3 col-form-label">Nama Supir</label>
<div class="col">'.$tsupir.'</div>
</div>
<div class="row mb-1 collapse iextra" id="iex7">
<label class="col-sm-5 col-lg-3 col-form-label">Nama Picker</label>
<div class="col">'.$tpicker.'</div>
</div>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-3 col-lg-2 col-form-label" for="Catatan" style="width:12.5%;">Catatan</label>
<div class="col">'.$tcatat.'</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="OutletID" value="'.$atabel['OutletID'].'" >
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="Rekap" value="'.$atabel['Rekap'].'" >
<input type="hidden" id="Termin" value="'.$atabel['Termin'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("DELETE FROM inv_jual_lunas WHERE No_Jual='".$nomor."'");
$db->Query("DELETE FROM inv_jual WHERE No_Jual='".$nomor."'");
$db->Query("DELETE FROM inv_detail WHERE No_Ref='".$nomor."'");
// update ke SCS
if (Param::Get("Rekap",0)==1) scs_delete_jual($nomor);
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
$iqty = doubleval(Param::Get("Qty", 0)) * -1; $istok = $iqty;
$db->Query("SELECT Qty FROM inv_produk_kemasan WHERE InvID='".Param::Get("InvID")."' AND SatuanID='".Param::Get("SatuanID")."'");
if ($db->Next()) $istok = $db->Row("Qty", 1) * $iqty;
$tot_diskon = ($iqty==0) ? 0 : Param::Get("Total_Diskon", 0);
if (Param::Get("Pro_SQ",0)==1) $tot_diskon = Param::Get("Harga_Jual",0) * $iqty * -1;
$sql = new SQL($db);
$sql->set_table("tmp_inv_detail");
$sql->add_param("No_Ref", $nomor);
$sql->add_param("InvID");
$sql->add_param("SatuanID");
$sql->add_param("RasaID");
$sql->add_param("Qty", $iqty);
$sql->add_param("Stok", $istok);
$sql->add_param("Harga_Jual");
$sql->add_param("Total_Diskon", $tot_diskon);
$sql->add_param("Pro_SQ");
$sql->add_param("Pro_SD");
$sql->add_param("Pro_ID");
$sql->add_param_unix();
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Ref", $nomor);
if ( $mode_detail == "insert" ) {
$sql->add_param("Harga_Pokok");
$sql->add_param("NotaID", 5);
$sql->InsertDB();
} else if ( $mode_detail == "update" ) {
$sql->UpdateDB();
} else if ( $mode_detail == "delete" ) {
$sql->DeleteDB();
}
}
$qview = ""; $qtabel = "inv_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_inv_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT D.*,CONCAT(P.Nama_Lengkap2,IF(D.Qty>0,' (Ret)','')) Nama_Produk,P.Nama_Satuan,R.Nama_Rasa,(D.Qty2*D.Harga_Jual)-D.Total_Diskon Total,IF(D.Qty>0,0,1) FC FROM (SELECT *,-Qty Qty2 FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview." AND Qty<>0) D LEFT JOIN vi_inv_produk2 P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID) LEFT JOIN para_rasa R ON (D.RasaID=R.RasaID)");
$obj->set_query_footer("SELECT COUNT(*) Harga_Jual,SUM(D.Total_Diskon) Total_Diskon,SUM((D.Qty2*D.Harga_Jual)-D.Total_Diskon) Total FROM (SELECT *,-Qty Qty2 FROM ".$qtabel." WHERE No_Ref='".$nomor."' ".$qview.") D");
$obj->add_field("ID", "ID", "c");
$obj->add_field("Nama_Produk", "Nama Produk", "awr");
$obj->add_field("Nama_Rasa", "Varian / Rasa", "l");
$obj->add_field("Qty2", "Qty", "r", "rupiah2");
$obj->add_field("Harga_Jual", "Harga @", "r", "rupiah", "items");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
$obj->set_field_order("ID", "A");
$obj->set_row_control("FC", 1);
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("clipboard", "Ubah", "JualJS.detail_ubah");
$obj->add_row_btn("trash", "Hapus", "JualJS.detail_hapus", "Unix", user_unix());
$obj->set_func_btn("JualJS.detail_tambah", '<i class="bi-plus-lg me-1"></i> Produk');
$obj->set_func_btn("JualJS.produk_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("JualJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tlimit = ($tcari=="") ? "" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Jumlah FROM inv_jual WHERE Data_Jual=1".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Jumlah", "TOTAL", "r", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "D");
$obj->add_row_btn("save", "Pilih", "JualJS.tx_select");
$obj->set_func_navi("JualJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-outlet" ) {
$tcari = trim(Param::Get("Cari_Outlet"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(Nama_Outlet,Telp_Outlet,Nama_Outlet) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("vi_para_outlet", "*", "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", "JualJS.outlet_select");
$obj->set_func_navi("JualJS.data_query('brow-outlet')");
$ajson[] = $obj->db_table("divBrowOutlet");
} else if ( $data == "brow-produk" ) {
$tcari = trim(Param::Get("Cari_Produk"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(Kode_Produk,Nama_Lengkap) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("vi_inv_produk2", "*", "Aktif=1".$tsql);
$obj->add_field("InvID", "ID", "hid");
$obj->add_field("SatuanID", "SatuanID", "hid");
$obj->add_field("Kode_Produk", "Kode", "c");
$obj->add_field("Nama_Lengkap2", "Nama Produk", "awr");
$obj->set_field_order("Nama_Lengkap", "A");
$obj->add_row_btn("save", "Pilih", "JualJS.produk_select");
$obj->set_func_navi("JualJS.data_query('brow-produk')");
$ajson[] = $obj->db_table("divBrowProduk");
} else if ( $data == "auto-outlet" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
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 == "auto-produk" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
if (is_string($tcari) && strlen($tcari) < 64) {
$db->Query("SELECT P.InvID,P.Nama_Lengkap,CONCAT(P.SatuanID,':',P.Nama_Satuan) Data2 FROM vi_inv_produk2 P WHERE Aktif=1 AND CONCAT(Nama_Lengkap) LIKE '%".$tcari."%' ORDER BY Nama_Lengkap LIMIT 50");
while ($db->Next()) {
$ajson['autodata'][] = ['value'=>$db->Row("InvID"), 'text'=>$db->Row("Nama_Lengkap"), 'data'=>$db->Row("Data2")];
}
}
} else if ($data == "detail-produk") {
$id = Param::Get("ID", 0); $atabel = ['ID'=>$id, 'InvID'=>Param::Get("InvID",0), 'SatuanID'=>Param::Get("SatuanID",0)];
if ($id > 0) {
$db->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$nomor."' AND ID='".$id."' LIMIT 1");
if ($db->Next()) $atabel = $db->AllRow();
$atabel['Qty'] *= -1;
}
if ($atabel['InvID']>0 && $atabel['SatuanID']>0) {
$db->Query("SELECT Nama_Lengkap2 Nama_Produk,Nama_Satuan FROM vi_inv_produk2 WHERE InvID='".$atabel['InvID']."' AND SatuanID='".$atabel['SatuanID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
$form = new Form($db);
$tnama = $form->textauto("_", "Nama_Produk", ['value'=>$atabel['InvID'],'text'=>$atabel['Nama_Produk']], true, false, "ketik nama produk");
$trasa = $form->option("_", "RasaID", $atabel['RasaID'], true, false, [$atabel['RasaID']=>$atabel['RasaID']]);
$tqty = $form->textbox("_", "Qty", $atabel['Qty'], true, false, "double");
$tdis = $form->textbox("_", "Total_Diskon", $atabel['Total_Diskon'], true, false, "double");
$ttot = $form->textbox("_", "Jumlah", 0, false, false, "double");
$tsat = $form->textbox("_", "Nama_Satuan", $atabel['Nama_Satuan'], false, false, "text");
$tharga = '<select class="form-select text-end" id="Harga_Jual" name="Harga_Jual" onchange="JualJS.Hitung_Detail();"><option value="'.$atabel['Harga_Jual'].'">'.rupiah($atabel['Harga_Jual']).'</option></select>';
$tpro_sq = '<div class="form-check form-check-inline mr-1"><input type="checkbox" class="form-check-input" id="Pro_SQ" name="Pro_SQ" value="'.$atabel['Pro_SQ'].'"'.($atabel['Pro_SQ']==1?' checked="checked"':'').' onchange="this.value=(this.checked)?\'1\':\'0\';JualJS.Hitung_Detail();">Promo Barang</div>';
$tpro_sd = '<div class="form-check form-check-inline mr-1"><input type="checkbox" class="form-check-input" id="Pro_SD" name="Pro_SD" value="'.$atabel['Pro_SD'].'"'.($atabel['Pro_SD']==1?' checked="checked"':'').' onchange="this.value=(this.checked)?\'1\':\'0\';">Promo Diskon</div>';
$tpro_id = '<div class="form-check form-check-inline mr-1"><input type="checkbox" class="form-check-input" id="Pro_ID" name="Pro_ID" value="'.$atabel['Pro_ID'].'"'.($atabel['Pro_ID']==1?' checked="checked"':'').' onchange="this.value=(this.checked)?\'1\':\'0\';">Promo Diskon PMS</div>';
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Nama_Produk">Nama Produk</label>
<div class="col">'.$tnama.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="RasaID">Varian / Rasa</label>
<div class="col">'.$trasa.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Qty">Qty</label>
<div class="col-sm-4 col-lg-5">'.$tqty.'</div>
<div class="col-sm-4 col-lg-4">'.$tsat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Harga_Jual">Harga (@)</label>
<div class="col-sm-4 col-lg-5">'.$tharga.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Total_Diskon">Diskon</label>
<div class="col-sm-4 col-lg-5">'.$tdis.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Total</label>
<div class="col-sm-4 col-lg-5">'.$ttot.'</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<div class="row mb-1">
<div class="col-auto">'.$tpro_sq.'</div>
<div class="col-auto">'.$tpro_sd.'</div>
<div class="col-auto">'.$tpro_id.'</div>
</div>
<input type="hidden" id="ID" value="'.$atabel['ID'].'" >
<input type="hidden" id="InvID" value="'.$atabel['InvID'].'" >
<input type="hidden" id="SatuanID" value="'.$atabel['SatuanID'].'" >
<input type="hidden" id="Harga_Pokok" value="'.$atabel['Harga_Pokok'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >
';
} else if ( $data == "option-rasa" ) {
$aoption = ['type' => "option", 'id' => "RasaID", 'value' => Param::Get("RasaID",0), 'avalue' => [['value'=>0,'html'=>""]]];
$db->Query("SELECT R.RasaID,R.Nama_Rasa FROM (SELECT * FROM inv_produk_varian WHERE InvID='".Param::Get("InvID",0)."') V LEFT JOIN para_rasa R ON (R.RasaID=V.RasaID) ORDER BY R.Nama_Rasa");
while ($db->Next()) {
$aoption['avalue'][] = ['value'=>$db->Row("RasaID"), 'html'=>$db->Row("Nama_Rasa")];
}
$ajson[] = $aoption;
} else if ( $data == "option-harga" ) {
$aoption = ['type' => "option", 'id' => "Harga_Jual", 'value' => 0, 'avalue' => []];
$id_grup = 0;
$db->Query("SELECT Grup_OutletID FROM para_outlet WHERE OutletID='".Param::Get("OutletID",0)."'");
if ($db->Next()) $id_grup = $db->Row("Grup_OutletID", 0);
$db->Query("SELECT Tanggal,Harga_Jual FROM inv_produk_harga WHERE InvID='".Param::Get("InvID",0)."' AND SatuanID='".Param::Get("SatuanID",0)."' AND Grup_OutletID='".$id_grup."' ORDER BY Tanggal DESC, Harga_Jual DESC");
while ($db->Next()) {
if ($db->RecordCount()==1) $aoption['value'] = $db->Row("Harga_Jual");
$aoption['avalue'][] = ['value'=>$db->Row("Harga_Jual"), 'html'=>rupiah($db->Row("Harga_Jual"))];
}
$ajson[] = $aoption;
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+236
View File
@@ -0,0 +1,236 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_do.php
Desc. : PHP - Pembuatan Delivery Order Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 4th, 2011.
Last Modified : January 20th, 2024.
(c) 2010 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$db2 = $db2 ?? new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_DO", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_DO'=>$nomor, 'A_Picker'=>"0"];
$no_lama = $nomor;
if ($mode == "add") {
$atabel['No_DO'] = "DO-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_DO'] = tgl_ymd();
$atabel['MobilID'] = 0;
$atabel['SupirID'] = 0;
$nomor = "";
} else if ($mode == "save") {
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("D", Param::Get("Tgl_DO"), true);
$sql = new SQL($db);
$sql->set_table("inv_jual_do");
$sql->add_param_date("Tgl_DO");
$sql->add_param("MobilID");
$sql->add_param("SupirID");
$sql->add_param("A_Picker", Param_Picker(Param::Get("A_Picker","0")));
$sql->add_param("Catatan");
$sql->add_param_userid();
$sql->add_where("No_DO", $nomor);
$sql->UpdateDB();
if ($b_baru) {
$db->Query("UPDATE inv_jual SET No_DO='".$nomor."' WHERE No_DO='".$no_lama."'");
}
if ($nomor <> "") {
// UPDATE inv_jual DGN Tgl_Jual, Tgl_JT*, SUPIR, PICKER
$tgl_do = tgl_sql2str(Param::Get("Tgl_DO"));
$db->Query("UPDATE inv_jual SET Tgl_Jual='".$tgl_do."',Tgl_JT=DATE_ADD('".$tgl_do."', INTERVAL Termin DAY),SupirID='".Param::Get("SupirID",0)."',A_Picker='".Param_Picker(Param::Get("A_Picker","0"))."' WHERE No_DO='".$nomor."'");
$db->Query("SELECT CONCAT('\'',GROUP_CONCAT(No_Jual SEPARATOR '\',\''),'\'') No_Ref FROM inv_jual WHERE No_DO='".$nomor."'");
if ($db->Next()) $db2->Query("UPDATE inv_detail SET Tgl_Ref='".$tgl_do."' WHERE No_Ref IN (".$db->Row("No_Ref").")");
}
$mode = "view";//todo: print jika langsung cetak
} else if ($mode == "cancel") {
if (strpos($no_lama,"BARU")!==false) {
$db->Query("UPDATE inv_jual SET No_DO='' WHERE No_DO='".$nomor."'");
}
$mode = "view";
$nomor = ""; $atabel['No_DO'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_jual_do WHERE No_DO='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_DO", $atabel['No_DO'], !$enable, true, "text", "nomor transaksi");
$ttglnota = $form->datebox("_", "Tgl_DO", $atabel['Tgl_DO'], $enable, true);
$tmobil = $form->option_db("_", "MobilID", $atabel['MobilID'], $enable, false, "para_mobil", ["MobilID","Nama_Mobil"], "Aktif=1 ORDER BY Nama_Mobil", [0,"&nbsp;"]);
$tsupir = $form->option_db("_", "SupirID", $atabel['SupirID'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_SUPIR']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"]);
$tpicker = $form->option_db("_", "A_Picker", $atabel['A_Picker'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_PICKER']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"], null, null, true);
$tcatat = $form->textarea("_", "Catatan", $atabel['Catatan'], $enable, true, 1);
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_DO">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualDOJS.tx_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="Tgl_DO">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="MobilID">Kendaraan</label>
<div class="col">'.$tmobil.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Catatan">Catatan</label>
<div class="col">'.$tcatat.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="SupirID">Nama Supir</label>
<div class="col">'.$tsupir.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="A_Picker">Nama Picker</label>
<div class="col">'.$tpicker.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("UPDATE inv_jual SET No_DO='' WHERE No_DO='".$nomor."'");
$db->Query("DELETE FROM inv_jual_do WHERE No_DO='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "status" ) {
$db->Query("SELECT No_Jual,Rekap FROM inv_jual WHERE No_DO='".$nomor."'");
while ($db->Next()) {
if ($db->Row("Rekap",0)==0) {
$db2->Query("UPDATE inv_jual SET Rekap=1 WHERE No_Jual='".$db->Row("No_Jual")."'");
scs_update_jual($db->Row("No_Jual"));
}
}
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
if ( $mode_detail == "insert" ) {
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") $db->Query("UPDATE inv_jual SET No_DO='".$nomor."' WHERE No_Jual='".$_key."' LIMIT 1");
}
} else if ( $mode_detail == "delete" ) {
$db->Query("UPDATE inv_jual SET No_DO='' WHERE No_Jual='".Param::Get("No_Jual")."' LIMIT 1");
}
}
$obj = new Table($db);
$obj->set_query("SELECT J.*,O.Nama_Alamat,S.Nama_Pegawai Nama_Sales FROM (SELECT *,Total_Jual-Total_Diskon Total FROM inv_jual WHERE Data_Jual=1 AND No_DO='".$nomor."'".($nomor==""?" AND FALSE":"").") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID) LEFT JOIN para_pegawai S ON (J.SalesID=S.PegID)");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah");
$obj->add_field("Nama_Sales", "Sales", "awr");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("trash", "Hapus", "JualDOJS.jual_hapus", "No_DO", $nomor);
$obj->set_func_btn("JualDOJS.jual_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("JualDOJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? "" : " WHERE CONCAT(No_DO,DATE_FORMAT(Tgl_DO,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("(SELECT * FROM inv_jual_do".$tsql.") DO LEFT JOIN para_mobil M ON (DO.MobilID=M.MobilID) LEFT JOIN para_pegawai S ON (DO.SupirID=S.PegID)", "DO.*,M.Nama_Mobil,Nama_Picker(DO.A_Picker) Nama_Picker,S.Nama_Pegawai Nama_Supir", "");
$obj->add_field("No_DO", "No. Trans", "c");
$obj->add_field("Tgl_DO", "Tgl. Trans", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Mobil", "Kendaraan", "l");
$obj->add_field("Nama_Supir", "Nama Supir", "awr");
$obj->add_field("Nama_Picker", "Nama Picker", "awr");
$obj->set_field_order("No_DO", "D");
$obj->add_row_btn("save", "Pilih", "JualDOJS.tx_select");
$obj->set_func_navi("JualDOJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-jual" ) {
$tcari = trim(Param::Get("Cari_Jual"));
$tlimit = ($tcari=="") ? "" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Jumlah FROM inv_jual WHERE Data_Jual=1 AND No_DO=''".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat,'N' Nota", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Jumlah", "TOTAL", "r", "rupiah");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_checkbox("No_Jual", "Nota", ["Y","N"]);
$obj->set_func_navi("JualDOJS.data_query('brow-jual')");
$ajson[] = $obj->db_table("divBrowJual");
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Pembuatan Delivery Order Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-info mb-1 ms-2" id="butStatus" type="button"><i class="bi-arrow-repeat me-2"></i>Status</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+282
View File
@@ -0,0 +1,282 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_lunas.php
Desc. : PHP - Transaksi Pelunasan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : February 28th, 2011.
Last Modified : May 19th, 2023.
(c) 2011 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$id_outlet = Param::Get("OutletID", 0);
$nomor = Param::Get("No_Jual", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['OutletID'=>0, 'Nama_Outlet'=>"", 'Alamat_Outlet'=>""];
$form = new Form($db);
$toutlet = $form->textauto("_", "Nama_Outlet", ['value'=>$atabel['OutletID'],'text'=>$atabel['Nama_Outlet']], true, false, "ketik nama outlet");
$toutletal = $form->textbox("_", "Alamat_Outlet", $atabel['Alamat_Outlet'], false, false, "text");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label" for="Nama_Outlet">Nama Outlet</label>
<div class="col"><div class="input-group">'.$toutlet.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualLunasJS.outlet_brow();"><i class="bi-search"></i></button></div></div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label">Alamat Outlet</label>
<div class="col">'.$toutletal.'</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="OutletID" value="0" >
<input type="hidden" id="Mode_Tampil" value="0" >
';
} else if ( $data == "tabel-nota" ) {
$tsql = (Param::Get("Mode_Tampil", 0)==1) ? "" : " AND Lunas=0";
$obj = new Table($db);
$obj->set_query("SELECT *,Total_Jual-Total_Diskon Total,IF(Data_Jual=1,'J','R') Tipe FROM inv_jual WHERE OutletID='".$id_outlet."' AND No_DO<>''".$tsql);
$obj->set_query_footer("SELECT SUM(Total_Jual-Total_Diskon) Total FROM inv_jual WHERE OutletID='".$id_outlet."' AND No_DO<>''".$tsql);
$obj->add_field("Tipe", "Tipe", "hid");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Trans", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tgl_JT", "Jatuh Tempo", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
if (Param::Get("Mode_Tampil", 0)==1) $obj->add_field("Lunas", "Lunas", "c", "checkbox");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_btn("save", "Pilih", "JualLunasJS.nota_select");
$obj->set_func_navi("JualLunasJS.data_query('tabel-nota')");
$ajson[] = $obj->json_table("divTXNota");
} else if ( $data == "tabel-bayar" ) {
$lunas = Param::Get("Lunas", 0);
if (in_array($mode_detail, ["insert","delete"])) {
$sql = new SQL($db);
$sql->set_table("inv_jual_lunas");
$sql->add_param("No_Jual");
$sql->add_param_date("Tgl_Bayar");
if (Param::Get("Tipe", 0) == 2) $sql->add_param_date("Tgl_Cair");
$sql->add_param("Tipe");
$sql->add_param("Total_Bayar");
$sql->add_param("Total_Potong");
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Jual", $nomor);
if ($mode_detail == "insert") {
$sql->InsertDB();
} else if ($mode_detail == "delete") {
$sql->DeleteDB();
}
$anota = ['Bayar'=>0, 'Potong'=>0, 'Total_Sisa'=>0, 'Lunas'=>0];
$db->Query("SELECT SUM(Total_Bayar) Bayar,SUM(Total_Potong) Potong FROM inv_jual_lunas WHERE No_Jual='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$db->Query("UPDATE inv_jual SET Total_Bayar='".$anota['Bayar']."',Total_Potong='".$anota['Potong']."',Lunas=IF(Total_Jual-Total_Diskon-Total_Bayar-Total_Potong=0,1,0),Tgl_Lunas=IF(Lunas=1,'".tgl_sql2str(Param::Get("Tgl_Bayar"))."','0000-00-00') WHERE No_Jual='".$nomor."'");
$db->Query("SELECT Lunas,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Total_Sisa FROM inv_jual WHERE No_Jual='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$lunas = $anota['Lunas'];
$ajson[] = array('type'=>"form", 'id'=>"Total_Sisa", 'value'=>$anota['Total_Sisa']);
$ajson[] = array('type'=>"form", 'id'=>"Lunas", 'value'=>$anota['Lunas']);
}
$obj = new Table($db);
$obj->set_query("SELECT * FROM inv_jual_lunas WHERE No_Jual='".$nomor."' ORDER BY ID");
$obj->add_field("ID", "ID", "hid");
$obj->add_field("Tgl_Bayar", "Tgl. Bayar", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tipe", "Tipe", "l", [1=>"Cash",2=>"Giro"]);
$obj->add_field("Tgl_Cair", "Tgl. BG", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Total_Bayar", "Jumlah Bayar", "r", "rupiah");
$obj->add_field("Total_Potong", "Pemotongan", "r", "rupiah");
$obj->set_field_order("Tgl_Bayar", "A");
if ($_SESSION['__WEB_USER']['Level']<=1 && ($lunas==0 || ($lunas==1 && Param::Get('Mode_Tampil',0)==1))) {
$obj->add_row_btn("trash", "Hapus", "JualLunasJS.bayar_hapus", "No_Jual", $nomor);
}
if ($lunas == 0) {
$obj->set_func_btn("JualLunasJS.bayar_show", '<i class="bi-wallet me-1"></i> Pembayaran');
}
$obj->set_func_navi("JualLunasJS.data_query('tabel-bayar')");
$ajson[] = $obj->json_table("divDetailBayar");
} else if ( $data == "brow-outlet" ) {
$tcari = trim(Param::Get("Cari_Outlet"));
$tsql = ($tcari=="") ? " LIMIT 100" : " AND CONCAT(Kode_Outlet,Nama_Outlet,Telp_Outlet,Alamat_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("Nama_Alamat", "NA", "hid");
$obj->add_field("Kode_Outlet", "Kode", "l");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Alamat_Kota", "Alamat Lengkap", "awr");
$obj->add_field("Telp_Outlet", "Telp", "l");
$obj->set_field_order("Kode_Outlet", "A");
$obj->add_row_btn("save", "Pilih", "JualLunasJS.outlet_select");
$obj->set_func_navi("JualLunasJS.data_query('brow-outlet')");
$ajson[] = $obj->json_table("divBrowOutlet");
} else if ( $data == "auto-outlet" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
if (is_string($tcari) && strlen($tcari) < 64) {
$db->Query("SELECT * FROM vi_para_outlet WHERE Aktif=1 AND CONCAT(Kode_Outlet,Nama_Outlet,Telp_Outlet,Alamat_Outlet) LIKE '%".$tcari."%' ORDER BY Kode_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 == "detail-nota") {
$atabel = ['No_Jual'=>$nomor]; $tipe = Param::Get("Tipe_Nota", "J");
$db->Query("SELECT *,Total_Jual-Total_Diskon Jumlah,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Sisa_Bayar FROM inv_jual WHERE No_Jual='".$nomor."'");
if ($db->Next()) $atabel = $db->AllRow();
$form = new Form($db);
$tnota = $form->textbox("_", "No_Jual", $atabel['No_Jual'], false, false, "text");
$tpajak= $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], false, false, "text");
$tfaktur = $form->textbox("_", "No_Faktur", $atabel['No_Faktur'], false, false, "text");
$ttglnota = $form->datebox("_", "Tgl_Jual", $atabel['Tgl_Jual'], false, false);
$ttgljt = $form->datebox("_", "Tgl_JT", $atabel['Tgl_JT'], false, false);
$ttot_jual = $form->textbox("_", "Total_Jual", $atabel['Total_Jual'], false, false, "double");
$ttot_dis = $form->textbox("_", "Total_Diskon", $atabel['Total_Diskon'], false, false, "double");
$tjumlah = $form->textbox("_", "Jumlah", $atabel['Jumlah'], false, false, "double");
$ajson['html'] = '
<div class="row">
<div class="col text-center fs-5 pb-1">Informasi Faktur / Retur</div>
</div>
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">No. '.(($tipe=="J")?"Transaksi":"Retur").'</label>
<div class="col">'.$tnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">No. Seri FP</label>
<div class="col-sm-7 col-lg-5">'.$tpajak.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Tgl. '.(($tipe=="J")?"Transaksi":"Retur").'</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jatuh Tempo</label>
<div class="col-sm-7 col-lg-5">'.$ttgljt.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">'.(($tipe=="J")?"No. Faktur":"Catatan").'</label>
<div class="col">'.$tfaktur.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah '.(($tipe=="J")?"Transaksi":"Retur").'</label>
<div class="col">'.$ttot_jual.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah Diskon</label>
<div class="col">'.$ttot_dis.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Total '.(($tipe=="J")?"Faktur":"Retur").'</label>
<div class="col">'.$tjumlah.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="Total_Sisa" value="'.$atabel['Sisa_Bayar'].'" >
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="Rekap" value="'.$atabel['Rekap'].'" >
<input type="hidden" id="Tipe_Nota" value="'.$tipe.'" >
';
} else if ($data == "detail-bayar") {
$form = new Form($db);
$ttglbyr = $form->datebox("_", "Tgl_Bayar", tgl_ymd(), true, false);
$ttglcair = $form->datebox("_", "Tgl_Cair", tgl_ymd(), true, false);
$ttipe = $form->radio("_", "Tipe", 1, true, false, [1=>"Cash",2=>"Giro"], null, "JualLunasJS.oc_Tipe();");
$ttotal = $form->textbox("_", "Temp_Total", Param::Get("Total_Sisa",0), false, false, "double");
$tsisa = $form->textbox("_", "Temp_Sisa", 0, false, false, "double");
$tbayar = $form->textbox("_", "Total_Bayar", Param::Get("Total_Sisa",0), true, false, "double", null, null, null, "JualLunasJS.Hitung_Detail();");
$tpotong = $form->textbox("_", "Total_Potong", 0, true, false, "double", null, null, null, "JualLunasJS.Hitung_Detail();");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Tipe">Tipe Bayar</label>
<div class="col">'.$ttipe.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Tgl_Bayar">Tanggal Bayar</label>
<div class="col">'.$ttglbyr.'</div>
</div>
<div class="row mb-1 d-none" id="divTglCair">
<label class="col-sm-6 col-lg-4 col-form-label" for="Tgl_Cair">Tanggal Giro</label>
<div class="col">'.$ttglcair.'</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-6 col-lg-4 col-form-label">Total Faktur</label>
<div class="col">'.$ttotal.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Total_Bayar">Jumlah Bayar</label>
<div class="col">'.$tbayar.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="Total_Potong">Potongan</label>
<div class="col">'.$tpotong.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label">Sisa Tagihan</label>
<div class="col">'.$tsisa.'</div>
</div>
';
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Pelunasan Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-secondary mb-1 ms-2" id="butMode" type="button"><i class="bi-list me-2"></i>Normal</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divTXNota">&nbsp;</div>
<div id="divDetailNota" class="d-none">&nbsp;</div>
<div id="divDetailBayar" class="d-none">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+129
View File
@@ -0,0 +1,129 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_lunas_sales.php
Desc. : PHP - Transaksi Pelunasan Sales
Created By : Siau Pheng ([email protected]).
Created Date : March 29th, 2012.
Last Modified : October 29th, 2023.
(c) 2012 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$id_sales = Param::Get("SalesID", 0);
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['PegID'=>$id_sales,'Alamat_Pegawai'=>"Tanpa Alamat Sales",'Tgl_Bayar'=>"0000-00-00"];
if ($id_sales > 0) {
$db->Query("SELECT * FROM para_pegawai WHERE PegID='".$id_sales."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
}
$form = new Form($db);
$tsales = $form->option_db("_", "SalesID", $atabel['PegID'], true, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_SALES']."' ORDER BY Nama_Pegawai", [0,"Tanpa Nama Sales"], null, "JualLunasSalesJS.data_query('master');");
$ttglbayar = $form->datebox("_", "Tgl_Bayar", $atabel['Tgl_Bayar'], true, false);
$tsalesal = $form->textarea("_", "Alamat_Pegawai", $atabel['Alamat_Pegawai'], false, false, 2);
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<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="Tgl_Bayar">Tanggal Bayar</label>
<div class="col-sm-7 col-lg-5">'.$ttglbayar.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Alamat Sales</label>
<div class="col">'.$tsalesal.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
';
} else if ( $data == "tabel-detail" ) {
if ( $mode == "bayar" ) {
$tgl_bayar = tgl_sql2str(Param::Get("Tgl_Bayar"));
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") {
$anota = ['Jumlah'=>0, 'Rekap'=>0];
$db->Query("SELECT (Total_Jual-Total_Diskon-Total_Potong) Jumlah,Rekap FROM inv_jual WHERE No_Jual='".$_key."'");
if ($db->Next()) $anota = $db->AllRow();
$db->Query("INSERT INTO inv_jual_lunas (No_Jual,Tgl_Bayar,Tipe,Total_Bayar,UserID) VALUES ('".$_key."','".$tgl_bayar."','1','".$anota['Jumlah']."','".user_id()."')");
$db->Query("UPDATE inv_jual SET Tgl_Lunas='".$tgl_bayar."',Total_Bayar='".$anota['Jumlah']."',Lunas=1 WHERE No_Jual='".$_key."' LIMIT 1");
if ($anota['Rekap']==0) {
$db->Query("UPDATE inv_jual SET Rekap=1 WHERE No_Jual='".$_key."' LIMIT 1");
scs_update_jual($_key, true);
}
}
}
}
$obj = new Table($db);
$obj->set_query("SELECT J.*,O.Nama_Alamat,'N' Pilih FROM (SELECT OutletID,No_Jual,Tgl_Jual,Tgl_JT,Total_Jual-Total_Diskon Total_Faktur,Total_Bayar+Total_Potong Total_Bayar,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Total_Sisa,CK FROM inv_jual WHERE Lunas=0 AND No_DO<>'' AND SalesID='".$id_sales."') J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)");
$obj->set_query_footer("SELECT SUM(Total_Jual-Total_Diskon) Total_Faktur,SUM(Total_Bayar+Total_Potong) Total_Bayar,SUM(Total_Jual-Total_Diskon-Total_Bayar-Total_Potong) Total_Sisa FROM inv_jual WHERE Lunas=0 AND No_DO<>'' AND SalesID='".$id_sales."'");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tgl_JT", "Jatuh Tempo", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Faktur", "Faktur", "r", "rupiah", "rupiah");
$obj->add_field("Total_Bayar", "Bayar", "r", "rupiah", "rupiah");
$obj->add_field("Total_Sisa", "Sisa", "r", "rupiah", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_checkbox("No_Jual", "Pilih", ["Y","N"]);
$obj->set_func_navi("JualLunasSalesJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Pelunasan Penjualan via Tagihan Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+249
View File
@@ -0,0 +1,249 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_lunas_tagihan.php
Desc. : PHP - Transaksi Pelunasan Daftar Tagihan
Created By : Siau Pheng ([email protected]).
Created Date : March 17th, 2012.
Last Modified : January 20th, 2024.
(c) 2012 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Tagih", "");
$no_jual = Param::Get("No_Jual", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Tagih'=>$nomor];
if ($nomor <> "") {
$db->Query("SELECT * FROM inv_jual_tagih WHERE No_Tagih='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
if ($atabel['SalesID']>0) {
$db->Query("SELECT Nama_Pegawai,Alamat_Pegawai FROM para_pegawai WHERE PegID='".$atabel['SalesID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
}
$form = new Form($db);
$tnota = $form->textbox("_", "No_Tagih", $atabel['No_Tagih'], true, false, "text", "nomor transaksi");
$ttglnota = $form->datebox("_", "Tgl_Tagih", $atabel['Tgl_Tagih'], false, false);
$tsales = $form->textbox("_", "Nama_Pegawai", $atabel['Nama_Pegawai'], false, false, "text");
$tsalesal = $form->textbox("_", "Alamat_Pegawai", $atabel['Alamat_Pegawai'], false, false, "text");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Tagih">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button class="btn btn-info" type="button" onclick="JualLunasTagihanJS.tx_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">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">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">Alamat Sales</label>
<div class="col">'.$tsalesal.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
';
} else if ( $data == "tabel-detail" ) {
if ( $mode_detail == "insert" ) {
$sql = new SQL($db);
$sql->set_table("inv_jual_lunas");
$sql->add_param("No_Jual");
$sql->add_param_date("Tgl_Bayar");
if (Param::Get("Tipe", 0) == 2) $sql->add_param_date("Tgl_Cair");
$sql->add_param("Tipe");
$sql->add_param("Total_Bayar");
$sql->add_param("Total_Potong");
$sql->add_param_userid();
$sql->InsertDB();
$anota = ['Bayar'=>0, 'Potong'=>0];
$db->Query("SELECT SUM(Total_Bayar) Bayar,SUM(Total_Potong) Potong FROM inv_jual_lunas WHERE No_Jual='".$no_jual."'");
if ($db->Next()) $anota = $db->AllRow();
$db->Query("UPDATE inv_jual SET Total_Bayar='".$anota['Bayar']."',Total_Potong='".$anota['Potong']."' WHERE No_Jual='".$no_jual."' LIMIT 1");
$db->Query("UPDATE inv_jual SET Lunas=IF(Total_Jual-Total_Diskon-Total_Bayar-Total_Potong=0,1,0),Tgl_Lunas=IF(Lunas=1,'".tgl_sql2str(Param::Get("Tgl_Bayar"))."','0000-00-00') WHERE No_Jual='".$no_jual."'");
if (Param::Get("Rekap",0)==0) {
$db->Query("UPDATE inv_jual SET Rekap=1 WHERE No_Jual='".$no_jual."'");
scs_update_jual($no_jual, true);
}
}
$obj = new Table($db);
$obj->set_query("SELECT J.*,O.Nama_Alamat FROM (SELECT OutletID,No_Jual,Tgl_Jual,Tgl_JT,Total_Jual-Total_Diskon Total_Faktur,Total_Bayar+Total_Potong Total_Bayar,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Total_Sisa,CK,Lunas FROM inv_jual WHERE No_Jual IN (SELECT No_Jual FROM inv_jual_tagih_detail WHERE No_Tagih='".$nomor."')) J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)");
$obj->set_query_footer("SELECT SUM(Total_Jual-Total_Diskon) Total_Faktur,SUM(Total_Bayar+Total_Potong) Total_Bayar,SUM(Total_Jual-Total_Diskon-Total_Bayar-Total_Potong) Total_Sisa FROM inv_jual WHERE No_Jual IN (SELECT No_Jual FROM inv_jual_tagih_detail WHERE No_Tagih='".$nomor."')");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tgl_JT", "Jatuh Tempo", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Faktur", "Faktur", "r", "rupiah", "rupiah");
$obj->add_field("Total_Bayar", "Pembayaran", "r", "rupiah", "rupiah");
$obj->add_field("Total_Sisa", "Sisa", "r", "rupiah", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->add_field("Lunas", "Lunas", "c", "checkbox");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_btn("wallet2", "Bayar", "JualLunasTagihanJS.jual_detail", "Lunas", 0);
$obj->set_func_navi("JualLunasTagihanJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "detail-jual" ) {
$atabel = ['Tipe'=>1, 'Tgl_Bayar'=>tgl_ymd(), 'Tgl_Cair'=>tgl_ymd()];
if ($no_jual <> "") {
$db->Query("SELECT J.*,J.Total_Jual-J.Total_Diskon Jumlah,J.Total_Bayar+J.Total_Potong Bayar,S.Nama_Pegawai Nama_Sales,H.Nama_Pegawai Nama_Helper,O.Nama Nama_Operator FROM (SELECT * FROM inv_jual WHERE No_Jual='".$no_jual."' LIMIT 1) J LEFT JOIN para_pegawai S ON (J.SalesID=S.PegID) LEFT JOIN para_pegawai H ON (J.HelperID=H.PegID) LEFT JOIN app_operator O ON (J.UserID=O.UserID)");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
$atabel['Sisa'] = $atabel['Jumlah'] - $atabel['Bayar'];
}
$form = new Form($db);
$tjual = $form->textbox("_", "No_Jual", $atabel['No_Jual'], false, false, "text");
$tjual_tgl = $form->datebox("_", "Tgl_Jual", $atabel['Tgl_Jual'], false, false);
$tsales = $form->textbox("_", "Nama_Sales", $atabel['Nama_Sales'], false, false, "text");
$thelper = $form->textbox("_", "Nama_Helper", $atabel['Nama_Helper'], false, false, "text");
$toperator = $form->textbox("_", "Nama_Operator", $atabel['Nama_Operator'], false, false, "text");
$tjumlah = $form->textbox("_", "Jumlah", $atabel['Jumlah'], false, false, "double");
$tsisa = $form->textbox("_", "Sisa", $atabel['Sisa'], false, false, "double");
$tbayar_tgl = $form->datebox("_", "Tgl_Bayar", $atabel['Tgl_Bayar'], true, false);
$tcair_tgl = $form->datebox("_", "Tgl_Cair", $atabel['Tgl_Cair'], true, false);
$tbayar = $form->textbox("_", "Total_Bayar", $atabel['Sisa'], true, false, "double");
$tpotong = $form->textbox("_", "Total_Potong", 0, true, false, "double");
$ttipe = $form->radio("_", "Tipe", $atabel['Tipe'], true, false, [1=>"Cash",2=>"Giro"], null, "JualLunasTagihanJS.oc_Tipe();");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label">Nomor Transaksi</label>
<div class="col">'.$tjual.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$tjual_tgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label">Nama Operator</label>
<div class="col">'.$toperator.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label">Nama Sales</label>
<div class="col">'.$tsales.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label">Nama Helper</label>
<div class="col">'.$thelper.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label">Jumlah Faktur</label>
<div class="col">'.$tjumlah.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label" for="Tipe">Tipe Pembayaran</label>
<div class="col">'.$ttipe.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label" for="Tgl_Bayar">Tanggal Pembayaran</label>
<div class="col-sm-7 col-lg-5">'.$tbayar_tgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label" for="Tgl_Cair">Tanggal Giro</label>
<div class="col-sm-7 col-lg-5">'.$tcair_tgl.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label">Sisa Pembayaran</label>
<div class="col">'.$tsisa.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label" for="Total_Bayar">Jumlah Pembayaran</label>
<div class="col">'.$tbayar.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-4 col-form-label" for="Total_Potong">Jumlah Potongan</label>
<div class="col">'.$tpotong.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="Total_Faktur" value="'.$atabel['Jumlah'].'" >
<input type="hidden" id="Total_Sisa" value="'.$atabel['Sisa'].'" >
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="Rekap" value="'.$atabel['Rekap'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >
';
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? "" : " WHERE CONCAT(No_Tagih,DATE_FORMAT(Tgl_Tagih,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("(SELECT * FROM inv_jual_tagih".$tsql.") T LEFT JOIN para_pegawai S ON (T.SalesID=S.PegID)", "T.*,S.Nama_Pegawai", "");
$obj->add_field("No_Tagih", "No. Trans", "c");
$obj->add_field("Tgl_Tagih", "Tgl. Tagih", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Pegawai", "Nama Sales", "awr");
$obj->set_field_order("No_Tagih", "D");
$obj->add_row_btn("save", "Pilih", "JualLunasTagihanJS.tx_select");
$obj->set_func_navi("JualLunasTagihanJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Pelunasan Penjualan via Tagihan Penjualan</button>
</li>
<li class="nav-item ms-auto">&nbsp;</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+216
View File
@@ -0,0 +1,216 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_pajak.php
Desc. : PHP - Pembuatan Faktur Pajak Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 13th, 2011.
Last Modified : December 27th, 2024.
(c) 2011 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Jual", "");
$no_pajak = Param::Get("No_Pajak", "");
$ppn = 0.11;
//$ppn = (tgl_sql2str(Param::Get("Tgl_Pajak",tgl_dmy())) >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN'] : 0.11;
if ( $data == "tabel-detail" ) {
if ( $mode == "save-nsfp" && Param::Get("draw", 0)==0 ) {
// UPDATE INV_JUAL_PAJAK
$db->Query("UPDATE inv_detail SET PPN='".$ppn."' WHERE No_Ref='".$nomor."' AND InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)");
$tot_dpp = 0;
$db->Query("SELECT SUM((-Qty*ROUND(Harga_Jual/(1+PPN),2))-IF(Total_Diskon=(-Qty*Harga_Jual),-Qty*ROUND(Harga_Jual/(1+PPN),2),ROUND(Total_Diskon/(1+PPN),2))) Total_DPP FROM inv_detail WHERE No_Ref='".$nomor."' AND InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)");
if ($db->Next()) $tot_dpp = $db->Row("Total_DPP", 0);
$sql = new SQL($db);
$sql->set_table("inv_jual_pajak");
$sql->add_param("No_Pajak", $no_pajak);
$sql->add_param_date("Tgl_Pajak");
$sql->add_param("No_NPWP");
$sql->add_param("Nama_NPWP");
$sql->add_param("Alamat_NPWP");
$sql->add_param("PPN", $ppn);
$sql->add_param("Jumlah_DPP", "ROUND(".$tot_dpp.",2)", true);
$sql->add_param("Jumlah_PPN", "ROUND(".$tot_dpp."*PPN)", true);
$sql->add_param("OutletID");
$sql->add_param_userid();
$sql->InsertDB();
$db->Query("UPDATE inv_jual SET No_Pajak='".$no_pajak."' WHERE No_Jual='".$nomor."'");
FP_Update($no_pajak);
}
$tcari = trim(Param::Get("Cari_TX"));
$tlimit = ($tcari=="") ? "" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Total FROM inv_jual WHERE Data_Jual=1 AND Rekap=1 AND No_Pajak=''".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_btn("save", "FP", "JualPajakJS.tx_select");
$obj->set_func_navi("JualPajakJS.data_query('tabel-detail')");
$ajson[] = $obj->db_table("divDetailTabel");
} else if ( $data == "detail-nsfp" ) {
$atabel = ['No_Pajak'=>"", 'Total_DPP'=>0, 'Total_PPN'=>0];
$db->Query("SELECT *,Total_Jual-Total_Diskon Total_Faktur FROM inv_jual WHERE No_Jual='".$nomor."' LIMIT 1");
if ($db->Next()) $atabel = $db->AllRow();
$ppn = 0.11;
//$ppn = ($atabel['Tgl_Jual'] >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN'] : 0.11;
$ppn_string = "11";
//$ppn_string = ($atabel['Tgl_Jual'] >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN_STRING'] : "11";
$db->Query("SELECT D.Total_DPP,ROUND(D.Total_DPP*".$ppn.") Total_PPN FROM (SELECT ROUND(SUM((-Qty*ROUND(Harga_Jual/(1+".$ppn."),2))-IF(Total_Diskon=(-Qty*Harga_Jual),-Qty*ROUND(Harga_Jual/(1+".$ppn."),2),ROUND(Total_Diskon/(1+".$ppn."),2))),2) Total_DPP,PPN FROM inv_detail WHERE No_Ref='".$atabel['No_Jual']."' AND InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)) D");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
if ($atabel['OutletID']>0) {
$db->Query("SELECT Nama_Outlet,Alamat_Outlet,Kota_Outlet,No_NPWP15,No_NPWP,Nama_NPWP,Alamat_NPWP FROM para_outlet WHERE OutletID='".$atabel['OutletID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
if ($atabel['No_NPWP15']==0) $atabel['No_NPWP15'] = $atabel['No_NPWP'];
$form = new Form($db);
$tnsfp = $form->textbox("_", "No_Pajak", FP_Baru(), true, false, "text", "nomor seri fp, XXX-XX.12345678");
$tnsfp_tgl = $form->datebox("_", "Tgl_Pajak", $atabel['Tgl_Jual'], true, false);
$tnpwp = $form->textbox("_", "No_NPWP", $atabel['No_NPWP15'], true, false, "text");
$tnpwp_nam = $form->textbox("_", "Nama_NPWP", $atabel['Nama_NPWP'], true, false, "text");
$tnpwp_ala = $form->textarea("_", "Alamat_NPWP", $atabel['Alamat_NPWP'], true, false, 2);
$tdpp = $form->textbox("_", "Total_DPP", $atabel['Total_DPP'], false, false, "double");
$tppn = $form->textbox("_", "Total_PPN", $atabel['Total_PPN'], false, false, "double");
$tnota = $form->textbox("_", "No_Jual", $atabel['No_Jual'], false, false, "text");
$tnota_tgl = $form->datebox("_", "Tgl_Jual", $atabel['Tgl_Jual'], false, false);
$tnota_lun = $form->datebox("_", "Tgl_Lunas", $atabel['Tgl_Lunas'], false, false);
$tout_nam = $form->textbox("_", "Nama_Outlet", $atabel['Nama_Outlet'], false, false, "text");
$tout_ala = $form->textarea("_", "Alamat_Outlet", $atabel['Alamat_Outlet'], false, false, 2);
$ttot_jual = $form->textbox("_", "Total_Jual", $atabel['Total_Jual'], false, false, "double");
$ttot_disk = $form->textbox("_", "Total_Diskon", $atabel['Total_Diskon'], false, false, "double");
$ttot_fakt = $form->textbox("_", "Total_Faktur", $atabel['Total_Faktur'], false, false, "double");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Nomor Faktur</label>
<div class="col">'.$tnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Tanggal Faktur</label>
<div class="col-sm-7 col-lg-5">'.$tnota_tgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Tanggal Lunas</label>
<div class="col-sm-7 col-lg-5">'.$tnota_lun.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Nama Outlet</label>
<div class="col">'.$tout_nam.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Alamat Outlet</label>
<div class="col">'.$tout_ala.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Sub. Total</label>
<div class="col">'.$ttot_jual.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Diskon</label>
<div class="col">'.$ttot_disk.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Total Faktur</label>
<div class="col">'.$ttot_fakt.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Pajak">Nomor Seri FP</label>
<div class="col">'.$tnsfp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Tgl_Pajak">Tanggal FP</label>
<div class="col-sm-7 col-lg-5">'.$tnsfp_tgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">NPWP</label>
<div class="col">'.$tnpwp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Nama NPWP</label>
<div class="col">'.$tnpwp_nam.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Alamat NPWP</label>
<div class="col">'.$tnpwp_ala.'</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">DPP</label>
<div class="col">'.$tdpp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">PPN ('.$ppn_string.'%)</label>
<div class="col">'.$tppn.'</div>
</div>
</div>
</div>
<input type="hidden" id="OutletID" value="'.$atabel['OutletID'].'" >
';
} else if ( $data == "check-nsfp" ) {
$ada = 0;
$db->Query("SELECT COUNT(*) Item FROM biaya_pajak WHERE No_Pajak='".$no_pajak."'");
if ($db->Next()) $ada = $db->Row("Item", 0);
if ($ada == 0) {
$db->Query("SELECT COUNT(*) Item FROM inv_jual_pajak WHERE No_Pajak='".$no_pajak."'");
if ($db->Next()) $ada = $db->Row("Item", 0);
}
$ajson['ada'] = ($ada > 0) ? true : false;
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Pembuatan Faktur Pajak Penjualan</button>
</li>
<li class="nav-item ms-auto">
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div class="row mb-1">
<div class="col">
<div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div>
</div>
</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+266
View File
@@ -0,0 +1,266 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_pajak_2025.php
Desc. : PHP - Pembuatan FP Gabungan Penjualan 2025
Created By : Siau Pheng ([email protected]).
Created Date : March 13th, 2011.
Last Modified : January 8th, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Pajak", "");
$ppn = 0.11;
//$ppn = (tgl_sql2str(Param::Get("Tgl_Pajak",tgl_dmy())) >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN'] : 0.11;
$ppn_string = "11";
//$ppn_string = ($atabel['Tgl_Pajak'] >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN_STRING'] : "11";
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Pajak'=>$nomor];
if ($mode == "add") {
$atabel['No_Pajak'] = "FPG-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_Pajak'] = tgl_ymd();
$atabel['OutletID'] = 0;
$atabel['No_NPWP'] = "0000000000000000";
$atabel['No_NITKU'] = "000000";
$nomor = "";
} else if ($mode == "edit") {
// do nothing !
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) {
$nomor = Nomor_Baru("P", Param::Get("Tgl_Pajak"), true);
$db->Query("UPDATE inv_jual SET No_Pajak='".$nomor."' WHERE No_Pajak='".$no_lama."'");
}
// UPDATE INV_JUAL_PAJAK
$db->Query("UPDATE inv_detail A, (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$nomor."') B SET A.PPN='".$ppn."' WHERE A.No_Ref=B.No_Jual AND A.InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)");
$tot_dpp = 0;
$db->Query("SELECT SUM((-Qty*ROUND(Harga_Jual/(1+PPN),2))-IF(Total_Diskon=(-Qty*Harga_Jual),-Qty*ROUND(Harga_Jual/(1+PPN),2),ROUND(Total_Diskon/(1+PPN),2))) Total_DPP FROM inv_detail WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$nomor."') AND InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)");
if ($db->Next()) $tot_dpp = $db->Row("Total_DPP", 0);
$sql = new SQL($db);
$sql->set_table("inv_jual_pajak");
$sql->add_param_date("Tgl_Pajak");
$sql->add_param("No_NPWP");
$sql->add_param("No_NITKU");
$sql->add_param("Nama_NPWP");
$sql->add_param("Alamat_NPWP");
$sql->add_param("PPN", $ppn);
$sql->add_param("Jumlah_DPP", "FLOOR(".$tot_dpp.")", true);
$sql->add_param("Jumlah_PPN", "FLOOR(".$tot_dpp."*PPN)", true);
$sql->add_param("OutletID");
$sql->add_param_userid();
$sql->add_where("No_Pajak", $nomor);
$sql->UpdateDB();
$mode = "view";
} else if ($mode == "cancel") {
$db->Query("UPDATE inv_jual SET No_Pajak='' WHERE No_Pajak='".$nomor."'");
$mode = "view";
$nomor = ""; $atabel['No_Pajak'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_jual_pajak WHERE No_Pajak='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnsfp = $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], !$enable, false, "text", "nomor transaksi");
$tnsfp_tgl = $form->datebox("_", "Tgl_Pajak", $atabel['Tgl_Pajak'], $enable, false);
$tnpwp = $form->textbox("_", "No_NPWP", $atabel['No_NPWP'], $enable, false, "text");
$tnpwp_nam = $form->textbox("_", "Nama_NPWP", $atabel['Nama_NPWP'], $enable, false, "text");
$tnpwp_ala = $form->textarea("_", "Alamat_NPWP", $atabel['Alamat_NPWP'], $enable, false, 2);
$tdpp = $form->textbox("_", "Jumlah_DPP", $atabel['Jumlah_DPP'], false, false, "double");
$tppn = $form->textbox("_", "Jumlah_PPN", $atabel['Jumlah_PPN'], false, false, "double");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Pajak">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnsfp.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualPajak2025JS.tx_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="Tgl_Pajak">Tanggal FP</label>
<div class="col-sm-7 col-lg-5">'.$tnsfp_tgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah DPP</label>
<div class="col">'.$tdpp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah PPN ('.$ppn_string.'%)</label>
<div class="col">'.$tppn.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_NPWP">NPWP</label>
<div class="col"><div class="input-group">'.$tnpwp.'<button class="btn '.($enable?'btn-info':'btn-secondary').'" type="button"'.($enable?'':' disabled').' onclick="JualPajak2025JS.npwp_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="Nama_NPWP">Nama NPWP</label>
<div class="col">'.$tnpwp_nam.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Alamat_NPWP">Alamat NPWP</label>
<div class="col">'.$tnpwp_ala.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="OutletID" value="'.$atabel['OutletID'].'" >
<input type="hidden" id="No_NPWP2" value="'.$atabel['No_NPWP'].'" >
<input type="hidden" id="No_NITKU" value="'.$atabel['No_NITKU'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >';
} else if ( $data == "delete" ) {
$db->Query("UPDATE inv_detail SET PPN=0 WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$nomor."')");
$db->Query("UPDATE inv_jual SET No_Pajak='' WHERE No_Pajak='".$nomor."'");
$db->Query("DELETE FROM inv_jual_pajak WHERE No_Pajak='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
if ( $mode_detail == "insert" ) {
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") $db->Query("UPDATE inv_jual SET No_Pajak='".$nomor."' WHERE No_Jual='".$_key."' LIMIT 1");
}
} else if ( $mode_detail == "delete" ) {
$db->Query("UPDATE inv_jual SET No_Pajak='' WHERE No_Jual='".Param::Get("No_Jual")."' LIMIT 1");
}
$tot_dpp = 0; $tot_ppn = 0;
$db->Query("SELECT D.Total_DPP,FLOOR(D.Total_DPP*D.PPN) Total_PPN FROM (SELECT FLOOR(SUM((-Qty*ROUND(Harga_Jual/(1+PPN),2))-IF(Total_Diskon=(-Qty*Harga_Jual),-Qty*ROUND(Harga_Jual/(1+PPN),2),ROUND(Total_Diskon/(1+PPN),2)))) Total_DPP,PPN FROM inv_detail WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$nomor."') AND InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)) D");
if ($db->Next()) {
$tot_dpp = $db->Row("Total_DPP", 0);
$tot_ppn = $db->Row("Total_PPN", 0);
}
$ajson[] = ['type'=>"form", 'id'=>"Jumlah_DPP", 'value'=>rupiah($tot_dpp)];
$ajson[] = ['type'=>"form", 'id'=>"Jumlah_PPN", 'value'=>rupiah($tot_ppn)];
}
$obj = new Table($db);
$obj->set_query("SELECT J.*,O.Nama_Alamat FROM (SELECT OutletID,No_Pajak,No_Jual,Tgl_Jual,Tgl_JT,Total_Jual,Total_Diskon,Total_Jual-Total_Diskon Total,CK FROM inv_jual WHERE".($nomor==""?" FALSE":" No_Pajak='".$nomor."'").") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)");
$obj->set_query_footer("SELECT SUM(Total_Jual) Total_Jual,SUM(Total_Diskon) Total_Diskon,SUM(Total_Jual-Total_Diskon) Total FROM inv_jual WHERE".((trim($nomor)=="")?" FALSE":" No_Pajak='".$nomor."'"));
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("trash", "Hapus", "JualPajak2025JS.jual_hapus", "No_Pajak", $nomor);
$obj->set_func_btn("JualPajak2025JS.jual_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("JualPajak2025JS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(No_Pajak,No_NPWP,DATE_FORMAT(Tgl_Pajak,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("(SELECT * FROM inv_jual_pajak WHERE LEFT(No_Pajak,1)='P'".$tsql.") P", "P.*", "");
$obj->add_field("No_Pajak", "NSFP", "c");
$obj->add_field("Tgl_Pajak", "Tgl. Pajak", "c", "sqltgl", null, "val-tgl");
$obj->add_field("No_NPWP", "NPWP", "l");
$obj->add_field("Nama_NPWP", "Nama NPWP", "awr");
$obj->set_field_order("No_Pajak", "D");
$obj->add_row_btn("save", "Pilih", "JualPajak2025JS.tx_select");
$obj->set_func_navi("JualPajak2025JS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-npwp" ) {
$tcari = trim(Param::Get("Cari_NPWP"));
$tsql = ($tcari=="") ? "" : " AND CONCAT_WS(Nama_Outlet,No_NPWP15,Nama_NPWP,No_NPWP) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("vi_para_outlet", "*", "Aktif=1 AND GG=1".$tsql);
$obj->add_field("OutletID", "ID", "hid");
$obj->add_field("No_NPWP", "NPWP", "c");
$obj->add_field("No_NITKU", "NITKU", "c");
$obj->add_field("Nama_NPWP", "Nama NPWP / NIK", "awr");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Alamat_NPWP", "Alamat NPWP", "hid");
$obj->set_field_order("No_NPWP_NIK", "A");
$obj->add_row_btn("save", "Pilih", "JualPajak2025JS.npwp_select");
$obj->set_func_navi("JualPajak2025JS.data_query('brow-npwp')");
$ajson[] = $obj->db_table("divBrowNPWP");
} else if ( $data == "brow-jual" ) {
$tcari = trim(Param::Get("Cari_Jual"));
$tlimit = ($tcari=="") ? " AND OutletID IN (SELECT OutletID FROM para_outlet WHERE GG=1)" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE GG=1 AND Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Total FROM inv_jual WHERE Data_Jual=1 AND Rekap=1 AND No_Pajak=''".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat,'N' Nota", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_checkbox("No_Jual", "Nota", ["Y","N"]);
$obj->set_func_navi("JualPajak2025JS.data_query('brow-jual')");
$ajson[] = $obj->db_table("divBrowJual");
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Pembuatan FP Gabungan Penjualan 2025</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2 d-none" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+277
View File
@@ -0,0 +1,277 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_pajak_gab.php
Desc. : PHP - Pembuatan Faktur Pajak Gabungan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 13th, 2011.
Last Modified : December 27th, 2024.
(c) 2011 - 2024, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Pajak", "");
$no_trx = Param::Get("No_TRX", "");
$ppn = 0.11;
//$ppn = (tgl_sql2str(Param::Get("Tgl_Pajak",tgl_dmy())) >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN'] : 0.11;
$ppn_string = "11";
//$ppn_string = ($atabel['Tgl_Pajak'] >= $_SESSION['__APP_IAS']['PPN_TGL']) ? $_SESSION['__APP_IAS']['PPN_STRING'] : "11";
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Pajak'=>$nomor];
if ($mode == "add") {
$atabel['No_TRX'] = "FP-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['No_Pajak'] = FP_Baru();
$atabel['Tgl_Pajak'] = tgl_ymd();
$atabel['OutletID'] = 0;
$atabel['No_NPWP'] = "000000000000000";//todo: update npwp16
$nomor = "";
} else if ($mode == "edit") {
// do nothing !
} else if ($mode == "save") {
$b_baru = (strpos($no_trx,"BARU")===false) ? false : true;
if ($b_baru) $db->Query("UPDATE inv_jual SET No_Pajak='".$nomor."' WHERE No_Pajak='".$no_trx."'");
// UPDATE INV_JUAL_PAJAK
$db->Query("UPDATE inv_detail A, (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$nomor."') B SET A.PPN='".$ppn."' WHERE A.No_Ref=B.No_Jual AND A.InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)");
$tot_dpp = 0;
$db->Query("SELECT SUM((-Qty*ROUND(Harga_Jual/(1+PPN),2))-IF(Total_Diskon=(-Qty*Harga_Jual),-Qty*ROUND(Harga_Jual/(1+PPN),2),ROUND(Total_Diskon/(1+PPN),2))) Total_DPP FROM inv_detail WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$nomor."') AND InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)");
if ($db->Next()) $tot_dpp = $db->Row("Total_DPP", 0);
$sql = new SQL($db);
$sql->set_table("inv_jual_pajak");
$sql->add_param_date("Tgl_Pajak");
$sql->add_param("No_NPWP");
$sql->add_param("Nama_NPWP");
$sql->add_param("Alamat_NPWP");
$sql->add_param("PPN", $ppn);
$sql->add_param("Jumlah_DPP", "ROUND(".$tot_dpp.",2)", true);
$sql->add_param("Jumlah_PPN", "ROUND(".$tot_dpp."*PPN)", true);
$sql->add_param("OutletID");
$sql->add_param_userid();
$sql->add_where("No_Pajak", $nomor);
if ($b_baru) {
$sql->add_param("No_Pajak", $nomor);
$sql->InsertDB();
} else $sql->UpdateDB();
FP_Update($nomor);
$mode = "view";
} else if ($mode == "cancel") {
$db->Query("UPDATE inv_jual SET No_Pajak='' WHERE No_Pajak='".$no_trx."'");
$mode = "view";
$nomor = ""; $atabel['No_Pajak'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_jual_pajak WHERE No_Pajak='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
$atabel['No_TRX'] = $atabel['No_Pajak'];
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnsfp = $form->textbox("_", "No_Pajak", $atabel['No_Pajak'], ($mode=="edit"?false:true), false, "text", "nomor seri fp, XXX-XX.12345678");
$tnsfp_tgl = $form->datebox("_", "Tgl_Pajak", $atabel['Tgl_Pajak'], $enable, false);
$tnpwp = $form->textbox("_", "No_NPWP", $atabel['No_NPWP'], $enable, false, "text");
$tnpwp_nam = $form->textbox("_", "Nama_NPWP", $atabel['Nama_NPWP'], $enable, false, "text");
$tnpwp_ala = $form->textarea("_", "Alamat_NPWP", $atabel['Alamat_NPWP'], $enable, false, 2);
$tdpp = $form->textbox("_", "Jumlah_DPP", $atabel['Jumlah_DPP'], false, false, "double");
$tppn = $form->textbox("_", "Jumlah_PPN", $atabel['Jumlah_PPN'], false, false, "double");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Pajak">Nomor Seri FP</label>
<div class="col"><div class="input-group">'.$tnsfp.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualPajakGabJS.tx_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="Tgl_Pajak">Tanggal FP</label>
<div class="col-sm-7 col-lg-5">'.$tnsfp_tgl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah DPP</label>
<div class="col">'.$tdpp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jumlah PPN ('.$ppn_string.'%)</label>
<div class="col">'.$tppn.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_NPWP">NPWP</label>
<div class="col"><div class="input-group">'.$tnpwp.'<button class="btn '.($enable?'btn-info':'btn-secondary').'" type="button"'.($enable?'':' disabled').' onclick="JualPajakGabJS.npwp_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="Nama_NPWP">Nama NPWP</label>
<div class="col">'.$tnpwp_nam.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Alamat_NPWP">Alamat NPWP</label>
<div class="col">'.$tnpwp_ala.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="OutletID" value="'.$atabel['OutletID'].'" >
<input type="hidden" id="No_NPWP2" value="'.$atabel['No_NPWP'].'" >
<input type="hidden" id="No_TRX" value="'.$atabel['No_TRX'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("UPDATE inv_detail A,(SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$nomor."') B SET A.PPN=0 WHERE A.No_Ref=B.No_Jual");
$db->Query("UPDATE inv_jual SET No_Pajak='' WHERE No_Pajak='".$nomor."'");
$db->Query("DELETE FROM inv_jual_pajak WHERE No_Pajak='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
if ( $mode_detail == "insert" ) {
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") $db->Query("UPDATE inv_jual SET No_Pajak='".$no_trx."' WHERE No_Jual='".$_key."' LIMIT 1");
}
} else if ( $mode_detail == "delete" ) {
$db->Query("UPDATE inv_jual SET No_Pajak='' WHERE No_Jual='".Param::Get("No_Jual")."' LIMIT 1");
}
$tot_dpp = 0; $tot_ppn = 0;
$db->Query("SELECT D.Total_DPP,ROUND(D.Total_DPP*D.PPN) Total_PPN FROM (SELECT ROUND(SUM((-Qty*ROUND(Harga_Jual/(1+PPN),2))-IF(Total_Diskon=(-Qty*Harga_Jual),-Qty*ROUND(Harga_Jual/(1+PPN),2),ROUND(Total_Diskon/(1+PPN),2))),2) Total_DPP,PPN FROM inv_detail WHERE No_Ref IN (SELECT No_Jual FROM inv_jual WHERE No_Pajak='".$no_trx."') AND InvID IN (SELECT InvID FROM inv_produk WHERE Pajak=1)) D");
if ($db->Next()) {
$tot_dpp = $db->Row("Total_DPP", 0);
$tot_ppn = $db->Row("Total_PPN", 0);
}
$ajson[] = ['type'=>"form", 'id'=>"Jumlah_DPP", 'value'=>rupiah($tot_dpp)];
$ajson[] = ['type'=>"form", 'id'=>"Jumlah_PPN", 'value'=>rupiah($tot_ppn)];
}
$obj = new Table($db);
$obj->set_query("SELECT J.*,O.Nama_Alamat FROM (SELECT OutletID,No_Pajak,No_Jual,Tgl_Jual,Tgl_JT,Total_Jual,Total_Diskon,Total_Jual-Total_Diskon Total,CK FROM inv_jual WHERE".($no_trx==""?" FALSE":" No_Pajak='".$no_trx."'").") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)");
$obj->set_query_footer("SELECT SUM(Total_Jual) Total_Jual,SUM(Total_Diskon) Total_Diskon,SUM(Total_Jual-Total_Diskon) Total FROM inv_jual WHERE".((trim($no_trx)=="")?" FALSE":" No_Pajak='".$no_trx."'"));
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("trash", "Hapus", "JualPajakGabJS.jual_hapus", "No_Pajak", $no_trx);
$obj->set_func_btn("JualPajakGabJS.jual_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("JualPajakGabJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? "" : " WHERE CONCAT(No_Pajak,No_NPWP,DATE_FORMAT(Tgl_Pajak,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("(SELECT * FROM inv_jual_pajak".$tsql.") P", "P.*", "");
$obj->add_field("No_Pajak", "NSFP", "c");
$obj->add_field("Tgl_Pajak", "Tgl. Pajak", "c", "sqltgl", null, "val-tgl");
$obj->add_field("No_NPWP", "NPWP", "l");
$obj->add_field("Nama_NPWP", "Nama NPWP", "awr");
$obj->set_field_order("No_Pajak", "D");
$obj->add_row_btn("save", "Pilih", "JualPajakGabJS.tx_select");
$obj->set_func_navi("JualPajakGabJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-npwp" ) {
$tcari = trim(Param::Get("Cari_NPWP"));
$tsql = ($tcari=="") ? "" : " AND CONCAT_WS(Nama_Outlet,No_NPWP15,Nama_NPWP,No_NPWP) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("vi_para_outlet", "*,IF(No_NPWP15=0,No_NPWP,No_NPWP15) No_NPWP_NIK", "Aktif=1".$tsql);
$obj->add_field("OutletID", "ID", "hid");
$obj->add_field("No_NPWP_NIK", "NPWP", "c");
$obj->add_field("Nama_NPWP", "Nama NPWP / NIK", "awr");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Alamat_NPWP", "Alamat NPWP", "hid");
$obj->set_field_order("No_NPWP_NIK", "A");
$obj->add_row_btn("save", "Pilih", "JualPajakGabJS.npwp_select");
$obj->set_func_navi("JualPajakGabJS.data_query('brow-npwp')");
$ajson[] = $obj->db_table("divBrowNPWP");
} else if ( $data == "brow-jual" ) {
$tcari = trim(Param::Get("Cari_Jual"));
$tlimit = ($tcari=="") ? "" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Total FROM inv_jual WHERE Data_Jual=1 AND Rekap=1 AND No_Pajak=''".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat,'N' Nota", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_checkbox("No_Jual", "Nota", ["Y","N"]);
$obj->set_func_navi("JualPajakGabJS.data_query('brow-jual')");
$ajson[] = $obj->db_table("divBrowJual");
} else if ( $data == "check-nsfp" ) {
$ada = 0;
$db->Query("SELECT COUNT(*) Item FROM biaya_pajak WHERE No_Pajak='".$nomor."'");
if ($db->Next()) $ada = $db->Row("Item", 0);
if ($ada == 0) {
$db->Query("SELECT COUNT(*) Item FROM inv_jual_pajak WHERE No_Pajak='".$nomor."'");
if ($db->Next()) $ada = $db->Row("Item", 0);
}
$ajson['ada'] = ($ada > 0) ? true : false;
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Pembuatan Faktur Pajak Gabungan Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+359
View File
@@ -0,0 +1,359 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_retur.php
Desc. : PHP - Transaksi Retur Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 28th, 2011.
Last Modified : October 29th, 2023.
(c) 2011 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Jual", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Jual'=>$nomor];
if ($mode == "add") {
$atabel['No_Jual'] = "RJ-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_Jual'] = tgl_ymd();
$atabel['GudangID'] = 1;
$atabel['OutletID'] = 0;
$nomor = "";
} else if ($mode == "edit") {
Detail_Copy($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("R", Param::Get("Tgl_Jual"), true);
Detail_Save($nomor, Param::Get("Tgl_Jual"), Param::Get("GudangID"), $b_baru, $no_lama);
$anota = ['Retur_Jual'=>0];
$db->Query("SELECT SUM(-Qty*Harga_Jual) Retur_Jual FROM inv_detail WHERE No_Ref='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("inv_jual");
//$sql->add_param("No_Jual", $nomor);
$sql->add_param_date("Tgl_Jual");
$sql->add_param("GudangID");
$sql->add_param("OutletID");
$sql->add_param("Total_Jual", $anota['Retur_Jual']);
$sql->add_param("Data_Jual", 0);
$sql->add_param("Catatan");
$sql->add_param_userid();
$sql->add_where("No_Jual", $nomor);
if ($b_baru) $sql->add_param_date("Tgl_Nota", Param::Get("Tgl_Jual"));
$sql->UpdateDB();
$mode = "view";//todo: print jika langsung cetak
} else if ($mode == "cancel") {
Detail_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_Jual'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_jual WHERE Data_Jual=0 AND No_Jual='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
if ($atabel['OutletID']>0) {
$db->Query("SELECT Nama_Alamat Nama_Outlet,Alamat_Kota Alamat_Outlet FROM vi_para_outlet WHERE OutletID='".$atabel['OutletID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_Jual", $atabel['No_Jual'], !$enable, true, "text", "nomor transaksi");
$ttglnota = $form->datebox("_", "Tgl_Jual", $atabel['Tgl_Jual'], $enable, true);
$tgud = $form->option_db("_", "GudangID", $atabel['GudangID'], $enable, true, "vi_para_gudang", ["GudangID","Nama_Gudang2"], "Aktif=1 ORDER BY Nama_Gudang", [0,"&nbsp;"]);
$toutl = $form->textauto("_", "Nama_Outlet", ['value'=>$atabel['OutletID'],'text'=>$atabel['Nama_Outlet']], $enable, true, "ketik nama outlet");
$toutlal = $form->textbox("_", "Alamat_Outlet", $atabel['Alamat_Outlet'], false, false, "text");
$tcatat = $form->textarea("_", "Catatan", $atabel['Catatan'], $enable, true, 1);
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Jual">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualReturJS.tx_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="Tgl_Jual">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="GudangID">Lokasi Gudang</label>
<div class="col">'.$tgud.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<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">'.$toutl.'<button class="btn '.($enable?'btn-info':'btn-secondary').'" type="button"'.($enable?'':' disabled').' onclick="JualReturJS.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">Alamat Outlet</label>
<div class="col">'.$toutlal.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="Catatan">Catatan</label>
<div class="col">'.$tcatat.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="OutletID" value="'.$atabel['OutletID'].'" >
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("DELETE FROM inv_jual WHERE No_Jual='".$nomor."'");
$db->Query("DELETE FROM inv_detail WHERE No_Ref='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
$iqty = doubleval(Param::Get("Qty", 0)) * 1; $istok = $iqty;
$db->Query("SELECT Qty FROM inv_produk_kemasan WHERE InvID='".Param::Get("InvID")."' AND SatuanID='".Param::Get("SatuanID")."'");
if ($db->Next()) $istok = $db->Row("Qty", 1) * $iqty;
$sql = new SQL($db);
$sql->set_table("tmp_inv_detail");
$sql->add_param("No_Ref", $nomor);
$sql->add_param("InvID");
$sql->add_param("SatuanID");
$sql->add_param("RasaID");
$sql->add_param("Qty", $iqty);
$sql->add_param("Stok", $istok);
$sql->add_param("Harga_Jual");
$sql->add_param_unix();
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Ref", $nomor);
if ( $mode_detail == "insert" ) {
$sql->add_param("Harga_Pokok");
$sql->add_param("NotaID", 6);
$sql->InsertDB();
} else if ( $mode_detail == "update" ) {
$sql->UpdateDB();
} else if ( $mode_detail == "delete" ) {
$sql->DeleteDB();
}
}
$qview = ""; $qtabel = "inv_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_inv_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT D.*,P.Nama_Lengkap2 Nama_Produk,P.Nama_Satuan,R.Nama_Rasa,(D.Qty*D.Harga_Jual) Total FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview.") D LEFT JOIN vi_inv_produk2 P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID) LEFT JOIN para_rasa R ON (D.RasaID=R.RasaID)");
$obj->set_query_footer("SELECT COUNT(*) Harga_Jual,SUM(D.Qty*D.Harga_Jual) Total FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."' ".$qview.") D");
$obj->add_field("ID", "ID", "c");
$obj->add_field("Nama_Produk", "Nama Produk", "awr");
$obj->add_field("Nama_Rasa", "Varian / Rasa", "l");
$obj->add_field("Qty", "Qty", "r", "rupiah2");
$obj->add_field("Harga_Jual", "Harga @", "r", "rupiah", "items");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah", "rupiah");
$obj->set_field_order("ID", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("clipboard", "Ubah", "JualReturJS.detail_ubah");
$obj->add_row_btn("trash", "Hapus", "JualReturJS.detail_hapus", "Unix", user_unix());
$obj->set_func_btn("JualReturJS.detail_tambah", '<i class="bi-plus-lg me-1"></i> Produk');
$obj->set_func_btn("JualReturJS.produk_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("JualReturJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tlimit = ($tcari=="") ? "" : " AND (No_Jual LIKE '%".$tcari."%' OR Catatan LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,-Total_Jual Jumlah FROM inv_jual WHERE Data_Jual=0".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Retur", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Jumlah", "Total Retur", "r", "rupiah");
$obj->set_field_order("No_Jual", "D");
$obj->add_row_btn("save", "Pilih", "JualReturJS.tx_select");
$obj->set_func_navi("JualReturJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-outlet" ) {
$tcari = trim(Param::Get("Cari_Outlet"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(Nama_Outlet,Telp_Outlet,Nama_Outlet) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("vi_para_outlet", "*", "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", "JualReturJS.outlet_select");
$obj->set_func_navi("JualReturJS.data_query('brow-outlet')");
$ajson[] = $obj->db_table("divBrowOutlet");
} else if ( $data == "brow-produk" ) {
$tcari = trim(Param::Get("Cari_Produk"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(Kode_Produk,Nama_Lengkap) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_query("SELECT * FROM vi_inv_produk2 WHERE Aktif=1".$tsql);
$obj->add_field("InvID", "ID", "hid");
$obj->add_field("SatuanID", "SatuanID", "hid");
$obj->add_field("Kode_Produk", "Kode", "c");
$obj->add_field("Nama_Lengkap2", "Nama Produk", "awr");
$obj->set_field_order("Nama_Lengkap", "A");
$obj->add_row_btn("save", "Pilih", "JualReturJS.produk_select");
$obj->set_func_navi("JualReturJS.data_query('brow-produk')");
$ajson[] = $obj->json_table("divBrowProduk");
} else if ( $data == "auto-outlet" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
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 == "auto-produk" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
if (is_string($tcari) && strlen($tcari) < 64) {
$db->Query("SELECT P.InvID,P.Nama_Lengkap,CONCAT(P.SatuanID,':',P.Nama_Satuan) Data2 FROM vi_inv_produk2 P WHERE Aktif=1 AND CONCAT(Nama_Lengkap) LIKE '%".$tcari."%' ORDER BY Nama_Lengkap LIMIT 50");
while ($db->Next()) {
$ajson['autodata'][] = ['value'=>$db->Row("InvID"), 'text'=>$db->Row("Nama_Lengkap"), 'data'=>$db->Row("Data2")];
}
}
} else if ($data == "detail-produk") {
$id = Param::Get("ID", 0); $atabel = ['ID'=>$id, 'InvID'=>Param::Get("InvID",0), 'SatuanID'=>Param::Get("SatuanID",0)];
if ($id > 0) {
$db->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$nomor."' AND ID='".$id."' LIMIT 1");
if ($db->Next()) $atabel = $db->AllRow();
//$atabel['Qty'] *= -1;
}
if ($atabel['InvID']>0 && $atabel['SatuanID']>0) {
$db->Query("SELECT Nama_Lengkap2 Nama_Produk,Nama_Satuan FROM vi_inv_produk2 WHERE InvID='".$atabel['InvID']."' AND SatuanID='".$atabel['SatuanID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
$form = new Form($db);
$tnama = $form->textauto("_", "Nama_Produk", ['value'=>$atabel['InvID'],'text'=>$atabel['Nama_Produk']], true, false, "ketik nama produk");
$trasa = $form->option("_", "RasaID", $atabel['RasaID'], true, false, [$atabel['RasaID']=>$atabel['RasaID']]);
$tqty = $form->textbox("_", "Qty", $atabel['Qty'], true, false, "double");
$ttot = $form->textbox("_", "Jumlah", 0, false, false, "double");
$tsat = $form->textbox("_", "Nama_Satuan", $atabel['Nama_Satuan'], false, false, "text");
$tharga = '<select class="form-select text-end" id="Harga_Jual" name="Harga_Jual" onchange="JualReturJS.Hitung_Detail();"><option value="'.$atabel['Harga_Jual'].'">'.rupiah($atabel['Harga_Jual']).'</option></select>';
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Nama_Produk">Nama Produk</label>
<div class="col">'.$tnama.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="RasaID">Varian / Rasa</label>
<div class="col">'.$trasa.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Qty">Qty</label>
<div class="col-sm-4 col-lg-5">'.$tqty.'</div>
<div class="col-sm-4 col-lg-4">'.$tsat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Harga_Jual">Harga (@)</label>
<div class="col-sm-4 col-lg-5">'.$tharga.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Total</label>
<div class="col-sm-4 col-lg-5">'.$ttot.'</div>
</div>
<input type="hidden" id="ID" value="'.$atabel['ID'].'" >
<input type="hidden" id="InvID" value="'.$atabel['InvID'].'" >
<input type="hidden" id="SatuanID" value="'.$atabel['SatuanID'].'" >
<input type="hidden" id="Harga_Pokok" value="'.$atabel['Harga_Pokok'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >
';
} else if ( $data == "option-rasa" ) {
$aoption = ['type' => "option", 'id' => "RasaID", 'value' => 0, 'avalue' => [['value'=>0,'html'=>""]]];
$db->Query("SELECT R.RasaID,R.Nama_Rasa FROM (SELECT * FROM inv_produk_varian WHERE InvID='".Param::Get("InvID",0)."') V LEFT JOIN para_rasa R ON (R.RasaID=V.RasaID) ORDER BY R.Nama_Rasa");
while ($db->Next()) {
$aoption['avalue'][] = ['value'=>$db->Row("RasaID"), 'html'=>$db->Row("Nama_Rasa")];
}
$ajson[] = $aoption;
} else if ( $data == "option-harga" ) {
$aoption = ['type' => "option", 'id' => "Harga_Jual", 'value' => 0, 'avalue' => []];
$id_grup = 0;
$db->Query("SELECT Grup_OutletID FROM para_outlet WHERE OutletID='".Param::Get("OutletID",0)."'");
if ($db->Next()) $id_grup = $db->Row("Grup_OutletID", 0);
//todo: check if use last sale price !!
//$db->Query("SELECT D.Harga_Jual FROM inv_detail D LEFT JOIN inv_jual J ON (D.No_Ref=J.No_Jual) WHERE J.OutletID='".Param::Get("OutletID",0)."' AND D.InvID='".Param::Get("InvID",0)."' AND D.SatuanID='".Param::Get("SatuanID",0)."' ORDER BY D.Tgl_Ref DESC LIMIT 1", 0));
$db->Query("SELECT Tanggal,Harga_Jual FROM inv_produk_harga WHERE InvID='".Param::Get("InvID",0)."' AND SatuanID='".Param::Get("SatuanID",0)."' AND Grup_OutletID='".$id_grup."' ORDER BY Tanggal DESC, Harga_Jual DESC");
while ($db->Next()) {
if ($db->RecordCount()==1) $aoption['value'] = $db->Row("Harga_Jual");
$aoption['avalue'][] = ['value'=>$db->Row("Harga_Jual"), 'html'=>rupiah($db->Row("Harga_Jual"))];
}
$ajson[] = $aoption;
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Retur Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+271
View File
@@ -0,0 +1,271 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_retur_kemas.php
Desc. : PHP - Transaksi Retur Kemasan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : February 27th, 2011.
Last Modified : October 29th, 2023.
(c) 2011 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Jual", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Jual'=>$nomor, 'A_Picker'=>"0"];
if ($mode == "edit") {
Detail_Copy($nomor);
} else if ($mode == "save") {
Detail_Save($nomor, Param::Get("Tgl_Jual"), Param::Get("GudangID"), false);
$anota = ['Jual'=>0, 'Diskon'=>0];
$db->Query("SELECT SUM(-Qty*Harga_Jual) Jual, SUM(Total_Diskon) Diskon FROM inv_detail WHERE No_Ref='".$nomor."'");
if ($db->Next()) $anota = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("inv_jual");
$sql->add_param("Total_Jual", $anota['Jual']);
$sql->add_param("Total_Diskon", $anota['Diskon']);
$sql->add_where("No_Jual", $nomor);
$sql->UpdateDB();
if (Param::Get("Rekap",0)==1) {
// update ke SCS
scs_update_jual($nomor);
}
$mode = "view";
} else if ($mode == "cancel") {
Detail_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_Jual'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT *,Nama_Picker(A_Picker) Nama_Picker FROM inv_jual WHERE Data_Jual=1 AND No_Jual='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
if ($atabel['OutletID']>0) {
$db->Query("SELECT Nama_Alamat FROM vi_para_outlet WHERE OutletID='".$atabel['OutletID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
if ($atabel['SalesID']>0) {
$db->Query("SELECT Nama_Pegawai Nama_Sales FROM para_pegawai WHERE PegID='".$atabel['SalesID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
if ($atabel['SupirID']>0) {
$db->Query("SELECT Nama_Pegawai Nama_Supir FROM para_pegawai WHERE PegID='".$atabel['SupirID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
}
$form = new Form($db);
$tnota = $form->textbox("_", "No_Jual", $atabel['No_Jual'], true, false, "text", "nomor transaksi");
$ttglnota = $form->datebox("_", "Tgl_Jual", $atabel['Tgl_Jual'], false, false);
$ttgljt = $form->datebox("_", "Tgl_JT", $atabel['Tgl_JT'], false, false);
$tgud = $form->option_db("_", "GudangID", $atabel['GudangID'], false, false, "vi_para_gudang", ["GudangID","Nama_Gudang2"], "Aktif=1 ORDER BY Nama_Gudang", [0,"&nbsp;"]);
$toutl = $form->textbox("_", "Nama_Outlet", $atabel['Nama_Alamat'], false, false, "text");
$tsales = $form->textbox("_", "Nama_Sales", $atabel['Nama_Sales'], false, false, "text");
$tsupir = $form->textbox("_", "Nama_Supir", $atabel['Nama_Supir'], false, false, "text");
$tpicker = $form->textbox("_", "Nama_Picker", $atabel['Nama_Picker'], false, false, "text");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Jual">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualReturKemasJS.tx_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">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Jatuh Tempo</label>
<div class="col-sm-7 col-lg-5">'.$ttgljt.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Lokasi Gudang</label>
<div class="col">'.$tgud.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Nama Outlet</label>
<div class="col">'.$toutl.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">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">Nama Supir</label>
<div class="col">'.$tsupir.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label">Nama Picker</label>
<div class="col">'.$tpicker.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="Rekap" value="'.$atabel['Rekap'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "tabel-detail" ) {
$grup_kemasan = $_SESSION['__APP_IAS']['GRUP_PRODUK_KEMASAN'];
if (in_array($mode_detail, ["insert","update","delete"])) {
$iqty = doubleval(Param::Get("QtyIn", 0)); $istok = $iqty;
$db->Query("SELECT Qty FROM inv_produk_kemasan WHERE InvID='".Param::Get("InvID")."' AND SatuanID='".Param::Get("SatuanID")."'");
if ($db->Next()) $istok = $db->Row("Qty", 1) * $iqty;
$ada = 0;
$db->Query("SELECT COUNT(*) Item FROM tmp_inv_detail WHERE No_Ref='".$nomor."' AND InvID='".Param::Get("InvID")."' AND Qty>=0");
if ($db->Next()) $ada = $db->Row("Item", 0);
if ($ada > 0) {
$db->Query("UPDATE tmp_inv_detail SET Qty='".$iqty."',Stok='".$istok."',Unix='".user_unix()."',UserID='".user_id()."' WHERE No_Ref='".$nomor."' AND InvID='".Param::Get("InvID")."' AND Qty>=0");
} else {
$sql = new SQL($db);
$sql->set_table("tmp_inv_detail");
$sql->add_param("No_Ref", $nomor);
$sql->add_param("NotaID", 5);
$sql->add_param("InvID");
$sql->add_param("SatuanID");
$sql->add_param("Qty", $iqty);
$sql->add_param("Stok", $istok);
$sql->add_param("Harga_Pokok");
$sql->add_param("Harga_Jual");
$sql->add_param_unix();
$sql->add_param_userid();
$sql->InsertDB();
}
}
$qview = ""; $qtabel = "inv_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_inv_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT D.*,SUM(IF(D.Qty<0,-D.Qty,0)) Keluar,SUM(IF(D.Qty>0,D.Qty,0)) Masuk,P.Nama_Produk,S.Nama_Satuan FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."'".$qview.") D LEFT JOIN inv_produk P ON (P.InvID=D.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=D.SatuanID) WHERE P.Grup_InvID='".$grup_kemasan."' GROUP BY D.InvID,D.SatuanID");
$obj->add_field("InvID", "ID", "hid");
$obj->add_field("SatuanID", "SID", "hid");
$obj->add_field("Nama_Produk", "Nama Kemasan", "awr");
$obj->add_field("Nama_Satuan", "Satuan", "l");
$obj->add_field("Keluar", "Qty Jual", "r", "abs");
$obj->add_field("Masuk", "Qty Kembali", "r", "abs");
$obj->add_field("Harga_Pokok", "Harga Pokok", "hid");
$obj->add_field("Harga_Jual", "Harga @", "hid");
$obj->set_field_order("ID", "Nama_Produk");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("clipboard", "Ubah", "JualReturKemasJS.detail_ubah");
}
$obj->set_func_navi("JualReturKemasJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tlimit = ($tcari=="") ? "" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Jumlah FROM inv_jual WHERE Data_Jual=1 AND Lunas=0".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Jumlah", "TOTAL", "r", "rupiah");
$obj->set_field_order("No_Jual", "D");
$obj->add_row_btn("save", "Pilih", "JualReturKemasJS.tx_select");
$obj->set_func_navi("JualReturKemasJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ($data == "detail-produk") {
$atabel = [ 'InvID'=>Param::Get("InvID",0),
'SatuanID'=>Param::Get("SatuanID",0),
'Harga_Pokok'=>Param::Get("Harga_Pokok",0),
'Harga_Jual'=>Param::Get("Harga_Jual",0),
'QtyOut'=>Param::Get("QtyOut",0),
'QtyIn'=>Param::Get("QtyIn",0) ];
if ($atabel['InvID']>0 && $atabel['SatuanID']>0) {
$db->Query("SELECT Nama_Lengkap2 Nama_Produk,Nama_Satuan FROM vi_inv_produk2 WHERE InvID='".$atabel['InvID']."' AND SatuanID='".$atabel['SatuanID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
$form = new Form($db);
$tnama = $form->textbox("_", "Nama_Produk", $atabel['Nama_Produk'], false, false, "text");
$tqtyo = $form->textbox("_", "QtyOut", $atabel['QtyOut'], false, false, "double");
$tqtyi = $form->textbox("_", "QtyIn", $atabel['QtyIn'], true, false, "double");
$tsat = $form->textbox("_", "Nama_Satuan", $atabel['Nama_Satuan'], false, false, "text");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Nama Kemasan</label>
<div class="col">'.$tnama.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Qty Jual</label>
<div class="col-sm-4 col-lg-5">'.$tqtyo.'</div>
<div class="col-sm-4 col-lg-4">'.$tsat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="QtyIn">Qty Kembali</label>
<div class="col-sm-4 col-lg-5">'.$tqtyi.'</div>
<div class="col-sm-4 col-lg-4">'.$tsat.'</div>
</div>
<input type="hidden" id="InvID" value="'.$atabel['InvID'].'" >
<input type="hidden" id="SatuanID" value="'.$atabel['SatuanID'].'" >
<input type="hidden" id="Harga_Pokok" value="'.$atabel['Harga_Pokok'].'" >
<input type="hidden" id="Harga_Jual" value="'.$atabel['Harga_Jual'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >
';
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Retur Kemasan Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+90
View File
@@ -0,0 +1,90 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_status.php
Desc. : PHP - Validasi Status Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 8th, 2011.
Last Modified : October 30th, 2023.
(c) 2011 - 2023, 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\Table;
use siaupheng\fonia3\Web\Form;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
if ( $data == "tabel-detail" ) {
if ( $mode_detail == "insert" && Param::Get("draw", 0)==0 ) {
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if (intval($_val)==1) {
$db->Query("UPDATE inv_jual SET Rekap=1 WHERE No_Jual='".$_key."' LIMIT 1");
scs_update_jual($_key, true);
}
}
}
$tcari = trim(Param::Get("Cari_TX"));
$tlimit = ($tcari=="") ? "" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Total FROM inv_jual WHERE Data_Jual=1 AND Rekap=0".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Jual", "Sub. Total", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total", "TOTAL", "r", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "D");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_checkbox("No_Jual", "Rekap", ["1","0"]);
}
$obj->set_func_navi("JualStatusJS.data_query('tabel-detail')");
$ajson[] = $obj->db_table("divDetailTabel");
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Validasi Status Order Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div class="row mb-1">
<div class="col">
<div class="input-group"><input class="form-control" id="Cari_TX" placeholder="Kunci Pencarian" type="text"><button class="btn btn-info shadow-none" type="button" id="butSearch">Cari</button><button class="btn btn-secondary shadow-none" type="button" id="butAll">Semua</button></div>
</div>
</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+223
View File
@@ -0,0 +1,223 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/jual_tagihan.php
Desc. : PHP - Pembuatan Daftar Tagihan Penjualan
Created By : Siau Pheng ([email protected]).
Created Date : March 10th, 2011.
Last Modified : January 22nd, 2026.
(c) 2011 - 2026, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func/ias.php");
require_once(__DIR__."/../func/dt.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;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_Tagih", "");
$tgl_tagih = tgl_sql2str(Param::Get("Tgl_Tagih", tgl_dmy()));
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Tagih'=>$nomor];
if ($mode == "add") {
$atabel['No_Tagih'] = "DT-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_Tagih'] = tgl_ymd();
$atabel['SalesID'] = 0;
$nomor = "";
} else if ($mode == "edit") {
DT_Copy($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("T", Param::Get("Tgl_Tagih"), true);
DT_Save($nomor, $b_baru, $no_lama);
$sql = new SQL($db);
$sql->set_table("inv_jual_tagih");
$sql->add_param_date("Tgl_Tagih");
$sql->add_param("SalesID");
$sql->add_param_userid();
$sql->add_where("No_Tagih", $nomor);
$sql->UpdateDB();
$mode = "view";//todo: print jika langsung cetak
} else if ($mode == "cancel") {
DT_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_Tagih'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM inv_jual_tagih WHERE No_Tagih='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
if ($atabel['SalesID']>0) {
$db->Query("SELECT Alamat_Pegawai Alamat_Sales FROM para_pegawai WHERE PegID='".$atabel['SalesID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_Tagih", $atabel['No_Tagih'], !$enable, true, "text", "nomor transaksi");
$ttglnota = $form->datebox("_", "Tgl_Tagih", $atabel['Tgl_Tagih'], $enable, true);
$tsales = $form->option_db("_", "SalesID", $atabel['SalesID'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_SALES']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"], null, "JualTagihanJS.oc_SalesID(this);");
$tsalesal = $form->textbox("_", "Alamat_Sales", $atabel['Alamat_Sales'], false, false, "text");
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_Tagih">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="JualTagihanJS.tx_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="Tgl_Tagih">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglnota.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<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">Alamat Sales</label>
<div class="col">'.$tsalesal.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
DT_Delete($nomor);
$db->Query("DELETE FROM inv_jual_tagih_detail WHERE No_Tagih='".$nomor."'");
$db->Query("DELETE FROM inv_jual_tagih WHERE No_Tagih='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
if ( $mode_detail == "insert" ) {
$alist = Param::Get_ArrayCBOX();
foreach ($alist as $_key => $_val) {
if ($_val=="Y") $db->Query("INSERT IGNORE INTO tmp_jual_dt_detail (No_Tagih,No_Jual,Unix,UserID) VALUES ('".$nomor."','".$_key."','".user_unix()."','".user_id()."')");
}
} else if ( $mode_detail == "delete" ) {
$db->Query("DELETE FROM tmp_jual_dt_detail WHERE No_Tagih='".$nomor."' AND No_Jual='".Param::Get("No_Jual")."' LIMIT 1");
}
}
$qview = ""; $qtabel = "inv_jual_tagih_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_jual_dt_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT J.*,IFNULL(B.Bayar_Lalu,0) Bayar_Lalu,IFNULL(B.Bayar_Ini,0) Bayar_Ini,J.Total_Faktur-IFNULL(B.Bayar_Lalu,0)-IFNULL(B.Bayar_Ini,0) Total_Sisa,O.Nama_Alamat FROM (SELECT OutletID,No_Jual,Tgl_Jual,Tgl_JT,Total_Jual-Total_Diskon Total_Faktur,CK FROM inv_jual WHERE No_Jual IN (SELECT No_Jual FROM ".$qtabel." WHERE No_Tagih='".$nomor."'".$qview.")) J LEFT JOIN (SELECT No_Jual,SUM(IF(Tgl_Bayar<'".$tgl_tagih."',Total_Bayar+Total_Potong,0)) Bayar_Lalu,SUM(IF(Tgl_Bayar='".$tgl_tagih."',Total_Bayar+Total_Potong,0)) Bayar_Ini FROM inv_jual_lunas WHERE No_Jual IN (SELECT No_Jual FROM ".$qtabel." WHERE No_Tagih='".$nomor."'".$qview.") GROUP BY No_Jual) B ON (B.No_Jual=J.No_Jual) LEFT JOIN vi_para_outlet O ON (O.OutletID=J.OutletID)");
$obj->set_query_footer("SELECT SUM(J.Total_Faktur) Total_Faktur,SUM(B.Bayar_Lalu) Bayar_Lalu,SUM(B.Bayar_Ini) Bayar_Ini,SUM(J.Total_Faktur-B.Bayar_Lalu-B.Bayar_Ini) Total_Sisa FROM (SELECT No_Jual,Total_Jual-Total_Diskon Total_Faktur FROM inv_jual WHERE No_Jual IN (SELECT No_Jual FROM ".$qtabel." WHERE No_Tagih='".$nomor."'".$qview.")) J LEFT JOIN (SELECT No_Jual,SUM(IF(Tgl_Bayar<'".$tgl_tagih."',Total_Bayar+Total_Potong,0)) Bayar_Lalu,SUM(IF(Tgl_Bayar='".$tgl_tagih."',Total_Bayar+Total_Potong,0)) Bayar_Ini FROM inv_jual_lunas WHERE No_Jual IN (SELECT No_Jual FROM ".$qtabel." WHERE No_Tagih='".$nomor."'".$qview.") GROUP BY No_Jual) B ON (B.No_Jual=J.No_Jual)");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tgl_JT", "Jatuh Tempo", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("Total_Faktur", "Faktur", "r", "rupiah", "rupiah");
$obj->add_field("Bayar_Lalu", "Setoran", "r", "rupiah", "rupiah");
$obj->add_field("Bayar_Ini", "Pembayaran", "r", "rupiah", "rupiah");
$obj->add_field("Total_Sisa", "Sisa", "r", "rupiah", "rupiah");
$obj->add_field("CK", "C/K", "c");
$obj->set_field_order("No_Jual", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("trash", "Hapus", "JualTagihanJS.jual_hapus");
$obj->set_func_btn("JualTagihanJS.jual_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("JualTagihanJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? "" : " WHERE CONCAT(No_Tagih,DATE_FORMAT(Tgl_Tagih,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("(SELECT * FROM inv_jual_tagih".$tsql.") T LEFT JOIN para_pegawai S ON (T.SalesID=S.PegID)", "T.*,S.Nama_Pegawai", "");
$obj->add_field("No_Tagih", "No. Trans", "c");
$obj->add_field("Tgl_Tagih", "Tgl. Tagih", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Pegawai", "Nama Sales", "awr");
$obj->set_field_order("No_Tagih", "D");
$obj->add_row_btn("save", "Pilih", "JualTagihanJS.tx_select");
$obj->set_func_navi("JualTagihanJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-jual" ) {
$tcari = trim(Param::Get("Cari_Jual"));
$tlimit = ($tcari=="") ? " AND SalesID='".Param::Get("SalesID",0)."'" : " AND (No_Jual LIKE '%".$tcari."%' OR No_Faktur LIKE '%".$tcari."%' OR No_Tagih LIKE '%".$tcari."%' OR OutletID IN (SELECT OutletID FROM para_outlet WHERE Nama_Outlet LIKE '%".$tcari."%'))";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Jual-Total_Diskon Total_Faktur,Total_Bayar+Total_Potong Total_Bayar2,Total_Jual-Total_Diskon-Total_Bayar-Total_Potong Total_Sisa FROM inv_jual WHERE Data_Jual=1 AND Lunas=0 AND No_Jual NOT IN (SELECT No_Jual FROM tmp_jual_dt_detail WHERE No_Tagih='".$nomor."')".$tlimit.") J LEFT JOIN vi_para_outlet O ON (J.OutletID=O.OutletID)", "J.*,O.Nama_Alamat,'N' Nota", "");
$obj->add_field("No_Jual", "No. Trans", "c");
$obj->add_field("Tgl_Jual", "Tgl. Jual", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Tgl_JT", "Jatuh Tempo", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Nama_Alamat", "Nama Outlet", "awr");
$obj->add_field("No_Tagih", "No. Tagihan", "c");
$obj->add_field("Total_Faktur", "Faktur", "r", "rupiah");
$obj->add_field("Total_Bayar2", "Pembayaran", "r", "rupiah");
$obj->add_field("Total_Sisa", "Sisa", "r", "rupiah");
$obj->set_field_order("No_Jual", "A");
$obj->add_row_checkbox("No_Jual", "Nota", ["Y","N"]);
$obj->set_func_navi("JualTagihanJS.data_query('brow-jual')");
$ajson[] = $obj->db_table("divBrowJual");
} else if ( $data == "info-sales") {
$arec = [];
$db->Query("SELECT * FROM para_pegawai WHERE PegID='".Param::Get("SalesID", 0)."' LIMIT 1");
if ($db->Next()) $arec = $db->AllRow();
$ajson[] = array('type'=>"form", 'id'=>"Alamat_Sales", 'value'=>$arec['Alamat_Pegawai']);
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Pembuatan Daftar Tagihan Penjualan</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+295
View File
@@ -0,0 +1,295 @@
<?php
/*******************************************************************
App. Name : Inventory Advanced Systems
Module : /apps/php/ias/manual_do.php
Desc. : PHP - Transaksi Pembuatan DO Manual
Created By : Siau Pheng (siaupheng@3fonia.com).
Created Date : January 23rd, 2024.
(c) 2024, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func/ias.php");
require_once(__DIR__."/../func/mdo.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;
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$nomor = Param::Get("No_MDO", "");
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_MDO'=>$nomor];
if ($mode == "add") {
$atabel['No_MDO'] = "MD-BARU-".$_SESSION['__WEB_APP']['SERVER_ID'].user_id(3);
$atabel['Tgl_MDO'] = tgl_ymd();
$atabel['SupirID'] = 0;
$nomor = "";
} else if ($mode == "edit") {
MDO_Copy($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
$b_baru = (strpos($no_lama,"BARU")===false) ? false : true;
if ($b_baru) $nomor = Nomor_Baru("N", Param::Get("Tgl_MDO"), true);
MDO_Save($nomor, $b_baru, $no_lama);
$sql = new SQL($db);
$sql->set_table("manual_do");
$sql->add_param_date("Tgl_MDO");
$sql->add_param("SupirID");
$sql->add_param("Catatan");
$sql->add_param_userid();
$sql->add_where("No_MDO", $nomor);
$sql->UpdateDB();
$mode = "view";
} else if ($mode == "cancel") {
MDO_Cancel($nomor);
$mode = "view";
$nomor = ""; $atabel['No_MDO'] = "";
}
if ($nomor <> "" && $mode <> "cancel") {
$db->Query("SELECT * FROM manual_do WHERE No_MDO='".$nomor."'");
if (!$db->Next()) {
$ajson['error'] = "Nomor Transaksi belum ada / tidak diketemukan !";
} else $atabel = array_merge($atabel, $db->AllRow());
}
$enable = in_array($mode, ["add","edit"]) ? true : false;
$form = new Form($db);
$tnota = $form->textbox("_", "No_MDO", $atabel['No_MDO'], !$enable, false, "text", "nomor transaksi");
$ttglmdo = $form->datebox("_", "Tgl_MDO", $atabel['Tgl_MDO'], $enable, false);
$tsupir = $form->option_db("_", "SupirID", $atabel['SupirID'], $enable, false, "para_pegawai", ["PegID","Nama_Pegawai"], "Aktif=1 AND Jenis_PegID='".$_SESSION['__APP_IAS']['GRUP_PEG_SUPIR']."' ORDER BY Nama_Pegawai", [0,"&nbsp;"]);
$tcatat = $form->textarea("_", "Catatan", $atabel['Catatan'], $enable, false, 1);
$ajson['html'] = '
<div class="row">
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="No_MDO">Nomor Transaksi</label>
<div class="col"><div class="input-group">'.$tnota.'<button id="butBrow" class="btn btn-info" type="button" onclick="ManualDOJS.tx_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="Tgl_MDO">Tanggal Transaksi</label>
<div class="col-sm-7 col-lg-5">'.$ttglmdo.'</div>
</div>
</div>
<div class="col-sm-12 col-lg-6">
<div class="row mb-1">
<label class="col-sm-5 col-lg-3 col-form-label" for="SupirID">Nama Supir</label>
<div class="col">'.$tsupir.'</div>
</div>
<div class="row mb-1 d-none">
<label class="col-sm-5 col-lg-3 col-form-label">Nama Picker</label>
<div class="col">'.$tpicker.'</div>
</div>
</div>
</div>
<div class="row mb-1">
<label class="col-sm-3 col-lg-2 col-form-label" for="Catatan" style="width:12.5%;">Catatan</label>
<div class="col">'.$tcatat.'</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
$db->Query("DELETE FROM manual_do_detail WHERE No_MDO='".$nomor."'");
$db->Query("DELETE FROM manual_do WHERE No_MDO='".$nomor."'");
$ajson['status'] = true;
} else if ( $data == "tabel-detail" ) {
if (in_array($mode_detail, ["insert","update","delete"])) {
$iqty = 1;
$db->Query("SELECT Qty FROM inv_produk_kemasan WHERE InvID='".Param::Get("InvID")."' AND SatuanID='".Param::Get("SatuanID")."'");
if ($db->Next()) $iqty = $db->Row("Qty", 1);
$sql = new SQL($db);
$sql->set_table("tmp_manual_do_detail");
$sql->add_param("No_MDO", $nomor);
$sql->add_param("InvID");
$sql->add_param("RasaID");
$sql->add_param("SatuanID");
$sql->add_param("Qty", $iqty);
$sql->add_param("Muat");
$sql->add_param("Kembali");
$sql->add_param_unix();
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_MDO", $nomor);
if ( $mode_detail == "insert" ) {
$sql->InsertDB();
} else if ( $mode_detail == "update" ) {
$sql->UpdateDB();
} else if ( $mode_detail == "delete" ) {
$sql->DeleteDB();
}
}
$qview = ""; $qtabel = "manual_do_detail";
if (in_array($mode, ["add","edit"])) {
if ($mode=="add") $qview = " AND Unix=".user_unix();
$qtabel = "tmp_manual_do_detail";
}
$obj = new Table($db);
$obj->set_query("SELECT D.*,P.Nama_Lengkap2,P.Nama_Satuan,R.Nama_Rasa FROM (SELECT *,(Muat-Kembali) Terantar FROM ".$qtabel." WHERE No_MDO='".$nomor."'".$qview.") D LEFT JOIN vi_inv_produk2 P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID) LEFT JOIN para_rasa R ON (D.RasaID=R.RasaID)");
$obj->set_query_footer("SELECT COUNT(*) Nama_Lengkap2,SUM(D.Muat) Muat,SUM(D.Kembali) Kembali,SUM(D.Muat-D.Kembali) Terantar FROM (SELECT * FROM ".$qtabel." WHERE No_MDO='".$nomor."' ".$qview.") D");
$obj->add_field("ID", "ID", "c");
$obj->add_field("Nama_Lengkap2", "Nama Produk", "awr", null, "items");
$obj->add_field("Nama_Rasa", "Varian / Rasa", "l");
$obj->add_field("Muat", "Muat", "r", "rupiah", "rupiah");
$obj->add_field("Kembali", "Kembali", "r", "rupiah", "rupiah");
$obj->add_field("Terantar", "Terantar", "r", "rupiah", "rupiah");
$obj->set_field_order("ID", "A");
if (in_array($mode, ["add","edit"])) {
$obj->add_row_btn("clipboard", "Ubah", "ManualDOJS.detail_ubah");
$obj->add_row_btn("trash", "Hapus", "ManualDOJS.detail_hapus", "Unix", user_unix());
$obj->set_func_btn("ManualDOJS.detail_tambah", '<i class="bi-plus-lg me-1"></i> Produk');
$obj->set_func_btn("ManualDOJS.produk_brow", '<i class="bi-table me-1"></i> Browse');
}
$obj->set_func_navi("ManualDOJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tlimit = ($tcari=="") ? "" : "(No_MDO LIKE '%".$tcari."%' OR Catatan LIKE '%".$tcari."%')";
$obj = new Table($db);
$obj->set_table("manual_do", "*", $tlimit);
$obj->add_field("No_MDO", "No. Trans", "c");
$obj->add_field("Tgl_MDO", "Tgl. Trans", "c", "sqltgl", null, "val-tgl");
$obj->add_field("Catatan", "Catatan", "awr");
$obj->set_field_order("No_MDO", "D");
$obj->add_row_btn("save", "Pilih", "ManualDOJS.tx_select");
$obj->set_func_navi("ManualDOJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-produk" ) {
$tcari = trim(Param::Get("Cari_Produk"));
$tsql = ($tcari=="") ? "" : " AND CONCAT(Kode_Produk,Nama_Lengkap) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("vi_inv_produk2", "*", "Aktif=1".$tsql);
$obj->add_field("InvID", "ID", "hid");
$obj->add_field("SatuanID", "SatuanID", "hid");
$obj->add_field("Kode_Produk", "Kode", "c");
$obj->add_field("Nama_Lengkap2", "Nama Produk", "awr");
$obj->set_field_order("Nama_Lengkap", "A");
$obj->add_row_btn("save", "Pilih", "ManualDOJS.produk_select");
$obj->set_func_navi("ManualDOJS.data_query('brow-produk')");
$ajson[] = $obj->db_table("divBrowProduk");
} else if ( $data == "auto-produk" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
if (is_string($tcari) && strlen($tcari) < 64) {
$db->Query("SELECT P.InvID,P.Nama_Lengkap,CONCAT(P.SatuanID,':',P.Nama_Satuan) Data2 FROM vi_inv_produk2 P WHERE Aktif=1 AND CONCAT(Nama_Lengkap) LIKE '%".$tcari."%' ORDER BY Nama_Lengkap LIMIT 50");
while ($db->Next()) {
$ajson['autodata'][] = ['value'=>$db->Row("InvID"), 'text'=>$db->Row("Nama_Lengkap"), 'data'=>$db->Row("Data2")];
}
}
} else if ($data == "detail-produk") {
$id = Param::Get("ID", 0); $atabel = ['ID'=>$id, 'InvID'=>Param::Get("InvID",0), 'SatuanID'=>Param::Get("SatuanID",0)];
if ($id > 0) {
$db->Query("SELECT * FROM tmp_manual_do_detail WHERE No_MDO='".$nomor."' AND ID='".$id."' LIMIT 1");
if ($db->Next()) $atabel = $db->AllRow();
}
if ($atabel['InvID']>0 && $atabel['SatuanID']>0) {
$db->Query("SELECT Nama_Lengkap2 Nama_Produk,Nama_Satuan FROM vi_inv_produk2 WHERE InvID='".$atabel['InvID']."' AND SatuanID='".$atabel['SatuanID']."' LIMIT 1");
if ($db->Next()) $atabel = array_merge($atabel, $db->AllRow());
}
$form = new Form($db);
$tnama = $form->textauto("_", "Nama_Produk", ['value'=>$atabel['InvID'],'text'=>$atabel['Nama_Produk']], true, false, "ketik nama produk");
$trasa = $form->option("_", "RasaID", $atabel['RasaID'], true, false, [$atabel['RasaID']=>$atabel['RasaID']]);
$tsat = $form->textbox("_", "Nama_Satuan", $atabel['Nama_Satuan'], false, false, "text");
$tmuat = $form->textbox("_", "Muat", $atabel['Muat'], true, false, "double");
$tkemb = $form->textbox("_", "Kembali", $atabel['Kembali'], true, false, "double");
$tantar = $form->textbox("_", "Terantar", 0, false, false, "double");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Nama_Produk">Nama Produk</label>
<div class="col">'.$tnama.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="RasaID">Varian / Rasa</label>
<div class="col">'.$trasa.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Satuan</label>
<div class="col-sm-4 col-lg-5">'.$tsat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Muat">Muat</label>
<div class="col-sm-4 col-lg-5">'.$tmuat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label" for="Kembali">Kembali</label>
<div class="col-sm-4 col-lg-5">'.$tkemb.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-3 col-form-label">Terantar</label>
<div class="col-sm-4 col-lg-5">'.$tantar.'</div>
</div>
<input type="hidden" id="ID" value="'.$atabel['ID'].'" >
<input type="hidden" id="InvID" value="'.$atabel['InvID'].'" >
<input type="hidden" id="SatuanID" value="'.$atabel['SatuanID'].'" >
<input type="hidden" id="mode_detail" value="'.$mode_detail.'" >
';
} else if ( $data == "option-rasa" ) {
$aoption = ['type' => "option", 'id' => "RasaID", 'value' => Param::Get("RasaID",0), 'avalue' => [['value'=>0,'html'=>""]]];
$db->Query("SELECT R.RasaID,R.Nama_Rasa FROM (SELECT * FROM inv_produk_varian WHERE InvID='".Param::Get("InvID",0)."') V LEFT JOIN para_rasa R ON (R.RasaID=V.RasaID) ORDER BY R.Nama_Rasa");
while ($db->Next()) {
$aoption['avalue'][] = ['value'=>$db->Row("RasaID"), 'html'=>$db->Row("Nama_Rasa")];
}
$ajson[] = $aoption;
} else if ( $data == "default") {
echo '
<div class="fade-in">
<div class="card"><div class="card-body">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="tx-tab" data-bs-toggle="tab" data-bs-target="#tx" type="button" role="tab" aria-controls="tx" aria-selected="true"><i class="bi-database me-2"></i>Transaksi Pembuatan DO Manual</button>
</li>
<li class="nav-item ms-auto">
<button class="btn btn-primary mb-1 ms-2" id="butTambah" type="button"><i class="bi-plus-lg me-2"></i>Tambah</button>
<button class="btn btn-info mb-1 ms-2" id="butUbah" type="button"><i class="bi-clipboard me-2"></i>Ubah</button>
<button class="btn btn-warning mb-1 ms-2" id="butHapus" type="button"><i class="bi-trash me-2"></i>Hapus</button>
<button class="btn btn-secondary mb-1 ms-2" id="butPrint" type="button"><i class="bi-printer me-2"></i>Cetak</button>
<button class="btn btn-danger mb-1 ms-2" id="butBatal" type="button"><i class="bi-x-lg me-2"></i>Batal</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-floppy me-2"></i>Simpan</button>
</li>
</ul>
<div class="tab-content border border-top-0 p-3">
<div class="tab-pane fade active show" id="tx" role="tabpanel" aria-labelledby="tx-tab">
<div id="divTXMaster">&nbsp;</div>
<div id="divDetailTabel">&nbsp;</div>
</div>
</div>
</div></div>
</div>';
}
send_json($ajson);
?>
+104
View File
@@ -0,0 +1,104 @@
<?php
/*******************************************************************
Module : /apps/php/index.php
Desc. : PHP - Halaman Utama Desktop
Created By : Siau Pheng (siaupheng@3fonia.com).
Created Date : May 24th, 2010.
Last Modified : March 21st, 2023.
(c) 2010 - 2023, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../vendor/autoload.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\Web\Param;
use siaupheng\fonia3\Web\Register;
function random_color($trans = "0.6") {
$col_r = mt_rand( 0, 255 );
$col_g = mt_rand( 0, 255 );
$col_b = mt_rand( 0, 255 );
return "rgba(".$col_r.",".$col_g.",".$col_b.",".$trans.")";
}
$db = (is_resource($db)) ? $db : new MySQL();
$ajson = [];
$data = Param::Get("data");
if ( $data == "jual-chart" ) {
$agrup = [];
$db->Query("SELECT * FROM inv_produk_grup WHERE Aktif=1 ORDER BY Grup_InvID");
while ($db->Next()) $agrup[$db->Row("Grup_InvID")] = $db->Row("Kode_Grup");
$db->Query("SELECT A.*,P.Grup_InvID FROM (SELECT CONCAT(YEAR(Tgl_Ref),'-',LPAD(MONTH(Tgl_Ref),2,'0')) Thn_Bln,InvID,SUM(-Qty*Harga_Jual) Jumlah FROM inv_detail WHERE NotaID=5 AND Tgl_Ref>=(LAST_DAY((SELECT Tgl_Jual FROM inv_jual ORDER BY Tgl_Jual DESC LIMIT 1)) + INTERVAL 1 DAY - INTERVAL 6 MONTH) GROUP BY YEAR(Tgl_Ref),MONTH(Tgl_Ref),InvID) A LEFT JOIN inv_produk P ON (P.InvID=A.InvID) ORDER BY A.Thn_Bln,P.Grup_InvID");
$ajson['tipe'] = "chart";
$adata['datasets'] = [];
$adata['labels'] = ["Belum Ada Penjualan"];
if ($db->RecordCount()>0) {
$adata['labels'] = [];
}
$ajual = []; $abln = [];
while ($db->Next()){
$ajual[$db->Row("Grup_InvID")][$db->Row("Thn_Bln")] = $db->Row("Jumlah", 0) / 1000000;
if (!in_array($db->Row("Thn_Bln"), $abln, true)) array_push($abln, $db->Row("Thn_Bln"));
}
asort($abln);
foreach ($abln as $_val) {
$adata['labels'][] = bulan_array()[intval(explode("-",$_val)[1])];
}
foreach ($agrup as $id_grup => $n_grup) {
$atmp = [];
foreach ($abln as $_val) {
$atmp[] = $ajual[$id_grup][$_val] ?? 0;
}
$adata['datasets'][] = ['data'=>$atmp, 'label'=>$n_grup, 'backgroundColor'=>random_color(), 'datalabels'=>['align'=>"end", 'anchor'=>"end", 'color'=>"#36A2EB"]];
}
$ajson['chart'] = ['type' => "bar",
'data' => $adata,
'options' => [
'responsive' => true,
'aspectRatio' => 1.5,
'plugins' => [
'legend' => ['position' => "bottom"],
'title' => ['display' => true, 'font' => ['size' => 20, 'weight' => 'normal'], 'text' => 'Penjualan 6 Bulan Terakhir'],
'subtitle' => ['display' => true, 'position' => "top", 'text' => '(dalam jutaan)']
],
'scales' => ['y' => ['min' => 0, 'ticks' => ['stepSize' => 1], 'title' => ['display' => true, 'font' => ['size' => 16], 'text' => "Nilai Penjualan"]]],
'layout' => ['padding' => ['top' => 10]]
]
];
} else if ( $data == "default" ) {
$aapp = $_SESSION['__WEB_APP'];
$ajson['content'] = '
<div class="row">
<div class="col-sm-12 col-md-6 d-flex align-items-stretch">
<div class="card w-100 h-100"><div class="card-body d-flex flex-column" id="divHome1">
<div class="my-auto text-center"><img class="img-fluid" src="'.$aapp['WEB_PATH'].'assets/images/logo300.png" title="'.$aapp['REG_NAME'].'">
<p class="mt-2">'.$aapp['REG_ADDRESS'].'<br>
'.$aapp['REG_CITY'].' '.$aapp['REG_POSTCODE'].'</p>
<p class="mt-3 mb-3"><i>Register ID : '.Register::reg_id().'</i></p>
<p>'.$aapp['APP_NAMES'].'<br>'.$aapp['APP_NAME'].' Ver. '.$aapp['APP_VER'].'<br>
Updated : '.$aapp['APP_UPDATED'].'</p></div>
</div></div>
</div>
<div class="col-sm-12 col-md-6 d-flex align-items-stretch">
<div class="card w-100 h-100"><div class="card-body d-flex flex-column" id="divHome2">
<div class="chart-wrapper pb-2">
<canvas id="barChart"></canvas>
</div>
</div></div>
</div>
</div>
';
}
send_json($ajson);
?>
+72
View File
@@ -0,0 +1,72 @@
<?php
/*******************************************************************
Module : /apps/php/login.php
Desc. : PHP - Halaman Proses Login
Created By : Siau Pheng (siaupheng@3fonia.com).
Created Date : January 5th, 2008.
Last Modified : April 29th, 2022.
(c) 2008 - 2019, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../vendor/autoload.php");
use siaupheng\fonia3\DB\MySQL;
use siaupheng\fonia3\Web\Auth;
use siaupheng\fonia3\Web\Param;
$db = (is_resource($db)) ? $db : new MySQL();
$auth = new Auth($db);
$ajson = [];
$mode = Param::Get("mode");
$aapp = $_SESSION['__WEB_APP'];
if ($mode == "login") {
$auser = [];
$auth->set_id_reg($aapp['PARENT_CODE']);
if ($auth->user_check(Param::Get("Username"), Param::Get("Password"))) {
$auser = $auth->user_data(Param::Get("Username"));
$_appurl = $_GET['redir'];
if (!empty($_appurl)) {
$_redir = $auth->redirect($_appurl);
//jika kosong, tampilkan pesan redirect tidak diijinkan
//jika berisi, js harus redirect ...
}
$ajson['token'] = $_SESSION['APP_TOKEN'];
$ajson['hasil'] = "SUKSES";
$ajson['pesan'] = '<div class="border border-success p-2 pt-3"><h5>Login berhasil,</h5><p><b>'.$auser["Username"].'</b> / '.$auser["Nama"].'<br>'.$auser["Posisi"].'<br><i>login terakhir :</i><br>'.tgl_sql2str($auser["Last_Date"],true).'<br>'.$auser["Last_IP"].'</p></div>';
} else {
$ajson['hasil'] = "ERROR";
$ajson['pesan'] = "Periksa kembali ID Pengguna atau Password Anda ...";
}
} else if ($mode == "logout") {
$auth->logout();
foreach ($_SESSION as $_key => $_val) {
if (substr($_key,0,5)=="__WEB") unset($_SESSION[$_key]);
if (substr($_key,0,5)=="__APP") unset($_SESSION[$_key]);
}
require(__DIR__."/../cfg/app.php");
if ($_SERVER['SERVER_ADDR'] == "127.0.0.1") {
$_host = $_SESSION['__WEB_APP']['WEB_PATH']."../";
} else {
$_host = (isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : $_SESSION['__WEB_APP']['PARENT_SITE']);
$_host = str_replace(['http://','https://'], "", $_host);
if ($_SESSION['__WEB_APP']['PARENT_SUB'] == true) {
$_subs = explode('.', $_host);
if (count($_subs) > 2) array_shift($_subs);
$_host = implode('.', $_subs);
}
$_host = "//" . $_host;
}
$ajson['nexthost'] = $_host;
}
send_json($ajson);
?>

Some files were not shown because too many files have changed in this diff Show More