first commit

This commit is contained in:
2026-01-22 11:06:19 +07:00
commit c877faf5a0
168 changed files with 19843 additions and 0 deletions
+499
View File
@@ -0,0 +1,499 @@
<?php
/*******************************************************************
App. Name : INVENTORY AND SALES SYSTEMS
Module : /apps/php/iss/beli.php
Desc. : PHP - Transaksi Pembelian
Created By : Siau Pheng ([email protected]).
Created Date : May 22th, 2010.
Last Modified : October 19th, 2025.
(c) 2010 - 2025, 3FONIA Software; WWW.3FONIA.COM.
*******************************************************************/
require_once(__DIR__."/../../../../../vendor/autoload.php");
require_once(__DIR__."/../func.iss.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;
function Beli_Data1($nomor="", $baru=false) {
global $db;
$aparam = ['No_Beli'=>$nomor];
if (trim($nomor)=="") {
if ($baru) $aparam['No_Beli'] = "BELI".$_SESSION['__WEB_APP']['SERVER_ID'].$_SESSION['__APP_INV']['CABANGID'].user_id(3)."#00";
$aparam['Tgl_Beli'] = tgl_ymd();
$aparam['Tgl_Faktur'] = tgl_ymd();
$aparam['SupID'] = 0;
$aparam['CabID'] = $_SESSION['__APP_INV']['CABANGID'];
$aparam['Total_Beli'] = 0;
$aparam['Total_Hutang']= 0;
$aparam['Total_Bulat'] = 0;
} else {
$tabel_beli = (strpos($nomor,"BELI")===false) ? "inv_beli" : "inv_beli_pend";
$db->Query("SELECT * FROM ".$tabel_beli." WHERE No_Beli='".$nomor."'");
if ($db->Next()) $aparam = $db->AllRow();
}
return $aparam;
}
function Beli_Pending_Nomor1() {
global $db;
$tno = "BELI".$_SESSION['__WEB_APP']['SERVER_ID'].$_SESSION['__APP_INV']['CABANGID'].user_id(3)."#";
$ino = 0;
$db->Query("SELECT MAX(RIGHT(No_Beli,2)) Nomor FROM inv_beli_pend WHERE LEFT(No_Beli,".strlen($tno).")='".$tno."'");
if ($db->Next()) $ino = intval($db->Row("Nomor", 0));
$tno .= isi_nol(++$ino, 2);
return $tno;
}
$db = $db ?? new MySQL();
$ajson = [];
$data = Param::Get("data");
$mode = Param::Get("mode", "view");
$mode_detail = Param::Get("mode_detail");
$id_cab = Param::Get("CabID", $_SESSION['__APP_INV']['CABANGID']);
$nomor = Param::Get("No_Beli", "");
$is_pend = (strpos($nomor,"BELI")===false) ? false : true;
if ( $data == "master" ) {
$ajson = ['error'=>"", 'html'=>""];
$atabel = ['No_Beli'=>$nomor];
if ($mode == "pending-edit") {
Pending_Edit($nomor);
$atabel = Beli_Data1($nomor);
$mode = "edit";
} else if ($mode == "pending-save") {
$b_baru = false;
if (substr($nomor,-3)=="#00") {
$b_baru = true;
$no_lama = $nomor;
$nomor = Beli_Pending_Nomor1();
Pending_Save($no_lama, $nomor);
}
$apending = [];
$db->Query("SELECT SUM(Qty*Harga_Beli) Beli,SUM(Total_Diskon) Diskon FROM tmp_inv_detail WHERE No_Ref='".$nomor."'");
if ($db->Next()) $apending = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("inv_beli_pend");
$sql->add_param("No_Beli", $nomor);
$sql->add_param_date("Tgl_Beli");
$sql->add_param_date("Tgl_Faktur");
$sql->add_param("No_Faktur");
$sql->add_param("CabID");
$sql->add_param("SupID");
$sql->add_param("Total_Beli", $apending['Beli']);
$sql->add_param("Total_Diskon", $apending['Diskon']);
$sql->add_param("Total_Bulat");
$sql->add_param("Total_Hutang");
$sql->add_param_userid();
$sql->add_where("No_Beli", $nomor);
if ($b_baru) $sql->InsertDB();
else $sql->UpdateDB();
$atabel = Beli_Data1();
} else if ($mode == "pending-delete") {
Pending_Delete($nomor);
$db->Query("DELETE FROM inv_beli_pend WHERE No_Beli='".$nomor."'");
$atabel = Beli_Data1();
} else if ($mode == "add") {
$atabel = Beli_Data1("", true);
} else if ($mode == "edit") {
Detail_Copy($nomor, true);
$atabel = Beli_Data1($nomor);
} else if ($mode == "save") {
$no_lama = $nomor;
if ($is_pend) {
$nomor = Nomor_Baru("B", Param::Get("Tgl_Beli"), true);
if (substr($no_lama,-3)!="#00") $db->Query("DELETE FROM inv_beli_pend WHERE No_Beli='".$no_lama."'");
}
Detail_Save($nomor, 3, $id_cab, Param::Get("Tgl_Beli"), $is_pend, $no_lama);
$abeli = [];
$db->Query("SELECT SUM(Qty*Harga_Beli) Beli, SUM(Total_Diskon) Diskon FROM inv_detail WHERE No_Ref='".$nomor."'");
if ($db->Next()) $abeli = $db->AllRow();
$sql = new SQL($db);
$sql->set_table("inv_beli");
$sql->add_param_date("Tgl_Beli");
$sql->add_param_date("Tgl_Faktur");
$sql->add_param("No_Faktur");
$sql->add_param("CabID");
$sql->add_param("SupID");
$sql->add_param("Total_Beli", $abeli['Beli']);
$sql->add_param("Total_Diskon", $abeli['Diskon']);
$sql->add_param("Total_Bulat");
$sql->add_param("Total_Hutang");
$sql->add_param("Data_Beli", 1);
$sql->add_param_stamp();
$sql->add_param_userid();
$sql->add_where("No_Beli", $nomor);
$sql->UpdateDB();
Produk_Update($nomor, Param::Get("SupID"));
Update_Lunas_Sup(Param::Get("SupID"));
$atabel = Beli_Data1($nomor);
$mode = "view";
} else if ($mode == "cancel") {
if (substr($nomor,-3)=="#00" || substr($nomor,0,4)!="BELI") Detail_Cancel($nomor);
$atabel = Beli_Data1();
} else {
$atabel = Beli_Data1($nomor);
}
$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");
$ttglnota = $form->datebox("_", "Tgl_Beli", $atabel['Tgl_Beli'], $enable, true);
$ttglfaktur = $form->datebox("_", "Tgl_Faktur", $atabel['Tgl_Faktur'], $enable, true);
$tcab = $form->option_db("_", "CabID", $atabel['CabID'], $enable, false, "para_cabang", ["CabID","Nama_Cab"], "Aktif=1 ORDER BY Nama_Cab", [0,"&nbsp;"]);
$tsup = $form->option_db("_", "SupID", $atabel['SupID'], $enable, false, "para_supplier", ["SupID","Nama_Sup"], "Aktif=1 ORDER BY Nama_Sup", [0,"&nbsp;"]);
$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_Faktur">Tanggal Faktur</label>
<div class="col-sm-7 col-lg-5">'.$ttglfaktur.'</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="CabID">Nama Cabang</label>
<div class="col">'.$tcab.'</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" for="No_Faktur">Nomor Faktur</label>
<div class="col">'.$tfaktur.'</div>
</div>
</div>
</div>
<div class="row mb-1"><div class="col"><hr class="my-1"></div></div>
<input type="hidden" id="Total_Beli" value="'.$atabel['Total_Beli'].'" >
<input type="hidden" id="Total_Hutang" value="'.$atabel['Total_Hutang'].'" >
<input type="hidden" id="Total_Bulat" value="'.$atabel['Total_Bulat'].'" >
<input type="hidden" id="Lunas" value="'.$atabel['Lunas'].'" >
<input type="hidden" id="mode" value="'.$mode.'" >
';
} else if ( $data == "delete" ) {
if ($is_pend == false) {
$db->Query("DELETE FROM inv_beli WHERE No_Beli='".$nomor."'");
$db->Query("DELETE FROM inv_detail WHERE No_Ref='".$nomor."'");
} else {
$db->Query("DELETE FROM inv_beli_pend 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;
$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_Beli");
$sql->add_param("Disk_Rupiah");
$sql->add_param("Disk_Persen1");
$sql->add_param("Disk_Persen2");
$sql->add_param("Disk_Persen3");
$sql->add_param("Disk_Persen4");
$sql->add_param("Disk_Persen5");
$sql->add_param("Total_Diskon", "(Harga_Beli-((Harga_Beli-Disk_Rupiah)*((100.0-Disk_Persen1)/100)*((100.0-Disk_Persen2)/100)*((100.0-Disk_Persen3)/100)*((100.0-Disk_Persen4)/100)*((100.0-Disk_Persen5)/100)))*Qty", true);
$sql->add_param_unix();
$sql->add_param_userid();
$sql->add_where("ID");
$sql->add_where("No_Ref", $nomor);
$_id = Param::Get("ID", 0);
if ( $mode_detail == "insert" ) {
$sql->InsertDB();
$_id = $sql->LastInsertID();
} else if ( $mode_detail == "update" ) {
$sql->UpdateDB();
} else if ( $mode_detail == "delete" ) {
$sql->DeleteDB();
}
}
$qview = ""; $qtabel = "inv_detail";
if ($is_pend) $qtabel = "tmp_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.Kode_SKU,P.Nama_Lengkap,P.Nama_Satuan,P.Harga_Jual,(D.Qty*D.Harga_Beli)-D.Total_Diskon Total FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."' ".$qview.") D LEFT JOIN vi_inv_produk P ON (D.InvID=P.InvID AND D.SatuanID=P.SatuanID)");
$obj->set_query_footer("SELECT SUM((D.Qty*D.Harga_Beli)-D.Total_Diskon) Total,SUM(D.Total_Diskon) Total_Diskon FROM (SELECT * FROM ".$qtabel." WHERE No_Ref='".$nomor."' ".$qview.") D");
$obj->add_field("ID", "No", "c");
$obj->add_field("InvID", "InvID", "hid");
$obj->add_field("SatuanID", "SatuanID", "hid");
$obj->add_field("Kode_SKU", "SKU", "c");
$obj->add_field("Nama_Lengkap", "Nama Barang", "awr");
$obj->add_field("Qty", "Qty", "r", "rupiah2");
$obj->add_field("Harga_Beli", "Harga @", "r", "rupiah");
$obj->add_field("Total_Diskon", "Diskon", "r", "rupiah", "rupiah");
$obj->add_field("Total", "Jumlah", "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_btn("BeliJS.total_show", "Total");
$obj->set_func_navi("BeliJS.data_query('tabel-detail')");
$ajson[] = $obj->json_table("divDetailTabel");
$ntotal = 0;
$db->Query("SELECT SUM((D.Qty*D.Harga_Beli)-D.Total_Diskon) Jumlah FROM ".$qtabel." D WHERE D.No_Ref='".$nomor."' ".$qview);
if ($db->Next()) $ntotal = floatval($db->Row("Jumlah", 0));
$ajson[] = ['type'=>"form", 'id'=>"Total_Beli", 'value'=>$ntotal];
if (in_array($mode_detail, ["insert","update"])) {//WARNING: harga jual dibawah limit margin!!
$hbeli = 0;
$db->Query("SELECT CEIL((Harga_Beli-(Total_Diskon/Qty))/(Stok/Qty)) Pokok FROM tmp_inv_detail WHERE No_Ref='".$nomor."' AND ID='".$_id."'");
if ($db->Next()) $hbeli = $db->Row("Pokok", 0);
$db->Query("SELECT P.*,G.Margin FROM (SELECT Grup_InvID,Nama_Produk,CEIL(Harga_Jual/Qty) Harga_Jual FROM vi_inv_produk WHERE InvID='".Param::Get("InvID")."' AND Harga_Jual>0 ORDER BY Harga_Jual ASC LIMIT 1) P LEFT JOIN inv_produk_grup G ON (P.Grup_InvID=G.Grup_InvID)");
if ($db->Next()) {
if ($db->Row("Margin",0)>0) $hbeli += ($hbeli*($db->Row("Margin")/100));
if ($hbeli > $db->Row("Harga_Jual",0)) $ajson[] = ['type'=>"msg", 'mode'=>"error", 'wait'=>3000, 'value'=>"Produk \"".$db->Row("Nama_Produk")."\" Harga Beli telah melewati Margin / Harga Jual!"];
}
}
} else if ( $data == "brow-tx" ) {
$tcari = trim(Param::Get("Cari_TX"));
$tsql = ($tcari=="") ? "" : " CONCAT(B.No_Beli,B.No_Faktur,S.Nama_Sup,DATE_FORMAT(B.Tgl_Faktur,'%d-%m-%Y')) LIKE '%".$tcari."%'";
$obj = new Table($db);
$obj->set_table("(SELECT *,Total_Diskon+Total_Bulat Diskon FROM inv_beli WHERE Data_Beli=1) B LEFT JOIN para_supplier S ON (B.SupID=S.SupID)", "B.*,S.Nama_Sup", $tsql);
$obj->add_field("No_Beli", "No. Trans", "c");
$obj->add_field("Tgl_Faktur", "Tgl. Faktur", "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("Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total_Hutang", "Jumlah", "r", "rupiah");
$obj->set_field_order("No_Beli", "D");
$obj->add_row_btn("save", "Detail", "BeliJS.tx_select");
$obj->set_func_navi("BeliJS.data_query('brow-tx')");
$ajson[] = $obj->db_table("divBrowTX");
} else if ( $data == "brow-pending" ) {
$obj = new Table($db);
$obj->set_query("SELECT B.*,S.Nama_Sup FROM (SELECT *,Total_Diskon+Total_Bulat Diskon FROM inv_beli_pend WHERE UserID='".user_id()."') 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. Pending", "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("Diskon", "Diskon", "r", "rupiah");
$obj->add_field("Total_Hutang", "Jumlah", "r", "rupiah");
$obj->set_field_order("No_Beli", "D");
$obj->add_row_btn("save", "Pilih", "BeliJS.pending_select");
if (user_level(1)) $obj->add_row_btn("trash", "Hapus", "BeliJS.pending_delete", "UserID", user_id());
$obj->set_func_navi("BeliJS.data_query('brow-pending')");
$ajson[] = $obj->json_table("divBrowPending");
} else if ( $data == "brow-produk" ) {
$tcari = trim(Param::Get("Cari_Produk"));
$tsql = ($tcari <> "") ? " AND P.Barcode_Nama LIKE '%".$tcari."%'": "";
$tsql .= (Param::Get("Filter_Browse")=="all") ? "" : " AND S.SupID='".Param::Get("SupID")."'";
$obj = new Table($db);
$obj->set_table("vi_inv_produk P LEFT JOIN inv_produk_sup S ON (P.InvID=S.InvID)", "P.*", "P.Aktif=1".$tsql);
$obj->add_field("InvID", "ID", "hid");
$obj->add_field("SatuanID", "ID", "hid");
$obj->add_field("Kode_SKU", "SKU", "c");
$obj->add_field("Nama_Lengkap", "Nama Barang", "awr");
$obj->add_field("Harga_Jual", "Harga @", "r", "rupiah");
$obj->set_field_order("Kode_SKU", "A");
$obj->add_row_btn("save", "Pilih", "BeliJS.produk_select");
$obj->set_func_navi("BeliJS.data_query('brow-produk')");
$ajson[] = $obj->db_table("divBrowProduk");
} else if ( $data == "auto-produk" ) {
$tcari = Param::Get("Auto_Query");
$ajson['autodata'] = [];
$bcode = 0; $arec = [];
// Cari by SKU
$db->Query("SELECT K.InvID,P.Nama_Produk,CONCAT(K.SatuanID,':',S.Nama_Satuan,':',P.Nama_Produk,' ',S.Nama_Satuan,':',CONVERT(K.Harga_Jual USING UTF8)) Data2 FROM (SELECT * FROM inv_produk_kemasan WHERE Kode_SKU='".$tcari."' LIMIT 1) K LEFT JOIN inv_produk P ON (P.InvID=K.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=K.SatuanID) WHERE P.Aktif=1");
if ($db->Next()) {
$bcode = 1;
$arec = $db->AllRow();
}
// Cari by Barcode
if ($bcode == 0) {
$db->Query("SELECT K.InvID,P.Nama_Produk,CONCAT(K.SatuanID,':',S.Nama_Satuan,':',P.Nama_Produk,' ',S.Nama_Satuan,':',CONVERT(K.Harga_Jual USING UTF8)) Data2 FROM (SELECT * FROM inv_produk_kemasan WHERE Kode_Barcode='".$tcari."' LIMIT 1) K LEFT JOIN inv_produk P ON (P.InvID=K.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=K.SatuanID) WHERE P.Aktif=1");
if ($db->Next()) {
$bcode = 1;
$arec = $db->AllRow();
}
}
if ($bcode == 1) {
$ajson['autodata'][] = ['value'=>$arec['InvID'], 'text'=>$arec['Nama_Produk'], 'data'=>$arec['Data2'], 'bc'=>1];
} else {
$db->Query("SELECT P.*,K.Kode_SKU,K.Harga_Jual,S.Nama_Satuan,CONCAT(K.SatuanID,':',S.Nama_Satuan,':',P.Nama_Produk,' ',S.Nama_Satuan,':',K.Harga_Jual) Data2 FROM (SELECT * FROM inv_produk_kemasan WHERE InvID IN (SELECT InvID FROM inv_produk WHERE Aktif=1 AND Nama_Produk LIKE '%".$tcari."%' ORDER BY InvID) ORDER BY InvID) K LEFT JOIN (SELECT * FROM inv_produk WHERE Aktif=1 AND Nama_Produk LIKE '%".$tcari."%' ORDER BY InvID) P ON (K.InvID=P.InvID) LEFT JOIN vi_inv_stok X ON (X.CabID='".$id_cab."' AND K.InvID=X.InvID) LEFT JOIN para_satuan S ON (S.SatuanID=K.SatuanID) ORDER BY P.Nama_Produk,K.Qty DESC LIMIT 50");
while ($db->Next()) {
$ajson['autodata'][] = ['value'=>$db->Row("InvID"), 'text'=>$db->Row("Nama_Produk"), 'html'=>'<span class="text-primary">'.$db->Row("Kode_SKU").'</span> '.$db->Row("Nama_Produk")." ".$db->Row("Nama_Satuan").' - Rp. '.rupiah($db->Row("Harga_Jual")), 'data'=>$db->Row("Data2"), 'bc'=>0];
}
}
} 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();
}
if ($atabel['InvID']>0 && $atabel['SatuanID']>0) {
$db->Query("SELECT Nama_Produk,Nama_Satuan FROM vi_inv_produk 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");
$tbeli = $form->textbox("_", "Harga_Beli", $atabel['Harga_Beli'], true, true, "double");
$tdisrp = $form->textbox("_", "Disk_Rupiah", $atabel['Disk_Rupiah'], true, true, "double");
$tdis1 = $form->textbox("_", "Disk_Persen1", $atabel['Disk_Persen1'], true, true, "double");
$tdis2 = $form->textbox("_", "Disk_Persen2", $atabel['Disk_Persen2'], true, true, "double");
$tdis3 = $form->textbox("_", "Disk_Persen3", $atabel['Disk_Persen3'], true, true, "double");
$tdis4 = $form->textbox("_", "Disk_Persen4", $atabel['Disk_Persen4'], true, true, "double");
$tdis5 = $form->textbox("_", "Disk_Persen5", $atabel['Disk_Persen5'], true, true, "double");
$ttot_dis = $form->textbox("_", "Total_Diskon", 0, false, false, "double");
$tjual = $form->textbox("_", "Harga_Jual", 0, false, false, "double");
$ttot = $form->textbox("_", "Jumlah", 0, false, 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-2 col-form-label" for="Nama_Produk">Nama Barang</label>
<div class="col">'.$tnama.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label" for="Qty">Qty</label>
<div class="col-sm-4 col-lg-5"><div class="input-group">'.$tqty.$tsat.'</div></div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label" for="Harga_Beli">Harga (@)</label>
<div class="col-sm-4 col-lg-5">'.$tbeli.'</div>
<div class="col-sm-4 col-lg-5"><div class="input-group"><span class="input-group-text">Harga Jual @</span>'.$tjual.'</div></div>
</div>
<hr class="my-1">
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label" for="Disk_Rupiah">Diskon Rupiah</label>
<div class="col-sm-4 col-lg-5">'.$tdisrp.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label">Diskon Persen</label>
<div class="col-sm-4 col-lg-3"><div class="input-group"><span class="input-group-text">1</span>'.$tdis1.'<span class="input-group-text">%</span></div></div>
<div class="col-sm-4 col-lg-3"><div class="input-group"><span class="input-group-text">4</span>'.$tdis4.'<span class="input-group-text">%</span></div></div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label">&nbsp;</label>
<div class="col-sm-4 col-lg-3"><div class="input-group"><span class="input-group-text">2</span>'.$tdis2.'<span class="input-group-text">%</span></div></div>
<div class="col-sm-4 col-lg-3"><div class="input-group"><span class="input-group-text">5</span>'.$tdis5.'<span class="input-group-text">%</span></div></div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label">&nbsp;</label>
<div class="col-sm-4 col-lg-3"><div class="input-group"><span class="input-group-text">3</span>'.$tdis3.'<span class="input-group-text">%</span></div></div>
<div class="col-sm-4 col-lg-3">'.Form_Info("Silakan masukkan -10 pada Diskon 5, jika ada PPN.").'</div>
</div>
<hr class="my-1">
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 col-form-label">Diskon</label>
<div class="col-sm-4 col-lg-5">'.$ttot_dis.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-4 col-lg-2 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 == "detail-item" ) {
$ajson['data'] = "kosong";
$db->Query("SELECT D.* FROM inv_detail D LEFT JOIN inv_beli B ON (D.No_Ref=B.No_Beli) WHERE B.Data_Beli=1 AND D.InvID='".Param::Get("InvID")."' ORDER BY D.Tgl_Ref DESC LIMIT 1");
if ($db->Next()) $ajson = $db->AllRow();
if (Param::Get("SatuanID",0) <> $ajson['SatuanID']) {
$_bagi = 1;
$db->Query("SELECT A.Qty/B.Qty Bagi FROM (SELECT InvID,Qty FROM inv_produk_kemasan WHERE InvID=".Param::Get("InvID")." AND SatuanID=".$ajson['SatuanID']."' LIMIT 1) A LEFT JOIN (SELECT InvID,Qty FROM inv_produk_kemasan WHERE InvID=".Param::Get("InvID")." AND SatuanID='".Param::Get("SatuanID",0)."' LIMIT 1) B ON (A.InvID=B.InvID)");
if ($db->Next()) $_bagi = $db->Row("Bagi", 1);
$ajson['Harga_Beli'] /= $_bagi;
$ajson['Disk_Rupiah'] /= $_bagi;
}
} else if ($data == "detail-total") {
$form = new Form($db);
$tbulat = $form->textbox("_", "popTotal_Bulat", 0, true, false, "double");
$thutang = $form->textbox("_", "popTotal_Hutang", 0, true, false, "double");
$ajson['html'] = '
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="popTotal_Bulat">Diskon Akhir<br>Pembulatan (+/-)</label>
<div class="col">'.$tbulat.'</div>
</div>
<div class="row mb-1">
<label class="col-sm-6 col-lg-4 col-form-label" for="popTotal_Hutang">Total Hutang</label>
<div class="col">'.$thutang.'</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 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-info mb-1 ms-2" id="butPendingBrow" type="button"><i class="bi-cloud me-2"></i>Pending</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-warning mb-1 ms-2" id="butPendingSimpan" type="button"><i class="bi-cloud-upload me-2"></i>Simpan Pending</button>
<button class="btn btn-success mb-1 ms-2" id="butSimpan" type="button"><i class="bi-save 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);
?>