{
===============================================================================
  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: 03-12-2002
  Versión actual: 1.0.0
  Fecha versión actual: 03-12-2002
===============================================================================
  Modificaciones:

    Fecha         Comentarios
    ---------------------------------------------------------------------------
===============================================================================
}

unit DatosContadores;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  RDXDBFRAME, RdxBotones, ExtCtrls, RdxPaneles, RdxBarras, RdxTitulos,
  Grids, DBGrids, RXDBCtrl, IBCustomDataSet, Db, StdCtrls,
  DBTables, RdxCampos, IB, Configuracion,

  // Contadores
  TablaContadores, RdxGestorContadores, cxControls, cxContainer, cxEdit, cxTextEdit, cxMaskEdit,
  cxSpinEdit;

type
  TfrDatosContadores = class(TRdxDBFrame)
    BarraContadores: TRdxBarraSuperior;
    pnlCuerpo: TPanel;
    pnlDatos: TRdxPanel;
    eArticulos: TLabel;
    Articulos: TcxSpinEdit;
    pnlProveedores: TRdxPanel;
    eProveedores: TLabel;
    Proveedores: TcxSpinEdit;
    eFacturasProveedor: TLabel;
    FacturasProveedor: TcxSpinEdit;
    pnlClientes: TRdxPanel;
    eClientes: TLabel;
    Clientes: TcxSpinEdit;
    ePresupuestos: TLabel;
    PresupuestosCliente: TcxSpinEdit;
    eContratos: TLabel;
    AlbaranesCliente: TcxSpinEdit;
    eFacturasCliente: TLabel;
    FacturasCliente: TcxSpinEdit;
    ePagosProveedor: TLabel;
    PedidosProveedor: TcxSpinEdit;
    brSeleccion: TRdxBarraInferior;
    bAceptar: TRdxBoton;
    bCancelar: TRdxBoton;
    PedProvSerie: TcxTextEdit;
    FacProvSerie: TcxTextEdit;
    PreCliSerie: TcxTextEdit;
    AlbCliSerie: TcxTextEdit;
    FacCliSerie: TcxTextEdit;
    eComentario1: TLabel;
    eComentario2: TLabel;
    eComentario3: TLabel;
    eComentario: TLabel;
    imgSombra: TImage;
    cDatos: TRdxCabecera;
    RdxCabecera1: TRdxCabecera;
    RdxCabecera2: TRdxCabecera;
    Label1: TLabel;
    Almacenes: TcxSpinEdit;
    Label2: TLabel;
    Label3: TLabel;
    eAlbaranesProveedor: TLabel;
    AlbaranesProveedor: TcxSpinEdit;
    AlbProSerie: TcxTextEdit;
    Label5: TLabel;
    eAlbaranesInstalador: TLabel;
    AlbaranesInstalador: TcxSpinEdit;
    AlbInsSerie: TcxTextEdit;
    Label6: TLabel;

    procedure bCancelarClick(Sender: TObject);
    procedure bAceptarClick(Sender: TObject);
  private
    FTablaContadores : TdmTablaContadores;
    procedure InicializarContadores;
    function AsignarContadores: Boolean;
  protected
    procedure ActivarModoAnadir; override;
  public
    constructor Create (AOwner : TComponent); override;
    destructor Destroy; override;
  published
    property BaseDatos;
    property Transaccion;
  end;

var
  frDatosContadores: TfrDatosContadores;

implementation

{$R *.DFM}

{ TfrDatosContadores }

uses
  BaseDatos, Mensajes, Literales, Tipos, Entidades, Contadores;


constructor TfrDatosContadores.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Entidad := entOpciones;
  ConfigurarFrame(Self, Entidad);
  FTablaContadores := TdmTablaContadores.Create(Self);
end;

destructor TfrDatosContadores.Destroy;
begin
  FTablaContadores.Free;
  FTablaContadores := Nil;
  inherited;
end;

procedure TfrDatosContadores.bCancelarClick(Sender: TObject);
begin
  try
    dmBaseDatos.Rollback;
    CloseFrame;
  except
    on E : EIBError do begin
      dmBaseDatos.Rollback;
      VerMensaje(E.Message);
    end;
    on E : EDatabaseError do begin
      dmBaseDatos.Rollback;    
      VerMensaje(E.Message);
    end;
  end;
end;

procedure TfrDatosContadores.InicializarContadores;
begin
  Articulos.Text := GestorContadores.darValorContador(contArticulos);
  Almacenes.Text := GestorContadores.darValorContador(contAlmacenes);
  AlbaranesInstalador.Text := GestorContadores.darValorContador(contAlbaranesInstalador);
  AlbInsSerie.Text := GestorContadores.darSeriadoContador(contAlbaranesInstalador);

  Proveedores.Text := GestorContadores.darValorContador(contProveedores);
  FacturasProveedor.Text := GestorContadores.darValorContador(contFacturasProveedor);
  FacProvSerie.Text := GestorContadores.darSeriadoContador(contFacturasProveedor);
  PedidosProveedor.Text := GestorContadores.darValorContador(contPedidosProveedor);
  PedProvSerie.Text := GestorContadores.darSeriadoContador(contPedidosProveedor);
  AlbaranesProveedor.Text := GestorContadores.darValorContador(contAlbaranesProveedor);
  AlbProSerie.Text := GestorContadores.darSeriadoContador(contAlbaranesProveedor);

  Clientes.Text := GestorContadores.darValorContador(contClientes);
  PresupuestosCliente.Text := GestorContadores.darValorContador(contPresupuestosCliente);
  PreCliSerie.Text := GestorContadores.darSeriadoContador(contPresupuestosCliente);
  AlbaranesCliente.Text := GestorContadores.darValorContador(contAlbaranesCliente);
  AlbCliSerie.Text := GestorContadores.darSeriadoContador(contAlbaranesCliente);
  FacturasCliente.Text := GestorContadores.darValorContador(contFacturasCliente);
  FacCliSerie.Text := GestorContadores.darSeriadoContador(contFacturasCliente);
end;

function TfrDatosContadores.AsignarContadores: Boolean;
begin
  Result := False;
  try
    if (not GestorContadores.asignarContador(contArticulos, StrToInt(Articulos.Text), NULL)) then exit;
    if (not GestorContadores.asignarContador(contAlmacenes, StrToInt(Almacenes.Text), NULL)) then exit;
    if (not GestorContadores.asignarContador(contAlbaranesInstalador, StrToInt(AlbaranesInstalador.Text), AlbInsSerie.Text)) then exit;

    if (not GestorContadores.asignarContador(contProveedores, StrToInt(Proveedores.Text), NULL)) then exit;
    if (not GestorContadores.asignarContador(contFacturasProveedor, StrToInt(FacturasProveedor.Text), FacProvSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contPedidosProveedor, StrToInt(PedidosProveedor.Text), PedProvSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contAlbaranesProveedor, StrToInt(AlbaranesProveedor.Text), AlbProSerie.Text)) then exit;

    if (not GestorContadores.asignarContador(contClientes, StrToInt(Clientes.Text), NULL)) then exit;
    if (not GestorContadores.asignarContador(contPresupuestosCliente, StrToInt(PresupuestosCliente.Text), PreCliSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contAlbaranesCliente, StrToInt(AlbaranesCliente.Text), AlbCliSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contFacturasCliente, StrToInt(FacturasCliente.Text), FacCliSerie.Text)) then exit;

    Result := True;
  except
  on E : EConvertError do begin
    verMensaje(msgOpcContadoresInc);
    Result := False;
  end;
  end;
end;

procedure TfrDatosContadores.bAceptarClick(Sender: TObject);
begin
  try
    if not AsignarContadores
    then dmBaseDatos.Rollback
    else begin
      dmBaseDatos.Commit;
      CloseFrame;
    end;
  except
    on E : EIBError do begin
      dmBaseDatos.Rollback;
      VerMensaje(E.Message);
    end;
    on E : EDatabaseError do begin
      dmBaseDatos.Rollback;
      VerMensaje(E.Message);
    end;
  end;
end;

procedure TfrDatosContadores.ActivarModoAnadir;
begin
  if FTablaContadores.bloquearRC
  then InicializarContadores
  else CloseFrame;
end;

end.
