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; procedure CambioDireccionAlmacen; 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 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; procedure CambioDireccionAlmacen; 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; CambioDireccionCliente; 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.NOMBRE + #10#13 + FAlmacenes.CALLE; FPedido.POBLACION := FAlmacenes.POBLACION; FPedido.POBLACION := FAlmacenes.POBLACION; FPedido.PROVINCIA := FAlmacenes.PROVINCIA; FPedido.CODIGO_POSTAL := FAlmacenes.CODIGO_POSTAL; FPedido.PERSONA_CONTACTO := FAlmacenes.PERSONA_CONTACTO; FPedido.TELEFONO := FAlmacenes.MOVIL; RefrescarDireccion; end; end; procedure TfrViewDireccionEntregaPedidoProv.CambioDireccionCliente; begin if Assigned(FPedido) and Assigned(FDireccionesCliente) then begin FPedido.Edit; FPedido.CALLE := FDireccionesCliente.NOMBRE + #10#13 + FDireccionesCliente.CALLE; FPedido.POBLACION := FDireccionesCliente.POBLACION; FPedido.POBLACION := FDireccionesCliente.POBLACION; FPedido.PROVINCIA := FDireccionesCliente.PROVINCIA; FPedido.CODIGO_POSTAL := FDireccionesCliente.CODIGO_POSTAL; FPedido.PERSONA_CONTACTO := FDireccionesCliente.PERSONA_CONTACTO; FPedido.TELEFONO := FDireccionesCliente.TELEFONO; 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é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.