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
2007-06-21 15:47:20 +00:00

487 lines
15 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.0.7
Fecha versión actual: 08-03-2004
===============================================================================
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
albarán.
18-01-2002 Se han coloreado las filas del grid dependiendo de la
situación de la factura.
07-04-2002 Se ha adaptado para la transacción única.
06-05-2002 Adaptación al grid 'TdxDBGrid'.
08-04-2003 P263. Agrupar por años los albaranes.
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.
===============================================================================
}
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á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á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.