def test_make_pos_invoice(self): from erpnext.accounts.doctype.sales_invoice.pos import make_invoice set_perpetual_inventory() make_pos_profile() self._insert_purchase_receipt() pos = copy.deepcopy(test_records[1]) pos["is_pos"] = 1 pos["update_stock"] = 1 pos["payments"] = [{ 'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - _TC', 'amount': 300 }, { 'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 330 }] invoice_data = [{'09052016142': pos}] si = make_invoice(invoice_data).get('invoice') self.assertEquals(si[0], '09052016142') sales_invoice = frappe.get_all('Sales Invoice', fields=["*"], filters={ 'offline_pos_name': '09052016142', 'docstatus': 1 }) si = frappe.get_doc('Sales Invoice', sales_invoice[0].name) self.assertEquals(si.grand_total, 630.0) self.pos_gl_entry(si, pos, 330)
def make_invoice(doc_list={}, email_queue_list={}, customers_list={}): from erpnext.accounts.doctype.sales_invoice.pos import make_invoice result = make_invoice( doc_list=[], email_queue_list=email_queue_list, customers_list=customers_list, ) docs = json.loads(doc_list) if isinstance(doc_list, string_types) else doc_list prev_synced_invoices = [ x[0] for x in frappe.get_all( "Sales Invoice", fields="offline_pos_name", filters={ "offline_pos_name": ("in", list(concat([x.keys() for x in docs]))) }, as_list=1, ) ] for doc_list_item in docs: for name, doc in doc_list_item.items(): frappe.utils.background_jobs.enqueue(make_invoice, job_name=name, doc_list=[{ name: doc }]) return merge(result, {"invoice": prev_synced_invoices})
def test_make_pos_invoice_in_draft(self): from erpnext.accounts.doctype.sales_invoice.pos import make_invoice from erpnext.stock.doctype.item.test_item import make_item set_perpetual_inventory() allow_negative_stock = frappe.db.get_single_value('Stock Settings', 'allow_negative_stock') if allow_negative_stock: frappe.db.set_value('Stock Settings', None, 'allow_negative_stock', 0) make_pos_profile() timestamp = cint(time.time()) item = make_item("_Test POS Item") pos = copy.deepcopy(test_records[1]) pos['items'][0]['item_code'] = item.name pos['items'][0]['warehouse'] = "_Test Warehouse - _TC" pos["is_pos"] = 1 pos["offline_pos_name"] = timestamp pos["update_stock"] = 1 pos["payments"] = [{'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - _TC', 'amount': 300}, {'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 330}] invoice_data = [{timestamp: pos}] si = make_invoice(invoice_data).get('invoice') self.assertEqual(si[0], timestamp) sales_invoice = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': timestamp}) self.assertEqual(sales_invoice[0].docstatus, 0) timestamp = cint(time.time()) pos["offline_pos_name"] = timestamp invoice_data = [{timestamp: pos}] si1 = make_invoice(invoice_data).get('invoice') self.assertEqual(si1[0], timestamp) sales_invoice1 = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': timestamp}) self.assertEqual(sales_invoice1[0].docstatus, 0) if allow_negative_stock: frappe.db.set_value('Stock Settings', None, 'allow_negative_stock', 1)
def test_make_pos_invoice_in_draft(self): from erpnext.accounts.doctype.sales_invoice.pos import make_invoice from erpnext.stock.doctype.item.test_item import make_item set_perpetual_inventory() allow_negative_stock = frappe.db.get_single_value('Stock Settings', 'allow_negative_stock') if allow_negative_stock: frappe.db.set_value('Stock Settings', None, 'allow_negative_stock', 0) make_pos_profile() timestamp = cint(time.time()) item = make_item("_Test POS Item") pos = copy.deepcopy(test_records[1]) pos['items'][0]['item_code'] = item.name pos["is_pos"] = 1 pos["offline_pos_name"] = timestamp pos["update_stock"] = 1 pos["payments"] = [{'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - _TC', 'amount': 300}, {'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 330}] invoice_data = [{timestamp: pos}] si = make_invoice(invoice_data).get('invoice') self.assertEquals(si[0], timestamp) sales_invoice = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': timestamp}) self.assertEquals(sales_invoice[0].docstatus, 0) timestamp = cint(time.time()) pos["offline_pos_name"] = timestamp invoice_data = [{timestamp: pos}] si1 = make_invoice(invoice_data).get('invoice') self.assertEquals(si1[0], timestamp) sales_invoice1 = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': timestamp}) self.assertEquals(sales_invoice1[0].docstatus, 0) if allow_negative_stock: frappe.db.set_value('Stock Settings', None, 'allow_negative_stock', 1)
def test_make_pos_invoice(self): from erpnext.accounts.doctype.sales_invoice.pos import make_invoice set_perpetual_inventory() self.make_pos_profile() self._insert_purchase_receipt() pos = copy.deepcopy(test_records[1]) pos["is_pos"] = 1 pos["update_stock"] = 1 pos["payments"] = [{'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - _TC', 'amount': 300}, {'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 330}] invoice_data = [{'09052016142': pos}] si = make_invoice(invoice_data) self.assertEquals(si[0], '09052016142') sales_invoice = frappe.get_all('Sales Invoice', fields =["*"], filters = {'offline_pos_name': '09052016142', 'docstatus': 1}) si = frappe.get_doc('Sales Invoice', sales_invoice[0].name) self.assertEquals(si.grand_total, 630.0) self.pos_gl_entry(si, pos, 330)
def make_invoice(doc_list={}, email_queue_list={}, customers_list={}): from erpnext.accounts.doctype.sales_invoice.pos import make_invoice result = make_invoice(doc_list, email_queue_list, customers_list) _update_customer_details(customers_list) return result