Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion ecommerce_integrations/shopify/invoice.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@


def prepare_sales_invoice(payload, request_id=None):
from ecommerce_integrations.shopify.order import get_sales_order
from ecommerce_integrations.shopify.order import get_sales_order, sync_sales_order

order = payload

Expand All @@ -21,6 +21,10 @@ def prepare_sales_invoice(payload, request_id=None):

try:
sales_order = get_sales_order(cstr(order["id"]))
if not sales_order:
sync_sales_order(order, request_id)
sales_order = get_sales_order(cstr(order["id"]))

if sales_order:
create_sales_invoice(order, setting, sales_order)
create_shopify_log(status="Success")
Expand Down
38 changes: 28 additions & 10 deletions ecommerce_integrations/shopify/order.py
Original file line number Diff line number Diff line change
Expand Up @@ -380,17 +380,35 @@ def cancel_order(payload, request_id=None):
create_shopify_log(status="Invalid", message="Sales Order does not exist")
return

sales_invoice = frappe.db.get_value("Sales Invoice", filters={ORDER_ID_FIELD: order_id})
delivery_notes = frappe.db.get_list("Delivery Note", filters={ORDER_ID_FIELD: order_id})

if sales_invoice:
frappe.db.set_value("Sales Invoice", sales_invoice, ORDER_STATUS_FIELD, order_status)

for dn in delivery_notes:
frappe.db.set_value("Delivery Note", dn.name, ORDER_STATUS_FIELD, order_status)

if not sales_invoice and not delivery_notes and sales_order.docstatus == 1:
# Cancel Sales Invoices
sales_invoices = frappe.db.get_all("Sales Invoice", filters={ORDER_ID_FIELD: order_id}, pluck="name")
for si_name in sales_invoices:
try:
si = frappe.get_doc("Sales Invoice", si_name)
if si.docstatus == 1:
si.cancel()
elif si.docstatus == 0:
si.delete()
except Exception:
frappe.log_error(message=frappe.get_traceback(), title="Failed to cancel SI on Shopify order cancellation")

# Cancel Delivery Notes
delivery_notes = frappe.db.get_all("Delivery Note", filters={ORDER_ID_FIELD: order_id}, pluck="name")
for dn_name in delivery_notes:
try:
dn = frappe.get_doc("Delivery Note", dn_name)
if dn.docstatus == 1:
dn.cancel()
elif dn.docstatus == 0:
dn.delete()
except Exception:
frappe.log_error(message=frappe.get_traceback(), title="Failed to cancel DN on Shopify order cancellation")

sales_order.reload()
if sales_order.docstatus == 1:
sales_order.cancel()
elif sales_order.docstatus == 0:
sales_order.delete()
else:
frappe.db.set_value("Sales Order", sales_order.name, ORDER_STATUS_FIELD, order_status)

Expand Down