Implementación - Remito Eletrónico Cárnico. Guía técnica | WAN

Modificado el Vie, 15 May a 6:17 P. M.

Remito Electrónico Cárnico. Implementación


Descripción

Este procedimiento técnico permite habilitar el circuito de Remito Electrónico Cárnico (REC) en Calipso ERP WAN, generando las estructuras, procesos y scripts necesarios para la integración con ARCA (AFIP) mediante el servicio WSRCAR.

La implementación contempla:

  • ejecución del check de instalación del circuito REC
  • generación automática de estructuras y procesos asociados
  • creación del Procedimiento Público encargado de procesar y enviar el remito electrónico
  • mapeo de datos fiscales, logísticos y de transporte requeridos por ARCA
  • incorporación de logs técnicos para validación y debugging del proceso


El procedimiento FE_WSDATOS_RCAR funcionará como lanzador de la función de procesamiento del REC, tomando la información configurada en el sistema y enviándola al proceso de validación electrónica correspondiente.




Implementación


Paso 1. Generación de estructuras del circuito REC

  • Desde el Interpretador de Comandos > ejecute el check correspondiente para generar automáticamente los procesos, campos auxiliares y estructuras requeridas para el circuito de Remito Electrónico Cárnico.
  • Luego de la ejecución, realice la verificación de estructuras para aplicar correctamente los cambios en la base de datos.
  • Comando a ejecutar: Feadmin.check "rcar"




Paso 2. Creación del Procedimiento Público

  • Agregar el Procedimiento Público que actuará como lanzador de la llamada a la función del procesamiento del REC ante ARCA. 
  • Este procedimiento será responsable de:
  • obtener y mapear los datos del remito
  • recuperar información fiscal, logística y de transporte
  • ejecutar validaciones y logs técnicos
  • invocar la función de procesamiento electrónico del REC
  • Nombre del Procedimiento Público: FE_WSDATOS_RCAR




Sub RCAR_ProcDocInv()

' Procesamiento de Remito Cárnico Electrónico

' Variables del encabezado del remito

Dim xcodigo, xclase, xremito, xfecha

Dim xtipoComprobante, xtipoMovimiento, xcategoriaEmisor

Dim xpuntoEmision, xcuitTitularMercaderia, xcuitDepositario

Dim xtipoReceptor, xcategoriaReceptor, xcuitReceptor

Dim xcodDomOrigen, xcodDomDestino

' Variables de viaje y transporte

Dim xcuitTransportista, xcuitConductor, xfechaInicioViaje, xdistanciaKm

Dim xdominio, xdominioAcoplado

'******************Datos del Encabezado del Remito****************************

xcodigo = CStr(f.context.cgivar("o1"))

xremito = CStr(f.context.cgivar("xnum"))

'******************Mapeo de Datos para RCAR***********************************

' --- ENCABEZADO DEL REMITO ---

' Obtener tipo de documento desde el puntero

xtipoComprobante = f.traecam("punted", "tipodoc", campo("xpuntero"))

' Tipo de movimiento desde campo auxiliar o default

xtipoMovimiento = campo("C_TIPOMOVRCAR")

If xtipoMovimiento = "" Then xtipoMovimiento = "ENV" ' Default: Envío

' Categoría del emisor desde campo auxiliar

xcategoriaEmisor = f.paramvalue("FE_CATEMISORRCAR")

If xcategoriaEmisor = "" Then xcategoriaEmisor = "1" ' Default

' Punto de emisión

xpuntoEmision = f.traecam("punted", "estacion", campo("xpuntero"))

' CUIT Titular de la mercadería (CUIT propio)

xcuitTitularMercaderia = Replace(f.paramvalue("FE_CUIT"), "-", "")

' CUIT Depositario (opcional)


xcuitDepositario = campo("CUITDEPOSITARIO")

If xcuitDepositario <> "" Then

xcuitDepositario = Replace(xcuitDepositario, "-", "")

End If

' --- RECEPTOR ---

' Tipo receptor desde campo auxiliar: MI=Matadero/Industria, EM=Establecimiento

xtipoReceptor = f.traecam("clientes", "C_TIPORECEPTOR", campo("cliente"))

If xtipoReceptor = "" Then xtipoReceptor = "MI" ' Default

' Categoría receptor desde campo auxiliar

xcategoriaReceptor = f.traecam("clientes", "C_CATRECEPTORRCAR", campo("cliente"))

If xcategoriaReceptor = "" Then xcategoriaReceptor = "1" ' Default

' CUIT del receptor (cliente) - traer desde tabla clientes

If campo("cliente") <> "" Then

xcuitReceptor = f.traecam("clientes", "cuit", campo("cliente"))

xcuitReceptor = Replace(xcuitReceptor, "-", "")

End If

' --- DOMICILIOS ---

' Código domicilio origen (debe estar registrado en ARCA)

xcodDomOrigen = cstr(campo("C_CODDOMORIG"))

' Código domicilio destino (debe estar registrado en ARCA)

xcodDomDestino = cstr(campo("C_CODDOMDEST"))

' --- VIAJE Y TRANSPORTE ---

' CUIT Transportista desde campo auxiliar

xcuitTransportista = f.traecam("expresos", "cot_transportista_cuit", campo("transporte"))

If xcuitTransportista = "" Then

' Si no hay transportista específico, usar CUIT propio

xcuitTransportista = Replace(f.paramvalue("FE_CUIT"), "-", "")

Else

xcuitTransportista = Replace(xcuitTransportista, "-", "")

End If

' CUIT Conductor

xcuitConductor = f.traecam("choferes", "documento", campo("chofer"))

If xcuitConductor <> "" Then

xcuitConductor = Replace(xcuitConductor, "-", "")

End If

' Fecha inicio del viaje desde C_FECHAINIVIAJE

xfechaInicioViaje = campo("C_FECHAINIVIAJE")

If xfechaInicioViaje = "" Or IsNull(xfechaInicioViaje) Then

xfechaInicioViaje = campo("fecha")

End If

' Distancia en kilómetros desde C_DISTANCIAVIAJE

xdistanciaKm = campo("C_DISTANCIAVIAJE")

If xdistanciaKm = "" Then xdistanciaKm = "0"

' --- VEHÍCULO ---

' Dominio/Patente del vehículo desde camion

xdominio = f.traecam("camiones", "patente", campo("camion"))

' Si no hay camión, intentar obtener del transporte


If xdominio = "" Then

If campo("transporte") <> "" Then

xdominio = f.traecam("transpor", "patente", campo("transporte"))

End If

End If

' Dominio acoplado

xdominioAcoplado = f.traecam("camiones", "patente", campo("camion"))

' Fecha del remito

xfecha = campo("fecha")

'******************Logs para debugging****************************************

f.addsystemevent "T", "RCAR_REMITO", "0", "******** REMITO CARNICO ELECTRONICO ********"

f.addsystemevent "T", "RCAR_REMITO", "0", "Codigo: " & xcodigo

f.addsystemevent "T", "RCAR_REMITO", "0", "Clase: " & xclase

f.addsystemevent "T", "RCAR_REMITO", "0", "Remito: " & xremito

f.addsystemevent "T", "RCAR_REMITO", "0", "Fecha: " & xfecha

f.addsystemevent "T", "RCAR_REMITO", "0", "-------------------------------------"

f.addsystemevent "T", "RCAR_REMITO", "0", "Tipo Cbte: " & xtipoComprobante

f.addsystemevent "T", "RCAR_REMITO", "0", "Tipo Mov: " & xtipoMovimiento

f.addsystemevent "T", "RCAR_REMITO", "0", "Categ Emisor: " & xcategoriaEmisor

f.addsystemevent "T", "RCAR_REMITO", "0", "Punto Emision: " & xpuntoEmision

f.addsystemevent "T", "RCAR_REMITO", "0", "-------------------------------------"

f.addsystemevent "T", "RCAR_REMITO", "0", "CUIT Titular: " & xcuitTitularMercaderia

f.addsystemevent "T", "RCAR_REMITO", "0", "CUIT Depositario: " & xcuitDepositario

f.addsystemevent "T", "RCAR_REMITO", "0", "-------------------------------------"

f.addsystemevent "T", "RCAR_REMITO", "0", "Tipo Receptor: " & xtipoReceptor

f.addsystemevent "T", "RCAR_REMITO", "0", "Categ Receptor: " & xcategoriaReceptor

f.addsystemevent "T", "RCAR_REMITO", "0", "CUIT Receptor: " & xcuitReceptor

f.addsystemevent "T", "RCAR_REMITO", "0", "-------------------------------------"

f.addsystemevent "T", "RCAR_REMITO", "0", "Cod Dom Origen: " & xcodDomOrigen

f.addsystemevent "T", "RCAR_REMITO", "0", "Cod Dom Destino: " & xcodDomDestino

f.addsystemevent "T", "RCAR_REMITO", "0", "-------------------------------------"

f.addsystemevent "T", "RCAR_REMITO", "0", "CUIT Transportista: " & xcuitTransportista

f.addsystemevent "T", "RCAR_REMITO", "0", "CUIT Conductor: " & xcuitConductor

f.addsystemevent "T", "RCAR_REMITO", "0", "Fecha Inicio Viaje: " & xfechaInicioViaje

f.addsystemevent "T", "RCAR_REMITO", "0", "Distancia KM: " & xdistanciaKm

f.addsystemevent "T", "RCAR_REMITO", "0", "-------------------------------------"

f.addsystemevent "T", "RCAR_REMITO", "0", "Dominio: " & xdominio

f.addsystemevent "T", "RCAR_REMITO", "0", "Dominio Acoplado: " & xdominioAcoplado

f.addsystemevent "T", "RCAR_REMITO", "0", "-------------------------------------"

f.addsystemevent "T", "RCAR_REMITO", "0", "Cant. Mercaderias: " & (nroOrden - 1)

f.addsystemevent "T", "RCAR_REMITO", "0", "============================================"


' Llamo a la función que procesará el remito en ARCA

FEADMIN.ProcesaGenerarRemito_RCAR _

xcodigo, _

xremito, _

xfecha, _

xtipoComprobante, _

xtipoMovimiento, _

xcategoriaEmisor, _

xpuntoEmision, _

xcuitTitularMercaderia, _

xcuitDepositario, _

xtipoReceptor, _


xcategoriaReceptor, _

xcuitReceptor, _

xcodDomOrigen, _

xcodDomDestino, _

xcuitTransportista, _

xcuitConductor, _

xfechaInicioViaje, _

xdistanciaKm, _

xdominio, _

xdominioAcoplado

End Sub


¿Le ha sido útil este artículo?

¡Qué bien!

Gracias por sus comentarios

¡Sentimos mucho no haber sido de ayuda!

Gracias por sus comentarios

¡Háganos saber cómo podemos mejorar este artículo!

Seleccione al menos una de las razones
Se requiere la verificación del CAPTCHA.

Sus comentarios se han enviado

Agradecemos su esfuerzo e intentaremos corregir el artículo