git-svn-id: https://192.168.0.254/svn/Proyectos.AbetoDesign_FactuGES/trunk@153 93f398dd-4eb6-7a46-baf6-13f46f578da2
184 lines
5.5 KiB
ObjectPascal
184 lines
5.5 KiB
ObjectPascal
unit uDataModulePedidosProveedor;
|
|
|
|
interface
|
|
|
|
uses
|
|
DB, Classes, SysUtils, uDADesigntimeCall,
|
|
uRORemoteService, uROClient, uROBinMessage, uDAScriptingProvider,
|
|
uDACDSDataTable, uROWinInetHttpChannel, uDADataTable, uDABINAdapter,
|
|
|
|
uDAClientDataModule, uROTypes, uDataModuleBase,
|
|
uIDataModulePedidosProveedor, uIDataModulePedidosProveedorReport,
|
|
uBizPedidosProveedor, uBizDetallesPedidoProveedor, uDARemoteDataAdapter,
|
|
uDADataStreamer, uDABin2DataStreamer, uDAInterfaces, uDAMemDataTable;
|
|
|
|
type
|
|
TDataModulePedidosProveedor = class(TDataModuleBase, IDataModulePedidosProveedor,
|
|
IDataModulePedidosProveedorReport)
|
|
RORemoteService: TRORemoteService;
|
|
Bin2DataStreamer: TDABin2DataStreamer;
|
|
rda_PedidosProveedor: TDARemoteDataAdapter;
|
|
tbl_PedidosProveedor: TDAMemDataTable;
|
|
ds_PedidosProveedor: TDADataSource;
|
|
tbl_PedidosProveedor_Articulos_Pendientes: TDAMemDataTable;
|
|
ds_PedidosProveedor_Articulos_Pendientes: TDADataSource;
|
|
tbl_PedidosProveedor_Detalles: TDAMemDataTable;
|
|
ds_PedidosProveedor_Detalles: TDADataSource;
|
|
procedure DAClientDataModuleCreate(Sender: TObject);
|
|
|
|
private
|
|
function _GetDetalles : IBizDetallesPedidoProveedor;
|
|
|
|
protected
|
|
procedure AsignarClaseNegocio(var APedido: TDAMemDataTable); virtual;
|
|
|
|
public
|
|
function GetItems : IBizPedidoProveedor; virtual;
|
|
function GetItem(const ID : Integer) : IBizPedidoProveedor;
|
|
function NewItem : IBizPedidoProveedor;
|
|
function GetArticulosPendientes(const IDPedido: Integer): IBizDetallesPedidoProveedorPend;
|
|
|
|
// Report
|
|
function GetReport(const AID: String): Binary;
|
|
function GetRptPDFPedido(const AID: Integer): Binary;
|
|
end;
|
|
|
|
implementation
|
|
|
|
{$R *.DFM}
|
|
|
|
uses
|
|
cxControls, FactuGES_Intf, uDataModuleConexion,
|
|
uDataTableUtils, schPedidosProveedorClient_Intf, uBizContactos;
|
|
|
|
{ TdmPedidosProveedor }
|
|
|
|
procedure TDataModulePedidosProveedor.AsignarClaseNegocio(var APedido: TDAMemDataTable);
|
|
begin
|
|
APedido.BusinessRulesID := BIZ_CLIENT_PEDIDO_PROVEEDOR;
|
|
end;
|
|
|
|
procedure TDataModulePedidosProveedor.DAClientDataModuleCreate(Sender: TObject);
|
|
begin
|
|
RORemoteService.Channel := dmConexion.Channel;
|
|
RORemoteService.Message := dmConexion.Message;
|
|
end;
|
|
|
|
function TDataModulePedidosProveedor.GetReport(const AID: String): Binary;
|
|
begin
|
|
Result := (RORemoteService as IsrvPedidosProveedor).GenerateReport(AID)
|
|
end;
|
|
|
|
function TDataModulePedidosProveedor.GetRptPDFPedido(const AID: Integer): Binary;
|
|
var
|
|
AParam : TIntegerArray;
|
|
begin
|
|
AParam := TIntegerArray.Create;
|
|
try
|
|
AParam.Add(AID);
|
|
Result := (RORemoteService as IsrvPedidosProveedor).GenerarInformeEnPDF(AParam)
|
|
finally
|
|
FreeANDNIL(AParam)
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePedidosProveedor.NewItem: IBizPedidoProveedor;
|
|
begin
|
|
Result := GetItem(ID_NULO)
|
|
end;
|
|
|
|
function TDataModulePedidosProveedor._GetDetalles: IBizDetallesPedidoProveedor;
|
|
var
|
|
ADetalles : TDAMemDataTable;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
ADetalles := CloneDataTable(tbl_PedidosProveedor_Detalles);
|
|
with ADetalles do
|
|
begin
|
|
BusinessRulesID := BIZ_CLIENT_DETALLES_PEDIDO_PROVEEDOR;
|
|
DetailOptions := DetailOptions - [dtDisableLogOfCascadeDeletes, dtDisableLogOfCascadeUpdates];
|
|
end;
|
|
Result := (ADetalles as IBizDetallesPedidoProveedor);
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePedidosProveedor.GetArticulosPendientes(const IDPedido: Integer): IBizDetallesPedidoProveedorPend;
|
|
var
|
|
AArticulos : TDAMemDataTable;
|
|
Condicion: TDAWhereExpression;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
AArticulos := CloneDataTable(tbl_PedidosProveedor_Articulos_Pendientes);
|
|
AArticulos.BusinessRulesID := BIZ_CLIENT_DETALLES_PEDIDO_PROVEEDOR_PEND;
|
|
|
|
with AArticulos.DynamicWhere do
|
|
begin
|
|
// (ID = :ID)
|
|
Condicion := NewBinaryExpression(NewField('', fld_PedidosProveedor_DetallesID_PEDIDO), NewConstant(IDPedido, datInteger), dboEqual);
|
|
|
|
if IsEmpty then
|
|
Expression := Condicion
|
|
else
|
|
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
|
end;
|
|
|
|
// AArticulos.ParamByName(fld_PedidosProveedor_DetallesID_PEDIDO).AsInteger := IDPedido;
|
|
Result := (AArticulos as IBizDetallesPedidoProveedorPend);
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePedidosProveedor.GetItem(const ID: Integer): IBizPedidoProveedor;
|
|
var
|
|
Condicion: TDAWhereExpression;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
Result := Self.GetItems;
|
|
|
|
with Result.DataTable.DynamicWhere do
|
|
begin
|
|
// (ID = :ID)
|
|
Condicion := NewBinaryExpression(NewField('', fld_PedidosProveedorID), NewConstant(ID, datInteger), dboEqual);
|
|
|
|
if IsEmpty then
|
|
Expression := Condicion
|
|
else
|
|
Expression := NewBinaryExpression(Expression, Condicion, dboAnd);
|
|
end;
|
|
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
function TDataModulePedidosProveedor.GetItems: IBizPedidoProveedor;
|
|
var
|
|
APedido : TDAMemDataTable;
|
|
begin
|
|
ShowHourglassCursor;
|
|
try
|
|
APedido := CloneDataTable(tbl_PedidosProveedor);
|
|
AsignarClaseNegocio(APedido);
|
|
|
|
// EL CAMPO REFERENCIA TIENE QUE SER AUTOREFRESH!!!!!
|
|
APedido.FieldByName(fld_PedidosProveedorREFERENCIA).ServerAutoRefresh := TRUE;
|
|
|
|
with TBizPedidoProveedor(APedido.BusinessEventsObj) do
|
|
begin
|
|
Detalles := _GetDetalles;
|
|
end;
|
|
|
|
Result := (APedido as IBizPedidoProveedor);
|
|
finally
|
|
HideHourglassCursor;
|
|
end;
|
|
end;
|
|
|
|
end.
|