Quem tem problemas de boleto cancelando indevidamente – Solu??o temporaria aqui
-
Pessoal,
O plugin do @claudiosanches é muito bacana, porém faltam algumas lógicas relacionadas a compensa??o bancária e o Claudio n?o tem só este projeto. Por conta disto, eu escrevi uma solu??o temporária da forma q eu consegui, por favor quem manja melhor de programa??o reescreve isto de forma mais sanitizada e posta la no GitHub (n?o sei usar direito :/ )
O que eu alterei:
– Estou for?ando o horario de 23:59:59 na expira??o do boleto que é gravada no banco pro caso do cara ter comprado as 10 da manha e pago as 10 da manha do dia do vencimento por exemplo e n?o dar cancelado.– Fiz umas condicionais que jogam o vencimento de boletos para segunda-feira no caso de cairem de Sabado ou Domingo de acordo com a data da compra e a config de dias para pagar.
– Adicionei 1 dia de margem para o SOUNDER (cron q checa o pagamento) para checar casos em que o cara paga o boleto nas ultimas horas do dia de vencimento e o sounder n?o tem tempo habil de esperar a compensa??o.
– Retiro esta margem na hora de mandar pro boleto fisico. Ou seja: O itau recebe o vencimento pro dia X, mas no banco de dados (que é o dado utilizado pelo SOUNDER) vai estar X+1
Segue o código. Alteracoes no arquivo wc-class-itau-shopline-api.php
Funcoes abaixo, somente troca-las por completo.
Fazer um tente em sandbox para confirmar se tudo funciona. Aqui está ok./** * Save expiry time in the database. * * @param int $order_id * * @return int */ public function save_expiry_time( $order_id ) { $days = absint( $this->days_to_pay ); $now = strtotime( current_time( 'mysql' ) ); // Seta o horario para 23:59:59 para enganar o sounder. O horario limite do vencimento é as 21:00:00 do dia de vencimento. $fixtime = strtotime(date( 'Y-m-d', $now ).' 23:59:59'); $expiry = strtotime( '+' . $days . ' days', $fixtime ); // Descobre o dia da semana que cai o vencimento $weekday = date('w', $expiry); // Joga o vencimento para segunda-feira as 23:59:59 caso o expiry caia de sabado ou domingo e o sistema entenda o sistema bancario de dias úteis if ($weekday == 6){ $expiry = strtotime( '+ 2 days', $expiry ); // 'Caiu no Sabado - ' ; } if ($weekday == 0){ $expiry = strtotime( '+ 1 days', $expiry ); // 'Caiu no Domingo - ' ; } // Insere um dia de margem pra burlar o sounder no caso do cliente pagar nas ultimas hora do dia de vencimento e só compensar no próximo dia. $expiry = strtotime( '+ 1 days', $expiry ); update_post_meta( $order_id, '_wc_itau_shopline_expiry_time', $expiry ); return $expiry; } /** * Get expiry date. * * @param int $order_id * * @return string */ protected function get_expiry_date( $order_id ) { $time = get_post_meta( $order_id, '_wc_itau_shopline_expiry_time', true ); if ( '' == $time ) { $time = $this->save_expiry_time( $order_id ); } // Elimina a margem de um dia pra jogar no boleto propriamente dito, mantendo 1 dia a mais somente no banco de dados para enganar o sounder. $time = strtotime( '- 1 days', $time ); return date( 'dmY', $time ); }
- The topic ‘Quem tem problemas de boleto cancelando indevidamente – Solu??o temporaria aqui’ is closed to new replies.