Merge pull request #43773 from frappe/version-14-hotfix

chore: release v14
This commit is contained in:
ruthra kumar
2024-10-23 10:14:40 +05:30
committed by GitHub
10 changed files with 49 additions and 33 deletions

View File

@@ -58,7 +58,7 @@ def build_conditions(process_type, account, company):
) )
if account: if account:
conditions += f"AND {deferred_account}='{account}'" conditions += f"AND {deferred_account}='{frappe.db.escape(account)}'"
elif company: elif company:
conditions += f"AND p.company = {frappe.db.escape(company)}" conditions += f"AND p.company = {frappe.db.escape(company)}"

View File

@@ -55,7 +55,7 @@ class BankClearance(Document):
"Payment Entry" as payment_document, name as payment_entry, "Payment Entry" as payment_document, name as payment_entry,
reference_no as cheque_number, reference_date as cheque_date, reference_no as cheque_number, reference_date as cheque_date,
if(paid_from=%(account)s, paid_amount + total_taxes_and_charges, 0) as credit, if(paid_from=%(account)s, paid_amount + total_taxes_and_charges, 0) as credit,
if(paid_from=%(account)s, 0, received_amount) as debit, if(paid_from=%(account)s, 0, received_amount + total_taxes_and_charges) as debit,
posting_date, ifnull(party,if(paid_from=%(account)s,paid_to,paid_from)) as against_account, clearance_date, posting_date, ifnull(party,if(paid_from=%(account)s,paid_to,paid_from)) as against_account, clearance_date,
if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency if(paid_to=%(account)s, paid_to_account_currency, paid_from_account_currency) as account_currency
from `tabPayment Entry` from `tabPayment Entry`

View File

@@ -2270,7 +2270,9 @@ def get_party_details(company, party_type, party, date, cost_center=None):
account_balance = get_balance_on(party_account, date, cost_center=cost_center) account_balance = get_balance_on(party_account, date, cost_center=cost_center)
_party_name = "title" if party_type == "Shareholder" else party_type.lower() + "_name" _party_name = "title" if party_type == "Shareholder" else party_type.lower() + "_name"
party_name = frappe.db.get_value(party_type, party, _party_name) party_name = frappe.db.get_value(party_type, party, _party_name)
party_balance = get_balance_on(party_type=party_type, party=party, cost_center=cost_center) party_balance = get_balance_on(
party_type=party_type, party=party, company=company, cost_center=cost_center
)
if party_type in ["Customer", "Supplier"]: if party_type in ["Customer", "Supplier"]:
bank_account = get_party_bank_account(party_type, party) bank_account = get_party_bank_account(party_type, party)

View File

@@ -80,8 +80,10 @@ frappe.ui.form.on("POS Closing Entry", {
) { ) {
reset_values(frm); reset_values(frm);
frappe.run_serially([ frappe.run_serially([
() => frappe.dom.freeze(__("Loading Invoices! Please Wait...")),
() => frm.trigger("set_opening_amounts"), () => frm.trigger("set_opening_amounts"),
() => frm.trigger("get_pos_invoices"), () => frm.trigger("get_pos_invoices"),
() => frappe.dom.unfreeze(),
]); ]);
} }
}, },

View File

@@ -715,14 +715,11 @@ def get_pricing_rule_items(pr_doc, other_items=False) -> list:
def validate_coupon_code(coupon_name): def validate_coupon_code(coupon_name):
coupon = frappe.get_doc("Coupon Code", coupon_name) coupon = frappe.get_doc("Coupon Code", coupon_name)
if coupon.valid_from and coupon.valid_from > getdate(today()):
if coupon.valid_from: frappe.throw(_("Sorry, this coupon code's validity has not started"))
if coupon.valid_from > getdate(today()): elif coupon.valid_upto and coupon.valid_upto < getdate(today()):
frappe.throw(_("Sorry, this coupon code's validity has not started")) frappe.throw(_("Sorry, this coupon code's validity has expired"))
elif coupon.valid_upto: elif coupon.maximum_use and coupon.used >= coupon.maximum_use:
if coupon.valid_upto < getdate(today()):
frappe.throw(_("Sorry, this coupon code's validity has expired"))
elif coupon.used >= coupon.maximum_use:
frappe.throw(_("Sorry, this coupon code is no longer valid")) frappe.throw(_("Sorry, this coupon code is no longer valid"))

View File

@@ -25,6 +25,7 @@
"payment_terms_template", "payment_terms_template",
"sales_partner", "sales_partner",
"sales_person", "sales_person",
"show_remarks",
"based_on_payment_terms", "based_on_payment_terms",
"section_break_3", "section_break_3",
"customer_collection", "customer_collection",
@@ -388,10 +389,16 @@
"fieldname": "ignore_cr_dr_notes", "fieldname": "ignore_cr_dr_notes",
"fieldtype": "Check", "fieldtype": "Check",
"label": "Ignore System Generated Credit / Debit Notes" "label": "Ignore System Generated Credit / Debit Notes"
},
{
"default": "0",
"fieldname": "show_remarks",
"fieldtype": "Check",
"label": "Show Remarks"
} }
], ],
"links": [], "links": [],
"modified": "2024-08-13 10:41:18.381165", "modified": "2024-10-18 17:51:39.108481",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Accounts", "module": "Accounts",
"name": "Process Statement Of Accounts", "name": "Process Statement Of Accounts",

View File

@@ -132,6 +132,7 @@ def get_common_filters(doc):
"finance_book": doc.finance_book if doc.finance_book else None, "finance_book": doc.finance_book if doc.finance_book else None,
"account": [doc.account] if doc.account else None, "account": [doc.account] if doc.account else None,
"cost_center": [cc.cost_center_name for cc in doc.cost_center], "cost_center": [cc.cost_center_name for cc in doc.cost_center],
"show_remarks": doc.show_remarks,
} }
) )

View File

@@ -122,21 +122,24 @@ class Deferred_Item:
""" """
simulate future posting by creating dummy gl entries. starts from the last posting date. simulate future posting by creating dummy gl entries. starts from the last posting date.
""" """
if self.service_start_date != self.service_end_date: if (
if add_days(self.last_entry_date, 1) < self.period_list[-1].to_date: self.service_start_date != self.service_end_date
self.estimate_for_period_list = get_period_list( and add_days(self.last_entry_date, 1) < self.service_end_date
self.filters.from_fiscal_year, ):
self.filters.to_fiscal_year, self.estimate_for_period_list = get_period_list(
add_days(self.last_entry_date, 1), self.filters.from_fiscal_year,
self.period_list[-1].to_date, self.filters.to_fiscal_year,
"Date Range", add_days(self.last_entry_date, 1),
"Monthly", self.service_end_date,
company=self.filters.company, "Date Range",
) "Monthly",
for period in self.estimate_for_period_list: company=self.filters.company,
amount = self.calculate_amount(period.from_date, period.to_date) )
gle = self.make_dummy_gle(period.key, period.to_date, amount)
self.gle_entries.append(gle) for period in self.estimate_for_period_list:
amount = self.calculate_amount(period.from_date, period.to_date)
gle = self.make_dummy_gle(period.key, period.to_date, amount)
self.gle_entries.append(gle)
def calculate_item_revenue_expense_for_period(self): def calculate_item_revenue_expense_for_period(self):
""" """

View File

@@ -357,12 +357,15 @@ class AccountsController(TransactionBase):
def validate_return_against_account(self): def validate_return_against_account(self):
if self.doctype in ["Sales Invoice", "Purchase Invoice"] and self.is_return and self.return_against: if self.doctype in ["Sales Invoice", "Purchase Invoice"] and self.is_return and self.return_against:
cr_dr_account_field = "debit_to" if self.doctype == "Sales Invoice" else "credit_to" cr_dr_account_field = "debit_to" if self.doctype == "Sales Invoice" else "credit_to"
cr_dr_account_label = "Debit To" if self.doctype == "Sales Invoice" else "Credit To" original_account = frappe.get_value(self.doctype, self.return_against, cr_dr_account_field)
cr_dr_account = self.get(cr_dr_account_field) if original_account != self.get(cr_dr_account_field):
if frappe.get_value(self.doctype, self.return_against, cr_dr_account_field) != cr_dr_account:
frappe.throw( frappe.throw(
_("'{0}' account: '{1}' should match the Return Against Invoice").format( _(
frappe.bold(cr_dr_account_label), frappe.bold(cr_dr_account) "Please set {0} to {1}, the same account that was used in the original invoice {2}."
).format(
frappe.bold(_(self.meta.get_label(cr_dr_account_field), context=self.doctype)),
frappe.bold(original_account),
frappe.bold(self.return_against),
) )
) )

View File

@@ -4,7 +4,8 @@ erpnext.accounts.unreconcile_payment = {
add_unreconcile_btn(frm) { add_unreconcile_btn(frm) {
if (frm.doc.docstatus == 1) { if (frm.doc.docstatus == 1) {
if ( if (
(frm.doc.doctype == "Journal Entry" && frm.doc.voucher_type != "Journal Entry") || (frm.doc.doctype == "Journal Entry" &&
!["Journal Entry", "Bank Entry", "Cash Entry"].includes(frm.doc.voucher_type)) ||
!["Purchase Invoice", "Sales Invoice", "Journal Entry", "Payment Entry"].includes( !["Purchase Invoice", "Sales Invoice", "Journal Entry", "Payment Entry"].includes(
frm.doc.doctype frm.doc.doctype
) )