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/Clientes/ComisionesVendedores.pas
2007-06-26 08:08:27 +00:00

374 lines
12 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 ComisionesVendedores;
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,
dxCntner, dxEditor, dxEdLib, InformeComisionesVendedores, vistaPrevia,
cxDataStorage;
type
TfrComisionesVendedores = class(TRdxFrameComisiones)
brSimple: TRdxBarraInferior;
dsFacturas: TDataSource;
Titulo: TRdxPanelTituloOperacion;
pnlDatos: TAdvPanel;
pnlCuerpo: TPanel;
pnlGridArticulos: TPanel;
gridFacturas: TcxGrid;
gridFacturasDBTableView1: TcxGridDBTableView;
gridFacturasLevel1: TcxGridLevel;
Panel1: TPanel;
gridVendedores: TcxGrid;
gridVendedoresDBTableView1: TcxGridDBTableView;
gridVendedoresLevel1: TcxGridLevel;
dsVendedores: TDataSource;
Panel2: TPanel;
bVistaPrevia: TRdxBoton;
bImprimir: TRdxBoton;
bCancelar: TRdxBoton;
ImporteTotal: TLabel;
Panel3: TPanel;
eFechaIni: TLabel;
FechaInicial: TcxDateEdit;
eFechaFin: TLabel;
FechaFinal: TcxDateEdit;
Panel4: TPanel;
Label1: TLabel;
procedure actCancelarExecute(Sender: TObject);
procedure bImprimirClick(Sender: TObject);
procedure bCancelarClick(Sender: TObject);
procedure bVistaPreviaClick(Sender: TObject);
procedure FechaInicialPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure gridFacturasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
procedure FechaFinalPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
private
FbParche : Boolean;
FTotal : Double;
FInformeComisionesVendedores : TdmInformeComisionesVendedores;
procedure SetTotal (Value : Double);
property Total: Double read FTotal write SetTotal;
procedure CalcularTotal;
procedure CalcularComisiones;
protected
procedure SeleccionChange(Sender: TObject);
procedure ActivarModoConsultar; override;
procedure BuscarFacturas; override;
public
constructor Create (AOwner : TComponent); override;
destructor Destroy; override;
published
end;
var
frComisionesVendedores: TfrComisionesVendedores;
implementation
{$R *.DFM}
uses
TablaVendedores, Mensajes, IB, ColoresD7, IBDatabase, Vendedores,
Provincias, RdxFrameProvincias, Poblaciones, RdxFramePoblaciones,
TablaProvincias, BaseDatos, IBCustomDataSet, Sysutils, Constantes,
StrFunc, TablaPoblaciones, Excepciones, IBErrorCodes,
dxDBTLCL, Variants, Entidades, NumFunc, Literales, TablaFacturasCliente,
DateFunc, cxCheckBox, cxDateUtils, Graphics;
procedure TfrComisionesVendedores.ActivarModoConsultar;
begin
FechaInicial.Date := FechaIni;
FechaFinal.Date := FechaFin;
BuscarFacturas;
Visible := True;
FechaInicial.SetFocus;
end;
procedure TfrComisionesVendedores.BuscarFacturas;
begin
if Transaccion = NIL then
Exit;
try
TablaFacturasMem.DisableControls;
TablaFacturasMem.Close;
TablaFacturas.Close;
// Buscar la fila a tratar si es necesario
if not EsCadenaVacia(FechaIni) and not EsCadenaVacia(FechaFin) then begin
TablaFacturas.Params.ByName('FECHAINI').AsDate := FechaIni;
TablaFacturas.Params.ByName('FECHAFIN').AsDate := FechaFin;
end;
TablaFacturas.Prepare;
TablaFacturas.Open;
TablaFacturasMem.Open;
TablaFacturasMem.LoadFromDataSet(TablaFacturas, -1, lmCopy);
dmTablaFacturasCliente.InicializarTablaFacturas(@TablaFacturasMem);
CalcularTotal;
CalcularComisiones;
TablaFacturasMem.EnableControls;
gridFacturas.ActiveView.DataController.GotoFirst;
except
on E : EIBError do
TratarExcepcion(E);
on E : Exception do
TratarExcepcion(E);
end;
end;
constructor TfrComisionesVendedores.Create (AOwner : TComponent);
begin
inherited Create(AOwner);
FbParche := false;
FechaIni := DarDiaInicioMesDat;
FechaFin := DarDiaFinalMesDat;
Total := 0;
FInformeComisionesVendedores := TdmInformeComisionesVendedores.Create(Self);
Entidad := entComisiones;
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaFacturas := TIBDataSet.Create(Self);
TablaVendedores := TIBDataSet.Create(Self);
with TablaFacturas do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasComisiones);
RefreshSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturasComisiones);
end;
with TablaVendedores do
begin
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaVendedores.sqlConsultarGridVendedoresComisiones);
RefreshSQL.Assign(dmTablaVendedores.sqlConsultarGridVendedoresComisiones);
Prepare;
Open;
end;
TablaVendedoresMem := TRxMemoryData.Create(Self);
dsVendedores.DataSet := TablaVendedoresMem;
TablaVendedoresMem.CopyStructure(TablaVendedores);
TablaVendedoresMem.LoadFromDataSet(TablaVendedores, -1, lmCopy);
dmTablaVendedores.InicializarTablaVendedores(@TablaVendedoresMem);
TablaVendedoresMem.Open;
TablaFacturasMem := TRxMemoryData.Create(Self);
dsFacturas.DataSet := TablaFacturasMem;
TablaFacturasMem.CopyStructure(TablaFacturas);
TablaFacturasMem.LoadFromDataSet(TablaFacturas, -1, lmCopy);
TablaFacturasMem.Open;
dmTablaFacturasCliente.InicializarGridFacturasComisiones(gridFacturasDBTableView1);
with TcxCheckBoxProperties(gridFacturasDBTableView1.GetColumnByFieldName('SELECCION').Properties) do begin
OnChange := SeleccionChange
end;
dmTablaVendedores.InicializarGridVendedoresComisiones(gridVendedoresDBTableView1);
gridFacturas.ActiveView.DataController.GotoFirst;
bCancelar.Cancel := True;
end;
destructor TfrComisionesVendedores.Destroy;
begin
FInformeComisionesVendedores.Free;
TablaFacturas.Close;
TablaFacturas.UnPrepare;
TablaFacturas.Free;
TablaFacturasMem.Close;
TablaFacturasMem.Free;
TablaVendedores.Close;
TablaVendedores.UnPrepare;
TablaVendedores.Free;
TablaVendedoresMem.Close;
TablaVendedoresMem.Free;
inherited;
end;
procedure TfrComisionesVendedores.actCancelarExecute(Sender: TObject);
begin
CloseFrame
end;
procedure TfrComisionesVendedores.SeleccionChange(Sender: TObject);
begin
if not FbParche then begin
FbParche := True;
Exit;
end;
if (TablaFacturasMem.FieldByName('SELECCION').AsString = '1') then
Total := Total - TablaFacturasMem.FieldByName('IMPORTETOTAL').AsFloat
else
Total := Total + TablaFacturasMem.FieldByName('IMPORTETOTAL').AsFloat;
CalcularComisiones;
end;
procedure TfrComisionesVendedores.calcularTotal;
var
ldTotal : Double;
begin
TablaFacturasMem.DisableControls;
TablaFacturasMem.First;
ldTotal := 0;
while not TablaFacturasMem.Eof do
begin
ldTotal := ldTotal + TablaFacturasMem.FieldByName('IMPORTETOTAL').AsFloat;
TablaFacturasMem.Next;
end;
TablaFacturasMem.First;
Total := ldTotal;
TablaFacturasMem.EnableControls;
end;
procedure TfrComisionesVendedores.calcularComisiones;
begin
TablaVendedoresMem.DisableControls;
TablaVendedoresMem.First;
while not TablaVendedoresMem.Eof do
begin
TablaVendedoresMem.Edit;
TablaVendedoresMem.FieldByName('IMPORTE').Asfloat := (FTotal * TablaVendedoresMem.FieldByName('PORCENTAJE').Asfloat) / 100;
TablaVendedoresMem.Post;
TablaVendedoresMem.Next;
end;
TablaVendedoresMem.First;
TablaVendedoresMem.EnableControls;
end;
procedure TfrComisionesVendedores.bImprimirClick(Sender: TObject);
begin
FInformeComisionesVendedores.SetTablaComisionesVendedores(TablaVendedoresMem);
FInformeComisionesVendedores.FechaInicio := DateToStr(FechaIni);
FInformeComisionesVendedores.FechaFin := DateToStr(FechaFin);
FInformeComisionesVendedores.Preview := nil;
FInformeComisionesVendedores.Imprimir;
end;
procedure TfrComisionesVendedores.bCancelarClick(Sender: TObject);
begin
CloseFrame;
end;
procedure TfrComisionesVendedores.SetTotal(Value: Double);
begin
FTotal := Value;
ImporteTotal.Caption := 'Suma total de las facturas: ' + FormatFloat('#,##0.00 €', FTotal) + ' ';
end;
procedure TfrComisionesVendedores.bVistaPreviaClick(Sender: TObject);
var
FVistaPrevia : TfrVistaPrevia;
begin
FInformeComisionesVendedores.SetTablaComisionesVendedores(TablaVendedoresMem);
FInformeComisionesVendedores.FechaInicio := DateToStr(FechaIni);
FInformeComisionesVendedores.FechaFin := DateToStr(FechaFin);
FVistaPrevia := TfrVistaPrevia.Create(Self);
FInformeComisionesVendedores.Preview := FVistaPrevia.Preview;
FInformeComisionesVendedores.Previsualizar;
CaptionModal := 'Informe de comisiones';
WidthModal := 800;
HeightModal := 600;
ModoModal := Consultar;
EntidadModal := entComisiones;
ContenidoModal := FVistaPrevia;
end;
procedure TfrComisionesVendedores.FechaInicialPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
ADate : TDateTime;
begin
if DisplayValue > FechaFinal.Date then
begin
ErrorText := msgFechasMal;
Error := True;
Exit;
end;
TextToDateEx(DisplayValue, ADate);
FechaIni := ADate;
end;
procedure TfrComisionesVendedores.gridFacturasDBTableView1CustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
var
IndiceCol : Integer;
begin
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('CLASEFACTURA').Index;
if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = CTE_CF_ABONO then
ACanvas.Canvas.Font.Color := $000000CC;
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('SELECCION').Index;
if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = 'FALSE' then
begin
ACanvas.Canvas.Font.Style := [fsStrikeOut];
ACanvas.Canvas.Font.Color := clGray;
end;
end;
procedure TfrComisionesVendedores.FechaFinalPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
ADate : TDateTime;
begin
if DisplayValue < FechaInicial.Date then
begin
ErrorText := msgFechasMal;
Error := True;
Exit;
end;
TextToDateEx(DisplayValue, ADate);
FechaFin := ADate;
end;
end.