Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Feature/ospos customizations by techtonz · Pull Request #4641 · opensourcepos/opensourcepos · GitHub
Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis
, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Feature/ospos customizations by techtonz · Pull Request #4641 · opensourcepos/opensourcepos · GitHub
Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis
, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Feature/ospos customizations by techtonz · Pull Request #4641 · opensourcepos/opensourcepos · GitHub
Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' Feature/ospos customizations by techtonz · Pull Request #4641 · opensourcepos/opensourcepos · GitHub
Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis
, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Feature/ospos customizations by techtonz · Pull Request #4641 · opensourcepos/opensourcepos · GitHub
Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Feature/ospos customizations by techtonz · Pull Request #4641 · opensourcepos/opensourcepos · GitHub
Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis
, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); Feature/ospos customizations by techtonz · Pull Request #4641 · opensourcepos/opensourcepos · GitHub
Skip to content

Feature/ospos customizations - #4641

Closed
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations
Closed

Feature/ospos customizations#4641
techtonz wants to merge 17 commits into
opensourcepos:masterfrom
techtonz:feature/ospos-customizations

Conversation

@techtonz

Copy link
Copy Markdown

No description provided.

Insert any missing work-order/quote/invoice config keys (INSERT IGNORE) and
enable work order support so the register offers Receipt/Quote/Work
Order/Invoice modes. Safe on fresh and existing databases.
New pivot report showing stock quantity per product per location with a
total, wired into the Reports page inventory section.
- OSPOSRules: resolve theme dir from FCPATH
- Config postSaveLocale: sanitize payment reference code min/max
- locale_helper: safe defaults for missing config values
- initial_schema rollback: keep the framework migrations history table
- header/login: restore injected CSS/JS resource includes
- tabular_details: drop unused init_dialog block
- Refresh cart stock figures and re-point lines at the new source when the
source location is changed, so the register always reflects current stock.
- Add confirmation dialogs to the Finish and Cancel buttons using the
existing confirm_finish_transfer / confirm_cancel_transfer language keys.
- Add RMA (Return Merchandise Authorization) module: rmas/rma_items tables,
controller, model, library, register/detail views, per-item issue and
serial number fields, and a Detailed RMA report.
- Add requisitions workflow: two-step approval (PENDING -> SOURCE_APPROVED
-> APPROVED) with stock moved via transfers, reject support, per-location
permissions and a Detailed RMA/Requisitions reporting integration.
- Add Rmas.php and Requisitions.php language files for all locales.
- Add workflow tests for both modules.
- Add brand varchar column via new migration and expose it on the item
form (before Item Name), bulk edit, manage table column and CSV import.
- Make brand a required field on the item form and add localized
brand/brand_required messages to all languages.
- Render remarks/comments in detailed sales/receivings reports (and
specific customer/employee/discount reports) as links that open the
corresponding receipt in a new tab.
- Turn POS/RECV inventory comments in the Inventory Count Details view
into clickable receipt links.
- Add brand, brand_required, all_branches, open_receipt and RMA/requisition
report keys to all language files.
- Track all session customizations in CHANGELOG.
- Add RMA and requisitions modules to the reports listing and date input.
- Auto-create permissions/grants for new stock locations (requisitions/rmas).
- Add RMA/requisition links in the menu header and report data columns.
@coderabbitai

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 394 files, which is 94 over the limit of 300.

To get a review, reduce the PR to 300 files or fewer by splitting it into smaller PRs or changing its base branch.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 95672461-d880-4fcb-8140-cc7de2a68c13

📥 Commits

Reviewing files that changed from the base of the PR and between 0e8fc09 and fadf2f3.

📒 Files selected for processing (394)
  • .dockerignore
  • .gitignore
  • CHANGELOG.md
  • Dockerfile
  • app/Commands/LotTrackingSmokeTest.php
  • app/Config/Routes.php
  • app/Config/Validation/OSPOSRules.php
  • app/Controllers/Config.php
  • app/Controllers/Items.php
  • app/Controllers/Reports.php
  • app/Controllers/Requisitions.php
  • app/Controllers/Rmas.php
  • app/Controllers/Sales.php
  • app/Controllers/Transfers.php
  • app/Database/Migrations/20170501000000_initial_schema.php
  • app/Database/Migrations/20260810000000_AddSupplierLotTracking.php
  • app/Database/Migrations/20260811000000_AddSuspendedSaleReservations.php
  • app/Database/Migrations/20260813000000_AddTransfers.php
  • app/Database/Migrations/20260814000000_EnableServicesWorkflow.php
  • app/Database/Migrations/20260815000000_AddRequisitions.php
  • app/Database/Migrations/20260816000000_AddRMAs.php
  • app/Database/Migrations/20260817000000_AddRmaItemIssueSerial.php
  • app/Database/Migrations/20260818000000_AddBrandToItems.php
  • app/Helpers/importfile_helper.php
  • app/Helpers/locale_helper.php
  • app/Helpers/tabular_helper.php
  • app/Language/ar-EG/Items.php
  • app/Language/ar-EG/Module.php
  • app/Language/ar-EG/Reports.php
  • app/Language/ar-EG/Requisitions.php
  • app/Language/ar-EG/Rmas.php
  • app/Language/ar-EG/Sales.php
  • app/Language/ar-EG/Transfers.php
  • app/Language/ar-LB/Items.php
  • app/Language/ar-LB/Module.php
  • app/Language/ar-LB/Reports.php
  • app/Language/ar-LB/Requisitions.php
  • app/Language/ar-LB/Rmas.php
  • app/Language/ar-LB/Sales.php
  • app/Language/ar-LB/Transfers.php
  • app/Language/az/Items.php
  • app/Language/az/Module.php
  • app/Language/az/Reports.php
  • app/Language/az/Requisitions.php
  • app/Language/az/Rmas.php
  • app/Language/az/Sales.php
  • app/Language/az/Transfers.php
  • app/Language/bg/Items.php
  • app/Language/bg/Module.php
  • app/Language/bg/Reports.php
  • app/Language/bg/Requisitions.php
  • app/Language/bg/Rmas.php
  • app/Language/bg/Sales.php
  • app/Language/bg/Transfers.php
  • app/Language/bs/Items.php
  • app/Language/bs/Module.php
  • app/Language/bs/Reports.php
  • app/Language/bs/Requisitions.php
  • app/Language/bs/Rmas.php
  • app/Language/bs/Sales.php
  • app/Language/bs/Transfers.php
  • app/Language/ckb/Items.php
  • app/Language/ckb/Module.php
  • app/Language/ckb/Reports.php
  • app/Language/ckb/Requisitions.php
  • app/Language/ckb/Rmas.php
  • app/Language/ckb/Sales.php
  • app/Language/ckb/Transfers.php
  • app/Language/cs/Items.php
  • app/Language/cs/Module.php
  • app/Language/cs/Reports.php
  • app/Language/cs/Requisitions.php
  • app/Language/cs/Rmas.php
  • app/Language/cs/Sales.php
  • app/Language/cs/Transfers.php
  • app/Language/da/Items.php
  • app/Language/da/Module.php
  • app/Language/da/Reports.php
  • app/Language/da/Requisitions.php
  • app/Language/da/Rmas.php
  • app/Language/da/Sales.php
  • app/Language/da/Transfers.php
  • app/Language/de-CH/Items.php
  • app/Language/de-CH/Module.php
  • app/Language/de-CH/Reports.php
  • app/Language/de-CH/Requisitions.php
  • app/Language/de-CH/Rmas.php
  • app/Language/de-CH/Sales.php
  • app/Language/de-CH/Transfers.php
  • app/Language/de-DE/Items.php
  • app/Language/de-DE/Module.php
  • app/Language/de-DE/Reports.php
  • app/Language/de-DE/Requisitions.php
  • app/Language/de-DE/Rmas.php
  • app/Language/de-DE/Sales.php
  • app/Language/de-DE/Transfers.php
  • app/Language/el/Items.php
  • app/Language/el/Module.php
  • app/Language/el/Reports.php
  • app/Language/el/Requisitions.php
  • app/Language/el/Rmas.php
  • app/Language/el/Sales.php
  • app/Language/el/Transfers.php
  • app/Language/en-GB/Items.php
  • app/Language/en-GB/Module.php
  • app/Language/en-GB/Reports.php
  • app/Language/en-GB/Requisitions.php
  • app/Language/en-GB/Rmas.php
  • app/Language/en-GB/Sales.php
  • app/Language/en-GB/Transfers.php
  • app/Language/en/Items.php
  • app/Language/en/Module.php
  • app/Language/en/Reports.php
  • app/Language/en/Requisitions.php
  • app/Language/en/Rmas.php
  • app/Language/en/Sales.php
  • app/Language/en/Transfers.php
  • app/Language/es-ES/Items.php
  • app/Language/es-ES/Module.php
  • app/Language/es-ES/Reports.php
  • app/Language/es-ES/Requisitions.php
  • app/Language/es-ES/Rmas.php
  • app/Language/es-ES/Sales.php
  • app/Language/es-ES/Transfers.php
  • app/Language/es-MX/Items.php
  • app/Language/es-MX/Module.php
  • app/Language/es-MX/Reports.php
  • app/Language/es-MX/Requisitions.php
  • app/Language/es-MX/Rmas.php
  • app/Language/es-MX/Sales.php
  • app/Language/es-MX/Transfers.php
  • app/Language/fa/Items.php
  • app/Language/fa/Module.php
  • app/Language/fa/Reports.php
  • app/Language/fa/Requisitions.php
  • app/Language/fa/Rmas.php
  • app/Language/fa/Sales.php
  • app/Language/fa/Transfers.php
  • app/Language/fr/Items.php
  • app/Language/fr/Module.php
  • app/Language/fr/Reports.php
  • app/Language/fr/Requisitions.php
  • app/Language/fr/Rmas.php
  • app/Language/fr/Sales.php
  • app/Language/fr/Transfers.php
  • app/Language/he/Items.php
  • app/Language/he/Module.php
  • app/Language/he/Reports.php
  • app/Language/he/Requisitions.php
  • app/Language/he/Rmas.php
  • app/Language/he/Sales.php
  • app/Language/he/Transfers.php
  • app/Language/hr-HR/Items.php
  • app/Language/hr-HR/Module.php
  • app/Language/hr-HR/Reports.php
  • app/Language/hr-HR/Requisitions.php
  • app/Language/hr-HR/Rmas.php
  • app/Language/hr-HR/Sales.php
  • app/Language/hr-HR/Transfers.php
  • app/Language/hu/Items.php
  • app/Language/hu/Module.php
  • app/Language/hu/Reports.php
  • app/Language/hu/Requisitions.php
  • app/Language/hu/Rmas.php
  • app/Language/hu/Sales.php
  • app/Language/hu/Transfers.php
  • app/Language/hy/Items.php
  • app/Language/hy/Module.php
  • app/Language/hy/Reports.php
  • app/Language/hy/Requisitions.php
  • app/Language/hy/Rmas.php
  • app/Language/hy/Sales.php
  • app/Language/hy/Transfers.php
  • app/Language/id/Items.php
  • app/Language/id/Module.php
  • app/Language/id/Reports.php
  • app/Language/id/Requisitions.php
  • app/Language/id/Rmas.php
  • app/Language/id/Sales.php
  • app/Language/id/Transfers.php
  • app/Language/it/Items.php
  • app/Language/it/Module.php
  • app/Language/it/Reports.php
  • app/Language/it/Requisitions.php
  • app/Language/it/Rmas.php
  • app/Language/it/Sales.php
  • app/Language/it/Transfers.php
  • app/Language/ka/Requisitions.php
  • app/Language/ka/Rmas.php
  • app/Language/ka/Sales.php
  • app/Language/ka/Transfers.php
  • app/Language/km/Items.php
  • app/Language/km/Module.php
  • app/Language/km/Reports.php
  • app/Language/km/Requisitions.php
  • app/Language/km/Rmas.php
  • app/Language/km/Sales.php
  • app/Language/km/Transfers.php
  • app/Language/lo/Items.php
  • app/Language/lo/Module.php
  • app/Language/lo/Reports.php
  • app/Language/lo/Requisitions.php
  • app/Language/lo/Rmas.php
  • app/Language/lo/Sales.php
  • app/Language/lo/Transfers.php
  • app/Language/ml/Items.php
  • app/Language/ml/Module.php
  • app/Language/ml/Reports.php
  • app/Language/ml/Requisitions.php
  • app/Language/ml/Rmas.php
  • app/Language/ml/Sales.php
  • app/Language/ml/Transfers.php
  • app/Language/nb/Items.php
  • app/Language/nb/Module.php
  • app/Language/nb/Reports.php
  • app/Language/nb/Requisitions.php
  • app/Language/nb/Rmas.php
  • app/Language/nb/Sales.php
  • app/Language/nb/Transfers.php
  • app/Language/nl-BE/Items.php
  • app/Language/nl-BE/Module.php
  • app/Language/nl-BE/Reports.php
  • app/Language/nl-BE/Requisitions.php
  • app/Language/nl-BE/Rmas.php
  • app/Language/nl-BE/Sales.php
  • app/Language/nl-BE/Transfers.php
  • app/Language/nl-NL/Items.php
  • app/Language/nl-NL/Module.php
  • app/Language/nl-NL/Reports.php
  • app/Language/nl-NL/Requisitions.php
  • app/Language/nl-NL/Rmas.php
  • app/Language/nl-NL/Sales.php
  • app/Language/nl-NL/Transfers.php
  • app/Language/pl/Items.php
  • app/Language/pl/Module.php
  • app/Language/pl/Reports.php
  • app/Language/pl/Requisitions.php
  • app/Language/pl/Rmas.php
  • app/Language/pl/Sales.php
  • app/Language/pl/Transfers.php
  • app/Language/pt-BR/Items.php
  • app/Language/pt-BR/Module.php
  • app/Language/pt-BR/Reports.php
  • app/Language/pt-BR/Requisitions.php
  • app/Language/pt-BR/Rmas.php
  • app/Language/pt-BR/Sales.php
  • app/Language/pt-BR/Transfers.php
  • app/Language/ro/Items.php
  • app/Language/ro/Module.php
  • app/Language/ro/Reports.php
  • app/Language/ro/Requisitions.php
  • app/Language/ro/Rmas.php
  • app/Language/ro/Sales.php
  • app/Language/ro/Transfers.php
  • app/Language/ru/Items.php
  • app/Language/ru/Module.php
  • app/Language/ru/Reports.php
  • app/Language/ru/Requisitions.php
  • app/Language/ru/Rmas.php
  • app/Language/ru/Sales.php
  • app/Language/ru/Transfers.php
  • app/Language/sv/Items.php
  • app/Language/sv/Module.php
  • app/Language/sv/Reports.php
  • app/Language/sv/Requisitions.php
  • app/Language/sv/Rmas.php
  • app/Language/sv/Sales.php
  • app/Language/sv/Transfers.php
  • app/Language/sw-KE/Items.php
  • app/Language/sw-KE/Module.php
  • app/Language/sw-KE/Reports.php
  • app/Language/sw-KE/Requisitions.php
  • app/Language/sw-KE/Rmas.php
  • app/Language/sw-KE/Sales.php
  • app/Language/sw-KE/Transfers.php
  • app/Language/sw-TZ/Items.php
  • app/Language/sw-TZ/Module.php
  • app/Language/sw-TZ/Reports.php
  • app/Language/sw-TZ/Requisitions.php
  • app/Language/sw-TZ/Rmas.php
  • app/Language/sw-TZ/Sales.php
  • app/Language/sw-TZ/Transfers.php
  • app/Language/ta/Items.php
  • app/Language/ta/Module.php
  • app/Language/ta/Reports.php
  • app/Language/ta/Requisitions.php
  • app/Language/ta/Rmas.php
  • app/Language/ta/Sales.php
  • app/Language/ta/Transfers.php
  • app/Language/th/Items.php
  • app/Language/th/Module.php
  • app/Language/th/Reports.php
  • app/Language/th/Requisitions.php
  • app/Language/th/Rmas.php
  • app/Language/th/Sales.php
  • app/Language/th/Transfers.php
  • app/Language/tl/Items.php
  • app/Language/tl/Module.php
  • app/Language/tl/Reports.php
  • app/Language/tl/Requisitions.php
  • app/Language/tl/Rmas.php
  • app/Language/tl/Sales.php
  • app/Language/tl/Transfers.php
  • app/Language/tr/Items.php
  • app/Language/tr/Module.php
  • app/Language/tr/Reports.php
  • app/Language/tr/Requisitions.php
  • app/Language/tr/Rmas.php
  • app/Language/tr/Sales.php
  • app/Language/tr/Transfers.php
  • app/Language/uk/Items.php
  • app/Language/uk/Module.php
  • app/Language/uk/Reports.php
  • app/Language/uk/Requisitions.php
  • app/Language/uk/Rmas.php
  • app/Language/uk/Sales.php
  • app/Language/uk/Transfers.php
  • app/Language/ur/Items.php
  • app/Language/ur/Module.php
  • app/Language/ur/Reports.php
  • app/Language/ur/Requisitions.php
  • app/Language/ur/Rmas.php
  • app/Language/ur/Sales.php
  • app/Language/ur/Transfers.php
  • app/Language/vi/Items.php
  • app/Language/vi/Module.php
  • app/Language/vi/Reports.php
  • app/Language/vi/Requisitions.php
  • app/Language/vi/Rmas.php
  • app/Language/vi/Sales.php
  • app/Language/vi/Transfers.php
  • app/Language/zh-Hans/Items.php
  • app/Language/zh-Hans/Module.php
  • app/Language/zh-Hans/Reports.php
  • app/Language/zh-Hans/Requisitions.php
  • app/Language/zh-Hans/Rmas.php
  • app/Language/zh-Hans/Sales.php
  • app/Language/zh-Hans/Transfers.php
  • app/Language/zh-Hant/Items.php
  • app/Language/zh-Hant/Module.php
  • app/Language/zh-Hant/Reports.php
  • app/Language/zh-Hant/Requisitions.php
  • app/Language/zh-Hant/Rmas.php
  • app/Language/zh-Hant/Sales.php
  • app/Language/zh-Hant/Transfers.php
  • app/Libraries/Item_lib.php
  • app/Libraries/Requisition_lib.php
  • app/Libraries/Rma_lib.php
  • app/Libraries/Transfer_lib.php
  • app/Models/Item.php
  • app/Models/Item_lot.php
  • app/Models/Receiving.php
  • app/Models/Reports/Detailed_receivings.php
  • app/Models/Reports/Detailed_rmas.php
  • app/Models/Reports/Detailed_sales.php
  • app/Models/Reports/Detailed_transfers.php
  • app/Models/Reports/Inventory_by_location.php
  • app/Models/Requisition.php
  • app/Models/Rma.php
  • app/Models/Sale.php
  • app/Models/Stock_location.php
  • app/Models/Transfer.php
  • app/Views/items/form.php
  • app/Views/items/form_bulk.php
  • app/Views/items/form_count_details.php
  • app/Views/items/manage.php
  • app/Views/login.php
  • app/Views/partial/header.php
  • app/Views/reports/date_input.php
  • app/Views/reports/inventory_by_location.php
  • app/Views/reports/listing.php
  • app/Views/reports/tabular_details.php
  • app/Views/reports/tabular_details_rmas.php
  • app/Views/reports/tabular_details_transfers.php
  • app/Views/requisitions/manage.php
  • app/Views/requisitions/register.php
  • app/Views/requisitions/view.php
  • app/Views/rmas/manage.php
  • app/Views/rmas/register.php
  • app/Views/rmas/view.php
  • app/Views/sales/suspended.php
  • app/Views/transfers/receipt.php
  • app/Views/transfers/register.php
  • docker-compose.override.yml
  • public/css/register.css
  • tests/Controllers/ConfigTest.php
  • tests/Controllers/CustomersCsvImportTest.php
  • tests/Controllers/EmployeesControllerTest.php
  • tests/Controllers/HomeTest.php
  • tests/Controllers/SalesControllerTest.php
  • tests/Models/RequisitionWorkflowTest.php
  • tests/Models/RmaWorkflowTest.php
  • tests/Models/TransferReversalTest.php
  • tests/run-tests.sh

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@objecttothis

Copy link
Copy Markdown
Member

If you want this review to be considered, you need to fill in some information in the PR description. It's also likely far too large for one PR. Unless there's good reason, you should submit one bugfix or feature change per Pull Request. This makes the Pull Requests more manageable and regressions easier to spot.

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@techtonz@objecttothis