Skip to content
Snippets Groups Projects
Commit 9155a30a authored by Lorenz Zahn's avatar Lorenz Zahn
Browse files

added page for projects without department

parent c1b75562
No related branches found
No related tags found
No related merge requests found
......@@ -13,7 +13,7 @@
{% for department in departments %}
<tr>
{% if not department.id %}
<td><a href=""></a>Ohne Zuweisung</td>
<td><a href="{% url 'vkk:workhours:accounting:periods:projects_open_no_department' view.kwargs.pk %}">{% translate "No Department" %}</a></td>
{% else %}
<td><a href="{% url 'vkk:workhours:accounting:periods:projects_open' view.kwargs.pk department.id %}">{{ department.name }}</a></td>
{% endif %}
......
......@@ -2,7 +2,7 @@ from django.urls import path
from django.utils.translation import gettext_lazy as _
from django.forms import modelform_factory
from ..views import *
from .views import AccountingPeriodDetailView, AccountingPeriodDetailDepartmentView
from .views import AccountingPeriodDetailView, AccountingPeriodDetailDepartmentView, AccountingPeriodDetailNoDepartmentView
from vkk.workhours.models import Period
from vkk.generic.forms import CustomDateInput, CustomDateTimeInput
......@@ -36,6 +36,11 @@ urlpatterns = [
AccountingPeriodDetailDepartmentView.as_view(),
name='projects_open'
),
path(
_('<int:pk>/details/projects_open_by_department/'),
AccountingPeriodDetailNoDepartmentView.as_view(),
name='projects_open_no_department'
),
path(
_('create/'),
AccountingCreateView.as_view(**model, **form_class),
......
......@@ -235,3 +235,158 @@ class AccountingPeriodDetailDepartmentView(AccountingDetailView):
context["projects_open"] = projects_open
context["projects_closed"] = projects_closed
return context
class AccountingPeriodDetailNoDepartmentView(AccountingDetailView):
model = Period
fields = ['start', 'end', 'dead_line', 'dead_line_final']
template_name = "vkk/workhours/accounting/period/projects.html"
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
projects_open = Project.objects.raw(" \
WITH selected_period AS ( \
SELECT \
vkk_period.id AS period_id, \
vkk_period.start AS period_start, \
vkk_period.end AS period_end \
FROM vkk_period \
WHERE vkk_period.id = %s \
), \
filtered_projects AS ( \
SELECT \
selected_period.period_id, \
vkk_project.id, \
vkk_project.invoice_number, \
vkk_project.name, \
vkk_project.contractor, \
vkk_project.start, \
vkk_project.end, \
vkk_project.department_id \
FROM vkk_project, selected_period \
WHERE \
selected_period.period_end >= vkk_project.start \
AND selected_period.period_start <= vkk_project.end \
AND vkk_project.department_id IS NULL \
), \
closures AS ( \
SELECT \
vkk_periodclosure.project_assignment_id, \
vkk_periodclosure.is_closed_manager \
FROM \
vkk_periodclosure JOIN selected_period \
ON vkk_periodclosure.period_id = selected_period.period_id \
), \
not_closed_assignments AS ( \
SELECT \
vkk_projectassignment.id AS assignment_id, \
vkk_projectassignment.project_id \
FROM \
vkk_projectassignment LEFT JOIN closures \
ON vkk_projectassignment.id = closures.project_assignment_id \
WHERE \
closures.is_closed_manager IS NULL \
OR closures.is_closed_manager = FALSE \
) \
SELECT \
p.id, \
p.invoice_number, \
p.name, \
p.contractor, \
p.start, \
p.end, \
p.department_id \
FROM \
filtered_projects p \
WHERE \
EXISTS ( \
SELECT assignment_id \
FROM not_closed_assignments c \
WHERE \
c.project_id = p.id \
) \
ORDER BY p.invoice_number;",
[self.kwargs['pk']]
)
projects_closed = Project.objects.raw(" \
WITH selected_period AS ( \
SELECT \
vkk_period.id AS period_id, \
vkk_period.start AS period_start, \
vkk_period.end AS period_end \
FROM vkk_period \
WHERE vkk_period.id = %s \
), \
filtered_projects AS ( \
SELECT \
selected_period.period_id, \
vkk_project.id, \
vkk_project.invoice_number, \
vkk_project.name, \
vkk_project.contractor, \
vkk_project.start, \
vkk_project.end, \
vkk_project.department_id, \
selected_period.period_start, \
selected_period.period_end \
FROM vkk_project, selected_period \
WHERE \
selected_period.period_end >= vkk_project.start \
AND selected_period.period_start <= vkk_project.end \
AND vkk_project.department_id IS NULL \
), \
closures AS ( \
SELECT \
vkk_periodclosure.project_assignment_id, \
vkk_periodclosure.is_closed_manager \
FROM \
vkk_periodclosure JOIN selected_period \
ON vkk_periodclosure.period_id = selected_period.period_id \
), \
not_closed_assignments AS ( \
SELECT \
vkk_projectassignment.id AS assignment_id, \
vkk_projectassignment.project_id \
FROM \
vkk_projectassignment LEFT JOIN closures \
ON vkk_projectassignment.id = closures.project_assignment_id \
WHERE \
closures.is_closed_manager IS NULL \
OR closures.is_closed_manager = FALSE \
) \
SELECT \
p.id, \
p.invoice_number, \
p.name, \
p.contractor, \
p.start, \
p.end, \
p.department_id, \
CASE \
WHEN EXISTS ( \
SELECT 1 \
FROM vkk_receipt \
WHERE \
p.id = vkk_receipt.project_id \
AND p.period_start = vkk_receipt.start \
AND p.period_end = vkk_receipt.end \
) THEN TRUE \
ELSE FALSE \
END AS exists_receipt \
FROM \
filtered_projects p \
WHERE \
NOT EXISTS ( \
SELECT assignment_id \
FROM not_closed_assignments c \
WHERE \
c.project_id = p.id \
) \
ORDER BY p.invoice_number;",
[self.kwargs['pk']]
)
context["department"] = None
context["projects_open"] = projects_open
context["projects_closed"] = projects_closed
return context
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment