Reports
This commit is contained in:
47
project/main/views/complex_form/reports_state.py
Normal file
47
project/main/views/complex_form/reports_state.py
Normal file
@ -0,0 +1,47 @@
|
||||
from dataclasses import dataclass
|
||||
|
||||
from project.main.views.complex_form.state_models import CheckboxState, SelectState
|
||||
|
||||
|
||||
@dataclass
|
||||
class ReportsState:
|
||||
enabled: CheckboxState
|
||||
cash_conformity: CheckboxState
|
||||
days_between_cc: SelectState
|
||||
scan_2nd_bardcode: CheckboxState
|
||||
allow_empty_cashbag: CheckboxState
|
||||
reports_builder: CheckboxState
|
||||
tax_reports: CheckboxState
|
||||
transaction_list: CheckboxState
|
||||
reports_generator: CheckboxState
|
||||
technical_center_reports: CheckboxState
|
||||
dispense_list: CheckboxState
|
||||
|
||||
@staticmethod
|
||||
def from_form(values: dict[str, str]) -> "ReportsState":
|
||||
print(values)
|
||||
return ReportsState(
|
||||
enabled=CheckboxState(checked=values.get("reports") == "on"),
|
||||
cash_conformity=CheckboxState(checked=values.get("cash_conformity") == "on"),
|
||||
days_between_cc=SelectState(value=values.get("days_between_cc")),
|
||||
scan_2nd_bardcode=CheckboxState(checked=values.get("scan_2nd_bardcode") == "on"),
|
||||
allow_empty_cashbag=CheckboxState(checked=values.get("allow_empty_cashbag") == "on"),
|
||||
reports_builder=CheckboxState(checked=values.get("reports_builder") == "on"),
|
||||
tax_reports=CheckboxState(checked=values.get("tax_reports") == "on"),
|
||||
transaction_list=CheckboxState(checked=values.get("transaction_list") == "on"),
|
||||
reports_generator=CheckboxState(checked=values.get("reports_generator") == "on"),
|
||||
technical_center_reports=CheckboxState(checked=values.get("technical_center_reports") == "on"),
|
||||
dispense_list=CheckboxState(checked=values.get("dispense_list") == "on"),
|
||||
)
|
||||
|
||||
def control_state(self) -> None:
|
||||
self.cash_conformity.enabled = self.enabled.checked
|
||||
self.days_between_cc.enabled = self.cash_conformity.enabled and self.cash_conformity.checked
|
||||
self.scan_2nd_bardcode.enabled = self.cash_conformity.enabled and self.cash_conformity.checked
|
||||
self.allow_empty_cashbag.enabled = self.enabled.checked
|
||||
self.reports_builder.enabled = self.enabled.checked
|
||||
self.tax_reports.enabled = self.enabled.checked
|
||||
self.transaction_list.enabled = self.enabled.checked
|
||||
self.reports_generator.enabled = self.enabled.checked
|
||||
self.technical_center_reports.enabled = self.enabled.checked
|
||||
self.dispense_list.enabled = self.enabled.checked
|
||||
92
project/main/views/complex_form/route_module_state.py
Normal file
92
project/main/views/complex_form/route_module_state.py
Normal file
@ -0,0 +1,92 @@
|
||||
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
|
||||
@ -13,55 +13,3 @@ class SelectState:
|
||||
value: str = None
|
||||
visible: bool = True
|
||||
enabled: bool = True
|
||||
|
||||
|
||||
@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
|
||||
custom_forms_in_routing: 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"
|
||||
),
|
||||
custom_forms_in_routing=CheckboxState(
|
||||
checked=values.get("custom_forms_in_routing") == "on"
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
@dataclass
|
||||
class FormState:
|
||||
route_module: RouteModuleState
|
||||
|
||||
@ -1,43 +1,23 @@
|
||||
from dataclasses import dataclass
|
||||
from typing import Any
|
||||
|
||||
from django.core.handlers.wsgi import WSGIRequest
|
||||
from django.http import HttpResponse
|
||||
from django.views.generic import TemplateView
|
||||
|
||||
from project.main.views.complex_form.state_models import CheckboxState, FormState, SelectState, RouteModuleState
|
||||
from project.main.views.complex_form.reports_state import ReportsState
|
||||
from project.main.views.complex_form.route_module_state import RouteModuleState
|
||||
from project.main.views.demo_view_base import DemoViewBase
|
||||
|
||||
|
||||
@dataclass
|
||||
class FormState:
|
||||
route_module: RouteModuleState
|
||||
reports: ReportsState
|
||||
|
||||
|
||||
# def control_state(state: FormState) -> None:
|
||||
# state.smart_routing.enabled = state.route_module.checked
|
||||
# state.geo_routing.enabled = state.route_module.checked
|
||||
# state.warehouse.enabled = state.route_module.checked
|
||||
# state.custom_forms_in_routing.enabled = state.route_module.checked
|
||||
#
|
||||
# state.predictive_pickup.visible = (
|
||||
# state.smart_routing.checked and state.smart_routing.enabled
|
||||
# )
|
||||
# state.automatic_planning.visible = (
|
||||
# state.smart_routing.checked and state.smart_routing.enabled
|
||||
# )
|
||||
# # state.prekitting_to_box.visible = (
|
||||
# # state.use_packing_model_per_route.enabled
|
||||
# # and state.use_packing_model_per_route.checked
|
||||
# # )
|
||||
# # state.prekitting_to_pallet.visible = (
|
||||
# # state.use_packing_model_per_route.enabled
|
||||
# # and state.use_packing_model_per_route.checked
|
||||
# # )
|
||||
# # state.real_time_stock.visible = (
|
||||
# # state.use_packing_model_per_route.enabled
|
||||
# # and state.use_packing_model_per_route.checked
|
||||
# # )
|
||||
# state.end_warehouse_tracking.visible = state.warehouse.checked
|
||||
#
|
||||
# print(state)
|
||||
# print("-" * 100)
|
||||
def control_state(self) -> None:
|
||||
self.route_module.control_state()
|
||||
self.reports.control_state()
|
||||
|
||||
|
||||
class ComplexFormView(DemoViewBase):
|
||||
@ -49,9 +29,10 @@ class ComplexFormView(DemoViewBase):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
||||
state = FormState(
|
||||
route_module=RouteModuleState.from_form(values={})
|
||||
route_module=RouteModuleState.from_form(values={}),
|
||||
reports=ReportsState.from_form(values={}),
|
||||
)
|
||||
# control_state(state)
|
||||
state.control_state()
|
||||
|
||||
context.update(
|
||||
{
|
||||
@ -64,19 +45,29 @@ class ComplexFormView(DemoViewBase):
|
||||
...
|
||||
|
||||
|
||||
class ComplexFormHandleView(TemplateView):
|
||||
class RouteModuleHandleView(TemplateView):
|
||||
template_name = "main/complex_form/route_module.html"
|
||||
|
||||
def post(self, request: WSGIRequest, *args, **kwargs) -> HttpResponse:
|
||||
print(request.POST)
|
||||
state = FormState(
|
||||
route_module=RouteModuleState.from_form(values=request.POST),
|
||||
)
|
||||
# state = route_module_form_to_state(values=request.POST)
|
||||
# control_state(state)
|
||||
state = RouteModuleState.from_form(values=request.POST)
|
||||
state.control_state()
|
||||
|
||||
return self.render_to_response(
|
||||
context={
|
||||
"form_state": state,
|
||||
"state": state,
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
class ReportsHandleView(TemplateView):
|
||||
template_name = "main/complex_form/reports.html"
|
||||
|
||||
def post(self, request: WSGIRequest, *args, **kwargs) -> HttpResponse:
|
||||
state = ReportsState.from_form(values=request.POST)
|
||||
state.control_state()
|
||||
|
||||
return self.render_to_response(
|
||||
context={
|
||||
"state": state,
|
||||
}
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user