Exemplo n.º 1
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()
Exemplo n.º 2
0
    def _test_delivery_note_return_against_sales_order(self, item_code,
                                                       delivered_qty,
                                                       returned_qty):
        self._insert_material_receipt()

        from selling.doctype.sales_order.test_sales_order import test_records as sales_order_test_records
        from selling.doctype.sales_order.sales_order import make_sales_invoice, make_delivery_note

        actual_qty_0 = self._get_actual_qty()

        so = webnotes.bean(copy=sales_order_test_records[0])
        so.doclist[1].item_code = item_code
        so.doclist[1].qty = 5.0
        so.insert()
        so.submit()

        dn_doclist = make_delivery_note(so.doc.name)

        dn = webnotes.bean(dn_doclist)
        dn.doc.status = "Draft"
        dn.doc.posting_date = so.doc.delivery_date
        dn.insert()
        dn.submit()

        actual_qty_1 = self._get_actual_qty()

        self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)

        si_doclist = make_sales_invoice(so.doc.name)

        si = webnotes.bean(si_doclist)
        si.doc.posting_date = dn.doc.posting_date
        si.doc.debit_to = "_Test Customer - _TC"
        for d in si.doclist.get({"parentfield": "entries"}):
            d.income_account = "Sales - _TC"
            d.cost_center = "_Test Cost Center - _TC"
        si.insert()
        si.submit()

        # insert and submit stock entry for sales return
        se = webnotes.bean(copy=test_records[0])
        se.doc.purpose = "Sales Return"
        se.doc.delivery_note_no = dn.doc.name
        se.doc.posting_date = "2013-03-10"
        se.doc.fiscal_year = "_Test Fiscal Year 2013"
        se.doclist[1].qty = se.doclist[1].transfer_qty = returned_qty

        se.insert()
        se.submit()

        actual_qty_2 = self._get_actual_qty()
        self.assertEquals(actual_qty_1 + returned_qty, actual_qty_2)

        return se
Exemplo n.º 3
0
    def _test_delivery_note_return_against_sales_order(self, item_code, delivered_qty, returned_qty):
        self._insert_material_receipt()

        from selling.doctype.sales_order.test_sales_order import test_records as sales_order_test_records
        from selling.doctype.sales_order.sales_order import make_sales_invoice, make_delivery_note

        actual_qty_0 = self._get_actual_qty()

        so = webnotes.bean(copy=sales_order_test_records[0])
        so.doclist[1].item_code = item_code
        so.doclist[1].qty = 5.0
        so.insert()
        so.submit()

        dn_doclist = make_delivery_note(so.doc.name)

        dn = webnotes.bean(dn_doclist)
        dn.doc.status = "Draft"
        dn.doc.posting_date = so.doc.delivery_date
        dn.insert()
        dn.submit()

        actual_qty_1 = self._get_actual_qty()

        self.assertEquals(actual_qty_0 - delivered_qty, actual_qty_1)

        si_doclist = make_sales_invoice(so.doc.name)

        si = webnotes.bean(si_doclist)
        si.doc.posting_date = dn.doc.posting_date
        si.doc.debit_to = "_Test Customer - _TC"
        for d in si.doclist.get({"parentfield": "entries"}):
            d.income_account = "Sales - _TC"
            d.cost_center = "_Test Cost Center - _TC"
        si.insert()
        si.submit()

        # insert and submit stock entry for sales return
        se = webnotes.bean(copy=test_records[0])
        se.doc.purpose = "Sales Return"
        se.doc.delivery_note_no = dn.doc.name
        se.doc.posting_date = "2013-03-10"
        se.doc.fiscal_year = "_Test Fiscal Year 2013"
        se.doclist[1].qty = se.doclist[1].transfer_qty = returned_qty

        se.insert()
        se.submit()

        actual_qty_2 = self._get_actual_qty()
        self.assertEquals(actual_qty_1 + returned_qty, actual_qty_2)

        return se
Exemplo n.º 4
0
	def test_make_delivery_note(self):
		from selling.doctype.sales_order.sales_order import make_delivery_note

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

		self.assertRaises(webnotes.ValidationError, make_delivery_note, 
			so.doc.name)

		sales_order = webnotes.bean("Sales Order", so.doc.name)
		sales_order.submit()
		dn = make_delivery_note(so.doc.name)
		
		self.assertEquals(dn[0]["doctype"], "Delivery Note")
		self.assertEquals(len(dn), len(sales_order.doclist))
Exemplo n.º 5
0
    def test_make_delivery_note(self):
        from selling.doctype.sales_order.sales_order import make_delivery_note

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

        self.assertRaises(webnotes.ValidationError, make_delivery_note,
                          so.doc.name)

        sales_order = webnotes.bean("Sales Order", so.doc.name)
        sales_order.submit()
        dn = make_delivery_note(so.doc.name)

        self.assertEquals(dn[0]["doctype"], "Delivery Note")
        self.assertEquals(len(dn), len(sales_order.doclist))
Exemplo n.º 6
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()
Exemplo n.º 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()
Exemplo n.º 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()