Пример #1
0
    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)
Пример #2
0
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})
Пример #3
0
	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)
Пример #4
0
	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)
Пример #5
0
	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)
Пример #6
0
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