From 50d449e2b7bf8892dd3408aa11dda7b51a4b87e2 Mon Sep 17 00:00:00 2001 From: Omair Saleh Date: Thu, 5 Mar 2026 04:19:23 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20conditional=20&=20match=20funding=20ple?= =?UTF-8?q?dges=20=E2=80=94=20deeply=20integrated=20across=20entire=20prod?= =?UTF-8?q?uct?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Schema: isConditional, conditionType, conditionText, conditionThreshold, conditionMet, conditionMetAt on Pledge - Pledge form: 'This is a match pledge' toggle after amount selection - Two modes: threshold (if target is reached) and match (match funding) - Goal amount passed through from event - Auto-trigger: when total raised hits threshold, conditional pledges unlock automatically - WhatsApp notification sent to donor when unlocked - Threshold check runs after every pledge creation AND every status change - Cron: skips conditional pledges until conditionMet=true (no premature reminders) - Dashboard Home: progress bar shows conditional segment (amber), stats grid adds Conditional column - Dashboard Money: conditional/unlocked badge on pledge rows - Dashboard Collect: hero shows conditional total in amber - Dashboard Reports: financial summary shows conditional breakdown - Donor 'My Pledges': conditional card with condition text + activation status - Confirmation step: specialized messaging for match pledges - CRM export: includes is_conditional, condition_type, condition_text, condition_met columns - Status guide: conditional status explained in human language --- pledge-now-pay-later/prisma/schema.prisma | 10 ++ .../screenshots/collect-new.png | Bin 0 -> 84226 bytes .../screenshots/collect-with-data.png | Bin 0 -> 84226 bytes .../src/app/api/cron/reminders/route.ts | 10 ++ .../src/app/api/dashboard/route.ts | 15 ++- .../src/app/api/events/route.ts | 9 +- .../src/app/api/exports/crm-pack/route.ts | 6 + .../src/app/api/pledges/[id]/route.ts | 29 +++++ .../src/app/api/pledges/route.ts | 82 +++++++++++- .../src/app/api/qr/[token]/route.ts | 2 + .../src/app/dashboard/collect/page.tsx | 10 +- .../src/app/dashboard/exports/page.tsx | 7 +- .../src/app/dashboard/page.tsx | 34 +++-- .../src/app/dashboard/pledges/page.tsx | 10 +- .../src/app/p/[token]/page.tsx | 23 +++- .../src/app/p/[token]/steps/amount-step.tsx | 99 +++++++++++++- .../app/p/[token]/steps/confirmation-step.tsx | 28 +++- .../src/app/p/my-pledges/page.tsx | 11 ++ pledge-now-pay-later/src/lib/validators.ts | 7 +- temp_files/fix2/ListDonations.php | 110 ++++++++++++++++ .../fix2/ListScheduledGivingDonations.php | 122 +++++++++--------- temp_files/fix2/ScheduledGivingDashboard.php | 53 +++++--- .../fix2/scheduled-giving-dashboard.blade.php | 70 ++++++---- 23 files changed, 607 insertions(+), 140 deletions(-) create mode 100644 pledge-now-pay-later/screenshots/collect-new.png create mode 100644 pledge-now-pay-later/screenshots/collect-with-data.png create mode 100644 temp_files/fix2/ListDonations.php diff --git a/pledge-now-pay-later/prisma/schema.prisma b/pledge-now-pay-later/prisma/schema.prisma index d983fd8..651b6cd 100644 --- a/pledge-now-pay-later/prisma/schema.prisma +++ b/pledge-now-pay-later/prisma/schema.prisma @@ -135,6 +135,16 @@ model Pledge { iPaidClickedAt DateTime? notes String? + // --- Conditional / Match Funding --- + // A conditional pledge activates only when a condition is met. + // e.g. "I'll give £5,000 if you raise £20,000" or "I'll match up to £5,000" + isConditional Boolean @default(false) + conditionType String? // "threshold" | "match" | "custom" + conditionText String? // Human-readable: "If £20,000 is raised" + conditionThreshold Int? // pence — when event total reaches this, condition is met + conditionMet Boolean @default(false) + conditionMetAt DateTime? + // Payment scheduling — the core of "pledge now, pay later" dueDate DateTime? // null = pay now, set = promise to pay on this date planId String? // groups installments together diff --git a/pledge-now-pay-later/screenshots/collect-new.png b/pledge-now-pay-later/screenshots/collect-new.png new file mode 100644 index 0000000000000000000000000000000000000000..2952a35c4ba3e6ab604400c9d96b9258027cfe42 GIT binary patch literal 84226 zcmd43byVBUw=WE(Eo~|AKuakQpm=eI;H9{`TXA=STZ_9BEKuCt9ZIp_?(V_e;imL= z&bfD;d(S%Web>9zn}0HdZ)W!Fy=UuZ5+o}vg8Byc4FUoJs+g#tJOaXtp9ly@zOSCa zKbfXS^g}@S2SH4bU(q>bZ{fB3ht7qzUF=3|tcOOel@ciEUrXnCU@p8uLz}b>`|;zMQa3L3(%I-G zSA-Few@|xGnXevNZZ{}l6)?|gAGQ{GnC4K@=rT!HdYhI%x3~aaNfp}-rQ>+o{7?R% z(9r2xdNMMhhdFRuoMmxD$Zj62ZRV8?z!mWYSo!5)0*%)A?RGTP?67V%E3vKIDA9OMku_v*?L{&q|zOyYffcge`=c~=9e*X?p+~){E3{R}B4Q=qqk&jutHO}CC zH+W1rV|v*yGpa>ItY5fj!WY%l{WhcyRgp0RVXAXZnFa5<4vYS3O!Rg*S~@0Wp9Q>sfD<>hu z_*{nBxW^${YOb20!J+tj+*iLhug99wY!CT))GP#@NVwC-Y8}iMH0cd;o2mGm0FIJF z7#Nx49M2ey#0G2`7adEyL87^0B3d`;PolP&ykEsu$;#T(s5Xl$P~yd2{(SlHKH12l ztNv}Hvq9iFEZ#R+8#Hr2kj&ZO;8iBXf~i>V+?`qx=x-bBTjAV|tHgR)#5^=nl*owK zJ(<11q#t7Pv6%|$$B-i>$#C+xZMT(>KNu=gXN?X1dg^#&fVYM1&Hvf9wbya6s%ty6LC65 za$n}`QVhsU<}$d+OM=2bUoZ12DbP)Fl)ZE?u3M~Tsb;LF`<96ub^(dahBVmKK`@(3urBBL%0Mjl$U+x*AkKGp5 z_FORx!j^2YOY!9}a_7)drh0nBn^Tz!5$&}>KVv2yNx*qT@LTlPXt-(4-;2O;zyHP) zU$hGS5CTTj^e69zBY*a)gvV_AYvW+*{RSFj{{}i9@~BqFRw#S&?(VxZT9`X}Fndhq z@)=P6rQmRor7c|~M^tl-sj|->@*4;zZi%C1!Jn2Z(eeG$Gvg3uh=Jk{Y=TTYbx|AH z$3-pXN;}dvUC=>ZzQT^V%0tC3o~18%I3Op`n=n~ zbd27d`j{8?tZcHWn10r>e}V&YmBTEZ8nz@U`>f* zk<+Txwb+7R2Q_m&e}A}CL911>X_0t-|2-pcQALNx(c&sUE3UAXiTbY*M3t~?Ay-Bh z8sT9zAmZ5g2H%|$Xk*XW?FQ{OSaz*@1>e+*ETYv6$lYoq4H}Y>P^oK257))= z4mU9AAwBB$I9U#ri12T}fOrD!W*d>4@--JVQ}dQ3N5Ln9=KV7JgR9Ltc1oBSSI0{o zhKqG5R`c)b4}H~#KNM&$ArCGeYEzn-DC{KO}Um-}#8U(11Z zB;9O${hyy7E=&*%4)65|vj3eI!a0T@B5D))oIX&eO(kVehDR%M7HF67WU5&{ogdOt zeSuJ_*-Xf&Q5*0-13U!jJjLl>1Xif6FIwl56(s(m=B5L*m^vakEkT)M@BK3Bj1QQks=XoRCb@wQf!&I<&u( zdZFG5|7vL5?ik`KE4mQ%i~1aBBMqz{-7X!;x+L5%&Wu!518POOn)UH1 zg;lk#N7J2jmq2Jpr{>tk@Hv)1Nm(@78Oql85yiIDE8|iYpcHppkeQ`oW8%=SF=j5lF|-fn(N}>QL=9;_%v76V$8I zZ%e(IbgyARnQjiQxX<>>Nj4MTcRl8;WZWE8(BGsbxLtX)x$VJ@Sy0)H!DWoy?ki;* z+~pMC2yw&zj>&xR&3XnpwcC<+m8G``nsjk$zH$ODhuC{OLMdoIqj*g-S+i;uTf99> z>hPMDk#i|YA&d6k#qug%Uuo^*JuP7lAt|=im{_=-nmyz%J1zBca=2zxf2i%RWQ%Q; zuW{Q9aSI^l-R|!lY;D=L6pY@wDc7=ct9GMn>Ao zrd)PySOB+*pCV+}L&-LXJ4N)Omdaoeg!TR%oHe{Z5Rh@}Mw^-Y>xD`!-(yni$Y29E z7a~hNk7G6p_kI@0$aF+CF$?W8syk^lbnVzu8=6C9+8B2rpcBoTcg!?;dzp&2Tsee{ z{vUg`3R`iS862%nxb%@sQWsPmQqyRH_m*UlKx5*3jq3BwXB*;1`Sq=h> zHzhB^D-#lF`1DpAr}|&!N?SranGSoJm;)M`HlE>d1{`YY(QtJmDkV^h+!)CV2c2Ev zn|||J&0E=V(qaH*4^}Q-ccK7L?L^r6S)2xLU0XBFLo0us6IDx6w49)24{hYhS2kTx z8WRdP~|!re$I>v)4ueK^kV(w}~S|BWq`x-X8yH(g6j2CSnh+pC9vjli8pgsUbIZYszozKF$PD$pJ%R zbdMn8hc*8EJTb5g>l*&8F)ltuKY~=4RdPZ7GO8P4wg$mU!3hOO=vuSWI zg&KcurrLVdJ1PG7n?4DRI>c#vM%eres)|22o!Hc;;PiSI(YX^KlY9u-Y3XI`&8w{R zw!c9L5~+K8T*k_4nW+fn>8@#bt4gUsQOxqsn!NT_jJt>PuV$}u`~%(Skr29aJ|nQa z1*IEu*kF3*TxS-aRB%`hzymCjrlZUKyu|T~Q9nBq#k)E}KSNxE5ns!QTiSco zLS1D=;h0()uwb8}q>ikh#pxgEyiK~AePvY?#DU+d)TF=FPwyBX zaiiogr}#ZUOt=_LHaroC*`O`kiK)i=(;9PYV23U9PZH>k4wtd&g-VAy?u%~qLwPyl z3#ck}impQ^J4dqQhO4CWipe}~KOdY;!=`EJJkPr zG88vTQ;m#v&GiircY4tv#N~9@iTt>;;%%d5lKRv`_zsBsT;NO#rHDzKXRdFz{tC;! z9_+x$>ARAkG-XR2zmSGC&!)6&*V|OT{*Gk8EMC+K6CX#>sBT#OkAEIAbGSJ(eK9WT z$uB2r^Rqz0Z|v*3@$$H&k`$j|@n(a~7GVCDi#FA2ToPh@z8Ot4(s zlAqT7`9RY4-9KOKkS`UR{W^CKOMEC}PPCpbR%ZvBUF~UA_YZ%B9QIZ3{_87^KeV=S zeE%=XtN)RU;!-29#_(EpNd2QPA;&vgZl|@*E;RWN8#yg|(V-4tdsvB7;v2PH}5)C6*7-yb67SBU9x;0)7d?lNUf0hx< zzTJl=S`t)LYx`?)@G7%@WGrV)%;yY^Zn4UT@roDgq_>u6v^s2i&ze^j>qK#WJ5fR! zF8~>naX*Jo@smg&4ejSmzvBZTk7ZQum`o`PSPxU@HUQ&X^!~(JrtmmZ*@J)ONZHd9g0K;_te7Pnw|oYbQ$Fg{jTNv?yFKZ>4D z)S6JVIIN?fz^p&l1?)@O>`5-pavJ0=D7xc1wb_b&Axtoy{7zf6Vk%To9~!CiTewgT z7KXL62CDsG$GTSDP}I>^^tkojKE{mWoTJk17w1-e5$gtBn*HwZ?|eh^zJl2X;y5jG z;{{wCRYERG`x{BJT)diDHT0T3#e=2`_Y&OYX%TvzIJJ_|m&$e`ozkw`)zgnV29QKs z+CUP&xJx=#c@t)R=#B1;dgHt`mP*p#im@dmj$SDBorV?rZWC>;v>EgLFhU_3=pn2~ z8%K?o*>GxPjm)t*liTpqMMwow_Dk|ym;f|*IU3R9R0hA|!PK0cwL5#z@=|HW5CX7# zG-PosT>l#TNK5V1WikbmuW_{*Dn4aD!_MDehKmgW+nBPAakp_?KuyR=Y9|9>Nu>p% z(`Ay9hiBwvQnedeGed3ZfJYD71f0)@R1Ulx4F#=%`V4kZb_s7}lkSDNEW4DDLY3oL z0(jj=EUxkNPX=;!#v}r`Su|!jX4?YB(-vi0>8Gwjo9*uMD0fxnEggzPwVJi18Wuun ziU{G8Zdz@opa@eBhE%=CpK1c$9@y>b>Ca_(*3g|pkMj$oSN-Qd6wYRqFwH7aE9c9# zIvI2|%a*G=fG*<1!S_4#m2h=^sNRZYE+B3+lm;1y^(7svQ8Qgk#v}+ z+%$K3dcpScaj4>lBCQ*e7vnjz@n>k@aafvV zBl?Cmgutz1&+F}QT)tlMtEiU7{{EE5sgp#??t9F}1vvtyvR|CTb(5F8JiT>qgtZcd zjv^5a=TFDtJZkMg+NmJ5u#SmCos|8$1M8Bjqnc@PI^VEe9Aw4nhS+^}MR`ZSpL}-+ z<{k)5Di*=CR=WaYvkj>y+`s~Q-yC@e-#*GF&B2Ps#}CjslKq6|+c{!{_Oj*%j11Px zh-ek$@lT~f8)Rx5kl*6Dj(X(JpmGx3h z7-7}Da?Wopv}>|AW_)yFk)l3OEM@QEv-7gIoN0jk045Hz70_ryR6@%9-LA!$D^)DZ zY3N-ai9_v8P-qwr=RM+FN=Vl-7_p;&TyKb;UA$9`*=$-VXwo%;8lNMokMY#hTpjr} zpBk4$)3<_5yQ0%sDiQU)aG;WUfw+5*+C=K0hGSyWcrhqjPftHO^@2Oyhf%0-|3 z1%7Ix**uT!!Sr)Ec{S)bI@$MZ6z3A9NcNJhJ>J)Wa~~~N8eFCqPTtR&l=51leUUAk zk_b5-q(n)X(@@V;EEw2x{Up;$(e&-?vGgiK^h#iYwi3zj+8;7*hdu5rYt0?(gr=QG z?FtB(X>HraST>}u)fQEPrao6&eW-#TQ8sG%cNE~=bN%P7{w{Uy+QN;BK>=J)x0g+} zeP0H=xb`~g-WoI5hAM(jSj=Vo>RF9w@vSATxi>xw{HZ&07eELAmfH#t{Th43bSThreO>JM43Sq7lMSf$kfCPz&+Rc zP6HV7$Bzc&;3~x9LZotdx15o~+_jUlLO+I??of6A3a0-6WL|d3hCG+mX1-PE8N1D< z2Q~(04JEcz%$w_kE)p|8ZcR5Fc!k$fk^ayxG_%fSa4yn7ZxquwdpXx<5<8P)nZKJ` z^Z?3|OdA)-o>&iOA_kUQp3z`YE4wZX6a}zbTqfu4xiEZF-MhikDUq=)Cd|Z(I<*9< zG4o2;Z9e9K)TlRHgLszY7MYgi&Y5J1GWDhRn-6j~Ck)@t!PzFK0y^HrhO?efg^LF` zX~DyEobmCsv1pe5{v=7o&p}DCn-Z_qy2mw0uDE#I8wvcv)piumTHi|?b3 zg@^k^-Y|xwF`b8j8N_zy1FC`I=|;k&o7`Lq$?G;%<1>Z4K@%5K%q1t2Ur3kI?5#VL zFDV|^{KqL}WD-n^7}I8Ozx#9b$uOBkpC>w%;2zD!5kxZ?X|t#YA(6{4kyA#-l?ybg z%mP{P+IEX48#&&R+QY7+u-3g`!)|G*cBQsm=?f5QGU3xI4yR0ee?={p>H}%k<@9a4 z+z^kp?f3eCl1VO@Z14_%ZPhkgnGGvjZmVLaW{SKwyMAhZdoq{A^-f@NGCfE^-ytB} zPHErs&8>mhH}8L|1+1jPCI^#_$EVG>s&j8jvqrV=^v@4J+e^ozlNZGbG(_OSR5>g} zFLQNlB$;6OpM;lusTK)3{HqvqfwskIx=u@FzvRBd-8ZZRZ6~hgj?3-KG?Ri=#+zD+ zy?nbS<2HLM9>X>yH;CH-j@$#DNuGI``T%rlfBK{B=`e#gCM?RlK>(n+6{&K8RaPNw%wzFf>dN?_QM zxt_#j>(y#`il=Si<1Ej(OsTjHHzim6$>><)W95D9i8)}59yWt~dyaaMBq;{nL{62w zr;{LP^5b@XykJdTea(X<~rPxlrS1&#l5)3!N(!p zRRR@ro!RooaOJ3vpyrO=%giU9**gEOs%_}P&b{AXiQOf%uGpJNT_JeaJLA~hoKHc1 zp?T4FRCTGM^*B5`$t)Z`UuSm5+^yF|;eOvITJ3t-^+UPUJ!dEgne8#xa=v1z^9q@| z4SNR>H?>O~p&AMx)(vGi86V29_!+qs#RW?JlW6?>L!fJQ^pKABbWy81N(S82X-zpL zI?G{g`Y>l_V^LyF^9)-0Jm-~Wsb9198Df7}n7=P=?Y}w*E6VP6)!t`}%1$g)3VEEL zCYqP=i?GJJoJd#FkbXbJ89zmTu)xI?03`swWf)ps>K{s2BWV)Sk~~68LG8-&Q7L$- zKfOSYRyZr3V!1hI*2K|qTP6;!`}HTeN2q?cY=Vb#c6obK6ZR^pngP_#rEl$OV(8$D zF{RpgzMWq5HOQ&yM$XPbF!DJUl@t|uM!r17WmbO3ELbBgUY_mLQGe~?^@QNoDrd52R{^m^TQmBsOoBZW03z2BfE zUK~fB_I1@8wBlv*E_fNfF?^8>`+D4nlgbW%53lrsTB85wZ}4D2ve+1-n!^Z3OsnhA;VpJo4V!5 z$CO(Ka%bL{S{cFS(%A>wpIXORtTs`94Inux)sW0saCe!$|)HaI#_hpRr4_maiKR zR80PHB;$VSf3m##f6?+g>HY9!)*gINFEyRZnoy$k=Y2;) z6ag=R{GISS0pN=k4q#p=15e?S$C@z4ZhIW#wWGVO#m1^{D1-5-14Zq$u(_!%V8jr{-ste=1m%jf8ox~wSP7@^JAeu0$da<TCgY3UQRUV3@TaONRO_rIM?AX@S2+ zQnh&w)lk=B^xNzo4eSz%=YG#wR|U`yB%a!wFl<*F1Q2mfkiN2#c=+zkR-gF1k=i7)A*ub7>Tq00b@WMMds>7qV02Y-w@gt=G!7O zstLc8{JI04C-yyb#JF|Mbam3G%Dc}*F8`cF#Pl+qP|xq^L{_qynv{BXKJ~714k{e= zTr+;&KHA&}Fc+G#H$kEqYxaSgvR-4z*wLbKm{vswXQpSmj7#V|G#Gu`B}Dz3VRcbi zxZTcItkln_W=7=l8u|uJ+tVczi#}onZkHaXM(b6{+qweyLbEMom+4)0FQC5d9D zmo+SeO!aH8n_0^SHdM|+83OVEp=@wtS9qFM1YlMygE`8!ZXxIlS@11FG_%`^L zvgGQg0%$7Cf@KZPghj)-ex+=FfedZuB^QTELUzX)$6Mo3&Wl}FsTp9DPpM_&ed4ps z!p=_oclaZy)u)M;wN4!IL~e_e)F6jUgL(jb29H+pYd-xLhRN9E^EF6J7x#P25r#E- zzW^Bk2hA1_z4!|j@N(x$j3MF+2+mp)C$ot5M-x)3)bajauG<43%nc73Dqb*rK zuQbSYNC~&j0NpCt0ew?_b6BNGVsQp-uK)1krz;$~ z0$LsJC5d}U4?p?Uvtw`ZwG%8KMtvkg%X)v1bz**ExK&7yzB3UdyLd1WL=Dx(nvD=y zw0%h)Dk@l*x^N%*swd5@CB4z2N4zpqaHSygP{s2>fYNOv(mNG972Ck5<1Nosck@zJ zz5X*aB|7FL66WFq4P&l+iC>&^$Fz&0H5pj0385n)zf+8>?mlCQSYt5r!J3q7fy%qw zb(4|{N9g9dx0A#SXFZEU%A3>5tb}?mDT$Mi^OPAkX|h%ZerRI8Mn&OnffZWLq_+OC zR(bH!=objk;9~iRyVHLMT9)q0eksLCia~frt%MDLu=WofQ2l0wCXCr!f$&!kUqKSS z2W>7O{h&(qUdtb}CQUvKa_pUU`89@ixYsyT-WzCgx1>OId~aklP1ez$RiB^8D4y-v zGhK5p`i0pomb_q#HHIEH+p&pxtr5|VQc+!jxx0v?7wTCDQ9Yl(=|`e|@3UMkkN;9?GVJ8bJKg}xb%!CL1>I0ps@&7 zu5dcWO-4)O3l`fmr6{SnXz{)<`H}W;4bF=YdiKkJ)Z;Uispl%KMg?^GbH;s40&b{w zUZ~=~hcRl;%u-Xe2c~^706`JF(J|}C)Ns~%Q|U*`{gl?kVym(oQ`T88v6#z>qfw;~ zi7Qp9{%F?1f3eHD*qzJWbn9qOJ}4GG!>QC|+yzZ6Um!;fawVDB=9R6ZT6-+GHjBHY zU&v|M;h2yAG2-?WhXOZs-oDO$brieB^16$)BqkJ>luB0`P2IU}`i>4G=JSRjucE|B zsdSaJ6$VIZh`of8mgPoodm8sf9ss#)mxoS}IJA ziedn3^D~})`*8-2$j6?K>!TS)tO|)FZcB;jT=`c{gf1ihfce?P%$H^g)>yk@GsKk` zyUMK>Lz{OtVfZ_YdgD=f)3uK`|^|0ykc_ci0A zD}N$BJKQ&9EERq=dBQZC;s0@7(?~c0()ic^?v7F6IA{0n^vB&*-HYKDt+VA{{)COd z+W$FnfPVn*Q2qz%nG25c@buKRgYsXi9a}-x=7fa&|H$+Y1i>Z;F&w9IGvGP05}>Jv z{SqWDF8Ye8n_g^(PI34-?9fygh_*KqL--z7 zKEYfFXm?4Y)?jYENSTd`>@S3l$66+kC%?1Hs}=iUnn*f3*C0(%s$-R|rOL^dR5l6R z(HN{n``-+p-sA)jvqL&1-g+{W?9no|2jkyKm7AO!L4y*Ls*BVfAq?-E^>|o-Zrl zA~a04GoMn;$jl9GJx_VR0b}7W9k~~lpO9{ zzJ!ALT1nMCA6w8N7YlENi;2Y$%GwV_?af8~@Gy*HA489`p9!MbZ%`trtF5iOWYQTI zZiSIq!e9&8epH;%AksYjfDcrMqROd&G71U_)`&ygpHC}$(-%UBsECO8T>;Rec8_8r zsxSi&8(C4CbA7;T{I%MmnHl1=`hTkhv@#c3_k35Jfc<*j8toBIJ0pS;_a@ln@Cp}~ zv^?lnj8J&#*7dcT>HCeXg0m*g?30U9cehr1%WtOnZz2((H`M``9}0%6NU~`;DaJp& z`U~fW#W26I@vQ?5Zv&P}VmQu)NkHToZk;d5au3u;&z!%VEjwpNr{EE*zs$dPnL$>( z1g@ED>z2z)J?n^to+n6}E#0q3I%Z1`x~LN zJ%V+zw)ELr^rdRM$F4Y9*UM0oB&W}m1J>KiR+y)OyC16c9~OCB3MR^=|Aia7s$<@7 zXS{~m_PU|tT8kb_f5p>UEx=e{sM;Qd_NK zUN`Je?*sjpn?p+pRgNyv02tw{d7Zw1Mfc=)(;bS;jMX6PCz&nZ;zD>m)FD1-Mc3Q6 z9pxll5hkUw`qwXnh}ypw(EaZ)nezMa+KhrUmSJ{@cAEBk+^LX%WhAJ->amxnYfdty zMDBkO(*wr1B>$C~F3+RboB>?SW&VXejJCJ=7c|$zx(6hyT^I|CP=A|K!q$z7q1uDazmcxot-N7BM`uCCsYW(2+&lvEn*A~`_N1wybb(Yj=zW^Z50 zZ=qY0Y5bMZ-i^^scoUjHDeBz$MNVdT$1{C$O&$hfr=jTV#*0mee1YvZ)w41=Brad7 zxR!%4A=B^ptBS7T7h)4E6?4C>$Rv~#`gCovb!NGK$v`BvnceJjev7ZS4R5Eu>-xQ) z%x-QNPO>k{p`uwpiaG1Fn$1IYBIj2LR8TgZYf+1d*1n1{8wY0W=DkKrDt!6B>Lu40 z5f#o12T?meWNmhT(M{HisiL3tct13vNQUEcqms*S=!g{Z=`#|&j5#ORdpjzSm!FSJ z!`r5sHgjn;tH`G6tsNctFXcMuL(zbV z)oWvf;lI)FJxsrvm|8($#hn$brFmj^-sw}1dh>PDIW9YM%A|$9E1Aeuk#%D0)5n?g z_}`LcvQ8?2^4jHU@`LL2t}+ced)ciYo$iOHf2IZh)y+I4V@^RK8S(~;jhDAj&*sL9 z!v&=en{-!1^sP4QWe-Xadlnu;FHhNAlu%Dxt=Z?63$@mz!Qq!R_G3R~z4)%j`0`v# z66D29Z@nxq`J7GMvx>|;bv18tdlTIv&I!I9;9>9qc}Hd9{7YqI6yT1fi%n%@q}Xwv z3d%=E6s_!WQ_bWQvJW6gN^(5OIzh2q92adAlMUHSKiOj35_3{op^0LQYIFop$Hq!{ z-HCa=$A(y7;!jyyr2IWcpcP3Z09*tyr2u0c=C!`->uW#w9UFLH0Y44=6H9r~EnL(x zkXcUaN#*X~)#gU=wRd*~b`}?M9Hz2@ZrxMEKM}Iu$b8^vN!?P37d1)1NRjmnEB*yG z+Pm`fFf-G&-RVseHw>5sO2~PZ$iF7>@7gF4RXZ6-IrJeGAw>%-{bc&2@3IQj7fGrT zp8UF7SB|WKR`6Vmst1qz-{-mg%kR5$NcmvuX8(Wg4aN{OPdmMN6&* zWOf;?YQ8C$!N~ZK43;rIXUbHDp~+Xt09uU;D|H;ad7f1RSaj^y*1*&SGC-8ZjLT_o z7{NzRspQnbx#X0XEy?*-F?}TmZdPh~8t$t6YWwrS3gce(PA$6a_lx6vJu>)mc{T82 z7-fn+8ck{*EavV9v0s{!M{<9H#@C6~kY|cCJj^192(a(lY!k0B6m=|-f&G+1=9mkz zof?+_I!jy}eYYKRL5I_v+sf!#z&>l%*6@W0Ho-KjxmCRcI8LdlG^)CTeo9R$SEED&y zdpUbZ$scIu@%Zl4w-VlOV5>kXpI?JXJx=*D*M!H0w^0Hd|I|i+yRe(IaRhI1h@Z`A zVhj1CP?&H|n+n8l>i4M68UP-V*Zo8m;eo$jeYmDzg6{#dgSP zy!s5seDu*ZaSI0Xn!=M5`82X8-noI@>nZxm0h5o=Q!cl8YV*D+YNj{pj!E29i+8D& zE6L}LA@^M9jb&b01!SC3hc0b16>dAVc;TG!B#k=mx<78|ZuHbN%nv=w7EC$uw3(JY zW#9+&s;ujc$tzM%I4J*(<8-CTCFM0qM%c(lct$CdV2-atXhG?fG7UM8FL)W03sAN2 z7jgeJ^3^(<%a&ATV!ZND%wcUjc*+PeH-c(P_JL*B^LU+_K9!q>N_E5P%BT;+&t6-0 zT*yvBb4Kh3mYP_hliM^&lb2?~T~wUjB17Yac$q+TXmPU%xU*I54_MvgXuJKp|MJYG zD;if)Ed^;+%%#U7l*Ut#)pU|dG2V-rr6`dTMBFM?IT+O{=cbs9pq2=!7fG!wD1fp5 zgq)zJ(H@>Bf~AJ&EWCsI!cSKrZ64-gBd2*-PMbMP_k}s zZ2O}SlEimi|3u4n*S*E!bUFTw7;Z}k<`Si?3p|4x9B9r2@LWh8m@Rg6dm;m%aneEr!!Sj~6e)TBdK zIH26hn3_1IX!;x=;;f+N<#7EzX(K|!^^fP7iZQxQ((|0-JrmXstc#qDBx&J@Oh!yvng*#|EZBO5C zV3tm-aGZ}V3dp}kq@8o4%NYsMcapcd8JvLSO?Y&4R0As}^W1qxvn)9Jl}{1nu(f9A zc#4#jhw3-?-!JRPT4)PS-Qzojv@F59hTiDJZQt!hv>jVu?};%`D^EMye+h|5i+Ph= zBuR_oW?pyJpsm-_hiN~=2lsVF1^7s!hW`_@I`{>cVje1%h$;h%kG>x%CQFFx|ec)ljosoVl@ za2c{F)XTsx7y5*8{`lsvlEK$vv_@YHDPgqNi(sl7RMva1iNpU!%jW#Jl(a!NeuQ}@-w$0SA7F&m*PGJ34K+D_u z0LT2n*I4Ygg;_02n3L6c&i*03M?G1Z`5%lg!vGOe85xm@B`!*2FZj!2=qKLU8(1t% z+sfevsl>F zY1?Y*<_$RpzLrz9%qP8FVcmoJq574|Uwd3im64MXGz5IY0i>GSKQ#1RN?yZoh@*aH z3V&OzEV67hv%Hu(g3S=ftK`-cvm_l@7x%|CRGSS&^(5wpAqZ;ORT&iyleL4Q<@9%Y z+B07$Pk*g-MnMS|6c#}?*o*h0i7Wj@tg&gdkws{#OllldBa>=p)}3Qfva+}qu(S11JZlU z?PFU17Wi^!n$z~<>x)C&YI7lBGjS!k@ZB$LTf90GuTebA7^Bv(%u5uIGZf{ube2o=g_wx^qymcMO zd$X{EM!8)iy3jUXD&7Xr*2s_emF6rtbGGx-8EO!eY{HPgkv;o&X+9AMzO%7Z}l9kVTkmp+f&uPXuDH_ zP8!bUh6k^M3eL8TEoj`dLR_2!IgkQR|N#x&;}J}{g>XPs`|bPB|&>Q^1TP>R$znVGl1D|DTmT`BCT=uZBfO3L()%(^L((540s$h zU^OaLq}uu-9rXPDEV(mBGyKL2+IYdYBT?r^3Hp}LT{=7MOmt@};VR#Kod#*C7+|C= zmC#=5-SRAr+xo^ZG?a;Lr)8fDE7ih6Q5Da)CH>V6b>PAC%Grny@p-dY@7-K38Au$e z9ZKOo`AF^0Z7N$~vJ@X#M?%I%4&W-jHn-b1p%ycv(0|0X)oL7v=v#-zVnXR?_-?+6 zu*6O@JzBWXzy4fh?)B~XH`1m7VDo*tVF2NklHq=;F*YvIYkiYmK`{fn7h%7K;=M?S z@J=$TaptWi1l*A@x$qkj7+e(zQd1q)*UXUvj+LBAqLEP)4YZpA$_ zGi?4l{FbWB!#z}kHnU;TWhkwfHMz#Z8gHuhvTa07EkKDjKZJ#v%r81a3=s?Aszn&y zBv<|twvPSY?>TZo!?@=e&4y3^Yc9=A!gJ8(^Fo+K(@UXMk^raJKPg%1RN>=!4f?{#I$D(W*H;Pv(>;gWlb5%3}2z zRfesxo}S49w&}6AuV1$u_|LIh%yJq}26(t#%7TQS0n*&rcFO|}AMY1hw8JWaWHva(mM23j%w>m@tij7v_&Yl)l>VJ*r^;MFSKf(__~w8P zP2bJ?lc*Qqv6)kSh!bqUsaF|X&M-;j+RPi$w}K!$Gy-oI3b}c5r1SeB5H#5;3%~+? zG^{!knq`M_h~H8p94Wy!EWvxQO9qGpKBxzYsG1Xa!CbCg7FgeDR9o1tZU7$2G(df2RH|n917Xv0KNO{P2D0XmRsk(lr>d=%%IIa(^Il za{5De3mXf|*vP0)q@^Y-TwIE)ihZLEom%ZVocTxvC8oel(i4*PV+e`sY)_$u&h976Sy)sZo?%q7{d&r@_^u z;@@{T5U$=l{ou-%jgm&AjH-)skySKIwBcPRGQ4|sviNiXB+FSr)nwB7pH5e>U2C$8 zkzA)s)Z`kvTiuPQ%x*edW+os|R4L6@h%_Gwd5koYC|@fYs4h*hb11$@O%&wm@jr}0{JUDCRx0^x9%4X4NoR=4uP_{kk^RBdL&+Vd4EVLBZCdB7M;4uMoT{W(#VDi2u?xZl)Ti;yC3T zmvvc07gHtgq-^w6S`rmadp%DJ^?HgQER04~FX}+F)KpZ)uLIkf@o1mB%;I(zef9W^ zvmgG6huukD5v)-xu@o1V%Vs!lktJg?0^u%(>o9^>gQ(rHu^r@x@-|e#F01mBmD^vX z<(Ge^y1jiUec_aJ;GkjO2aeOg?Aq6J@xt|~W-{xPL^`|clYP70J^H?NGqs!jW~N!| zp8NVd%V)tYV(nxG3gf&0>|i084R6QXsBaOVn53@F>mO6&fBx#r_XwqAv?{;Yf=!{? zXsBG8>;~iw>?Ug7Yg>J0GRcu7r*c!%dPB9?uyZfeUG-%N@o#Z% zYj>%o1M_KJo=lBJqo5N`LgWPL*8e-j1^gIFA8e!QNx!H{P9RfTd)UbTuO1b62t?_> zz@)jXZd8DZyu7;h^H}$Pn_yRw@i!kWJCZW!8}~fTn5h_qq>l){dj5xNd~DGs`LIIuTfbePxaX)7AtUqyKm6m!YYekGoq3@YuU*L1rGq2< z@A1@^CT#wFJOD~!346>a`n>L`8@Ub7RylY|UZvvyYPlJ8Rhn-wp8E1IdyG_Rvl!7gH>yH+>lwtoth!AcH(XQ^QugUmfy3uy68{Ag zEWdT&`T6umBmni52==Zi4`ruW&we_^NIbm6~>HI z!Y#?optDZ{H#+1fb&8dekOnnQa(m}4A&w8B@x}}z&WHJKDm9{&W;Lj=kWZ`K-ux1u z9;|2X30+S1ztypKL;TdL)w2%qrVlVTj?W%7IhiU*e&^i^mM;^pa@$q-k0S6_az0zW z#-0NrVa#&E409*j=~BnGc6&b^`M!|o?DQO*8c(=yeQA0jLo+EXDI~>X3E!cy*`ptE zwp!9BF%^=LVRJsibwISwkLupgOm6?ZF`~j6^1nq3wA$}x1`KF$1m5`ZS|x97^Fox; z`G@w3nhdAc@mg{G=7roTgY=vKuy|&zG^y**hDy~mGdd1~7~vmJU#A$9fPc3xq&~{1 z`*76vEn)ok_k$mtyS~+$om?`R^`p&7TWV1uCs)QBn=ez1iU?T@MZNsVDI7`^)iT`u zPaOXukG{QL;H68DfOKTeWFhV89{L>R!&r7KCMo}2yy~_NC?3wjex665ut;s;71~*; zYTGVbBVFEw$)n@Um8Um$^tVE$lCqqI7S4|>?Thz#$XI3if*urD>&GY}r2IACr}9Sy z{f;lOFI`qtd-VOq>Fj5%=GMtUv$Ps3mGSzwM*q>d%MuPAU&1j~InK{IbOz5m$#-i& zP|ZHHLPl3-NZ5gz5fDtUoV_(1?zA8`6c%H^MKNy+W9ki z`-i>WM6S3g|CSE_^}gXBZ*!&c7jv{4d&U#Djij+=vtN$Nm1-LUa2F5r>B2&NT3lZ& zi2ggshy4GRu%Ur(e4BFbL+OEDBgc$-m;cO7c3|pH=vjuZy;?{X0OVd<`GE6jQTM2z zN6y@Moe@7lc2fE^!uNw%4hXbh{ah`vp54d@5HtTV!a(tPNXYOXZEkC|zLi|~$caqj z{tCd5UdubqQ-FfSLGbFW9@$%M*CC5*Myv?`D2I>$^$B$MU-upGA;16k$*NoFTuF-$ zC+e+dHlxWN_|Ipih*Hoy84pfJxcEarZW9#Z?N`jSY^VHDJFXMC5voO53P8(v?}VqlyI)Gbe!U%?ud+biN_ssoUo$Py%S>+iXyz)6>M<6t8)^L!&Snf=zT zHHq!K^w{iQne{m=3k_X@N^}&|s)0iN>bnRg)=bvh{CRbd`?RU9PD^qpa6riJ^s{6HsrgKJt%w{MPHxVQ}Hx`Art8jQY2I*Oc2QDWS zOQl^Gz3fjp#Kb%G_gSd>1D0wxU(F=z^l!B8wSxz}H~+RL@SO1^lRwVeQSCj-D8*s+ zki5!G2NMCLwhCQm!s{(&>G};~<;S_+d-}Qum;zy=iJ69z&R*V;NJA8sT5sX}Pu;Dw zj1h9TXU_ds`1$ykO}hbJzNQ2}Q!r>QQ2nZ{ek_B5 zwR^`fF-tQaIHH_2*}i_g^10MyOUl(#chdaUPvZN)NIo2HgeJRlX~vb``MnWYaYXKA zG00|1?X$FKH5UqGoD_@43Sql;#kjaAI~UdSUVO%JzrrZYh?VEi`PjB)IlabgMYp^Xy7s6%(~wENbFfFbFZF3aiBDn zX|bEtk3iD9ckRa5-rTVJa>q40aCaJ%2ggE2Hx{DuiTabRTld?o$0)idr4$+_j#xrJ zmx{aj&RnTjBYNF*y`bk%KDB-GsOH1ytiyQ-f}-O0>tA2_0y-RVzqSTNJA z+_4d6G2J1^0(m2!S+g!7uO)B0A<{B`TRN&^c1^lWHcKgM)|3<-uotFu>HZM55s$F( zlZ>seg(X?NZU>i{Iu=DJCCx|VI_3uD5sbgR`BHr;L&oU~cDEu}tczL3#n=W_7aeI2 zavoZ&>)e`(t#vHif7(1n@=}pvAn^Cmo5<;3v^ck4H%iwH03+8$nA(EhSPYK#ofsbd zc*6GTk4#|GSY(`-FVA2~og(4E7`KqnM z?Y({83bR2|Oersab3(GBu$5_7djmXYT6<|Ce**Wm?4!(SPw>;DmZ|HEzWbaQm$#-$ zT#I5S4G{xW3ypQ8C}ed-0uLVAR)t?qIG*x{oIm=_?p?FfEme%-rj#Y59C73}eG2oJazCA3Rg(hAtOEOjrCX70J*II9+Y>++Asaa!nn<>$ zZxDEj&#WeV`pN{(A;{QanuK%i$z#vNyX&~i zsu~QlK#(<*Sxrsdz*^D}uGzU^SrS#5ysyyDt0ctkcQHT=YtYGjT=utMN(gi=!%ToFVPWbR}9EA5_kLNDHr@ zsjL+2l4meGjeeTJn|k$Uz#39klgxmau3HX~FBFA`C(zlw~7g1Puourb~QN~K#-yHfSoJc^{j;9)D7df1hD|9> zbkKh-Hg%C^J#i0Qkh{d+Yxn%lPffSAoZ7-tnG94Jd%3IHl*jSuqf3C?x8`$)nWw`0F-pkWUqAlw-r+mCMWSqF)oi0lC`wfs8zk>W!Jyoa z;Hwg8-n88uTG0LFH7tj`n3!5pT>nNVrkqsSbY%h4wBV;AiaY6>se~Uj*4XGBo9f)E z=6BB5rEc-8VSbj9oE^t4c?5;BwcI!dj!i}A%Tsz=d}^Gxx&<{^vf=(>EK$Y5SfLZ9 zMnz$#`z>)FE_uh9Fsd>O{M$LE|JWAaEUUw|J+f=2tXuEYPu(a}Ki1J~6R0U24=KP} zjE0#O6b+;Vu1bvw&QFD@!RqJx?Hah3^6;M;ys$ep^*CzYWT;q~Uk)2rq|%G z=X|$dvuHL+(qkj3_#E3(4Mtn@<&&2g#@{Yuj$)b zT{2BQ5Y$16h~E}iMF}WAq=KP_`3yu=GQQ>Kr%&oYvyOUL%cJGG~X_MT*#Lg`G_D%a|E6 z{}1(e)ECMHcy3p1&g_XGSUVpX=)<~MPXXP}w;fL@R(wM8D&Xx$BGgh$?Ae{Lqk`!= zEOned`r$zw4Bm(x+ax z9K5VUsU?3~`TMaW#u9T;+AfNdPnBsciw?$*ldvF^z&i(&Tp2&iXNaN^-0EJX8z^|d zAb74(6Z0+tpiqI#&{<8`JaUk6covF$Q})!4y9c2EWYm z@udA`kA%k6;Fkd;>Kc9nAj~SNg!A_RFcfXC_--|f#u^dw{Na=PpNv2)rrt^_5^G0! zRJfi#aqcjsXDy;~w=V4Gn_|;dX^nlD+zuXBvYYGJfGA*^VV_UuYzL^z#p0*hSaVkZsVpjY2F!S}71s!r(A+=YGgF%vvGeaJWwuRXqoR{4&(~73 zIk;7(`nSK!VNEyM{2TbJH5tiV(JzQ8CV5LEgXJXhQ`6l@VD&tJAsKT(;fbOS)V?UFUQ0q!~JEs>a zXxzQi&-att&gmeZ8mB1jX3#~wOjgS~(v7@AamUKzOLVIGM{IxQRAtivGv37KrTcP1 zayvvwLuW8iPuZ(f-|fk2l_QN83I>{HzSfC8Bp`4ijZjonf{ykF z21W)G0&Bu~v?$in(Y`p>w%c#>!r)W%ENXrXy1&#o^*y38YJc2}?&=!G{Cr#Xt_<{i z_%&F$dvagGm?HM)=S=C35Y6>5e{Jpw)>y{Ky2qy~n^!ho^GQ}u9u0mEUByi*^=n2n1@3&v-vIH6s#?wS_@IPT8SllO zcennvl{R?@ovGnd@zSZcpU+xq;#~|^Nq>!vZdsW;+y)sX8ppx>XM>M5R=!5JA8%v? zl#X|y9ZT@1G6?6E@C8V}jt1i8=FLXjAmTKD+rD>QeCf~C<j8kU(bZuyKReQ3dJO4(CkDNq)D)s#LfMG5q204REZUD32( z9Ieh8F|?PdPi%q&5{yIZ=Yy}&OhKE$WJC=O{R4HQOUjfFm?L z^5pNp4sP{j+AyJzWpZH@(Q9;2PZ^{eJvRlR3 zN4_=nQqx)bK}O(edp7d2TpeL$%@}yd2dynoxkaGUdLs%*UX3*JHU%`M{sJ}M(3Tw8 zy6IDc(vfz@s$4($t?~d0>xe}zQR9FNQpZ<{Bw|yctHWQiex}W;)OV(-HYT^xRU;DJTc`R*Y zoR|h$Xf}spllUGosN1p$u;m!*%7ACea#oilPweu?Y_*>iD4AiV>hL&7!4X|Dvri;;E<;-vo)i<4s~6)jEbow+wgbD z>L>asR`C$bqx8fQy%<~*W2XLy<}oj`0R=fp+y^;XtEP8SZ{7r5qAL~-_Fhi?c{KLL z#T#<9=rw-F)}wanHl9-8PRjKj=Ju68a(ZOsnc z5qgj=Z;HK;fjeCu_G`^TB>c}Oe7XbA+cMweSdAI())!PKo8>}ZTO!oH=@|8Ge3u8~ zXoItS)ViU4d9laIa_K^~{aub$Q0&a*(%FHQ0Aw;{2%(X2>C<@nE5fD`kL5{@{svlN zKdP{OBbdB!>cB%GyfdN}ZYpBzy`Ahg+X0b9jQ;PfL={8c&B?0mEiV!9%035!n zOrm}8uutycTB!ib6Y!Sey8XISO6&0}-Bl45*~oTpZKP>A=Oz68!O`y==5kfKPC3;F z;w;;op2O2dh2Qq)-u!rdy{3|0Rv1$T9l%V$%TrE-6mF(h*jj17zoWhj!>7oXYZX3$ z`p02RnLY=eCvoJ+MX0^Mhi&bc%(Fl%GfK5enS4&D@uENCm`HzpZCupHIWrTn8Q<4&dH*L7Ki`av zNIp>7W3*N?6S!K78zi$`Fg&ZE7Cs+QF~i%xk=t|`{41yGcRIJpt7lteh(dA(&O67Q ze80n`xXiq0eV)fIeZ`C2O=}(ROM90}>F0gqgIo~#_hY zINucpG_zylD@WGvUsf8t%j(ZMcU8Ttk)t-!<^S=$RT}K)5N#tKMxE)81O?L&WOo6D z@9N4JKQmtxOGNscXZ4Ne0=i?PGgugNi;eMyqMtNB-!1&?L3 zL(dzAx{TA`iomClarkMQ7b^Z9i2nE>;Ju~g5d&Xcw8-$a{X=4BtI?Co39^G}AvbR& z?RxvHZMiKpzqMcnH0uDRL`tx%Z3Ly)%YMjYrzkHWlV26YcznV&Yskhc?mgGA#{4jI z3befZc_S+7V?GDjrn3_HzR=33YT#TFVzK2IQ+3o48ZF)IbaeT*r`ocmk@U_fAdE3+ zas$08bPVgvq%Aw1Oi&V*XkGrTkxR^AEDF`@3m-ILI|J4D^zNuMtE>`}Gu=yS3tcKZb6er_$mtGXu_b|AH!5S~N_Qn6aHDXOyZf1t5P9 z67z&~`Aj_0Y~jMZ8C`pqSvU^Rb_u<_zmj-*&t;-UwabN&pkxcs=sz|PyPT-1VOZkd z0Jb2)$gYk1NWE)CiBF)#{S>+26)e_kx1OsVBp%tC*W1S|!d`BYUME&Jb-_a12+Hx! z-^cT3L*SYBKOL8evAIu0eLL+4+&2;x{>!WqWGFJ^kK0|oAup9&OxDiafl>74?VH;Cv7&_mqii`Sn$_+=VOw); z?LXN#SOW4NPF~#ds=<_UTitsyM21CPc%Xhgu4}ha+iL?B-QM=0=i_;kcS#b1g!fgg z!P5L;|5qLO7a6kNO&K#V=A2};*sXQiF1c0J0hfztZ^1Os&+|ogm)h`od6kaiB8FRS ze>;nsZ8}?bI_zprHgS_Z*IV+E@BiMaNvphx%#&trLyMAnl>sOg7UGk5 zPd2URaG)$*j4Ti+a4!w`$bgMbwGgx3PsLZHiH^)m%(A_Gx^s`3#<<4k9!!-|-4sX3!{xyPot@6!Jo@Utf-5KMkwV$SYs2C;`>Wd_S2OJ!6 z1eaV&Q#5V44F-Je&2pMgjMd7~I}eld-1q6=D>N3gm!}QA0+i_=>t=K-7G3+v~fqH4j&tfzxWBAIj+|Ynk4dANPZ_^v(FNZE>y*JmV#81^U7+Kx)w2qWCo8!Hwb$( zVRz0v2???J>w8Ef+#CCli(a?u8H-`B3vZ%jJ~v{&JBm(MQ}cK)0>r4S(g=P$-O8kY zQN7bWJDA_qrjxA?x1S@cR4si{@2t>@(y6)>-g2LT@ax}7e)~IBf^$xF%HZ|qNR^)6cZ><1}Ukul?8}~^>d)B9GoRf7-bni1=%#mppg_n+-;@!JC`*l^) zW9)Qt^YD{(k2N21fi%}DGFJ0&3$@M}QzfR!Cx+}30k8IMCHON9N*x4JPBn3RX9e<$ zx}CZ<-#ja+oq~_=unWSyFUspgwvC&wZf{FYS?IBt>5;{M^Ns?sGh4T5<+^qypZFl9 z?35)8)n7^<1;scFGBPq`N96}*xhPL;`k1OaRsOJyM1Oz&jb8VqkIGKmEqg^_io3h6 zvCW|W%@i~HqrA1dQFRuGXdk+o#!++adMx?>+*)iVYj8HH_H`UfBAOLNEINv45)vu? z$FPej+4&Zd5sw8Bk;@^CmQ1`#-|&#A`5&(TAqISA^}JFGcIEHoAenu|THW5GJMp1O zb(eXcJb%U97~P0PRZ8N&yZq>-;Elb%AnEZq=NU#4HO-t*YuN^~*S3heX+4$>qDAj5 z8Z=1b(P0TQ?U#X_;tIpFa;YA`u4Y!evPs-HS5u;w;#y(ZcWlx#OAL3YQIUhwg-Zt zi-o>=smoF%&&DLJ4J~jWq)_bkcl%w)9`YtX#NdMM!I4AX8c97XNyQ={4pcF5maH+) zJ7dA>-3fJKGir59*(yKSJEr^zCVOU&J#MHMYz@j~i+y zDvpbqXRmC#__Q_*+h8p+UwBW&skx}23gA4Gy^3eg8O78I8Nj7O-|FgEPoE^4z9HfL z#b^-2SZ2-`mkLP)m*M~BPz7`tiN$sh5ni#L4hxi(xvXmfbVD7aVg1`#pBp^EJ$l=W zJRn)o+2~e6B@=RmF1eEhGGU-WZxA!L-3wpbl>X8ii0?;c4234z-bypPA{9eyv-=W6U5f1DOJWT z;}qBJ@tfTicJtGve@`tAN-lPFRtrA4BfMKrQ(dlA5JkkNV;``RW|grGk&-n@vJmzO zRXV*<&UoD<$rn?Uk=BS@o6`E7uUxgnpX$2HZYK&2vAX08JW)!M?A5u z=szmYnV#Avc&9EJ%w9N7fnuYjs~}UVM-A~UdDN4Vo_}7fF71pym~WKPF&rBG5Wi6^ z4Y7LHOtBp2o|U<G!okt_Fy1WA2!m{3b;`1d@ zN`gypfl9oX^H4uuxam`))0`g~8{LYQscF)V!uajOEZ2AwQMxy{+QS@6xes)FmY077 z7l$3R51vR$oMFt4Ic`K*@X_7^{KM)S5?U=i&Q|T0MiY9yN)K&9e0JwVULuDpgfV0~ z5uZ(Yu0!z-PaI})nt^zNU)+%l_WFGt-hMwFmtHgV?4DH#t$4oeF|s`;?TNn{*z34_ z3a?AxTr_y|bd;%m|6cFo?{+*r4~NoB>s%R90l zddhGz+c5J#SO9}2@4`{HluB}++YBd3z+o@mrP(}=f$M7%^T9q-g@Hjy1wg0l@GJU` z0rvvM#AIJGEZlpF%P%&X@)x%~5=|3S3+*&Xoi6`ZoDyi$65VBl4B#9TiT|n+2`BChlp7pr$KTDnr!Ff!NFcx&lHu_GsY5KHhY#-su;0a6MgeZ9*Q^m2=$Rd zMfJz7dQ_Zv0_G2F17%X@j=Ei}V=enivf%_l2tx6_rw0e(eWbtJn;cO}XVTnT22t8> zJ^IXKwKinAZr9n#p6`+`z1}9_Q`qEGzWncC6$P|5G%mUh%4G$tAB~@3@EDriHQQI% zKw1Q%C<)?v{(0-iY6Wu%usA+mcG)!yYJfj}6kujk${nK1uWY?5AFm^`k(eP^$T%s{ z3LnvmFBkz%p~KS2YhTQX@E4)>6H8x59RRk-6`@<^e1G+Rx>g-&8KI zBizsTP*6!>QKS7d5Nb5G=g&?%*Cq z5GocTRJ$+NJk{n!J8>|OAa2ksdlq#UFaZBa=jCkrY`;mlm0|cD#jljqKNa?=DsW-w0>Vg6x-=8MjGs%t)tw z#o`)mR72$cFZ8f!oNXhNhi+i75~O3Ap5(^q?pTMOX;n!&^4`&-m&0#CE^Ro)3H7aN zOW+oj;Tg||I1y=D$iKH${uGm!BL$xSG6L#E@2;}FKeNMX7fS_;N3~=38$xI8Xy%A;HHT;N|_NTYQ+HKCRX2 z2Qz^iReCOut(HoD6H6TrTRR(545eeHJshL|!K}#2#DY9dH>x6-&#^aGzt>kT!JllP$Hjpuar?#zjS|;jEx~$hcFZ|vLGgdWrzeKXrZtScxY4x{MPwR7hHj%79 zY1tN|_C$u(82c&Dm@Y<%`t99YX*Ra@%Hg_V6K=c;8J2S4)f&rauHhUG9A!%0=CWoR zz4%*JzqB!pE_iU?{Ecy~n9~?3+V~ez`ZoCz z$o9=-*_@p53W}~XSn2uB)7aqI=TJAFCQ|HDat2_o7D4F1H-Z_Qexpj zPGX{XSmoHoCYwazLdMS{1GuL?Xy4LZQA_4QB*o> zVX6N9vCCw(T&8HyofP^7wp%X@Z?zIjAAYAWAIL0aC?_n{Ys)i0y}l=Vdt3#PmT?l9 zfG%dr^zJvntaSm?i_`0Ks*t=;b+namt%wVH#6xZ1&GkjmC~am&ozD4aHRt#2jr)jm-R{yBHA1 z=Z#VWsiKP27Tz0A1jCrPChG+n^$b&JmckY(=cTbHk4&ss^zfOC>yoaR`Kh@_VpETO zom>(|%IeL?47?|8tL3U`^}Z&!xvKjB*5<{GmnXEekm!+)8QPJ&LAaY zo)!qi8BYzGly;f!JAI)@eG>U;fM?fTe9=m3Uubl`(L1*!+>0JvPbbkea>w3d2Gkwu zx2VR15Fcaqoypdn^LfP67%9;ZM%gktLipHoUBBKXxW6o%pW4N(&T#G&Ip1ecB(Sde zCB^k5TX%?u2;?RbdFgfXqTp@Kj@@L}-5qN0=YqMR>&Na-!OC9g3;&c2H5l|#r?Y3c zDs=Db?iF`eDN4977@Rj`T6sFdyZbVgAYAXypTHK2g#2;>Q<|Y^i$wkITg4WR>M4l} zVT%-d{1cBy>^x>ZGc{XJ!Md%Z=SsGEHh5Bar{1XMc~=fD1H-djQur&zXZgH>WPeGt;#BI~ zMj9Q4LFMzNHrjfu@P>nsp5f$x;h%vtxNtxco=yZf$8VP`Rhnubl`PLq)}?oz@~|l7 zFs(E1+N?2K$2aYlk3GaSc+22K%SZbl!>#)??_1=w?vJyNtJ7Tg_6p5Zf zaY4#V%sCiz7}u+V<~h%lImb#l86J&wDINa9Iq!t0pZfcS-zwKB!Y!??cx|zWs+*&v z1C^Xl$62yss8QbLhb^ys@yTJHM0R-Jh=l)?{`u1qrsS)>{N+r?T=8u+-z{BKouB2_ z$UmlmojX;(Z(PkUVz&CpLhpWwcGT;{!c%KsaB^Cx<4yZ~v<FCl|n z)AOzo#0cIjF~ZH)p-Wy6;lJeoBB}ct$0)!l5$Wh)pVC~SnGz<*SZMc@GMtN!z0wxz zyXZvs*t++qD*D1{KGq{QBv;LRPx3X|OO$xOl_5_K1$U1SPX1gH;;y62DJFT<=py)C zyAtyXZnjW&rl_=%Q5Y`F+r5#hU7)8UF9+VsacJhEh-KG8ir zN8C8jU?8oT?ua6~(b2hBcd-pO3DFyr__bwll0Ks6xPKNE?BX`J;|?#To44=!l1UOp zds?E$dvXPAHS#$C)hZq1jj~W&dhJ#R z9PBQ3|Nf5fWqjW=Uo{64wu@4!%9li>yv2-dM@q~KSbGn<)~%0Dx(t>3HJ7Mz8tk~b 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 literal 0 HcmV?d00001 diff --git a/pledge-now-pay-later/screenshots/collect-with-data.png b/pledge-now-pay-later/screenshots/collect-with-data.png new file mode 100644 index 0000000000000000000000000000000000000000..2952a35c4ba3e6ab604400c9d96b9258027cfe42 GIT binary patch literal 84226 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%0Dx(t>3HJ7Mz8tk~b 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 literal 0 HcmV?d00001 diff --git a/pledge-now-pay-later/src/app/api/cron/reminders/route.ts b/pledge-now-pay-later/src/app/api/cron/reminders/route.ts index b59896b..f598ce7 100644 --- a/pledge-now-pay-later/src/app/api/cron/reminders/route.ts +++ b/pledge-now-pay-later/src/app/api/cron/reminders/route.ts @@ -46,6 +46,11 @@ export async function GET(request: NextRequest) { dueDate: { gte: todayStart, lt: todayEnd }, reminderSentForDueDate: false, status: { notIn: ["paid", "cancelled"] }, + // Don't send reminders for conditional pledges that haven't been met + OR: [ + { isConditional: false }, + { isConditional: true, conditionMet: true }, + ], }, include: { event: { @@ -185,6 +190,11 @@ export async function GET(request: NextRequest) { scheduledAt: { lte: now }, pledge: { status: { notIn: ["paid", "cancelled"] }, + // Don't send reminders for unmet conditional pledges + OR: [ + { isConditional: false }, + { isConditional: true, conditionMet: true }, + ], }, }, include: { diff --git a/pledge-now-pay-later/src/app/api/dashboard/route.ts b/pledge-now-pay-later/src/app/api/dashboard/route.ts index b123f10..5351f22 100644 --- a/pledge-now-pay-later/src/app/api/dashboard/route.ts +++ b/pledge-now-pay-later/src/app/api/dashboard/route.ts @@ -84,7 +84,12 @@ export async function GET(request: NextRequest) { }), ]) as [PledgeRow[], AnalyticsRow[]] - const totalPledged = pledges.reduce((s: number, p: PledgeRow) => s + p.amountPence, 0) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const confirmedPledges = pledges.filter((p: any) => !p.isConditional || p.conditionMet) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const conditionalPledges = pledges.filter((p: any) => p.isConditional && !p.conditionMet) + const totalPledged = confirmedPledges.reduce((s: number, p: PledgeRow) => s + p.amountPence, 0) + const totalConditional = conditionalPledges.reduce((s: number, p: PledgeRow) => s + p.amountPence, 0) const totalCollected = pledges .filter((p: PledgeRow) => p.status === "paid") .reduce((s: number, p: PledgeRow) => s + p.amountPence, 0) @@ -123,6 +128,8 @@ export async function GET(request: NextRequest) { totalPledges: pledges.length, totalPledgedPence: totalPledged, totalCollectedPence: totalCollected, + totalConditionalPence: totalConditional, + conditionalCount: conditionalPledges.length, collectionRate: Math.round(collectionRate * 100), overdueRate: Math.round(overdueRate * 100), }, @@ -148,6 +155,12 @@ export async function GET(request: NextRequest) { installmentNumber: p.installmentNumber, installmentTotal: p.installmentTotal, isDeferred: !!p.dueDate, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + isConditional: (p as any).isConditional || false, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + conditionText: (p as any).conditionText || null, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + conditionMet: (p as any).conditionMet || false, createdAt: p.createdAt, paidAt: p.paidAt, nextReminder: p.reminders diff --git a/pledge-now-pay-later/src/app/api/events/route.ts b/pledge-now-pay-later/src/app/api/events/route.ts index 68b876b..c97ab96 100644 --- a/pledge-now-pay-later/src/app/api/events/route.ts +++ b/pledge-now-pay-later/src/app/api/events/route.ts @@ -37,7 +37,7 @@ export async function GET(request: NextRequest) { include: { _count: { select: { pledges: true, qrSources: true } }, pledges: { - select: { amountPence: true, status: true }, + select: { amountPence: true, status: true, isConditional: true, conditionMet: true }, }, }, orderBy: { createdAt: "desc" }, @@ -57,7 +57,12 @@ export async function GET(request: NextRequest) { externalUrl: e.externalUrl || null, pledgeCount: e._count.pledges, qrSourceCount: e._count.qrSources, - totalPledged: e.pledges.reduce((sum: number, p: PledgeSummary) => sum + p.amountPence, 0), + // eslint-disable-next-line @typescript-eslint/no-explicit-any + totalPledged: e.pledges.filter((p: any) => !p.isConditional || p.conditionMet).reduce((sum: number, p: PledgeSummary) => sum + p.amountPence, 0), + // eslint-disable-next-line @typescript-eslint/no-explicit-any + totalConditional: e.pledges.filter((p: any) => p.isConditional && !p.conditionMet).reduce((sum: number, p: PledgeSummary) => sum + p.amountPence, 0), + // eslint-disable-next-line @typescript-eslint/no-explicit-any + conditionalCount: e.pledges.filter((p: any) => p.isConditional && !p.conditionMet).length, totalCollected: e.pledges .filter((p: PledgeSummary) => p.status === "paid") .reduce((sum: number, p: PledgeSummary) => sum + p.amountPence, 0), diff --git a/pledge-now-pay-later/src/app/api/exports/crm-pack/route.ts b/pledge-now-pay-later/src/app/api/exports/crm-pack/route.ts index 95aa1a7..5d3fe53 100644 --- a/pledge-now-pay-later/src/app/api/exports/crm-pack/route.ts +++ b/pledge-now-pay-later/src/app/api/exports/crm-pack/route.ts @@ -75,6 +75,12 @@ export async function GET(request: NextRequest) { days_to_collect: p.paidAt ? Math.ceil((p.paidAt.getTime() - p.createdAt.getTime()) / (1000 * 60 * 60 * 24)).toString() : "", + /* eslint-disable @typescript-eslint/no-explicit-any */ + is_conditional: (p as any).isConditional ? "Yes" : "No", + condition_type: (p as any).conditionType || "", + condition_text: (p as any).conditionText || "", + condition_met: (p as any).conditionMet ? "Yes" : "No", + /* eslint-enable @typescript-eslint/no-explicit-any */ })) const csv = formatCrmExportCsv(rows) diff --git a/pledge-now-pay-later/src/app/api/pledges/[id]/route.ts b/pledge-now-pay-later/src/app/api/pledges/[id]/route.ts index d16d2b2..4d01bcc 100644 --- a/pledge-now-pay-later/src/app/api/pledges/[id]/route.ts +++ b/pledge-now-pay-later/src/app/api/pledges/[id]/route.ts @@ -108,6 +108,35 @@ export async function PATCH( } catch { /* conversion tracking is best-effort */ } } + // Re-check conditional thresholds when pledge status changes + // (paid pledges increase total, potentially unlocking conditional pledges) + if (parsed.data.status === "paid" || parsed.data.status === "cancelled") { + try { + // Import checkConditionalThresholds dynamically — it lives in the pledges route + // but we'll inline the logic here for simplicity + const result = await prisma.pledge.aggregate({ + where: { eventId: existing.eventId, status: { notIn: ["cancelled"] }, isConditional: false }, + _sum: { amountPence: true }, + }) + const totalRaised = result._sum.amountPence || 0 + const unmet = await prisma.pledge.findMany({ + where: { eventId: existing.eventId, isConditional: true, conditionMet: false, conditionThreshold: { not: null, lte: totalRaised }, status: { notIn: ["cancelled"] } }, + }) + const now = new Date() + for (const cp of unmet) { + await prisma.pledge.update({ where: { id: cp.id }, data: { conditionMet: true, conditionMetAt: now } }) + if (cp.donorPhone) { + const { sendWhatsAppMessage } = await import("@/lib/whatsapp") + const ev = await prisma.event.findUnique({ where: { id: existing.eventId }, select: { name: true } }) + sendWhatsAppMessage(cp.donorPhone, + `Assalamu Alaikum ${cp.donorName?.split(" ")[0] || "there"} 🎉\n\nGreat news — *${ev?.name || "the appeal"}* has reached its target!\n\nYour pledge of *£${(cp.amountPence / 100).toFixed(0)}* is now active.\n\nReference: \`${cp.reference}\`\n\nReply *HELP* for payment details.` + ).catch(() => {}) + } + console.log(`[CONDITIONAL] Unlocked ${cp.reference} — threshold met`) + } + } catch (err) { console.error("[CONDITIONAL] Threshold check failed:", err) } + } + // Log activity const changes = Object.keys(updateData).filter(k => k !== "paidAt" && k !== "cancelledAt") await logActivity({ diff --git a/pledge-now-pay-later/src/app/api/pledges/route.ts b/pledge-now-pay-later/src/app/api/pledges/route.ts index 050934a..7bda8c8 100644 --- a/pledge-now-pay-later/src/app/api/pledges/route.ts +++ b/pledge-now-pay-later/src/app/api/pledges/route.ts @@ -79,6 +79,13 @@ export async function GET(request: NextRequest) { volunteerName: p.qrSource?.volunteerName || null, createdAt: p.createdAt, paidAt: p.paidAt, + /* eslint-disable @typescript-eslint/no-explicit-any */ + isConditional: (p as any).isConditional || false, + conditionType: (p as any).conditionType || null, + conditionText: (p as any).conditionText || null, + conditionThreshold: (p as any).conditionThreshold || null, + conditionMet: (p as any).conditionMet || false, + /* eslint-enable @typescript-eslint/no-explicit-any */ })), total, limit, @@ -117,7 +124,7 @@ export async function POST(request: NextRequest) { ) } - const { amountPence, rail, donorName, donorEmail, donorPhone, donorAddressLine1, donorPostcode, giftAid, isZakat, emailOptIn, whatsappOptIn, consentMeta, eventId, qrSourceId, scheduleMode, dueDate, installmentCount, installmentDates } = parsed.data + const { amountPence, rail, donorName, donorEmail, donorPhone, donorAddressLine1, donorPostcode, giftAid, isZakat, emailOptIn, whatsappOptIn, consentMeta, eventId, qrSourceId, scheduleMode, dueDate, installmentCount, installmentDates, isConditional, conditionType, conditionText, conditionThreshold } = parsed.data // Capture IP for consent audit trail const clientIp = request.headers.get("x-forwarded-for")?.split(",")[0]?.trim() @@ -266,6 +273,13 @@ export async function POST(request: NextRequest) { qrSourceId: qrSourceId || null, organizationId: org.id, dueDate: parsedDueDate, + // Conditional / match funding + isConditional: isConditional || false, + conditionType: isConditional ? (conditionType || "custom") : null, + conditionText: isConditional ? (conditionText || null) : null, + conditionThreshold: isConditional ? (conditionThreshold || null) : null, + conditionMet: false, + // Conditional pledges start as "new" but reminders won't fire until conditionMet }, }) @@ -372,9 +386,75 @@ export async function POST(request: NextRequest) { }).catch(() => {}) } + // ── AUTO-TRIGGER: Check if any conditional pledges' thresholds are now met ── + // After every new pledge, calculate total raised for this event + // and unlock any conditional pledges whose threshold has been reached. + if (prisma) { + checkConditionalThresholds(eventId).catch(err => + console.error("[CONDITIONAL] Threshold check failed:", err) + ) + } + return NextResponse.json(response, { status: 201 }) } catch (error) { console.error("Pledge creation error:", error) return NextResponse.json({ error: "Internal error" }, { status: 500 }) } } + + +/** + * Check if any conditional pledges for this event have had their threshold met. + * If total raised (non-conditional, non-cancelled pledges) >= threshold, unlock them. + */ +async function checkConditionalThresholds(eventId: string) { + if (!prisma) return + + // Get all non-cancelled, non-conditional pledge totals for this event + const result = await prisma.pledge.aggregate({ + where: { + eventId, + status: { notIn: ["cancelled"] }, + isConditional: false, + }, + _sum: { amountPence: true }, + }) + const totalRaised = result._sum.amountPence || 0 + + // Find conditional pledges with threshold that's now met + const unmetConditionals = await prisma.pledge.findMany({ + where: { + eventId, + isConditional: true, + conditionMet: false, + conditionThreshold: { not: null, lte: totalRaised }, + status: { notIn: ["cancelled"] }, + }, + }) + + if (unmetConditionals.length === 0) return + + // Unlock them + const now = new Date() + for (const p of unmetConditionals) { + await prisma.pledge.update({ + where: { id: p.id }, + data: { conditionMet: true, conditionMetAt: now }, + }) + + // Send activation WhatsApp if they have a phone + if (p.donorPhone) { + try { + const { sendWhatsAppMessage } = await import("@/lib/whatsapp") + const name = p.donorName?.split(" ")[0] || "there" + const amount = (p.amountPence / 100).toFixed(0) + const event = await prisma.event.findUnique({ where: { id: eventId }, select: { name: true } }) + await sendWhatsAppMessage(p.donorPhone, + `Assalamu Alaikum ${name} 🎉\n\nGreat news — *${event?.name || "the appeal"}* has reached its target!\n\nYour pledge of *£${amount}* is now active.\n\nReference: \`${p.reference}\`\n\nReply *HELP* for payment details.` + ) + } catch { /* */ } + } + + console.log(`[CONDITIONAL] Unlocked pledge ${p.reference} (£${(p.amountPence / 100).toFixed(0)}) — threshold £${((p.conditionThreshold || 0) / 100).toFixed(0)} met (total: £${(totalRaised / 100).toFixed(0)})`) + } +} diff --git a/pledge-now-pay-later/src/app/api/qr/[token]/route.ts b/pledge-now-pay-later/src/app/api/qr/[token]/route.ts index 1d0c101..b4bf7ac 100644 --- a/pledge-now-pay-later/src/app/api/qr/[token]/route.ts +++ b/pledge-now-pay-later/src/app/api/qr/[token]/route.ts @@ -33,6 +33,7 @@ export async function GET( externalPlatform: event.externalPlatform || null, zakatEligible: event.zakatEligible || false, hasStripe: !!event.organization.stripeSecretKey, + goalAmount: event.goalAmount || null, }) } @@ -68,6 +69,7 @@ export async function GET( externalPlatform: qrSource.event.externalPlatform || null, zakatEligible: qrSource.event.zakatEligible || false, hasStripe: !!qrSource.event.organization.stripeSecretKey, + goalAmount: qrSource.event.goalAmount || null, }) } catch (error) { console.error("QR resolve error:", error) diff --git a/pledge-now-pay-later/src/app/dashboard/collect/page.tsx b/pledge-now-pay-later/src/app/dashboard/collect/page.tsx index a914412..13ecadc 100644 --- a/pledge-now-pay-later/src/app/dashboard/collect/page.tsx +++ b/pledge-now-pay-later/src/app/dashboard/collect/page.tsx @@ -211,6 +211,8 @@ export default function CollectPage() { // Stats const totalPledges = events.reduce((s, e) => s + e.pledgeCount, 0) const totalPledged = events.reduce((s, e) => s + e.totalPledged, 0) + // eslint-disable-next-line @typescript-eslint/no-explicit-any + const totalConditional = events.reduce((s, e) => s + ((e as any).totalConditional || 0), 0) // Sort sources by pledges // eslint-disable-next-line @typescript-eslint/no-explicit-any const sortedSources = [...sources].sort((a: any, b: any) => b.totalPledged - a.totalPledged) @@ -548,8 +550,14 @@ export default function CollectPage() {

{formatPence(totalPledged)}

-

raised

+

confirmed

+ {totalConditional > 0 && ( +
+

{formatPence(totalConditional)}

+

conditional

+
+ )} diff --git a/pledge-now-pay-later/src/app/dashboard/exports/page.tsx b/pledge-now-pay-later/src/app/dashboard/exports/page.tsx index 5ad8bcc..bd4838e 100644 --- a/pledge-now-pay-later/src/app/dashboard/exports/page.tsx +++ b/pledge-now-pay-later/src/app/dashboard/exports/page.tsx @@ -69,7 +69,7 @@ export default function ReportsPage() { if (loading) return
- const s = dash?.summary || { totalPledges: 0, totalPledgedPence: 0, totalCollectedPence: 0, collectionRate: 0 } + const s = dash?.summary || { totalPledges: 0, totalPledgedPence: 0, totalCollectedPence: 0, totalConditionalPence: 0, conditionalCount: 0, collectionRate: 0 } const byStatus = dash?.byStatus || {} const outstanding = s.totalPledgedPence - s.totalCollectedPence const giftAidPledges = (dash?.pledges || []).filter((p: { giftAid: boolean; status: string }) => p.giftAid && p.status === "paid") @@ -111,9 +111,10 @@ export default function ReportsPage() { {/* ── Financial breakdown ── */}
-
+
0 ? "lg:grid-cols-5" : "lg:grid-cols-4"} gap-px bg-gray-700`}> {[ - { value: formatPence(s.totalPledgedPence), label: "Total promised", color: "text-white" }, + { value: formatPence(s.totalPledgedPence), label: "Confirmed pledges", color: "text-white" }, + ...(s.totalConditionalPence > 0 ? [{ value: formatPence(s.totalConditionalPence), label: `Conditional (${s.conditionalCount})`, color: "text-[#FBBF24]" }] : []), { value: formatPence(s.totalCollectedPence), label: "Total received", color: "text-[#4ADE80]" }, { value: formatPence(outstanding), label: "Still outstanding", color: outstanding > 0 ? "text-[#FBBF24]" : "text-white" }, { value: `${s.collectionRate}%`, label: "Collection rate", color: s.collectionRate >= 70 ? "text-[#4ADE80]" : "text-[#FBBF24]" }, diff --git a/pledge-now-pay-later/src/app/dashboard/page.tsx b/pledge-now-pay-later/src/app/dashboard/page.tsx index 665a527..e2c27ae 100644 --- a/pledge-now-pay-later/src/app/dashboard/page.tsx +++ b/pledge-now-pay-later/src/app/dashboard/page.tsx @@ -22,9 +22,16 @@ const STATUS_LABELS: Record {/* Stats — gap-px grid */} -
+
0 ? "lg:grid-cols-5" : "lg:grid-cols-4"} gap-px bg-gray-200`}> {[ { value: String(s.totalPledges), label: "Pledges" }, - { value: formatPence(s.totalPledgedPence), label: "Promised" }, + { value: formatPence(s.totalPledgedPence), label: "Confirmed" }, + ...(s.totalConditionalPence > 0 ? [{ value: formatPence(s.totalConditionalPence), label: `Conditional (${s.conditionalCount})`, accent: "text-[#F59E0B]" }] : []), { value: formatPence(s.totalCollectedPence), label: "Received", accent: "text-[#16A34A]" }, { value: `${s.collectionRate}%`, label: "Collected" }, ].map(stat => ( @@ -292,18 +300,26 @@ export default function DashboardPage() { ))}
- {/* Progress bar */} + {/* Progress bar — with conditional segment */}
Promised → Received {s.collectionRate}%
-
+
+ {s.totalConditionalPence > 0 && ( +
+ )}
{formatPence(s.totalCollectedPence)} received {formatPence(outstanding)} still to come + {s.totalConditionalPence > 0 && ( + + {formatPence(s.totalConditionalPence)} conditional + )}
@@ -332,8 +348,8 @@ export default function DashboardPage() { {needsAttention.length}
- {needsAttention.map((p: { id: string; donorName: string | null; amountPence: number; eventName: string; status: string }) => { - const sl = STATUS_LABELS[p.status] || STATUS_LABELS.new + {needsAttention.map((p: { id: string; donorName: string | null; amountPence: number; eventName: string; status: string; isConditional?: boolean; conditionMet?: boolean }) => { + const sl = getStatusLabel(p) return (
@@ -362,8 +378,9 @@ export default function DashboardPage() { id: string; donorName: string | null; amountPence: number; status: string; eventName: string; createdAt: string; donorPhone: string | null; installmentNumber: number | null; installmentTotal: number | null; + isConditional?: boolean; conditionMet?: boolean; }) => { - const sl = STATUS_LABELS[p.status] || STATUS_LABELS.new + const sl = getStatusLabel(p) const initial = (p.donorName || "A")[0].toUpperCase() const days = Math.floor((Date.now() - new Date(p.createdAt).getTime()) / 86400000) const when = days === 0 ? "Today" : days === 1 ? "Yesterday" : days < 7 ? `${days}d ago` : new Date(p.createdAt).toLocaleDateString("en-GB", { day: "numeric", month: "short" }) @@ -479,6 +496,7 @@ export default function DashboardPage() { { label: "Said they paid", desc: "Donor replied PAID — upload bank statement to confirm" }, { label: "Received ✓", desc: "Payment confirmed in your bank account" }, { label: "Needs a nudge", desc: "It's been a while — you can send a manual reminder" }, + { label: "🤝 Conditional", desc: "Match or conditional pledge — activates when the target is reached" }, ].map(s => (
diff --git a/pledge-now-pay-later/src/app/dashboard/pledges/page.tsx b/pledge-now-pay-later/src/app/dashboard/pledges/page.tsx index f483619..c344d8b 100644 --- a/pledge-now-pay-later/src/app/dashboard/pledges/page.tsx +++ b/pledge-now-pay-later/src/app/dashboard/pledges/page.tsx @@ -44,6 +44,8 @@ interface Pledge { installmentNumber: number | null; installmentTotal: number | null eventName: string; qrSourceLabel: string | null; volunteerName: string | null createdAt: string; paidAt: string | null + // Conditional / match funding + isConditional: boolean; conditionText: string | null; conditionMet: boolean } interface MatchResult { @@ -662,8 +664,14 @@ export default function MoneyPage() {

{p.eventName}

{p.qrSourceLabel &&

{p.qrSourceLabel}

}
-
+
{sl.label} + {p.isConditional && !p.conditionMet && ( + 🤝 Conditional + )} + {p.isConditional && p.conditionMet && ( + 🤝 Unlocked + )}
{timeAgo(p.createdAt)} diff --git a/pledge-now-pay-later/src/app/p/[token]/page.tsx b/pledge-now-pay-later/src/app/p/[token]/page.tsx index 19524b9..f63d5fa 100644 --- a/pledge-now-pay-later/src/app/p/[token]/page.tsx +++ b/pledge-now-pay-later/src/app/p/[token]/page.tsx @@ -33,6 +33,11 @@ export interface PledgeData { dueDate?: string installmentCount?: number installmentDates?: string[] + // Conditional / match funding + isConditional: boolean + conditionType?: "threshold" | "match" | "custom" + conditionText?: string + conditionThreshold?: number } interface EventInfo { @@ -46,6 +51,7 @@ interface EventInfo { externalPlatform: string | null zakatEligible: boolean hasStripe: boolean + goalAmount: number | null } /* @@ -78,6 +84,7 @@ export default function PledgePage() { emailOptIn: false, whatsappOptIn: false, scheduleMode: "now", + isConditional: false, }) const [pledgeResult, setPledgeResult] = useState<{ id: string @@ -106,14 +113,14 @@ export default function PledgePage() { const isExternal = eventInfo?.paymentMode === "external" && eventInfo?.externalUrl // Step 0: Amount selected - const handleAmountSelected = (amountPence: number) => { - setPledgeData((d) => ({ ...d, amountPence })) + const handleAmountSelected = (amountPence: number, conditional?: { isConditional: boolean; conditionType?: "threshold" | "match" | "custom"; conditionText?: string; conditionThreshold?: number }) => { + const conditionalData = conditional || { isConditional: false } + setPledgeData((d) => ({ ...d, amountPence, ...conditionalData })) if (isExternal) { - // External events: amount → identity → redirect (skip schedule + payment method) - setPledgeData((d) => ({ ...d, amountPence, rail: "bank", scheduleMode: "now" })) - setStep(3) // → Identity + setPledgeData((d) => ({ ...d, amountPence, rail: "bank", scheduleMode: "now", ...conditionalData })) + setStep(3) } else { - setStep(1) // → Schedule step + setStep(1) } } @@ -225,7 +232,7 @@ export default function PledgePage() { : undefined const steps: Record = { - 0: , + 0: , 1: , 2: , 3: , @@ -242,6 +249,8 @@ export default function PledgePage() { dueDateLabel={dueDateLabel} installmentCount={pledgeData.installmentCount} installmentAmount={pledgeData.installmentCount ? Math.ceil(pledgeData.amountPence / pledgeData.installmentCount) : undefined} + isConditional={pledgeData.isConditional} + conditionText={pledgeData.conditionText} /> ), 6: , diff --git a/pledge-now-pay-later/src/app/p/[token]/steps/amount-step.tsx b/pledge-now-pay-later/src/app/p/[token]/steps/amount-step.tsx index 2f362e1..f75e703 100644 --- a/pledge-now-pay-later/src/app/p/[token]/steps/amount-step.tsx +++ b/pledge-now-pay-later/src/app/p/[token]/steps/amount-step.tsx @@ -5,9 +5,10 @@ import { Button } from "@/components/ui/button" import { Heart, Sparkles, TrendingUp } from "lucide-react" interface Props { - onSelect: (amountPence: number) => void + onSelect: (amountPence: number, conditional?: { isConditional: boolean; conditionType?: "threshold" | "match" | "custom"; conditionText?: string; conditionThreshold?: number }) => void eventName: string eventId?: string + goalAmount?: number | null } interface AiSuggestion { @@ -18,13 +19,18 @@ interface AiSuggestion { const FALLBACK_AMOUNTS = [2000, 5000, 10000, 25000, 50000, 100000] -export function AmountStep({ onSelect, eventName, eventId }: Props) { +export function AmountStep({ onSelect, eventName, eventId, goalAmount }: Props) { const [custom, setCustom] = useState("") const [selected, setSelected] = useState(null) const [suggestions, setSuggestions] = useState(null) const [hovering, setHovering] = useState(null) const inputRef = useRef(null) + // Conditional / match funding + const [isMatch, setIsMatch] = useState(false) + const [matchType, setMatchType] = useState<"threshold" | "match">("threshold") + const [matchThreshold, setMatchThreshold] = useState("") + // Fetch AI-powered suggestions useEffect(() => { const url = eventId ? `/api/ai/suggest?eventId=${eventId}` : "/api/ai/suggest" @@ -53,7 +59,22 @@ export function AmountStep({ onSelect, eventName, eventId }: Props) { const handleContinue = () => { const amount = selected || Math.round(parseFloat(custom) * 100) - if (amount >= 100) onSelect(amount) + if (amount >= 100) { + if (isMatch) { + const thresholdPence = matchThreshold ? Math.round(parseFloat(matchThreshold) * 100) : (goalAmount || 0) + const conditionText = matchType === "match" + ? `I'll match up to £${(amount / 100).toFixed(0)}` + : `I'll give £${(amount / 100).toFixed(0)} if £${(thresholdPence / 100).toFixed(0)} is raised` + onSelect(amount, { + isConditional: true, + conditionType: matchType, + conditionText, + conditionThreshold: thresholdPence, + }) + } else { + onSelect(amount) + } + } } const activeAmount = selected || (custom ? Math.round(parseFloat(custom) * 100) : 0) @@ -176,6 +197,78 @@ export function AmountStep({ onSelect, eventName, eventId }: Props) {
)} + {/* Match / conditional pledge */} + {isValid && ( +
+ + + {isMatch && ( +
+
+ + +
+ + {matchType === "threshold" && ( +
+ +
+ £ + setMatchThreshold(e.target.value.replace(/[^0-9]/g, ""))} + placeholder={goalAmount ? (goalAmount / 100).toFixed(0) : "10000"} + className="w-full pl-8 pr-3 h-10 rounded-lg border-2 border-gray-200 text-sm font-bold focus:border-trust-blue outline-none" + /> +
+
+ )} + + {matchType === "match" && ( +
+

+ You'll match other donors' pledges, up to £{(activeAmount / 100).toFixed(0)}. + Your pledge activates when the appeal reaches £{(activeAmount / 100).toFixed(0)} from other donors. +

+
+ )} +
+ )} +
+ )} + {/* Continue */}
diff --git a/pledge-now-pay-later/src/app/p/my-pledges/page.tsx b/pledge-now-pay-later/src/app/p/my-pledges/page.tsx index 6739a82..9217ec6 100644 --- a/pledge-now-pay-later/src/app/p/my-pledges/page.tsx +++ b/pledge-now-pay-later/src/app/p/my-pledges/page.tsx @@ -11,6 +11,7 @@ function MyPledgesForm() { createdAt: string; paidAt: string | null; dueDate: string | null; installmentNumber: number | null; installmentTotal: number | null; bankDetails?: { sortCode: string; accountNo: string; accountName: string }; + isConditional?: boolean; conditionText?: string; conditionMet?: boolean; }> | null>(null) const [loading, setLoading] = useState(false) const [error, setError] = useState("") @@ -110,6 +111,16 @@ function MyPledgesForm() { {p.installmentNumber &&

Instalment: {p.installmentNumber} of {p.installmentTotal}

} {p.dueDate &&

Due: {new Date(p.dueDate).toLocaleDateString("en-GB", { day: "numeric", month: "long" })}

} {p.paidAt &&

Paid: {new Date(p.paidAt).toLocaleDateString("en-GB", { day: "numeric", month: "long" })}

} + {p.isConditional && !p.conditionMet && ( +
+

🤝 Conditional pledge

+ {p.conditionText &&

{p.conditionText}

} +

Payment details will be sent when the condition is met

+
+ )} + {p.isConditional && p.conditionMet && ( +

🤝 Condition met — pledge activated!

+ )}
{p.status !== "paid" && p.status !== "cancelled" && p.bankDetails && (
diff --git a/pledge-now-pay-later/src/lib/validators.ts b/pledge-now-pay-later/src/lib/validators.ts index f800826..1461633 100644 --- a/pledge-now-pay-later/src/lib/validators.ts +++ b/pledge-now-pay-later/src/lib/validators.ts @@ -20,7 +20,12 @@ export const createQrSourceSchema = z.object({ }) export const createPledgeSchema = z.object({ - amountPence: z.number().int().min(100).max(100000000), // £1 to £1M + amountPence: z.number().int().min(100).max(100000000), + // Conditional / match funding + isConditional: z.boolean().default(false), + conditionType: z.enum(["threshold", "match", "custom"]).optional(), + conditionText: z.string().max(500).optional(), + conditionThreshold: z.number().int().positive().optional(), rail: z.enum(['bank', 'gocardless', 'card']), donorName: z.string().max(200).optional().default(''), donorEmail: z.string().max(200).optional().default(''), diff --git a/temp_files/fix2/ListDonations.php b/temp_files/fix2/ListDonations.php new file mode 100644 index 0000000..2c800d7 --- /dev/null +++ b/temp_files/fix2/ListDonations.php @@ -0,0 +1,110 @@ + $q->whereNotNull('confirmed_at')) + ->whereDate('created_at', today()) + ->count(); + $todayAmount = Donation::whereHas('donationConfirmation', fn ($q) => $q->whereNotNull('confirmed_at')) + ->whereDate('created_at', today()) + ->sum('amount') / 100; + + return "Today: {$todayCount} confirmed (£" . number_format($todayAmount, 0) . ")"; + } + + public function getTabs(): array + { + $incompleteCount = Donation::whereDoesntHave('donationConfirmation', fn ($q) => $q->whereNotNull('confirmed_at')) + ->where('created_at', '>=', now()->subDays(7)) + ->count(); + + $recurring = Donation::where('reoccurrence', '!=', -1) + ->whereHas('donationConfirmation', fn ($q) => $q->whereNotNull('confirmed_at')) + ->count(); + + // Use whereIn with subquery instead of whereHas to avoid null model crash + // during Filament tab initialization (modifyQueryUsing gets a builder with no model) + $confirmedSubquery = fn (Builder $q) => $q->whereIn( + 'donations.id', + fn ($sub) => $sub->select('donation_id') + ->from('donation_confirmations') + ->whereNotNull('confirmed_at') + ); + + $unconfirmedSubquery = fn (Builder $q) => $q->whereNotIn( + 'donations.id', + fn ($sub) => $sub->select('donation_id') + ->from('donation_confirmations') + ->whereNotNull('confirmed_at') + ); + + return [ + 'today' => Tab::make('Today') + ->icon('heroicon-o-clock') + ->modifyQueryUsing(fn (Builder $q) => $confirmedSubquery($q) + ->whereDate('created_at', today()) + ), + + 'all_confirmed' => Tab::make('All Confirmed') + ->icon('heroicon-o-check-circle') + ->modifyQueryUsing(fn (Builder $q) => $confirmedSubquery($q)), + + 'incomplete' => Tab::make('Incomplete') + ->icon('heroicon-o-exclamation-triangle') + ->badge($incompleteCount > 0 ? $incompleteCount : null) + ->badgeColor('danger') + ->modifyQueryUsing(fn (Builder $q) => $unconfirmedSubquery($q) + ->where('created_at', '>=', now()->subDays(7)) + ), + + 'zakat' => Tab::make('Zakat') + ->icon('heroicon-o-star') + ->modifyQueryUsing(fn (Builder $q) => $confirmedSubquery($q) + ->whereIn('donations.id', fn ($sub) => $sub->select('donation_id') + ->from('donation_preferences') + ->where('is_zakat', true)) + ), + + 'gift_aid' => Tab::make('Gift Aid') + ->icon('heroicon-o-gift') + ->modifyQueryUsing(fn (Builder $q) => $confirmedSubquery($q) + ->whereIn('donations.id', fn ($sub) => $sub->select('donation_id') + ->from('donation_preferences') + ->where('is_gift_aid', true)) + ), + + 'recurring' => Tab::make('Recurring') + ->icon('heroicon-o-arrow-path') + ->badge($recurring > 0 ? $recurring : null) + ->badgeColor('info') + ->modifyQueryUsing(fn (Builder $q) => $confirmedSubquery($q) + ->where('reoccurrence', '!=', -1) + ), + + 'everything' => Tab::make('Everything') + ->icon('heroicon-o-squares-2x2'), + ]; + } + + public function getDefaultActiveTab(): string | int | null + { + return 'today'; + } +} diff --git a/temp_files/fix2/ListScheduledGivingDonations.php b/temp_files/fix2/ListScheduledGivingDonations.php index 6415c4e..b0eaea2 100644 --- a/temp_files/fix2/ListScheduledGivingDonations.php +++ b/temp_files/fix2/ListScheduledGivingDonations.php @@ -20,88 +20,85 @@ class ListScheduledGivingDonations extends ListRecords public function getSubheading(): string { - $current = $this->currentSeasonScope()->count(); + $current = $this->currentSeasonCount(); return "{$current} subscribers this season."; } - /** Real subscriber: has customer, has payments, amount > 0, not soft-deleted */ - private function realScope(): Builder + /** Count real current-season subscribers using the model directly (safe) */ + private function currentSeasonCount(): int { return ScheduledGivingDonation::query() ->whereNotNull('customer_id') ->where('total_amount', '>', 0) - ->whereNull('scheduled_giving_donations.deleted_at') - ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')); + ->whereNull('deleted_at') + ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')) + ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')->where('expected_at', '>', now())) + ->count(); } - /** Current season: real + has at least one future payment */ - private function currentSeasonScope(): Builder - { - return $this->realScope() - ->whereHas('payments', fn ($q) => $q - ->whereNull('deleted_at') - ->where('expected_at', '>', now())); - } - - /** Applies real + current season filters to the query */ - private function applyCurrentSeason(Builder $q): Builder - { - return $q - ->whereNotNull('customer_id') - ->where('total_amount', '>', 0) - ->whereNull('scheduled_giving_donations.deleted_at') - ->whereHas('payments', fn ($sub) => $sub->whereNull('deleted_at')) - ->whereHas('payments', fn ($sub) => $sub - ->whereNull('deleted_at') - ->where('expected_at', '>', now())); - } - - /** Applies real + expired (no future payments) filters */ - private function applyExpired(Builder $q): Builder - { - return $q - ->whereNotNull('customer_id') - ->where('total_amount', '>', 0) - ->whereNull('scheduled_giving_donations.deleted_at') - ->whereHas('payments', fn ($sub) => $sub->whereNull('deleted_at')) - ->whereDoesntHave('payments', fn ($sub) => $sub - ->whereNull('deleted_at') - ->where('expected_at', '>', now())); - } - - /** Applies real subscriber filters */ + /** + * Apply "real subscriber" filter using whereIn subqueries + * instead of whereHas — avoids null model crash during tab init. + */ private function applyReal(Builder $q): Builder { return $q ->whereNotNull('customer_id') ->where('total_amount', '>', 0) ->whereNull('scheduled_giving_donations.deleted_at') - ->whereHas('payments', fn ($sub) => $sub->whereNull('deleted_at')); + ->whereIn('scheduled_giving_donations.id', fn ($sub) => $sub + ->select('scheduled_giving_donation_id') + ->from('scheduled_giving_payments') + ->whereNull('deleted_at')); + } + + /** Real + has future payment = current season */ + private function applyCurrentSeason(Builder $q): Builder + { + return $this->applyReal($q) + ->whereIn('scheduled_giving_donations.id', fn ($sub) => $sub + ->select('scheduled_giving_donation_id') + ->from('scheduled_giving_payments') + ->whereNull('deleted_at') + ->where('expected_at', '>', now())); + } + + /** Real + NO future payments = expired */ + private function applyExpired(Builder $q): Builder + { + return $this->applyReal($q) + ->whereNotIn('scheduled_giving_donations.id', fn ($sub) => $sub + ->select('scheduled_giving_donation_id') + ->from('scheduled_giving_payments') + ->whereNull('deleted_at') + ->where('expected_at', '>', now())); } public function getTabs(): array { $campaigns = ScheduledGivingCampaign::all(); - - $currentCount = $this->currentSeasonScope()->count(); + $currentCount = $this->currentSeasonCount(); $tabs = []; - // Current season — the primary tab $tabs['current'] = Tab::make('This Season') ->icon('heroicon-o-sun') ->badge($currentCount) ->badgeColor('success') ->modifyQueryUsing(fn (Builder $q) => $this->applyCurrentSeason($q)); - // Per-campaign tabs for current season foreach ($campaigns as $c) { $slug = str($c->title)->slug()->toString(); - $count = $this->currentSeasonScope() + $count = ScheduledGivingDonation::query() + ->whereNotNull('customer_id') + ->where('total_amount', '>', 0) + ->whereNull('deleted_at') ->where('scheduled_giving_campaign_id', $c->id) + ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')) + ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')->where('expected_at', '>', now())) ->count(); - if ($count === 0) continue; // Skip campaigns with no current subscribers + if ($count === 0) continue; $tabs[$slug] = Tab::make($c->title) ->icon('heroicon-o-calendar') @@ -111,12 +108,14 @@ class ListScheduledGivingDonations extends ListRecords ->where('scheduled_giving_campaign_id', $c->id)); } - // Failed (current season only) - $failedCount = $this->currentSeasonScope() - ->whereHas('payments', fn ($q) => $q - ->where('is_paid', false) - ->where('attempts', '>', 0) - ->whereNull('deleted_at')) + // Failed (current season) + $failedCount = ScheduledGivingDonation::query() + ->whereNotNull('customer_id') + ->where('total_amount', '>', 0) + ->whereNull('deleted_at') + ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')) + ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')->where('expected_at', '>', now())) + ->whereHas('payments', fn ($q) => $q->where('is_paid', false)->where('attempts', '>', 0)->whereNull('deleted_at')) ->count(); if ($failedCount > 0) { @@ -125,17 +124,21 @@ class ListScheduledGivingDonations extends ListRecords ->badge($failedCount) ->badgeColor('danger') ->modifyQueryUsing(fn (Builder $q) => $this->applyCurrentSeason($q) - ->whereHas('payments', fn ($sub) => $sub + ->whereIn('scheduled_giving_donations.id', fn ($sub) => $sub + ->select('scheduled_giving_donation_id') + ->from('scheduled_giving_payments') ->where('is_paid', false) ->where('attempts', '>', 0) ->whereNull('deleted_at'))); } // Past seasons - $expiredCount = $this->realScope() - ->whereDoesntHave('payments', fn ($q) => $q - ->whereNull('deleted_at') - ->where('expected_at', '>', now())) + $expiredCount = ScheduledGivingDonation::query() + ->whereNotNull('customer_id') + ->where('total_amount', '>', 0) + ->whereNull('deleted_at') + ->whereHas('payments', fn ($q) => $q->whereNull('deleted_at')) + ->whereDoesntHave('payments', fn ($q) => $q->whereNull('deleted_at')->where('expected_at', '>', now())) ->count(); $tabs['past'] = Tab::make('Past Seasons') @@ -144,7 +147,6 @@ class ListScheduledGivingDonations extends ListRecords ->badgeColor('gray') ->modifyQueryUsing(fn (Builder $q) => $this->applyExpired($q)); - // All real $tabs['all'] = Tab::make('All') ->icon('heroicon-o-squares-2x2') ->modifyQueryUsing(fn (Builder $q) => $this->applyReal($q)); diff --git a/temp_files/fix2/ScheduledGivingDashboard.php b/temp_files/fix2/ScheduledGivingDashboard.php index 7616da5..3deb45a 100644 --- a/temp_files/fix2/ScheduledGivingDashboard.php +++ b/temp_files/fix2/ScheduledGivingDashboard.php @@ -82,7 +82,7 @@ class ScheduledGivingDashboard extends Page $currentIds = $this->currentSeasonIds($c->id); $expiredIds = $realIds->diff($currentIds); - // Current season payment stats + // Current season payment stats — separate due vs future $currentPayments = null; if ($currentIds->isNotEmpty()) { $currentPayments = DB::table('scheduled_giving_payments') @@ -91,10 +91,12 @@ class ScheduledGivingDashboard extends Page ->selectRaw(" COUNT(*) as total, SUM(is_paid = 1) as paid, - SUM(is_paid = 0) as pending, - SUM(is_paid = 0 AND attempts > 0) as failed, + SUM(is_paid = 0 AND expected_at <= NOW()) as failed, + SUM(is_paid = 0 AND expected_at > NOW()) as scheduled, + SUM(expected_at <= NOW()) as due, SUM(CASE WHEN is_paid = 1 THEN amount ELSE 0 END) as collected, - SUM(CASE WHEN is_paid = 0 THEN amount ELSE 0 END) as pending_amount, + SUM(CASE WHEN is_paid = 0 AND expected_at <= NOW() THEN amount ELSE 0 END) as failed_amount, + SUM(CASE WHEN is_paid = 0 AND expected_at > NOW() THEN amount ELSE 0 END) as scheduled_amount, AVG(CASE WHEN is_paid = 1 THEN amount ELSE NULL END) as avg_amount, MIN(CASE WHEN is_paid = 0 AND expected_at > NOW() THEN expected_at ELSE NULL END) as next_payment ") @@ -121,6 +123,9 @@ class ScheduledGivingDashboard extends Page $fullyPaid = $row->cnt ?? 0; } + $due = (int) ($currentPayments->due ?? 0); + $paid = (int) ($currentPayments->paid ?? 0); + $result[] = [ 'campaign' => $c, 'all_time_subscribers' => $realIds->count(), @@ -130,13 +135,16 @@ class ScheduledGivingDashboard extends Page // Current season 'current_subscribers' => $currentIds->count(), 'expired_subscribers' => $expiredIds->count(), - 'current_payments' => (int) ($currentPayments->total ?? 0), - 'current_paid' => (int) ($currentPayments->paid ?? 0), - 'current_pending' => (int) ($currentPayments->pending ?? 0), - 'current_failed' => (int) ($currentPayments->failed ?? 0), - 'current_collected' => ($currentPayments->collected ?? 0) / 100, - 'current_pending_amount' => ($currentPayments->pending_amount ?? 0) / 100, + 'total_payments' => (int) ($currentPayments->total ?? 0), + 'due_payments' => $due, + 'paid_payments' => $paid, + 'failed_payments' => (int) ($currentPayments->failed ?? 0), + 'scheduled_payments' => (int) ($currentPayments->scheduled ?? 0), + 'collected' => ($currentPayments->collected ?? 0) / 100, + 'failed_amount' => ($currentPayments->failed_amount ?? 0) / 100, + 'scheduled_amount' => ($currentPayments->scheduled_amount ?? 0) / 100, 'avg_per_night' => ($currentPayments->avg_amount ?? 0) / 100, + 'collection_rate' => $due > 0 ? round($paid / $due * 100, 1) : 0, 'fully_completed' => $fullyPaid, 'dates' => $c->dates ?? [], 'total_nights' => $totalNights, @@ -169,25 +177,32 @@ class ScheduledGivingDashboard extends Page ->whereNull('deleted_at') ->selectRaw(" SUM(is_paid = 1) as paid, - SUM(is_paid = 0 AND attempts > 0) as failed, + SUM(expected_at <= NOW()) as due, + SUM(is_paid = 0 AND expected_at <= NOW()) as failed, + SUM(is_paid = 0 AND expected_at > NOW()) as scheduled, SUM(CASE WHEN is_paid = 1 THEN amount ELSE 0 END) / 100 as collected, - SUM(CASE WHEN is_paid = 0 THEN amount ELSE 0 END) / 100 as pending, - COUNT(*) as total + SUM(CASE WHEN is_paid = 0 AND expected_at <= NOW() THEN amount ELSE 0 END) / 100 as failed_amount, + SUM(CASE WHEN is_paid = 0 AND expected_at > NOW() THEN amount ELSE 0 END) / 100 as scheduled_amount ") ->first(); } + $due = (int) ($currentStats->due ?? 0); + $paid = (int) ($currentStats->paid ?? 0); + return [ 'total_subscribers' => $realIds->count(), 'current_subscribers' => $currentIds->count(), 'expired_subscribers' => $realIds->count() - $currentIds->count(), 'all_time_collected' => (float) ($allTime->collected ?? 0), - 'current_collected' => (float) ($currentStats->collected ?? 0), - 'current_pending' => (float) ($currentStats->pending ?? 0), - 'current_failed' => (int) ($currentStats->failed ?? 0), - 'collection_rate' => ($currentStats->total ?? 0) > 0 - ? round($currentStats->paid / $currentStats->total * 100, 1) - : 0, + 'collected' => (float) ($currentStats->collected ?? 0), + 'failed_amount' => (float) ($currentStats->failed_amount ?? 0), + 'scheduled_amount' => (float) ($currentStats->scheduled_amount ?? 0), + 'failed_count' => (int) ($currentStats->failed ?? 0), + 'scheduled_count' => (int) ($currentStats->scheduled ?? 0), + 'due_payments' => $due, + 'paid_payments' => $paid, + 'collection_rate' => $due > 0 ? round($paid / $due * 100, 1) : 0, ]; } diff --git a/temp_files/fix2/scheduled-giving-dashboard.blade.php b/temp_files/fix2/scheduled-giving-dashboard.blade.php index 758181e..8fe1133 100644 --- a/temp_files/fix2/scheduled-giving-dashboard.blade.php +++ b/temp_files/fix2/scheduled-giving-dashboard.blade.php @@ -16,29 +16,33 @@
-
+
{{ number_format($global['current_subscribers']) }}
-
Active This Season
-
{{ number_format($global['expired_subscribers']) }} from past seasons
+
Active
+
{{ number_format($global['expired_subscribers']) }} past seasons
-
£{{ number_format($global['current_collected'], 0) }}
-
Collected This Season
-
£{{ number_format($global['all_time_collected'], 0) }} all-time
+
£{{ number_format($global['collected'], 0) }}
+
Collected
+
{{ number_format($global['paid_payments']) }}/{{ number_format($global['due_payments']) }} due paid
-
£{{ number_format($global['current_pending'], 0) }}
-
Pending
- @if ($global['current_failed'] > 0) -
{{ $global['current_failed'] }} failed
- @endif +
£{{ number_format($global['failed_amount'], 0) }}
+
Failed
+
{{ number_format($global['failed_count']) }} payments
+
+
+
£{{ number_format($global['scheduled_amount'], 0) }}
+
Upcoming
+
{{ number_format($global['scheduled_count']) }} not yet due
{{ $global['collection_rate'] }}%
Collection Rate
+
of due payments
@@ -49,8 +53,11 @@ @php $c = $data['campaign']; $hasCurrent = $data['current_subscribers'] > 0; - $progressPct = $data['current_payments'] > 0 - ? round($data['current_paid'] / $data['current_payments'] * 100) + $duePct = $data['due_payments'] > 0 + ? round($data['paid_payments'] / $data['due_payments'] * 100) + : 0; + $overallPct = $data['total_payments'] > 0 + ? round($data['paid_payments'] / $data['total_payments'] * 100) : 0; @endphp @@ -67,8 +74,6 @@ @if ($hasCurrent) - {{-- Current Season --}} -
This Season
Subscribers
@@ -80,23 +85,35 @@
Collected
-
£{{ number_format($data['current_collected'], 0) }}
+
£{{ number_format($data['collected'], 0) }}
-
Pending
-
£{{ number_format($data['current_pending_amount'], 0) }}
+
+ {{ $data['collection_rate'] }}% Rate +
+
+ {{ $data['paid_payments'] }}/{{ $data['due_payments'] }} due +
- {{-- Payment progress bar --}} + {{-- Progress bar: paid / total (including future) --}}
- {{ number_format($data['current_paid']) }} / {{ number_format($data['current_payments']) }} payments - {{ $progressPct }}% + {{ number_format($data['paid_payments']) }} paid, {{ number_format($data['failed_payments']) }} failed, {{ number_format($data['scheduled_payments']) }} upcoming
-
-
+
+ @if ($data['total_payments'] > 0) +
+
+ @endif +
+
+ ■ Paid + @if ($data['failed_payments'] > 0) + ■ Failed (£{{ number_format($data['failed_amount'], 0) }}) + @endif + ■ Upcoming (£{{ number_format($data['scheduled_amount'], 0) }})
@@ -111,12 +128,12 @@
Failed
-
{{ $data['current_failed'] }}
+
{{ $data['failed_payments'] }}
@endif - {{-- All-time summary --}} + {{-- All-time --}}
All Time
@@ -220,7 +237,6 @@

{{ number_format($quality['total_records']) }} total records in database. Only {{ number_format($global['total_subscribers']) }} are real subscribers with payments. - The rest are incomplete sign-ups, test data, or soft-deleted.