Tecsitel_FactuGES2/Source/Modulos/Pedidos a proveedor/Controller/uPedidosProveedorController.pas

788 lines
24 KiB
ObjectPascal
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

unit uPedidosProveedorController;
interface
uses
SysUtils, uDADataTable,
uControllerBase, uIDataModulePedidosProveedor, uProveedoresController,
uDetallesPedidoProveedorController, uBizPedidosProveedor;
type
IPedidosProveedorController = interface(IObservador)
['{404FFA2F-D683-447D-91E6-C9A7322934D8}']
function GetProveedorController: IProveedoresController;
procedure SetProveedorController(const Value: IProveedoresController);
property ProveedorController: IProveedoresController read GetProveedorController write SetProveedorController;
function GetDetallesController: IDetallesPedidoProveedorController;
procedure SetDetallesController(const Value: IDetallesPedidoProveedorController);
property DetallesController: IDetallesPedidoProveedorController read GetDetallesController write SetDetallesController;
function Buscar(const ID: Integer): IBizPedidoProveedor;
function BuscarTodos: IBizPedidoProveedor;
function BuscarPendientesRecepcion: IBizPedidoProveedor;
procedure Ver(APedido : IBizPedidoProveedor);
procedure VerTodos(APedidos: IBizPedidoProveedor);
procedure VerDireccionEntrega(APedido : IBizPedidoProveedor);
function Nuevo : IBizPedidoProveedor;
procedure Anadir(APedido : IBizPedidoProveedor);
function Eliminar(const ID : Integer): Boolean; overload;
function Eliminar(APedido : IBizPedidoProveedor; AllItems: Boolean = false): Boolean; overload;
function Guardar(APedido : IBizPedidoProveedor): Boolean;
procedure DescartarCambios(APedido : IBizPedidoProveedor);
function Existe(const ID: Integer) : Boolean;
function Duplicar(APedido: IBizPedidoProveedor): IBizPedidoProveedor;
procedure Preview(APedido : IBizPedidoProveedor; AllItems: Boolean = false);
procedure Print(APedido : IBizPedidoProveedor; AllItems: Boolean = false);
procedure RecalcularImportes(APedido: IBizPedidoProveedor);
function EsModificable(APedido : IBizPedidoProveedor): Boolean;
function EsEliminable(APedido : IBizPedidoProveedor): Boolean;
function CambiarSituacion(APedido: IBizPedidoProveedor; ASituacion : String; AFechaPagado: TDateTime = 0; DoPost : Boolean = True): Boolean; overload;
function CambiarSituacion(APedido: IBizPedidoProveedor): Boolean; overload;
function ExtraerSeleccionados(APedido: IBizPedidoProveedor) : IBizPedidoProveedor;
function ElegirPedidos(APedido: IBizPedidoProveedor; AMensaje: String; AMultiSelect: Boolean): IBizPedidoProveedor;
procedure RecuperarProveedor(APedido: IBizPedidoProveedor);
end;
TPedidosProveedorController = class(TObservador, IPedidosProveedorController)
protected
FDataModule : IDataModulePedidosProveedor;
FProveedorController : IProveedoresController;
FDetallesController : IDetallesPedidoProveedorController;
function GetProveedorController: IProveedoresController;
procedure SetProveedorController(const Value: IProveedoresController);
procedure RecuperarProveedor(APedido : IBizPedidoProveedor);
function GetDetallesController: IDetallesPedidoProveedorController;
procedure SetDetallesController(const Value: IDetallesPedidoProveedorController);
//Estos son los tres m<>todos a sobre escribir si se desea heredar toda la logica de
//este controller
procedure AsignarDataModule; virtual;
procedure RecuperarObjetos(APedido: IBizPedidoProveedor); virtual;
function CreateEditor(const AName : String; const IID: TGUID; out Intf): Boolean;
procedure FiltrarEmpresa(APedido: IBizPedidoProveedor);
function _Vacio : IBizPedidoProveedor;
function ValidarPedido(APedido: IBizPedidoProveedor): Boolean;
function ValidarSituacion(ASituacion: String; AFechaPedido: TDateTime;
var AFechaRecepcion: TDateTime): Boolean;
public
property ProveedorController: IProveedoresController read GetProveedorController write SetProveedorController;
property DetallesController: IDetallesPedidoProveedorController read GetDetallesController write SetDetallesController;
procedure RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable); override;
constructor Create; virtual;
destructor Destroy; override;
function Eliminar(const ID : Integer): Boolean; overload;
function Eliminar(APedido : IBizPedidoProveedor; AllItems: Boolean = false): Boolean; overload;
function Guardar(APedido : IBizPedidoProveedor): Boolean;
procedure DescartarCambios(APedido : IBizPedidoProveedor); virtual;
function Existe(const ID: Integer) : Boolean; virtual;
procedure Anadir(APedido : IBizPedidoProveedor);
function Buscar(const ID: Integer): IBizPedidoProveedor;
function BuscarTodos: IBizPedidoProveedor;
function BuscarPendientesRecepcion: IBizPedidoProveedor;
function Nuevo : IBizPedidoProveedor;
procedure Ver(APedido : IBizPedidoProveedor);
procedure VerTodos(APedidos: IBizPedidoProveedor);
procedure VerDireccionEntrega(APedido : IBizPedidoProveedor);
function Duplicar(APedido: IBizPedidoProveedor): IBizPedidoProveedor;
procedure Preview(APedido : IBizPedidoProveedor; AllItems: Boolean = false);
procedure Print(APedido : IBizPedidoProveedor; AllItems: Boolean = false);
procedure RecalcularImportes(APedido: IBizPedidoProveedor);
function EsModificable(APedido : IBizPedidoProveedor): Boolean;
function EsEliminable(APedido : IBizPedidoProveedor): Boolean;
function CambiarSituacion(APedido: IBizPedidoProveedor; ASituacion : String; AFechaRecepcion: TDateTime = 0; DoPost : Boolean = True): Boolean; overload;
function CambiarSituacion(APedido: IBizPedidoProveedor): Boolean; overload;
function ExtraerSeleccionados(APedido: IBizPedidoProveedor) : IBizPedidoProveedor;
function ElegirPedidos(APedido: IBizPedidoProveedor; AMensaje: String; AMultiSelect: Boolean): IBizPedidoProveedor;
end;
implementation
uses
uROTypes, Controls, cxControls, DB, uEditorRegistryUtils, uEditorPreview, DateUtils,
uIEditorPedidosProveedor, uDataModulePedidosProveedor, uFactuGES_App,
uBizDetallesPedidoProveedor, uBizContactos, uDataTableUtils, uDataModuleUsuarios,
schPedidosProveedorClient_Intf, uDAInterfaces, uPedidosProveedorReportController,
uDateUtils, uIEditorPedidoProveedor, uIEditorElegirPedidosProveedor,
Dialogs, uIEditorDireccionEntregaPedidoProveedor, Classes,
uIEditorSituacionPedidoProveedor, Variants;
{ TPedidosProveedorController }
procedure TPedidosProveedorController.Anadir(APedido: IBizPedidoProveedor);
begin
APedido.Insert;
end;
procedure TPedidosProveedorController.AsignarDataModule;
begin
FDataModule := TDataModulePedidosProveedor.Create(Nil);
end;
function TPedidosProveedorController.Buscar(const ID: Integer): IBizPedidoProveedor;
begin
Result := FDataModule.GetItem(ID);
FiltrarEmpresa(Result);
end;
function TPedidosProveedorController.BuscarPendientesRecepcion: IBizPedidoProveedor;
var
Condicion: TDAWhereExpression;
begin
ShowHourglassCursor;
try
Result := BuscarTodos;
// Filtrar los pedidos pendientes de recepcion
with Result.DataTable.DynamicWhere do
begin
// (SITUACION <> RECIBIDO)
Condicion := NewBinaryExpression(NewField('', fld_PedidosProveedorSITUACION), NewConstant(SITUACION_PEDIDO_RECIBIDO, datString), dboNotEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
finally
HideHourglassCursor;
end;
end;
function TPedidosProveedorController.BuscarTodos: IBizPedidoProveedor;
begin
Result := FDataModule.GetItems;
FiltrarEmpresa(Result);
end;
constructor TPedidosProveedorController.Create;
begin
AsignarDataModule;
FProveedorController := TProveedoresController.Create;
FDetallesController := TDetallesPedidoProveedorController.Create;
FDetallesController.addObservador(Self);
end;
function TPedidosProveedorController.CreateEditor(const AName: String;
const IID: TGUID; out Intf): Boolean;
begin
Result := Supports(EditorRegistry.CreateEditor(AName), IID, Intf);
end;
procedure TPedidosProveedorController.DescartarCambios(APedido: IBizPedidoProveedor);
begin
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignado');
ShowHourglassCursor;
try
if (APedido.State in dsEditModes) then
APedido.Cancel;
APedido.DataTable.CancelUpdates;
finally
HideHourglassCursor;
end;
end;
function TPedidosProveedorController.CambiarSituacion(APedido: IBizPedidoProveedor; ASituacion: String; AFechaRecepcion: TDateTime;
DoPost: Boolean): Boolean;
begin
Result := False;
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignado (CambiarSituacion)');
if not APedido.DataTable.Active then
APedido.DataTable.Active := True;
// Validar la situaci<63>n del pedido
if ValidarSituacion(ASituacion, APedido.FECHA_PEDIDO, AFechaRecepcion) then
begin
ShowHourglassCursor;
APedido.DataTable.DisableControls;
try
APedido.Edit;
APedido.SITUACION := ASituacion;
if AFechaRecepcion <> APedido.FECHA_ENTREGA then
APedido.FECHA_ENTREGA := AFechaRecepcion;
APedido.Post;
if DoPost then
Guardar(APedido);
Result := True;
finally
APedido.DataTable.EnableControls;
HideHourglassCursor;
end;
end;
end;
function TPedidosProveedorController.CambiarSituacion(APedido: IBizPedidoProveedor): Boolean;
var
AEditor : IEditorSituacionPedidoProveedor;
begin
Result := False;
AEditor := NIL;
ShowHourglassCursor;
try
RecuperarProveedor(APedido);
CreateEditor('EditorSituacionPedidoProveedor', IEditorSituacionPedidoProveedor, AEditor);
with AEditor do
begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
PedidoProveedor := APedido;
end;
finally
HideHourglassCursor;
end;
if Assigned(AEditor) then
try
AEditor.ShowModal;
AEditor.Release;
Result := True;
finally
AEditor := NIL;
end;
end;
destructor TPedidosProveedorController.Destroy;
begin
FDataModule := Nil;
FProveedorController := Nil;
FDetallesController := Nil;
inherited;
end;
function TPedidosProveedorController.Duplicar(
APedido: IBizPedidoProveedor): IBizPedidoProveedor;
begin
Result := Self._Vacio;
ShowHourglassCursor;
try
DuplicarRegistros(APedido.DataTable, Result.DataTable, mdrActual);
DuplicarRegistros(APedido.Detalles.DataTable, Result.Detalles.DataTable, mdrTodos);
// Hay que dejar algunos campos como si fuera un presupuesto nuevo
Result.Edit;
with Result do
begin
REFERENCIA := '';
ID_EMPRESA := AppFactuGES.EmpresaActiva.ID;
USUARIO := AppFactuGES.UsuarioActivo.UserName;
FECHA_PEDIDO := DateOf(Now);
SITUACION := SITUACION_PEDIDO_PENDIENTE;
FECHA_ENVIO := 0;
FECHA_CONFIRMACION := 0;
FECHA_ENTREGA := 0;
INCIDENCIAS_ACTIVAS := 0;
// INCIDENCIAS := Nil;
REF_PED_CLIENTE := '';
ID_PEDIDO_CLIENTE := 0;
end;
Result.Post;
finally
HideHourglassCursor;
end;
end;
function TPedidosProveedorController.ValidarPedido(
APedido: IBizPedidoProveedor): Boolean;
begin
Result := False;
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignado');
if (APedido.DataTable.State in dsEditModes) then
APedido.DataTable.Post;
//Tambien hacemos post de sus tablas hija
if (APedido.Detalles.DataTable.State in dsEditModes) then
APedido.Detalles.DataTable.Post;
if (APedido.ID_PROVEEDOR < 0) or
(not Assigned(APedido.Proveedor)) or
(APedido.Proveedor.IsEmpty) then
raise Exception.Create('Debe indicar el proveedor de esta pedido');
if (EsFechaVacia(APedido.FECHA_PEDIDO)) then
raise Exception.Create('Debe indicar la fecha de este pedido');
if (Length(APedido.CALLE) = 0) and (APedido.ID_ALMACEN = 0) then
raise Exception.Create('Debe indicar una direcci<63>n de entrega o almac<61>n para este pedido');
if (APedido.Detalles.DataTable.RecordCount = 0) then
raise Exception.Create('Debe indicar al menos un concepto en el contenido del pedido');
{ Asegurarse de valores en campos "autom<6F>ticos" tanto
en MODIFICACI<43>N como en INSERCI<43>N. }
APedido.Edit;
try
APedido.USUARIO := AppFactuGES.UsuarioActivo.UserName;
if Assigned(APedido.Proveedor)
and (APedido.ID_PROVEEDOR <> APedido.Proveedor.ID) then
APedido.ID_PROVEEDOR := APedido.Proveedor.ID;
Result := True;
finally
APedido.Post;
end;
end;
function TPedidosProveedorController.ValidarSituacion(ASituacion: String;
AFechaPedido: TDateTime; var AFechaRecepcion: TDateTime): Boolean;
begin
Result := False;
if ASituacion = SITUACION_PEDIDO_PENDIENTE then
AFechaRecepcion := 0
else
if (ASituacion = SITUACION_PEDIDO_PARCIAL)
or (ASituacion = SITUACION_PEDIDO_RECIBIDO) then
begin
if (EsFechaVacia(AFechaRecepcion)) then
raise Exception.Create('Hay que indicar una fecha de recepci<63>n')
else if (AFechaRecepcion < AFechaPedido) then
raise Exception.Create('La fecha de recepci<63>n debe ser posterior a la fecha del pedido');
end;
Result := True;
end;
procedure TPedidosProveedorController.Ver(APedido: IBizPedidoProveedor);
var
AEditor : IEditorPedidoProveedor;
begin
AEditor := NIL;
ShowHourglassCursor;
try
RecuperarObjetos(APedido);
CreateEditor('EditorPedidoProveedor', IEditorPedidoProveedor, AEditor);
if Assigned(AEditor) then
with AEditor do
begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
Pedido := APedido;
//MODO CONSULTAR
if not EsModificable(APedido) then
begin
SetDataTableReadOnly(APedido.DataTable, True);
ReadOnly := True;
end;
ShowModal;
//MODO CONSULTAR (Se deja la tabla como estaba)
if ReadOnly then
SetDataTableReadOnly(APedido.DataTable, False);
AEditor.Release;
end;
finally
AEditor := NIL;
HideHourglassCursor;
end;
end;
procedure TPedidosProveedorController.VerTodos(APedidos: IBizPedidoProveedor);
var
AEditor : IEditorPedidosProveedor;
begin
AEditor := NIL;
ShowHourglassCursor;
try
CreateEditor('EditorPedidosProveedor', IEditorPedidosProveedor, AEditor);
if Assigned(AEditor) then
with AEditor do
begin
Controller := Self; //OJO ORDEN MUY IMPORTANTE
Pedidos := APedidos;
MultiSelect := True;
ShowEmbedded;
end;
finally
AEditor := NIL;
HideHourglassCursor;
end;
end;
procedure TPedidosProveedorController.VerDireccionEntrega(
APedido: IBizPedidoProveedor);
var
AEditor : IEditorDireccionEntregaPedidoProveedor;
begin
AEditor := NIL;
ShowHourglassCursor;
try
//RecuperarObjetos(APedido); <- No descomentar. No hace falta
CreateEditor('EditorDireccionEntregaPedidoProveedor', IEditorDireccionEntregaPedidoProveedor, AEditor);
if Assigned(AEditor) then
with (AEditor as IEditorDireccionEntregaPedidoProveedor) do
begin
Pedido := APedido;
ShowModal;
Release;
end;
finally
AEditor := NIL;
HideHourglassCursor;
end;
end;
function TPedidosProveedorController._Vacio: IBizPedidoProveedor;
begin
Result := Buscar(ID_NULO);
end;
function TPedidosProveedorController.Eliminar(const ID: Integer): Boolean;
var
APedido : IBizPedidoProveedor;
begin
APedido := Buscar(ID);
if not Assigned(APedido) then
raise Exception.Create(Format('No se ha encontrado el pedido con ID = %d', [ID]));
Result := Eliminar(APedido);
APedido := NIL;
end;
function TPedidosProveedorController.ElegirPedidos(APedido: IBizPedidoProveedor; AMensaje: String; AMultiSelect: Boolean): IBizPedidoProveedor;
var
AEditor : IEditorElegirPedidosProveedor;
begin
Result := NIL;
CreateEditor('EditorElegirPedidosProveedor', IEditorElegirPedidosProveedor, AEditor);
try
with AEditor do
begin
Controller := Self;
Pedidos := APedido;
MultiSelect := AMultiSelect;
Mensaje := AMensaje;
if IsPositiveResult(ShowModal) then
Result := PedidosProveedorSeleccionados;
Release;
end;
finally
AEditor := NIL;
end;
end;
function TPedidosProveedorController.Eliminar(APedido: IBizPedidoProveedor; AllItems: Boolean = false): Boolean;
//En el caso de eliminar almenos un elemento del conjunto se devuelve true
var
bEliminado: Boolean;
begin
bEliminado := False;
if not Assigned(APedido) then
raise Exception.Create ('APedido no asignado');
ShowHourglassCursor;
try
if not APedido.DataTable.Active then
APedido.DataTable.Active := True;
if (APedido.State in dsEditModes) then
APedido.Cancel;
//Siempre eliminaremos el seleccionado
if EsEliminable(APedido) then
begin
APedido.Delete;
bEliminado := True;
end;
//En el caso de querer eliminar todos los items del objeto AAlbaran
if AllItems then
begin
with APedido.DataTable do
begin
First;
while not EOF do
begin
if EsEliminable(APedido) then
begin
APedido.Delete;
bEliminado := True
end
else Next;
end;
end;
end;
if bEliminado then
begin
APedido.DataTable.ApplyUpdates;
Result := True;
end
else
Result := False;
finally
HideHourglassCursor;
end;
end;
function TPedidosProveedorController.EsEliminable(APedido: IBizPedidoProveedor): Boolean;
begin
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignado: EsEliminable');
Result := (APedido.SITUACION = SITUACION_PEDIDO_PENDIENTE);
end;
function TPedidosProveedorController.EsModificable(APedido: IBizPedidoProveedor): Boolean;
begin
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignado: EsModificable');
Result := (APedido.SITUACION <> SITUACION_PEDIDO_RECIBIDO);
end;
procedure TPedidosProveedorController.RecalcularImportes(
APedido: IBizPedidoProveedor);
var
bEnEdicion : Boolean;
begin
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignado (RecalcularImportes)');
if APedido.DataTable.Active then
APedido.DataTable.Active := True;
bEnEdicion := (APedido.DataTable.State in dsEditModes);
if not bEnEdicion then
APedido.Edit;
ShowHourglassCursor;
APedido.Edit;
try
APedido.IMPORTE_NETO := FDetallesController.DarTotalImporteTotal(APedido.Detalles);
APedido.IMPORTE_PORTE := FDetallesController.DarTotalPorteTotal(APedido.Detalles);
if not bEnEdicion then
APedido.Post;
finally
HideHourglassCursor;
end;
end;
procedure TPedidosProveedorController.RecibirAviso(ASujeto: ISujeto; ADataTable: IDAStronglyTypedDataTable);
var
APedido : IBizPedidoProveedor;
ADetalles : IBizDetallesPedidoProveedor;
begin
inherited;
if Supports(ADataTable, IBizDetallesPedidoProveedor, ADetalles) and
Supports(ADetalles.DataTable.MasterSource.DataTable, IBizPedidoProveedor, APedido) then
begin
RecalcularImportes(APedido);
end;
end;
procedure TPedidosProveedorController.RecuperarObjetos(APedido: IBizPedidoProveedor);
begin
RecuperarProveedor(APedido);
end;
procedure TPedidosProveedorController.RecuperarProveedor(APedido: IBizPedidoProveedor);
begin
APedido._Proveedor := (FProveedorController.Buscar(APedido.ID_PROVEEDOR) as IBizProveedor);
end;
function TPedidosProveedorController.Existe(const ID: Integer): Boolean;
var
APedido : IBizPedidoProveedor;
begin
try
APedido := Buscar(ID);
Result := Assigned(APedido) and (APedido.ID = ID);
finally
APedido := NIL;
end;
end;
function TPedidosProveedorController.ExtraerSeleccionados(APedido: IBizPedidoProveedor): IBizPedidoProveedor;
var
ASeleccionados : IBizPedidoProveedor;
begin
ASeleccionados := (Self.Buscar(ID_NULO) as IBizPedidoProveedor);
CopyDataTableDA3(APedido.DataTable, ASeleccionados.DataTable, True);
Result := ASeleccionados;
end;
procedure TPedidosProveedorController.FiltrarEmpresa(APedido: IBizPedidoProveedor);
var
Condicion: TDAWhereExpression;
begin
if APedido.DataTable.Active then
APedido.DataTable.Active := False;
// Filtrar los pedidos actuales por empresa
with APedido.DataTable.DynamicWhere do
begin
// (ID_EMPRESA >= ID)
Condicion := NewBinaryExpression(NewField('', fld_PedidosProveedorID_EMPRESA), NewConstant(AppFactuGES.EmpresaActiva.ID, datInteger), dboEqual);
if IsEmpty then
Expression := Condicion
else
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
end;
end;
procedure TPedidosProveedorController.SetProveedorController(const Value: IProveedoresController);
begin
FProveedorController := Value;
end;
procedure TPedidosProveedorController.SetDetallesController(const Value: IDetallesPedidoProveedorController);
begin
FDetallesController := Value;
end;
function TPedidosProveedorController.Guardar(APedido: IBizPedidoProveedor): Boolean;
var
IDNuevo : Integer;
begin
Result := False;
if not Assigned(APedido) then
raise Exception.Create ('Pedido no asignada');
if not Assigned(FDetallesController) then
raise Exception.Create ('Controller detalles no asignado');
if ValidarPedido(APedido) then
begin
ShowHourglassCursor;
// Asegurarnos de que todos los importes est<73>n bien.
RecalcularImportes(APedido);
try
APedido.DataTable.ApplyUpdates;
Result := True;
finally
HideHourglassCursor;
end;
end;
end;
function TPedidosProveedorController.Nuevo: IBizPedidoProveedor;
var
APedido : IBizPedidoProveedor;
begin
APedido := FDataModule.NewItem;
FiltrarEmpresa(APedido);
APedido.DataTable.Active := True;
APedido.Insert;
Result := APedido;
end;
procedure TPedidosProveedorController.Preview(APedido: IBizPedidoProveedor; AllItems: Boolean = false);
var
AReportController : IPedidosProveedorReportController;
ID_Pedidos: TStringList;
begin
AReportController := TPedidosProveedorReportController.Create;
try
ID_Pedidos := TStringList.Create;
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with APedido.DataTable do
begin
First;
while not EOF do
begin
ID_Pedidos.Add(IntToStr(APedido.ID));
Next;
end;
end;
end
//Solo previsualizamos el item seleccionado
else
ID_Pedidos.Add(IntToStr(APedido.ID));
AReportController.Preview(ID_Pedidos.CommaText);
finally
AReportController := NIL;
ID_Pedidos.Free;
end;
end;
procedure TPedidosProveedorController.Print(APedido: IBizPedidoProveedor; AllItems: Boolean = false);
var
AReportController : IPedidosProveedorReportController;
ID_Pedidos: TStringList;
begin
AReportController := TPedidosProveedorReportController.Create;
try
ID_Pedidos := TStringList.Create;
//Si deseamos previsualizar todos los items del objeto albaran
if AllItems then
begin
with APedido.DataTable do
begin
First;
while not EOF do
begin
ID_Pedidos.Add(IntToStr(APedido.ID));
Next;
end;
end;
end
//Solo previsualizamos el item seleccionado
else
ID_Pedidos.Add(IntToStr(APedido.ID));
AReportController.Print(ID_Pedidos.CommaText);
finally
AReportController := NIL;
ID_Pedidos.Free;
end;
end;
function TPedidosProveedorController.GetProveedorController: IProveedoresController;
begin
Result := FProveedorController;
end;
function TPedidosProveedorController.GetDetallesController: IDetallesPedidoProveedorController;
begin
Result := FDetallesController;
end;
end.