This repository has been archived on 2024-12-02. You can view files and clone it, but cannot push or open issues or pull requests.
FactuGES/Libros/DetallesLibro.pas
2007-06-26 08:08:27 +00:00

512 lines
16 KiB
ObjectPascal

{
===============================================================================
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: 26-01-2003
Versión actual: 1.0.0
Fecha versión actual: 26-01-2003
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit DetallesLibro;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls,
Menus, am2000menuitem, am2000popupmenu, am2000, Db, DBTables,
RXDBCtrl, RdxPaneles, RdxBarras, RdxDBFrame, RdxFrame,
cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxEdit, cxDBData, cxGridTableView,
cxGridCustomTableView, cxGridDBTableView, cxGridLevel, cxClasses, cxControls,
cxGridCustomView, cxGrid, Configuracion, StdCtrls, Buttons,
AdvPanel, cxContainer, cxTextEdit,
cxMaskEdit, cxDropDownEdit, cxLookupEdit, cxDBLookupEdit,
cxDBLookupComboBox, ActnList, RdxFrameDetallesLibro, ImgList,
RdxEmpresaActiva, am2000utils, cxDataStorage;
type
TfrDetallesLibro = class(TRdxFrameDetallesLibro)
dsDetallesLibro: TDataSource;
brSeleccion: TRdxBarraInferior;
bSeleccionar: TRdxBoton;
bCancelar: TRdxBoton;
BarraDetallesLibro: TRdxBarraSuperior;
MenuOpciones: TPopupMenu2000;
mnuAnadir: TMenuItem2000;
mnuEliminar: TMenuItem2000;
VistaDetalles: TcxGridDBTableView;
gridDetallesLibroLevel1: TcxGridLevel;
gridDetallesLibro: TcxGrid;
mnuConsultar: TMenuItem2000;
pnlCuerpo: TPanel;
Acciones: TActionList;
actModificar: TAction;
actConsultar: TAction;
actSeleccionar: TAction;
actCancelar: TAction;
actImprimir: TAction;
mnuImprimir: TMenuItem2000;
actAnular: TAction;
menuAnadir: TPopupMenu2000;
mnuEntrada: TMenuItem2000;
mnuSalida: TMenuItem2000;
actAnadirEnt: TAction;
actAnadirSal: TAction;
bAnadir: TRdxBotonMenu;
bEliminar: TRdxBotonSuperior;
bConsultar: TRdxBotonSuperior;
bAnular: TRdxBotonSuperior;
bCerrar: TRdxBotonSuperior;
actCerrar: TAction;
bSeparador1: TShape;
mnuAnular: TMenuItem2000;
mnuCerrar: TMenuItem2000;
mnuSep: TMenuItem2000;
RdxBotonSuperior1: TRdxBotonSuperior;
bImprimir: TRdxBotonSuperior;
bSeparador2: TShape;
actCambioTrimestre: TAction;
imgSombra: TImage;
pnlCuerpo2: TRdxPanel;
pnlExtra: TRdxBarraSuperior;
bRefrescar: TRdxBoton;
actGestionVentas: TAction;
actGestionCompras: TAction;
menuGestionar: TPopupMenu2000;
MenuItem20001: TMenuItem2000;
MenuItem20002: TMenuItem2000;
bGestionar: TRdxBotonMenu;
Panel1: TPanel;
eNombre: TLabel;
Buscar: TcxTextEdit;
RdxBoton1: TRdxBoton;
procedure actAnadirEntExecute(Sender: TObject);
procedure actAnadirSalExecute(Sender: TObject);
procedure actModificarExecute(Sender: TObject);
procedure actConsultarExecute(Sender: TObject);
procedure actAnularExecute(Sender: TObject);
procedure actSeleccionarExecute(Sender: TObject);
procedure actCancelarExecute(Sender: TObject);
procedure actImprimirExecute(Sender: TObject);
procedure bLimpiarClick(Sender: TObject);
procedure RdxFrameDetallesLibroShow(Sender: TObject);
procedure VistaDetallesDblClick(Sender: TObject);
procedure VistaDetallesCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
procedure actCerrarExecute(Sender: TObject);
procedure actCambioTrimestreExecute(Sender: TObject);
procedure actRefrescarDatosExecute(Sender: TObject);
procedure actGestionVentasExecute(Sender: TObject);
procedure actGestionComprasExecute(Sender: TObject);
procedure BuscarPropertiesChange(Sender: TObject);
private
FListaTipoLibro: TStringList;
procedure ActualizarBotones;
protected
procedure SetTipoLibro (Value : Variant); override;
procedure BuscarLibro; override;
procedure BuscarNumEntrada; override;
procedure FreeContenido; override;
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
end;
var
frDetallesLibro: TfrDetallesLibro;
implementation
{$R *.DFM}
uses
IBCustomDataSet, BaseDatos, Entidades, Variants,
Mensajes, IBSQL, IBDatabase, IB, Excepciones, TablaLibros, Literales,
DetalleLibro, ImprimirLibro, StrFunc, Constantes,
TrimestrePredeterminado, TablaEmpresas, InformeTrimestral;
////////////////////////////////////////////////////////////////////////////////
// PRIVATE
////////////////////////////////////////////////////////////////////////////////
procedure TfrDetallesLibro.ActualizarBotones;
begin
if BaseDatos.IsReadOnly then
begin
actAnadirEnt.Enabled := False;
actAnadirSal.Enabled := False;
actModificar.Enabled := False;
actConsultar.Enabled := True;
actImprimir.Enabled := True;
actAnular.Enabled := False;
actCerrar.Enabled := False;
Exit;
end;
if TablaDetallesLibro.RecordCount = 0 then
begin
actAnadirEnt.Enabled := True;
actAnadirSal.Enabled := True;
actModificar.Enabled := False;
actConsultar.Enabled := False;
actImprimir.Enabled := False;
actAnular.Enabled := False;
actCerrar.Enabled := False;
end
else begin
actAnadirEnt.Enabled := True;
actAnadirSal.Enabled := True;
actModificar.Enabled := True;
actConsultar.Enabled := True;
actImprimir.Enabled := True;
actAnular.Enabled := True;
actCerrar.Enabled := True;
end;
end;
////////////////////////////////////////////////////////////////////////////////
// PROTECTED
////////////////////////////////////////////////////////////////////////////////
procedure TfrDetallesLibro.SetTipoLibro(Value: Variant);
begin
inherited;
BarraDetallesLibro.Caption := FListaTipoLibro.Values[Value];
VistaDetalles.Controller.GoToFirst;
end;
procedure TfrDetallesLibro.BuscarLibro;
begin
if Transaccion = NIL then
exit;
try
TablaDetallesLibro.DisableControls;
TablaDetallesLibro.Close;
// if not esCadenaVacia(TipoLibro) then
TablaDetallesLibro.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
TablaDetallesLibro.ParamByName('TIPOLIBRO').AsString := TipoLibro;
TablaDetallesLibro.Prepare;
TablaDetallesLibro.Open;
dmTablaLibros.InicializarTablaDetallesLibro(@TablaDetallesLibro);
ActualizarBotones;
TablaDetallesLibro.EnableControls;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrDetallesLibro.BuscarNumEntrada;
begin
with TablaDetallesLibro do
begin
DisableControls;
Close;
Open;
dmTablaLibros.InicializarTablaDetallesLibro(@TablaDetallesLibro);
ActualizarBotones;
EnableControls;
end;
if not TablaDetallesLibro.Locate('NUMENTRADA',NumEntrada,[]) then
VistaDetalles.Controller.GoToFirst
else
VistaDetalles.Controller.TopRowIndex := VistaDetalles.Controller.FocusedRowIndex;
end;
procedure TfrDetallesLibro.FreeContenido;
begin
if (Contenido is TRdxFrameDetallesLibro) then begin
TipoLibro := (Contenido as TRdxFrameDetallesLibro).TipoLibro;
NumEntrada := (Contenido as TRdxFrameDetallesLibro).NumEntrada;
end;
inherited FreeContenido;
gridDetallesLibro.SetFocus;
end;
////////////////////////////////////////////////////////////////////////////////
// PUBLIC
////////////////////////////////////////////////////////////////////////////////
constructor TfrDetallesLibro.Create (AOwner : TComponent);
begin
inherited Create(AOwner);
Entidad := entEntLibro;
FListaTipoLibro := TStringList.Create;
dmTablaLibros.darLibros(FListaTipoLibro);
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaDetallesLibro := TIBDataSet.Create(Self);
dsDetallesLibro.DataSet := TablaDetallesLibro;
with TablaDetallesLibro do
begin
DisableControls;
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaLibros.sqlGridDetallesLibro);
ActualizarBotones;
EnableControls;
end;
dmTablaLibros.InicializarGridDetallesLibro(VistaDetalles);
VistaDetalles.OnDblClick := VistaDetallesDblClick;
VistaDetalles.Controller.GoToFirst;
end;
destructor TfrDetallesLibro.Destroy;
begin
TablaDetallesLibro.Close;
TablaDetallesLibro.Unprepare;
TablaDetallesLibro.Free;
FListaTipoLibro.Free;
FListaTipoLibro := NIL;
inherited;
end;
procedure TfrDetallesLibro.actAnadirEntExecute(Sender: TObject);
var
lfrContenido : TfrDetalleLibro;
begin
lfrContenido := TfrDetalleLibro.Create(Self);
lfrContenido.TipoLibro := TipoLibro;
Contenido := lfrContenido;
Contenido.Entidad := entEntLibro;
Contenido.Modo := Anadir;
end;
procedure TfrDetallesLibro.actAnadirSalExecute(Sender: TObject);
var
lfrContenido : TfrDetalleLibro;
begin
lfrContenido := TfrDetalleLibro.Create(Self);
lfrContenido.TipoLibro := TipoLibro;
Contenido := lfrContenido;
Contenido.Entidad := entSalLibro;
Contenido.Modo := Anadir;
end;
procedure TfrDetallesLibro.actModificarExecute(Sender: TObject);
var
lfrContenido : TfrDetalleLibro;
begin
lfrContenido := TfrDetalleLibro.Create(Self);
lfrContenido.TipoLibro := TipoLibro;
Contenido := lfrContenido;
Contenido.Modo := Modificar;
end;
procedure TfrDetallesLibro.actConsultarExecute(Sender: TObject);
var
lfrContenido : TfrDetalleLibro;
begin
lfrContenido := TfrDetalleLibro.Create(Self);
lfrContenido.TipoLibro := TipoLibro;
Contenido := lfrContenido;
Contenido.Modo := Consultar;
end;
procedure TfrDetallesLibro.actAnularExecute(Sender: TObject);
var
lDatosDetalleLibro : TDatosDetalleLibro;
Importe : Double;
lsAux : Variant;
begin
//En el caso de ser un cierre no se anulara nunca
if (TablaDetallesLibro.FieldByName('TIPOENTRADA').AsString = CTE_CIERRE) then
exit;
if VerMensajePregunta('Esta seguro que desea anular la entrada seleccionada') = mrYES then
begin
lDatosDetalleLibro := TDatosDetalleLibro.Create;
lDatosDetalleLibro.TipoLibro := TipoLibro;
lDatosDetalleLibro.NumEntrada := TablaDetallesLibro.FieldByName('NUMENTRADA').AsString;
//Descripcion
lsAux := msgCliSep5;
lsAux := lsAux + lDatosDetalleLibro.NumEntrada;
lsAux := lsAux + msgCliSep4;
if dmTablaLibros.darDatosDetalleLibro(lDatosDetalleLibro) then
begin
//Añadimos descripcion
lsAux := lsAux + lDatosDetalleLibro.Descripcion;
lDatosDetalleLibro.Descripcion := lsAux;
//Demás operaciones
lDatosDetalleLibro.NumEntrada := dmTablaLibros.darNumEntrada(lDatosDetalleLibro.TipoLibro);
Importe := (-1) * lDatosDetalleLibro.Cuantia;
if Importe < 0
then lDatosDetalleLibro.TipoEntrada := CTE_SAL
else lDatosDetalleLibro.TipoEntrada := CTE_ENT;
lDatosDetalleLibro.Cuantia := Importe;
lDatosDetalleLibro.ImporteAnt := dmTablaLibros.darUltimoImportePos(lDatosDetalleLibro.TipoLibro);
lDatosDetalleLibro.ImportePos := lDatosDetalleLibro.ImporteAnt + Importe;
if dmTablaLibros.AnadirDetalleLibro(lDatosDetalleLibro) then begin
if dmTablaLibros.incrementarNumEntrada(lDatosDetalleLibro.TipoLibro) then
commit
else begin
rollback;
verMensaje('No se ha podido anular la entrada');
end
end
else begin
rollback;
verMensaje('No se ha podido anular la entrada');
end;
end
else verMensaje('Log: error en laq recogida de datos');
lDatosDetalleLibro.Free;
BuscarNumEntrada;
end;
end;
procedure TfrDetallesLibro.actSeleccionarExecute(Sender: TObject);
begin
if TablaDetallesLibro.RecordCount = 0 then
begin
VerMensaje(msgLibNoExisteEnt);
exit;
end;
NumEntrada := TablaDetallesLibro.FieldByName('NUMENTRADA').AsString;
CloseFrame;
end;
procedure TfrDetallesLibro.actCancelarExecute(Sender: TObject);
begin
NumEntrada := NULL;
CloseFrame;
end;
procedure TfrDetallesLibro.bLimpiarClick(Sender: TObject);
begin
Buscar.Text := '';
end;
procedure TfrDetallesLibro.RdxFrameDetallesLibroShow(Sender: TObject);
begin
gridDetallesLibro.SetFocus;
end;
procedure TfrDetallesLibro.VistaDetallesDblClick(Sender: TObject);
begin
if Modo = Seleccionar then
actSeleccionar.Execute
else
actConsultar.Execute;
end;
procedure TfrDetallesLibro.actImprimirExecute(Sender: TObject);
var
lfrContenido : TfrImprimirLibro;
begin
lfrContenido := TfrImprimirLibro.Create(Self);
lfrContenido.TipoLibro := TipoLibro;
Contenido := lfrContenido;
Contenido.Modo := Imprimir;
end;
procedure TfrDetallesLibro.VistaDetallesCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
IndiceCol : Integer;
begin
if not AViewInfo.Selected then
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('TIPOENTRADA').Index;
if UpperCase(Copy(AViewInfo.GridRecord.DisplayTexts[IndiceCol], 1, 1)) = CTE_CIERRE then
begin
ACanvas.Canvas.Brush.Color := $006D1555;
ACanvas.Canvas.Font.Color := clWhite;
end;
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('CUANTIA').Index;
if (IndiceCol = AViewInfo.Item.Index) then
begin
if Copy(Trim(AViewInfo.GridRecord.DisplayTexts[IndiceCol]), 1, 1) = '-' then
begin
ACanvas.Canvas.Font.Color := $000000CC;
end;
end;
end;
end;
procedure TfrDetallesLibro.actCerrarExecute(Sender: TObject);
begin
if dmTablaLibros.CerrarLibro(TablaDetallesLibro.FieldByName('TIPOLIBRO').AsString) then
Commit
else
Rollback;
BuscarNumEntrada;
end;
procedure TfrDetallesLibro.actCambioTrimestreExecute(Sender: TObject);
begin
fTrimestrePredeterminado := TfTrimestrePredeterminado.Create(Self);
fTrimestrePredeterminado.Entidad := entEntLibro;
try
fTrimestrePredeterminado.ShowModal;
finally
fTrimestrePredeterminado.Free;
end;
end;
procedure TfrDetallesLibro.actRefrescarDatosExecute(Sender: TObject);
begin
BuscarLibro;
VistaDetalles.DataController.GotoFirst;
end;
procedure TfrDetallesLibro.actGestionVentasExecute(Sender: TObject);
begin
CaptionModal := 'Gestionar trimestre de ventas';
HeightModal := 600;
WidthModal := 950;
ModoModal := Consultar;
EntidadModal := entInformeTrimestralVentas;
ContenidoModal := TfrInformeTrimestral.Create(Self);
end;
procedure TfrDetallesLibro.actGestionComprasExecute(Sender: TObject);
begin
CaptionModal := 'Gestionar trimestre de compras';
HeightModal := 600;
WidthModal := 950;
ModoModal := Consultar;
EntidadModal := entInformeTrimestralCompras;
ContenidoModal := TfrInformeTrimestral.Create(Self);
end;
procedure TfrDetallesLibro.BuscarPropertiesChange(Sender: TObject);
begin
FiltrarGrid(gridDetallesLibro, Buscar.Text);
end;
end.