More Shipstation integrations
This commit is contained in:
@@ -37,6 +37,31 @@ class SaveResult(TypedDict):
|
||||
unmatched_tracking_tickets: List[str] # tracking data with no matching local ticket
|
||||
|
||||
|
||||
class SendToShipStationWorker(QThread):
|
||||
"""Runs the emergency ShipStation API send off the GUI thread."""
|
||||
|
||||
finished_ok = pyqtSignal(dict) # the created shipment's JSON
|
||||
failed = pyqtSignal(str)
|
||||
|
||||
def __init__(self, order, parent=None):
|
||||
super().__init__(parent)
|
||||
self.order = order
|
||||
|
||||
def run(self) -> None:
|
||||
from app.services.shipstation_send import send_order_to_shipstation_api, ShipStationSendError
|
||||
|
||||
try:
|
||||
result = send_order_to_shipstation_api(self.order)
|
||||
except ShipStationSendError as exc:
|
||||
self.failed.emit(str(exc))
|
||||
return
|
||||
except Exception as exc: # noqa: BLE001
|
||||
self.failed.emit(f"Unexpected error sending to ShipStation: {exc}")
|
||||
return
|
||||
|
||||
self.finished_ok.emit(result)
|
||||
|
||||
|
||||
class FetchOrdersWorker(QThread):
|
||||
"""Fetches orders from a given service and saves/merges the results."""
|
||||
|
||||
@@ -121,6 +146,9 @@ def save_orders(orders: List[NormalizedOrder]) -> SaveResult:
|
||||
ticket_number=order.get("ticket_number"),
|
||||
company=order.get("company", "Unknown"),
|
||||
skus=order.get("skus", []),
|
||||
line_items=order.get("line_items", []),
|
||||
shipping_info=order.get("shipping_info", {}),
|
||||
creator=order.get("creator"),
|
||||
summary=order["summary"],
|
||||
status=new_status,
|
||||
source_created_at=order["source_created_at"],
|
||||
@@ -149,6 +177,9 @@ def save_orders(orders: List[NormalizedOrder]) -> SaveResult:
|
||||
existing.ticket_number = order.get("ticket_number")
|
||||
existing.company = order.get("company", "Unknown")
|
||||
existing.skus = order.get("skus", [])
|
||||
existing.line_items = order.get("line_items", [])
|
||||
existing.shipping_info = order.get("shipping_info", {})
|
||||
existing.creator = order.get("creator")
|
||||
existing.summary = order["summary"]
|
||||
existing.status = new_status
|
||||
existing.source_created_at = order["source_created_at"]
|
||||
|
||||
Reference in New Issue
Block a user