git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@968 0c75b7a4-871f-7646-8a2f-f78d34cc349f
427 lines
13 KiB
ObjectPascal
427 lines
13 KiB
ObjectPascal
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.
|