commit
0a75fa09ef
@ -31,9 +31,10 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
"customer": "_Test Customer 3"
|
"customer": "_Test Customer 3"
|
||||||
})
|
})
|
||||||
|
|
||||||
jv_against_so1 = self.create_against_jv(jv_test_records[0], {
|
jv_against_so1 = self.create_against_jv(jv_test_records[0], {
|
||||||
"account": "_Test Customer 3 - _TC",
|
"account": "_Test Customer 3 - _TC",
|
||||||
"against_sales_order": so1.name
|
"against_sales_order": so1.name,
|
||||||
|
"is_advance": "Yes"
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
@ -42,10 +43,11 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
"customer": "_Test Customer 3"
|
"customer": "_Test Customer 3"
|
||||||
})
|
})
|
||||||
|
|
||||||
jv_against_so2 = self.create_against_jv(jv_test_records[0], {
|
jv_against_so2 = self.create_against_jv(jv_test_records[0], {
|
||||||
"account": "_Test Customer 3 - _TC",
|
"account": "_Test Customer 3 - _TC",
|
||||||
"against_sales_order": so2.name,
|
"against_sales_order": so2.name,
|
||||||
"credit": 1000
|
"credit": 1000,
|
||||||
|
"is_advance": "Yes"
|
||||||
})
|
})
|
||||||
po = self.create_voucher(po_test_records[1], {
|
po = self.create_voucher(po_test_records[1], {
|
||||||
"supplier": "_Test Supplier 1"
|
"supplier": "_Test Supplier 1"
|
||||||
@ -54,20 +56,20 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
#Create SI with partial outstanding
|
#Create SI with partial outstanding
|
||||||
si1 = self.create_voucher(si_test_records[0], {
|
si1 = self.create_voucher(si_test_records[0], {
|
||||||
"customer": "_Test Customer 3",
|
"customer": "_Test Customer 3",
|
||||||
"debit_to": "_Test Customer 3 - _TC"
|
"debit_to": "_Test Customer 3 - _TC"
|
||||||
})
|
})
|
||||||
|
|
||||||
jv_against_si1 = self.create_against_jv(jv_test_records[0], {
|
jv_against_si1 = self.create_against_jv(jv_test_records[0], {
|
||||||
"account": "_Test Customer 3 - _TC",
|
"account": "_Test Customer 3 - _TC",
|
||||||
"against_invoice": si1.name
|
"against_invoice": si1.name
|
||||||
})
|
})
|
||||||
#Create SI with no outstanding
|
#Create SI with no outstanding
|
||||||
si2 = self.create_voucher(si_test_records[0], {
|
si2 = self.create_voucher(si_test_records[0], {
|
||||||
"customer": "_Test Customer 3",
|
"customer": "_Test Customer 3",
|
||||||
"debit_to": "_Test Customer 3 - _TC"
|
"debit_to": "_Test Customer 3 - _TC"
|
||||||
})
|
})
|
||||||
|
|
||||||
jv_against_si2 = self.create_against_jv(jv_test_records[0], {
|
jv_against_si2 = self.create_against_jv(jv_test_records[0], {
|
||||||
"account": "_Test Customer 3 - _TC",
|
"account": "_Test Customer 3 - _TC",
|
||||||
"against_invoice": si2.name,
|
"against_invoice": si2.name,
|
||||||
"credit": 561.80
|
"credit": 561.80
|
||||||
@ -75,7 +77,7 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
|
|
||||||
pi = self.create_voucher(pi_test_records[0], {
|
pi = self.create_voucher(pi_test_records[0], {
|
||||||
"supplier": "_Test Supplier 1",
|
"supplier": "_Test Supplier 1",
|
||||||
"credit_to": "_Test Supplier 1 - _TC"
|
"credit_to": "_Test Supplier 1 - _TC"
|
||||||
})
|
})
|
||||||
|
|
||||||
#Create a dict containing properties and expected values
|
#Create a dict containing properties and expected values
|
||||||
@ -137,7 +139,7 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
payment_tool_doc.set(k, v)
|
payment_tool_doc.set(k, v)
|
||||||
|
|
||||||
self.check_outstanding_vouchers(payment_tool_doc, args, expected_outstanding)
|
self.check_outstanding_vouchers(payment_tool_doc, args, expected_outstanding)
|
||||||
|
|
||||||
|
|
||||||
def check_outstanding_vouchers(self, doc, args, expected_outstanding):
|
def check_outstanding_vouchers(self, doc, args, expected_outstanding):
|
||||||
from erpnext.accounts.doctype.payment_tool.payment_tool import get_outstanding_vouchers
|
from erpnext.accounts.doctype.payment_tool.payment_tool import get_outstanding_vouchers
|
||||||
@ -161,7 +163,7 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
|
|
||||||
new_jv = paytool.make_journal_voucher()
|
new_jv = paytool.make_journal_voucher()
|
||||||
|
|
||||||
#Create a list of expected values as [party account, payment against, against_jv, against_invoice,
|
#Create a list of expected values as [party account, payment against, against_jv, against_invoice,
|
||||||
#against_voucher, against_sales_order, against_purchase_order]
|
#against_voucher, against_sales_order, against_purchase_order]
|
||||||
expected_values = [
|
expected_values = [
|
||||||
[paytool.party_account, 100.00, expected_outstanding.get("Journal Voucher")[0], None, None, None, None],
|
[paytool.party_account, 100.00, expected_outstanding.get("Journal Voucher")[0], None, None, None, None],
|
||||||
@ -171,7 +173,7 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
[paytool.party_account, 100.00, None, None, None, None, expected_outstanding.get("Purchase Order")[0]]
|
[paytool.party_account, 100.00, None, None, None, None, expected_outstanding.get("Purchase Order")[0]]
|
||||||
]
|
]
|
||||||
|
|
||||||
for jv_entry in new_jv.get("entries"):
|
for jv_entry in new_jv.get("entries"):
|
||||||
if paytool.party_account == jv_entry.get("account"):
|
if paytool.party_account == jv_entry.get("account"):
|
||||||
row = [
|
row = [
|
||||||
jv_entry.get("account"),
|
jv_entry.get("account"),
|
||||||
@ -183,11 +185,11 @@ class TestPaymentTool(unittest.TestCase):
|
|||||||
jv_entry.get("against_purchase_order"),
|
jv_entry.get("against_purchase_order"),
|
||||||
]
|
]
|
||||||
self.assertTrue(row in expected_values)
|
self.assertTrue(row in expected_values)
|
||||||
|
|
||||||
self.assertEquals(new_jv.get("cheque_no"), paytool.reference_no)
|
self.assertEquals(new_jv.get("cheque_no"), paytool.reference_no)
|
||||||
self.assertEquals(new_jv.get("cheque_date"), paytool.reference_date)
|
self.assertEquals(new_jv.get("cheque_date"), paytool.reference_date)
|
||||||
|
|
||||||
def clear_table_entries(self):
|
def clear_table_entries(self):
|
||||||
frappe.db.sql("""delete from `tabGL Entry` where (account = "_Test Customer 3 - _TC" or account = "_Test Supplier 1 - _TC")""")
|
frappe.db.sql("""delete from `tabGL Entry` where (account = "_Test Customer 3 - _TC" or account = "_Test Supplier 1 - _TC")""")
|
||||||
frappe.db.sql("""delete from `tabSales Order` where customer_name = "_Test Customer 3" """)
|
frappe.db.sql("""delete from `tabSales Order` where customer_name = "_Test Customer 3" """)
|
||||||
frappe.db.sql("""delete from `tabPurchase Order` where supplier_name = "_Test Supplier 1" """)
|
frappe.db.sql("""delete from `tabPurchase Order` where supplier_name = "_Test Supplier 1" """)
|
||||||
|
@ -387,7 +387,7 @@ class AccountsController(TransactionBase):
|
|||||||
|
|
||||||
res = frappe.db.sql("""
|
res = frappe.db.sql("""
|
||||||
select
|
select
|
||||||
t1.name as jv_no, t1.remark, t2.%s as amount, t2.name as jv_detail_no
|
t1.name as jv_no, t1.remark, t2.%s as amount, t2.name as jv_detail_no, `against_%s` as against_order
|
||||||
from
|
from
|
||||||
`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
|
`tabJournal Voucher` t1, `tabJournal Voucher Detail` t2
|
||||||
where
|
where
|
||||||
@ -400,7 +400,7 @@ class AccountsController(TransactionBase):
|
|||||||
and ifnull(t2.against_purchase_order, '') = ''
|
and ifnull(t2.against_purchase_order, '') = ''
|
||||||
) %s)
|
) %s)
|
||||||
order by t1.posting_date""" %
|
order by t1.posting_date""" %
|
||||||
(dr_or_cr, '%s', cond),
|
(dr_or_cr, against_order_field, '%s', cond),
|
||||||
tuple([account_head] + so_list), as_dict= True)
|
tuple([account_head] + so_list), as_dict= True)
|
||||||
|
|
||||||
self.set(parentfield, [])
|
self.set(parentfield, [])
|
||||||
@ -411,7 +411,7 @@ class AccountsController(TransactionBase):
|
|||||||
"jv_detail_no": d.jv_detail_no,
|
"jv_detail_no": d.jv_detail_no,
|
||||||
"remarks": d.remark,
|
"remarks": d.remark,
|
||||||
"advance_amount": flt(d.amount),
|
"advance_amount": flt(d.amount),
|
||||||
"allocate_amount": 0
|
"allocated_amount": flt(d.amount) if d.against_order else 0
|
||||||
})
|
})
|
||||||
|
|
||||||
def validate_advance_jv(self, advance_table_fieldname, against_order_field):
|
def validate_advance_jv(self, advance_table_fieldname, against_order_field):
|
||||||
|
@ -78,9 +78,10 @@ def setup_account(args=None):
|
|||||||
frappe.db.commit()
|
frappe.db.commit()
|
||||||
|
|
||||||
except:
|
except:
|
||||||
traceback = frappe.get_traceback()
|
if args:
|
||||||
for hook in frappe.get_hooks("setup_wizard_exception"):
|
traceback = frappe.get_traceback()
|
||||||
frappe.get_attr(hook)(traceback, args)
|
for hook in frappe.get_hooks("setup_wizard_exception"):
|
||||||
|
frappe.get_attr(hook)(traceback, args)
|
||||||
|
|
||||||
raise
|
raise
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
from frappe import _
|
from frappe import _
|
||||||
from frappe.utils import flt
|
from frappe.utils import flt, cint
|
||||||
|
|
||||||
def execute(filters=None):
|
def execute(filters=None):
|
||||||
if not filters: filters = {}
|
if not filters: filters = {}
|
||||||
@ -57,6 +57,7 @@ def get_stock_ledger_entries(filters):
|
|||||||
conditions, as_dict=1)
|
conditions, as_dict=1)
|
||||||
|
|
||||||
def get_item_warehouse_batch_map(filters):
|
def get_item_warehouse_batch_map(filters):
|
||||||
|
float_precision = cint(frappe.db.get_default("float_precision")) or 3
|
||||||
sle = get_stock_ledger_entries(filters)
|
sle = get_stock_ledger_entries(filters)
|
||||||
iwb_map = {}
|
iwb_map = {}
|
||||||
|
|
||||||
@ -67,14 +68,14 @@ def get_item_warehouse_batch_map(filters):
|
|||||||
}))
|
}))
|
||||||
qty_dict = iwb_map[d.item_code][d.warehouse][d.batch_no]
|
qty_dict = iwb_map[d.item_code][d.warehouse][d.batch_no]
|
||||||
if d.posting_date < filters["from_date"]:
|
if d.posting_date < filters["from_date"]:
|
||||||
qty_dict.opening_qty += flt(d.actual_qty)
|
qty_dict.opening_qty += flt(d.actual_qty, float_precision)
|
||||||
elif d.posting_date >= filters["from_date"] and d.posting_date <= filters["to_date"]:
|
elif d.posting_date >= filters["from_date"] and d.posting_date <= filters["to_date"]:
|
||||||
if flt(d.actual_qty) > 0:
|
if flt(d.actual_qty) > 0:
|
||||||
qty_dict.in_qty += flt(d.actual_qty)
|
qty_dict.in_qty += flt(d.actual_qty, float_precision)
|
||||||
else:
|
else:
|
||||||
qty_dict.out_qty += abs(flt(d.actual_qty))
|
qty_dict.out_qty += abs(flt(d.actual_qty, float_precision))
|
||||||
|
|
||||||
qty_dict.bal_qty += flt(d.actual_qty)
|
qty_dict.bal_qty += flt(d.actual_qty, float_precision)
|
||||||
|
|
||||||
return iwb_map
|
return iwb_map
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user