<?php 
//error_reporting(1);
//ini_set('display_errors',1);
session_start();
date_default_timezone_set('America/Lima');
require_once ("../../config/Cado.php");
require_once("../notacredito/cNotacredito.php");
$oNotacredito = new cNotacredito();
require_once ("../talonario/cTalonario.php");
$oTalonario= new cTalonario();
require_once("../venta/cVentapago.php");
$oVentapago = new cVentapago();
require_once("../stock/cStock.php");
$oStock = new cStock();
require_once ("../cuentacobrar/cCuentacobrar.php");
$oCuentacobrar = new cCuentacobrar();
require_once("../kardex/cKardex.php");
$oKardex = new cKardex();
require_once ("../producto/cCatalogo.php");
$oCatalogo = new cCatalogo();
require_once ("../ingreso/cIngreso.php");
$oIngreso = new cIngreso();
require_once("../almacen/cAlmacen.php");
$oAlmacen = new cAlmacen();
require_once("../caja/cCaja.php");
$oCaja = new cCaja();
require_once ("../venta/cVenta.php");
$oVenta = new cVenta();
require_once ("../egreso/cEgreso.php");
$oEgreso = new cEgreso();
require_once("../formatos/formato.php");
if($_POST['action_notcre']=="actualizarsunat")
{
$notcreid=$_POST['notcreid'];
$urlxml='../'.$_POST['xmlarc'];
$xml = new DOMDocument();
$xml->preserveWhiteSpace = FALSE;
$xml->load($urlxml);
$k= $xml->getElementsByTagName("DigestValue");
foreach ($k as $node) {
   $DigVal =  $node->nodeValue;
}
$k= $xml->getElementsByTagName("SignatureValue");
foreach ($k as $node) {
   $SigVal=  $node->nodeValue;
}
 $est = 1;
 $oNotacredito->act_sunat($notcreid,$DigVal,$SigVal,$est);
 	
	$data['msj']="Nota actualizada";
	
	echo json_encode($data);
}
	
	
if($_POST['action_notcre']=="insertar")
{
	if($_POST['txt_notcre_mon']>$_POST['txt_docrel_mon'])
	{
		$data['est']=0;
		$data['msj']='El monto de la nota de credito no puede ser mayor al monte del documento que modifica.';
	}else{
	
	//echo $_POST['hdd_venta_id'];
	
	$dts=$oNotacredito->validarVenta($_POST['hdd_venta_id']);
	$rowven = mysqli_num_rows($dts);
	
	$dts=$oNotacredito->ver_estadoventa($_POST['hdd_venta_id']);
	$dt = mysqli_fetch_array($dts);
	$punvenid=$dt['tb_puntoventa_id'];
	$emp=$dt['tb_empresa_id'];
	$monid = $dt['tb_moneda_id'];
	$cliid = $dt['tb_cliente_id'];
	$est=$dt['tb_venta_est'];
	$icbper=$dt['tb_venta_icbper'];
	$tot=$dt['tb_venta_tot'];
	$docrel=$dt['tb_venta_rel'];
	$numdoc_doc=$dt['tb_venta_numdoc'];
	$estsun=$dt['tb_venta_estsun'];
	$ven_igvval=$dt['tb_venta_igvval'];
	$ven_igvsub=$dt['tb_venta_igvsub'];
	$ven_igvigv=$dt['tb_venta_igvigv'];
	mysqli_free_result($dts);
	
	//echo '---'.$ven_igvsub;
	
	//echo 'emp-'.$emp;
	
	
	$dts1=$oAlmacen->mostrarAlmCajEmp($punvenid);
		$dt1 = mysqli_fetch_array($dts1);
 		$emp=$dt1['tb_empresa_id'];
 		$punven_id=$dt1['tb_puntoventa_id'];
 		$piso_id=$dt1['tb_piso_id'];
 		$almid = $dt1['tb_almacen_id'];
		mysqli_free_result($dts1);
	
	
	$tipdoc =substr($numdoc_doc,0,1);
	
	//echo '--'.$tipdoc;
		
	if($tipdoc=='F' or $tipdoc=='B'){
	
	if($estsun==1){
	
	//if($rowven==0){
		
	$docrel_id = $_POST['hdd_venta_id'];
			
	if($tipdoc=='F'){
	$ser = 'F'.$_SESSION['usuario_ser'];
	}else if($tipdoc=='B'){
	$ser = 'B'.$_SESSION['usuario_ser'];
	}
					
	$dts = $oTalonario->correlativo($_SESSION['puntoventa_id'],$_POST['cmb_notcre_docid'],$ser);
	$dt = mysqli_fetch_array($dts);
	$tal_id=$dt['tb_talonario_id'];
	$tal_ser=$dt['tb_talonario_ser'];
	$tal_fin=$dt['tb_talonario_fin'];
	$tal_num=$dt['tb_talonario_num'];
	mysqli_free_result($dts);
			
	//echo '-'.$tal_num;	
			
	$numero=$tal_num;
	$largo=strlen($tal_fin);
	$numero=str_pad($numero,$largo, "0", STR_PAD_LEFT);
	$numdoc=$tal_ser.'-'.$numero;
		
	if($_POST['txt_notcre_tip']==1){
		$tipid='01';
		$tipnom='ANULACION DE LA OPERACION';
		$oVenta->modificar_campo($_POST['hdd_venta_id'],'est','2');
		$icbper_notcre = $icbper;
		
	}else if($_POST['txt_notcre_tip']==4){
		$tipid='04';
		$tipnom='DESCUENTO GLOBAL';
		$icbper_notcre = 0;
	}else if($_POST['txt_notcre_tip']==5){
		$tipid='05';
		$tipnom='DESCUENTO POR ITEM';
		$icbper_notcre = 0;
	}else if($_POST['txt_notcre_tip']==6){
		$tipid='06';
		$tipnom='DEVOLUCION TOTAL';
		$icbper_notcre = 0;
		$oVenta->modificar_campo($_POST['hdd_venta_id'],'est','2');
	}		
	$oNotacredito->insertar( 
					fecha_mysql($_POST['txt_notcre_fec']),
					$_POST['cmb_notcre_docid'],
					$numdoc,
					$_SESSION['usuario_id'],
					$docrel_id,
					$tipnom,
					$tipid,
					moneda_mysql($icbper_notcre),
					moneda_mysql($_POST['txt_docrel_mon']),
					'',
					'',
					fecha_mysql($_POST['txt_notcre_fec']),
					'0',
					'',
					$ven_igvval,
					$ven_igvsub,
					$ven_igvigv
			);
			
		$estado='1';
		if($tal_num==$tal_fin)
		{
			$estado='2';
		}
		$numero=$tal_num+1;
		$rs3 = $oTalonario->actualizar_correlativo($tal_id, $numero, $estado);	
		
		$dts=$oNotacredito->ultimoInsert();
		$dt = mysqli_fetch_array($dts);
		$notcre_id=$dt['id'];
		mysqli_free_result($dts);	
		
		
		
		if($_POST['txt_notcre_tip']==1 || $_POST['txt_notcre_tip']==6){
			$mod_id = '7';
			$kar_des = 'NOTA DE CREDITO :: '.$tipnom;
		
		$oKardex->insertar(
			fecha_mysql($_POST['txt_notcre_fec']),			
			$kar_des,
			$mod_id,
			$notcre_id,
			$_SESSION['usuario_id'],
			$emp,
			$_POST['hdd_venta_id']			
		);
		//ultimo kardex
		$dts=$oKardex->ultimoInsert();
		$dt = mysqli_fetch_array($dts);
		$kar_id=$dt['id'];
		mysqli_free_result($dts);
		
	}
		
		$dtsc=$oCaja->filtrar('1',$monid,$punvenid);
		$dtc = mysqli_fetch_array($dtsc);
 		$cajid = $dtc['tb_caja_id'];
		mysqli_free_result($dtsc);	
			
		$dtsvp = $oVentapago->filtrar_devolucion($_POST['hdd_venta_id']);
		$dtvp = mysqli_fetch_array($dtsvp);
		$monto = $dtvp['tb_ventapago_mon'];
		$venpag_id = $dtvp['venpagid'];
		$vping = $dtvp['tb_ventapagoingresos_id'];
		
			$mod_id=3;
			$est1=1;
			$est2=2;
				
				$dts3 = $oIngreso->mostrar_por_modulo($mod_id,$vping,$est1,$est2);
				$num_rows3= mysqli_num_rows($dts3);
				while($dt3 = mysqli_fetch_array($dts3))
				{
					$abonos+= $dt3['tb_ingreso_imp'];
				} 
				mysqli_free_result($dts3);
				
		$saldo = ($monto - $abonos);
		
		
	
	if($saldo >= $_POST['txt_notcre_mon'])
	{
		/// si el saldo es mayor a la devolucion ::: se genera ingresos como devoluciones	
			
		if($docrel>0){
		
			$dts= $oVentapago->mostrarUno($docrel);
			$dt = mysqli_fetch_array($dts);
			$venpagrel_id =$dt['tb_ventapago_id'];
			mysqli_free_result($dts);
		
			$dts1r = $oVentapago->ver_ventapagoingreso($venpagrel_id);
			$nowrowrel = mysqli_num_rows($dts1r);
		
		}
		
			
			$dts1 = $oVentapago->ver_ventapagoingreso($venpag_id);
			$nowrow = mysqli_num_rows($dts1);
			
			if($nowrow>0){
				$dt = mysqli_fetch_array($dts1);
				$venpagiing_id = $dt['tb_ventapagoingresos_id']; 
			}else{
				
				if($nowrowrel>0){
					$dtr = mysqli_fetch_array($dts1r);
					$venpagiing_id = $dtr['tb_ventapagoingresos_id'];	
				}else{
				
				$rs1=$oVentapago->insertar_ventapago_ingreso(
				fecha_mysql($_POST['txt_notcre_fec'])
				);
				
				$dtsvpi=$oVentapago->ultimoInsertVentaPagoIngreso();
				$dtvpi = mysqli_fetch_array($dtsvpi);
				$venpagiing_id=$dtvpi['id'];
				mysqli_free_result($dtsvpi);
				
				$oVentapago->insertar_ventapago_ingreso_detalle($venpagiing_id,$venpag_id);
				if($venpagrel_id>0){
				$oVentapago->insertar_ventapago_ingreso_detalle($venpagiing_id,$venpagrel_id);
				}
				
				}
			}	
			
			
		$cuenta_id	= '16';		
		$doc_id='13';
		$mod_id = 3;
		$modide = $venpagiing_id;
		$det= 'NOTA CREDITO '.$numdoc.' :: '.$tipnom;
		$est=2;
			
		$oIngreso->insertar(
			$_SESSION['usuario_id'],
			$_SESSION['usuario_id'],
			fecha_mysql($_POST['txt_notcre_fec']),
			fecha_mysql($_POST['txt_notcre_fec']),
			$doc_id,
			$numdoc,
			$det,
			moneda_mysql($_POST['txt_notcre_mon']),
			$est,
			$cuenta_id,
			moneda_mysql($subcue_id),
			$cliid,
			$cajid,
			$mod_id,
			$modide,
			'1',
			'1',
			moneda_mysql(''),
			moneda_mysql(''),
			moneda_mysql(''),
			moneda_mysql(''),
			''
		);
		$data['estreem'] = '0';
			
		}else if($saldo<$_POST['txt_notcre_mon']){
			/// se genera un ingreso como devoluciones y egreso como devoluciones
			
			
		if($saldo==0){
			/// SE GENERAN SOLO EGRESOS COMO DEVOLUCIONES
			$reem = $_POST['txt_notcre_mon'];
			
		$det = 'NOTA CREDITO '.$numdoc.' :: '.$tipnom;
		$cuenta_id = '14';
		$modid_eg = 7;		
		$est = 2;
		
		$oEgreso->insertar(
			$_SESSION['usuario_id'],
			$_SESSION['usuario_id'],
			fecha_mysql($_POST['txt_notcre_fec']),
			fecha_mysql($_POST['txt_notcre_fec']),
			'13',
			$numdoc,
			$det,
			moneda_mysql(abs($reem)),
			$est,
			$cuenta_id,
			intval($subcue_id),
			$cliid,
			$cajid,
			$modid_eg,
			$vping,
			'1',
			'1',
			'0',
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			moneda_mysql(abs($reem)),
			moneda_mysql(abs($reem)),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			fecha_mysql($_POST['txt_notcre_fec']),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval('')
			
		);
	
		$data['estreem'] = '1';	
		$data['monreem'] ='REEMBOLSO DE '.formato_money(abs($reem));
		
		}else{	
			
			$reem = $_POST['txt_notcre_mon'] - $saldo;	
			$reeming =$saldo;	
			
			////INGRESOO
		
		if($docrel>0){
		
		$dts= $oVentapago->mostrarUno($docrel);
		$dt = mysqli_fetch_array($dts);
		$venpagrel_id =$dt['tb_ventapago_id'];
		mysqli_free_result($dts);
		
		$dts1r = $oVentapago->ver_ventapagoingreso($venpagrel_id);
		$nowrowrel = mysqli_num_rows($dts1r);
		
		}
		
		
			$dts1 = $oVentapago->ver_ventapagoingreso($venpag_id);
			$nowrow = mysqli_num_rows($dts1);
			
			if($nowrow>0){
				$dt = mysqli_fetch_array($dts1);
				$venpagiing_id = $dt['tb_ventapagoingresos_id']; 
			}else{
				
				if($nowrowrel>0){
					$dtr = mysqli_fetch_array($dts1r);
					$venpagiing_id = $dtr['tb_ventapagoingresos_id'];	
				}else{
				
				$rs1=$oVentapago->insertar_ventapago_ingreso(
				fecha_mysql($_POST['txt_notcre_fec'])
				);
				
				$dtsvpi=$oVentapago->ultimoInsertVentaPagoIngreso();
				$dtvpi = mysqli_fetch_array($dtsvpi);
				$venpagiing_id=$dtvpi['id'];
				mysqli_free_result($dtsvpi);
				
				$oVentapago->insertar_ventapago_ingreso_detalle($venpagiing_id,$venpag_id);
				
				if($venpagrel_id>0){
				$oVentapago->insertar_ventapago_ingreso_detalle($venpagiing_id,$venpagrel_id);
				}
				
				}
			
			}	
		
		$det = 'NOTA CREDITO '.$numdoc.' :: '.$tipnom;
		$cuenta_id	='16';		
		$doc_id="13";
		$mod_id = 3;
		$modide = $venpagiing_id;
		$est=2;
			
		$oIngreso->insertar(
			$_SESSION['usuario_id'],
			$_SESSION['usuario_id'],
			fecha_mysql($_POST['txt_notcre_fec']),
			fecha_mysql($_POST['txt_notcre_fec']),
			$doc_id,
			$numdoc,
			$det,
			moneda_mysql($saldo),
			$est,
			$cuenta_id,
			moneda_mysql($subcue_id),
			$cliid,
			$cajid,
			$mod_id,
			$modide,
			'1',
			'1',
			moneda_mysql(''),
			moneda_mysql(''),
			moneda_mysql(''),
			moneda_mysql(''),
			''
		);
			
		//// EGRESOOOS 
		$cuenta_id = '14';
		$modid_eg = 20;			
		$oEgreso->insertar(
			$_SESSION['usuario_id'],
			$_SESSION['usuario_id'],
			fecha_mysql($_POST['txt_notcre_fec']),
			fecha_mysql($_POST['txt_notcre_fec']),
			$doc_id,
			$numdoc,
			$det,
			moneda_mysql(abs($reem)),
			$est,
			$cuenta_id,
			intval($subcue_id),
			$cliid,
			$cajid,
			$modid_eg,
			$vping,
			'1',
			'1',
			'0',
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			moneda_mysql(abs($reem)),
			moneda_mysql(abs($reem)),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			fecha_mysql($_POST['txt_notcre_fec']),
			intval(''),
			intval(''),
			intval(''),
			intval(''),
			intval('')
			
		);
			
		$data['estreem'] ='1';
		$data['monreem'] ='REEMBOLSO DE '.formato_money(abs($reem));
		
		}
	}
		
		
	
	if($_POST['txt_notcre_tip']==1 || $_POST['txt_notcre_tip']==6)
	{
			
	$dts1=$oVenta->mostrar_venta_detalle($_POST['hdd_venta_id']);
	$num_rows= mysqli_num_rows($dts1);
		
	while($dt1 = mysqli_fetch_array($dts1))
    {
		$cat_id = $dt1['tb_catalogo_id'];
		$catcod = $dt1['tb_catalogo_cod'];
		$marid = $dt1['tb_marca_id'];
		$can = $dt1['tb_ventadetalle_can'];
		$icbper=$dt1['tb_ventadetalle_icbper'];
		$nom=$dt1['tb_ventadetalle_nom'];
		$pre_uni=$dt1['tb_ventadetalle_preuni'];
		$val_uni= $pre_uni / $ven_igvsub;
		if($ven_igvsub==0) $val_uni = $pre_uni;
		
	
		$oNotacredito->insertardetalle( 
					$catcod,
					$cat_id,
					$marid,
					$nom,
					$can,
					moneda_mysql($icbper),
					moneda_mysql($pre_uni),
					$notcre_id
			);
		$dtscat=$oCatalogo->mostrarUno($cat_id,$marid);
		$dtcat = mysqli_fetch_array($dtscat);
			$pre_id	= $dtcat['tb_presentacion_id'];
			$cat_fac = $dtcat['tb_catalogo_fac'];
		mysqli_free_result($dtscat);
		
		
		$dts=$oStock->stock_por_presentacion($cat_id,$marid,$almid);
		$dt = mysqli_fetch_array($dts);
			$sto_id		=$dt['tb_stock_id'];
			$sto_num	=$dt['tb_stock_num'];
		mysqli_free_result($dts);
			
		$stock_nuevo=$sto_num+$can;
		$kar_tipo=1;
		$oKardex->insertar_detalle(
				$cat_id,
				$marid,
				$kar_tipo,
				$can,
				moneda_mysql($val_uni),
				abs($can),
				$kar_id,
				$almid
		);
		
		$oStock->modificar($sto_id,$stock_nuevo);
	
	}
	}
	$dtsvp = $oVentapago->filtrar_devolucion($_POST['hdd_venta_id']);
		$dtvp = mysqli_fetch_array($dtsvp);
		$monto = $dtvp['tb_ventapago_mon'];
		$venpag_id = $dtvp['venpagid'];
		$vping = $dtvp['tb_ventapagoingresos_id'];
		
			$mod_id=3;
			$est1=1;
			$est2=2;
				
				$dts3 = $oIngreso->mostrar_por_modulo($mod_id,$vping,$est1,$est2);
				$num_rows3= mysqli_num_rows($dts3);
				while($dt3 = mysqli_fetch_array($dts3))
				{
					$abonos+= $dt3['tb_ingreso_imp'];
				} 
				mysqli_free_result($dts3);
				
		$saldo = ($monto - $abonos);	
		
		//echo '--'.$saldo.'|';
		//echo '--'.$monto;
		//echo '--'.$abonos;
		if($saldo==0)
		{
			$oCuentacobrar->editar_campo('est','1',$venpag_id);	
			$oCuentacobrar->editar_campo('est','1',$venpagrel_id);	
			$msjadd = " .:. Deuda Cancelada .:.";		
		}
	$data['venid']=$_POST['hdd_venta_id'];
	$data['notcreid']=$notcre_id;
	$data['est']=1;
	$data['msj']="Nota de credito electronica N° ".$numdoc." registrada".$msjadd;
	
	
	/* 	$user_agen = $_SERVER['HTTP_USER_AGENT'];
		$mod = 7;
		$mod_ide = $notcre_id;
		$det = 'NOTA DE CREDITO REGISTRADA [Nº '.$numdoc.' | '.$tipnom.']';
		$fec = date('Y-m-d');
		$doc_id = 13;
		$numdoc = $numdoc;
		$ip = mostrar_ip();
	 	
		$oHistorial->insertar(
		fecha_mysql($fec),
		$det,
		$ip,
		$_SESSION['usuario_id'],
		$mod,
		$mod_ide,
		$doc_id,
		$numdoc
		);
	
	 */
	
	
	/* }else{
	$data['est']=3;
	$data['msj']="Ya existe una Nota de credito electronica con este documento";
	} */
	
	}else{
		$data['est']=3;
		$data['msj']="El documento aun no ha sido emitido a sunat";
	}
	
	}
	else{
	$data['est']=0;
	$data['msj']="El documento referencia a un documento interno (NOTA DE VENTA)";
	}
	
	}
	echo json_encode($data);
	
	}
?>