169 lines
6.9 KiB
PHP
169 lines
6.9 KiB
PHP
<?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>';
|
|
}
|
|
|
|
?>
|