コード例 #1
0
ファイル: test_packed_item.py プロジェクト: ankush/erpnext
    def test_returning_full_bundles(self):
        from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return

        item_list = [
            {
                "item_code": self.bundle,
                "warehouse": self.warehouse,
                "qty": 1,
                "rate": 100,
            },
            {
                "item_code": self.bundle2,
                "warehouse": self.warehouse,
                "qty": 1,
                "rate": 100,
            },
        ]
        so = make_sales_order(item_list=item_list, warehouse=self.warehouse)

        dn = make_delivery_note(so.name)
        dn.save()
        dn.submit()

        # create return
        dn_ret = make_sales_return(dn.name)
        dn_ret.save()
        dn_ret.submit()
        self.assertReturns(dn.packed_items, dn_ret.packed_items)
コード例 #2
0
ファイル: stock.py プロジェクト: mbauskar/erpnext
def make_sales_return_records():
	for data in frappe.get_all('Delivery Note', fields=["name"], filters={"docstatus": 1}):
		if random.random() < 0.2:
			try:
				dn = make_sales_return(data.name)
				dn.insert()
				dn.submit()
				frappe.db.commit()
			except Exception:
				frappe.db.rollback()
コード例 #3
0
ファイル: stock.py プロジェクト: prashant03tp/crm_v8_erpnext
def make_sales_return_records():
	if random.random() < 0.1:
		for data in frappe.get_all('Delivery Note', fields=["name"], filters={"docstatus": 1}):
			if random.random() < 0.1:
				try:
					dn = make_sales_return(data.name)
					dn.insert()
					dn.submit()
					frappe.db.commit()
				except Exception:
					frappe.db.rollback()
コード例 #4
0
def make_return_delivery(delivery_note, returned_items):
    """
	If all the ordered items are not delivered, create a return Delivery Note against the returned items.

	Args:
		delivery_note (str): The reference Delivery Note that contains order info.
		returned_items (str): Any delivered items that have been returned.
			Example: '[
				{
					"reason": "Reason for rejection",
					"item_code": "VC-CB-SSB-0001",
					"qty": 1.0
				},
				...
			]'

	Returns:
		str: The generated draft return Delivery Note ID
	"""

    if isinstance(returned_items, str):
        returned_items = json.loads(returned_items)

    if isinstance(returned_items, list):
        return_delivery = make_sales_return(delivery_note)
        items_returned = []

        for item in return_delivery.items:
            returned_item = next((_item for _item in returned_items
                                  if _item.get("item_code") == item.item_code),
                                 None)

            if not returned_item:
                item.qty = 0
            else:
                item.qty = -(returned_item.get("qty") or item.qty) or 0
                item.reason_for_return = returned_item.get("reason")
                items_returned.append(item)

        return_delivery.items = items_returned
        return_delivery.save()
        return_delivery_id = return_delivery.name

        return return_delivery_id

    frappe.throw(_("Invalid format for returned items"), frappe.CSRFTokenError)
コード例 #5
0
ファイル: test_packed_item.py プロジェクト: ankush/erpnext
    def test_returning_partial_bundle_qty(self):
        from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return

        so = make_sales_order(item_code=self.bundle,
                              warehouse=self.warehouse,
                              qty=2)

        dn = make_delivery_note(so.name)
        dn.save()
        dn.submit()

        # create return
        dn_ret = make_sales_return(dn.name)
        # halve the qty
        dn_ret.items[0].qty = -1
        dn_ret.save()
        dn_ret.submit()

        expected_returns = dn.packed_items
        for d in expected_returns:
            d.qty /= 2
        self.assertReturns(expected_returns, dn_ret.packed_items)
コード例 #6
0
ファイル: test_packed_item.py プロジェクト: ankush/erpnext
    def test_returning_partial_bundles(self):
        from erpnext.stock.doctype.delivery_note.delivery_note import make_sales_return

        item_list = [
            {
                "item_code": self.bundle,
                "warehouse": self.warehouse,
                "qty": 1,
                "rate": 100,
            },
            {
                "item_code": self.bundle2,
                "warehouse": self.warehouse,
                "qty": 1,
                "rate": 100,
            },
        ]
        so = make_sales_order(item_list=item_list, warehouse=self.warehouse)

        dn = make_delivery_note(so.name)
        dn.save()
        dn.submit()

        # create return
        dn_ret = make_sales_return(dn.name)
        # remove bundle 2
        dn_ret.items.pop()

        dn_ret.save()
        dn_ret.submit()
        dn_ret.reload()

        self.assertTrue(
            all(d.parent_item == self.bundle for d in dn_ret.packed_items))

        expected_returns = [
            d for d in dn.packed_items if d.parent_item == self.bundle
        ]
        self.assertReturns(expected_returns, dn_ret.packed_items)