<?php 
if(isset($_GET['fakturRtnPenjualan'])){
doTableJSON($_GET['fakturRtnPenjualan'],array(
"id",
"date",
"faktur",
"faktur_penjualan",
"pelanggan_id",
"return_total",
"return_dibayar",
"return_sisa"
),"WHERE mode='return penjualan'");
}
else
	
if(isset($_GET['startDate']) AND isset($_GET['filterRtnPenjualan'])){
	

$startDate=explode('/',$_GET['startDate']);	
$startDate=$startDate[2].'-'.$startDate[1].'-'.$startDate[0];	

$endDate=explode('/',$_GET['endDate']);	
$endDate=$endDate[2].'-'.$endDate[1].'-'.$endDate[0];	
	
doTableJSON($_GET['filterRtnPenjualan'],array(
"id",
"date",
"faktur",
"faktur_penjualan",
"pelanggan_id",
"return_total",
"return_dibayar",
"return_sisa"
),"WHERE mode='return penjualan' AND date>='".$startDate."' AND date<='".$endDate."' ");
}
else
if(isset($_GET['totalRtnPenjualan'])){
$rtnPenjualan=sumData('faktur','grand_total',"WHERE mode='return penjualan'");

?>	
<table class="table">
<tr>
<td><h3>Total Return Penjualan </h3></td><td> <h3><?php echo currency($rtnPenjualan);?></h3></td>
</tr>
</table>
<?php
}
else
if(isset($_GET['totalRtnPenjualanFilter'])){
$startDate=explode('/',$_GET['startDate']);	
$startDate=$startDate[2].'-'.$startDate[1].'-'.$startDate[0];	

$endDate=explode('/',$_GET['endDate']);	
$endDate=$endDate[2].'-'.$endDate[1].'-'.$endDate[0];	

$rtnPenjualan=sumData('faktur','grand_total',"WHERE mode='return penjualan'  AND date>='".$startDate."' AND date<='".$endDate."'  ");

	?>
	
<table class="table">
<tr>
<td><h3>Total Return Penjualan </h3></td><td> <h3><?php echo currency($rtnPenjualan);?></h3></td>
</tr>

</table>
<?php
}


elseif(isset($_GET['tableFakturBarangJual'])){
	if(isset($_GET['fakturPenjualan'])){
		$faktur=$_GET['fakturPenjualan'];
	}else{
		$faktur=1;
	}
	// Hanya tampilkan barang yang belum direturn (qty > 0 setelah return)
	// Exclude barang yang sudah direturn semua (qty = 0)
doTableJSON($_GET['tableFakturBarangJual'],array(
"id",
"faktur",
"date",
"kode_barang",
"nama_barang",
"harga",
"qty",
"total"
),"WHERE status=2 AND faktur='".$faktur."' AND qty > 0");
}
elseif(isset($_GET['tableRtnPenjualan'])){
doTableJSON($_GET['tableRtnPenjualan'],array(
"id",
"kode_barang",
"nama_barang",
"harga",
"qty",
"total"
),"WHERE status=1");
}elseif(isset($_GET['addCartRtnJual'])){
	$barang=doTableArray("daftar_barang",array("id_barang","nama_barang","harga_jual"),"where kode_barang='".$_GET['kode_barang']."'");
	
	// Validasi array barang
	if(!is_array($barang) || count($barang) == 0 || !isset($barang[0]) || !is_array($barang[0])){
		echo '0'; // Barang tidak ditemukan
		exit;
	}
	
	$id_barang=isset($barang[0][0]) ? $barang[0][0] : 0;
	$nama_barang=isset($barang[0][1]) ? $barang[0][1] : '';
	$harga=xCurrency($_GET['harga']);
	$qty=intval($_GET['qty']);
	if($qty <= 0){
		$qty = 1;
	}
	$checkCart=checkData($_GET['addCartRtnJual'],"WHERE kode_barang='".$_GET['kode_barang']."' AND status=1 ");
	$total=$harga*$qty;
	if($checkCart <1){

		doInsert($_GET['addCartRtnJual'],
		"
		id_barang,kode_barang,nama_barang,harga,qty,faktur,date,total,status,session
		",
		"
		'".$id_barang."',
		'".$_GET['kode_barang']."',
		'".$nama_barang."',
		'".$harga."',
		'".$qty."',
		'".$_GET['faktur']."',
		'".date("Y-m-d")."',
		'".$total."',
		'1',
		'".$_GET['user_id']."'

		");
	}else{
		doUpdate($_GET['addCartRtnJual'],"qty=qty+".$qty.",total=total+".$total."","WHERE kode_barang='".$_GET['kode_barang']."' AND status=1");
	}

}
elseif(isset($_GET['inputRtnPenjualan'])){



	$user_id=$_GET['user_id'];	
	$date=$_GET['date'];
	$getDate=explode("/",$date);
	$tanggal=$getDate[0];
	$bulan=$getDate[1];
	$tahun=$getDate[2];
	$date=$tahun."-".$bulan."-".$tanggal;
	$faktur=$_GET['faktur'];
	$faktur_penjualan=$_GET['fakturPenjualan'];

	$total=xCurrency($_GET['total']);
	
		// Return penjualan mengurangi pemasukan, jadi pemasukan = 0, pengeluaran = total (untuk mengurangi pendapatan)
		doInsert("faktur",
		"
		faktur,pelanggan_id,tanggal,bulan,tahun,date,total,
		pengeluaran,pemasukan,voucher,diskon,grand_total,dibayar,kembali,mode,
		keterangan,status,hutang,hutang_dibayar,hutang_sisa,tempo,
		user_id
		",
		"
		'".$faktur."',
		'0',
		'".$tanggal."',
		'".$bulan."',
		'".$tahun."',
		'".$date."',
		'".$total."',
		'0',
		'0',
		'0',
		'0',
		'".$total."',
		'".$total."',
		'0',
		'return penjualan',
		'Return Penjualan : ".$faktur_penjualan."',
		'tunai',
		'0',
		'0',
		'0',
		'0',
		'".$user_id."'
		");
		
		doInsert("return_barang",
		"
		faktur,pelanggan_id,tanggal,bulan,tahun,date,total,
		return_penjualan,return_pembelian,dibayar,mode,
		keterangan,status,return_total,return_dibayar,return_sisa,
		user_id,faktur_penjualan
		",
		"
		'".$faktur."',
		'".getFakturPelanggan($faktur_penjualan)."',
		'".$tanggal."',
		'".$bulan."',
		'".$tahun."',
		'".$date."',
		'".$total."',
		'".$total."',
		'0',
		'".$total."',
		'return penjualan',
		'Return Penjualan : ".$faktur_penjualan."',
		'tunai',
		'".$total."',
		'".$total."',
		'0',
		'".$user_id."',
		'".$faktur_penjualan."'
		");
		
		$items=doTableArray("return_penjualan",array("qty","id_barang","harga"),"WHERE status=1");
		$total_return_all = 0; // Total semua return untuk update piutang
		
		if(is_array($items) && count($items) > 0){
			foreach($items as $row){
				if(!isset($row[0]) || !isset($row[1]) || !isset($row[2])){
					continue;
				}
				$qty_return = intval($row[0]);
				$id_barang = intval($row[1]);
				$harga = floatval($row[2]);
				
				if($qty_return <= 0 || $id_barang <= 0){
					continue;
				}
				
				// Hitung total return untuk item ini
				$total_return_item = $harga * $qty_return;
				$total_return_all += $total_return_item;
				
				// Ambil isi dari barang untuk menghitung qtySatuan
				$isi = getBarang('isi',"WHERE id_barang='".$id_barang."'");
				if($isi == '' || $isi == null || $isi == 0){
					$isi = 1;
				}
				$qtySatuan_return = $qty_return * intval($isi);
				
				// Ambil kategori untuk menentukan apakah perlu update stok
				$kategori = strtolower(getBarang("kategori_barang","WHERE id_barang='".$id_barang."'"));
				
				// Update stok dan terjual - kurangi terjual karena return
				if($kategori != 'jasa'){
					doUpdate("daftar_barang",
					"stok=stok+".$qtySatuan_return.",
					terjual=terjual-".$qtySatuan_return."
					",
					"WHERE id_barang='".$id_barang."'"
					);
				} else {
					// Untuk jasa, hanya kurangi terjual
					doUpdate("daftar_barang",
					"terjual=terjual-".$qtySatuan_return."
					",
					"WHERE id_barang='".$id_barang."'"
					);
				}
				
				// Update kasir_penjualan - kurangi qty dan hitung ulang total
				// Ambil qty dan harga dari kasir_penjualan
				$kasirData=doTableArray("kasir_penjualan",array("qty","harga"),"WHERE id_barang='".$id_barang."' AND faktur='".$faktur_penjualan."' AND status=2");
				if(is_array($kasirData) && count($kasirData) > 0 && isset($kasirData[0][0]) && isset($kasirData[0][1])){
					$qty_lama = intval($kasirData[0][0]);
					$harga_kasir = floatval($kasirData[0][1]);
					$qty_baru = $qty_lama - $qty_return;
					if($qty_baru < 0){
						$qty_baru = 0;
					}
					$total_baru = $harga_kasir * $qty_baru;
					
					doUpdate("kasir_penjualan",
					"qty=".$qty_baru.", total=".$total_baru."
					",
					"WHERE id_barang='".$id_barang."' AND faktur='".$faktur_penjualan."' AND status=2"
					);
				}
			}
		}
		
		// Hitung total HPP yang dikembalikan untuk mengurangi HPP di faktur
		$total_hpp_return = 0;
		foreach($items as $row){
			if(!isset($row[0]) || !isset($row[1]) || !isset($row[2])){
				continue;
			}
			$qty_return = intval($row[0]);
			$id_barang = intval($row[1]);
			
			if($qty_return <= 0 || $id_barang <= 0){
				continue;
			}
			
			// Ambil HPP dan total_hpp dari kasir_penjualan
			$kasirHPP=doTableArray("kasir_penjualan",array("hpp","qtySatuan","total_hpp","qty"),"WHERE id_barang='".$id_barang."' AND faktur='".$faktur_penjualan."' AND status=2");
			if(is_array($kasirHPP) && count($kasirHPP) > 0 && isset($kasirHPP[0][0]) && isset($kasirHPP[0][1]) && isset($kasirHPP[0][2]) && isset($kasirHPP[0][3])){
				$hpp_item = floatval($kasirHPP[0][0]);
				$qtySatuan_lama = intval($kasirHPP[0][1]);
				$total_hpp_lama = floatval($kasirHPP[0][2]);
				$qty_lama = intval($kasirHPP[0][3]);
				
				// Hitung proporsi HPP yang dikembalikan berdasarkan qty
				if($qty_lama > 0 && $total_hpp_lama > 0){
					$proporsi_return = $qty_return / $qty_lama;
					$hpp_return_item = $total_hpp_lama * $proporsi_return;
					$total_hpp_return += $hpp_return_item;
				} else if($hpp_item > 0 && $qtySatuan_lama > 0){
					// Fallback: hitung dari hpp per satuan
					$isi = getBarang('isi',"WHERE id_barang='".$id_barang."'");
					if($isi == '' || $isi == null || $isi == 0){
						$isi = 1;
					}
					$qtySatuan_return = $qty_return * intval($isi);
					$hpp_return_item = $hpp_item * $qtySatuan_return;
					$total_hpp_return += $hpp_return_item;
				}
			}
		}
		
		// Update faktur penjualan - kurangi total, grand_total, pemasukan, total_hpp, laba_rugi, dan piutang jika kredit
		// Ambil data faktur penjualan
		$fakturData=doTableArray("faktur",array("total","grand_total","pemasukan","total_hpp","laba_rugi","hutang","hutang_sisa","status"),"WHERE faktur='".$faktur_penjualan."'");
		if(is_array($fakturData) && count($fakturData) > 0 && isset($fakturData[0])){
			$total_faktur = isset($fakturData[0][0]) ? floatval($fakturData[0][0]) : 0;
			$grand_total_faktur = isset($fakturData[0][1]) ? floatval($fakturData[0][1]) : 0;
			$pemasukan_faktur = isset($fakturData[0][2]) ? floatval($fakturData[0][2]) : 0;
			$total_hpp_faktur = isset($fakturData[0][3]) ? floatval($fakturData[0][3]) : 0;
			$laba_rugi_faktur = isset($fakturData[0][4]) ? floatval($fakturData[0][4]) : 0;
			$hutang_faktur = isset($fakturData[0][5]) ? floatval($fakturData[0][5]) : 0;
			$hutang_sisa_faktur = isset($fakturData[0][6]) ? floatval($fakturData[0][6]) : 0;
			$status_faktur = isset($fakturData[0][7]) ? $fakturData[0][7] : 'tunai';
			
			// Kurangi total, grand_total, pemasukan, total_hpp
			$total_faktur_baru = $total_faktur - $total_return_all;
			if($total_faktur_baru < 0){
				$total_faktur_baru = 0;
			}
			$grand_total_faktur_baru = $grand_total_faktur - $total_return_all;
			if($grand_total_faktur_baru < 0){
				$grand_total_faktur_baru = 0;
			}
			$pemasukan_faktur_baru = $pemasukan_faktur - $total_return_all;
			if($pemasukan_faktur_baru < 0){
				$pemasukan_faktur_baru = 0;
			}
			$total_hpp_faktur_baru = $total_hpp_faktur - $total_hpp_return;
			if($total_hpp_faktur_baru < 0){
				$total_hpp_faktur_baru = 0;
			}
			// Hitung ulang laba rugi
			$laba_rugi_faktur_baru = $pemasukan_faktur_baru - $total_hpp_faktur_baru;
			
			// Jika status kredit, kurangi juga piutang
			if($status_faktur == 'kredit'){
				$hutang_sisa_baru = $hutang_sisa_faktur - $total_return_all;
				if($hutang_sisa_baru < 0){
					$hutang_sisa_baru = 0;
				}
				$hutang_baru = $hutang_faktur - $total_return_all;
				if($hutang_baru < 0){
					$hutang_baru = 0;
				}
				
				// Update faktur dengan mengurangi semua field termasuk piutang
				doUpdate("faktur",
				"total=".$total_faktur_baru.",
				grand_total=".$grand_total_faktur_baru.",
				pemasukan=".$pemasukan_faktur_baru.",
				total_hpp=".$total_hpp_faktur_baru.",
				laba_rugi=".$laba_rugi_faktur_baru.",
				hutang=".$hutang_baru.",
				hutang_sisa=".$hutang_sisa_baru."
				",
				"WHERE faktur='".$faktur_penjualan."'"
				);
			} else {
				// Jika tunai, kurangi total, grand_total, pemasukan, total_hpp, dan laba_rugi
				doUpdate("faktur",
				"total=".$total_faktur_baru.",
				grand_total=".$grand_total_faktur_baru.",
				pemasukan=".$pemasukan_faktur_baru.",
				total_hpp=".$total_hpp_faktur_baru.",
				laba_rugi=".$laba_rugi_faktur_baru."
				",
				"WHERE faktur='".$faktur_penjualan."'"
				);
			}
		}		
		doUpdate("return_penjualan", //tabel:kasir_penjualan
		"
		date='".$date."',
		faktur='".$faktur."',
		status='2'

		",
		"WHERE status='1'"
		);	


}else
if(isset($_GET['dataRtnPenjualan'])){
	
$items=doTableArray("return_penjualan",array("kode_barang","nama_barang","harga","qty","total","faktur"),"WHERE status=2 AND faktur='".$_GET['faktur']."'");
$faktur=doTableArray("return_barang",array("date","pelanggan_id","return_penjualan"),"where faktur='".$_GET['faktur']."'");

// Validasi array faktur
if(!is_array($faktur) || count($faktur) == 0 || !isset($faktur[0]) || !is_array($faktur[0])){
	echo '<div class="alert alert-danger">Data return tidak ditemukan</div>';
	exit;
}

$date= isset($faktur[0][0]) ? $faktur[0][0] : date('Y-m-d');
$pelanggan_id= isset($faktur[0][1]) ? intval($faktur[0][1]) : 0;
$return= isset($faktur[0][2]) ? floatval($faktur[0][2]) : 0;

if(intval($pelanggan_id) !='' && intval($pelanggan_id)!=0){
	$pelanggan=doTableArray("pelanggan",array("nama_pelanggan","alamat","kota"),"where id='".intval($pelanggan_id)."'");
	if(is_array($pelanggan) && count($pelanggan) > 0 && isset($pelanggan[0])){
		$nama_pelanggan=isset($pelanggan[0][0]) ? $pelanggan[0][0] : '-';
		$alamat=isset($pelanggan[0][1]) ? $pelanggan[0][1] : '';
		$kota=isset($pelanggan[0][2]) ? $pelanggan[0][2] : '';
	}else{
		$nama_pelanggan='-';
		$alamat='';
		$kota='';
	}
}else{
	$nama_pelanggan='-';
	$alamat='';
	$kota='';
}


?>
<div style="overflow-y: auto; height:430px; ">
<div id="printArea">
<div class="title" style="margin-bottom:10px;text-align:left">
<b><?php echo getPengaturan('nama_toko');?></b>
<br>
<small><?php echo getPengaturan('alamat');?> Telp/HP <?php echo getPengaturan('no_hp');?></small>
</div>
<table class="table">
<tr>
<td style="width:150px">Tanggal</td><td style="width:30px">:</td><td><?php echo $date;?></td>
<td >Pelanggan</td><td style="width:30px">:</td><td><?php echo $nama_pelanggan;?></td>
</tr>
<tr>
<td style="width:150px">No Return Penjualan</td><td>:</td><td><?php echo $_GET['faktur'];?></td>
<td >Alamat</td><td style="width:30px">:</td><td><?php echo $alamat;?> <?php echo $kota;?></td>
</tr>
</table>

<table class="table " id="dataPenjualan" cellspacing="0">
  <thead>
	<tr>
	  <th style="width:50px">No</th>
	  <th>Kode</th>
	  <th>Nama Barang</th>
	  <th>Harga</th>
	  <th>Qty</th>
	  <th >Total</th>
	</tr>
  </thead>
  <tbody >
  <?php
  $i=1;
	foreach($items as $row){
	  echo '<tr>';
	  echo '<td>'.$i.'</td>';
	  echo '<td>'.$row[0].'</td>';
	  echo '<td>'.$row[1].'</td>';
	  echo '<td>'. currency($row[2]).'</td>';
	  echo '<td>'.$row[3].'</td>';
	  echo '<td>'. currency($row[4]).'</td>';
	  echo '</tr>';
	  $i++; 	  
  }   
  ?>
  <tr><td colspan=3></td><td colspan=2><b>Total</b></td><td> : <?php echo currency($return);?></td></tr>
  </tbody>
  </table> 
</div>
</div>
<?php
}