More email SKU shenanigans, now with more TEST labels!
This commit is contained in:
+49
-4
@@ -61,23 +61,52 @@ class SendToShipStationWorker(QThread):
|
||||
self.finished_ok.emit(result)
|
||||
|
||||
|
||||
class CreateDummyShipmentWorker(QThread):
|
||||
"""Runs step 1 (dummy outbound shipment creation) off the GUI thread."""
|
||||
|
||||
finished_ok = pyqtSignal(dict) # the created dummy label'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 create_dummy_shipment, ShipStationSendError
|
||||
|
||||
try:
|
||||
result = create_dummy_shipment(self.order)
|
||||
except ShipStationSendError as exc:
|
||||
self.failed.emit(str(exc))
|
||||
return
|
||||
except Exception as exc: # noqa: BLE001
|
||||
self.failed.emit(f"Unexpected error creating dummy shipment: {exc}")
|
||||
return
|
||||
|
||||
self.finished_ok.emit(result)
|
||||
|
||||
|
||||
class CreateReturnLabelWorker(QThread):
|
||||
"""Runs return-label creation off the GUI thread."""
|
||||
"""Runs step 2 (the real return label, from an already-created dummy)
|
||||
off the GUI thread."""
|
||||
|
||||
finished_ok = pyqtSignal(dict) # the created label's JSON
|
||||
failed = pyqtSignal(str)
|
||||
|
||||
def __init__(self, order, packages: list[dict], charge_event: str, parent=None):
|
||||
def __init__(self, order, dummy_label_id: str, packages: list[dict], charge_event: str, parent=None):
|
||||
super().__init__(parent)
|
||||
self.order = order
|
||||
self.dummy_label_id = dummy_label_id
|
||||
self.packages = packages
|
||||
self.charge_event = charge_event
|
||||
|
||||
def run(self) -> None:
|
||||
from app.services.shipstation_send import create_return_label, ShipStationSendError
|
||||
from app.services.shipstation_send import create_return_label_from_dummy, ShipStationSendError
|
||||
|
||||
try:
|
||||
result = create_return_label(self.order, self.packages, self.charge_event)
|
||||
result = create_return_label_from_dummy(
|
||||
self.order, self.dummy_label_id, self.packages, self.charge_event
|
||||
)
|
||||
except ShipStationSendError as exc:
|
||||
self.failed.emit(str(exc))
|
||||
return
|
||||
@@ -334,6 +363,22 @@ def mark_shipstation_sent(ticket_number: str) -> None:
|
||||
session.close()
|
||||
|
||||
|
||||
def save_dummy_outbound_label_id(ticket_number: str, label_id: str) -> None:
|
||||
"""Persists step 1's result (the dummy shipment's label_id) so step 2
|
||||
(the real return label) can be triggered separately - including in a
|
||||
later session, after the dummy has been verified in ShipStation."""
|
||||
session = get_session()
|
||||
try:
|
||||
order = session.execute(
|
||||
select(Order).where(Order.source == "jira", Order.ticket_number == ticket_number)
|
||||
).scalar_one_or_none()
|
||||
if order is not None:
|
||||
order.dummy_outbound_label_id = label_id
|
||||
session.commit()
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
|
||||
def save_pack_data(ticket_number: str, serial_numbers: dict, packed: bool) -> None:
|
||||
"""
|
||||
Saves serial numbers and the packed/done flag from the Pack Ticket
|
||||
|
||||
Reference in New Issue
Block a user