* fix: Taxes aren't discounted on early payment discount
- Deductions in payment entry must be split into income loss and tax loss
- Compute total discount in percentage, makes discounting different amounts proportionately easier
(cherry picked from commit 768c3a4927)
* fix: Recalculate difference amount after setting deductions
(cherry picked from commit 75ec0a0a85)
* fix: Set deductions in base currency
- Use field precision to get more accurate values
(cherry picked from commit dc2998f544)
* fix: Back update discounted amount in Invoice based on discount type
- Discount value was always trated as a percentage on back updation
(cherry picked from commit 2ae5834290)
* test: PE from SI with early payment discount amount & PE assertions in discount % test
(cherry picked from commit c217bb2018)
* fix: Set deduction amount in company currency on Doctype
- Even via JS, deductions amount is always in company currency
- Since there is nothing dynamic about this field, set it in the doctype spec itself
- fixed: Inconsistency between label currency and field currency formatted value
(cherry picked from commit 7f2e7badff)
* fix: Don't add to deductions if amount is 0
- misc: better docstring
(cherry picked from commit f02fc8acf0)
* fix: Paid amount must be discounted considering accounting currency
- Accounting is in the same currency if party currency and company currency is the same
- If accounting is in the same currency, paid and recvd amount is in the base currency
- Then, discount amount must also be in the base currency as it is deducted from paid amount
- Received amount must be in base currency if not multi currency
- cleanup: Deductions setting broken into smaller functions
(cherry picked from commit 761f68d7bf)
* fix: Multi-currency SI with base currency PE
- Return total discount loss in base currency
- Allocate payment based on terms: Set allocated amount in references table in base currency if accounting is in that currency
- Allocate payment based on terms: While back updating set paid amount (payment schedule) in transaction currency always
- minor: discount msgprint in correct currency
(cherry picked from commit b09c2381ca)
* test: Multi currency SI with multi-currency accounting and single currency accounting + Early payment discount
(cherry picked from commit 9abf0ef615)
* fix: Handle rounding more gracefully
- Round off pending discount loss to avoid miniscule losses rounded to 0.0 that are added in deductions
- Use base amounts to calculate base losses instead of using conversion factor which increases rounding error
- Round of total base loss instead of individual income and tax losses to reduce rounding error
- Use default round off account for pending rounding loss in deductions
(cherry picked from commit caa1a3dccf)
* fix: Provision to apply early payment discount if payment is recorded late
- Party could have paid on time but payment is recorded late
- Prompt for reference date so that discount is applied while mapping
- Prompt only if discount in payment schedule of valid doctypes
- test: Reference date and impact on PE
- `make_payment_entry` (JS) must be able to access `this`
(cherry picked from commit d6d0163514)
* feat: Make Tax loss booking optional
- Checkbox in Accounts Settings
- Apply checkbox in PE deductions setting logic
- Adjust tests
(cherry picked from commit 216a46bd66)
# Conflicts:
# erpnext/accounts/doctype/accounts_settings/accounts_settings.json
* fix: Merge conflicts
---------
Co-authored-by: marination <maricadsouza221197@gmail.com>
fix(minor): Dirty the form after clicking on Get advances button in Invoices (#34323)
fix(minor): Dirty form after clicking on Get advances button
(cherry picked from commit 2feb27e399)
Co-authored-by: Marica <maricadsouza221197@gmail.com>
This is broken again after serializing scan actions, which causes
selector to trigger before batch_no is set.
Solution: for duration of scan disable the selector
- `set_missing_values` in SE will set actual qty, transfer qty and calculate rate/amount
- Re-use `set_missing_values` wherever SE is doc is being mapped