Skip to content

Commit

Permalink
Merge branch 'develop' into patch-8
Browse files Browse the repository at this point in the history
  • Loading branch information
eldy authored Jan 29, 2024
2 parents a85af3c + c57e16d commit c343064
Show file tree
Hide file tree
Showing 46 changed files with 1,701 additions and 118 deletions.
10 changes: 9 additions & 1 deletion .github/workflows/pre-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,13 +63,21 @@ jobs:
# files: |
# **.php

- name: Setup PHPCS
uses: shivammathur/setup-php@v2
if: steps.changed-php.outputs.any_changed == 'true'
with:
php-version: 8.1
coverage: none # disable xdebug, pcov
tools: phpcs

- name: Run some pre-commit hooks on selected changed files only
if: steps.changed-php.outputs.any_changed == 'true'
env:
ALL_CHANGED_FILES: ${{ steps.changed-php.outputs.all_changed_files }}
run: |
set -o pipefail
pre-commit run php-cs ${ALL_CHANGED_FILES} | tee -a ${RAW_LOG}
pre-commit run php-cs --files ${ALL_CHANGED_FILES} | tee -a ${RAW_LOG}
# If error, we convert log in the checkstyle format
- name: Convert Raw Log to CheckStyle format
Expand Down
7 changes: 0 additions & 7 deletions ChangeLog
Original file line number Diff line number Diff line change
Expand Up @@ -187,15 +187,8 @@ NEW: updating for display Help title when try to delete Don (issue #25314)
NEW: Upgrade in module builder in menu section
NEW: use account address in sepa mandate (#23642)
NEW: VAT rate - Add entity
<<<<<<< HEAD
NEW: webportal site account
NEW: When an user unset the batch management of products, transformation of each batch stock movement in global stock movement

FIX: #25828 wrong odt style naming
=======
NEW: When an user unset the batch management of products, transformation of each batch stock mouvement in global stock mouvement
NEW: PDF Generation for each Human Resource Evaluations.
>>>>>>> branch '19.0' of [email protected]:Dolibarr/dolibarr.git

SEC: #25512 applicative anti bruteforce - security on too many login attempts (#25520)
SEC: Add action confirm_... as sensitive to need a CSRF token
Expand Down
2 changes: 1 addition & 1 deletion build/docker/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ RUN echo 'xdebug.idekey="netbeans-xdebug"' >> ${PHP_INI_DIR}/php.ini
# set up sendmail config, to use maildev
RUN echo "account default" > /etc/msmtprc
RUN echo "auth off" >> /etc/msmtprc
RUN echo "port 25" >> /etc/msmtprc
RUN echo "port 1025" >> /etc/msmtprc
RUN echo "host mail" >> /etc/msmtprc
RUN echo "from [email protected]" >> /etc/msmtprc
RUN echo "domain localhost.localdomain" >> /etc/msmtprc
Expand Down
4 changes: 2 additions & 2 deletions build/docker/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -55,8 +55,8 @@ services:
mail:
image: maildev/maildev
ports:
- "8081:80"
- "25:25"
- "8081:1080"
- "25:1025"
networks:
- internal-pod
- external-pod
8 changes: 8 additions & 0 deletions htdocs/adherents/card.php
Original file line number Diff line number Diff line change
Expand Up @@ -2069,6 +2069,14 @@ function initfieldrequired() {
// Show online payment link
$useonlinepayment = (isModEnabled('paypal') || isModEnabled('stripe') || isModEnabled('paybox'));

$parameters = array();
$reshook = $hookmanager->executeHooks('doShowOnlinePaymentUrl', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook < 0) {
setEventMessages($hookmanager->error, $hookmanager->errors, 'errors');
} else {
$useonlinepayment = $reshook;
}

if ($useonlinepayment) {
print '<br>';
if (empty($amount)) { // Take the maximum amount among what the member is supposed to pay / has paid in the past
Expand Down
8 changes: 8 additions & 0 deletions htdocs/adherents/subscription.php
Original file line number Diff line number Diff line change
Expand Up @@ -825,6 +825,14 @@
// Shon online payment link
$useonlinepayment = (isModEnabled('paypal') || isModEnabled('stripe') || isModEnabled('paybox'));

$parameters = array();
$reshook = $hookmanager->executeHooks('doShowOnlinePaymentUrl', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
if (isset($hookmanager->resArray['showonlinepaymenturl'])) {
$useonlinepayment = $hookmanager->resArray['showonlinepaymenturl'];
}
}

if ($useonlinepayment) {
print '<br>';

Expand Down
6 changes: 3 additions & 3 deletions htdocs/admin/ticket_public.php
Original file line number Diff line number Diff line change
Expand Up @@ -476,12 +476,12 @@

// Url public interface
$url_interface = getDolGlobalString("TICKET_URL_PUBLIC_INTERFACE");
print '<tr><td>'.$langs->trans("TicketUrlPublicInterfaceLabelAdmin").'</label>';
print '<tr><td>'.$langs->trans("UrlPublicInterfaceLabelAdmin").'</label>';
print '</td><td>';
print '<input type="text" class="minwidth500" name="TICKET_URL_PUBLIC_INTERFACE" value="'.$url_interface.'"></td>';
print '<input type="text" class="minwidth500" name="TICKET_URL_PUBLIC_INTERFACE" value="'.$url_interface.'" placeholder="https://..."></td>';
print '</td>';
print '<td class="center">';
print $form->textwithpicto('', $langs->trans("TicketUrlPublicInterfaceHelpAdmin"), 1, 'help');
print $form->textwithpicto('', $langs->trans("UrlPublicInterfaceHelpAdmin"), 1, 'help');
print '</td></tr>';

print '</table>';
Expand Down
2 changes: 1 addition & 1 deletion htdocs/ai/admin/setup.php
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@

$arrayofia = array('chatgpt');

foreach($arrayofia as $ia) {
foreach ($arrayofia as $ia) {
// Setup conf AI_PUBLIC_INTERFACE_TOPIC
$item = $formSetup->newItem('AI_KEY_API_'.strtoupper($ia));
$item->defaultFieldValue = '';
Expand Down
9 changes: 9 additions & 0 deletions htdocs/commande/card.php
Original file line number Diff line number Diff line change
Expand Up @@ -3090,6 +3090,15 @@

// Show online payment link
$useonlinepayment = (isModEnabled('paypal') || isModEnabled('stripe') || isModEnabled('paybox'));

$parameters = array();
$reshook = $hookmanager->executeHooks('doShowOnlinePaymentUrl', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
if (isset($hookmanager->resArray['showonlinepaymenturl'])) {
$useonlinepayment = $hookmanager->resArray['showonlinepaymenturl'];
}
}

if (getDolGlobalString('ORDER_HIDE_ONLINE_PAYMENT_ON_ORDER')) {
$useonlinepayment = 0;
}
Expand Down
8 changes: 8 additions & 0 deletions htdocs/compta/facture/card.php
Original file line number Diff line number Diff line change
Expand Up @@ -5993,6 +5993,14 @@ function js_recalculate_revenuestamp(){
// Show online payment link
$useonlinepayment = (isModEnabled('paypal') || isModEnabled('stripe') || isModEnabled('paybox'));

$parameters = array();
$reshook = $hookmanager->executeHooks('doShowOnlinePaymentUrl', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
if (isset($hookmanager->resArray['showonlinepaymenturl'])) {
$useonlinepayment = $hookmanager->resArray['showonlinepaymenturl'];
}
}

if ($object->status != Facture::STATUS_DRAFT && $useonlinepayment) {
print '<br><!-- Link to pay -->'."\n";
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
Expand Down
4 changes: 2 additions & 2 deletions htdocs/core/class/CMailFile.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -1644,9 +1644,9 @@ private function write_files($filename_list, $mimetype_list, $mimefilename_list,
$filename_list_size = count($filename_list);
for ($i = 0; $i < $filename_list_size; $i++) {
if ($filename_list[$i]) {
dol_syslog("CMailFile::write_files: i=$i");
dol_syslog("CMailFile::write_files: i=$i ".$filename_list[$i]);
$encoded = $this->_encode_file($filename_list[$i]);
if ($encoded >= 0) {
if ($encoded !== -1) {
if ($mimefilename_list[$i]) {
$filename_list[$i] = $mimefilename_list[$i];
}
Expand Down
14 changes: 9 additions & 5 deletions htdocs/core/class/commondocgenerator.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -616,6 +616,9 @@ public function get_substitutionarray_object($object, $outputlangs, $array_key =
$resarray[$array_key.'_bank_label'] = (empty($bank_account) ? '' : $bank_account->label);
$resarray[$array_key.'_bank_number'] = (empty($bank_account) ? '' : $bank_account->number);
$resarray[$array_key.'_bank_proprio'] =(empty($bank_account) ? '' : $bank_account->proprio);
$resarray[$array_key.'_bank_address'] =(empty($bank_account) ? '' : $bank_account->address);
$resarray[$array_key.'_bank_state'] =(empty($bank_account) ? '' : $bank_account->state);
$resarray[$array_key.'_bank_country'] =(empty($bank_account) ? '' : $bank_account->country);
}

if (method_exists($object, 'getTotalDiscount') && in_array(get_class($object), array('Propal', 'Proposal', 'Commande', 'Facture', 'SupplierProposal', 'CommandeFournisseur', 'FactureFournisseur'))) {
Expand Down Expand Up @@ -808,10 +811,11 @@ public function get_substitutionarray_lines($line, $outputlangs, $linenumber = 0
} else {
// Set unused placeholders as blank
$extrafields->fetch_name_optionals_label("product");
$extralabels = $extrafields->attributes["product"]['label'];

foreach ($extralabels as $key => $label) {
$resarray['line_product_options_'.$key] = '';
if ($extrafields->attributes["product"]['count'] > 0) {
$extralabels = $extrafields->attributes["product"]['label'];
foreach ($extralabels as $key => $label) {
$resarray['line_product_options_'.$key] = '';
}
}
}

Expand Down Expand Up @@ -946,7 +950,7 @@ public function fill_substitutionarray_with_extrafields($object, $array_to_fill,
// phpcs:enable
global $conf;

if (is_array($extrafields->attributes[$object->table_element]['label'])) {
if ($extrafields->attributes[$object->table_element]['count'] > 0) {
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $label) {
$formatedarrayoption = $object->array_options;

Expand Down
3 changes: 3 additions & 0 deletions htdocs/core/class/conf.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -534,6 +534,9 @@ public function setValues($db)
}

// For mycompany storage
$this->mycompany->multidir_output = array($this->entity => $rootfordata."/mycompany");
$this->mycompany->multidir_temp = array($this->entity => $rootfortemp."/mycompany/temp");
// For backward compatibility
$this->mycompany->dir_output = $rootfordata."/mycompany";
$this->mycompany->dir_temp = $rootfortemp."/mycompany/temp";

Expand Down
2 changes: 1 addition & 1 deletion htdocs/core/class/html.formticket.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -1502,7 +1502,7 @@ public function showMessageForm($width = '40%')
}
print '<tr class="email_line"><td>'.$langs->trans('Subject').'</td>';
if (empty($topic)) {
print '<td><input type="text" class="text minwidth500" name="subject" value="['.getDolGlobalString('MAIN_INFO_SOCIETE_NOM').' - '.$langs->trans("Ticket").' '.$ticketstat->ref.'] '.$langs->trans('TicketNewMessage').'" />';
print '<td><input type="text" class="text minwidth500" name="subject" value="['.getDolGlobalString('MAIN_INFO_SOCIETE_NOM').' - '.$langs->trans("Ticket").' '.$ticketstat->ref.'] '. $ticketstat->subject .'" />';
} else {
print '<td><input type="text" class="text minwidth500" name="subject" value="['.getDolGlobalString('MAIN_INFO_SOCIETE_NOM').' - '.$langs->trans("Ticket").' '.$ticketstat->ref.'] '.$topic.'" />';
}
Expand Down
8 changes: 3 additions & 5 deletions htdocs/core/lib/files.lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -2194,9 +2194,8 @@ function dol_convert_file($fileinput, $ext = 'png', $fileoutput = '', $page = ''
*/
function dol_compress_file($inputfile, $outputfile, $mode = "gz", &$errorstring = null)
{
global $conf;

$foundhandler = 0;
//var_dump(basename($inputfile)); exit;

try {
dol_syslog("dol_compress_file mode=".$mode." inputfile=".$inputfile." outputfile=".$outputfile);
Expand Down Expand Up @@ -2265,6 +2264,7 @@ function dol_compress_file($inputfile, $outputfile, $mode = "gz", &$errorstring

include_once ODTPHP_PATHTOPCLZIP.'/pclzip.lib.php';
$archive = new PclZip($outputfile);

$result = $archive->add($inputfile, PCLZIP_OPT_REMOVE_PATH, dirname($inputfile));

if ($result === 0) {
Expand Down Expand Up @@ -2439,16 +2439,14 @@ function dol_uncompress($inputfile, $outputdir)
* @param string $inputdir Source dir name
* @param string $outputfile Target file name (output directory must exists and be writable)
* @param string $mode 'zip'
* @param string $excludefiles A regex pattern. For example: '/\.log$|\/temp\//'
* @param string $excludefiles A regex pattern to exclude files. For example: '/\.log$|\/temp\//'
* @param string $rootdirinzip Add a root dir level in zip file
* @param string $newmask Mask for new file (0 by default means $conf->global->MAIN_UMASK). Example: '0666'
* @return int Return integer <0 if KO, >0 if OK
* @see dol_uncompress(), dol_compress_file()
*/
function dol_compress_dir($inputdir, $outputfile, $mode = "zip", $excludefiles = '', $rootdirinzip = '', $newmask = 0)
{
global $conf;

$foundhandler = 0;

dol_syslog("Try to zip dir ".$inputdir." into ".$outputfile." mode=".$mode);
Expand Down
8 changes: 8 additions & 0 deletions htdocs/core/lib/functions.lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -8175,6 +8175,10 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null,
'__MYCOMPANY_PROFID4__' => $mysoc->idprof4,
'__MYCOMPANY_PROFID5__' => $mysoc->idprof5,
'__MYCOMPANY_PROFID6__' => $mysoc->idprof6,
'__MYCOMPANY_PROFID7__' => $mysoc->idprof7,
'__MYCOMPANY_PROFID8__' => $mysoc->idprof8,
'__MYCOMPANY_PROFID9__' => $mysoc->idprof9,
'__MYCOMPANY_PROFID10__' => $mysoc->idprof10,
'__MYCOMPANY_CAPITAL__' => $mysoc->capital,
'__MYCOMPANY_FULLADDRESS__' => (method_exists($mysoc, 'getFullAddress') ? $mysoc->getFullAddress(1, ', ') : ''), // $mysoc may be stdClass
'__MYCOMPANY_ADDRESS__' => $mysoc->address,
Expand Down Expand Up @@ -8217,6 +8221,10 @@ function getCommonSubstitutionArray($outputlangs, $onlykey = 0, $exclude = null,
$substitutionarray['__THIRDPARTY_IDPROF4__'] = '__THIRDPARTY_IDPROF4__';
$substitutionarray['__THIRDPARTY_IDPROF5__'] = '__THIRDPARTY_IDPROF5__';
$substitutionarray['__THIRDPARTY_IDPROF6__'] = '__THIRDPARTY_IDPROF6__';
$substitutionarray['__MYCOMPANY_PROFID7__'] = '__MYCOMPANY_PROFID7__';
$substitutionarray['__MYCOMPANY_PROFID8__'] = '__MYCOMPANY_PROFID8__';
$substitutionarray['__MYCOMPANY_PROFID9__'] = '__MYCOMPANY_PROFID9__';
$substitutionarray['__MYCOMPANY_PROFID10__'] = '__MYCOMPANY_PROFID10__';
$substitutionarray['__THIRDPARTY_TVAINTRA__'] = '__THIRDPARTY_TVAINTRA__';
$substitutionarray['__THIRDPARTY_NOTE_PUBLIC__'] = '__THIRDPARTY_NOTE_PUBLIC__';
$substitutionarray['__THIRDPARTY_NOTE_PRIVATE__'] = '__THIRDPARTY_NOTE_PRIVATE__';
Expand Down
6 changes: 3 additions & 3 deletions htdocs/core/lib/profid.lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -165,12 +165,12 @@ function isValidTinForBE($str)

/**
* Check the syntax validity of a Spanish (ES) Tax Identification Number (TIN), where:
* - NIF = Número de Identificación Fiscal
* - CIF = Código de Identificación Fiscal
* - NIF = Número de Identificación Fiscal (used for residents only before 2008. Used for both residents and companies since 2008.)
* - CIF = Código de Identificación Fiscal (used for companies only before 2008. Replaced by NIF since 2008.)
* - NIE = Número de Identidad de Extranjero
*
* @param string $str TIN to check
* @return int 1 if NIF ok, 2 if CIF ok, 3 if NIE ok, -1 if NIF bad, -2 if CIF bad, -3 if NIE bad, 0 if unexpected bad
* @return int 1 if NIF ok, 2 if CIF ok, 3 if NIE ok, -1 if NIF bad, -2 if CIF bad, -3 if NIE bad, -4 if unexpected bad
* @since Dolibarr V20
*/
function isValidTinForES($str)
Expand Down
1 change: 1 addition & 0 deletions htdocs/core/menus/standard/eldy.lib.php
Original file line number Diff line number Diff line change
Expand Up @@ -1548,6 +1548,7 @@ function get_left_menu_billing($mainmenu, &$newmenu, $usemenuhider = 1, $leftmen
if ($usemenuhider || empty($leftmenu) || $leftmenu == "donations") {
$newmenu->add("/don/card.php?leftmenu=donations&amp;action=create", $langs->trans("NewDonation"), 1, $user->hasRight('don', 'creer'));
$newmenu->add("/don/list.php?leftmenu=donations", $langs->trans("List"), 1, $user->hasRight('don', 'lire'));
$newmenu->add("/don/paiement/list.php?leftmenu=donations", $langs->trans("Payments"), 1, $user->hasRight('don', 'lire'));
}
// if ($leftmenu=="donations") $newmenu->add("/don/stats/index.php",$langs->trans("Statistics"), 1, $user->hasRight('don', 'lire'));
}
Expand Down
14 changes: 11 additions & 3 deletions htdocs/core/modules/facture/doc/pdf_crabe.modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -264,11 +264,11 @@ public function write_file($object, $outputlangs, $srctemplatepath = '', $hidede

// Definition of $dir and $file
if ($object->specimen) {
$dir = empty($conf->facture->multidir_output[$conf->entity]) ? $conf->facture->dir_output : $conf->facture->multidir_output[$conf->entity];
$dir = empty($conf->facture->multidir_output[$object->entity]) ? $conf->facture->dir_output : $conf->facture->multidir_output[$object->entity];
$file = $dir."/SPECIMEN.pdf";
} else {
$objectref = dol_sanitizeFileName($object->ref);
$dir = (empty($conf->facture->multidir_output[$conf->entity]) ? $conf->facture->dir_output : $conf->facture->multidir_output[$conf->entity])."/".$objectref;
$dir = (empty($conf->facture->multidir_output[$object->entity]) ? $conf->facture->dir_output : $conf->facture->multidir_output[$object->entity])."/".$objectref;
$file = $dir."/".$objectref.".pdf";
}
if (!file_exists($dir)) {
Expand Down Expand Up @@ -1111,7 +1111,7 @@ protected function _tableau_versements_header($pdf, $object, $outputlangs, $defa
protected function _tableau_info(&$pdf, $object, $posy, $outputlangs, $outputlangsbis)
{
// phpcs:enable
global $conf, $mysoc;
global $conf, $mysoc, $hookmanager;

$default_font_size = pdf_getPDFFontSize($outputlangs);

Expand Down Expand Up @@ -1238,6 +1238,14 @@ protected function _tableau_info(&$pdf, $object, $posy, $outputlangs, $outputlan
if (isModEnabled('paybox')) {
$useonlinepayment++;
}
$parameters = array();
$action = '';
$reshook = $hookmanager->executeHooks('doShowOnlinePaymentUrl', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
if (isset($hookmanager->resArray['showonlinepaymenturl'])) {
$useonlinepayment += $hookmanager->resArray['showonlinepaymenturl'];
}
}
}

if ($object->statut != Facture::STATUS_DRAFT && $useonlinepayment) {
Expand Down
10 changes: 9 additions & 1 deletion htdocs/core/modules/facture/doc/pdf_sponge.modules.php
Original file line number Diff line number Diff line change
Expand Up @@ -1204,7 +1204,7 @@ public function drawPaymentsTable(&$pdf, $object, $posy, $outputlangs)
*/
protected function drawInfoTable(&$pdf, $object, $posy, $outputlangs, $outputlangsbis)
{
global $conf, $mysoc;
global $conf, $mysoc, $hookmanager;

$default_font_size = pdf_getPDFFontSize($outputlangs);

Expand Down Expand Up @@ -1333,6 +1333,14 @@ protected function drawInfoTable(&$pdf, $object, $posy, $outputlangs, $outputlan
if (isModEnabled('paybox')) {
$useonlinepayment++;
}
$parameters = array();
$action = '';
$reshook = $hookmanager->executeHooks('doShowOnlinePaymentUrl', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
if (isset($hookmanager->resArray['showonlinepaymenturl'])) {
$useonlinepayment += $hookmanager->resArray['showonlinepaymenturl'];
}
}
}


Expand Down
2 changes: 2 additions & 0 deletions htdocs/core/modules/modWebPortal.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -280,6 +280,7 @@ public function __construct($db)
$this->menu = array();
$r = 0;
// Add here entries to declare new menus
/*
$this->menu[$r++] = array(
'fk_menu' => '', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
'type' => 'top', // This is a Top menu entry
Expand All @@ -295,6 +296,7 @@ public function __construct($db)
'target' => '',
'user' => 2, // 0=Menu for internal users, 1=external users, 2=both
);
*/
/*$this->menu[$r++]=array(
'fk_menu'=>'fk_mainmenu=webportal', // '' if this is a top menu. For left menu, use 'fk_mainmenu=xxx' or 'fk_mainmenu=xxx,fk_leftmenu=yyy' where xxx is mainmenucode and yyy is a leftmenucode
'type'=>'left', // This is a Left menu entry
Expand Down
8 changes: 8 additions & 0 deletions htdocs/don/card.php
Original file line number Diff line number Diff line change
Expand Up @@ -974,6 +974,14 @@
// Show online payment link
$useonlinepayment = (isModEnabled('paypal') || isModEnabled('stripe') || isModEnabled('paybox'));

$parameters = array();
$reshook = $hookmanager->executeHooks('doShowOnlinePaymentUrl', $parameters, $object, $action); // Note that $action and $object may have been modified by some hooks
if ($reshook > 0) {
if (isset($hookmanager->resArray['showonlinepaymenturl'])) {
$useonlinepayment += $hookmanager->resArray['showonlinepaymenturl'];
}
}

if ($useonlinepayment) { //$object->statut != Facture::STATUS_DRAFT &&
print '<br><!-- Link to pay -->'."\n";
require_once DOL_DOCUMENT_ROOT.'/core/lib/payments.lib.php';
Expand Down
Loading

0 comments on commit c343064

Please sign in to comment.