Buscar en este blog

sábado, 13 de octubre de 2018

(VirtualXML) Nueva función de Cancelación Vigente a partir del 1 de Noviembre 2018

Tenemos el tiempo encima para la entrada del nuevo esquema de cancelaciones el cual entrará en vigor el día 1 de Noviembre de 2018.

El nuevo método de cancelación es bastante complejo y esta vez TENDRA COSTO en un caso específico, por favor, lee este artículo hasta el final para saber cuando tendrás que pagar un timbre y cuando la cancelación será sin costo.

La nueva función es:

VirtualXML_CancelaCFDI()

No confundir con  VirtualXML_CancelaUUID(), esta función es la que esta actualmente vigente pero no funcionará a partir del 1 de Noviembre.

Veamos la sintaxis de esta nueva función:

VirtualXML_CancelaCFDI( cUsuario,         
                        cRfcEmisor,
                        cRfcReceptor,
                        cTotal,
                        cUuid,
                        cCert,
                        cKey,
                        cPwd,
                        cArchResult,
                        cArchLog ) -> nResultado

 Donde :

    cUsuario: Nombre del usuario VirtualPAC
  cRfcEmisor: RFC del emisor del CFDI que deseamos cancelar.
cRefReceptor: RFC del receptor del CFDI que deseamos cancelar
      cTotal: Importe total del CFDI que queremos cancelar
       cUuid: UUID del CFDI a cancelar:
       cCert: Ruta y nombre del archivo .CER del emisor del CFDI
        cKey: Ruta y nombre del archivo .KEY del emisor del CFDI
        cPwd: Password de archivo KEY
 cArchResult: Ruta y nombre de un archivo donde se colocará el resultado de la cancelación
    cArchLog: Ruta y nombre de un archivo donde se colocará una bitacora donde se registrarán los eventos del proceso de cancelación.

Devuelve:

nResultado: Un valor numérico que nos indica el resultado del proceso de cancelación y que puede tener 5 posibles valores:

    • 1 - Significa que el CFDI no puede cancelarse directamente y que se ha solicitado al receptor, mediante el buzon tributario, la cancelación del CFDI, en este caso habrá que esperar las 72 horas que marca la ley para obtener una cancelación FICTA si el receptor no rechaza la cancelación o bien si el receptor rechaza la cancelación, el documento no se cancelará, en cualquier caso, si la función devuelve un valor de "1" (UNO) se te cobrará un timbre del saldo del emisor. El cobro de este timbre NO GARANTIZA que la cancelación proceda exitosamente, queda a criterio del SAT y del receptor aplicar la cancelación correspondiente.
    • 0 - Significa que el CFDI se puede cancelar directamente y que se ha cancelado con éxito, en este caso no se te cobrará timbre por la cancelación del documento.
    • -1 - Significa que el CFDI NO SE PUEDE CANCELAR, esto puede deberse a varios motivos, como por ejemplo, el CFDI ha sido previamente cancelado o bien, el CFDI esta en estado de "PROCESANDO", la cancelación ha sido rechazada por el receptor, el CFDI tiene documentos relacionados y otros posibles errores, mismos que podrán consultarse mas a detalle en el archivo de resultados.
    • -2 Indica que el CFDI no existe aún en los registros del SAT, si obtienes este resultado, deberás revisar que has indicado un CFDI correcto o bien tendrás que esperar algun tiempo hasta que el CFDI sea registrado en el SAT, te recordamos que el tiempo que marca la ley para que el PAC envie al SAT los CFDI es de un máximo de 72 horas.
    • -3 Indica que existe algún error en el proceso interno de cancelación como por ejemplo que el servicio de cancelaciones del SAT no está disponbile, para mas detalles deberás consultar el archivo de bitácora (ultimo parámetro de la función) donde se guardan detalles técnicos de operación de la función. 
Ejemplo:

nResultado := VirtualXML_CancelaCFDI( "Usuario",                        "AAA010101AAA",
                        "CTE940531F58",
                        "1160.00",
                        "D8E18C2F-2859-4927-A0F0-EA3E93642DDC",
                        "c:\certificados\archivo.cer",
                        "c:\certificasos\archivo.key",
                        "PasswordDelKey",
                        "d:\resultados\resultado.ini",
                        "d:\resultados\bitacora.log")

Por favor nota que esta nueva función incluye 2 archivos de resultados, el primero es un archivo donde aparecerán los resultados completos del proceso de cancelación, si el nombre lo indicas con la extensión ".INI", obtendras un archivos con los resultados expresados en formato INI, si utlizas otra extensión o no le pones extensión al archivo, lo obtendrás como un texto plano dividido en renglones. En este archivo se guardará toda la información devuelta por el SAT del proceso de cancelación


Entre otros datos podrás encontrar el error de la cancelación, el estado del comprobante, si el comprobante es cancelable y el estatus de cancelación, así como también el PAC que canceló el documento.

El segundo archivo es un archivo de bitácora similar al VirtualXML.LOG donde la función guarda todos los pasos seguidos en el proceso de cancelación, este archivo solo será necesario para fines de depuración y control de errores, pero te recomendamos tenerlo a mano para hacerlo llegar a nuestra area de soporte en caso de que tengas fallas (que las vas a tener) con el nuevo esquema de cancelaciones.

Esta nueva función ya esta disponible en la versión de VirtualXML del 08 de Octubre de 2018 y que ya está disponible en nuestra página web (www.virtual-pac.mx).

TODOS LOS EMISORES DEBERAN ACTUALIZAR SU DLL PARA TENER ACCESO A LA NUEVA FUNCION DE CANCELACIONES.

Nuestros PACs nos han informado que ya es posible realizar pruebas en un entorno "real" proporcionado por el mismo SAT ya que hasta la fecha, todas las pruebas solo se podían realizar en entornos simulados por los PACs no reales.

La batería de funciones de cancelación no está concluida aún, faltan 3 funciones muy importantes que de momento no podemos liberar hasta que empiecen a fluir las cancelaciones reales bajo el nuevo esquema y que son:

  1. Función para revisar el estado de un documento en PROCESO y saber si la cancelación ya fue autorizada o bien fue rechazada por el receptor, estamos considerando utilizar una función que ya viene incluida en VirtualXML que es VirtualXML_ConsultaEstadoCFDI() que ya existe actualmente y que debemos modificar para devolver nuevos valores, de momento no podemos hacerlo hasta ver que resultados nos va a devolver el SAT exactamente, que ya hasta el momento de escribir este artículo aún no esta disponible la plataforma de consultas.
  2. Función para descargar todas las peticiones de cancelación de nuestros proveedores, a fin de evitar tener que estar consultado el buzón fiscal todos los dias, tendremos una función que te permitirá descargar todas las peticiones de cancelacions que hayas recibido en tu buzón fiscal, el uso de esta función se cobrará a 1 timbre por consulta.
  3. Función para autorizar/rechazar las peticiones de cancelación recibidas, esta función tiene por objeto que puedas autorizar o rechazar las peticiones que hayas descargado sin necesidad de utilizar el buzón fiscal, el uso de esta función también tiene el costo de 1 timbre por uso. 
El hecho que de en esta ocasión tengamos que cobrar los timbres por algunos servicios, se debe a que los PACs que prestan el servicio de cancelación también nos van a cobrar a nosotros por las cancelaciones, y tienen razón, se está utilizando un servicio que les ha costado desarrollar, implementar y mantener, por lo mismo tienen que cobrar el servicio.

Esperamos que esta información te sea de utilidad para comenzar a trabajar con el nuevo esquema de cancelaciones, por nuestra parte seguimos trabajando para tener pronto toda la batería de funciones lista.

8 comentarios:

  1. Buenas tardes tendrás un ejemplo de como se utilizaría la función ( VirtualXML_CancelaCFDI()) de cancelación a través del ejecutable VirtualXML.exe así como la función de VirtualXML_ConsultaEstadoCFDI().

    De antemano muchas gracias.

    ResponderEliminar
    Respuestas
    1. De momento no tenemos versión EXE externo para la esta función. Lo tendremos en cuanto probemos que todo el esquema de cancelaciones opere como esta indicado.

      Eliminar
    2. Gracias por tu respuesta, cuando crees que saquen la versión del ejecutable para la cancelación con el nuevo esquema.
      de antemano muchas gracias.

      Eliminar
  2. para el caso de las cancelaciones de REP es la misma instrucción?
    y si fuese asi el importe total en este caso sera siempre cero o cual nodo se usara para el parámetro ctotal?

    ResponderEliminar
    Respuestas
    1. El REP se cancela con importe 0 como lo indica el total del documento.

      Eliminar
  3. Alguna tiempo estimado para la cancelación con la versión EXE

    ResponderEliminar
  4. Buenas tardes, estoy intentando cancelar por medio del EXE pero siempre me retorna este mensaje, Function:VirtualXML_CancelaCFDI[No Encontrada, o numero de parametros incorrectos], los parametros y el nombre de la funcion estan bien ya que con otro lenguaje no tiene probelas. podria orientarme cuales son los parametros correctos.

    |>|VirtualXML_CancelaCFDI|demo_LopezyDomi|AAA010101AAA|CME010607N58|201.8600|2C8E7EF4-E8DF-4A84-B280-47C0D53B45CF|C:\Sisasur\CSD01_AAA010101AAA.cer|C:\Sisasur\CSD01_AAA010101AAA.key|12345678a|C:\Sitbold_sql\tmp\CancelaCFDI_result.ini|C:\Sitbold_sql\tmp\CancelaCFDI_result.log|<|

    saludos cordiales

    ResponderEliminar
  5. Buenas tardes Rene podrias decirnos cuales son todos los mensajes de respuesta del SAT en los campos ESTADO, ESCANCELABLE Y ESTATUSCANCELACION ya que el resultado que da la función regresa no siempre es de acuerdo al resultado de esas variable de antemano muchas gracias.

    Ejemplo resultado regresado con la función la primera vez me regreso 1
    [VirtualXML]
    EXITCODE = 1
    COMMINFO =
    UUID = F61BB083-7688-40DE-9431-FC9789076C8D
    RFCEMISOR = OIAI7907105R5
    RFCRECEPTOR = LOMT690429MT4
    TOTAL = 116.00
    ESTADO = Vigente
    ESCANCELABLE = Cancelable sin aceptación
    ESTATUSCANCELACION = En proceso
    PAC = INO

    El mismo UUID en la segunda solicitud de cancelacion me regreso 0
    [VirtualXML]
    EXITCODE = 0
    COMMINFO =
    UUID = F61BB083-7688-40DE-9431-FC9789076C8D
    RFCEMISOR = OIAI7907105R5
    RFCRECEPTOR = LOMT690429MT4
    TOTAL = 116.00
    ESTADO = Cancelado
    ESCANCELABLE = Cancelable sin aceptación
    ESTATUSCANCELACION = Cancelado
    PAC = INO

    ResponderEliminar