93 lines
3.6 KiB
Python
93 lines
3.6 KiB
Python
from dataclasses import dataclass
|
|
|
|
from project.main.views.complex_form.state_models import CheckboxState, SelectState
|
|
|
|
|
|
@dataclass
|
|
class RouteModuleState:
|
|
enabled: CheckboxState
|
|
smart_routing: CheckboxState
|
|
predictive_pickup: CheckboxState
|
|
automatic_planning: CheckboxState
|
|
geo_routing: CheckboxState
|
|
packing_model: SelectState
|
|
prekitting_to_box: CheckboxState
|
|
prekitting_to_pallet: CheckboxState
|
|
real_time_stock: CheckboxState
|
|
warehouse: CheckboxState
|
|
end_warehouse_tracking: CheckboxState
|
|
pick_and_pack_application: CheckboxState
|
|
custom_forms_in_routing: CheckboxState
|
|
money_bag_tracking: CheckboxState
|
|
|
|
@staticmethod
|
|
def from_form(values: dict[str, str]) -> "RouteModuleState":
|
|
return RouteModuleState(
|
|
enabled=CheckboxState(checked=values.get("route_module") == "on"),
|
|
smart_routing=CheckboxState(checked=values.get("smart_routing") == "on"),
|
|
predictive_pickup=CheckboxState(
|
|
checked=values.get("predictive_pickup") == "on"
|
|
),
|
|
automatic_planning=CheckboxState(
|
|
checked=values.get("automatic_planning") == "on"
|
|
),
|
|
geo_routing=CheckboxState(checked=values.get("geo_routing") == "on"),
|
|
packing_model=SelectState(value=values.get("packing_model")),
|
|
prekitting_to_box=CheckboxState(
|
|
checked=values.get("prekitting_to_box") == "on"
|
|
),
|
|
prekitting_to_pallet=CheckboxState(
|
|
checked=values.get("prekitting_to_pallet") == "on"
|
|
),
|
|
real_time_stock=CheckboxState(
|
|
checked=values.get("real_time_stock") == "on"
|
|
),
|
|
warehouse=CheckboxState(checked=values.get("warehouse") == "on"),
|
|
end_warehouse_tracking=CheckboxState(
|
|
checked=values.get("end_warehouse_tracking") == "on"
|
|
),
|
|
pick_and_pack_application=CheckboxState(
|
|
checked=values.get("pick_and_pack_application") == "on"
|
|
),
|
|
custom_forms_in_routing=CheckboxState(
|
|
checked=values.get("custom_forms_in_routing") == "on"
|
|
),
|
|
money_bag_tracking=CheckboxState(
|
|
checked=values.get("money_bag_tracking") == "on"
|
|
),
|
|
)
|
|
|
|
def control_state(self) -> None:
|
|
self.smart_routing.enabled = self.enabled.checked
|
|
self.geo_routing.enabled = self.enabled.checked
|
|
self.warehouse.enabled = self.enabled.checked
|
|
self.custom_forms_in_routing.enabled = self.enabled.checked
|
|
|
|
self.predictive_pickup.visible = (
|
|
self.smart_routing.checked and self.smart_routing.enabled
|
|
)
|
|
self.automatic_planning.visible = (
|
|
self.smart_routing.checked and self.smart_routing.enabled
|
|
)
|
|
self.end_warehouse_tracking.visible = (
|
|
self.warehouse.checked and self.warehouse.enabled
|
|
)
|
|
self.pick_and_pack_application.visible = (
|
|
self.warehouse.checked and self.warehouse.enabled
|
|
)
|
|
|
|
if not self.enabled.checked:
|
|
self.packing_model.value = None
|
|
|
|
self.packing_model.enabled = self.enabled.checked
|
|
self.prekitting_to_box.visible = (
|
|
self.packing_model.enabled and self.packing_model.value
|
|
)
|
|
self.prekitting_to_pallet.visible = (
|
|
self.packing_model.enabled and self.packing_model.value
|
|
)
|
|
self.real_time_stock.visible = (
|
|
self.packing_model.enabled and self.packing_model.value
|
|
)
|
|
self.money_bag_tracking.enabled = self.enabled.checked
|