SyriusTaskService.php 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. <?php
  2. namespace App\Services;
  3. use App\Http\Controllers\api\thirdPart\syrius\beans\Task;
  4. use App\Http\Controllers\api\thirdPart\syrius\beans\TaskItem;
  5. use App\Order;
  6. use Illuminate\Database\Eloquent\Model;
  7. class SyriusTaskService
  8. {
  9. const STORAGE_TYPE = "1A_container";
  10. const SERIAL_NO = "1635055429594424";
  11. const WAREHOUSE = "101";
  12. public function formatTask(Model $model):Task
  13. {
  14. $task = new Task();
  15. $task->warehouseId = self::WAREHOUSE;
  16. switch ($model->getMorphClass()){
  17. case Order::class:
  18. $model->loadMissing(["owner:id,name","batch:id,code","orderCommodities.commodity.barcodes"]);
  19. $task->id = $model->code;
  20. $task->batchId = $model->batch->code ?? 'SYSTEM';
  21. $task->attributes = [
  22. "customer" => $model->owner->name,
  23. ];
  24. $task->type = Task::TOTAL_PICKING;
  25. $task->storages = [["type"=>self::STORAGE_TYPE]];
  26. $task->items = [];
  27. foreach ($model->orderCommodities as $commodity){
  28. $taskItem = new TaskItem();
  29. $taskItem->name = $commodity->commodity->name ?? "";
  30. $taskItem->barcode = $commodity->commodity->barcodes[0]->code ?? "";
  31. $taskItem->quantity = (int)$commodity->amount;
  32. $taskItem->binLocations = [
  33. $commodity->location
  34. ];
  35. $taskItem->attributes = [
  36. "sku" => $commodity->commodity->sku ?? "",
  37. ];
  38. $task->items[] = (array)$taskItem->get();
  39. }
  40. break;
  41. }
  42. return $task->get();
  43. }
  44. }