This repository has been archived on 2024-11-29. You can view files and clone it, but cannot push or open issues or pull requests.
Tecsitel_FactuGES/Clientes/AlbaranesClientes.pas

487 lines
15 KiB
ObjectPascal
Raw Permalink Normal View History

{
===============================================================================
Copyright (<EFBFBD>) 2001. Rodax Software.
===============================================================================
Los contenidos de este fichero son propiedad de Rodax Software titular del
copyright. Este fichero s<EFBFBD>lo podr<EFBFBD> ser copiado, distribuido y utilizado,
en su totalidad o en parte, con el permiso escrito de Rodax Software, o de
acuerdo con los t<EFBFBD>rminos y condiciones establecidas en el acuerdo/contrato
bajo el que se suministra.
-----------------------------------------------------------------------------
Web: www.rodax-software.com
===============================================================================
Fecha primera versi<EFBFBD>n: 01-10-2001
Versi<EFBFBD>n actual: 1.0.7
Fecha versi<EFBFBD>n actual: 08-03-2004
===============================================================================
Modificaciones:
Fecha Comentarios
---------------------------------------------------------------------------
09-10-2001 Al pulsar la tecla ESC se activa el bot<EFBFBD>n 'Cancelar'. S<EFBFBD>lo
pasa cuando este frame est<EFBFBD> en una ventana modal.
29-10-2001 Hacer m<EFBFBD>s grande la ventana modal para facturar un
albar<EFBFBD>n.
18-01-2002 Se han coloreado las filas del grid dependiendo de la
situaci<EFBFBD>n de la factura.
07-04-2002 Se ha adaptado para la transacci<EFBFBD>n <EFBFBD>nica.
06-05-2002 Adaptaci<EFBFBD>n al grid 'TdxDBGrid'.
08-04-2003 P263. Agrupar por a<EFBFBD>os los albaranes.
08-03-2004 Al hacer doble click sobre el grid, se pasar<EFBFBD> a modificar el
registro o se seleccionar<EFBFBD>, dependiendo del modo en el que
se encuentre la pantalla.
08-03-2004 p272. Adaptaci<EFBFBD>n a multiempresa.
===============================================================================
}
unit AlbaranesClientes;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
RdxFrameAlbaranes, Grids, DBGrids, ComCtrls, RdxBotones, ToolWin, ExtCtrls,
Tipos, Menus, am2000menuitem, am2000popupmenu, am2000, Db, DBTables,
RdxPaneles, RdxBarras, RXDBCtrl, dxCntner, dxTL, dxDBCtrl,
dxDBGrid, StdCtrls, RdxComboBox, pngimage;
type
TfrAlbaranesClientes = class(TRdxFrameAlbaranes)
dsAlbaranes: TDataSource;
BarraAlbaranes: TRdxBarraSuperior;
bAnadir: TRdxBotonSuperior;
bModificar: TRdxBotonSuperior;
bEliminar: TRdxBotonSuperior;
bConsultar: TRdxBotonSuperior;
bBuscar: TRdxBotonSuperior;
pnlCuerpo: TRdxPanel;
pnlGridAlbaranesCliente: TPanel;
pnlExtra: TRdxBarraSuperior;
bFacturar: TRdxBoton;
bImprimir: TRdxBoton;
bExportar: TRdxBoton;
brSeleccion: TRdxBarraInferior;
bSeleccionar: TRdxBoton;
bCancelarGuardar: TRdxBoton;
brSimple: TRdxBarraInferior;
bSalir: TRdxBoton;
gridAlbaranes: TdxDBGrid;
imgSombra: TImage;
RdxPanel1: TRdxPanel;
Label1: TLabel;
cbxAno: TRdxComboBox;
bEnviarCorreo: TRdxBoton;
procedure bAnadirClick(Sender: TObject);
procedure bModificarClick(Sender: TObject);
procedure bConsultarClick(Sender: TObject);
procedure bBuscarClick(Sender: TObject);
procedure bEliminarClick(Sender: TObject);
procedure bFacturarClick(Sender: TObject);
procedure bImprimirClick(Sender: TObject);
procedure bSalirClick(Sender: TObject);
procedure bSeleccionarClick(Sender: TObject);
procedure bCancelarGuardarClick(Sender: TObject);
procedure Facturas1Click(Sender: TObject);
procedure bExportarClick(Sender: TObject);
procedure gridAlbaranesRefreshButton(Sender: TObject);
procedure gridAlbaranesCustomDrawCell(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 cbxAnoChange(Sender: TObject);
procedure gridAlbaranesDblClick(Sender: TObject);
procedure bEnviarCorreoClick(Sender: TObject);
private
FCodigoCliente: String;
procedure SetCodigoCliente(Value : String);
procedure ActualizarBotones;
protected
procedure BuscarAlbaran; override;
procedure FreeContenido; override;
procedure VerModal; 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;
property TablaAlbaranes;
property Entidad;
end;
var
frAlbaranesClientes: TfrAlbaranesClientes;
implementation
{$R *.DFM}
uses
AlbaranCliente, BuscarAlbaranCliente, FacturaCliente, SysFunc,
TablaAlbaranesCliente, BaseDatos, Configuracion,
IBCustomDataSet, FacturasClientes, Mensajes, InformeAlbaranCliente,
StrFunc, Constantes, Literales, RdxEmpresaActiva, Correo, TablaClientes;
procedure TfrAlbaranesClientes.FreeContenido;
begin
if (Contenido is TRdxFrameAlbaranes) then
CodigoAlbaran := (Contenido as TRdxFrameAlbaranes).CodigoAlbaran;
inherited FreeContenido;
BuscarAlbaran;
end;
procedure TfrAlbaranesClientes.bAnadirClick(Sender: TObject);
begin
inherited;
Contenido := TfrAlbaranCliente.Create(Self);
Contenido.Modo := Anadir;
end;
procedure TfrAlbaranesClientes.bModificarClick(Sender: TObject);
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
if dmTablaAlbaranesCliente.AlbaranFacturado(EmpresaActiva.Codigo, CodigoAlbaran) then
begin
VerMensaje(msgAlbNoModificar);
Exit;
end;
Contenido := TfrAlbaranCliente.Create(Self);
Contenido.Modo := Modificar;
end;
procedure TfrAlbaranesClientes.bConsultarClick(Sender: TObject);
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
Contenido := TfrAlbaranCliente.Create(Self);
Contenido.Modo := Consultar;
end;
procedure TfrAlbaranesClientes.bBuscarClick(Sender: TObject);
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
Contenido := TfrBuscarAlbaranCliente.Create(Self);
end;
procedure TfrAlbaranesClientes.bEliminarClick(Sender: TObject);
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
if dmTablaAlbaranesCliente.AlbaranFacturado(EmpresaActiva.Codigo, CodigoAlbaran) then
begin
VerMensaje(msgAlbNoEliminar);
Exit;
end;
Contenido := TfrAlbaranCliente.Create(Self);
Contenido.Modo := Eliminar;
end;
procedure TfrAlbaranesClientes.bFacturarClick(Sender: TObject);
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
if dmTablaAlbaranesCliente.AlbaranFacturado(EmpresaActiva.Codigo, CodigoAlbaran) then
begin
VerMensajeFmt(msgAlbYaFacturado, [FCodigoAlbaran]);
Exit;
end;
CaptionModal := 'Facturar albar<61>n de cliente';
WidthModal := 758;
ModoModal := Anadir;
EntidadModal := entFacturaCliente;
ContenidoModal := TfrFacturaCliente.Create(Self);
end;
procedure TfrAlbaranesClientes.bImprimirClick(Sender: TObject);
var
FInformeAlbaran : TInformeAlbaranCliente;
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
FCodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
FInformeAlbaran := TInformeAlbaranCliente.Create(Self);
try
FInformeAlbaran.Imprimir(FCodigoAlbaran);
finally
FInformeAlbaran.Free;
end;
end;
procedure TfrAlbaranesClientes.ActualizarBarras;
begin
inherited;
case Modo of
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 TfrAlbaranesClientes.ActualizarBotones;
begin
if BaseDatos.IsReadOnly then
begin
bAnadir.Enabled := False;
bModificar.Enabled := False;
bEliminar.Enabled := False;
bConsultar.Enabled := True;
bBuscar.Enabled := True;
bFacturar.Enabled := False;
bExportar.Enabled := True;
bImprimir.Enabled := True;
Exit;
end;
if TablaAlbaranes.RecordCount = 0 then
begin
bAnadir.Enabled := True;
bModificar.Enabled := False;
bEliminar.Enabled := False;
bConsultar.Enabled := False;
bBuscar.Enabled := False;
bFacturar.Enabled := False;
bExportar.Enabled := False;
bImprimir.Enabled := False;
end
else begin
bAnadir.Enabled := True;
bModificar.Enabled := True;
bEliminar.Enabled := True;
bConsultar.Enabled := True;
bBuscar.Enabled := True;
bFacturar.Enabled := True;
bExportar.Enabled := True;
bImprimir.Enabled := True;
end;
end;
procedure TfrAlbaranesClientes.BuscarAlbaran;
begin
with TablaAlbaranes do
begin
DisableControls;
Close;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
Open;
dmTablaAlbaranesCliente.InicializarTablaAlbaranes(@TablaAlbaranes);
ActualizarBotones;
EnableControls;
Locate('CODIGO', CodigoAlbaran, []);
end;
end;
procedure TfrAlbaranesClientes.CambiarModo(ModoAnterior, Modo: TRdxModo);
begin
with TablaAlbaranes do
begin
Close;
case Modo of
Facturar : SelectSQL.Assign(dmTablaAlbaranesCliente.sqlConsultarGridAlbaranesFacturar);
end;
end;
inherited;
end;
constructor TfrAlbaranesClientes.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Entidad := entAlbaranCliente;
ConfigurarFrame(Self, Self.Entidad);
BaseDatos := dmBaseDatos.BD;
Transaccion := dmBaseDatos.Transaccion;
TablaAlbaranes := TIBDataSet.Create(Self);
dsAlbaranes.DataSet := TablaAlbaranes;
with TablaAlbaranes do
begin
DisableControls;
Database := BaseDatos;
Transaction := Transaccion;
SelectSQL.Assign(dmTablaAlbaranesCliente.sqlConsultarGridAlbaranes);
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
Open;
ActualizarBotones;
EnableControls;
end;
dmTablaAlbaranesCliente.InicializarTablaAlbaranes(@TablaAlbaranes);
dmTablaAlbaranesCliente.InicializarGridAlbaranes(gridAlbaranes);
gridAlbaranes.GotoFirst;
cbxAno.Items := dmTablaAlbaranesCliente.DarListaAnos(EmpresaActiva.Codigo);
cbxAno.ItemIndex := 0;
end;
destructor TfrAlbaranesClientes.Destroy;
begin
TablaAlbaranes.Close;
TablaAlbaranes.UnPrepare;
TablaAlbaranes.Free;
inherited;
end;
procedure TfrAlbaranesClientes.SetCodigoCliente(Value: String);
begin
if FCodigoCliente = Value then
exit;
FCodigoCliente := Value;
with TablaAlbaranes do
begin
DisableControls;
Close;
SelectSQL.Assign(dmTablaAlbaranesCliente.sqlConsultarGridAlbaranesCli);
ParamByName('CODIGOCLIENTE').AsString := FCodigoCliente;
ParamByName('CODIGOEMPRESA').AsInteger := EmpresaActiva.Codigo;
Prepare;
Open;
dmTablaAlbaranesCliente.InicializarTablaAlbaranes(@TablaAlbaranes);
ActualizarBotones;
EnableControls;
Locate('CODIGO', CodigoAlbaran, []);
end;
end;
procedure TfrAlbaranesClientes.VerModal;
begin
FCodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
if (ContenidoModal is TfrFacturaCliente) then
(ContenidoModal as TfrFacturaCliente).CodigoAlbaran := CodigoAlbaran;
inherited;
end;
procedure TfrAlbaranesClientes.bSalirClick(Sender: TObject);
begin
CloseFrame;
end;
procedure TfrAlbaranesClientes.bSeleccionarClick(Sender: TObject);
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
CloseFrame;
end;
procedure TfrAlbaranesClientes.bCancelarGuardarClick(Sender: TObject);
begin
FCodigoAlbaran := '';
CloseFrame;
end;
procedure TfrAlbaranesClientes.Facturas1Click(Sender: TObject);
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
CaptionModal := Format('Factura del albar<61>n %s', [TablaAlbaranes.FieldByName('CODIGO').AsString]);
WidthModal := 815;
HeightModal := 600;
ModoModal := Consultar;
ContenidoModal := TfrFacturasClientes.Create(Self);
end;
procedure TfrAlbaranesClientes.bExportarClick(Sender: TObject);
var
FInformeAlbaran : TInformeAlbaranCliente;
Fichero : String;
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
if not DarFicheroExportar(Fichero) then
Exit;
FCodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
FInformeAlbaran := TInformeAlbaranCliente.Create(Self);
try
FInformeAlbaran.Exportar(FCodigoAlbaran, Fichero);
finally
FInformeAlbaran.Free;
end;
end;
procedure TfrAlbaranesClientes.gridAlbaranesRefreshButton(Sender: TObject);
begin
BuscarAlbaran;
end;
procedure TfrAlbaranesClientes.gridAlbaranesCustomDrawCell(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
AFont.Color := COLOR_FACTURADO;
end;
end;
procedure TfrAlbaranesClientes.cbxAnoChange(Sender: TObject);
begin
if cbxAno.Text = CTE_TODOS then begin
gridAlbaranes.Filter.Remove(gridAlbaranes.FindColumnByFieldName(CTE_ANO));
gridAlbaranes.Filter.Clear;
end
else begin
gridAlbaranes.Filter.Clear;
gridAlbaranes.Filter.Add(gridAlbaranes.FindColumnByFieldName(CTE_ANO), cbxAno.Text, cbxAno.Text);
end;
gridAlbaranes.SetFocus;
gridAlbaranes.GotoFirst;
//Falta seleccionar tupla
end;
procedure TfrAlbaranesClientes.gridAlbaranesDblClick(Sender: TObject);
begin
if Modo = Seleccionar then
bSeleccionar.Click
else
bModificar.Click;
end;
procedure TfrAlbaranesClientes.bEnviarCorreoClick(Sender: TObject);
var
FInforme : TInformeAlbaranCliente;
Fichero : String;
Datos: TDatosCorreo;
CodigoCliente: String;
begin
CodigoAlbaran := TablaAlbaranes.FieldByName('CODIGO').AsString;
CodigoCliente := TablaAlbaranes.FieldByName('CODIGOCLIENTE').AsString;
Datos:= Nil;
Fichero := CodigoAlbaran;
Fichero := DarRutaTemporal + StringReplace(Fichero, CTE_SEPSERIADO, CTE_SEPSERIADO2, [rfReplaceAll, rfIgnoreCase]);
Fichero := Fichero + CTE_DOC;
//Generamos el fichero para luego adjuntaro al correo
FInforme:= TInformeAlbaranCliente.Create(Self);
try
FInforme.Exportar(CodigoAlbaran, 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.