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