Support » Plugin: WooCommerce Correios - Cálculo de Frete na Página do Produto » Carta Registrada não aparece no cálculo

  • Olá Lucas, boa tarde.

    Antes de mais nada, parabéns e muito obrigado pelo incrível plugin.

    Estou com um problema e agradeceria se me ajudasse.

    Dentre os métodos de entrega que ofereço estão: Carta Registrada, SEDEX e Retirada em mãos. No entanto o método Carta Registrada não aparece quando peço para calcular o frete (SEDEX e Retirada aparecem). Importante dizer que no checkout o método Carta Registrada aparece normalmente.

    Agradeço se puder me auxiliar.
    Obrigado e um abraço,
    Victor

    The page I need help with: [log in to see the link]

Viewing 12 replies - 1 through 12 (of 12 total)
  • Plugin Author lucasbustamante

    (@lucasbustamante)

    Oi @victorverardo, entrei no site mas não vi o cálculo de frete.

    Abraços!

    Olá Lucas, perdão, precisei desativar para não confundir os clientes.
    Ativei novamente. Se você puder olhar, por gentileza, eu agradeceria!

    Obrigado,
    Victor

    Plugin Author lucasbustamante

    (@lucasbustamante)

    @victorverardo, quando você está logado como admin e tenta calcular o frete, aparece alguma mensagem?

    A carta registrada tem um peso limite de 500g, talvez seja por isso.

    Abraços!

    Olá Lucas, quando estou logado, não recebo essa mensagem. O produto não excede 500g, ele é bem leve, possui 59g.

    Já instalei seu plugin em outro site (innisports.com , que não utiliza carta registrada), e funcionou muito bem. Cheguei a receber a mensagem que você mencionou, e consegui corrigir o problema. Mas no caso do site que pedi o suporte (etiquetados.com.br), a opção de carta registrada simplesmente não aparece.

    Você teria alguma sugestão para eu tentar resolver?

    Muito obrigado e um abraço,
    Victor

    Plugin Author lucasbustamante

    (@lucasbustamante)

    @victorverardo edite o arquivo wp-content/plugins/woo-correios-calculo-frete-pagina-produto/src/Shipping/Costs.php, aproximadamente na linha 66, substitua:

    $shipping_costs = $instance->orderShippingCosts($shipping_costs);
    $shipping_costs = $instance->removeErrorsForUnauthorizedUsers($shipping_costs);
    return $shipping_costs;

    Por:

    
    var_dump($shipping_costs);exit;
    $shipping_costs = $instance->orderShippingCosts($shipping_costs);
    $shipping_costs = $instance->removeErrorsForUnauthorizedUsers($shipping_costs);
    return $shipping_costs;
    

    Depois, volte na página do produto, abra o Chrome Developer tools (F12), vá na aba “Network”, depois clique em XHR e faça a operação de cálculo de frete… Você verá a requisição sendo feita embaixo e ela vai falhar, com o array de $shipping_costs, me fale o que foi retornado em $shipping_costs…

    Ou então, modifique o código como falei acima e me avise que eu dou uma olhada.

    Abraços!

    Olá Lucas,

    Corrigi o código, mas não consegui receber o que retornou do $shipping_costs.

    Será que fiz algo errado?

    O código de costs.php ficou:

    <?php
    
    namespace CFPP\Shipping;
    
    use WP_Error;
    use CFPP\Shipping\ShippingMethods\Factory;
    use CFPP\Shipping\ShippingMethods\Package;
    
    use CFPP\Exceptions\FactoryException;
    use CFPP\Exceptions\HandlerException;
    use CFPP\Exceptions\PackageException;
    use CFPP\Exceptions\ResponseException;
    use CFPP\Exceptions\ValidationErrorException;
    
    class Costs
    {
        /**
         * Calculates shipping costs for an array of shipping methods
         *
         * @param array $shipping_methods
         * @param Payload $payload
         * @return array
         */
        public static function getCostPerShippingMethod(array $shipping_methods, Payload $payload)
        {
            $instance = new self;
            $shipping_costs = array();
    
            foreach ($shipping_methods as $shipping_method) {
                $shipping_method_slug = sanitize_title(get_class($shipping_method));
                try {
                    // Create CFPP handler for this Shipping Method
                    $cfpp_handler = Factory::createHandler($shipping_method);
    
                    // Create Package based on product and quantities per Shipping Method
                    $package = Package::makeFrom($payload->getProduct(), $payload->getQuantity(), $shipping_method);
                    $payload->setPackage($package);
    
                    // Gives a chance to set rules, then validate Payload per Shipping Method
                    $cfpp_handler->beforeValidateRequest()->validateRequest($payload);
    
                    // Calculate Costs
                    do_action('cfpp_before_calculate_cost', $payload, $shipping_method);
                    $cfpp_handler->calculate($payload);
    
                    $shipping_costs[] = $cfpp_handler->response->success();
    
                } catch(PackageException $e) {
                    do_action('cfpp_response_package_exception', $shipping_method_slug);
                    $shipping_costs[] = $cfpp_handler->response->error(new WP_Error($e->getCode(), $e->getMessage()));
                } catch (FactoryException $e) {
                    do_action('cfpp_response_factory_exception', $shipping_method_slug);
                    $shipping_costs[] = $cfpp_handler->response->error(new WP_Error($e->getCode(), $e->getMessage()));
                } catch (ValidationErrorException $e) {
                    do_action('cfpp_response_validation_exception', $shipping_method_slug);
                    $shipping_costs[] = $cfpp_handler->response->error(new WP_Error($e->getCode(), $e->getMessage()));
                } catch (HandlerException $e) {
                    do_action('cfpp_response_handler_exception', $shipping_method_slug);
                    $shipping_costs[] = $cfpp_handler->response->error(new WP_Error($e->getCode(), $e->getMessage()));
                } catch (ResponseException $e) {
                    do_action('cfpp_response_exception', $shipping_method_slug);
                    $shipping_costs[] = $cfpp_handler->response->error(new WP_Error($e->getCode(), $e->getMessage()));
                }
            }
    
           var_dump($shipping_costs);exit;
    $shipping_costs = $instance->orderShippingCosts($shipping_costs);
    $shipping_costs = $instance->removeErrorsForUnauthorizedUsers($shipping_costs);
    return $shipping_costs;
        }
    
        /**
         * Sorts an array of costs by successes first
         *
         * @param $shipping_costs
         * @return array
         */
        private function orderShippingCosts($shipping_costs)
        {
            $successes = array();
            $errors = array();
            foreach ($shipping_costs as $shipping_cost) {
                $shipping_cost['status'] == 'success' ? $successes[] = $shipping_cost : $errors[] = $shipping_cost;
            }
            return array_merge($successes, $errors);
        }
    
        /**
         * Removes shipping methods with errors for users that doesn't have
         * manage_woocommerce capability
         *
         * @param array $shipping_costs
         * @return array
         */
        private function removeErrorsForUnauthorizedUsers(array $shipping_costs)
        {
            foreach ($shipping_costs as $index => $shipping_cost) {
                if ( ! current_user_can('manage_woocommerce') && $shipping_cost['status'] == 'error') {
                    unset($shipping_costs[$index]);
                }
            }
            return $shipping_costs;
        }
    }
    

    Muito obrigado!
    Victor

    Plugin Author lucasbustamante

    (@lucasbustamante)

    @victorverardo tente adicionar isso no seu functions.php por gentileza e me avise:

    add_filter('cfpp_rest_timeout', function() {
        return 30000;
    });

    Olá @victorverardo estou enfrentando um problema de calculo de frete também, você disse que no site innisports.com está funcionando bem, fiz o teste no seu site com o CEP que me foi passado e no seu site não funcionou não, CEP 11718-100 Rua Aparecido Gonçalves de Souza, Anhanguera, Praia Grande, SP

    Oi @lucasbustamante, bom dia!

    Tudo bem?

    Fiz a inclusão do código no functions.php. Quando clico em calcular frete, não retorna nenhuma informação.

    Percebi que o plugin também não está funcionando nos outros dois sites que instalei:

    https://innisports.com
    e
    http://svdesign.art.br/

    Quando instalei nesses sites, funcionava normalmente.

    Se puder me ajudar eu agradeço muito!

    Grande abraço,
    Victor

    @2luix, agradeço por me avisar. Quando instalei estava funcionando normalmente. Não fiz nenhuma modificação no plugin neste site.

    Abraço

    Plugin Author lucasbustamante

    (@lucasbustamante)

    @victorverardo, o plugin faz o cálculo no webservice dos Correios, e parece que o webservice deles está muito lento ou até mesmo fora do ar ultimamente.

    Estou tentando ver com os Correios se há uma forma alternativa de fazer esses cálculos, mas até lá, ficamos à mercê do sistema dos Correios…

    @lucasbustamante agradeço muito sua atenção. Imaginei que o problema fosse nos correios mesmo, já que está acontecendo nos outros sites também. Então vou aguardar para ver se eles estabilizam. Caso você tenha alguma novidade sobre o cálculo, você irá atualizar o plugin ou fará algum aviso?

    Mais uma vez agradeço pela sua disposição.

    Um abraço,
    Victor

Viewing 12 replies - 1 through 12 (of 12 total)
  • The topic ‘Carta Registrada não aparece no cálculo’ is closed to new replies.