unit FactuGES_Intf;

{----------------------------------------------------------------------------}
{ This unit was automatically generated by the RemObjects SDK after reading  }
{ the RODL file associated with this project .                               }
{                                                                            }
{ Do not modify this unit manually, or your changes will be lost when this   }
{ unit is regenerated the next time you compile the project.                 }
{----------------------------------------------------------------------------}

{$I Remobjects.inc}

interface

uses
  {vcl:} Classes, TypInfo,
  {RemObjects:} uROXMLIntf, uROClasses, uROClient, uROTypes, uROClientIntf,
  {Used RODLs:} DataAbstract4_Intf;

const
  { Library ID }
  LibraryUID = '{99553DD5-13B5-40EB-B7E6-D2B9A7C1B4D6}';
  TargetNamespace = '';

  { Service Interface ID's }
  IsrvContactos_IID : TGUID = '{28CCDC07-A3A4-4917-89B4-64423DC70C9D}';
  IsrvLogin_IID : TGUID = '{399F9DB4-1B34-4140-AB6E-3BC10C0A7034}';
  IsrvInventario_IID : TGUID = '{36AF71D2-B19F-45DA-9C02-576B3A21158A}';
  IsrvHistoricoMovimientos_IID : TGUID = '{F1BE4D4C-017B-476D-A009-0D1B8D1A20CE}';
  IsrvEmpresas_IID : TGUID = '{590F06D1-26B4-435B-B636-50CB8FFE6353}';
  IsrvConfiguracion_IID : TGUID = '{0882B8A4-C8AA-424E-8FC1-C6226B670522}';
  IsrvFamilias_IID : TGUID = '{D351175C-CBFD-4328-BF2A-FDC0B05A6308}';
  IsrvFormasPago_IID : TGUID = '{38AA9F85-B454-4A87-B6E8-E9C8BB2A17D9}';
  IsrvTiposIVA_IID : TGUID = '{09B44AB5-6212-448A-8DF2-A503E3F2C9B1}';
  IsrvUsuarios_IID : TGUID = '{29388459-1A0B-46BE-AF9E-66A9E7AABB0B}';
  IsrvAlmacenes_IID : TGUID = '{F984D2A1-9922-4790-9B2D-A78ACFDAE82B}';
  IsrvArticulos_IID : TGUID = '{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}';
  IsrvRecibosCliente_IID : TGUID = '{3B68252A-EE6A-4D37-B250-93F2DB940DDF}';
  IsrvRecibosProveedor_IID : TGUID = '{22580F16-8FFC-4FE0-BCDD-5533D5DB1F55}';
  IsrvRemesasCliente_IID : TGUID = '{33F414D0-0D0B-4384-96CB-D94BC97A0C39}';
  IsrvRemesasProveedor_IID : TGUID = '{6540A037-9847-4650-89BB-7B349C6004DF}';
  IsrvFacturasCliente_IID : TGUID = '{56B4FFF0-AB1B-46B2-BA16-ABD5360F6311}';
  IsrvFacturasProveedor_IID : TGUID = '{7655160C-7023-452E-BB0E-C97E29B915E7}';
  IsrvPresupuestosCliente_IID : TGUID = '{8A06D5A7-8461-4F6E-8A8B-EC49C84C45D1}';
  IsrvPedidosProveedor_IID : TGUID = '{3DCC03E4-E9CE-4798-99D4-7170C9CF815B}';
  IsrvAlbaranesCliente_IID : TGUID = '{6E910718-9AB0-47BB-9875-B0DE66A68D7A}';
  IsrvAlbaranesProveedor_IID : TGUID = '{66B71884-5CE4-4574-B825-60CDA956B628}';
  IsrvEjercicios_IID : TGUID = '{E99052D5-4ED9-480C-B4D4-384E8C6E4B08}';
  IsrvReferencias_IID : TGUID = '{B957528D-3BE1-412D-A35E-801C97CCD252}';
  IsrvContabilidad_IID : TGUID = '{04CDF2E1-EFC2-4247-AA4F-09BE782C73FA}';
  IsrvUnidadesMedida_IID : TGUID = '{C1B36FAB-7514-40D2-A20C-04A86C9E71AB}';
  IsrvComisiones_IID : TGUID = '{B600E9A1-28EC-484E-A74D-B5BB96FDF20A}';
  IsrvProvinciasPoblaciones_IID : TGUID = '{C9925D63-0F5F-4546-8657-54F59FE51359}';
  IsrvGestorDocumentos_IID : TGUID = '{A057EA3B-F714-4899-B6DA-1E4C8696ADC7}';
  IsrvGestorInformes_IID : TGUID = '{9ACA4D42-EA9A-4D2C-B233-19CD299EAE91}';

  { Event ID's }

type
  { Forward declarations }
  IsrvContactos = interface;
  IsrvLogin = interface;
  IsrvInventario = interface;
  IsrvHistoricoMovimientos = interface;
  IsrvEmpresas = interface;
  IsrvConfiguracion = interface;
  IsrvFamilias = interface;
  IsrvFormasPago = interface;
  IsrvTiposIVA = interface;
  IsrvUsuarios = interface;
  IsrvAlmacenes = interface;
  IsrvArticulos = interface;
  IsrvRecibosCliente = interface;
  IsrvRecibosProveedor = interface;
  IsrvRemesasCliente = interface;
  IsrvRemesasProveedor = interface;
  IsrvFacturasCliente = interface;
  IsrvFacturasProveedor = interface;
  IsrvPresupuestosCliente = interface;
  IsrvPedidosProveedor = interface;
  IsrvAlbaranesCliente = interface;
  IsrvAlbaranesProveedor = interface;
  IsrvEjercicios = interface;
  IsrvReferencias = interface;
  IsrvContabilidad = interface;
  IsrvUnidadesMedida = interface;
  IsrvComisiones = interface;
  IsrvProvinciasPoblaciones = interface;
  IsrvGestorDocumentos = interface;
  IsrvGestorInformes = interface;

  TRdxEmpresasArray = class;
  TIntegerArray = class;

  TRdxLoginInfo = class;



  { Enumerateds }
  TRdxAlmacenes = (TRdxAlmacenes_Presupuestos);

  { TRdxLoginInfo }
  TRdxLoginInfo = class(TROComplexType)
  private
    fUserID: Integer;
    fSessionID: String;
    fUsuario: String;
    fPerfiles: StringArray;
    fEmpresas: TRdxEmpresasArray;
    function GetPerfiles: StringArray;
    function GetEmpresas: TRdxEmpresasArray;
  public
    procedure Assign(iSource: TPersistent); override;
    procedure ReadComplex(ASerializer: TObject); override;
    procedure WriteComplex(ASerializer: TObject); override;
  published
    property UserID:Integer read fUserID write fUserID;
    property SessionID:String read fSessionID write fSessionID;
    property Usuario:String read fUsuario write fUsuario;
    property Perfiles:StringArray read GetPerfiles write fPerfiles;
    property Empresas:TRdxEmpresasArray read GetEmpresas write fEmpresas;
  end;

  { TRdxLoginInfoCollection }
  TRdxLoginInfoCollection = class(TROCollection)
  protected
    constructor Create(aItemClass: TCollectionItemClass); overload;
    function GetItems(aIndex: integer): TRdxLoginInfo;
    procedure SetItems(aIndex: integer; const Value: TRdxLoginInfo);
  public
    constructor Create; overload;
    function Add: TRdxLoginInfo; reintroduce;
    property Items[Index: integer]:TRdxLoginInfo read GetItems write SetItems; default;
  end;

  { TRdxEmpresasArray }
  TRdxEmpresasArray_Integer = array of Integer;
  TRdxEmpresasArray = class(TROArray)
  private
    fCount: Integer;
    fItems : TRdxEmpresasArray_Integer;
  protected
    procedure Grow; virtual;
    function GetItems(aIndex: integer): Integer;
    procedure SetItems(aIndex: integer; const Value: Integer);
    function GetCount: integer; override;
  public
    class function GetItemType: PTypeInfo; override;
    class function GetItemSize: integer; override;

    function GetItemRef(aIndex: integer): pointer; override;
    procedure Clear; override;
    procedure Delete(aIndex: integer); override;
    procedure Resize(ElementCount: integer); override;

    procedure Assign(iSource:TPersistent); override;
    procedure ReadComplex(ASerializer: TObject); override;
    procedure WriteComplex(ASerializer: TObject); override;
    function Add(const Value:Integer): integer;
    function GetIndex(const aPropertyName : string;
                      const aPropertyValue : Variant;
                      StartFrom : integer = 0;
                      Options : TROSearchOptions = [soIgnoreCase]) : integer; override;

    property Count : integer read GetCount;
    property Items[Index: integer]:Integer read GetItems write SetItems; default;
    property InnerArray: TRdxEmpresasArray_Integer read fItems;
  end;

  { TIntegerArray }
  TIntegerArray_Integer = array of Integer;
  TIntegerArray = class(TROArray)
  private
    fCount: Integer;
    fItems : TIntegerArray_Integer;
  protected
    procedure Grow; virtual;
    function GetItems(aIndex: integer): Integer;
    procedure SetItems(aIndex: integer; const Value: Integer);
    function GetCount: integer; override;
  public
    class function GetItemType: PTypeInfo; override;
    class function GetItemSize: integer; override;

    function GetItemRef(aIndex: integer): pointer; override;
    procedure Clear; override;
    procedure Delete(aIndex: integer); override;
    procedure Resize(ElementCount: integer); override;

    procedure Assign(iSource:TPersistent); override;
    procedure ReadComplex(ASerializer: TObject); override;
    procedure WriteComplex(ASerializer: TObject); override;
    function Add(const Value:Integer): integer;
    function GetIndex(const aPropertyName : string;
                      const aPropertyValue : Variant;
                      StartFrom : integer = 0;
                      Options : TROSearchOptions = [soIgnoreCase]) : integer; override;

    property Count : integer read GetCount;
    property Items[Index: integer]:Integer read GetItems write SetItems; default;
    property InnerArray: TIntegerArray_Integer read fItems;
  end;

  { IsrvContactos }
  IsrvContactos = interface(IDataAbstractService)
    ['{28CCDC07-A3A4-4917-89B4-64423DC70C9D}']
    function GenerateEtiquetasReport(const ContactosID: String): Binary;
    function DarTiendaDeUsuario(const ID_Empresa: Integer; const ID_Usuario: Integer): Integer;
  end;

  { CosrvContactos }
  CosrvContactos = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos;
  end;

  { TsrvContactos_Proxy }
  TsrvContactos_Proxy = class(TDataAbstractService_Proxy, IsrvContactos)
  protected
    function __GetInterfaceName:string; override;

    function GenerateEtiquetasReport(const ContactosID: String): Binary;
    function DarTiendaDeUsuario(const ID_Empresa: Integer; const ID_Usuario: Integer): Integer;
  end;

  { IsrvLogin }
  IsrvLogin = interface(IDataAbstractService)
    ['{399F9DB4-1B34-4140-AB6E-3BC10C0A7034}']
    function Login2(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean;
    function Login(const User: String; const Password: String): Boolean;
    procedure Logout;
    function Ping: Boolean;
  end;

  { CosrvLogin }
  CosrvLogin = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin;
  end;

  { TsrvLogin_Proxy }
  TsrvLogin_Proxy = class(TDataAbstractService_Proxy, IsrvLogin)
  protected
    function __GetInterfaceName:string; override;

    function Login2(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean;
    function Login(const User: String; const Password: String): Boolean;
    procedure Logout;
    function Ping: Boolean;
  end;

  { IsrvInventario }
  IsrvInventario = interface(IDataAbstractService)
    ['{36AF71D2-B19F-45DA-9C02-576B3A21158A}']
  end;

  { CosrvInventario }
  CosrvInventario = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvInventario;
  end;

  { TsrvInventario_Proxy }
  TsrvInventario_Proxy = class(TDataAbstractService_Proxy, IsrvInventario)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvHistoricoMovimientos }
  IsrvHistoricoMovimientos = interface(IDataAbstractService)
    ['{F1BE4D4C-017B-476D-A009-0D1B8D1A20CE}']
  end;

  { CosrvHistoricoMovimientos }
  CosrvHistoricoMovimientos = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvHistoricoMovimientos;
  end;

  { TsrvHistoricoMovimientos_Proxy }
  TsrvHistoricoMovimientos_Proxy = class(TDataAbstractService_Proxy, IsrvHistoricoMovimientos)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvEmpresas }
  IsrvEmpresas = interface(IDataAbstractService)
    ['{590F06D1-26B4-435B-B636-50CB8FFE6353}']
    function DarTiendaUsuario(const ID_EMPRESA: Integer; const ID_USUARIO: Integer): Integer;
    function DarListaFormasPago: Binary;
    function DarListaTiposIVA: Binary;
  end;

  { CosrvEmpresas }
  CosrvEmpresas = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEmpresas;
  end;

  { TsrvEmpresas_Proxy }
  TsrvEmpresas_Proxy = class(TDataAbstractService_Proxy, IsrvEmpresas)
  protected
    function __GetInterfaceName:string; override;

    function DarTiendaUsuario(const ID_EMPRESA: Integer; const ID_USUARIO: Integer): Integer;
    function DarListaFormasPago: Binary;
    function DarListaTiposIVA: Binary;
  end;

  { IsrvConfiguracion }
  IsrvConfiguracion = interface(IDataAbstractService)
    ['{0882B8A4-C8AA-424E-8FC1-C6226B670522}']
    function darValor(const CODIGO: String; const ValorPorDefecto: String): String;
  end;

  { CosrvConfiguracion }
  CosrvConfiguracion = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion;
  end;

  { TsrvConfiguracion_Proxy }
  TsrvConfiguracion_Proxy = class(TDataAbstractService_Proxy, IsrvConfiguracion)
  protected
    function __GetInterfaceName:string; override;

    function darValor(const CODIGO: String; const ValorPorDefecto: String): String;
  end;

  { IsrvFamilias }
  IsrvFamilias = interface(IDataAbstractService)
    ['{D351175C-CBFD-4328-BF2A-FDC0B05A6308}']
  end;

  { CosrvFamilias }
  CosrvFamilias = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFamilias;
  end;

  { TsrvFamilias_Proxy }
  TsrvFamilias_Proxy = class(TDataAbstractService_Proxy, IsrvFamilias)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvFormasPago }
  IsrvFormasPago = interface(IDataAbstractService)
    ['{38AA9F85-B454-4A87-B6E8-E9C8BB2A17D9}']
  end;

  { CosrvFormasPago }
  CosrvFormasPago = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFormasPago;
  end;

  { TsrvFormasPago_Proxy }
  TsrvFormasPago_Proxy = class(TDataAbstractService_Proxy, IsrvFormasPago)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvTiposIVA }
  IsrvTiposIVA = interface(IDataAbstractService)
    ['{09B44AB5-6212-448A-8DF2-A503E3F2C9B1}']
  end;

  { CosrvTiposIVA }
  CosrvTiposIVA = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTiposIVA;
  end;

  { TsrvTiposIVA_Proxy }
  TsrvTiposIVA_Proxy = class(TDataAbstractService_Proxy, IsrvTiposIVA)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvUsuarios }
  IsrvUsuarios = interface(IDataAbstractService)
    ['{29388459-1A0B-46BE-AF9E-66A9E7AABB0B}']
  end;

  { CosrvUsuarios }
  CosrvUsuarios = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUsuarios;
  end;

  { TsrvUsuarios_Proxy }
  TsrvUsuarios_Proxy = class(TDataAbstractService_Proxy, IsrvUsuarios)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvAlmacenes }
  IsrvAlmacenes = interface(IDataAbstractService)
    ['{F984D2A1-9922-4790-9B2D-A78ACFDAE82B}']
  end;

  { CosrvAlmacenes }
  CosrvAlmacenes = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlmacenes;
  end;

  { TsrvAlmacenes_Proxy }
  TsrvAlmacenes_Proxy = class(TDataAbstractService_Proxy, IsrvAlmacenes)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvArticulos }
  IsrvArticulos = interface(IDataAbstractService)
    ['{CFBE5841-DF0F-48AD-853E-A35FDA989E6E}']
  end;

  { CosrvArticulos }
  CosrvArticulos = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos;
  end;

  { TsrvArticulos_Proxy }
  TsrvArticulos_Proxy = class(TDataAbstractService_Proxy, IsrvArticulos)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvRecibosCliente }
  IsrvRecibosCliente = interface(IDataAbstractService)
    ['{3B68252A-EE6A-4D37-B250-93F2DB940DDF}']
    function GenerateReport(const ListaID: TIntegerArray): Binary;
  end;

  { CosrvRecibosCliente }
  CosrvRecibosCliente = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRecibosCliente;
  end;

  { TsrvRecibosCliente_Proxy }
  TsrvRecibosCliente_Proxy = class(TDataAbstractService_Proxy, IsrvRecibosCliente)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const ListaID: TIntegerArray): Binary;
  end;

  { IsrvRecibosProveedor }
  IsrvRecibosProveedor = interface(IDataAbstractService)
    ['{22580F16-8FFC-4FE0-BCDD-5533D5DB1F55}']
    function GenerateReport(const ID: Integer): Binary;
  end;

  { CosrvRecibosProveedor }
  CosrvRecibosProveedor = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRecibosProveedor;
  end;

  { TsrvRecibosProveedor_Proxy }
  TsrvRecibosProveedor_Proxy = class(TDataAbstractService_Proxy, IsrvRecibosProveedor)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const ID: Integer): Binary;
  end;

  { IsrvRemesasCliente }
  IsrvRemesasCliente = interface(IDataAbstractService)
    ['{33F414D0-0D0B-4384-96CB-D94BC97A0C39}']
    function GenerateReport(const ID: String): Binary;
  end;

  { CosrvRemesasCliente }
  CosrvRemesasCliente = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRemesasCliente;
  end;

  { TsrvRemesasCliente_Proxy }
  TsrvRemesasCliente_Proxy = class(TDataAbstractService_Proxy, IsrvRemesasCliente)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const ID: String): Binary;
  end;

  { IsrvRemesasProveedor }
  IsrvRemesasProveedor = interface(IDataAbstractService)
    ['{6540A037-9847-4650-89BB-7B349C6004DF}']
    function GenerateReport(const ID: String): Binary;
  end;

  { CosrvRemesasProveedor }
  CosrvRemesasProveedor = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRemesasProveedor;
  end;

  { TsrvRemesasProveedor_Proxy }
  TsrvRemesasProveedor_Proxy = class(TDataAbstractService_Proxy, IsrvRemesasProveedor)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const ID: String): Binary;
  end;

  { IsrvFacturasCliente }
  IsrvFacturasCliente = interface(IDataAbstractService)
    ['{56B4FFF0-AB1B-46B2-BA16-ABD5360F6311}']
    function GenerateReport(const FacturaID: TIntegerArray): Binary;
  end;

  { CosrvFacturasCliente }
  CosrvFacturasCliente = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasCliente;
  end;

  { TsrvFacturasCliente_Proxy }
  TsrvFacturasCliente_Proxy = class(TDataAbstractService_Proxy, IsrvFacturasCliente)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const FacturaID: TIntegerArray): Binary;
  end;

  { IsrvFacturasProveedor }
  IsrvFacturasProveedor = interface(IDataAbstractService)
    ['{7655160C-7023-452E-BB0E-C97E29B915E7}']
    function GenerateReport(const FacturaID: String): Binary;
  end;

  { CosrvFacturasProveedor }
  CosrvFacturasProveedor = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProveedor;
  end;

  { TsrvFacturasProveedor_Proxy }
  TsrvFacturasProveedor_Proxy = class(TDataAbstractService_Proxy, IsrvFacturasProveedor)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const FacturaID: String): Binary;
  end;

  { IsrvPresupuestosCliente }
  IsrvPresupuestosCliente = interface(IDataAbstractService)
    ['{8A06D5A7-8461-4F6E-8A8B-EC49C84C45D1}']
    function GenerarInforme(const ListaID: TIntegerArray): Binary;
    function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
  end;

  { CosrvPresupuestosCliente }
  CosrvPresupuestosCliente = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestosCliente;
  end;

  { TsrvPresupuestosCliente_Proxy }
  TsrvPresupuestosCliente_Proxy = class(TDataAbstractService_Proxy, IsrvPresupuestosCliente)
  protected
    function __GetInterfaceName:string; override;

    function GenerarInforme(const ListaID: TIntegerArray): Binary;
    function GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
  end;

  { IsrvPedidosProveedor }
  IsrvPedidosProveedor = interface(IDataAbstractService)
    ['{3DCC03E4-E9CE-4798-99D4-7170C9CF815B}']
    function GenerateReport(const ID: String): Binary;
  end;

  { CosrvPedidosProveedor }
  CosrvPedidosProveedor = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPedidosProveedor;
  end;

  { TsrvPedidosProveedor_Proxy }
  TsrvPedidosProveedor_Proxy = class(TDataAbstractService_Proxy, IsrvPedidosProveedor)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const ID: String): Binary;
  end;

  { IsrvAlbaranesCliente }
  IsrvAlbaranesCliente = interface(IDataAbstractService)
    ['{6E910718-9AB0-47BB-9875-B0DE66A68D7A}']
    function GenerarInforme(const ListaID: TIntegerArray): Binary;
    function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary;
  end;

  { CosrvAlbaranesCliente }
  CosrvAlbaranesCliente = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente;
  end;

  { TsrvAlbaranesCliente_Proxy }
  TsrvAlbaranesCliente_Proxy = class(TDataAbstractService_Proxy, IsrvAlbaranesCliente)
  protected
    function __GetInterfaceName:string; override;

    function GenerarInforme(const ListaID: TIntegerArray): Binary;
    function GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary;
  end;

  { IsrvAlbaranesProveedor }
  IsrvAlbaranesProveedor = interface(IDataAbstractService)
    ['{66B71884-5CE4-4574-B825-60CDA956B628}']
    function GenerateReport(const ID: String): Binary;
  end;

  { CosrvAlbaranesProveedor }
  CosrvAlbaranesProveedor = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesProveedor;
  end;

  { TsrvAlbaranesProveedor_Proxy }
  TsrvAlbaranesProveedor_Proxy = class(TDataAbstractService_Proxy, IsrvAlbaranesProveedor)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const ID: String): Binary;
  end;

  { IsrvEjercicios }
  IsrvEjercicios = interface(IDataAbstractService)
    ['{E99052D5-4ED9-480C-B4D4-384E8C6E4B08}']
    function GenerarPGC(const ID_EJERCICIO_COPIA: Integer; const ID_EJERCICIO: Integer): Boolean;
    function darEjercicioActivo(const ID_EMPRESA: Integer): Integer;
  end;

  { CosrvEjercicios }
  CosrvEjercicios = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEjercicios;
  end;

  { TsrvEjercicios_Proxy }
  TsrvEjercicios_Proxy = class(TDataAbstractService_Proxy, IsrvEjercicios)
  protected
    function __GetInterfaceName:string; override;

    function GenerarPGC(const ID_EJERCICIO_COPIA: Integer; const ID_EJERCICIO: Integer): Boolean;
    function darEjercicioActivo(const ID_EMPRESA: Integer): Integer;
  end;

  { IsrvReferencias }

  { Description:
      Para uso interno del servidor. }
  IsrvReferencias = interface(IDataAbstractService)
    ['{B957528D-3BE1-412D-A35E-801C97CCD252}']
    function DarNuevaReferencia(const NombreReferencia: String; const EmpresaID: Integer; const TiendaID: Integer): String;
    function IncrementarValorReferencia(const NombreReferencia: String; const Valor: String; const EmpresaID: Integer; const TiendaID: Integer): Boolean;
  end;

  { CosrvReferencias }
  CosrvReferencias = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvReferencias;
  end;

  { TsrvReferencias_Proxy }
  TsrvReferencias_Proxy = class(TDataAbstractService_Proxy, IsrvReferencias)
  protected
    function __GetInterfaceName:string; override;

    function DarNuevaReferencia(const NombreReferencia: String; const EmpresaID: Integer; const TiendaID: Integer): String;
    function IncrementarValorReferencia(const NombreReferencia: String; const Valor: String; const EmpresaID: Integer; const TiendaID: Integer): Boolean;
  end;

  { IsrvContabilidad }
  IsrvContabilidad = interface(IDataAbstractService)
    ['{04CDF2E1-EFC2-4247-AA4F-09BE782C73FA}']
    function TieneCuentaAsociada(const ID_CONTACTO: Integer; const ID_EMPRESA: Integer): Boolean;
    function AnadirSubCuentaCliente(const ID_CONTACTO: Integer; const ID_TIENDA: Integer; const ID_EMPRESA: Integer; const CLIENTE: String): Boolean;
    function AnadirSubCuentaProveedor(const ID_CONTACTO: Integer; const ES_ACREEDOR: Integer; const ID_EMPRESA: Integer; const PROVEEDOR: String): Boolean;
    function DarNumOrdenAsiento: Integer;
  end;

  { CosrvContabilidad }
  CosrvContabilidad = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContabilidad;
  end;

  { TsrvContabilidad_Proxy }
  TsrvContabilidad_Proxy = class(TDataAbstractService_Proxy, IsrvContabilidad)
  protected
    function __GetInterfaceName:string; override;

    function TieneCuentaAsociada(const ID_CONTACTO: Integer; const ID_EMPRESA: Integer): Boolean;
    function AnadirSubCuentaCliente(const ID_CONTACTO: Integer; const ID_TIENDA: Integer; const ID_EMPRESA: Integer; const CLIENTE: String): Boolean;
    function AnadirSubCuentaProveedor(const ID_CONTACTO: Integer; const ES_ACREEDOR: Integer; const ID_EMPRESA: Integer; const PROVEEDOR: String): Boolean;
    function DarNumOrdenAsiento: Integer;
  end;

  { IsrvUnidadesMedida }
  IsrvUnidadesMedida = interface(IDataAbstractService)
    ['{C1B36FAB-7514-40D2-A20C-04A86C9E71AB}']
  end;

  { CosrvUnidadesMedida }
  CosrvUnidadesMedida = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUnidadesMedida;
  end;

  { TsrvUnidadesMedida_Proxy }
  TsrvUnidadesMedida_Proxy = class(TDataAbstractService_Proxy, IsrvUnidadesMedida)
  protected
    function __GetInterfaceName:string; override;

  end;

  { IsrvComisiones }
  IsrvComisiones = interface(IDataAbstractService)
    ['{B600E9A1-28EC-484E-A74D-B5BB96FDF20A}']
    function GenerateReport(const ComisionID: String): Binary;
  end;

  { CosrvComisiones }
  CosrvComisiones = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvComisiones;
  end;

  { TsrvComisiones_Proxy }
  TsrvComisiones_Proxy = class(TDataAbstractService_Proxy, IsrvComisiones)
  protected
    function __GetInterfaceName:string; override;

    function GenerateReport(const ComisionID: String): Binary;
  end;

  { IsrvProvinciasPoblaciones }
  IsrvProvinciasPoblaciones = interface
    ['{C9925D63-0F5F-4546-8657-54F59FE51359}']
    function DarListaProvincias: Binary;
    function DarListaPoblaciones(const ID_Provincia: Integer): Binary;
  end;

  { CosrvProvinciasPoblaciones }
  CosrvProvinciasPoblaciones = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvProvinciasPoblaciones;
  end;

  { TsrvProvinciasPoblaciones_Proxy }
  TsrvProvinciasPoblaciones_Proxy = class(TROProxy, IsrvProvinciasPoblaciones)
  protected
    function __GetInterfaceName:string; override;

    function DarListaProvincias: Binary;
    function DarListaPoblaciones(const ID_Provincia: Integer): Binary;
  end;

  { IsrvGestorDocumentos }
  IsrvGestorDocumentos = interface(IDataAbstractService)
    ['{A057EA3B-F714-4899-B6DA-1E4C8696ADC7}']
    function DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray;
    function DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary;
    function SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean;
    function EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean;
    function EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean;
  end;

  { CosrvGestorDocumentos }
  CosrvGestorDocumentos = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvGestorDocumentos;
  end;

  { TsrvGestorDocumentos_Proxy }
  TsrvGestorDocumentos_Proxy = class(TDataAbstractService_Proxy, IsrvGestorDocumentos)
  protected
    function __GetInterfaceName:string; override;

    function DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray;
    function DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary;
    function SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean;
    function EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean;
    function EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean;
  end;

  { IsrvGestorInformes }
  IsrvGestorInformes = interface(IDataAbstractService)
    ['{9ACA4D42-EA9A-4D2C-B233-19CD299EAE91}']
    function GenerarInformeIVAClientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                       const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeIVAProveedores(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                          const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasCli(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListadoIDClientes: TIntegerArray; 
                                              const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasProv(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                               const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasCliPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                        const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasProvPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                         const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosCliente(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                 const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosProveedor(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                   const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosCliPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                       const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosProvPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                        const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoPresupuestos(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                               const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
  end;

  { CosrvGestorInformes }
  CosrvGestorInformes = class
    class function Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvGestorInformes;
  end;

  { TsrvGestorInformes_Proxy }
  TsrvGestorInformes_Proxy = class(TDataAbstractService_Proxy, IsrvGestorInformes)
  protected
    function __GetInterfaceName:string; override;

    function GenerarInformeIVAClientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                       const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeIVAProveedores(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                          const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasCli(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListadoIDClientes: TIntegerArray; 
                                              const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasProv(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                               const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasCliPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                        const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoFacturasProvPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                         const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosCliente(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                 const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosProveedor(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                   const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosCliPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                       const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoRecibosProvPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                        const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
    function GenerarInformeListadoPresupuestos(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                               const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
  end;

implementation

uses
  {vcl:} SysUtils,
  {RemObjects:} uROEventRepository, uROSerializer, uRORes;

{ TRdxEmpresasArray }

procedure TRdxEmpresasArray.Assign(iSource: TPersistent);
var lSource:TRdxEmpresasArray;
    i:integer;
begin
  if (iSource is TRdxEmpresasArray) then begin
    lSource := TRdxEmpresasArray(iSource);
    Clear();
    Resize(lSource.Count);

    for i := 0 to Count-1 do begin
      Items[i] := lSource.Items[i];
    end;
  end
  else begin
    inherited Assign(iSource);
  end;
end;

class function TRdxEmpresasArray.GetItemType: PTypeInfo;
begin
  result := TypeInfo(Integer);
end;

class function TRdxEmpresasArray.GetItemSize: integer;
begin
  result := SizeOf(Integer);
end;

function TRdxEmpresasArray.GetItems(aIndex: integer): Integer;
begin
  if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
  result := fItems[aIndex];
end;

function TRdxEmpresasArray.GetItemRef(aIndex: integer): pointer;
begin
  if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
  result := @fItems[aIndex];
end;

procedure TRdxEmpresasArray.Clear;
begin
  SetLength(fItems, 0);
  FCount := 0;
end;

procedure TRdxEmpresasArray.Delete(aIndex: integer);
var i: integer;
begin
  if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]);

  if (aIndex<Count-1) then
    for i := aIndex to Count-2 do fItems[i] := fItems[i+1];

  SetLength(fItems, Count-1);
  Dec(FCount);
end;

procedure TRdxEmpresasArray.SetItems(aIndex: integer; const Value: Integer);
begin
  if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
  if fItems[aIndex] <> Value then begin
    fItems[aIndex] := Value;
  end;
end;

procedure TRdxEmpresasArray.Resize(ElementCount: integer);
begin
  if fCount = ElementCount then Exit;
  SetLength(fItems, ElementCount);
  FCount := ElementCount;
end;

function TRdxEmpresasArray.GetCount: integer;
begin
  result := FCount;
end;

procedure TRdxEmpresasArray.Grow;
var
  Delta, Capacity: Integer;
begin
  Capacity := Length(fItems);
  if Capacity > 64 then
    Delta := Capacity div 4
  else
    if Capacity > 8 then
      Delta := 16
   else
      Delta := 4;
  SetLength(fItems, Capacity + Delta);
end;

function TRdxEmpresasArray.Add(const Value: Integer): integer;
begin
  Result := Count;
  if Length(fItems) = Result then
    Grow;
  fItems[result] := Value;
  Inc(fCount);
end;

function TRdxEmpresasArray.GetIndex(const aPropertyName: string;
  const aPropertyValue: Variant; StartFrom: integer;
  Options: TROSearchOptions): integer;
begin
  result := -1;
end;

procedure TRdxEmpresasArray.ReadComplex(ASerializer: TObject);
var
  lval: Integer;
  i: integer;
begin
  for i := 0 to Count-1 do begin
    with TROSerializer(ASerializer) do
      ReadInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, lval, i);
    Items[i] := lval;
  end;
end;

procedure TRdxEmpresasArray.WriteComplex(ASerializer: TObject);
var
  i: integer;
begin
  for i := 0 to Count-1 do
    with TROSerializer(ASerializer) do
      WriteInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, fItems[i], i);
end;

{ TIntegerArray }

procedure TIntegerArray.Assign(iSource: TPersistent);
var lSource:TIntegerArray;
    i:integer;
begin
  if (iSource is TIntegerArray) then begin
    lSource := TIntegerArray(iSource);
    Clear();
    Resize(lSource.Count);

    for i := 0 to Count-1 do begin
      Items[i] := lSource.Items[i];
    end;
  end
  else begin
    inherited Assign(iSource);
  end;
end;

class function TIntegerArray.GetItemType: PTypeInfo;
begin
  result := TypeInfo(Integer);
end;

class function TIntegerArray.GetItemSize: integer;
begin
  result := SizeOf(Integer);
end;

function TIntegerArray.GetItems(aIndex: integer): Integer;
begin
  if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
  result := fItems[aIndex];
end;

function TIntegerArray.GetItemRef(aIndex: integer): pointer;
begin
  if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
  result := @fItems[aIndex];
end;

procedure TIntegerArray.Clear;
begin
  SetLength(fItems, 0);
  FCount := 0;
end;

procedure TIntegerArray.Delete(aIndex: integer);
var i: integer;
begin
  if (aIndex>=Count) then RaiseError(err_InvalidIndex, [aIndex]);

  if (aIndex<Count-1) then
    for i := aIndex to Count-2 do fItems[i] := fItems[i+1];

  SetLength(fItems, Count-1);
  Dec(FCount);
end;

procedure TIntegerArray.SetItems(aIndex: integer; const Value: Integer);
begin
  if (aIndex < 0) or (aIndex >= Count) then RaiseError(err_ArrayIndexOutOfBounds,[aIndex]);
  if fItems[aIndex] <> Value then begin
    fItems[aIndex] := Value;
  end;
end;

procedure TIntegerArray.Resize(ElementCount: integer);
begin
  if fCount = ElementCount then Exit;
  SetLength(fItems, ElementCount);
  FCount := ElementCount;
end;

function TIntegerArray.GetCount: integer;
begin
  result := FCount;
end;

procedure TIntegerArray.Grow;
var
  Delta, Capacity: Integer;
begin
  Capacity := Length(fItems);
  if Capacity > 64 then
    Delta := Capacity div 4
  else
    if Capacity > 8 then
      Delta := 16
   else
      Delta := 4;
  SetLength(fItems, Capacity + Delta);
end;

function TIntegerArray.Add(const Value: Integer): integer;
begin
  Result := Count;
  if Length(fItems) = Result then
    Grow;
  fItems[result] := Value;
  Inc(fCount);
end;

function TIntegerArray.GetIndex(const aPropertyName: string;
  const aPropertyValue: Variant; StartFrom: integer;
  Options: TROSearchOptions): integer;
begin
  result := -1;
end;

procedure TIntegerArray.ReadComplex(ASerializer: TObject);
var
  lval: Integer;
  i: integer;
begin
  for i := 0 to Count-1 do begin
    with TROSerializer(ASerializer) do
      ReadInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, lval, i);
    Items[i] := lval;
  end;
end;

procedure TIntegerArray.WriteComplex(ASerializer: TObject);
var
  i: integer;
begin
  for i := 0 to Count-1 do
    with TROSerializer(ASerializer) do
      WriteInteger(GetArrayElementName(GetItemType, GetItemRef(i)), otSLong, fItems[i], i);
end;

{ TRdxLoginInfo }

procedure TRdxLoginInfo.Assign(iSource: TPersistent); 
var lSource: FactuGES_Intf.TRdxLoginInfo;
begin
  inherited Assign(iSource);
  if (iSource is FactuGES_Intf.TRdxLoginInfo) then begin
    lSource := FactuGES_Intf.TRdxLoginInfo(iSource);
    UserID := lSource.UserID;
    SessionID := lSource.SessionID;
    Usuario := lSource.Usuario;
    Perfiles.Assign(lSource.Perfiles);
    Empresas.Assign(lSource.Empresas);
  end;
end;

function TRdxLoginInfo.GetPerfiles: StringArray;
begin
  if (fPerfiles = nil) then fPerfiles := StringArray.Create();
  result := fPerfiles;
end;

function TRdxLoginInfo.GetEmpresas: TRdxEmpresasArray;
begin
  if (fEmpresas = nil) then fEmpresas := TRdxEmpresasArray.Create();
  result := fEmpresas;
end;

procedure TRdxLoginInfo.ReadComplex(ASerializer: TObject);
var
  l_Empresas: TRdxEmpresasArray;
  l_Perfiles: StringArray;
  l_SessionID: String;
  l_UserID: Integer;
  l_Usuario: String;
begin
  if TROSerializer(ASerializer).RecordStrictOrder then begin
    l_UserID := UserID;
    TROSerializer(ASerializer).ReadInteger('UserID', otSLong, l_UserID);
    UserID := l_UserID;
    l_SessionID := SessionID;
    TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID);
    SessionID := l_SessionID;
    l_Usuario := Usuario;
    TROSerializer(ASerializer).ReadUTF8String('Usuario', l_Usuario);
    Usuario := l_Usuario;
    l_Perfiles := Perfiles;
    TROSerializer(ASerializer).ReadArray('Perfiles', StringArray, l_Perfiles);
    if Perfiles <> l_Perfiles then Perfiles.Free;
    Perfiles := l_Perfiles;
    l_Empresas := Empresas;
    TROSerializer(ASerializer).ReadArray('Empresas', TRdxEmpresasArray, l_Empresas);
    if Empresas <> l_Empresas then Empresas.Free;
    Empresas := l_Empresas;
  end
  else begin
    l_Empresas := Empresas;
    TROSerializer(ASerializer).ReadArray('Empresas', TRdxEmpresasArray, l_Empresas);
    if Empresas <> l_Empresas then Empresas.Free;
    Empresas := l_Empresas;
    l_Perfiles := Perfiles;
    TROSerializer(ASerializer).ReadArray('Perfiles', StringArray, l_Perfiles);
    if Perfiles <> l_Perfiles then Perfiles.Free;
    Perfiles := l_Perfiles;
    l_SessionID := SessionID;
    TROSerializer(ASerializer).ReadUTF8String('SessionID', l_SessionID);
    SessionID := l_SessionID;
    l_UserID := UserID;
    TROSerializer(ASerializer).ReadInteger('UserID', otSLong, l_UserID);
    UserID := l_UserID;
    l_Usuario := Usuario;
    TROSerializer(ASerializer).ReadUTF8String('Usuario', l_Usuario);
    Usuario := l_Usuario;
  end;
end;

procedure TRdxLoginInfo.WriteComplex(ASerializer: TObject);
var
  l_Empresas: TRdxEmpresasArray;
  l_Perfiles: StringArray;
  l_SessionID: String;
  l_UserID: Integer;
  l_Usuario: String;
begin
  if TROSerializer(ASerializer).RecordStrictOrder then begin
    TROSerializer(ASerializer).ChangeClass(TRdxLoginInfo);
    l_UserID := UserID;
    TROSerializer(ASerializer).WriteInteger('UserID', otSLong, l_UserID);
    l_SessionID := SessionID;
    TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID);
    l_Usuario := Usuario;
    TROSerializer(ASerializer).WriteUTF8String('Usuario', l_Usuario);
    l_Perfiles := Perfiles;
    TROSerializer(ASerializer).WriteArray('Perfiles', l_Perfiles, StringArray);
    l_Empresas := Empresas;
    TROSerializer(ASerializer).WriteArray('Empresas', l_Empresas, TRdxEmpresasArray);
  end
  else begin
    l_Empresas := Empresas;
    TROSerializer(ASerializer).WriteArray('Empresas', l_Empresas, TRdxEmpresasArray);
    l_Perfiles := Perfiles;
    TROSerializer(ASerializer).WriteArray('Perfiles', l_Perfiles, StringArray);
    l_SessionID := SessionID;
    TROSerializer(ASerializer).WriteUTF8String('SessionID', l_SessionID);
    l_UserID := UserID;
    TROSerializer(ASerializer).WriteInteger('UserID', otSLong, l_UserID);
    l_Usuario := Usuario;
    TROSerializer(ASerializer).WriteUTF8String('Usuario', l_Usuario);
  end;
end;

{ TRdxLoginInfoCollection }
constructor TRdxLoginInfoCollection.Create;
begin
  inherited Create(TRdxLoginInfo);
end;

constructor TRdxLoginInfoCollection.Create(aItemClass: TCollectionItemClass);
begin
  inherited Create(aItemClass);
end;

function TRdxLoginInfoCollection.Add: TRdxLoginInfo;
begin
  result := TRdxLoginInfo(inherited Add);
end;

function TRdxLoginInfoCollection.GetItems(aIndex: integer): TRdxLoginInfo;
begin
  result := TRdxLoginInfo(inherited Items[aIndex]);
end;

procedure TRdxLoginInfoCollection.SetItems(aIndex: integer; const Value: TRdxLoginInfo);
begin
  TRdxLoginInfo(inherited Items[aIndex]).Assign(Value);
end;

{ CosrvContactos }

class function CosrvContactos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContactos;
begin
  result := TsrvContactos_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvContactos_Proxy }

function TsrvContactos_Proxy.__GetInterfaceName:string;
begin
  result := 'srvContactos';
end;

function TsrvContactos_Proxy.GenerateEtiquetasReport(const ContactosID: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateEtiquetasReport');
    __Message.Write('ContactosID', TypeInfo(String), ContactosID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvContactos_Proxy.DarTiendaDeUsuario(const ID_Empresa: Integer; const ID_Usuario: Integer): Integer;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarTiendaDeUsuario');
    __Message.Write('ID_Empresa', TypeInfo(Integer), ID_Empresa, []);
    __Message.Write('ID_Usuario', TypeInfo(Integer), ID_Usuario, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Integer), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvLogin }

class function CosrvLogin.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvLogin;
begin
  result := TsrvLogin_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvLogin_Proxy }

function TsrvLogin_Proxy.__GetInterfaceName:string;
begin
  result := 'srvLogin';
end;

function TsrvLogin_Proxy.Login2(const User: String; const Password: String; out LoginInfo: TRdxLoginInfo): Boolean;
begin
  try
    LoginInfo := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'Login2');
    __Message.Write('User', TypeInfo(String), User, []);
    __Message.Write('Password', TypeInfo(String), Password, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
    __Message.Read('LoginInfo', TypeInfo(FactuGES_Intf.TRdxLoginInfo), LoginInfo, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvLogin_Proxy.Login(const User: String; const Password: String): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'Login');
    __Message.Write('User', TypeInfo(String), User, []);
    __Message.Write('Password', TypeInfo(String), Password, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

procedure TsrvLogin_Proxy.Logout;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'Logout');
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

  finally
    __Message.FreeStream;
  end
end;

function TsrvLogin_Proxy.Ping: Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'Ping');
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvInventario }

class function CosrvInventario.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvInventario;
begin
  result := TsrvInventario_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvInventario_Proxy.__GetInterfaceName:string;
begin
  result := 'srvInventario';
end;

{ CosrvHistoricoMovimientos }

class function CosrvHistoricoMovimientos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvHistoricoMovimientos;
begin
  result := TsrvHistoricoMovimientos_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvHistoricoMovimientos_Proxy.__GetInterfaceName:string;
begin
  result := 'srvHistoricoMovimientos';
end;

{ CosrvEmpresas }

class function CosrvEmpresas.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEmpresas;
begin
  result := TsrvEmpresas_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvEmpresas_Proxy }

function TsrvEmpresas_Proxy.__GetInterfaceName:string;
begin
  result := 'srvEmpresas';
end;

function TsrvEmpresas_Proxy.DarTiendaUsuario(const ID_EMPRESA: Integer; const ID_USUARIO: Integer): Integer;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarTiendaUsuario');
    __Message.Write('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []);
    __Message.Write('ID_USUARIO', TypeInfo(Integer), ID_USUARIO, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Integer), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvEmpresas_Proxy.DarListaFormasPago: Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarListaFormasPago');
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvEmpresas_Proxy.DarListaTiposIVA: Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarListaTiposIVA');
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvConfiguracion }

class function CosrvConfiguracion.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvConfiguracion;
begin
  result := TsrvConfiguracion_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvConfiguracion_Proxy }

function TsrvConfiguracion_Proxy.__GetInterfaceName:string;
begin
  result := 'srvConfiguracion';
end;

function TsrvConfiguracion_Proxy.darValor(const CODIGO: String; const ValorPorDefecto: String): String;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'darValor');
    __Message.Write('CODIGO', TypeInfo(String), CODIGO, []);
    __Message.Write('ValorPorDefecto', TypeInfo(String), ValorPorDefecto, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(String), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvFamilias }

class function CosrvFamilias.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFamilias;
begin
  result := TsrvFamilias_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvFamilias_Proxy.__GetInterfaceName:string;
begin
  result := 'srvFamilias';
end;

{ CosrvFormasPago }

class function CosrvFormasPago.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFormasPago;
begin
  result := TsrvFormasPago_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvFormasPago_Proxy.__GetInterfaceName:string;
begin
  result := 'srvFormasPago';
end;

{ CosrvTiposIVA }

class function CosrvTiposIVA.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvTiposIVA;
begin
  result := TsrvTiposIVA_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvTiposIVA_Proxy.__GetInterfaceName:string;
begin
  result := 'srvTiposIVA';
end;

{ CosrvUsuarios }

class function CosrvUsuarios.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUsuarios;
begin
  result := TsrvUsuarios_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvUsuarios_Proxy.__GetInterfaceName:string;
begin
  result := 'srvUsuarios';
end;

{ CosrvAlmacenes }

class function CosrvAlmacenes.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlmacenes;
begin
  result := TsrvAlmacenes_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvAlmacenes_Proxy.__GetInterfaceName:string;
begin
  result := 'srvAlmacenes';
end;

{ CosrvArticulos }

class function CosrvArticulos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvArticulos;
begin
  result := TsrvArticulos_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvArticulos_Proxy.__GetInterfaceName:string;
begin
  result := 'srvArticulos';
end;

{ CosrvRecibosCliente }

class function CosrvRecibosCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRecibosCliente;
begin
  result := TsrvRecibosCliente_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvRecibosCliente_Proxy }

function TsrvRecibosCliente_Proxy.__GetInterfaceName:string;
begin
  result := 'srvRecibosCliente';
end;

function TsrvRecibosCliente_Proxy.GenerateReport(const ListaID: TIntegerArray): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvRecibosProveedor }

class function CosrvRecibosProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRecibosProveedor;
begin
  result := TsrvRecibosProveedor_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvRecibosProveedor_Proxy }

function TsrvRecibosProveedor_Proxy.__GetInterfaceName:string;
begin
  result := 'srvRecibosProveedor';
end;

function TsrvRecibosProveedor_Proxy.GenerateReport(const ID: Integer): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('ID', TypeInfo(Integer), ID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvRemesasCliente }

class function CosrvRemesasCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRemesasCliente;
begin
  result := TsrvRemesasCliente_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvRemesasCliente_Proxy }

function TsrvRemesasCliente_Proxy.__GetInterfaceName:string;
begin
  result := 'srvRemesasCliente';
end;

function TsrvRemesasCliente_Proxy.GenerateReport(const ID: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('ID', TypeInfo(String), ID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvRemesasProveedor }

class function CosrvRemesasProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvRemesasProveedor;
begin
  result := TsrvRemesasProveedor_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvRemesasProveedor_Proxy }

function TsrvRemesasProveedor_Proxy.__GetInterfaceName:string;
begin
  result := 'srvRemesasProveedor';
end;

function TsrvRemesasProveedor_Proxy.GenerateReport(const ID: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('ID', TypeInfo(String), ID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvFacturasCliente }

class function CosrvFacturasCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasCliente;
begin
  result := TsrvFacturasCliente_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvFacturasCliente_Proxy }

function TsrvFacturasCliente_Proxy.__GetInterfaceName:string;
begin
  result := 'srvFacturasCliente';
end;

function TsrvFacturasCliente_Proxy.GenerateReport(const FacturaID: TIntegerArray): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('FacturaID', TypeInfo(FactuGES_Intf.TIntegerArray), FacturaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvFacturasProveedor }

class function CosrvFacturasProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvFacturasProveedor;
begin
  result := TsrvFacturasProveedor_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvFacturasProveedor_Proxy }

function TsrvFacturasProveedor_Proxy.__GetInterfaceName:string;
begin
  result := 'srvFacturasProveedor';
end;

function TsrvFacturasProveedor_Proxy.GenerateReport(const FacturaID: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('FacturaID', TypeInfo(String), FacturaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvPresupuestosCliente }

class function CosrvPresupuestosCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPresupuestosCliente;
begin
  result := TsrvPresupuestosCliente_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvPresupuestosCliente_Proxy }

function TsrvPresupuestosCliente_Proxy.__GetInterfaceName:string;
begin
  result := 'srvPresupuestosCliente';
end;

function TsrvPresupuestosCliente_Proxy.GenerarInforme(const ListaID: TIntegerArray): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInforme');
    __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvPresupuestosCliente_Proxy.GenerarInformeEnPDF(const ListaID: TIntegerArray): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeEnPDF');
    __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvPedidosProveedor }

class function CosrvPedidosProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvPedidosProveedor;
begin
  result := TsrvPedidosProveedor_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvPedidosProveedor_Proxy }

function TsrvPedidosProveedor_Proxy.__GetInterfaceName:string;
begin
  result := 'srvPedidosProveedor';
end;

function TsrvPedidosProveedor_Proxy.GenerateReport(const ID: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('ID', TypeInfo(String), ID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvAlbaranesCliente }

class function CosrvAlbaranesCliente.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesCliente;
begin
  result := TsrvAlbaranesCliente_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvAlbaranesCliente_Proxy }

function TsrvAlbaranesCliente_Proxy.__GetInterfaceName:string;
begin
  result := 'srvAlbaranesCliente';
end;

function TsrvAlbaranesCliente_Proxy.GenerarInforme(const ListaID: TIntegerArray): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInforme');
    __Message.Write('ListaID', TypeInfo(FactuGES_Intf.TIntegerArray), ListaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvAlbaranesCliente_Proxy.GenerarInformeEtiquetas(const ID: Integer; const withRefCliente: Boolean): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeEtiquetas');
    __Message.Write('ID', TypeInfo(Integer), ID, []);
    __Message.Write('withRefCliente', TypeInfo(Boolean), withRefCliente, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvAlbaranesProveedor }

class function CosrvAlbaranesProveedor.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvAlbaranesProveedor;
begin
  result := TsrvAlbaranesProveedor_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvAlbaranesProveedor_Proxy }

function TsrvAlbaranesProveedor_Proxy.__GetInterfaceName:string;
begin
  result := 'srvAlbaranesProveedor';
end;

function TsrvAlbaranesProveedor_Proxy.GenerateReport(const ID: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('ID', TypeInfo(String), ID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvEjercicios }

class function CosrvEjercicios.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvEjercicios;
begin
  result := TsrvEjercicios_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvEjercicios_Proxy }

function TsrvEjercicios_Proxy.__GetInterfaceName:string;
begin
  result := 'srvEjercicios';
end;

function TsrvEjercicios_Proxy.GenerarPGC(const ID_EJERCICIO_COPIA: Integer; const ID_EJERCICIO: Integer): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarPGC');
    __Message.Write('ID_EJERCICIO_COPIA', TypeInfo(Integer), ID_EJERCICIO_COPIA, []);
    __Message.Write('ID_EJERCICIO', TypeInfo(Integer), ID_EJERCICIO, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvEjercicios_Proxy.darEjercicioActivo(const ID_EMPRESA: Integer): Integer;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'darEjercicioActivo');
    __Message.Write('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Integer), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvReferencias }

class function CosrvReferencias.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvReferencias;
begin
  result := TsrvReferencias_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvReferencias_Proxy }

function TsrvReferencias_Proxy.__GetInterfaceName:string;
begin
  result := 'srvReferencias';
end;

function TsrvReferencias_Proxy.DarNuevaReferencia(const NombreReferencia: String; const EmpresaID: Integer; const TiendaID: Integer): String;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNuevaReferencia');
    __Message.Write('NombreReferencia', TypeInfo(String), NombreReferencia, []);
    __Message.Write('EmpresaID', TypeInfo(Integer), EmpresaID, []);
    __Message.Write('TiendaID', TypeInfo(Integer), TiendaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(String), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvReferencias_Proxy.IncrementarValorReferencia(const NombreReferencia: String; const Valor: String; const EmpresaID: Integer; const TiendaID: Integer): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'IncrementarValorReferencia');
    __Message.Write('NombreReferencia', TypeInfo(String), NombreReferencia, []);
    __Message.Write('Valor', TypeInfo(String), Valor, []);
    __Message.Write('EmpresaID', TypeInfo(Integer), EmpresaID, []);
    __Message.Write('TiendaID', TypeInfo(Integer), TiendaID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvContabilidad }

class function CosrvContabilidad.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvContabilidad;
begin
  result := TsrvContabilidad_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvContabilidad_Proxy }

function TsrvContabilidad_Proxy.__GetInterfaceName:string;
begin
  result := 'srvContabilidad';
end;

function TsrvContabilidad_Proxy.TieneCuentaAsociada(const ID_CONTACTO: Integer; const ID_EMPRESA: Integer): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'TieneCuentaAsociada');
    __Message.Write('ID_CONTACTO', TypeInfo(Integer), ID_CONTACTO, []);
    __Message.Write('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvContabilidad_Proxy.AnadirSubCuentaCliente(const ID_CONTACTO: Integer; const ID_TIENDA: Integer; const ID_EMPRESA: Integer; const CLIENTE: String): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'AnadirSubCuentaCliente');
    __Message.Write('ID_CONTACTO', TypeInfo(Integer), ID_CONTACTO, []);
    __Message.Write('ID_TIENDA', TypeInfo(Integer), ID_TIENDA, []);
    __Message.Write('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []);
    __Message.Write('CLIENTE', TypeInfo(String), CLIENTE, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvContabilidad_Proxy.AnadirSubCuentaProveedor(const ID_CONTACTO: Integer; const ES_ACREEDOR: Integer; const ID_EMPRESA: Integer; const PROVEEDOR: String): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'AnadirSubCuentaProveedor');
    __Message.Write('ID_CONTACTO', TypeInfo(Integer), ID_CONTACTO, []);
    __Message.Write('ES_ACREEDOR', TypeInfo(Integer), ES_ACREEDOR, []);
    __Message.Write('ID_EMPRESA', TypeInfo(Integer), ID_EMPRESA, []);
    __Message.Write('PROVEEDOR', TypeInfo(String), PROVEEDOR, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvContabilidad_Proxy.DarNumOrdenAsiento: Integer;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarNumOrdenAsiento');
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Integer), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvUnidadesMedida }

class function CosrvUnidadesMedida.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvUnidadesMedida;
begin
  result := TsrvUnidadesMedida_Proxy.Create(aMessage, aTransportChannel);
end;

function TsrvUnidadesMedida_Proxy.__GetInterfaceName:string;
begin
  result := 'srvUnidadesMedida';
end;

{ CosrvComisiones }

class function CosrvComisiones.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvComisiones;
begin
  result := TsrvComisiones_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvComisiones_Proxy }

function TsrvComisiones_Proxy.__GetInterfaceName:string;
begin
  result := 'srvComisiones';
end;

function TsrvComisiones_Proxy.GenerateReport(const ComisionID: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerateReport');
    __Message.Write('ComisionID', TypeInfo(String), ComisionID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvProvinciasPoblaciones }

class function CosrvProvinciasPoblaciones.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvProvinciasPoblaciones;
begin
  result := TsrvProvinciasPoblaciones_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvProvinciasPoblaciones_Proxy }

function TsrvProvinciasPoblaciones_Proxy.__GetInterfaceName:string;
begin
  result := 'srvProvinciasPoblaciones';
end;

function TsrvProvinciasPoblaciones_Proxy.DarListaProvincias: Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarListaProvincias');
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvProvinciasPoblaciones_Proxy.DarListaPoblaciones(const ID_Provincia: Integer): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarListaPoblaciones');
    __Message.Write('ID_Provincia', TypeInfo(Integer), ID_Provincia, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvGestorDocumentos }

class function CosrvGestorDocumentos.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvGestorDocumentos;
begin
  result := TsrvGestorDocumentos_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvGestorDocumentos_Proxy }

function TsrvGestorDocumentos_Proxy.__GetInterfaceName:string;
begin
  result := 'srvGestorDocumentos';
end;

function TsrvGestorDocumentos_Proxy.DarListaFicheros(const Almacen: TRdxAlmacenes; const ID: Integer): StringArray;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DarListaFicheros');
    __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []);
    __Message.Write('ID', TypeInfo(Integer), ID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(DataAbstract4_Intf.StringArray), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorDocumentos_Proxy.DescargarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'DescargarFichero');
    __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []);
    __Message.Write('ID', TypeInfo(Integer), ID, []);
    __Message.Write('NombreFichero', TypeInfo(String), NombreFichero, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorDocumentos_Proxy.SubirFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String; const Fichero: Binary): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'SubirFichero');
    __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []);
    __Message.Write('ID', TypeInfo(Integer), ID, []);
    __Message.Write('NombreFichero', TypeInfo(String), NombreFichero, []);
    __Message.Write('Fichero', TypeInfo(Binary), Fichero, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorDocumentos_Proxy.EliminarFichero(const Almacen: TRdxAlmacenes; const ID: Integer; const NombreFichero: String): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'EliminarFichero');
    __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []);
    __Message.Write('ID', TypeInfo(Integer), ID, []);
    __Message.Write('NombreFichero', TypeInfo(String), NombreFichero, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorDocumentos_Proxy.EliminarID(const Almacen: TRdxAlmacenes; const ID: Integer): Boolean;
begin
  try
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'EliminarID');
    __Message.Write('Almacen', TypeInfo(FactuGES_Intf.TRdxAlmacenes), Almacen, []);
    __Message.Write('ID', TypeInfo(Integer), ID, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Boolean), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

{ CosrvGestorInformes }

class function CosrvGestorInformes.Create(const aMessage: IROMessage; aTransportChannel: IROTransportChannel): IsrvGestorInformes;
begin
  result := TsrvGestorInformes_Proxy.Create(aMessage, aTransportChannel);
end;

{ TsrvGestorInformes_Proxy }

function TsrvGestorInformes_Proxy.__GetInterfaceName:string;
begin
  result := 'srvGestorInformes';
end;

function TsrvGestorInformes_Proxy.GenerarInformeIVAClientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                            const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeIVAClientes');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDClientes', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDClientes, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeIVAProveedores(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                               const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeIVAProveedores');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDProveedores', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDProveedores, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoFacturasCli(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListadoIDClientes: TIntegerArray; 
                                                                   const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoFacturasCli');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListadoIDClientes', TypeInfo(FactuGES_Intf.TIntegerArray), ListadoIDClientes, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoFacturasProv(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                                    const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoFacturasProv');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDProveedores', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDProveedores, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoFacturasCliPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                                             const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoFacturasCliPendientes');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDClientes', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDClientes, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoFacturasProvPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                                              const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoFacturasProvPendientes');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDProveedores', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDProveedores, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoRecibosCliente(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                                      const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoRecibosCliente');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDClientes', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDClientes, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoRecibosProveedor(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                                        const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoRecibosProveedor');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDProveedores', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDProveedores, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoRecibosCliPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                                            const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoRecibosCliPendientes');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDClientes', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDClientes, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoRecibosProvPendientes(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDProveedores: TIntegerArray; 
                                                                             const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoRecibosProvPendientes');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDProveedores', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDProveedores, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

function TsrvGestorInformes_Proxy.GenerarInformeListadoPresupuestos(const IdEmpresa: Integer; const FechaInicio: DateTime; const FechaFin: DateTime; const ListaIDClientes: TIntegerArray; 
                                                                    const Desglosado: Boolean; const ImporteMinimo: Currency): Binary;
begin
  try
    result := nil;
    __Message.InitializeRequestMessage(__TransportChannel, 'FactuGES', __InterfaceName, 'GenerarInformeListadoPresupuestos');
    __Message.Write('IdEmpresa', TypeInfo(Integer), IdEmpresa, []);
    __Message.Write('FechaInicio', TypeInfo(DateTime), FechaInicio, [paIsDateTime]);
    __Message.Write('FechaFin', TypeInfo(DateTime), FechaFin, [paIsDateTime]);
    __Message.Write('ListaIDClientes', TypeInfo(FactuGES_Intf.TIntegerArray), ListaIDClientes, []);
    __Message.Write('Desglosado', TypeInfo(Boolean), Desglosado, []);
    __Message.Write('ImporteMinimo', TypeInfo(Currency), ImporteMinimo, []);
    __Message.Finalize;

    __TransportChannel.Dispatch(__Message);

    __Message.Read('Result', TypeInfo(Binary), result, []);
  finally
    __Message.UnsetAttributes(__TransportChannel);
    __Message.FreeStream;
  end
end;

initialization
  RegisterROClass(TRdxLoginInfo);
  RegisterROClass(TRdxEmpresasArray);
  RegisterROClass(TIntegerArray);
  RegisterProxyClass(IsrvContactos_IID, TsrvContactos_Proxy);
  RegisterProxyClass(IsrvLogin_IID, TsrvLogin_Proxy);
  RegisterProxyClass(IsrvInventario_IID, TsrvInventario_Proxy);
  RegisterProxyClass(IsrvHistoricoMovimientos_IID, TsrvHistoricoMovimientos_Proxy);
  RegisterProxyClass(IsrvEmpresas_IID, TsrvEmpresas_Proxy);
  RegisterProxyClass(IsrvConfiguracion_IID, TsrvConfiguracion_Proxy);
  RegisterProxyClass(IsrvFamilias_IID, TsrvFamilias_Proxy);
  RegisterProxyClass(IsrvFormasPago_IID, TsrvFormasPago_Proxy);
  RegisterProxyClass(IsrvTiposIVA_IID, TsrvTiposIVA_Proxy);
  RegisterProxyClass(IsrvUsuarios_IID, TsrvUsuarios_Proxy);
  RegisterProxyClass(IsrvAlmacenes_IID, TsrvAlmacenes_Proxy);
  RegisterProxyClass(IsrvArticulos_IID, TsrvArticulos_Proxy);
  RegisterProxyClass(IsrvRecibosCliente_IID, TsrvRecibosCliente_Proxy);
  RegisterProxyClass(IsrvRecibosProveedor_IID, TsrvRecibosProveedor_Proxy);
  RegisterProxyClass(IsrvRemesasCliente_IID, TsrvRemesasCliente_Proxy);
  RegisterProxyClass(IsrvRemesasProveedor_IID, TsrvRemesasProveedor_Proxy);
  RegisterProxyClass(IsrvFacturasCliente_IID, TsrvFacturasCliente_Proxy);
  RegisterProxyClass(IsrvFacturasProveedor_IID, TsrvFacturasProveedor_Proxy);
  RegisterProxyClass(IsrvPresupuestosCliente_IID, TsrvPresupuestosCliente_Proxy);
  RegisterProxyClass(IsrvPedidosProveedor_IID, TsrvPedidosProveedor_Proxy);
  RegisterProxyClass(IsrvAlbaranesCliente_IID, TsrvAlbaranesCliente_Proxy);
  RegisterProxyClass(IsrvAlbaranesProveedor_IID, TsrvAlbaranesProveedor_Proxy);
  RegisterProxyClass(IsrvEjercicios_IID, TsrvEjercicios_Proxy);
  RegisterProxyClass(IsrvReferencias_IID, TsrvReferencias_Proxy);
  RegisterProxyClass(IsrvContabilidad_IID, TsrvContabilidad_Proxy);
  RegisterProxyClass(IsrvUnidadesMedida_IID, TsrvUnidadesMedida_Proxy);
  RegisterProxyClass(IsrvComisiones_IID, TsrvComisiones_Proxy);
  RegisterProxyClass(IsrvProvinciasPoblaciones_IID, TsrvProvinciasPoblaciones_Proxy);
  RegisterProxyClass(IsrvGestorDocumentos_IID, TsrvGestorDocumentos_Proxy);
  RegisterProxyClass(IsrvGestorInformes_IID, TsrvGestorInformes_Proxy);


finalization
  UnregisterROClass(TRdxLoginInfo);
  UnregisterROClass(TRdxEmpresasArray);
  UnregisterROClass(TIntegerArray);
  UnregisterProxyClass(IsrvContactos_IID);
  UnregisterProxyClass(IsrvLogin_IID);
  UnregisterProxyClass(IsrvInventario_IID);
  UnregisterProxyClass(IsrvHistoricoMovimientos_IID);
  UnregisterProxyClass(IsrvEmpresas_IID);
  UnregisterProxyClass(IsrvConfiguracion_IID);
  UnregisterProxyClass(IsrvFamilias_IID);
  UnregisterProxyClass(IsrvFormasPago_IID);
  UnregisterProxyClass(IsrvTiposIVA_IID);
  UnregisterProxyClass(IsrvUsuarios_IID);
  UnregisterProxyClass(IsrvAlmacenes_IID);
  UnregisterProxyClass(IsrvArticulos_IID);
  UnregisterProxyClass(IsrvRecibosCliente_IID);
  UnregisterProxyClass(IsrvRecibosProveedor_IID);
  UnregisterProxyClass(IsrvRemesasCliente_IID);
  UnregisterProxyClass(IsrvRemesasProveedor_IID);
  UnregisterProxyClass(IsrvFacturasCliente_IID);
  UnregisterProxyClass(IsrvFacturasProveedor_IID);
  UnregisterProxyClass(IsrvPresupuestosCliente_IID);
  UnregisterProxyClass(IsrvPedidosProveedor_IID);
  UnregisterProxyClass(IsrvAlbaranesCliente_IID);
  UnregisterProxyClass(IsrvAlbaranesProveedor_IID);
  UnregisterProxyClass(IsrvEjercicios_IID);
  UnregisterProxyClass(IsrvReferencias_IID);
  UnregisterProxyClass(IsrvContabilidad_IID);
  UnregisterProxyClass(IsrvUnidadesMedida_IID);
  UnregisterProxyClass(IsrvComisiones_IID);
  UnregisterProxyClass(IsrvProvinciasPoblaciones_IID);
  UnregisterProxyClass(IsrvGestorDocumentos_IID);
  UnregisterProxyClass(IsrvGestorInformes_IID);

end.
