diff --git a/htdocs/adherents/list.php b/htdocs/adherents/list.php
index b713362912e..775c0d25c81 100644
--- a/htdocs/adherents/list.php
+++ b/htdocs/adherents/list.php
@@ -1063,7 +1063,7 @@ while ($i < min($num, $limit)) {
print '';
} else {
print '
';
- if ($obj->subscription == 'yes') {
+ if (!empty($obj->subscription)) {
print $langs->trans("SubscriptionNotReceived");
if ($obj->statut > 0) {
print " ".img_warning();
diff --git a/htdocs/adherents/type.php b/htdocs/adherents/type.php
index 05d50bed52d..4bde256c8f8 100644
--- a/htdocs/adherents/type.php
+++ b/htdocs/adherents/type.php
@@ -717,7 +717,7 @@ if ($rowid > 0) {
print ' | ';
} else {
print '';
- if ($objp->subscription == 'yes') {
+ if (!empty($objp->subscription)) {
print $langs->trans("SubscriptionNotReceived");
if ($objp->status > 0) {
print " ".img_warning();
diff --git a/htdocs/comm/action/card.php b/htdocs/comm/action/card.php
index 322a688bd45..f368378a281 100644
--- a/htdocs/comm/action/card.php
+++ b/htdocs/comm/action/card.php
@@ -1170,6 +1170,7 @@ if ($action == 'create') {
if (GETPOST('contactid', 'int')) {
$preselectedids[GETPOST('contactid', 'int')] = GETPOST('contactid', 'int');
}
+ if ($origin=='contact') $preselectedids[GETPOST('originid', 'int')] = GETPOST('originid', 'int');
print img_picto('', 'contact', 'class="paddingrightonly"');
print $form->selectcontacts(GETPOST('socid', 'int'), $preselectedids, 'socpeopleassigned[]', 1, '', '', 0, 'minwidth300 quatrevingtpercent', false, 0, array(), false, 'multiple', 'contactid');
print ' | ';
diff --git a/htdocs/comm/propal/card.php b/htdocs/comm/propal/card.php
index c883592617b..229303849f0 100644
--- a/htdocs/comm/propal/card.php
+++ b/htdocs/comm/propal/card.php
@@ -302,9 +302,26 @@ if (empty($reshook)) {
}
} elseif ($action == 'setecheance' && $usercancreate) {
$result = $object->set_echeance($user, dol_mktime(12, 0, 0, $_POST['echmonth'], $_POST['echday'], $_POST['echyear']));
- $result = $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
- if ($result < 0) {
- dol_print_error($db, $object->error);
+ if ($result >= 0) {
+ if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) {
+ $outputlangs = $langs;
+ $newlang = '';
+ if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id', 'aZ09')) $newlang = GETPOST('lang_id', 'aZ09');
+ if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang;
+ if (!empty($newlang)) {
+ $outputlangs = new Translate("", $conf);
+ $outputlangs->setDefaultLang($newlang);
+ }
+ $model = $object->model_pdf;
+ $ret = $object->fetch($id); // Reload to get new records
+ if ($ret > 0) {
+ $object->fetch_thirdparty();
+ }
+
+ $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref);
+ }
+ } else {
+ setEventMessages($object->error, $object->errors, 'errors');
}
} elseif ($action == 'setdate_livraison' && $usercancreate) {
$result = $object->setDeliveryDate($user, dol_mktime(12, 0, 0, $_POST['date_livraisonmonth'], $_POST['date_livraisonday'], $_POST['date_livraisonyear']));
diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php
index c607f0f922c..f45d2a64af4 100644
--- a/htdocs/compta/bank/releve.php
+++ b/htdocs/compta/bank/releve.php
@@ -179,8 +179,8 @@ $sqlrequestforbankline = $sql;
if ($action == 'confirm_editbankreceipt' && !empty($oldbankreceipt) && !empty($newbankreceipt)) {
// TODO Add a test to check newbankreceipt does not exists yet
- $sqlupdate = 'UPDATE '.MAIN_DB_PREFIX.'bank';
- $sqlupdate .= ' SET num_releve = "'.$db->escape($newbankreceipt).'" WHERE num_releve = "'.$db->escape($oldbankreceipt).'" AND fk_account = '.((int) $id);
+ $sqlupdate = "UPDATE ".MAIN_DB_PREFIX."bank SET num_releve = '".$db->escape($newbankreceipt)."'";
+ $sqlupdate .= " WHERE num_releve = '".$db->escape($oldbankreceipt)."' AND fk_account = ".((int) $id);
$result = $db->query($sqlupdate);
if ($result < 0) {
dol_print_error($db);
diff --git a/htdocs/compta/paiement/rapport.php b/htdocs/compta/paiement/rapport.php
index ba8c9b2a82f..bde222ff8e0 100644
--- a/htdocs/compta/paiement/rapport.php
+++ b/htdocs/compta/paiement/rapport.php
@@ -111,31 +111,17 @@ print '
';
clearstatcache();
// Show link on other years
-$linkforyear = array();
-$found = 0;
-if (is_dir($dir)) {
- $handle = opendir($dir);
- if (is_resource($handle)) {
- while (($file = readdir($handle)) !== false) {
- if (is_dir($dir.'/'.$file) && !preg_match('/^\./', $file) && is_numeric($file)) {
- $found = 1;
- $linkforyear[] = $file;
- }
- }
- }
-}
-asort($linkforyear);
-foreach ($linkforyear as $cursoryear) {
- print ''.$cursoryear.' ';
+$year_dirs = dol_dir_list($dir, 'directories', 0, '^[0-9]{4}$', '', 'DESC');
+foreach ($year_dirs as $d)
+{
+ print ''.$d['name'].' ';
}
-if ($year) {
- if (is_dir($dir.'/'.$year)) {
- $handle = opendir($dir.'/'.$year);
-
- if ($found) {
- print '
';
- }
+if ($year)
+{
+ if (is_dir($dir.'/'.$year))
+ {
+ if (!empty($year_dirs)) print '
';
print '
';
print '';
print '';
@@ -144,19 +130,14 @@ if ($year) {
print '| '.$langs->trans("Date").' | ';
print '
';
- if (is_resource($handle)) {
- while (($file = readdir($handle)) !== false) {
- if (preg_match('/^payment/i', $file)) {
- $tfile = $dir.'/'.$year.'/'.$file;
- $relativepath = $year.'/'.$file;
- print '';
- print '| '.img_pdf().' '.$file.''.$formfile->showPreview($file, 'facture_paiement', $relativepath, 0).' | ';
- print ''.dol_print_size(dol_filesize($tfile)).' | ';
- print ''.dol_print_date(dol_filemtime($tfile), "dayhour").' | ';
- print '
';
- }
- }
- closedir($handle);
+ $files = (dol_dir_list($dir.'/'.$year, 'files', 0, '^payments-[0-9]{4}-[0-9]{2}\.pdf$', '', 'name', 'DESC', 1));
+ foreach ($files as $f) {
+ $relativepath = $f['level1name'].'/'.$f['name'];
+ print '';
+ print '| '.img_pdf().' '.$f['name'].''.$formfile->showPreview($f['name'], 'facture_paiement', $relativepath, 0).' | ';
+ print ''.dol_print_size($f['size']).' | ';
+ print ''.dol_print_date($f['date'], "dayhour").' | ';
+ print '
';
}
print '
';
}
diff --git a/htdocs/core/boxes/box_produits_alerte_stock.php b/htdocs/core/boxes/box_produits_alerte_stock.php
index f47e8d40238..d7ae1566a44 100644
--- a/htdocs/core/boxes/box_produits_alerte_stock.php
+++ b/htdocs/core/boxes/box_produits_alerte_stock.php
@@ -198,7 +198,7 @@ class box_produits_alerte_stock extends ModeleBoxes
$this->info_box_contents[$line][] = array(
'td' => 'class="center"',
- 'text' => $objp->total_stock.' / '.$objp->seuil_stock_alerte,
+ 'text' => price2num($objp->total_stock, 'MS').' / '.$objp->seuil_stock_alerte,
'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit", $objp->seuil_stock_alerte)),
);
diff --git a/htdocs/core/class/extrafields.class.php b/htdocs/core/class/extrafields.class.php
index 2ca0bf6b439..49c7d728f3b 100644
--- a/htdocs/core/class/extrafields.class.php
+++ b/htdocs/core/class/extrafields.class.php
@@ -1345,7 +1345,10 @@ class ExtraFields
}
$out .= '';
} elseif ($type == 'checkbox') {
- $value_arr = explode(',', $value);
+ $value_arr = $value;
+ if (!is_array($value)) {
+ $value_arr = explode(',', $value);
+ }
$out = $form->multiselectarray($keyprefix.$key.$keysuffix, (empty($param['options']) ?null:$param['options']), $value_arr, '', 0, '', 0, '100%');
} elseif ($type == 'radio') {
$out = '';
diff --git a/htdocs/core/lib/company.lib.php b/htdocs/core/lib/company.lib.php
index 3a61ea21efb..c9bd35f7326 100644
--- a/htdocs/core/lib/company.lib.php
+++ b/htdocs/core/lib/company.lib.php
@@ -938,12 +938,12 @@ function show_contacts($conf, $langs, $db, $object, $backtopage = '')
//E-mail
't.email',
);
- //Social media
- foreach ($socialnetworks as $key => $value) {
- if ($value['active']) {
- $searchAddressPhoneDBFields['t.'.$key] = "t.socialnetworks->'$.".$key."'";
- }
- }
+ //Social media
+ // foreach ($socialnetworks as $key => $value) {
+ // if ($value['active']) {
+ // $searchAddressPhoneDBFields['t.'.$key] = "t.socialnetworks->'$.".$key."'";
+ // }
+ // }
if (!$sortorder) {
$sortorder = "ASC";
diff --git a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php
index 42a777a196f..64fbdeaafd8 100644
--- a/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php
+++ b/htdocs/core/modules/expedition/doc/pdf_espadon.modules.php
@@ -318,13 +318,13 @@ class pdf_espadon extends ModelePdfExpedition
$pdf->useTemplate($tplidx);
}
$pagenb++;
- $this->_pagehead($pdf, $object, 1, $outputlangs);
+ $top_shift = $this->_pagehead($pdf, $object, 1, $outputlangs);
$pdf->SetFont('', '', $default_font_size - 1);
$pdf->MultiCell(0, 3, ''); // Set interline to 3
$pdf->SetTextColor(0, 0, 0);
$tab_top = 90;
- $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 : 10);
+ $tab_top_newpage = (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD) ? 42 + $top_shift: 10);
$tab_height = 130;
$tab_height_newpage = 150;
@@ -361,17 +361,14 @@ class pdf_espadon extends ModelePdfExpedition
}
if (!empty($notetoshow) || !empty($object->tracking_number)) {
- $tab_top = 88 + $height_incoterms;
- $tab_top_alt = $tab_top;
-
- $pdf->SetFont('', 'B', $default_font_size - 2);
- $pdf->writeHTMLCell(60, 4, $this->posxdesc - 1, $tab_top - 1, $outputlangs->transnoentities("TrackingNumber")." : ".$object->tracking_number, 0, 1, false, true, 'L');
-
- $tab_top_alt = $pdf->GetY();
- //$tab_top_alt += 1;
+ $tab_top -= 2;
// Tracking number
if (!empty($object->tracking_number)) {
+ $pdf->SetFont('', 'B', $default_font_size - 2);
+ $pdf->writeHTMLCell(60, 4, $this->posxdesc - 1, $tab_top - 1, $outputlangs->transnoentities("TrackingNumber") . " : " . $object->tracking_number, 0, 1, false, true, 'L');
+
+ $tab_top_alt = $pdf->GetY();
$object->getUrlTrackingStatus($object->tracking_number);
if (!empty($object->tracking_url)) {
if ($object->shipping_method_id > 0) {
@@ -390,28 +387,128 @@ class pdf_espadon extends ModelePdfExpedition
$pdf->SetFont('', 'B', $default_font_size - 2);
$pdf->writeHTMLCell(60, 4, $this->posxdesc - 1, $tab_top_alt, $label, 0, 1, false, true, 'L');
- $tab_top_alt = $pdf->GetY();
+ $tab_top = $pdf->GetY();
}
}
}
+
// Notes
- if (!empty($notetoshow)) {
- $pdf->SetFont('', '', $default_font_size - 1); // In loop to manage multi-page
- $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top_alt, dol_htmlentitiesbr($notetoshow), 0, 1);
+ $pagenb = $pdf->getPage();
+ if (!empty($notetoshow))
+ {
+ $tab_top -= 2;
+
+ $tab_width = $this->page_largeur - $this->marge_gauche - $this->marge_droite;
+ $pageposbeforenote = $pagenb;
+
+ $substitutionarray = pdf_getSubstitutionArray($outputlangs, null, $object);
+ complete_substitutions_array($substitutionarray, $outputlangs, $object);
+ $notetoshow = make_substitutions($notetoshow, $substitutionarray, $outputlangs);
+ $notetoshow = convertBackOfficeMediasLinksToPublicLinks($notetoshow);
+
+ $pdf->startTransaction();
+
+ $pdf->SetFont('', '', $default_font_size - 1);
+ $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1);
+ // Description
+ $pageposafternote = $pdf->getPage();
+ $posyafter = $pdf->GetY();
+
+ if ($pageposafternote > $pageposbeforenote)
+ {
+ $pdf->rollbackTransaction(true);
+
+ // prepare pages to receive notes
+ while ($pagenb < $pageposafternote) {
+ $pdf->AddPage();
+ $pagenb++;
+ if (!empty($tplidx)) $pdf->useTemplate($tplidx);
+ if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs);
+ // $this->_pagefoot($pdf,$object,$outputlangs,1);
+ $pdf->setTopMargin($tab_top_newpage);
+ // The only function to edit the bottom margin of current page to set it.
+ $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext);
+ }
+
+ // back to start
+ $pdf->setPage($pageposbeforenote);
+ $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext);
+ $pdf->SetFont('', '', $default_font_size - 1);
+ $pdf->writeHTMLCell(190, 3, $this->posxdesc - 1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1);
+ $pageposafternote = $pdf->getPage();
+
+ $posyafter = $pdf->GetY();
+
+ if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20))) // There is no space left for total+free text
+ {
+ $pdf->AddPage('', '', true);
+ $pagenb++;
+ $pageposafternote++;
+ $pdf->setPage($pageposafternote);
+ $pdf->setTopMargin($tab_top_newpage);
+ // The only function to edit the bottom margin of current page to set it.
+ $pdf->setPageOrientation('', 1, $heightforfooter + $heightforfreetext);
+ //$posyafter = $tab_top_newpage;
+ }
+
+
+ // apply note frame to previous pages
+ $i = $pageposbeforenote;
+ while ($i < $pageposafternote) {
+ $pdf->setPage($i);
+
+
+ $pdf->SetDrawColor(128, 128, 128);
+ // Draw note frame
+ if ($i > $pageposbeforenote) {
+ $height_note = $this->page_hauteur - ($tab_top_newpage + $heightforfooter);
+ $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1);
+ } else {
+ $height_note = $this->page_hauteur - ($tab_top + $heightforfooter);
+ $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1);
+ }
+
+ // Add footer
+ $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it.
+ $this->_pagefoot($pdf, $object, $outputlangs, 1);
+
+ $i++;
+ }
+
+ // apply note frame to last page
+ $pdf->setPage($pageposafternote);
+ if (!empty($tplidx)) $pdf->useTemplate($tplidx);
+ if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs);
+ $height_note = $posyafter - $tab_top_newpage;
+ $pdf->Rect($this->marge_gauche, $tab_top_newpage - 1, $tab_width, $height_note + 1);
+ } else // No pagebreak
+ {
+ $pdf->commitTransaction();
+ $posyafter = $pdf->GetY();
+ $height_note = $posyafter - $tab_top;
+ $pdf->Rect($this->marge_gauche, $tab_top - 1, $tab_width, $height_note + 1);
+
+
+ if ($posyafter > ($this->page_hauteur - ($heightforfooter + $heightforfreetext + 20)))
+ {
+ // not enough space, need to add page
+ $pdf->AddPage('', '', true);
+ $pagenb++;
+ $pageposafternote++;
+ $pdf->setPage($pageposafternote);
+ if (!empty($tplidx)) $pdf->useTemplate($tplidx);
+ if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs);
+
+ $posyafter = $tab_top_newpage;
+ }
+ }
+
+ $tab_height = $tab_height - $height_note;
+ $tab_top = $posyafter + 6;
+ } else {
+ $height_note = 0;
}
-
- $nexY = $pdf->GetY();
- $height_note = $nexY - $tab_top;
-
- // Rect takes a length in 3rd parameter
- $pdf->SetDrawColor(192, 192, 192);
- $pdf->Rect($this->marge_gauche, $tab_top - 1, $this->page_largeur - $this->marge_gauche - $this->marge_droite, $height_note + 1);
-
- $tab_height = $tab_height - $height_note;
- $tab_top = $nexY + 6;
- } else {
- $height_note = 0;
}
@@ -420,14 +517,17 @@ class pdf_espadon extends ModelePdfExpedition
// Table simulation to know the height of the title line
$pdf->startTransaction();
- $this->pdfTabTitles($pdf, $tab_top, $tab_height, $outputlangs, $hidetop);
+ $this->pdfTabTitles($pdf, $tab_top, $tab_height, $outputlangs);
$pdf->rollbackTransaction(true);
$nexY = $tab_top + $this->tabTitleHeight;
// Loop on each lines
- for ($i = 0; $i < $nblines; $i++) {
+ $pageposbeforeprintlines = $pdf->getPage();
+ $pagenb = $pageposbeforeprintlines;
+ for ($i = 0; $i < $nblines; $i++)
+ {
$curY = $nexY;
$pdf->SetFont('', '', $default_font_size - 1); // Into loop to work with multipage
$pdf->SetTextColor(0, 0, 0);
@@ -590,7 +690,7 @@ class pdf_espadon extends ModelePdfExpedition
// Detect if some page were added automatically and output _tableau for past pages
while ($pagenb < $pageposafter) {
$pdf->setPage($pagenb);
- if ($pagenb == 1) {
+ if ($pagenb == $pageposbeforeprintlines) {
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter, 0, $outputlangs, 0, 1);
} else {
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1);
diff --git a/htdocs/reception/card.php b/htdocs/reception/card.php
index 4fed66d8960..607efb9606b 100644
--- a/htdocs/reception/card.php
+++ b/htdocs/reception/card.php
@@ -785,7 +785,7 @@ if ($action == 'create') {
print '';
print '| '.$langs->trans("Project").' | ';
print img_picto('', 'project', 'class="paddingright"');
- $numprojet = $formproject->select_projects($soc->id, $projectid, 'projectid', 0);
+ print $formproject->select_projects((empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS) ? $soc->id : -1), $projectid, 'projectid', 0, 0, 1, 0, 1, 0, 0, '', 1, 0, 'maxwidth500');
print ' id).'">';
print ' | ';
print '
';
diff --git a/htdocs/societe/societecontact.php b/htdocs/societe/societecontact.php
index 2a6dd2176df..7425f094958 100644
--- a/htdocs/societe/societecontact.php
+++ b/htdocs/societe/societecontact.php
@@ -316,7 +316,7 @@ if ($id > 0 || !empty($ref)) {
print '';
} else {
print '';
- if ($objp->subscription == 'yes') {
+ if (!empty($objp->subscription)) {
print $langs->trans("SubscriptionNotReceived");
if ($objp->statut > 0) {
print " ".img_warning();
|