2011-11-14 17:40:41 +00:00
unit uBizRecibosProveedorServer;
interface
uses
uDAInterfaces, uDADelta, uDABusinessProcessor,
schRecibosProveedorServer_Intf;
const
BIZ_SERVER_RECIBOS_PROVEEDOR = 'Server.RecibosProveedor' ;
type
TBizRecibosProveedorServer = class( TRecibosProveedorBusinessProcessorRules)
private
FReferenciaAutomatica : Boolean ;
function DarReferencia : String ;
function IncrementarReferencia : Boolean ;
protected
procedure BeforeProcessDelta( Sender: TDABusinessProcessor; const aDelta: IDADelta) ; override ;
procedure AfterProcessChange( Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean ; var CanRemoveFromDelta: Boolean ) ; override ;
end ;
implementation
uses
Variants, uDAClasses, uReferenciasUtils, uBusinessUtils, uROClasses, uDataModuleServer,
schRecibosProveedorClient_Intf, FactuGES_Intf, uROServer, SysUtils;
const
REF_RECIBOS_PROVEEDOR = 'REF_RECIBOS_PROVEEDOR' ;
{ TBizRecibosProveedorServer }
procedure TBizRecibosProveedorServer. AfterProcessChange( Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean ;
var CanRemoveFromDelta: Boolean ) ;
begin
// No hay que quitar los deltas para que los datos del contacto se
// mantengan por si alguna tabla detalle lo necesita
// (por ejemplo, DireccionesContacto)
CanRemoveFromDelta : = False ;
// Actualizamos el contador de referencias.
case aChange. ChangeType of
ctInsert, ctUpdate: begin
if FReferenciaAutomatica then
begin
IncrementarReferencia;
FReferenciaAutomatica : = False ;
end ;
end ;
end ;
end ;
procedure TBizRecibosProveedorServer. BeforeProcessDelta(
Sender: TDABusinessProcessor; const aDelta: IDADelta) ;
begin
FReferenciaAutomatica : = False ;
case Sender. CurrentChange. ChangeType of
ctInsert, ctUpdate: begin
//Si la referencia no ha sido asignada le asignamos una nosotros
if REFERENCIAIsNull or ( Length( REFERENCIA) = 0 ) then
begin
FReferenciaAutomatica : = True ;
REFERENCIA : = DarReferencia;
end ;
end ;
end ;
end ;
function TBizRecibosProveedorServer. DarReferencia: String ;
var
AReferenciasService : IsrvReferencias;
Intf : IInterface;
AClientID : TGUID;
begin
CreateGUID( AClientID) ;
GetClassFactory( 'srvReferencias' ) . CreateInstance( AClientID, Intf) ;
AReferenciasService : = Intf as IsrvReferencias;
2022-10-21 09:41:20 +00:00
Result : = AReferenciasService. DarNuevaReferencia( REF_RECIBOS_PROVEEDOR, ID_EMPRESA, - 1 ) //Referencia com<6F> n a todas las tiendas de la empresa
2011-11-14 17:40:41 +00:00
end ;
function TBizRecibosProveedorServer. IncrementarReferencia: Boolean ;
var
AReferenciasService : IsrvReferencias;
Intf : IInterface;
AClientID : TGUID;
begin
CreateGUID( AClientID) ;
GetClassFactory( 'srvReferencias' ) . CreateInstance( AClientID, Intf) ;
AReferenciasService : = Intf as IsrvReferencias;
2022-10-21 09:41:20 +00:00
Result : = AReferenciasService. IncrementarValorReferencia( REF_RECIBOS_PROVEEDOR, Self. REFERENCIA, ID_EMPRESA, - 1 ) //Referencia com<6F> n a todas las tiendas de la empresa
2011-11-14 17:40:41 +00:00
end ;
initialization
RegisterBusinessProcessorRules( BIZ_SERVER_RECIBOS_PROVEEDOR, TBizRecibosProveedorServer) ;
end .