{
===============================================================================
  Copyright (©) 2002. Rodax Software.
===============================================================================
  Los contenidos de este fichero son propiedad de Rodax Software titular del
  copyright. Este fichero sólo podrá ser copiado, distribuido y utilizado,
  en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
  acuerdo con los términos y condiciones establecidas en el acuerdo/contrato
  bajo el que se suministra.
  -----------------------------------------------------------------------------
  Web:  www.rodax-software.com
===============================================================================
  Fecha primera versión: 16-02-2004
  Versión actual: 1.0.1
  Fecha versión actual: 28-09-2004
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
    28-09-2004    Se ha cambiado la una linea del procedimiento inicializar contador
                  con el fin de no machacar el campo serie si este ya viene relleno
===============================================================================
}

unit contadores;

interface

type
  TContador = (contAlbaranesCliente,
        contAlbaranesProveedor,
        contAlbaranesInstalador,
        contAlmacenes,
        contArticulos,
        contClientes,
        contFacturasCliente,
        contFacturasProveedor,
        contInstaladores,
        contFabricantes,
        contMovimientos,
        contPedidosProveedor,
        contPresupuestosCliente,
        contProveedores);

  TRegistroContador = record
    CodigoEmpresa : variant;
    CodigoTabla : variant;
    Tabla : Variant;   // <-- Mejor 'Contador' o 'Entidad'
    EsComun : Boolean;
    Longitud : Variant;
    Seriado : Variant;
    Dia : Boolean;
    Mes : Boolean;
    Ano : Boolean;
    ContDia : Variant;
    ContMes : Variant;
    ContAno : Variant;
    Contador : Integer; // <-- Mejor 'Valor'
  end;

const
  //Nombre de las tablas con las que están relacionados los contadores
    NombreTablasContadores : array [TContador] of String = (
               ('ALBARANESCLIENTE'),          //contAlbaranesCliente
               ('ALBARANESPROVEEDOR'),        //contAlbaranesProveedor
               ('ALBARANESINSTALADOR'),       //contAlbaranesInstalador
               ('ALMACENES'),                 //contAlmacenes
               ('ARTICULOS'),                 //contArticulos
               ('CLIENTES'),                  //contClientes
               ('FACTURASCLIENTE'),           //contFacturasCliente
               ('FACTURASPROVEEDOR'),         //contFacturasProveedor
               ('INSTALADORES'),              //contInstaladores
               ('FABRICANTES'),               //contFabricantes               
               ('MOVIMIENTOS'),               //contMovimientos
               ('PEDIDOSPROVEEDOR'),          //contPedidosProveedor
               ('PRESUPUESTOSCLIENTE'),       //contPresupuestosCliente
               ('PROVEEDORES')                //contProveedores
   );


procedure InicializarContador (lContador : TContador; var RegistroContador : TRegistroContador);

implementation

uses
StrFunc;

const
   // Seriados de los contadores
   SeriadoContadores : array [TContador] of String = (
               ('ALB'),          //contAlbaranesCliente
               ('ALP'),          //contAlbaranesProveedor
               ('ALI'),          //contAlbaranesInstalador
               (''),                 //contAlmacenes
               (''),                 //contArticulos
               (''),                  //contClientes
               ('FAC'),           //contFacturasCliente
               ('FAP'),         //contFacturasProveedor
               (''),              //contInstaladores
               (''),              //contFabricantes               
               (''),               //contMovimientos
               ('PED'),          //contPedidosProveedor
               ('PRE'),       //contPresupuestosCliente
               ('')                //contProveedores
   );

   // Longitudes de los contadores
   LongitudContadores : array [TContador] of Integer = (
               (12),            //contAlbaranesCliente
               (12),            //contAlbaranesProveedor
               (12),            //contAlbaranesInstalador
               (-1),            //contAlmacenes
               (10),            //contArticulos
               (10),            //contClientes
               (12),		//contFacturasCliente
               (12),            //contFacturasProveedor
               (10),            //contInstaladores
               (10),            //contFabricantes               
               (12),            //contMovimientos
               (12),            //contPedidosProveedor
               (12),            //contPresupuestosCliente
               (10)             //contProveedores
   );

   DiaContadores : array [TContador] of Boolean = (
               (False),            //contAlbaranesCliente
               (False),            //contAlbaranesProveedor
               (False),            //contAlbaranesInstalador
               (False),            //contAlmacenes
               (False),            //contArticulos
               (False),            //contClientes
               (False),  	         //contFacturasCliente
               (False),            //contFacturasProveedor
               (False),            //contInstaladores
               (False),            //contFabricantes               
               (False),            //contMovimientos
               (False),            //contPedidosProveedor
               (False),            //contPresupuestosCliente
               (False)             //contProveedores
   );

   MesContadores : array [TContador] of Boolean = (
               (False),            //contAlbaranesCliente
               (False),            //contAlbaranesProveedor
               (False),            //contAlbaranesInstalador
               (False),            //contAlmacenes
               (False),            //contArticulos
               (False),            //contClientes
               (False),  	         //contFacturasCliente
               (False),            //contFacturasProveedor
               (False),            //contInstaladores
               (False),            //contFabricantes               
               (False),            //contMovimientos
               (False),            //contPedidosProveedor
               (True),            //contPresupuestosCliente
               (False)             //contProveedores
   );

   AnoContadores : array [TContador] of Boolean = (
               (True),            //contAlbaranesCliente
               (True),            //contAlbaranesProveedor
               (TRue),            //contAlbaranesInstalador
               (False),            //contAlmacenes
               (False),            //contArticulos
               (False),            //contClientes
               (True),  	         //contFacturasCliente
               (True),            //contFacturasProveedor
               (False),            //contInstaladores
               (False),            //contFabricantes               
               (False),            //contMovimientos
               (True),            //contPedidosProveedor
               (True),            //contPresupuestosCliente
               (False)             //contProveedores
   );

   tcComunes = [contArticulos, contClientes, contInstaladores, contFabricantes, contMovimientos,
                contProveedores];

procedure InicializarContador (lContador : TContador; var RegistroContador : TRegistroContador);
begin
  with RegistroContador do
  begin
    Tabla := NombreTablasContadores[lContador];
    EsComun := (lContador in tcComunes);
    if (LongitudContadores[lContador] = -1) then
      Longitud := NULL
    else
      Longitud := LongitudContadores[lContador];
    if EsCadenaVacia(Seriado) then
       Seriado := SeriadoContadores[lContador];
    Dia := DiaContadores[lContador];
    Mes := MesContadores[lContador];
    Ano := AnoContadores[lContador];
    ContDia := NULL;
    ContMes := NULL;
    ContAno := NULL;
    Contador := 0;
  end;
end;

end.
