// libfacturista, DLL para generar el XML, sellar y timbrar el CFDI.
// Ejemplo de uso de libfacturista en Dynamics AX (x++) - 2013-09-06
// Ariel Medina - 2013 - facturista.com

// Descripción de las funciones de la DLL en http://facturista.com/code_example.php?lang=api

// Ya que Dynamics puede producir el XML sellado, sólo se necesita timbrar
// Deberá referenciar la dll libfacturista_cs.dll

static void Job2(Args _args)

{
    str params; // Parámetros de timbrado
    int h; // Manejador para el comprobante

    info( strfmt("%1", libfacturista.ansiApi::libfacturista_version() ) ); 

	h = 0;
	
	// Es necesario llamar a _cfdi_xml_cargar porque Diverza sólo devuelve el timbre, entonces, necesitamos tener cargado el XML para poder insertar la información del timbre en el nodo adecuado del XML.
	
    h = libfacturista.ansiApi::cfdi_xml_cargar(h,"C:\\tmp\\ejemplo_sellado.xml");
    
    if(h != 0)
    	{

    	params = "PAC=Diverza;RefID=1234abc;RfcReceptor=XXX010101AAA;RfcEmisor=AAA010101AAA;ArchivoRespuesta=C:\\tmp\\RespuestaPAC.txt";
		params = params + ";SSL=1;Servidor=demotf.buzonfiscal.com;Puerto=443;ContrasenaCertificadoCliente=AAA010101AAA;ArchivoCertificadoCliente=C:\\tmp\\AAA010101AAA.pem";

		// El segundo parámetro de _cfdi_timbrar es la cadena vacía para timbrar lo que tenemos en memoria
		if(	libfacturista.ansiApi::cfdi_timbrar(h, "", "C:\\tmp\\ejemplo_timbrado.xml", 6, params) != 0 )
			info("Timbrado exitoso");
		else
			info( libfacturista.ansiApi::cfdi_error(h) );

		}
	else
		info("No se pudo cargar el archivo");
 
}