Sistema de Gestión de Negocios "Hexa"

Base de datos de conocimiento.

Doc. Ref. 28243
Título: Ejemplo de creación automática de contadores para prefijos de documentos
Autor: Hexa
Última actualización: 15/03/2024
#contador #prefijo #numero #factura #albaran #pedido #contrato #cliente #proveedor


Ejemplo de creación automática de contadores para prefijos de documentos

Los documentos de Hexa (pedidos, facturas, albaranes, etc. están codificados por la combinación de un "Prefijo" alfanumérico que determina su "serie", y un número que se va incrementando. Esta numeración se realiza mediante contadores configurados que mantienen el valor numérico del siguiente documento a generar.

Existe un contador básico para cada tipo de documento que se utiliza "por defecto" cuando no hay una parametrización diferente. Si existen varios contadores para un tipo de documento, al generarse uno a partir de él, se intentará usar el mismo contador para el documento de destino (por ejemplo la facturación de un albarán). Si no existe, se utilizará el contador básico.

En el caso en que se quiera escoger el contador en función de diferentes criterios, la forma más práctica es utilizar el evento "XDoc.FAPContadorEspecial" que permite decidir el contador a utlizar en función de las circunstancias. Se podría especificar, por ejemplo, que se use un contador para facturas según el país del destinatario de la factura.

El siguiente ejemplo muestra un script que genera contadores según el año y mes de la factura generada. Por ejemplo las de marzo de 2024 se numerarán desde 24/03-1 en adelante.

Function Main (Criterio, Orden, Opciones)
    FechaDestino = fpc.igu (Opciones, "FechaDestino", true)
    Destino = fpc.igu (Opciones, "Destino", true)
    If IsDate (FechaDestino) Then 
        Fecha = CDate (FechaDestino)
        Prefijo =  Right ("" & year (Fecha),2) & "/" & Right ("0" & month(Fecha),2)
        If Destino="Factura" Then
            If Not Obd.ExisteContador ("Factura" & Prefijo) Then BD.Introduce "Contador", "Codigo, Numero, Prefijo", "'Factura" & Prefijo & "',1,'" & Prefijo & "'"
            Main = Prefijo
        End If
        If Destino="FacturaProveedor" Then
            If Not Obd.ExisteContador ("FacturaProveedor" & Prefijo) Then BD.Introduce "Contador", "Codigo, Numero, Prefijo", "'FacturaProveedor" & Prefijo & "',1,'" & Prefijo & "'"
           Main = Prefijo
        End If
    Else
        Main = ""
    End If
End Function

En el script se puede observar que el evento envía la fecha y el tipo de documento. El dato a devolver ("Main") es el prefijo que forzamos para el documento creado. Si no se espcifica nada, Hexa usará el prefijo que tenga configurado por defecto.

Es importante recordar que, si se decide como prefijo un contador que no existe, Hexa lo crea automáticamente en la tabla "Contador" y lo inicia al número 1.

Volver a la búsqueda anterior