Como dije arriba, dependiendo del resultado, quiero mostrar las respuestas (en un log) que me dan cuando se autoriza una factura o no.
El tema es que los tipos de arrays del response son un poco confusos y no sé como manejarlos. Dejo una parte del codigo y describo un poco las variables y la idea.
1. Declaro una variable response (o respuesta) de tipo AutorizarComprobanteReturnType que devuelve una respuesta con 5 campos:
* campo comprobanteResponse de tipo ComprobanteResponseType que tiene datos del comprobante autorizado, esto seguramente lo voy a ver después en otro hilo, ya que todavia no llegué a esa parte, es en caso de que la factura sea aceptada.
* campo arrayObservaciones de tipo ArrayCodigosDescripcionesType es un Array del tipo CodigoDescripcionType y que tiene dos campos Codigo (tipo short) y Descripcion (tipo string)
* campo arrayErrores (idem arrayObservaciones )
* campo arrayErroresFormato de tipo ArrayCodigosDescripcionesStringType es un Array de que es del tipo CodigoDescripcionStringType y que tambien tiene dos campos Codigo (tipo short) y Descripcion (tipo string)
* campo Resultado de tipo ResultadoSimpleType que es un string (una letra): Conjunto de valores permitidos: { 'A', 'O', 'R' }
El resultado que puede devolver es un A de Aceptado, R de Rechazado y O de Observaciones.
El tema es que cuando analizo el resultado con el Equals no entra en ninguno de los if y sigue de largo. Corriendolo paso a paso el respone.resultado tiene una letra R (Rechazado), el response.arrayErroresFormato tiene los codigo y las descripciones de los errores, y los otros campos: comprobanteResponse, arrayErroresFormato y arrayObservaciones bienen nulos, pero como dije arriba no entra a ningún if..
Preguntas: tengo que hacer una conversion del response.resultado? me falta declarar algo? como hago para que entre a los if.. e imprima los errores?.
Por la dudas dejo el manual, no es necesario que lo lean todo solo vean la pagina 16 y ahí describe los tipos de cada campo del AutorizarComprobanteReturnType
[URL="http://www.afip.gob.ar/fe/documentos/Manual_Desarrollador_WSCT_v01.pdf"]http://www.afip.gob.ar/fe/documentos/Manual_Desarrollador_WSCT_v01.pdf[/URL]
Parte del codigo:
Código:
logger.Info("Procesando Comprobante N°{0}", factura.ComprobanteRelacionado); WSFECT.AutorizarComprobanteReturnType response = solicitarCAE.GetCAERequest(factura, servicio, AuthRequest); if (response.resultado.Equals("R")) { logger.Info("Errores reportados por Web Service de la AFIP"); foreach (WSFECT.CodigoDescripcionType error in response.arrayErrores) { logger.Error("Codigo: {0}\nMensaje: {1}", error.codigo, error.descripcion ); } logger.Info("Errores de Formato"); foreach (WSFECT.CodigoDescripcionStringType error in response.arrayErroresFormato) { logger.Error("Codigo: {0}\nMensaje: {1}", error.codigo, error.descripcion ); } } else if (response.resultado.Equals("O")) { if (response.arrayObservaciones != null) { logger.Info("Factura rechaza con observaciones"); foreach (WSFECT.CodigoDescripcionType observacion in response.arrayObservaciones) { logger.Error("Codigo: {0}\nMensaje: {1}", observacion.codigo, observacion.descripcion); } } else { logger.Info("Factura rechazada sin observaciones"); } } else if (response.resultado.Equals("A")) { logger.Info("Factura aprobada con CAE N°: {0} con vencimiento {1}", response.comprobanteResponse.CAE, response.comprobanteResponse.fechaVencimientoCAE); } }