AbetoDesign_FactuGES2/Source/Modulos/Contactos/Views/uViewContacto.pas
roberto 1f5e6ebcb9 Version 4.5.4
Cambio en los informes de Contratos de cliente de todas las entidades: Cambio fecha de entrega por fecha expedicion - Solicitado por Próspero
Cambio logo uecko y sellos cabecera en todos los informes de todas las entidades- Solicitado por Noelia
Arreglo para que permita introducir DNI y CIFs raros - Solicitado por Mónica
Las facturas proforma no se tendrán en cuenta en las facturas asociadas a los contratos, listado de contratos - Solicitado por Eva
Se añade comprobación de capitulos para que avise si existe un subtotal sin capitulo correspondiente, ayudará a controlar errores en presupuestos y contratos largos. - Solicitado por Miriam
En los detalles de presupuestos y contratos si eligen un articulo de la tarífa el programa no deja modificar las descripciones (Se ha detectado que lo hen hecho en ocasiones en las tiendas) - Solicitado por Miriam

git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@186 93f398dd-4eb6-7a46-baf6-13f46f578da2
2024-02-05 10:15:29 +00:00

407 lines
12 KiB
ObjectPascal
Raw Permalink Blame History

unit uViewContacto;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, ExtCtrls, StdCtrls, Buttons, DB, uDADataTable,
DBCtrls, Grids, DBGrids, uBizContactos, Mask, ComCtrls, uCustomView,
JvComponent, JvFormAutoSize, cxControls, cxContainer, cxEdit, cxTextEdit,
cxDBEdit, dxLayoutControl, dxLayoutLookAndFeels, cxMemo, cxHyperLinkEdit,
ImgList, ActnList, PngImageList, PngSpeedButton, uDAInterfaces, uBizEmpresasTiendas,
cxGraphics, cxMaskEdit, cxDropDownEdit, uContactosController,
cxLookupEdit, cxDBLookupEdit, cxDBLookupComboBox, uViewTienda,
uViewObservaciones, uBizIdiomas, uIdiomasController, cxSpinEdit;
type
IViewContacto = interface(IViewBase)
['{5FCFD172-5F8A-4639-B479-1CF0061526B5}']
function GetController : IContactosController;
procedure SetController (const Value : IContactosController);
property Controller : IContactosController read GetController
write SetController;
function GetContacto: IBizContacto;
procedure SetContacto(const Value: IBizContacto);
property Contacto: IBizContacto read GetContacto write SetContacto;
end;
TfrViewContacto = class(TfrViewBase, IViewContacto)
dsContacto: TDADataSource;
dxLayoutControlContactoGroup_Root: TdxLayoutGroup;
dxLayoutControlContacto: TdxLayoutControl;
dxLayoutControlContactoGroup1: TdxLayoutGroup;
dxLayoutControlContactoGroup2: TdxLayoutGroup;
dxLayoutControlContactoGroup3: TdxLayoutGroup;
dxLayoutControlContactoGroup4: TdxLayoutGroup;
dxLayoutControlContactoGroup5: TdxLayoutGroup;
dxLayoutControlContactoGroup6: TdxLayoutGroup;
dxLayoutControlContactoGroup7: TdxLayoutGroup;
dxLayoutControlContactoGroup9: TdxLayoutGroup;
dxLayoutControlContactoItem1: TdxLayoutItem;
eCalle: TcxDBTextEdit;
dxLayoutControlContactoItem2: TdxLayoutItem;
cbProvincia: TcxDBComboBox;
dxLayoutControlContactoItem3: TdxLayoutItem;
cbPoblacion: TcxDBComboBox;
dxLayoutControlContactoItem4: TdxLayoutItem;
eCodigoPostal: TcxDBTextEdit;
dxLayoutControlContactoItem9: TdxLayoutItem;
eTlfParticular: TcxDBTextEdit;
dxLayoutControlContactoItem10: TdxLayoutItem;
eTlfTrabajo: TcxDBTextEdit;
dxLayoutControlContactoItem11: TdxLayoutItem;
eTlfMovil: TcxDBTextEdit;
dxLayoutControlContactoItem12: TdxLayoutItem;
eFax: TcxDBTextEdit;
dxLayoutControlContactoItem13: TdxLayoutItem;
eNombre: TcxDBTextEdit;
dxLayoutControlContactoItem14: TdxLayoutItem;
eNIFCIF: TcxDBTextEdit;
dxLayoutControlContactoItem7: TdxLayoutItem;
eMailTrabajo: TcxDBHyperLinkEdit;
ActionList1: TActionList;
actMandarCorreoParticular: TAction;
actMandarCorreoTrabajo: TAction;
actVerPaginaWeb: TAction;
dxLayoutControlContactoItem6: TdxLayoutItem;
eMailParticular: TcxDBHyperLinkEdit;
dxLayoutControlContactoGroup110: TdxLayoutGroup;
dxLayoutControlContactoItem5: TdxLayoutItem;
ePaginaWeb: TcxDBHyperLinkEdit;
ImageList1: TPngImageList;
PngSpeedButton1: TPngSpeedButton;
dxLayoutControlContactoItem15: TdxLayoutItem;
PngSpeedButton2: TPngSpeedButton;
dxLayoutControlContactoItem17: TdxLayoutItem;
PngSpeedButton3: TPngSpeedButton;
dxLayoutControlContactoItem18: TdxLayoutItem;
dxLayoutControlContactoGroup12: TdxLayoutGroup;
dxLayoutControlContactoGroup13: TdxLayoutGroup;
dxLayoutControlContactoGroup11: TdxLayoutGroup;
dxLayoutControlContactoItem25: TdxLayoutItem;
eReferencia: TcxDBTextEdit;
dxLayoutControlContactoGroup16: TdxLayoutGroup;
dxLayoutControlContactoItem167: TdxLayoutItem;
ePersonaContacto: TcxDBTextEdit;
dxLayoutControlContactoGroup100: TdxLayoutGroup;
frViewTienda1: TfrViewTienda;
dxLayoutControlContactoItem16: TdxLayoutItem;
dxLayoutControlContactoGroup10: TdxLayoutGroup;
frViewObservaciones1: TfrViewObservaciones;
dxLayoutControlContactoItem8: TdxLayoutItem;
dxLayoutControlContactoItem19: TdxLayoutItem;
cbPais: TcxDBComboBox;
dxLayoutControlContactoItem20: TdxLayoutItem;
cbIdioma: TcxDBLookupComboBox;
dsIdiomas: TDADataSource;
procedure eMailTrabajoPropertiesEditValueChanged(Sender: TObject);
procedure actMandarCorreoParticularExecute(Sender: TObject);
procedure actMandarCorreoTrabajoExecute(Sender: TObject);
procedure actVerPaginaWebExecute(Sender: TObject);
procedure actMandarCorreoParticularUpdate(Sender: TObject);
procedure actMandarCorreoTrabajoUpdate(Sender: TObject);
procedure actVerPaginaWebUpdate(Sender: TObject);
procedure eMailTrabajoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure cbProvinciaPropertiesInitPopup(Sender: TObject);
procedure cbPoblacionPropertiesInitPopup(Sender: TObject);
procedure cbPaisPropertiesInitPopup(Sender: TObject);
procedure eNIFCIFPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
private
FProvincias : TStringList;
FIDProvincia : Integer; //Almacenar<61> la provincia que hay seleccionada para no cargar las poblaciones si no es necesario
FPoblaciones : TStringList;
FPaises : TStringList;
FIdiomas : IBizIdioma;
FIdiomasController: IIdiomasController;
procedure CargarPaises;
procedure CargarProvincias;
procedure CargarPoblaciones;
protected
FContacto: IBizContacto;
FController: IContactosController;
function GetContacto: IBizContacto; virtual;
procedure SetContacto(const Value: IBizContacto); virtual;
function GetController : IContactosController;
procedure SetController (const Value : IContactosController);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Contacto: IBizContacto read GetContacto write SetContacto;
property Controller : IContactosController read GetController write SetController;
end;
implementation
{$R *.dfm}
uses
uFactuGES_App, uProvinciasPoblacionesController, uStringsUtils;
type
THackcxDBHyperLinkEdit = class(TcxDBHyperLinkEdit);
{ TfrViewContactos }
{
******************************* TfrViewContacto ********************************
}
procedure TfrViewContacto.actMandarCorreoParticularExecute(Sender: TObject);
begin
inherited;
THackcxDBHyperLinkEdit(eMailParticular).DoStart;
end;
procedure TfrViewContacto.actMandarCorreoParticularUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (Length(eMailParticular.Text) > 0)
end;
procedure TfrViewContacto.actMandarCorreoTrabajoExecute(Sender: TObject);
begin
inherited;
THackcxDBHyperLinkEdit(eMailTrabajo).DoStart;
end;
procedure TfrViewContacto.actMandarCorreoTrabajoUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (Length(eMailTrabajo.Text) > 0)
end;
procedure TfrViewContacto.actVerPaginaWebExecute(Sender: TObject);
begin
inherited;
THackcxDBHyperLinkEdit(ePaginaWeb).DoStart;
end;
procedure TfrViewContacto.actVerPaginaWebUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (Length(ePaginaWeb.Text) > 0)
end;
procedure TfrViewContacto.CargarPaises;
var
i : integer;
begin
with TProvinciasPoblacionesController.Create do
try
FPaises := DarListaPaises;
with cbPais.Properties.Items do
begin
BeginUpdate;
try
Clear;
for i := 0 to FPaises.Count - 1 do
Add(FPaises.Names[i]);
finally
EndUpdate;
end;
end;
finally
Free;
end;
end;
procedure TfrViewContacto.CargarPoblaciones;
var
i : integer;
begin
if (FIDProvincia <> StrToInt(FProvincias.Values[cbProvincia.Text])) then
Begin
FIDProvincia := StrToInt(FProvincias.Values[cbProvincia.Text]);
with TProvinciasPoblacionesController.Create do
begin
try
FPoblaciones := DarListaPoblaciones(FIDProvincia);
with cbPoblacion.Properties.Items do
begin
BeginUpdate;
try
Clear;
for i := 0 to FPoblaciones.Count - 1 do
Add(FPoblaciones.Names[i]);
finally
EndUpdate;
end;
end;
finally
Free;
end;
end;
End;
end;
procedure TfrViewContacto.CargarProvincias;
var
i : integer;
begin
with TProvinciasPoblacionesController.Create do
begin
try
FProvincias := DarListaProvincias;
with cbProvincia.Properties.Items do
begin
BeginUpdate;
try
Clear;
for i := 0 to FProvincias.Count - 1 do
Add(FProvincias.Names[i]);
finally
EndUpdate;
end;
end;
finally
Free;
end;
end;
end;
procedure TfrViewContacto.cbPaisPropertiesInitPopup(Sender: TObject);
begin
ShowHourglassCursor;
try
if not Assigned(FPaises) then
CargarPaises;
finally
HideHourglassCursor;
end;
end;
procedure TfrViewContacto.cbPoblacionPropertiesInitPopup(Sender: TObject);
begin
ShowHourglassCursor;
try
FreeANDNIL(FPoblaciones);
if not Assigned(FProvincias) then
CargarProvincias;
if not EsCadenaVacia(cbProvincia.Text) and (FProvincias.IndexOfName(cbProvincia.Text) <> -1) then
CargarPoblaciones
finally
HideHourglassCursor;
end;
end;
procedure TfrViewContacto.cbProvinciaPropertiesInitPopup(Sender: TObject);
begin
ShowHourglassCursor;
try
if not Assigned(FProvincias) then
CargarProvincias;
finally
HideHourglassCursor;
end;
end;
constructor TfrViewContacto.Create(AOwner: TComponent);
begin
inherited;
FIDProvincia := 0;
FProvincias := NIL;
FPoblaciones := NIL;
FIdiomas := Nil;
FIdiomasController := TIdiomasController.Create;
end;
destructor TfrViewContacto.Destroy;
begin
if Assigned(FProvincias) then
FreeANDNIL(FProvincias);
if Assigned(FPoblaciones) then
FreeANDNIL(FPoblaciones);
FIdiomas := Nil;
FIdiomasController := Nil;
inherited;
end;
procedure TfrViewContacto.eMailTrabajoPropertiesEditValueChanged(Sender: TObject);
begin
inherited;
if not VarIsNull((Sender as TcxDBHyperLinkEdit).EditValue) then
(Sender as TcxDBHyperLinkEdit).EditValue := StringReplace((Sender as TcxDBHyperLinkEdit).EditValue, (Sender as TcxDBHyperLinkEdit).Properties.Prefix, '', []);
end;
procedure TfrViewContacto.eMailTrabajoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
begin
inherited;
if not VarIsNull(DisplayValue) then
DisplayValue := StringReplace(DisplayValue, (Sender as TcxDBHyperLinkEdit).Properties.Prefix, '', []);
end;
procedure TfrViewContacto.eNIFCIFPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
NifCifTratado: String;
NifValido: Boolean;
CifValido: Boolean;
begin
inherited;
NifValido:= false;
CifValido:= false;
NifCifTratado := uStringsUtils.CadLimpiaCar(DisplayValue);
NifValido := uStringsUtils.comprobarLetraNIF(NifCifTratado);
if not NifValido then
CifValido := uStringsUtils.validarCIF(NifCifTratado);
if not (NifValido or CifValido) then
if (Application.MessageBox('El DNI/NIF/CIF introducido no es correcto, <20>Desea continuar?', 'Atenci<63>n', MB_YESNO) = IDNO) then
eNIFCIF.SetFocus;
end;
function TfrViewContacto.GetContacto: IBizContacto;
begin
Result := FContacto;
end;
function TfrViewContacto.GetController: IContactosController;
begin
Result := FController;
end;
procedure TfrViewContacto.SetContacto(const Value: IBizContacto);
begin
FContacto := Value;
if Assigned(FContacto) then
begin
dsContacto.DataTable := FContacto.DataTable;
frViewTienda1.DataItem := FContacto.DataTable;
end
else begin
dsContacto.DataTable := Nil;
end;
end;
procedure TfrViewContacto.SetController(const Value: IContactosController);
begin
FController := Value;
if Assigned(FController) then
begin
FIdiomas := FIdiomasController.BuscarTodos;
dsIdiomas.DataTable := FIdiomas.DataTable;
dsIdiomas.DataTable.Active := True;
end;
end;
initialization
RegisterClass(TfrViewContacto);
finalization
UnRegisterClass(TfrViewContacto);
end.