I have had a problem since March of this year and that is when trying to consume a Web Service done in C # from an App made in Delphi sends me a Access Violation whenever I call any method of that service. The web service unit was imported using the Wizard of Embarcadero Rad Studio , which generates several ttremotable methods.
However the application works in Windows , MacOS , Android and IOS devices 32 -Bits , but it always fails on IOS devices of 64-Bits . I have updated the versions of Embarcadero Rad Studio but the problem persists.
The code I leave below, I omitted some methods because the body was too big to publish.
ArrayOfClDetallePedidoComercial = array of clDetallePedidoComercial; { "http://tempuri.org/"[GblCplx] }
// ************************************************************************ //
// XML : clPagoMaestroComercial, global, <complexType>
// Namespace : http://tempuri.org/
// ************************************************************************ //
clPagoMaestroComercial = class(TRemotable)
private
FIdFormaPago: Integer;
FReferenciaPago: string;
FReferenciaPago_Specified: boolean;
FFechaHoraPago: TXSDateTime;
FImporte: TXSDecimal;
FIdReferencia: Integer;
FTipoReferencia: string;
FTipoReferencia_Specified: boolean;
FFormaPago: string;
FFormaPago_Specified: boolean;
procedure SetReferenciaPago(Index: Integer; const Astring: string);
function ReferenciaPago_Specified(Index: Integer): boolean;
procedure SetTipoReferencia(Index: Integer; const Astring: string);
function TipoReferencia_Specified(Index: Integer): boolean;
procedure SetFormaPago(Index: Integer; const Astring: string);
function FormaPago_Specified(Index: Integer): boolean;
public
destructor Destroy; override;
published
property IdFormaPago: Integer read FIdFormaPago write FIdFormaPago;
property ReferenciaPago: string Index (IS_OPTN) read FReferenciaPago write SetReferenciaPago stored ReferenciaPago_Specified;
property FechaHoraPago: TXSDateTime read FFechaHoraPago write FFechaHoraPago;
property Importe: TXSDecimal read FImporte write FImporte;
property IdReferencia: Integer read FIdReferencia write FIdReferencia;
property TipoReferencia: string Index (IS_OPTN) read FTipoReferencia write SetTipoReferencia stored TipoReferencia_Specified;
property FormaPago: string Index (IS_OPTN) read FFormaPago write SetFormaPago stored FormaPago_Specified;
end;
// ************************************************************************ //
// XML : clDetallePedidoComercial, global, <complexType>
// Namespace : http://tempuri.org/
// ************************************************************************ //
clDetallePedidoComercial = class(TRemotable)
private
FIdPedido: Integer;
FIdProducto: Integer;
FCantidad: TXSDecimal;
FPrecioUnitario: TXSDecimal;
FInicial: TXSDecimal;
FActual: TXSDecimal;
FCambios: TXSDecimal;
FNumeroProducto: string;
FNumeroProducto_Specified: boolean;
FProducto: string;
FProducto_Specified: boolean;
FDescripProducto: string;
FDescripProducto_Specified: boolean;
FPorcDescuento: TXSDecimal;
FImpuestos: TXSDecimal;
FSubTotal: TXSDecimal;
FImporte: TXSDecimal;
FIdDetallePedido: Integer;
FIEPS: TXSDecimal;
FDescuento: TXSDecimal;
procedure SetNumeroProducto(Index: Integer; const Astring: string);
function NumeroProducto_Specified(Index: Integer): boolean;
procedure SetProducto(Index: Integer; const Astring: string);
function Producto_Specified(Index: Integer): boolean;
procedure SetDescripProducto(Index: Integer; const Astring: string);
function DescripProducto_Specified(Index: Integer): boolean;
public
destructor Destroy; override;
published
property IdPedido: Integer read FIdPedido write FIdPedido;
property IdProducto: Integer read FIdProducto write FIdProducto;
property Cantidad: TXSDecimal read FCantidad write FCantidad;
property PrecioUnitario: TXSDecimal read FPrecioUnitario write FPrecioUnitario;
property Inicial: TXSDecimal read FInicial write FInicial;
property Actual: TXSDecimal read FActual write FActual;
property Cambios: TXSDecimal read FCambios write FCambios;
property NumeroProducto: string Index (IS_OPTN) read FNumeroProducto write SetNumeroProducto stored NumeroProducto_Specified;
property Producto: string Index (IS_OPTN) read FProducto write SetProducto stored Producto_Specified;
property DescripProducto: string Index (IS_OPTN) read FDescripProducto write SetDescripProducto stored DescripProducto_Specified;
property PorcDescuento: TXSDecimal read FPorcDescuento write FPorcDescuento;
property Impuestos: TXSDecimal read FImpuestos write FImpuestos;
property SubTotal: TXSDecimal read FSubTotal write FSubTotal;
property Importe: TXSDecimal read FImporte write FImporte;
property IdDetallePedido: Integer read FIdDetallePedido write FIdDetallePedido;
property IEPS: TXSDecimal read FIEPS write FIEPS;
property Descuento: TXSDecimal read FDescuento write FDescuento;
end;
// ************************************************************************ //
// XML : clZonaComercial, global, <complexType>
// Namespace : http://tempuri.org/
// ************************************************************************ //
clZonaComercial = class(TRemotable)
private
FIdZona: Integer;
FNombre: string;
FNombre_Specified: boolean;
procedure SetNombre(Index: Integer; const Astring: string);
function Nombre_Specified(Index: Integer): boolean;
published
property IdZona: Integer read FIdZona write FIdZona;
property Nombre: string Index (IS_OPTN) read FNombre write SetNombre stored Nombre_Specified;
end;
ArrayOfClZonaComercial = array of clZonaComercial; { "http://tempuri.org/"[GblCplx] }
// ************************************************************************ //
// XML : clPedidoComercial, global, <complexType>
// Namespace : http://tempuri.org/
// ************************************************************************ //
clPedidoComercial = class(TRemotable)
private
FIdPedido: Integer;
FFechaHora: TXSDateTime;
FIdCliente: Integer;
FFotoA: TByteDynArray;
FFotoA_Specified: boolean;
FFotoD: TByteDynArray;
FFotoD_Specified: boolean;
FLatA: Single;
FLonA: Single;
FLatD: Single;
FLonD: Single;
FFechaHoraTermino: TXSDateTime;
FImporteTotal: TXSDecimal;
FSaldo: TXSDecimal;
FImportePagado: TXSDecimal;
FRazonSocial: string;
FRazonSocial_Specified: boolean;
FReferencia: string;
FReferencia_Specified: boolean;
FSubTotal: TXSDecimal;
FImporteImpuestos: TXSDecimal;
FImporteImpuestosEsp: TXSDecimal;
Fobservaciones: string;
Fobservaciones_Specified: boolean;
procedure SetFotoA(Index: Integer; const ATByteDynArray: TByteDynArray);
function FotoA_Specified(Index: Integer): boolean;
procedure SetFotoD(Index: Integer; const ATByteDynArray: TByteDynArray);
function FotoD_Specified(Index: Integer): boolean;
procedure SetRazonSocial(Index: Integer; const Astring: string);
function RazonSocial_Specified(Index: Integer): boolean;
procedure SetReferencia(Index: Integer; const Astring: string);
function Referencia_Specified(Index: Integer): boolean;
procedure Setobservaciones(Index: Integer; const Astring: string);
function observaciones_Specified(Index: Integer): boolean;
public
destructor Destroy; override;
published
property IdPedido: Integer read FIdPedido write FIdPedido;
property FechaHora: TXSDateTime read FFechaHora write FFechaHora;
property IdCliente: Integer read FIdCliente write FIdCliente;
property FotoA: TByteDynArray Index (IS_OPTN) read FFotoA write SetFotoA stored FotoA_Specified;
property FotoD: TByteDynArray Index (IS_OPTN) read FFotoD write SetFotoD stored FotoD_Specified;
property LatA: Single read FLatA write FLatA;
property LonA: Single read FLonA write FLonA;
property LatD: Single read FLatD write FLatD;
property LonD: Single read FLonD write FLonD;
property FechaHoraTermino: TXSDateTime read FFechaHoraTermino write FFechaHoraTermino;
property ImporteTotal: TXSDecimal read FImporteTotal write FImporteTotal;
property Saldo: TXSDecimal read FSaldo write FSaldo;
property ImportePagado: TXSDecimal read FImportePagado write FImportePagado;
property RazonSocial: string Index (IS_OPTN) read FRazonSocial write SetRazonSocial stored RazonSocial_Specified;
property Referencia: string Index (IS_OPTN) read FReferencia write SetReferencia stored Referencia_Specified;
property SubTotal: TXSDecimal read FSubTotal write FSubTotal;
property ImporteImpuestos: TXSDecimal read FImporteImpuestos write FImporteImpuestos;
property ImporteImpuestosEsp: TXSDecimal read FImporteImpuestosEsp write FImporteImpuestosEsp;
property observaciones: string Index (IS_OPTN) read Fobservaciones write Setobservaciones stored observaciones_Specified;
end;
ArrayOfClPagoComercial = array of clPagoComercial; { "http://tempuri.org/"[GblCplx] }
ArrayOfClPagoMaestroComercial = array of clPagoMaestroComercial; { "http://tempuri.org/"[GblCplx] }
// ************************************************************************ //
// XML : clPagoComercial, global, <complexType>
// Namespace : http://tempuri.org/
// ************************************************************************ //
clPagoComercial = class(TRemotable)
private
FIdReferencia: Integer;
FIdFormaPago: Integer;
FFechaHoraPago: TXSDateTime;
FReferenciaPago: string;
FReferenciaPago_Specified: boolean;
FImporte: TXSDecimal;
FFormaPago: string;
FFormaPago_Specified: boolean;
procedure SetReferenciaPago(Index: Integer; const Astring: string);
function ReferenciaPago_Specified(Index: Integer): boolean;
procedure SetFormaPago(Index: Integer; const Astring: string);
function FormaPago_Specified(Index: Integer): boolean;
public
destructor Destroy; override;
published
property IdReferencia: Integer read FIdReferencia write FIdReferencia;
property IdFormaPago: Integer read FIdFormaPago write FIdFormaPago;
property FechaHoraPago: TXSDateTime read FFechaHoraPago write FFechaHoraPago;
property ReferenciaPago: string Index (IS_OPTN) read FReferenciaPago write SetReferenciaPago stored ReferenciaPago_Specified;
property Importe: TXSDecimal read FImporte write FImporte;
property FormaPago: string Index (IS_OPTN) read FFormaPago write SetFormaPago stored FormaPago_Specified;
end;
// ************************************************************************ //
// Namespace : http://tempuri.org/
// soapAction: http://tempuri.org/%operationName%
// transport : http://schemas.xmlsoap.org/soap/http
// style : document
// use : literal
// binding : wsComercialSoap
// service : wsComercial
// port : wsComercialSoap
// URL : http://www.ideasys.com.mx/ideaposws/wsComercial.asmx
// ************************************************************************ //
wsComercialSoap = interface(IInvokable)
['{1A05E5F4-63DC-6861-5FB7-9D690032A85A}']
function ObtenerClientes(const licencia: string; const usuario: string; const clave: string; const nombreCliente: string; const idDispositivo: string): ArrayOfClClienteComercial; stdcall;
function ObtenerProductos(const licencia: string; const usuario: string; const clave: string; const descripProducto: string; const idDispositivo: string): ArrayOfClProductoComercial; stdcall;
function AgregarCliente(const licencia: string; const usuario: string; const clave: string; const nombre: string; const lista: Integer; const CNOMBRECALLE: string;
const CNUMEROEXTERIOR: string; const CNUMEROINTERIOR: string; const CCOLONIA: string; const CCODIGOPOSTAL: string; const CTELEFONO1: string;
const CTELEFONO2: string; const CTELEFONO3: string; const CEMAIL: string; const CDIRECCIONWEB: string; const CPAIS: string;
const CESTADO: string; const CCIUDAD: string; const CMUNICIPIO: string; const FrecuenciaVisita: Integer; const idDispositivo: string;
const idZona: Integer): respuesta; stdcall;
function AgregarPedido(const licencia: string; const usuario: string; const clave: string; const FechaHora: TXSDateTime; const idCliente: Integer; const fotoA: TByteDynArray;
const fotoD: TByteDynArray; const latA: Single; const lonA: Single; const latD: Single; const lonD: Single;
const FechaHoraTermino: TXSDateTime; const observaciones: string; const idDispositivo: string): respuesta; stdcall;
function AgregarDetallePedido(const licencia: string; const usuario: string; const clave: string; const idPedido: Integer; const idProducto: Integer; const cantidad: TXSDecimal;
const precioUnitario: TXSDecimal; const cantidadInicial: TXSDecimal; const cantidadActual: TXSDecimal; const cantidadCambios: TXSDecimal; const idDispositivo: string
): respuesta; stdcall;
function AgregarPagoMaestro(const licencia: string; const usuario: string; const clave: string; const formaPago: string; const referenciaPago: string; const fechaPago: TXSDateTime;
const importe: TXSDecimal; const idReferencia: Integer; const tipoReferencia: string; const idDispositivo: string): respuesta; stdcall;
function ObtenerSaldoPorClienteyPedido(const licencia: string; const usuario: string; const clave: string; const idCliente: Integer; const idPedido: Integer; const idDispositivo: string
): respuesta; stdcall;
function ObtenerPedidosConSaldo(const licencia: string; const usuario: string; const clave: string; const idDispositivo: string): ArrayOfClPedidoComercial; stdcall;
function ObtenerPagosPorPedido(const licencia: string; const usuario: string; const clave: string; const idPedido: Integer; const idDispositivo: string): ArrayOfClPagoComercial; stdcall;
function ObtenerPagosMaestros(const licencia: string; const usuario: string; const clave: string; const idDispositivo: string): ArrayOfClPagoMaestroComercial; stdcall;
function ObtenerDetallesPedidoPorPedido(const licencia: string; const usuario: string; const clave: string; const idPedido: Integer; const idDispositivo: string): ArrayOfClDetallePedidoComercial; stdcall;
function ModificarReferenciaPedido(const licencia: string; const usuario: string; const clave: string; const idPedido: Integer; const referencia: string; const idDispositivo: string
): respuesta; stdcall;
function ObtenerPedidosConSaldoPorFechas(const licencia: string; const usuario: string; const clave: string; const fechaInicial: TXSDateTime; const fechaFinal: TXSDateTime; const idDispositivo: string
): ArrayOfClPedidoComercial; stdcall;
function ObtenerProductosPorVendedor(const licencia: string; const usuario: string; const clave: string; const descripProducto: string; const idDispositivo: string): ArrayOfClProductoComercial; stdcall;
function ObtenerZonas(const licencia: string; const usuario: string; const clave: string; const idDispositivo: string): ArrayOfClZonaComercial; stdcall;
function AgregarCliente2(const licencia: string; const usuario: string; const clave: string; const nombre: string; const lista: Integer; const CNOMBRECALLE: string;
const CNUMEROEXTERIOR: string; const CNUMEROINTERIOR: string; const CCOLONIA: string; const CCODIGOPOSTAL: string; const CTELEFONO1: string;
const CTELEFONO2: string; const CTELEFONO3: string; const CEMAIL: string; const CDIRECCIONWEB: string; const CPAIS: string;
const CESTADO: string; const CCIUDAD: string; const CMUNICIPIO: string; const FrecuenciaVisita: Integer; const idDispositivo: string;
const idZona: Integer): Integer; stdcall;
end;
function GetwsComercialSoap(UseWSDL: Boolean=System.False; Addr: string=''; HTTPRIO: THTTPRIO = nil): wsComercialSoap;
implementation
uses System.SysUtils;
function GetwsComercialSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): wsComercialSoap;
const
defWSDL = 'http://www.ideasys.com.mx/ideaposws/wsComercial.asmx?WSDL';
defURL = 'http://www.ideasys.com.mx/ideaposws/wsComercial.asmx';
defSvc = 'wsComercial';
defPrt = 'wsComercialSoap';
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = '') then
begin
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as wsComercialSoap);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
initialization
{ wsComercialSoap }
InvRegistry.RegisterInterface(TypeInfo(wsComercialSoap), 'http://tempuri.org/', 'utf-8');
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(wsComercialSoap), 'http://tempuri.org/%operationName%');
InvRegistry.RegisterInvokeOptions(TypeInfo(wsComercialSoap), ioDocument);
{ wsComercialSoap.ObtenerClientes }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerClientes', '',
'[ReturnName="ObtenerClientesResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerClientes', 'ObtenerClientesResult', '',
'[ArrayItemName="clClienteComercial"]');
{ wsComercialSoap.ObtenerProductos }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerProductos', '',
'[ReturnName="ObtenerProductosResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerProductos', 'ObtenerProductosResult', '',
'[ArrayItemName="clProductoComercial"]');
{ wsComercialSoap.AgregarCliente }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'AgregarCliente', '',
'[ReturnName="AgregarClienteResult"]', IS_OPTN);
{ wsComercialSoap.AgregarPedido }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'AgregarPedido', '',
'[ReturnName="AgregarPedidoResult"]', IS_OPTN);
{ wsComercialSoap.AgregarDetallePedido }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'AgregarDetallePedido', '',
'[ReturnName="AgregarDetallePedidoResult"]', IS_OPTN);
{ wsComercialSoap.AgregarPagoMaestro }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'AgregarPagoMaestro', '',
'[ReturnName="AgregarPagoMaestroResult"]', IS_OPTN);
{ wsComercialSoap.ObtenerSaldoPorClienteyPedido }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerSaldoPorClienteyPedido', '',
'[ReturnName="ObtenerSaldoPorClienteyPedidoResult"]', IS_OPTN);
{ wsComercialSoap.ObtenerPedidosConSaldo }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerPedidosConSaldo', '',
'[ReturnName="ObtenerPedidosConSaldoResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerPedidosConSaldo', 'ObtenerPedidosConSaldoResult', '',
'[ArrayItemName="clPedidoComercial"]');
{ wsComercialSoap.ObtenerPagosPorPedido }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerPagosPorPedido', '',
'[ReturnName="ObtenerPagosPorPedidoResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerPagosPorPedido', 'ObtenerPagosPorPedidoResult', '',
'[ArrayItemName="clPagoComercial"]');
{ wsComercialSoap.ObtenerPagosMaestros }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerPagosMaestros', '',
'[ReturnName="ObtenerPagosMaestrosResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerPagosMaestros', 'ObtenerPagosMaestrosResult', '',
'[ArrayItemName="clPagoMaestroComercial"]');
{ wsComercialSoap.ObtenerDetallesPedidoPorPedido }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerDetallesPedidoPorPedido', '',
'[ReturnName="ObtenerDetallesPedidoPorPedidoResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerDetallesPedidoPorPedido', 'ObtenerDetallesPedidoPorPedidoResult', '',
'[ArrayItemName="clDetallePedidoComercial"]');
{ wsComercialSoap.ModificarReferenciaPedido }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ModificarReferenciaPedido', '',
'[ReturnName="ModificarReferenciaPedidoResult"]', IS_OPTN);
{ wsComercialSoap.ObtenerPedidosConSaldoPorFechas }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerPedidosConSaldoPorFechas', '',
'[ReturnName="ObtenerPedidosConSaldoPorFechasResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerPedidosConSaldoPorFechas', 'ObtenerPedidosConSaldoPorFechasResult', '',
'[ArrayItemName="clPedidoComercial"]');
{ wsComercialSoap.ObtenerProductosPorVendedor }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerProductosPorVendedor', '',
'[ReturnName="ObtenerProductosPorVendedorResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerProductosPorVendedor', 'ObtenerProductosPorVendedorResult', '',
'[ArrayItemName="clProductoComercial"]');
{ wsComercialSoap.ObtenerZonas }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'ObtenerZonas', '',
'[ReturnName="ObtenerZonasResult"]', IS_OPTN);
InvRegistry.RegisterParamInfo(TypeInfo(wsComercialSoap), 'ObtenerZonas', 'ObtenerZonasResult', '',
'[ArrayItemName="clZonaComercial"]');
{ wsComercialSoap.AgregarCliente2 }
InvRegistry.RegisterMethodInfo(TypeInfo(wsComercialSoap), 'AgregarCliente2', '',
'[ReturnName="AgregarCliente2Result"]');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClPedidoComercial), 'http://tempuri.org/', 'ArrayOfClPedidoComercial');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClClienteComercial), 'http://tempuri.org/', 'ArrayOfClClienteComercial');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClProductoComercial), 'http://tempuri.org/', 'ArrayOfClProductoComercial');
RemClassRegistry.RegisterXSClass(clClienteComercial, 'http://tempuri.org/', 'clClienteComercial');
RemClassRegistry.RegisterXSClass(respuesta, 'http://tempuri.org/', 'respuesta');
RemClassRegistry.RegisterXSClass(clProductoComercial, 'http://tempuri.org/', 'clProductoComercial');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClDetallePedidoComercial), 'http://tempuri.org/', 'ArrayOfClDetallePedidoComercial');
RemClassRegistry.RegisterXSClass(clPagoMaestroComercial, 'http://tempuri.org/', 'clPagoMaestroComercial');
RemClassRegistry.RegisterXSClass(clDetallePedidoComercial, 'http://tempuri.org/', 'clDetallePedidoComercial');
RemClassRegistry.RegisterXSClass(clZonaComercial, 'http://tempuri.org/', 'clZonaComercial');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClZonaComercial), 'http://tempuri.org/', 'ArrayOfClZonaComercial');
RemClassRegistry.RegisterXSClass(clPedidoComercial, 'http://tempuri.org/', 'clPedidoComercial');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClPagoComercial), 'http://tempuri.org/', 'ArrayOfClPagoComercial');
RemClassRegistry.RegisterXSInfo(TypeInfo(ArrayOfClPagoMaestroComercial), 'http://tempuri.org/', 'ArrayOfClPagoMaestroComercial');
RemClassRegistry.RegisterXSClass(clPagoComercial, 'http://tempuri.org/', 'clPagoComercial');
end.