From 84717af7cbfaf1b23c1b5df7c63f46d8033d714b Mon Sep 17 00:00:00 2001 From: Devarsh Bhatt Date: Tue, 20 Feb 2024 19:41:18 +0530 Subject: [PATCH 1/5] fix: create DN based on fulfilment --- shopify_integration/fulfilments.py | 35 +++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/shopify_integration/fulfilments.py b/shopify_integration/fulfilments.py index 4a402e5..ef9416a 100644 --- a/shopify_integration/fulfilments.py +++ b/shopify_integration/fulfilments.py @@ -12,7 +12,6 @@ if TYPE_CHECKING: from erpnext.selling.doctype.sales_order.sales_order import SalesOrder from erpnext.stock.doctype.delivery_note.delivery_note import DeliveryNote - from erpnext.stock.doctype.delivery_note_item.delivery_note_item import DeliveryNoteItem from shopify import Fulfillment, LineItem, Order from shopify_integration.shopify_integration.doctype.shopify_settings.shopify_settings import ShopifySettings @@ -110,7 +109,7 @@ def create_delivery_notes( {"docstatus": 1, "shopify_fulfillment_id": fulfillment.id}, "name") if not existing_delivery: - dn: "DeliveryNote" = make_delivery_note(sales_order.name) + dn: "DeliveryNote" = make_delivery_note(source_name=sales_order.name, skip_item_mapping=True) dn.update({ "shopify_settings": shopify_settings.name, "shopify_order_id": shopify_order.id, @@ -122,9 +121,9 @@ def create_delivery_notes( "naming_series": shopify_settings.delivery_note_series or "DN-Shopify-", }) - update_fulfillment_items(dn.items, fulfillment.attributes.get("line_items")) - dn.flags.ignore_mandatory = True + dn_items = update_fulfillment_items(sales_order, fulfillment.attributes.get("line_items")) + dn.items = dn_items dn.save() dn.submit() frappe.db.commit() @@ -134,12 +133,28 @@ def create_delivery_notes( def update_fulfillment_items( - dn_items: List["DeliveryNoteItem"], - fulfillment_items: List["LineItem"] + so: List["SalesOrder"], + fulfillment_items: List["LineItem"], ): - for dn_item in dn_items: + dn_items= [] + for so_item in so.items: # TODO: figure out a better way to add items without setting valuation rate to zero - dn_item.allow_zero_valuation_rate = True for item in fulfillment_items: - if get_item_code(item) == dn_item.item_code: - dn_item.qty = item.attributes.get("quantity") + if get_item_code(item) == so_item.item_code: + dn_item = frappe.new_doc("Delivery Note Item") + dn_item.update({ + "allow_zero_valuation_rate": True, # is it necesarry now? #L151 + "item_code": so_item.item_code, + "item_name": so_item.item_name, + "description": so_item.description, + "qty": item.attributes.get("quantity"), + "rate": so_item.rate, + "against_sales_order": so.name, + "shopify_order_item_id": item.attributes.get("id"), + "parenttype": "Delivery Note", + "parentfield": "items", + }) + dn_items.append(dn_item) + + return dn_items + From 03b3acc99b465db5015d183a5cf80701f5be1d82 Mon Sep 17 00:00:00 2001 From: Devarsh Bhatt Date: Fri, 23 Feb 2024 14:57:35 +0530 Subject: [PATCH 2/5] fix: simplified logic --- shopify_integration/fulfilments.py | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/shopify_integration/fulfilments.py b/shopify_integration/fulfilments.py index ef9416a..a90d921 100644 --- a/shopify_integration/fulfilments.py +++ b/shopify_integration/fulfilments.py @@ -122,8 +122,7 @@ def create_delivery_notes( }) dn.flags.ignore_mandatory = True - dn_items = update_fulfillment_items(sales_order, fulfillment.attributes.get("line_items")) - dn.items = dn_items + dn = update_fulfillment_items(sales_order, fulfillment.attributes.get("line_items"), dn) dn.save() dn.submit() frappe.db.commit() @@ -135,15 +134,14 @@ def create_delivery_notes( def update_fulfillment_items( so: List["SalesOrder"], fulfillment_items: List["LineItem"], + dn: "DeliveryNote" ): - dn_items= [] for so_item in so.items: # TODO: figure out a better way to add items without setting valuation rate to zero for item in fulfillment_items: if get_item_code(item) == so_item.item_code: - dn_item = frappe.new_doc("Delivery Note Item") - dn_item.update({ - "allow_zero_valuation_rate": True, # is it necesarry now? #L151 + dn.append("items",{ + "allow_zero_valuation_rate": True, "item_code": so_item.item_code, "item_name": so_item.item_name, "description": so_item.description, @@ -151,10 +149,5 @@ def update_fulfillment_items( "rate": so_item.rate, "against_sales_order": so.name, "shopify_order_item_id": item.attributes.get("id"), - "parenttype": "Delivery Note", - "parentfield": "items", }) - dn_items.append(dn_item) - - return dn_items - + return dn From 6d1c1ec5be4364c4e59f2db997c291ca2df1470b Mon Sep 17 00:00:00 2001 From: Devarsh Bhatt <58166671+bhattdevarsh@users.noreply.github.com> Date: Mon, 26 Feb 2024 10:30:32 +0530 Subject: [PATCH 3/5] Update shopify_integration/fulfilments.py Co-authored-by: Rohan --- shopify_integration/fulfilments.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/shopify_integration/fulfilments.py b/shopify_integration/fulfilments.py index a90d921..0705ebf 100644 --- a/shopify_integration/fulfilments.py +++ b/shopify_integration/fulfilments.py @@ -132,7 +132,7 @@ def create_delivery_notes( def update_fulfillment_items( - so: List["SalesOrder"], + so: "SalesOrder", fulfillment_items: List["LineItem"], dn: "DeliveryNote" ): From 469fd0c36ac811bcd790deb0853b39fed4804d8a Mon Sep 17 00:00:00 2001 From: Devarsh Bhatt Date: Mon, 4 Mar 2024 18:49:20 +0530 Subject: [PATCH 4/5] fix: check shopify_order_item_id --- shopify_integration/fulfilments.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/shopify_integration/fulfilments.py b/shopify_integration/fulfilments.py index 0705ebf..1693858 100644 --- a/shopify_integration/fulfilments.py +++ b/shopify_integration/fulfilments.py @@ -139,6 +139,9 @@ def update_fulfillment_items( for so_item in so.items: # TODO: figure out a better way to add items without setting valuation rate to zero for item in fulfillment_items: + if frappe.db.exists("Delivery Note Item", + {"against_sales_order": so_item.name, "shopify_order_item_id": item.attributes.get("id")}): + continue if get_item_code(item) == so_item.item_code: dn.append("items",{ "allow_zero_valuation_rate": True, From c8b7d18d789fc07f3b3363cdc165ca5780875825 Mon Sep 17 00:00:00 2001 From: Devarsh Bhatt Date: Wed, 6 Mar 2024 17:10:14 +0530 Subject: [PATCH 5/5] fix: suggested changes --- shopify_integration/fulfilments.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/shopify_integration/fulfilments.py b/shopify_integration/fulfilments.py index 1693858..6f29db1 100644 --- a/shopify_integration/fulfilments.py +++ b/shopify_integration/fulfilments.py @@ -139,10 +139,7 @@ def update_fulfillment_items( for so_item in so.items: # TODO: figure out a better way to add items without setting valuation rate to zero for item in fulfillment_items: - if frappe.db.exists("Delivery Note Item", - {"against_sales_order": so_item.name, "shopify_order_item_id": item.attributes.get("id")}): - continue - if get_item_code(item) == so_item.item_code: + if item.attributes.get("id") == so_item.shopify_order_item_id: dn.append("items",{ "allow_zero_valuation_rate": True, "item_code": so_item.item_code,