PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → 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)
Débuté par adrianoboller, 19 déc. 2014 13:29 - 33 réponses
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:29




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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:29
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:29
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:30
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:30
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:30
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:31
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:31
Procedure ws_xml_registro_corpo(Campo, Valor)

Resultado is string = ""

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

RESULT(Resultado)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:31
Procedure ws_xml_registro_final(Tabela)

Resultado is string = ""

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

RESULT(Resultado)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:31
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:32
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:32
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 19 décembre 2014 - 13:33
:merci:
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 22 décembre 2014 - 14:57
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)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 22 décembre 2014 - 14:59


Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 22 décembre 2014 - 14:59
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}
)
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 22 décembre 2014 - 15:02


Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 24 décembre 2014 - 17:55
Membre enregistré
1 message
Popularité : +1 (1 vote)
Posté le 28 décembre 2014 - 05:27
Merci beaucoup pour ces infos.
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 07 janvier 2015 - 14:22
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]
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 07 janvier 2015 - 14:22
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]
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 07 janvier 2015 - 16:46
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
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 07 janvier 2015 - 20:11
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
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 07 janvier 2015 - 20:13
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
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 20 mai 2016 - 19:48
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/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 20 mai 2016 - 19:53
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/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 20 mai 2016 - 19:59
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/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 20 mai 2016 - 20:00
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/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 20 mai 2016 - 20:02
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/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 20 mai 2016 - 20:03




--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 20 mai 2016 - 20:05
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/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 04 juin 2016 - 15:33
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/
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 09 août 2016 - 15:34
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 modifié, 09 août 2016 - 15:48
Membre enregistré
2 735 messages
Popularité : +89 (91 votes)
Posté le 12 janvier 2017 - 01:31
//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 += "<Erro>ERRO TOKEN: "+ Tabela +"</Erro>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log("Token errado, atençao com esse IP, provavelmente é um intruso.")

RESULT(Resultado)

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

Procedure ws_gravou(Tabela)

Resultado is string = ""
Resultado = "<Xml><Retorno>"
Resultado