mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-12-21 17:01:19 +01:00
Merge branch 'develop' into NEW_taskClose
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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 : ''));
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
// Sort invoices by date and serial number: the older one comes first
|
||||||
$sql .= ' ORDER BY f.datef ASC, f.ref ASC';
|
$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";
|
||||||
|
}
|
||||||
|
|
||||||
$resql = $db->query($sql);
|
$resql = $db->query($sql);
|
||||||
if ($resql) {
|
if ($resql) {
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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,10 +1074,10 @@ function GETPOST($paramname, $check = 'alphanohtml', $method = 0, $filter = null
|
|||||||
} else {
|
} else {
|
||||||
$tmpcheck = 'alphanohtml';
|
$tmpcheck = 'alphanohtml';
|
||||||
}
|
}
|
||||||
|
}
|
||||||
foreach ($out as $outkey => $outval) {
|
foreach ($out as $outkey => $outval) {
|
||||||
$out[$outkey] = sanitizeVal($outval, $tmpcheck, $filter, $options);
|
$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
|
||||||
// we use the < or > to make a search on a numeric value to do higher or lower so we can add a space to break html tags
|
// we use the < or > to make a search on a numeric value to do higher or lower so we can add a space to break html tags
|
||||||
|
|||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|||||||
@@ -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>';
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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).")";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
* 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
|
||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user