From 93064c6f6ce94a0fc58ad9160061975169f6ba3a Mon Sep 17 00:00:00 2001 From: Matthew Wire <mjw@mjwconsult.co.uk> Date: Mon, 26 Oct 2020 18:04:50 +0000 Subject: [PATCH] Add support for issuing refunds via the payment UI for payment processors that support refunds (eg. Stripe). --- CRM/Mjwshared/Form/PaymentRefund.php | 135 ++++++++++++++++++ README.md | 7 + docs/images/mjwconsulting.jpg | Bin 0 -> 8312 bytes docs/images/refundpaymenticon.png | Bin 0 -> 31625 bytes docs/images/refundui.png | Bin 0 -> 25791 bytes docs/index.md | 12 ++ docs/refunds.md | 16 +++ docs/releasenotes.md | 4 + info.xml | 6 +- mjwshared.php | 53 +++++++ mkdocs.yml | 1 + settings/mjwshared.setting.php | 31 ++++ .../CRM/Mjwshared/Form/PaymentRefund.tpl | 26 ++++ xml/Menu/mjwshared.xml | 9 ++ 14 files changed, 297 insertions(+), 3 deletions(-) create mode 100644 CRM/Mjwshared/Form/PaymentRefund.php create mode 100644 docs/images/mjwconsulting.jpg create mode 100644 docs/images/refundpaymenticon.png create mode 100644 docs/images/refundui.png create mode 100644 docs/index.md create mode 100644 docs/refunds.md create mode 100644 settings/mjwshared.setting.php create mode 100644 templates/CRM/Mjwshared/Form/PaymentRefund.tpl create mode 100644 xml/Menu/mjwshared.xml diff --git a/CRM/Mjwshared/Form/PaymentRefund.php b/CRM/Mjwshared/Form/PaymentRefund.php new file mode 100644 index 0000000..3a6f24a --- /dev/null +++ b/CRM/Mjwshared/Form/PaymentRefund.php @@ -0,0 +1,135 @@ +<?php + +use CRM_Mjwshared_ExtensionUtil as E; + +/** + * Form controller class + * + * @see https://docs.civicrm.org/dev/en/latest/framework/quickform/ + */ +class CRM_Mjwshared_Form_PaymentRefund extends CRM_Core_Form { + + /** + * @var int $paymentID + */ + private $paymentID; + + /** + * @var int $contributionID + */ + private $contributionID; + + public function buildQuickForm() { + if (!CRM_Core_Permission::check('edit contributions')) { + CRM_Core_Error::statusBounce(ts('You do not have permission to access this page.')); + } + + if ($this->isSubmitted()) { + return; + } + + $this->setTitle('Refund payment'); + + $this->paymentID = CRM_Utils_Request::retrieveValue('id', 'Positive', NULL, FALSE, 'GET'); + if (!$this->paymentID) { + CRM_Core_Error::statusBounce('Payment not found!'); + } + + $this->contributionID = CRM_Utils_Request::retrieveValue('contribution_id', 'Positive', NULL, FALSE, 'GET'); + if (!$this->contributionID) { + CRM_Core_Error::statusBounce('Contribution not found!'); + } + + $this->add('hidden', 'payment_id'); + + $lineItems = civicrm_api3('LineItem', 'get', [ + 'contribution_id' => $this->contributionID, + ])['values']; + foreach ($lineItems as $lineItemID => $lineItemDetails) { + switch ($lineItemDetails['entity_table']) { + case 'civicrm_participant': + $participantIDs[] = $lineItemDetails['entity_id']; + break; + } + } + if (!empty($participantIDs)) { + $this->set('participant_ids', $participantIDs); + $participants = civicrm_api3('Participant', 'get', [ + 'id' => ['IN' => $participantIDs], + ])['values']; + $this->assign('participants', $participants); + $this->addYesNo('cancel_participants', E::ts('Cancel Participants'), NULL, TRUE); + } + + $this->addButtons([ + [ + 'type' => 'submit', + 'name' => ts('Refund'), + 'isDefault' => TRUE, + ], + [ + 'type' => 'cancel', + 'name' => ts('Cancel'), + ], + ]); + } + + public function setDefaultValues() { + if ($this->paymentID) { + $this->_defaults['payment_id'] = $this->paymentID; + $this->set('payment_id', $this->paymentID); + } + return $this->_defaults; + } + + public function postProcess() { + $formValues = $this->getSubmitValues(); + $paymentID = $this->get('payment_id'); + $participantIDs = $this->get('participant_ids'); + // For some reason cancel_participants is a required field but is not being validated as "required" by the form. + // so do a crude validation here. + if (!empty($participantIDs) && !isset($formValues['cancel_participants'])) { + CRM_Core_Error::statusBounce('Cancel Participants is a required field'); + } + + try { + $payment = reset(civicrm_api3('Mjwpayment', 'get_payment', ['id' => $paymentID])['values']); + $refundParams = [ + 'payment_processor_id' => $payment['payment_processor_id'], + 'amount' => $payment['total_amount'], + 'currency' => $payment['currency'], + 'trxn_id' => $payment['trxn_id'], + ]; + $refund = reset(civicrm_api3('PaymentProcessor', 'Refund', $refundParams)['values']); + if ($refund['refund_status_name'] === 'Completed') { + $refundPaymentParams = [ + 'contribution_id' => $payment['contribution_id'], + 'trxn_id' => $refund['refund_trxn_id'], + 'order_reference' => $payment['order_reference'], + 'total_amount' => (-$payment['total_amount']), + 'payment_processor_id' => $payment['payment_processor_id'], + ]; + // Record the refund in CiviCRM + civicrm_api3('Mjwpayment', 'create_payment', $refundPaymentParams); + $message = E::ts('Refund was processed successfully.'); + + if ($formValues['cancel_participants'] && !empty($participantIDs)) { + foreach ($participantIDs as $participantID) { + civicrm_api3('Participant', 'create', [ + 'id' => $participantID, + 'status_id' => 'Cancelled', + ]); + } + $message .= ' ' . E::ts('Cancelled %1 participant registration(s).', [1 => count($participantIDs)]); + } + CRM_Core_Session::setStatus($message, 'Refund processed', 'success'); + } + else { + CRM_Core_Error::statusBounce("Refund status '{$refund['refund_status_name']}'is not supported at this time and was not recorded in CiviCRM."); + } + } catch (Exception $e) { + CRM_Core_Error::statusBounce($e->getMessage(), NULL, 'Refund failed'); + } + } + +} diff --git a/README.md b/README.md index 5dc95ad..0675f90 100644 --- a/README.md +++ b/README.md @@ -14,3 +14,10 @@ The extension is licensed under [AGPL-3.0](LICENSE.txt). ## Installation See: https://docs.civicrm.org/sysadmin/en/latest/customize/extensions/#installing-a-new-extension + +## Support and Maintenance +This extension is supported and maintained by: + +[](https://www.mjwconsult.co.uk) + +We offer paid [support and development](https://mjw.pt/support) as well as a [troubleshooting/investigation service](https://mjw.pt/investigation). diff --git a/docs/images/mjwconsulting.jpg b/docs/images/mjwconsulting.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2fb9b9e2142001bc7c4eed1d159a9ca2a86a16f5 GIT binary patch literal 8312 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 literal 0 HcmV?d00001 diff --git a/docs/images/refundpaymenticon.png b/docs/images/refundpaymenticon.png new file mode 100644 index 0000000000000000000000000000000000000000..58c2bffa4e703110f38445f0e21162d9cb3f1f09 GIT binary patch literal 31625 zcmc$_1yo$mw=PHmL4pT&4X(jGI0SchcXtc!?$#t|@ZfHtafhIdHtsYo4LpAL-v6C> z_r7^+X3d&4y?S+bol|Sqt~$GR@BQtsqLme;Q9lxXgn@xUm6efDg@J)Jef!;k2><qp z;K_XO_66rACaaG4_VPzGk9unpxJzogt2tS^dzrXez*sptIan~enYmh6IJ#Loxu3)K z2*bdT!^ldAs(a_1tOYp}9r|oO)DB|3+a^%yBG_6=$oehrSVdF$iM!UmLCsU9%E9(G zw;F724UW9l7ljQ6Bt?gaD6f(}!(wLjUj`I;9`Jd((iaY&D9gh_)#cGEBG!WkPLNW% z7_B?mw|Gm93r2!Tj!MmJt8gv!z6%2GUSRIUp`Vq>>0P0L722QQ#Y=7bY_vQDJO*_5 z6<~;w%cfBO`};I2lJpv0=3mX{s^sXb|F|VPi<bKTdjsT7NfWj?B=W*87InG=D4_q6 zF`w*`LT$r15-_?>Gv?%#v`a4A^wv$2A-&aQ8@@!<Mxc4$Dkjdt!#s~#cIBIEL4C`} zC5XhFPe%2WJ3Z?8x=duih4@>^CmyHuoe7?e)tXb^vDCV%gt$~{hg5q+gPUYJ`!$BS zj1Umf(0aRuV;l2ES=t~{bK|r~_k8{gpOl~80dMje_~y*vGV8a%NtbJuS=Gjmt2BG1 z*|Yj`i4$p&N6Z$d4MXCDmzl)C#%QG}_Js{GH#c<1p@QSCV)ob<e&GSdJWyMKwxyEC z^y+HoW369QImyx<!dBq%Ds%@?>CSz6c2z!hM%KwWY~;aVU0b$7Wkq$V#fj|c_O!qH z7k)Q+w7-jAxBQif&N~zjKg}M!k%04noUu>nx6?DT@^W$rYh6klx>tz>yWn9T?zzuP z31)w;@9FTYTAXq>V$NEKS%e*!nhG+|+Mg8Jxx28sYWQ`1eGiZAmx9kzijRc!PeVi= zMwD7Tju*f>i98$rsd_DrkYTFCi;I4ZDoe+Zx~j<1Qk%iSQbd4#*LnOpOT+fm7v32; zFC|8R0~GKSZ(;Y!7PMdxqK73YaPhuod*8dg|AWT_r_=VWFx{QeJ`DjOZ+{7VEXO`S zpR-*AqngLx`O|SvIaOwThap+udpgAg32J$^AI3X{_<GNh6^YL7m0Il`4pZGc2;c3b z1N%Z%!BFEQD_RgA<OC_FbyD6lN4$xYu1t!LgR?*SrAULMzj-%Hxn0KJ8Gq54%wYa{ zhNo@9Ns{XhAy;_v!WbQ)#>m3nJ1Vu0UzbL)zN<?Nuez(O<w1bj=Bk1a6HDx(pX|kX zUU1X2Zn#>nrQ)%08NyCO<cp7zvm3<PsX|D*G&>P}PyfiTXYI&-aF*y6=%3WB7`kT} zI{Ctz8fzpp_RtsD9v^NI*~+WsW9OLGy@v}B?)iN}Tof?TsBV}=cr<uGM*ZTxTLqX= zaBdWQ&&~6~86eJgrq36@yxQq7Cu$pQVbCC}rG;mZfBLtMOvz5`;q~;hly44u$Tkz& zqdeN|@@ikSeRTOxN8Lww0-yHCgbZ9={wI8W6vA<(c+E-dW@C2*g5?k5(p>Xx4+J$6 zr)6DU-`9%_h)+-VuMgKpMH_(E|I7hZH%IT_z{mISZoTLwNk~+BpM0McZFX@c1aj^3 zO&z?b$2Ye!GZB5|7P~R0S3Z{?Fm_Z<?I1D3-eu_jf>HMa=|ON;w2tz@9HX{$)06R_ zo9%Fb?|b^4`-c`#d<6o78XC{NJWbTm?I+fqXhKJI#(waU9!uQW0-{CCcLn|vajmsh z98@PZNs}$TD_JJB$|?bg6_<0FsI#Hl6F(wctlzUch<%Qs8E?zm-B)re><3T_SaZi` z=4^4FzPhGUOIKJr$ZAxzVNk3!ndYg#e6|4-oxElnai>_g&+>Q!2KoxFM0InX@b#dZ zJ|WB#*NN4F@Z&D0E6ix_y4QE^E{$cGo7t(v)zqfPq~f@V=b^Drs{>2&iL;BZe3obO z7v&66crE)`Y$M9&Fh;F``FO%J@@{TqMQ&9_mUfPAd@uQBxPDyn=pJ*ceA;LG;|XpR zwOB=;Ue~d<)rIbxksTz1lG-g%=87xJ3g(_q*#!FK%V$Xeq*O%bWep|a-F1G%at*Wx z2Z&!d|0<QusMc(VZ|5Z<Fa`k89^qM44gC{l)-B_(@W#l5=0)9<{B6uR{9+Qq3G{N$ zGQZ6}S2AESrhi*)_pqDKcUiDYs+{=3E-dNh#A@lqx(9{ZP957Q*g`flj@Ji6oq0;+ zrY_5W@;yq?wBBoV{k4en@$6hpE0u=F$Ima?9!D%7<5L(~MeGZnsqnIIVTpGs_eiRf z!;8M_1#ULPO@)>{al#rr_3`$}Ei-MGO)xCB@-+>)zOCvtVOssReg*Ms=^$;ZXKSu- z!>U57n?)Yu9>#X&Ai-JIXLh#X2cIAA$$c+#`ZoB+*HC<Mk~x$Q2yOS@z1X-0%4<T; zJX<*hze2&+Yxx-?6d|zN(;UEq{cRM^UHl`F5$`71*(Mc5z~l_JV1M?Dr~VZl-+WLG zV~ru;xw3~ckY7fr5}`B#2`z5>h-eGC#3odt0<V}r;l^IBD=8rNB^_Z6=nUJ2_>M7L zAdNCp4$L};1edz>m7S>1>2n_*ZN4HFIs#i$yhww@kP`uKHuds1nhd#8I_tpqhCJck z-@mT*6%41yg)6J#YF5Eu%fK<GBxHK?E37i4$iB`c3|ezETWxe~qGb-cx#tm@T<eno zM&Qb}(?j!y#Qm(2e$Kc|4s~qBhUO9ItzcDo$+z2qtcC~<$Sk|9vb=+iV`f_7Z(pzC zP~ivwj^Lf)eFBoBpPbxZU#BhivAL&bW+ZH&D6~=y<1Fa&LWvX{{wDT-?qnpEF87?h z@^AJze)uS!y)TOJtd=7QsP??NbwWd7njvMrHed`g(ry`UqO!&QM~mhW2l!TA{}{YI zegaaFsrzC2$9BD?vDEG63X=41pZBa9;^LKp_t_NEzXjNtCIv%auk(fb=SVb&<!Y7K zghBnoKsc%{5B-N#n6g^;FM=-7Q|O!=+1?p-PdU=M0X^y|wkjHwx6|V2E}OmY0$=un z0_Qi(5`_l41D?1I`>uJ-)F!Uoed*dzd{_4I$;Q^_MY$hCh#hXH{TmUsVK{H#4sC9y zjc;eS+WJ?oiP<KA+GtvLNQ!q^jk#TUf$c<#>FhKW6F@X~x6Yn?cqLeaE)wEyj<IW| z%}Zxvk<E(!ZOG<wsf|6?kShtQP(W4*({|=wF#RB_!M3v(>nSoa@zLOs-N3fZp7rm< z486>(tT0v2xaec%>w<%#uD0|d*yqNn%niRJ+gLT&0Emhrfg4c7CoSQO9AfVi$;T($ zH@;=4m?!wn&krxa3Z6|4kDx>Sl+KtWKeQ<C@VumKP29#cPHs`}fJ{&}(PnmjPEHF} zJ|UjNtu+!$G<9!*1wJ7+tsd(VCC6Q<B(`UW^&B)rb$;(bnNVQP5Qb)sMSp4gU1m78 z<|!)7KS?&3S@RR^JS8FW=8Z2z@5L|Bl5dTyw{ecTL6Thhi^10`y)0~*&-I(gSP+7P zbqtCgG4Aw1&o9OGo2Wy-J89Ox#{E9ugpJbnXtvwv_)+o-_iS+5NOoFQOR`sEz(}^O ze|in?cWCQS+E$sE(C?L%Yp@Wkcb?UFz#!g-CEpA%*^$SKjVx7-4i`Ree|mk8i?fo; z>f^Z1d6ObEQf`ROF=kbwUVgJf2YIoqK?@A2NqF;Z`KExQ1PZAQ7@-ML!D^xFMiyWx zno>Tpv&*kOwTHXM=KZYA!pZHv4}VE)d$-FOY1@u7miL+odeyWL8u$j?uKqTWmfRhz z1EyO)pVE0n6jfI@dIf}REqf}Wuqs)D`1mdb`??LsD-uc~57BOCPi%Tm4ma5l4jLb= zZ@jI~4@=Y2Ps@GhZ{$9gb88q;X~ve<vDd6;Zyh-`U!DAkjT{^Xa38)m7V!X-jO?-e zaMYpMaaG~l9OvLc2f$B(2}HF*Bl%s&Cq*^NvIRZ7aYdlGIrDE~TkMk5wllMwa!gH2 zqtCW(OYRJ6N?==uLL)!5IHuF3JG#VHqTDsI>H9oQlKk?!Xuz^lTU30#+P=>393DPQ z6$FWVT?5iZ?(Ox?{dPw+UZX&3J9GA^Ss`2f>UX8uMQ_kEQ2k6wsQI_6t&OjhTgqrm zdpBKRwQa8N#%E~(8KVT@sGvJ2vK*SIQ^`sRcW~}6aISpk)QYABf+?5yE(TOunwe?3 zbQc+_qYvOoP?Al<W5R8V#v6LqVisE3aM?{n6tKsVQ}CUDCTCPty}tO0|0V35IX&-Z z$5JNsl6rdx%>i1%>7Z!eH14`{QN_n9{ky5KXKzAW!e(TBISWA%zR}GFD*c?CBDgfi zV5<kDY}7<quPib$N|$}KNIf*>v;KxM{(B(u;yX4)1M{k&{O8wIoV~MFYraNz!5dC* z<G=*2JMR(!BB&I)0qwT?hcZ49|D4paCtja}PvR|S9w=>3_uYcr0=D^PVjG09>kZ>) zCJ%+xw9@!{DB@+p5qwL3q^D4>?5EZh2W=OwT_#a)W;P+yomC<T-^-#iEaolx&1@cE zIhoX*GLiAdY7o5IY+F4WRszeZ=SwRj>`jIrCiCY74hx>z3bvD_NtZY0)Z&!JXRje9 z5x(e|MmYtW^3G{>_R%#86EN4)o55|%I^WXDtkNv^vuZoLo!hSS1xiMH_D8M6(3p*e zLKV7gV|S&F4qmKj%M=r^L<Gm|)p)wb_T|T?*!4m*@z?|=m{{V(S@cU_iF?U;`Q@j; z!b6g4u!^|N42m@oEFqzyH0=??ilRM3ux&cHSGNzx`i!ST+vP>=j}4~J2xz}wCs7(2 zenUqc5{F<F@`2JJV}_nv$+Am&E4fY|U4w#R$yV=2D(+sgFWsP5dki%{RXN@Jfq1B? zY=vQ|?^NI6NUFGyK$7J%rH5gh8GkYCV1GCf<o>~IG!I`u(F2v^f@Wkob4sdCq%6Wx zqr%`QxTugtrN%RzR;@YWq*H%HYd(efs0`Fe-#R4)wVWILUZ}H(*$ST1w<R$>`NoP` zBMUDeG6)nBX^}sMDG(8!=q*!pt?<j+PxQ4W!{06Gc4eK`;6rZQdkI<(wF-(pUflng zGB}|yC7NI7ZkkY%%(b_d)d5SSh*)m7cW|h-!}3hCtySvc;n>G+Zj#v%e9BLAT|F9I zLEkVB>g4=ftFB0j+w(gcFh_NbBF`a=Z@vj^aQ7HITrT2CTuE{LWmnqN<#Fn^&!{M6 z@6BZ3G-`sgCW!adCXn3*&=crznu?XuI8l+4bKu&xK<v8ymSG{F5%)ID4A1W1Z*!o! z-`z~FuN%G`9~HGU0ZZy)bF1#(E_y2Gcmw(%OsUH*@C5}w%&(`HVg8crUHlX<mzHkj z<r{gpZ-_Ih3_Jz!qsuF?0rIH@nuNqBxdtu`kI#;ZK<O6lCkzu^U0zcLJzRbJ5rZR& z0NOyyv~1XX_m+^clai-t?4p7W;I)7BER;!2izeHzH#D4Uz{WGL4@*2Qp<o|8a21D^ z$llbGeyeGHe)`kGG0rM-l7lbX;`%R}mcGHY=faxSvrD%0A-{8aGKb5gRf9e;nTfqC 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¬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 literal 0 HcmV?d00001 diff --git a/docs/images/refundui.png b/docs/images/refundui.png new file mode 100644 index 0000000000000000000000000000000000000000..2c02410c30223de965d96a4503639b2435eb7912 GIT binary patch literal 25791 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 ANdN!< literal 0 HcmV?d00001 diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000..98f5356 --- /dev/null +++ b/docs/index.md @@ -0,0 +1,12 @@ +# Payment Shared library + +This library is used by all payment processors by MJW Consulting and other extensions. + +It provides multiple functions such as APIs, refund UI, shared code and a compatibility layer to support multiple versions of CiviCRM without requiring explicit support in the payment processor. + +## Support and Maintenance +This extension is supported and maintained by: + +[](https://www.mjwconsult.co.uk) + +We offer paid [support and development](https://mjw.pt/support) as well as a [troubleshooting/investigation service](https://mjw.pt/investigation). diff --git a/docs/refunds.md b/docs/refunds.md new file mode 100644 index 0000000..963cd45 --- /dev/null +++ b/docs/refunds.md @@ -0,0 +1,16 @@ +# Refunds UI (experimental) + +There is a refunds UI available for payments: + + +To access the refund click the "undo" icon by the payment: + + +Currently it can be enabled via the setting `mjwshared_refundpaymentui` which is available via +*Administer->CiviContribute->Stripe Settings: Enable refund payment via UI (experimental)?* + +It allows you to issue refunds for `Completed` payments if the payment processor supports it (eg. Stripe). + +It also allows you to choose whether to cancel the event registration if there are any linked to the contribution (via line-items). + +To access the refunds UI you must have "edit contributions" permission. diff --git a/docs/releasenotes.md b/docs/releasenotes.md index 4eea5d8..c0fc51c 100644 --- a/docs/releasenotes.md +++ b/docs/releasenotes.md @@ -9,6 +9,10 @@ Releases use the following numbering system: * **[BC]**: Items marked with [BC] indicate a breaking change that will require updates to your code if you are using that code in your extension. +## Release 0.9.7 (not yet released 2020-10-26) + +* Add support for issuing refunds via the payment UI for payment processors that support refunds (eg. Stripe). + ## Release 0.9.6 * Fix [Stripe#271](https://lab.civicrm.org/extensions/stripe/-/issues/271) Can't submit credit card memberships: Uncaught (in promise) TypeError: this.form is null diff --git a/info.xml b/info.xml index b712b65..af390e0 100644 --- a/info.xml +++ b/info.xml @@ -14,9 +14,9 @@ <url desc="Release Notes">https://lab.civicrm.org/extensions/mjwshared/-/blob/master/docs/releasenotes.md</url> <url desc="Licensing">http://www.gnu.org/licenses/agpl-3.0.html</url> </urls> - <releaseDate>2020-10-24</releaseDate> - <version>0.9.6</version> - <develStage>stable</develStage> + <releaseDate>2020-10-26</releaseDate> + <version>0.9.7-dev</version> + <develStage>beta</develStage> <compatibility> <ver>5.28</ver> </compatibility> diff --git a/mjwshared.php b/mjwshared.php index c9d9ba8..95fb798 100644 --- a/mjwshared.php +++ b/mjwshared.php @@ -197,5 +197,58 @@ function mjwshared_symfony_civicrm_buildAsset($event, $hook) { $event->mimeType = $event->params['mimetype']; } } +} + +/** + * Implements hook_civicrm_links + * Add links to membership list on contacts tab to view/setup direct debit + * + * @param $op + * @param $objectName + * @param $objectId + * @param $links + * @param $mask + * @param $values + */ +function mjwshared_civicrm_links($op, $objectName, $objectId, &$links, &$mask, &$values) { + if ($objectName === 'Payment' && $op === 'Payment.edit.action') { + if ((boolean)\Civi::settings()->get('mjwshared_refundpaymentui') === FALSE) { + return; + } + if (!CRM_Core_Permission::check('edit contributions')) { + return; + } + try { + $contribution = reset(civicrm_api3('Mjwpayment', 'get_contribution', [ + 'payment_id' => $values['id'], + 'contribution_test' => ['IS NOT NULL' => 1], + ])['values']); + // Don't allow refunds if contribution status is "Refunded" + if ((int)$contribution['contribution_status_id'] === CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Refunded')) { + return; + } + $payment = $contribution['payments'][$values['id']]; + // Don't allow refunds if payment status is not "Completed" + if ((int)$payment['status_id'] !== CRM_Core_PseudoConstant::getKey('CRM_Contribute_BAO_Contribution', 'contribution_status_id', 'Completed')) { + return; + } + $paymentProcessor = \Civi\Payment\System::singleton() + ->getById($payment['payment_processor_id']); + if ($paymentProcessor->supportsRefund()) { + // Add the refund link to the payment + $links[] = [ + 'name' => 'Refund Payment', + 'icon' => 'fa-undo', + 'url' => 'civicrm/mjwpayment/refund', + 'class' => 'medium-popup', + 'qs' => 'reset=1&id=%%id%%&contribution_id=%%contribution_id%%', + 'title' => 'Refund Payment', + ]; + } + } + catch (Exception $e) { + // Do nothing. We just don't add the "refund" link. + } + } } diff --git a/mkdocs.yml b/mkdocs.yml index 8881213..5a29d2c 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -18,4 +18,5 @@ markdown_extensions: nav: - Overview: index.md - API: api.md +- Refund UI: refunds.md - Release Notes: releasenotes.md diff --git a/settings/mjwshared.setting.php b/settings/mjwshared.setting.php new file mode 100644 index 0000000..1d16212 --- /dev/null +++ b/settings/mjwshared.setting.php @@ -0,0 +1,31 @@ +<?php +/* + +--------------------------------------------------------------------+ + | Copyright CiviCRM LLC. All rights reserved. | + | | + | This work is published under the GNU AGPLv3 license with some | + | permitted exceptions and without any warranty. For full license | + | and copyright information, see https://civicrm.org/licensing | + +--------------------------------------------------------------------+ + */ + +use CRM_Stripe_ExtensionUtil as E; + +return [ + 'mjwshared_refundpaymentui' => [ + 'name' => 'mjwshared_refundpaymentui', + 'type' => 'Boolean', + 'html_type' => 'checkbox', + 'default' => 0, + 'is_domain' => 1, + 'is_contact' => 0, + 'title' => E::ts('Enable refund payment via UI (experimental)?'), + 'description' => E::ts('Enables a "Refund payment" option next to the edit payment option on Payments. Find payments by expanding contributions.'), + 'html_attributes' => [], + 'settings_pages' => [ + 'stripe' => [ + 'weight' => 50, + ] + ], + ], +]; diff --git a/templates/CRM/Mjwshared/Form/PaymentRefund.tpl b/templates/CRM/Mjwshared/Form/PaymentRefund.tpl new file mode 100644 index 0000000..02d5756 --- /dev/null +++ b/templates/CRM/Mjwshared/Form/PaymentRefund.tpl @@ -0,0 +1,26 @@ +{crmScope extensionKey='mjwshared'} +<div class="crm-submit-buttons"> +{include file="CRM/common/formButtons.tpl" location="top"} +</div> +<div class="help">{ts}Click "refund" to refund this payment{/ts}</div> +{if $participants} +<div class="description">{ts}Do you want to cancel the following event registrations when you refund the payment?{/ts}</div> + +{foreach from=$participants item=participant} + <div class="crm-section"> + <div class="label">Registration</div> + <div class="content">{$participant.event_title} - {$participant.participant_status}</div> + <div class="clear"></div> + </div> +{/foreach} +<div class="crm-section"> + <div class="label">{$form.cancel_participants.label}</div> + <div class="content">{$form.cancel_participants.html}</div> + <div class="clear"></div> +</div> +{/if} + +<div class="crm-submit-buttons"> +{include file="CRM/common/formButtons.tpl" location="bottom"} +</div> +{/crmScope} diff --git a/xml/Menu/mjwshared.xml b/xml/Menu/mjwshared.xml new file mode 100644 index 0000000..a69f537 --- /dev/null +++ b/xml/Menu/mjwshared.xml @@ -0,0 +1,9 @@ +<?xml version="1.0"?> +<menu> + <item> + <path>civicrm/mjwpayment/refund</path> + <page_callback>CRM_Mjwshared_Form_PaymentRefund</page_callback> + <title>PaymentRefund</title> + <access_arguments>edit contributions</access_arguments> + </item> +</menu> -- GitLab