* Copyright (C) 2018 Frédéric France * Copyright (C) 2024 MDW * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ /** * \file htdocs/don/payment/payment.php * \ingroup donations * \brief Page to add payment of a donation */ // Load Dolibarr environment require '../../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/don/class/don.class.php'; require_once DOL_DOCUMENT_ROOT.'/don/class/paymentdonation.class.php'; require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; $langs->load("bills"); $chid = GETPOSTINT("rowid"); $action = GETPOST('action', 'aZ09'); $amounts = array(); $cancel = GETPOST('cancel'); // Security check $socid = 0; if ($user->socid > 0) { $socid = $user->socid; } $object = new Don($db); /* * Actions */ if ($action == 'add_payment') { $error = 0; if ($cancel) { $loc = DOL_URL_ROOT.'/don/card.php?rowid='.$chid; header("Location: ".$loc); exit; } $datepaid = dol_mktime(12, 0, 0, GETPOST("remonth"), GETPOST("reday"), GETPOST("reyear")); if (!(GETPOST("paymenttype") > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("PaymentMode")), null, 'errors'); $error++; } if ($datepaid == '') { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("Date")), null, 'errors'); $error++; } if (isModEnabled("bank") && !(GETPOSTINT("accountid") > 0)) { setEventMessages($langs->trans("ErrorFieldRequired", $langs->transnoentities("AccountToCredit")), null, 'errors'); $error++; } if (!$error) { $paymentid = 0; // Read possible payments foreach ($_POST as $key => $value) { if (substr($key, 0, 7) == 'amount_') { $other_chid = substr($key, 7); $amounts[$other_chid] = price2num(GETPOST($key)); } } if (count($amounts) <= 0) { $error++; $errmsg = 'ErrorNoPaymentDefined'; setEventMessages($errmsg, null, 'errors'); } if (!$error) { $db->begin(); // Create a line of payments $payment = new PaymentDonation($db); $payment->chid = $chid; $payment->datep = $datepaid; $payment->amounts = $amounts; // Tableau de montant $payment->paymenttype = GETPOSTINT("paymenttype"); $payment->num_payment = GETPOST("num_payment", 'alphanohtml'); $payment->note_public = GETPOST("note_public", 'restricthtml'); if (!$error) { $paymentid = $payment->create($user); if ($paymentid < 0) { $errmsg = $payment->error; setEventMessages($errmsg, null, 'errors'); $error++; } } if (!$error) { $result = $payment->addPaymentToBank($user, 'payment_donation', '(DonationPayment)', GETPOSTINT('accountid'), '', ''); if (!($result > 0)) { $errmsg = $payment->error; setEventMessages($errmsg, null, 'errors'); $error++; } } if (!$error) { $db->commit(); $loc = DOL_URL_ROOT.'/don/card.php?rowid='.$chid; header('Location: '.$loc); exit; } else { $db->rollback(); } } } $action = 'create'; } /* * View */ $form = new Form($db); $title = $langs->trans("Payment"); llxHeader('', $title, '', '', 0, 0, '', '', '', 'mod-donation page-payment'); $sql = "SELECT sum(p.amount) as total"; $sql .= " FROM ".MAIN_DB_PREFIX."payment_donation as p"; $sql .= " WHERE p.fk_donation = ".((int) $chid); $resql = $db->query($sql); if ($resql) { $obj = $db->fetch_object($resql); $sumpaid = $obj->total; $db->free($resql); } // Form to create donation payment if ($action == 'create') { $object->fetch($chid); $total = $object->amount; print load_fiche_titre($langs->trans("DoPayment")); if (!empty($conf->use_javascript_ajax)) { print "\n".''."\n"; } print '
'; print ''; print ''; print ''; print ''; print dol_get_fiche_head(); print ''; print '"; print ''; print '\n"; print ''; print ''; print ''; print ''; // Number print ''; print ''."\n"; print ''; print ''; print ''; print ''; print '
'.$langs->trans("Date").''; $datepaid = dol_mktime(12, 0, 0, GETPOST("remonth"), GETPOST("reday"), GETPOST("reyear")); $datepayment = !getDolGlobalString('MAIN_AUTOFILL_DATE') ? (GETPOST("remonth") ? $datepaid : -1) : 0; print $form->selectDate($datepayment, '', 0, 0, 0, "add_payment", 1, 1, 0, '', '', $object->date, '', 1, $langs->trans("DonationDate")); print "
'.$langs->trans("PaymentMode").''; $form->select_types_paiements(GETPOSTISSET("paymenttype") ? GETPOST("paymenttype") : $object->fk_typepayment, "paymenttype"); print "
'.$langs->trans('AccountToCredit').''; $form->select_comptes(GETPOSTISSET("accountid") ? GETPOST("accountid") : "0", "accountid", 0, '', 2); // Show open bank account list print '
'.$langs->trans('Numero'); print ' ('.$langs->trans("ChequeOrTransferNumber").')'; print '
'.$langs->trans("Comments").'
'; print dol_get_fiche_end(); /* * List of payments on donation */ $num = 1; $i = 0; print ''; print ''; print ''; print ''; print ''; print ''; print ''; print "\n"; $total = 0; $totalrecu = 0; while ($i < $num) { $objp = $object; print ''; print '"; print '"; print '"; print '"; print '"; print "\n"; /*$total+=$objp->total; $total_ttc+=$objp->total_ttc; $totalrecu+=$objp->am;*/ //Useless code ? $i++; } /*if ($i > 1) { // Print total print ''; print ''; print ""; print ""; print ""; print ''; print "\n"; }*/ //Useless code ? print "
'.$langs->trans("Donation").''.$langs->trans("Amount").''.$langs->trans("AlreadyPaid").''.$langs->trans("RemainderToPay").''.$langs->trans("Amount").'
'.$object->getNomUrl(1)."'.price($objp->amount)."'.price($sumpaid)."'.price($objp->amount - $sumpaid)."'; if ($sumpaid < $objp->amount) { $namef = "amount_".$objp->id; if (!empty($conf->use_javascript_ajax)) { print img_picto("Auto fill", 'rightarrow', "class='AutoFillAmount' data-rowname='".$namef."' data-value='".price($objp->amount - $sumpaid)."'"); } print ''; } else { print '-'; } print "
'.$langs->trans("Total").':".price($total_ttc)."".price($totalrecu)."".price($total_ttc - $totalrecu)." 
"; print $form->buttonsSaveCancel(); print "
\n"; } llxFooter(); $db->close();