FactuGES2/Source/Modulos/Pedidos a proveedor/Views/uViewDireccionEntregaPedidoProv.pas
david 00077c4227 - Repaso de pedidos de proveedor: elección de dirección de entrega (almacén / direccion de cliente / otra dirección)
- Build de FinalBuilder con opción 'Release' para intentar que el programa vaya más rápido.

git-svn-id: https://192.168.0.254/svn/Proyectos.Acana_FactuGES2/trunk@652 f4e31baf-9722-1c47-927c-6f952f962d4b
2016-09-12 17:36:53 +00:00

344 lines
11 KiB
ObjectPascal
Raw Blame History

unit uViewDireccionEntregaPedidoProv;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, uBizPedidosProveedor, cxGraphics, dxLayoutControl, cxMemo,
cxContainer, cxEdit, cxTextEdit, cxMaskEdit, cxDropDownEdit, cxLookupEdit,
cxDBLookupEdit, cxDBLookupComboBox, StdCtrls, cxControls, DB, uDADataTable,
ActnList, uBizAlmacenes, uAlmacenesController, uPedidosProveedorController,
Buttons, uDAInterfaces, uClientesController, uDireccionesContactoController,
uBizContactosDirecciones, uBizContratosCliente, uContratosClienteController;
type
IViewDireccionEntregaPedidoProv = interface(IViewBase)
['{7467855C-066F-4A60-B88F-2837C8050B1E}']
function GetPedidoProveedor: IBizPedidoProveedor;
procedure SetPedidoProveedor(const Value: IBizPedidoProveedor);
property PedidoProveedor: IBizPedidoProveedor read GetPedidoProveedor write SetPedidoProveedor;
procedure RefrescarDireccion;
end;
TfrViewDireccionEntregaPedidoProv = class(TfrViewBase, IViewDireccionEntregaPedidoProv)
dxLayoutControl1: TdxLayoutControl;
rdxDestino1: TRadioButton;
rdxDestino2: TRadioButton;
cbLista: TcxDBLookupComboBox;
dxLayoutGroup1: TdxLayoutGroup;
dxLayoutItem1: TdxLayoutItem;
dxLayoutControl1Item3: TdxLayoutItem;
dxLayoutControl1Item2: TdxLayoutItem;
ActionList1: TActionList;
actLista: TAction;
actOtro: TAction;
dsPedido: TDADataSource;
dsAlmacenes: TDADataSource;
dxLayoutControl1Item1: TdxLayoutItem;
bModificar: TBitBtn;
txtDireccion: TStaticText;
dxLayoutControl1Item5: TdxLayoutItem;
dxLayoutControl1Item4: TdxLayoutItem;
rdxDestinoCliente: TRadioButton;
dxLayoutControl1Item6: TdxLayoutItem;
cbListaDireccionesCliente: TcxDBLookupComboBox;
dsDireccionesCliente: TDADataSource;
actListaCliente: TAction;
procedure actListaExecute(Sender: TObject);
procedure actOtroExecute(Sender: TObject);
procedure cbListaPropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure cbListaDireccionesClientePropertiesValidate(Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure bModificarClick(Sender: TObject);
procedure txtDireccionDblClick(Sender: TObject);
procedure actListaClienteExecute(Sender: TObject);
procedure actBotonElegirDirClienteUpdate(Sender: TObject);
protected
FAlmacenesController : IAlmacenesController;
FAlmacenes: IBizAlmacen;
FDireccionesCliente : IBizContactosDirecciones;
FPedido : IBizPedidoProveedor;
FController : IPedidosProveedorController;
function GetPedidoProveedor: IBizPedidoProveedor;
function HayContratoAsociado: Boolean;
procedure SetPedidoProveedor(const Value: IBizPedidoProveedor);
procedure CambioDireccionAlmacen;
procedure CambioDireccionCliente;
procedure RecuperarClienteAsociado;
procedure SetReadOnly(Value: Boolean); override;
public
property PedidoProveedor: IBizPedidoProveedor read GetPedidoProveedor write SetPedidoProveedor;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure RefrescarDireccion;
end;
implementation
{$R *.dfm}
uses
uEditorRegistryUtils, uCustomView, uStringsUtils, uFactuGES_App;
procedure TfrViewDireccionEntregaPedidoProv.actBotonElegirDirClienteUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := HayContratoAsociado and (rdxDestinoCliente.Checked);
end;
procedure TfrViewDireccionEntregaPedidoProv.actListaClienteExecute(
Sender: TObject);
begin
inherited;
actListaCliente.Checked := True;
RefrescarDireccion;
end;
procedure TfrViewDireccionEntregaPedidoProv.actListaExecute(Sender: TObject);
begin
actLista.Checked := True;
RefrescarDireccion;
end;
procedure TfrViewDireccionEntregaPedidoProv.actOtroExecute(Sender: TObject);
begin
actOtro.Checked := True;
// txtDireccion.Enabled := True;
if Assigned(FPedido) then
begin
FController.VerDireccionEntrega(FPedido);
if (FPedido.ID_ALMACEN > 0) then
begin
FPedido.Edit;
FPedido.ID_ALMACEN := 0;
end;
end;
RefrescarDireccion;
end;
procedure TfrViewDireccionEntregaPedidoProv.bModificarClick(Sender: TObject);
begin
inherited;
actOtro.Execute;
end;
procedure TfrViewDireccionEntregaPedidoProv.CambioDireccionAlmacen;
begin
if Assigned(FPedido) and Assigned(FAlmacenes) then
begin
FPedido.Edit;
FPedido.CALLE := FAlmacenes.CALLE;
FPedido.POBLACION := FAlmacenes.POBLACION;
FPedido.POBLACION := FAlmacenes.POBLACION;
FPedido.PROVINCIA := FAlmacenes.PROVINCIA;
FPedido.CODIGO_POSTAL := FAlmacenes.CODIGO_POSTAL;
RefrescarDireccion;
end;
end;
procedure TfrViewDireccionEntregaPedidoProv.CambioDireccionCliente;
begin
if Assigned(FPedido) and Assigned(FDireccionesCliente) then
begin
FPedido.Edit;
FPedido.CALLE := FDireccionesCliente.CALLE;
FPedido.POBLACION := FDireccionesCliente.POBLACION;
FPedido.POBLACION := FDireccionesCliente.POBLACION;
FPedido.PROVINCIA := FDireccionesCliente.PROVINCIA;
FPedido.CODIGO_POSTAL := FDireccionesCliente.CODIGO_POSTAL;
RefrescarDireccion;
end;
end;
procedure TfrViewDireccionEntregaPedidoProv.cbListaDireccionesClientePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
if Assigned(FPedido) and Assigned(FDireccionesCliente) then
CambioDireccionCliente;
end;
procedure TfrViewDireccionEntregaPedidoProv.cbListaPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
if Assigned(FPedido) and Assigned(FAlmacenes) then
CambioDireccionAlmacen;
end;
constructor TfrViewDireccionEntregaPedidoProv.Create(AOwner: TComponent);
begin
inherited;
FController := TPedidosProveedorController.Create;
FAlmacenesController := TAlmacenesController.Create;
FAlmacenes := FAlmacenesController.BuscarTodos;
FAlmacenes.DataTable.Active := True;
dsAlmacenes.DataTable := FAlmacenes.DataTable;
FDireccionesCliente := NIL;
dsDireccionesCliente.DataTable := NIL;
end;
destructor TfrViewDireccionEntregaPedidoProv.Destroy;
begin
cbListaDireccionesCliente.Properties.OnValidate := Nil;
cbLista.Properties.OnValidate := Nil;
dsDireccionesCliente.DataTable := NIL;
FDireccionesCliente := NIL;
FAlmacenesController := Nil;
FAlmacenes := Nil;
FController := NIL;
inherited;
end;
function TfrViewDireccionEntregaPedidoProv.GetPedidoProveedor: IBizPedidoProveedor;
begin
Result := FPedido;
end;
function TfrViewDireccionEntregaPedidoProv.HayContratoAsociado: Boolean;
begin
Result := Assigned(FPedido) and (FPedido.ID_CONTRATO_CLIENTE > 0);
end;
procedure TfrViewDireccionEntregaPedidoProv.RecuperarClienteAsociado;
var
AClientesController: IClientesController;
AContratoController : IContratosClienteController;
AContrato : IBizContratoCliente;
begin
FDireccionesCliente := NIL;
dsDireccionesCliente.DataTable := NIL;
if (HayContratoAsociado()) then
begin
ShowHourglassCursor;
AClientesController := TClientesController.Create;
AContratoController := TContratosClienteController.Create;
try
AContrato := AContratoController.Buscar(FPedido.ID_CONTRATO_CLIENTE);
if Assigned(AContrato) then
begin
AContrato.DataTable.Active := True;
FDireccionesCliente := AClientesController.DarTodasDirecciones(AContrato.ID_CLIENTE);
if Assigned(FDireccionesCliente) then
FDireccionesCliente.DataTable.Open;
end;
finally
AClientesController := NIL;
AContratoController := NIL;
AContrato := NIL;
HideHourglassCursor;
end;
end
end;
procedure TfrViewDireccionEntregaPedidoProv.RefrescarDireccion;
begin
txtDireccion.Caption := '';
if Assigned(FPedido) then
begin
txtDireccion.Enabled := True;
txtDireccion.Caption := FPedido.CALLE;
txtDireccion.Caption := txtDireccion.Caption + #13#10 + FPedido.CODIGO_POSTAL + ' ' + FPedido.POBLACION;
txtDireccion.Caption := txtDireccion.Caption + #13#10 + FPedido.PROVINCIA;
txtDireccion.Caption := txtDireccion.Caption + #13#10 + 'Persona contacto: ' + FPedido.PERSONA_CONTACTO;
txtDireccion.Caption := txtDireccion.Caption + #13#10 + 'Tel<65>fono: ' + FPedido.TELEFONO;
if (actOtro.Checked) then
begin
txtDireccion.Enabled := True;
bModificar.Enabled := True;
cbLista.Enabled := False;
cbLista.Text := '';
cbListaDireccionesCliente.Enabled := False;
cbListaDireccionesCliente.Text := '';
end
else begin
if (actListaCliente.Checked) then
begin
cbListaDireccionesCliente.Enabled := True;
cbListaDireccionesCliente.DroppedDown := True;
cbLista.Enabled := False;
cbLista.Text := '';
txtDireccion.Enabled := False;
bModificar.Enabled := False;
end
else begin
cbLista.Enabled := True;
cbLista.DroppedDown := True;
cbListaDireccionesCliente.Enabled := False;
cbListaDireccionesCliente.Text := '';
txtDireccion.Enabled := False;
bModificar.Enabled := False;
end;
end;
end;
end;
procedure TfrViewDireccionEntregaPedidoProv.SetPedidoProveedor(
const Value: IBizPedidoProveedor);
begin
cbLista.Properties.OnValidate := NIL;
cbListaDireccionesCliente.Properties.OnValidate := NIL;
dsPedido.DataTable := nil;
FPedido := Value;
RecuperarClienteAsociado;
if Assigned(FDireccionesCliente) then
begin
dsDireccionesCliente.DataTable := FDireccionesCliente.DataTable;
cbListaDireccionesCliente.Properties.OnValidate := cbListaDireccionesClientePropertiesValidate;
end;
cbLista.Properties.OnValidate := cbListaPropertiesValidate;
dsPedido.DataTable := FPedido.DataTable;
if (FPedido.ID_ALMACEN < 1) then
begin
if (FPedido.ID_DIRECCION_CLIENTE < 1) then
actOtro.Checked := True
else
actListaCliente.Checked := True
end
else
actLista.Checked := True;
RefrescarDireccion;
end;
procedure TfrViewDireccionEntregaPedidoProv.SetReadOnly(Value: Boolean);
begin
inherited;
if ReadOnly then
begin
rdxDestino1.Enabled := False;
rdxDestinoCliente.Enabled := False;
rdxDestino2.Enabled := False;
end;
end;
procedure TfrViewDireccionEntregaPedidoProv.txtDireccionDblClick(
Sender: TObject);
begin
inherited;
actOtro.Execute;
end;
end.