git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@4 3f40d355-893c-4141-8e64-b1d9be72e7e7
528 lines
17 KiB
ObjectPascal
528 lines
17 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.1
|
|
Fecha versión actual: 29-01-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
29-01-2004 Utilizar el trimestre por defecto.
|
|
===============================================================================
|
|
}
|
|
|
|
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,
|
|
InformeComisionesVendedores, vistaPrevia,
|
|
RdxRadioButton, TablaTrimestres, ActnList, Entidades,
|
|
|
|
RdxEmpresaActiva, 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;
|
|
FechaInicial: TcxDateEdit;
|
|
eFechaFin: TLabel;
|
|
FechaFinal: TcxDateEdit;
|
|
Panel4: TPanel;
|
|
Label1: TLabel;
|
|
rbFechas: TRdxRadioButton;
|
|
rbTrimestre: TRdxRadioButton;
|
|
cbxTrimestres: TcxComboBox;
|
|
pnlBarraGrid: TRdxPanel;
|
|
bSeleccionar: TRdxBoton;
|
|
bDeseleccionar: TRdxBoton;
|
|
bAgregar: TRdxBoton;
|
|
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);
|
|
procedure cbxTrimestresPropertiesEditValueChanged(Sender: TObject);
|
|
procedure rbTrimestreClick(Sender: TObject);
|
|
procedure rbFechasClick(Sender: TObject);
|
|
procedure bSeleccionarClick(Sender: TObject);
|
|
procedure bDeseleccionarClick(Sender: TObject);
|
|
procedure bAgregarClick(Sender: TObject);
|
|
private
|
|
FListaTrimestres : TListaTrimestres;
|
|
FTotal : Double;
|
|
FInformeComisionesVendedores : TdmInformeComisionesVendedores;
|
|
FCodigoFactura: Variant;
|
|
procedure SetTotal (Value : Double);
|
|
property Total: Double read FTotal write SetTotal;
|
|
procedure CalcularTotal;
|
|
procedure CalcularComisiones;
|
|
procedure setCodigoFactura(const Value: Variant);
|
|
protected
|
|
procedure SeleccionChange(Sender: TObject);
|
|
procedure ActivarModoConsultar; override;
|
|
procedure FreeContenido; override;
|
|
procedure BuscarFacturas; override;
|
|
public
|
|
property CodigoFactura: Variant read FCodigoFactura write setCodigoFactura;
|
|
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
end;
|
|
|
|
var
|
|
frComisionesVendedores: TfrComisionesVendedores;
|
|
|
|
implementation
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
TablaVendedores, Mensajes, IB, Colores, IBDatabase, Vendedores,
|
|
Provincias, RdxFrameProvincias, Poblaciones, RdxFramePoblaciones,
|
|
TablaProvincias, BaseDatos, IBCustomDataSet, Sysutils, Constantes,
|
|
StrFunc, TablaPoblaciones, Excepciones, IBErrorCodes,
|
|
Variants, NumFunc, Literales, TablaFacturasCliente, RdxFrameFacturasCliente,
|
|
DateFunc, cxCheckBox, cxDateUtils, Graphics, TablaEmpresas, FacturasClientes;
|
|
|
|
procedure TfrComisionesVendedores.ActivarModoConsultar;
|
|
begin
|
|
FechaIni := FechaInicial.Date;
|
|
FechaFin := FechaFinal.Date;
|
|
BuscarFacturas;
|
|
Visible := True;
|
|
FechaFinal.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.ParamByName('FECHAINI').AsDate := FechaIni;
|
|
TablaFacturas.ParamByName('FECHAFIN').AsDate := FechaFin;
|
|
end;
|
|
|
|
TablaFacturas.ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
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);
|
|
Entidad := entComisiones;
|
|
|
|
Total := 0;
|
|
FInformeComisionesVendedores := TdmInformeComisionesVendedores.Create(Self);
|
|
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;
|
|
|
|
FListaTrimestres := TListaTrimestres.Create(tlcTriTodos);
|
|
cbxTrimestres.ItemIndex := FListaTrimestres.cargarLista(cbxTrimestres.Properties.Items);
|
|
|
|
FechaInicial.Date := DarDiaInicioMesDat;
|
|
FechaFinal.Date := DarDiaFinalMesDat;
|
|
|
|
bCancelar.Cancel := True;
|
|
end;
|
|
|
|
destructor TfrComisionesVendedores.Destroy;
|
|
begin
|
|
FInformeComisionesVendedores.Free;
|
|
FInformeComisionesVendedores:= Nil;
|
|
|
|
TablaFacturas.Close;
|
|
TablaFacturas.UnPrepare;
|
|
TablaFacturas.Free;
|
|
|
|
TablaFacturasMem.Close;
|
|
TablaFacturasMem.Free;
|
|
|
|
TablaVendedores.Close;
|
|
TablaVendedores.UnPrepare;
|
|
TablaVendedores.Free;
|
|
|
|
TablaVendedoresMem.Close;
|
|
TablaVendedoresMem.Free;
|
|
|
|
FListaTrimestres.Free;
|
|
FListaTrimestres:= Nil;
|
|
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.actCancelarExecute(Sender: TObject);
|
|
begin
|
|
CloseFrame
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.SeleccionChange(Sender: TObject);
|
|
begin
|
|
if (TablaFacturasMem.FieldByName('SELECCION').AsString = '0') 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
|
|
try
|
|
if DisplayValue > FechaFinal.Date then
|
|
begin
|
|
ErrorText := msgFechasMal;
|
|
Error := True;
|
|
Exit;
|
|
end;
|
|
TextToDateEx(DisplayValue, ADate);
|
|
FechaIni := ADate;
|
|
except
|
|
Error := True;
|
|
ErrorText := msgFechaNoValida;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.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('CLASEFACTURA').Index;
|
|
if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = CTE_CF_ABONO then
|
|
ACanvas.Canvas.Font.Color := $000000CC;
|
|
end;
|
|
IndiceCol := (Sender as TcxGridDBTableView).GetColumnByFieldName('SELECCION').Index;
|
|
if UpperCase(AViewInfo.GridRecord.DisplayTexts[IndiceCol]) = 'FALSE' then
|
|
begin
|
|
ACanvas.Canvas.Font.Style := [fsStrikeOut];
|
|
if not AViewInfo.Selected then
|
|
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
|
|
try
|
|
if DisplayValue < FechaInicial.Date then
|
|
begin
|
|
ErrorText := msgFechasMal;
|
|
Error := True;
|
|
Exit;
|
|
end;
|
|
TextToDateEx(DisplayValue, ADate);
|
|
FechaFin := ADate;
|
|
except
|
|
Error := True;
|
|
ErrorText := msgFechaNoValida;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.cbxTrimestresPropertiesEditValueChanged(
|
|
Sender: TObject);
|
|
var
|
|
i : integer;
|
|
FCodigoTrimestre : String;
|
|
begin
|
|
FCodigoTrimestre := FListaTrimestres.getCodItem(cbxTrimestres.ItemIndex);
|
|
FechaInicial.Date := dmTablaTrimestres.darFechaIniTrimestre(FCodigoTrimestre);
|
|
FechaFinal.Date := dmTablaTrimestres.darFechaFinTrimestre(FCodigoTrimestre);
|
|
FechaIni := FechaInicial.Date;
|
|
FechaFin := FechaFinal.Date;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.rbTrimestreClick(Sender: TObject);
|
|
begin
|
|
cbxTrimestres.Enabled := True;
|
|
FechaInicial.Enabled := False;
|
|
FechaFinal.Enabled := False;
|
|
cbxTrimestresPropertiesEditValueChanged(Sender);
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.rbFechasClick(Sender: TObject);
|
|
begin
|
|
cbxTrimestres.Enabled := False;
|
|
FechaInicial.Enabled := True;
|
|
FechaFinal.Enabled := True;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.bSeleccionarClick(Sender: TObject);
|
|
begin
|
|
with TablaFacturasMem do
|
|
begin
|
|
DisableControls;
|
|
First;
|
|
while not EOF do
|
|
begin
|
|
if (FieldByName('SELECCION').AsString <> '1') then
|
|
begin
|
|
Edit;
|
|
FieldByName('SELECCION').AsString := '1';
|
|
Post;
|
|
end;
|
|
Next;
|
|
end;
|
|
First;
|
|
EnableControls;
|
|
end;
|
|
CalcularTotal;
|
|
CalcularComisiones;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.bDeseleccionarClick(Sender: TObject);
|
|
begin
|
|
with TablaFacturasMem do
|
|
begin
|
|
DisableControls;
|
|
First;
|
|
while not EOF do
|
|
begin
|
|
if (FieldByName('SELECCION').AsString <> '0') then
|
|
begin
|
|
Edit;
|
|
FieldByName('SELECCION').AsString := '0';
|
|
Post;
|
|
end;
|
|
Next;
|
|
end;
|
|
First;
|
|
EnableControls;
|
|
end;
|
|
Total := 0;
|
|
CalcularComisiones;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.FreeContenido;
|
|
begin
|
|
if (ContenidoModal is TRdxFrameFacturasCliente) then begin
|
|
CodigoFactura := (ContenidoModal as TRdxFrameFacturasCliente).CodigoFactura;
|
|
end;
|
|
inherited FreeContenido;
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.bAgregarClick(Sender: TObject);
|
|
begin
|
|
ContenidoModal := TfrFacturasClientes.Create(Self);
|
|
end;
|
|
|
|
procedure TfrComisionesVendedores.setCodigoFactura(const Value: Variant);
|
|
var
|
|
Datos : TDatosFacturaCliente;
|
|
|
|
begin
|
|
if esCadenaVacia(Value) then
|
|
Exit;
|
|
|
|
FCodigoFactura := Value;
|
|
|
|
Datos := TDatosFacturaCliente.Create;
|
|
Datos.Codigo := FCodigoFactura;
|
|
dmTablaFacturasCliente.DarDatosFactura(Datos);
|
|
with TablaFacturasMem do begin
|
|
Append;
|
|
FieldByName('CODIGO').AsString := Datos.Codigo;
|
|
FieldByName('SITUACION').AsString := Datos.Situacion;
|
|
FieldByName('FECHAALTA').AsDateTime := Datos.FechaAlta ;
|
|
FieldByName('FECHAFACTURA').AsDateTime := Datos.FechaFactura;
|
|
FieldByName('CODIGOCLIENTE').AsString := Datos.CodigoCliente;
|
|
FieldByName('NIFCIF').AsString := Datos.NIFCIF;
|
|
FieldByName('NOMBRE').AsString := Datos.Nombre;
|
|
FieldByName('IMPORTETOTAL').AsFloat := Datos.ImporteTotal;
|
|
FieldByName('CLASEFACTURA').AsString := Datos.ClaseFactura;
|
|
FieldByName('SELECCION').AsString := '1';
|
|
Post;
|
|
Total := Total + TablaFacturasMem.FieldByName('IMPORTETOTAL').AsFloat;
|
|
CalcularComisiones;
|
|
end;
|
|
Datos.Free;
|
|
end;
|
|
|
|
end.
|