Varela_PuntosVenta/Source/Modulos/ReferenciaGenerica/Servidor/srvReferenciaGenerica_Impl.pas

179 lines
5.5 KiB
ObjectPascal

unit srvReferenciaGenerica_Impl;
{----------------------------------------------------------------------------}
{ This unit was automatically generated by the RemObjects SDK after reading }
{ the RODL file associated with this project . }
{ }
{ This is where you are supposed to code the implementation of your objects. }
{----------------------------------------------------------------------------}
interface
uses
{vcl:} Classes, SysUtils,
{RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions,
{Ancestor Implementation:} DARemoteService_Impl,
{Used RODLs:} DataAbstract3_Intf,
{Generated:} VARELA_Intf, uDAClasses, uDAScriptingProvider,
uDABusinessProcessor, uDADataTable, uDACDSDataTable, frxClass, DB,
frxDBSet, ADODB, uDAInterfaces, uROClient, uROEventRepository,
uDABINAdapter, uDADataStreamer;
type
{ TsrvReferenciaGenerica }
TsrvReferenciaGenerica = class(TDARemoteService, IsrvReferenciaGenerica)
bpReferenciaGenerica: TDABusinessProcessor;
frxDBCabecera: TfrxDBDataset;
dsReferenciasGenericas: TDADataSource;
tbl_ReferenciasGenericas: TDACDSDataTable;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
frxReport1: TfrxReport;
DABINAdapter: TDABINAdapter;
schReferenciaGenerica: TDASchema;
procedure DARemoteServiceCreate(Sender: TObject);
private
protected
function GetProducto(const Codigo: String; const Talla: String;
const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean;
function GenerateReport(const Centro: String; const Vendedor: String;
const Estado: String; const FiltroUsuario: String): Binary;
procedure PasarProductosAEspera(const Centro: String; const Vendedor: String);
end;
implementation
{$R *.dfm}
uses
{Generated:} VARELA_Invk, uDataModuleServer,
schReferenciaGenericaClient_Intf, uBizReferenciaGenericaServer, Dialogs;
procedure Create_srvReferenciaGenerica(out anInstance : IUnknown);
begin
anInstance := TsrvReferenciaGenerica.Create(NIL);
end;
{ srvReferenciaGenerica }
{ TsrvReferenciaGenerica }
function TsrvReferenciaGenerica.GenerateReport(const Centro,
Vendedor: String; const Estado: String; const FiltroUsuario: String): Binary;
var
ds: IDADataset;
AStream: TMemoryStream;
AWhere : String;
begin
AStream := TMemoryStream.Create;
Result := Binary.Create;
AWhere := '';
try
ds := schReferenciaGenerica.NewDataset(Connection, 'InformeRefGenerica');
if Length(Centro) > 0 then
begin
AWhere := 'CODCENTRO = ''' + Centro + '''';
end;
if Length(Vendedor) > 0 then
begin
if Length(AWhere) > 0 then
AWhere := AWhere + ' AND ';
AWhere := AWhere + 'CODVENDEDOR = ''' + Vendedor + '''';
end;
if Length(Estado) > 0 then
begin
if Length(AWhere) > 0 then
AWhere := AWhere + ' AND ';
AWhere := AWhere + '((ESTADO = ''' + Estado + ''') ';
if Estado = 'P' then
AWhere := AWhere + 'OR (ESTADO is null)';
AWhere := AWhere + ')';
end;
if Length(FiltroUsuario) > 0 then
begin
if Length(AWhere) > 0 then
AWhere := AWhere + ' AND ';
AWhere := AWhere + '(' + FiltroUsuario + ')';
end;
ds.Where.AddText(AWhere);
AStream.Clear;
ServiceAdapter.WriteDataset(AStream, ds, [woRows, woSchema], -1);
ServiceAdapter.ReadDataset(AStream, tbl_ReferenciasGenericas, TRUE, '', TRUE, TRUE);
frxReport1.LoadFromFile(DarRutaInformes + 'InformeReferenciaGenerica.fr3', True);
frxReport1.PrepareReport;
frxReport1.PreviewPages.SaveToStream(Result);
finally
AStream.Free;
end;
end;
function TsrvReferenciaGenerica.GetProducto(const Codigo: String; const Talla: String;
const Color: String; out CodigoBarras: String; out Descripcion: String): Boolean;
var
ds : IDADataset;
conn : IDAConnection;
begin
conn := dmServer.ConnectionManager.NewConnection(ConnectionName);
ds := schReferenciaGenerica.NewDataset(conn, nme_GetProducto);
ds.ParamByName('CODIGO').AsString := Codigo;
ds.ParamByName('TALLA').AsString := Talla;
ds.ParamByName('COLOR').AsString := Color;
try
ds.Open;
Result := not ds.IsEmpty;
if Result then
begin
Descripcion := ds.FieldValues[idx_GetProductoDESC_PRODUTO];
CodigoBarras := ds.FieldValues[idx_GetProductoCODIGO_BARRA];
end;
finally
ds.Close;
ds := nil;
conn := nil;
end;
end;
procedure TsrvReferenciaGenerica.PasarProductosAEspera(const Centro,
Vendedor: String);
var
cmd : IDASQLCommand;
conn : IDAConnection;
begin
conn := dmServer.ConnectionManager.NewConnection(ConnectionName);
conn.BeginTransaction;
cmd := schReferenciaGenerica.NewCommand(conn, 'CambiarEstado');
try
if Length(Centro) > 0 then
begin
cmd.Where.AddText('V.CODCENTRO = ''' + Centro + '''');
if Length(Vendedor) > 0 then
cmd.Where.AddText('AND V.CODVENDEDOR = ''' + Vendedor + '''');
end;
cmd.Execute;
conn.CommitTransaction;
except
conn.RollbackTransaction;
end;
end;
procedure TsrvReferenciaGenerica.DARemoteServiceCreate(Sender: TObject);
begin
bpReferenciaGenerica.BusinessRulesID := BIZ_SERVER_REFERENCIA_GENERICA;
end;
initialization
TROClassFactory.Create('srvReferenciaGenerica', Create_srvReferenciaGenerica, TsrvReferenciaGenerica_Invoker);
finalization
end.