addition of the Inventory in the dienstleistungs page

This commit is contained in:
2026-07-30 12:38:23 +02:00
parent 4e8c5601ee
commit 3d7eed0692
36 changed files with 345 additions and 3 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 MiB

@@ -0,0 +1,168 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 4 0 R /F4 5 0 R /F5 7 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
5 0 obj
<<
/BaseFont /ZapfDingbats /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
6 0 obj
<<
/Contents 15 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
8 0 obj
<<
/Contents 16 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
9 0 obj
<<
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
10 0 obj
<<
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
11 0 obj
<<
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 14 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
12 0 obj
<<
/PageMode /UseNone /Pages 14 0 R /Type /Catalog
>>
endobj
13 0 obj
<<
/Author (Invario System) /CreationDate (D:20260730100236+00'00') /Creator (Invario) /Keywords () /ModDate (D:20260730100236+00'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (Offizielle Audit-Bericht \(DIN 5008\)) /Title (Audit Official Report) /Trapped /False
>>
endobj
14 0 obj
<<
/Count 5 /Kids [ 6 0 R 8 0 R 9 0 R 10 0 R 11 0 R ] /Type /Pages
>>
endobj
15 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1447
>>
stream
GatU3hc&Pn&:Vr4Z&cGbM:"!"G2>grY4S)&*,5;e%-&R)n6I5jX?am7hj(<'G0\)V9`U6e]AJ(pb47/!#_$L`pO3Qj3eNW;$C&AC!E91'As[Hp)a01ZpP`Vo91]:X`WMN'NcCi[/r)+fCPSf",1ARjO(#ILZWps'#*cWFV#6Z-N+]/p`Vm\dV*;]]HUXoUJ_A)d$9+e!B^&@M-LLtCN3.#hS9#c20&?24]iJ_PkZ>`s%uS!ei@eaR`KB@#887I1+Ag-W+Pd>t*/T4A+"-SXRI'ph:+l/_2s\t*\Q4#[b=u`ZB;VnJ[G'hU0i.1K4U"<BS<.F$a^4n;%q_jt4%6h]_PUT+9n+UUCAX/5]>BL6Y*:AU4b\gIjA_tFKf/,C.`geq*8E>sOIK<^J[mH+F)&!#T)V'i__i-"']>8Lekeb]LSn!7#u)\!_lHo]Ph/pEHuPm^'-j[*j'O_9bYG<7DY"tGC39ZkO>W6nncO[!_rRmkcHGUo;o6`=?e'4PAM"6jA"sC0fNdQ3R"4)\U9LVg:P"^[7"O+4,<0]Z:eKTC+Ha(LnJ,SW"oV:O79l6b*f3=:k9MpgYh^-Lj4B&Ce&,^AJk&!3AM71=PM5!qP!(TN>O&;oYE);nmJ+.p0#V@a/Uu\E\G\,KV+W6JGT=^791L=&4I_!L0bFsBTo:;cIhK"_,`[k-,bbkCTo]h6-4HLS"cJEY'hJu\GDtViF'$2?i@ZTjbpZgs@FXi2G+rsc*O8)["sM2YA0&WX=&^+V&'05jVF`n+9OmW7AD*rhN@[,5%3`&QV/9bkWG;JoknMhQNo%*liUHR2GO8_Ga>_H!^'Rk8):)":"A3(-4G2\?9'^?jd!W;\r$\.XJfV+>^TlFrMNbf?Dou(uY0W1,[#r"`=-+&nI/cG82jCo]3B7mMi%]/Z<dtq"I-ua,e?%*f8JULD3mho4BkuL.AuUMUpg?C7iCV_@`g=hcZ-u%9n3YIO5=='eZ6,RUjnLREcrM_-^'p.0/^ePj$G-iZ&kW\1fE%)j%'lD]`W58#=K0N<hAKl`7]Z=r\<!Kbr'TJk1E8IDk34p4.YN;i).j`B#=lJkS9aa,p<@!;].:4(*c\h27eaa)(S-G$mV-9fd=#udLRuR>lM!ag6/BS=53uslV3ueXZ[6g?X:O?>Y`eq^UnmU)VQhP'Z30;SRe<?^[O82ac$(H_nqFcHX-FS=i$%qmW]6s#,1Gd+gT(&i:34HnX[hX#d^cX'$'7@p]34<@r;Aed@XQ@/gC%KYRKd*93(>N-5E17+?L#XE^$chV\Up=!7%+>.\kO*'%@8+Y2rZYg\?&Caa#$N#XA([g1ekL8RG<bL0Y(b3MH_pmZ8Tf?%C`E5U.)sOCD1L2E6Hs'g,-mB7abb.lq'Ss%agk7fO>E[$1LuEhFQPL^.V3G;EYqY6G;%=a*$;7NrP#+&X?c^^;K/Ao-C]'~>endstream
endobj
16 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2611
>>
stream
GauaB962>e&]aA:'K@kNncTCY?Fn*e4-.N-lfaQP0S<ML9;68qMA(L91amBV==-Rtg`)Sp<s:I35@-Q:HU(-uJ]%NdP7V(aLd-=r!gIpH"^m,FiU>cqLV'2Hi#'qrc<CZ)Clk4=dSW%\bCb*?nW%X?.8q`<SgZsKb0ZLA2IGX6\:&b[k5@pgIsN-D04017ceFMmmIPDuK6[/:*kj%s+6[>\/5O.VTF5\T*B7UaLeaWJm6k%T=/H[C=%WHnTSLhii5M#i`BK4MMn:US,mjq9D#%on75uVL5qN^HVJh<i?0LGca-]M>DIcEmE%>G(YKn$tDeDal[5qgbjNWXkf'>+m_;<C<RIH5qea:Was,PA,]\Ri5n)ulX]C5C2Y+).*YZ8Pak(&j\;S->a$7hg;T>]lq_g`Gd/L"nd!C5[`Nr-#mICU=XK[-7AbK)&g0.-b_])W`c$,4Qof9]k8rc/(:9kU<QMZb,.oAa>`7!GM,,d=B75:RDU^@N80NUiG2r;@i1E]u!0U-EGGGud7?S>.WqF--N6WLq"!kE4mP$@;TMC%8,^jVpgZ-:W[Rm&._*CFI)c@W51;b>,WD8S(\d)j'el<_F"ZZ+h/,]\WP`LM`YP^X)Er%omIuk&'<9C<,:I];rEMeo,&Z;=Wh>l?Z4?%:2Le=rBC@3XCI\dT(!U$gI`sA*$>Ad.oV3,A8VKZk(;7%GJu[$ImAdXN`TAba>IM*HcYmm6LJB(7/^f%7@gcW:s/pTiN9!1MRgl(MY_\S'Z[(;[Klcq+2"b.=RfLcHSQQpqsfT3kf3EKoSs6%6?\de^,bi"C85YB8iU)I8"o?F'!^\a9]-lQA@HnC9jW\F%FG\K2-0a[aFak5=(&*5::RGRa0:M<B.]V5N_A-YIfk&@s`LWn!\3*e8N9b:U(?f5/"A6+m$t$S'=!I9RH<rCiI(Wa-iec)GF0[5?`kh)KVAK9TBG"/%?afPRFts@%VEpmW7CMDWA`=iHO8#WS`FLULFmSN-_OEUJifVDCJ!XIa#Z__3u2fnVo-<-lWjl%L=6(lQ58q&7U+u[mC-0DY:h0j/1CFZ.X-WX76"*A(5G8NDHeg2a4o2gopf<:e\BY]hOlrTgKuR_o4Ua-MBLJ;:1/4K6>Y1gI.h63:ul0LdD?cL7>l9S+^VVf9^JUr`?TY\<lmSRL(pm$9rFW548G$%YqUH+,@9D'?1)1o#@W\`#GK.JN"k2<9MMCgpC:d>Jn_<hFAHScr!D7o2;m!K,YH#.%G8Xo"92%$o+U.LNj7eA(Yb$\&XFHY2*>Ais+H`<!.#c'n.NJHj09ZGB)NW)kUX[DgZkb2[>m?khsU"3Wl;3?@LLV6h!'c"YjV!9H<3^,Y48%ek,L+d>kQ*\!'9Rj/p)-^4Bo!Y.ic=^ra"=lO%V!&o^p6T7Q%'n2l3].mPn0I$/?^n`_'EP9i(<EqKmk%%LRL!F:*dO9hW)>'MMa>[0:,7\uhZLdE$VHc#SM@)+IlUp$n>ao`T%p%.MQS8rC(fG3?2-/bqBnL*8)8l0dGLtd=cFc=TE9\A67N`!$;3CZ/nfI>@u&r-od3+^^uJ(KJqqQV+HD1jd_O'58En!e-V_46cE9%ed@GOm&L<lre,G`=[N2WF!`\sYOk<br4b:nIi&iqP"9qRr@q]9+m5_)BU6oN$"0em<aU3)dMAh??Iij/e#59sri&9af]hNBd^tVT$0:--ia8qWO]WQY_Z^]"tQQ!fp\[KsQN9,Zb;$gLE0PZSrN;-eLm.TADWg+E4lXBW\!N<"rI^@homYS*Xum%^Hr9jCXXGGF:G/Tf8[Za$UaICgI+Q_7cY75(@5)paZ3E[fAnr2V&]KRoj1M>KN>mng]LM@k)Au(/$tOh`oOaeR]R"/Z"*>4Q#%47V@.Vp=_qABJpY,e_jF/MT;dY&o2Hi)S@E-8oWKNNn[ieh#9'=[Y_U^[%H7n4.q^!5/B/Nq"0TmE(XP_jcObA&%I!\S4\&,>3N&P+T:;cP%pA:;-B\?0qt1nJI@+Y6b[_s$Z,eB=$4MMp,nCka^t+;iQ?hQ!5Ip@KWiYTE9#D_U5_qY/?Ns4;_m*5E>Y3ZF)2mEA+<TC=m1rA^r:^nYAL#O>qAd28\sES;F].0+k;L-_Q\:fW!3J?_rG*%JZZY5??f8O'O\2<4F;5uih#bbD;=ni]aZna]f$Bn4r9EJ\07>s#pbKWBotkJVB?Zc!e\lcbFM2NO(1Du+;16?*T<GSQXY"?:^mm]^uSj30):j@4F$HtGQ$>CRrm[ZaoBtpKMN*7T"!sVl!/YS1k-.RFYO39nemAlPhrGE7q8t^%!!'G&S(7,(Uf<`;N8Lug-,FprdDBDh!l=Q8&mhsIX=Z0UA40&G?!CjViP_fjpr5#n59,T@$5&^Mn_rJjL#\[=JnBMDfceM&tDY8S=(cbRD>G_.!RM4mqrr=&tDXOB-ms\-L&fL'Khf+Vm?b0#u2hLcV,$8REB`Y$W@@,-54Zu'V%k^X>NW>A1HKJ/kdQNRII:88oQQ%=_j8[alL_c_r7?,kOgtVBQAHh/5(%XJ[p\k50d`Y4p>PF3IMnpS78)lZX(spI$c#dq4@]rHTAYPU(?rr@('iS!>!s#q\2$C59,-jh>[Hoj]L(~>endstream
endobj
17 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2555
>>
stream
GauI:969,O&qKHM'f]r,'lGten1dqr,[39>&tek%OMF75gQT_Pk4.a>8g6OFM@ulPfi$KQVu\^rrNVi"',fjAmf3#WN.(B7rqS3XaOrpi-p,Nl^1Ue;h#2DOa-m2nX#3N3GUEV2bjD^G6c512XQ*3O0WZ5nF2`=kn"+S^NLEFsS[HbK0=bW*aO1lKSNAZK'%,q5>=#E2Cnr&C29MI2)Wfr>cW!E6F*4X-N:q#,=h_U[.HU5__6!*-(qA;)&7U(.h!(j[F6.<'Qs\`5Zo;eBb3POPGf/[3l[(#)DI'6IVh[(_WBEHC#Z(GFU.7!K3/X?\k.BT5J$=]8fY\LI<>)hH@^a$TpHNZpHG6\+SWZ=`.t>6jg\9%KQh([5fZp1PZNadUkI9'XipM0r/l\`7Mck[VDt3?P/lXd0j&s3GVEZV*<85\*3FA"hrQENnb-8'0/M/`)ZEX#%,agD7GB(82EE#!f1MSUEk%djI>(,aLC6JT,3_R5*/:Yu(>g5b-/q9lBmZ(M84'\`n(Nae-3Y#Cj3]A&IOY;a1RH&`pNF;W%T@i(or;3dnRpGsb_sTAlMkeAg*/o\mfjD0r\%M2s*/otUiU8KPlSIO.`J"(a@YZZ:WQs-beO&R('hZA9`NHNPc&-)-g?[U2mTkc7&!goGN<[2(dkN/H7%\Z[HeT*S0t`L/5'`6=EL_=G-'0i/)jh<6)4@O`Ee-6F&UYdDFN`O^*1ar)k32H>Ar[6Ck*3+_#<Cj1):=@ER2c"ZF(m4I<e7_D<>l#O:*st;3=o`F/aFk08LH_MF)[[1WY$d9kI8&Mk3/,EOZ>IVD9UDl>K`P\IFBm*>$JA\O*;AFa*su28K3>jL*a\'i;1TdYo51^o`aJg*[qhFbE6(A:79GJ*8F3=^`:`-r7fD)h#@6Fr1<`CC&:!pmj5\SViG`TgSc>rfL-aR^=C`p4(0&m7*o74aS$j\kp7&*Rq-&[gaa&[=I";=olN5`,D*Hoh$=,qFj%$qV2ha=[T?>84OZnCd0Mof\g1PS7crnK[P::MD`)UWM3o6t%DD>&3M!M_=?TqS8FLAei<GDV'.(TN=A1dKH?l$D$-1/T>E8(XF2G)>[b!2\QHsOXF&XCZ[-3Zlg"Vl=<7o,/Tt[qY$+!\&&p$t'-jH%(%0hOTX.KJA+`lgK"KVD`<>n<q-K!6W\t]p2OfclKCfd$gCSU8SbdEsG;N9V`r#F\$2_mn$Y`1Y0]3<CJ=F2s>`*AHX40r=^*dX1DD-biZ!-.KNL4!ip+ZNg1XGqD:kK5@15i-mqA8ANa*gJ`f)f%AgL\tI:S>$Qipb?!bhu1[jpq?Vepbppk#&nT5H%@n8NGZ<?g(`2pP]rWbLU\>D<8_0O_=Z`^!lPY)T!KCd)Tdd"b+(@tUs/@l[P#O6pR<!"rG]R[,i]Z^(2*GDWW:)ag-Buc3-!6cn`@Z_!Z^0PB;[/iq"hFGDW-ROJ"(d0<7ljCV+#t%nkP7aiUV&g!ZTa,:S\fqik/2pMSMQN+FpCS9R2j67EWGE$9m$6r!#L6I4po,RJ1#[ZDC\^oa70jX/m0s2#"4:dg@&MKQ$I"KEGo[DM/q_E$M`h[GHo7[E$[Q[r>UG/r6)jiADsL*CpC"HpGeaj?<g0'u^3Y#Oa8c<H=a*&njg"5t@/eE]\5^'>>&<\cK/>8#NU$3's+'q6pR`cr&nq(afND.5L;O@%=3>2CJkEQ!d2hhE0h7Qt^uP:g=>Sd1GFF1uP6fnkO)BNGu`^\..s_2W7+bJ4A<"2)aD_BiF?7acQY!PS5]r%)T7XS]uR^n#!pHTtFsSki5"S0\PZO\;;\A_G/CR"uN-G+=BcA\K*W'&T"*>)kUJ%9XMK\8?_[ffSgm-lF3KXVm-[o6MjrC*`?R@8;fSV""\p4;*bX5H1YQ"8Md8)L1(?FjKrskZbd+63P+j5L;X`uP]q-h]S7d9FONBmF8[`"7?quk)c<A/fL-XO3NWZ<%99Qf'd>(aAdu6q;mQ($`:6M72a4]F/d#5Fhh6M'7=FD):=5m@1o-QgU.c6u?d@S9[cB0,:%tNk8OE)eR*d@!bGD#@-Gqot*T')2>BU]<_1X;QUc12W#`3Oa\E(2iq6T9m!2!mQ!MR4YZPd&Ae2<fmgd)6P)F-Z9#ngg9grpYlFDlL15c;?dN9(#.<C1@n.lj@s.Hr"E`5d7]P]+oBXO#CDciP2+Q?6(DZXFV-\g[AncCOnqs8?uiRH+1(7S<jD[ft_Mqsg/f4Peo<$b9(+A]D"MaF5VBh*)j[9Y\FCQVheuV)1;651<='$0Lg4"+8n2MR],QjM")4f$9g7NbkdoMRCI6TgrHGegSL@KBLFrd5gR$9Z:-DmAB4F^;a-R2+.q(%ed-1;2QGKh/"ggm$0W"I4c9Ig(R=9:879\jI'[4(6Oh/U0K5n0INT"S4)Cq`A>nD/0Z647(G:6`j^\8U9Rfgb+4?/Z&&1sL6';F1qj8Y'90sTOsd:b(5iGo<b![U,'1%,7a<?.3o?!8%d"O.D6fNGbjDOTMh/_"g1E6+R2=(aD'km6$g*aUji+T7DJ,12h>Y=[rWYJ(G]E~>endstream
endobj
18 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1942
>>
stream
Gau0F95iiK&AJ$Cn<bh)QGYZ1gB-,IM_20dk#Ct>M3QUrgMIZEC%p5'ABU4-=:Q(M0Ofg+iI'_1I,YeF_[da$lO>"Un&]c<!!,j_)Zl0pErU^']3kKLJ6p\YC:+7;KE<V+1KY1,'F\'k&^$pM@0l87\K^E]Z,M#U)'UY/CRld/E_4tURPtW>Ng6+;0Y7-]$l)O&KG[]UUW6!Z4T+h4h!%Hmf*uf_?8g%'I)B@BMhXOO<u;-ddBJc)m0[pblldB/YuDb7JbRiJO&,#5M3,@`Dog1!iLb&0r>0MSk)#6$WW4T/FFT4Lh.:0\W00K+Q/Auh[G7o+/lr$_W<4;6(#HstIeP_.QRd$KW+K4l.bsFOH6"B_NM7Bn`]a8[d8=b['lrZ*p\s.C8=:JT:Tak1cQ#$n%!r)IgO!s\:`=rlRMdW<A6?4M2fl!NIn.^nf6-0cjMm/tE/1%dL:^ApR%&p9(SSWAAgh:sT.k3!g^5dh!bY9e0%XIFIosbAkP]R\$,,*&gDD:-OVE6;'Z:NOeTT[06M0MD%e28Sds+@Sq-+=>htC#2$;R9@3=.:EmeOY+-Es9=Lo^mEdfK>rXBB,FNJptO<Gf-<H"M[e:$!BmQ)bqs5"S*%%$],&m?E9..-2EF1>B=ts!-8X]Zdg9rI#F89&f$=XWV'ggBuq_Cbn>gJPKd<NGD[QCt8bBl:,3clGe@X;joR1].3B%rb\C5+GKa58^geFfJTs+=irTKK5>!L<cPF1lgO/\<Y.KZCul6"aArdh0%m``7(-9<ff3@b3`_/B\mbMOA2"GTpPk%rZ&iQr2Za5m+QIPR@dl*d$b9kq!)6u+>Y#PPRsn*jE=4m]CutN*?<++Gs!=^OglT+,I[A$^EXg*$><0Va[["brfu><nN_PQPM/M6R+hDr7D65A,bR),U3Y%"DC2"[aQ.81rg,;O>/C#IZiNLT;$nLEYPsI>lG@!Eu2t;iEbhhoLAQu,L*&n`3`\3*4[.,faC3)@9d-I*i.u9S3\Uo(d&T0YM#0JAlLiScB;9,U@Id+l'_`4O#'!CYG!M]-9N5e%mATWp"DC5W1@oCB*df]S73BhY14c==u,@%2`9Mk0'2J\[1kk/3'Ps`cj>WKI-PQP3-P`(M2h@Qm';3`.G>r*/(#n<k&n@koW[2i4SV5pc$i1)F]RHYkA1!\(8@F$):b?2NElg:a=D[#+kLfP!>MeD/0d^GsIE+QX7n]]55oU_cpo)\5]74JJra_'08WHEhOQ0hUA[BB.`HrXQH8TS`M;Ro\sR3#BAc.(O:ojsRHq2ApUh88eR9qke$hS*md<Xq?XBB9-"GZG:a0ZY69+s3].Q4hC%gs,79QA)nndc,5=65>o*L;D*a!LVdS0e1[Id"<T_Y$&-\m_K&g0BSU[l/UR@oE<A4oDK92]s;'(m#MkHm45Y9MW*adNYDT>gDhZ/:#0Jp.9K:f@jc:Ll4hFO%8Lulm5Fg<iM.'pMM4)0JV,:E-6!VQ'/gdZ+2!RL>59uRI9BCqh`ieu)V4jj-6+D*IU$9!+4DNuc#=bu/$@!tkpjcO=#iERa!W8q4rGgkPV:Z\O4]j_=^^Coej&<^F@^j74;<uf-VfHL#E>FE1qHd1O-pLs6SW:oHpo$9Ko[X]3,%7"k'2u7e4@QS+Z/Z6>7VW>nX1m\p:e.41D4iL,Z=&(KZ,4rr(Md_PGl)(1D4iL,a.jpKZ,4RGMZGT`KSBaYlm_!=6HPmSq`8r"YTI.7>dXi/]gq]fNHRa4@P*tKkujC@`6OnQK0J]lmuDTr9amAnJ0d8]b5L9pI^%dbRuCf=r8*V(d<Icn!S(n2A,reCASiL&%A@HPiK5G?c=UB=D\01qhG$Sg?s1[?l@_t2T4GGUq>(G(u&=Ap`31aWuCPKm<;p(mI.p5D)eKodJ_sOh3$XMAUN.Lom0+U?XokFiENM_#Q&\R+H-7"R:A4]~>endstream
endobj
19 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 806
>>
stream
Gat=(9lHLd&A@Zck3,e;LAbM2g_)V],P@/:ZmSK]2/@PS=Q3n3eGT.Q+1C4ZaAi3`Z-:L?o607nnF<CCHX6^-,]J$!JMKb35Qqa]I"U1lgN^)d$mgb+U]P'X#S"WNpN_fI"6:V5j8&(\]CZYdmSQ>B$:JDiBo<fcGbYL*j.TRkPqA5+6Z"Tg;3dVj+e2liApFF!Db*&LbT7#)q0?r%4*1gL$VhX[8sg\.J\PN!oMm+>mGLFf$o4sC8^CI/@BFLRU%P2)o8]3[qW1CRcim\+R<IU<oit[*/(\p;N5Ka4)7[(H09*+aeL&*Q\9Mq^>$B`^\LZ$FC&C"+mg)UoW`0.c4t""m2H+#6<`cjh<J;-LK!LY?H/?qBm<kb>%6>AkNXABFc8Yq-*K]\3($kbVNLiHL*XF2;L`9Jee+p#hF&_5q]\`"JThkS?$MtkD"u%)3T1.-[jaAnu;/*^_2I/@TO0c9ClOU6fW3.iX4cQis1DIW89N[6:1DDNTOpK>XM7d'(5L3\LK]s,?$D8Y^\9o!i&M"dJM?eh3%(0iJF7^IldoQ(*eI)VK0M,PUSDbIuSL5d.$i0fKhR!`<Ek2@hL^a'_pB:C*Yjp)[]'$a/Yakf:>54'mJs1^XCc_L:@!$_KZ4uI=WRpQ\?(+2rMuCF'Qp.Qo#-m\!]+nXlmdri\p<u6+(7i^#2DA"9_^p(JZMe0kNsQ5!>X5'FeqiM-R(oipM_`F5ll[m12eRpna<]7=`aAQ.MG)$*oFRDh_'09ZWblKn$+&$sjR2SbI"qd!mdkc=RU,9<3_&Io!q.cgAZQs~>endstream
endobj
xref
0 20
0000000000 65535 f
0000000061 00000 n
0000000132 00000 n
0000000239 00000 n
0000000351 00000 n
0000000466 00000 n
0000000549 00000 n
0000000754 00000 n
0000000859 00000 n
0000001064 00000 n
0000001269 00000 n
0000001475 00000 n
0000001681 00000 n
0000001751 00000 n
0000002055 00000 n
0000002141 00000 n
0000003680 00000 n
0000006383 00000 n
0000009030 00000 n
0000011064 00000 n
trailer
<<
/ID
[<53be2df1be2ce0263ef0f383da9f9781><53be2df1be2ce0263ef0f383da9f9781>]
% ReportLab generated PDF document -- digest (opensource)
/Info 13 0 R
/Root 12 0 R
/Size 20
>>
startxref
11961
%%EOF
@@ -0,0 +1,74 @@
%PDF-1.4
%“Œ‹ž ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 8 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 7 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/PageMode /UseNone /Pages 7 0 R /Type /Catalog
>>
endobj
6 0 obj
<<
/Author (anonymous) /CreationDate (D:20260730100002+00'00') /Creator (anonymous) /Keywords () /ModDate (D:20260730100002+00'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (unspecified) /Title (untitled) /Trapped /False
>>
endobj
7 0 obj
<<
/Count 1 /Kids [ 4 0 R ] /Type /Pages
>>
endobj
8 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1035
>>
stream
Gau0B95i9E&AIm?bRkC(pANo=Bdf6C%rL$!02B/O%'bG$LC/JnZZ_iuBu<<*=Gk`(m`bFM2nLjc(gXfMTB-(9'6s,"!uEYZ"';F/nd3="1\=^]jT3&)dYi?o6>@nbB19./H]>mW"&<iXc9!EVb[6nadkju(1=*HhJD;Qr9Xi@eJXUqt?Z/)"b?26FYg>hF)e9!QMo\;AMr+"V"`;V2iAk$pW26@?3P;j>^]/P,GCB9"-D+`;C:gA%fN=#):Kt-lW3LGEHj`B6Ph#N.%QTL+G.()m:fO-iP55F-+/Dm_r1M+,5oN\QTn7KXC)+&9HMTXLWI#JD5VhX*S^bMTGa`SD\@Em)Nte$G#2rBWbTR3CC$:6+^K\Nk(RQF.81JUr!>W_r82./&MlJ>"ASO>A9c2TOL"Wca'T9!DjEW02r\er@\KtCR\3u5,#g&p.8'\VC.'tu+F`i*s&kpY5a[VfJ:Q2ZghT992s%Lfi1lCEc[hhWLaTj3EpFmL*^K*mpO#PY1q,b]tV2E6Ad&6=\8b9##S;L9:q/7/^gFX&r%?+@3V`cptTt\.^eU"g+#%tk3@<,Rl=rO0:MnthRh3^T+2,!*g)nb9R4-ridR8/P"[QBqQe+`/b%*e(Q!M'5)Io)`>+!%oP>4jEOA$?h=(Yunj%Fo8tL29Iph*@4u%[ADs>]*?,Wlo6mo+)m$AK'J]mU:]DUl^<DG$CY+(;H^!U5!ggeuL=r+6"Me>?VN^s(SFTA8tGSg+InS\hLP(PHtp0W1NZsR51r4%@#U*#tcFBC+2qXHYsbg*hTF[QD$*h.o>)c(oFD_`r"AH_>*H\pPSt+2GhPhi1eKEo;o*i9FK9a[L<>pAc^=2<&?^UU.0`GFce4h;V$YN+3MW7<E!-70'IRB/X200>!k_j+JH_EWOM*c&4_NE;clrc@3)]oYh>mR])K!l\X/"`DqDJZ@?j;=J(BpY46fHa;O_8/qi^AQlq;dJhPc3Jj<,=iQ'`QE:>@3KfIg*4^qsjZA0Z<lPk1hrlneP4SkTt[q["%<Pn<~>endstream
endobj
xref
0 9
0000000000 65535 f
0000000061 00000 n
0000000102 00000 n
0000000209 00000 n
0000000321 00000 n
0000000524 00000 n
0000000592 00000 n
0000000853 00000 n
0000000912 00000 n
trailer
<<
/ID
[<91993e7392cf45f5ba23e0a82b40a812><91993e7392cf45f5ba23e0a82b40a812>]
% ReportLab generated PDF document -- digest (opensource)
/Info 6 0 R
/Root 5 0 R
/Size 9
>>
startxref
2038
%%EOF
+103 -2
View File
@@ -123,8 +123,109 @@
</div>
<div class="module-content" id="moduleContent">
<article id="mod1" class="module-panel hidden">
<!-- Platzhalter Inventarsystem -->
<article id="mod1" class="module-panel">
<h2>Inventarsystem</h2>
<p class="lede">Verwalten und überwachen Sie Ihr gesamtes schulisches Inventar: Von der schnellen Suche und Detailansicht bis hin zur revisionssicheren Defektverwaltung.</p>
<h3>Suchen, Filtern und Ansicht (Navigation)</h3>
<ol>
<li>
<strong>Präzise Filter- und Suchfunktionen anwenden:</strong> Um die Suche nach Artikeln im Inventar zu verfeinern, bietet die Suchmaske interaktive Dropdown-Menüs. Über das Dropdown „Schlagwort“ können Sie gezielt nach festgelegten Tags wie „Klasse 1“ oder „Geographie“ filtern. Ein weiteres Menü über dem Titelsuchfeld erlaubt es, den grundsätzlichen Status der angezeigten Objekte einzugrenzen (Auswahl zwischen „Alle Objekte“, „Nur Ausleihbare“ oder „Nur gesperrte/defekte“). Zusätzlich können Sie über ein kleines Zahnrad- oder Einstellungs-Icon neben der Suchleiste exakt bestimmen, in welchen Datenfeldern (z. B. nur im „Titel“ oder auch in der „Beschreibung“) der eingegebene Text gesucht werden soll.
<details class="screenshot-toggle">
<summary>🖼️ Screenshots ansehen</summary>
<div class="screenshot-wrapper">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-08-11.jpg') }}" alt="Suchmaske Dropdowns" loading="lazy" style="margin-bottom: 1rem;">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-08-13.jpg') }}" alt="Status Filter" loading="lazy" style="margin-bottom: 1rem;">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-08-15.jpg') }}" alt="Erweiterte Such-Einstellungen" loading="lazy">
</div>
</details>
</li>
<li>
<strong>Ansichtsmodus der Inventarliste wechseln:</strong> Das System bietet unterschiedliche Darstellungsformen für die durchsuchten Inventarobjekte. Standardmäßig werden die Ergebnisse in einer Kachelansicht präsentiert, die das Artikelbild, wichtige Kurzinfos und Schnellzugriffs-Buttons direkt anzeigt. Wenn Sie mit der Maus über ein Objekt fahren oder dieses auswählen, wird dies durch einen grünen Rahmen visuell hervorgehoben. Oben rechts befinden sich zwei kleine Icons, mit denen Sie das Layout umstellen können. Ein Klick darauf wechselt die Ansicht von den Kacheln in ein kompaktes, tabellarisches Listenformat, in dem alle Metadaten (Name, Ort, System/Bereich, etc.) zeilenweise nebeneinander dargestellt werden.
<details class="screenshot-toggle">
<summary>🖼️ Screenshots ansehen</summary>
<div class="screenshot-wrapper">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-08-06.jpg') }}" alt="Kachelansicht Inventar" loading="lazy" style="margin-bottom: 1rem;">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-08-29.jpg') }}" alt="Objekt in der Kachelansicht fokussiert" loading="lazy" style="margin-bottom: 1rem;">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-08-39.jpg') }}" alt="Kompaktes Listenformat" loading="lazy">
</div>
</details>
</li>
</ol>
<h3>Objektdetails und Aktionen</h3>
<ol start="3">
<li>
<strong>Objekte identifizieren und Detailinformationen abrufen:</strong> In der Übersicht "Inventar Objekte" lässt sich ein spezifischer Artikel durch Anklicken visuell markieren (erkennbar am grünen Rahmen und der hellgelben Hervorhebung). Durch das Öffnen des Artikels gelangen Sie in die detaillierte Modal-Ansicht. Diese Ansicht zentriert das Produktbild und listet alle Stammdaten übersichtlich untereinander auf, was besonders für eine schnelle, ablenkungsfreie Kontrolle der Artikeldaten vor einer Ausleihe oder Bearbeitung nützlich ist.
<details class="screenshot-toggle">
<summary>🖼️ Screenshots ansehen</summary>
<div class="screenshot-wrapper">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-07-37.jpg') }}" alt="Visuelle Hervorhebung eines Objekts" loading="lazy" style="margin-bottom: 1rem;">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-07-41_2.jpg') }}" alt="Detail-Informationen aufrufen" loading="lazy">
</div>
</details>
</li>
<li>
<strong>Objektdetails im Vollbild einsehen:</strong> Wenn Sie weitere Informationen zu einem spezifischen Artikel benötigen, öffnet sich eine fokussierte Detailansicht in einem Pop-up-Fenster. Diese Maske präsentiert das Objektbild (inklusive Navigationspfeilen zum Durchschalten, falls mehrere Bilder vorhanden sind) sowie alle hinterlegten Stammdaten in einer übersichtlichen Liste (z. B. Ort, System/Bereich, Anschaffungspreis). Am unteren Rand des Fensters ist zudem das Feld für die ausführliche Textbeschreibung des Artikels vollständig einsehbar.
<details class="screenshot-toggle">
<summary>🖼️ Screenshot ansehen</summary>
<div class="screenshot-wrapper">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-07-41.jpg') }}" alt="Vollbild der Objektdetails" loading="lazy">
</div>
</details>
</li>
<li>
<strong>Verfügbarkeit prüfen, Historie einsehen und Aktionen ausführen:</strong> Dieses erweiterte Aktions-Fenster bietet verschiedene Verwaltungswerkzeuge für ein Einzelobjekt. Im oberen Bereich können Sie unter „Defekthistorie (Letzte 5)“ vergangene Meldungen einsehen oder über einen Button einen neuen Defekt melden. Darunter befindet sich der Bereich „Verfügbarkeit prüfen“. Ein Klick auf „Kalender anzeigen“ klappt eine interaktive Monatsansicht auf, um Belegungen zu prüfen. Im unteren Abschluss des Fensters finden Sie eine Reihe farbiger Aktions-Buttons: Hierüber lässt sich der Artikel unter anderem direkt „Ausleihen“, „Reservieren“, in den Status „In Reparatur“ oder „Defekt/...“ versetzen oder aus dem System „Löschen“.
<details class="screenshot-toggle">
<summary>🖼️ Screenshots ansehen</summary>
<div class="screenshot-wrapper">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-07-46.jpg') }}" alt="Defekthistorie einsehen" loading="lazy" style="margin-bottom: 1rem;">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-07-58.jpg') }}" alt="Verfügbarkeit über Kalender prüfen" loading="lazy" style="margin-bottom: 1rem;">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-08-03.jpg') }}" alt="Aktions-Buttons" loading="lazy">
</div>
</details>
</li>
</ol>
<h3>Defektverwaltung und Administration</h3>
<ol start="6">
<li>
<strong>Defekte Items überwachen:</strong> Die Ansicht "Defekte Items" dient als zentrales Dashboard für alle Artikel, die als beschädigt gemeldet wurden oder sich in Reparatur befinden. Die Maske bietet eine Suchleiste, um gezielt nach dem Namen, Code, Typ oder Aufbewahrungsort eines defekten Objekts zu suchen. Die darunterliegende Tabelle ist strukturiert nach "Bild", "Status", "Fehlerbeschreibung" sowie "Aktionen" und "Aktiv seit", um den Reparatur- oder Ersatzprozess transparent nachverfolgen zu können.
<details class="screenshot-toggle">
<summary>🖼️ Screenshot ansehen</summary>
<div class="screenshot-wrapper">
<img src="{{ url_for('static', filename='images/Bildschirmfoto zu 2026-07-30 12-07-33.jpg') }}" alt="Dashboard für defekte Items" loading="lazy">
</div>
</details>
</li>
<li>
<strong>Revisionssichere Audit-Reports analysieren:</strong> Das System exportiert bei Bedarf revisionssichere Protokolle aller Systemvorgänge als PDF-Dokument. Der Bericht enthält eine "Prüfsummary zur Audit-Chain", welche die Integrität bestätigt und die Häufigkeit bestimmter Ereignisse aggregiert (beispielsweise Einträge für Rückgaben oder gemeldete Schäden). Die detaillierte Liste darunter schlüsselt jedes Ereignis mit einem Zeitstempel, dem ausführenden Benutzer, der IP-Adresse und einem kryptografischen Hash-Wert ab. Für formelle Prüfungen schließt das Dokument mit Unterschriftsfeldern für die Schulleitung und den IT-Beauftragten.
<br><br>
<a href="{{ url_for('static', filename='docs/audit-official-report-20260730-100236.pdf') }}"
class="download-btn" target="_blank" rel="noopener noreferrer">
📥 Audit-Report herunterladen (PDF)
</a>
</li>
<li>
<strong>Schadensersatzrechnungen generieren:</strong> Wenn ein Artikel irreparabel beschädigt wird, kann das System eine Rechnung zur Schadensregulierung erstellen. Das Dokument weist einen spezifischen Rechnungsbetrag aus, der dem verantwortlichen Benutzer in Rechnung gestellt wird. Die Schadensbeschreibung auf dem Dokument vermerkt transparent, dass das Objekt während der Ausleihe beschädigt oder zerstört wurde, und fordert dazu auf, den Betrag bei der Verwaltung zu begleichen.
<br><br>
<a href="{{ url_for('static', filename='docs/rechnung_INV-20260730-100002-577983.pdf') }}"
class="download-btn" target="_blank" rel="noopener noreferrer">
📥 Muster-Rechnung herunterladen (PDF)
</a>
</li>
</ol>
</article>
<article id="mod2" class="module-panel">
-1
View File
@@ -54,7 +54,6 @@
<h2>5. Verantwortliche Redaktion</h2>
<p>
<strong>Verantwortlich nach § 55 Abs. 2 RStV:</strong><br>
Maximilian Gründinger<br>
Invario UG<br>
Am Sportplatz 10<br>
83052 Bruckmühl