فهرست منبع

Detailsanpassungen Matthias

gc-server3 2 روز پیش
والد
کامیت
94b7c2d3e9

+ 4 - 0
app/routes.py

@@ -199,6 +199,7 @@ async def post_forderungen_details(
     request: Request,
     primary_key: str,
     source: Annotated[str, Form()],
+    redirect: Annotated[str, Form()],
     db: Session = Depends(get_session),
 ):
     pkey = convert_primary_key("forderungen", primary_key)
@@ -253,6 +254,9 @@ async def post_forderungen_details(
         print(q.rowcount)
     db.commit()
     template_context = get_template_context(request, pkey, db)
+
+    if redirect:
+        return RedirectResponse(url=redirect, status_code=302)
     if source == "comments":
         return templates.TemplateResponse(request, "base/chat_container.html", template_context)
     return templates.TemplateResponse(request, "forderungen/details/details_formular.html", template_context)

+ 12 - 4
static/assets/css/redesign.css

@@ -218,7 +218,7 @@
   /* Tabellenlinks neutral/grau */
   
   .gc-table a {
-    color: #4b5563 !important;
+    color: #008 !important;
     text-decoration: none;
     font-weight: 600;
   }
@@ -296,19 +296,19 @@
     border-color: #dbe3ee;
   }
   
-  .gc-badge-warning {
+  .gc-badge-warning, .gc-badge-1 {
     background: #f6ecd2;
     color: #8a6a1f;
     border-color: #ead9a7;
   }
   
-  .gc-badge-danger {
+  .gc-badge-danger, .gc-badge-2 {
     background: #fee2e2;
     color: #991b1b;
     border-color: #fecaca;
   }
   
-  .gc-badge-success {
+  .gc-badge-success, .gc-badge-0 {
     background: #dcfce7;
     color: #166534;
     border-color: #bbf7d0;
@@ -1063,6 +1063,10 @@
   transform: translateY(-1px);
 }
 
+.btn-warning {
+  background-color: #e80;
+}
+
 /* =========================================================
    DETAILSEITE: SEITE BEI AUFGEKLAPPTEN BOXEN SCROLLBAR
 ========================================================= */
@@ -1172,4 +1176,8 @@ body {
 
 .gc-detail-main .accordion-body::-webkit-scrollbar-thumb:hover {
   background: #94a3b8;
+}
+
+.gc-link {
+  color: #008;
 }

+ 21 - 17
templates/forderungen/details/details.html

@@ -4,41 +4,45 @@
 <br>
 <h2>{{ forderungen_details[0].Beleg_Text }}</h2>
 <br>
+<div class="col-1">
+<button class="btn btn-warning" hx-get="{{ request.headers.referer }}" hx-trigger="click" hx-push-url="true"
+  hx-swap="innerHTML" hx-target="body">Zurück</button>
+</div>
 
 <div class="row g-3">
 
-<div class="col-3">
+  <div class="col-3">
 
-  {%include 'forderungen/details/details_uebersicht.html' %}
+    {%include 'forderungen/details/details_uebersicht.html' %}
 
-</div>
+  </div>
 
 
-<div class="col-5">
+  <div class="col-5">
 
-  {%include 'base/chat_container.html' %}
+    {%include 'base/chat_container.html' %}
 
-  <br>
-  <br>
+    <br>
+    <br>
 
-  <h3>Dateien</h3>
+    <h3>Dateien</h3>
 
-  {%include 'forderungen/details/details_dateien.html' %}
+    {%include 'forderungen/details/details_dateien.html' %}
 
-</div>
+  </div>
 
-<div class="col-4">
+  <div class="col-4">
 
-{%include 'forderungen/details/details_formular.html' %}
+    {%include 'forderungen/details/details_formular.html' %}
 
-<br>
-<br>
+    <br>
+    <br>
 
-<h3>Auftragspositionen</h3>
+    <h3>Auftragspositionen</h3>
 
-{%include 'forderungen/details/details_positionen.html' %}
+    {%include 'forderungen/details/details_positionen.html' %}
 
-</div>
+  </div>
 </div>
 
 <br>

+ 3 - 1
templates/forderungen/details/details_formular.html

@@ -209,7 +209,9 @@
   </div>
 
   <div class="col-12">
-    <button class="btn btn-primary" hx-post="" hx-trigger="click" hx-swap="outerHTML" hx-target="#formular" hx-push-url="false">Speichern</button>
+    <button class="btn btn-warning" hx-post="" hx-trigger="click" hx-swap="outerHTML" hx-target="#formular" hx-push-url="false">Speichern</button>
+    <button class="btn btn-warning" hx-post="" hx-trigger="click" hx-swap="innerHTML" hx-target="body" hx-push-url="true" hx-vals='{"redirect": "{{ request.headers.referer }}"}'">Speichern &amp; Zurück</button>
+    <button class="btn btn-warning" hx-get="{{ request.headers.referer }}" hx-trigger="click" hx-swap="innerHTML" hx-target="body" hx-push-url="true">Zurück</button>
   </div>
 
 

+ 2 - 2
templates/forderungen/details/details_uebersicht.html

@@ -26,8 +26,8 @@
       </tr>
 
       <tr>
-        <td><strong>Bereich:</strong></td>
-        <td>{{row.Bereich }}</td>
+        <td><strong>Abteilung:</strong></td>
+        <td>{{row.Abteilung }}</td>
       </tr>
 
     </table>

+ 1 - 1
templates/forderungen/liste/config/liste_filter.csv

@@ -5,7 +5,7 @@ Abteilung;select;2;;;;;
 Verursacher;select;4;;Verursacher_Text;;;
 RechnungGutschrift;select;2;R/G;Rechnung_Gutschrift;;;
 
-Fahrzeug;select;2;;Fahrzeug_Nr;;;
+Fahrzeug;text;2;;Fahrzeug_Nr;;;
 Kunde;text;4;;Kunde_Text;;;
 Rechnungsnummer;text;2;;Beleg_Nr;;;
 RechnungsdatumVon;date;2;RG-Datum von;Beleg_Datum;;;

+ 1 - 1
templates/forderungen/liste/liste_kopfzeile.html

@@ -5,7 +5,7 @@
         <th>RG-Datum<br>/ Fällig</th>
         <th>Kunde</th>
         <th>offen /<br>Kunde ges.</th>
-        <th>Mahnstufe<br>/ Staffel</th>
+        <th>Mahnstufe<br>/ Tage offen</th>
         <th>Abw.</th>
         <th>Kommentar<br>Fibu</th>
         <th>Kommentar<br>Abteilung</th>

+ 8 - 4
templates/forderungen/liste/liste_zeile.html

@@ -6,10 +6,10 @@
 
   <td>
     <a href="/app/forderungen/liste?Verursacher={{ row.Verursacher_Text|urlencode }}"
-      class="text-decoration-none fw-semibold">
+      class="fw-semibold gc-link">
       {{ row.Verursacher_Text }}
     </a>
-    {% if row.Verursacher_Text == 'N.N.' %}
+    {% if row.Verursacher_Text == '--N.N.' %}
     <span class="gc-badge gc-badge-warning ms-1">offen</span>
     {% endif %}
   </td>
@@ -27,7 +27,7 @@
   </td>
 
   <td class="gc-main-cell">
-    <a class="gc-title text-decoration-none" href="/app/forderungen/liste?Kunde={{ row.Kunde_Text|urlencode }}">
+    <a class="gc-title" href="/app/forderungen/liste?Kunde={{ row.Kunde_Text|urlencode }}">
       {{ row.Kunde_Text }}
     </a>
     <div class="gc-subtitle">
@@ -65,12 +65,16 @@
   </td>
 
   <td>
+    {% if row.Antrag_Nr %}
+    <div class="gc-subtitle">{{ row.Antrag_Art }} {{ row.Antrag_Nr }} vom {{ row.Antrag_Datum|date_format }}<br>{{ row.Antrag_Benutzer_ID }}, Status: {{ row.Antrag_Status }}</div>
+    {% else %}
     <div class="gc-subtitle">{{ row.Kommentar_Abteilung or '' }}</div>
+    {% endif %}
   </td>
 
   <td class="text-end">
     {% if row.Wiedervorlage %}
-    <span class="gc-badge gc-badge-success">{{ row.Wiedervorlage|date_format }}</span>
+    <span class="gc-badge gc-badge-{{ row.Wiedervorlage_Stufe }}">{{ row.Wiedervorlage|date_format }}</span>
     {% endif %}
   </td>
 

+ 11 - 1
templates/forderungen/liste/queries/forderungen_liste.sql

@@ -37,6 +37,10 @@ SELECT [F].[Client_DB]
      , left(isnull([FK].[Kommentar_Abteilung], ''), 50) AS [Kommentar_Abteilung]
      , [K].[Kunde_Email] AS [Kunde_Email]
      , coalesce([FD].[Wiedervorlage], dateadd(DAY, 14, [F].[Beleg_Datum])) AS [Wiedervorlage]
+     , case 
+        when coalesce([FD].[Wiedervorlage], dateadd(DAY, 14, [F].[Beleg_Datum])) < getdate() then '2'
+        when coalesce([FD].[Wiedervorlage], dateadd(DAY, 14, [F].[Beleg_Datum])) < dateadd(day, 4, getdate()) then '1'
+      else '0' end AS [Wiedervorlage_Stufe]
      , CASE
            WHEN [FD].[Reklamation] = 'J' THEN 'Rekl.'
            WHEN [FD].[Versicherung] = 'J' THEN 'Vers.'
@@ -48,11 +52,17 @@ SELECT [F].[Client_DB]
      , isnull([FD].[Bearbeitet], 'N') AS [Bearbeitet]
      , dateadd(DAY, 14, [F].[Beleg_Datum]) AS [Fällig_Datum]
 
+     , [G].[Antrag_Art]
+     , [G].[Antrag_Nr]
+     , [G].[Antrag_Datum]
+     , [G].[Antrag_Benutzer_ID]
+     , [G].[Antrag_Status]
+     , [G].[Letzte_Beantragung]
 FROM [dbo].[Forderungen_Kopf] [F]
          LEFT JOIN [dbo].[Kunden] [K] ON [F].[Kunde_Nr] = [K].[Kunde_Nr] AND [F].[Client_DB] = [K].[Client_DB]
          LEFT JOIN [dbo].[Forderungen_Details] [FD] ON [F].[Client_DB] = [FD].[Client_DB] AND [F].[Beleg_Nr] = [FD].[Beleg_Nr]
          LEFT JOIN [dbo].[Forderungen_Kommentar_letzte] [FK] ON [F].[Client_DB] = [FK].[Client_DB] AND [F].[Beleg_Nr] = [FK].[Beleg_Nr]
-
+         LEFT JOIN [Garantie2] [G] ON [F].[Client_DB] = [G].[Client_DB] AND [F].[Beleg_Nr] = [G].[Beleg_Nr]
 ) AS F
 INNER JOIN [dbo].[Benutzer_Rechte] [BR] ON ([BR].[Benutzer_ID] = {{ BenutzerSelect.selectedOptionValue }} OR BR.Benutzer_ID = '')
 AND [F].[Hauptbetrieb_ID] = [BR].[Hauptbetrieb_ID]