Commit Graph

58110 Commits

Author SHA1 Message Date
Nabin Hait
d775d540c4 docs: mark Phase 4 Payment Entry as done in refactor spec 2026-05-27 12:42:59 +05:30
Nabin Hait
b381061742 refactor: introduce Payment Entry GL composer
Move the Payment Entry GL row builders (party, bank, deductions, tax)
onto a new PaymentEntryGLComposer(BaseGLComposer); compose() mirrors the
former build_gl_map, which is now a thin shim delegating to the composer.
The builders operate on self.doc and shared helpers stay on the document.
Advance-posting builders are left on the controller; they post in a
separate pass and move with the advances service in a later phase.
2026-05-27 12:42:52 +05:30
Nabin Hait
90801550eb test: add Payment Entry GL characterization snapshots
Extend the Phase-0 GL safety net with five representative Payment Entry
scenarios (receive against SI, pay against PI, with deductions, with
taxes, multi-currency) ahead of moving PE onto the composer.
2026-05-27 12:42:43 +05:30
Nabin Hait
8677e2df40 docs: mark Phase 3 as DONE in refactor spec 2026-05-27 08:40:26 +05:30
Nabin Hait
9c78c9ab7b refactor: migrate PI item/stock/provisional GL builders onto the composer
Move make_item_gl_entries, make_stock_adjustment_entry,
get_provisional_accounts, make_provisional_gl_entry, and
update_net_purchase_amount_for_linked_assets from PurchaseInvoice onto
PurchaseInvoiceGLComposer, completing the full GL builder migration.

purchase_invoice.py no longer contains any GL row-building logic;
PurchaseInvoiceGLComposer is the single authoritative source for all
PI GL entries, mirroring the SalesInvoiceGLComposer pattern.

All 12 GL characterization snapshots pass.
2026-05-27 08:40:01 +05:30
Nabin Hait
32c4b1d98a refactor: migrate PI supplier/tax/payment GL builders onto the composer
Move make_supplier_gl_entry, add_supplier_gl_entry, make_tax_gl_entries,
make_internal_transfer_gl_entries, make_gl_entries_for_tax_withholding,
make_payment_gl_entries, make_write_off_gl_entry, and
make_gle_for_rounding_adjustment from PurchaseInvoice onto
PurchaseInvoiceGLComposer.

compose() now calls self.X for all moved builders; the make_item cluster
(make_item_gl_entries, make_provisional_gl_entry, get_provisional_accounts,
update_net_purchase_amount_for_linked_assets, make_stock_adjustment_entry)
still lives on doc pending batch-2 migration.

All 12 GL characterization snapshots pass.
2026-05-27 08:29:32 +05:30
Nabin Hait
6467f07459 refactor: introduce Purchase Invoice GL composer
Phase 3 of the accounts/controller refactor. Adds PurchaseInvoiceGLComposer;
PI's get_gl_entries body moves into compose() and the method becomes a thin
shim. Row-builder methods still live on the document (invoked via self.doc)
and migrate onto the composer next.

After comparing the SI and PI compose() flows, BaseGLComposer is kept minimal:
the two differ in step order, builders, and per-doctype regional function, so a
shared template is not warranted. No behavior change (Phase 0 snapshots and PI
GL tests stay green).
2026-05-27 08:13:10 +05:30
Nabin Hait
b5c96dfef0 refactor: move Sales Invoice GL row builders onto the composer
Relocates all 11 Sales Invoice-specific GL entry builders from the document
onto SalesInvoiceGLComposer, operating on self.doc. The perpetual-inventory
super().get_gl_entries() call becomes super(SalesInvoice, doc).get_gl_entries().
Shared bucket-A helpers (get_gl_dict, make_discount_gl_entries, etc.) remain on
AccountsController for now, invoked via self.doc, until all doctypes use a
composer. No behavior change: Phase 0 snapshots and the SI tests covering
perpetual inventory, POS, write-off, returns, fixed assets, internal transfer
and loyalty all stay green.
2026-05-27 01:24:56 +05:30
Nabin Hait
cf1817c1ea refactor: introduce GL composer and delegate SI get_gl_entries
Phase 2 (pilot) of the accounts/controller refactor. Adds BaseGLComposer
and SalesInvoiceGLComposer; Sales Invoice's get_gl_entries body moves into
compose() and the method becomes a thin shim. Row-builder methods still live
on the document (invoked via self.doc) and migrate onto the composer next.
No behavior change (Phase 0 GL snapshots remain byte-identical).
2026-05-27 01:12:11 +05:30
Nabin Hait
3ec6387425 fix: honor account freezing date when cancelling vouchers
make_reverse_gl_entries passed adv_adj as the company argument to
check_freezing_date, so the freeze-date check silently no-op'd on
cancellation (no company matched). Pass company explicitly so
cancellations respect the freezing date like submissions do.

Adds a regression test covering cancellation after the freeze date.
2026-05-27 01:01:43 +05:30
Nabin Hait
234c4a45b8 refactor: extract list-level GL validations into gl_validator service
Phase 1 of the accounts/controller refactor. Moves the six pure
list-level validators (validate_disabled_accounts, validate_accounting_period,
validate_cwip_accounts, check_freezing_date, validate_against_pcv,
validate_allowed_dimensions) out of general_ledger.py into the new
erpnext/accounts/services/gl_validator.py. general_ledger.py imports and
calls them at the existing sites; no behavior change (Phase 0 GL snapshots
remain byte-identical).

The debit/credit balance trio stays in general_ledger.py for now since
get_debit_credit_difference mutates entries and is interleaved with the
round-off repair.
2026-05-27 01:01:20 +05:30
Nabin Hait
064340cafb test: add Phase 0 GL characterization safety net
Golden-master snapshot harness (GLSnapshot / assert_gl_snapshot) plus 12
characterization scenarios for Sales and Purchase Invoice (basic, taxes,
multi-currency, returns, round-off, discount accounting, advance, POS).
Locks current GL Entry output so the upcoming GL pipeline refactor
(composer / validator / sink) can be verified byte-identical.

Regenerate goldens with REGEN_GL_SNAPSHOTS=1.
2026-05-27 00:49:48 +05:30
Nabin Hait
dfbd8db9d3 docs: add accounts/controller refactor spec
Phased plan to decompose accounts_controller.py and the sales_invoice.py
monolith into composed services. Documents the frozen GL-layer design
(GLComposer / gl_validator / general_ledger sink), method bucketing, and
the 8-phase rollout.
2026-05-27 00:05:35 +05:30
rohitwaghchaure
e1ddc50872 Merge pull request #55242 from rohitwaghchaure/fixed-stock-reco-for-legacy-serial-nos
fix: stock reco for legacy serial nos
2026-05-26 15:58:16 +05:30
rohitwaghchaure
5057057f43 Merge pull request #55290 from rohitwaghchaure/fixed-tax-amount-issue-in-invoice-lcv
fix: inclusive tax amount not considered while setting LCV from purchase invoice
2026-05-26 15:44:26 +05:30
Nihantra C. Patel
cad4d497bd Merge pull request #55268 from Nihantra-Patel/immutable-ledger-reverse-posting-date
fix: use passed posting date for period closing validation in reverse GL entries
2026-05-26 15:43:06 +05:30
Rohit Waghchaure
048ddfc265 fix: inclusive tax amount not considered while setting LCV from purchase invoice 2026-05-26 15:13:05 +05:30
Nihantra Patel
9c39b01f1c test: update testcase 2026-05-26 14:19:04 +05:30
Loic Oberle
a051049710 refactor(sales_order): Replace SQL with ORM in validate_po (#55198) 2026-05-26 08:20:04 +00:00
Mihir Kandoi
f023bf8a96 fix: single variant creation error (#55286)
* fix: single variant creation error

* feat: allow creation of any number of variants in multiple item variant creation dialog
2026-05-26 13:34:44 +05:30
Loic Oberle
b8327e4031 refactor(customer): replace SQL with query builder in get_customer_ou… (#55209) 2026-05-26 08:00:23 +00:00
Loic Oberle
bbb7b6f8e0 refactor(buying): replace sql query by orm (#55153) 2026-05-26 13:14:39 +05:30
Mihir Kandoi
090c25d848 feat: allow creation of any number of variants in multiple item variant creation dialog 2026-05-26 13:09:14 +05:30
Mihir Kandoi
bda75135c3 fix: single variant creation error 2026-05-26 12:53:47 +05:30
Mihir Kandoi
a128d851c5 refactor: remove unused customer field in Item DocType (#55277) 2026-05-26 05:17:00 +00:00
ruthra kumar
cd35fbde94 Merge pull request #55256 from ruthra-kumar/handle_stuck_running_state_in_process_pcv
refactor: handle processes stuck in running state in process pcv
2026-05-26 10:27:28 +05:30
Pandiyan P
c286a73e0b fix: prevent AttributeError in batch query filters (#55257) 2026-05-26 10:23:18 +05:30
ruthra kumar
6cb7971342 refactor: atomic summarization step for process pcv 2026-05-26 09:55:38 +05:30
diptanilsaha
49d579a016 fix(payment_entry): sync paid/received amounts for cross-currency entries (#55270) 2026-05-25 23:16:33 +05:30
Nihantra Patel
f040bdf165 fix: use passed posting date in make_reverse_gl_entries 2026-05-25 21:39:54 +05:30
Rohit Waghchaure
9d5fd11bcd fix: stock reco for legacy serial nos 2026-05-25 17:22:08 +05:30
rohitwaghchaure
af26986def Merge pull request #55252 from rohitwaghchaure/fixed-job-card-buttons-class
fix: job card buttons color
2026-05-25 17:21:34 +05:30
rohitwaghchaure
7982ecfdf7 Merge pull request #55249 from aerele/fix/support-#68708
fix(stock): remove precision for valuation rate while creating sle
2026-05-25 17:21:01 +05:30
ruthra kumar
f414778486 refactor: handle processes stuck in running state in process pcv 2026-05-25 16:02:35 +05:30
Khushi Rawat
631a4a67ba Merge pull request #55126 from khushi8112/asset-scrap-flow
fix: asset scrap flow related changes
2026-05-25 15:45:03 +05:30
Rohit Waghchaure
c327a5ca93 fix: job card buttons color 2026-05-25 15:33:12 +05:30
Sudharsanan11
66ba7be239 fix(stock): remove precision for valuation rate while calculating difference amount 2026-05-25 14:43:39 +05:30
Sudharsanan11
ccb8837c6c fix(stock): remove precision for valuation rate while creating sle 2026-05-25 14:42:58 +05:30
ruthra kumar
1c3a9f7dd9 refactor: summarize in background 2026-05-25 14:11:46 +05:30
Mihir Kandoi
bafa6f9508 feat: add party groups functionality to party specific item (#54988) 2026-05-25 12:06:54 +05:30
rohitwaghchaure
b0a83f9b22 Merge pull request #55216 from rohitwaghchaure/fixed-valuation-rate-for-fg-item-new
fix: fg valuation rate in repack entry when multiple FGs
2026-05-25 11:44:02 +05:30
MochaMind
7ae6535be9 chore: update POT file (#55235) 2026-05-24 14:47:38 +02:00
Mihir Kandoi
2a01a37d5d refactor: stock ageing report (#55231) 2026-05-24 15:43:07 +05:30
Mihir Kandoi
c1a4c3d053 refactor: use frappe.db.bulk_update instead of Case queries in subcon… (#55232) 2026-05-24 09:36:45 +00:00
Mihir Kandoi
004818e0ac fix: consider batchwise valuation in stock ageing report (#54919) 2026-05-24 12:27:48 +05:30
Mihir Kandoi
268910467a fix: not able to reserve product bundle through dialog (#55194) 2026-05-24 12:26:48 +05:30
Rohit Waghchaure
a47e4c04f7 fix: fg valuation rate in repack entry when multiple FGs 2026-05-23 14:42:38 +05:30
Loic Oberle
983ae011f0 refactor(sales_order): Replace SQL with ORM in make_maintenance_schedule (#55206) 2026-05-23 06:27:27 +00:00
Loic Oberle
6f9f6d3b7d refactor(sales_order): Replace SQL with ORM in validate_proj_cust (#55202) 2026-05-23 06:26:25 +00:00
Loic Oberle
9546374ac3 refactor(sales_order): Replace SQL with ORM in validate_sales_mntc_qu… (#55201) 2026-05-23 06:17:00 +00:00