Skip to content

feat: allow up to 18x installments #383

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
May 15, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 8 additions & 3 deletions Block/Adminhtml/Form/Field/InstallmentsNumber.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Config\Model\ResourceModel\Config\Data\CollectionFactory;
use Magento\Framework\Data\Form\Element\AbstractElement;
use Pagarme\Core\Kernel\Services\InstallmentService;
use Pagarme\Pagarme\Model\Account;
use Pagarme\Pagarme\Model\PagarmeConfigProvider;

Expand Down Expand Up @@ -42,12 +43,16 @@ public function render(AbstractElement $element)
$isGateway = $this->account->isGateway(PagarmeConfigProvider::CREDIT_CARD_PAYMENT_CONFIG);
if ($isGateway) {
$classes = $element->getClass();
$classes = str_replace('number-range-1-12', '', $classes);
$classes .= ' number-range-1-24';
$classes = str_replace('number-range-1-' . InstallmentService::MAX_PSP_INSTALLMENTS_NUMBER, '', $classes);
$classes .= ' number-range-1-' . InstallmentService::MAX_GATEWAY_INSTALLMENTS_NUMBER;
$element->setClass($classes);

$comment = $element->getComment();
$comment = str_replace('12', '24', $comment);
$comment = str_replace(
InstallmentService::MAX_PSP_INSTALLMENTS_NUMBER,
InstallmentService::MAX_GATEWAY_INSTALLMENTS_NUMBER,
$comment
);
$element->setComment($comment);
}
return parent::render($element);
Expand Down
8 changes: 4 additions & 4 deletions Model/PagarmeConfigProvider.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
use Pagarme\Core\Kernel\Services\InstallmentService;
use Pagarme\Core\Middle\Model\Account\PaymentEnum;
use Pagarme\Pagarme\Gateway\Transaction\Base\Config\ConfigInterface as PagarmeConfigInterface;

Expand Down Expand Up @@ -64,7 +65,7 @@ class PagarmeConfigProvider implements ConfigProviderInterface
const DEBIT_PAYMENT_CONFIG = 'pagarme_debit';

const PIX_PAYMENT_CONFIG = 'pagarme_pix';

const GOOGLEPAY_PAYMENT_CONFIG = 'pagarme_googlepay';

const VOUCHER_PAYMENT_CONFIG = 'pagarme_voucher';
Expand Down Expand Up @@ -198,15 +199,14 @@ public function validateMaxInstallment()
{
$isGatewayIntegrationType = $this->isGatewayIntegrationType();
$maxInstallment = $this->getMaxInstallment();
$maxInstallmentForPSP = 12;

if (
!$isGatewayIntegrationType
&& $maxInstallment > $maxInstallmentForPSP
&& $maxInstallment > InstallmentService::MAX_PSP_INSTALLMENTS_NUMBER
) {
$this->config->saveConfig(
self::XML_PATH_MAX_INSTALLMENT,
$maxInstallmentForPSP,
InstallmentService::MAX_PSP_INSTALLMENTS_NUMBER,
'default',
0
);
Expand Down
6 changes: 3 additions & 3 deletions etc/adminhtml/system/transaction/creditcard/installments.xml
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@
<field id="installments_number" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="30" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size'>12</span>.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size'>18</span>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_active">1</field>
Expand Down Expand Up @@ -84,7 +84,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_active">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
<field id="installments_number_amex" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_amex'>12</span>.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_amex'>18</span>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_amex</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_amex" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -58,7 +58,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_amex</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_amex">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
<field id="installments_number_aura" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_aura'>12</span>.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_aura'>18</span>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_aura</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_aura" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -58,7 +58,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_aura</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_aura">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
<field id="installments_number_banese" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and 24.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and 18.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_banese</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_banese" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -59,7 +59,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_banese</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_banese">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
<field id="installments_number_cabal" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and 24.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and 18.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_cabal</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_cabal" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -59,7 +59,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_cabal</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_cabal">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@
<field id="installments_number_credz" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and 24.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and 18.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_credz</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_credz" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -59,7 +59,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_credz</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_credz">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
<field id="installments_number_diners" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_diners'>12</span>.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_diners'>18</span>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_diners</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_diners" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -58,7 +58,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_diners</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_diners">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
<field id="installments_number_discover" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<label>Max number of installments</label>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_discover'>12</span>.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_discover'>18</span>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_discover</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_discover" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -58,7 +58,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_discover</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_discover">1</field>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@
<field id="installments_number_elo" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label comment" type="text">
<label>Max number of installments</label>
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_elo'>12</span>.</p>]]></comment>
<comment><![CDATA[<p>Insert a number between 1 and <span id='installments_max_size_elo'>18</span>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_number_elo</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
</field>
<field id="installment_min_amount_elo" showInDefault="1" showInStore="1" showInWebsite="1" sortOrder="20" translate="label" type="text">
Expand Down Expand Up @@ -58,7 +58,7 @@
<backend_model>Pagarme\Pagarme\Model\Validation\GenericValidation</backend_model>
<comment><![CDATA[<p>Insert a number between 1 and the <b>Max number of installments</b>.</p>]]></comment>
<config_path>payment/pagarme_creditcard/installments_max_without_interest_elo</config_path>
<validate>required-entry validate-number-range number-range-1-12</validate>
<validate>required-entry validate-number-range number-range-1-18</validate>
<frontend_model>Pagarme\Pagarme\Block\Adminhtml\Form\Field\InstallmentsNumber</frontend_model>
<depends>
<field id="installments_interest_by_issuer_elo">1</field>
Expand Down
Loading
Loading