unit uBizAlbaranProveedorServer; interface uses schFacturasClienteServer_Intf, uDAInterfaces, uDADelta, uDADataTable, uDABusinessProcessor; const BIZ_SERVER_ALBARAN_PROVEEDOR = 'Server.AlbaranProveedor'; type TBizAlbaranProveedorServer = class(TFacturasClienteBusinessProcessorRules) 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 Dialogs, SysUtils, Variants, uDataModuleServer, uDAClasses, schAlbaranesProveedorClient_Intf, uBusinessUtils, uReferenciasUtils, uROClasses, FactuGES_Intf, uROServer; const REF_ALBARANES_PROVEEDOR = 'REF_ALBARANES_PROVEEDOR'; REF_ALBARANES_DEV_PROVEEDOR = 'REF_ALBARANES_DEV_PROVEEDOR'; { TBizFacturasClienteServer } procedure TBizAlbaranProveedorServer.AfterProcessChange( Sender: TDABusinessProcessor; aChange: TDADeltaChange; Processed: Boolean; var CanRemoveFromDelta: Boolean); begin inherited; { Por defecto, mantenemos los deltas por si alguna tabla hija los necesita } CanRemoveFromDelta := False; case aChange.ChangeType of ctInsert, ctUpdate: begin if FReferenciaAutomatica then begin IncrementarReferencia; FReferenciaAutomatica := False; end; end; end; end; procedure TBizAlbaranProveedorServer.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 TBizAlbaranProveedorServer.DarReferencia: String; var AReferenciasService : IsrvReferencias; Intf : IInterface; AClientID : TGUID; ACodigoReferencia : String; begin if (IMPORTE_TOTAL < 0) then ACodigoReferencia := REF_ALBARANES_DEV_PROVEEDOR else ACodigoReferencia := REF_ALBARANES_PROVEEDOR; CreateGUID(AClientID); GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf); AReferenciasService := Intf as IsrvReferencias; Result := AReferenciasService.DarNuevaReferencia(ACodigoReferencia, ID_EMPRESA, ID_TIENDA) end; function TBizAlbaranProveedorServer.IncrementarReferencia: Boolean; var AReferenciasService : IsrvReferencias; Intf : IInterface; AClientID : TGUID; ACodigoReferencia : String; begin if (IMPORTE_TOTAL < 0) then ACodigoReferencia := REF_ALBARANES_DEV_PROVEEDOR else ACodigoReferencia := REF_ALBARANES_PROVEEDOR; CreateGUID(AClientID); GetClassFactory('srvReferencias').CreateInstance(AClientID, Intf); AReferenciasService := Intf as IsrvReferencias; Result := AReferenciasService.IncrementarValorReferencia(ACodigoReferencia, Self.REFERENCIA, ID_EMPRESA, ID_TIENDA) end; initialization RegisterBusinessProcessorRules(BIZ_SERVER_ALBARAN_PROVEEDOR, TBizAlbaranProveedorServer); end.