unit uViewDatosYSeleccionClienteAlbaran; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, uViewDatosYSeleccionClienteBase, ImgList, PngImageList, ActnList, DB, uDAInterfaces, uDADataTable, dxLayoutControl, StdCtrls, Buttons, cxControls, cxTextEdit, cxContainer, cxEdit, cxDBEdit, ExtCtrls, cxMemo, uBizAlbaranesCliente; type IViewDatosYSeleccionClienteAlbaran = interface(IViewDatosYSeleccionClienteBase) ['{41EA09A7-F21A-4D89-AC60-559CB6B430C9}'] function GetAlbaranCliente: IBizAlbaranCliente; procedure SetAlbaranCliente(const Value: IBizAlbaranCliente); property AlbaranCliente: IBizAlbaranCliente read GetAlbaranCliente write SetAlbaranCliente; end; TfrViewDatosYSeleccionClienteAlbaran = class(TfrViewDatosYSeleccionClienteBase, IViewDatosYSeleccionClienteAlbaran) dxLayoutControl1Item1: TdxLayoutItem; edtlNombre: TcxDBTextEdit; dxLayoutControl1Item3: TdxLayoutItem; bElegirDireccion: TButton; dxLayoutControl1Item4: TdxLayoutItem; edtPersonaContacto: TcxDBTextEdit; dxLayoutControl1Item5: TdxLayoutItem; bElegirPersonaContacto: TButton; dxLayoutControl1Group2: TdxLayoutGroup; dxLayoutControl1Item6: TdxLayoutItem; memDireccion: TcxMemo; dxLayoutControl1Group4: TdxLayoutGroup; dsAlbaran: TDADataSource; protected FAlbaran : IBizAlbaranCliente; function GetAlbaranCliente: IBizAlbaranCliente; procedure SetAlbaranCliente(const Value: IBizAlbaranCliente); procedure EscribirTextoDireccion; procedure RefrescarDireccion; public procedure ElegirCliente; override; procedure ElegirDireccionCliente; override; procedure ElegirPersonaContacto; override; procedure AnadirNuevoCliente; override; property AlbaranCliente: IBizAlbaranCliente read GetAlbaranCliente write SetAlbaranCliente; end; implementation {$R *.dfm} { TfrViewDatosYSeleccionClienteAlbaran } procedure TfrViewDatosYSeleccionClienteAlbaran.AnadirNuevoCliente; begin if Assigned(FAlbaran) and Assigned(FCliente) and Assigned (FAlbaran.Detalles) and (FAlbaran.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Los descuentos de los artículos del albarán serán actualizados con los del nuevo cliente seleccionado, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; inherited; end; procedure TfrViewDatosYSeleccionClienteAlbaran.ElegirCliente; begin if Assigned(FAlbaran) and Assigned(FCliente) and Assigned (FAlbaran.Detalles) and (FAlbaran.Detalles.RecordCount > 0) then begin if (Application.MessageBox('Los descuentos de los artículos del albarán serán actualizados con los del nuevo cliente seleccionado, ¿Desea continuar?', 'Atención', MB_YESNO) = IDNO) then Exit; end; inherited; end; procedure TfrViewDatosYSeleccionClienteAlbaran.ElegirDireccionCliente; begin inherited; if Assigned(FDireccion) then begin FAlbaran.Edit; if FDireccion.IDIsNull then begin FAlbaran.ClearField('ID_DIRECCION'); FAlbaran.ClearField('IMPORTE_PORTE'); FAlbaran.ClearField('CALLE'); FAlbaran.ClearField('POBLACION'); FAlbaran.ClearField('PROVINCIA'); FAlbaran.ClearField('CODIGO_POSTAL'); FAlbaran.ClearField('TELEFONO'); end else begin FAlbaran.ID_DIRECCION := FDireccion.ID; FAlbaran.CALLE := FDireccion.CALLE; FAlbaran.POBLACION := FDireccion.POBLACION; FAlbaran.PROVINCIA := FDireccion.PROVINCIA; FAlbaran.CODIGO_POSTAL := FDireccion.CODIGO_POSTAL; FAlbaran.TELEFONO := FDireccion.TELEFONO; FAlbaran.IMPORTE_PORTE := FDireccion.PORTE; FAlbaran.PERSONA_CONTACTO := FDireccion.PERSONA_CONTACTO; end; EscribirTextoDireccion; end; end; procedure TfrViewDatosYSeleccionClienteAlbaran.ElegirPersonaContacto; begin inherited; if Assigned(FPersonaContacto) then begin FAlbaran.Edit; FAlbaran.PERSONA_CONTACTO := FPersonaContacto.NOMBRE; end; end; procedure TfrViewDatosYSeleccionClienteAlbaran.EscribirTextoDireccion; var ACadena : String; begin ACadena := ''; if Assigned(FDireccion) then ACadena := Format('%s %s %s %s', [FDireccion.CALLE, FDireccion.POBLACION, FDireccion.CODIGO_POSTAL, FDireccion.PROVINCIA]); memDireccion.Lines.Clear; memDireccion.Lines.Text := ACadena; end; function TfrViewDatosYSeleccionClienteAlbaran.GetAlbaranCliente: IBizAlbaranCliente; begin Result := FAlbaran; end; procedure TfrViewDatosYSeleccionClienteAlbaran.RefrescarDireccion; begin FDireccion := FDireccionesController.Nuevo; if (not FAlbaran.ID_DIRECCIONIsNull) and (FDireccionesController.Localizar(FCliente.Direcciones, FAlbaran.ID_DIRECCION)) then FDireccionesController.CopiarDireccion(FCliente.Direcciones, FDireccion) else FDireccionesController.CopiarDireccionFiscal(FCliente, FDireccion); EscribirTextoDireccion; end; procedure TfrViewDatosYSeleccionClienteAlbaran.SetAlbaranCliente( const Value: IBizAlbaranCliente); begin FAlbaran := Value; if Assigned(FAlbaran) then begin dsAlbaran.DataTable := FAlbaran.DataTable; FCliente := FAlbaran.Cliente; dsCliente.DataTable := FCliente.DataTable; if not FCliente.DataTable.Active then FCliente.DataTable.Active := True; RefrescarDireccion; end else begin dsAlbaran.DataTable := NIL; FCliente := NIL; FDireccion := NIL; end; end; end.