{
===============================================================================
  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, variants, Configuracion,

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

type
  TfrDatosContadores = class(TRdxDBFrame)
    BarraContadores: TRdxBarraSuperior;
    pnlCuerpo: TPanel;
    pnlDatos: TAdvPanel;
    eArticulos: TLabel;
    Articulos: TcxSpinEdit;
    pnlProveedores: TAdvPanel;
    eProveedores: TLabel;
    Proveedores: TcxSpinEdit;
    eFacturasProveedor: TLabel;
    FacturasProveedor: TcxSpinEdit;
    pnlClientes: TAdvPanel;
    eClientes: TLabel;
    Clientes: TcxSpinEdit;
    ePresupuestos: TLabel;
    PresupuestosCliente: TcxSpinEdit;
    eContratos: TLabel;
    ContratosCliente: TcxSpinEdit;
    eFacturasCliente: TLabel;
    FacturasCliente: TcxSpinEdit;
    eFacturasProforma: TLabel;
    FacturasProforma: TcxSpinEdit;
    ePagosProveedor: TLabel;
    PagosProveedor: TcxSpinEdit;
    ePagosCliente: TLabel;
    PagosCliente: TcxSpinEdit;
    brSeleccion: TRdxBarraInferior;
    bAceptar: TRdxBoton;
    bCancelar: TRdxBoton;
    ArticulosSerie: TcxTextEdit;
    PagProvSerie: TcxTextEdit;
    FacProvSerie: TcxTextEdit;
    ProveedoresSerie: TcxTextEdit;
    ClientesSerie: TcxTextEdit;
    PreCliSerie: TcxTextEdit;
    ConCliSerie: TcxTextEdit;
    FacCliSerie: TcxTextEdit;
    FacProCliSerie: TcxTextEdit;
    PagCliSerie: TcxTextEdit;
    eComentario1: TLabel;
    eComentario2: TLabel;
    eComentario3: TLabel;
    eComentario4: TLabel;
    eComentario5: TLabel;
    eComentario: TLabel;
    imgSombra: TImage;
    Label1: TLabel;
    AlbaranesCliente: TcxSpinEdit;
    AlbCliSerie: TcxTextEdit;

    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, 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);
  ArticulosSerie.Text := GestorContadores.darSeriadoContador(contArticulos);

  Proveedores.Text := GestorContadores.darValorContador(contProveedores);
  ProveedoresSerie.Text := GestorContadores.darSeriadoContador(contProveedores);
  FacturasProveedor.Text := GestorContadores.darValorContador(contFacturasProveedor);
  FacProvSerie.Text := GestorContadores.darSeriadoContador(contFacturasProveedor);
  PagosProveedor.Text := GestorContadores.darValorContador(contPagosProveedor);
  PagProvSerie.Text := GestorContadores.darSeriadoContador(contPagosProveedor);

  Clientes.Text := GestorContadores.darValorContador(contClientes);
  ClientesSerie.Text := GestorContadores.darSeriadoContador(contClientes);
  PresupuestosCliente.Text := GestorContadores.darValorContador(contPresupuestosCliente);
  PreCliSerie.Text := GestorContadores.darSeriadoContador(contPresupuestosCliente);
  ContratosCliente.Text := GestorContadores.darValorContador(contContratosCliente);
  ConCliSerie.Text := GestorContadores.darSeriadoContador(contContratosCliente);
  AlbaranesCliente.Text := GestorContadores.darValorContador(contAlbaranesCliente);
  AlbCliSerie.Text := GestorContadores.darSeriadoContador(contAlbaranesCliente);
  FacturasCliente.Text := GestorContadores.darValorContador(contFacturasCliente);
  FacCliSerie.Text := GestorContadores.darSeriadoContador(contFacturasCliente);
  FacturasProforma.Text := GestorContadores.darValorContador(contFacturasProforma);
  FacProCliSerie.Text := GestorContadores.darSeriadoContador(contFacturasProforma);
  PagosCliente.Text := GestorContadores.darValorContador(contPagosCliente);
  PagCliSerie.Text := GestorContadores.darSeriadoContador(contPagosCliente);
end;

function TfrDatosContadores.AsignarContadores: Boolean;
begin
  Result := False;
  try
    if (not GestorContadores.asignarContador(contArticulos, StrToInt(Articulos.Text), ArticulosSerie.Text)) then exit;

    if (not GestorContadores.asignarContador(contProveedores, StrToInt(Proveedores.Text), ProveedoresSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contFacturasProveedor, StrToInt(FacturasProveedor.Text), FacProvSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contPagosProveedor, StrToInt(PagosProveedor.Text), PagProvSerie.Text)) then exit;

    if (not GestorContadores.asignarContador(contClientes, StrToInt(Clientes.Text), ClientesSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contPresupuestosCliente, StrToInt(PresupuestosCliente.Text), PreCliSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contContratosCliente, StrToInt(ContratosCliente.Text), ConCliSerie.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;
    if (not GestorContadores.asignarContador(contFacturasProforma, StrToInt(FacturasProforma.Text), FacProCliSerie.Text)) then exit;
    if (not GestorContadores.asignarContador(contPagosCliente, StrToInt(PagosCliente.Text), PagCliSerie.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.
