mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-31 18:59:08 +00:00
Merge pull request #42353 from frappe/version-14-hotfix
chore: release v14
This commit is contained in:
@@ -601,6 +601,7 @@ class PurchaseInvoice(BuyingController):
|
|||||||
if self.needs_repost:
|
if self.needs_repost:
|
||||||
self.validate_for_repost()
|
self.validate_for_repost()
|
||||||
self.db_set("repost_required", self.needs_repost)
|
self.db_set("repost_required", self.needs_repost)
|
||||||
|
self.repost_accounting_entries()
|
||||||
|
|
||||||
def make_gl_entries(self, gl_entries=None, from_repost=False):
|
def make_gl_entries(self, gl_entries=None, from_repost=False):
|
||||||
update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes"
|
update_outstanding = "No" if (cint(self.is_paid) or self.write_off_account) else "Yes"
|
||||||
|
|||||||
@@ -1908,10 +1908,9 @@ class TestPurchaseInvoice(FrappeTestCase, StockTestMixin):
|
|||||||
check_gl_entries(self, pi.name, expected_gle, nowdate())
|
check_gl_entries(self, pi.name, expected_gle, nowdate())
|
||||||
|
|
||||||
pi.items[0].expense_account = "Service - _TC"
|
pi.items[0].expense_account = "Service - _TC"
|
||||||
|
# Ledger reposted implicitly upon 'Update After Submit'
|
||||||
pi.save()
|
pi.save()
|
||||||
pi.load_from_db()
|
pi.load_from_db()
|
||||||
self.assertTrue(pi.repost_required)
|
|
||||||
pi.repost_accounting_entries()
|
|
||||||
|
|
||||||
expected_gle = [
|
expected_gle = [
|
||||||
["Creditors - _TC", 0.0, 1000, nowdate()],
|
["Creditors - _TC", 0.0, 1000, nowdate()],
|
||||||
|
|||||||
@@ -431,9 +431,12 @@ erpnext.accounts.SalesInvoiceController = class SalesInvoiceController extends e
|
|||||||
return this.frm.call({
|
return this.frm.call({
|
||||||
doc: me.frm.doc,
|
doc: me.frm.doc,
|
||||||
method: "set_missing_values",
|
method: "set_missing_values",
|
||||||
callback: function(r) {
|
args: {
|
||||||
if(!r.exc) {
|
for_validate: true,
|
||||||
if(r.message && r.message.print_format) {
|
},
|
||||||
|
callback: function (r) {
|
||||||
|
if (!r.exc) {
|
||||||
|
if (r.message && r.message.print_format) {
|
||||||
me.frm.pos_print_format = r.message.print_format;
|
me.frm.pos_print_format = r.message.print_format;
|
||||||
}
|
}
|
||||||
me.frm.trigger("update_stock");
|
me.frm.trigger("update_stock");
|
||||||
|
|||||||
@@ -549,6 +549,7 @@ class SalesInvoice(SellingController):
|
|||||||
if self.needs_repost:
|
if self.needs_repost:
|
||||||
self.validate_for_repost()
|
self.validate_for_repost()
|
||||||
self.db_set("repost_required", self.needs_repost)
|
self.db_set("repost_required", self.needs_repost)
|
||||||
|
self.repost_accounting_entries()
|
||||||
|
|
||||||
def set_paid_amount(self):
|
def set_paid_amount(self):
|
||||||
paid_amount = 0.0
|
paid_amount = 0.0
|
||||||
|
|||||||
@@ -2884,13 +2884,9 @@ class TestSalesInvoice(FrappeTestCase):
|
|||||||
si.items[0].income_account = "Service - _TC"
|
si.items[0].income_account = "Service - _TC"
|
||||||
si.additional_discount_account = "_Test Account Sales - _TC"
|
si.additional_discount_account = "_Test Account Sales - _TC"
|
||||||
si.taxes[0].account_head = "TDS Payable - _TC"
|
si.taxes[0].account_head = "TDS Payable - _TC"
|
||||||
|
# Ledger reposted implicitly upon 'Update After Submit'
|
||||||
si.save()
|
si.save()
|
||||||
|
|
||||||
si.load_from_db()
|
|
||||||
self.assertTrue(si.repost_required)
|
|
||||||
|
|
||||||
si.repost_accounting_entries()
|
|
||||||
|
|
||||||
expected_gle = [
|
expected_gle = [
|
||||||
["_Test Account Sales - _TC", 22.0, 0.0, nowdate()],
|
["_Test Account Sales - _TC", 22.0, 0.0, nowdate()],
|
||||||
["Debtors - _TC", 88, 0.0, nowdate()],
|
["Debtors - _TC", 88, 0.0, nowdate()],
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ from erpnext.accounts.report.accounts_payable.accounts_payable import execute
|
|||||||
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
||||||
|
|
||||||
|
|
||||||
class TestAccountsReceivable(AccountsTestMixin, FrappeTestCase):
|
class TestAccountsPayable(AccountsTestMixin, FrappeTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.create_company()
|
self.create_company()
|
||||||
self.create_customer()
|
self.create_customer()
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
import frappe
|
||||||
|
from frappe.tests.utils import FrappeTestCase
|
||||||
|
from frappe.utils import getdate, today
|
||||||
|
|
||||||
|
from erpnext.accounts.doctype.sales_invoice.test_sales_invoice import create_sales_invoice
|
||||||
|
from erpnext.accounts.report.item_wise_sales_register.item_wise_sales_register import execute
|
||||||
|
from erpnext.accounts.test.accounts_mixin import AccountsTestMixin
|
||||||
|
|
||||||
|
|
||||||
|
class TestItemWiseSalesRegister(AccountsTestMixin, FrappeTestCase):
|
||||||
|
def setUp(self):
|
||||||
|
self.create_company()
|
||||||
|
self.create_customer()
|
||||||
|
self.create_item()
|
||||||
|
self.clear_old_entries()
|
||||||
|
|
||||||
|
def tearDown(self):
|
||||||
|
frappe.db.rollback()
|
||||||
|
|
||||||
|
def create_sales_invoice(self, do_not_submit=False):
|
||||||
|
si = create_sales_invoice(
|
||||||
|
item=self.item,
|
||||||
|
company=self.company,
|
||||||
|
customer=self.customer,
|
||||||
|
debit_to=self.debit_to,
|
||||||
|
posting_date=today(),
|
||||||
|
parent_cost_center=self.cost_center,
|
||||||
|
cost_center=self.cost_center,
|
||||||
|
rate=100,
|
||||||
|
price_list_rate=100,
|
||||||
|
do_not_save=1,
|
||||||
|
)
|
||||||
|
si = si.save()
|
||||||
|
if not do_not_submit:
|
||||||
|
si = si.submit()
|
||||||
|
return si
|
||||||
|
|
||||||
|
def test_basic_report_output(self):
|
||||||
|
si = self.create_sales_invoice()
|
||||||
|
|
||||||
|
filters = frappe._dict({"from_date": today(), "to_date": today(), "company": self.company})
|
||||||
|
report = execute(filters)
|
||||||
|
|
||||||
|
self.assertEqual(len(report[1]), 1)
|
||||||
|
|
||||||
|
expected_result = {
|
||||||
|
"item_code": si.items[0].item_code,
|
||||||
|
"invoice": si.name,
|
||||||
|
"posting_date": getdate(),
|
||||||
|
"customer": si.customer,
|
||||||
|
"debit_to": si.debit_to,
|
||||||
|
"company": self.company,
|
||||||
|
"income_account": si.items[0].income_account,
|
||||||
|
"stock_qty": 1.0,
|
||||||
|
"stock_uom": si.items[0].stock_uom,
|
||||||
|
"rate": 100.0,
|
||||||
|
"amount": 100.0,
|
||||||
|
"total_tax": 0,
|
||||||
|
"total_other_charges": 0,
|
||||||
|
"total": 100.0,
|
||||||
|
"currency": "INR",
|
||||||
|
}
|
||||||
|
|
||||||
|
report_output = {k: v for k, v in report[1][0].items() if k in expected_result}
|
||||||
|
self.assertDictEqual(report_output, expected_result)
|
||||||
Reference in New Issue
Block a user