git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
512 lines
16 KiB
ObjectPascal
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.
|
|
|
|
|
|
|