コード例 #1
0
ファイル: sales.py プロジェクト: szakalgt/erpnext
def work():
	frappe.set_user(frappe.db.get_global('demo_sales_user_2'))
	if random.random() < 0.5:
		for i in xrange(random.randint(1,7)):
			make_opportunity()

	if random.random() < 0.5:
		for i in xrange(random.randint(1,3)):
			make_quotation()

	# lost quotations / inquiries
	if random.random() < 0.3:
		for i in xrange(random.randint(1,3)):
			quotation = get_random('Quotation', doc=True)
			if quotation and quotation.status == 'Submitted':
				quotation.declare_order_lost('Did not ask')

		for i in xrange(random.randint(1,3)):
			opportunity = get_random('Opportunity', doc=True)
			if opportunity and opportunity.status in ('Open', 'Replied'):
				opportunity.declare_enquiry_lost('Did not ask')

	if random.random() < 0.3:
		for i in xrange(random.randint(1,3)):
			make_sales_order()
コード例 #2
0
ファイル: make_demo.py プロジェクト: nirjhar/erpnext-demo
def run_sales(current_date):
	if can_make("Quotation"):
		for i in xrange(how_many("Quotation")):
			make_quotation(current_date)
					
	if can_make("Sales Order"):
		for i in xrange(how_many("Sales Order")):
			make_sales_order(current_date)
コード例 #3
0
ファイル: test_quotation.py プロジェクト: venetanji/erpnext
    def test_create_quotation_with_margin(self):
        from erpnext.selling.doctype.quotation.quotation import make_sales_order
        from erpnext.selling.doctype.sales_order.sales_order import make_delivery_note, make_sales_invoice

        total_margin = flt((1500 * 18.75) / 100 + 1500)

        test_records[0]["items"][0]["price_list_rate"] = 1500
        test_records[0]["items"][0]["margin_type"] = "Percentage"
        test_records[0]["items"][0]["margin_rate_or_amount"] = 18.75

        quotation = frappe.copy_doc(test_records[0])
        quotation.insert()

        self.assertEquals(quotation.get("items")[0].rate, total_margin)
        self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)
        quotation.submit()

        sales_order = make_sales_order(quotation.name)
        sales_order.delivery_date = "2016-01-02"
        sales_order.naming_series = "_T-Quotation-"
        sales_order.transaction_date = "2016-01-01"
        sales_order.insert()

        self.assertEquals(quotation.get("items")[0].rate, total_margin)

        sales_order.submit()

        dn = make_delivery_note(sales_order.name)
        self.assertEquals(quotation.get("items")[0].rate, total_margin)
        dn.save()

        si = make_sales_invoice(sales_order.name)
        self.assertEquals(quotation.get("items")[0].rate, total_margin)
        si.save()
コード例 #4
0
ファイル: sales.py プロジェクト: frappe/erpnext
def work():
    frappe.set_user(frappe.db.get_global("demo_sales_user_2"))
    if random.random() < 0.5:
        for i in xrange(random.randint(1, 7)):
            make_opportunity()

    if random.random() < 0.5:
        for i in xrange(random.randint(1, 3)):
            make_quotation()

            # lost quotations / inquiries
    if random.random() < 0.3:
        for i in xrange(random.randint(1, 3)):
            quotation = get_random("Quotation", doc=True)
            if quotation and quotation.status == "Submitted":
                quotation.declare_order_lost("Did not ask")

        for i in xrange(random.randint(1, 3)):
            opportunity = get_random("Opportunity", doc=True)
            if opportunity and opportunity.status in ("Open", "Replied"):
                opportunity.declare_enquiry_lost("Did not ask")

    if random.random() < 0.3:
        for i in xrange(random.randint(1, 3)):
            make_sales_order()

    if random.random() < 0.1:
        # make payment request against Sales Order
        sales_order_name = get_random("Sales Order", filters={"docstatus": 1})
        if sales_order_name:
            so = frappe.get_doc("Sales Order", sales_order_name)
            if flt(so.per_billed) != 100:
                payment_request = make_payment_request(
                    dt="Sales Order",
                    dn=so.name,
                    recipient_id=so.contact_email,
                    submit_doc=True,
                    mute_email=True,
                    use_dummy_message=True,
                )

                payment_entry = frappe.get_doc(make_payment_entry(payment_request.name))
                payment_entry.posting_date = frappe.flags.current_date
                payment_entry.submit()
コード例 #5
0
ファイル: selling.py プロジェクト: frappe/erpnext_demo
def make_sales_order(current_date):
	q = get_random("Quotation", {"status": "Submitted"})
	if q:
		from erpnext.selling.doctype.quotation.quotation import make_sales_order
		so = frappe.get_doc(make_sales_order(q))
		so.transaction_date = current_date
		so.delivery_date = frappe.utils.add_days(current_date, 10)
		so.insert()
		frappe.db.commit()
		so.submit()
		frappe.db.commit()
コード例 #6
0
ファイル: test_quotation.py プロジェクト: PawanMeh/erpnext
	def test_make_sales_order_terms_not_copied(self):
		from erpnext.selling.doctype.quotation.quotation import make_sales_order

		quotation = frappe.copy_doc(test_records[0])
		quotation.transaction_date = nowdate()
		quotation.valid_till = add_months(quotation.transaction_date, 1)
		quotation.insert()
		quotation.submit()

		sales_order = make_sales_order(quotation.name)

		self.assertFalse(sales_order.get('payment_schedule'))
コード例 #7
0
ファイル: test_quotation.py プロジェクト: Aptronics/erpnext
	def test_make_sales_order_with_different_currency(self):
		from erpnext.selling.doctype.quotation.quotation import make_sales_order

		quotation = frappe.copy_doc(test_records[0])
		quotation.transaction_date = nowdate()
		quotation.valid_till = add_months(quotation.transaction_date, 1)
		quotation.insert()
		quotation.submit()

		sales_order = make_sales_order(quotation.name)
		sales_order.currency = "USD"
		sales_order.conversion_rate = 20.0
		sales_order.delivery_date = "2019-01-01"
		sales_order.naming_series = "_T-Quotation-"
		sales_order.transaction_date = nowdate()
		sales_order.insert()

		self.assertEquals(sales_order.currency, "USD")
		self.assertNotEqual(sales_order.currency, quotation.currency)
コード例 #8
0
ファイル: test_quotation.py プロジェクト: PawanMeh/erpnext
	def test_make_sales_order_with_terms(self):
		from erpnext.selling.doctype.quotation.quotation import make_sales_order

		quotation = frappe.copy_doc(test_records[0])
		quotation.transaction_date = nowdate()
		quotation.valid_till = add_months(quotation.transaction_date, 1)
		quotation.update(
			{"payment_terms_template": "_Test Payment Term Template"}
		)
		quotation.insert()

		self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)
		quotation.save()
		quotation.submit()

		self.assertEqual(quotation.payment_schedule[0].payment_amount, 8906.00)
		self.assertEqual(quotation.payment_schedule[0].due_date, quotation.transaction_date)
		self.assertEqual(quotation.payment_schedule[1].payment_amount, 8906.00)
		self.assertEqual(quotation.payment_schedule[1].due_date, add_days(quotation.transaction_date, 30))

		sales_order = make_sales_order(quotation.name)

		self.assertEquals(sales_order.doctype, "Sales Order")
		self.assertEquals(len(sales_order.get("items")), 1)
		self.assertEquals(sales_order.get("items")[0].doctype, "Sales Order Item")
		self.assertEquals(sales_order.get("items")[0].prevdoc_docname, quotation.name)
		self.assertEquals(sales_order.customer, "_Test Customer")

		sales_order.delivery_date = "2014-01-01"
		sales_order.naming_series = "_T-Quotation-"
		sales_order.transaction_date = nowdate()
		sales_order.insert()

		self.assertEqual(sales_order.payment_schedule[0].payment_amount, 8906.00)
		self.assertEqual(sales_order.payment_schedule[0].due_date, quotation.transaction_date)
		self.assertEqual(sales_order.payment_schedule[1].payment_amount, 8906.00)
		self.assertEqual(
			sales_order.payment_schedule[1].due_date, add_days(quotation.transaction_date, 30)
		)
コード例 #9
0
	def test_make_sales_order(self):
		from erpnext.selling.doctype.quotation.quotation import make_sales_order

		quotation = frappe.copy_doc(test_records[0])
		quotation.insert()

		self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)

		quotation.submit()

		sales_order = make_sales_order(quotation.name)

		self.assertEquals(sales_order.doctype, "Sales Order")
		self.assertEquals(len(sales_order.get("sales_order_details")), 1)
		self.assertEquals(sales_order.get("sales_order_details")[0].doctype, "Sales Order Item")
		self.assertEquals(sales_order.get("sales_order_details")[0].prevdoc_docname, quotation.name)
		self.assertEquals(sales_order.customer, "_Test Customer")

		sales_order.delivery_date = "2014-01-01"
		sales_order.naming_series = "_T-Quotation-"
		sales_order.transaction_date = "2013-05-12"
		sales_order.insert()
コード例 #10
0
	def test_make_sales_order(self):
		from erpnext.selling.doctype.quotation.quotation import make_sales_order

		quotation = frappe.copy_doc(test_records[0])
		quotation.insert()

		self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)

		quotation.submit()

		sales_order = make_sales_order(quotation.name)

		self.assertEquals(sales_order.doctype, "Sales Order")
		self.assertEquals(len(sales_order.get("items")), 1)
		self.assertEquals(sales_order.get("items")[0].doctype, "Sales Order Item")
		self.assertEquals(sales_order.get("items")[0].prevdoc_docname, quotation.name)
		self.assertEquals(sales_order.customer, "_Test Customer")

		sales_order.delivery_date = "2014-01-01"
		sales_order.naming_series = "_T-Quotation-"
		sales_order.transaction_date = "2013-05-12"
		sales_order.insert()
コード例 #11
0
ファイル: test_quotation.py プロジェクト: OmarJaber/Aldaan
    def test_create_quotation_with_margin(self):
        from erpnext.selling.doctype.quotation.quotation import make_sales_order
        from erpnext.selling.doctype.sales_order.sales_order \
         import make_delivery_note, make_sales_invoice

        rate_with_margin = flt((1500 * 18.75) / 100 + 1500)

        test_records[0]['items'][0]['price_list_rate'] = 1500
        test_records[0]['items'][0]['margin_type'] = 'Percentage'
        test_records[0]['items'][0]['margin_rate_or_amount'] = 18.75

        quotation = frappe.copy_doc(test_records[0])
        quotation.transaction_date = nowdate()
        quotation.valid_till = add_months(quotation.transaction_date, 1)
        quotation.insert()

        self.assertEqual(quotation.get("items")[0].rate, rate_with_margin)
        self.assertRaises(frappe.ValidationError, make_sales_order,
                          quotation.name)
        quotation.submit()

        sales_order = make_sales_order(quotation.name)
        sales_order.naming_series = "_T-Quotation-"
        sales_order.transaction_date = "2016-01-01"
        sales_order.delivery_date = "2016-01-02"

        sales_order.insert()

        self.assertEqual(quotation.get("items")[0].rate, rate_with_margin)

        sales_order.submit()

        dn = make_delivery_note(sales_order.name)
        self.assertEqual(quotation.get("items")[0].rate, rate_with_margin)
        dn.save()

        si = make_sales_invoice(sales_order.name)
        self.assertEqual(quotation.get("items")[0].rate, rate_with_margin)
        si.save()
コード例 #12
0
	def test_make_sales_order_with_terms(self):
		from erpnext.selling.doctype.quotation.quotation import make_sales_order

		quotation = frappe.copy_doc(test_records[0])
		quotation.transaction_date = nowdate()
		quotation.valid_till = add_months(quotation.transaction_date, 1)
		quotation.update(
			{"payment_terms_template": "_Test Payment Term Template"}
		)
		quotation.insert()

		self.assertRaises(frappe.ValidationError, make_sales_order, quotation.name)
		quotation.save()
		quotation.submit()

		self.assertEqual(quotation.payment_schedule[0].payment_amount, 8906.00)
		self.assertEqual(quotation.payment_schedule[0].due_date, quotation.transaction_date)
		self.assertEqual(quotation.payment_schedule[1].payment_amount, 8906.00)
		self.assertEqual(quotation.payment_schedule[1].due_date, add_days(quotation.transaction_date, 30))

		sales_order = make_sales_order(quotation.name)

		self.assertEqual(sales_order.doctype, "Sales Order")
		self.assertEqual(len(sales_order.get("items")), 1)
		self.assertEqual(sales_order.get("items")[0].doctype, "Sales Order Item")
		self.assertEqual(sales_order.get("items")[0].prevdoc_docname, quotation.name)
		self.assertEqual(sales_order.customer, "_Test Customer")

		sales_order.delivery_date = "2014-01-01"
		sales_order.naming_series = "_T-Quotation-"
		sales_order.transaction_date = nowdate()
		sales_order.insert()

		self.assertEqual(sales_order.payment_schedule[0].payment_amount, 8906.00)
		self.assertEqual(sales_order.payment_schedule[0].due_date, quotation.transaction_date)
		self.assertEqual(sales_order.payment_schedule[1].payment_amount, 8906.00)
		self.assertEqual(
			sales_order.payment_schedule[1].due_date, add_days(quotation.transaction_date, 30)
		)