Is possible to add a feature to calculate the estimated shipping time?

Like this:

Sedex: 1 business day: $15.00
PAC: 3 - 5 business days: $8.00

Thank you!

Comments

brunorios1’s picture

Issue summary: View changes

added example

recidive’s picture

Yes this is possible, there's a field for it in the data returned from Correios webservices:

Resultado.Servicos.cServico[x].PrazoEntrega

Byfred’s picture

Boa tarde, Recidive,

seria possível que você desenvolvesse esse patch?

Sou programador PHP mas não conheço a API de módulos do Drupal. Olhando o código identifiquei que a variável $rate->PrazoEntrega possui o valor que buscamos, mas não sei exatamente como exibi-la no formulário de escolha da forma de entrega.

Imagino que para você, como desenvolvedor do módulo, não seja algo muito difícil de implementar

pedrorocha’s picture

O módulo Commerce Shipping não nos dá essa possibilidade atualmente, infelizmente, só nos permitindo colocar um título e o preço. Criei uma issue lá até, por causa disso: http://drupal.org/node/1992734

barraponto’s picture

Status: Active » Needs review
StatusFileSize
new1.81 KB

Existe um contexto compartilhado entre o rate callback e a geração dos options displays: o objeto $order. O comerce_correios_rate() (o rate callback pros shipping services definidos no commerce_correios) retorna um array que é usado pra criar uma entidade do tipo line_item que é adicionada no $order['shipping_rates']. Esse array, além dos campos amount e currency_code, tem um campo data, que era definido como um array vazio. Eu aproveitei esse array pra passar o $rate->PrazoEntrega.

Já no commerce_shipping_service_rate_options, função que retorna as opções pro fomulário de serviços de entrega durante o checkout (que eu descobri graças ao comentário do @pedrorocha na issue #1992734: Customized display_title for shipping services), tem uma chamada para drupal_alter('commerce_shipping_service_rate_options', $options, $order). O que significa que eu posso alterar os textos das opções via um hook: hook_commerce_shipping_service_rate_options_alter.

Esse hook recebe o objeto $order, e nele estão disponíveis os line_item de cada opção. A partir daí, é só manipular a string (com um format_plural pra manter uma consistência no texto).

barraponto’s picture

Um problema desta abordagem, de que eu reclamo em #1992734-2: Customized display_title for shipping services, é que o texto da opção já vem todo agregado, como uma string. Meu patch assume que o separador é : porque ele é hardcoded pelo commerce_correios. Assumindo que isso pode (e deve) mudar tanto no commerce_shipping quanto no commerce_correios, o ideal seria receber dados pra juntar do jeito que quisermos. Pra isso o ideal é usar o hook_commerce_shipping_line_item_new_alter que recebe os dados separadinhos. Mas um bug no commerce_shipping impede de aproveitar as mudanças nesses dados, e eu propus um patch no #1992734: Customized display_title for shipping services para corrigir exatamente isso.

Portanto, ESTE PATCH DEPENDE DO PATCH DISPONIVEL EM #1992734-3: Customized display_title for shipping services.
Mas o patch anterior funciona perfeitamente (e com melhor performance, acredito) sem modificar o commerce_shipping.

Byfred’s picture

Status: Needs review » Reviewed & tested by the community

Testado e aprovado.

barraponto’s picture

Status: Reviewed & tested by the community » Active

@Byfred você testou o patch #5 né?
Eu acho que é o melhor mesmo, mas precisamos commitar o patch no commerce_shipping primeiro.
Se você ou o @pedrorocha puderem revisar e marcar como RTBC ajuda bastante.
É uma linha só, usando uma função que foi criada pelo autor original praticamente praquele caso.
Por favor: #1992734: Customized display_title for shipping services

barraponto’s picture

Status: Active » Reviewed & tested by the community

ops, não queria tirar do RTBC

brunorios1’s picture

só pra constar que o patch no commerce_shipping foi commitado.
abraço.

brunorios1’s picture

StatusFileSize
new88.84 KB

Estou testando usar essa funcionalidade juntamente com o módulo commerce_free_shipping para dar frete gratis por pac nas compras acima de determinado valor.

Ao usar os dois módulos em conjunto, o pac fica gratuito mas o prazo de entrega não é exibido, e aparece o seguinte erro:

Notice: Undefined index: delivery_estimates em commerce_correios_commerce_shipping_line_item_new_alter() (linha 159 de /home/brunorios/www/cmc.dev/sites/all/modules/commerce_correios/commerce_correios.module).

O problema é aqui ou no commerce_free_shipping?

UPDATE: Isso foi corrigido no módulo Commerce Free Shipping.

brunorios1’s picture

Issue summary: View changes

corrections