PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WEBDEV 22 → Creating Internal functions for your webservice (Criando funções Internas para o seu webservice)
Creating Internal functions for your webservice (Criando funções Internas para o seu webservice)
Started by adrianoboller, Dec., 19 2014 1:29 PM - 33 replies
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:29 PM




Procedure ws_conexao_sucesso(Tabela)

Resultado is string = ""

Resultado += "<Xml><Retorno>"
Resultado += "<"+ Tabela +" id="+Charact(34)+1+Charact(34)+">"
Resultado += "<OK>CONEXAO COM SUCESSO AO BANCO!!!!!!</OK>"
Resultado += "</"+ Tabela +">"
Resultado += "<TOTAL>1</TOTAL>"
Resultado += "</Retorno></Xml>"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:29 PM
Procedure ws_erro_conexao(Tabela)

Resultado is string = ""

Resultado += "<Xml><Retorno>"
Resultado += "<"+ Tabela +" id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>ERRO DE CONEXAO COM O BANCO: "+ HErrorInfo() +" - "+ ErrorInfo() +"</Erro>"
Resultado += "</"+ Tabela +">"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:29 PM
Procedure ws_erro_token(Tabela)

Resultado is string = ""

Resultado += "<Xml><Retorno>"
Resultado += "<"+ Tabela +" id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>ERRO TOKEN: "+ HErrorInfo() +" - "+ ErrorInfo() +"</Erro>"
Resultado += "</"+ Tabela +">"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:30 PM
Procedure ws_parametros_invalidos(Tabela)

Resultado is string = ""

Resultado += "<Xml><Retorno>"
Resultado += "<"+ Tabela +" id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>PARAMETROS INVALIDOS</Erro>"
Resultado += "</"+ Tabela +">"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:30 PM
Procedure ws_token(Token, Telefone_Imei, Acao, Metodo)

TokenOk is boolean = False

HReadSeekFirst(NG0001_WS_Token,NG0001_WS_Token.Token,Token,hKeepFilter)
IF HFound(NG0001_WS_Token) = True AND NG0001_WS_Token.Token = Token AND NG0001_WS_Token.Situacao = "A" AND NG0001_WS_Token.Telefone_IMEI = Telefone_Imei THEN
TokenOk = True
NG0001_WS_Token.DataUltimoAcesso = DateSys()
HModify(NG0001_WS_Token)
ELSE
TokenOk = False
NG0002_WS_Tentativas.TentativaAcesso = DateSys()
NG0002_WS_Tentativas.Token = Token
NG0002_WS_Tentativas.Metodo = Metodo
NG0002_WS_Tentativas.Acao = Acao
NG0002_WS_Tentativas.Telefone_IMEI = Telefone_Imei
HAdd(NG0001_WS_Token)
END

RESULT(TokenOk)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:30 PM
Procedure ws_token_invalido(Tabela)

Resultado is string = ""

Resultado += "<Xml><Retorno>"
Resultado += "<"+ Tabela +" id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>TOQUEM INVALIDO OU NAO INFORMADO</Erro>"
Resultado += "</"+ Tabela +">"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:31 PM
Procedure ws_xml_registro_comeco(Tabela, id)

Resultado is string = ""

Resultado = "<"+ Tabela +" id="+Charact(34)+ id +Charact(34)+">" // Tag = <Avisos id=1> controle de registros

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:31 PM
Procedure ws_xml_registro_corpo(Campo, Valor)

Resultado is string = ""

Resultado = "<"+ Campo +">" + NoSpace(Valor) + "</"+ Campo +">"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:31 PM
Procedure ws_xml_registro_final(Tabela)

Resultado is string = ""

Resultado = "</"+ Tabela +">"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:31 PM
Procedure ws_zero_registros(Tabela)

Resultado is string = ""

Resultado += "<"+ Tabela +" id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>Registro(s) nao encontrado(s)</Erro>"
Resultado += "</"+ Tabela +">"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:32 PM
Procedure ws_mobile_mot_cancel(Token, Telefone_Imei, Acao, Data_hora_ultima_alteracao)

//Token = Codigo unico de acesso com o parceiro ou dispositivo mobile
//Telefone = Numero do Telefone ou Celular
//ACAO = Ler, Incluir, Alterar, Excluir

//Variaveis
X is int = 0
Resultado is string = ""
TokenOk is boolean = False
Metodo is string = "ws_mobile_mot_cancel"
Tabela is string = "ACT297_MOTIVO_CANCELAMENTO"

IF Token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_erro_conexao(Tabela)

ELSE

TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)

IF TokenOk = False THEN

Resultado = ws_erro_token(Tabela)

END


//Filtro de leitura
IF TokenOk = True AND Upper(Acao) = "SELECT" AND Data_hora_ultima_alteracao = " " THEN

Resultado += "<Xml><Retorno>"

FOR EACH ACT297_MOTIVO_CANCELAMENTO

//Sem filtro

X += 1

Resultado += ws_xml_registro_comeco(Tabela, X)

Resultado += ws_xml_registro_corpo("cod_motivo_cancel", ACT297_MOTIVO_CANCELAMENTO.cod_motivo_cancel)
Resultado += ws_xml_registro_corpo("des_motivo", ACT297_MOTIVO_CANCELAMENTO.des_motivo)
Resultado += ws_xml_registro_corpo("ide_ativo", ACT297_MOTIVO_CANCELAMENTO.ide_ativo)
Resultado += ws_xml_registro_corpo("dat_hora_ultima_altera", ACT297_MOTIVO_CANCELAMENTO.dat_hora_ultima_altera)

Resultado += ws_xml_registro_final(Tabela)


END

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE IF TokenOk = True AND Upper(Acao) = "SELECT" AND Data_hora_ultima_alteracao <> "" THEN

Resultado += "<Xml><Retorno>"

FOR EACH ACT297_MOTIVO_CANCELAMENTO
//Com filtro
IF ACT297_MOTIVO_CANCELAMENTO.dat_hora_ultima_altera = Data_hora_ultima_alteracao

X += 1

Resultado += ws_xml_registro_comeco(Tabela, X)

Resultado += ws_xml_registro_corpo("cod_motivo_cancel", ACT297_MOTIVO_CANCELAMENTO.cod_motivo_cancel)
Resultado += ws_xml_registro_corpo("des_motivo", ACT297_MOTIVO_CANCELAMENTO.des_motivo)
Resultado += ws_xml_registro_corpo("ide_ativo", ACT297_MOTIVO_CANCELAMENTO.ide_ativo)
Resultado += ws_xml_registro_corpo("dat_hora_ultima_altera", ACT297_MOTIVO_CANCELAMENTO.dat_hora_ultima_altera)

Resultado += ws_xml_registro_final(Tabela)

END

END

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>"
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_parametros_invalidos(Tabela)

END

END


HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

RESULT (Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:32 PM
Procedure ws_verifica_conexao()

x is int = 0

Resultado is string= ""

OkConn is boolean = False

// Opening the connection
OkConn = HOpenConnection(ConnNativa)

Resultado += "<AbriuConnexao> " + OkConn + " </AbriuConnexao>"

IF OkConn = True
Resultado += ws_conexao_sucesso("Tabelas")
ELSE
Resultado += ws_erro_conexao("Tabelas")
END

OkConn = HCloseConnection(ConnNativa)

Resultado += "<FechouConnexao>" + OkConn + "</FechouConnexao>"

RESULT(Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 19 2014 - 1:33 PM
:merci:
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 22 2014 - 2:57 PM
Exemple de Procedure Webservice

Procedure ws_convenio_corridaautorizafatura(Token, Telefone_Imei, Acao, cod_client_conven, cod_centro_custo, Ano)

//Token = Codigo unico de acesso com o parceiro ou dispositivo mobile
//Telefone = Numero do Telefone ou Celular
//ACAO = Ler, Incluir, Alterar, Excluir


//Variaveis
ok is boolean
X is int = 0
Resultado is string = ""
TokenOk is boolean = False
Metodo is string = "ws_convenio_corridaautorizafatura"
Tabela is string = "ACT263_CORRIDA_AUTORIZA_FATURA"

IF Token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado += "<Xml><Retorno>"
Resultado = ws_conexao_falha(Tabela)
Resultado += "</Retorno></Xml>"

ELSE

TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)

IF TokenOk = False THEN

Resultado = ws_erro_token(Tabela)

END

//Filtro de leitura
IF TokenOk = True AND Upper(Acao) = "SELECT" AND cod_client_conven <> "" AND cod_centro_custo <> "" THEN

Resultado += "<Xml><Retorno>"

ok = HExecuteQuery(QRY_ACT263_CORRIDA_AUTORIZA_FATURA,hQueryDefault+hWithFilter,Ano,cod_client_conven,cod_centro_custo)

FOR EACH QRY_ACT263_CORRIDA_AUTORIZA_FATURA

//Sem filtro
IF NoSpace(QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_client_conven) = NoSpace(cod_client_conven) AND...
NoSpace(QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_centro_custo) = NoSpace(cod_centro_custo)

X += 1

Resultado += ws_xml_registro_comeco(Tabela, X)

Resultado += ws_xml_registro_corpo("cod_client_conven", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_client_conven)
Resultado += ws_xml_registro_corpo("cod_centro_custo", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_centro_custo)
Resultado += ws_xml_registro_corpo("cod_embarq", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_embarq)
Resultado += ws_xml_registro_corpo("cod_libera_pagame_eletro", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_libera_pagame_eletro)
Resultado += ws_xml_registro_corpo("cod_lograd_pesqui_desemb", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_lograd_pesqui_desemb)
Resultado += ws_xml_registro_corpo("cod_pagame_eletro_autori", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.cod_pagame_eletro_autori)
Resultado += ws_xml_registro_corpo("des_observ_local_refere_desemb", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.des_observ_local_refere_desemb)
Resultado += ws_xml_registro_corpo("ide_corrid_tercei", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.ide_corrid_tercei)
Resultado += ws_xml_registro_corpo("nom_lograd_local_desemb", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.nom_lograd_local_desemb)
Resultado += ws_xml_registro_corpo("num_ano_corrid", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.num_ano_corrid)
Resultado += ws_xml_registro_corpo("num_corrid", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.num_corrid)
Resultado += ws_xml_registro_corpo("num_local_desemb", QRY_ACT263_CORRIDA_AUTORIZA_FATURA.num_local_desemb)

Resultado += ws_xml_registro_final(Tabela)

END
END

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_parametros_invalidos(Tabela)

END

END


HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

RESULT (Resultado)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 22 2014 - 2:59 PM


//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 22 2014 - 2:59 PM
SELECT
ACT263_CORRIDA_AUTORIZA_FATURA.cod_client_conven AS cod_client_conven,
ACT263_CORRIDA_AUTORIZA_FATURA.cod_centro_custo AS cod_centro_custo,
ACT263_CORRIDA_AUTORIZA_FATURA.num_ano_corrid AS num_ano_corrid,
ACT263_CORRIDA_AUTORIZA_FATURA.num_corrid AS num_corrid,
ACT263_CORRIDA_AUTORIZA_FATURA.cod_lograd_pesqui_desemb AS cod_lograd_pesqui_desemb,
ACT263_CORRIDA_AUTORIZA_FATURA.nom_lograd_local_desemb AS nom_lograd_local_desemb,
ACT263_CORRIDA_AUTORIZA_FATURA.num_local_desemb AS num_local_desemb,
ACT263_CORRIDA_AUTORIZA_FATURA.des_observ_local_refere_desemb AS des_observ_local_refere_desemb,
ACT263_CORRIDA_AUTORIZA_FATURA.cod_embarq AS cod_embarq,
ACT263_CORRIDA_AUTORIZA_FATURA.cod_libera_pagame_eletro AS cod_libera_pagame_eletro,
ACT263_CORRIDA_AUTORIZA_FATURA.cod_pagame_eletro_autori AS cod_pagame_eletro_autori,
ACT263_CORRIDA_AUTORIZA_FATURA.ide_corrid_tercei AS ide_corrid_tercei
FROM
ACT263_CORRIDA_AUTORIZA_FATURA
WHERE

(
ACT263_CORRIDA_AUTORIZA_FATURA.num_ano_corrid = {p_Ano}
ANDACT263_CORRIDA_AUTORIZA_FATURA.cod_client_conven = {p_Cliente}
ANDACT263_CORRIDA_AUTORIZA_FATURA.cod_centro_custo = {P_CentroCusto}
)
OR
(
{p_Ano} = ''
ANDACT263_CORRIDA_AUTORIZA_FATURA.cod_client_conven = {p_Cliente}
ANDACT263_CORRIDA_AUTORIZA_FATURA.cod_centro_custo = {P_CentroCusto}
)
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 22 2014 - 3:02 PM


//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on December, 24 2014 - 5:55 PM
//hostimage.webdev.info/avatars/M6hU4kcVXVkIg7k7ylOEig
Registered member
1 message
Popularité : +1 (1 vote)
Posted on December, 28 2014 - 5:27 AM
Merci beaucoup pour ces infos.
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on January, 07 2015 - 2:22 PM
USE [producao]
GO
/****** Object: Table [dbo].[NG0002_WS_Tentativas] Script Date: 01/07/2015 11:07:44 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[NG0002_WS_Tentativas](
[TentativaAcesso] [datetime] NOT NULL,
[Token] [nvarchar](50) NULL,
[Telefone_IMEI] [nvarchar](50) NULL,
[Metodo] [nvarchar](50) NULL,
[Acao] [nvarchar](15) NULL,
CONSTRAINT [PK_NG0002_WS_Tentativas] PRIMARY KEY CLUSTERED
(
[TentativaAcesso] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on January, 07 2015 - 2:22 PM
USE [producao]
GO
/****** Object: Table [dbo].[NG0001_WS_Token] Script Date: 01/07/2015 11:07:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[NG0001_WS_Token](
[Token] [nvarchar](50) NOT NULL,
[Empresa] [nvarchar](50) NULL,
[CNPJ] [nvarchar](15) NULL,
[Telefone_IMEI] [nvarchar](50) NULL,
[Situacao] [nvarchar](1) NULL,
[DataCadastro] [datetime] NULL,
[DataUltimoAcesso] [datetime] NULL,
CONSTRAINT [PK_WS_Token] PRIMARY KEY CLUSTERED
(
[Token] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on January, 07 2015 - 4:46 PM
USE [producao]
GO
/****** Object: UserDefinedFunction dbo.NG0001_Function_IncluirChamadaTaxi Script Date: 01/06/2015 19:07:00 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

Create FUNCTION [dbo].[NG0001_Function_IncluirChamadaTaxi]
(@AnoAtualint,
@XXX01int,
@num_ano_corridint,
@num_corridint,
@ide_situac_corridVARCHAR(1),
@dat_hora_corridDATETIME,
@seq_telefoint,
@dat_hora_cadastDATETIME,
@cod_usuari_cadastVARCHAR(10),
@cod_lograd_pesquiint,
@nom_lograd_localVARCHAR(70),
@num_localint,
@des_comple_localVARCHAR(15),
@cod_tipo_carroint,
@qtd_carro_soliciint,
@cod_comuniint,
@nom_usuariVARCHAR(30),
@ide_nao_fumantVARCHAR(1),
@ide_nao_gasVARCHAR(1),
@ide_ar_condicVARCHAR(1),
@ide_cartaoVARCHAR(1),
@ide_carro_novoVARCHAR(1),
@ide_exectvVARCHAR(1),
@des_observVARCHAR(254),
@des_observ_local_refereVARCHAR(254),
@cod_usuari_operadVARCHAR(10),
@dat_hora_atendiDATETIME,
@num_ponto_refere_endereint,
@num_ponto_atendiint,
@num_unidad_atendiint,
@cod_orgaoVARCHAR(12),
@cod_centrl_telefoint,
@num_ramalint,
@ide_situac_client_call_centerint,
@cod_clientint,
@seq_autorzint,
@cod_usuari_cancelVARCHAR(10),
@dat_hora_cancelDATETIME,
@des_motivo_cancelVARCHAR(50),
@ide_fumantVARCHAR(1),
@dat_hora_final_bloqueDATETIME,
@num_unidad_preferint,
@dat_hora_soliciDATETIME,
@qtd_minuto_anteciint,
@ide_insufiVARCHAR(1),
@des_observ_compleVARCHAR(254),
@ide_priori_cadastint,
@cod_forma_pagameint,
@ide_encomeVARCHAR(1),
@cod_marca_veiculint,
@cod_modelo_veiculint,
@des_observ_internVARCHAR(100),
@cod_lograd_entreg_encomeint,
@nom_lograd_entreg_encomeVARCHAR(50),
@num_local_entreg_encomeint,
@des_comple_local_entreg_encomeVARCHAR(15),
@ide_cdVARCHAR(1),
@ide_dvdVARCHAR(1),
@ide_navegd_gpsVARCHAR(1),
@ide_intrntVARCHAR(1),
@ide_viagemVARCHAR(1),
@ide_conexa_bateriVARCHAR(1),
@dat_hora_inicio_nagyroDATETIME,
@ide_jovemVARCHAR(1),
@ide_trocar_pneuVARCHAR(1),
@ide_engateVARCHAR(1),
@seq_usuari_web_cadastint,
@ide_forma_seleca_corridVARCHAR(1),
@ide_carro_altoVARCHAR(1),
@ide_carro_baixoVARCHAR(1),
@ide_porta_malas_grandeVARCHAR(1),
@num_call_centerint,
@cod_client_celulaint,
@XXX02 int,
@num_ano_corrid2int,
@num_corrid2 int,
@cod_client_celula2int,
@des_lograd_origemVARCHAR(70),
@num_lograd_origemint,
@des_comple_origemVARCHAR(50),
@nom_cidade_origemVARCHAR(50),
@des_lograd_destinVARCHAR(120),
@num_lograd_destinint,
@des_comple_destinVARCHAR(40),
@des_prefer_corridVARCHAR(254),
@cod_client_convenint,
@cod_matric_convenVARCHAR(10),
@ide_forma_pagameVARCHAR(1),
@cod_forma_pagame_cartaoint,
@dat_hora_ultima_alteraDATETIME,
@dat_hora_arquivDATETIME,
@cod_motivo_cancelint,
@val_distan_destinint,
@val_tarifa_bandei_1int,
@val_tarifa_bandei_2int,
@finalidadeVARCHAR(50),
@observacaoVARCHAR(255),
@XXX03 int)


RETURNS int
AS
RETURN
(

--TESTE
--set @AnoAtual = 2015;


--Numeracao
--###################################################################
UPDATE numeracao SET num_ultima_numera = (
(
SELECT num_ultima_numera
FROM NUMERACAO
WHERE ide_numera = 'ACT263_CORRIDA'
AND cod_orgao = '0'
AND num_ano_refere = @AnoAtual
)
+ 1)
WHERE ide_numera = 'ACT263_CORRIDA'
AND cod_orgao = '0'
AND num_ano_refere = @AnoAtual;

IF @@ERROR <> 0
@xxx01 = 1
@@ERROR = 0
END
--###################################################################



--Incluir Corrida
--###################################################################
INSERT INTO act263_corrida
(
num_ano_corrid,
num_corrid,
ide_situac_corrid,
dat_hora_corrid,
seq_telefo,
dat_hora_cadast,
cod_usuari_cadast,
cod_lograd_pesqui,
nom_lograd_local,
num_local,
des_comple_local,
cod_tipo_carro,
qtd_carro_solici,
cod_comuni,
nom_usuari,
ide_nao_fumant,
ide_nao_gas,
ide_ar_condic,
ide_cartao,
ide_carro_novo,
ide_exectv,
des_observ,
des_observ_local_refere,
cod_usuari_operad,
dat_hora_atendi,
num_ponto_refere_endere,
num_ponto_atendi,
num_unidad_atendi,
cod_orgao,
cod_centrl_telefo,
num_ramal,
ide_situac_client_call_center,
cod_client,
seq_autorz,
cod_usuari_cancel,
dat_hora_cancel,
des_motivo_cancel,
ide_fumant,
dat_hora_final_bloque,
num_unidad_prefer,
dat_hora_solici,
qtd_minuto_anteci,
ide_insufi,
des_observ_comple,
ide_priori_cadast,
cod_forma_pagame,
ide_encome,
cod_marca_veicul,
cod_modelo_veicul,
des_observ_intern,
cod_lograd_entreg_encome,
nom_lograd_entreg_encome,
num_local_entreg_encome,
des_comple_local_entreg_encome,
ide_cd,
ide_dvd,
ide_navegd_gps,
ide_intrnt,
ide_viagem,
ide_conexa_bateri,
dat_hora_inicio_nagyro,
ide_jovem,
ide_trocar_pneu,
ide_engate,
seq_usuari_web_cadast,
ide_forma_seleca_corrid,
ide_carro_alto,
ide_carro_baixo,
ide_porta_malas_grande,
num_call_center,
cod_client_celula
)
VALUES
(
@num_ano_corrid,
@num_corrid,
@ide_situac_corrid,
@dat_hora_corrid,
@seq_telefo,
@dat_hora_cadast,
@cod_usuari_cadast,
@cod_lograd_pesqui,
@nom_lograd_local,
@num_local,
@des_comple_local,
@cod_tipo_carro,
@qtd_carro_solici,
@cod_comuni,
@nom_usuari,
@ide_nao_fumant,
@ide_nao_gas,
@ide_ar_condic,
@ide_cartao,
@ide_carro_novo,
@ide_exectv,
@des_observ,
@des_observ_local_refere,
@cod_usuari_operad,
@dat_hora_atendi,
@num_ponto_refere_endere,
@num_ponto_atendi,
@num_unidad_atendi,
@cod_orgao,
@cod_centrl_telefo,
@num_ramal,
@ide_situac_client_call_center,
@cod_client,
@seq_autorz,
@cod_usuari_cancel,
@dat_hora_cancel,
@des_motivo_cancel,
@ide_fumant,
@dat_hora_final_bloque,
@num_unidad_prefer,
@dat_hora_solici,
@qtd_minuto_anteci,
@ide_insufi,
@des_observ_comple,
@ide_priori_cadast,
@cod_forma_pagame,
@ide_encome,
@cod_marca_veicul,
@cod_modelo_veicul,
@des_observ_intern,
@cod_lograd_entreg_encome,
@nom_lograd_entreg_encome,
@num_local_entreg_encome,
@des_comple_local_entreg_encome,
@ide_cd,
@ide_dvd,
@ide_navegd_gps,
@ide_intrnt,
@ide_viagem,
@ide_conexa_bateri,
@dat_hora_inicio_nagyro,
@ide_jovem,
@ide_trocar_pneu,
@ide_engate,
@seq_usuari_web_cadast,
@ide_forma_seleca_corrid,
@ide_carro_alto,
@ide_carro_baixo,
@ide_porta_malas_grande,
@num_call_center,
@cod_client_celula );

IF @@ERROR <> 0
@xxx02 = 1;
@@ERROR = 0;
END
--###################################################################



-- Incluir Chamada Taxi
--###################################################################
INSERT INTO ACT297_CHAMADA_TAXI
(
num_ano_corrid,
num_corrid,
cod_client_celula,
des_lograd_origem,
num_lograd_origem,
des_comple_origem,
nom_cidade_origem,
des_lograd_destin,
num_lograd_destin,
des_comple_destin,
des_prefer_corrid,
cod_client_conven,
cod_matric_conven,
ide_forma_pagame,
cod_forma_pagame_cartao,
dat_hora_ultima_altera,
dat_hora_arquiv,
cod_motivo_cancel,
val_distan_destin,
val_tarifa_bandei_1,
val_tarifa_bandei_2,
finalidade,
observacao
)
VALUES
(
@num_ano_corrid2,
@num_corrid2,
@cod_client_celula2,
@des_lograd_origem,
@num_lograd_origem,
@des_comple_origem,
@nom_cidade_origem,
@des_lograd_destin,
@num_lograd_destin,
@des_comple_destin,
@des_prefer_corrid,
@cod_client_conven,
@cod_matric_conven,
@ide_forma_pagame,
@cod_forma_pagame_cartao,
@dat_hora_ultima_altera,
@dat_hora_arquiv,
@cod_motivo_cancel,
@val_distan_destin,
@val_tarifa_bandei_1,
@val_tarifa_bandei_2,
@finalidade,
@observacao);

IF @@ERROR <> 0
@xxx03 = 1;
@@ERROR = 0;
END

--###################################################################

IF @xxx01 = 1 AND @xxx02 = 1 AND @xxx03 = 1
RETURN 0;
ELSE
RETURN 1;
END

--###################################################################

END
);
GO
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on January, 07 2015 - 8:11 PM
Criei uma procedure em vez de function para ser executada pelo webservice, vejam como ficou o exemplo:

USE [producao]
GO

CREATE PROCEDURE NG0001_Procedure_IncluirChamadaTaxi @AnoAtualint,
@XXX01int,
@num_ano_corridint,
@num_corridint,
@ide_situac_corridVARCHAR(1),
@dat_hora_corridDATETIME,
@seq_telefoint,
@dat_hora_cadastDATETIME,
@cod_usuari_cadastVARCHAR(10),
@cod_lograd_pesquiint,
@nom_lograd_localVARCHAR(70),
@num_localint,
@des_comple_localVARCHAR(15),
@cod_tipo_carroint,
@qtd_carro_soliciint,
@cod_comuniint,
@nom_usuariVARCHAR(30),
@ide_nao_fumantVARCHAR(1),
@ide_nao_gasVARCHAR(1),
@ide_ar_condicVARCHAR(1),
@ide_cartaoVARCHAR(1),
@ide_carro_novoVARCHAR(1),
@ide_exectvVARCHAR(1),
@des_observVARCHAR(254),
@des_observ_local_refereVARCHAR(254),
@cod_usuari_operadVARCHAR(10),
@dat_hora_atendiDATETIME,
@num_ponto_refere_endereint,
@num_ponto_atendiint,
@num_unidad_atendiint,
@cod_orgaoVARCHAR(12),
@cod_centrl_telefoint,
@num_ramalint,
@ide_situac_client_call_centerint,
@cod_clientint,
@seq_autorzint,
@cod_usuari_cancelVARCHAR(10),
@dat_hora_cancelDATETIME,
@des_motivo_cancelVARCHAR(50),
@ide_fumantVARCHAR(1),
@dat_hora_final_bloqueDATETIME,
@num_unidad_preferint,
@dat_hora_soliciDATETIME,
@qtd_minuto_anteciint,
@ide_insufiVARCHAR(1),
@des_observ_compleVARCHAR(254),
@ide_priori_cadastint,
@cod_forma_pagameint,
@ide_encomeVARCHAR(1),
@cod_marca_veiculint,
@cod_modelo_veiculint,
@des_observ_internVARCHAR(100),
@cod_lograd_entreg_encomeint,
@nom_lograd_entreg_encomeVARCHAR(50),
@num_local_entreg_encomeint,
@des_comple_local_entreg_encomeVARCHAR(15),
@ide_cdVARCHAR(1),
@ide_dvdVARCHAR(1),
@ide_navegd_gpsVARCHAR(1),
@ide_intrntVARCHAR(1),
@ide_viagemVARCHAR(1),
@ide_conexa_bateriVARCHAR(1),
@dat_hora_inicio_nagyroDATETIME,
@ide_jovemVARCHAR(1),
@ide_trocar_pneuVARCHAR(1),
@ide_engateVARCHAR(1),
@seq_usuari_web_cadastint,
@ide_forma_seleca_corridVARCHAR(1),
@ide_carro_altoVARCHAR(1),
@ide_carro_baixoVARCHAR(1),
@ide_porta_malas_grandeVARCHAR(1),
@num_call_centerint,
@cod_client_celulaint,
@XXX02 int,
@num_ano_corrid2int,
@num_corrid2 int,
@cod_client_celula2int,
@des_lograd_origemVARCHAR(70),
@num_lograd_origemint,
@des_comple_origemVARCHAR(50),
@nom_cidade_origemVARCHAR(50),
@des_lograd_destinVARCHAR(120),
@num_lograd_destinint,
@des_comple_destinVARCHAR(40),
@des_prefer_corridVARCHAR(254),
@cod_client_convenint,
@cod_matric_convenVARCHAR(10),
@ide_forma_pagameVARCHAR(1),
@cod_forma_pagame_cartaoint,
@dat_hora_ultima_alteraDATETIME,
@dat_hora_arquivDATETIME,
@cod_motivo_cancelint,
@val_distan_destinint,
@val_tarifa_bandei_1int,
@val_tarifa_bandei_2int,
@finalidadeVARCHAR(50),
@observacaoVARCHAR(255),
@XXX03 int

AS

--Numeracao
--###################################################################
UPDATE numeracao SET num_ultima_numera = (
SELECT num_ultima_numera
FROM NUMERACAO
WHERE ide_numera = 'ACT263_CORRIDA'
AND cod_orgao = '0'
AND num_ano_refere = @AnoAtual
) + 1
WHERE ide_numera = 'ACT263_CORRIDA'
AND cod_orgao = '0'
AND num_ano_refere = @AnoAtual;
--###################################################################



--Incluir Corrida
--###################################################################
INSERT INTO act263_corrida
(
num_ano_corrid,
num_corrid,
ide_situac_corrid,
dat_hora_corrid,
seq_telefo,
dat_hora_cadast,
cod_usuari_cadast,
cod_lograd_pesqui,
nom_lograd_local,
num_local,
des_comple_local,
cod_tipo_carro,
qtd_carro_solici,
cod_comuni,
nom_usuari,
ide_nao_fumant,
ide_nao_gas,
ide_ar_condic,
ide_cartao,
ide_carro_novo,
ide_exectv,
des_observ,
des_observ_local_refere,
cod_usuari_operad,
dat_hora_atendi,
num_ponto_refere_endere,
num_ponto_atendi,
num_unidad_atendi,
cod_orgao,
cod_centrl_telefo,
num_ramal,
ide_situac_client_call_center,
cod_client,
seq_autorz,
cod_usuari_cancel,
dat_hora_cancel,
des_motivo_cancel,
ide_fumant,
dat_hora_final_bloque,
num_unidad_prefer,
dat_hora_solici,
qtd_minuto_anteci,
ide_insufi,
des_observ_comple,
ide_priori_cadast,
cod_forma_pagame,
ide_encome,
cod_marca_veicul,
cod_modelo_veicul,
des_observ_intern,
cod_lograd_entreg_encome,
nom_lograd_entreg_encome,
num_local_entreg_encome,
des_comple_local_entreg_encome,
ide_cd,
ide_dvd,
ide_navegd_gps,
ide_intrnt,
ide_viagem,
ide_conexa_bateri,
dat_hora_inicio_nagyro,
ide_jovem,
ide_trocar_pneu,
ide_engate,
seq_usuari_web_cadast,
ide_forma_seleca_corrid,
ide_carro_alto,
ide_carro_baixo,
ide_porta_malas_grande,
num_call_center,
cod_client_celula
)
VALUES
(
@num_ano_corrid,
@num_corrid,
@ide_situac_corrid,
@dat_hora_corrid,
@seq_telefo,
@dat_hora_cadast,
@cod_usuari_cadast,
@cod_lograd_pesqui,
@nom_lograd_local,
@num_local,
@des_comple_local,
@cod_tipo_carro,
@qtd_carro_solici,
@cod_comuni,
@nom_usuari,
@ide_nao_fumant,
@ide_nao_gas,
@ide_ar_condic,
@ide_cartao,
@ide_carro_novo,
@ide_exectv,
@des_observ,
@des_observ_local_refere,
@cod_usuari_operad,
@dat_hora_atendi,
@num_ponto_refere_endere,
@num_ponto_atendi,
@num_unidad_atendi,
@cod_orgao,
@cod_centrl_telefo,
@num_ramal,
@ide_situac_client_call_center,
@cod_client,
@seq_autorz,
@cod_usuari_cancel,
@dat_hora_cancel,
@des_motivo_cancel,
@ide_fumant,
@dat_hora_final_bloque,
@num_unidad_prefer,
@dat_hora_solici,
@qtd_minuto_anteci,
@ide_insufi,
@des_observ_comple,
@ide_priori_cadast,
@cod_forma_pagame,
@ide_encome,
@cod_marca_veicul,
@cod_modelo_veicul,
@des_observ_intern,
@cod_lograd_entreg_encome,
@nom_lograd_entreg_encome,
@num_local_entreg_encome,
@des_comple_local_entreg_encome,
@ide_cd,
@ide_dvd,
@ide_navegd_gps,
@ide_intrnt,
@ide_viagem,
@ide_conexa_bateri,
@dat_hora_inicio_nagyro,
@ide_jovem,
@ide_trocar_pneu,
@ide_engate,
@seq_usuari_web_cadast,
@ide_forma_seleca_corrid,
@ide_carro_alto,
@ide_carro_baixo,
@ide_porta_malas_grande,
@num_call_center,
@cod_client_celula );
--###################################################################



-- Incluir Chamada Taxi
--###################################################################
INSERT INTO ACT297_CHAMADA_TAXI
(
num_ano_corrid,
num_corrid,
cod_client_celula,
des_lograd_origem,
num_lograd_origem,
des_comple_origem,
nom_cidade_origem,
des_lograd_destin,
num_lograd_destin,
des_comple_destin,
des_prefer_corrid,
cod_client_conven,
cod_matric_conven,
ide_forma_pagame,
cod_forma_pagame_cartao,
dat_hora_ultima_altera,
dat_hora_arquiv,
cod_motivo_cancel,
val_distan_destin,
val_tarifa_bandei_1,
val_tarifa_bandei_2,
finalidade,
observacao
)
VALUES
(
@num_ano_corrid2,
@num_corrid2,
@cod_client_celula2,
@des_lograd_origem,
@num_lograd_origem,
@des_comple_origem,
@nom_cidade_origem,
@des_lograd_destin,
@num_lograd_destin,
@des_comple_destin,
@des_prefer_corrid,
@cod_client_conven,
@cod_matric_conven,
@ide_forma_pagame,
@cod_forma_pagame_cartao,
@dat_hora_ultima_altera,
@dat_hora_arquiv,
@cod_motivo_cancel,
@val_distan_destin,
@val_tarifa_bandei_1,
@val_tarifa_bandei_2,
@finalidade,
@observacao);

GO
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on January, 07 2015 - 8:13 PM
Para usar só usar o comando:

ok is boolean = HExecuteProcedure(ConnNativa,NG0001_Procedure_IncluirChamadaTaxi, N.... parametros.....)
IF ok = True
xml True
ELSE
xml False
END
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on May, 20 2016 - 7:48 PM
Muito importante





//server
arr_Resultados is array of string

//Declara webservice//
gsValorMemorizado is string = 1 //Necessario um valor

DeclareWebserviceContext(gsValorMemorizado) //Principal funcao que declara webservice//

DeclareWebserviceContext(arr_Resultados) //Principal funcao que declara webservice//


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on May, 20 2016 - 7:53 PM
Exemplo

Procedure ws_mobile_foto(Token, Telefone_Imei, Acao, num_matricula)


//Token = Codigo unico de acesso com o parceiro ou dispositivo mobile
//Telefone = Numero do Telefone ou Celular
//ACAO = Ler, Incluir, Alterar, Excluir


//Variaveis
X is int = 0

Resultado is string = ""
sErro is string = ""
arrResultado is array of string
ArrayDeleteAll(arrResultado)

TokenOk is boolean = False
Metodo is string = "ws_mobile_foto"
No_Xml is string = "NoXml"
Tabela is string = "foto_"

IF Token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(No_Xml)

ELSE

TokenOk = ws_token(Token,Telefone_Imei,Acao,Metodo)

IF TokenOk = False THEN

Resultado = ws_erro_token(No_Xml)
Msg is string = Metodo +";"+ Resultado
ws_a_log(Token +" "+ Tabela,"MOB",Msg)

ELSE

//LOG
Comando is string = Metodo +";"+ Acao +";"+ num_matricula
ws_a_log(Token +" "+ Tabela,"MOB",Comando)

END


//Filtro de leitura
IF TokenOk = True AND Upper(Acao) = "SELECT" AND num_matricula <> "" THEN

ok is boolean = HExecuteQuery(QRY_Select_Foto,hQueryDefault,num_matricula)

IF ok = True THEN

Resultado = "<Xml><Retorno>"

cod_motorista is string = ""
nome_completo is string = ""
foto_ is string = ""

FOR EACH QRY_Select_Foto
cod_motorista = QRY_Select_Foto.Matricula
nome_completo = QRY_Select_Foto.Nome
foto_ = QRY_Select_Foto.Foto
END

X += 1

Resultado += ws_xml_registro_comeco(No_Xml, X)

Resultado += ws_xml_registro_corpo(cod_motorista,"cod_motorista")
Resultado += ws_xml_registro_corpo(nome_completo,"nome_completo")
Resultado += ws_xml_registro_corpo(foto_,"foto_")

Resultado += ws_xml_registro_final(No_Xml)

IF X = 0 THEN
Resultado = ws_zero_registros(No_Xml)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_erro_acesso_tabela(No_Xml)

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ Token +" IMEI = "+ Telefone_Imei)

END

END

IF Upper(Acao) <> "SELECT" THEN
Resultado += ws_xml_registro_comeco(No_Xml, X)

Resultado += "<ERRO>ACAO INVALIDA</ERRO>"

Resultado += ws_xml_registro_final(No_Xml)

Erro is string = HErrorInfo() +" - "+ ErrorInfo()
Erro = Replace(Erro,Charact(34),"")
Erro = Replace(Erro,Charact(39),"")
Erro = NoAccent(Erro)

ws_a_log(Token +" "+ Tabela,"MOB",Erro)
END

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(No_Xml)

END

ArrayAdd(arrResultado,Resultado)

RESULT (arrResultado)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on May, 20 2016 - 7:59 PM
Procedure MeuIpFixo()

nInicioBloco, nFinalBloco is int = 0

IP is string = ""

Url is string = "http://www.meuip.com.br/"

HTTPTimeOut(1000)

HTTPRequest(Url)

bufRetorno is Buffer = HTTPGetResult(httpResult)

bufRetorno = Replace(bufRetorno,Charact(34),"")

bufRetorno = Replace(bufRetorno,"'","")

//info(bufRetorno)

nInicioBloco = PositionOccurrence(bufRetorno,"document.getElementById(div_ip).innerHTML = ",firstRank,FromBeginning) + Length("document.getElementById(div_ip).innerHTML = ")

//Info(bufRetorno)

IF nInicioBloco > 0 THEN

bufRetorno = Middle(bufRetorno,nInicioBloco,1000)

IF nInicioBloco > 0
bufRetorno = Middle(bufRetorno,1,20)
END

//Info(bufRetorno)

ELSE

nInicioBloco = PositionOccurrence(bufRetorno,"<span class=style1> detectando (IPv4 ou IPv6)...</span>-->",firstRank,FromBeginning) + Length("<span class=style1> detectando (IPv4 ou IPv6)...</span>-->")

IF nInicioBloco > 0
bufRetorno = Middle(bufRetorno,nInicioBloco,20)
END

//Info(bufRetorno)

END


//192.168.1.180, 1000);

IF bufRetorno <> ""

nFinalBloco = PositionOccurrence(bufRetorno,",",firstRank,FromBeginning) - 1

IF nFinalBloco > 0 THEN
bufRetorno = Middle(bufRetorno,1,nFinalBloco)
END

END

bufRetorno = Replace(bufRetorno,"=","")

bufRetorno = NoSpace(bufRetorno)

IP = NoSpace(bufRetorno)

RESULT(IP)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on May, 20 2016 - 8:00 PM
Procedure NoEnter(Texto)

Texto = Replace(Texto,CRLF,"")
Texto = Replace(Texto,CR,"")
Texto = Replace(Texto,"<13><10>","")
Texto = Replace(Texto,"<13>","")
Texto = Replace(Texto,"<10>","")
Texto = Replace(Texto,Charact(13)+Charact(10),"")
Texto = Replace(Texto,Charact(13),"")
Texto = Replace(Texto,Charact(10),"")

Texto = NoSpace(Texto)

Texto = NoAccent(Texto)

RESULT(Texto)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on May, 20 2016 - 8:02 PM
Procedure ReplaceNull(Texto, Busca, Troca)

IF Texto <> "" AND Busca <> ""
IF Troca <> "" AND PositionOccurrence(Texto,"'"+ Busca +"'",firstRank,FromBeginning) > 0
Texto = Replace(Texto, "'"+ Busca +"'", "'"+ Troca +"'")
ELSE IF Troca <> "" AND PositionOccurrence(Texto, Busca, firstRank,FromBeginning) > 0
Texto = Replace(Texto, Busca, Troca)
ELSE IF Troca = "" AND PositionOccurrence(Texto,"'"+ Busca +"'",firstRank,FromBeginning) > 0
Texto = Replace(Texto, "'"+ Busca +"'", "null")
ELSE IF Troca = "" AND PositionOccurrence(Texto, Busca, firstRank,FromBeginning) > 0
Texto = Replace(Texto ,Busca, "null")
END
END

RESULT(Texto)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on May, 20 2016 - 8:03 PM




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on May, 20 2016 - 8:05 PM
Procedure ws_a_log(Token, Aplicativo, Metodo)

//Ip que executou o webservice
Ip is string = WebserviceClientIPAddress()
IF Ip = "" THEN
Ip = MeuIpFixo()
END
Metodo = Ip + " => " + Metodo

Token = NoAccent(Token)
Token = Middle(Token,1,50)
Token = NoSpace(NoEnter(Token))

Aplicativo = NoAccent(Aplicativo)
Aplicativo = Middle(Aplicativo,1,255)
Aplicativo = NoSpace(NoEnter(Aplicativo))

Metodo = NoAccent(Metodo)
Metodo = Middle(Metodo,1,1000)
Metodo = NoSpace(NoEnter(Metodo))

ERRO_SQL is string = ""

ok is boolean = False

IF Token <> ""

Webservice_Log.DataHora = DateSys() + TimeSys()
Webservice_Log.Token = Token
Webservice_Log.Aplicativo = Aplicativo
Webservice_Log.Metodo = Metodo
ok = HAdd(Webservice_Log)

IF ok = False THEN
ERRO_SQL = HErrorInfo() + ErrorInfo()
END

END

RESULT (ok)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on June, 04 2016 - 3:33 PM
Links complementares



http://forum.pcsoft.fr/fr-FR/pcsoft.br.windev/443-was-webdev-aplicativo-server-1269/read.awp

:merci:

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on August, 09 2016 - 3:34 PM
REDUNDÂNCIA DE WEBSERVICE NO CASO DE ROMPIMENTO DE FIBRA ÓTICA

//Webservice
IF Ip01 = True

//###########################################
XML_Retorno is string = ""

RetornoXml is a ws_mobile_config_Ip01_Response

RetornoXml = ws_mobile_config_Ip01_(29121974,4199491800,"SELECT")

XML_Retorno = RetornoXml.ws_mobile_config_Ip01_Result

XML_RetornoBuffer is Buffer = UTF8ToAnsi(XML_Retorno)
//##########################################

ELSE

//###########################################
XML_Retorno is string = ""

RetornoXml is a ws_mobile_config_Ip02_Response

RetornoXml = ws_mobile_config_Ip02_(29121974,4199491800,"SELECT")

XML_Retorno = RetornoXml.ws_mobile_config_Ip02_Result

XML_RetornoBuffer is Buffer = UTF8ToAnsi(XML_Retorno)
//##########################################


END


Dentro do webservice no método, você usa bases de dados diferentes se quiser.

Você gera outro webservice espelho com um detalhe apenas no final do método nome da procedure mude para "ip02"
mas com o mesmo conteúdo e publique num outro servidor com outro ip com outra rota de cabos físicos.

O webservice é uma nuvem, o que tem dentro dela, pode ser um servidor ou milhões de servidores;
um banco ou milhões de bancos de dados diferentes.

O outro webservice espelho é a outra rota para fazer caso aquela nuvem esteja fora do ar, você consegue fazer por outro ip os diferentes connects e ter os dados retornados de sua consulta. Mas se for um webservice apenas você deve rezar que o ip nunca de problema.

--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Message modified, August, 09 2016 - 3:48 PM
//hostimage.webdev.info/avatars/RrpZpplIAjR9ZZaAh1xcw
Registered member
2,632 messages
Popularité : +89 (91 votes)
Posted on January, 12 2017 - 1:31 AM
//GLOBAL DO PROJETO

ok is boolean

HCreationIfNotFound("*")

HModifyStructure("*",hmsBackgroundTask)

CargaInicial()

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
DEFINA O BANCO DE DADOS

-- Script generated by WINDEV on 11/01/2017 21:45:00
-- Tables of WSQuote.wda analysis
-- for SQL Server

-- Creating the t0001_config table
CREATE TABLE [t0001_config] (
[t0001_id] NUMERIC(19,0) IDENTITY PRIMARY KEY ,
[t0001_config] VARCHAR(50) UNIQUE ,
[t0001_valor] TEXT );

-- Creating the t0002_pricetag table
CREATE TABLE [t0002_pricetag] (
[t0002_id] NUMERIC(19,0) IDENTITY PRIMARY KEY ,
[t0002_refproduto] VARCHAR(20) NOT NULL UNIQUE ,
[t0002_produto] VARCHAR(255) NOT NULL ,
[t0002_valoreuro] MONEY NOT NULL Default 0,
[t0002_valorpromocaoeuro] MONEY NOT NULL Default 0,
[t0002_siteorigem] VARCHAR(3) ,
[t0002_valordolar] MONEY Default 0,
[t0002_valorpromocaodolar] MONEY Default 0,
[t0002_datainicialvalidadepromocao] DATETIME ,
[t0002_datafinalvalidadepromocao] DATETIME ,
[t0002_ativo] BIT Default 0);
CREATE INDEX [WDIDX_t0002_pricetag_t0002_produto] ON [t0002_pricetag] ([t0002_produto]);

-- Creating the t0003_wslog table
CREATE TABLE [t0003_wslog] (
[t0003_id] NUMERIC(19,0) IDENTITY PRIMARY KEY ,
[t0003_datahora] DATETIME ,
[t0003_ip] VARCHAR(15) ,
[t0003_acao] TEXT );
CREATE INDEX [WDIDX_t0003_wslog_t0003_datahora] ON [t0003_wslog] ([t0003_datahora]);
CREATE INDEX [WDIDX_t0003_wslog_t0003_ip] ON [t0003_wslog] ([t0003_ip]);

-- Creating the t0004_distributeurs table
CREATE TABLE [t0004_distributeurs] (
[t0004_id] NUMERIC(19,0) IDENTITY PRIMARY KEY ,
[t0004_telefoneimei] VARCHAR(20) UNIQUE ,
[t0004_nome] VARCHAR(50) UNIQUE ,
[t0004_telefone] VARCHAR(20) UNIQUE ,
[t0004_email] VARCHAR(50) ,
[t0004_site] VARCHAR(50) ,
[t0004_company] VARCHAR(50) UNIQUE ,
[t0004_endereco] VARCHAR(50) ,
[t0004_numero] INTEGER Default 0,
[t0004_bairro] VARCHAR(50) ,
[t0004_complemento] VARCHAR(50) ,
[t0004_cidade] VARCHAR(50) ,
[t0004_estado] VARCHAR(50) ,
[t0004_cep] INTEGER Default 0,
[t0004_cxpostal] VARCHAR(20) ,
[t0004_obs] TEXT ,
[t0004_pais] VARCHAR(30) );

-- Creating the t0005_customers table
CREATE TABLE [t0005_customers] (
[t0005_id] NUMERIC(19,0) IDENTITY PRIMARY KEY ,
[t0005_telefoneimei] VARCHAR(20) UNIQUE ,
[t0005_nome] VARCHAR(50) UNIQUE ,
[t0005_telefone] VARCHAR(20) UNIQUE ,
[t0005_email] VARCHAR(50) ,
[t0005_site] VARCHAR(50) ,
[t0005_endereco] VARCHAR(50) ,
[t0005_numero] INTEGER Default 0,
[t0005_bairro] VARCHAR(50) ,
[t0005_complemento] VARCHAR(50) ,
[t0005_cidade] VARCHAR(50) ,
[t0005_estado] VARCHAR(50) ,
[t0005_cep] INTEGER Default 0,
[t0005_cxpostal] VARCHAR(20) ,
[t0005_obs] TEXT ,
[t0005_pais] VARCHAR(30) );

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

CRIAR QUERYS....


SELECT
Count(*) AS QtdeRegistros
FROM
t0001_config

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

PROCEDURES

CREATE new PROCEDURES

ServerProcedures (PRINCIPAL)

DENTRO DELA EM CODE

//server <-------------------------------------- IMPORTANTE
arr_Resultados is array of string

//Declara webservice//

gsValorMemorizado is string = 1 //Necessario um valor

DeclareWebserviceContext(gsValorMemorizado) //Principal funcao que declara webservice//

DeclareWebserviceContext(arr_Resultados) //Principal funcao que declara webservice// <-------------------------------------- IMPORTANTE


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_customer_insert(token, nome, telefone, telefone_imei, Email, site, endereco, numero, complemento, bairro, cidade, estado, pais, cep, cxpostal, obs, Criptografado is boolean)

CargaInicial()

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk is int = 0
Tabela is string = "t0005_customers"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END

//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Customer_Insert,hQueryDefault+hCheckDuplicates+hCheckIntegrity,nome,telefone,telefone_imei,Email,site,endereco,numero,complemento,bairro,cidade,estado,cep,cxpostal,obs,pais)

IF ok = True THEN

Resultado = ws_gravou(Tabela)

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_customer_select(token, telefone_imei, Criptografado is boolean)

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk is int = 0
Tabela is string = "t0005_customers"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END


//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Customer_Select,hQueryDefault)

IF ok = True THEN

Resultado = "<Xml><Retorno>"

FOR EACH QRY_Customer_Select

IF HFound(QRY_Customer_Select) = True

X += 1

Resultado += ws_xml_registro_comeco(Tabela, X)

Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_nome,"t0005_nome")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_telefone,"t0005_telefone")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_telefoneimei,"t0005_telefoneimei")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_email,"t0005_email")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_site,"t0005_site")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_endereco,"t0005_endereco")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_numero,"t0005_numero")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_complemento,"t0005_complemento")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_bairro,"t0005_bairro")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_cidade,"t0005_cidade")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_estado,"t0005_estado")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_pais,"t0005_pais")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_cep,"t0005_cep")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_capostal,"t0005_cxpostal")
Resultado += ws_xml_registro_corpo(QRY_Customer_Select.t0005_obs,"t0005_obs")

Resultado += ws_xml_registro_final(Tabela)

END

END

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

HReset(QRY_Customer_Select) // <----- Limpar atenção

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_customer_update(token, id, nome, telefone, telefone_imei, Email, site, endereco, numero, complemento, bairro, cidade, estado, pais, cep, cxpostal, obs, Criptografado is boolean)

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk is int = 0
Tabela is string = "t0005_customers"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END


//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Customer_Update,hQueryDefault+hCheckDuplicates+hCheckIntegrity,nome,telefone,telefone_imei,Email,site,endereco,numero,complemento,bairro,cidade,estado,cep,cxpostal,obs,id,pais)

IF ok = True THEN

Resultado = "<Xml><Retorno>"

ServerProceduresInternas.ws_gravou(Tabela)

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_distributeur_insert(token, company, nome, telefone, telefone_imei, Email, site, endereco, numero, complemento, bairro, cidade, estado, pais, cep, cxpostal, obs, Criptografado is boolean)

CargaInicial()

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk is int = 0
Tabela is string = "t0004_distributeur"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END

//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Distributeur_Insert,hQueryDefault+hCheckDuplicates+hCheckIntegrity,nome,telefone,telefone_imei,Email,site,company,endereco,numero,complemento,bairro,cidade,estado,cep,cxpostal,obs,pais)

IF ok = True THEN

Resultado = ws_gravou(Tabela)

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_distributeur_select(token, telefone_imei, Criptografado is boolean)

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk is int = 0
Tabela is string = "t0004_distributeur"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END


//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Distributeur_Select,hQueryDefault)

IF ok = True THEN

Resultado = "<Xml><Retorno>"

FOR EACH QRY_Distributeur_Select

IF HFound(QRY_Distributeur_Select) = True

X += 1

Resultado += ws_xml_registro_comeco(Tabela, X)

Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_distriID,"t0004_distriID")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_company,"t0004_company")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_nome,"t0004_nome")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_telefone,"t0004_telefone")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_telefoneimei,"t0004_telefoneimei")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_email,"t0004_email")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_site,"t0004_site")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_endereco,"t0004_endereco")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_numero,"t0004_numero")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_complemento,"t0004_complemento")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_bairro,"t0004_bairro")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_cidade,"t0004_cidade")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_estado,"t0004_estado")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_pais,"t0004_pais")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_cep,"t0004_cep")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_capostal,"t0004_capostal")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_obs,"t0004_obs")

Resultado += ws_xml_registro_final(Tabela)

END

END

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

HReset(QRY_Distributeur_Select) // <----- Limpar atenção

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------


Procedure ws_distributeur_update(token, company, nome, telefone, telefone_imei, Email, site, endereco, numero, complemento, bairro, cidade, estado, pais, cep, cxpostal, obs, Criptografado is boolean)

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk is int = 0
Tabela is string = "t0004_distributeur"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END


//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Distributeur_Update,hQueryDefault+hCheckDuplicates+hCheckIntegrity,nome,telefone,Email,site,telefone_imei,company,endereco,numero,complemento,bairro,cidade,estado,cep,cxpostal,obs,pais)

IF ok = True THEN

Resultado = "<Xml><Retorno>"

ServerProceduresInternas.ws_gravou(Tabela)

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_log_select(token, telefone_imei, Criptografado is boolean)

//Variaveis
arrResultado is array of string

X is int = 0
TokenOk is int = 0
Tabela is string = "t0004_distri"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END


//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Distributeur_Select,hQueryDefault)

IF ok = True THEN

Resultado = "<Xml><Retorno>"

FOR EACH QRY_Distributeur_Select

IF HFound(QRY_Distributeur_Select) = True

X += 1

Resultado += ws_xml_registro_comeco(Tabela, X)

Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_distriID,"t0004_distriID")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_nome,"t0004_nome")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_telefone,"t0004_telefone")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_telefoneimei,"t0004_telefoneimei")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_email,"t0004_email")
Resultado += ws_xml_registro_corpo(QRY_Distributeur_Select.t0004_site,"t0004_site")

Resultado += ws_xml_registro_final(Tabela)

END

END

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

HReset(QRY_Distributeur_Select) // <----- Limpar atenção

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END


Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_pricetag_insert(token, telefone_imei, superuser, password, refproduto, produto, valoreuro, valorpromocaoeuro, valordolar, valorpromocaodolar, datainicialvalidadepromocao, datafinalvalidadepromocao, siteorigem, ativo, Criptografado is boolean)

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk, SuperuserOk is int = 0
Tabela is string = "t0002_pricetag"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

CargaInicial()

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = 0 THEN

ws_a_log("TokenErrado")

ELSE

ws_a_log("TokenOK")

END

SuperuserOk = ws_superuser(superuser, password)

IF SuperuserOk = 0 THEN

ws_a_log("SuperuserErrado")

ELSE

ws_a_log("SuperuserOk")

END


//Filtro de leitura
IF TokenOk = 1 AND SuperuserOk = 1 THEN

OkConn = HConnectionOpen(ConnNativa)

IF Length(datainicialvalidadepromocao) < 8 THEN
datainicialvalidadepromocao = DateSys()
END
IF Length(datafinalvalidadepromocao) < 8 THEN
datafinalvalidadepromocao = DateSys()
END

ok = HExecuteQuery(QRY_Pricetag_Insert,hQueryDefault+hCheckDuplicates+hCheckIntegrity,refproduto,produto,valoreuro,valorpromocaoeuro,valordolar,valorpromocaodolar,datainicialvalidadepromocao,datafinalvalidadepromocao,siteorigem,ativo)

IF ok = True THEN

Resultado = ws_gravou(Tabela)

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_pricetag_select(token, telefone_imei, Criptografado is boolean)

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk is int = 0
Tabela is string = "t0002_pricetag"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = False THEN

ws_a_log("TokenErrado")

ELSE

//LOG
ws_a_log("TokenOK")

END


//Filtro de leitura
IF TokenOk = 1

ok = HExecuteQuery(QRY_Pricetag_Select,hQueryDefault)

IF ok = True THEN

Resultado = "<Xml><Retorno>"

FOR EACH QRY_Pricetag_Select

IF HFound(QRY_Pricetag_Select) = True

X += 1

Resultado += ws_xml_registro_comeco(Tabela, X)

Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_ID,"t0002_ID")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_refproduto,"t0002_refproduto")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_produto,"t0002_produto")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_valoreuro,"t0002_valoreuro")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_valorpromocaoeuro,"t0002_valorpromocaoeuro")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_valordolar,"t0002_valordolar")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_valorpromocaodolar,"t0002_valorpromocaodolar")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_datainicialvalidadepromocao,"t0002_datainicialvalidadepromocao")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_datafinalvalidadepromocao,"t0002_datafinalvalidadepromocao")
Resultado += ws_xml_registro_corpo(QRY_Pricetag_Select.t0002_siteorigem,"t0002_siteorigem")

Resultado += ws_xml_registro_final(Tabela)

END

END

IF X = 0 THEN
Resultado = ws_zero_registros(Tabela)
END

Resultado += "<TOTAL>"+X+"</TOTAL>" //Total de Registros para usar em barras de progresso
Resultado += "</Retorno></Xml>"

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei)

END

END

//Limpa variaveis

HReset(QRY_Pricetag_Select) // <----- Limpar atenção

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_pricetag_update(token, telefone_imei, superuser, password, refproduto, produto, valoreuro, valorpromocaoeuro, valordolar, valorpromocaodolar, datainicialvalidadepromocao, datafinalvalidadepromocao, siteorigem, ativo, Criptografado is boolean)

//Variaveis
arrResultado is array of string
X is int = 0
TokenOk, SuperuserOk is int = 0
Tabela is string = "t0002_pricetag"
Resultado is string = ""
sErro is string = ""

//Code
IF token <> "" THEN

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha(Tabela)

ELSE

TokenOk = ws_token(token,telefone_imei)

IF TokenOk = 0 THEN

ws_a_log("TokenErrado")

ELSE

ws_a_log("TokenOK")

END

SuperuserOk = ws_superuser(superuser, password)

IF SuperuserOk = 0 THEN

ws_a_log("SuperuserErrado")

ELSE

ws_a_log("SuperuserOk")

END


//Filtro de leitura
IF TokenOk = 1 AND SuperuserOk = 1

ok = HExecuteQuery(QRY_Pricetag_Update,hQueryDefault+hCheckDuplicates+hCheckIntegrity,produto,valoreuro,valorpromocaoeuro,valordolar,valorpromocaodolar,datainicialvalidadepromocao,datafinalvalidadepromocao,siteorigem,refproduto,ativo)

IF ok = True THEN

Resultado = ServerProceduresInternas.ws_gravou(Tabela)

ELSE

Resultado = ws_erro_acesso_tabela(Tabela +" "+ ErrorInfo())

END

ELSE

Resultado = ws_parametros_invalidos(" TOKEN = "+ token +" IMEI = "+ telefone_imei +" Superuser: "+ SuperuserOk)

END

END

//Limpa variaveis

token = ""
telefone_imei = ""

HConnectionClose(ConnNativa)

ELSE

Resultado = ws_token_invalido(Tabela)

END

IF Criptografado = True
Resultado = Crypt(Resultado,token,compressNone,encodeBASE64)
END

Add(arrResultado,Resultado)

RESULT (arrResultado)











//PROCEDURES INTERNAS QUE NAO SAO EXIBIDAS PARA O USUARIO FINAL, SE ENCONTRAM ABAIXO:

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure CargaInicial()

ok = HConnectionOpen(ConnNativa)

IF ok = False

ok = HExecuteQuery(QRY_Count_Config,hQueryDefault)

IF ok = True THEN

FOR EACH QRY_Count_Config

IF HFound(QRY_Count_Config) = True THEN

IF QRY_Count_Config.QtdeRegistros = 0 THEN

ws_cargainicialconfig(0)

END

END

END

END

ok = HExecuteQuery(QRY_Count_Distributeurs,hQueryDefault)

IF ok = True THEN

FOR EACH QRY_Count_Distributeurs

IF HFound(QRY_Count_Distributeurs) = True THEN

IF QRY_Count_Distributeurs.QtdeRegistros = 0 THEN

ws_cargainicialdistri(0)

END

END

END

END

END


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure MeuIpFixo()

nInicioBloco, nFinalBloco is int = 0

IP is string = ""

Url is string = "http://www.meuip.com.br/"

HTTPTimeOut(1000)

HTTPRequest(Url)

bufRetorno is Buffer = HTTPGetResult(httpResult)

bufRetorno = Replace(bufRetorno,Charact(34),"")

bufRetorno = Replace(bufRetorno,"'","")

//info(bufRetorno)

nInicioBloco = PositionOccurrence(bufRetorno,"document.getElementById(div_ip).innerHTML = ",firstRank,FromBeginning) + Length("document.getElementById(div_ip).innerHTML = ")

//Info(bufRetorno)

IF nInicioBloco > 0 THEN

bufRetorno = Middle(bufRetorno,nInicioBloco,1000)

IF nInicioBloco > 0
bufRetorno = Middle(bufRetorno,1,20)
END

//Info(bufRetorno)

ELSE

nInicioBloco = PositionOccurrence(bufRetorno,"<span class=style1> detectando (IPv4 ou IPv6)...</span>-->",firstRank,FromBeginning) + Length("<span class=style1> detectando (IPv4 ou IPv6)...</span>-->")

IF nInicioBloco > 0
bufRetorno = Middle(bufRetorno,nInicioBloco,20)
END

//Info(bufRetorno)

END


//192.168.1.180, 1000);

IF bufRetorno <> ""

nFinalBloco = PositionOccurrence(bufRetorno,",",firstRank,FromBeginning) - 1

IF nFinalBloco > 0 THEN
bufRetorno = Middle(bufRetorno,1,nFinalBloco)
END

END

bufRetorno = Replace(bufRetorno,"=","")

bufRetorno = NoSpace(bufRetorno)

IP = NoSpace(bufRetorno)

RESULT(IP)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure NoEnter(Texto)

Texto = Replace(Texto,CRLF,"")
Texto = Replace(Texto,CR,"")
Texto = Replace(Texto,"<13><10>","")
Texto = Replace(Texto,"<13>","")
Texto = Replace(Texto,"<10>","")
Texto = Replace(Texto,Charact(13)+Charact(10),"")
Texto = Replace(Texto,Charact(13),"")
Texto = Replace(Texto,Charact(10),"")

Texto = NoSpace(Texto)

Texto = NoAccent(Texto)

RESULT(Texto)


--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_a_log(Acao)

//Ip que executou o webservice

Ip is string // = WebserviceClientIPAddress()
IF Ip = "" THEN
Ip = MeuIpFixo()
END

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

ok = False

LogResult is string
DataHora is string = DateSys() + TimeSys()

ok = HExecuteQuery(QRY_Insert_Log,hQueryDefault,DataHora,Ip,Acao)

IF ok = False THEN
LogResult = "Erro ao gravar o log: "+ HErrorInfo() + ErrorInfo()
ELSE
LogResult = 1
END

RESULT (LogResult)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_cargainicialconfig(Registros)

ok = HConnectionOpen(ConnNativa)

IF Registros = 0 AND ok = True
t0001_config.t0001_config = "TOKEN"
t0001_config.t0001_valor = "LORELEI"
HAdd(t0001_config)

t0001_config.t0001_config = "SUPERUSER"
t0001_config.t0001_valor = "LORELEI"
HAdd(t0001_config)

t0001_config.t0001_config = "PASSWORD"
t0001_config.t0001_valor = "SWORDFISH"
HAdd(t0001_config)
END

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_cargainicialdistri(Registros)

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF Registros = 0 AND OkConn = True THEN
t0004_distributeurs.t0004_company = "WX INFORMATICA"
t0004_distributeurs.t0004_nome = "ADRIANO BOLLER"
t0004_distributeurs.t0004_email = "adrianoboller@gmail.com"
t0004_distributeurs.t0004_telefone = "41999491800"
t0004_distributeurs.t0004_telefoneimei = "41999491800"
t0004_distributeurs.t0004_site = "www.wxinformatica.com.br"
HAdd(t0004_distributeurs)
END

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_conexao_falha(Tabela)

Servidor is string = ConnNativa..Server

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

Resultado is string = ""
Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>ERRO DE CONEXAO COM O BANCO: "+Tabela+"</Erro>"
Resultado += "<Banco>"+Servidor+"</Banco>"
Resultado += "</NoXml>"
Resultado += "</Retorno></Xml>"

Erro is string = "Erro de Conexao com o Banco de Dados: " + HErrorInfo() +" - "+ ErrorInfo()
Erro = Replace(Erro,Charact(34),"")
Erro = Replace(Erro,Charact(39),"")
Erro = NoAccent(Erro)

ws_a_log(Erro)

RESULT(Resultado)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_conexao_sucesso(Tabela)

Servidor is string = ConnNativa..Server

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

Resultado is string = ""
Resultado += "<NoXml id="+Charact(34)+1+Charact(34)+">"
Resultado += "<OK>CONEXAO COM SUCESSO AO BANCO!!!!!!</OK><TABELA>"+Tabela+"</TABELA>"
Resultado += "<Banco>"+Servidor+"</Banco>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>1</TOTAL>"

ws_a_log("Conexao OK")

RESULT(Resultado)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_deletou(Tabela)

Resultado is string = ""
Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<OK>Deletou com Sucesso!</OK><TABELA>"+Tabela+"</TABELA>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>1</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log("Deletou Registro")

RESULT(Resultado)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_envia_email(Token, TelefoneImei, Acao, Emails, Assunto, Cabecalho, Mensagem)

TokenOk is boolean
Resultado is string = ""
sErro is string = ""
arrResultado is array of string
ArrayDeleteAll(arrResultado)

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF OkConn = False THEN

Resultado = ws_conexao_falha("Banco de Dados Off-line")

ELSE IF OkConn = True AND Upper(Acao) = "SEND"

TokenOk = ws_token(Token,TelefoneImei)

IF TokenOk = False THEN

Comando is string = "ws_envia_email;"+ Acao +";"+ Emails +";"+ Assunto +";"+ Cabecalho +";"+ Mensagem
ws_a_log(Comando)

ELSE

Comando is string = "ws_envia_email;"+ Acao +";"+ Emails +";"+ Assunto +";"+ Cabecalho +";"+ Mensagem
ws_a_log(Comando)

//ENVIA EMAIL
QyrEnviaEmail is Data Source

SqlExecuta is string = [
EnviaEmail '@Emails@', '@Assunto@', '@Cabecalho@', '@Mensagem@'
]

SqlExecuta = Replace(SqlExecuta, "@Emails@", Emails)
SqlExecuta = Replace(SqlExecuta, "@Assunto@", Assunto)
SqlExecuta = Replace(SqlExecuta, "@Cabecalho@", Cabecalho)
SqlExecuta = Replace(SqlExecuta, "@Mensagem@", Mensagem)

ok = HExecuteSQLQuery(QyrEnviaEmail,ConnNativa, hQueryWithoutCorrection, SqlExecuta)

IF ok = True THEN

Resultado = "<Xml><Retorno>"
Resultado += "<NoXml>EMAIL ENVIADO COM SUCESSO!</NoXml>"
Resultado += "</Retorno></Xml>"

ws_a_log("EMAIL ENVIADO COM SUCESSO!")

ELSE

erro is string = HErrorInfo() +" - "+ ErrorInfo()
erro = Replace(erro,Charact(34),"")
erro = Replace(erro,Charact(39),"")
erro = NoAccent(erro)

Resultado = "<Xml><Retorno>"
Resultado += "<NoXml>ERRO AO ENVIAR EMAIL</NoXml>"
Resultado += "</Retorno></Xml>"

ws_a_log(erro)

END


END


END

HConnectionClose(ConnNativa)

ArrayAdd(arrResultado,Resultado)

RESULT (arrResultado)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_erro_acesso_tabela(Tabela)

Resultado is string = ""
Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>ERRO DE ACESSO A TABELA: "+ NoSpace(Tabela) + "</Erro>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log("Erro de acesso a tabela: "+Tabela)

RESULT(Resultado)

--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------

Procedure ws_erro_token(Tabela)

Resultado is string = ""

Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado