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

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.