git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES/trunk@4 b68bf8ae-e977-074f-a058-3cfd71dd8f45
650 lines
21 KiB
ObjectPascal
650 lines
21 KiB
ObjectPascal
{
|
|
===============================================================================
|
|
Copyright (©) 2001. 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: 01-10-2001
|
|
Versión actual: 1.1.2
|
|
Fecha versión actual: 18-03-2005
|
|
===============================================================================
|
|
Modificaciones:
|
|
|
|
Fecha Comentarios
|
|
---------------------------------------------------------------------------
|
|
09-10-2001 Al pulsar la tecla ESC se activa el botón 'Cancelar'. Sólo
|
|
pasa cuando este frame está en una ventana modal.
|
|
|
|
29-10-2001 Hacer más grande la ventana modal para facturar un
|
|
presupuesto.
|
|
|
|
31-10-2001 Solamente se debe permitir modificar presupuestos que estén
|
|
pendientes.
|
|
|
|
31-10-2001 Solamente se debe permitir eliminar presupuestos que estén
|
|
pendientes.
|
|
|
|
01-11-2001 Se ha eliminado el botón de 'Documento relacionados'.
|
|
|
|
13-01-2002 Se han coloreado las filas del grid dependiendo de la
|
|
situación del presupuesto.
|
|
|
|
07-04-2002 Se ha adaptado para la transacción única.
|
|
|
|
08-05-2002 Adaptación al grid 'TdxDBGrid'.
|
|
|
|
08-05-2002 P217. Permitir que se modifique un presupuesto 'aceptado'
|
|
o 'anulado'.
|
|
|
|
11-05-2002 P215. Copia de presupuestos.
|
|
|
|
11-08-2002 P231. Listado de presupuestos de un determinado cliente.
|
|
|
|
08-04-2003 P263. Agrupar por años los presupuestos.
|
|
|
|
21-04-2003 P266. Contemplar la situación 'EN EJECUCIÓN' para los presupuestos de cliente.
|
|
Deberemos eliminar el boton Anular presupuesto y todo su codigo, y modificar la
|
|
apariencia del botón Aceptar presupuesto.
|
|
|
|
08-03-2004 Al hacer doble click sobre el grid, se pasará a modificar el
|
|
registro o se seleccionará, dependiendo del modo en el que
|
|
se encuentre la pantalla.
|
|
|
|
08-03-2004 p272. Adaptación a multiempresa.
|
|
|
|
02-02-2005 p550. Nueva funcionalidad de enviar correo bEnviarCorreoClick
|
|
|
|
18-03-2005 p587. Adaptación a Bonificaciones
|
|
===============================================================================
|
|
}
|
|
|
|
unit PresupuestosClientes;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Db, Menus, am2000menuitem, am2000popupmenu, am2000, RdxBarras,
|
|
RdxBotones, Grids, DBGrids, RXDBCtrl, Classes, Controls, RdxFrame,
|
|
ExtCtrls, RdxPaneles, RdxFramePresupuestos, Tipos, Dialogs,
|
|
RdxDialogos, dxCntner, dxTL, dxDBCtrl, dxDBGrid, Graphics, StdCtrls,
|
|
RdxComboBox, am2000utils;
|
|
|
|
|
|
type
|
|
TfrPresupuestosClientes = class(TRdxFramePresupuestos)
|
|
pnlCuerpo: TRdxPanel;
|
|
pnlGrid: TRdxPanel;
|
|
pnlSuperior: TRdxBarraSuperior;
|
|
bModificar: TRdxBotonSuperior;
|
|
bEliminar: TRdxBotonSuperior;
|
|
bConsultar: TRdxBotonSuperior;
|
|
bBuscar: TRdxBotonSuperior;
|
|
dsPresupuestos: TDataSource;
|
|
brSeleccion: TRdxBarraInferior;
|
|
bSeleccionar: TRdxBoton;
|
|
bCancelarGuardar: TRdxBoton;
|
|
brSimple: TRdxBarraInferior;
|
|
bSalir: TRdxBoton;
|
|
pnlExtra: TRdxBarraSuperior;
|
|
bAceptar: TRdxBoton;
|
|
bAnular: TRdxBoton;
|
|
bFacturar: TRdxBoton;
|
|
bImprimir: TRdxBoton;
|
|
gridPresupuestos: TdxDBGrid;
|
|
bAnadir: TRdxBotonMenu;
|
|
menuAnadir: TPopupMenu2000;
|
|
mnNuevo: TMenuItem2000;
|
|
MenuItem20004: TMenuItem2000;
|
|
mnCopiar: TMenuItem2000;
|
|
bListar: TRdxBotonMenu;
|
|
menuListar: TPopupMenu2000;
|
|
Listadepresupuestosdecliente1: TMenuItem2000;
|
|
imgSombra: TImage;
|
|
RdxPanel1: TRdxPanel;
|
|
cbxAno: TRdxComboBox;
|
|
Label1: TLabel;
|
|
bExportar: TRdxBoton;
|
|
bEnviarCorreo: TRdxBoton;
|
|
procedure bAnadirClick(Sender: TObject);
|
|
procedure bSeleccionarClick(Sender: TObject);
|
|
procedure bCancelarGuardarClick(Sender: TObject);
|
|
procedure bSalirClick(Sender: TObject);
|
|
procedure bModificarClick(Sender: TObject);
|
|
procedure bEliminarClick(Sender: TObject);
|
|
procedure bConsultarClick(Sender: TObject);
|
|
procedure bExportarClick(Sender: TObject);
|
|
procedure bAceptarClick(Sender: TObject);
|
|
procedure bAnularClick(Sender: TObject);
|
|
procedure bFacturarClick(Sender: TObject);
|
|
procedure bBuscarClick(Sender: TObject);
|
|
procedure bImprimirClick(Sender: TObject);
|
|
procedure gridPresupuestosRefreshButton(Sender: TObject);
|
|
procedure gridPresupuestosCustomDrawCell(Sender: TObject;
|
|
ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
|
|
AColumn: TdxTreeListColumn; ASelected, AFocused,
|
|
ANewItemRow: Boolean; var AText: String; var AColor: TColor;
|
|
AFont: TFont; var AAlignment: TAlignment; var ADone: Boolean);
|
|
procedure bCopiarClick(Sender: TObject);
|
|
procedure Listadepresupuestosdecliente1Click(Sender: TObject);
|
|
procedure cbxAnoChange(Sender: TObject);
|
|
procedure gridPresupuestosDblClick(Sender: TObject);
|
|
procedure bEnviarCorreoClick(Sender: TObject);
|
|
private
|
|
FCodigoCliente : string;
|
|
procedure SetCodigoCliente (Value : string);
|
|
procedure ActualizarBotones;
|
|
protected
|
|
procedure FreeContenido; override;
|
|
procedure BuscarPresupuesto; override;
|
|
procedure VerModal; override;
|
|
procedure SetContenido (NuevoFrame : TRdxFrame); override;
|
|
procedure CambiarModo(ModoAnterior, Modo : TRdxModo); override;
|
|
procedure ActualizarBarras; override;
|
|
public
|
|
constructor Create (AOwner : TComponent); override;
|
|
destructor Destroy; override;
|
|
published
|
|
property CodigoCliente : String read FCodigoCliente write SetCodigoCliente;
|
|
end;
|
|
|
|
var
|
|
frPresupuestosClientes: TfrPresupuestosClientes;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
TablaPresupuestos, BaseDatos, IBCustomDataSet, PresupuestoCliente,
|
|
InformePresupuesto, Mensajes, Sysutils, AceptarRechazarPresupuestoCliente,
|
|
FacturaCliente, FacturasClientes, BuscarPresupuestoCliente,
|
|
StrFunc, ListadoPresupuestosCli, Constantes, Literales, SysFunc,
|
|
CambiarSituacionPresupuesto, Configuracion, RdxEmpresaActiva,
|
|
|
|
Correo, TablaClientes;
|
|
|
|
{ TfrPresupuestosClientes }
|
|
|
|
procedure TfrPresupuestosClientes.BuscarPresupuesto;
|
|
begin
|
|
with TablaPresupuestos do
|
|
begin
|
|
DisableControls;
|
|
Close;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
Open;
|
|
ActualizarBotones;
|
|
dmTablaPresupuestos.InicializarTablaPresupuestos(@TablaPresupuestos);
|
|
EnableControls;
|
|
Locate('CODIGO', CodigoPresupuesto, []);
|
|
end;
|
|
end;
|
|
|
|
constructor TfrPresupuestosClientes.Create(AOwner: TComponent);
|
|
begin
|
|
inherited Create(AOwner);
|
|
Entidad := entPresupuestoCliente;
|
|
ConfigurarFrame(Self, Self.Entidad);
|
|
|
|
BaseDatos := dmBaseDatos.BD;
|
|
Transaccion := dmBaseDatos.Transaccion;
|
|
TablaPresupuestos := TIBDataSet.Create(Self);
|
|
dsPresupuestos.DataSet := TablaPresupuestos;
|
|
|
|
with TablaPresupuestos do
|
|
begin
|
|
Database := BaseDatos;
|
|
Transaction := Transaccion;
|
|
SelectSQL.Assign(dmTablaPresupuestos.sqlConsultarGridPresupuestos);
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
Open;
|
|
ActualizarBotones;
|
|
end;
|
|
dmTablaPresupuestos.InicializarTablaPresupuestos(@TablaPresupuestos);
|
|
dmTablaPresupuestos.InicializarGridPresupuestos(gridPresupuestos);
|
|
gridPresupuestos.GotoFirst;
|
|
|
|
cbxAno.Items := dmTablaPresupuestos.DarListaAnos(EmpresaActiva.Codigo, True);
|
|
cbxAno.ItemIndex := 0;
|
|
end;
|
|
|
|
destructor TfrPresupuestosClientes.Destroy;
|
|
begin
|
|
TablaPresupuestos.Close;
|
|
TablaPresupuestos.UnPrepare;
|
|
TablaPresupuestos.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.FreeContenido;
|
|
begin
|
|
if (Contenido is TRdxFramePresupuestos) then
|
|
CodigoPresupuesto := (Contenido as TRdxFramePresupuestos).CodigoPresupuesto;
|
|
inherited FreeContenido;
|
|
BuscarPresupuesto;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.VerModal;
|
|
begin
|
|
FCodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
if (ContenidoModal is TfrFacturaCliente) then
|
|
(ContenidoModal as TfrFacturaCliente).CodigoPresupuesto := CodigoPresupuesto;
|
|
|
|
|
|
if (ContenidoModal is TfrAceptarRechazarPresupuestoCliente) then
|
|
(ContenidoModal as TfrAceptarRechazarPresupuestoCliente).CodigoPresupuesto := CodigoPresupuesto;
|
|
|
|
//Para activar P266, descomentar esto y comentar lo anterior
|
|
{
|
|
if (ContenidoModal is TfrCambiarSituacionPresupuesto) then
|
|
begin
|
|
(ContenidoModal as TfrCambiarSituacionPresupuesto).CodigoPresupuesto := CodigoPresupuesto;
|
|
(ContenidoModal as TfrCambiarSituacionPresupuesto).Situacion := TablaPresupuestos.FieldByName('SITUACION').AsString;
|
|
end;
|
|
}
|
|
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bAnadirClick(Sender: TObject);
|
|
begin
|
|
Contenido := TfrPresupuestoCliente.Create(Self);
|
|
Contenido.Modo := Anadir;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bSeleccionarClick(Sender: TObject);
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bCancelarGuardarClick(Sender: TObject);
|
|
begin
|
|
FCodigoPresupuesto := '';
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bSalirClick(Sender: TObject);
|
|
begin
|
|
CloseFrame;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.SetCodigoCliente(Value: string);
|
|
begin
|
|
if FCodigoCliente = Value then
|
|
exit;
|
|
FCodigoCliente := Value;
|
|
with TablaPresupuestos do
|
|
begin
|
|
DisableControls;
|
|
Close;
|
|
SelectSQL.Assign(dmTablaPresupuestos.sqlConsultarGridPresupuestosCli);
|
|
ParamByName('CODIGOCLIENTE').AsString := FCodigoCliente;
|
|
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
|
|
Prepare;
|
|
Open;
|
|
ActualizarBotones;
|
|
dmTablaPresupuestos.InicializarTablaPresupuestos(@TablaPresupuestos);
|
|
EnableControls;
|
|
Locate('CODIGO', CodigoPresupuesto, []);
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bModificarClick(Sender: TObject);
|
|
var
|
|
SituacionAux : String;
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
SituacionAux := dmTablaPresupuestos.DarSituacionPresupuesto(EmpresaActiva.Codigo, CodigoPresupuesto);
|
|
|
|
Contenido := TfrPresupuestoCliente.Create(Self);
|
|
Contenido.Modo := Modificar;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bEliminarClick(Sender: TObject);
|
|
var
|
|
SituacionAux : String;
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
SituacionAux := dmTablaPresupuestos.DarSituacionPresupuesto(EmpresaActiva.Codigo, CodigoPresupuesto);
|
|
|
|
if SituacionAux <> CTE_PENDIENTE then
|
|
begin
|
|
VerMensajeFmt(msgPreNoEliminar, [SituacionAux]);
|
|
Exit;
|
|
end;
|
|
|
|
Contenido := TfrPresupuestoCliente.Create(Self);
|
|
Contenido.Modo := Eliminar;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bConsultarClick(Sender: TObject);
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
Contenido := TfrPresupuestoCliente.Create(Self);
|
|
Contenido.Modo := Consultar;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bExportarClick(Sender: TObject);
|
|
var
|
|
FInformePresupuesto : TInformePresupuesto;
|
|
Fichero : String;
|
|
begin
|
|
if not DarFicheroExportar(Fichero) then
|
|
Exit;
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
FInformePresupuesto:= TInformePresupuesto.Create(Self);
|
|
try
|
|
FInformePresupuesto.Exportar(FCodigoPresupuesto, Fichero);
|
|
finally
|
|
FInformePresupuesto.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bAceptarClick(Sender: TObject);
|
|
var
|
|
SituacionAux : String;
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
SituacionAux := UpperCase(TablaPresupuestos.FieldByName('SITUACION').AsString);
|
|
|
|
if SituacionAux = CTE_ACEPTADO then
|
|
begin
|
|
VerMensajeFmt(msgPreYaAceptado, [FCodigoPresupuesto]);
|
|
exit;
|
|
end;
|
|
|
|
if SituacionAux = CTE_ANULADO then
|
|
begin
|
|
case VerMensajePreguntaFmt(msgCambiarAAceptar, [FCodigoPresupuesto]) of
|
|
IDNO : Exit;
|
|
end
|
|
end;
|
|
|
|
CaptionModal := 'Aceptar presupuesto de cliente';
|
|
WidthModal := 350;
|
|
HeightModal := 180;
|
|
ModoModal := Aceptar;
|
|
ContenidoModal := TfrAceptarRechazarPresupuestoCliente.Create(Self);
|
|
|
|
//Para activar P266, descomentar esto y comentar lo anterior
|
|
{
|
|
CaptionModal := 'Cambiar situacion de presupuesto de cliente';
|
|
WidthModal := 400;
|
|
HeightModal := 200;
|
|
ModoModal := Aceptar;
|
|
ContenidoModal := TfrCambiarSituacionPresupuesto.Create(Self);
|
|
}
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bAnularClick(Sender: TObject);
|
|
var
|
|
SituacionAux : String;
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
SituacionAux := UpperCase(TablaPresupuestos.FieldByName('SITUACION').AsString);
|
|
|
|
if SituacionAux = CTE_ANULADO then
|
|
begin
|
|
VerMensajeFmt(msgPreYaAnulado, [FCodigoPresupuesto]);
|
|
exit;
|
|
end;
|
|
|
|
if SituacionAux = CTE_ACEPTADO then
|
|
begin
|
|
case VerMensajePreguntaFmt(msgCambiarAAnular, [FCodigoPresupuesto]) of
|
|
IDNO : Exit;
|
|
end
|
|
end;
|
|
|
|
CaptionModal := 'Anular presupuesto de cliente';
|
|
WidthModal := 350;
|
|
HeightModal := 180;
|
|
ModoModal := Anular;
|
|
ContenidoModal := TfrAceptarRechazarPresupuestoCliente.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.CambiarModo(ModoAnterior,
|
|
Modo: TRdxModo);
|
|
begin
|
|
with TablaPresupuestos do
|
|
begin
|
|
Close;
|
|
case Modo of
|
|
Consultar : SelectSQL.Assign(dmTablaPresupuestos.sqlConsultarGridPresupuestosCli);
|
|
Facturar : SelectSQL.Assign(dmTablaPresupuestos.sqlConsultarGridPresupuestosFacturar);
|
|
end;
|
|
end;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.ActualizarBarras;
|
|
begin
|
|
inherited;
|
|
case Modo of
|
|
Consultar : begin
|
|
if BarraSeleccion <> NIL then BarraSeleccion.Visible := False;
|
|
if BarraSalir <> NIL then BarraSalir.Visible := True;
|
|
if BarraOperacion <> NIL then BarraOperacion.Visible := False;
|
|
end;
|
|
Facturar : begin
|
|
if BarraSeleccion <> NIL then BarraSeleccion.Visible := True;
|
|
if BarraSalir <> NIL then BarraSalir.Visible := False;
|
|
if BarraOperacion <> NIL then BarraOperacion.Visible := False;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bFacturarClick(Sender: TObject);
|
|
var
|
|
SituacionAux : String;
|
|
FacturadoAux : Boolean;
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
|
|
SituacionAux := dmTablaPresupuestos.DarSituacionPresupuesto(EmpresaActiva.Codigo, CodigoPresupuesto);
|
|
if SituacionAux <> CTE_ACEPTADO then
|
|
begin
|
|
VerMensajeFmt(msgPreNoSePuedeFacturar, [FCodigoPresupuesto]);
|
|
exit;
|
|
end;
|
|
|
|
FacturadoAux := dmTablaPresupuestos.PresupuestoFacturado(EmpresaActiva.Codigo, CodigoPresupuesto);
|
|
if FacturadoAux then
|
|
begin
|
|
VerMensajeFmt(msgPreYaFacturado, [FCodigoPresupuesto]);
|
|
exit;
|
|
end;
|
|
|
|
CaptionModal := 'Facturar presupuesto de cliente';
|
|
WidthModal := 758;
|
|
HeightModal := 670;
|
|
ModoModal := Anadir;
|
|
EntidadModal := entFacturaCliente;
|
|
ContenidoModal := TfrFacturaCliente.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.ActualizarBotones;
|
|
begin
|
|
if BaseDatos.IsReadOnly then
|
|
begin
|
|
bAnadir.Enabled := False;
|
|
bModificar.Enabled := False;
|
|
bEliminar.Enabled := False;
|
|
bConsultar.Enabled := True;
|
|
bBuscar.Enabled := True;
|
|
bAceptar.Enabled := False;
|
|
bAnular.Enabled := False;
|
|
bFacturar.Enabled := False;
|
|
bImprimir.Enabled := True;
|
|
bExportar.Enabled := True;
|
|
bListar.Enabled := True;
|
|
Exit;
|
|
end;
|
|
|
|
if TablaPresupuestos.RecordCount = 0 then
|
|
begin
|
|
bAnadir.Enabled := True;
|
|
bModificar.Enabled := False;
|
|
bEliminar.Enabled := False;
|
|
bConsultar.Enabled := False;
|
|
bBuscar.Enabled := False;
|
|
bAceptar.Enabled := False;
|
|
bAnular.Enabled := False;
|
|
bFacturar.Enabled := False;
|
|
bImprimir.Enabled := False;
|
|
bExportar.Enabled := False;
|
|
bListar.Enabled := False;
|
|
end
|
|
else begin
|
|
bAnadir.Enabled := True;
|
|
bModificar.Enabled := True;
|
|
bEliminar.Enabled := True;
|
|
bConsultar.Enabled := True;
|
|
bBuscar.Enabled := True;
|
|
bAceptar.Enabled := True;
|
|
bAnular.Enabled := True;
|
|
bFacturar.Enabled := True;
|
|
bImprimir.Enabled := True;
|
|
bExportar.Enabled := True;
|
|
bListar.Enabled := True;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bBuscarClick(Sender: TObject);
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
Contenido := TfrBuscarPresupuestoCliente.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bImprimirClick(Sender: TObject);
|
|
var
|
|
FInformePresupuesto : TInformePresupuesto;
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
FInformePresupuesto:= TInformePresupuesto.Create(Self);
|
|
try
|
|
FInformePresupuesto.Imprimir(FCodigoPresupuesto);
|
|
finally
|
|
FInformePresupuesto.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.gridPresupuestosRefreshButton(Sender: TObject);
|
|
begin
|
|
BuscarPresupuesto;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.gridPresupuestosCustomDrawCell(
|
|
Sender: TObject; ACanvas: TCanvas; ARect: TRect; ANode: TdxTreeListNode;
|
|
AColumn: TdxTreeListColumn; ASelected, AFocused, ANewItemRow: Boolean;
|
|
var AText: String; var AColor: TColor; AFont: TFont;
|
|
var AAlignment: TAlignment; var ADone: Boolean);
|
|
var
|
|
IndiceCol : Integer;
|
|
begin
|
|
if not ASelected then
|
|
begin
|
|
IndiceCol := (Sender as TdxDBGrid).ColumnByFieldName('CODIGOFACTURA').Index;
|
|
if not EsCadenaVacia(ANode.Strings[IndiceCol]) then
|
|
begin
|
|
AFont.Color := COLOR_FACTURADO;
|
|
Exit;
|
|
end;
|
|
IndiceCol := (Sender as TdxDBGrid).ColumnByFieldName('SITUACION').Index;
|
|
if ANode.Strings[IndiceCol] = CTE_ACEPTADO then
|
|
AFont.Color := COLOR_ACEPTADO
|
|
else if ANode.Strings[IndiceCol] = CTE_ANULADO then
|
|
AFont.Color := COLOR_ANULADO;
|
|
end;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bCopiarClick(Sender: TObject);
|
|
begin
|
|
Contenido := TfrPresupuestoCliente.Create(Self);
|
|
(Contenido as TfrPresupuestoCliente).CodigoPresupuestoOrigen := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
Contenido.Modo := Anadir;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.Listadepresupuestosdecliente1Click(
|
|
Sender: TObject);
|
|
begin
|
|
Contenido := TfrListadoPresupuestosCli.Create(Self);
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.cbxAnoChange(Sender: TObject);
|
|
begin
|
|
if cbxAno.Text = CTE_TODOS then begin
|
|
gridPresupuestos.Filter.Remove(gridPresupuestos.FindColumnByFieldName(CTE_ANO));
|
|
gridPresupuestos.Filter.Clear;
|
|
end
|
|
else begin
|
|
gridPresupuestos.Filter.Clear;
|
|
gridPresupuestos.Filter.Add(gridPresupuestos.FindColumnByFieldName(CTE_ANO), cbxAno.Text, cbxAno.Text);
|
|
end;
|
|
|
|
gridPresupuestos.SetFocus;
|
|
gridPresupuestos.GotoFirst;
|
|
//Falta seleccionar tupla
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.gridPresupuestosDblClick(
|
|
Sender: TObject);
|
|
begin
|
|
if Modo in [Seleccionar, Facturar] then
|
|
bSeleccionar.Click
|
|
else
|
|
bModificar.Click;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.SetContenido(NuevoFrame: TRdxFrame);
|
|
begin
|
|
inherited;
|
|
if (Contenido is TfrListadoPresupuestosCli) then
|
|
(Contenido as TfrListadoPresupuestosCli).CodigoCliente := TablaPresupuestos.FieldByName('CODIGOCLIENTE').AsString;
|
|
end;
|
|
|
|
procedure TfrPresupuestosClientes.bEnviarCorreoClick(Sender: TObject);
|
|
var
|
|
FInforme : TInformePresupuesto;
|
|
Fichero : String;
|
|
Datos: TDatosCorreo;
|
|
CodigoCliente: String;
|
|
|
|
begin
|
|
CodigoPresupuesto := TablaPresupuestos.FieldByName('CODIGO').AsString;
|
|
CodigoCliente := TablaPresupuestos.FieldByName('CODIGOCLIENTE').AsString;
|
|
Datos:= Nil;
|
|
Fichero := CodigoPresupuesto;
|
|
Fichero := DarRutaTemporal + StringReplace(Fichero, CTE_SEPSERIADO, CTE_SEPSERIADO2, [rfReplaceAll, rfIgnoreCase]);
|
|
Fichero := Fichero + CTE_DOC;
|
|
|
|
//Generamos el fichero para luego adjuntaro al correo
|
|
FInforme:= TInformePresupuesto.Create(Self);
|
|
try
|
|
FInforme.Exportar(CodigoPresupuesto, Fichero);
|
|
finally
|
|
FInforme.Free;
|
|
end;
|
|
|
|
try
|
|
//Creamos el correo
|
|
Datos:= TDatosCorreo.Create;
|
|
Datos.Direcciones.add(dmTablaClientes.darCorreo(CodigoCliente));
|
|
Datos.Adjuntos.Add(Fichero);
|
|
enviarCorreo(Datos);
|
|
finally
|
|
FreeAndNil(Datos);
|
|
end;
|
|
end;
|
|
|
|
end.
|