karrio-server-graph 2025.5.4__py3-none-any.whl → 2025.5.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- karrio/server/graph/schemas/base/__init__.py +82 -18
- karrio/server/graph/schemas/base/inputs.py +199 -70
- karrio/server/graph/schemas/base/mutations.py +313 -122
- karrio/server/graph/schemas/base/types.py +139 -22
- karrio/server/graph/serializers.py +115 -41
- karrio/server/graph/tests/test_rate_sheets.py +1950 -176
- {karrio_server_graph-2025.5.4.dist-info → karrio_server_graph-2025.5.6.dist-info}/METADATA +1 -1
- {karrio_server_graph-2025.5.4.dist-info → karrio_server_graph-2025.5.6.dist-info}/RECORD +10 -10
- {karrio_server_graph-2025.5.4.dist-info → karrio_server_graph-2025.5.6.dist-info}/WHEEL +0 -0
- {karrio_server_graph-2025.5.4.dist-info → karrio_server_graph-2025.5.6.dist-info}/top_level.txt +0 -0
|
@@ -332,18 +332,6 @@ class Mutation:
|
|
|
332
332
|
) -> mutations.UpdateRateSheetMutation:
|
|
333
333
|
return mutations.UpdateRateSheetMutation.mutate(info, **input.to_dict())
|
|
334
334
|
|
|
335
|
-
@strawberry.mutation
|
|
336
|
-
def update_rate_sheet_zone_cell(
|
|
337
|
-
self, info: Info, input: inputs.UpdateRateSheetZoneCellMutationInput
|
|
338
|
-
) -> mutations.UpdateRateSheetZoneCellMutation:
|
|
339
|
-
return mutations.UpdateRateSheetZoneCellMutation.mutate(info, **input.to_dict())
|
|
340
|
-
|
|
341
|
-
@strawberry.mutation
|
|
342
|
-
def batch_update_rate_sheet_cells(
|
|
343
|
-
self, info: Info, input: inputs.BatchUpdateRateSheetCellsMutationInput
|
|
344
|
-
) -> mutations.BatchUpdateRateSheetCellsMutation:
|
|
345
|
-
return mutations.BatchUpdateRateSheetCellsMutation.mutate(info, **input.to_dict())
|
|
346
|
-
|
|
347
335
|
@strawberry.mutation
|
|
348
336
|
def delete_rate_sheet_service(
|
|
349
337
|
self, info: Info, input: inputs.DeleteRateSheetServiceMutationInput
|
|
@@ -358,6 +346,88 @@ class Mutation:
|
|
|
358
346
|
info, model=providers.RateSheet, **input.to_dict()
|
|
359
347
|
)
|
|
360
348
|
|
|
349
|
+
# ─────────────────────────────────────────────────────────────────
|
|
350
|
+
# SHARED ZONE MUTATIONS (Rate Sheet Level)
|
|
351
|
+
# ─────────────────────────────────────────────────────────────────
|
|
352
|
+
|
|
353
|
+
@strawberry.mutation
|
|
354
|
+
def add_shared_zone(
|
|
355
|
+
self, info: Info, input: inputs.AddSharedZoneMutationInput
|
|
356
|
+
) -> mutations.AddSharedZoneMutation:
|
|
357
|
+
return mutations.AddSharedZoneMutation.mutate(info, **input.to_dict())
|
|
358
|
+
|
|
359
|
+
@strawberry.mutation
|
|
360
|
+
def update_shared_zone(
|
|
361
|
+
self, info: Info, input: inputs.UpdateSharedZoneMutationInput
|
|
362
|
+
) -> mutations.UpdateSharedZoneMutation:
|
|
363
|
+
return mutations.UpdateSharedZoneMutation.mutate(info, **input.to_dict())
|
|
364
|
+
|
|
365
|
+
@strawberry.mutation
|
|
366
|
+
def delete_shared_zone(
|
|
367
|
+
self, info: Info, input: inputs.DeleteSharedZoneMutationInput
|
|
368
|
+
) -> mutations.DeleteSharedZoneMutation:
|
|
369
|
+
return mutations.DeleteSharedZoneMutation.mutate(info, **input.to_dict())
|
|
370
|
+
|
|
371
|
+
# ─────────────────────────────────────────────────────────────────
|
|
372
|
+
# SHARED SURCHARGE MUTATIONS (Rate Sheet Level)
|
|
373
|
+
# ─────────────────────────────────────────────────────────────────
|
|
374
|
+
|
|
375
|
+
@strawberry.mutation
|
|
376
|
+
def add_shared_surcharge(
|
|
377
|
+
self, info: Info, input: inputs.AddSharedSurchargeMutationInput
|
|
378
|
+
) -> mutations.AddSharedSurchargeMutation:
|
|
379
|
+
return mutations.AddSharedSurchargeMutation.mutate(info, **input.to_dict())
|
|
380
|
+
|
|
381
|
+
@strawberry.mutation
|
|
382
|
+
def update_shared_surcharge(
|
|
383
|
+
self, info: Info, input: inputs.UpdateSharedSurchargeMutationInput
|
|
384
|
+
) -> mutations.UpdateSharedSurchargeMutation:
|
|
385
|
+
return mutations.UpdateSharedSurchargeMutation.mutate(info, **input.to_dict())
|
|
386
|
+
|
|
387
|
+
@strawberry.mutation
|
|
388
|
+
def delete_shared_surcharge(
|
|
389
|
+
self, info: Info, input: inputs.DeleteSharedSurchargeMutationInput
|
|
390
|
+
) -> mutations.DeleteSharedSurchargeMutation:
|
|
391
|
+
return mutations.DeleteSharedSurchargeMutation.mutate(info, **input.to_dict())
|
|
392
|
+
|
|
393
|
+
@strawberry.mutation
|
|
394
|
+
def batch_update_surcharges(
|
|
395
|
+
self, info: Info, input: inputs.BatchUpdateSurchargesMutationInput
|
|
396
|
+
) -> mutations.BatchUpdateSurchargesMutation:
|
|
397
|
+
return mutations.BatchUpdateSurchargesMutation.mutate(info, **input.to_dict())
|
|
398
|
+
|
|
399
|
+
# ─────────────────────────────────────────────────────────────────
|
|
400
|
+
# SERVICE RATE MUTATIONS (Service-Zone Rate Mapping)
|
|
401
|
+
# ─────────────────────────────────────────────────────────────────
|
|
402
|
+
|
|
403
|
+
@strawberry.mutation
|
|
404
|
+
def update_service_rate(
|
|
405
|
+
self, info: Info, input: inputs.UpdateServiceRateMutationInput
|
|
406
|
+
) -> mutations.UpdateServiceRateMutation:
|
|
407
|
+
return mutations.UpdateServiceRateMutation.mutate(info, **input.to_dict())
|
|
408
|
+
|
|
409
|
+
@strawberry.mutation
|
|
410
|
+
def batch_update_service_rates(
|
|
411
|
+
self, info: Info, input: inputs.BatchUpdateServiceRatesMutationInput
|
|
412
|
+
) -> mutations.BatchUpdateServiceRatesMutation:
|
|
413
|
+
return mutations.BatchUpdateServiceRatesMutation.mutate(info, **input.to_dict())
|
|
414
|
+
|
|
415
|
+
# ─────────────────────────────────────────────────────────────────
|
|
416
|
+
# SERVICE ZONE/SURCHARGE ASSIGNMENT MUTATIONS
|
|
417
|
+
# ─────────────────────────────────────────────────────────────────
|
|
418
|
+
|
|
419
|
+
@strawberry.mutation
|
|
420
|
+
def update_service_zone_ids(
|
|
421
|
+
self, info: Info, input: inputs.UpdateServiceZoneIdsMutationInput
|
|
422
|
+
) -> mutations.UpdateServiceZoneIdsMutation:
|
|
423
|
+
return mutations.UpdateServiceZoneIdsMutation.mutate(info, **input.to_dict())
|
|
424
|
+
|
|
425
|
+
@strawberry.mutation
|
|
426
|
+
def update_service_surcharge_ids(
|
|
427
|
+
self, info: Info, input: inputs.UpdateServiceSurchargeIdsMutationInput
|
|
428
|
+
) -> mutations.UpdateServiceSurchargeIdsMutation:
|
|
429
|
+
return mutations.UpdateServiceSurchargeIdsMutation.mutate(info, **input.to_dict())
|
|
430
|
+
|
|
361
431
|
@strawberry.mutation
|
|
362
432
|
def create_metafield(
|
|
363
433
|
self, info: Info, input: inputs.CreateMetafieldInput
|
|
@@ -377,9 +447,3 @@ class Mutation:
|
|
|
377
447
|
return mutations.DeleteMutation.mutate(
|
|
378
448
|
info, model=core.Metafield, **input.to_dict()
|
|
379
449
|
)
|
|
380
|
-
|
|
381
|
-
@strawberry.mutation
|
|
382
|
-
def update_service_zone(
|
|
383
|
-
self, info: Info, input: inputs.UpdateServiceZoneMutationInput
|
|
384
|
-
) -> mutations.UpdateServiceZoneMutation:
|
|
385
|
-
return mutations.UpdateServiceZoneMutation.mutate(info, **input.to_dict())
|
|
@@ -414,59 +414,48 @@ class LabelTemplateInput(utils.BaseInput):
|
|
|
414
414
|
|
|
415
415
|
|
|
416
416
|
@strawberry.input
|
|
417
|
-
class
|
|
418
|
-
|
|
419
|
-
label: typing.Optional[str] = strawberry.UNSET
|
|
417
|
+
class CreateServiceLevelInput(utils.BaseInput):
|
|
418
|
+
"""Input for creating a new service level."""
|
|
420
419
|
|
|
421
|
-
|
|
422
|
-
|
|
420
|
+
service_name: str
|
|
421
|
+
service_code: str
|
|
422
|
+
currency: utils.CurrencyCodeEnum
|
|
423
|
+
|
|
424
|
+
carrier_service_code: typing.Optional[str] = strawberry.UNSET
|
|
425
|
+
description: typing.Optional[str] = strawberry.UNSET
|
|
426
|
+
active: typing.Optional[bool] = strawberry.UNSET
|
|
423
427
|
|
|
424
428
|
transit_days: typing.Optional[int] = strawberry.UNSET
|
|
425
429
|
transit_time: typing.Optional[float] = strawberry.UNSET
|
|
426
430
|
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
cities: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
432
|
-
postal_codes: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
433
|
-
country_codes: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
@strawberry.input
|
|
437
|
-
class UpdateServiceZoneInput(utils.BaseInput):
|
|
438
|
-
rate: typing.Optional[float] = strawberry.UNSET
|
|
439
|
-
label: typing.Optional[str] = strawberry.UNSET
|
|
431
|
+
max_width: typing.Optional[float] = strawberry.UNSET
|
|
432
|
+
max_height: typing.Optional[float] = strawberry.UNSET
|
|
433
|
+
max_length: typing.Optional[float] = strawberry.UNSET
|
|
434
|
+
dimension_unit: typing.Optional[utils.DimensionUnitEnum] = strawberry.UNSET
|
|
440
435
|
|
|
441
436
|
min_weight: typing.Optional[float] = strawberry.UNSET
|
|
442
437
|
max_weight: typing.Optional[float] = strawberry.UNSET
|
|
438
|
+
weight_unit: typing.Optional[utils.WeightUnitEnum] = strawberry.UNSET
|
|
439
|
+
max_volume: typing.Optional[float] = strawberry.UNSET
|
|
440
|
+
cost: typing.Optional[float] = strawberry.UNSET
|
|
443
441
|
|
|
444
|
-
|
|
445
|
-
|
|
442
|
+
domicile: typing.Optional[bool] = strawberry.UNSET
|
|
443
|
+
international: typing.Optional[bool] = strawberry.UNSET
|
|
446
444
|
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
longitude: typing.Optional[float] = strawberry.UNSET
|
|
445
|
+
zone_ids: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
446
|
+
surcharge_ids: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
450
447
|
|
|
451
|
-
|
|
452
|
-
postal_codes: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
453
|
-
country_codes: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
448
|
+
metadata: typing.Optional[utils.JSON] = strawberry.UNSET
|
|
454
449
|
|
|
455
450
|
|
|
456
451
|
@strawberry.input
|
|
457
|
-
class
|
|
458
|
-
|
|
459
|
-
service_id: str
|
|
460
|
-
zone_index: int
|
|
461
|
-
zone: UpdateServiceZoneInput
|
|
462
|
-
|
|
452
|
+
class UpdateServiceLevelInput(utils.BaseInput):
|
|
453
|
+
"""Input for updating a service level."""
|
|
463
454
|
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
currency: utils.CurrencyCodeEnum
|
|
469
|
-
zones: typing.List[ServiceZoneInput]
|
|
455
|
+
id: typing.Optional[str] = strawberry.UNSET
|
|
456
|
+
service_name: typing.Optional[str] = strawberry.UNSET
|
|
457
|
+
service_code: typing.Optional[str] = strawberry.UNSET
|
|
458
|
+
currency: typing.Optional[utils.CurrencyCodeEnum] = strawberry.UNSET
|
|
470
459
|
|
|
471
460
|
carrier_service_code: typing.Optional[str] = strawberry.UNSET
|
|
472
461
|
description: typing.Optional[str] = strawberry.UNSET
|
|
@@ -483,20 +472,16 @@ class CreateServiceLevelInput(utils.BaseInput):
|
|
|
483
472
|
min_weight: typing.Optional[float] = strawberry.UNSET
|
|
484
473
|
max_weight: typing.Optional[float] = strawberry.UNSET
|
|
485
474
|
weight_unit: typing.Optional[utils.WeightUnitEnum] = strawberry.UNSET
|
|
475
|
+
max_volume: typing.Optional[float] = strawberry.UNSET
|
|
476
|
+
cost: typing.Optional[float] = strawberry.UNSET
|
|
486
477
|
|
|
487
478
|
domicile: typing.Optional[bool] = strawberry.UNSET
|
|
488
479
|
international: typing.Optional[bool] = strawberry.UNSET
|
|
489
480
|
|
|
490
|
-
|
|
491
|
-
|
|
481
|
+
zone_ids: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
482
|
+
surcharge_ids: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
492
483
|
|
|
493
|
-
|
|
494
|
-
class UpdateServiceLevelInput(CreateServiceLevelInput):
|
|
495
|
-
id: typing.Optional[str] = strawberry.UNSET
|
|
496
|
-
service_name: typing.Optional[str] = strawberry.UNSET
|
|
497
|
-
service_code: typing.Optional[str] = strawberry.UNSET
|
|
498
|
-
currency: typing.Optional[utils.CurrencyCodeEnum] = strawberry.UNSET
|
|
499
|
-
zones: typing.Optional[typing.List[UpdateServiceZoneInput]] = strawberry.UNSET
|
|
484
|
+
metadata: typing.Optional[utils.JSON] = strawberry.UNSET
|
|
500
485
|
|
|
501
486
|
|
|
502
487
|
@strawberry.input
|
|
@@ -504,6 +489,9 @@ class CreateRateSheetMutationInput(utils.BaseInput):
|
|
|
504
489
|
name: str
|
|
505
490
|
carrier_name: utils.CarrierNameEnum
|
|
506
491
|
services: typing.Optional[typing.List[CreateServiceLevelInput]] = strawberry.UNSET
|
|
492
|
+
zones: typing.Optional[typing.List["SharedZoneInput"]] = strawberry.UNSET
|
|
493
|
+
surcharges: typing.Optional[typing.List["SharedSurchargeInput"]] = strawberry.UNSET
|
|
494
|
+
service_rates: typing.Optional[typing.List["ServiceRateInput"]] = strawberry.UNSET
|
|
507
495
|
carriers: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
508
496
|
metadata: typing.Optional[utils.JSON] = strawberry.UNSET
|
|
509
497
|
|
|
@@ -513,34 +501,14 @@ class UpdateRateSheetMutationInput(utils.BaseInput):
|
|
|
513
501
|
id: str
|
|
514
502
|
name: typing.Optional[str] = strawberry.UNSET
|
|
515
503
|
services: typing.Optional[typing.List[UpdateServiceLevelInput]] = strawberry.UNSET
|
|
504
|
+
zones: typing.Optional[typing.List["SharedZoneInput"]] = strawberry.UNSET
|
|
505
|
+
surcharges: typing.Optional[typing.List["SharedSurchargeInput"]] = strawberry.UNSET
|
|
506
|
+
service_rates: typing.Optional[typing.List["ServiceRateInput"]] = strawberry.UNSET
|
|
516
507
|
carriers: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
517
508
|
remove_missing_services: typing.Optional[bool] = strawberry.UNSET
|
|
518
509
|
metadata: typing.Optional[utils.JSON] = strawberry.UNSET
|
|
519
510
|
|
|
520
511
|
|
|
521
|
-
@strawberry.input
|
|
522
|
-
class UpdateRateSheetZoneCellMutationInput(utils.BaseInput):
|
|
523
|
-
id: str # Rate sheet ID
|
|
524
|
-
service_id: str # Service level ID
|
|
525
|
-
zone_id: str # Zone ID
|
|
526
|
-
field: str # Field name to update
|
|
527
|
-
value: utils.JSON # New value
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
@strawberry.input
|
|
531
|
-
class CellUpdate(utils.BaseInput):
|
|
532
|
-
service_id: str
|
|
533
|
-
zone_id: str
|
|
534
|
-
field: str
|
|
535
|
-
value: utils.JSON
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
@strawberry.input
|
|
539
|
-
class BatchUpdateRateSheetCellsMutationInput(utils.BaseInput):
|
|
540
|
-
id: str # Rate sheet ID
|
|
541
|
-
updates: typing.List[CellUpdate]
|
|
542
|
-
|
|
543
|
-
|
|
544
512
|
@strawberry.input
|
|
545
513
|
class DeleteRateSheetServiceMutationInput(utils.BaseInput):
|
|
546
514
|
rate_sheet_id: str
|
|
@@ -610,3 +578,164 @@ class MetafieldFilter(utils.Paginated):
|
|
|
610
578
|
key: typing.Optional[str] = strawberry.UNSET
|
|
611
579
|
type: typing.Optional[utils.MetafieldTypeEnum] = strawberry.UNSET
|
|
612
580
|
is_required: typing.Optional[bool] = strawberry.UNSET
|
|
581
|
+
|
|
582
|
+
|
|
583
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
584
|
+
# SHARED ZONE INPUTS (Rate Sheet Level)
|
|
585
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
@strawberry.input
|
|
589
|
+
class SharedZoneInput(utils.BaseInput):
|
|
590
|
+
"""Input for creating/updating a shared zone at the RateSheet level."""
|
|
591
|
+
|
|
592
|
+
label: str
|
|
593
|
+
id: typing.Optional[str] = strawberry.UNSET
|
|
594
|
+
country_codes: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
595
|
+
postal_codes: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
596
|
+
cities: typing.Optional[typing.List[str]] = strawberry.UNSET
|
|
597
|
+
transit_days: typing.Optional[int] = strawberry.UNSET
|
|
598
|
+
transit_time: typing.Optional[float] = strawberry.UNSET
|
|
599
|
+
radius: typing.Optional[float] = strawberry.UNSET
|
|
600
|
+
latitude: typing.Optional[float] = strawberry.UNSET
|
|
601
|
+
longitude: typing.Optional[float] = strawberry.UNSET
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
@strawberry.input
|
|
605
|
+
class AddSharedZoneMutationInput(utils.BaseInput):
|
|
606
|
+
"""Add a new shared zone to a rate sheet."""
|
|
607
|
+
|
|
608
|
+
rate_sheet_id: str
|
|
609
|
+
zone: SharedZoneInput
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
@strawberry.input
|
|
613
|
+
class UpdateSharedZoneMutationInput(utils.BaseInput):
|
|
614
|
+
"""Update a shared zone in a rate sheet."""
|
|
615
|
+
|
|
616
|
+
rate_sheet_id: str
|
|
617
|
+
zone_id: str
|
|
618
|
+
zone: SharedZoneInput
|
|
619
|
+
|
|
620
|
+
|
|
621
|
+
@strawberry.input
|
|
622
|
+
class DeleteSharedZoneMutationInput(utils.BaseInput):
|
|
623
|
+
"""Delete a shared zone from a rate sheet."""
|
|
624
|
+
|
|
625
|
+
rate_sheet_id: str
|
|
626
|
+
zone_id: str
|
|
627
|
+
|
|
628
|
+
|
|
629
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
630
|
+
# SHARED SURCHARGE INPUTS (Rate Sheet Level)
|
|
631
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
632
|
+
|
|
633
|
+
|
|
634
|
+
@strawberry.input
|
|
635
|
+
class SharedSurchargeInput(utils.BaseInput):
|
|
636
|
+
"""Input for creating/updating a shared surcharge at the RateSheet level."""
|
|
637
|
+
|
|
638
|
+
name: str
|
|
639
|
+
amount: float
|
|
640
|
+
id: typing.Optional[str] = strawberry.UNSET
|
|
641
|
+
surcharge_type: typing.Optional[str] = "fixed" # "fixed" or "percentage"
|
|
642
|
+
cost: typing.Optional[float] = strawberry.UNSET # COGS
|
|
643
|
+
active: typing.Optional[bool] = True
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
@strawberry.input
|
|
647
|
+
class AddSharedSurchargeMutationInput(utils.BaseInput):
|
|
648
|
+
"""Add a new shared surcharge to a rate sheet."""
|
|
649
|
+
|
|
650
|
+
rate_sheet_id: str
|
|
651
|
+
surcharge: SharedSurchargeInput
|
|
652
|
+
|
|
653
|
+
|
|
654
|
+
@strawberry.input
|
|
655
|
+
class UpdateSharedSurchargeMutationInput(utils.BaseInput):
|
|
656
|
+
"""Update a shared surcharge in a rate sheet."""
|
|
657
|
+
|
|
658
|
+
rate_sheet_id: str
|
|
659
|
+
surcharge_id: str
|
|
660
|
+
surcharge: SharedSurchargeInput
|
|
661
|
+
|
|
662
|
+
|
|
663
|
+
@strawberry.input
|
|
664
|
+
class DeleteSharedSurchargeMutationInput(utils.BaseInput):
|
|
665
|
+
"""Delete a shared surcharge from a rate sheet."""
|
|
666
|
+
|
|
667
|
+
rate_sheet_id: str
|
|
668
|
+
surcharge_id: str
|
|
669
|
+
|
|
670
|
+
|
|
671
|
+
@strawberry.input
|
|
672
|
+
class BatchUpdateSurchargesMutationInput(utils.BaseInput):
|
|
673
|
+
"""Batch update multiple surcharges in a rate sheet."""
|
|
674
|
+
|
|
675
|
+
rate_sheet_id: str
|
|
676
|
+
surcharges: typing.List[SharedSurchargeInput]
|
|
677
|
+
|
|
678
|
+
|
|
679
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
680
|
+
# SERVICE RATE INPUTS (Service-Zone Rate Mapping)
|
|
681
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
682
|
+
|
|
683
|
+
|
|
684
|
+
@strawberry.input
|
|
685
|
+
class ServiceRateInput(utils.BaseInput):
|
|
686
|
+
"""Input for a service-zone rate mapping."""
|
|
687
|
+
|
|
688
|
+
service_id: str
|
|
689
|
+
zone_id: str
|
|
690
|
+
rate: float
|
|
691
|
+
cost: typing.Optional[float] = strawberry.UNSET # COGS
|
|
692
|
+
min_weight: typing.Optional[float] = strawberry.UNSET
|
|
693
|
+
max_weight: typing.Optional[float] = strawberry.UNSET
|
|
694
|
+
transit_days: typing.Optional[int] = strawberry.UNSET
|
|
695
|
+
transit_time: typing.Optional[float] = strawberry.UNSET
|
|
696
|
+
|
|
697
|
+
|
|
698
|
+
@strawberry.input
|
|
699
|
+
class UpdateServiceRateMutationInput(utils.BaseInput):
|
|
700
|
+
"""Update a single service-zone rate."""
|
|
701
|
+
|
|
702
|
+
rate_sheet_id: str
|
|
703
|
+
service_id: str
|
|
704
|
+
zone_id: str
|
|
705
|
+
rate: float
|
|
706
|
+
cost: typing.Optional[float] = strawberry.UNSET
|
|
707
|
+
min_weight: typing.Optional[float] = strawberry.UNSET
|
|
708
|
+
max_weight: typing.Optional[float] = strawberry.UNSET
|
|
709
|
+
transit_days: typing.Optional[int] = strawberry.UNSET
|
|
710
|
+
transit_time: typing.Optional[float] = strawberry.UNSET
|
|
711
|
+
|
|
712
|
+
|
|
713
|
+
@strawberry.input
|
|
714
|
+
class BatchUpdateServiceRatesMutationInput(utils.BaseInput):
|
|
715
|
+
"""Batch update multiple service-zone rates."""
|
|
716
|
+
|
|
717
|
+
rate_sheet_id: str
|
|
718
|
+
rates: typing.List[ServiceRateInput]
|
|
719
|
+
|
|
720
|
+
|
|
721
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
722
|
+
# SERVICE ZONE/SURCHARGE ASSIGNMENT INPUTS
|
|
723
|
+
# ─────────────────────────────────────────────────────────────────────────────
|
|
724
|
+
|
|
725
|
+
|
|
726
|
+
@strawberry.input
|
|
727
|
+
class UpdateServiceZoneIdsMutationInput(utils.BaseInput):
|
|
728
|
+
"""Update zone_ids for a service level."""
|
|
729
|
+
|
|
730
|
+
rate_sheet_id: str
|
|
731
|
+
service_id: str
|
|
732
|
+
zone_ids: typing.List[str]
|
|
733
|
+
|
|
734
|
+
|
|
735
|
+
@strawberry.input
|
|
736
|
+
class UpdateServiceSurchargeIdsMutationInput(utils.BaseInput):
|
|
737
|
+
"""Update surcharge_ids for a service level."""
|
|
738
|
+
|
|
739
|
+
rate_sheet_id: str
|
|
740
|
+
service_id: str
|
|
741
|
+
surcharge_ids: typing.List[str]
|