Skip to content

Commit

Permalink
Merge branch 'develop' of https://github.com/frappe/erpnext into dev_…
Browse files Browse the repository at this point in the history
…fix_find_chart_from_based_on
  • Loading branch information
FHenry committed Sep 30, 2024
2 parents 80fa4f3 + 37f0344 commit 6f5fa53
Show file tree
Hide file tree
Showing 154 changed files with 203,650 additions and 192,691 deletions.
8 changes: 8 additions & 0 deletions .github/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,14 @@ exemptProjects: true
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true

# Skip the stale action for draft PRs
exemptDraftPr: true

# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
exemptLabels:
- hotfix
- no-stale

pulls:
daysUntilStale: 15
daysUntilClose: 3
Expand Down
35 changes: 18 additions & 17 deletions erpnext/accounts/doctype/account/account.py
Original file line number Diff line number Diff line change
Expand Up @@ -102,14 +102,12 @@ def autoname(self):
self.name = get_autoname_with_number(self.account_number, self.account_name, self.company)

def validate(self):
from erpnext.accounts.utils import validate_field_number

if frappe.local.flags.allow_unverified_charts:
return
self.validate_parent()
self.validate_parent_child_account_type()
self.validate_root_details()
validate_field_number("Account", self.name, self.account_number, self.company, "account_number")
self.validate_account_number()
self.validate_group_or_ledger()
self.set_root_and_report_type()
self.validate_mandatory()
Expand Down Expand Up @@ -310,6 +308,22 @@ def validate_account_currency(self):
if frappe.db.get_value("GL Entry", {"account": self.name}):
frappe.throw(_("Currency can not be changed after making entries using some other currency"))

def validate_account_number(self, account_number=None):
if not account_number:
account_number = self.account_number

if account_number:
account_with_same_number = frappe.db.get_value(
"Account",
{"account_number": account_number, "company": self.company, "name": ["!=", self.name]},
)
if account_with_same_number:
frappe.throw(
_("Account Number {0} already used in account {1}").format(
account_number, account_with_same_number
)
)

def create_account_for_child_company(self, parent_acc_name_map, descendants, parent_acc_name):
for company in descendants:
company_bold = frappe.bold(company)
Expand Down Expand Up @@ -463,19 +477,6 @@ def get_account_autoname(account_number, account_name, company):
return " - ".join(parts)


def validate_account_number(name, account_number, company):
if account_number:
account_with_same_number = frappe.db.get_value(
"Account", {"account_number": account_number, "company": company, "name": ["!=", name]}
)
if account_with_same_number:
frappe.throw(
_("Account Number {0} already used in account {1}").format(
account_number, account_with_same_number
)
)


@frappe.whitelist()
def update_account_number(name, account_name, account_number=None, from_descendant=False):
account = frappe.get_cached_doc("Account", name)
Expand Down Expand Up @@ -516,7 +517,7 @@ def update_account_number(name, account_name, account_number=None, from_descenda

frappe.throw(message, title=_("Rename Not Allowed"))

validate_account_number(name, account_number, account.company)
account.validate_account_number(account_number)
if account_number:
frappe.db.set_value("Account", name, "account_number", account_number.strip())
else:
Expand Down
50 changes: 48 additions & 2 deletions erpnext/accounts/doctype/bank_account/bank_account.json
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,54 @@
"label": "Disabled"
}
],
"links": [],
"modified": "2024-03-27 13:06:37.049542",
"links": [
{
"group": "Transactions",
"link_doctype": "Payment Request",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Payment Order",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Bank Guarantee",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Payroll Entry",
"link_fieldname": "bank_account"
},
{
"group": "Transactions",
"link_doctype": "Bank Transaction",
"link_fieldname": "bank_account"
},
{
"group": "Accounting",
"link_doctype": "Payment Entry",
"link_fieldname": "bank_account"
},
{
"group": "Accounting",
"link_doctype": "Journal Entry",
"link_fieldname": "bank_account"
},
{
"group": "Party",
"link_doctype": "Customer",
"link_fieldname": "default_bank_account"
},
{
"group": "Party",
"link_doctype": "Supplier",
"link_fieldname": "default_bank_account"
}
],
"modified": "2024-09-24 06:57:41.292970",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Bank Account",
Expand Down
20 changes: 0 additions & 20 deletions erpnext/accounts/doctype/bank_account/bank_account_dashboard.py

This file was deleted.

14 changes: 12 additions & 2 deletions erpnext/accounts/doctype/bank_clearance/bank_clearance.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,8 +108,18 @@ def update_clearance_date(self):
if not d.clearance_date:
d.clearance_date = None

payment_entry = frappe.get_doc(d.payment_document, d.payment_entry)
payment_entry.db_set("clearance_date", d.clearance_date)
if d.payment_document == "Sales Invoice":
frappe.db.set_value(
"Sales Invoice Payment",
{"parent": d.payment_entry, "account": self.get("account"), "amount": [">", 0]},
"clearance_date",
d.clearance_date,
)

else:
frappe.db.set_value(
d.payment_document, d.payment_entry, "clearance_date", d.clearance_date
)

clearance_date_updated = True

Expand Down
81 changes: 80 additions & 1 deletion erpnext/accounts/doctype/bank_clearance/test_bank_clearance.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,16 +6,29 @@
import frappe
from frappe.utils import add_months, getdate

from erpnext.accounts.doctype.cost_center.test_cost_center import create_cost_center
from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry
from erpnext.accounts.doctype.purchase_invoice.test_purchase_invoice import make_purchase_invoice
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
from erpnext.stock.doctype.item.test_item import create_item
from erpnext.stock.doctype.warehouse.test_warehouse import create_warehouse
from erpnext.tests.utils import if_lending_app_installed, if_lending_app_not_installed


class TestBankClearance(unittest.TestCase):
@classmethod
def setUpClass(cls):
create_warehouse(
warehouse_name="_Test Warehouse",
properties={"parent_warehouse": "All Warehouses - _TC"},
company="_Test Company",
)
create_item("_Test Item")
create_cost_center(cost_center_name="_Test Cost Center", company="_Test Company")

clear_payment_entries()
clear_loan_transactions()
clear_pos_sales_invoices()
make_bank_account()
add_transactions()

Expand Down Expand Up @@ -83,11 +96,41 @@ def make_loan():
bank_clearance.get_payment_entries()
self.assertEqual(len(bank_clearance.payment_entries), 3)

def test_update_clearance_date_on_si(self):
sales_invoice = make_pos_sales_invoice()

date = getdate()
bank_clearance = frappe.get_doc("Bank Clearance")
bank_clearance.account = "_Test Bank Clearance - _TC"
bank_clearance.from_date = add_months(date, -1)
bank_clearance.to_date = date
bank_clearance.include_pos_transactions = 1
bank_clearance.get_payment_entries()

self.assertNotEqual(len(bank_clearance.payment_entries), 0)
for payment in bank_clearance.payment_entries:
if payment.payment_entry == sales_invoice.name:
payment.clearance_date = date

bank_clearance.update_clearance_date()

si_clearance_date = frappe.db.get_value(
"Sales Invoice Payment",
{"parent": sales_invoice.name, "account": bank_clearance.account},
"clearance_date",
)

self.assertEqual(si_clearance_date, date)


def clear_payment_entries():
frappe.db.delete("Payment Entry")


def clear_pos_sales_invoices():
frappe.db.delete("Sales Invoice", {"is_pos": 1})


@if_lending_app_installed
def clear_loan_transactions():
for dt in [
Expand Down Expand Up @@ -115,9 +158,45 @@ def add_transactions():


def make_payment_entry():
pi = make_purchase_invoice(supplier="_Test Supplier", qty=1, rate=690)
from erpnext.buying.doctype.supplier.test_supplier import create_supplier

supplier = create_supplier(supplier_name="_Test Supplier")
pi = make_purchase_invoice(
supplier=supplier,
supplier_warehouse="_Test Warehouse - _TC",
expense_account="Cost of Goods Sold - _TC",
uom="Nos",
qty=1,
rate=690,
)
pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank Clearance - _TC")
pe.reference_no = "Conrad Oct 18"
pe.reference_date = "2018-10-24"
pe.insert()
pe.submit()


def make_pos_sales_invoice():
from erpnext.accounts.doctype.opening_invoice_creation_tool.test_opening_invoice_creation_tool import (
make_customer,
)

mode_of_payment = frappe.get_doc({"doctype": "Mode of Payment", "name": "Cash"})

if not frappe.db.get_value("Mode of Payment Account", {"company": "_Test Company", "parent": "Cash"}):
mode_of_payment.append(
"accounts", {"company": "_Test Company", "default_account": "_Test Bank Clearance - _TC"}
)
mode_of_payment.save()

customer = make_customer(customer="_Test Customer")

si = create_sales_invoice(customer=customer, item="_Test Item", is_pos=1, qty=1, rate=1000, do_not_save=1)
si.set("payments", [])
si.append(
"payments", {"mode_of_payment": "Cash", "account": "_Test Bank Clearance - _TC", "amount": 1000}
)
si.insert()
si.submit()

return si
6 changes: 3 additions & 3 deletions erpnext/accounts/doctype/campaign_item/campaign_item.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,13 @@
"fieldtype": "Link",
"in_list_view": 1,
"label": "Campaign",
"options": "Campaign"
"options": "UTM Campaign"
}
],
"index_web_pages_for_search": 1,
"istable": 1,
"links": [],
"modified": "2024-03-27 13:06:44.142625",
"modified": "2024-06-28 11:04:09.815940",
"modified_by": "Administrator",
"module": "Accounts",
"name": "Campaign Item",
Expand All @@ -29,4 +29,4 @@
"sort_order": "DESC",
"states": [],
"track_changes": 1
}
}
Loading

0 comments on commit 6f5fa53

Please sign in to comment.