2
0
mirror of https://github.com/frappe/erpnext.git synced 2024-06-02 18:31:06 +00:00

Compare commits

...

6 Commits

Author SHA1 Message Date
mergify[bot]
61054aaf5a
Merge a2d8467dd2 into 9802333397 2024-05-20 03:03:39 +00:00
ruthra kumar
9802333397
Merge pull request #41527 from frappe/mergify/bp/version-14-hotfix/pr-41523
fix: minor Dr and Cr between Purchase Receipt and Purchase Invoice (backport #41523)
2024-05-20 08:32:24 +05:30
ruthra kumar
82d206b709 fix: minor Dr and Cr between Purchase Receipt and Purchase Invoice
This applies for Provisional Accounting for Non-stock items

(cherry picked from commit 1c0a24424a)
2024-05-17 12:21:28 +00:00
Gursheen Anand
a2d8467dd2 chore: merge upstream 2024-03-19 12:26:57 +05:30
Gursheen Anand
0b0e416971 fix: use in_import flag for checking imported records
(cherry picked from commit f504f2caf3)
2024-03-15 07:15:39 +00:00
Gursheen Anand
1230fa4abe fix: auto-update due date for invoices via data import
(cherry picked from commit c096133897)
2024-03-15 07:15:39 +00:00
2 changed files with 18 additions and 6 deletions

View File

@ -982,7 +982,7 @@ class PurchaseInvoice(BuyingController):
pr_items = frappe.get_all(
"Purchase Receipt Item",
filters={"parent": ("in", linked_purchase_receipts)},
fields=["name", "provisional_expense_account", "qty", "base_rate"],
fields=["name", "provisional_expense_account", "qty", "base_rate", "rate"],
)
default_provisional_account = self.get_company_default("default_provisional_account")
provisional_accounts = set(
@ -1010,6 +1010,7 @@ class PurchaseInvoice(BuyingController):
"provisional_account": item.provisional_expense_account or default_provisional_account,
"qty": item.qty,
"base_rate": item.base_rate,
"rate": item.rate,
"has_provisional_entry": item.name in rows_with_provisional_entries,
}
@ -1026,7 +1027,10 @@ class PurchaseInvoice(BuyingController):
self.posting_date,
pr_item.get("provisional_account"),
reverse=1,
item_amount=(min(item.qty, pr_item.get("qty")) * pr_item.get("base_rate")),
item_amount=(
(min(item.qty, pr_item.get("qty")) * pr_item.get("rate"))
* purchase_receipt_doc.get("conversion_rate")
),
)
def update_gross_purchase_amount_for_linked_assets(self, item):

View File

@ -586,17 +586,25 @@ class AccountsController(TransactionBase):
)
def validate_due_date(self):
if self.get("is_pos"):
if self.get("is_pos") or self.doctype not in ["Sales Invoice", "Purchase Invoice"]:
return
from erpnext.accounts.party import validate_due_date
if self.doctype == "Sales Invoice":
posting_date = (
self.posting_date if self.doctype == "Sales Invoice" else (self.bill_date or self.posting_date)
)
# skip due date validation for records via Data Import
if frappe.flags.in_import and getdate(self.due_date) < getdate(posting_date):
self.due_date = posting_date
elif self.doctype == "Sales Invoice":
if not self.due_date:
frappe.throw(_("Due Date is mandatory"))
validate_due_date(
self.posting_date,
posting_date,
self.due_date,
"Customer",
self.customer,
@ -605,7 +613,7 @@ class AccountsController(TransactionBase):
)
elif self.doctype == "Purchase Invoice":
validate_due_date(
self.bill_date or self.posting_date,
posting_date,
self.due_date,
"Supplier",
self.supplier,