Tecsitel_FactuGES2/Source/Modulos/Albaranes de proveedor/Views/uViewDatosYSeleccionProveedorAlbaran.pas

427 lines
13 KiB
ObjectPascal
Raw Blame History

unit uViewDatosYSeleccionProveedorAlbaran;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uViewBase, StdCtrls, cxControls, cxContainer, cxEdit, cxLabel,
cxDBLabel, ExtCtrls, DB, uDADataTable, uBizContactos,
ComCtrls, ToolWin, ActnList, ImgList, PngImageList, cxTextEdit, cxDBEdit,
pngimage, JvExControls, JvComponent, JvButton, JvTransparentButton, Mask,
DBCtrls, uProveedoresController, dxLayoutControl, Buttons, uDAInterfaces,
cxMaskEdit, cxButtonEdit, uBizAlbaranesProveedor, uBizDireccionesContacto,
uDireccionesContactoController, Menus, cxLookAndFeelPainters, cxButtons;
type
IViewDatosYSeleccionProveedorAlbaran = interface(IViewBase)
['{F1E1FFC0-02C9-47F5-92BC-BE10FA2C5134}']
function GetAlbaran: IBizAlbaranProveedor;
procedure SetAlbaran(const Value: IBizAlbaranProveedor);
property Albaran: IBizAlbaranProveedor read GetAlbaran write SetAlbaran;
function GetProveedor: IBizProveedor;
procedure SetProveedor(Value: IBizProveedor);
property Proveedor: IBizProveedor read GetProveedor write SetProveedor;
function GetID_Proveedor: integer;
procedure SetID_Proveedor(const Value: integer);
property ID_Proveedor: integer read GetID_Proveedor write SetID_Proveedor;
function GetOnProveedorChanged : TNotifyEvent;
procedure SetOnProveedorChanged (const Value : TNotifyEvent);
property OnProveedorChanged : TNotifyEvent read GetOnProveedorChanged
write SetOnProveedorChanged;
procedure ElegirPersonaContacto;
procedure ElegirDireccionProveedor;
procedure ElegirProveedor;
procedure VerFichaProveedor;
procedure AnadirNuevoProveedor;
procedure RefrescarDireccion;
end;
TfrViewDatosYSeleccionProveedorAlbaran = class(TfrViewBase, IViewDatosYSeleccionProveedorAlbaran)
dsProveedor: TDADataSource;
ActionList1: TActionList;
actElegirContacto: TAction;
actAnadirContacto: TAction;
actVerContacto: TAction;
dxLayoutControl1Group_Root: TdxLayoutGroup;
dxLayoutControl1: TdxLayoutControl;
dxLayoutControl1Item1: TdxLayoutItem;
edtlNombre: TcxDBTextEdit;
dxLayoutControl1Item2: TdxLayoutItem;
edtNIFCIF: TcxDBTextEdit;
dsAlbaran: TDADataSource;
actElegirDireccion: TAction;
actElegirPersonaContacto: TAction;
dxLayoutControl1Item3: TdxLayoutItem;
edtPersonaContacto: TcxDBTextEdit;
dxLayoutControl1Group4: TdxLayoutGroup;
dxLayoutControl1Item4: TdxLayoutItem;
edtDireccion: TcxTextEdit;
Button4: TButton;
dxLayoutControl1Item5: TdxLayoutItem;
dxLayoutControl1Group3: TdxLayoutGroup;
dxLayoutControl1Item6: TdxLayoutItem;
Button5: TButton;
dxLayoutControl1Group5: TdxLayoutGroup;
dxLayoutControl1Item9: TdxLayoutItem;
Button3: TBitBtn;
dxLayoutControl1Group2: TdxLayoutGroup;
dxLayoutControl1Item7: TdxLayoutItem;
Button1: TBitBtn;
dxLayoutControl1Item10: TdxLayoutItem;
BitBtn1: TBitBtn;
dxLayoutControl1Group1: TdxLayoutGroup;
PngImageList: TPngImageList;
procedure actElegirContactoExecute(Sender: TObject);
procedure actAnadirContactoExecute(Sender: TObject);
procedure actVerContactoUpdate(Sender: TObject);
procedure edtPersonaContactoPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure edtDireccionPropertiesButtonClick(Sender: TObject;
AButtonIndex: Integer);
procedure actVerContactoExecute(Sender: TObject);
procedure actElegirDireccionUpdate(Sender: TObject);
procedure actElegirDireccionExecute(Sender: TObject);
procedure actElegirPersonaContactoExecute(Sender: TObject);
procedure actElegirPersonaContactoUpdate(Sender: TObject);
private
FOnProveedorChanged : TNotifyEvent;
FMsgElegirProveedor: String;
protected
FProveedoresController : IProveedoresController;
FDireccionesController : IDireccionesContactoController;
FAlbaran : IBizAlbaranProveedor;
FProveedor : IBizProveedor;
FDireccion : IBizDireccionesContacto;
function GetProveedor: IBizProveedor; virtual;
procedure SetProveedor(Value: IBizProveedor); virtual;
function GetOnProveedorChanged : TNotifyEvent;
procedure SetOnProveedorChanged (const Value : TNotifyEvent);
procedure SetReadOnly(Value: Boolean); override;
function GetID_Proveedor: integer; virtual;
procedure SetID_Proveedor(const Value: integer); virtual;
function GetAlbaran: IBizAlbaranProveedor;
procedure SetAlbaran(const Value: IBizAlbaranProveedor);
procedure EscribirTextoDireccion;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure ElegirPersonaContacto;
procedure ElegirDireccionProveedor;
procedure ElegirProveedor;
procedure VerFichaProveedor;
procedure AnadirNuevoProveedor;
procedure RefrescarDireccion;
property Albaran: IBizAlbaranProveedor read GetAlbaran write SetAlbaran;
property Proveedor: IBizProveedor read GetProveedor write SetProveedor;
property OnProveedorChanged : TNotifyEvent read GetOnProveedorChanged write SetOnProveedorChanged;
property ID_Proveedor: integer read GetID_Proveedor write SetID_Proveedor;
end;
implementation
{$R *.dfm}
uses
uDataModuleProveedores, Math, uCustomView, uBizContactosPersonal, uDialogUtils;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actElegirContactoExecute(Sender: TObject);
begin
ElegirProveedor;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actElegirDireccionExecute(
Sender: TObject);
begin
inherited;
ElegirDireccionProveedor;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actElegirDireccionUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := not ReadOnly and Assigned(FProveedor.Direcciones) and
(FProveedor.Direcciones.Active) and (FProveedor.Direcciones.RecordCount > 0);
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actElegirPersonaContactoExecute(
Sender: TObject);
begin
inherited;
ElegirPersonaContacto;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actElegirPersonaContactoUpdate(
Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := not ReadOnly and Assigned(FProveedor.Personal) and
(FProveedor.Personal.Active) and (FProveedor.Personal.RecordCount > 0);
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actAnadirContactoExecute(
Sender: TObject);
begin
AnadirNuevoProveedor;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actVerContactoExecute(
Sender: TObject);
begin
inherited;
VerFichaProveedor;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.actVerContactoUpdate(Sender: TObject);
begin
inherited;
(Sender as TAction).Enabled := (Length(edtlNombre.Text) > 0);
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.AnadirNuevoProveedor;
var
AProveedor : IBizProveedor;
begin
inherited;
AProveedor := (FProveedoresController.Nuevo as IBizProveedor);
FProveedoresController.Ver(AProveedor);
Self.Proveedor := AProveedor;
end;
constructor TfrViewDatosYSeleccionProveedorAlbaran.Create(AOwner: TComponent);
begin
inherited;
FMsgElegirProveedor := 'Elija el proveedor al que se le realizar<61> el pedido.';
FProveedoresController := TProveedoresController.Create;
FDireccionesController := TDireccionesContactoController.Create;
edtlNombre.Enabled := False;
edtNIFCIF.Enabled := False;
edtDireccion.Enabled := False;
edtPersonaContacto.Enabled := False;
end;
destructor TfrViewDatosYSeleccionProveedorAlbaran.Destroy;
begin
FProveedoresController := NIL;
FDireccionesController := NIL;
inherited;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.edtDireccionPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
inherited;
ElegirDireccionProveedor;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.edtPersonaContactoPropertiesButtonClick(
Sender: TObject; AButtonIndex: Integer);
begin
inherited;
ElegirPersonaContacto;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.ElegirProveedor;
var
AProveedor : IBizProveedor;
begin
inherited;
AProveedor := (FProveedoresController.ElegirContacto(FProveedoresController.BuscarTodos, FMsgElegirProveedor, False) as IBizProveedor);
if Assigned(AProveedor) then
Self.Proveedor := AProveedor;
AProveedor := Nil;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.ElegirDireccionProveedor;
var
ADireccion : IBizDireccionesContacto;
begin
inherited;
ADireccion := FProveedoresController.ElegirDireccionEntrega(FProveedor, ' ');
if Assigned(ADireccion) then
begin
FDireccion := ADireccion;
FAlbaran.Edit;
if FDireccion.IDIsNull then
begin
FAlbaran.ClearField('ID_DIRECCION');
FAlbaran.ClearField('IMPORTE_PORTE');
end
else begin
FAlbaran.ID_DIRECCION := FDireccion.ID;
FAlbaran.IMPORTE_PORTE := FDireccion.PORTE;
end;
FAlbaran.PERSONA_CONTACTO_PROV := FDireccion.PERSONA_CONTACTO;
EscribirTextoDireccion;
end;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.ElegirPersonaContacto;
var
APersona : IBizContactoPersonal;
begin
inherited;
APersona := FProveedoresController.ElegirPersonaContacto(FProveedor.Personal,
'El proveedor dispone de personas de contacto dadas de alta en su ficha. Seleccione la que quiere utilizar.');
if Assigned(APersona) then
begin
FAlbaran.Edit;
FAlbaran.PERSONA_CONTACTO_PROV := APersona.NOMBRE;
end;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.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]);
edtDireccion.Text := ACadena;
end;
function TfrViewDatosYSeleccionProveedorAlbaran.GetProveedor: IBizProveedor;
begin
Result := FProveedor;
end;
function TfrViewDatosYSeleccionProveedorAlbaran.GetID_Proveedor: integer;
begin
Result := -1;
if Assigned(FProveedor) then
Result := FProveedor.ID;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.SetProveedor(Value: IBizProveedor);
begin
FProveedor := Value;
if Assigned(FProveedor) then
begin
dsProveedor.DataTable := FProveedor.DataTable;
if not FProveedor.DataTable.Active then
FProveedor.DataTable.Active := True;
//Solo podremos establecer persona de contacto si se ha asignado un proveedor
if FProveedor.ID > 0 then
edtPersonaContacto.Enabled := True;
if FProveedor.Direcciones.RecordCount > 0 then
ElegirDireccionProveedor
else begin
FAlbaran.Edit;
FAlbaran.PERSONA_CONTACTO_PROV := FProveedor.PERSONA_CONTACTO;
RefrescarDireccion;
end;
end
else begin
dsProveedor.DataTable := NIL;
FProveedor := NIL;
FDireccion := NIL;
edtPersonaContacto.Enabled := False;
end;
if Assigned(FOnProveedorChanged) then
FOnProveedorChanged(Self);
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.SetID_Proveedor(const Value: integer);
begin
Self.Proveedor := IBizProveedor(FProveedoresController.Buscar(Value));
end;
function TfrViewDatosYSeleccionProveedorAlbaran.GetOnProveedorChanged: TNotifyEvent;
begin
Result := FOnProveedorChanged;
end;
function TfrViewDatosYSeleccionProveedorAlbaran.GetAlbaran: IBizAlbaranProveedor;
begin
Result := FAlbaran;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.RefrescarDireccion;
begin
FDireccion := FDireccionesController.Nuevo;
if (not FAlbaran.ID_DIRECCIONIsNull) and
(FDireccionesController.Localizar(FProveedor.Direcciones, FAlbaran.ID_DIRECCION)) then
FDireccionesController.CopiarDireccion(FProveedor.Direcciones, FDireccion)
else
FDireccionesController.CopiarDireccionFiscal(FProveedor, FDireccion);
EscribirTextoDireccion;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.SetOnProveedorChanged(
const Value: TNotifyEvent);
begin
FOnProveedorChanged := Value;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.SetAlbaran(
const Value: IBizAlbaranProveedor);
begin
FAlbaran := Value;
if Assigned(FAlbaran) then
begin
dsAlbaran.DataTable := FAlbaran.DataTable;
FProveedor := FAlbaran.Proveedor;
dsProveedor.DataTable := FProveedor.DataTable;
if not FProveedor.DataTable.Active then
FProveedor.DataTable.Active := True;
//Solo podremos establecer persona de contacto si se ha asignado un proveedor
if FProveedor.ID > 0 then
edtPersonaContacto.Enabled := True;
RefrescarDireccion;
end
else begin
dsAlbaran.DataTable := NIL;
FProveedor := NIL;
FDireccion := NIL;
end;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.SetReadOnly(Value: Boolean);
begin
inherited;
if (csLoading in Self.ComponentState) then
Exit;
actAnadirContacto.Enabled := not ReadOnly;
actElegirContacto.Enabled := not ReadOnly;
edtPersonaContacto.Enabled := not ReadOnly;
end;
procedure TfrViewDatosYSeleccionProveedorAlbaran.VerFichaProveedor;
begin
if not Assigned(Proveedor) then
ShowErrorMessage('No se ha indicado un proveedor', 'El pedido no tiene ning<6E>n proveedor asociado a mostrar.')
else begin
FProveedoresController.Ver(Proveedor);
end;
end;
end.