Codigo de Operacion de Translado - COT ARBA - Remito Electrónico


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

logo-pyafipws.png


Descargas

URL

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ódigoDescripción
1Kilogramos
2Litros
3Unidades
4Metros cuadrados
5Metros
6Metros Cúbicos
7Pares

Tabla Unidades de medida para Organismo OPDS

CódigoDescripción
1Kilogramos
2Litros
3Unidades

Table de Provincias

CódigoDescripción
ASalta
BBuenos Aires
CCapital Federal
DSan Luis
EEntre Ríos
FLa Rioja
GSantiago del Estero
HChaco
JSan Juan
KCatamarca
LLa Pampa
MMendoza
NMisiones
PFormosa
QNeuquen
RRío Negro
SSanta Fé
TTucumán
UChubut
VTierra del Fuego
WCorrientes
XCórdoba
YJujuy
ZSanta Cruz

Table de Comprobantes para Organismo ARBA

Código DGITipoDescripción
74 PCarta de porte
91 RRemito R
01 AFactura A
60 ACuenta de venta y liquido producto A
94 XRemito X
06 BFactura B
92 CFactura C
51 MFactura M
61 BCuenta de venta y liquido producto B
93 CCuenta de venta y liquido producto C
58 MCuenta de venta y liquido producto M
95 GGuía única de translado
97 EDocumento Equivalente

Table de Comprobantes para Organismo OPDS

Código DGITipoDescripción
MAPRManifiesto 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

MarianoReingart