git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES/trunk@9 3f40d355-893c-4141-8e64-b1d9be72e7e7
497 lines
16 KiB
ObjectPascal
497 lines
16 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: 25-12-2002
|
|
Versión actual: 1.0.1
|
|
Fecha versión actual: 02-02-2004
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
02-02-2004 Se ha eliminado el atributo SERIE (P8 MULTIEMPRESA)
|
|
Se ha adaptado a los nuevos contadores
|
|
===============================================================================
|
|
}
|
|
|
|
unit FacturasClientes;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
RdxFrameFacturasCliente, Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls,
|
|
Menus, RXDBCtrl, Configuracion, RdxFrame,
|
|
Db, RdxPaneles, RdxBarras, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
|
|
cxEdit, cxDBData, cxGridLevel, cxClasses, cxControls, cxGridCustomView,
|
|
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGrid,
|
|
am2000menuitem, am2000popupmenu, am2000, cxContainer, cxTextEdit,
|
|
cxMaskEdit, cxDropDownEdit, StdCtrls, ActnList,
|
|
|
|
RdxEmpresaActiva, am2000utils, cxDataStorage;
|
|
|
|
type
|
|
TfrFacturasClientes = class(TRdxFrameFacturasCliente)
|
|
dsFacturas: TDataSource;
|
|
BarraFacturas: TRdxBarraSuperior;
|
|
bModificar: TRdxBotonSuperior;
|
|
bEliminar: TRdxBotonSuperior;
|
|
bConsultar: TRdxBotonSuperior;
|
|
pnlCuerpo: TRdxPanel;
|
|
pnlGrid: TRdxPanel;
|
|
brSeleccion: TRdxBarraInferior;
|
|
bSeleccionar: TRdxBoton;
|
|
bCancelar: TRdxBoton;
|
|
brSimple: TRdxBarraInferior;
|
|
bSalir: TRdxBoton;
|
|
gridFacturas: TcxGrid;
|
|
gridFacturasDBTableView1: TcxGridDBTableView;
|
|
gridFacturasLevel1: TcxGridLevel;
|
|
bSeparador1: TShape;
|
|
MenuOpciones: TPopupMenu2000;
|
|
miAnadir: TMenuItem2000;
|
|
miModificar: TMenuItem2000;
|
|
miEliminar: TMenuItem2000;
|
|
miConsultar: TMenuItem2000;
|
|
miSeparador: TMenuItem2000;
|
|
miImprimir: TMenuItem2000;
|
|
bImprimir: TRdxBotonSuperior;
|
|
menuAnadir: TPopupMenu2000;
|
|
mnFacturaA: TMenuItem2000;
|
|
MenuItem20004: TMenuItem2000;
|
|
bAnadir: TRdxBotonMenu;
|
|
pnlExtra: TRdxBarraSuperior;
|
|
Acciones: TActionList;
|
|
actAnadir: TAction;
|
|
actModificar: TAction;
|
|
actEliminar: TAction;
|
|
actConsultar: TAction;
|
|
actImprimir: TAction;
|
|
actSeleccionar: TAction;
|
|
actCancelar: TAction;
|
|
actAceptar: TAction;
|
|
MenuItem6: TMenuItem2000;
|
|
MenuItem2: TMenuItem2000;
|
|
actAnadirFContrato: TAction;
|
|
Panel1: TPanel;
|
|
bSeparador2: TShape;
|
|
eFamilia: TLabel;
|
|
cbxDocumento: TcxComboBox;
|
|
actAnadirAbono: TAction;
|
|
imgSombra: TImage;
|
|
bRefrescar: TRdxBoton;
|
|
Shape1: TShape;
|
|
RdxBotonSuperior1: TRdxBotonSuperior;
|
|
actConsultarCobros: TAction;
|
|
Shape2: TShape;
|
|
bFacturar: TRdxBoton;
|
|
actCambiarSituacion: TAction;
|
|
Panel2: TPanel;
|
|
eNombre: TLabel;
|
|
Buscar: TcxTextEdit;
|
|
bLimpiar: TRdxBoton;
|
|
procedure RdxFrameFacturasClienteShow(Sender: TObject);
|
|
procedure actImprimirExecute(Sender: TObject);
|
|
procedure actAnadirExecute(Sender: TObject);
|
|
procedure actAnadirBExecute(Sender: TObject);
|
|
procedure actModificarExecute(Sender: TObject);
|
|
procedure actEliminarExecute(Sender: TObject);
|
|
procedure actConsultarExecute(Sender: TObject);
|
|
procedure actSeleccionarExecute(Sender: TObject);
|
|
procedure actCancelarExecute(Sender: TObject);
|
|
procedure actAceptarExecute(Sender: TObject);
|
|
procedure gridFacturasDBTableView1DblClick(Sender: TObject);
|
|
procedure gridFacturasDBTableView1CustomDrawCell(
|
|
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
|
|
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
|
|
procedure actAnadirAbonoExecute(Sender: TObject);
|
|
procedure actAnadirAbonoBExecute(Sender: TObject);
|
|
procedure actAnadirFContratoExecute(Sender: TObject);
|
|
procedure cbxDocumentoPropertiesEditValueChanged(Sender: TObject);
|
|
procedure actRefrescarDatosExecute(Sender: TObject);
|
|
procedure actConsultarCobrosExecute(Sender: TObject);
|
|
procedure actCambiarSituacionExecute(Sender: TObject);
|
|
procedure BuscarPropertiesChange(Sender: TObject);
|
|
procedure bLimpiarClick(Sender: TObject);
|
|
private
|
|
FCodigoCliente : String;
|
|
FCodigoContrato : Variant;
|
|
procedure ActualizarBotones;
|
|
procedure FiltrarDatos;
|
|
protected
|
|
procedure FreeContenido; override;
|
|
procedure SetContenido (NuevoFrame : TRdxFrame); override;
|
|
procedure BuscarFactura; override;
|
|
procedure VerModal; override;
|
|
procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
|
|
public
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
end;
|
|
|
|
var
|
|
frFacturasClientes: TfrFacturasClientes;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
uses
|
|
BaseDatos, TablaFacturasCliente, IBDatabase, FacturaCliente, Literales,
|
|
IBCustomDataSet, Mensajes, Entidades, Variants, ImprimirFacturasCliente,
|
|
Constantes, RdxFrameContratos, ContratosClientes, StrFunc,
|
|
FacturarContrato, TablaDocumentos, TablaEmpresas, ListadoPagosCliente,
|
|
CambiarSituacionFacturas;
|
|
|
|
procedure TfrFacturasClientes.BuscarFactura;
|
|
begin
|
|
with TablaFacturas do
|
|
begin
|
|
DisableControls;
|
|
Close;
|
|
Open;
|
|
dmTablaFacturasCliente.InicializarTablaFacturas(@TablaFacturas);
|
|
ActualizarBotones;
|
|
|
|
EnableControls;
|
|
if not Locate('CODIGO', CodigoFactura, []) then
|
|
gridFacturasDBTableView1.Controller.GoToFirst
|
|
else
|
|
gridFacturasDBTableView1.Controller.TopRowIndex := gridFacturasDBTableView1.Controller.FocusedRowIndex;
|
|
end;
|
|
end;
|
|
|
|
constructor TfrFacturasClientes.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
Entidad := entFacturaCliente;
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
TablaFacturas := TIBDataSet.Create(Self);
|
|
dsFacturas.DataSet := TablaFacturas;
|
|
|
|
with TablaFacturas do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaFacturasCliente.sqlConsultarGridFacturas);
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
Open;
|
|
ActualizarBotones;
|
|
end;
|
|
dmTablaFacturasCliente.InicializarTablaFacturas(@TablaFacturas);
|
|
dmTablaFacturasCliente.InicializarGridFacturas(gridFacturas);
|
|
|
|
gridFacturasDBTableView1.OnDblClick := gridFacturasDBTableView1DblClick;
|
|
gridFacturasDBTableView1.Controller.GoToFirst;
|
|
|
|
cbxDocumento.Properties.Items.Add('Todos');
|
|
cbxDocumento.Properties.Items.AddStrings(dmTablaDocumentos.DarDocumentos);
|
|
cbxDocumento.ItemIndex := 0;
|
|
end;
|
|
|
|
destructor TfrFacturasClientes.Destroy;
|
|
begin
|
|
TablaFacturas.Close;
|
|
TablaFacturas.UnPrepare;
|
|
TablaFacturas.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.FreeContenido;
|
|
begin
|
|
if (ContenidoModal is TRdxFrameContratos) then
|
|
FCodigoContrato := (ContenidoModal as TRdxFrameContratos).CodigoContrato;
|
|
|
|
if (Contenido is TRdxFrameFacturasCliente) then
|
|
begin
|
|
CodigoFactura := (Contenido as TRdxFrameFacturasCliente).CodigoFactura;
|
|
end;
|
|
|
|
inherited FreeContenido;
|
|
//gridFacturas.SetFocus;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.ActualizarBotones;
|
|
begin
|
|
if BaseDatos.IsReadOnly then
|
|
begin
|
|
actAnadir.Enabled := False;
|
|
actModificar.Enabled := False;
|
|
actEliminar.Enabled := False;
|
|
actConsultar.Enabled := True;
|
|
actImprimir.Enabled := True;
|
|
actConsultarCobros.Enabled := True;
|
|
Exit;
|
|
end;
|
|
|
|
if TablaFacturas.RecordCount = 0 then
|
|
begin
|
|
actAnadir.Enabled := True;
|
|
actModificar.Enabled := False;
|
|
actEliminar.Enabled := False;
|
|
actConsultar.Enabled := False;
|
|
actImprimir.Enabled := False;
|
|
actConsultarCobros.Enabled := False;
|
|
end
|
|
else begin
|
|
actAnadir.Enabled := True;
|
|
actModificar.Enabled := True;
|
|
actEliminar.Enabled := True;
|
|
actConsultar.Enabled := True;
|
|
actImprimir.Enabled := True;
|
|
actConsultarCobros.Enabled := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.RdxFrameFacturasClienteShow(Sender: TObject);
|
|
begin
|
|
Buscar.SetFocus
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.SetContenido(NuevoFrame: TRdxFrame);
|
|
begin
|
|
inherited;
|
|
if (Contenido is TfrImprimirFacturasCliente) then
|
|
(Contenido as TfrImprimirFacturasCliente).CodigoFactura := FCodigoFactura;
|
|
if (Contenido is TfrListadoPagosCliente) then
|
|
(Contenido as TfrListadoPagosCliente).CodigoCliente := TablaFacturas.FieldByName('CODIGOCLIENTE').AsVariant;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actImprimirExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrImprimirFacturasCliente.Create(Self);
|
|
Contenido.Modo := Imprimir;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actAnadirExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Entidad := entFacturaVarios;
|
|
Contenido.Modo := Anadir;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actAnadirBExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Entidad := entFacturaVarios;
|
|
Contenido.Modo := Anadir;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actModificarExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Modo := Modificar;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actEliminarExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Modo := Eliminar;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actConsultarExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Modo := Consultar;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actSeleccionarExecute(Sender: TObject);
|
|
begin
|
|
CodigoFactura := TablaFacturas.FieldByName('CODIGO').AsString;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actCancelarExecute(Sender: TObject);
|
|
begin
|
|
FCodigoFactura := NULL;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actAceptarExecute(Sender: TObject);
|
|
begin
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.gridFacturasDBTableView1DblClick(
|
|
Sender: TObject);
|
|
begin
|
|
if Modo = Seleccionar then
|
|
actSeleccionar.Execute
|
|
else
|
|
actModificar.Execute;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.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;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actAnadirAbonoExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Entidad := entAbonoVarios;
|
|
Contenido.Modo := Anadir;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actAnadirAbonoBExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Entidad := entAbonoVarios;
|
|
Contenido.Modo := Anadir;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actAnadirFContratoExecute(Sender: TObject);
|
|
var
|
|
CodAux : String;
|
|
begin
|
|
// Mostrar la lista de contratos que se pueden facturar
|
|
CaptionModal := 'Elija el contrato que quiere facturar';
|
|
ContenidoModal := TfrContratosClientes.Create(Self);
|
|
|
|
if (not EsCadenaVacia(FCodigoContrato)) then
|
|
begin
|
|
frFacturarContrato := TfrFacturarContrato.Create(Self);
|
|
with frFacturarContrato do
|
|
begin
|
|
try
|
|
CodigoContrato := FCodigoContrato;
|
|
ShowModal;
|
|
|
|
if ModalResult = mrYes then
|
|
begin
|
|
Commit;
|
|
Self.CodigoFactura := frFacturarContrato.CodigoFactura;
|
|
Contenido := TfrFacturaCliente.Create(Self);
|
|
Contenido.Modo := Modificar;
|
|
Contenido.Visible := True;
|
|
end
|
|
else
|
|
Rollback;
|
|
finally
|
|
Free;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.VerModal;
|
|
begin
|
|
if (ContenidoModal is TRdxFrameContratos) then
|
|
(ContenidoModal as TRdxFrameContratos).Modo := Facturar;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.cbxDocumentoPropertiesEditValueChanged(
|
|
Sender: TObject);
|
|
begin
|
|
FiltrarDatos;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.FiltrarDatos;
|
|
var
|
|
Columna : TcxGridDBColumn;
|
|
AItemList: TcxFilterCriteriaItemList;
|
|
TextoDocumento : String;
|
|
begin
|
|
TextoDocumento := cbxDocumento.Text;
|
|
with gridFacturas.ActiveView.DataController.Filter do
|
|
begin
|
|
BeginUpdate;
|
|
try
|
|
Columna := (gridFacturas.ActiveView as TcxGridDBTableView).GetColumnByFieldName('DESCRIPCION');
|
|
if UpperCase(TextoDocumento) = 'TODOS' then
|
|
begin
|
|
Columna.Visible := True;
|
|
Entidad := entFacturaCliente;
|
|
Root.Clear;
|
|
Active := True;
|
|
end
|
|
else begin
|
|
Columna.Visible := False;
|
|
Root.Clear;
|
|
AItemList := Root.AddItemList(fboAnd);
|
|
AItemList.AddItem(Columna, foEqual, TextoDocumento, 'Descripcion');
|
|
Active := True;
|
|
Entidad := dmTablaDocumentos.DarEntidadDocumento(entFacturaCliente, TablaFacturas.FieldByName('CODIGODOCUMENTO').AsString);
|
|
end;
|
|
finally
|
|
EndUpdate;
|
|
gridFacturas.ActiveView.DataController.GotoFirst;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.CambiarModo(ModoAnterior, Modo: TRdxModo);
|
|
begin
|
|
inherited;
|
|
dmTablaFacturasCliente.InicializarTablaFacturas(@TablaFacturas);
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actRefrescarDatosExecute(Sender: TObject);
|
|
begin
|
|
FCodigoFactura := TablaFacturas.FieldByName('CODIGO').AsString;
|
|
BuscarFactura;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actConsultarCobrosExecute(Sender: TObject);
|
|
begin
|
|
Contenido := TfrListadoPagosCliente.Create(Self);
|
|
Contenido.Modo := Consultar;
|
|
(Contenido as TfrListadoPagosCliente).activarFacturasCobrosCliente;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.actCambiarSituacionExecute(Sender: TObject);
|
|
var
|
|
IndiceCol1 : Integer;
|
|
IndiceSel : Integer;
|
|
fCambiarSituacionFacturas : TfrCambiarSituacionFacturas;
|
|
|
|
begin
|
|
fCambiarSituacionFacturas := TfrCambiarSituacionFacturas.Create(Self);
|
|
fCambiarSituacionFacturas.Entidad := entFacturaCliente;
|
|
|
|
//Rellenamos la propiedad de la unidad CambiarSituacion con los códigos seleccionados
|
|
IndiceCol1 := gridFacturasDBTableView1.GetColumnByFieldName('CODIGO').Index;
|
|
for IndiceSel:=0 to gridFacturasDBTableView1.Controller.SelectedRowCount-1 do
|
|
fCambiarSituacionFacturas.CodigosFacturas.Append(gridFacturasDBTableView1.Controller.SelectedRows[IndiceSel].Values[IndiceCol1]);
|
|
|
|
try
|
|
fCambiarSituacionFacturas.ShowModal;
|
|
finally
|
|
fCambiarSituacionFacturas.Free;
|
|
bRefrescar.Click;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.BuscarPropertiesChange(Sender: TObject);
|
|
begin
|
|
FiltrarGrid(gridFacturas, Buscar.Text);
|
|
end;
|
|
|
|
procedure TfrFacturasClientes.bLimpiarClick(Sender: TObject);
|
|
begin
|
|
Buscar.Text := '';
|
|
end;
|
|
|
|
end.
|