= 0; $i--) { $sum += (int)$code[$i] * ($bflag?3:1); $bflag = !$bflag; } $code .= (10 - ($sum % 10)) % 10; return $code; } function SKU_Baru($id_grup = 0) { global $fdb; $tno = "00"; $ino = 0; $fdb->Query("SELECT Kode_Grup FROM inv_produk_grup WHERE Grup_InvID='".$id_grup."' LIMIT 1");; if ($fdb->Next()) $tno = isi_nol($fdb->Row("Kode_Grup", "00"), 2); $fdb->Query("SELECT MAX(MID(Kode_SKU,3,5)) SKU FROM inv_produk_kemasan WHERE LEFT(Kode_SKU,2)='".$tno."'"); if ($fdb->Next()) $ino = intval($fdb->Row("SKU", 0)); return genEAN8($tno, ++$ino); } /************************* POS *************************/ function Nomor_POS_Baru($tgl = "", $save = false) { global $fdb; $tno = $_SESSION['__APP_INV']['KD_POS'] . date("y") . abjad(date("n")); if ($tgl <> "") { $tmp = explode("-", $tgl); $tno = $_SESSION['__APP_INV']['KD_POS'] . substr($tmp[2],2,2) . abjad(intval($tmp[1])); } $tno .= $_SESSION['__WEB_APP']['SERVER_ID']; $ino = 0; $fdb->Query("SELECT MAX(RIGHT(No_Jual,5)) Nomor FROM inv_jual WHERE LEFT(No_Jual,".strlen($tno).")='".$tno."'"); if ($fdb->Next()) $ino = intval($fdb->Row("Nomor", 0)); $tno .= isi_nol(++$ino, 5); if ($save == true) $fdb->Query("INSERT INTO inv_jual SET No_Jual='".$tno."'"); return $tno; } function Nomor_Baru($tipe = "B", $tgl = "", $save = false) { global $fdb; $atipe = ['O'=>["No_Opname","inv_opname"],'M'=>["No_Mutasi","inv_mutasi"],'B'=>["No_Beli","inv_beli"],'R'=>["No_Beli","inv_beli"],'P'=>["No_PO","inv_po"]]; $tno = $tipe . date("y") . abjad(date("n")); if ($tgl <> "") { $tmp = explode("-", $tgl); $tno = $tipe . substr($tmp[2],2,2) . abjad(intval($tmp[1])); } $tno .= $_SESSION['__WEB_APP']['SERVER_ID']; $ino = 0; $fdb->Query("SELECT MAX(RIGHT(".$atipe[$tipe][0].",4)) Nomor FROM ".$atipe[$tipe][1]." WHERE LEFT(".$atipe[$tipe][0].",".strlen($tno).")='".$tno."'"); if ($fdb->Next()) $ino = intval($fdb->Row("Nomor", 0)); $tno .= isi_nol(++$ino, 4); if ($save == true) $fdb->Query("INSERT INTO ".$atipe[$tipe][1]." SET ".$atipe[$tipe][0]."='".$tno."'"); return $tno; } function Detail_Copy($no_ref = "", $bunix = false, $ismutasi = false) { global $fdb; if ($no_ref == "") return; Detail_Cancel($no_ref); $tsql = ($ismutasi == false) ? "" : " AND Qty>0"; $fdb->Query("INSERT INTO tmp_inv_detail (No_Ref,ID,NotaID,CabID,Tgl_Ref,InvID,SatuanID,Qty,Stok,Harga_Beli,Harga_Jual,Disk_Rupiah,Disk_Persen1,Disk_Persen2,Disk_Persen3,Disk_Persen4,Disk_Persen5,Total_Diskon,Promo,UserID,Unix) SELECT No_Ref,ID,NotaID,CabID,Tgl_Ref,InvID,SatuanID,Qty,Stok,Harga_Beli,Harga_Jual,Disk_Rupiah,Disk_Persen1,Disk_Persen2,Disk_Persen3,Disk_Persen4,Disk_Persen5,Total_Diskon,Promo,UserID,'".(($bunix)?user_unix():0)."' FROM inv_detail WHERE No_Ref='".$no_ref."'".$tsql); } function Detail_Save($no_ref = "", $id_nota = 0, $id_cab = 0, $stgl = "", $is_baru = false, $no_lama = "", $ismutasi = false, $id_cab2 = 0) { global $fdb; if ($no_ref == "") return; $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,NotaID,CabID,Tgl_Ref,InvID,SatuanID,Qty,Stok,Harga_Beli,Harga_Jual,Disk_Rupiah,Disk_Persen1,Disk_Persen2,Disk_Persen3,Disk_Persen4,Disk_Persen5,Total_Diskon,Promo,UserID) SELECT No_Ref,ID,'".$id_nota."','".$id_cab."','".$qtgl."',InvID,SatuanID,Qty,Stok,Harga_Beli,Harga_Jual,Disk_Rupiah,Disk_Persen1,Disk_Persen2,Disk_Persen3,Disk_Persen4,Disk_Persen5,Total_Diskon,Promo,UserID FROM tmp_inv_detail WHERE No_Ref='".$no_ref."'"); if ($ismutasi == true) $fdb->Query("INSERT INTO inv_detail (No_Ref,NotaID,CabID,Tgl_Ref,InvID,SatuanID,Qty,Stok,Harga_Beli,Harga_Jual,Disk_Rupiah,Disk_Persen1,Disk_Persen2,Disk_Persen3,Disk_Persen4,Disk_Persen5,Total_Diskon,Promo,UserID) SELECT No_Ref,'".$id_nota."','".$id_cab2."','".$qtgl."',InvID,SatuanID,-Qty,-Stok,Harga_Beli,Harga_Jual,Disk_Rupiah,Disk_Persen1,Disk_Persen2,Disk_Persen3,Disk_Persen4,Disk_Persen5,Total_Diskon,Promo,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."'"); $fdb->Query("DELETE FROM tmp_inv_detail_lain WHERE No_Ref='".$no_ref."'"); } /************************* TRANSAKSI PENDING *************************/ function Pending_Edit($nomor = "") { global $fdb; $fdb->Query("UPDATE tmp_inv_detail SET Unix='".user_unix()."' WHERE No_Ref='".$nomor."'"); } function Pending_Save($no_lama = "", $no_baru = "") { global $fdb; $fdb->Query("UPDATE tmp_inv_detail SET No_Ref='".$no_baru."' WHERE No_Ref='".$no_lama."' AND Unix='".user_unix()."'"); } function Pending_Delete($nomor = "") { global $fdb; $fdb->Query("DELETE FROM tmp_inv_detail WHERE No_Ref='".$nomor."'"); } /************************* TRANSAKSI KAS *************************/ function Nomor_Kas_Baru($tipe = "K", $tgl = "", $save = false) { global $fdb; $atipe = array('K'=>array("No_Kas","gel_kas"),'G'=>array("No_Gaji","gel_gaji")); $tno = $tipe . date("y") . abjad(date("n")); if ($tgl <> "") { $tmp = explode("-", $tgl); $tno = $tipe . substr($tmp[2],2,2) . abjad(intval($tmp[1])); } $tno .= $_SESSION['__WEB_APP']['SERVER_ID']; $ino = 0; $fdb->Query("SELECT MAX(RIGHT(".$atipe[$tipe][0].",4)) Nomor FROM ".$atipe[$tipe][1]." WHERE LEFT(".$atipe[$tipe][0].",".strlen($tno).")='".$tno."'"); if ($fdb->Next()) $ino = $fdb->RowFloat("Nomor", 0); $tno .= isi_nol($ino+1, 4); if ($save == true) $fdb->Query("INSERT INTO ".$atipe[$tipe][1]." SET ".$atipe[$tipe][0]."='".$tno."'"); return $tno; } /************************* PROMO *************************/ function Promo_Baru() { global $fdb; $ino = 1; $fdb->Query("SELECT MAX(PromoID)+1 Nomor FROM inv_promo"); if ($fdb->Next()) $ino = $fdb->RowFloat("Nomor", 1); return $ino; } function Promo_Hapus($no_nota="", $tgl_nota="") { global $fdb; $tdb = new MySQL(); if ($no_nota=="") return false; $tgl_nota = ($tgl_nota=="") ? tgl_ymd() : tgl_sql2str($tgl_nota);//YYYY-MM-DD $fdb->Query("SELECT * FROM inv_detail WHERE No_Ref='".$no_nota."' AND Promo IN (1,2,3)"); while ($fdb->Next()) { $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses-'".abs($fdb->Row("Qty"))."' WHERE Promo_InvID='".$fdb->Row("InvID")."' AND Promo_SatuanID='".$fdb->Row("SatuanID")."' AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo='".$fdb->Row("Promo")."' AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."' ORDER BY PromoID DESC LIMIT 1"); } unset($tdb); } function Promo_Barang($no_nota="", $tgl_nota="") { global $fdb; $tdb = new MySQL(); if ($no_nota=="") return false; $tgl_nota = ($tgl_nota=="") ? tgl_ymd() : tgl_sql2str($tgl_nota);//YYYY-MM-DD $apromo = []; $fdb->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND Promo IN (1,2)"); while ($fdb->Next()) { $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses-'".abs($fdb->Row("Qty"))."' WHERE Promo_InvID='".$fdb->Row("InvID")."' AND Promo_SatuanID='".$fdb->Row("SatuanID")."' AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo='".$fdb->Row("Promo")."' AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."' ORDER BY PromoID DESC LIMIT 1"); if ($fdb->Row("Promo")==1) $tdb->Query("UPDATE tmp_inv_detail SET Disk_Rupiah=0,Total_Diskon=0,Promo=0 WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND ID='".$fdb->Row("ID")."'"); if ($fdb->Row("Promo")==2) $tdb->Query("DELETE FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND ID='".$fdb->Row("ID")."'"); } $fdb->Query("SELECT *,(Jumlah_Promo-Jumlah_Proses) Jumlah_Sisa FROM inv_promo WHERE Aktif=1 AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo IN (1,2) AND (Jumlah_Promo-Jumlah_Proses)>0 AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."' AND CONCAT(InvID,':',SatuanID) IN (SELECT CONCAT(InvID,':',SatuanID) FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."') ORDER BY PromoID DESC"); if ($fdb->RecordCount()==0) return false; while ($fdb->Next()) $apromo[] = $fdb->AllRow(); $aitem_promo = []; foreach($apromo as $_key => $val) { if (in_array($val['InvID'].":".$val['SatuanID'], $aitem_promo)) continue; $adetail = []; $aitem = []; $fdb->Query("SELECT COUNT(*) Item,SUM(-Qty) Qty,ID FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND InvID='".$val['InvID']."' AND SatuanID='".$val['SatuanID']."' ORDER BY ID"); if ($fdb->Next()) $adetail = $fdb->AllRow(); $fdb->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND InvID='".$val['InvID']."' AND SatuanID='".$val['SatuanID']."' AND ID='".$adetail['ID']."'"); if ($fdb->Next()) $aitem = $fdb->AllRow(); if ($val['Tipe_Promo']==1) {//1 potongan diskon $bpromo = false; if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit $bpromo = true; $qty_promo = ($adetail['Qty']<=$val['Jumlah_Sisa']) ? $adetail['Qty'] : $val['Jumlah_Sisa']; } else if ($val['Pilih_Qty']==2 && $val['Qty_Kali']<=$adetail['Qty']) {//kelipatan $bpromo = true; $qty_promo = floor($adetail['Qty']/$val['Qty_Kali']); $qty_promo = ($qty_promo<=$val['Jumlah_Sisa']) ? $qty_promo : $val['Jumlah_Sisa']; } if ($bpromo == true) { if ($adetail['Item']>1) {//hapus duplikasi $tdb->Query("DELETE FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND InvID='".$val['InvID']."' AND SatuanID='".$val['SatuanID']."' AND ID<>'".$adetail['ID']."'"); } $istok = $aitem['Stok'] / $aitem['Qty']; if ($qty_promo==$adetail['Qty']) { $aitem['Qty'] = $qty_promo * -1; $aitem['Stok'] = $qty_promo * $istok * -1; $aitem['Disk_Rupiah'] = $val['Promo_Disc']; $aitem['Total_Diskon'] = $qty_promo * $val['Promo_Disc']; $aitem['Promo'] = 1; fastUpdate("tmp_inv_detail", $aitem, array("No_Ref","Unix","ID")); } else { $adisc = $aitem; $aitem['Qty'] = ($adetail['Qty']-$qty_promo) * -1; $aitem['Stok'] = ($adetail['Qty']-$qty_promo) * $istok * -1; fastUpdate("tmp_inv_detail", $aitem, ["No_Ref","Unix","ID"]); $adisc['Qty'] = $qty_promo * -1; $adisc['Stok'] = $qty_promo * $istok * -1; $adisc['Disk_Rupiah'] = $val['Promo_Disc']; $adisc['Total_Diskon'] = $qty_promo * $val['Promo_Disc']; $adisc['Promo'] = 1; unset($adisc['ID']); fastInsert("tmp_inv_detail", $adisc); } $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses+".$qty_promo." WHERE PromoID='".$val['PromoID']."'"); } } else {//2 promo barang $bpromo = false; if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit $bpromo = true; $qty_promo = ($val['Promo_Qty']<=$val['Jumlah_Sisa']) ? $val['Promo_Qty'] : $val['Jumlah_Sisa']; } else if ($val['Pilih_Qty']==2 && $val['Qty_Kali']<=$adetail['Qty']) {//kelipatan $bpromo = true; $qty_promo = floor($adetail['Qty']/$val['Qty_Kali']) * $val['Promo_Qty']; $qty_promo = ($qty_promo<=$val['Jumlah_Sisa']) ? $qty_promo : $val['Jumlah_Sisa']; } if ($bpromo == true && $qty_promo>0) { $fdb->Query("SELECT P.InvID,P.SatuanID,P.Qty,P.Harga_Pokok,P.Harga_Jual FROM vi_inv_produk P WHERE P.InvID='".$val['Promo_InvID']."' AND P.SatuanID='".$val['Promo_SatuanID']."' LIMIT 1"); if ($fdb->Next()) { $aitem['InvID'] = $val['Promo_InvID']; $aitem['SatuanID'] = $val['Promo_SatuanID']; $aitem['Qty'] = $qty_promo * -1; $aitem['Stok'] = $qty_promo * $fdb->Row("Qty", 1) * -1; $aitem['Harga_Beli'] = $fdb->Row("Harga_Pokok", 0); $aitem['Harga_Jual'] = $fdb->Row("Harga_Jual", 0); $aitem['Disk_Rupiah'] = $aitem['Harga_Jual']; $aitem['Total_Diskon'] = $qty_promo * $aitem['Harga_Jual']; $aitem['Promo'] = 2; unset($aitem['ID']); fastInsert("tmp_inv_detail", $aitem); } $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses+".$qty_promo." WHERE PromoID='".$val['PromoID']."'"); } } $aitem_promo[] = $val['InvID'].":".$val['SatuanID']; } unset($tdb); } function Promo_Total($no_nota="", $tgl_nota="") { global $fdb; $tdb = new MySQL(); if ($no_nota=="") return false; $tgl_nota = ($tgl_nota=="") ? tgl_ymd() : tgl_sql2str($tgl_nota);//YYYY-MM-DD $apromo = []; $fdb->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND Promo IN (3,4)"); while ($fdb->Next()) { $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses-'".abs($fdb->Row("Qty"))."' WHERE Promo_InvID='".$fdb->Row("InvID")."' AND Promo_SatuanID='".$fdb->Row("SatuanID")."' AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo='".$fdb->Row("Promo")."' AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."'"); if ($fdb->Row("Promo")==3) $tdb->Query("DELETE FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND ID='".$fdb->Row("ID")."'"); } $fdb->Query("SELECT *,(Jumlah_Promo-Jumlah_Proses) Jumlah_Sisa FROM inv_promo WHERE Aktif=1 AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo IN (3,4) AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."' ORDER BY Jual_Min DESC"); if ($fdb->RecordCount()==0) return false; while ($fdb->Next()) $apromo[] = $fdb->AllRow(); $tot_potong = 0; foreach($apromo as $_key => $val) { $tot_jual = 0; $tdb->Query("SELECT SUM((-D.Qty*D.Harga_Jual)+D.Total_Diskon) Total FROM tmp_inv_detail D LEFT JOIN (SELECT P.InvID,P.Grup_InvID FROM inv_produk P WHERE P.Grup_InvID IN (".$val['Jual_Grup'].")) P ON (P.InvID=D.InvID) WHERE D.No_Ref='".$no_nota."' AND D.Unix='".user_unix()."' AND P.Grup_InvID IN (".$val['Jual_Grup'].")"); if ($tdb->Next()) $tot_jual = $tdb->RowFloat("Total", 0); if ($tot_jual < $val['Jual_Min']) continue; if ($val['Tipe_Promo']==4) {//4 potongan diskon $tot_potong += $val['Promo_Jual']; } else {//3 promo barang $qty_promo = ($val['Promo_Qty']<=$val['Jumlah_Sisa']) ? $val['Promo_Qty'] : $val['Jumlah_Sisa']; if ($qty_promo == 0) continue; $adisc = []; $fdb->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' LIMIT 1"); if ($fdb->Next()) $adisc = $fdb->AllRow(); $fdb->Query("SELECT P.InvID,P.SatuanID,P.Qty,P.Harga_Pokok,P.Harga_Jual FROM vi_inv_produk P WHERE P.InvID='".$val['Promo_InvID']."' AND P.SatuanID='".$val['Promo_SatuanID']."' LIMIT 1"); if ($fdb->Next()) { $adisc['InvID'] = $val['Promo_InvID']; $adisc['SatuanID'] = $val['Promo_SatuanID']; $adisc['Qty'] = $qty_promo * -1; $adisc['Stok'] = $qty_promo * $fdb->Row("Qty", 1) * -1; $adisc['Harga_Beli'] = $fdb->Row("Harga_Pokok", 0); $adisc['Harga_Jual'] = $fdb->Row("Harga_Jual", 0); $adisc['Disk_Rupiah'] = $fdb->Row("Harga_Jual", 0); $adisc['Total_Diskon'] = $qty_promo * $fdb->Row("Harga_Jual", 0); $adisc['Promo'] = 3; unset($adisc['ID']); $tdb->Query("DELETE FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND InvID='".$val['Promo_InvID']."' AND SatuanID='".$val['Promo_SatuanID']."' AND Qty='".($qty_promo * -1)."' AND Promo IN (0,3)"); fastInsert("tmp_inv_detail", $adisc); } $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses+".$qty_promo." WHERE PromoID='".$val['PromoID']."'"); } //break;//todo: pastikan jika beda group barang di pisahkan!! } unset($tdb); return $tot_potong; } function Promo_Hitung($no_nota="", $tgl_nota="") { global $fdb; $tdb = new MySQL(); if ($no_nota=="") return false; $tgl_nota = ($tgl_nota=="") ? tgl_ymd() : tgl_sql2str($tgl_nota);//YYYY-MM-DD $tot_promo = 0; $apromo = []; $fdb->Query("SELECT *,(Jumlah_Promo-Jumlah_Proses) Jumlah_Sisa FROM inv_promo WHERE Aktif=1 AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo=1 AND (Jumlah_Promo-Jumlah_Proses)>0 AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."' AND CONCAT(InvID,':',SatuanID) IN (SELECT CONCAT(InvID,':',SatuanID) FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND Promo NOT IN (2,3))"); if ($fdb->RecordCount()>0) { while ($fdb->Next()) $apromo[] = $fdb->AllRow(); $aitem_promo = []; foreach($apromo as $_key => $val) { if (in_array($val['InvID'].":".$val['SatuanID'], $aitem_promo)) continue; $adetail = []; $fdb->Query("SELECT COUNT(*) Item,SUM(-Qty) Qty,ID FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND InvID='".$val['InvID']."' AND SatuanID='".$val['SatuanID']."' ORDER BY ID"); if ($fdb->Next()) $adetail = $fdb->AllRow(); $bpromo = false; if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit $bpromo = true; $qty_promo = ($adetail['Qty']<=$val['Jumlah_Sisa']) ? $adetail['Qty'] : $val['Jumlah_Sisa']; } else if ($val['Pilih_Qty']==2 && $val['Qty_Kali']<=$adetail['Qty']) {//kelipatan $bpromo = true; $qty_promo = floor($adetail['Qty']/$val['Qty_Kali']); $qty_promo = ($qty_promo<=$val['Jumlah_Sisa']) ? $qty_promo : $val['Jumlah_Sisa']; } $tot_promo += ($bpromo == true) ? ($qty_promo * $val['Promo_Disc']) : 0; $aitem_promo[] = $val['InvID'].":".$val['SatuanID']; } } $apromo = []; $fdb->Query("SELECT *,(Jumlah_Promo-Jumlah_Proses) Jumlah_Sisa FROM inv_promo WHERE Aktif=1 AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo=4 AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."' ORDER BY Jual_Min DESC"); if ($fdb->RecordCount()>0) { while ($fdb->Next()) $apromo[] = $fdb->AllRow(); foreach($apromo as $_key => $val) { $tot_jual = 0; $tdb->Query("SELECT SUM((-D.Qty*D.Harga_Jual)+D.Total_Diskon) Total FROM tmp_inv_detail D LEFT JOIN (SELECT P.InvID,P.Grup_InvID FROM inv_produk P WHERE P.Grup_InvID IN (".$val['Jual_Grup'].")) P ON (P.InvID=D.InvID) WHERE D.No_Ref='".$no_nota."' AND D.Unix='".user_unix()."' AND P.Grup_InvID IN (".$val['Jual_Grup'].")"); if ($tdb->Next()) $tot_jual = $tdb->RowFloat("Total", 0); if ($tot_jual < $val['Jual_Min']) continue; $tot_promo += $val['Promo_Jual']; break; } } unset($tdb); return $tot_promo; } function Promo_Nota_Hapus($no_nota="") { global $fdb; if ($no_nota=="") return false; $ajual = []; $fdb->Query("SELECT * FROM inv_jual WHERE No_Jual='".$no_nota."' LIMIT 1"); if ($fdb->Next()) $ajual = $fdb->AllRow(); if (($ajual['PromoNotaID'] ?? 0) > 0) { $fdb->Query("UPDATE inv_promo_nota SET Jumlah_Proses=Jumlah_Proses-1 WHERE PromoNotaID='".$ajual['PromoNotaID']."' LIMIT 1"); } } function Promo_Nota_Proses($no_nota="", $tgl_nota="") { global $fdb; if ($no_nota=="") return false; $tgl_nota = ($tgl_nota=="") ? tgl_ymd() : tgl_sql2str($tgl_nota);//YYYY-MM-DD $apromo = []; $fdb->Query("SELECT *,(Jumlah_Promo-Jumlah_Proses) Jumlah_Sisa FROM inv_promo_nota WHERE Aktif=1 AND CabID IN (0,'".$_SESSION['__APP_INV']['CABANGID']."') AND Tipe_Promo=1 AND (Jumlah_Promo-Jumlah_Proses)>0 AND Tgl_Mulai<='".$tgl_nota."' AND Tgl_Akhir>='".$tgl_nota."' ORDER BY Jual_Min ASC LIMIT 1"); if ($fdb->Next()) $apromo = $fdb->AllRow(); if (count($apromo) > 0) { $ajual = []; $fdb->Query("SELECT * FROM inv_jual WHERE No_Jual='".$no_nota."' LIMIT 1"); if ($fdb->Next()) $ajual = $fdb->AllRow(); if ($apromo['Jual_Min'] <= $ajual['Total_Jual']) { $bpromo = true; if ($apromo['Jual_Grup'] <> "") { $tot_jual = 0; $fdb->Query("SELECT SUM((-Qty*Harga_Jual)+Total_Diskon) Total FROM inv_detail WHERE No_Ref='".$no_nota."' AND InvID IN (SELECT InvID FROM inv_produk WHERE Grup_InvID IN (".($apromo['Jual_Grup']??"0")."))"); if ($fdb->Next()) $tot_jual = $fdb->RowFloat("Total", 0); if ($tot_jual < $val['Jual_Min']) $bpromo = false; } if ($bpromo == true) { $fdb->Query("UPDATE inv_jual SET PromoNotaID='".$apromo['PromoNotaID']."' WHERE No_Jual='".$no_nota."' LIMIT 1"); $fdb->Query("UPDATE inv_promo_nota SET Jumlah_Proses=Jumlah_Proses+1 WHERE PromoNotaID='".$apromo['PromoNotaID']."' LIMIT 1"); } } } } /************************* FORMAT TAMPILAN DATA *************************/ function Report_Header($tlapor="", $tperiod="") { $thasil = '
'.strtoupper($_SESSION['__WEB_APP']['REG_NAME']); $thasil .= (($tlapor=="") ? "" : '
'.$tlapor) . '
'; $thasil .= ($tperiod=="") ? "" : '
'.$tperiod.''; $thasil .= '

'; 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):""); } 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; } /************************* DATA MANIPULATION FUNCTION *************************/ function fastQuery($qry = "", $defval = "") { global $fdb; if ($qry=="") return false; $fdb->Query($qry); if (!$fdb->Next()) { if ($defval!=="") return $defval; return true; } $tmp_value = array_values($fdb->AllRow()); $tmp_value = $tmp_value[0] ? $tmp_value[0] : ""; if (trim($tmp_value)=="" && $defval!=="") return $defval; return $tmp_value; } function fastQueryArray($qry = "", $defval = "") { global $fdb; $ahasil = array(); if ($qry=="") return $ahasil; $fdb->Query($qry); if ($fdb->RecordCount()==0) { if ($defval!=="") $ahasil[] = $defval; return $ahasil; } while ($fdb->Next()) { $tmp_value = array_values($fdb->AllRow()); $ahasil[] = (trim($tmp_value[0])=="" && $defval!=="") ? $defval : $tmp_value[0]; } return $ahasil; } function fastInsert($nama_tabel = "", $adata = array()) {//up:2014-09-29 global $fdb; if ($nama_tabel=="") return false; $txt = ""; foreach ($adata as $_key => $_val) { $txt .= "," . $_key . "='" . $_val . "'"; } $fdb->Query("INSERT IGNORE INTO ".$nama_tabel." SET ".substr($txt,1)); return true; } function fastUpdate($nama_tabel = "", $adata = [], $awhere = []) { global $fdb; if ($nama_tabel=="") return false; $txt = $whr = ""; foreach ($adata as $_key => $_val) { if (in_array($_key, $awhere)) continue; $txt .= "," . $_key . "='" . $_val . "'"; } foreach ($awhere as $_key => $_val) { $whr .= " AND " . $_val . "='" . $adata[$_val] . "'"; } $fdb->Query("UPDATE ".$nama_tabel." SET ".substr($txt,1)." WHERE ".substr($whr,4)); return true; } function Form_Info($pesan="") { return ''; } ?>