update promo karena duplikat record

This commit is contained in:
2026-06-05 12:46:34 +07:00
parent 32513fcfa2
commit 9bb01d0325
+32 -33
View File
@@ -210,7 +210,7 @@ function Promo_Hapus($no_nota="", $tgl_nota="") {
$fdb->Query("SELECT * FROM inv_detail WHERE No_Ref='".$no_nota."' AND Promo IN (1,2,3)"); $fdb->Query("SELECT * FROM inv_detail WHERE No_Ref='".$no_nota."' AND Promo IN (1,2,3)");
while ($fdb->Next()) { 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."'"); $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); unset($tdb);
} }
@@ -224,30 +224,33 @@ function Promo_Barang($no_nota="", $tgl_nota="") {
$apromo = []; $apromo = [];
$fdb->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND Promo IN (1,2)"); $fdb->Query("SELECT * FROM tmp_inv_detail WHERE No_Ref='".$no_nota."' AND Unix='".user_unix()."' AND Promo IN (1,2)");
while ($fdb->Next()) { 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."'"); $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")==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")."'"); 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()."')"); $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; if ($fdb->RecordCount()==0) return false;
while ($fdb->Next()) $apromo[] = $fdb->AllRow(); while ($fdb->Next()) $apromo[] = $fdb->AllRow();
$aitem_promo = [];
foreach($apromo as $_key => $val) { foreach($apromo as $_key => $val) {
if ($val['Tipe_Promo']==1) {//1 potongan diskon 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();
$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; $bpromo = false;
if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit
$bpromo = true; $bpromo = true;
$qty_promo = ($adetail['Qty']<=$val['Jumlah_Sisa']) ? $adetail['Qty'] : $val['Jumlah_Sisa']; $qty_promo = ($adetail['Qty']<=$val['Jumlah_Sisa']) ? $adetail['Qty'] : $val['Jumlah_Sisa'];
} else if ($val['Pilih_Qty']==2 && $val['Qty_Kali']<=$adetail['Qty']) {//kelipatan } else if ($val['Pilih_Qty']==2 && $val['Qty_Kali']<=$adetail['Qty']) {//kelipatan
$bpromo = true; $bpromo = true;
$qty_promo = floor($adetail['Qty']/$val['Qty_Kali']) * $val['Qty_Kali']; $qty_promo = floor($adetail['Qty']/$val['Qty_Kali']);
$qty_promo = ($qty_promo<=$val['Jumlah_Sisa']) ? $qty_promo : $val['Jumlah_Sisa']; $qty_promo = ($qty_promo<=$val['Jumlah_Sisa']) ? $qty_promo : $val['Jumlah_Sisa'];
} }
if ($bpromo == true) { if ($bpromo == true) {
@@ -279,12 +282,6 @@ function Promo_Barang($no_nota="", $tgl_nota="") {
$tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses+".$qty_promo." WHERE PromoID='".$val['PromoID']."'"); $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses+".$qty_promo." WHERE PromoID='".$val['PromoID']."'");
} }
} else {//2 promo barang } else {//2 promo barang
$adetail = []; $adisc = [];
$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()) $adisc = $fdb->AllRow();
$bpromo = false; $bpromo = false;
if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit
$bpromo = true; $bpromo = true;
@@ -297,21 +294,22 @@ function Promo_Barang($no_nota="", $tgl_nota="") {
if ($bpromo == true && $qty_promo>0) { 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"); $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()) { if ($fdb->Next()) {
$adisc['InvID'] = $val['Promo_InvID']; $aitem['InvID'] = $val['Promo_InvID'];
$adisc['SatuanID'] = $val['Promo_SatuanID']; $aitem['SatuanID'] = $val['Promo_SatuanID'];
$adisc['Qty'] = $qty_promo * -1; $aitem['Qty'] = $qty_promo * -1;
$adisc['Stok'] = $qty_promo * $fdb->Row("Qty", 1) * -1; $aitem['Stok'] = $qty_promo * $fdb->Row("Qty", 1) * -1;
$adisc['Harga_Beli'] = $fdb->Row("Harga_Pokok", 0); $aitem['Harga_Beli'] = $fdb->Row("Harga_Pokok", 0);
$adisc['Harga_Jual'] = $fdb->Row("Harga_Jual", 0); $aitem['Harga_Jual'] = $fdb->Row("Harga_Jual", 0);
$adisc['Disk_Rupiah'] = $adisc['Harga_Jual']; $aitem['Disk_Rupiah'] = $aitem['Harga_Jual'];
$adisc['Total_Diskon'] = $qty_promo * $adisc['Harga_Jual']; $aitem['Total_Diskon'] = $qty_promo * $aitem['Harga_Jual'];
$adisc['Promo'] = 2; $aitem['Promo'] = 2;
unset($adisc['ID']); unset($aitem['ID']);
fastInsert("tmp_inv_detail", $adisc); fastInsert("tmp_inv_detail", $aitem);
} }
$tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses+".$qty_promo." WHERE PromoID='".$val['PromoID']."'"); $tdb->Query("UPDATE inv_promo SET Jumlah_Proses=Jumlah_Proses+".$qty_promo." WHERE PromoID='".$val['PromoID']."'");
} }
} }
$aitem_promo[] = $val['InvID'].":".$val['SatuanID'];
} }
unset($tdb); unset($tdb);
} }
@@ -381,16 +379,17 @@ function Promo_Hitung($no_nota="", $tgl_nota="") {
$tot_promo = 0; $tot_promo = 0;
$apromo = []; $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))"); $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)) ORDER BY PromoID DESC");
if ($fdb->RecordCount()>0) { if ($fdb->RecordCount()>0) {
while ($fdb->Next()) $apromo[] = $fdb->AllRow(); while ($fdb->Next()) $apromo[] = $fdb->AllRow();
$aitem_promo = [];
foreach($apromo as $_key => $val) { foreach($apromo as $_key => $val) {
$adetail = []; $aitem = []; 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"); $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(); 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();
$bpromo = false; $bpromo = false;
if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit if ($val['Pilih_Qty']==1 && $val['Qty_Min']<=$adetail['Qty']) {//minimum & masuk limit
@@ -398,10 +397,11 @@ function Promo_Hitung($no_nota="", $tgl_nota="") {
$qty_promo = ($adetail['Qty']<=$val['Jumlah_Sisa']) ? $adetail['Qty'] : $val['Jumlah_Sisa']; $qty_promo = ($adetail['Qty']<=$val['Jumlah_Sisa']) ? $adetail['Qty'] : $val['Jumlah_Sisa'];
} else if ($val['Pilih_Qty']==2 && $val['Qty_Kali']<=$adetail['Qty']) {//kelipatan } else if ($val['Pilih_Qty']==2 && $val['Qty_Kali']<=$adetail['Qty']) {//kelipatan
$bpromo = true; $bpromo = true;
$qty_promo = floor($adetail['Qty']/$val['Qty_Kali']) * $val['Qty_Kali']; $qty_promo = floor($adetail['Qty']/$val['Qty_Kali']);
$qty_promo = ($qty_promo<=$val['Jumlah_Sisa']) ? $qty_promo : $val['Jumlah_Sisa']; $qty_promo = ($qty_promo<=$val['Jumlah_Sisa']) ? $qty_promo : $val['Jumlah_Sisa'];
} }
$tot_promo += ($bpromo == true) ? ($qty_promo * $val['Promo_Disc']) : 0; $tot_promo += ($bpromo == true) ? ($qty_promo * $val['Promo_Disc']) : 0;
$aitem_promo[] = $val['InvID'].":".$val['SatuanID'];
} }
} }
@@ -410,7 +410,6 @@ function Promo_Hitung($no_nota="", $tgl_nota="") {
if ($fdb->RecordCount()>0) { if ($fdb->RecordCount()>0) {
while ($fdb->Next()) $apromo[] = $fdb->AllRow(); while ($fdb->Next()) $apromo[] = $fdb->AllRow();
$tot_potong = 0;
foreach($apromo as $_key => $val) { foreach($apromo as $_key => $val) {
$tot_jual = 0; $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'].")"); $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'].")");