From 4f06a19c2c4b5c9b62e447d4a0e055ef76df7019 Mon Sep 17 00:00:00 2001 From: fds2610 Date: Wed, 25 Mar 2026 10:35:16 +0100 Subject: [PATCH] kleine Verbesserungen, Favicon und Sicherheit --- Changes.md | 28 ++++++ migrations/004_rechnungs_nr_from_filename.sql | 8 ++ public/static/favicon/apple-touch-icon.png | Bin 0 -> 11368 bytes public/static/favicon/favicon-96x96.png | Bin 0 -> 4971 bytes public/static/favicon/favicon.ico | Bin 0 -> 15086 bytes public/static/favicon/favicon.svg | 1 + public/static/favicon/site.webmanifest | 21 ++++ .../favicon/web-app-manifest-192x192.png | Bin 0 -> 16777 bytes .../favicon/web-app-manifest-512x512.png | Bin 0 -> 68200 bytes public/static/js/app.js | 95 ++++++++++++++++++ src/Auth.php | 4 +- src/Controllers/BelegController.php | 43 +++++--- src/Controllers/BookingController.php | 36 +++++-- src/Controllers/InvoiceController.php | 10 ++ src/Controllers/SettingsController.php | 6 +- src/Views/belege/detail.php | 34 ++++++- src/Views/belege/list.php | 16 ++- src/Views/bookings/journal.php | 8 +- src/Views/layout/base.php | 6 ++ src/Views/layout/nav.php | 2 +- 20 files changed, 276 insertions(+), 42 deletions(-) create mode 100644 Changes.md create mode 100644 migrations/004_rechnungs_nr_from_filename.sql create mode 100644 public/static/favicon/apple-touch-icon.png create mode 100644 public/static/favicon/favicon-96x96.png create mode 100644 public/static/favicon/favicon.ico create mode 100644 public/static/favicon/favicon.svg create mode 100644 public/static/favicon/site.webmanifest create mode 100644 public/static/favicon/web-app-manifest-192x192.png create mode 100644 public/static/favicon/web-app-manifest-512x512.png diff --git a/Changes.md b/Changes.md new file mode 100644 index 0000000..b44f863 --- /dev/null +++ b/Changes.md @@ -0,0 +1,28 @@ +# Changelog + +--- + +## 2026-03-25 – Sicherheit, UX-Verbesserungen & Bugfixes + +### Sicherheit +- **Timing-sicherer Login**: Passwort- und Benutzernamevergleich auf `hash_equals()` umgestellt (verhindert Timing-Angriffe) +- **SVG-Upload gesperrt**: Logo-Upload akzeptiert nur noch PNG und JPEG – SVG wurde entfernt (XSS-Risiko) +- **CSV-Injection-Schutz**: Felder im Buchungsjournal-CSV-Export werden gegen Formula-Injection (`=`, `+`, `-`, `@`) abgesichert + +### Features +- **Inline-Editing**: Belegdatum und Rechnungsnr. können direkt in der Beleg-Detailansicht per Klick bearbeitet werden (kein Seitenreload) +- **Belegart-Filter**: Neue Filteroption in der Belegliste zum Filtern nach Belegart (Eingangsrechnung, Ausgangsrechnung, Quittung etc.) +- **Favicon & App-Icon**: Favicon für Browser-Tabs, Apple Touch Icon und Web-App-Manifest eingebunden + +### Robustheit +- **Datenbankfehler-Handling**: PDO-Exceptions in Invoice-, Booking- und BelegController werden separat abgefangen und geloggt statt als generische Fehler zu erscheinen + +--- + +## 2026-03-24 – Initiales Release + +### Features +- **Basis-System**: MVC-Framework, Routing, Authentifizierung, Datenbank-Migrations-System +- **Ausgangsrechnungen**: Erstellen, Verwalten und PDF-Export von Ausgangsrechnungen +- **EÜR-Vorbereitung**: Einnahmen-Überschuss-Rechnung als PDF-Export +- **UStVA-Vorbereitung**: Umsatzsteuer-Voranmeldung inkl. XML-Export für elster.de diff --git a/migrations/004_rechnungs_nr_from_filename.sql b/migrations/004_rechnungs_nr_from_filename.sql new file mode 100644 index 0000000..236f11a --- /dev/null +++ b/migrations/004_rechnungs_nr_from_filename.sql @@ -0,0 +1,8 @@ +-- Migration 004: Rechnungsnummer aus Dateinamen ableiten (bestehende Belege) +-- Setzt rechnungs_nr auf den Dateinamen ohne Extension, wo rechnungs_nr leer/NULL ist +-- und storage_path auf eine echte Datei zeigt (nicht automatisch erstellte Ausgangsrechnungen). +UPDATE belege +SET rechnungs_nr = REGEXP_REPLACE(filename, '\\.[^.]+$', ''), + updated_at = NOW() +WHERE (rechnungs_nr IS NULL OR rechnungs_nr = '') + AND storage_path != ''; diff --git a/public/static/favicon/apple-touch-icon.png b/public/static/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..bbf3c34914541661ee2918926e176ac89277e274 GIT binary patch literal 11368 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 LDpJ+JuOa^rxr`P} literal 0 HcmV?d00001 diff --git a/public/static/favicon/favicon-96x96.png b/public/static/favicon/favicon-96x96.png new file mode 100644 index 0000000000000000000000000000000000000000..d94d740ec062ef21021502d7149d587dd33bc055 GIT binary patch literal 4971 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 literal 0 HcmV?d00001 diff --git a/public/static/favicon/favicon.ico b/public/static/favicon/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..a9f62a1cc7e96d6ba7edb9121b205c0438a856bc GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/public/static/favicon/favicon.svg b/public/static/favicon/favicon.svg new file mode 100644 index 0000000..9744551 --- /dev/null +++ b/public/static/favicon/favicon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/static/favicon/site.webmanifest b/public/static/favicon/site.webmanifest new file mode 100644 index 0000000..6fbcf20 --- /dev/null +++ b/public/static/favicon/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "MyWebSite", + "short_name": "MySite", + "icons": [ + { + "src": "/favicon/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/favicon/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#ffffff", + "display": "standalone" +} \ No newline at end of file diff --git a/public/static/favicon/web-app-manifest-192x192.png b/public/static/favicon/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f56c046f10caee27031b85cc514b8d0b9191e747 GIT binary patch literal 16777 zcmXtg1ymGo*!?UEOD(dLF1<9UbR)6A(k-Zzbc2M1(o1(EDbffEh!TQGH`3iL(%t#( z@B9A$J!famo}DwZGtc|H?|tsQ&qipfD-aP-5dZ){q@;*?j@dW=_r`-@w$JArZ~*`T zD50cv-W%;^MP!qAT;AKit0R`y(yWu#(oxqsXiN-`RDd1et@EWW`g2en^P8=t!v!;n zdFiysV%Vv;6X9{~?A>MTJBQv4*;}7K7k&O!?`7rXF?8osx%hf|I=%eMzs4_J*k(31 zHtYw56px|Lyf7~rI>rsT95XaQ80lk3@xcfA4uGO@q!^yl`ihDItaG89kNNI3Ay#C7 zbViXDFEYe5NWO10T)YSH{N@C~9KlWj<1`Km3bHaWLHh0O?h5+)`WA(4h}}oY94g5> zQz92-7vs)XPOpr7{_l7k*zc7n?nWMZ-;)H-{f6_kfBCUuy?q&ie`q|WOl4|q+qc(s z7(5nS&-don{qL`{f7AQFTT4*LpyanoJ6!D|)TWTb{K%OHA4YtnoR`p-`~LU#cUO~5 z8BO=M`|Fj1lKlMEeFA?pUOTFbEMqe)kub>@NCxqN+ME3E{f;}Sozj|acb(Q3@9%!{ z0MS)%|0?r4Er|2mjuf=om%wvmW|uQ06z#+Be>UBg@yPi5H&F^ZeiXf2OX|P;m+ds5 z>mHi^eyUw(vuqz{)nWeExcJ@0>Uz5MCtmNf9g?Cnp*I<#=X0+8lTCN-l_o8L|L>$A z)2&JSZw;)d>vl4YG!3a+odThzHVeIKyAO41i7I`qA%y+G_+-Bam+eT>HZWHbzP}vw zUpdbfammxGvPsZu@@udO%)>-RW;VeB-9_i!ceAPC&zJ3gSC{q-mzXX&`(Ix=naX}T zzjcOIzI?}EVE?z+Z*~cbH|xS?SH;IsOyV9py2GqI0Q3bpCU7>-#vH?tyx#FMFz(o| z83JiCJYZGl@fWYsDW1Fx7ag4)eUiY?Y>$b8y^+tM+;RQlt$G!{UvqZ?QwaY1IHp*U zRzv3&oOSBOi%`+Sb~3_mg_xmI2&{yF;?M3cx}@5DT0G|)ed}S3qz7rd=BU7LMh!C` z-PiT3`lfizSP##yrDmOsJpWQ0cd^~seDXchi$K&ZYx+basf+a(`ksy-(S0B@%(X`Z zi}A3J(1f`kulKK?H{CZ(|FDcolTuy-{FnOp2gwyux`%=f$@=aF&sC<9n*uI)gA6;D z_ZhB^2c8XnbR7^SRr}JKL-7k@wgsJ8C~nD>uC$*lpQ60`Cw0$}(ZaG}9w+hg9yfP z>~Q~Yd@U5e9_aVx+ySZw69!KB;G4hP{v;gV66gg2*KwVr&v$3psF16-TjEI)tPYVy z=nI#?Q`ZcRk6#6lA+aEt`8wCn7ohV+|0W)Ax|zEJNS#*_bT2<0WN;mH8RT&>Gug;m zBjwQ)s*=gzr-@11Sddv~Fas${=)8w5JNXDtFksB$EsI!iS%}jZO!@{DU2#23hZz+j z761b{ZK;h|DtYIC{_X&`hZr$0s8TAm%6u$*bH3J-#4;m$+0OC#mBKc9b>?RmZX zljYAJ`}iA}KrHXQnjZlaHM{|MU3kfXrX8o9K!xYr%qfMvB`!*5p7~^P=ZJ zTGuYxcWJ4{etK1Cp<2Li(4X75(Xiltr6Wr2>g#B9=McB$m;W*(ilM#r{-de)+ogsU z*WO@!Cz^Ykdf{wAnYiW6uQkaR53xYl5 zU$ICdVj~;k+aN?KU{)YV@<1@WpN?q2LhS-bR$c{bo`l*4_3!f$cq3zoWA`au88Vn^ zlA2a&M|udz9`VcMnxVN#MCQ09?^}J2df3+I&le~*@fi9(3C^l!h;x*OiznvYF7xU!pR7P#@bSPoM;dzFV|%O+(TG6BY^`g2Br*93UW{lbgM1j>D2 zu{;D8Gor9<^s|Q4S`|7I_x;u8XBOgvtL<--iVgqJO^xib!G-E@)EzTq*SD-T3jbscpboZ(k zXQN;x-u*FFyUX7XuawE~I?OMyG2!!gmpiS$d(~j z7=6MJjQ!7cW)M9HHU180yO17WKx#B& zLQ0#dC6{kb0d~XJ@ya_&xca&1SFfXDMpYcFofpV3AbIU@h=cezoG(A?Y{HCF53;M= z=6SN?>qFI;PvoZd`vHIKDRM~BUzz?r(W%T0kp%V)R0r0Kmn>&aaD*c}q+uvPqtA;> zMYf@XaT9KmafdWNIUKLLEB3Ldq$qlvjA?5KCb6mQJ%+&E2#GLfnTS6jrE!(_4%8zv zhVk~PhNiBkjA}@|cJQ)%aD{6Vez{72&t62<+H%TfLY{`c0dlpfa-Z4pV*hss$)Nc7 zsXGmc)8u4`$#wl52=O*>EzD-jLeouF2X7_yZAh-PiyLLM`@gJr%EsRwRvdnWiLKMT zHi1c%#Um%1?M<<0tl)St-818EGAf8mUR>Llc2AFc$^Sk3*lz}**c0nSENxg7N|*TI z%F{8Ud<#8F~@4A~$>lD9XwT!kmB3Vf+@6GW4WWq|VP?yj~AbyZb@ zecKmoAwb5-bI5y4%9)2+m8FSA3!s7+>I5_X%0y5~AKYEpYt0h1V)JKM~gG1IWKicWeSn+Km3w7GFm= zE?K0sp1_}c9KeeFwgs~$`3S{JPvEjE{=fAB*`3t?7VJ1PONh_dv_T|;E`xv+W zRa?S}a>Or={%}81i%%}N(#tZ;mXR``)myppKHm`p2TeG3d9r-XqKWx*R{G^d{Ef&& z_TIIQr1{*1ODn2W!oJUoD)a@o_>F;p=kNnJLa@y|aSh*h|F?iRwRhkNbJb@TM;c^C zk7cn=cFcp*m<=+vqs+ydBIbBQ&K!H1*ju%kqob!<+8TVuByS&$E5rVKoAG+J zf)D+r*UC;L5>eN(=l`!{!Goy;6n|&oM|rPcj`!Wapi$o2+0Er3R&*WyJs<+MJ6$=L zp%@gjZgLOe4eBOXg=+JaW#?|wJRn+jl1mkd=gZ0UE6qA%A*( zQkdUAz{_kEP6H_7$Q48mXrEn%Qai#n)nft9!@c_bE~}xIAl$y4>B@GJPG~DLmL=f_ zD^1>Jp62piyIp~tKo=qbx7uD;fAzF;rpcAGUsQmPD4uK0UTwUO&*6EhSY>yVWihiCKBDt6-7j!ofMQ>h-zp5b0S(F?3 zMu^`3KDO|6)Y6^a#+T~=9)OYYD9H+Mj>J4|c8ee%Ry8Avf)q;RPViDyWc)sJQX+ej ziD4JHH~q?I?z6I=HS!(}mH?04nj*hfpAEkkd8+&rNkF#$VF*v8o3c{=C(c;vXO18B z8XeLvKwn>$MOPavEL24na2M*&vFXYTOv*j`XmYFSJFw>cAd0N7%{iP#Qj5sJIP1|q zlRW)!eb2+Pw7waWact)J?uq{o&3%%Fq~+Ppv;k8Q!!zw{ zLe@kp2Hb8PJU#wzNs94V)p3L9CZyhBt&90eo1+j4j+F|!sB?fQK3f&f9e)9BW;MOj zJjMbeZmZAvIY4fv`lLDi^kR~-|2pj}!w2Jrl+164Mo9U?uUva0Hf6S$!O#!sBa?7sREUTR~7sh#nT`%JOKovWMiOIuro5R;t zSWw9!C#(LCmY5avY32Hnpw&!ONnwT*@+R>%d)9jM=U}3BWGEuac2oeZ5&xZg2=XF- z#%7fu#B>;VT*mIm_@%{A(U?3uTs|%SEzrQD_Qozxlw9^N#Y<^j!!OPDfB9-m z!?C1q(xgf~M|U&(Cj6J~Pcjpj6e9YGW%-UFWLA9}-($l1eTF{KReBH79k*Q5ci$=P znFQ~CqZRh}sQ3GQLfxIgWTxlwdhc@TGPvR#FK@oyBlBG9z43s?_U)-pQn+spaM4Ha zX*}$9T9nKe)zv~Vv)p%hnnRqP$7`{|K3%~Jz;I*L<{F;GI@D@HmVksCkv}>rGU88B zyJA1GqX`%&3sPAxaz@aKunuk8-~<+5eH>`np^rdwtcFLLWD&!8MJG7#L-DQX=30o= z3bwqTN&STX?AMz zI7l@I#tyC!`DjI3jM^ZVnUrmby+8Ze#EH*TmT!w=$p?&NBtm4ey}ZRnj6L3TD=M|k zRNKpW<=0Rb6i=OW?kqHP{l40=UyoJGMDd`)I0CWqnodT>*8>T;VQfvb+b)zyU&`K^ z65~9}1Un79CsEUpyZ~1jw-$b;u-K?A6x}R6rS<&nZuMj&TKaf<`w8SAhZZ{tf|p#* zI&&TW36@m0Bd~tZ7Ka(pdT+{quMm`AQDnZbMLaHAb5~@d`Fp;29andIW{d~gTc|V$ z#yUo^seUvWkT`ef!RHbFOnbl!G|ra&TzI^jIdv~q@Z`xkYyevi3R5D)wY4r9hmeyc za{PPzQb48ypk&VkZ8#Om!EmR|&Pwo%hyU2&&p`oN`(n}Lcgvh7Fyt+tx0Q*5kd?%wN z&`}X8eSBaUjYazf6Hitc71}V^$bo_R6JMT-4g1H7Q(vlTJVTv6?B|eXTr_B|o&tj> zEAZWl8T;`Y|E?P_ldKOMY8;Esv;ZQ=TuC$^qy9rz7$m1fkrHv`3ws4=z^ghAjK+k4 z*awP)pV!>K%M6w-QS4Y78F4kP`b^6j&*Im_pYW0}m`oL(ERN)Z>f54~!PqTbK(wg; zK>%*Q>!1{yf<5)nT&JXF;uc80;4>7HGA}THn^i*YxAM#I;j|4YOm4`udD{!t`zYz482!?H( zj5``gO7WJG2kePYK{r#OBdc#HMJuV6$n}xR7mSy+BZAVPLo%6jVW>ek0?(+DbxRu2 z+nSnrbJWzBhHsG|@NQ&*se_wGB9UQ|>br#zh5?EM1;%#*1cKf=+678>{s9I|7!;5t zs6r)dZ3UAa_{G9}q;g8c_oe4<=E(DIX45XGP4K}sBQUmo!XoIIEK zNe$gNc5i^h6A4PJj}A(HpcE4r(N-_L1!xLpiQ~s%WRWLr$Flgy`v>0dC(Gwo$Y&Pi z!t`_m$a6nnA=kBddmjy!KCoxku7x%)@-2jL)6N?`d1rHv^<%AC<78xC2A-_`tnLl} zR{q5KrWYhf)bKNVEfKH2cRBPRYu`s9ktWLut$Q_GH$F@D)6;SOig@!hMmCTX_nQk+ zKYTEx4}~{66w>UHX)Xbda@9{*3Vz)`wkL z{bLo<-?3N?B?@XE%-S&2-c+VdaaHX5%4w84m<^OiC6>AM{ z&Zj2vWDQ>?_J6Nqwwmp*NHUwNEPizLYi1qVEnRIK$%um?3N6)*J%8051QPZqD9~%iq+YHZgO7|zy((qrcI;R8 zQfQii!ZZ>ItCjXctKmGk^M%IyFgB=H}4Y5L!88>`SZ#3HrG zHtH8I%k}E){#Nh+&C{(kCPSRB0x|WON*kQfV!XY`$WJ+0HktwJ3flT{G3~{WI zj$DA|T6m^S};lBG@eM|u#pQ_XJHzY6&mAfemzoEZk6GU^jt+V2jA>iOC{B)$NZcWkiX74&(n+v zg~S(K5T$^M=(l+Q?au#24<@sn*X1+gvZh<0_4tMSC~jm{m~wV}n>|~vB|4hi{||d7 z@LlxL@{l>Y#OfBZix&k4LgxCROF?lQp=58&fp1ebaw%)KyP6C{2Y*e_ieT03J-d3u zGTlj@hdn?q5J{?XWrI@u%;K*$ZXmN-r_UEK^I3#x%|4EiRkH&Ku(4LLpabI#qo6~v zm#O{8Te3#})npnR)1mvjbJ@{FDVQZqJ~P_F<1#r|Ji&5JX(zAS3h0xEU^~s#YB~1i zsyzOKtH=ikNpU93>6ZvM*IR2=U4Mm6B?ruJW0E(WXtGrJb5@PaRZvzn1phqek-H2S zm96y-(Z+Ins^`Z4J*w^`(2J!Ll1Ea?B(FM0T6?e8LG^}llY+#vbCbC(^{Ny#m{#~} z{fFTC)Mi&NEtok*W-CB9DE7TSMj~P6Q_zl{Csyh8sCYwZK^wTikXL$55=L*D!ewAL z@w#E4FH`Cp*XHD@R*oz_>=A0P0oS7J=bPDwk1}jgjOm&`R6#)kDx8-^v3#HS=uzr# z`tr0NDm{FE6MU$KPyVB64bXjJNfJ!GJ8wB>qHVik5`$+k$_mrt3cp7Yg)pmq@r<=~%p_<6A&A_KG<+O<*$RC@U)l-yO1DaE z$Qip6!OEnBTzyh&3K_%?+1@+SE03Py^$W3N-=IR?POrza66SQA&>{IjtzaPvRW`FO8 z!d|o!4EKnIjp9~JA6vXhdNBU>yq*b~lbPfZWiE_X8>VI-#UCMNd4Kz?4`7su$(O$A zzWM!o!={LG?ORU({?(QIn3^jWfv?rXfc~k&-^H-{hutL5iGSaJ24{SdzH}-XiV-UR z`4h|v%M1!a=>!MXnAxQe$>p)LtZAWmZOCw4oE`b*< z2znovHb^H= z40344#=FmMj|d2GHc&}Vs0~FWvc@a>g$G=S@H0n5lYfnP_rg}Uo15IO=_pI)*X8kg zCYidp^j3!wc}TM*5FT^-eL#4@NA`>CHgmo`-8kra%$%w)P4!f9nv57+JQm817xdQn z;o^LKcO(zc8eI>v3D0GMb}bt9s(mtnQ#MbN!4s8-a0nl!g%E1+tain1(}0~X1b+NJ z>V2{vfJ+x2z1-+~P2liD4K_X`34y)XnETW{Xdyo+`j4irkYp1c_-jMs9?f$FCYD49 z>oHO!t;b|HGeVqgSqrG2zC4vQb7hjQ=J`s%LTaibZ{#s;d6=cASCqyrgQ8$>p!|>h zTm#ujbohnt(d^8)mwo(u^!HESO!ZObghQy1vSijf`GmulQ0_6x6I7sQ}m|9vw=Mp~Odd^rj>U{b}9`{9xj(Qx>bNDRt zd40p{Z0XDh6OT9HE;zEJN<@I^CJyC^O)l;^57M=NbcNy8(1ZG%(c=NL_Ou!)N6?z^Iri z7Qq28gYgTIPp1|MRf9WD7qzBQq#UCZ$siqYh0^CNj|{^ic{&6$lt5rPFln%q2ENqr zZc!Nb0Zl1ksExag?pxJ`X%3JrX{(f$P}Xkr(`1*`&Wt1tu^xxtrul0iJV24bK>1eg zXmR=(>Bne!3me|iTvH$uKUVUa<-!}zTF{Au%Z2ExBk?s5d7*s3lxBe>bwT=4gZJ4( z6X4%LGQy{RCZFa-G|14|8HMh~<~L9Nl>>t~_X|~ZPm~$3temzIR-yKIn6BifwETuI z8c%qNJ|2EZUUKyn?lH_f*5RXbf@P)J8pA>km z4-U4sxmb$Pu)h4-p6$L6pm}@}&J+vde23A-Bc}hQ)Ft-aF1LVZG-!7Y|p%nVkG)K0%GC8zHq%J2$Fn6|Et zNM2o0NWIC)+wgim2{qT<>C@xy55(!}>FfKx+9}3+<5oL3ka6x`W6XE!)OcDHterw^q(Mcwp=cK>akE^5~6t ziSB(($;@Z?-a$`TW<;1;Ur(cu3>?A7sk6;X<-6FZ(Z4i=)Cn8NnS(;AkLtRoA#D)a z9q{ujzC5Rbbe{`me$OAfaqjy#-O7qrsz2|7Zr_%BpY0{A!Tp{7#28otbUy{j6#r;A zA1Iyl;83dHruv{fzDURuT)vOUT_&%VG}68^WonX@8W{(EF#CgEH_w(3QP;A44<%FU z!l6`bGBUvD;0$~YW@sAkkEI#8;(UDM+0XcC0^x^5og}xiaV7i-+!xi$_v1L8IwqPr zP_05hN$Ja=j@t`c{?jB7;FnSgin>rX-&ythzlNcH<>`|tg#+1Z-430IZTD8?%_4t0>2{2x+i@Eo}aWVFeBg~iDu8qz%NKz?mom&lkGHq?Ic#g%-f7FIg>y< z@8SdddYH*nRhWGX)Z226hug}4^Pa*G0v8F~#~)iy!#|8yeCvmBXk_ZrTP>V^{! zOz=jeKD$FSk4JH`h0QzND(%LVl^!IVPW*_A7X(kJ>{lA;hd*3$l7rVy|7*qj{;sl0 zMQy5tM;eT|{#fbj`j-P!1i~?WA4DjyM#CH!I1}80rD2WiibDEqScLbTc5di@j7ou! z9AxxEv4#k~D0V|g4#Owu?{hG)bV0h8WI={MX9j6`#ET>^4{^qG>`~H)hu!te8XiL~ znlMK^A$>-rw=2gsva0s#&UE15w3mWJIoAYjt_o9|pR>7&j1}O`We{JCWZ5AfU5J9s z$ldszoQ&BSSHT~cT^z>wKTVe{$n)N?b#Xq+{Ei+I8!uP1a|j=lv1T+CghEeLM6rLO zxb%LY66Fwa(-dhnGo*U{3Ki=4gbX_LM~TJ^0$Rr)-MC%6OuO>NE4$C|axm4BrZu_% z!vN*5W<7x@27F_R_Cw2RfpwruVG!ZRL`yBH0iZO30Q>@>H=Gs|#S`P3*N@YX7=4{@ z$sE`_l>@`*HLR4jm(><cbuS3lWTdW>a zPflm>rxTrmoG%VR><_i+o6nze{r3<O8cjnL=+ODG@QXNe2yFzg@b)=L@`pv=&vUM8ewTP-^BQ9I%aOa2)7lQDCd%Q;*!V zRQ>n@xs(V33xz$0kPi55qkgH{T#0D!)^SzpygJ=BXVWEIRp!K?0C;v7F;ayYs%f98 z!iV%sT*#u>%zIgHw(Y7I>auyJCOpr~&tJ*xPYMg3B~>C-O@FG9SCp;`drn7L*m~J^ zwU*JbWYUz*|4x10q_iqH>-xrV>JdbfsQK!RFg$0S{cFmTXS~zu2fuj$Pg=3o+D9=A zdIJq3(!q~T7?(1TiZ2QnzaM(<)hV=E-Wa^ex2tf?4U{TE+}r|OrU$AHQ0m}U zb9Ki-fO7vo?K08N?&z<3N+DmjrYOJA1VU6awg{)(ymJRTj96nw0&E%aj1nryoEUn;_e-!n(BM``BudeiUk zV^$aI=JM;i8*$flXdT~4YZOSJmfTyr8=rCEN6a+Bs(wgXtW2$qU*14S;T!`=!a^Lt-Fh9q_I=>COsC(7g&g6v4y z1LAj>2&4CdC{f>aGa^=7Up3Gt6ufIXg57`MH<|Q}#hAo8`?7=;!etBnwMmTlet zX6SH+R(4obdr@=i@0=0fWMm1B5UN7p(y1_rG&Rjh9y6G|$}avF06cl9FxnP#?d3!8~CBeUAy|4NG%M%z_K-+3ehq2Ii^T&j2|iS{^5j}=?XT#8Or#q zQckg4I{+{(^J#&-te^bCS()(TKq#=Xpgn}!c1mN&yM$FUamr^vm#8d7!WzNwX3Odr zWt}sxk4VxbJ0Oui6XV=ciyV7i_*`p^>YKoQvt{rV`*XVE6zQ9*^t*HQ2*U{QbjE++15$LOe%dEI#8%Dl++ui9=~ zhTglkw_e0DWfPKd7BdaH=f^wV+winfuBPXL=$Wp^hbIfgCq#p@RaV2b(@OFV&VArz zJ2b>DpQA$wfjK1bnS(y1OZAfB86+s$6z2PF}&#Gop{{L`f~kIMDhokx1Enti0}e4-WRo1Ghzg`L-&IDYAL&S zZ^&G$!5=yOXst8Ta0{%-PO7B2BOlbMr?_mOaKpogsN?;Vj1Ck8BD_fcxNh2@@(>O% z2EIl_Y*p}UQYA7S(j#Rb77X0UCbO*7r_E zti)6+tX~xT!j5l!?*C1YD_34`4LN?8w88qmpRW)jq(JAMEV`bSZ#k1KfBsQuDChM9 zFResSa<}3KDU5Y85kndwX)==fOiy@+-DP%VS5bHpNFgjtJ>Cr-;%Rwz{!1r2KNHg0 zFerW-eL1VboxVFO>0*@Pw^a86{03tGN!Y)94W!E*oPaxt|FSYn99M~luazfYA$;0L z@fk_EV;$|pnYU_|&C1W1>*YY$K zm*uxSQBGLzKl3kI_ZYd#Ium1#tm1l2*9!cG@GoIh!Nlsu)AdvE|vCi||%1iDcoXQeiA*N>pfSl=Vx>(2`1Xo7pu`*G~cz-xE#nwgX)9{^E8zb zx`1E9uojGe=?%uWmO9M5v-GA?GNP?OOr;9yyk-+{+0~z9CejNw%sas7DHip0OwkJ_ zN3<@X)wVrZACD%l9N4R66mQB5n$)jyI9y#41Es^r|4UW`39o-GJ=#ta-nu}t&aV_G zm4|;piOhY#J20{$7u6plRm;1FKakX{|ESHIhbs8(#A}AbS_#)v3>--o)o(cxz8nqp!@g)zoX-A5nH9;%Td7|hFidd6aBe-hk56GI7-6v0m?1nI&%&=B~$KDm{ z{A!Dcw?r}dY1lmJqBwk3QG*BC%;Krq?xEHSgEXIofofSPh&1Vy9YfzIS&#R5GxJ!i zO&8Hhyto3veTl(t1@H$%09gELBmX%R7mU;qqb*<9E8`UEr*ov+WQA$Q1k_Y76is~&N9ZF4|fe*DOGczL|T2HB(&i`B{9T=sF5$e0KZrgfI1)d3wKfF z)VwN#m9K)yrRG;t?(AP64yyq@W4@0h4Q`YOTW z=~SE>MDsdp{|m?v(ybC-#|q0udTUfHkW5g4tFT_VUi#6|YzSA<5G^f`?U-L#G$X0a z3?aq4AIfkaKe!hi&xgB?!%Z^k^u=1m+5v~OXB0A&=>F47psfWU_!PzsM>|tO5v~DV z*Kbvr-8jAe?~xf|Ct6F6w~SVg6Rf-?W-Hi9L3guwx?1%ZB2*DR!0V{}x?>-p>RE*< zlGl(QintQ7o?eC`TsjtvJcVR(wrH(BGafMgspoK}2!Z~-s6R$a|WpYA4e z>k5>HEz+Wr`czQrW|+8tPPB&Q`2(Hx-s@#PfHgjg(CxEfVyd-dhoVd1EM$MxfK6nY z?4y-m5pVNi7+mPg#UK~xn$DN@!3>P>gN3B|7P%W0 zIofM}={8OPo+|V!34wo`W7e91Me;$DdNS(xHAwMwk!AxYw+>x|Efbljl8s?o#c_Ew`qe)G7 zO+T)fqFLX{h)>cE5WqhPu3R&JmX#H``ha?74NSj2*|D@pkS4c~?*ZE^8`Js75RPJ1 zJ}mmoRXnjz>#Sli%9#LSAszN!)qYEY$E1buVSL?FUh$j~$r4tB---uQ3`gx^&;3JF z7SMQ&ZCoV=C+EJn)1R~D zMx&Y3lIU!pwBjO6E+uG(3(*)SBK$nbe5-(=*bH&oFz+Leijqb>I?1!ie?B8ZvK092h8`Bm@6V&2zEJqqBS7B&n| zf3g7ab}`!B8ZuM-kf%08>`Cb)=#4?r75I>;5{h!X>6-j~i7#A(eU$emNzNaCTitn_j< zW5W7O41{z^)(+hy5t#CzmPUk39_seq{)@l~v@>B7y^&()`fSl z>z&FYxm7ajH`U&XdMcHYND-YRGDu-(l)991?lU2(1R_k$=Lrb2{V**NMPqU7tte*8 z?dj%DN=`Bl8|HcB*SgKgBHL$ediT`mN4Md- zU3aU68&6WK2LWG)-9+}DeEZFqL93hnm<{^)ORf)O=wHB69qkdu4WEkfW#J}ofj8v0 zZUIGWc=Mc<3|Mv5+2jbs@PxfBBFR zGN#Tp&3#$V6t+I;x+WMfx;Gj5EX%nba|%bDOj3UJfT|Z0YnIdJ3`RJ~1Rl@WfBUf9 z^>_|h!Wy3;(xmrhQ1wZ2x+3yQ6qa0XWb!*dND#$1dSJ_lj{dPFuKNw9K%nY z9T+{m5agRy3ZC9F3h=+M6RA;blxT1UwDDg=f6a!x>KT+j?izHkJ9OqK8|@n>z@5WC zVjL19)XoE-b8)Mw&BVHa8RDfB`my{s+!Sb_?e zgBiMRK*1&tiy?|nmOUo(t_vSoXs%6l1N|SZMWdxtsE%Jcg>SNhHOXWZ;4gy26@_`x zgbyeTNLvEKv>Ur#8zy4ns3N}q`?#;; zk@3^lDD_1fD)-KzQeoQX%(sdUN|-)U6Gd|4pD^54y0#dgwAsdn|0areVjH=1P{`1z zHV;Kki5LAn-=WR&v$)ti3tC>~`Ql^3uZ4(LSX#Cm%fQW<3sN~U0Z7dpN4~j1mKZkR zW|2IFFvXrRvs%(EBkWK5h`VI3)MA=Fd$WxO$9!SbP^f3?}R19SoyPfMur)A2rQn!U^$7LsOWWX+C+;yS8nlKwpdpQJ4mgXJqnRl`0B z^)J9St?F-=b*0{ODzQ?nn0oXf(zzbJRk5gKA5zvc*w%Vmv-g*+Fjb}&3S3w48vERZ zY|>ZoGjB&2-#;`?fUm=p~XSe`TF6_NO z*?;kD_DZSC`Q7+dy%LDn(5p}nHy%VBN^H;u8DY;k!hcSqgi=+GL_mx69kI^% zcvt0cLT^Qeah;q9iv@Edog;f?6RXwb1dya+#yuVrmhBy-S~n3p4wmUScD!m1YvY>{x#Nvqt2p zm);gv$~#$$7~wb61uxCMtlK>T7gv4AtECGi_-B|rPl`p$dg`C&*c8i;_RDb?XwE@V z>L>76Hv7syej)1=K8UriSI@}690+2|Lg$zjBPwd}SxHcAYD`&p8+kH|m`2tiUCAf=EZJw^%+$NZ3!)L)(D@9khSKly}w}my~}#7{0Cf2 ziEd{TMG3N}eko*W?QP(gr+;SUda`txuFG2~Z5xG>Va;chTyc(|v|^k*#PnyRry9-B z7}Hp@G?7>x@FELDse5XX-Q0v*OWXerKJozl49vF{558O>IVSlo8Br%7o{Ni;&!0#k zng+Aw-_hY*!3W~#PedcxG|eAg8F4hUlsi9(0RhXrLZPY*7);pWV>c1HPOvK@y`}>F zM3`s&a=kN#y3k5I7(||NYNfeTq?XwiMt?VWvfVLEGK6(^I%ypLO7_n6QHZisYarXF z_j#ohWo)Ym-q+9NTdv{gVEWPAy1R!hMX!{{OY8X3a=te`i@Th5h2Q;mGpr1s z2R!C}&(d?aVF)klaQ2c*(>-?fpbAgo3uyqL>)9aZ14Z6&yu8|sJ>s{NxT-R9)LflI1PjrnOKww_5fp3 zZGd6Y7cz!q(2PsHIn_=|XgXo<&QPvLu!|J3Yafqr8=vbtc^*EbnL(b3+!APDJ^k7T zByKx=Vc{b;Z2_GsC4(^1Ae&#DQIegYQW_V2jT*+h;H}~8q3zQFDA9bO%E^SIC6c`Z zKdXI(H(STnN}}ztUQp%G$*JZR79P7r%V>tOe6C z3B^dnsUj^Oh=(lTRqphdZoR(@;siRp$PU0LIUToHHK!N*%YPfb5-o&OZyzMgGSFRM zCC>lEod3S|Qaas)(;bLK?cp&DzW`J+no4`obO3TL=EHk6Dk(kd|Gz(tBD z-9(weO{{9omWAZygy%y-0Gf&4zN{4_ZCjCvKM`0GS`f$F8hHGs1E%{z>2Y>u`~7~= zeNy@*Ls^1y0SxG0PL|=J&Co|oFhfZvzmXdli-Ciuo4HOJs_>%q5d?Sa|B=?TdEMqZ z3sFs<$yYG6MTC8TTcSrv;Vz;=)sVj>`Hd!FmB+4r54JWzuKiO^vOZP@mRfRfNw*<_ znc0T9w3z5S1|;~7#9!I}^wHz;&_{$|9=b(Y&P$qxvAy}O6|+Lbqy zSoXba^b@4j;3v-UoIk1DsZWxWt$}7%-UlI~N6E6<50}+puBP_uDv!guYnfD87%_bs z!-UN*#Ppfy2`t|`s$K3n(Z{#w)_d&Mya|(NaPcE+N;SAtomhy9uf-uA%hUw2DJfh7f0BVrnS9v@0}oUF|w`6Z>EC5M!Y&A?h(J zE_;Z~S9#uRkNpLvvcL;a3dm-~rjtYU$u-dv+?VXGUsz2VN|RnnLjohtcE1l=FNx}m`P*+nZ%dBI z1_s8D8gt}r)el}#ZVqSe$^2-or1+lzQ~<00A=I$ui019LHZnj#xNGvQuVR1-rJ-8{ zK^9|I3{as|3^x;G5r1SJ1sSP9FA`-p+$*k7p#UlkP~j_$PzLz_@@YZ7=&tk$00000 LNkvXXu0mjf&p8vP literal 0 HcmV?d00001 diff --git a/public/static/favicon/web-app-manifest-512x512.png b/public/static/favicon/web-app-manifest-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..ced8f2892ea1021a1e76a915acc16fce27911f5f GIT binary patch literal 68200 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 setTimeout(closeDropdown, 150)); } +// ── Inline-Edit (Belegdatum / Rechnungsnr. in der Info-Bar) ────── +document.addEventListener('click', (e) => { + const trigger = e.target.closest('.inline-edit-trigger'); + if (!trigger || trigger.querySelector('input')) return; + + const bar = trigger.closest('[data-beleg-id]'); + if (!bar) return; + + const field = trigger.dataset.field; + const type = trigger.dataset.type || 'text'; + const rawValue = trigger.dataset.raw || ''; + + const input = document.createElement('input'); + input.type = type; + input.value = rawValue; + input.style.cssText = 'font-size:inherit;padding:2px 5px;border:1px solid var(--color-border);border-radius:var(--radius);background:#fff;min-width:' + (type === 'date' ? '140px' : '180px'); + + const originalHTML = trigger.innerHTML; + trigger.innerHTML = ''; + trigger.appendChild(input); + input.focus(); + if (type === 'text') input.select(); + + let cancelled = false; + + async function save() { + if (cancelled) return; + const newValue = input.value.trim(); + + const body = new URLSearchParams({ + rechnungs_nr: field === 'rechnungs_nr' ? newValue : bar.dataset.rechnungsNr || '', + belegtyp: bar.dataset.belegtyp || '', + beleg_datum: field === 'beleg_datum' ? newValue : bar.dataset.belegDatum || '', + betrag_brutto: bar.dataset.betragBrutto || '', + }); + + try { + const res = await fetch(`/belege/${bar.dataset.belegId}/meta`, { + method: 'POST', + headers: { 'X-Requested-With': 'XMLHttpRequest', 'Content-Type': 'application/x-www-form-urlencoded' }, + body: body.toString(), + }); + if (!res.ok) throw new Error(); + + // Update stored data-attribute + if (field === 'beleg_datum') { + bar.dataset.belegDatum = newValue; + trigger.dataset.raw = newValue; + if (newValue) { + const [y, m, d] = newValue.split('-'); + trigger.textContent = `${d}.${m}.${y}`; + } else { + trigger.innerHTML = '– setzen –'; + } + } else { + bar.dataset.rechnungsNr = newValue; + trigger.dataset.raw = newValue; + trigger.textContent = newValue || ''; + if (!newValue) trigger.innerHTML = '– setzen –'; + } + } catch (_) { + trigger.innerHTML = originalHTML; + } + } + + input.addEventListener('blur', save); + input.addEventListener('keydown', (e) => { + if (e.key === 'Enter') { e.preventDefault(); input.blur(); } + if (e.key === 'Escape') { cancelled = true; trigger.innerHTML = originalHTML; } + }); +}); + +// ── Konto-Select: Doppelklick / Enter → Kontonr. ins Filterfeld ── +function transferKontoNr(select) { + const opt = select.options[select.selectedIndex]; + if (!opt || !opt.value) return; + const kontoNr = opt.textContent.split(' – ')[0].trim(); + const filterInput = document.querySelector(`.konto-filter[data-target="${select.id}"]`); + if (filterInput) filterInput.value = kontoNr; +} + +document.addEventListener('dblclick', (e) => { + const select = e.target.closest('select#soll_konto_id, select#haben_konto_id'); + if (select) transferKontoNr(select); +}); + +document.addEventListener('keydown', (e) => { + if (e.key !== 'Enter') return; + const select = e.target.closest('select#soll_konto_id, select#haben_konto_id'); + if (select) { + e.preventDefault(); + transferKontoNr(select); + } +}); + // ── Flash Message Auto-dismiss ──────────────────────────────── document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.flash').forEach(el => { diff --git a/src/Auth.php b/src/Auth.php index e297673..104f321 100644 --- a/src/Auth.php +++ b/src/Auth.php @@ -13,8 +13,8 @@ class Auth if ( !isset($_SERVER['PHP_AUTH_USER']) || - $_SERVER['PHP_AUTH_USER'] !== $user || - $_SERVER['PHP_AUTH_PW'] !== $pass + !hash_equals($user, $_SERVER['PHP_AUTH_USER']) || + !hash_equals($pass, $_SERVER['PHP_AUTH_PW']) ) { header('WWW-Authenticate: Basic realm="Steuerkram"'); header('HTTP/1.1 401 Unauthorized'); diff --git a/src/Controllers/BelegController.php b/src/Controllers/BelegController.php index 4bfb21f..2c0d58c 100644 --- a/src/Controllers/BelegController.php +++ b/src/Controllers/BelegController.php @@ -24,18 +24,22 @@ class BelegController public function index(array $params): void { $filter = $_GET; - $page = max(1, (int)($_GET['page'] ?? 1)); - $result = Beleg::all($filter, $page); + if (!isset($filter['year'])) $filter['year'] = (string)date('Y'); + if (!isset($filter['month'])) $filter['month'] = (string)date('n'); + $page = max(1, (int)($_GET['page'] ?? 1)); + $result = Beleg::all($filter, $page); + $totalAll = Beleg::all([], 1, 1)['total']; $view = new View(); $view->render('layout/base.php', [ 'pageTitle' => 'Belege', 'content' => $this->renderView('belege/list', [ - 'rows' => $result['rows'], - 'total' => $result['total'], - 'pages' => $result['pages'], - 'page' => $page, - 'filter' => $filter, + 'rows' => $result['rows'], + 'total' => $result['total'], + 'totalAll' => $totalAll, + 'pages' => $result['pages'], + 'page' => $page, + 'filter' => $filter, ]), 'topbarActions' => '+ Beleg hochladen', ]); @@ -99,6 +103,7 @@ class BelegController if (!is_dir($absDir)) mkdir($absDir, 0755, true); $filename = pathinfo($file['name'], PATHINFO_BASENAME); + $filenameWithoutExt = pathinfo($file['name'], PATHINFO_FILENAME); $storagePath = "{$relDir}/original.{$ext}"; $absPath = dirname(__DIR__, 2) . "/public/{$storagePath}"; @@ -112,8 +117,8 @@ class BelegController 'file_hash' => $hash, 'beleg_datum' => $_POST['beleg_datum'] ?? null, 'eingangs_datum'=> $_POST['eingangs_datum'] ?? date('Y-m-d'), - 'rechnungs_nr' => $_POST['rechnungs_nr'] ?? null, - 'betrag_brutto' => $_POST['betrag_brutto'] ?? null, + 'rechnungs_nr' => $filenameWithoutExt, + 'betrag_brutto' => $_POST['betrag_brutto'] !== '' ? $_POST['betrag_brutto'] : null, 'belegtyp' => $_POST['belegtyp'] ?? 'Eingangsrechnung', 'notes' => $_POST['notes'] ?? null, ]); @@ -164,10 +169,16 @@ class BelegController public function updateMeta(array $params): void { - $id = (int)$params['id']; - $beleg = Beleg::find($id); - if (!$beleg) { http_response_code(404); return; } + $isAjax = ($_SERVER['HTTP_X_REQUESTED_WITH'] ?? '') === 'XMLHttpRequest'; + $id = (int)$params['id']; + $beleg = Beleg::find($id); + + if (!$beleg) { + if ($isAjax) { http_response_code(404); header('Content-Type: application/json'); echo json_encode(['error' => 'Nicht gefunden.']); return; } + http_response_code(404); return; + } if ($beleg['locked']) { + if ($isAjax) { http_response_code(403); header('Content-Type: application/json'); echo json_encode(['error' => 'GoBD: Gesperrter Beleg.']); return; } View::redirect("/belege/{$id}", 'GoBD: Gesperrter Beleg kann nicht geändert werden.', 'error'); return; } @@ -176,9 +187,15 @@ class BelegController 'rechnungs_nr' => trim($_POST['rechnungs_nr'] ?? ''), 'belegtyp' => $_POST['belegtyp'] ?? $beleg['belegtyp'], 'beleg_datum' => $_POST['beleg_datum'] ?: null, - 'betrag_brutto' => $_POST['betrag_brutto'] !== '' ? $_POST['betrag_brutto'] : null, + 'betrag_brutto' => ($_POST['betrag_brutto'] ?? '') !== '' ? $_POST['betrag_brutto'] : null, ]); + if ($isAjax) { + header('Content-Type: application/json'); + echo json_encode(['ok' => true]); + return; + } + View::redirect("/belege/{$id}", 'Metadaten gespeichert.'); } diff --git a/src/Controllers/BookingController.php b/src/Controllers/BookingController.php index a49c7ec..eb0d6a3 100644 --- a/src/Controllers/BookingController.php +++ b/src/Controllers/BookingController.php @@ -15,10 +15,13 @@ class BookingController { public function journal(array $params): void { - $filter = $_GET; - $page = max(1, (int)($_GET['page'] ?? 1)); - $result = Booking::journal($filter, $page); - $years = FiscalYear::availableYears(); + $filter = $_GET; + if (!isset($filter['year'])) $filter['year'] = (string)date('Y'); + if (!isset($filter['month'])) $filter['month'] = (string)date('n'); + $page = max(1, (int)($_GET['page'] ?? 1)); + $result = Booking::journal($filter, $page); + $totalAll = Booking::journal([], 1, 1)['total']; + $years = FiscalYear::availableYears(); $accounts = Account::all(['aktiv' => 1]); $view = new View(); @@ -27,6 +30,7 @@ class BookingController 'content' => $this->renderView('bookings/journal', [ 'rows' => $result['rows'], 'total' => $result['total'], + 'totalAll' => $totalAll, 'pages' => $result['pages'], 'page' => $page, 'filter' => $filter, @@ -58,18 +62,18 @@ class BookingController foreach ($result['rows'] as $row) { fputcsv($out, [ - $row['buchungs_nr'], + $this->csvSanitize((string)$row['buchungs_nr']), $row['buchungs_datum'], - $row['beleg_nr'], + $this->csvSanitize((string)$row['beleg_nr']), $row['soll_nr'], - $row['soll_name'], + $this->csvSanitize((string)$row['soll_name']), $row['haben_nr'], - $row['haben_name'], + $this->csvSanitize((string)$row['haben_name']), number_format((float)$row['betrag_netto'], 2, ',', ''), number_format((float)$row['ust_satz'], 2, ',', ''), number_format((float)$row['betrag_ust'], 2, ',', ''), number_format((float)$row['betrag_brutto'], 2, ',', ''), - $row['buchungstext'], + $this->csvSanitize((string)$row['buchungstext']), $row['is_reversal'] ? 'Ja' : 'Nein', ], ';'); } @@ -103,6 +107,9 @@ class BookingController $data['beleg_id'] = $belegId; Booking::create($data); View::redirect("/belege/{$belegId}", 'Buchung erfasst.'); + } catch (\PDOException $e) { + error_log('[Steuerkram] PDO-Fehler in BookingController::store(): ' . $e->getMessage()); + $this->renderBelegDetail($belegId, ['_exception' => 'Datenbankfehler beim Speichern der Buchung.'], $data); } catch (\Exception $e) { $this->renderBelegDetail($belegId, ['_exception' => $e->getMessage()], $data); } @@ -159,11 +166,22 @@ class BookingController Booking::reverse($id, $reason); $booking = Booking::find($id); View::redirect("/belege/{$booking['beleg_id']}", 'Buchung wurde storniert.'); + } catch (\PDOException $e) { + error_log('[Steuerkram] PDO-Fehler in BookingController::reverse(): ' . $e->getMessage()); + View::redirect('/journal', 'Datenbankfehler beim Stornieren der Buchung.', 'error'); } catch (\Exception $e) { View::redirect('/journal', $e->getMessage(), 'error'); } } + private function csvSanitize(string $value): string + { + if ($value !== '' && in_array($value[0], ['=', '+', '-', '@'], true)) { + return "'" . $value; + } + return $value; + } + private function renderView(string $template, array $data): string { extract($data, EXTR_SKIP); diff --git a/src/Controllers/InvoiceController.php b/src/Controllers/InvoiceController.php index 1db6193..83c6553 100644 --- a/src/Controllers/InvoiceController.php +++ b/src/Controllers/InvoiceController.php @@ -157,6 +157,9 @@ class InvoiceController try { Invoice::update($id, $data); View::redirect("/invoices/{$id}", 'Rechnung gespeichert.'); + } catch (\PDOException $e) { + error_log('[Steuerkram] PDO-Fehler in InvoiceController::update(): ' . $e->getMessage()); + View::redirect("/invoices/{$id}", 'Datenbankfehler beim Speichern der Rechnung.', 'error'); } catch (\Exception $e) { View::redirect("/invoices/{$id}", $e->getMessage(), 'error'); } @@ -168,6 +171,9 @@ class InvoiceController try { $nr = Invoice::finalize($id); View::redirect("/invoices/{$id}", "Rechnung {$nr} wurde finalisiert."); + } catch (\PDOException $e) { + error_log('[Steuerkram] PDO-Fehler in InvoiceController::finalize(): ' . $e->getMessage()); + View::redirect("/invoices/{$id}", 'Datenbankfehler beim Finalisieren der Rechnung.', 'error'); } catch (\Exception $e) { View::redirect("/invoices/{$id}", $e->getMessage(), 'error'); } @@ -270,6 +276,10 @@ class InvoiceController \Steuerkram\Database::commit(); View::redirect("/invoices/{$id}", 'Rechnung erfolgreich gebucht (Beleg ' . $belegNr . ').'); + } catch (\PDOException $e) { + \Steuerkram\Database::rollBack(); + error_log('[Steuerkram] PDO-Fehler in InvoiceController::book(): ' . $e->getMessage()); + View::redirect("/invoices/{$id}", 'Datenbankfehler beim Buchen der Rechnung.', 'error'); } catch (\Exception $e) { \Steuerkram\Database::rollBack(); View::redirect("/invoices/{$id}", $e->getMessage(), 'error'); diff --git a/src/Controllers/SettingsController.php b/src/Controllers/SettingsController.php index 914eee2..6a56368 100644 --- a/src/Controllers/SettingsController.php +++ b/src/Controllers/SettingsController.php @@ -64,12 +64,12 @@ class SettingsController $file = $_FILES['logo']; $mime = mime_content_type($file['tmp_name']); - if (!in_array($mime, ['image/png', 'image/jpeg', 'image/svg+xml'])) { - View::redirect('/settings', 'Logo muss PNG, JPEG oder SVG sein.', 'error'); + if (!in_array($mime, ['image/png', 'image/jpeg'])) { + View::redirect('/settings', 'Logo muss PNG oder JPEG sein.', 'error'); return; } - $ext = ['image/png' => 'png', 'image/jpeg' => 'jpg', 'image/svg+xml' => 'svg'][$mime]; + $ext = ['image/png' => 'png', 'image/jpeg' => 'jpg'][$mime]; $relPath = 'static/uploads/logo/logo.' . $ext; $absDir = dirname(__DIR__, 2) . '/public/static/uploads/logo'; diff --git a/src/Views/belege/detail.php b/src/Views/belege/detail.php index b94fb47..9c36c9b 100644 --- a/src/Views/belege/detail.php +++ b/src/Views/belege/detail.php @@ -7,7 +7,13 @@ $testMode = Setting::isTestMode(); ?> -
+
Belegnr.
@@ -18,16 +24,34 @@ $testMode = Setting::isTestMode();
- Belegdatum
- + Belegdatum✎' : '' ?>
+ + + – setzen –' ?> + + + +
Eingangsdatum
- Rechnungsnr.
- –' ?> + Rechnungsnr.✎' : '' ?>
+ + + – setzen –' ?> + + + –' ?> +
Brutto lt. Beleg
diff --git a/src/Views/belege/list.php b/src/Views/belege/list.php index f683f87..cc1693b 100644 --- a/src/Views/belege/list.php +++ b/src/Views/belege/list.php @@ -5,19 +5,25 @@
- = 2020; $y--): ?> - + $m): ?> - + + + + + + - - + $m): ?> @@ -30,7 +30,7 @@
- Buchungen + von Buchungen
diff --git a/src/Views/layout/base.php b/src/Views/layout/base.php index a774abc..84c7491 100644 --- a/src/Views/layout/base.php +++ b/src/Views/layout/base.php @@ -5,6 +5,12 @@ <?= \Steuerkram\View::h($pageTitle ?? 'Steuerkram') ?> – Steuerkram + + + + + +
diff --git a/src/Views/layout/nav.php b/src/Views/layout/nav.php index f1c95e0..0a889b1 100644 --- a/src/Views/layout/nav.php +++ b/src/Views/layout/nav.php @@ -5,7 +5,7 @@ function navActive(string $prefix, string $current): string { } ?>