Fix QR code generation for batch invoice processing#1451
Fix QR code generation for batch invoice processing#1451nielsdrost7 merged 2 commits intoprep/v172from
Conversation
|
@coderabbitai full review |
✅ Actions performedFull review triggered. |
|
Important Review skippedBot user detected. To trigger a single review, invoke the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
📝 WalkthroughWalkthroughModified the QR code generation in the invoice helper to directly instantiate the QrCode library instead of using CodeIgniter's framework loader. The function maintains its original behavior of generating a QR code data URI for invoices with non-zero balances. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Possibly related issues
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Pull request overview
Fixes incorrect QR codes when generating multiple invoices within a single CodeIgniter 3 request by ensuring each call uses a fresh QrCode instance rather than the Loader-cached singleton.
Changes:
- Replace
$CI->load->library('QrCode', [...])usage with directQrCodeinstantiation per invoice. - Generate QR code data URI from the newly created instance to avoid parameter reuse across invoices.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
d314f64 to
5b927da
Compare
eb96fca to
d94e91d
Compare
51f45ef to
dd34674
Compare
Problem
Invoices generated in the same request (cron jobs, bulk operations) all contain identical QR codes from the first invoice. CodeIgniter 3's
$CI->load->library()instantiates only once per request and silently ignores parameters on subsequent calls.Changes
Replace library loader with direct instantiation in
application/helpers/invoice_helper.php:Before:
After:
Each invoice now receives a fresh
QrCodeinstance with correct payment data.Warning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
https://api.github.com/repos/Bacon/BaconQrCode/zipball/8674e51bb65af933a5ffaf1c308a660387c35c22/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/DASPRiD/Enum/zipball/b5874fa9ed0043116c72162ec7f4fb50e02e7cce/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/e01f4a821471308ba86aa202fed6698b6b695e3b/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/0ca86845ce43291e8f5692c7356fccf3bcf02bf4/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/PHPMailer/PHPMailer/zipball/d1ac35d784bf9f5e61b424901d5a014967f15b12/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/Setasign/FPDF/zipball/0838e0ee4925716fcbbc50ad9e1799b5edfae0a0/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/Setasign/FPDI/zipball/4b53852fde2734ec6a07e458a085db627c60eada/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/endroid/qr-code/zipball/0db25b506a8411a5e1644ebaa67123a6eb7b6a77/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/filp/whoops/zipball/d2102955e48b9fd9ab24280a7ad12ed552752c4d/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/guzzle/guzzle/zipball/b51ac707cfa420b7bfd4e4d5e510ba8008e822b4/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/guzzle/promises/zipball/481557b130ef3790cf82b713667b43030dc9c957/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/guzzle/psr7/zipball/21dc724a0583619cd1652f673303492272778051/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/laravel/pint/zipball/c67b4195b75491e4dfc6b00b1c78b68d86f54c90/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/moneyphp/money/zipball/b358727ea5a5cd2d7475e59c31dfc352440ae7ec/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/mpdf/mpdf/zipball/b59670a09498689c33ce639bac8f5ba26721dab3/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/mpdf/psr-http-message-shim/zipball/f25a0153d645e234f9db42e5433b16d9b113920f/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/mpdf/psr-log-aware-trait/zipball/a633da6065e946cc491e1c962850344bb0bf3e78/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/myclabs/DeepCopy/zipball/07d290f0c47959fd5eed98c95ee5602db07e0b6a/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/paragonie/random_compat/zipball/96c132c7f2f7bc3230723b66e89f8f150b29d5ae/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/phpstan/phpstan/zipball/9e800e6bee7d5bd02784d4c6069b48032d16224f/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/pocketarc/codeigniter/zipball/d310726565c12ba99b8037e8fb231ed739258e6e/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/rectorphp/rector/zipball/9afc1bb43571b25629f353c61a9315b5ef31383a/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/schmittjoh/php-option/zipball/75365b91986c2405cf5e1e012c5595cd487a98be/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/smhg/sepa-qr-data-php/zipball/837d98eae6fdcf61aaffddb5d9c61b535ee7ce1a/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/stripe/stripe-php/zipball/7e1c4b5d2beadeaeddc42fd1f8a50fdb18b37f30/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/symfony/polyfill-php80/zipball/0cc9dd0f17f61d8131e7df6b84bd344899fe2608/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/symfony/var-dumper/zipball/cfae1497a2f1eaad78dbc0590311c599c7178d4a/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)https://api.github.com/repos/vlucas/phpdotenv/zipball/955e7815d677a3eaa7075231212f2110983adecc/usr/bin/php8.3 /usr/bin/php8.3 -n -c /tmp/CXPERa /usr/bin/composer install --no-interaction rep cron\|schedule els/Mdl_user_cli-l ndor/bin/grep grep -l cron\|schedule invoices/views/partial_itemlist_responsive.php nfig/composer/vendor/bin/grep cron\|schedule x.php cal/bin/grep grep(http block)If you need me to access, download, or install something from one of these locations, you can either:
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.
Summary by CodeRabbit