2
0
forked from Wavyzz/dolibarr

Merge branch 'develop' into NEW_taskClose

This commit is contained in:
William Mead
2025-01-23 09:48:31 +01:00
18 changed files with 67 additions and 48 deletions

View File

@@ -36,6 +36,7 @@ nowraponalls->nowraponall
oddevene->oddeven oddevene->oddeven
oddseven->oddeven oddseven->oddeven
opacitymediuem->opacitymedium opacitymediuem->opacitymedium
opend->opened
pictofiwedwidth->pictofixedwidth pictofiwedwidth->pictofixedwidth
pictofixedwith->pictofixedwidth pictofixedwith->pictofixedwidth
shippin->shipping shippin->shipping

View File

@@ -5,7 +5,7 @@
* Copyright (C) 2011-2017 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011-2017 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com> * Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 William Mead <william.mead@manchenumerique.fr> * Copyright (C) 2024 William Mead <william.mead@manchenumerique.fr>
* *
@@ -1883,7 +1883,7 @@ class ActionComm extends CommonObject
$color = 'style="color: #'.$this->type_color.' !important;"'; $color = 'style="color: #'.$this->type_color.' !important;"';
} }
if ($this->type_picto) { if ($this->type_picto) {
$imgpicto = img_picto($titlealt.'rr', $this->type_picto, '', 0, 0, 0, '', ($morecss ? ' '.$morecss : '')); $imgpicto = img_picto($titlealt, $this->type_picto, '', 0, 0, 0, '', ($morecss ? ' '.$morecss : ''));
} else { } else {
if ($this->type_code == 'AC_RDV') { if ($this->type_code == 'AC_RDV') {
$imgpicto = img_picto($titlealt, 'meeting', $color, 0, 0, 0, '', ($morecss ? ' '.$morecss : '')); $imgpicto = img_picto($titlealt, 'meeting', $color, 0, 0, 0, '', ($morecss ? ' '.$morecss : ''));

View File

@@ -18,7 +18,7 @@
* Copyright (C) 2023 Nick Fragoulis * Copyright (C) 2023 Nick Fragoulis
* Copyright (C) 2023 Joachim Kueter <git-jk@bloxera.com> * Copyright (C) 2023 Joachim Kueter <git-jk@bloxera.com>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024 Solution Libre SAS <contact@solution-libre.fr> * Copyright (C) 2024 Solution Libre SAS <contact@solution-libre.fr>
* Copyright (C) 2024 William Mead <william.mead@manchenumerique.fr> * Copyright (C) 2024 William Mead <william.mead@manchenumerique.fr>
* *
@@ -1271,7 +1271,7 @@ if (in_array($massaction, array('presend', 'predelete', 'makepayment'))) {
} }
$massactionbutton = $form->selectMassAction('', $arrayofmassactions); $massactionbutton = $form->selectMassAction('', $arrayofmassactions);
// Show the new button only when this page is not opend from the Extended POS // Show the new button only when this page is not opened from the Extended POS
$newcardbutton = ''; $newcardbutton = '';
if ($contextpage != 'poslist') { if ($contextpage != 'poslist') {
$url = DOL_URL_ROOT.'/compta/facture/card.php?action=create'; $url = DOL_URL_ROOT.'/compta/facture/card.php?action=create';
@@ -1389,7 +1389,7 @@ if (!empty($moreforfilter)) {
$varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage; $varpage = empty($contextpage) ? $_SERVER["PHP_SELF"] : $contextpage;
$selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields $selectedfields = $form->multiSelectArrayWithCheckbox('selectedfields', $arrayfields, $varpage, getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')); // This also change content of $arrayfields
// Show the massaction checkboxes only when this page is not opend from the Extended POS // Show the massaction checkboxes only when this page is not opened from the Extended POS
if ($massactionbutton && $contextpage != 'poslist') { if ($massactionbutton && $contextpage != 'poslist') {
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1); $selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
} }
@@ -2791,7 +2791,7 @@ if ($num > 0) {
} }
} }
// Action column (Show the massaction button only when this page is not opend from the Extended POS) // Action column (Show the massaction button only when this page is not opened from the Extended POS)
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="nowrap center">'; print '<td class="nowrap center">';
@@ -2844,7 +2844,7 @@ print '</div>'."\n";
print '</form>'."\n"; print '</form>'."\n";
// Show the file area only when this page is not opend from the Extended POS // Show the file area only when this page is not opened from the Extended POS
if ($contextpage != 'poslist') { if ($contextpage != 'poslist') {
$hidegeneratedfilelistifempty = 1; $hidegeneratedfilelistifempty = 1;
if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) { if ($massaction == 'builddoc' || $action == 'remove_file' || $show_files) {

View File

@@ -570,28 +570,33 @@ if ($result >= 0) {
* List of unpaid invoices * List of unpaid invoices
*/ */
$sql = 'SELECT f.rowid as facid, f.ref, f.total_ht, f.total_tva, f.total_ttc, f.multicurrency_code, f.multicurrency_total_ht, f.multicurrency_total_tva, f.multicurrency_total_ttc, f.type,'; $sql = "SELECT f.rowid as facid, f.ref, f.total_ht, f.total_tva, f.total_ttc, f.multicurrency_code, f.multicurrency_total_ht, f.multicurrency_total_tva, f.multicurrency_total_ttc, f.type,";
$sql .= ' f.datef as df, f.fk_soc as socid, f.date_lim_reglement as dlr'; $sql .= " f.datef as df, f.fk_soc as socid, f.date_lim_reglement as dlr";
$sql .= ' FROM '.MAIN_DB_PREFIX.'facture as f'; $sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
$sql .= ' WHERE f.entity IN ('.getEntity('facture').')'; $sql .= " WHERE f.entity IN (".getEntity('facture').")";
$sql .= ' AND (f.fk_soc = '.((int) $facture->socid); $sql .= " AND (f.fk_soc = ".((int) $facture->socid);
// Can pay invoices of all child of parent company // Can pay invoices of all child of parent company
if (getDolGlobalString('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS') && !empty($facture->thirdparty->parent)) { if (getDolGlobalString('FACTURE_PAYMENTS_ON_DIFFERENT_THIRDPARTIES_BILLS') && !empty($facture->thirdparty->parent)) {
$sql .= ' OR f.fk_soc IN (SELECT rowid FROM '.MAIN_DB_PREFIX.'societe WHERE parent = '.((int) $facture->thirdparty->parent).')'; $sql .= " OR f.fk_soc IN (SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE parent = ".((int) $facture->thirdparty->parent).")";
} }
// Can pay invoices of all child of myself // Can pay invoices of all child of myself
if (getDolGlobalString('FACTURE_PAYMENTS_ON_SUBSIDIARY_COMPANIES')) { if (getDolGlobalString('FACTURE_PAYMENTS_ON_SUBSIDIARY_COMPANIES')) {
$sql .= ' OR f.fk_soc IN (SELECT rowid FROM '.MAIN_DB_PREFIX.'societe WHERE parent = '.((int) $facture->thirdparty->id).')'; $sql .= " OR f.fk_soc IN (SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE parent = ".((int) $facture->thirdparty->id).")";
} }
$sql .= ') AND f.paye = 0'; $sql .= ") AND f.paye = 0";
$sql .= ' AND f.fk_statut = 1'; // Statut=0 => not validated, Statut=2 => canceled $sql .= " AND f.fk_statut = 1"; // Statut=0 => not validated, Statut=2 => canceled
if ($facture->type != Facture::TYPE_CREDIT_NOTE) { if ($facture->type != Facture::TYPE_CREDIT_NOTE) {
$sql .= ' AND type IN (0,1,3,5)'; // Standard invoice, replacement, deposit, situation $sql .= " AND type IN (0,1,3,5)"; // Standard invoice, replacement, deposit, situation
} else { } else {
$sql .= ' AND type = 2'; // If paying back a credit note, we show all credit notes $sql .= " AND type = 2"; // If paying back a credit note, we show all credit notes
}
if (!getDolGlobalInt('FACTURE_PAYMENTS_INVOICE_REQUESTED_SORT_FIRST')) {
// Sort invoices by date and serial number: the older one comes first
$sql .= " ORDER BY f.datef ASC, f.ref ASC";
} else {
// The requested invoice sort first
$sql .= " ORDER BY f.rowid = ".((int) $facid)." DESC, f.datef ASC, f.ref ASC";
} }
// Sort invoices by date and serial number: the older one comes first
$sql .= ' ORDER BY f.datef ASC, f.ref ASC';
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) { if ($resql) {

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2016-2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2016-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2022 Alexandre Spangaro <aspangaro@open-dsi.fr> * Copyright (C) 2022 Alexandre Spangaro <aspangaro@open-dsi.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* *
@@ -229,7 +229,7 @@ if ($action == 'create') {
print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>'; print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>';
print '<td>'; print '<td>';
print img_picto('', 'bank_account', 'class="pictofixedwidth"'); print img_picto('', 'bank_account', 'class="pictofixedwidth"');
print $form->select_comptes(GETPOSTISSET("accountid") ? GETPOSTINT("accountid") : $charge->accountid, "accountid", 0, '', 2, '', 0, 'maxwidth500 widthcentpercentminusx', 1); // Show opend bank account list print $form->select_comptes(GETPOSTISSET("accountid") ? GETPOSTINT("accountid") : $charge->accountid, "accountid", 0, '', 2, '', 0, 'maxwidth500 widthcentpercentminusx', 1); // Show opened bank account list
print '</td></tr>'; print '</td></tr>';
// Number // Number

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2016-2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2016-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr> * Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* *
@@ -229,7 +229,7 @@ if ($action == 'create') {
print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>'; print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>';
print '<td>'; print '<td>';
print img_picto('', 'bank_account', 'class="pictofixedwidth"'); print img_picto('', 'bank_account', 'class="pictofixedwidth"');
$form->select_comptes(GETPOSTINT("accountid") ? GETPOSTINT("accountid") : $tva->accountid, "accountid", 0, '', 1, '', 0, 'maxwidth500 widthcentpercentminusx'); // Show opend bank account list $form->select_comptes(GETPOSTINT("accountid") ? GETPOSTINT("accountid") : $tva->accountid, "accountid", 0, '', 1, '', 0, 'maxwidth500 widthcentpercentminusx'); // Show opened bank account list
print '</td></tr>'; print '</td></tr>';
// Number // Number

View File

@@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2012-2014 Charles-François BENKE <charles.fr@benke.fr> /* Copyright (C) 2012-2014 Charles-François BENKE <charles.fr@benke.fr>
* Copyright (C) 2014 Marcos García <marcosgdf@gmail.com> * Copyright (C) 2014 Marcos García <marcosgdf@gmail.com>
* Copyright (C) 2015 Frederic France <frederic.france@free.fr> * Copyright (C) 2015-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2016 Juan José Menent <jmenent@2byte.es> * Copyright (C) 2016 Juan José Menent <jmenent@2byte.es>
* Copyright (C) 2020 Pierre Ardoin <mapiolca@me.com> * Copyright (C) 2020 Pierre Ardoin <mapiolca@me.com>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
@@ -143,7 +143,7 @@ class box_funnel_of_prospection extends ModeleBoxes
$sql .= " FROM ".MAIN_DB_PREFIX."projet as p, ".MAIN_DB_PREFIX."c_lead_status as cls"; $sql .= " FROM ".MAIN_DB_PREFIX."projet as p, ".MAIN_DB_PREFIX."c_lead_status as cls";
$sql .= " WHERE p.entity IN (".getEntity('project').")"; $sql .= " WHERE p.entity IN (".getEntity('project').")";
$sql .= " AND p.fk_opp_status = cls.rowid"; $sql .= " AND p.fk_opp_status = cls.rowid";
$sql .= " AND p.fk_statut = 1"; // Opend projects only $sql .= " AND p.fk_statut = 1"; // Opened projects only
$sql .= " AND cls.code NOT IN ('LOST', 'WON')"; $sql .= " AND cls.code NOT IN ('LOST', 'WON')";
$sql .= " GROUP BY p.fk_opp_status, cls.code"; $sql .= " GROUP BY p.fk_opp_status, cls.code";
$resql = $this->db->query($sql); $resql = $this->db->query($sql);

View File

@@ -1065,7 +1065,8 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null
// Check type of variable and make sanitization according to this // Check type of variable and make sanitization according to this
if (preg_match('/^array/', $check)) { // If 'array' or 'array:restricthtml' or 'array:aZ09' or 'array:intcomma' if (preg_match('/^array/', $check)) { // If 'array' or 'array:restricthtml' or 'array:aZ09' or 'array:intcomma'
if (!is_array($out) || empty($out)) { if (!is_array($out) || empty($out)) {
$out = array(); $out = explode(',', $out);
$tmpcheck = 'alphanohtml';
} else { } else {
$tmparray = explode(':', $check); $tmparray = explode(':', $check);
if (!empty($tmparray[1])) { if (!empty($tmparray[1])) {
@@ -1073,9 +1074,9 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null
} else { } else {
$tmpcheck = 'alphanohtml'; $tmpcheck = 'alphanohtml';
} }
foreach ($out as $outkey => $outval) { }
$out[$outkey] = sanitizeVal($outval, $tmpcheck, $filter, $options); foreach ($out as $outkey => $outval) {
} $out[$outkey] = sanitizeVal($outval, $tmpcheck, $filter, $options);
} }
} else { } else {
// If field name is 'search_xxx' then we force the add of space after each < and > (when following char is numeric) because it means // If field name is 'search_xxx' then we force the add of space after each < and > (when following char is numeric) because it means

View File

@@ -48,3 +48,5 @@ ALTER TABLE llx_holiday_config ADD COLUMN entity integer DEFAULT 1 NOT NULL AFTE
ALTER TABLE llx_holiday_config ADD UNIQUE INDEX idx_holiday_config (entity, name); ALTER TABLE llx_holiday_config ADD UNIQUE INDEX idx_holiday_config (entity, name);
ALTER TABLE llx_societe_account ADD COLUMN ip varchar(250); ALTER TABLE llx_societe_account ADD COLUMN ip varchar(250);
ALTER TABLE llx_product ADD COLUMN packaging integer DEFAULT NULL;

View File

@@ -110,5 +110,6 @@ create table llx_product
price_autogen tinyint DEFAULT 0, price_autogen tinyint DEFAULT 0,
fk_project integer DEFAULT NULL, -- Used when product was generated by a project or is specific to a project fk_project integer DEFAULT NULL, -- Used when product was generated by a project or is specific to a project
mandatory_period tinyint DEFAULT 0, -- is used to signal to the user that the start and end dates are mandatory for this type of product the fk_product_type == 1 (service) (non-blocking action) mandatory_period tinyint DEFAULT 0, -- is used to signal to the user that the start and end dates are mandatory for this type of product the fk_product_type == 1 (service) (non-blocking action)
last_main_doc varchar(255) last_main_doc varchar(255),
packaging integer DEFAULT NULL
)ENGINE=innodb; )ENGINE=innodb;

View File

@@ -1253,6 +1253,7 @@ CommercialAffected=Sales representative assigned
CommercialsDisaffected=Sales representatives unlinked CommercialsDisaffected=Sales representatives unlinked
CommercialDisaffected=Sales representative unlinked CommercialDisaffected=Sales representative unlinked
Message=Message Message=Message
Emailing=Emailing
Progression=Progress Progression=Progress
YourMessage=Your message YourMessage=Your message
YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible. YourMessageHasBeenReceived=Your message has been received. We will answer or contact you as soon as possible.

View File

@@ -778,6 +778,7 @@ if ($id > 0) {
} }
// Emit payment // Emit payment
// TODO check if loan schedule is created ($echeances->lines > 0)
if (($object->paid == 0 || $object->paid == 2) && ((price2num($object->capital) > 0 && round($staytopay) < 0) || (price2num($object->capital) > 0 && round($staytopay) > 0)) && $user->hasRight('loan', 'write')) { if (($object->paid == 0 || $object->paid == 2) && ((price2num($object->capital) > 0 && round($staytopay) < 0) || (price2num($object->capital) > 0 && round($staytopay) > 0)) && $user->hasRight('loan', 'write')) {
print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/loan/payment/payment.php?id='.$object->id.'&action=create&token='.newToken().'">'.$langs->trans("DoPayment").'</a></div>'; print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/loan/payment/payment.php?id='.$object->id.'&action=create&token='.newToken().'">'.$langs->trans("DoPayment").'</a></div>';
} }

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2014-2024 Alexandre Spangaro <alexandre@inovea-conseil.com> /* Copyright (C) 2014-2024 Alexandre Spangaro <alexandre@inovea-conseil.com>
* Copyright (C) 2015-2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2015-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr> * Copyright (C) 2020 Maxime DEMAREST <maxime@indelog.fr>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
@@ -62,7 +62,12 @@ if (!$user->hasRight('loan', 'write')) {
$loan = new Loan($db); $loan = new Loan($db);
$loan->fetch($chid); $loan->fetch($chid);
$line_id = 0;
$echance = 0; $echance = 0;
$amount_capital = 0;
$amount_insurance = 0;
$amount_interest = 0;
$ls = new LoanSchedule($db); $ls = new LoanSchedule($db);
// grab all loanschedule // grab all loanschedule
$res = $ls->fetchAll($chid); $res = $ls->fetchAll($chid);
@@ -317,7 +322,7 @@ if ($action == 'create') {
print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>'; print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>';
print '<td colspan="2">'; print '<td colspan="2">';
print img_picto('', 'bank_account', 'class="pictofixedwidth"'); print img_picto('', 'bank_account', 'class="pictofixedwidth"');
$form->select_comptes(GETPOSTISSET("accountid") ? GETPOSTINT("accountid") : $loan->accountid, "accountid", 0, 'courant = '.Account::TYPE_CURRENT, 1); // Show opend bank account list $form->select_comptes(GETPOSTISSET("accountid") ? GETPOSTINT("accountid") : $loan->accountid, "accountid", 0, 'courant = '.Account::TYPE_CURRENT, 1); // Show opened bank account list
print '</td></tr>'; print '</td></tr>';
// Number // Number

View File

@@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2013-2020 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2013-2020 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -34,7 +34,7 @@ if (getDolGlobalString('PROJECT_USE_OPPORTUNITIES')) {
$sql = "SELECT p.fk_opp_status as opp_status, cls.code, COUNT(p.rowid) as nb, SUM(p.opp_amount) as opp_amount, SUM(p.opp_amount * p.opp_percent) as ponderated_opp_amount"; $sql = "SELECT p.fk_opp_status as opp_status, cls.code, COUNT(p.rowid) as nb, SUM(p.opp_amount) as opp_amount, SUM(p.opp_amount * p.opp_percent) as ponderated_opp_amount";
$sql .= " FROM ".MAIN_DB_PREFIX."projet as p LEFT JOIN ".MAIN_DB_PREFIX."c_lead_status as cls ON p.fk_opp_status = cls.rowid"; // If lead status has been removed, we must show it in stats as unknown $sql .= " FROM ".MAIN_DB_PREFIX."projet as p LEFT JOIN ".MAIN_DB_PREFIX."c_lead_status as cls ON p.fk_opp_status = cls.rowid"; // If lead status has been removed, we must show it in stats as unknown
$sql .= " WHERE p.entity IN (".getEntity('project').")"; $sql .= " WHERE p.entity IN (".getEntity('project').")";
$sql .= " AND p.fk_statut = 1"; // Opend projects only $sql .= " AND p.fk_statut = 1"; // Opened projects only
if ($mine || !$user->hasRight('projet', 'all', 'lire')) { if ($mine || !$user->hasRight('projet', 'all', 'lire')) {
$sql .= " AND p.rowid IN (".$db->sanitize($projectsListId).")"; $sql .= " AND p.rowid IN (".$db->sanitize($projectsListId).")";
} }

View File

@@ -3,7 +3,7 @@
* Copyright (C) 2004-2019 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2019 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com> * Copyright (C) 2005-2017 Regis Houssin <regis.houssin@inodbox.com>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* Copyright (C) 2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2024-2025 Frédéric France <frederic.france@free.fr>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -965,7 +965,7 @@ if ($action == 'create' && $user->hasRight('projet', 'creer') && (empty($object-
print '</div>'; print '</div>';
} }
// Show the massaction checkboxes only when this page is not opend from the Extended POS // Show the massaction checkboxes only when this page is not opened from the Extended POS
if ($massactionbutton && $contextpage != 'poslist') { if ($massactionbutton && $contextpage != 'poslist') {
$selectedfields .= $form->showCheckAddButtons('checkforselect', 1); $selectedfields .= $form->showCheckAddButtons('checkforselect', 1);
} }

View File

@@ -1,6 +1,6 @@
<?php <?php
/* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2016-2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2016-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr> * Copyright (C) 2021 Gauthier VERDOL <gauthier.verdol@atm-consulting.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* *
@@ -237,7 +237,7 @@ if ($action == 'create') {
print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>'; print '<td class="fieldrequired">'.$langs->trans('AccountToDebit').'</td>';
print '<td>'; print '<td>';
print img_picto('', 'bank_account', 'class="pictofixedwidth"'); print img_picto('', 'bank_account', 'class="pictofixedwidth"');
$form->select_comptes(GETPOSTISSET("accountid") ? GETPOSTINT("accountid") : $salary->accountid, "accountid", 0, '', 1); // Show opend bank account list $form->select_comptes(GETPOSTISSET("accountid") ? GETPOSTINT("accountid") : $salary->accountid, "accountid", 0, '', 1); // Show opened bank account list
print '</td></tr>'; print '</td></tr>';
// Number // Number

View File

@@ -11,7 +11,7 @@
* Copyright (C) 2017 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2017 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com> * Copyright (C) 2018 Nicolas ZABOURI <info@inovea-conseil.com>
* Copyright (C) 2020 Open-Dsi <support@open-dsi.fr> * Copyright (C) 2020 Open-Dsi <support@open-dsi.fr>
* Copyright (C) 2021-2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2021-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2022 Anthony Berton <anthony.berton@bb2a.fr> * Copyright (C) 2022 Anthony Berton <anthony.berton@bb2a.fr>
* Copyright (C) 2023 William Mead <william.mead@manchenumerique.fr> * Copyright (C) 2023 William Mead <william.mead@manchenumerique.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
@@ -1189,7 +1189,7 @@ if ($contextpage == 'poslist' && $type == 't' && (getDolGlobalString('PRODUIT_MU
print get_htmloutput_mesg(img_warning('default').' '.$langs->trans("BecarefullChangeThirdpartyBeforeAddProductToInvoice"), [], 'warning', 1); print get_htmloutput_mesg(img_warning('default').' '.$langs->trans("BecarefullChangeThirdpartyBeforeAddProductToInvoice"), [], 'warning', 1);
} }
// Show the new button only when this page is not opend from the Extended POS (pop-up window) // Show the new button only when this page is not opened from the Extended POS (pop-up window)
// but allow it too, when a user has the rights to create a new customer // but allow it too, when a user has the rights to create a new customer
if ($contextpage != 'poslist') { if ($contextpage != 'poslist') {
$url = DOL_URL_ROOT.'/societe/card.php?action=create'.$typefilter; $url = DOL_URL_ROOT.'/societe/card.php?action=create'.$typefilter;
@@ -1890,7 +1890,7 @@ while ($i < $imaxinloop) {
} }
print '>'; print '>';
// Action column (Show the massaction button only when this page is not opend from the Extended POS) // Action column (Show the massaction button only when this page is not opened from the Extended POS)
if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { if (getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="nowrap center actioncolumn">'; print '<td class="nowrap center actioncolumn">';
if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined
@@ -2303,7 +2303,7 @@ while ($i < $imaxinloop) {
$totalarray['nbfield']++; $totalarray['nbfield']++;
} }
} }
// Action column (Show the massaction button only when this page is not opend from the Extended POS) // Action column (Show the massaction button only when this page is not opened from the Extended POS)
if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) { if (!getDolGlobalString('MAIN_CHECKBOX_LEFT_COLUMN')) {
print '<td class="nowrap center actioncolumn">'; print '<td class="nowrap center actioncolumn">';
if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined if (($massactionbutton || $massaction) && $contextpage != 'poslist') { // If we are in select mode (massactionbutton defined) or if we have already selected and sent an action ($massaction) defined

View File

@@ -3,8 +3,8 @@
* Copyright (C) 2017 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2017 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2017 Saasprov <saasprov@gmail.com> * Copyright (C) 2017 Saasprov <saasprov@gmail.com>
* Copyright (C) 2018-2022 Thibault FOUCART <support@ptibogxiv.net> * Copyright (C) 2018-2022 Thibault FOUCART <support@ptibogxiv.net>
* Copyright (C) 2018-2024 Frédéric France <frederic.france@free.fr> * Copyright (C) 2018-2025 Frédéric France <frederic.france@free.fr>
* Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com> * Copyright (C) 2024 MDW <mdeweerd@users.noreply.github.com>
* *
* This program is free software; you can redistribute it and/or modify * 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 * it under the terms of the GNU General Public License as published by
@@ -386,7 +386,9 @@ $form->select_comptes(getDolGlobalString('STRIPE_BANK_ACCOUNT_FOR_PAYMENTS'), 'S
print '</td></tr>'; print '</td></tr>';
// Param to record automatically payouts (received from IPN payout.payed and payout.created) // Param to record automatically payouts (received from IPN payout.paid and payout.created)
// https://docs.stripe.com/api/events/types#event_types-payout.created
// https://docs.stripe.com/api/events/types#event_types-payout.paid
print '<tr class="oddeven"><td>'; print '<tr class="oddeven"><td>';
print $langs->trans("StripeAutoRecordPayout").'</td><td>'; print $langs->trans("StripeAutoRecordPayout").'</td><td>';
if ($conf->use_javascript_ajax) { if ($conf->use_javascript_ajax) {