pagseguro / pagseguro-modulo-magento-v2

Módulo de integração para Magento Versão 2.x
Apache License 2.0
35 stars 49 forks source link

Status dos pedidos com pagseguro sempre no state new #31

Closed pguedesbr closed 3 years ago

pguedesbr commented 7 years ago

Todos os status de pedidos criados pelo pagseguro estão associados ao state new, mesmo após confirmação do pagamento ou cancelamento. Os status devem estar associados aos states correspondentes.

Como consequencia deste que considero um erro, os pedidos com status "Pagseguro cancelado", por exemplo, nunca são de fato cancelados, e vários plugins/observers deixam de rodar, fora que os produtos não são devolvidos ao estoque.

gabriellucius commented 7 years ago

@pguedesbr na configuração do módulo você adicionou uma URL de notificação? A mesma é válida e permite acesso externo? Pois é a partir dessa URL que o PagSeguro se comunica com a loja para atualizar os status dos pedidos.

pguedesbr commented 7 years ago

@gabriellucius o pagseguro atualiza os status dos pedidos sem erros. O problema é que todos os STATUS pertencem ao mesmo STATE New. Muito embora os status sejam alterados pra "Pagseguro Pago" ou "Pagseguro Cancelado", pro magento os pedidos continuam como New, não gera fatura quando pago, muito menos devolve os produtos ao estoque quando cancelados.

gabriellucius commented 7 years ago

Agora entendi o problema @pguedesbr ! Vamos validar isso, parece ser um bug mesmo. A partir daí conseguimos trabalhar na correção.

Obrigado pela contribuição.

ianitsky commented 5 years ago

O problema éstá no arquivo de instalação InstallData.php na linha 69

Ele faz um foreach nos status que sempre deixa todos os com o mesmo state.

foreach ($statuses as $code => $info) {
            $status[] = [
                'status' => $code,
                'label' => $info
            ];
            $state[] = [
                'status' => $code,
                'state' => 'new',
                'is_default' => 0,
                'visible_on_front' => '1'
            ];
        }
ianitsky commented 5 years ago

Fiz uma modificação no código. Só gostaria de confirmar os status com vocês antes de fazer o PR:

/**
 * PagSeguro Order Status
 */
$statuses = [
    'pagseguro_iniciado'  => ['label' => __('PagSeguro Iniciado'), 'state' => 'new'],
    'pagseguro_aguardando_pagamento' => ['label' => __('PagSeguro Aguardando Pagamento'), 'state' => 'pending_payment'],
    'pagseguro_cancelada' => ['label' => __('PagSeguro Cancelada'), 'state' => 'canceled'],
    'pagseguro_chargeback_debitado'  => ['label' => __('PagSeguro Chargeback Debitado'), 'state' => 'closed'],
    'pagseguro_devolvida'  => ['label' => __('PagSeguro Devolvida'), 'state' => 'closed'],
    'pagseguro_disponivel'  => ['label' => __('PagSeguro Disponível'), 'state' => 'complete'],
    'pagseguro_em_analise'  => ['label' => __('PagSeguro Em Análise'), 'state' => 'payment_review'],
    'pagseguro_em_contestacao'  => ['label' => __('PagSeguro Em Contestação'), 'state' => 'holded'],
    'pagseguro_em_disputa'  => ['label' => __('PagSeguro Em Disputa'), 'state' => 'holded'],
    'pagseguro_paga'  => ['label' => __('PagSeguro Paga'), 'state' => 'complete'],
];

foreach ($statuses as $code => $info) {
    $status[] = [
        'status' => $code,
        'label' => $info['label']
    ];
    $state[] = [
        'status' => $code,
        'state' => $info['state'],
        'is_default' => 0,
        'visible_on_front' => '1'
    ];
}

@pguedesbr @gabriellucius @s2it-moscou @esilvajr

thiagogalvao commented 5 years ago

Olá, uma vez alterado este trecho do código como faz para executar novamento este hook de instalação? Obrigado!

thiagogalvao commented 5 years ago

Respondendo minha pergunta acima para "reinstalar" é preciso deletar o modulo da tabela setup_module e executar no command lind o setup:upgrade

RoninX2 commented 4 years ago

oi Thiago

Respondendo minha pergunta acima para "reinstalar" é preciso deletar o modulo da tabela setup_module e executar no command lind o setup:upgrade

oi Thiago, estou com o mesmo problema, você utiliza o módulo oficial do pagseguro? Está utilizando em qual versão do Magento?