예제 #1
0
    def test_ordered_qty(self):
        webnotes.conn.sql("delete from tabBin")

        from buying.doctype.purchase_order.purchase_order import make_purchase_receipt

        po = webnotes.bean(copy=test_records[0]).insert()

        self.assertRaises(webnotes.ValidationError, make_purchase_receipt,
                          po.doc.name)

        po = webnotes.bean("Purchase Order", po.doc.name)
        po.doc.is_subcontracted = "No"
        po.doclist[1].item_code = "_Test Item"
        po.submit()

        self.assertEquals(
            webnotes.conn.get_value("Bin", {
                "item_code": "_Test Item",
                "warehouse": "_Test Warehouse - _TC"
            }, "ordered_qty"), 10)

        pr = make_purchase_receipt(po.doc.name)

        self.assertEquals(pr[0]["doctype"], "Purchase Receipt")
        self.assertEquals(len(pr), len(test_records[0]))
        pr[0]["posting_date"] = "2013-05-12"
        pr[0].naming_series = "_T-Purchase Receipt-"
        pr[1].qty = 4.0
        pr_bean = webnotes.bean(pr)
        pr_bean.insert()
        pr_bean.submit()

        self.assertEquals(
            flt(
                webnotes.conn.get_value(
                    "Bin", {
                        "item_code": "_Test Item",
                        "warehouse": "_Test Warehouse - _TC"
                    }, "ordered_qty")), 6.0)

        webnotes.conn.set_value('Item', '_Test Item', 'tolerance', 50)

        pr1 = make_purchase_receipt(po.doc.name)
        pr1[0].naming_series = "_T-Purchase Receipt-"
        pr1[0]["posting_date"] = "2013-05-12"
        pr1[1].qty = 8
        pr1_bean = webnotes.bean(pr1)
        pr1_bean.insert()
        pr1_bean.submit()

        self.assertEquals(
            flt(
                webnotes.conn.get_value(
                    "Bin", {
                        "item_code": "_Test Item",
                        "warehouse": "_Test Warehouse - _TC"
                    }, "ordered_qty")), 0.0)
예제 #2
0
	def test_ordered_qty(self):
		webnotes.conn.sql("delete from tabBin")
		
		from buying.doctype.purchase_order.purchase_order import make_purchase_receipt

		po = webnotes.bean(copy=test_records[0]).insert()

		self.assertRaises(webnotes.ValidationError, make_purchase_receipt, 
			po.doc.name)

		po = webnotes.bean("Purchase Order", po.doc.name)
		po.doc.is_subcontracted = "No"
		po.doclist[1].item_code = "_Test Item"
		po.submit()
		
		self.assertEquals(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", 
			"warehouse": "_Test Warehouse - _TC"}, "ordered_qty"), 10)
		
		pr = make_purchase_receipt(po.doc.name)
		
		self.assertEquals(pr[0]["doctype"], "Purchase Receipt")
		self.assertEquals(len(pr), len(test_records[0]))
		pr[0]["posting_date"] = "2013-05-12"
		pr[0].naming_series = "_T-Purchase Receipt-"
		pr[1].qty = 4.0
		pr_bean = webnotes.bean(pr)
		pr_bean.insert()
		pr_bean.submit()
		
		self.assertEquals(flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", 
			"warehouse": "_Test Warehouse - _TC"}, "ordered_qty")), 6.0)
			
		webnotes.conn.set_value('Item', '_Test Item', 'tolerance', 50)
			
		pr1 = make_purchase_receipt(po.doc.name)
		pr1[0].naming_series = "_T-Purchase Receipt-"
		pr1[0]["posting_date"] = "2013-05-12"
		pr1[1].qty = 8
		pr1_bean = webnotes.bean(pr1)
		pr1_bean.insert()
		pr1_bean.submit()
		
		self.assertEquals(flt(webnotes.conn.get_value("Bin", {"item_code": "_Test Item", 
			"warehouse": "_Test Warehouse - _TC"}, "ordered_qty")), 0.0)
예제 #3
0
def run_stock(current_date):
    # make purchase requests
    if can_make("Purchase Receipt"):
        from buying.doctype.purchase_order.purchase_order import make_purchase_receipt
        from stock.stock_ledger import NegativeStockError
        report = "Purchase Order Items To Be Received"
        for po in list(
                set([
                    r[0] for r in query_report.run(report)["result"]
                    if r[0] != "Total"
                ]))[:how_many("Purchase Receipt")]:
            pr = webnotes.bean(make_purchase_receipt(po))
            pr.doc.posting_date = current_date
            pr.doc.fiscal_year = current_date.year
            pr.insert()
            try:
                pr.submit()
                webnotes.conn.commit()
            except NegativeStockError:
                pass

    # make delivery notes (if possible)
    if can_make("Delivery Note"):
        from selling.doctype.sales_order.sales_order import make_delivery_note
        from stock.stock_ledger import NegativeStockError
        from stock.doctype.serial_no.serial_no import SerialNoRequiredError, SerialNoQtyError
        report = "Ordered Items To Be Delivered"
        for so in list(
                set([
                    r[0] for r in query_report.run(report)["result"]
                    if r[0] != "Total"
                ]))[:how_many("Delivery Note")]:
            dn = webnotes.bean(make_delivery_note(so))
            dn.doc.posting_date = current_date
            dn.doc.fiscal_year = current_date.year
            for d in dn.doclist.get({"parentfield": "delivery_note_details"}):
                d.expense_account = "Cost of Goods Sold - {}".format(
                    company_abbr)

            dn.insert()
            try:
                dn.submit()
                webnotes.conn.commit()
            except NegativeStockError:
                pass
            except SerialNoRequiredError:
                pass
            except SerialNoQtyError:
                pass

    # try submitting existing
    for dn in webnotes.conn.get_values("Delivery Note", {"docstatus": 0},
                                       "name"):
        b = webnotes.bean("Delivery Note", dn[0])
        b.submit()
        webnotes.conn.commit()
예제 #4
0
def run_stock(current_date):
    # make purchase requests
    if can_make("Purchase Receipt"):
        from buying.doctype.purchase_order.purchase_order import make_purchase_receipt
        report = "Purchase Order Items To Be Received"
        for po in list(
                set([
                    r[0] for r in query_report.run(report)["result"]
                    if r[0] != "Total"
                ]))[:how_many("Purchase Receipt")]:
            pr = webnotes.bean(make_purchase_receipt(po))
            pr.doc.posting_date = current_date
            pr.doc.fiscal_year = "2013"
            pr.insert()
            pr.submit()
            webnotes.conn.commit()

    # make delivery notes (if possible)
    if can_make("Delivery Note"):
        from selling.doctype.sales_order.sales_order import make_delivery_note
        from stock.stock_ledger import NegativeStockError
        from stock.doctype.stock_ledger_entry.stock_ledger_entry import SerialNoRequiredError, SerialNoQtyError
        report = "Ordered Items To Be Delivered"
        for so in list(
                set([
                    r[0] for r in query_report.run(report)["result"]
                    if r[0] != "Total"
                ]))[:how_many("Delivery Note")]:
            dn = webnotes.bean(make_delivery_note(so))
            dn.doc.posting_date = current_date
            dn.doc.fiscal_year = "2013"
            dn.insert()
            try:
                dn.submit()
                webnotes.conn.commit()
            except NegativeStockError:
                pass
            except SerialNoRequiredError:
                pass
            except SerialNoQtyError:
                pass

    # try submitting existing
    for dn in webnotes.conn.get_values("Delivery Note", {"docstatus": 0},
                                       "name"):
        b = webnotes.bean("Delivery Note", dn[0])
        b.submit()
        webnotes.conn.commit()
예제 #5
0
    def test_make_purchase_receipt(self):
        from buying.doctype.purchase_order.purchase_order import make_purchase_receipt

        po = webnotes.bean(copy=test_records[0]).insert()

        self.assertRaises(webnotes.ValidationError, make_purchase_receipt,
                          po.doc.name)

        po = webnotes.bean("Purchase Order", po.doc.name)
        po.submit()
        pr = make_purchase_receipt(po.doc.name)
        pr[0]["supplier_warehouse"] = "_Test Warehouse 1 - _TC"

        self.assertEquals(pr[0]["doctype"], "Purchase Receipt")
        self.assertEquals(len(pr), len(test_records[0]))

        pr[0].naming_series = "_T-Purchase Receipt-"
        webnotes.bean(pr).insert()
예제 #6
0
	def test_make_purchase_receipt(self):
		from buying.doctype.purchase_order.purchase_order import make_purchase_receipt

		po = webnotes.bean(copy=test_records[0]).insert()

		self.assertRaises(webnotes.ValidationError, make_purchase_receipt, 
			po.doc.name)

		po = webnotes.bean("Purchase Order", po.doc.name)
		po.submit()
		pr = make_purchase_receipt(po.doc.name)
		pr[0]["supplier_warehouse"] = "_Test Warehouse 1 - _TC"
		
		self.assertEquals(pr[0]["doctype"], "Purchase Receipt")
		self.assertEquals(len(pr), len(test_records[0]))
		
		pr[0].naming_series = "_T-Purchase Receipt-"
		webnotes.bean(pr).insert()
예제 #7
0
def run_stock(current_date):
	# make purchase requests
	if can_make("Purchase Receipt"):
		from buying.doctype.purchase_order.purchase_order import make_purchase_receipt
		from stock.stock_ledger import NegativeStockError
		report = "Purchase Order Items To Be Received"
		for po in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Purchase Receipt")]:
			pr = webnotes.bean(make_purchase_receipt(po))
			pr.doc.posting_date = current_date
			pr.doc.fiscal_year = current_date.year
			pr.insert()
			try:
				pr.submit()
				webnotes.conn.commit()
			except NegativeStockError: pass
	
	# make delivery notes (if possible)
	if can_make("Delivery Note"):
		from selling.doctype.sales_order.sales_order import make_delivery_note
		from stock.stock_ledger import NegativeStockError
		from stock.doctype.serial_no.serial_no import SerialNoRequiredError, SerialNoQtyError
		report = "Ordered Items To Be Delivered"
		for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Delivery Note")]:
			dn = webnotes.bean(make_delivery_note(so))
			dn.doc.posting_date = current_date
			dn.doc.fiscal_year = current_date.year
			for d in dn.doclist.get({"parentfield": "delivery_note_details"}):
				d.expense_account = "Cost of Goods Sold - {}".format(company_abbr)
				
			dn.insert()
			try:
				dn.submit()
				webnotes.conn.commit()
			except NegativeStockError: pass
			except SerialNoRequiredError: pass
			except SerialNoQtyError: pass
	
	# try submitting existing
	for dn in webnotes.conn.get_values("Delivery Note", {"docstatus": 0}, "name"):
		b = webnotes.bean("Delivery Note", dn[0])
		b.submit()
		webnotes.conn.commit()
예제 #8
0
def run_stock(current_date):
	# make purchase requests
	if can_make("Purchase Receipt"):
		from buying.doctype.purchase_order.purchase_order import make_purchase_receipt
		report = "Purchase Order Items To Be Received"
		for po in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Purchase Receipt")]:
			pr = webnotes.bean(make_purchase_receipt(po))
			pr.doc.posting_date = current_date
			pr.doc.fiscal_year = "2013"
			pr.insert()
			pr.submit()
			webnotes.conn.commit()
	
	# make delivery notes (if possible)
	if can_make("Delivery Note"):
		from selling.doctype.sales_order.sales_order import make_delivery_note
		from stock.stock_ledger import NegativeStockError
		from stock.doctype.stock_ledger_entry.stock_ledger_entry import SerialNoRequiredError, SerialNoQtyError
		report = "Ordered Items To Be Delivered"
		for so in list(set([r[0] for r in query_report.run(report)["result"] if r[0]!="Total"]))[:how_many("Delivery Note")]:
			dn = webnotes.bean(make_delivery_note(so))
			dn.doc.posting_date = current_date
			dn.doc.fiscal_year = "2013"
			dn.insert()
			try:
				dn.submit()
				webnotes.conn.commit()
			except NegativeStockError: pass
			except SerialNoRequiredError: pass
			except SerialNoQtyError: pass
	
	# try submitting existing
	for dn in webnotes.conn.get_values("Delivery Note", {"docstatus": 0}, "name"):
		b = webnotes.bean("Delivery Note", dn[0])
		b.submit()
		webnotes.conn.commit()
예제 #9
0
    def _test_purchase_return_return_against_purchase_order(self):
        self._clear_stock_account_balance()

        actual_qty_0 = self._get_actual_qty()

        from buying.doctype.purchase_order.test_purchase_order import test_records as purchase_order_test_records

        from buying.doctype.purchase_order.purchase_order import make_purchase_receipt, make_purchase_invoice

        # submit purchase receipt
        po = webnotes.bean(copy=purchase_order_test_records[0])
        po.doc.is_subcontracted = None
        po.doclist[1].item_code = "_Test Item"
        po.doclist[1].import_rate = 50
        po.insert()
        po.submit()

        pr_doclist = make_purchase_receipt(po.doc.name)

        pr = webnotes.bean(pr_doclist)
        pr.doc.posting_date = po.doc.transaction_date
        pr.insert()
        pr.submit()

        actual_qty_1 = self._get_actual_qty()

        self.assertEquals(actual_qty_0 + 10, actual_qty_1)

        pi_doclist = make_purchase_invoice(po.doc.name)

        pi = webnotes.bean(pi_doclist)
        pi.doc.posting_date = pr.doc.posting_date
        pi.doc.credit_to = "_Test Supplier - _TC"
        for d in pi.doclist.get({"parentfield": "entries"}):
            d.expense_head = "_Test Account Cost for Goods Sold - _TC"
            d.cost_center = "_Test Cost Center - _TC"
        for d in pi.doclist.get({"parentfield": "purchase_tax_details"}):
            d.cost_center = "_Test Cost Center - _TC"

        pi.run_method("calculate_taxes_and_totals")
        pi.doc.bill_no = "NA"
        pi.insert()
        pi.submit()

        # submit purchase return
        se = webnotes.bean(copy=test_records[0])
        se.doc.purpose = "Purchase Return"
        se.doc.purchase_receipt_no = pr.doc.name
        se.doc.posting_date = "2013-03-01"
        se.doc.fiscal_year = "_Test Fiscal Year 2013"
        se.doclist[1].qty = se.doclist[1].transfer_qty = 5
        se.doclist[1].s_warehouse = "_Test Warehouse - _TC"
        se.insert()
        se.submit()

        actual_qty_2 = self._get_actual_qty()

        self.assertEquals(actual_qty_1 - 5, actual_qty_2)

        webnotes.conn.set_default("company", self.old_default_company)

        return se, pr.doc.name
예제 #10
0
	def _test_purchase_return_return_against_purchase_order(self):
		self._clear_stock()
		
		actual_qty_0 = self._get_actual_qty()
		
		from buying.doctype.purchase_order.test_purchase_order \
			import test_records as purchase_order_test_records
		
		from buying.doctype.purchase_order.purchase_order import \
			make_purchase_receipt, make_purchase_invoice
		
		# submit purchase receipt
		po = webnotes.bean(copy=purchase_order_test_records[0])
		po.doc.is_subcontracted = None
		po.doclist[1].item_code = "_Test Item"
		po.doclist[1].import_rate = 50
		po.insert()
		po.submit()
		
		pr_doclist = make_purchase_receipt(po.doc.name)
		
		pr = webnotes.bean(pr_doclist)
		pr.doc.posting_date = po.doc.transaction_date
		pr.insert()
		pr.submit()
		
		actual_qty_1 = self._get_actual_qty()
		
		self.assertEquals(actual_qty_0 + 10, actual_qty_1)
		
		pi_doclist = make_purchase_invoice(po.doc.name)
			
		pi = webnotes.bean(pi_doclist)
		pi.doc.posting_date = pr.doc.posting_date
		pi.doc.credit_to = "_Test Supplier - _TC"
		for d in pi.doclist.get({"parentfield": "entries"}):
			d.expense_head = "_Test Account Cost for Goods Sold - _TC"
			d.cost_center = "_Test Cost Center - _TC"
		for d in pi.doclist.get({"parentfield": "purchase_tax_details"}):
			d.cost_center = "_Test Cost Center - _TC"
		
		pi.run_method("calculate_taxes_and_totals")
		pi.doc.bill_no = "NA"
		pi.insert()
		pi.submit()
		
		# submit purchase return
		se = webnotes.bean(copy=test_records[0])
		se.doc.purpose = "Purchase Return"
		se.doc.purchase_receipt_no = pr.doc.name
		se.doc.posting_date = "2013-03-01"
		se.doc.fiscal_year = "_Test Fiscal Year 2013"
		se.doclist[1].qty = se.doclist[1].transfer_qty = 5
		se.doclist[1].s_warehouse = "_Test Warehouse - _TC"
		se.insert()
		se.submit()
		
		actual_qty_2 = self._get_actual_qty()
		
		self.assertEquals(actual_qty_1 - 5, actual_qty_2)
		
		webnotes.conn.set_default("company", self.old_default_company)
		
		return se, pr.doc.name