def test_cancel_sales_order_after_cancel_payment_entry(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry # make a sales order so = make_sales_order() # disable unlinking of payment entry frappe.db.set_value("Accounts Settings", "Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0) # create a payment entry against sales order pe = get_payment_entry("Sales Order", so.name, bank_account="_Test Bank - _TC") pe.reference_no = "1" pe.reference_date = nowdate() pe.paid_from_account_currency = so.currency pe.paid_to_account_currency = so.currency pe.source_exchange_rate = 1 pe.target_exchange_rate = 1 pe.paid_amount = so.grand_total pe.save(ignore_permissions=True) pe.submit() # Cancel payment entry po_doc = frappe.get_doc("Payment Entry", pe.name) po_doc.cancel() # Cancel sales order try: so_doc = frappe.get_doc('Sales Order', so.name) so_doc.cancel() except Exception: self.fail("Can not cancel sales order with linked cancelled payment entry")
def test_party_status(self): from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from frappe.utils import random_string customer_name = 'test customer for status' if frappe.db.exists('Customer', customer_name): customer = frappe.get_doc('Customer', customer_name) customer.db_set('status', 'Active') else: customer = frappe.get_doc({ 'doctype': 'Customer', 'customer_name': customer_name, 'customer_group': 'Commercial', 'customer_type': 'Individual', 'territory': 'Rest of the World' }).insert() self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active') invoice = create_sales_invoice(customer="test customer for status", debit_to="_Test Receivable - _TC", currency="USD", conversion_rate=50) self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Open') pe = get_payment_entry(invoice.doctype, invoice.name) pe.reference_no = random_string(10) pe.reference_date = invoice.posting_date pe.insert() pe.submit() self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active')
def test_payment_entry_unlink_against_invoice(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry si = frappe.copy_doc(test_records[0]) si.is_pos = 0 si.insert() si.submit() pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") pe.reference_no = "1" pe.reference_date = nowdate() pe.paid_from_account_currency = si.currency pe.paid_to_account_currency = si.currency pe.source_exchange_rate = 1 pe.target_exchange_rate = 1 pe.paid_amount = si.grand_total pe.insert() pe.submit() link_data = get_dynamic_link_map().get('Sales Invoice', []) link_doctypes = [d.parent for d in link_data] self.assertEquals(link_doctypes[-1], 'GL Entry') unlink_payment_on_cancel_of_invoice(0) si = frappe.get_doc('Sales Invoice', si.name) self.assertRaises(frappe.LinkExistsError, si.cancel)
def test_party_status(self): from erpnext.accounts.doctype.payment_entry.payment_entry import get_payment_entry from frappe.utils import random_string customer_name = 'test customer for status' if frappe.db.exists('Customer', customer_name): customer = frappe.get_doc('Customer', customer_name) customer.db_set('status', 'Active') else: customer = frappe.get_doc({ 'doctype': 'Customer', 'customer_name': customer_name, 'customer_group': 'Commercial', 'customer_type': 'Individual', 'territory': 'Rest of the World' }).insert() self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active') invoice = create_sales_invoice(customer="test customer for status", debit_to="_Test Receivable - _TC", currency="USD", conversion_rate=50) self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Open') pe = get_payment_entry(invoice.doctype, invoice.name) pe.reference_no = random_string(10) pe.reference_date = invoice.posting_date pe.insert() pe.submit() self.assertEquals(frappe.db.get_value('Customer', customer.name, 'status'), 'Active')
def test_payment_entry(self): dunning = create_dunning() dunning.submit() pe = get_payment_entry("Dunning", dunning.name) pe.reference_no = "1" pe.reference_date = nowdate() pe.paid_from_account_currency = dunning.currency pe.paid_to_account_currency = dunning.currency pe.source_exchange_rate = 1 pe.target_exchange_rate = 1 pe.insert() pe.submit() si_doc = frappe.get_doc('Sales Invoice', dunning.sales_invoice) self.assertEqual(si_doc.outstanding_amount, 0)
def test_payment_entry_unlink_against_purchase_invoice(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry unlink_payment_on_cancel_of_invoice(0) pi_doc = make_purchase_invoice() pe = get_payment_entry("Purchase Invoice", pi_doc.name, bank_account="_Test Bank - _TC") pe.reference_no = "1" pe.reference_date = nowdate() pe.paid_from_account_currency = pi_doc.currency pe.paid_to_account_currency = pi_doc.currency pe.source_exchange_rate = 1 pe.target_exchange_rate = 1 pe.paid_amount = pi_doc.grand_total pe.save(ignore_permissions=True) pe.submit() pi_doc = frappe.get_doc('Purchase Invoice', pi_doc.name) self.assertRaises(frappe.LinkExistsError, pi_doc.cancel)
def test_advance_payment_entry_unlink_against_sales_order(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry frappe.db.set_value("Accounts Settings", "Accounts Settings", "unlink_advance_payment_on_cancelation_of_order", 0) so = make_sales_order() pe = get_payment_entry("Sales Order", so.name, bank_account="_Test Bank - _TC") pe.reference_no = "1" pe.reference_date = nowdate() pe.paid_from_account_currency = so.currency pe.paid_to_account_currency = so.currency pe.source_exchange_rate = 1 pe.target_exchange_rate = 1 pe.paid_amount = so.grand_total pe.save(ignore_permissions=True) pe.submit() so_doc = frappe.get_doc('Sales Order', so.name) self.assertRaises(frappe.LinkExistsError, so_doc.cancel)
def test_payment_entry_unlink_against_invoice(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry si = frappe.copy_doc(test_records[0]) si.is_pos = 0 si.insert() si.submit() pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") pe.reference_no = "1" pe.reference_date = nowdate() pe.paid_from_account_currency = si.currency pe.paid_to_account_currency = si.currency pe.source_exchange_rate = 1 pe.target_exchange_rate = 1 pe.paid_amount = si.grand_total pe.insert() pe.submit() unlink_payment_on_cancel_of_invoice(0) si = frappe.get_doc('Sales Invoice', si.name) self.assertRaises(frappe.LinkExistsError, si.cancel)
def test_credit_note(self): from erpnext.accounts.doctype.payment_entry.test_payment_entry import get_payment_entry si = create_sales_invoice(item_code = "_Test Item", qty = (5 * -1), rate=500, is_return = 1) outstanding_amount = get_outstanding_amount(si.doctype, si.name, "Debtors - _TC", si.customer, "Customer") self.assertEqual(si.outstanding_amount, outstanding_amount) pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") pe.reference_no = "1" pe.reference_date = nowdate() pe.paid_from_account_currency = si.currency pe.paid_to_account_currency = si.currency pe.source_exchange_rate = 1 pe.target_exchange_rate = 1 pe.paid_amount = si.grand_total * -1 pe.insert() pe.submit() si_doc = frappe.get_doc('Sales Invoice', si.name) self.assertEqual(si_doc.outstanding_amount, 0)
def add_vouchers(): if frappe.flags.test_payments_created: return frappe.set_user("Administrator") try: frappe.get_doc({ "doctype": "Supplier", "supplier_group":"All Supplier Groups", "supplier_type": "Company", "supplier_name": "Conrad Electronic" }).insert() except frappe.DuplicateEntryError: pass pi = make_purchase_invoice(supplier="Conrad Electronic", qty=1, rate=690) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Conrad Oct 18" pe.reference_date = "2018-10-24" pe.insert() pe.submit() try: frappe.get_doc({ "doctype": "Supplier", "supplier_group":"All Supplier Groups", "supplier_type": "Company", "supplier_name": "Mr G" }).insert() except frappe.DuplicateEntryError: pass pi = make_purchase_invoice(supplier="Mr G", qty=1, rate=1200) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Herr G Oct 18" pe.reference_date = "2018-10-24" pe.insert() pe.submit() pi = make_purchase_invoice(supplier="Mr G", qty=1, rate=1700) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Herr G Nov 18" pe.reference_date = "2018-11-01" pe.insert() pe.submit() try: frappe.get_doc({ "doctype": "Supplier", "supplier_group":"All Supplier Groups", "supplier_type": "Company", "supplier_name": "Poore Simon's" }).insert() except frappe.DuplicateEntryError: pass try: frappe.get_doc({ "doctype": "Customer", "customer_group":"All Customer Groups", "customer_type": "Company", "customer_name": "Poore Simon's" }).insert() except frappe.DuplicateEntryError: pass pi = make_purchase_invoice(supplier="Poore Simon's", qty=1, rate=3900, is_paid=1, do_not_save =1) pi.cash_bank_account = "_Test Bank - _TC" pi.insert() pi.submit() pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Poore Simon's Oct 18" pe.reference_date = "2018-10-28" pe.paid_amount = 690 pe.received_amount = 690 pe.insert() pe.submit() si = create_sales_invoice(customer="Poore Simon's", qty=1, rate=3900) pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") pe.reference_no = "Poore Simon's Oct 18" pe.reference_date = "2018-10-28" pe.insert() pe.submit() try: frappe.get_doc({ "doctype": "Customer", "customer_group":"All Customer Groups", "customer_type": "Company", "customer_name": "Fayva" }).insert() except frappe.DuplicateEntryError: pass si = create_sales_invoice(customer="Fayva", qty=1, rate=109080) pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") pe.reference_no = "Fayva Oct 18" pe.reference_date = "2018-10-29" pe.insert() pe.submit() 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 - _TC" }) mode_of_payment.save() si = create_sales_invoice(customer="Fayva", qty=1, rate=109080, do_not_submit=1) si.is_pos = 1 si.append("payments", { "mode_of_payment": "Cash", "account": "_Test Bank - _TC", "amount": 109080 }) si.save() si.submit() frappe.flags.test_payments_created = True
def add_payments(): if frappe.flags.test_payments_created: return frappe.set_user("Administrator") try: frappe.get_doc({ "doctype": "Supplier", "supplier_group":"All Supplier Groups", "supplier_type": "Company", "supplier_name": "Conrad Electronic" }).insert() except frappe.DuplicateEntryError: pass pi = make_purchase_invoice(supplier="Conrad Electronic", qty=1, rate=690) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Conrad Oct 18" pe.reference_date = "2018-10-24" pe.insert() pe.submit() try: frappe.get_doc({ "doctype": "Supplier", "supplier_group":"All Supplier Groups", "supplier_type": "Company", "supplier_name": "Mr G" }).insert() except frappe.DuplicateEntryError: pass pi = make_purchase_invoice(supplier="Mr G", qty=1, rate=1200) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Herr G Oct 18" pe.reference_date = "2018-10-24" pe.insert() pe.submit() pi = make_purchase_invoice(supplier="Mr G", qty=1, rate=1700) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Herr G Nov 18" pe.reference_date = "2018-11-01" pe.insert() pe.submit() try: frappe.get_doc({ "doctype": "Supplier", "supplier_group":"All Supplier Groups", "supplier_type": "Company", "supplier_name": "Poore Simon's" }).insert() except frappe.DuplicateEntryError: pass try: frappe.get_doc({ "doctype": "Customer", "customer_group":"All Customer Groups", "customer_type": "Company", "customer_name": "Poore Simon's" }).insert() except frappe.DuplicateEntryError: pass pi = make_purchase_invoice(supplier="Poore Simon's", qty=1, rate=3900) pe = get_payment_entry("Purchase Invoice", pi.name, bank_account="_Test Bank - _TC") pe.reference_no = "Poore Simon's Oct 18" pe.reference_date = "2018-10-28" pe.insert() pe.submit() si = create_sales_invoice(customer="Poore Simon's", qty=1, rate=3900) pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") pe.reference_no = "Poore Simon's Oct 18" pe.reference_date = "2018-10-28" pe.insert() pe.submit() try: frappe.get_doc({ "doctype": "Customer", "customer_group":"All Customer Groups", "customer_type": "Company", "customer_name": "Fayva" }).insert() except frappe.DuplicateEntryError: pass si = create_sales_invoice(customer="Fayva", qty=1, rate=109080) pe = get_payment_entry("Sales Invoice", si.name, bank_account="_Test Bank - _TC") pe.reference_no = "Fayva Oct 18" pe.reference_date = "2018-10-29" pe.insert() pe.submit() company = frappe.db.get_single_value('Global Defaults', 'default_company') frappe.get_doc({ "doctype": "Mode of Payment", "name": "Cash" }).append("accounts", { "company": company, "default_account": "_Test Bank - _TC" }).save() si = create_sales_invoice(customer="Fayva", qty=1, rate=109080, do_not_submit=1) si.is_pos = 1 si.append("payments", { "mode_of_payment": "Cash", "account": "_Test Bank - _TC", "amount": 109080 }) si.save() si.submit() frappe.flags.test_payments_created = True