2011-11-14 17:40:41 +00:00
|
|
|
|
unit srvReferencias_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. }
|
|
|
|
|
|
{----------------------------------------------------------------------------}
|
|
|
|
|
|
|
|
|
|
|
|
{$I Remobjects.inc}
|
|
|
|
|
|
|
|
|
|
|
|
interface
|
|
|
|
|
|
|
|
|
|
|
|
uses
|
|
|
|
|
|
{vcl:} Classes, SysUtils,
|
|
|
|
|
|
{RemObjects:} uROXMLIntf, uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions,
|
|
|
|
|
|
{Ancestor Implementation:} DataAbstractService_Impl,
|
|
|
|
|
|
{Used RODLs:} DataAbstract4_Intf,
|
|
|
|
|
|
{Generated:} FactuGES_Intf, uDADataStreamer, uDABin2DataStreamer, uDAClasses, uDAInterfaces;
|
|
|
|
|
|
|
|
|
|
|
|
type
|
|
|
|
|
|
{ TsrvReferencias }
|
|
|
|
|
|
TsrvReferencias = class(TDataAbstractService, IsrvReferencias)
|
|
|
|
|
|
Bin2DataStreamer: TDABin2DataStreamer;
|
|
|
|
|
|
schReferencias: TDASchema;
|
|
|
|
|
|
procedure DataAbstractServiceBeforeAcquireConnection(aSender: TObject;
|
|
|
|
|
|
var aConnectionName: string);
|
|
|
|
|
|
procedure DataAbstractServiceCreate(Sender: TObject);
|
|
|
|
|
|
private
|
|
|
|
|
|
public
|
|
|
|
|
|
{ IsrvReferencias methods }
|
|
|
|
|
|
function DarNuevaReferencia(const NombreReferencia: String;
|
|
|
|
|
|
const EmpresaID: Integer = -1; const TiendaID: Integer = -1): String;
|
|
|
|
|
|
function IncrementarValorReferencia(const NombreReferencia: String;
|
|
|
|
|
|
const Valor: String; const EmpresaID: Integer = -1; const TiendaID: Integer = -1): Boolean;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
implementation
|
|
|
|
|
|
|
|
|
|
|
|
{$R *.dfm}
|
|
|
|
|
|
uses
|
|
|
|
|
|
{Generated:} FactuGES_Invk, Variants, dialogs,
|
|
|
|
|
|
uDataModuleServer, uROClasses, uReferenciasUtils;
|
|
|
|
|
|
|
|
|
|
|
|
procedure Create_srvReferencias(out anInstance : IUnknown);
|
|
|
|
|
|
begin
|
|
|
|
|
|
anInstance := TsrvReferencias.Create(nil);
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
{ srvReferencias }
|
|
|
|
|
|
function TsrvReferencias.DarNuevaReferencia(const NombreReferencia: String;
|
|
|
|
|
|
const EmpresaID: Integer = -1; const TiendaID: Integer = -1): String;
|
|
|
|
|
|
var
|
|
|
|
|
|
ASchema : TDASchema;
|
|
|
|
|
|
AConn : IDAConnection;
|
|
|
|
|
|
dsData: IDADataset;
|
|
|
|
|
|
|
|
|
|
|
|
AWhere : TDAWhereExpression;
|
|
|
|
|
|
AWhereExpr1: TDAWhereExpression;
|
|
|
|
|
|
AWhereExpr2: TDAWhereExpression;
|
|
|
|
|
|
AWhereExpr3: TDAWhereExpression;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := '';
|
|
|
|
|
|
|
|
|
|
|
|
{ Construir la expresi<EFBFBD>n del Where a partir de los par<EFBFBD>metros
|
|
|
|
|
|
que se reciban.
|
|
|
|
|
|
}
|
|
|
|
|
|
with TDAWhereBuilder.Create do
|
|
|
|
|
|
try
|
|
|
|
|
|
AWhereExpr1 := NewBinaryExpression(NewField('', 'CODIGO'),
|
|
|
|
|
|
NewConstant(NombreReferencia, datString),
|
|
|
|
|
|
dboEqual);
|
|
|
|
|
|
|
|
|
|
|
|
AWhere := AWhereExpr1;
|
|
|
|
|
|
|
|
|
|
|
|
//Si se asigna IDEmpresa se a<>ade condicion
|
|
|
|
|
|
if (EmpresaID <> -1) then
|
|
|
|
|
|
begin
|
|
|
|
|
|
AWhereExpr2 := NewBinaryExpression(NewField('', 'ID_EMPRESA'),
|
|
|
|
|
|
NewConstant(EmpresaID, datInteger),
|
|
|
|
|
|
dboEqual);
|
|
|
|
|
|
|
|
|
|
|
|
AWhere := NewBinaryExpression(AWhere, AWhereExpr2, dboAnd);
|
2022-10-21 09:41:20 +00:00
|
|
|
|
end
|
|
|
|
|
|
else
|
|
|
|
|
|
begin
|
|
|
|
|
|
AWhereExpr2 := NewBinaryExpression(NewField('', 'ID_EMPRESA'),
|
|
|
|
|
|
NewNull(),
|
|
|
|
|
|
dboEqual);
|
|
|
|
|
|
AWhere := NewBinaryExpression(AWhere, AWhereExpr2, dboAnd);
|
2011-11-14 17:40:41 +00:00
|
|
|
|
end;
|
|
|
|
|
|
|
2022-10-21 09:41:20 +00:00
|
|
|
|
|
2011-11-14 17:40:41 +00:00
|
|
|
|
//Si se asigna IDTienda se a<>ade condicion
|
|
|
|
|
|
if (TiendaID <> -1) then
|
|
|
|
|
|
begin
|
|
|
|
|
|
AWhereExpr3 := NewBinaryExpression(NewField('', 'ID_TIENDA'),
|
|
|
|
|
|
NewConstant(TiendaID, datInteger),
|
|
|
|
|
|
dboEqual);
|
|
|
|
|
|
|
|
|
|
|
|
AWhere := NewBinaryExpression(AWhere, AWhereExpr3, dboAnd);
|
|
|
|
|
|
end
|
2022-10-21 09:41:20 +00:00
|
|
|
|
else
|
|
|
|
|
|
begin
|
|
|
|
|
|
AWhereExpr3 := NewBinaryExpression(NewField('', 'ID_TIENDA'),
|
|
|
|
|
|
NewNull(),
|
|
|
|
|
|
dboEqual);
|
|
|
|
|
|
AWhere := NewBinaryExpression(AWhere, AWhereExpr3, dboAnd);
|
|
|
|
|
|
end;
|
2011-11-14 17:40:41 +00:00
|
|
|
|
|
|
|
|
|
|
finally
|
|
|
|
|
|
Free;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
ASchema := schReferencias;
|
|
|
|
|
|
AConn := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionManager.GetDefaultConnectionName);
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
try
|
|
|
|
|
|
dsData := ASchema.NewDataset(AConn, 'Referencias', ['VALOR'], '', '', False, True);
|
|
|
|
|
|
dsData.DynamicWhere.Expression := AWhere;
|
|
|
|
|
|
except
|
|
|
|
|
|
RaiseError('No existe la tabla REFERENCIAS');
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
dsData.Active := True;
|
|
|
|
|
|
|
|
|
|
|
|
if dsData.IsEmpty then
|
|
|
|
|
|
RaiseError('No existe la referencia ' + NombreReferencia + ' en la tabla REFERENCIAS.');
|
|
|
|
|
|
|
|
|
|
|
|
Result := dsData.FieldByName('VALOR').AsString;
|
|
|
|
|
|
finally
|
|
|
|
|
|
dsData := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TsrvReferencias.DataAbstractServiceBeforeAcquireConnection(aSender: TObject; var aConnectionName: string);
|
|
|
|
|
|
begin
|
|
|
|
|
|
ConnectionName := dmServer.ConnectionName;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
procedure TsrvReferencias.DataAbstractServiceCreate(Sender: TObject);
|
|
|
|
|
|
begin
|
|
|
|
|
|
//SessionManager := dmServer.SessionManager;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
function TsrvReferencias.IncrementarValorReferencia(const NombreReferencia: String;
|
|
|
|
|
|
const Valor: String; const EmpresaID: Integer = -1; const TiendaID: Integer = -1): Boolean;
|
|
|
|
|
|
var
|
|
|
|
|
|
ASchema : TDASchema;
|
|
|
|
|
|
AConn : IDAConnection;
|
|
|
|
|
|
dsCommand: IDASQLCommand;
|
|
|
|
|
|
|
|
|
|
|
|
AWhere : String;
|
|
|
|
|
|
begin
|
|
|
|
|
|
Result := False;
|
|
|
|
|
|
{ Construir la expresi<EFBFBD>n del Where a partir de los par<EFBFBD>metros
|
|
|
|
|
|
que se reciban.
|
|
|
|
|
|
}
|
|
|
|
|
|
AWhere := '';
|
|
|
|
|
|
if (EmpresaID <> -1) then
|
|
|
|
|
|
AWhere := AWhere + ' AND (ID_EMPRESA = ' + IntToStr(EmpresaID) + ')';
|
|
|
|
|
|
|
|
|
|
|
|
if (TiendaID <> -1) then
|
2022-10-21 09:41:20 +00:00
|
|
|
|
AWhere := AWhere + ' AND (ID_TIENDA = ' + IntToStr(TiendaID) + ')'
|
|
|
|
|
|
else
|
|
|
|
|
|
AWhere := AWhere + ' AND (ID_TIENDA IS NULL)';
|
|
|
|
|
|
|
2011-11-14 17:40:41 +00:00
|
|
|
|
|
|
|
|
|
|
ASchema := schReferencias;
|
|
|
|
|
|
AConn := dmServer.ConnectionManager.NewConnection(dmServer.ConnectionManager.GetDefaultConnectionName);
|
|
|
|
|
|
|
|
|
|
|
|
try
|
|
|
|
|
|
try
|
|
|
|
|
|
dsCommand := ASchema.NewCommand(AConn, 'ModificarValorReferencia');
|
|
|
|
|
|
with dsCommand do
|
|
|
|
|
|
begin
|
|
|
|
|
|
ParamByName('CODIGO').AsString := NombreReferencia;
|
|
|
|
|
|
ParamByName('VALOR').AsString := DarReferenciaSiguiente(Valor);
|
|
|
|
|
|
dsCommand.SQL := dsCommand.SQL + AWhere; //Asignamos las condiciones de empresa y tienda si es necesario
|
|
|
|
|
|
end;
|
|
|
|
|
|
dsCommand.Execute;
|
|
|
|
|
|
AConn.CommitTransaction;
|
|
|
|
|
|
Result := True;
|
|
|
|
|
|
except
|
|
|
|
|
|
RaiseError('Error al asignar la nueva referencia ' + Valor + ' en tablas');
|
|
|
|
|
|
AConn.RollbackTransaction;
|
|
|
|
|
|
end;
|
|
|
|
|
|
finally
|
|
|
|
|
|
dsCommand := NIL;
|
|
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
|
|
|
|
|
|
|
|
initialization
|
|
|
|
|
|
TROClassFactory.Create('srvReferencias', Create_srvReferencias, TsrvReferencias_Invoker);
|
|
|
|
|
|
|
|
|
|
|
|
finalization
|
|
|
|
|
|
|
|
|
|
|
|
end.
|