<?php 

//error_reporting(E_aLL);


session_start();
date_default_timezone_set('America/Lima');
require_once ("../../config/Cado.php");
require_once ("../cotizacion/cCotizacion.php");
$oCotizacion = new cCotizacion();
require_once ("../producto/cCatalogo.php");
$oCatalogo = new cCatalogo();
require_once ("../stock/cStock.php");
$oStock = new cStock();
require_once ("../caja/cCaja.php");
$oCaja = new cCaja();
require_once ("../talonario/cTalonario.php");
$oTalonario= new cTalonario();
require_once("../venta/cVenta.php");
$oVenta = new cVenta();
require_once("../venta/cVentapago.php");
$oVentapago = new cVentapago();
require_once ("../documento/cDocumento.php");
$oDocumento= new cDocumento();
require_once("../kardex/cKardex.php");
$oKardex = new cKardex();
require_once("../almacen/cAlmacen.php");
$oAlmacen = new cAlmacen();
require_once ("../tarjeta/cTarjeta.php");
$oTarjeta = new cTarjeta();

require_once("../producto/cProductomarcaprecio.php");
$oProductomarcaprecio = new cProductomarcaprecio();

require_once ("../cuentadeposito/cCuentadeposito.php");
$oCuentadeposito = new cCuentadeposito();
require_once ("../cotizacion/cCotizacionpago.php");
$oCotizacionpago = new cCotizacionpago();
require_once ("../ingreso/cIngreso.php");
$oIngreso = new cIngreso();
require_once("../guiaremision/cGuiaremision.php");
$oGuiaremision = new cGuiaremision();
require_once("../tipocambiotesoreria/cTipocambiotesoreria.php");
$oTipocambiotesoreria = new cTipocambiotesoreria();
require_once("../formatos/formato.php");
function responder($estado=false, $mensaje='', $datos=[])
{
	header('Content-type: application/json');
	echo json_encode([
		'est' => $estado,
		'msj' => $mensaje,
		'dat' => $datos,
	]);
	exit;
}
if($_POST['action']=='validar_stock')
{
	
	$dts1=$oAlmacen->mostrarAlmCajEmp($_POST['hdd_punven_id']);
	$dt1 = mysqli_fetch_array($dts1);
 	$emp=$dt1['tb_empresa_id'];
 	$punven_id=$dt1['tb_puntoventa_id'];
 	$piso_id=$dt1['tb_piso_id'];
 	$alm = $dt1['tb_almacen_id'];
 			//$caj_id = $dt1['tb_caja_id'];
	mysqli_free_result($dts1);
		
	$dts = $oCotizacion->mostrarUno($_POST['hdd_cot_id']);
	$dt = mysqli_fetch_array($dts);
	$genven	= $dt['tb_cotizacion_genven'];	
	$numdoc	= $dt['tb_cotizacion_numdoc'];
	mysqli_free_result($dts);
	
	if($genven>0){
		responder(false, 'La cotizacion N° '.$numdoc.' ya tiene documentos generados.', ['tipo' => 'genven']);
	}else{
	
	$dtsdet=$oCotizacion->mostrarCotizaciondetalle($_POST['hdd_cot_id']);
	$num_rows= mysqli_num_rows($dtsdet);
	while($dtdet = mysqli_fetch_array($dtsdet))
    {
		$dts1=$oCatalogo->mostrarUno($dtdet['tb_catalogo_id'],$dtdet['tb_marca_id']);
		$dt1 = mysqli_fetch_array($dts1);
		
		//$stocknum =  mysqli_fetch_array($oStock->stock_por_presentacion($dt1['tb_presentacion_id'],$dtdet['tb_marca_id'],$alm))['tb_stock_num'];
		
		//echo '---';
		
		$dtsmo=$oProductomarcaprecio->mostrar_filtro($dt1['tb_productomarca_id'],$_POST['hdd_punven_id']);
		$num_rowsp= mysqli_num_rows($dtsmo);
								
		if($num_rowsp>0){
			while($dt = mysqli_fetch_array($dtsmo))
			{
				$stocknum += $dt['tb_productomarcaprecio_stock'] ;
			}
		}else{
			$stocknum = 0;
		}
		
		
	//	$stocknum = 0;
		
	if($dtdet['tb_catalogo_id']==1){
		responder(true, 'Validado correctamente' , ['tipo' => 'stock']);
		
	}else{	
		
	if($stocknum==0){
	
	responder(false, 'EL PRODUCTO '.$dt1['tb_producto_nom'].' || '.$dt1['tb_marca_nom'].' NO TIENE STOCK EN EL ALMACEN.', ['tipo' => 'stock']);
	
	}else if($dtdet['tb_cotizaciondetalle_can'] > $stocknum){
	
	responder(false, 'Solo hay '.$stocknum *1 .' en stock del producto '.$dt1['tb_producto_nom'].', Usted intenta vender '.$dtdet['tb_cotizaciondetalle_can']*1 , ['tipo' => 'stock']);
	
	}else{
		responder(true, 'Validado correctamente' , ['tipo' => 'stock']);
	}
	
	}
	
	
	
	}
		
	
	}
}


	
	
	
	
	
	
	
	












if($_POST['action']=='generar_venta'){
		
		
		
	// ini_set('display_errors',1);

		//ini_set('display_errors',1);
	//ini_set('display_errors',1);
	
	$fec = date('d-m-Y');
	
	$dts = $oCotizacion->mostrarUno($_POST['cotid']);
	$dt = mysqli_fetch_array($dts);
	
	//$fec =$dt['tb_cotizacion_fec'];
	$doc_id	= $dt['tb_documento_id'];
	$numdoc	= $dt['tb_cotizacion_numdoc'];
	$cli_id	= $_POST['cli_id'];
	$cli_nom = $_POST['cli_nom'];
	$cli_doc = $_POST['cli_doc'];
	$cli_pla = $dt['tb_cliente_pla'];	
	$cli_dir = $_POST['cli_dir'];	
	$emp	= $dt['emp'];
	$mon_id = $dt['tb_moneda_id'];
	$punven_id = $dt['punvenid'];
	$tipcamcot = $dt['tb_cotizacion_tipcam'];
	
	
	$total	= $dt['tb_cotizacion_tot'];
	$total_valorventa = $total / 1.18;
	$total_igv	= $total_valorventa * 0.18;
	
	
	mysqli_free_result($dts);
	
	if($mon_id==1){
		$tipcamcot = 1;
	}else if($mon_id==2){
		$tipcamcot = $tipcamcot;
	}
	
	$forpag = $_POST['forpagid'];
	$modpag = $_POST['modpagid'];
	$numdiapag = $_POST['numdia'];
	$nroope = $_POST['nroope'];
	$caj_id = $_POST['cajid'];
	$aten = $_POST['aten'];
	$guialle = $_POST['lleg'];	
		
	if($_POST['fecven'] =="" || $_POST['fecven']=='00-00-0000'){
		$fecvenpag = $fec;
	}else {
		$fecvenpag = $_POST['fecven'];
	}
		
		
		
		$est = 1;
		$piso_id = 0;
		
		$dts1=$oAlmacen->mostrarAlmCajEmp($punven_id);
			$dt1 = mysqli_fetch_array($dts1);
 			$emp=$dt1['tb_empresa_id'];
 			$emp_dir=$dt1['tb_empresa_dir'];
 			$punven_id=$dt1['tb_puntoventa_id'];
 			$piso_id=$dt1['tb_piso_id'];	
			$alm = $dt1['tb_almacen_id'];
			mysqli_free_result($dts1);
		
			/* $dtsc=$oCaja->mostrarCajaVenta($punven_id,$mon_id);
			$dtc = mysqli_fetch_array($dtsc);
 			$caj_id= $dtc['tb_caja_id'];
			mysqli_free_result($dtsc); */
			
		$dts= $oDocumento->mostrarUno($_POST['docid']);
		$dt = mysqli_fetch_array($dts);
		$doc_nom=$dt['tb_documento_nom'];
		$doc_abr=$dt['tb_documento_abr'];
		mysqli_free_result($dts);
		
	if($doc_abr=='T'){
		$ser = 'T00'.$_SESSION['usuario_ser'];
		$mov = '14';
	}else if($doc_abr=='F'){
		$ser = 'F00'.$_SESSION['usuario_ser'];
		$mov = '1';
	}else if($doc_abr=='B'){
		$ser = 'B00'.$_SESSION['usuario_ser'];
		$mov = '1';
	}
		
	
		$tal_id='';
		$tal_ser='';
		$tal_fin='';
		$tal_num='';
		
		$dtsc= $oTalonario->correlativo($punven_id,$_POST['docid'],$ser);
		$dtc = mysqli_fetch_array($dtsc);
			$tal_id=$dtc['tb_talonario_id'];
			$tal_ser=$dtc['tb_talonario_ser'];
			$tal_fin=$dtc['tb_talonario_fin'];
			$tal_num=$dtc['tb_talonario_num'];
		mysqli_free_result($dtsc);
		
		$numero=$tal_num;
		$largo=strlen($tal_fin);
		$numero=str_pad($numero,$largo, "0", STR_PAD_LEFT);
		$numdoc=$tal_ser.'-'.$numero;
			
		//insertamos venta
		$rs=$oVenta->insertar(
			fecha_mysql($fec),
			fecha_mysql($fecvenpag),
			$_POST['docid'],
			$numdoc,
			$mon_id,
			$tipcamcot,
			$cli_id,
			$cli_nom,
			$cli_dir,
			$cli_pla,
			0,
			0,
			0,			
			0,
			0,
			$est,			
			$_SESSION['usuario_id'],
			$_SESSION['usuario_id'],
			$piso_id,
			$punven_id,
			'',
			0,//tb_venta_gra
			0,//tb_venta_ina
			0,//tb_venta_exo
			0,//tb_venta_grat
			0,//tb_venta_isc
			0,
			0,
			0,
			0,
			0,
			'',
			'',
			fecha_mysql($fec),
			'0',
			''
		);
		
		//ultima venta
		$dts=$oVenta->ultimoInsert();
		$dt = mysqli_fetch_array($dts);
		$ven_id=$dt['id'];
		mysqli_free_result($dts);
			
		$oCotizacion->insertar_docrelacionado($_POST['cotid'],$ven_id,$numdoc,'1');		
				
		$estado='1';
		if($tal_num==$tal_fin)
		{
			$estado='2';
		}
		$numero=$tal_num+1;
		$rs3 = $oTalonario->actualizar_correlativo($tal_id, $numero, $estado);
				
				
		$kar_des='VENTA';
		$mod_id = 3; // VENTA MOD 3
		$idm=$ven_id;//id de la op(modulo compras, ventas, etc)
		//insertamos kardex
		$oKardex->insertar(			
			fecha_mysql($fec),			
			$kar_des,
			$mod_id,
			$idm,
			$_SESSION['usuario_id'],
			$emp,
			'0'
		);
		
		//ultimo kardex
		$dts=$oKardex->ultimoInsert();
		$dt = mysqli_fetch_array($dts);
		$kar_id=$dt['id'];
		mysqli_free_result($dts);
		
		
		
		
		
	$dtsdet=$oCotizacion->mostrarCotizaciondetalle($_POST['cotid']);
	$num_rows= mysqli_num_rows($dtsdet);
	while($dtdet = mysqli_fetch_array($dtsdet))
    {
		
			$mar_id = $dtdet['tb_marca_id'];			
			$cat_id = $dtdet['tb_catalogo_id'];
			$pro_nom = $dtdet['tb_cotizaciondetalle_nom'];
			
			
			$dts=$oCatalogo->mostrarUno($cat_id,$mar_id);
			$dt = mysqli_fetch_array($dts);
				$pre_id	= $dt['tb_presentacion_id'];
				$cat_fac = $dt['tb_catalogo_fac'];
				//$pro_nom = $dt['tb_producto_nom'];
				$promar_id = $dt['tb_productomarca_id'];
			mysqli_free_result($dts);
	
			$des_uni =  $dtdet['tb_cotizaciondetalle_des'];	
			$valor_uni =  $dtdet['tb_cotizaciondetalle_valuni'];	
			$can =   $dtdet['tb_cotizaciondetalle_can']* 1;	
			
			if($des_uni==''){
				$des_uni=0;
			}
			
			$igv_uni = $valor_uni *0.18;
			$pre_uni=$valor_uni+$igv_uni;
			
			$val_tot = $valor_uni * $can;
			$des_tot = $des_uni * $can;
			$igv_tot = $igv_uni * $can;
			$pre_tot = $pre_uni * $can;
		
		$canqueda = $dtdet['tb_cotizaciondetalle_can']* 1;	
		
		$cat_cod = $dtdet['tb_catalogo_cod'];
			
		$icbper = 0;
		$est = 1;
		
		if($cat_id == 1){
			
			$promarpre_id = 0;
			
			$oVenta->insertar_detalle(			
				$cat_cod,
				$cat_id,
				$mar_id,
				$promarpre_id,
				$pro_nom,
				$can,
				$pre_uni,
				$icbper,
				$des_uni,
				$ven_id,
				$est
			);
			
		}else{
		
		$dtsmo=$oProductomarcaprecio->mostrar_filtro($promar_id,$punven_id);
		$num_rowsp= mysqli_num_rows($dtsmo);
								
		while($dt = mysqli_fetch_array($dtsmo))
		{
			$promarpre_id = $dt['tb_productomarcaprecio_id'];
			$stockdoc = $dt['tb_productomarcaprecio_stock']*1;

			if($can>0){
			
			if($can<=$stockdoc){
				
			$oVenta->insertar_detalle(			
				$cat_cod,
				$cat_id,
				$mar_id,
				$promarpre_id,
				$pro_nom,
				$can,
				$pre_uni,
				$icbper,
				$des_uni,
				$ven_id,
				$est
			);
			
			$stock_nuevo = $stockdoc - $can;
				
			if($promarpre_id>0){
				
				$oProductomarcaprecio->modificar_campo($promarpre_id,'stock',$stock_nuevo);
				
			}
			
			
			$dts=$oStock->stock_por_presentacion($pre_id,$mar_id,$alm);
			$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;
			$oStock->modificar($sto_id,$stock_nuevo);
			

				$kar_tipo=2;//1 entrada 2 salida
				$oKardex->insertar_detalle(
					$cat_id,
					$mar_id,
					$kar_tipo,
					$can,
					formato_money($valor_uni),
					$can,
					$kar_id,
					$alm
				);
			
			$can = 0;
			
			}else if($can>$stockdoc){
				
				
				$oVenta->insertar_detalle(			
				$cat_cod,
				$cat_id,
				$mar_id,
				$promarpre_id,
				$pro_nom,
				$stockdoc,
				$pre_uni,
				$icbper,
				$des_uni,
				$ven_id,
				$est
				);
			
				
			
				if($promarpre_id>0){
					
				$oProductomarcaprecio->modificar_campo($promarpre_id,'stock',0);
				
				}
				
				
				$dts=$oStock->stock_por_presentacion($pre_id,$mar_id,$alm);
				$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-$stockdoc;
				$oStock->modificar($sto_id,$stock_nuevo);
			
			
					$kar_tipo=2;//1 entrada 2 salida
					$oKardex->insertar_detalle(
						$cat_id,
						$mar_id,
						$kar_tipo,
						$stockdoc,
						formato_money($valor_uni),
						$stockdoc,
						$kar_id,
						$alm
					);
						
				$can = $can - $stockdoc ;
			
				}

			}
			
			
		}
		
		
		}
		
		
	}
		
		
		
		
		
		//cuenta ingresos
		$ctax=$oIngreso->obtener_cuenta_ingreso();
		$cta = mysqli_fetch_array($ctax);
			$ing_cue_id	=$cta['tb_cuenta_id'];
		mysqli_free_result($ctax);
		
		
		if($forpag==1){ //CONTADO
			
			$ingreso = 1;
			$est = 1;
			$modo='EFECTIVO';
			
		}else if($forpag==2){ //CREDITO
			$est = 2;
			$modo='CREDITO';
		}
		
		$rs1=$oVentapago->insertar(
				$forpag,
				$modpag,
				moneda_mysql($total),
				$numdiapag,
				fecha_mysql($fecvenpag),
				$est,
				$ven_id,
				'2'
			);
		$dtsvp=$oVentapago->ultimoInsert();
		$dtvp = mysqli_fetch_array($dtsvp);
		$venpag_id=$dtvp['id'];
		mysqli_free_result($dtsvp);
		if($ingreso==1){
			
		$rs1=$oVentapago->insertar_ventapago_ingreso(
				fecha_mysql($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);
			
			//ingreso
				$ing_det="VENTA $doc_nom $numdoc | $modo";
				$ing_est=1;
				$mod_id=3; //modulo 3 venta
				
				$rs2=$oIngreso->insertar(
					$_SESSION['usuario_id'],
					$_SESSION['usuario_id'],
					fecha_mysql($fec),
					fecha_mysql($fec),
					$_POST['docid'],
					$numdoc,
					$ing_det,
					moneda_mysql($total),
					$ing_est,
					$ing_cue_id,
					moneda_mysql($ing_subcue_id),
					$cli_id,
					$caj_id,
					$mod_id,
					$venpagiing_id,
					$forpag,
					$modpag,
					moneda_mysql(''),
					moneda_mysql(''),
					moneda_mysql(''),
					moneda_mysql(''),
					$_POST['nroope']
				);
			
		}
		
	
		$oVenta->actualizar_montos($ven_id,moneda_mysql($total_valorventa),moneda_mysql($total_igv),moneda_mysql($total),moneda_mysql($des_tot));	
		
	
	/////////GUIA DE REMISSSSIIIONN
/* 	
if($cli_id!=1){	
		$dts= $oDocumento->mostrarUno('24');
		$dt = mysqli_fetch_array($dts);
		$doc_nom=$dt['tb_documento_nom'];
		$doc_abr=$dt['tb_documento_abr'];
		mysqli_free_result($dts);
		
		
	if($doc_abr=='T'){
		$ser = 'T00'.$_SESSION['usuario_ser'];
	}
		
		$tal_idg='';
		$tal_serg='';
		$tal_fing='';
		$tal_numg='';
		
		$dtsct= $oTalonario->correlativo($_SESSION['puntoventa_id'],'24',$ser);
		$dtct = mysqli_fetch_array($dtsct);
			$tal_idg=$dtct['tb_talonario_id'];
			$tal_serg=$dtct['tb_talonario_ser'];
			$tal_fing=$dtct['tb_talonario_fin'];
			$tal_numg=$dtct['tb_talonario_num'];
		mysqli_free_result($dtsc);
		
		$numerog=$tal_numg;
		$largog=strlen($tal_fing);
		$numerog=str_pad($numerog,$largog, "0", STR_PAD_LEFT);
		$numdocg=$tal_serg.'-'.$numerog;
			
		//insertamos guia
		$rs=$oGuiaremision->insertar(
			fecha_mysql($fec),
			'24',
			$numdocg,
			$cli_id,
			'',
			'',
			'',
			'',
			$ven_id,
			$numdoc,
			$mov,
			'',
			'',
			$emp_dir,
			$guialle,
			'',
			$_SESSION['usuario_id'],
			$_SESSION['puntoventa_id'],
			$aten
		);
	
	//ultima venta
		$dts=$oGuiaremision->ultimoInsert();
		$dt = mysqli_fetch_array($dts);
		$guiaid=$dt['id'];
		mysqli_free_result($dts);
	
	$oCotizacion->insertar_docrelacionado($_POST['cotid'],$guiaid,$numdocg,'2');		
	
		
			$estado='1';
		if($tal_numg==$tal_fing)
		{
			$estado='2';
		}
		$numerog=$tal_numg+1;
		$rs3 = $oTalonario->actualizar_correlativo($tal_idg, $numerog, $estado);
		
		
		
		$dtsdet=$oCotizacion->mostrarCotizaciondetalle($_POST['cotid']);
		$num_rows= mysqli_num_rows($dtsdet);
		while($dtdet = mysqli_fetch_array($dtsdet))
		{
			
			$valor_uni =  $dtdet['tb_cotizaciondetalle_valuni'];	
			$can =   $dtdet['tb_cotizaciondetalle_can']* 1;	
			$des_uni =   $dtdet['tb_cotizaciondetalle_des'];	
			
			$val_unicondes = $valor_uni-$des_uni;
			$igv_uni = $val_unicondes *0.18;
			$pre_uni=($valor_uni-$des_uni)+$igv_uni;
			
			$mar_id = $dtdet['tb_marca_id'];			
			$cat_id = $dtdet['tb_catalogo_id'];
			$can =   $dtdet['tb_cotizaciondetalle_can']* 1;	
			$cat_cod = $dtdet['tb_catalogo_cod'];
			
			$oGuiaremision->insertar_detalle(
				$can,
				$cat_cod,
				$cat_id,
				$mar_id,
				'',
				$pre_uni,
				$guiaid
			);
	
	
		}
}
		
		
		$data['estpdfguia1'] = $guiaid; */
		
		$data['estpdfdoc1'] = $ven_id;
		
		
		
			$oCotizacion->modificar_campo($_POST['cotid'],'genven','1');
			
			$oCotizacion->modificar_campo($_POST['cotid'],'est','2');
	
	
	$data['est'] = '1';
	$data['msj'] = 'DOCUMENTOS GENERADOS CORRECTAMENTE.';
	echo json_encode($data);
	
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
?>

