Skip to content

Commit

Permalink
v. 3.15.1
Browse files Browse the repository at this point in the history
- Correção: Um problema no cálculo do parcelamento ocorria em casos onde o valor da parcela mínima sem juros era superior ao valor total do pedido multiplicado por dois.

- Descoberta: Quando temos uma promoção de parcelamento configurada no PagSeguro, não devemos usar o recurso de "valor da parcela mínima". Embora as APIs do PagSeguro no cálculo de parcelas consigam calcular o valor correto do parcelamento, nos casos onde nenhuma parcela sem juros é permitido faz com que a API de pagamento do PagSeguro gere erros impedindo a finalização de pedidos. Em outras palavras, ao usar o recurso de "Valor mínimo de parcela sem juros" você deve desativar ou excluir qualquer promoção criada no PagSeguro. Saiba mais em https://bit.ly/3q1GfiL8.

-Correção: quando um pedido recebia o status "Em Analise" ele não podia ser cancelado por uma limitação do Magento. Isso fazia com que a atualização do status deste pedido falhasse, ocasionando problemas também quando isso ocorria em um dos cartões (no caso de pedido com 2 cartões).
Merge branch 'release/3.15.1'
  • Loading branch information
r-martins committed Mar 18, 2022
2 parents 1ae4f78 + 128d189 commit f7b282f
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 15 deletions.
13 changes: 8 additions & 5 deletions app/code/community/RicardoMartins/PagSeguro/Helper/Data.php
Original file line number Diff line number Diff line change
Expand Up @@ -667,11 +667,14 @@ public function getMaxInstallmentsNoInterest($amount)
$freeAmt = Mage::getStoreConfig(
self::XML_PATH_PAYMENT_PAGSEGURO_CC_INSTALLMENT_FREE_INTEREST_MINIMUM_AMT
);
$selectedMaxInstallmentNoInterest = $freeAmt === 0 ? : '';
if ($freeAmt > 0) {
$selectedMaxInstallmentNoInterest = $amount / $freeAmt;
$selectedMaxInstallmentNoInterest = (int)floor($selectedMaxInstallmentNoInterest);

if (!$freeAmt || $freeAmt <= 0) {
return false;
}
return $selectedMaxInstallmentNoInterest;

$selectedMaxInstallmentNoInterest = $amount / $freeAmt;
$selectedMaxInstallmentNoInterest = (int)floor($selectedMaxInstallmentNoInterest);

return ($selectedMaxInstallmentNoInterest > 1) ? $selectedMaxInstallmentNoInterest : false; //prevents 0 or 1
}
}
15 changes: 8 additions & 7 deletions app/code/community/RicardoMartins/PagSeguro/Helper/Params.php
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ public function getCreditCardInstallmentsParams(Mage_Sales_Model_Order $order, $
isset($cardData["installments_qty"]) &&
isset($cardData["installments_value"]) )
{
return array
$return = array
(
'installmentQuantity' => $cardData["installments_qty"],
'installmentValue' => $cardData["installments_value"],
Expand All @@ -170,7 +170,7 @@ public function getCreditCardInstallmentsParams(Mage_Sales_Model_Order $order, $
{
if ($payment->getAdditionalInformation('installment_quantity')
&& $payment->getAdditionalInformation('installment_value')) {
return array
$return = array
(
'installmentQuantity' => $payment->getAdditionalInformation('installment_quantity'),
'installmentValue' => number_format(
Expand All @@ -180,11 +180,12 @@ public function getCreditCardInstallmentsParams(Mage_Sales_Model_Order $order, $
}
}

return array
(
'installmentQuantity' => '1',
'installmentValue' => number_format($order->getGrandTotal(), 2, '.', ''),
);
$maxInstallmentsNoInterest = Mage::helper('ricardomartins_pagseguro')
->getMaxInstallmentsNoInterest($order->getGrandTotal());

if ($maxInstallmentsNoInterest !== false) {
$return['noInterestInstallmentQuantity'] = $maxInstallmentsNoInterest;
}

return $return;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -727,6 +727,13 @@ protected function _cancelOrder($payment, $notification)

if($orderCancellation->getShouldCancel())
{
// checks if the order state is 'Pending Payment' and changes it
// so that the order can be cancelled. Orders with STATE_PAYMENT_REVIEW cannot be cancelled by default in
// Magento. See #181550828 for details
if ($order->getState() == Mage_Sales_Model_Order::STATE_PAYMENT_REVIEW) {
$order->setState(Mage_Sales_Model_Order::STATE_NEW);
}

$order->cancel();
}
}
Expand Down
2 changes: 1 addition & 1 deletion app/code/community/RicardoMartins/PagSeguro/etc/config.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<config>
<modules>
<RicardoMartins_PagSeguro>
<version>3.15.0</version>
<version>3.15.1</version>
</RicardoMartins_PagSeguro>
</modules>
<global>
Expand Down
4 changes: 2 additions & 2 deletions app/code/community/RicardoMartins/PagSeguro/etc/system.xml
Original file line number Diff line number Diff line change
Expand Up @@ -442,10 +442,10 @@
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<tooltip><![CDATA[
Esta configuração permite especificar qual um valor mínimo de parcela onde o vendedor (você) assume os juros. Ao colocar o valor 10 neste campo, um pedido de R$ 100 poderá ser parcelado em até 10x sem juros.
Esta configuração permite especificar qual um valor mínimo de parcela onde o vendedor (você) assume os juros. Ao colocar o valor 50 neste campo, um pedido de R$ 500 poderá ser parcelado em até 5x de R$50 sem juros.
]]></tooltip>
<validate>validate-number validate-not-negative-number</validate>
<comment><![CDATA[Ao especificar um valor, as configurações de promoções feitas em seu painel PagSeguro serão ignoradas. <a href="//bit.ly/34927gh" target="_blank">Saiba mais.</a>]]></comment>
<comment><![CDATA[Ao especificar um valor, você <strong>DEVE</strong> desativar ou remover qualquer <a href="//minhaconta.pagseguro.uol.com.br/meu-negocio/promocoes-salvas" target="_blank">promoção salva no seu painel PagSeguro</a>. <a href="//bit.ly/34927gh" target="_blank">Saiba mais.</a>]]></comment>
</installment_free_interest_minimum_amt>
<installments_product>
<label>Exibir parcelas na página de produto?</label>
Expand Down
2 changes: 2 additions & 0 deletions js/pagseguro/pagseguro.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,7 @@ RMPagSeguro = Class.create({
if (RMPagSeguroObj.config.installment_free_interest_minimum_amt > 0) {
maxInstallmentNoInterest = grandTotal / RMPagSeguroObj.config.installment_free_interest_minimum_amt;
maxInstallmentNoInterest = Math.floor(maxInstallmentNoInterest);
maxInstallmentNoInterest = (maxInstallmentNoInterest > 1) ? maxInstallmentNoInterest : '';
}
PagSeguroDirectPayment.getInstallments({
amount: grandTotal,
Expand Down Expand Up @@ -1331,6 +1332,7 @@ RMPagSeguro_Multicc_CardForm = Class.create
if (this.config.installment_free_interest_minimum_amt > 0) {
maxInstallmentNoInterest = this.getCardData("total").toFixed(2) / this.config.installment_free_interest_minimum_amt;
maxInstallmentNoInterest = Math.floor(maxInstallmentNoInterest);
maxInstallmentNoInterest = (maxInstallmentNoInterest > 1) ? maxInstallmentNoInterest : '';
}

var params =
Expand Down

0 comments on commit f7b282f

Please sign in to comment.