0

Drucklayout Stundenzettel nach Projektpositionen gliedern

Hallo NINOXler, 

ich brauche bitte mal eure Hilfe beim Thema Drucklayout.
In meiner Datenbank haben wir Projekte, Projektpositionen und Zeiterfassung von jedem Mitarbeiter. 
Nun soll ein Stundenzettel für das Projekt generiert werden bei dem die einzelnen Positionen als "Überschriften" dienen und darunter die passenden Datensätze aus der Zeiterfassung aufgelistet und für die Position summiert werden. So wie hier in der alten Excel-Version von meinem Kunden:
 

Hat jemand eine Idee wie man das hinbekommt?
Ich danke euch schonmal für eure Ideen!

4 Antworten

null
    • Basti.1
    • vor 18 Stunden
    • Gemeldet - anzeigen

    und das ganze muss natürlich skalierbar sein auf große Projekte mit über 100 Positionen und entsprechend vielen Zeiterfassungs-Datensätzen.

    • Rafael_Sanchis
    • vor 16 Stunden
    • Gemeldet - anzeigen

    Hi Basti, Something like this ?

      • Basti.1
      • vor 13 Stunden
      • Gemeldet - anzeigen

        Ja, das sieht schon ganz gut aus. Es ist noch nicht genau das was ich brauche aber das lässt sich ja vielleicht anpassen. Ich denke das Schwierige ist das ich ja Datensätze von verschiedenen Mitarbeitern zu jeweils der gleichen Position zuordnen will. In deinem Fall gehören die Datensätze ja immer zum gleichen Mitarbeiter. Aber nen versuch ist es wert. Wie hast du das gemacht?

      • Rafael_Sanchis
      • vor 13 Stunden
      • Gemeldet - anzeigen

       

      let vFrom := date("01.12.2025");
      let vTo := date("31.12.2025");
      let vTbl := ((select 'Planning Data'
              where year('Date Start') = 2025 and month('Date Start') = 12 and 'Status Work' != 3 and
              'Status Work' != 4) order by text('a_Employee Name'.'Employee Name') + format('Date Start', "DD.MM.YYYY"));
      let vObj := vTbl.{
              vDat: format('Date Start', "DD.MMM.YYYY"),
              vDat1: format('Date Finish', "DD.MMM.YYYY"),
              vPrice: format('Weekly Revenue', "€ #,##0.00"),
              vCatg: text('a_Employee Name'.'Employee Name'),
              vAcc: text('a_Project Name'.'Project Name'),
              vHrs: number('Actual Hours'),
              vTxt: Discipline,
              vDatArr: let xDat := 'a_Employee Name'.'Employee Name';
              vTbl['a_Employee Name'.'Employee Name' = xDat].'a_Employee Name'.'Employee Name',
              vSum: let yDat := 'a_Employee Name'.'Employee Name';
              format(sum(vTbl['a_Employee Name'.'Employee Name' = yDat].'Weekly Revenue'), "€ #,##0.00"),
              vTGst: format(sum(vTbl.'Weekly Revenue'), "€ #,##0.00")
          };
      let xArr := [{}][null];
      let xObj := {};
      for i from 0 to cnt(vObj) - 1 do
          xObj := item(vObj, i);
          if i = 0 then
              setItem(xObj, "vSkip", 1)
          else
              if item(vObj, i - 1).text(vDatArr) = xObj.text(vDatArr) then
                  setItem(xObj, "vSkip", 0)
              else
                  setItem(xObj, "vSkip", 1)
              end
          end;
          if i = cnt(vObj) - 1 or xObj.text(vDatArr) != item(vObj, i + 1).text(vDatArr) then
              setItem(xObj, "vSkipSum", 3)
          end;
          xArr := array(xArr, [xObj])
      end;
      let pJson := {
              pName: "Modify by Rafael Sanchis R",
              pPeriod: format(vFrom, "DD.MMM.YYYY") + " – " + format(vTo, "DD.MMM.YYYY"),
              pTbl: xArr
          };
      Employees := importFile(this, printAndSaveRecord(this, "Employee_Report", pJson), "PrintOut.pdf");
      alert("✅ Process completed, PDF report generated")

Content aside

  • vor 13 StundenZuletzt aktiv
  • 4Antworten
  • 19Ansichten
  • 2 Folge bereits