Closed pguedesbr closed 3 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.
@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.
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.
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'
];
}
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
Olá, uma vez alterado este trecho do código como faz para executar novamento este hook de instalação? Obrigado!
Respondendo minha pergunta acima para "reinstalar" é preciso deletar o modulo da tabela setup_module e executar no command lind o setup:upgrade
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?
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.