Codigo de Operacion de Translado - COT ARBA - Remito Electrónico
Factura Electrónica y Servicios Web AFIP, ARBA y ANMAT
- PyAfipWs: Interfase con otros lenguajes (VB, VFP, Cobol ...) Costos y Condiciones
- Manual: Documentación, Información Importante, Certificados, Errores Frecuentes
- Interfaz simil SIAP/RECE: archivos de texto ("Cobol") o DBF (dBase, FoxPro, ...)
- PyFEPDF: Generador de facturas en formato PDF
- Factura Electrónica en Python: Información Técnica (SOAP, XML)
- Bonos Fiscales Electrónicos: Bienes de Capital (RG2557)
- Factura Electrónica Exportación: Exportadores (RG2758)
- Factura Electrónica MTX: Mercado Interno (RG2904)
- Proyecto Factura Electrónica Versión 1: Mercado Interno (RG2904, RG2757)
- Código de Autorización Electrónico Anticipado: CAEA (RG2926, RG2904)
- Código Trazabilidad de Granos: Transporte de granos (RG2806)
- Código de Operaciones de Translado: COT Remito Electronico (ARBA) ¡Nuevo!
- Consulta de Operaciones Cambiarias: Compra de Divisas (WSCOC) ¡Nuevo!
- Trazabilidad de Medicamentos: ANMAT Disposición 3683/2011 ¡Nuevo!
- PyRece: Aplicativo simil SIAP - RECE (CSV, PDF, Email) Costos y Condiciones
- FE.py: Herramienta universal, unificada e integrada
- FacturaLibre: Aplicacion online (web2py)
Interfaz para Servicio Web Código de Operaciones de Traslado (COT) "Remito Electronico" correspondiente al articulo 41 del Código Fiscal que establece la obligación de amparar el traslado o transporte de bienes en el territorio de la provincia de Bs. As (T.O. 2011) incorporado por la Ley 13.405, prorrogada al 19/9/2011 según normativas 34/2011 y 45/2011 ARBA (Rentas Proincia de Buenos Aires")
Especificaciones y formato actualizado a Agosto 2011 (última actualización de ARBA)
Índice
Descargas
- Instalador: Instalador en googlecode
- Ejemplo en VB: ejemplo_cot_vb_101b.zip
- Código Fuente (Python): http://code.google.com/p/pyafipws/source/browse/cot.py
- Dpcumentación oficial: ARBA
URL
- Testing: http://cot.test.arba.gov.ar/TransporteBienes/SeguridadCliente/presentarRemitos.do
- Producción: https://cot.ec.gba.gob.ar/TransporteBienes/SeguridadCliente/presentarRemitos.do
Métodos
- Conectar(url=None, proxy="", wrapper="", cacert="", trace=False): los parametros son similares a WSFEv1.Conectar (por el momento solo se usa url y trace para depuración)
- PresentarRemito(filename, testing=""): envia un remito a ARBA. filename es el nombre de archivo, testing es el nombre de archivo de una respuesta XML de prueba para simulaciones (opcional). Establece los atributos CuitEmpresa, NumeroComprobante, NombreArchivo, CodigoIntegridad, NumeroUnico y Procesado de corresponder según respuesta de ARBA, y TipoError, CodigoError, MensajeError: si hay error general.
- LeerValidacionRemito(): lee el próximo remito validado, NumeroUnico y Procesado y los errores de validación (llamar luego a LeerErrorValidacion para recorrerlos). Devuelve verdadero (True) si hay remito a analizar o falso (False) si ya se analizaron todos los remitos enviados. No es obligatorio llamar a este método si se envia de a un solo remito por archivo.
- LeerErrorValidacion(): en el caso de ARBA devolver error de validación, completando CodigoError y MensajeError por cada uno. Devuelve falso (False) en caso de no haber más errores para este remito)
- ObtenerTagXml(tag1, tag2, ...): busca en el mensaje xml analizado la etiqueta tag1, luego tag2 y así sucesivamente, devolviendo el contenido (texto) del dato si fue encontrada, o nulo en caso contrario. Ver ejemplo.
IMPORTANTE: PresentarRemito devuelve verdadero (True) si ha podido realizar la operación o falso (False) en caso contrario. Se capturan los errores, por lo que se deben revisar los atributos luego de llamar al método.
LeerValidacionRemito y ObtenerTagXml estan disponibles a partir de la versión 2.0a
Atributos
- Usuario y Password son los atributos ara autenticación (tramitar en ARBA)
- Version e InstallDir sirven para depuración de la interfaz.
- XmlResponse: respuesta xml enviada por ARBA
- Excepcion, Traceback: se completan en caso de error interno no esperado (por ej. falla de comunicación).
- TipoError, CodigoError, MensajeError: si hay error general de ARBA se completan según la documentación
- CuitEmpresa, NumeroComprobante, NombreArchivo, CodigoIntegridad: campos completados según la respuesta descripta en la documentación de ARBA
- NumeroUnico y Procesado: completados si hay validacionesRemitos.
IMPORTANTE: para el manejo de errores, siemper se debe revisar el atributo Excepcion, si este no está en blanco, ha ocurrido un error no esperado y debe analizar el Traceback (traza) y volver a intentar. Siempre es útil almacenar los valores de XmlResponse como respaldo de la operación y para futura referencia o análisis.
Línea de Comando
Para sistemas operativos legados (DOS bajo windows) y UNIX/Linux, es posible operar la herramienta de remito electrónico por consola. Recibe como parámetros el nombre de archivo, usuario y clave. Opcionalmente se puede especificar --testing para pruebas (usar xml de muestra como respuesta si no se tiene acceso a homologación) y --trace para imprimir por pantalla los datos enviados y recibidos.
Ejemplo de uso:
C:\PYAFIPWS>COT.EXE TB_20111111112_000000_20080124_000001.txt usuario clave --testing Error General: | | Error Validacion: | 85 | El campo ORIGEN_CUIT es inv??lido o inexistente. Error Validacion: | 22 | El campo FECHA_SALIDA_TRANSPORTE es inv??lido o inexistente. CUIT Empresa: 20111111112 Numero Comprobante: 91248293 Nombre Archivo: TB_20111111112_000000_20080124_000001.txt Codigo Integridad: 15cdd26deef17cb36465252fb5165087 Numero Unico: 91 R999900068148 Procesado: NO
En linux o desde el código fuente invocar con el interprete python.
Ejemplo Intefase COM en VB (5/6)
Dim COT As Object, ok As Variant ' Crear la interfaz COM Set COT = CreateObject("COT") Debug.Print COT.Version Debug.Print COT.InstallDir ' Establecer Datos de acceso (ARBA) COT.Usuario = "20267565393" COT.Password = "23456" ' Archivo a enviar (ruta absoluta): filename = "C:\TB_20111111112_000000_20080124_000001.txt" ' Respuesta de prueba (dejar en blanco si se tiene acceso para respuesta real): testing = "" ' "C:\cot_response_2_errores.xml" ' Conectar al servidor (pruebas) URL = "https://cot.test.arba.gov.ar/TransporteBienes/SeguridadCliente/presentarRemitos.do" ok = COT.Conectar(URL) ' Enviar el archivo y procesar la respuesta: ok = COT.PresentarRemito(filename, testing) ' Hubo error interno? If COT.Excepcion <> "" Then Debug.Print COT.Excepcion, COT.Traceback MsgBox COT.Traceback, vbCritical, "Excepcion:" & COT.Excepcion Else Debug.Print COT.XmlResponse Debug.Print "Error General:", COT.TipoError, "|", COT.CodigoError, "|", COT.MensajeError ' Hubo error general de ARBA? If COT.CodigoError <> "" Then MsgBox COT.MensajeError, vbExclamation, "Error " & COT.TipoError & ":" & COT.CodigoError End If ' Datos de la respuesta: Debug.Print "CUIT Empresa:", COT.CuitEmpresa Debug.Print "Numero Comprobante:", COT.NumeroComprobante Debug.Print "Nombre Archivo:", COT.NombreArchivo Debug.Print "Codigo Integridad:", COT.CodigoIntegridad Debug.Print "Numero Unico:", COT.NumeroUnico Debug.Print "Procesado:", COT.Procesado MsgBox "CUIT Empresa: " & COT.CuitEmpresa & vbCrLf & _ "Numero Comprobante: " & COT.NumeroComprobante & vbCrLf & _ "Nombre Archivo: " & COT.NombreArchivo & vbCrLf & _ "Codigo Integridad: " & COT.CodigoIntegridad & vbCrLf & _ "Numero Unico: " & COT.NumeroUnico & vbCrLf & _ "Procesado: " & COT.Procesado, _ vbInformation, "Resultado" While COT.LeerErrorValidacion(): Debug.Print "Error Validacion:", COT.TipoError, "|", COT.CodigoError, "|", COT.MensajeError MsgBox COT.MensajeError, vbExclamation, "Error Validacion:" & COT.CodigoError Wend End If
Ejemplo para analizar varios remitos simultaneamente (enviados en el mismo archivo):
' Lee el próximo remito, luego del último finaliza While COT.LeerValidacionRemito() ' Imprime los datos de cada remito validado: Debug.Print "Numero Unico:", Cot.NumeroUnico Debug.Print "Procesado:", COT.Procesado ' Lee los errores de validación de este remito While COT.LeerErrorValidacion() print "Error Validacion:", "|", cot.CodigoError, "|", cot.MensajeError Wend Wend
Ejemplos de uso ObtenerTagXml:
' Obtengo el cuit de la empresa (dato general) Debug.Print "cuit", COT.ObtenerTagXml('cuitEmpresa') ' Obtengo el campo procesado del primer remito validado: Debug.Print "p0", COT.ObtenerTagXml('validacionesRemitos', 'remito', 0, 'procesado') ' Obtengo el campo procesado del segundo remito validado: Debug.Print "p1", COT.ObtenerTagXml('validacionesRemitos', 'remito', 1, 'procesado')
Archivo de Intercambio
El nombre de archivo debe ser: TB_ + CUIT Empresa + _ + planta + puerta + _ + aaaammdd + _ + secuencia + .txt, por ej: "TB_30111111118_003002_20060716_000183.txt":
- CUIT empresa: 30-11111111-8
- Nro. Planta: 000
- Nro. Puerta: 002
- Fecha: 16-07-2006
- Nro. Secuencial: 000183
El diseño del archivo de texto de intercambio es el definido por ARBA en las especificaciones técnicas 20110823-TB-RemitoElectronicoDiseño.pdf
Utiliza un formato delimitado por pipas ("|"), donde el primer campo es el tipo de registro:
- HEADER (Encabezado)
- TIPO_REGISTRO: 01
- CUIT_EMPRESA: (sin guiones) ej. 20111111112
- REMITO (al menos 1 registro)
- TIPO_REGISTRO: 02
- FECHA_EMISION: formato AAAAMMDD, ej. |20080124|
- CODIGO_UNICO: formato (CODIGO_DGI, TIPO, PREFIJO, NUMERO) ej. 91 |R999900068148|
- FECHA_SALIDA_TRANSPORTE: formato AAAAMMDD
- HORA_SALIDA_TRANSPORTE: formato HHMM
- SUJETO_GENERADOR: 'E' emisor, 'D' destinatario
- DESTINATARIO_CONSUMIDOR_FINAL: 0 no, 1 sí
- DESTINATARIO_TIPO_DOCUMENTO: 'DNI', 'LE', 'PAS', 'CI'
- DESTINATARIO_DOCUMENTO
- DESTIANTARIO_CUIT
- DESTINATARIO_RAZON_SOCIAL
- DESTINATARIO_TENEDOR: 0=no, 1=si.
- DESTINO_DOMICILIO_CALLE
- DESTINO_DOMICILIO_NUMERO
- DESTINO_DOMICILIO_COMPLE
- DESTINO_DOMICILIO_PISO
- DESTINO_DOMICILIO_DTO
- DESTINO_DOMICILIO_BARRIO
- DESTINO_DOMICILIO_CODIGOP
- DESTINO_DOMICILIO_LOCALIDAD
- DESTINO_DOMICILIO_PROVINCIA: ver tabla de provincias
- PROPIO_DESTINO_DOMICILIO_CODIGO
- ENTREGA_DOMICILIO_ORIGEN: 'SI' o 'NO'
- ORIGEN_CUIT
- ORIGEN_RAZON_SOCIAL
- EMISOR_TENEDOR: 0=no, 1=si
- ORIGEN_DOMICILIO_CALLE
- ORIGEN DOMICILIO_NUMBERO
- ORIGEN_DOMICILIO_COMPLE
- ORIGEN_DOMICILIO_PISO
- ORIGEN_DOMICILIO_DTO
- ORIGEN_DOMICILIO_BARRIO
- ORIGEN_DOMICILIO_CODIGOP
- ORIGEN_DOMICILIO_LOCALIDAD
- ORIGEN_DOMICILIO_PROVINCIA: ver tabla de provincias
- TRANSPORTISTA_CUIT
- TIPO_RECORRIDO: 'U' urbano, 'R' rural, 'M' mixto
- RECORRIDO_LOCALIDAD: máx. 50 caracteres
- RECORRIDO_CALLE: máx. 40 caracteres
- RECORRIDO_RUTA: máx. 40 caracteres
- PATENTE_VEHICULO: 3 letras y 3 números
- PATENTE_ACOPLADO: 3 letras y 3 números
- PRODUCTO_NO_TERM_DEV: 0=No, 1=Si (devoluciones)
- IMPORTE: formato 8 enteros 2 decimales
- PRODUCTOS (al menos 1 registro):
- TIPO_REGISTRO: 03
- CODIGO_UNICO_PRODUCTO: ver nomenclador COT
- RENTAS_CODIGO_UNIDAD_MEDIDA: ver tabla unidades de medida
- CANTIDAD: 13 enteros y 2 decimales (no incluir coma ni punto), ej 200 un -> 20000
- PROPIO_CODIGO_PRODUCTO: máx. 25 caracteres
- PROPIO_DESCRIPCION_PRODUCTO: máx. 40 caracteres
- PROPIO_DESCRIPCION_UNIDAD_MEDIDA: máx. 20 caracteres
- CANTIDAD_AJUSTADA: 13 enteros y 2 decimales (no incluir coma ni punto), ej 200 un -> 20000
- 04: FOOTER (Pie)
- TIPO_REGISTRO: 04
- CANTIDAD_TOTAL_REMITOS
Ejemplo TB_20111111112_000000_20080124_000001.txt:
01|20111111112 02|20080124|91 R999900068148|20080124| |E|0| | |30682115722|COMPUMUNDO S.A.| 0|Ruta Prov | |S/N| | | |1200|PUERTO DE ESCOBAR|B| |NO| 23246414254|COMPUMUNDO S.A. | 0|San Martin 5797| |S/N| | | |1766|TABLADA| B| 20045162673| | | | | | |0 03|847150|3|100|23891|COMP. SP-3960 VP|UNI DAD| 100 03|852110|3|100|23763|VIDEO CAMARA GR-D750|UNI DAD|100 03|852520|3|500|23666|PERS MOTO K1 SILVER + MEM|UNI DAD| 500 03|852520|3|700|24159|PERSONAL NOKIA 5200 BLUE|UNI DAD| 700 03|852520|3|200|24182|PERS S.ERI C W200 BLAC+MEM|UNI DAD|200 03|852390|3|500|23348|DVD+R X10 4.7GB 10DPR120|UNI DAD|500 03|847170|3|100|23842|HDD 250GB 7200RPM|UNI DAD| 100 03|847160|3|500|23896|GAME PAD EUGA 10 BLUE B/W| UNI DAD| 500 03|847330|3|400|22891|CART TWI NPACK 21 NEGRO|UNI DAD| 400 03|850650|3|500|22693|PI LAS ALCALI NA AA X 4|UNI DAD| 500 03|852431|3|200|23846|NORTON ANTIVIRUS 2007|UNI DAD| 200 03|847170|3|400|23122|DVDRW 16X/18X DRU830A NEG|UNI DAD| 400 03|847170|3|1000|23914|DVDRW AOPEN 20X BOX|UNI DAD| 1000 03|852190|3|100|24248|REPROD DVD DVD-AVD800|UNI DAD| 100 03|851822|3|100|23621|J.PARL HT- 685|UNI DAD| 100 04| 1
Utilizar el programa FORMATO_COT.EXE (formato_cot.py) para analizar un archivo de remito electrónico.
Tablas de validación
Para más información ver Tablas de validacion.pdf
Tabla de Unidades de medida para Organismo ARBA
| Código | Descripción |
| 1 | Kilogramos |
| 2 | Litros |
| 3 | Unidades |
| 4 | Metros cuadrados |
| 5 | Metros |
| 6 | Metros Cúbicos |
| 7 | Pares |
Tabla Unidades de medida para Organismo OPDS
| Código | Descripción |
| 1 | Kilogramos |
| 2 | Litros |
| 3 | Unidades |
Table de Provincias
| Código | Descripción |
| A | Salta |
| B | Buenos Aires |
| C | Capital Federal |
| D | San Luis |
| E | Entre Ríos |
| F | La Rioja |
| G | Santiago del Estero |
| H | Chaco |
| J | San Juan |
| K | Catamarca |
| L | La Pampa |
| M | Mendoza |
| N | Misiones |
| P | Formosa |
| Q | Neuquen |
| R | Río Negro |
| S | Santa Fé |
| T | Tucumán |
| U | Chubut |
| V | Tierra del Fuego |
| W | Corrientes |
| X | Córdoba |
| Y | Jujuy |
| Z | Santa Cruz |
Table de Comprobantes para Organismo ARBA
| Código DGI | Tipo | Descripción |
| 74 | P | Carta de porte |
| 91 | R | Remito R |
| 01 | A | Factura A |
| 60 | A | Cuenta de venta y liquido producto A |
| 94 | X | Remito X |
| 06 | B | Factura B |
| 92 | C | Factura C |
| 51 | M | Factura M |
| 61 | B | Cuenta de venta y liquido producto B |
| 93 | C | Cuenta de venta y liquido producto C |
| 58 | M | Cuenta de venta y liquido producto M |
| 95 | G | Guía única de translado |
| 97 | E | Documento Equivalente |
Table de Comprobantes para Organismo OPDS
| Código DGI | Tipo | Descripción |
| MA | PR | Manifiesto Ley 11720 |
Novedades
Se recuerda que esta disponible el grupo de noticias ( 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)
Costos y Condiciones
Por soporte comercial consultar al (011) 4450-0716 o (011) 15-3048-9211 o por mail a info@sistemasagiles.com.ar
Más información en PyAfipWs
