This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
Miguelo_FactuGES/Clientes/ListadoBeneficios.pas
2007-06-25 15:19:31 +00:00

624 lines
20 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: 16-11-2002
Versión actual: 1.0.0
Fecha versión actual: 16-11-2002
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
===============================================================================
}
unit ListadoBeneficios;
interface
uses
Windows, Db, StdCtrls, RdxMemo, RdxCampos, RdxTitulos, Forms, RdxPaneles,
RdxBotones, Controls, ExtCtrls, RdxBarras, Classes, RdxFrameComisiones,
RdxFrame, RXDBCtrl, RxMemDS, ComCtrls, cxDBEdit, cxMaskEdit, cxButtonEdit,
Configuracion, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, AdvPanel,
cxSpinEdit, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData, cxDBData,
cxGridLevel, cxClasses, cxGridCustomView, cxGridCustomTableView,
cxGridTableView, cxGridDBTableView, cxGrid, cxDropDownEdit, cxCalendar,
InformeComisionesVendedores, vistaPrevia,
RdxDBFrame, RdxFrameListadoBeneficios, InformeListadoPagosCliente,
InformeListadoPagosClientes, RdxPageControl, IBCustomDataSet, IBDatabase,
cxDataStorage, cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, ActnList,
Grids, DBGrids, InformeListadoBeneficiosContrato, InformeDetalleBeneficiosContrato;
type
TfrListadoBeneficios = class(TRdxFrameListadoBeneficios)
dsFacturasCliente: TDataSource;
Titulo: TRdxPanelTituloOperacion;
pnlCuerpo: TPanel;
dsFacturasProveedor: TDataSource;
Paginas: TRdxPagesControl;
pagBeneficiosContrato: TTabSheet;
pnlDatos: TAdvPanel;
Panel3: TPanel;
eCodigoContrato: TLabel;
eNIFCIF: TLabel;
NIFCIF: TcxTextEdit;
Panel2: TPanel;
Panel1: TPanel;
Splitter1: TSplitter;
gridFacturasProveedor: TcxGrid;
gridFacturasProveedorDBTableView1: TcxGridDBTableView;
gridFacturasProveedorLevel1: TcxGridLevel;
gridFacturasCliente: TcxGrid;
gridFacturasClienteDBTableView1: TcxGridDBTableView;
gridFacturasClienteLevel1: TcxGridLevel;
Panel5: TPanel;
dsObrasGastos: TDataSource;
eNombre: TLabel;
Label1: TLabel;
Label2: TLabel;
Panel4: TPanel;
pagListaBeneficiosContrato: TTabSheet;
Panel6: TPanel;
brSimple: TRdxBarraInferior;
bVistaPrevia: TRdxBoton;
bImprimir: TRdxBoton;
bCancelar: TRdxBoton;
dsTablaBeneficios: TDataSource;
gridBeneficios: TcxGrid;
gridBeneficiosDBTableView1: TcxGridDBTableView;
gridBeneficiosLevel1: TcxGridLevel;
TablaBeneficiosAux: TIBDataSet;
TablaBeneficiosAuxCODIGO: TIBStringField;
TablaBeneficiosAuxFECHACONTRATO: TDateField;
TablaBeneficiosAuxIMPCLI: TIBBCDField;
TablaBeneficiosAuxIMPORTETOTAL: TIBBCDField;
TablaBeneficiosAuxPORCENTAJE: TIBBCDField;
TablaBeneficiosAuxBENEFICIO: TIBBCDField;
Nombre: TcxTextEdit;
Panel8: TPanel;
Panel11: TPanel;
Label3: TLabel;
Panel9: TPanel;
bEliminar: TRdxBoton;
bAnadir: TRdxBoton;
bEliminarTodo: TRdxBoton;
TablaBeneficiosAuxNIFCIF: TIBStringField;
TablaBeneficiosAuxNOMBRE: TIBStringField;
CodContrato: TcxTextEdit;
Acciones: TActionList;
actAnadir: TAction;
actEliminar: TAction;
actEliminarTodo: TAction;
gridObrasGastos: TcxGrid;
gridObrasGastosDBTableView1: TcxGridDBTableView;
gridObrasGastosLevel1: TcxGridLevel;
Panel10: TPanel;
PorcentajeBeneficio: TLabel;
eePorcentajeBeneficio: TLabel;
eeTotalFacProveedor: TLabel;
eeTotalObrasGastos: TLabel;
eeTotalFacCliente: TLabel;
eeTotalBeneficio: TLabel;
eTotalFacCliente: TLabel;
eTotalFacProveedor: TLabel;
eTotalObrasGastos: TLabel;
ePorcentajeBeneficio: TLabel;
eTotalBeneficio: TLabel;
TablaBeneficiosAuxIMPOTROS: TIBBCDField;
TablaBeneficiosAuxIMPPROV: TIBBCDField;
RdxBoton1: TRdxBoton;
actRecalcular: TAction;
procedure bCancelarClick(Sender: TObject);
procedure bImprimirClick(Sender: TObject);
procedure bVistaPreviaClick(Sender: TObject);
procedure Panel1Resize(Sender: TObject);
procedure gridFacturasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
procedure IBDataSet1CalcFields(DataSet: TDataSet);
procedure gridFacturasProveedorResize(Sender: TObject);
procedure actAnadirExecute(Sender: TObject);
procedure actEliminarExecute(Sender: TObject);
procedure actEliminarTodoExecute(Sender: TObject);
procedure gridObrasGastosExit(Sender: TObject);
procedure gridBeneficiosDBTableView1DblClick(Sender: TObject);
procedure PaginasChange(Sender: TObject);
procedure actRecalcularExecute(Sender: TObject);
private
ContadorAux: Integer;
FInformeListadoBeneficiosContrato : TdmInformeListadoBeneficiosContrato;
FInformeDetalleBeneficiosContrato : TdmInformeDetalleBeneficiosContrato;
procedure Filtrar;
procedure BuscarFacturasCliente;
procedure BuscarFacturasProveedor;
procedure BuscarObrasGastos;
protected
procedure ActivarModoConsultar; override;
procedure RecargarDatosDetalle; override;
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
end;
var
frListadoBeneficios: TfrListadoBeneficios;
implementation
{$R *.DFM}
uses
Mensajes, IB, Colores, BaseDatos, Sysutils, Constantes,
StrFunc, TablaPoblaciones, Excepciones, IBErrorCodes,
Variants, Entidades, NumFunc, Literales, TablaFacturasCliente,
TablaPagosCliente, DateFunc, cxCheckBox, cxDateUtils, Graphics,
ContratosClientes, RdxFrameContratos, TablaClientes, TablaContratos,
TablaFacturasProveedor, RdxEmpresaActiva, TablaObrasGastos;
procedure TfrListadoBeneficios.ActivarModoConsultar;
begin
Visible := True;
end;
procedure TfrListadoBeneficios.BuscarFacturasCliente;
begin
if Transaccion = NIL then
Exit;
try
TablaFacturasCliente.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(CodigoContrato) then begin
TablaFacturasCliente.Params.ByName('CODIGOCONTRATO').AsString := CodigoContrato;
TablaFacturasCliente.Params.ByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
end;
TablaFacturasCliente.Prepare;
TablaFacturasCliente.Open;
dmTablaFacturasCliente.InicializarTablaFacturas(@TablaFacturasCliente);
gridFacturasCliente.ActiveView.DataController.GotoFirst;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrListadoBeneficios.BuscarFacturasProveedor;
begin
if Transaccion = NIL then
Exit;
try
TablaFacturasProveedor.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(CodigoContrato) then begin
TablaFacturasProveedor.Params.ByName('CODIGOCONTRATO').AsString := CodigoContrato;
TablaFacturasProveedor.Params.ByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
end;
TablaFacturasProveedor.Prepare;
TablaFacturasProveedor.Open;
dmTablaFacturasProveedor.InicializarTablaFacturas(@TablaFacturasProveedor);
gridFacturasProveedor.ActiveView.DataController.GotoFirst;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
constructor TfrListadoBeneficios.Create (AOwner : TComponent);
var
Columna : TcxGridDBColumn;
begin
inherited Create(AOwner);
FInformeListadoBeneficiosContrato := TdmInformeListadoBeneficiosContrato.Create(Self);
FInformeDetalleBeneficiosContrato := TdmInformeDetalleBeneficiosContrato.Create(Self);
Entidad := entListadoBeneficios;
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaBeneficios := TablaBeneficiosAux;
TablaFacturasProveedor := TIBDataSet.Create(Self);
TablaFacturasCliente := TIBDataSet.Create(Self);
TablaObrasGastos := TIBDataSet.Create(Self);
dsTablaBeneficios.DataSet := TablaBeneficios;
dsFacturasProveedor.DataSet := TablaFacturasProveedor;
dsFacturasCliente.DataSet := TablaFacturasCliente;
dsObrasGastos.DataSet := TablaObrasGastos;
with TablaBeneficios do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaContratos.sqlConsultarGridBeneficios);
RefreshSQL.Assign(dmTablaContratos.sqlConsultarGridBeneficios);
AutoCalcFields := True;
OnCalcFields := IBDataSet1CalcFields;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
Open;
end;
with TablaFacturasProveedor do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasProveedor.sqlConsultarGridFacturasProvContrato);
RefreshSQL.Assign(dmTablaFacturasProveedor.sqlConsultarGridFacturasProvContrato);
end;
with TablaFacturasCliente do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasCliContrato);
RefreshSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasCliContrato);
end;
with TablaObrasGastos do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaObrasGastos.sqlGrid);
InsertSQL.Assign(dmTablaObrasGastos.sqlInsertar);
ModifySQL.Assign(dmTablaObrasGastos.sqlModificar);
DeleteSQL.Assign(dmTablaObrasGastos.sqlEliminar);
end;
dmTablaContratos.InicializarGridBeneficios(gridBeneficios);
dmTablaContratos.InicializarTablaBeneficios(@TablaBeneficios);
dmTablaFacturasCliente.InicializarGridFacturasCliContrato(gridFacturasCliente);
dmTablaFacturasProveedor.InicializarGridFacturasProvContrato(gridFacturasProveedor);
dmTablaObrasGastos.InicializarGrid(gridObrasGastosDBTableView1);
Filtrar;
Paginas.ActivePageIndex := 0;
end;
destructor TfrListadoBeneficios.Destroy;
begin
FInformeListadoBeneficiosContrato.Free;
FInformeDetalleBeneficiosContrato.Free;
TablaBeneficios.Close;
TablaBeneficios.UnPrepare;
TablaBeneficios.Free;
TablaFacturasProveedor.Close;
TablaFacturasProveedor.UnPrepare;
TablaFacturasProveedor.Free;
TablaFacturasCliente.Close;
TablaFacturasCliente.UnPrepare;
TablaFacturasCliente.Free;
TablaObrasGastos.Close;
TablaObrasGastos.UnPrepare;
TablaObrasGastos.Free;
inherited;
end;
procedure TfrListadoBeneficios.bImprimirClick(Sender: TObject);
begin
if (Paginas.ActivePageIndex = 0) then
begin
FInformeListadoBeneficiosContrato.Preview := nil;
FInformeListadoBeneficiosContrato.Imprimir;
end
else begin
FInformeDetalleBeneficiosContrato.CodigoContrato := CodigoContrato;
FInformeDetalleBeneficiosContrato.NIFCIF := NIFCIF.Text;
FInformeDetalleBeneficiosContrato.Nombre := Nombre.Text;
FInformeDetalleBeneficiosContrato.Preview := nil;
FInformeDetalleBeneficiosContrato.Imprimir;
end;
end;
procedure TfrListadoBeneficios.bCancelarClick(Sender: TObject);
begin
CloseFrame;
end;
procedure TfrListadoBeneficios.bVistaPreviaClick(Sender: TObject);
var
FVistaPrevia : TfrVistaPrevia;
begin
if (Paginas.ActivePageIndex = 0) then
begin
FVistaPrevia := TfrVistaPrevia.Create(Self);
FInformeListadoBeneficiosContrato.Preview := FVistaPrevia.Preview;
FInformeListadoBeneficiosContrato.Previsualizar;
CaptionModal := 'Informe de lista de beneficios por contrato';
end
else begin
FInformeDetalleBeneficiosContrato.CodigoContrato := CodigoContrato;
FInformeDetalleBeneficiosContrato.NIFCIF := NIFCIF.Text;
FInformeDetalleBeneficiosContrato.Nombre := Nombre.Text;
FVistaPrevia := TfrVistaPrevia.Create(Self);
FInformeDetalleBeneficiosContrato.Preview := FVistaPrevia.Preview;
FInformeDetalleBeneficiosContrato.Previsualizar;
CaptionModal := 'Informe de detalle de beneficios por contrato';
end;
WidthModal := 800;
HeightModal := 600;
ModoModal := Consultar;
EntidadModal := entListadoPagosCliente;
ContenidoModal := FVistaPrevia;
end;
procedure TfrListadoBeneficios.gridFacturasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
IndiceCol : Integer;
begin
if not AViewInfo.Selected then
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('BENEFICIO').Index;
if Copy(Trim(AViewInfo.GridRecord.DisplayTexts[IndiceCol]), 1, 1) = '-' then
ACanvas.Canvas.Font.Color := $000000CC;
end;
end;
procedure TfrListadoBeneficios.Panel1Resize(Sender: TObject);
begin
gridFacturasProveedor.Width := (Panel1.ClientWidth - Splitter1.Width) div 2;
gridFacturasCliente.Width := gridFacturasProveedor.Width;
gridObrasGastos.Width := gridFacturasProveedor.Width;
end;
procedure TfrListadoBeneficios.RecargarDatosDetalle;
var
TotalProv: double;
TotalObrasGastos: double;
TotalCli: double;
TotalBeneficio: double;
TotalPorcentaje: double;
begin
CodContrato.Text := CodigoContrato;
NifCif.Text := TablaBeneficios.FieldByName('NIFCIF').AsString;
Nombre.Text := TablaBeneficios.FieldByName('Nombre').AsString;
BuscarFacturasCliente;
BuscarFacturasProveedor;
BuscarObrasGastos;
if (not varIsNull(gridFacturasProveedor.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
TotalProv := gridFacturasProveedor.ActiveView.DataController.Summary.FooterSummaryValues[0]
else
TotalProv := 0;
eeTotalFacProveedor.Caption := msgCliListBeneCon1;
eTotalFacProveedor.Caption := '- ' + FormatFloat(DISPLAY_EUROS2, TotalProv);
if (not varIsNull(gridObrasGastos.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
TotalObrasGastos := gridObrasGastos.ActiveView.DataController.Summary.FooterSummaryValues[0]
else
TotalObrasGastos := 0;
eeTotalObrasGastos.Caption := msgCliListBeneCon2;
eTotalObrasGastos.Caption := '- ' + FormatFloat(DISPLAY_EUROS2, TotalObrasGastos);
if (not varIsNull(gridFacturasCliente.ActiveView.DataController.Summary.FooterSummaryValues[0])) then
TotalCli := gridFacturasCliente.ActiveView.DataController.Summary.FooterSummaryValues[0]
else
TotalCli := 0;
eeTotalFacCliente.Caption := msgCliListBeneCon3;
eTotalFacCliente.Caption := FormatFloat(DISPLAY_EUROS2, TotalCli);
TotalBeneficio := TotalCli - (TotalProv + TotalObrasGastos);
TotalPorcentaje := darPorcentaje(TotalCli, TotalBeneficio);
eeTotalBeneficio.Caption := msgCliListBeneCon4;
eTotalBeneficio.Caption := FormatFloat(DISPLAY_EUROS2, TotalBeneficio);
eePorcentajeBeneficio.Caption := msgCliListBeneCon5;
if (TotalPorcentaje = -1) then
ePorcentajeBeneficio.Caption := 'N/A'
else
ePorcentajeBeneficio.Caption := FormatFloat(DISPLAY_CTO, TotalPorcentaje);
end;
procedure TfrListadoBeneficios.Filtrar;
var
Columna1, Columna2 : TcxGridDBColumn;
AItemList: TcxFilterCriteriaItemList;
begin
with gridBeneficios.ActiveView.DataController.Filter do
begin
BeginUpdate;
try
Root.Clear;
Columna1 := (gridBeneficios.ActiveView as TcxGridDBTableView).GetColumnByFieldName('IMPPROV');
Columna2 := (gridBeneficios.ActiveView as TcxGridDBTableView).GetColumnByFieldName('IMPCLI');
AItemList := Root.AddItemList(fboOr);
AItemList.AddItem(Columna1, foNotEqual, '0', 'Nulo');
AItemList.AddItem(Columna2, foNotEqual, '0', 'Nulo');
Active := True;
finally
EndUpdate;
gridBeneficios.ActiveView.DataController.GotoFirst;
end;
end;
end;
procedure TfrListadoBeneficios.IBDataSet1CalcFields(DataSet: TDataSet);
var
Aux: Double;
begin
with DataSet do
begin
if VarIsNull(FieldByName('IMPPROV').AsVariant) then
FieldByName('IMPPROV').AsFloat := 0;
if VarIsNull(FieldByName('IMPCLI').AsVariant) then
FieldByName('IMPCLI').AsFloat := 0;
FieldByName('BENEFICIO').AsFloat := (FieldByName('IMPCLI').AsFloat - FieldByName('IMPPROV').AsFloat) - FieldByName('IMPOTROS').AsFloat;
Aux := darPorcentaje(FieldByName('IMPCLI').AsFloat, FieldByName('BENEFICIO').AsFloat);
if (Aux = -1) then
// then FieldByName('PORCENTAJE').AsString := 'N/A';
else FieldByName('PORCENTAJE').AsFloat := darPorcentaje(FieldByName('IMPCLI').AsFloat, FieldByName('BENEFICIO').AsFloat);
end;
end;
procedure TfrListadoBeneficios.gridBeneficiosDBTableView1DblClick(Sender: TObject);
begin
CodigoContrato := TablaBeneficios.FieldByName('CODIGO').AsString;
Paginas.ActivePageIndex := 1;
end;
procedure TfrListadoBeneficios.gridFacturasProveedorResize(Sender: TObject);
begin
gridObrasGastos.Width := gridFacturasProveedor.Width;
end;
procedure TfrListadoBeneficios.BuscarObrasGastos;
begin
try
TablaObrasGastos.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(CodigoContrato) then begin
TablaObrasGastos.Params.ByName('CODIGOCONTRATO').AsString := CodigoContrato;
end;
TablaObrasGastos.Prepare;
TablaObrasGastos.Open;
// dmTablaObrasGastos.InicializarTablaObrasGastos(@TablaObrasGastos);
if TablaObrasGastos.RecordCount = -1 then
ContadorAux := 0
else
ContadorAux := TablaObrasGastos.RecordCount;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrListadoBeneficios.actAnadirExecute(Sender: TObject);
begin
try
with TablaObrasGastos do
begin
Next;
if EOF then Append
else begin
Prior;
Insert;
end;
TablaObrasGastos.FieldByName('CODIGOCONTRATO').AsString := CodigoContrato;
TablaObrasGastos.FieldByName('CODIGO').AsInteger := ContadorAux;
TablaObrasGastos.FieldByName('FECHAALTA').AsDateTime := dmBaseDatos.DarFecha;
TablaObrasGastos.FieldByName('USUARIO').AsString := dmBaseDatos.Usuario;
TablaObrasGastos.FieldByName('FECHA').AsDateTime := dmBaseDatos.DarFecha;
Inc(ContadorAux);
end;
gridObrasGastos.SetFocus;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrListadoBeneficios.actEliminarExecute(Sender: TObject);
begin
if (VerMensajePregunta(msgDeseaBorrar) <> IDYES) then
Exit;
if TablaObrasGastos.RecordCount = 0 then begin
{ Hacemos un cancel de la tabla por si el registro actual estuviera
recien creado }
TablaObrasGastos.Cancel;
Exit
end;
try
TablaObrasGastos.Delete;
commit;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrListadoBeneficios.actEliminarTodoExecute(Sender: TObject);
begin
if (VerMensajePregunta(msgDeseaBorrarTodo) <> IDYES) then
Exit;
try
with TablaObrasGastos do
begin
if IsEmpty then
Exit;
DisableControls;
Last;
while not BOF do
begin
Delete;
Prior;
end;
if not IsEmpty then
Delete;
EnableControls;
commit;
end;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
procedure TfrListadoBeneficios.gridObrasGastosExit(Sender: TObject);
begin
commit;
end;
procedure TfrListadoBeneficios.PaginasChange(Sender: TObject);
begin
if gridBeneficiosDBTableView1.ViewData.RecordCount = 0 then
begin
Paginas.ActivePageIndex := 0;
exit;
end;
if (Paginas.ActivePageIndex = 1) then
CodigoContrato := TablaBeneficios.FieldByName('CODIGO').AsString;
end;
procedure TfrListadoBeneficios.actRecalcularExecute(Sender: TObject);
begin
RecargarDatosDetalle;
end;
end.