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/FacturasClientes.pas

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.