<?php 

date_default_timezone_set('America/Costa_Rica');




require('fe_objeto_detalles.php');
require ('fe_objeto_impuestos.php');	// se agrega en la version 4.4
require ('fe_objeto_medios_pago.php');	// se agrega en la version 4.4
require ('fe_consultasbd.php');	//Realizas las consultas a BD para la optencion de datos






 

  $fecha_actual=  date('Y-m-d') ;
  $fecha_actualizacion =  $parametros['fec_actualizacion'];
 if ($fecha_actual >= $fecha_actualizacion ){     /////////////////////////////// version 4.3 //////////////////////////////////////////
/*******************************************************
		GENERA EL XML DE DETALLE DEL COMPROBANTE
*********************************************************/


/*
	$_GET['n'] = numero de comprobante a generar si se quiere generar uno especifico
*/

if(isset($_GET['n'])){
	$consecutivo = $_GET['n'];
	$tipocomprobante = '04';
	$cod_verificador = mt_rand(10000000 , 99999999);
	$numeroConce = '00100001'.$tipocomprobante.sprintf("%010d", $consecutivo);
	$clave = '506'.date('dmy',strtotime('now')).'000114930394'.$numeroConce.'1'.$cod_verificador;
}else{
	$clave = $facturas['cdgclave'];
	$numeroConce = $facturas['numcomp'];
}




	$numcomp = $facturas['numcomp'];
	$tipocomprobante = substr("$numcomp",8,2);


	if ($tipocomprobante == "04"){	
		
$encabezado = '
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.4/tiqueteElectronico     https://tribunet.hacienda.go.cr/docs/esquemas/2016/v4.4/TiqueteElectronico_V4.4.xsd" 
 xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.4/tiqueteElectronico"';

	}else{
	
$encabezado = '
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.4/facturaElectronica https://tribunet.hacienda.go.cr/docs/esquemas/2016/v4.4/facturaElectronica_V4.4.xsd" 
 xmlns="https://cdn.comprobanteselectronicos.go.cr/xml-schemas/v4.4/facturaElectronica"';

 
	
	 }




 
function formatoFecha($x){	
	if(isset($_GET['n']))  
		$fecha = new DateTime(date('Y-m-d h:i:s',strtotime('now')));	
	else
		$fecha = new DateTime($x);
		
	return $fecha->format('c');
 }

$fechaEmision = formatoFecha($facturas['fechac']);
 
if(!empty($facturas['cdgactcli'])){   //   se agrega en la version 4.4 si cdgact esta vacia /////////
$data = array(
	'Clave' => $clave,	
	'ProveedorSistemas' =>$web_0000['provesistema'],			  // se agrega codigo de actividad version 4.4 
	'CodigoActividadEmisor' =>$web_0000['cdgact'],              // se cambia nombre de  actividad version 4.4 
	'CodigoActividadReceptor' =>$facturas['cdgactcli'],	              // se cambia nombre de  actividad version 4.4 
	'NumeroConsecutivo' => $numeroConce,	
	'FechaEmision' =>$fechaEmision,	
	'Emisor' => [
		'Nombre'=>$web_0000['RAZSOC'],
		'Identificacion'=>[
			'Tipo'=>$web_0000['TIPCEDEMP'],
			'Numero'=>$web_0000['CEDJUR'],
		],
		'Ubicacion'=>[
			'Provincia'=>$web_0000['PROVINEMP'],
			'Canton'=>sprintf("%02d",$web_0000['CANTONEMP']),
			'Distrito'=>sprintf("%02d",$web_0000['DISTRIEMP']),
		//	'Barrio'=>sprintf("%02d",$web_0000['BARRIOEMP']),         // se quita la obligatoriedad  version 4.4 
			'OtrasSenas'=>$web_0000['DIREMP'],
		],
		'Telefono'=>[
			'CodigoPais'=>$web_0000['CDGPAISEMP'],
			'NumTelefono'=>$web_0000['NUMTEL'],
		],		    												 // se quita la obligatoriedad de fax  version 4.4 
		'CorreoElectronico'=>$web_0000['COREMP'],	
	]
	);
	
	 }else{   	                                   /////////////////   se agrega en la version 4.4 si cdgact esta lleno  /////////

$data = array(
	'Clave' => $clave,	
	'ProveedorSistemas' =>$web_0000['provesistema'],			  // se agrega codigo de actividad version 4.4 
	'CodigoActividadEmisor' =>$web_0000['cdgact'],	              // se cambia nombre de  actividad version 4.4 
	'NumeroConsecutivo' => $numeroConce,	
	'FechaEmision' =>$fechaEmision,	
	'Emisor' => [
		'Nombre'=>$web_0000['RAZSOC'],
		'Identificacion'=>[
			'Tipo'=>$web_0000['TIPCEDEMP'],
			'Numero'=>$web_0000['CEDJUR'],
		],
		'Ubicacion'=>[
			'Provincia'=>$web_0000['PROVINEMP'],
			'Canton'=>sprintf("%02d",$web_0000['CANTONEMP']),
			'Distrito'=>sprintf("%02d",$web_0000['DISTRIEMP']),
		//	'Barrio'=>sprintf("%02d",$web_0000['BARRIOEMP']),         // se quita la obligatoriedad  version 4.4 
			'OtrasSenas'=>$web_0000['DIREMP'],
		],
		'Telefono'=>[
			'CodigoPais'=>$web_0000['CDGPAISEMP'],
			'NumTelefono'=>$web_0000['NUMTEL'],
		],		    												 // se quita la obligatoriedad de fax  version 4.4 
		'CorreoElectronico'=>$web_0000['COREMP'],	
	]
	);

	
	
		 } 	                                   /////////////////   se agrega en la version 4.4 si  cierra condicional cdgact  /////////
	
	
	if($web_0301['clitributa']  !== '0'){	    // SE CAMBIA EN LA VERSION 4.3 	
		$data['Receptor'] =
	[
		'Nombre'=>$facturas['dsccli'],
		'Identificacion'=>[
			'Tipo'=>$facturas['cedtip'],
			'Numero'=>$facturas['cedcli'],
		],

		'Telefono'=>[
			'CodigoPais'=>$web_0301['CDGPAIS'], //TODO Revisar codigos 
			'NumTelefono'=>$web_0301['NUMTEL'],
		],		
		/*'Fax'=>[
			'CodigoPais'=>$web_0301['CDGPAIS'],
			'NumTelefono'=>$web_0301['NUMTEL'],
			'CorreoElectronico'=>$web_0301['corcli'],
		],*/
		'CorreoElectronico'=>$web_0301['corcli'],		
	
	];
	
	
	} else {	//   si el cogigo es igual a 9999
			$data['Receptor'] =
	[
		'Nombre'=>$facturas['dsccli'],
					
	];

	}
	

	
	
	$data['CondicionVenta'] = $facturas['conventa'];
	
	if($facturas['conventa'] === '02'){ 					//TODO codificacion existente del sistema
		$data['PlazoCredito'] = $facturas['pladia'];
	}
		
				

	
	//Detalle de la mercancía o servicio prestado
	// NOTA: ListaDetalles es una varible que será remplazada con todo el detalles de facturas
	$data['DetalleServicio'] = 'ListaDetalles';
	
	
	//c)  Resumen de la factura/Total de la Factura	
	

	       
	$data['ResumenFactura'] =
		[

	    'CodigoTipoMoneda'=>[                                // se crea nuevo nodo codigotipomoneda en la version 4.3
			'CodigoMoneda'=>$facturas['tipmoneda'],
			'TipoCambio'=>$facturas['tipcamdol'],
			
			],
	
	

		
			'TotalServGravados'=>$facturas['totsergra'],
			'TotalServExentos'=>$facturas['totserexe'],
			'TotalServExonerado'=>$facturas['totserexo'],                // se agrega en la version 4.3
			'TotalServNoSujeto'=>$facturas['totsernosuj'],                // se agrega en la version 4.4
			'TotalMercanciasGravadas'=>$facturas['totmergra'],
			'TotalMercanciasExentas'=>$facturas['totmerexe'],			
			'TotalMercExonerada'=>$facturas['totmerexo'],               // se agrega en la version 4.3
			'TotalMercNoSujeta'=>$facturas['totmernosuj'],               // se agrega en la version 4.4

			'TotalGravado'=>$facturas['totgravado'],
			'TotalExento'=>$facturas['totexento'],
			'TotalExonerado'=>$facturas['totexonerado'],                           // se agrega en la version 4.3 
			'TotalNoSujeto'=>$facturas['totnosujeto'],                           // se agrega en la version 4.4 
			'TotalVenta'=>$facturas['totventa'],
			'TotalDescuentos'=>$facturas['totdescu'],
			'TotalVentaNeta'=>$facturas['totvennet'],	
			
			
			
			
			'TotalDesgloseImpuesto'=>'',	                                  //  se agrega en la version 4.4  	

			'TotalImpuesto'=>$facturas['monimp'], 			

			'MedioPago'=>''	,												//  se agrega en la version 4.4 

			'TotalComprobante'=>$facturas['totcompro'],			
		];
		
		
		
	
		
				 if(!empty($facturas['tipdocref'])){   //  nuevo
			$data['InformacionReferencia'] = [
				'TipoDocIR'=>$facturas_notas['tipdocref'],         // SE CAMBIA NOMBRE EN LA VERSION 4.4
				'Numero'=>$facturas_notas['clanumref'],
				'FechaEmisionIR'=>formatoFecha($facturas_notas['feccomref']),    // SE CAMBIA NOMBRE EN LA VERSION 4.4
				'Codigo'=>$facturas_notas['codref'],
				'Razon'=>$facturas_notas['razref'],
						];
	
				}
				

		
//	$data['Normativa'] =                                                 // se elimina normativa version 4.3
 
	//	[
	//		'NumeroResolucion'=> 'DGT-R-48-2016',
	//		'FechaResolucion'=>'07-10-2016 12:00:00',
	//	];

 
 }else{                      /////////////////////////////// version 4.2 //////////////////////////////////////////////////////
 
/*******************************************************
		GENERA EL XML DE DETALLE DEL COMPROBANTE
*********************************************************/


/*
	$_GET['n'] = numero de comprobante a generar si se quiere generar uno especifico
*/

if(isset($_GET['n'])){
	$consecutivo = $_GET['n'];
	$tipocomprobante = '04';
	$numeroConce = '00100001'.$tipocomprobante.sprintf("%010d", $consecutivo);
	$clave = '506'.date('dmy',strtotime('now')).'000114930394'.$numeroConce.'1'.'12345678';
}else{
	$clave = $facturas['cdgclave'];
	$numeroConce = $facturas['numcomp'];
}




	$numcomp = $facturas['numcomp'];
	$tipocomprobante = substr("$numcomp",8,2);


	if ($tipocomprobante == "04"){	
		
$encabezado = '
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/tiqueteElectronico https://tribunet.hacienda.go.cr/docs/esquemas/2016/v4.2/TiqueteElectronico_V4.2.xsd" 
 xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/tiqueteElectronico"';

	}else{
	
$encabezado = '
 xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xsi:schemaLocation="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica https://tribunet.hacienda.go.cr/docs/esquemas/2016/v4.2/facturaElectronica_V4.2.xsd" 
 xmlns="https://tribunet.hacienda.go.cr/docs/esquemas/2017/v4.2/facturaElectronica"';

 
	
	 }




 
function formatoFecha($x){	
	if(isset($_GET['n']))  
		$fecha = new DateTime(date('Y-m-d h:i:s',strtotime('now')));	
	else
		$fecha = new DateTime($x);
		
	return $fecha->format('c');
 }

$fechaEmision = formatoFecha($facturas['fechac']);
 
$data = array(
	'Clave' => $clave,	
	'NumeroConsecutivo' => $numeroConce,	
	'FechaEmision' =>$fechaEmision,	
	'Emisor' => [
		'Nombre'=>$web_0000['RAZSOC'],
		'Identificacion'=>[
			'Tipo'=>$web_0000['TIPCEDEMP'],
			'Numero'=>$web_0000['CEDJUR'],
		],
		'Ubicacion'=>[
			'Provincia'=>$web_0000['PROVINEMP'],
			'Canton'=>sprintf("%02d",$web_0000['CANTONEMP']),
			'Distrito'=>sprintf("%02d",$web_0000['DISTRIEMP']),
			'Barrio'=>sprintf("%02d",$web_0000['BARRIOEMP']),
			'OtrasSenas'=>$web_0000['DIREMP'],
		],
		'Telefono'=>[
			'CodigoPais'=>$web_0000['CDGPAISEMP'],
			'NumTelefono'=>$web_0000['NUMTEL'],
		],		
		'Fax'=>[
			'CodigoPais'=>$web_0000['CDGPAISEMP'],
			'NumTelefono'=>$web_0000['NUMTEL'],
		],
		'CorreoElectronico'=>$web_0000['COREMP'],
		
	]
	);
	
	if($web_0301['clitributa']  !== '0'){		
		$data['Receptor'] =
	[
		'Nombre'=>$facturas['dsccli'],
		'Identificacion'=>[
			'Tipo'=>$facturas['cedtip'],
			'Numero'=>$facturas['cedcli'],
		],
		/*	
		'NombreComercial'=>$facturas['dsccli'],
		'Ubicacion'=>[
			'Provincia'=>$web_0301['cdgprovin'],
			'Canton'=>sprintf("%02d",$web_0301['cdgcanton']),
			'Distrito'=>sprintf("%02d",$web_0301['cdgdistri']),
			'Barrio'=>sprintf("%02d",$web_0301['cdgbarrio']),
			'OtrasSenas'=>$web_0301['DIRCLI'],
		],
		*/
		'Telefono'=>[
			'CodigoPais'=>$web_0301['CDGPAIS'], //TODO Revisar codigos 
			//'CodigoPais'=>'506',
			'NumTelefono'=>$web_0301['NUMTEL'],
			//'NumTelefono'=>'83587921',
		],		
		/*'Fax'=>[
			'CodigoPais'=>$web_0301['CDGPAIS'],
			'NumTelefono'=>$web_0301['NUMTEL'],
			'CorreoElectronico'=>$web_0301['corcli'],
		],*/
		'CorreoElectronico'=>$web_0301['corcli'],		
		//'CorreoElectronico'=>'agomez@webcomcostarica.com',	//TODO Revisar correo	
	];
	
	
	} else {	//   si el cogigo es igual a 9999
			$data['Receptor'] =
	[
		'Nombre'=>$facturas['dsccli'],
				

		/*	
		'NombreComercial'=>$facturas['dsccli'],
		'Ubicacion'=>[
			'Provincia'=>$web_0301['cdgprovin'],
			'Canton'=>sprintf("%02d",$web_0301['cdgcanton']),
			'Distrito'=>sprintf("%02d",$web_0301['cdgdistri']),
			'Barrio'=>sprintf("%02d",$web_0301['cdgbarrio']),
			'OtrasSenas'=>$web_0301['DIRCLI'],
		],
		*/
		//'Telefono'=>[
		//	'CodigoPais'=>$web_0301['CDGPAIS'], //TODO Revisar codigos 
			//'CodigoPais'=>'506',
		//	'NumTelefono'=>$web_0301['NUMTEL'],
			//'NumTelefono'=>'83587921',
		//],		
		/*'Fax'=>[
			'CodigoPais'=>$web_0301['CDGPAIS'],
			'NumTelefono'=>$web_0301['NUMTEL'],
			'CorreoElectronico'=>$web_0301['corcli'],
		],*/
	//	'CorreoElectronico'=>$web_0301['corcli'],		
		//'CorreoElectronico'=>'agomez@webcomcostarica.com',	//TODO Revisar correo	
	];
	
		
	
	}
	

	
	
	$data['CondicionVenta'] = $facturas['conventa'];
	
	if($facturas['conventa'] === '02'){ 					//TODO codificacion existente del sistema
		$data['PlazoCredito'] = $facturas['pladia'];
	}
		
				
// 	$data['MedioPago'] = $facturas['medpago'];                          // se se mueve de pocision en la version 4.4 
	
	//Detalle de la mercancía o servicio prestado
	// NOTA: ListaDetalles es una varible que será remplazada con todo el detalles de facturas
	$data['DetalleServicio'] = 'ListaDetalles';
	
	
	//c)  Resumen de la factura/Total de la Factura	
	$data['ResumenFactura'] =
		[
			'CodigoMoneda'=>$facturas['tipmoneda'],
			'TipoCambio'=>$facturas['tipcamdol'],
			'TotalServGravados'=>$facturas['totsergra'],
			'TotalServExentos'=>$facturas['totserexe'],
			'TotalMercanciasGravadas'=>$facturas['totmergra'],
			'TotalMercanciasExentas'=>$facturas['totmerexe'],
			'TotalGravado'=>$facturas['totgravado'],
			'TotalExento'=>$facturas['totexento'],
			'TotalVenta'=>$facturas['totventa'],
			'TotalDescuentos'=>$facturas['totdescu'],
			'TotalVentaNeta'=>$facturas['totvennet'],			
			'TotalImpuesto'=>$facturas['monimp'], 
			'MedioPago' =>$facturas['totcompro'],           //  se agrega en la version 4.4   monto  
			'TipoMedioPago' => $facturas['medpago'],        //  se agrega en la version 4.4  codigo
			'TotalMedioPago' =>$facturas['totcompro'],           //  se agrega en la version 4.4   monto  
			'TotalComprobante'=>$facturas['totcompro'],			
		];
		
		 if(!empty($facturas['tipdocref'])){   //  nuevo
			$data['InformacionReferencia'] = [
					'TipoDoc'=>$facturas['tipdocref'],
					'Numero'=>$facturas['clanumref'],
					'FechaEmision' =>$fechaEmision,			
					'Codigo'=>$facturas['codref'],	
					'Razon'=>$facturas['rezref'],
						];
	
				}
		
	$data['Normativa'] = 
		[
			'NumeroResolucion'=> 'DGT-R-48-2016',
			'FechaResolucion'=>'07-10-2016 12:00:00',
		];

 
 
  }
