Commit Graph

59737 Commits

Author SHA1 Message Date
Mihir Kandoi
b93a3bca16 ci(postgres): fail setup if pg_ctl stop fails before baking the datadir
The "Stop DB and stage datadir" step swallowed a failed `pg_ctl -m fast -w
stop` with `|| true`, then moved and tarred the PGDATA regardless. A stop
that times out or errors would bake a still-running, crash-inconsistent
cluster into the artifact every test shard consumes — and with
full_page_writes off, crash recovery can't repair torn pages. Drop the
`|| true` so a failed stop fails the job, mirroring the MariaDB sister's
"don't bake a dirty datadir" guard.

Also drop the redundant `ALTER SYSTEM SET fsync/synchronous_commit/
full_page_writes = off` block from install.sh. Its comment claimed the
postgres workflow "runs a service-container DB and never calls start-db.sh",
but it does call start-db.sh, which already applies those flags via `-o` on
every postgres start (setup job and each shard). The block was a no-op and
its justification was factually wrong.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 21:29:22 +05:30
Mihir Kandoi
6e955bdf3f ci(patch): download v14 baseline from GitHub release instead of frappe.io
The Patch Test job intermittently failed on the "Download erpnext v14 backup"
step with HTTP 403 Forbidden: frappe.io sits behind Cloudflare, and wget's
default User-Agent gets flagged by bot protection on cache misses. This caused
random failures across PRs that only a re-run would clear.

Pull the fixed baseline from the v14-baseline GitHub release using the built-in
token instead. Release assets are served from GitHub's CDN and authenticated
from the runner, so no rate-limit roulette.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 21:28:08 +05:30
Mihir Kandoi
0978d0304f test(manufacturing): savepoint duplicate Routing insert in create_routing (Postgres)
create_routing inserts a Routing and, on DuplicateEntryError, re-fetches and updates. On Postgres the failed insert aborts the transaction so the get_doc/save in the except raises InFailedSqlTransaction; MariaDB recovers. Savepoint + rollback before the fallback path.
2026-06-29 20:50:05 +05:30
Mihir Kandoi
2b966b69ce fix(stock): savepoint per-voucher accounting repost submit (Postgres)
make_reposting_for_accounting_ledgers submits a new Repost Item Valuation per voucher in a loop under except Exception. On Postgres a failed submit aborts the transaction so the next iteration's DB work dies with InFailedSqlTransaction; MariaDB continues. Savepoint per iteration, roll back on failure. No-op on MariaDB.
2026-06-29 20:50:05 +05:30
Mihir Kandoi
864fe50b24 fix(subcontracting): savepoint Purchase Receipt submit in make_purchase_receipt (Postgres)
Same submit()/add_comment-in-except shape as the PO->SCO mapper: on Postgres a failed submit aborts the transaction so the follow-on Comment insert raises InFailedSqlTransaction; MariaDB continues. Savepoint + rollback before add_comment. No-op on MariaDB.
2026-06-29 20:50:05 +05:30
Mihir Kandoi
b6165844ed fix(buying): savepoint Subcontracting Order submit in make_subcontracting_order (Postgres)
target_doc.submit() is wrapped in except Exception whose handler calls add_comment (a Comment insert). On Postgres a failed submit poisons the transaction so the add_comment insert raises InFailedSqlTransaction; MariaDB logs the comment. Savepoint + rollback before add_comment. No-op on MariaDB.
2026-06-29 20:50:05 +05:30
Jatin3128
6f97c7199c fix: carry item-level project to Purchase Receipt GL entries (#56568)
Purchase Receipt stock and asset GL lines used the item row's cost center
but always fell back to the document-level project, unlike Purchase Invoice
which uses the item-level project. add_gl_entry accepted a project argument
but never wrote it to the GL dict, so the inward, Stock Received But Not
Billed, landed cost, divisional loss, sub-contracting and exchange rate
lines dropped the row's project.

Write project into the GL dict and pass project=item.project on the entries
that were missing it, so project behaves like cost center and matches
Purchase Invoice.

Ticket: 72523
v14-baseline
2026-06-29 17:22:20 +05:30
Mihir Kandoi
70142d147e fix(selling): break last-sales-amount ties deterministically in Inactive Customers
get_last_sales_amt ordered by the sales date DESC only; same-date documents made the reported Last Order Amount engine-dependent. Add name DESC tiebreaker.
2026-06-29 16:29:46 +05:30
Mihir Kandoi
e52b9825e3 fix(accounts): break last-purchase-rate ties deterministically in Gross Profit
get_last_purchase_rate ordered by posting_date DESC only; same-date Purchase Invoices yielded an undefined last_purchase_rate that diverged between MariaDB and Postgres. Add purchase_invoice.name DESC tiebreaker.
2026-06-29 16:29:45 +05:30
Mihir Kandoi
93c186fea7 fix(assets): break latest asset-movement ties deterministically
get_latest_location_and_custodian ordered by transaction_date DESC only; equal-dated movements left the current location/custodian engine-dependent. Add asm.name DESC tiebreaker so both engines pick the same movement.
2026-06-29 16:29:44 +05:30
Mihir Kandoi
63ea907881 fix(accounts): break exchange-rate revaluation GLE ties deterministically
calculate_exchange_rate_using_last_gle ordered the latest-GLE lookups by posting_date DESC only. With multiple GL Entries on the latest posting_date the picked row was undefined, so MariaDB and Postgres could choose different vouchers and return a different last_exchange_rate (and revaluation gain/loss). Add gl.name DESC as a tiebreaker so both engines pick the same row; MariaDB row count unchanged.
2026-06-29 16:29:43 +05:30
Shllokkk
d4ee034637 Merge pull request #56199 from Shllokkk/create-payment-entries-from-payable-report
feat: create payment entries from accounts payable report
2026-06-29 15:21:49 +05:30
Mihir Kandoi
d0d32cb994 Merge pull request #56614 from mihir-kandoi/claude/wizardly-lamport-d0bc51
fix: delete Lead-linked Addresses on transaction deletion
2026-06-29 15:20:36 +05:30
Mihir Kandoi
56a7ee6346 fix: delete Lead-linked Addresses on transaction deletion
The lead/address cleanup pre-escaped each address name before passing the
list into a query-builder .isin() filter, which escapes again. The
double-escaping produced `name IN ('''Addr''')`, matching nothing, so
Lead-linked Addresses were never deleted on either MariaDB or Postgres.

Pass the raw list straight into .isin() so the builder escapes once.
2026-06-29 15:10:24 +05:30
Shllokkk
98b77f427b feat: create payment entries from accounts payable report 2026-06-29 14:53:46 +05:30
Ankush Menat
747374e767 fix: Use correct doctype name for PCV perm-check (#56606)
closes https://github.com/frappe/erpnext/issues/56593
2026-06-29 08:56:46 +00:00
rohitwaghchaure
5523c15ab8 fix: for purchases do voucher based reposting (#56601) 2026-06-29 14:17:13 +05:30
Sowmiya P K
6115af720b fix: adjust outstanding amount calculation in purchase and sales registers 2026-06-29 10:41:42 +05:30
MochaMind
1a66fe9907 fix: sync translations from crowdin (#56595)
* fix: French translations

* fix: Danish translations

* fix: Persian translations

* fix: Uzbek translations

* fix: Spanish translations

* fix: Arabic translations

* fix: Bulgarian translations

* fix: Czech translations

* fix: German translations

* fix: Hungarian translations

* fix: Italian translations

* fix: Korean translations

* fix: Dutch translations

* fix: Polish translations

* fix: Portuguese translations

* fix: Russian translations

* fix: Slovenian translations

* fix: Serbian (Cyrillic) translations

* fix: Swedish translations

* fix: Turkish translations

* fix: Chinese Simplified translations

* fix: Vietnamese translations

* fix: Portuguese, Brazilian translations

* fix: Indonesian translations

* fix: Thai translations

* fix: Croatian translations

* fix: Hindi translations

* fix: Burmese translations

* fix: Bosnian translations

* fix: Norwegian Bokmal translations

* fix: Serbian (Latin) translations

* fix: Esperanto translations
2026-06-29 00:36:35 +02:00
MochaMind
d8c267c253 fix: sync translations from crowdin (#56590) 2026-06-28 21:29:24 +02:00
MochaMind
56926ffe00 chore: update POT file (#56592) 2026-06-28 21:28:18 +02:00
ervishnucs
dead28e50e test: assert quotation from customer uses actual exchange rate 2026-06-28 20:49:56 +05:30
rohitwaghchaure
6c38856f65 feat: Standard Valuation Rate (#56570)
* feat: standard rate valuation

* fix: greptile comments

* fix: PPV account should be mandatory for standard cost valuation
2026-06-28 20:35:01 +05:30
ervishnucs
8446be6518 fix: set currency and price list before computing quotation totals 2026-06-28 20:13:53 +05:30
ervishnucs
e61d299e63 fix: recalculate totals after setting quotation conversion rate 2026-06-28 09:53:38 +05:30
Mihir Kandoi
081fbe9e3f Merge pull request #56586 from mihir-kandoi/alias-no-copy
fix: party aliases should be no copy
2026-06-27 16:24:40 +05:30
Mihir Kandoi
057af21cd8 fix: party aliases should be no copy 2026-06-27 16:13:43 +05:30
rohitwaghchaure
c7ef42ef98 fix: sync Stock Reconciliation difference amount with GL after reposting (#56574)
* fix: sync Stock Reconciliation difference amount with GL after reposting

* fix: placement of recalculate differece amount function
2026-06-27 10:28:45 +00:00
Diptanil Saha
79ad11e21b chore(crm_settings): remove unused delete_custom_fields import (#56558) 2026-06-27 14:38:59 +05:30
Diptanil Saha
485e9041de chore: removing controllers from pre-commit eslint hooks exclude list (#56575)
* chore: removed `controllers` from exclude list on `.pre-commit-config.yaml`

* chore: fix `transactions.js` eslint issues

* chore: fix `taxes_and_totals.js` eslint issue

* chore: fix `accounts.js` eslint issue
2026-06-27 00:42:34 +05:30
rohitwaghchaure
5e60e4faa7 fix: do not allow closing the accounting period for future dates (#56551) 2026-06-26 17:28:20 +00:00
Nabin Hait
3f053e599c Merge pull request #56536 from frappe/chore/test-bom-search
test: BOM Search report coverage
2026-06-26 22:01:25 +05:30
Nabin Hait
b0232f41ea Merge pull request #56545 from frappe/chore/test-incorrect-stock-value-report
test: Incorrect Stock Value Report report coverage
2026-06-26 22:00:43 +05:30
Nabin Hait
1d517375d9 Merge pull request #56553 from frappe/chore/refactor-ar-ap-report-tests
test: reuse bootstrap master data in Accounts Receivable/Payable report tests
2026-06-26 22:00:15 +05:30
Nabin Hait
1d9d982719 Merge pull request #56554 from frappe/chore/refactor-cash-flow-report-tests
test: reuse bootstrap master data in Cash Flow report tests
2026-06-26 21:59:47 +05:30
Nabin Hait
66a711c849 Merge pull request #56555 from frappe/chore/refactor-general-ledger-report-tests
test: reuse bootstrap master data in General Ledger report tests
2026-06-26 21:58:39 +05:30
Nabin Hait
a2f201e1d7 Merge pull request #56556 from frappe/chore/refactor-stock-balance-report-tests
test: reuse bootstrap master data in Stock Balance report tests
2026-06-26 21:58:05 +05:30
Nabin Hait
b989bef967 Merge pull request #56557 from frappe/chore/refactor-stock-ledger-projected-report-tests
test: reuse bootstrap master data in Stock Ledger & Stock Projected Qty report tests
2026-06-26 21:57:30 +05:30
Nabin Hait
c1b91b0f5f Merge pull request #56541 from frappe/chore/test-item-where-used
test: Item Where Used report coverage
2026-06-26 21:56:33 +05:30
rohitwaghchaure
31f89b72b4 fix: ignored posting time 00:00:00 in RIV (#56571) 2026-06-26 13:49:16 +00:00
Mohd Haris
a7c1ebacbe fix(asset): conditionally show Is Fully Depreciated field
The "Is Fully Depreciated" field was hidden on the Asset form (hidden: 1),
so it could never be set for manually entered existing assets.

Make it visible based on context:
- Existing Asset with Calculate Depreciation off -> visible and editable
- Calculate Depreciation on -> visible but read-only and forced unchecked
  (it is only meaningful for manually entered assets)

The unchecked value is enforced in the form script (immediate feedback on
toggle and on load) and in server-side validate() so it can never be saved
as checked while depreciation is being calculated.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-26 17:34:49 +05:30
Diptanil Saha
1e2adc0706 ci: bump pre-commit actions to v3.0.1 (#56562) 2026-06-26 11:14:57 +00:00
Mihir Kandoi
05e7317375 Merge pull request #56559 from Shllokkk/serial-batch-bundle-print-none-fix
fix: remove dead bundle helper call from purchase receipt print format
2026-06-26 16:37:09 +05:30
Mihir Kandoi
c5700f5df4 Merge pull request #56467 from mihir-kandoi/messages/stock
chore: rewrite user-facing messages in stock module
2026-06-26 15:29:32 +05:30
Shllokkk
b9f5a77fa7 fix: remove dead bundle helper call from purchase receipt print format 2026-06-26 15:00:54 +05:30
Nabin Hait
87af67febe test: cover last purchase rate and valuation rate in Item Prices report 2026-06-26 15:00:39 +05:30
Nabin Hait
1ffdfbe86e Merge pull request #56539 from frappe/chore/test-delayed-order-report
test: Delayed Order Report report coverage
2026-06-26 14:58:10 +05:30
Nabin Hait
c3ae7a0b95 Merge pull request #56538 from frappe/chore/test-delayed-item-report
test: Delayed Item Report report coverage
2026-06-26 14:57:51 +05:30
Nabin Hait
0458446a06 test: cover search_sub_assemblies filter in BOM Search report 2026-06-26 14:57:26 +05:30
Nabin Hait
99e85bfd82 Merge pull request #56537 from frappe/chore/test-batch-item-expiry-status
test: Batch Item Expiry Status report coverage
2026-06-26 14:56:31 +05:30