PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → WX - Webservice SOAP, Exemplo completo para estudos!
WX - Webservice SOAP, Exemplo completo para estudos!
Iniciado por BOLLER, nov., 27 2016 12:23 AM - 5 respostas
Membro registado
3.207 mensagems
Popularité : +89 (91 votes)
Publicado em novembro, 27 2016 - 12:23 AM
Prezados,

Estarei colocando aqui todas as informações necessárias para criar um webservice soap com webdev ou windev.



Banco de Dados:

-- Script generated by WEBDEV on 26/11/2016 20:59:17
-- Tables of WSQuote.wda analysis
-- for Generic SQL (ANSI 92)

-- Creating the t0001_config table
CREATE TABLE "t0001_config" (
"t0001_id" NUMERIC(19,0) PRIMARY KEY ,
"t0001_config" VARCHAR(50) UNIQUE ,
"t0001_valor" LONGVARCHAR );

-- Creating the t0002_pricetag table
CREATE TABLE "t0002_pricetag" (
"t0002_id" NUMERIC(19,0) PRIMARY KEY ,
"t0002_refproduto" VARCHAR(20) NOT NULL UNIQUE ,
"t0002_produto" VARCHAR(255) NOT NULL ,
"t0002_valoreuro" NUMERIC(24,6) NOT NULL ,
"t0002_valorpromocaoeuro" NUMERIC(24,6) NOT NULL ,
"t0002_siteorigem" VARCHAR(3) ,
"t0002_valordolar" NUMERIC(24,6) ,
"t0002_valorpromocaodolar" NUMERIC(24,6) ,
"t0002_datainicialvalidadepromocao" DATE ,
"t0002_datafinalvalidadepromocao" DATE ,
"t0002_ativo" BIT );
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) PRIMARY KEY ,
"t0003_datahora" TIMESTAMP ,
"t0003_ip" VARCHAR(15) ,
"t0003_acao" LONGVARCHAR );
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) 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 ,
"t0004_bairro" VARCHAR(50) ,
"t0004_complemento" VARCHAR(50) ,
"t0004_cidade" VARCHAR(50) ,
"t0004_estado" VARCHAR(50) ,
"t0004_cep" INTEGER ,
"t0004_cxpostal" VARCHAR(20) ,
"t0004_obs" LONGVARCHAR ,
"t0004_pais" VARCHAR(30) );

-- Creating the t0005_customers table
CREATE TABLE "t0005_customers" (
"t0005_id" NUMERIC(19,0) 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 ,
"t0005_bairro" VARCHAR(50) ,
"t0005_complemento" VARCHAR(50) ,
"t0005_cidade" VARCHAR(50) ,
"t0005_estado" VARCHAR(50) ,
"t0005_cep" INTEGER ,
"t0005_cxpostal" VARCHAR(20) ,
"t0005_obs" LONGVARCHAR ,
"t0005_pais" VARCHAR(30) );




GLOBAL DO PROJETO
------------------------------------------------
//Global
ok is boolean

HCreationIfNotFound("*")

HModifyStructure("*",hmsBackgroundTask)

CargaInicial()




QUERYS
------------------------------------------------
SELECT
Count(*) AS QtdeRegistros
FROM
t0001_config



SELECT
Count(*) AS QtdeRegistros
FROM
t0004_distributeurs



Insert INTO t0005_customers
(
t0005_nome,
t0005_telefone,
t0005_telefoneimei,
t0005_email,
t0005_site,
t0005_endereco,
t0005_numero,
t0005_complemento,
t0005_bairro,
t0005_cidade,
t0005_estado,
t0005_pais,
t0005_cep,
t0005_cxpostal,
t0005_obs
)
VALUES
(
{Paramt0005_nome},
{Paramt0005_telefone},
{Paramt0005_telefoneimei},
{Paramt0005_email},
{Paramt0005_site},
{Paramt0005_endereco},
{Paramt0005_numero},
{Paramt0005_complemento},
{Paramt0005_bairro},
{Paramt0005_cidade},
{Paramt0005_estado},
{Paramt0005_pais},
{Paramt0005_cep},
{Paramt0005_capostal},
{Paramt0005_obs}
)



SELECT
t0005_customers.t0005_id AS t0005_customer,
t0005_customers.t0005_nome AS t0005_nome,
t0005_customers.t0005_telefone AS t0005_telefone,
t0005_customers.t0005_telefoneimei AS t0005_telefoneimei,
t0005_customers.t0005_email AS t0005_email,
t0005_customers.t0005_site AS t0005_site,
t0005_customers.t0005_endereco AS t0005_endereco,
t0005_customers.t0005_numero AS t0005_numero,
t0005_customers.t0005_complemento AS t0005_complemento,
t0005_customers.t0005_bairro AS t0005_bairro,
t0005_customers.t0005_cidade AS t0005_cidade,
t0005_customers.t0005_estado AS t0005_estado,
t0005_customers.t0005_pais AS t0005_pais,
t0005_customers.t0005_cep AS t0005_cep,
t0005_customers.t0005_cxpostal AS t0005_capostal,
t0005_customers.t0005_obs AS t0005_obs
FROM
t0005_customers
ORDER by
t0005_nome Asc



UPDATE
t0005_customers
SET
t0005_nome = {Paramt0005_nome},
t0005_telefone = {Paramt0005_telefone},
t0005_telefoneimei = {Paramt0005_telefoneimei},
t0005_email = {Paramt0005_email},
t0005_site = {Paramt0005_site},
t0005_endereco = {Paramt0005_endereco},
t0005_numero = {Paramt0005_numero},
t0005_complemento = {Paramt0005_complemento},
t0005_bairro = {Paramt0005_bairro},
t0005_cidade = {Paramt0005_cidade},
t0005_estado = {Paramt0005_estado},
t0005_pais = {Paramt0005_pais},
t0005_cep = {Paramt0005_cep},
t0005_cxpostal = {Paramt0005_capostal},
t0005_obs = {Paramt0005_obs}
WHERE
t0005_customers.t0005_id = {Paramt0005_id}



Insert INTO t0004_distributeurs
(
t0004_company,
t0004_nome,
t0004_telefone,
t0004_telefoneimei,
t0004_email,
t0004_site,
t0004_endereco,
t0004_numero,
t0004_complemento,
t0004_bairro,
t0004_cidade,
t0004_estado,
t0004_pais,
t0004_cep,
t0004_cxpostal,
t0004_obs
)
VALUES
(
{Paramt0004_company},
{Paramt0004_nome},
{Paramt0004_telefone},
{Paramt0004_telefoneimei},
{Paramt0004_email},
{Paramt0004_site},
{Paramt0004_endereco},
{Paramt0004_numero},
{Paramt0004_complemento},
{Paramt0004_bairro},
{Paramt0004_cidade},
{Paramt0004_estado},
{Paramt0004_pais},
{Paramt0004_cep},
{Paramt0004_capostal},
{Paramt0004_obs}
)



SELECT
t0004_distributeurs.t0004_id AS t0004_distriID,
t0004_distributeurs.t0004_company AS t0004_company,
t0004_distributeurs.t0004_nome AS t0004_nome,
t0004_distributeurs.t0004_telefone AS t0004_telefone,
t0004_distributeurs.t0004_telefoneimei AS t0004_telefoneimei,
t0004_distributeurs.t0004_email AS t0004_email,
t0004_distributeurs.t0004_site AS t0004_site,
t0004_distributeurs.t0004_endereco AS t0004_endereco,
t0004_distributeurs.t0004_numero AS t0004_numero,
t0004_distributeurs.t0004_complemento AS t0004_complemento,
t0004_distributeurs.t0004_bairro AS t0004_bairro,
t0004_distributeurs.t0004_cidade AS t0004_cidade,
t0004_distributeurs.t0004_estado AS t0004_estado,
t0004_distributeurs.t0004_pais AS t0004_pais,
t0004_distributeurs.t0004_cep AS t0004_cep,
t0004_distributeurs.t0004_cxpostal AS t0004_capostal,
t0004_distributeurs.t0004_obs AS t0004_obs
FROM
t0004_distributeurs
ORDER by
t0004_nome Asc



UPDATE
t0004_distributeurs
SET
t0004_company = {Paramt0004_company},
t0004_nome = {Paramt0004_nome},
t0004_telefone = {Paramt0004_telefone},
t0004_email = {Paramt0004_email},
t0004_site = {Paramt0004_site},
t0004_endereco = {Paramt0004_endereco},
t0004_numero = {Paramt0004_numero},
t0004_complemento = {Paramt0004_complemento},
t0004_bairro = {Paramt0004_bairro},
t0004_cidade = {Paramt0004_cidade},
t0004_estado = {Paramt0004_estado},
t0004_pais = {Paramt0004_pais},
t0004_cep = {Paramt0004_cep},
t0004_cxpostal = {Paramt0004_capostal},
t0004_obs = {Paramt0004_obs}
WHERE
t0004_distributeurs.t0004_telefoneimei = {Paramt0004_telefoneimei}



Insert INTO t0003_wslog
(
t0003_datahora,
t0003_ip,
t0003_acao
)
VALUES
(
{Paramt0003_datahora},
{Paramt0003_ip},
{Paramt0003_acao}
)



Delete FROM
t0002_pricetag
WHERE
t0002_pricetag.t0002_refproduto = {Paramt0002_refproduto}



Insert INTO t0002_pricetag
(
t0002_refproduto,
t0002_produto,
t0002_valoreuro,
t0002_valorpromocaoeuro,
t0002_valordolar,
t0002_valorpromocaodolar,
t0002_datainicialvalidadepromocao,
t0002_datafinalvalidadepromocao,
t0002_siteorigem,
t0002_ativo
)
VALUES
(
{Paramt0002_refproduto},
{Paramt0002_produto},
{Paramt0002_valoreuro},
{Paramt0002_valorpromocaoeuro},
{Paramt0002_valordolar},
{Paramt0002_valorpromocaodolar},
{Paramt0002_datainicialvalidadepromocao},
{Paramt0002_datafinalvalidadepromocao},
{Paramt0002_siteorigem},
{Paramt0002_ativo}
)



SELECT
t0002_pricetag.t0002_id AS t0002_id,
t0002_pricetag.t0002_refproduto AS t0002_refproduto,
t0002_pricetag.t0002_produto AS t0002_produto,
t0002_pricetag.t0002_valoreuro AS t0002_valoreuro,
t0002_pricetag.t0002_valorpromocaoeuro AS t0002_valorpromocaoeuro,
t0002_pricetag.t0002_valordolar AS t0002_valordolar,
t0002_pricetag.t0002_valorpromocaodolar AS t0002_valorpromocaodolar,
t0002_pricetag.t0002_datainicialvalidadepromocao AS t0002_datainicialvalidadepromocao,
t0002_pricetag.t0002_datafinalvalidadepromocao AS t0002_datafinalvalidadepromocao,
t0002_pricetag.t0002_siteorigem AS t0002_siteorigem
FROM
t0002_pricetag
WHERE
t0002_pricetag.t0002_ativo = 1
ORDER by
t0002_produto Asc



UPDATE
t0002_pricetag
SET
t0002_produto = {Paramt0002_produto},
t0002_valoreuro = {Paramt0002_valoreuro},
t0002_valorpromocaoeuro = {Paramt0002_valorpromocaoeuro},
t0002_valordolar = {Paramt0002_valordolar},
t0002_valorpromocaodolar = {Paramt0002_valorpromocaodolar},
t0002_datainicialvalidadepromocao = {Paramt0002_datainicialvalidadepromocao},
t0002_datafinalvalidadepromocao = {Paramt0002_datafinalvalidadepromocao},
t0002_siteorigem = {Paramt0002_siteorigem},
t0002_ativo = {Paramt0002_ativo}
WHERE
t0002_pricetag.t0002_refproduto = {Paramt0002_refproduto}



SELECT
t0001_config.t0001_id AS t0001_id,
t0001_config.t0001_config AS t0001_config,
t0001_config.t0001_valor AS t0001_valor
FROM
t0001_config
WHERE
t0001_config.t0001_config = {Paramt0001_config}



SELECT
t0003_wslog.t0003_id AS t0003_wslogID,
t0003_wslog.t0003_datahora AS t0003_datahora,
t0003_wslog.t0003_ip AS t0003_ip,
t0003_wslog.t0003_acao AS t0003_acao
FROM
t0003_wslog
ORDER by
t0003_datahora Asc





ServerProcedures
-----------------------------------------------
//GLOBAL ServerProcedures
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//



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)





ServerProceduresInternas
----------------------------------------------------
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 += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<OK>Gravou com Sucesso!</OK><TABELA>"+Tabela+"</TABELA>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>1</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log("Gravou com sucesso na tabela: "+Tabela)

RESULT(Resultado)


Procedure ws_msg_retorno(Mensagem)

Resultado is string = ""
Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+1+Charact(34)+">"
Resultado += "<OK>" + Mensagem + "</OK>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>1</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log(Mensagem)

RESULT(Resultado)



Procedure ws_nao_deletou(Tabela)

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

Resultado is string = ""
Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>NAO DELETOU!: "+Tabela +"; "+ Erro+"</Erro>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log("NAO DELETOU!: "+Tabela +"; "+ Erro)

RESULT(Resultado)



Procedure ws_nao_gravou(Tabela,Erro)

Resultado is string = ""
Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>NAO GRAVOU: "+Tabela+";"+Erro+"</Erro>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log("Nao Gravou: "+Tabela +"; "+ Erro)

RESULT(Resultado)



Procedure ws_parametros_invalidos(Tabela)

Resultado is string = ""

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

Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>PARAMETROS INVALIDOS OU CLIENTE BLOQUEADO: " + Tabela +" - "+ erro +"</Erro>"
Resultado += "</NoXml>"
Resultado += "<TOTAL>0</TOTAL>"
Resultado += "</Retorno></Xml>"

ws_a_log("PARAMETROS INVALIDOS OU CLIENTE BLOQUEADO: "+ erro +" - "+Tabela)

RESULT(Resultado)


Procedure ws_retorno(Tabela, NomeCampo, Retorno)

Tabela = Tabela

Resultado is string = ""

IF Retorno <> ""
Resultado = "<Xml><Retorno>"
Resultado += "<NoXml id="+Charact(34)+1+Charact(34)+">"
Resultado += "<"+NomeCampo+">"+Retorno+"</"+NomeCampo+">"
Resultado += "</NoXml>"
Resultado += "<TOTAL>1</TOTAL>"
Resultado += "</Retorno></Xml>"
END

RESULT(Resultado)



Procedure ws_superuser(superuser, password)

resultado, resultado01, resultado02 is int = 0

//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)

IF superuser <> "" AND password <> "" THEN

HReadSeekFirst(t0001_config,t0001_config,"SUPERUSER",hKeepFilter)
IF Upper(t0001_config.t0001_valor) = Upper(superuser) THEN
resultado01 = 1
ELSE
resultado01 = 0
END

HReadSeekFirst(t0001_config,t0001_config,"PASSWORD",hKeepFilter)
IF Upper(t0001_config.t0001_valor) = Upper(password) THEN
resultado02 = 1
ELSE
resultado02 = 0
END

IF resultado01 = 1 AND resultado02 = 1 THEN
resultado = 1
ELSE
resultado = 0
END

ELSE
resultado = 0
END

RESULT(resultado)


Procedure ws_token(Token, TelefoneImei)

Resultado, TokenResultado, TokenTelefoneImei is string = ""

OkConn is boolean = False

OkConn = HConnectionOpen(ConnNativa)

IF Token <> "" AND TelefoneImei <> ""

HReadSeekFirst(t0001_config,t0001_config,"TOKEN", hKeepFilter)

FOR EACH t0001_config

IF HFound(t0001_config) = True
TokenResultado = t0001_config.t0001_valor
END

END


HReadSeekFirst(t0004_distributeurs,t0004_telefoneimei,TelefoneImei,hKeepFilter)

FOR EACH t0004_distributeurs

IF HFound(t0004_distributeurs) = True
TokenTelefoneImei = t0004_distributeurs.t0004_telefoneimei
END

END

IF TokenResultado <> "" AND Upper(TokenResultado) = Upper(Token) AND TokenTelefoneImei <> "" THEN
Resultado = 1
ELSE
Resultado = 0
END

//info(TokenResultado, TokenTelefoneImei)

ELSE

Resultado = 0

END

RESULT(Resultado)



Procedure ws_token_invalido(Tabela)

Resultado is string = ""

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

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

ws_a_log("TOKEN INVALIDO OU NAO INFORMADO: "+ Erro +"; "+ Tabela)

RESULT(Resultado)


Procedure ws_xml_registro_comeco(tabela,id)

tabela = tabela

Resultado is string = ""

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

RESULT(Resultado)



Procedure ws_xml_registro_corpo(TabelaCampo, Campo)

Resultado is string = ""
Resultado = "<"+ NoSpace(Campo) +">" + NoSpace(TabelaCampo) + "</"+ NoSpace(Campo) +">"

RESULT(Resultado)


Procedure ws_xml_registro_final(Tabela)

Tabela = Tabela

Resultado is string = ""
Resultado = "</NoXml>"

RESULT(Resultado)



Procedure ws_zero_registros(Tabela)

Resultado is string = ""

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

Resultado += "<NoXml id="+Charact(34)+0+Charact(34)+">"
Resultado += "<Erro>NENHUM REGISTRO! "+ Tabela +"; "+ Erro +" </Erro>"
Resultado += "</NoXml>"

ws_a_log(Erro)

RESULT(Resultado)


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.207 mensagems
Popularité : +89 (91 votes)
Publicado em novembro, 27 2016 - 12:46 AM
EXEMPLO DE UM RETORNO DO WEBSERVICE SOAP

http://support.pcscloud.net/SUPORTE_WEB/awws/index.htm

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAP-ENV:Header>
<nhs:WSID mustUnderstand="1" xsi:type="xsd:hexBinary" xmlns:nhs="urn:Suporte" xmlns="urn:Suporte">9A2E273CA94993AE873FB6E34CB078C347AB9510</nhs:WSID>
</SOAP-ENV:Header>
<SOAP-ENV:Body>
<ns1:ws_distributeur_selectResponse xmlns:ns1="urn:Suporte">
<ws_distributeur_selectResult><Xml><Retorno><NoXml id="1"><t0004_distriID>1</t0004_distriID><t0004_company></t0004_company><t0004_nome>ADRIANO BOLLER</t0004_nome><t0004_telefone>41999991800</t0004_telefone><t0004_telefoneimei>41999991800</t0004_telefoneimei><t0004_email>adrianoboller@gmail.com</t0004_email><t0004_site>www.wxinformatica.com.br</t0004_site><t0004_endereco></t0004_endereco><t0004_numero>0</t0004_numero><t0004_complemento></t0004_complemento><t0004_bairro></t0004_bairro><t0004_cidade></t0004_cidade><t0004_estado></t0004_estado><t0004_pais></t0004_pais><t0004_cep>0</t0004_cep><t0004_capostal></t0004_capostal><t0004_obs></t0004_obs></NoXml><TOTAL>1</TOTAL></Retorno></Xml></ws_distributeur_selectResult>
</ns1:ws_distributeur_selectResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Mensagem modificada, novembro, 27 2016 - 12:48 AM
Membro registado
3.207 mensagems
Popularité : +89 (91 votes)
Publicado em novembro, 27 2016 - 12:47 AM
EXEMPLO DE WSDL FEITO COM WEBDEV

http://support.pcscloud.net/SUPORTE_WEB/awws/Suporte.awws…

<?xml version="1.0" encoding="UTF-8"?>
<definitions targetNamespace="urn:Suporte" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:s0="urn:Suporte" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/">
<types>
<xsd:schema targetNamespace="urn:Suporte" elementFormDefault="unqualified">
<xsd:simpleType name="WLChar">
<xsd:restriction base="xsd:string">
<xsd:length fixed="true" value="1"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="WSID" type="xsd:hexBinary"/>
<xsd:complexType name="ws_pricetag_selectResponse">
<xsd:sequence>
<xsd:element name="ws_pricetag_selectResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_distributeur_selectResponse">
<xsd:sequence>
<xsd:element name="ws_distributeur_selectResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_distributeur_insertResponse">
<xsd:sequence>
<xsd:element name="ws_distributeur_insertResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_distributeur_updateResponse">
<xsd:sequence>
<xsd:element name="ws_distributeur_updateResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_log_selectResponse">
<xsd:sequence>
<xsd:element name="ws_log_selectResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_pricetag_insertResponse">
<xsd:sequence>
<xsd:element name="ws_pricetag_insertResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_pricetag_updateResponse">
<xsd:sequence>
<xsd:element name="ws_pricetag_updateResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_customer_insertResponse">
<xsd:sequence>
<xsd:element name="ws_customer_insertResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_customer_updateResponse">
<xsd:sequence>
<xsd:element name="ws_customer_updateResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="ws_customer_selectResponse">
<xsd:sequence>
<xsd:element name="ws_customer_selectResult" type="xsd:string" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="Suporte_ws_pricetag_select_MessageIn">
<part name="token" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_pricetag_select_MessageOut">
<part name="ws_pricetag_selectResponse" type="s0:ws_pricetag_selectResponse"/>
</message>
<message name="Suporte_ws_distributeur_select_MessageIn">
<part name="token" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_distributeur_select_MessageOut">
<part name="ws_distributeur_selectResponse" type="s0:ws_distributeur_selectResponse"/>
</message>
<message name="Suporte_ws_distributeur_insert_MessageIn">
<part name="token" type="xsd:string"/>
<part name="company" type="xsd:string"/>
<part name="nome" type="xsd:string"/>
<part name="telefone" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="email" type="xsd:string"/>
<part name="site" type="xsd:string"/>
<part name="endereco" type="xsd:string"/>
<part name="numero" type="xsd:string"/>
<part name="complemento" type="xsd:string"/>
<part name="bairro" type="xsd:string"/>
<part name="cidade" type="xsd:string"/>
<part name="estado" type="xsd:string"/>
<part name="pais" type="xsd:string"/>
<part name="cep" type="xsd:string"/>
<part name="cxpostal" type="xsd:string"/>
<part name="obs" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_distributeur_insert_MessageOut">
<part name="ws_distributeur_insertResponse" type="s0:ws_distributeur_insertResponse"/>
</message>
<message name="Suporte_ws_distributeur_update_MessageIn">
<part name="token" type="xsd:string"/>
<part name="company" type="xsd:string"/>
<part name="nome" type="xsd:string"/>
<part name="telefone" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="email" type="xsd:string"/>
<part name="site" type="xsd:string"/>
<part name="endereco" type="xsd:string"/>
<part name="numero" type="xsd:string"/>
<part name="complemento" type="xsd:string"/>
<part name="bairro" type="xsd:string"/>
<part name="cidade" type="xsd:string"/>
<part name="estado" type="xsd:string"/>
<part name="pais" type="xsd:string"/>
<part name="cep" type="xsd:string"/>
<part name="cxpostal" type="xsd:string"/>
<part name="obs" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_distributeur_update_MessageOut">
<part name="ws_distributeur_updateResponse" type="s0:ws_distributeur_updateResponse"/>
</message>
<message name="Suporte_ws_log_select_MessageIn">
<part name="token" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_log_select_MessageOut">
<part name="ws_log_selectResponse" type="s0:ws_log_selectResponse"/>
</message>
<message name="Suporte_ws_pricetag_insert_MessageIn">
<part name="token" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="superuser" type="xsd:string"/>
<part name="password" type="xsd:string"/>
<part name="refproduto" type="xsd:string"/>
<part name="produto" type="xsd:string"/>
<part name="valoreuro" type="xsd:string"/>
<part name="valorpromocaoeuro" type="xsd:string"/>
<part name="valordolar" type="xsd:string"/>
<part name="valorpromocaodolar" type="xsd:string"/>
<part name="datainicialvalidadepromocao" type="xsd:string"/>
<part name="datafinalvalidadepromocao" type="xsd:string"/>
<part name="siteorigem" type="xsd:string"/>
<part name="ativo" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_pricetag_insert_MessageOut">
<part name="ws_pricetag_insertResponse" type="s0:ws_pricetag_insertResponse"/>
</message>
<message name="Suporte_ws_pricetag_update_MessageIn">
<part name="token" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="superuser" type="xsd:string"/>
<part name="password" type="xsd:string"/>
<part name="refproduto" type="xsd:string"/>
<part name="produto" type="xsd:string"/>
<part name="valoreuro" type="xsd:string"/>
<part name="valorpromocaoeuro" type="xsd:string"/>
<part name="valordolar" type="xsd:string"/>
<part name="valorpromocaodolar" type="xsd:string"/>
<part name="datainicialvalidadepromocao" type="xsd:string"/>
<part name="datafinalvalidadepromocao" type="xsd:string"/>
<part name="siteorigem" type="xsd:string"/>
<part name="ativo" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_pricetag_update_MessageOut">
<part name="ws_pricetag_updateResponse" type="s0:ws_pricetag_updateResponse"/>
</message>
<message name="Suporte_ws_customer_insert_MessageIn">
<part name="token" type="xsd:string"/>
<part name="nome" type="xsd:string"/>
<part name="telefone" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="email" type="xsd:string"/>
<part name="site" type="xsd:string"/>
<part name="endereco" type="xsd:string"/>
<part name="numero" type="xsd:string"/>
<part name="complemento" type="xsd:string"/>
<part name="bairro" type="xsd:string"/>
<part name="cidade" type="xsd:string"/>
<part name="estado" type="xsd:string"/>
<part name="pais" type="xsd:string"/>
<part name="cep" type="xsd:string"/>
<part name="cxpostal" type="xsd:string"/>
<part name="obs" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_customer_insert_MessageOut">
<part name="ws_customer_insertResponse" type="s0:ws_customer_insertResponse"/>
</message>
<message name="Suporte_ws_customer_update_MessageIn">
<part name="token" type="xsd:string"/>
<part name="id" type="xsd:string"/>
<part name="nome" type="xsd:string"/>
<part name="telefone" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="email" type="xsd:string"/>
<part name="site" type="xsd:string"/>
<part name="endereco" type="xsd:string"/>
<part name="numero" type="xsd:string"/>
<part name="complemento" type="xsd:string"/>
<part name="bairro" type="xsd:string"/>
<part name="cidade" type="xsd:string"/>
<part name="estado" type="xsd:string"/>
<part name="pais" type="xsd:string"/>
<part name="cep" type="xsd:string"/>
<part name="cxpostal" type="xsd:string"/>
<part name="obs" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_customer_update_MessageOut">
<part name="ws_customer_updateResponse" type="s0:ws_customer_updateResponse"/>
</message>
<message name="Suporte_ws_customer_select_MessageIn">
<part name="token" type="xsd:string"/>
<part name="telefone_imei" type="xsd:string"/>
<part name="Criptografado" type="xsd:boolean"/>
</message>
<message name="Suporte_ws_customer_select_MessageOut">
<part name="ws_customer_selectResponse" type="s0:ws_customer_selectResponse"/>
</message>
<message name="WSID">
<part name="WSIDValue" element="s0:WSID"/>
</message>
<portType name="SuporteSOAPPortType">
<operation name="ws_pricetag_select">
<input message="s0:Suporte_ws_pricetag_select_MessageIn"/>
<output message="s0:Suporte_ws_pricetag_select_MessageOut"/>
</operation>
<operation name="ws_distributeur_select">
<input message="s0:Suporte_ws_distributeur_select_MessageIn"/>
<output message="s0:Suporte_ws_distributeur_select_MessageOut"/>
</operation>
<operation name="ws_distributeur_insert">
<input message="s0:Suporte_ws_distributeur_insert_MessageIn"/>
<output message="s0:Suporte_ws_distributeur_insert_MessageOut"/>
</operation>
<operation name="ws_distributeur_update">
<input message="s0:Suporte_ws_distributeur_update_MessageIn"/>
<output message="s0:Suporte_ws_distributeur_update_MessageOut"/>
</operation>
<operation name="ws_log_select">
<input message="s0:Suporte_ws_log_select_MessageIn"/>
<output message="s0:Suporte_ws_log_select_MessageOut"/>
</operation>
<operation name="ws_pricetag_insert">
<input message="s0:Suporte_ws_pricetag_insert_MessageIn"/>
<output message="s0:Suporte_ws_pricetag_insert_MessageOut"/>
</operation>
<operation name="ws_pricetag_update">
<input message="s0:Suporte_ws_pricetag_update_MessageIn"/>
<output message="s0:Suporte_ws_pricetag_update_MessageOut"/>
</operation>
<operation name="ws_customer_insert">
<input message="s0:Suporte_ws_customer_insert_MessageIn"/>
<output message="s0:Suporte_ws_customer_insert_MessageOut"/>
</operation>
<operation name="ws_customer_update">
<input message="s0:Suporte_ws_customer_update_MessageIn"/>
<output message="s0:Suporte_ws_customer_update_MessageOut"/>
</operation>
<operation name="ws_customer_select">
<input message="s0:Suporte_ws_customer_select_MessageIn"/>
<output message="s0:Suporte_ws_customer_select_MessageOut"/>
</operation>
</portType>
<binding name="SuporteSOAPBinding" type="s0:SuporteSOAPPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="ws_pricetag_select">
<soap:operation style="document" soapAction="urn:Suporte/ws_pricetag_select"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_distributeur_select">
<soap:operation style="document" soapAction="urn:Suporte/ws_distributeur_select"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_distributeur_insert">
<soap:operation style="document" soapAction="urn:Suporte/ws_distributeur_insert"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_distributeur_update">
<soap:operation style="document" soapAction="urn:Suporte/ws_distributeur_update"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_log_select">
<soap:operation style="document" soapAction="urn:Suporte/ws_log_select"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_pricetag_insert">
<soap:operation style="document" soapAction="urn:Suporte/ws_pricetag_insert"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_pricetag_update">
<soap:operation style="document" soapAction="urn:Suporte/ws_pricetag_update"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_customer_insert">
<soap:operation style="document" soapAction="urn:Suporte/ws_customer_insert"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_customer_update">
<soap:operation style="document" soapAction="urn:Suporte/ws_customer_update"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
<operation name="ws_customer_select">
<soap:operation style="document" soapAction="urn:Suporte/ws_customer_select"/>
<input>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="s0:WSID" use="literal" part="WSIDValue"/>
</output>
</operation>
</binding>
<service name="Suporte">
<port name="SuporteSOAPPort" binding="s0:SuporteSOAPBinding">
<soap:address location="http://support.pcscloud.net/SUPORTE_WEB/awws/Suporte.awws"/>
</port>
</service>
</definitions>


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.207 mensagems
Popularité : +89 (91 votes)
Publicado em novembro, 27 2016 - 1:20 AM
RESULTADO





--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.207 mensagems
Popularité : +89 (91 votes)
Publicado em novembro, 27 2016 - 1:21 AM
BASE DE DADOS





--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 9949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/
Membro registado
3.207 mensagems
Popularité : +89 (91 votes)
Publicado em janeiro, 14 2021 - 12:07 AM
//Aqui define o layout do XML a ser enviado pelo POST

sXDoc is string = [
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:enderecodocliente:TMAtualizaOrdemFrete">
<soapenv:Header/>
<soapenv:Body>
<urn:MT_AtualizaOrdemFrete_Req_Conc>
<ordem>
<nr_ordem>?</nr_ordem>
<dados_pesagem>
<tara_veiculo>?</tara_veiculo>
<peso_bruto>?</peso_bruto>
<peso_liquido_real>?</peso_liquido_real>
</dados_pesagem>
<inf_item>
<id_etapa>?</id_etapa>
<nr_remessa>?</nr_remessa>
<item_remessa>?</item_remessa>
<id_material>?</id_material>
<quantidade>?</quantidade>
<unidade_med_qtde>?</unidade_med_qtde>
<inf_lote>
<lote>?</lote>
<qtde>?</qtde>
<unidade_lote>?</unidade_lote>
</inf_lote>
</inf_item>
<dados_analise>
<temperatura_tanque>?</temperatura_tanque>
<ap_veiculo_seta>?</ap_veiculo_seta>
<massa_especifica>?</massa_especifica>
<fator_reducao_vol>?</fator_reducao_vol>
<alcalinidade>?</alcalinidade>
<volume_20>?</volume_20>
<acidez_total>?</acidez_total>
<grau_inpm>?</grau_inpm>
<aspecto>?</aspecto>
</dados_analise>
<checklist>
<id_checklist>?</id_checklist>
</checklist>
<lacres>
@LACRE@
</lacres>
</ordem>
</urn:MT_AtualizaOrdemFrete_Req_Conc>
</soapenv:Body>
</soapenv:Envelope>
]

//Exemplo de como substituir parte do XML inicial por variáveis

sLacre is string = "<lacre>?</lacre>"

sXDoc = Replace(sXDoc,"@LACRE@",sLacre)

//webservice
req is httpRequest

req.URL = "http://servidor.cliente.com.br:50000/XISOAPAdapter/MessageServlet?senderParty=&senderService=BS_CONCEITTO_D&receiverParty=&receiverService=&interface=SI_AtualizaOrdemFrete_Out&interfaceNamespace=urn:enderecodocliente:TMAtualizaOrdemFrete"
req.User = "TESTE"
req.Password = "1234"
req.Header["SOAPAction"] = "Conceitto/Login"
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 4.0.30319.42000)"
req.Method = httpPost
req.ContentType = "text/xml; charset=utf-8"

req.Content = sXDoc

cMyResponse is httpResponse = HTTPSend(req)

IF ErrorOccurred THEN
Error(ErrorInfo(errFullDetails))
ELSE
sXDoc = cMyResponse..Content
Info(sXDoc)
END


--
Adriano José Boller
______________________________________________
Consultor e Representante Oficial da
PcSoft no Brasil
+55 (41) 99949 1800
adrianoboller@gmail.com
skype: adrianoboller
http://wxinformatica.com.br/