This repository has been archived on 2024-11-28. You can view files and clone it, but cannot push or open issues or pull requests.
LuisLeon_FactuGES/Source/Modulos/Albaranes de proveedor/Views/uEditorAlbaranProveedor.pas
2007-06-11 15:29:06 +00:00

303 lines
9.6 KiB
ObjectPascal
Raw Blame History

unit uEditorAlbaranProveedor;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, uEditorDBItem, DB, uDADataTable, JvAppStorage,
JvAppRegistryStorage, JvComponent, JvFormPlacement, ImgList,
PngImageList, StdActns, ActnList, ComCtrls, TBX, TB2Item, TB2Dock,
TB2Toolbar, ExtCtrls, JvExControls, JvNavigationPane,
uCustomView, uViewBase, JvComponentBase,
StdCtrls, pngimage, AppEvnts, cxControls, cxContainer, cxEdit, cxTextEdit, cxMemo, cxDBEdit,
uViewIncidencias,
uAlbaranesProveedorController,
uViewDetallesBase, uViewDetallesAlbaranProveedor,
dxLayoutLookAndFeels, JvExComCtrls, JvStatusBar, uViewTotales,
uIEditorAlbaranProveedor, uBizAlbaranesProveedor, uViewAlbaranProveedor,
uViewDetallesDTO, uViewDetallesArticulos;
type
TfEditorAlbaranProveedor = class(TfEditorDBItem, IEditorAlbaranProveedor)
pagContenido: TTabSheet;
pagInicidencias: TTabSheet;
frViewIncidenciasCli: TfrViewIncidencias;
dxLayoutLookAndFeelList1: TdxLayoutLookAndFeelList;
dxLayoutOfficeLookAndFeel1: TdxLayoutOfficeLookAndFeel;
frViewDetallesAlbaranProveedor1: TfrViewDetallesAlbaranProveedor;
frViewTotales1: TfrViewTotales;
procedure FormShow(Sender: TObject); override;
procedure CustomEditorClose(Sender: TObject; var Action: TCloseAction);
procedure pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
procedure frViewTotales1edtDescuentoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewTotales1edtIVAPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure frViewTotales1ePortePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
procedure actEliminarUpdate(Sender: TObject);
// procedure frViewDatosYSeleccionContactoedtlNombrePropertiesChange(Sender: TObject);
protected
FAlbaran: IBizAlbaranProveedor;
FViewAlbaran: IViewAlbaranProveedor;
FController : IAlbaranesProveedorController;
function GetController : IAlbaranesProveedorController;
procedure SetController (const Value : IAlbaranesProveedorController); virtual;
function GetAlbaran: IBizAlbaranProveedor;
procedure SetAlbaran(const Value: IBizAlbaranProveedor); virtual;
function GetViewAlbaran: IViewAlbaranProveedor;
procedure SetViewAlbaran(const Value: IViewAlbaranProveedor);
procedure GuardarInterno; override;
procedure EliminarInterno; override;
property ViewAlbaran: IViewAlbaranProveedor read GetViewAlbaran write SetViewAlbaran;
procedure OnProveedorChanged(Sender : TObject);
//Si queremos crear otra vista para el editor heredado solo tendriamos que
//sobreescribir este metodo
procedure AsignarVista; virtual;
public
procedure PonerTitulos(const ATitulo: string = ''); override;
property Controller : IAlbaranesProveedorController read GetController write SetController;
property Albaran: IBizAlbaranProveedor read GetAlbaran write SetAlbaran;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
implementation
uses
uViewDatosYSeleccionProveedor, uDataModuleUsuarios, uProveedoresController,
uBizDireccionesContacto, uDialogUtils, uDataTableUtils;
{$R *.dfm}
{ TfEditorAlbaranProveedor }
{
**************************** TfEditorAlbaranProveedor ****************************
}
procedure TfEditorAlbaranProveedor.actEliminarUpdate(Sender: TObject);
begin
inherited;
if (Sender as TAction).Enabled then
(Sender as TAction).Enabled := HayDatos
and (Albaran.REF_FAC_PROVEEDOR = '');
end;
procedure TfEditorAlbaranProveedor.AsignarVista;
var
AViewAlbaranProveedor: TfrViewAlbaranProveedor;
begin
AViewAlbaranProveedor := TfrViewAlbaranProveedor.create(Self);
with AViewAlbaranProveedor do
begin
Parent := pagGeneral;
Align := alClient;
dxLayoutControl1.LookAndFeel := dxLayoutOfficeLookAndFeel1;
end;
ViewAlbaran := AViewAlbaranProveedor;
end;
constructor TfEditorAlbaranProveedor.Create(AOwner: TComponent);
begin
inherited;
AsignarVista;
pgPaginas.ActivePageIndex := 0;
end;
procedure TfEditorAlbaranProveedor.CustomEditorClose(Sender: TObject;
var Action: TCloseAction);
begin
inherited;
FViewAlbaran := NIL;
FAlbaran := NIL;
end;
destructor TfEditorAlbaranProveedor.Destroy;
begin
// Utilizar mejor OnClose;
inherited;
end;
procedure TfEditorAlbaranProveedor.EliminarInterno;
begin
if (Application.MessageBox('<27>Desea borrar este albar<61>n de proveedor?', 'Atenci<63>n', MB_YESNO) = IDYES) then
begin
FController.Eliminar(FAlbaran);
inherited
end
end;
procedure TfEditorAlbaranProveedor.FormShow(Sender: TObject);
begin
inherited;
if not Assigned(FViewAlbaran) then
raise Exception.Create('No hay ninguna vista asignada');
if not Assigned(Albaran) then
raise Exception.Create('No hay ning<6E>n Albaran asignado');
Albaran.DataTable.Active := True;
pgPaginas.ActivePage := pagGeneral;
end;
procedure TfEditorAlbaranProveedor.frViewTotales1edtDescuentoPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FAlbaran.DESCUENTO := DisplayValue;
end;
procedure TfEditorAlbaranProveedor.frViewTotales1edtIVAPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FAlbaran.IVA := DisplayValue;
end;
procedure TfEditorAlbaranProveedor.frViewTotales1ePortePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
begin
inherited;
FAlbaran.IMPORTE_PORTE := DisplayValue;
end;
function TfEditorAlbaranProveedor.GetController: IAlbaranesProveedorController;
begin
Result := FController;
end;
function TfEditorAlbaranProveedor.GetAlbaran: IBizAlbaranProveedor;
begin
Result := FAlbaran;
end;
function TfEditorAlbaranProveedor.GetViewAlbaran: IViewAlbaranProveedor;
begin
Result := FViewAlbaran;
end;
procedure TfEditorAlbaranProveedor.GuardarInterno;
var
bEsNuevo : Boolean;
begin
inherited;
bEsNuevo := False;
ShowHourglassCursor;
// frViewDetallesAlbaranProveedor1.SaveGridStatus;
frViewDetallesAlbaranProveedor1.BeginUpdate;
try
bEsNuevo := FAlbaran.EsNuevo;
FController.Guardar(FAlbaran);
finally
frViewDetallesAlbaranProveedor1.EndUpdate;
// frViewDetallesAlbaranProveedor1.RestoreGridStatus;
HideHourglassCursor;
end;
if bEsNuevo then
ShowInfoMessage('El albar<61>n se ha dado de alta con el c<>digo ' + FAlbaran.REFERENCIA);
Modified := False;
end;
procedure TfEditorAlbaranProveedor.OnProveedorChanged(Sender: TObject);
var
AProveedoresController : IProveedoresController;
ADireccion : IBizDireccionesContacto;
begin
if Assigned(FAlbaran) then
begin
FAlbaran.Proveedor := ViewAlbaran.ViewProveedorAlbaran.Proveedor;
// Si el pedido tiene detalles hay que mirar si los descuentos
// para los art<72>culos hay que cambiarlos.
if (FAlbaran.Detalles.RecordCount > 0) then
FController.DetallesController.ActualizarDetalles(FAlbaran.Detalles, FAlbaran.Proveedor);
end;
end;
procedure TfEditorAlbaranProveedor.pgPaginasChanging(Sender: TObject; var AllowChange: Boolean);
begin
inherited;
if (not Assigned(FAlbaran)) or (FAlbaran.ID_PROVEEDOR = ID_NULO) then
begin
ShowWarningMessage('Antes de introducir conceptos debe elegir un proveedor para este albar<61>n');
AllowChange := False;
end;
end;
procedure TfEditorAlbaranProveedor.PonerTitulos(const ATitulo: string);
var
FTitulo : String;
begin
FTitulo := ATitulo;
if (FTitulo = '') and Assigned(FAlbaran) then
begin
if FAlbaran.EsNuevo then
FTitulo := 'Nuevo albar<61>n de proveedor'
else
FTitulo := 'Albar<61>n de proveedor' + ' - ' + FAlbaran.Proveedor.Nombre
end;
inherited PonerTitulos(FTitulo);
Self.Caption := FTitulo + ' (' + dmUsuarios.EmpresaActual.NOMBRE + ')';
end;
procedure TfEditorAlbaranProveedor.SetController(const Value: IAlbaranesProveedorController);
begin
FController := Value;
if Assigned(FController) then
begin
ViewAlbaran.ViewProveedorAlbaran.Controller := Controller.ProveedorController;
frViewDetallesAlbaranProveedor1.Controller := Controller.DetallesController;
end;
end;
procedure TfEditorAlbaranProveedor.SetAlbaran(const Value: IBizAlbaranProveedor);
begin
FAlbaran := Value;
if Assigned(FAlbaran) then
begin
dsDataTable.DataTable := FAlbaran.DataTable;
frViewTotales1.DADataSource.DataTable := dsDataTable.DataTable;
frViewIncidenciasCli.DADataSource.DataTable := dsDataTable.DataTable;
if Assigned(FViewAlbaran) then
begin
FViewAlbaran.Albaran := FAlbaran;
ViewAlbaran.ViewProveedorAlbaran.Proveedor := FAlbaran.Proveedor;
ViewAlbaran.ViewProveedorAlbaran.OnProveedorChanged := OnProveedorChanged;
frViewDetallesAlbaranProveedor1.Detalles := FAlbaran.Detalles;
frViewDetallesAlbaranProveedor1.Albaran := FAlbaran; //Para poder sacar los descuento del articulos segun el proveedor seleccionado
end;
end;
end;
procedure TfEditorAlbaranProveedor.SetViewAlbaran(const Value: IViewAlbaranProveedor);
begin
FViewAlbaran := Value;
if Assigned(FViewAlbaran) and Assigned(Albaran) then
FViewAlbaran.Albaran := Albaran;
end;
end.