More Shipstation integrations

This commit is contained in:
2026-08-31 10:08:30 -05:00
parent ae74f78520
commit 4c172c1fd5
10 changed files with 527 additions and 9 deletions
+31
View File
@@ -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"]