<?php
date_default_timezone_set('America/Buenos_Aires');

include('exceptionhandler.php');
include('wsaa.class.php');
include('wsfev1.class.php');


$wsaa = new WSAA();

// Compruebo fecha de exp y si la excede genero nuevo TA

$fecha_ahora = date("Y-m-d H-i-s");
$fecha_exp_TA = $wsaa->get_expiration();

if ($fecha_exp_TA < $fecha_ahora) {
if ($wsaa->generar_TA()) {
    echo 'Nuevo TA, válido hasta: '. $wsaa->get_expiration() .'<br>';
  } else {
  	echo 'Error al obtener TA';
  }
} else {
	 echo 'TA reutilizado, válido hasta: '. $wsaa->get_expiration() .'<br>';
}

//Conecto Wsfev1

$wsfev1 = new WSFEV1();

// Carga el archivo TA.xml
$wsfev1->openTA();

$ptovta = 1; //Punto de Venta SIN CEROS ADELANTE!!
$tipocbte = 1; // Factura A: 1 --- Factura B: 6 ---- Factura C: 11

$regfe['CbteTipo']=$tipocbte;
$regfe['Concepto']=3; //Productos: 1 ---- Servicios: 2 ---- Prod y Serv: 3
$regfe['DocTipo']=80; //80=CUIT -- 96 DNI --- 99 general cons final
$regfe['DocNro']=30500010912;  //0 para consumidor final
$regfe['CbteFch']=date('Ymd'); 	// fecha emision de factura
$regfe['ImpNeto']=1000;			// Imp Neto
$regfe['ImpTotConc']=0;			// no gravado
$regfe['ImpIVA']=210;				// IVA liquidado
$regfe['ImpTrib']=0;			// otros tributos
$regfe['ImpOpEx']=0;			// operacion exentas
$regfe['ImpTotal']=1210;			// total de la factura. ImpNeto + ImpTotConc + ImpIVA + ImpTrib + ImpOpEx

if ($regfe['Concepto'] == "3" || $regfe['Concepto'] == "2" ) { // SI ES SERVICIO AGREGAMOS FECHAS

		$regfe['FchServDesde']=date("Ymd");	// solo concepto 2 o 3
		$regfe['FchServHasta']=date("Ymd");	// solo concepto 2 o 3
		$regfe['FchVtoPago']=date("Ymd");		// solo concepto 2 o 3
}

$regfe['MonId']='PES'; 			// Id de moneda 'PES'
$regfe['MonCotiz']=1;			// Cotizacion moneda.

// Comprobantes asociados (solo notas de crédito y débito):
$regfeasoc['Tipo'] = null; //tipo de comprobante asociado
$regfeasoc['PtoVta'] = 1;
$regfeasoc['Nro'] = 2;
//$regfeasoc['Cuit'] = 20306094905; // CUIT EMISOR DEL COMPROBANTE ASOCIADO
//$regfeasoc['CbteFch'] = "20190924";

// Detalle de otros tributos
$regfetrib['Id'] = 0; 		 // DEJAR EN 0 CUANDO NO SE ENVIAN OTRO TRIBUTOS
$regfetrib['Desc'] = '';
$regfetrib['BaseImp'] = 0;
$regfetrib['Alic'] = 0;
$regfetrib['Importe'] = 0;

// Detalle de iva --- REPETIR POR CADA ALICUOTA DE LA FACTURA
$regfeiva[0]['Id'] = 5;
$regfeiva[0]['BaseImp'] = 1000;
$regfeiva[0]['Importe'] = 210;

//adicionales factura de crédito electronica
$regfeadic['Id']   = 2101; // PARA NOTAS INFORMAR 22
$regfeadic['Valor'] = "123456789123";

//Pido ultimo numero autorizado
$nro = $wsfev1->FECompUltimoAutorizado($ptovta, $tipocbte);
if(!is_numeric($nro)) {
	echo "<br>Error al obtener el ultimo numero autorizado<br>";
	$nro=0;
	$nro1 = 0;
	echo "Code: ", $wsfev1->Code, "<br>";
	echo "Msg: ", $wsfev1->Msg, "<br>";
	echo "Obs: ", $wsfev1->ObsCode, "<br>";
	echo "Msg: ", $wsfev1->ObsMsg, "<br>";

} else {
	echo "<br>FECompUltimoAutorizado: $nro <br>"; // no es necesario
	$nro1 = $nro + 1;
	$cae = $wsfev1->FECAESolicitar($nro1, // ultimo numero de comprobante autorizado mas uno
                $ptovta,  // el punto de venta
                $regfe, // los datos a facturar
				$regfeasoc, // datos de comprobante asociado
				$regfetrib, // datos tributos
				$regfeiva, // array ivas
                $regfeadic // adicionales
             );
$caenum = $cae['cae'];
$caefvt = $cae['fecha_vencimiento'];
$numero = $nro+1;

}

	if ($caenum != "") {

$comprob = str_pad($tipocbte, 3, "0", STR_PAD_LEFT);
$punto =  str_pad($ptovta, 5, "0", STR_PAD_LEFT);

echo "Factura ".$punto." ".str_pad($numero, 8, "0", STR_PAD_LEFT);
echo "<br>";
echo "Cae: ", $caenum."  ";
echo "Fecha Vto: ", date( "d/m/Y", strtotime( $caefvt ) );

//aqui debo agregar el codigo para actualizar el comprobante como autorizado en AFIP





} else {

	echo "<br>Error al obtener CAE<br>";
	echo "Code: ", $wsfev1->Code, "<br>";
	echo "Msg: ", $wsfev1->Msg, "<br>";
	echo "Obs: ", $wsfev1->ObsCode, "<br>";
	echo "Msg: ", $wsfev1->ObsMsg, "<br>";
	echo "Obs2: ", $wsfev1->ObsCode2, "<br>";
	echo "Msg2: ", $wsfev1->ObsMsg2, "<br>";
}
?>
