mvdfreitas
Tenho que implementar em um cliente um consumo de webservice.
Endereço: http://200.96.95.3:8088/Simulacao.asmx.
Trabalho com o Delphi 7 e até consegui importar o wdsl http://200.96.95.3:8088/Simulacao.asmx?WSDL
Só que não sei usar.
Ou seja, preciso que o amigo gere um exemplo para que eu possa implementar, no meu projeto.
Grato.
Matheus Freitas
Respostas
Wesley Yamazack
12/01/2009
Matheus,
Primeira coisa que você vai fazer é transformar o descritor de serviço(WSDL) em um .pas. Exemplo.
Abra o delphi.
- Menu File/New/Other
- Localize a aba WebService.
WSDLImporter e de OK
Irá abrir uma janela com um caixa de testo. Location of WSDL File or URL, coloque aqui o caminho do WSDL. Feito isso será gerado uma unit com os metodos do WSDL, basta você os envocar para consegui consumir o mesmo.
Att,
Wesley Yamazack
Matheus Freitas
12/01/2009
Preciso que você me ensine a utilizar as funções.
Matheus Freitas
12/01/2009
// The types declared in this file were generated from data read from the
// WSDL File described below:
// WSDL : http://200.96.95.3:8088/Simulacao.asmx?WSDL
// Encoding : utf-8
// Version : 1.0
// (22/12/2008 17:46:07 - 1.33.2.5)
// ************************************************************************ //
unit Simulacao;
interface
uses InvokeRegistry, SOAPHTTPClient, Types, XSBuiltIns;
type
// ************************************************************************ //
// The following types, referred to in the WSDL document are not being represented
// in this file. They are either aliases[@] of other types represented or were referred
// to but never[!] declared in the document. The types from the latter category
// typically map to predefined/known XML or Borland types; however, they could also
// indicate incorrect WSDL documents that failed to declare or import a schema type.
// ************************************************************************ //
// !:string - "http://www.w3.org/2001/XMLSchema"
// !:double - "http://www.w3.org/2001/XMLSchema"
Parametro = class; { "http://www.sicred.com.br/renner/" }
// ************************************************************************ //
// Namespace : http://www.sicred.com.br/renner/
// ************************************************************************ //
Parametro = class(TRemotable)
private
FwsStrUsuario: WideString;
FwsStrSenha: WideString;
FwsStrAgencia: WideString;
FwsStrContrato: WideString;
FwsStrNroIdentificacao: WideString;
FwsStrSimulacao: WideString;
FwsDataSimulacao: WideString;
FwsStrEmpresa: WideString;
FwsStrParcela: WideString;
FwsStrAssessoria: WideString;
FwsStrDataVctoSimulacao: WideString;
FwsStrSituacao: WideString;
FwsStrVctoParcela: WideString;
FwsDblPrestacao: Double;
FwsDblJurosMora: Double;
FwsDblTxJurosMora: Double;
FwsDblMulta: Double;
FwsDblTxMulta: Double;
FwsDblDespesas: Double;
FwsDblTotal: Double;
FwsDblComissao: Double;
FwsDblTotalFinal: Double;
FwsStrCodigoAssessoria: Double;
FwsStrDataOcorrencia: WideString;
FwsStrOcorrencia: WideString;
published
property wsStrUsuario: WideString read FwsStrUsuario write FwsStrUsuario;
property wsStrSenha: WideString read FwsStrSenha write FwsStrSenha;
property wsStrAgencia: WideString read FwsStrAgencia write FwsStrAgencia;
property wsStrContrato: WideString read FwsStrContrato write FwsStrContrato;
property wsStrNroIdentificacao: WideString read FwsStrNroIdentificacao write FwsStrNroIdentificacao;
property wsStrSimulacao: WideString read FwsStrSimulacao write FwsStrSimulacao;
property wsDataSimulacao: WideString read FwsDataSimulacao write FwsDataSimulacao;
property wsStrEmpresa: WideString read FwsStrEmpresa write FwsStrEmpresa;
property wsStrParcela: WideString read FwsStrParcela write FwsStrParcela;
property wsStrAssessoria: WideString read FwsStrAssessoria write FwsStrAssessoria;
property wsStrDataVctoSimulacao: WideString read FwsStrDataVctoSimulacao write FwsStrDataVctoSimulacao;
property wsStrSituacao: WideString read FwsStrSituacao write FwsStrSituacao;
property wsStrVctoParcela: WideString read FwsStrVctoParcela write FwsStrVctoParcela;
property wsDblPrestacao: Double read FwsDblPrestacao write FwsDblPrestacao;
property wsDblJurosMora: Double read FwsDblJurosMora write FwsDblJurosMora;
property wsDblTxJurosMora: Double read FwsDblTxJurosMora write FwsDblTxJurosMora;
property wsDblMulta: Double read FwsDblMulta write FwsDblMulta;
property wsDblTxMulta: Double read FwsDblTxMulta write FwsDblTxMulta;
property wsDblDespesas: Double read FwsDblDespesas write FwsDblDespesas;
property wsDblTotal: Double read FwsDblTotal write FwsDblTotal;
property wsDblComissao: Double read FwsDblComissao write FwsDblComissao;
property wsDblTotalFinal: Double read FwsDblTotalFinal write FwsDblTotalFinal;
property wsStrCodigoAssessoria: Double read FwsStrCodigoAssessoria write FwsStrCodigoAssessoria;
property wsStrDataOcorrencia: WideString read FwsStrDataOcorrencia write FwsStrDataOcorrencia;
property wsStrOcorrencia: WideString read FwsStrOcorrencia write FwsStrOcorrencia;
end;
// ************************************************************************ //
// Namespace : http://www.sicred.com.br/renner/
// soapAction: http://www.sicred.com.br/renner/%operationName%
// transport : http://schemas.xmlsoap.org/soap/http
// binding : SimulacaoSoap
// service : Simulacao
// port : SimulacaoSoap
// URL : http://200.96.95.3:8088/Simulacao.asmx
// ************************************************************************ //
SimulacaoSoap = interface(IInvokable)
[{8EEFA9E8-0312-405F-CBCC-3D7E0B130B62}]
function Simular(const usuario: WideString; const senha: WideString; const parametro: Parametro): WideString; stdcall;
function OcorrenciaInserir(const usuario: WideString; const senha: WideString; const parametro: Parametro): WideString; stdcall;
function Despesas(const usuario: WideString; const senha: WideString; const parametro: Parametro): Double; stdcall;
end;
function GetSimulacaoSoap(UseWSDL: Boolean=System.False; Addr: string=; HTTPRIO: THTTPRIO = nil): SimulacaoSoap;
implementation
function GetSimulacaoSoap(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): SimulacaoSoap;
const
defWSDL = http://200.96.95.3:8088/Simulacao.asmx?WSDL;
defURL = http://200.96.95.3:8088/Simulacao.asmx;
defSvc = Simulacao;
defPrt = SimulacaoSoap;
var
RIO: THTTPRIO;
begin
Result := nil;
if (Addr = ) then
begin
if UseWSDL then
Addr := defWSDL
else
Addr := defURL;
end;
if HTTPRIO = nil then
RIO := THTTPRIO.Create(nil)
else
RIO := HTTPRIO;
try
Result := (RIO as SimulacaoSoap);
if UseWSDL then
begin
RIO.WSDLLocation := Addr;
RIO.Service := defSvc;
RIO.Port := defPrt;
end else
RIO.URL := Addr;
finally
if (Result = nil) and (HTTPRIO = nil) then
RIO.Free;
end;
end;
initialization
InvRegistry.RegisterInterface(TypeInfo(SimulacaoSoap), http://www.sicred.com.br/renner/, utf-8);
InvRegistry.RegisterDefaultSOAPAction(TypeInfo(SimulacaoSoap), http://www.sicred.com.br/renner/%operationName%);
RemClassRegistry.RegisterXSClass(Parametro, http://www.sicred.com.br/renner/, Parametro);
end.
Wesley Yamazack
12/01/2009
function GetSimulacaoSoap(UseWSDL: Boolean=System.False; Addr: string=; HTTPRIO: THTTPRIO = nil): SimulacaoSoap;
Você tem que saber quais são os parametros a serem passados. descobrindo eles fica facil de se consumir o WSDL.
Crie uma variável do Tipo SimulacaoSoap.
Exemplo :
Var
ClasSimulacao : SimulacaoSoap;
begin
ClasSimulacao := SimulacaoSoap.Create;
ClasSimulacao := GetSimulacaoSoap(P1,p2,p3);
end;
Att,
Wesley Yamazack
Matheus Freitas
12/01/2009
Repito, não sei como fazer.
Está muito vago seu exemplo.
Grato.
Wesley Yamazack
12/01/2009
Primeiramente coloque um botão e um edit no seu formulário. Feito isso no evento onclick do botão bote o codigo abaixo
Var
P : Parametro;
begin
P := Parametro.Create;
P.wsStrUsuario := usuario;
P.wsStrSenha := senha;
Edit1.Text := GetSimulacaoSoap.Simular(P.wsStrUsuario,P.wsStrSenha,P);
Obs : O seguinte erro irá ocorrer quando você clicar no botão, pois os dados não são os corretos.
falha na autenticação.
Feito isso, você terá que saber quais são os valores verdadeiros para poder consumir este WSDL. Mas isso são informações do próprio WSDL.
Att,
Wesley Yamazack
Matheus Freitas
12/01/2009
Segue o email que recebi do cliente, favor ler:
v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} De: cristiano [mailto:cristiano@bancorenner.com.br]
Enviada em: segunda-feira, 22 de dezembro de 2008 16:12
Para: Henrique; antonio; Fernando (CPD); Leandro (CPD Banco); Marco Raymundo
Assunto: Senha de acesso ao Webservice Henrique
Favor encaminhar as senhas abaixo para o técnico da TI
Abaixo as senhas de acesso para a webservice do banco Renner:
Primeira senha (universal):
Usuario - user1
Senha - 123
Segunda senha:
Cobrance
Usuario - CE0038
senha - RENNER18
Duvidas favor ligar para Leandro ou Marco (51) 32.87.33.48
Atenciosamente. Cristiano Fraga
Supervisor de cobrança
Rua Marechal Floriano Peixoto, 185 - 9º Andar
Centro - Porto Alegre - RS - CEP: 90020-061
Fone: 51 3287-3377
E-Mail: cristiano@rennerpromotora.com.br
REPITO - PRECISO QUE VOCÊ ME ENCAMINHE UM EXEMPLO COMPLETO, NÃO DESSA FORMA COMO VOCÊ ESTÁ ENVIANDO.
AS SENHAS ESTÃO AÍ.
VALEU!
Wesley Yamazack
12/01/2009
Att,
Wesley Yamazack
Matheus Freitas
12/01/2009
Se precisar de algo mais, reporte.
Se estiver tudo aí e der algum problema, printe a tela do erro que encaminho para eles.
p.wsStrAgencia := 0002;
p.wsStrContrato := 00000213105;
p.wsStrNroIdentificacao := 1;
p.wsStrSimulacao := 1;
p.wsDataSimulacao := 29/12/2008;
p.wsStrEmpresa := 40;
p.wsStrParcela := 005;
p.wsStrAssessoria := 40;
p.wsStrDataVctoSimulacao := 29/12/2008;
p.wsStrSituacao := A;
p.wsStrVctoParcela := 09/11/2008;
p.wsDblPrestacao := 602.72;
p.wsDblJurosMora := 120.54;
p.wsDblTxJurosMora := 12;
p.wsDblMulta := 12.05;
p.wsDblTxMulta := 2;
p.wsDblDespesas := 6.00;
p.wsDblTotal := 742.63;
p.wsDblComissao := 74.26;
p.wsDblTotalFinal := 816.89;
p.wsStrCodigoAssessoria := 40;
p.wsStrDataOcorrencia := 29/12/2008;
p.wsStrOcorrencia := ;
Wesley Yamazack
12/01/2009
Segue exemplo do Clique do Botão.
Var P : Parametro;
begin
P := Parametro.create;
P.wsStrUsuario := user1;
p.wsStrSenha := 123;
p.wsStrAgencia := 0002;
p.wsStrContrato := 00000213105;
p.wsStrNroIdentificacao := 1;
p.wsStrSimulacao := 1;
p.wsDataSimulacao := 29/12/2008;
p.wsStrEmpresa := 40;
p.wsStrParcela := 005;
p.wsStrAssessoria := 40;
p.wsStrDataVctoSimulacao := 29/12/2008;
p.wsStrSituacao := A;
p.wsStrVctoParcela := 09/11/2008;
p.wsDblPrestacao := 602.72;
p.wsDblJurosMora := 120.54;
p.wsDblTxJurosMora := 12;
p.wsDblMulta := 12.05;
p.wsDblTxMulta := 6.0;
p.wsDblTotal := 742.6;
p.wsDblComissao := 74.26;
p.wsDblTotalFinal := 816.89;
p.wsStrCodigoAssessoria := 40;
p.wsStrDataOcorrencia := 29/12/2008;
p.wsStrOcorrencia := ;
edit1.text := GetSimulacaoSoap.Simular(p.wsStrUsuario,p.wsStrSenha,p);
O mesmo retorna o seguinte erro.
---------------------------
Debugger Exception Notification
---------------------------
Project PrjWEBService.exe raised exception class ERemotableException with message Server was unable to process request. ---> Object reference not set to an instance of an object.. Process stopped. Use Step or Run to continue.
---------------------------
OK Help
---------------------------
Att Wesley Yamazack
Matheus Freitas
12/01/2009
Anexo, resposta do cliente.
Como faço para te mandar arquivos do tipo pdf?
Tem situação que a imagem não cabe toda na tela.
Valeu.
Devmedia
12/01/2009
não é possível enviar e-mails para o consultor. Toda documentação e comentários deve ser postada dentro do sistema.
Caso seja necessário, grave um video.
Matheus Freitas
12/01/2009
Ele afirma que o serviço está no ar.
Wesley Yamazack
12/01/2009
Não recebi nenhuma imagem não, até porque não esta no nosso post.
Lembramos que o sistema de consultoria, visa auxiliar o cliente em eventuais problemas que possam surgir no decorrer de uma aplicação, que no seu caso é consumir um WebService. O que você propõe desde o inicio do chamado, é que eu desenvolva todo o sistema para você desde o inicio, o que fica inviável uma vez que é desconhecido por mim toda regra de negocio, e os procedimentos envolvidos na rotina.
Sua dúvida inicial era como consumir um WebServices, foi explicado como fazer. Agora os erros decorrente neste processo não dizem respeito não dizem respeito ao que foi desenvolvido, e sim como se consumir um WebService.
Para resolver este tipo de problema, você deve entrar em contato com o desenvolvedor do WebService, para que ele te mostre o caminho das pedras.
O erro que esta acontecendo, não tem como eu saber o que é. Pois não conheço o mesmo, blz?
De qualquer forma, continuamos a disposição para esclarecimentos.
Att,
Wesley Yamazack
Wesley Yamazack
12/01/2009
Att,
Wesley Yamazack
Matheus Freitas
12/01/2009
Será que um outro colega seu não poderia nos ajudar nessa solicitação, fazendo um estudo mais minucioso do webservice?
Wesley Yamazack
12/01/2009
Manda o material do WSDL que vou dar um jeito para você mas o que não podemos fazer é adivinhar quais parâmetros colocar no WSDL. Toda informação que você puder fornecer será bem vinda. Aguardo seu contato
Att,
Wesley Yamazack
Matheus Freitas
12/01/2009
Esta é a documentação que recebi.
Definições Projeto Cobrança (WEB Service RENNER) Web service é uma solução utilizada na integração de sistemas e na comunicação entre aplicações diferentes. Com esta tecnologia é possível que novas aplicações possam interagir com aquelas que já existem e que sistemas desenvolvidos em plataformas diferentes sejam compatíveis. Os Web services são componentes que permitem às aplicações enviar e receber dados em formato XML. Cada aplicação pode ter a sua própria "linguagem", que é traduzida para uma linguagem universal, o formato XML. Para as empresas, os Web services podem trazer agilidade para os processos e eficiência na comunicação entre cadeias de produção ou de logística. Toda e qualquer comunicação entre sistemas passa a ser dinâmica e principalmente segura, pois não há intervenção humana. Criar Web service para a troca de informações com as assessorias de cobrança este serviço será colocado no Servidor IIS do Banco Renner onde as assessorias irão se logar para buscar ou enviar as informações disponíveis. Quais serão estas informações: Envio de simulação de cobrança ( emissão de boleto ) pela assessoria, devera ser enviada a informação com os dados da geração do boleto de cobrança conforme lay-out em anexo. Com esta simulação no sistema quando a baixar chegar ao Banco Renner será feita uma validação do calculo realizado, gerando um critica caso calculo não feche com a alçada permitida para assessoria. Ocorrências de cobrança a assessoria devera enviar as ocorrências conforme lay-out em anexo. Pedido de devolução de contratos, através de ocorrência de cobrança será gerado automaticamente um e-mail com solicitação da devolução do contrato que esta na assessoria. Atualização de despesas este serviço também estará disponível através de lay-out em anexo. Pagamentos será enviado automaticamente para a assessoria os pagamentos que foram realizados no dia conforme lay-out em anexo. Comissões após o calculo e fechamento de um período, o sistema envia via e-mail relatório de comissões geradas no período que esta disponível, porem pendente da apresentação da nota fiscal da assessoria. LAY-OUT de XML para geração de lançamentos (SIMULACOES GERAR BOLETO) Observações: As endentações feitas no exemplo a seguir foram feitas para facilitar o entendimento do XML. Elas não serão necessárias para a geração da informação a ser remetida ao Banco Renner via Web Service todas as tags (de “”) devem ser enviadas. NROIDENTIFICACAO CHAR(2 BYTE) CORRESPONDE AO NUMERO DA ASSESSORIA PARA SIMULACAO SIMULACAO CHAR(6 BYTE) NRO DA SIMULACAO SEQUENCIAL DATASIMULACAO DATE DATA PARA QUE FOI GERADA A SIMULACAO EMPRESA CHAR(2 BYTE) "01" FIXO AGENCIA CHAR(4 BYTE) NRO DA AGENCIA CONTRATO CHAR(10 BYTE) NRO DO CONTRATO PARCELA CHAR(3 BYTE) NRO DA PARCELA ASSESSORIA CHAR(4 BYTE) NRO DA ASSESSORIA JUNTO AO BANCO RENNER DATAVCTOSIMULACAO DATE DATA PARA QUE FOI GERADA A SIMULACAO SITUACAO CHAR(1 BYTE) "A" FIXO VCTOPARCELA DATE VENCIMENTO DA PARCELA PRESTACAO NUMBER(12,2) VALOR DA PRESTACAO JUROSMORA NUMBER(12,2) VALOR JUROS DE MORA CALCULADO TX_JUROSMORA NUMBER(12,2) TX EM % USADA NO CALULO DO JUROS DE MORA MULTA NUMBER(12,2) VALOR MULTA TX_MULTA NUMBER(12,2) TX EM % USADA NO CALULO DA MULTA DESPESAS NUMBER(12,2) VALOR DAS DESPESAS TOTAL NUMBER(12,2) TOTAL = VALOR DA PRESTACAO + JUROS DE MORA + MULTA COMISSAO NUMBER(12,2) VALOR DA COMISSAO TOTALFINAL NUMBER(12,2) VALOR FINAL = TOTAL + VALOR DA COMISSAO EXEMPLO: XX 000000 31/10/2008 01 0002 0000210670 003 0023 10/11/2008 A 10/10/2008 100.00 10.00 10.00 2.00 2.00 30.00 142.00 5.00 149.10
Matheus Freitas
12/01/2009
Segue o exemplo.
EXEMPLO: <?xml version="1.0" encoding="ISO-8859-1"?> <DocSimulacao DtEnvio="20081031" TpInf="I"> <main> <DATA_RECORD> <NROIDENTIFICACAO>XX</NROIDENTIFICACAO> <SIMULACAO>000000</SIMULACAO> <DATASIMULACAO>31/10/2008</DATASIMULACAO> <EMPRESA>01</EMPRESA> <AGENCIA>0002</AGENCIA> <CONTRATO>0000210670</CONTRATO> <PARCELA>003</PARCELA> <ASSESSORIA>0023</ASSESSORIA> <DATAVCTOSIMULACAO>10/11/2008</DATAVCTOSIMULACAO> <SITUACAO>A</SITUACAO> <VCTOPARCELA>10/10/2008</VCTOPARCELA> <PRESTACAO>100.00</PRESTACAO> <JUROSMORA>10.00</JUROSMORA> <TX_JUROSMORA>10.00</TX_JUROSMORA> <MULTA>2.00</MULTA> <TX_MULTA>2.00</TX_MULTA> <DESPESAS>30.00</DESPESAS> <TOTAL>142.00</TOTAL> <COMISSAO>5.00</COMISSAO> <TOTALFINAL>149.10</TOTALFINAL> </DATA_RECORD> </main> </DocSimulacao>
Wesley Yamazack
12/01/2009
Colocamos dois campos, usuario e senha, para você informar os mesmos, e assim ter o sucesso do seu problema.
Segue link.
http://www.4shared.com/file/81637311/441c8c8e/Project1.html
Att,
Wesley Yamazack
Matheus Freitas
12/01/2009
Falotu você me enviar os fontes.
Fico no aguardo.
Matheus Freitas
12/01/2009
Faltou você me enviar os fontes.
Fico no aguardo.
Valeu!
Wesley Yamazack
12/01/2009
Pois no momento esta inviável.
Ok ?
Grato pela compreensão
Att,
Wesley Y
Matheus Freitas
12/01/2009
Abraço.
Wesley Yamazack
12/01/2009
Obrigado pela espera, desculpe a demora.
Segue abaixo o link.
http://www.4shared.com/file/81843196/166d6d7c/wsdl.html
Att,
Wesley Y
Wesley Yamazack
12/01/2009
Podemos fechar o Chamado.
Att,
Wesley Y
Matheus Freitas
12/01/2009
Funcionou pra ti?
Wesley Yamazack
12/01/2009
Att,
Wesley Y
Matheus Freitas
12/01/2009
São duas verificações na primeira verifcação deve ser utilizado o o usuário: user1 e senha: 123 e na segunda verificação junto com os parâmetros usuário: CE0038 e senha: RENNER18 -----Mensagem original-----
De: Michelangelo V. Freitas [mailto:mvianei@hotmail.com]
Enviada em: quinta-feira, 22 de janeiro de 2009 16:05
Para: Leandro Machado
Assunto: Re: WEBSERVICE Estou utilizando o usuário: CE0038 e senha: RENNER18 e estou recebendo a mensagem de falha na autenticação. E quando entro com o usuário: user1 e senha: 123 aparece a mensagem Usuário não Cadastrado. Qual procedimento devo adotar? From: Leandro Machado Sent: Thursday, January 15, 2009 4:17 PM To: Michelangelo V. Freitas Subject: RES: WEBSERVICE O WebService esta funcionando normalmente provavelmente deve ser um erro na tua aplicação na hora de utilizar o webservice.
E agora meu amigo?
Que história é essa de duas verificações?
Wesley Yamazack
12/01/2009
No clique do Botão coloque.
Var
P : Parametro;
begin
P := Parametro.create;
P.wsStrUsuario := 'CE0038';
p.wsStrSenha := 'RENNER18';
p.wsStrAgencia := '0002';
p.wsStrContrato := '0000210670';
p.wsStrNroIdentificacao := 'xx';
p.wsStrSimulacao := '000000';
p.wsDataSimulacao := '31/10/2008';
p.wsStrEmpresa := '01';
p.wsStrParcela := '003';
p.wsStrAssessoria := '0023';
p.wsStrDataVctoSimulacao:= '10/11/2008';
p.wsStrSituacao := 'A';
p.wsStrVctoParcela := '10/10/2008';
p.wsDblPrestacao := 100.00;
p.wsDblJurosMora := 10.00;
p.wsDblTxJurosMora := 10.00;
p.wsDblMulta := 2.00;
p.wsDblTxMulta := 2.00;
p.wsDblTotal := 142.00;
p.wsDblComissao := 5.00;
p.wsDblTotalFinal := 149.10;
p.wsStrCodigoAssessoria := 40;
p.wsStrDataOcorrencia := '29/12/2008';
p.wsStrOcorrencia := '' ;
edit1.text := GetSimulacaoSoap.Simular(LabeledEdit1.Text,LabeledEdit2.Text,p);
end;
Onde :
LabeledEdit1.Text := user
LabeledEdit2.Text = 123;
Att,
Wesley Y
Wesley Yamazack
12/01/2009
Consegui resolver o problema ?
Aguardamos seu contato.
Att,
Wesley Y
Wesley Yamazack
12/01/2009
Estamos no aguardo para finalizar o chamado.
Att,
Wesley Y
Matheus Freitas
12/01/2009
Já estou conseguindo utilizar a função das Despesas e sua ajuda foi fundamental.
Pelo que sei o chamado tem validade de 30 dias, portanto,
gostaria de levar até o término, caso haja outro questionamento.
Me corrija se eu estiver errado.
Apesar de achar que não haverá, já que está tudo ok.
De ante mão, gostaria de agradecer o ótimo atendimento e presteza desse consultor.
Abraço.
Wesley Yamazack
12/01/2009
Att,
Wesley Y