= Constatación de Comprobantes emitidos (CAI, CAE, CAEA) por Web Service AFIP = [[TracNav(noreorder|FacturaElectronica)]] Interfaz para los Servicios Web para verificar en forma dinámica si los comprobantes recibidos se encuentran autorizados por la AFIP. [http://infoleg.mecon.gov.ar/infolegInternet/anexos/15000-19999/18771/texact.htm Ley de Procedimiento Tributario N°11683] (Artículo 33) modificado por [http://infoleg.mecon.gov.ar/scripts1/busquedas/cnsnorma.asp?tipo=Ley&nro=25795 Ley N° 25795] y reglamentado por [http://biblioteca.afip.gob.ar/dcp/DEC_C_000477_2007_05_02 Decreto 477/2007] == Índice == [[Image(htdocs:logo-pyafipws.png, align=right)]] [[TOC(noheading,inline,depth=3)]] == Descripción General == Este servicio permite verificar la validez en los comprobantes respaldatorios de las operaciones, tanto con Código de Autorización de Impresión (CAI), el Código de Autorización Electrónico, y CAE Anticipado "CAEA". La modalidad CAE y CAEA es soportada por dos webservices: * [wiki:ProyectoWSFEv1 WSFEv1](Web Service de Factura Electrónica Versión 1) correspondiente a la RG 2485 y modificatorias * [wiki:FacturaElectronicaMTXCAService WSMTXCA] (Web Service de Factura Electrónica con detalle) correspondiente a la RG 2904 Actualmente los comprobantes se pueden validar también por el servicio interactivo de AFIP: * http://www.afip.gob.ar/genericos/imprentas/facturas.asp Constatación de comprobantes emitidos (C.A.I.) * http://www.afip.gob.ar/genericos/consultaCAE/ Constatación de comprobantes electrónicos emitidos (C.A.E.) * http://www.afip.gob.ar/genericos/consultaCAEA/ Constatación de comprobantes electrónicos emitidos (C.A.E.A.) Este webservice permite la automatización de dichas consultas sin la necesidad de intervención del usuario. Publicación: Septiembre de 2013 [http://www.afip.gob.ar/ws/WSCDCV1/ManualDelDesarrolladorWSCDCV1.pdf Documentación Oficial] Se encuentran obligados a constatar la debida autorización de las facturas o documentos equivalentes -de conformidad con lo dispuesto por el artículo agregado a continuación del Artículo 33 de la [http://infoleg.mecon.gov.ar/infolegInternet/anexos/15000-19999/18771/texact.htm Ley Nº 11.683], texto ordenado en 1998 y sus modificaciones- los sujetos que, por poseer montos de compras significativos, montos de ventas relevantes y/o desarrollen actividades de riesgo y/o de relevante interés fiscal (según [http://biblioteca.afip.gob.ar/dcp/DEC_C_000477_2007_05_02 Decreto 477/2007]): 1. Exportadores y sujetos que realicen actividades asimilables a la exportación, con carácter de habitualistas. 2. Contribuyentes que actúen como agentes de retención del Impuesto al Valor Agregado. 3. Contribuyentes que reciban comprobantes electrónicos. 4. El ESTADO NACIONAL y sus dependencias y/u organismos dependientes, centralizados, descentralizados o autárquicos. == Descargas e Instalación == Ver archivos y últimas actualizaciones para descargas en [https://github.com/reingart/pyafipws/releases GitHub] (actualizado) y [http://code.google.com/p/pyafipws/downloads/list GoogleCode] (histórico): * Instalador: [https://www.sistemasagiles.com.ar/soft/pyafipws/PyAfipWs-2.7.1994-32bit+wsaa_2.11c+wscdc_1.02e-homo.exe] * Ejemplos de código (última versión de desarrollo): * Visual Basic 5/6: [https://github.com/reingart/pyafipws/blob/master/ejemplos/wscdc/wscdc.bas wscdc.bas] * Visual Fox Pro 5: [https://github.com/reingart/pyafipws/blob/master/ejemplos/wscdc/wscdc.prg wscdc.prg] * Visual Basic .NET: [https://github.com/reingart/pyafipws/blob/master/ejemplos/wscdc/wscdc.vb wscdc.vb] * Muestra de archivo de intercambio: * [attachment:salida_wscdc.txt salida_wscdc.txt] texto plano, universal (con campos de ancho fijo, simil COBOL) * [wiki:ManualPyAfipWs Manual de Uso]: Documentación General ([http://www.sistemasagiles.com.ar/trac/wiki/ManualPyAfipWs?format=pdf PDF]) y [http://www.afip.gob.ar/ws/WSCDCV1/ManualDelDesarrolladorWSCDCV1.pdf Manual del Desarrollador WSCDCv1 (AFIP)] * Código Fuente (Python): ver [https://code.google.com/p/pyafipws/source/browse/wscdc.py wscdc.py] y [https://code.google.com/p/pyafipws/source/browse/tests/wscdc.py unit test] == Métodos == Métodos principales: * '''`ConstatarComprobante(cbte_modo, cuit_emisor, pto_vta, cbte_tipo,cbte_nro, cbte_fch, imp_total, cod_autorizacion, doc_tipo_receptor, doc_nro_receptor)`''': Constatación de Comprobantes. Recibe los datos del comprobante a verificar (todos obligatorios excepto los datos del receptor). Devuelve verdadero en caso de ejecución satisfactoria, falso en caso de error. Establece `Resultado`, `Obs` y demás atributos. Ver [http://www.sistemasagiles.com.ar/trac/wiki/ConstatacionComprobantes#Ejemplos Ejemplos]. Métodos secundarios: * '''`Conectar(cache=None, url="", proxy="")`''': en homologación no hace falta pasarle ningùn paràmetro. En producciòn, el segudo parametro es la WSDL. * '''`Dummy()`''': devuelve estado de servidores. Devuelve verdadero en caso de ejecución satisfactoria, falso en caso de error. Establece `AppServerStatus`, `DbServerStatus` y `AuthServerStatus` Métodos auxiliares: * '''`ConsultarModalidadComprobantes(sep="|")`''': Recuperador de modalidades de autorización de comprobantes (`"CAI"`, `"CAE"`, `"CAEA"`) * '''`ConsultarTipoComprobantes(sep="|")`''': Recuperador de valores referenciales de códigos de Tipos de comprobante * '''`ConsultarTipoDocumentos(sep="|")`''': Recuperador de valores referenciales de códigos de Tipos de Documentos * '''`ConsultarTipoOpcionales(sep="|")`''': Recuperador de valores referenciales de códigos de Tipos de datos Opcionales == Atributos == Propiedades principales retornadas por el WSCDC: * '''`Resultado`''': `"A"`: Aprobado, `"O"`: Observado, `"R"`: Rechazado * '''`FechaCbte`''': fecha del comprobante * '''`PuntoVenta`''': punto de venta del comprobante * '''`CbteNro`''': fecha del comprobante * '''`DocTipo`''': tipo de documento del receptor * '''`DocNro`''': número de documento del receptor * '''`ImpTotal`''': importe del comprobante * '''`EmisionTipo`''': modo de comprobante (CAE, CAEA, CAI) * '''`CAI`''', '''`CAE`''', '''`CAEA`''': código de autorización Propiedades con validaciones devueltas por el WSCDC: * '''`Obs`''' ('''`Observaciones`'''): mensajes advertencia de AFIP * '''`ErrMsg`''', '''`ErrCode`''' ('''`Errores`'''): mensajes de error de AFIP Propiedades secundarias del WSCDC: * '''`Token`''': es el código de autorización generado por la AFIP (WSAA) * '''`Sign`''': es la firma de autorización generado por la AFIP (WSAA) * '''`Cuit`''': es el número de CUIT del emisor de facturas, formato string sin guiones. * '''`AppServerStatus`''', '''`DbServerStatus`''', '''`AuthServerStatus`''': estados de los servidores de AFIP (string “OK” en caso de estar funcionales) * '''`XmlRequest`''', '''`XmlResponse`''': requerimiento y respuesta XML (para depuración) * '''`InstallDir`''' ''''' Nuevo! ''''': directorio de instalación (ej. `C:\Archivos de Programa\WSCDC`) * '''`Excepcion`''', '''`Traceback`''' ''''' Nuevo! ''''': mensaje de error y traza de rastreo (para depuración) * '''`LanzarExcepciones`''' ''''' Nuevo! ''''' : establece si se deben emitir errores al lenguaje de programación (habilitado por defecto), o serán controlados por el programa (revisando el atributo Excepcion luego de cada método) == Ejemplos == Pseudocódigo en Python para Constatación de un comprobante (Factura A con CAEA): {{{ #!python cbte_modo = "CAE" # modalidad de emision: CAI, CAE, CAEA cuit_emisor = "20267565393" # proveedor pto_vta = 4002 # punto de venta habilitado en AFIP cbte_tipo = 1 # 1: factura A (ver tabla de parametros) cbte_nro = 109 # numero de factura cbte_fch = "20131227" # fecha en formato aaaammdd imp_total = "121.0" # importe total cod_autorizacion = "63523178385550" # numero de CAI, CAE o CAEA doc_tipo_receptor = 80 # CUIT (obligatorio Facturas A o M) doc_nro_receptor = "30628789661" # numero de CUIT del cliente ok = wscdc.ConstatarComprobante(cbte_modo, cuit_emisor, pto_vta, cbte_tipo, cbte_nro, cbte_fch, imp_total, cod_autorizacion, doc_tipo_receptor, doc_nro_receptor) print "Resultado:", wscdc.Resultado print "Mensaje de Error:", wscdc.ErrMsg print "Observaciones:", wscdc.Obs }}} En caso de que el comprobante esté correctamente autorizado por AFIP, Resultado será "A" (Aprobado), de lo contrario será "R" (Rechazado) Observaciones más frecuentes: * 100: El N° de CAI/CAE/CAEA consultado no existe en las bases del organismo. * 101: Se podran constatar comprobantes con fecha de emision del 01/01/2013 en adelante. * 113: Para Comprobantes tipo A o tipo M, el documento del receptor debe ser CUIT. * 114: Para comprobantes tipo A o tipo M el documento del Receptor es obligatorio informarlo.. En caso de que ok no sea verdadero, revisar wscdc.!ErrMsg y wscdc.Excepciones ya que posiblemente hay un problema interno. Ver fragmentos de código para Visual Basic, Visual Fox Pro y VB.Net en [http://www.sistemasagiles.com.ar/trac/wiki/ConstatacionComprobantes#DescargaseInstalación Descargas e Instalacion] == Linea de comandos == WSCDC puede también utilizarse por línea de comando (tanto para Windows como para GNU/Linux) y recibe los siguientes argumentos: * `--constatar`: realiza la constatación de un comprobante, recibe los mismos argumentos que el método `ConstatarComprobante` * `--prueba`: utiliza datos de prueba (ver ejemplo) * `--dummy`: comprueba la infraestructura de AFIP * `--params`: obtiene y muestra las tablas de parámetro de AFIP Ejemplo para constatar un comprobante (sintaxis para windows): {{{ C:\PYAFIPWS> WSCDC_CLI.EXE --constatar CAE 20267565393 5 1 171 20131206 2268.75 63493611413705 80 30606174159 Resultado: R Mensaje de Error: Observaciones: 112: El tipo y número de documento del receptor no se corresponde con los informados para el comprobante consultado o no es válida y no se encontraba activa al momento de emisión de comprobante. }}} Ejemplo para verificar el estado de los servidores (sintaxis para linux): {{{ reingart@s5ultra:~/pyafipws$ python wscdc.py --dummy AppServerStatus OK DbServerStatus OK AuthServerStatus OK }}} La configuración se encuentra en el archivo `RECE.INI`: {{{ [WSAA] CERT=reingart.crt PRIVATEKEY=reingart.key #URL=https://wsaa.afip.gov.ar/ws/services/LoginCms [WSCDC] CUIT=20267565393 #URL=https://servicios1.afip.gov.ar/WSCDC/service.asmx?WSDL }}} === Formato de Intercambio === ==== Encabezado ==== || '''Campo''' || '''Posición''' || '''Longitud''' || '''Tipo''' || '''Descripción''' || || tipo_reg || 1 || 1 || Alfanumerico || 0: encabezado || || cbte_modo || 2 || 4 || Alfanumerico || Modalidad de autorización (CAI, CAE, CAEA) || || cuit_emisor || 6 || 11 || Alfanumerico || CUIT del emisor del comprobante || || pto_vta || 17 || 4 || Numerico || Punto de Venta del comprobante || || cbte_tipo || 21 || 3 || Numerico || Tipo de comprobante || || cbte_nro || 24 || 8 || Numerico || Número de comprobante || || cbte_fch || 32 || 8 || Alfanumerico || Fecha en formato AAAAMMDD || || imp_total || 40 || 15 || Importe || Importe total Double (13 + 2) || || cod_autorizacion || 55 || 14 || Alfanumerico || Número de CAI, CAE, CAEA || || doc_tipo_receptor || 69 || 2 || Alfanumerico || Tipo de documento del receptor || || doc_nro_receptor || 71 || 20 || Alfanumerico || N° de documento del receptor || || resultado || 91 || 1 || Alfanumerico || Resultado (A: Aprobado, O: Observado, R: rechazado) || || fch_proceso || 92 || 14 || Alfanumerico || Fecha y hora de procesamiento || ==== Observacion ==== || '''Campo''' || '''Posición''' || '''Longitud''' || '''Tipo''' || '''Descripción''' || || tipo_reg || 1 || 1 || Alfanumerico || O: observaciones devueltas por AFIP || || code || 2 || 5 || Numerico || Código de Observación / Error / Evento || || msg || 7 || 255 || Alfanumerico || Mensaje || ==== Evento ==== || '''Campo''' || '''Posición''' || '''Longitud''' || '''Tipo''' || '''Descripción''' || || tipo_reg || 1 || 1 || Alfanumerico || O: observaciones devueltas por AFIP || || code || 2 || 5 || Numerico || Código de Observación / Error / Evento || || msg || 7 || 255 || Alfanumerico || Mensaje || ==== Error ==== || '''Campo''' || '''Posición''' || '''Longitud''' || '''Tipo''' || '''Descripción''' || || tipo_reg || 1 || 1 || Alfanumerico || O: observaciones devueltas por AFIP || || code || 2 || 5 || Numerico || Código de Observación / Error / Evento || || msg || 7 || 255 || Alfanumerico || Mensaje || == Tablas de Parámetros == === Modalidad Comprobantes === ||CAE||Comprobantes - CAE|| ||CAEA||Comprobantes - CAEA|| ||CAI||Comprobantes - CAI|| === Tipo Comprobantes === ||1||Facturas A|| ||2||Notas de Debito A|| ||3||Notas de Credito A|| ||4||Recibos A|| ||5||Notas de Venta al contado A|| ||6||Facturas B|| ||7||Notas de Debito B|| ||8||Notas de Credito B|| ||9||Recibos B|| ||10||Notas de Venta al contado B|| ||11||FACTURAS C|| ||12||NOTAS DE DEBITO C|| ||13||NOTAS DE CREDITO C|| ||15||RECIBOS C|| ||19||Facturas de Exportacion|| ||20||N. Deb. p/operac. con el exterior|| ||21||N. Cre. p/operac. con el exterior|| ||22||Fac. Perm. Export. Simp. - Dto.855/97|| ||30||Cbtes. compra de bienes usados|| ||31||Mandato/Consignación|| ||32||COMPROBANTES DE COMPRA DE MATERIALES A RECICLAR PROVENIENTES|| ||34||Cbtes. A del Anexo I, Apartado A,inc.f),R.G.Nro. 1415|| ||35||Cbtes. B del Anexo I,Apartado A,inc. f),R.G. Nro. 1415|| ||37||N. Deb/doc. equiv. que cumplan con R.G.Nro. 1415|| ||38||N. Cred/doc. equiv. que cumplan con R.G.Nro. 1415|| ||39||Otros comprobantes A que cumplan con R.G.Nro. 1415|| ||40||Otros comprobantes B que cumplan con R.G.Nro. 1415|| ||41||OTROS COMPROBANTES C QUE CUMPLAN CON LA R.G. N° 1415|| ||51||Facturas M|| ||52||Notas de Debito M|| ||53||Notas de credito M|| ||54||Recibo M|| ||55||Notas de Venta al contado M|| ||56||Comprobantes M del anexo I, Apartado A,inc. f)R.G.Nro.1415|| ||57||Otros Comprobantes M que cumplan con la R.G. Nro. 1415|| ||58||Cuenta de Venta y Liquido producto M|| ||59||Liquidacion M|| ||60||Cta de Vta y Liquido prod. A|| ||61||Cta de Vta y Liquido prod. B|| ||63||Liquidacion A|| ||64||Liquidacion B|| ||70||Recibo de Factura de Credito R|| ||91||Remito R|| ||49||Comprobante de Compra de Bienes Usados|| === Tipo Documentos === ||80||CUIT|| ||86||CUIL|| ||87||CDI|| ||89||LE|| ||90||LC|| ||91||CI Extranjera|| ||92||en trámite|| ||93||Acta Nacimiento|| ||95||CI Bs. As. RNP|| ||96||DNI|| ||94||Pasaporte|| ||00||CI Policía Federal|| ||01||CI Buenos Aires|| ||02||CI Catamarca|| ||03||CI Córdoba|| ||04||CI Corrientes|| ||05||CI Entre Ríos|| ||06||CI Jujuy|| ||07||CI Mendoza|| ||08||CI La Rioja|| ||09||CI Salta|| ||10||CI San Juan|| ||11||CI San Luis|| ||12||CI Santa Fe|| ||13||CI Santiago del Estero|| ||14||CI Tucumán|| ||16||CI Chaco|| ||17||CI Chubut|| ||18||CI Formosa|| ||19||CI Misiones|| ||20||CI Neuquén|| ||21||CI La Pampa|| ||22||CI Río Negro|| ||23||CI Santa Cruz|| ||24||CI Tierra del Fuego|| ||99||Doc. (Otro)|| === Tipo Opcionales === En homologación, actualmente AFIP devuelve: {{{ Mensaje de Error: 503: Sin Resultados: - Metodo OpcionalesTipoConsultar }}} == Novedades == Se recuerda que esta disponible el [grupo de usuarios y desarrolladores] (http://groups.google.com.ar/group/pyafipws) donde se publicarán futuras novedades sobre PyAfipWS: servicios web de factura electrónica y sus interfases (se recomienda suscribirse) También esta disponible el sitio http://www.pyafipws.com.ar con noticias, anuncios e información técnica general == Costos y Condiciones == Ofrecemos soporte técnico comercial (pago), independiente a la AFIP, desarrollos especiales, interfaces web, etc. Debido a la complejidad de este servicio, su fecha de aplicación y las modificaciones que pudieran surgir, los clientes que así lo requieran pueden adquirir horas de soporte técnico adicional. Ver [wiki:PyAfipWs#CostosyCondiciones Condiciones del Soporte Comercial] Obtenga mas información enviando un mail a info@pyafipws.com.ar o (011) 15-3048-9211 (asesoramiento sin cargo) A su vez, se liberará el código fuente bajo licencia GPLv3 (software libre), al igual que se hizo con el restos de los servicios web. Para más detalles ver página FacturaElectronica. La información de esta página es proporcionada