git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES/trunk@2 c93665c3-c93d-084d-9b98-7d5f4a9c3376
303 lines
9.6 KiB
ObjectPascal
303 lines
9.6 KiB
ObjectPascal
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.
|