Ir para conteúdo
  • Cadastre-se

dev botao

Correios - Calculo De Sedex / Pac


Edson.pol
  • Este tópico foi criado há 2795 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Boa tarde pessoal.

Encontrei um problema no valor declarado e fiz uma alteração na ACBrSedex:

De

'&nVlValorDeclarado=' + FormatFloat('#0.00', fnVlValorDeclarado) +

para

'&nVlValorDeclarado=' + FormatFloat('#0', fnVlValorDeclarado) +

Estava tendo problema com valores acima de mil reais, onde estava sendo enviado por exemplo R$ 1.245,04 era enviado 1.245 e o WS entende isso como sendo um real (R$ 1.245).

Segue anexo o arquivo alterado.

Obrigado.

ACBrSedex.pas

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Bom dia!

neste caso como iria no cabeçalho do http esse valor? 

....&nVlValorDeclarado=124504&... 

ou

....&nVlValorDeclarado=1245.04&....

15 horas atrás, danny disse:

Boa tarde pessoal.

Encontrei um problema no valor declarado e fiz uma alteração na ACBrSedex:

De

'&nVlValorDeclarado=' + FormatFloat('#0.00', fnVlValorDeclarado) +

para

'&nVlValorDeclarado=' + FormatFloat('#0', fnVlValorDeclarado) +

Estava tendo problema com valores acima de mil reais, onde estava sendo enviado por exemplo R$ 1.245,04 era enviado 1.245 e o WS entende isso como sendo um real (R$ 1.245).

Segue anexo o arquivo alterado.

Obrigado.

ACBrSedex.pas

 

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores
17 horas atrás, danny disse:

Boa tarde pessoal.

Encontrei um problema no valor declarado e fiz uma alteração na ACBrSedex:

De

'&nVlValorDeclarado=' + FormatFloat('#0.00', fnVlValorDeclarado) +

para

'&nVlValorDeclarado=' + FormatFloat('#0', fnVlValorDeclarado) +

Estava tendo problema com valores acima de mil reais, onde estava sendo enviado por exemplo R$ 1.245,04 era enviado 1.245 e o WS entende isso como sendo um real (R$ 1.245).

Segue anexo o arquivo alterado.

Obrigado.

ACBrSedex.pas

Na realidade, deve-se estar atento a qual é o DecimalSeparator. Pode ser que mesmo com esse código novo, aconteça erros dependendo do DecimalSeparator.

Além dessa máscara, as funções Format possuem um terceiro parâmetro para passar a formatação que deve ser considerada ao analisar a string. Chegou a fazer os testes utilizando valores grandes e com decimais depois da alteração?

[]'s

Consultor SAC ACBr

Elton
Profissionalize o ACBr na sua empresa, conheça o ACBr Pro.

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.
Link para o comentário
Compartilhar em outros sites

Boa tarde!

Juliomar, considerando a máscara, neste caso o sistema envia o valor sem os decimais, pois o resultado é de 1 centavo considerando o centavo 04 e 99. 

Ou seja é enviado: &nVlValorDeclarado=1245&

EMBarbosa, testei com o maior valor que o WS permite, no caso R$ 10.000,00.

Mas esta máscara ignora os centavos.

Obrigado pelo retorno.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Ainda está muito confuso... Onde podemos ler a documentação desse WebService ?

Baseado nas informações do site: https://www.w3.org/TR/2000/NOTE-SOAP-20000508/

notei que os decimais de um Webservice podem conter um numero variado de casas decimais... Mas o separador de Decimal DEVE ser o Ponto...

Apliquei modificações nos fontes do SVN que devem resolver o problema

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Daniel, bom dia.

Fiz novos testes com as alterações que você aplicou e resolveu parcialmente, mas gerou outro problema porque os campos de Peso, Comprimento, Altura, Largura e Diâmetro não podem conter casas decimais. No campo de valor declarado está correto o que você fez, enviando a casa decimal com o ponto.

Fiz uma nova alteração e realizei novos testes (só não com o Diâmetro) e, acredito, ter resolvido definitivamente o problema.

Segue em anexo a unit.

ACBrSedex.pas

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Sua alteração propõem retornar o uso do FormatFloat... justamente ele que tem problemas por usar a virgula no caso de S.O. com o padrão brasileiro...

 

Segundo a especificação do WebService, todos os campos que você citou são Decimais... ou seja, os fontes atuais, aprecem estar corretos:

http://ws.correios.com.br/calculador/CalcPrecoPrazo.asmx?op=CalcPrecoPrazo

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <CalcPrecoPrazo xmlns="http://tempuri.org/">
      <nCdEmpresa>string</nCdEmpresa>
      <sDsSenha>string</sDsSenha>
      <nCdServico>string</nCdServico>
      <sCepOrigem>string</sCepOrigem>
      <sCepDestino>string</sCepDestino>
      <nVlPeso>string</nVlPeso>
      <nCdFormato>int</nCdFormato>
      <nVlComprimento>decimal</nVlComprimento>
      <nVlAltura>decimal</nVlAltura>
      <nVlLargura>decimal</nVlLargura>
      <nVlDiametro>decimal</nVlDiametro>
      <sCdMaoPropria>string</sCdMaoPropria>
      <nVlValorDeclarado>decimal</nVlValorDeclarado>
      <sCdAvisoRecebimento>string</sCdAvisoRecebimento>
    </CalcPrecoPrazo>
  </soap:Body>
</soap:Envelope>

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Daniel, voltei o FormatFloat somente nos campos que não aceitam decimais.

Ao gerar o cálculo pelo site dos correios (http://www2.correios.com.br/sistemas/precosPrazos) esses campos não permitem entrada de decimais.

Utilizando também a máscara #0 no FormaFloat gera o mesmo efeito que #,000.

Deixando com FormaFloat se o componente receber por exemplo 31,25 será enviado 031 para o WS com a máscara #,000

O FloatToString proposto por você resolveu o problema do campo Valor Declarado, pois este é o único que aceita decimais.

Obrigado.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Sua informação não é condizente com a informação do WebService, os campos são "decimal" e não "int"  (veja tópico anterior)

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • 3 meses depois ...
2 horas atrás, leandro.rezende disse:

No site dos correios, vc consegue informar o Numero do Celular do "vendedor" e do "cliente" , e os correios enviam SMS para ambos cada vez que o status do objeto altera

Alguém ja implementou esse tipo Rastreamento do Objeto via SMS?

 

 

qual a url?

Link para o comentário
Compartilhar em outros sites

Datilas, depois que vc faz uma consulta de rastreamento no www.correios.com.br abre a url http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm

com o status do objeto, dai tem a opcao  "Receber por SMS" quando clica, abre tipo um popup para informar o celular de origem e destino .

Pelo visto é um serviço gratuito dos Corrieios, tem alguns sites que usam esse serviço, por exemplo o http://www.cartacerta.me/

Link para o comentário
Compartilhar em outros sites

pelo que vi não é muito dificil.

é só fazer um post em http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm

com os parametros

botao=OK
celulardois=(00) 0000-0000 //destinatario
celularum=(00) 0000-0000 //remetente nao obrigatorio (enviar vazio)
etiqueta=CodigoRastreamento //seu codigo de rastramento
objetos=CodigoRastreamento//seu codigo de rastramento
termo=on

 

Ex: 

http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm?botao=OK&celulardois=(00)%200000-0000&celularum=&etiqueta=CodigoRastreamento&objetos=CodigoRastreamento&termo=on

( (00)%20 %20 é espaço utf)

tenta ai se conseguir adiciona na unit de rastramento

 

Link para o comentário
Compartilhar em outros sites

2 horas atrás, datilas disse:

pelo que vi não é muito dificil.

é só fazer um post em http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm

com os parametros

botao=OK
celulardois=(00) 0000-0000 //destinatario
celularum=(00) 0000-0000 //remetente nao obrigatorio (enviar vazio)
etiqueta=CodigoRastreamento //seu codigo de rastramento
objetos=CodigoRastreamento//seu codigo de rastramento
termo=on

 

Ex: 

http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm?botao=OK&celulardois=(00)%200000-0000&celularum=&etiqueta=CodigoRastreamento&objetos=CodigoRastreamento&termo=on

( (00)%20 %20 é espaço utf)

tenta ai se conseguir adiciona na unit de rastramento

 

Fiz o teste com o seguinte link

http://www2.correios.com.br/sistemas/rastreamento/resultado.cfm?botao=OK&celulardois=(31)%298802-0646&celularum=&etiqueta=DE554549046BR&objetos=DE554549046BR&termo=on

aparentemente nao funcionou, quando se faz direto pelo formulario do site dos correios, é retornado uma mensagem dizendo que o numero foi cadastrado para o rastreamento.

Fazendo pelo link, nao tem retorno nenhum, e o browser rediceriona para http://www2.correios.com.br/sistemas/rastreamento/default.cfm sem dar nenhuma mensagem de confirmacao

 

Link para o comentário
Compartilhar em outros sites

  • 2 meses depois ...
  • Este tópico foi criado há 2795 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.