diff --git a/INSTALL b/INSTALL index 56866a05d4ee1aebc9a8f5ccaa5edeb24c45709a..584c3f04713bdeeebcb54462caeb630284e6f994 100644 --- a/INSTALL +++ b/INSTALL @@ -1,6 +1,6 @@ INSTALL ------- -English: See README file. +English: See README.md file. -French: Voir fichier README-FR. +French: Voir fichier README-FR.md. diff --git a/README-FR.md b/README-FR.md index aa8c3c1f5da8eb074df457a1e5783d66a6e62d4d..8d3d7f36aa9e389a9539699214f14a2654758ed6 100644 --- a/README-FR.md +++ b/README-FR.md @@ -1,21 +1,16 @@ # DOLIBARR ERP & CRM -## INTRODUCTION - Dolibarr ERP & CRM est un logiciel moderne pour gérer votre activité (société, association, auto-entrepreneurs, artisans). Il est simple d'utilisation et modulaire, vous permettant de n'activez que les fonctions dont vous avez besoin (contacts, fournisseurs, factures, commandes, stocks, agenda, ...).  --------------------------------- -Documentation démarrage rapide --------------------------------- -1) Installer Dolibarr -2) Mettre à jour Dolibarr depuis une ancienne version -3) Ce qui est nouveau dans cette version -4) Ce que peux faire Dolibarr -5) Ce que ne peux pas faire Dolibarr (pas encore) + +## LICENCE + +Dolibarr est distribué sous les termes de la licence GNU General Public License v3+ ou supérieure. + ## INSTALLER DOLIBARR diff --git a/htdocs/accountancy/admin/export.php b/htdocs/accountancy/admin/export.php index 3e7e99c1e24e93d23c35051e996736d61480f67c..8fc5ccf0c4065472e6a497a9b7389f277e71a711 100644 --- a/htdocs/accountancy/admin/export.php +++ b/htdocs/accountancy/admin/export.php @@ -42,7 +42,7 @@ if (!$user->admin) $action = GETPOST('action', 'alpha'); -// Other parameters ACCOUNTING_* +// Other parameters ACCOUNTING_EXPORT_* $list = array ( 'ACCOUNTING_EXPORT_SEPARATORCSV', 'ACCOUNTING_EXPORT_DATE', @@ -114,20 +114,24 @@ print '</tr>'; $var = ! $var; print '<tr ' . $bc[$var] . '>'; -print "<td>" . $langs->trans("Selectmodelcsv") . "</td>"; -print "<td>"; -print '<select class="flat" name="modelcsv" id="modelcsv">'; -print '<option value="0"'; -if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 0) { - print ' selected="selected"'; +print '<td width="50%">' . $langs->trans("Selectmodelcsv") . '</td>'; +if (! $conf->use_javascript_ajax) +{ + print '<td class="nowrap">'; + print $langs->trans("NotAvailableWhenAjaxDisabled"); + print "</td>"; } -print '>' . $langs->trans("Modelcsv_normal") . '</option>'; -print '<option value="1"'; -if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) { - print ' selected="selected"'; +else +{ + print '<td>'; + $listmodelcsv=array( + '1'=>$langs->trans("Modelcsv_normal"), + '2'=>$langs->trans("Modelcsv_CEGID") + ); + print $form->selectarray("modelcsv",$listmodelcsv,$conf->global->ACCOUNTING_EXPORT_MODELCSV,0); + + print '</td>'; } -print '>' . $langs->trans("Modelcsv_CEGID") . '</option>'; -print "</select>"; print "</td></tr>"; print "</table>"; @@ -138,31 +142,34 @@ print "<br>\n"; */ $num = count($list); -if ($num) { +if ($num) +{ print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; print '<td colspan="3">' . $langs->trans('OtherOptions') . '</td>'; print "</tr>\n"; -} + if ($conf->global->ACCOUNTING_EXPORT_MODELCSV > 1) print '<tr><td colspan="2" bgcolor="red"><b>' . $langs->trans('OptionsDeactivatedForThisExportModel') . '</b></td></tr>'; -foreach ( $list as $key ) { - $var = ! $var; + foreach ( $list as $key ) { + $var = ! $var; - print '<tr ' . $bc[$var] . ' class="value">'; + print '<tr ' . $bc[$var] . ' class="value">'; - // Param - $label = $langs->trans($key); - print '<td>' . $label . '</td>'; + // Param + $label = $langs->trans($key); + print '<td width="50%">' . $label . '</td>'; - // Value - print '<td>'; - print '<input type="text" size="20" name="' . $key . '" value="' . $conf->global->$key . '">'; - print '</td></tr>'; + // Value + print '<td>'; + print '<input type="text" size="20" name="' . $key . '" value="' . $conf->global->$key . '">'; + print '</td></tr>'; + } + + print "</table>\n"; } -print "</table>\n"; +print '<br><div style="text-align:center"><input type="submit" class="button" value="' . dol_escape_htmltag($langs->trans('Modify')) . '" name="button"></div>'; -print '<br /><div style="text-align:center"><input type="submit" class="button" value="' . $langs->trans('Modify') . '" name="button"></div>'; print '</form>'; llxFooter(); diff --git a/htdocs/accountancy/bookkeeping/list.php b/htdocs/accountancy/bookkeeping/list.php index f1dc892c10fc675e203b650a21b4e3990ef80384..6c06c2ba3d732ae35cb73a3d6d74d86aaec3f844 100644 --- a/htdocs/accountancy/bookkeeping/list.php +++ b/htdocs/accountancy/bookkeeping/list.php @@ -75,7 +75,7 @@ if ($action == 'delbookkeeping') { setEventMessage($object->errors, 'errors'); } } -} // export csv +} // Export else if ($action == 'export_csv') { header('Content-Type: text/csv'); @@ -160,7 +160,7 @@ else { print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="action" value="export_csv">'; - print '<input type="submit" class="button" style="float: right;" value="Export CSV" />'; + print '<input type="submit" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '</form>'; print '<table class="noborder" width="100%">'; diff --git a/htdocs/accountancy/journal/bankjournal.php b/htdocs/accountancy/journal/bankjournal.php index 0417a87fc703456eb8b55c5ea69aaf78c23585ba..1ec16740ee478eb76fda0a4575addc4ad2cf910d 100644 --- a/htdocs/accountancy/journal/bankjournal.php +++ b/htdocs/accountancy/journal/bankjournal.php @@ -4,7 +4,7 @@ * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * @@ -99,10 +99,10 @@ $idpays = $p[0]; $sql = "SELECT b.rowid , b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type, soc.code_compta, ba.courant,"; $sql .= " soc.code_compta_fournisseur, soc.rowid as socid, soc.nom as name, ba.account_number, bu1.type as typeop"; -$sql .= " FROM " . MAIN_DB_PREFIX . "bank b"; -$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account ba on b.fk_account=ba.rowid"; -$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; -$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe soc on bu1.url_id=soc.rowid"; +$sql .= " FROM " . MAIN_DB_PREFIX . "bank as b"; +$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid"; // To isolate the cash of the other accounts $sql .= " WHERE ba.courant <> 2"; $sql .= " AND ba.rowid=".$id_accountancy_journal; @@ -176,6 +176,7 @@ if ($result) { { $tabtype[$obj->rowid] = $links[$key]['type']; + if ($links[$key]['type'] == 'payment') { $paymentstatic->id = $links[$key]['url_id']; @@ -305,6 +306,7 @@ if ($result) { /* * Actions + * FIXME Action should be before any view */ // Write bookkeeping @@ -447,18 +449,21 @@ if ($action == 'writeBookKeeping') setEventMessage($langs->trans('Success'), 'mesgs'); } } -// export csv +// Export if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; + $bank_journal = $conf->global->ACCOUNTING_BANK_JOURNAL; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=journal_banque.csv'); $companystatic = new Client($db); - if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) // Modèle Export Cegid Expert + if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) // Model Cegid Expert Export { + $sep = ";"; + foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); @@ -466,23 +471,23 @@ if ($action == 'export_csv') $companystatic->name = $tabcompany[$key]['name']; // Bank - print $date . $sep; - print $conf->global->ACCOUNTING_BANK_JOURNAL . $sep; foreach ( $tabbq[$key] as $k => $mt ) { + print $date . $sep; + print $bank_journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print $val["type_payment"] . $sep; - print $sep; + print $val["ref"] . $sep; + print "\n"; } - print "\n"; // Third party foreach ( $tabtp[$key] as $k => $mt ) { if ($mt) { print $date . $sep; - print $conf->global->ACCOUNTING_BANK_JOURNAL . $sep; + print $bank_journal . $sep; if ($val["lib"] == '(SupplierInvoicePayment)') { print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; } else { @@ -492,12 +497,12 @@ if ($action == 'export_csv') print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print $val["type_payment"] . $sep; - print $sep; + print $val["ref"] . $sep; print "\n"; } } } - } else // Modèle Export Classique + } else // Model Classic Export { foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), 'day'); @@ -505,24 +510,22 @@ if ($action == 'export_csv') $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; - print '"' . $date . '"' . $sep; - print '"' . $val["type_payment"] . '"' . $sep; - // Bank foreach ( $tabbq[$key] as $k => $mt ) { + print '"' . $date . '"' . $sep; + print '"' . $val["type_payment"] . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . $langs->trans("Bank") . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; + print "\n"; } - print "\n"; // Third party foreach ( $tabtp[$key] as $k => $mt ) { if ($mt) { print '"' . $date . '"' . $sep; print '"' . $val["type_payment"] . '"' . $sep; - print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . $companystatic->name . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; @@ -549,7 +552,7 @@ else $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); report_header($namereport, $namelink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => '')); - print '<input type="button" class="button" style="float: right;" value="Export CSV" onclick="launch_export();" />'; + print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writeBookKeeping();" />'; @@ -632,5 +635,4 @@ else // End of page llxFooter(); } - $db->close(); diff --git a/htdocs/accountancy/journal/cashjournal.php b/htdocs/accountancy/journal/cashjournal.php index 52b50789fdb6e3744449504ef497b733f9a6bc58..8bc33f2c1bb0a64376c062da97dce925afd5fe32 100644 --- a/htdocs/accountancy/journal/cashjournal.php +++ b/htdocs/accountancy/journal/cashjournal.php @@ -4,7 +4,7 @@ * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * @@ -91,10 +91,10 @@ $idpays = $p[0]; $sql = "SELECT b.rowid , b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro, b.num_releve, b.num_chq, b.fk_type, soc.code_compta, ba.courant,"; $sql .= " soc.code_compta_fournisseur, soc.rowid as socid, soc.nom as name, ba.account_number, bu1.type as typeop"; -$sql .= " FROM " . MAIN_DB_PREFIX . "bank b"; -$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account ba on b.fk_account=ba.rowid"; -$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; -$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe soc on bu1.url_id=soc.rowid"; +$sql .= " FROM " . MAIN_DB_PREFIX . "bank as b"; +$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as ba on b.fk_account=ba.rowid"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "bank_url as bu1 ON bu1.fk_bank = b.rowid AND bu1.type='company'"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid"; // Code opération type caisse $sql .= " WHERE ba.courant = 2"; @@ -365,67 +365,69 @@ if ($action == 'writeBookKeeping') setEventMessage($langs->trans('Success'), 'mesgs'); } } -// export csv +// Export if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; + $cash_journal = $conf->global->ACCOUNTING_CASH_JOURNAL; header('Content-Type: text/csv'); header('Content-Disposition:attachment;filename=journal_caisse.csv'); - if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) // Modèle Export Cegid Expert + if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) // Model Cegid Expert Export { + $sep = ";"; + foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); // Cash - print $date . $sep; - print $conf->global->ACCOUNTING_CASH_JOURNAL . $sep; - foreach ( $tabbq[$key] as $k => $mt ) { + print $date . $sep; + print $cash_journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; - print price($mt) . $sep; + print ($mt <= 0 ? price(- $mt) : $mt) . $sep; + print $val["type_payment"] . $sep; + print $val["ref"] . $sep; + print "\n"; } - print utf8_decode($langs->trans("CashPayment")) . $sep; - print $val["ref"] . $sep; - print "\n"; // Third party foreach ( $tabtp[$key] as $k => $mt ) { if ($mt) { print $date . $sep; - print $conf->global->ACCOUNTING_CASH_JOURNAL . $sep; - if ($obj->label == '(SupplierInvoicePayment)') { + print $cash_journal . $sep; + if ($val["lib"] == '(SupplierInvoicePayment)') { print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; } else { print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; } print length_accounta(html_entity_decode($k)) . $sep; print ($mt < 0 ? 'D' : 'C') . $sep; - print price($mt) . $sep; - print $langs->trans("ThirdParty") . $sep; + print ($mt <= 0 ? price(- $mt) : $mt) . $sep; + print $val["type_payment"] . $sep; print $val["ref"] . $sep; print "\n"; } } } - } else // Modèle Export Classique + } else // Model Classic Export { foreach ( $tabpay as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), 'day'); - print '"' . $date . '"' . $sep; - print '"' . $val["ref"] . '"' . $sep; // Cash foreach ( $tabbq[$key] as $k => $mt ) { + print '"' . $date . '"' . $sep; + print '"' . $val["ref"] . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . $langs->trans("Cash") . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; + print "\n"; } - print "\n"; - + // Third party foreach ( $tabtp[$key] as $k => $mt ) { if ($mt) { @@ -455,7 +457,7 @@ if ($action == 'export_csv') { $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); report_header($name, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => '')); - print '<input type="button" class="button" style="float: right;" value="Export CSV" onclick="launch_export();" />'; + print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writeBookKeeping();" />'; diff --git a/htdocs/accountancy/journal/purchasesjournal.php b/htdocs/accountancy/journal/purchasesjournal.php index e7727df7add257173305d11716bf079cba2059ca..905296358f037136e51d4f31e24d320b5b1fefa8 100644 --- a/htdocs/accountancy/journal/purchasesjournal.php +++ b/htdocs/accountancy/journal/purchasesjournal.php @@ -242,16 +242,19 @@ if ($action == 'writebookkeeping') { $companystatic = new Fournisseur($db); -// export csv +// Export if ($action == 'export_csv') { $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; + $purchase_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=journal_achats.csv'); - if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) // Modèle Export Cegid Expert + if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) // Model Cegid Expert Export { + $sep = ";"; + foreach ( $tabfac as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); @@ -263,7 +266,7 @@ if ($action == 'export_csv') if ($mt) { print $date . $sep; - print $conf->global->ACCOUNTING_PURCHASE_JOURNAL . $sep; + print $purchase_journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; @@ -275,11 +278,10 @@ if ($action == 'export_csv') } // VAT - // var_dump($tabtva); foreach ( $tabtva[$key] as $k => $mt ) { if ($mt) { print $date . $sep; - print $conf->global->ACCOUNTING_PURCHASE_JOURNAL . $sep; + print $purchase_journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'C' : 'D') . $sep; @@ -289,20 +291,20 @@ if ($action == 'export_csv') print "\n"; } } - print $date . $sep; - print $conf->global->ACCOUNTING_PURCHASE_JOURNAL . $sep; - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; foreach ( $tabttc[$key] as $k => $mt ) { + print $date . $sep; + print $purchase_journal . $sep; + print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; print length_accounta(html_entity_decode($k)) . $sep; print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print utf8_decode($companystatic->name) . $sep; print $val["ref"]; + print "\n"; } - print "\n"; } - } else // Modèle Export Classique + } else // Model Classic Export { foreach ( $tabfac as $key => $val ) { $date = dol_print_date($db->jdate($val["date"]), 'day'); @@ -326,7 +328,6 @@ if ($action == 'export_csv') } } // VAT - // var_dump($tabtva); foreach ( $tabtva[$key] as $k => $mt ) { if ($mt) { print '"' . $date . '"' . $sep; @@ -340,9 +341,9 @@ if ($action == 'export_csv') } // Third party - print '"' . $date . '"' . $sep; - print '"' . $val["ref"] . '"' . $sep; foreach ( $tabttc[$key] as $k => $mt ) { + print '"' . $date . '"' . $sep; + print '"' . $val["ref"] . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . utf8_decode($companystatic->name) . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $sep; @@ -370,7 +371,7 @@ if ($action == 'export_csv') $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => '')); - print '<input type="button" class="button" style="float: right;" value="Export CSV" onclick="launch_export();" />'; + print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; @@ -433,7 +434,6 @@ if ($action == 'export_csv') } } // VAT - // var_dump($tabtva); foreach ( $tabtva[$key] as $k => $mt ) { if ($mt) { print "<tr " . $bc[$var] . " >"; @@ -448,13 +448,11 @@ if ($action == 'export_csv') print "<tr " . $bc[$var] . ">"; // Third party - print "<td>" . $date . "</td>"; - print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; - foreach ( $tabttc[$key] as $k => $mt ) { + print "<td>" . $date . "</td>"; + print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; - print "<td>" . length_accounta($k); print "</td><td>" . $langs->trans("ThirdParty"); print ' (' . $companystatic->getNomUrl(0, 'supplier', 16) . ')'; diff --git a/htdocs/accountancy/journal/sellsjournal.php b/htdocs/accountancy/journal/sellsjournal.php index 5737238ef0791cfe922d0d561392c454a7039b20..d3387a2ccc64d288bfedde069e40e95a86ca4cb1 100644 --- a/htdocs/accountancy/journal/sellsjournal.php +++ b/htdocs/accountancy/journal/sellsjournal.php @@ -4,7 +4,7 @@ * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr> - * Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com> + * Copyright (C) 2013-2015 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2013-2014 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> @@ -60,6 +60,8 @@ if ($user->societe_id > 0) $action = GETPOST('action'); + + /* * View */ @@ -94,7 +96,7 @@ $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "product as p ON p.rowid = fd.fk_produc $sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "accountingaccount as aa ON aa.rowid = fd.fk_code_ventilation"; $sql .= " JOIN " . MAIN_DB_PREFIX . "facture as f ON f.rowid = fd.fk_facture"; $sql .= " JOIN " . MAIN_DB_PREFIX . "societe as s ON s.rowid = f.fk_soc"; -$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_tva ct ON fd.tva_tx = ct.taux AND ct.fk_pays = '" . $idpays . "'"; +$sql .= " LEFT JOIN " . MAIN_DB_PREFIX . "c_tva as ct ON fd.tva_tx = ct.taux AND ct.fk_pays = '" . $idpays . "'"; $sql .= " WHERE fd.fk_code_ventilation > 0 "; if (! empty($conf->multicompany->enabled)) { $sql .= " AND f.entity = " . $conf->entity; @@ -176,14 +178,18 @@ if ($result) { /* * Action + * FIXME Action must be set before any view part */ // Bookkeeping Write -if ($action == 'writebookkeeping') { +if ($action == 'writebookkeeping') +{ $now = dol_now(); - foreach ( $tabfac as $key => $val ) { - foreach ( $tabttc[$key] as $k => $mt ) { + foreach ($tabfac as $key => $val) + { + foreach ($tabttc[$key] as $k => $mt) + { $bookkeeping = new BookKeeping($db); $bookkeeping->doc_date = $val["date"]; $bookkeeping->doc_ref = $val["ref"]; @@ -204,7 +210,7 @@ if ($action == 'writebookkeeping') { } // Product / Service - foreach ( $tabht[$key] as $k => $mt ) { + foreach ($tabht[$key] as $k => $mt) { if ($mt) { // get compte id and label $accountingaccount = new AccountingAccount($db); @@ -232,8 +238,10 @@ if ($action == 'writebookkeeping') { // VAT // var_dump($tabtva); - foreach ( $tabtva[$key] as $k => $mt ) { - if ($mt) { + foreach ($tabtva[$key] as $k => $mt) + { + if ($mt) + { $bookkeeping = new BookKeeping($db); $bookkeeping->doc_date = $val["date"]; $bookkeeping->doc_ref = $val["ref"]; @@ -256,17 +264,22 @@ if ($action == 'writebookkeeping') { } } } -// export csv -if ($action == 'export_csv') { + +// Export +if ($action == 'export_csv') +{ $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; + $sell_journal = $conf->global->ACCOUNTING_SELL_JOURNAL; header('Content-Type: text/csv'); header('Content-Disposition: attachment;filename=journal_ventes.csv'); $companystatic = new Client($db); - if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) // Modèle Export Cegid Expert + if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 2) // Model Cegid Expert Export { + $sep = ";"; + foreach ( $tabfac as $key => $val ) { $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; @@ -274,23 +287,23 @@ if ($action == 'export_csv') { $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); - print $date . $sep; - print $conf->global->ACCOUNTING_SELL_JOURNAL . $sep; - print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; foreach ( $tabttc[$key] as $k => $mt ) { + print $date . $sep; + print $sell_journal . $sep; + print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; print length_accounta(html_entity_decode($k)) . $sep; print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print utf8_decode($companystatic->name) . $sep; + print $val["ref"]; + print "\n"; } - print $val["ref"]; - print "\n"; // Product / Service foreach ( $tabht[$key] as $k => $mt ) { if ($mt) { print $date . $sep; - print $conf->global->ACCOUNTING_SELL_JOURNAL . $sep; + print $sell_journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'D' : 'C') . $sep; @@ -300,11 +313,12 @@ if ($action == 'export_csv') { print "\n"; } } + // TVA foreach ( $tabtva[$key] as $k => $mt ) { if ($mt) { print $date . $sep; - print $conf->global->ACCOUNTING_SELL_JOURNAL . $sep; + print $sell_journal . $sep; print length_accountg(html_entity_decode($k)) . $sep; print $sep; print ($mt < 0 ? 'D' : 'C') . $sep; @@ -315,26 +329,30 @@ if ($action == 'export_csv') { } } } - } else // Modèle Export Classique + } + else // Model Classic Export { - foreach ( $tabfac as $key => $val ) { + foreach ($tabfac as $key => $val) + { $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; $companystatic->client = $tabcompany[$key]['code_client']; $date = dol_print_date($db->jdate($val["date"]), 'day'); - print '"' . $date . '"' . $sep; - print '"' . $val["ref"] . '"' . $sep; + foreach ( $tabttc[$key] as $k => $mt ) { + print '"' . $date . '"' . $sep; + print '"' . $val["ref"] . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . utf8_decode($companystatic->name) . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; + print "\n"; } - print "\n"; // Product / Service - foreach ( $tabht[$key] as $k => $mt ) { + foreach ($tabht[$key] as $k => $mt) + { $accountingaccount = new AccountingAccount($db); $accountingaccount->fetch(null, $k); @@ -350,8 +368,8 @@ if ($action == 'export_csv') { } // VAT - // var_dump($tabtva); - foreach ( $tabtva[$key] as $k => $mt ) { + foreach ($tabtva[$key] as $k => $mt) + { if ($mt) { print '"' . $date . '"' . $sep; print '"' . $val["ref"] . '"' . $sep; @@ -383,7 +401,7 @@ if ($action == 'export_csv') { $period = $form->select_date($date_start, 'date_start', 0, 0, 0, '', 1, 0, 1) . ' - ' . $form->select_date($date_end, 'date_end', 0, 0, 0, '', 1, 0, 1); report_header($nom, $nomlink, $period, $periodlink, $description, $builddate, $exportlink, array('action' => '')); - print '<input type="button" class="button" style="float: right;" value="Export CSV" onclick="launch_export();" />'; + print '<input type="button" class="button" style="float: right;" value="' . $langs->trans("Export") . '" onclick="launch_export();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />'; @@ -423,7 +441,8 @@ if ($action == 'export_csv') { $invoicestatic = new Facture($db); $companystatic = new Client($db); - foreach ( $tabfac as $key => $val ) { + foreach ($tabfac as $key => $val) + { $invoicestatic->id = $key; $invoicestatic->ref = $val["ref"]; $invoicestatic->type = $val["type"]; @@ -431,12 +450,12 @@ if ($action == 'export_csv') { $date = dol_print_date($db->jdate($val["date"]), 'day'); - print "<tr " . $bc[$var] . ">"; - // Third party - print "<td>" . $date . "</td>"; - print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; - foreach ( $tabttc[$key] as $k => $mt ) { + foreach ($tabttc[$key] as $k => $mt) + { + print "<tr " . $bc[$var] . ">"; + print "<td>" . $date . "</td>"; + print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; $companystatic->id = $tabcompany[$key]['id']; $companystatic->name = $tabcompany[$key]['name']; $companystatic->client = $tabcompany[$key]['code_client']; @@ -449,7 +468,8 @@ if ($action == 'export_csv') { print "</tr>"; // Product / Service - foreach ( $tabht[$key] as $k => $mt ) { + foreach ($tabht[$key] as $k => $mt) + { $accountingaccount = new AccountingAccount($db); $accountingaccount->fetch(null, $k); @@ -466,8 +486,8 @@ if ($action == 'export_csv') { } // VAT - // var_dump($tabtva); - foreach ( $tabtva[$key] as $k => $mt ) { + foreach ($tabtva[$key] as $k => $mt) + { if ($mt) { print "<tr " . $bc[$var] . ">"; print "<td>" . $date . "</td>"; @@ -484,8 +504,9 @@ if ($action == 'export_csv') { } print "</table>"; -} -llxFooter(); + // End of page + llxFooter(); +} $db->close(); diff --git a/htdocs/admin/const.php b/htdocs/admin/const.php index a64e3856dbc80340a64e26bc73e9974627da5b33..fc7fbc74f4d8ec8a4e59c51a13e027690e2bdb8f 100644 --- a/htdocs/admin/const.php +++ b/htdocs/admin/const.php @@ -230,7 +230,7 @@ $sql.= ", entity"; $sql.= " FROM ".MAIN_DB_PREFIX."const"; $sql.= " WHERE entity IN (".$user->entity.",".$conf->entity.")"; if (empty($user->entity) && $debug) {} // to force for superadmin -elseif ($user->entity || empty($conf->multicompany->enabled)) $sql.= " AND visible = 1"; +else $sql.= " AND visible = 1"; // We must always have this. Otherwise, array is too large and submitting data fails due to apache POST or GET limits $sql.= " ORDER BY entity, name ASC"; dol_syslog("Const::listConstant", LOG_DEBUG); @@ -280,7 +280,6 @@ if ($result) if ($conf->use_javascript_ajax) { print '<input type="checkbox" class="flat checkboxfordelete" id="check_'.$i.'" name="const['.$i.'][check]" value="1">'; - print ' '; } else { diff --git a/htdocs/admin/tools/export.php b/htdocs/admin/tools/export.php index 0831571ace14a2558b351ff925e63b2fced13520..721692145a184a508580524d3a217af3f682b525 100644 --- a/htdocs/admin/tools/export.php +++ b/htdocs/admin/tools/export.php @@ -480,10 +480,10 @@ function backup_tables($outputfile, $tables='*') if ($row[$j] == null and !is_string($row[$j])) { // IMPORTANT: if the field is NULL we set it NULL $row[$j] = 'NULL'; - } elseif(is_string($row[$j]) and $row[$j] == '') { + } elseif(is_string($row[$j]) && $row[$j] == '') { // if it's an empty string, we set it as an empty string $row[$j] = "''"; - } elseif(is_numeric($row[$j]) and !strcmp($row[$j], $row[$j]+0) ) { // test if it's a numeric type and the numeric version ($nb+0) == string version (eg: if we have 01, it's probably not a number but rather a string, else it would not have any leading 0) + } elseif(is_numeric($row[$j]) && !strcmp($row[$j], $row[$j]+0) ) { // test if it's a numeric type and the numeric version ($nb+0) == string version (eg: if we have 01, it's probably not a number but rather a string, else it would not have any leading 0) // if it's a number, we return it as-is // $row[$j] = $row[$j]; } else { // else for all other cases we escape the value and put quotes around diff --git a/htdocs/core/class/ldap.class.php b/htdocs/core/class/ldap.class.php index 95436a51e29d809ab394c189bc1aca577e1326d7..dc844ee3f0233be239e8f22e98bafec076e8c113 100644 --- a/htdocs/core/class/ldap.class.php +++ b/htdocs/core/class/ldap.class.php @@ -176,7 +176,10 @@ class Ldap if (is_resource($this->connection)) { + // Execute the ldap_set_option here (after connect and before bind) $this->setVersion(); + ldap_set_option($this->connection, LDAP_OPT_SIZELIMIT, 0); // no limit here. should return true. + if ($this->serverType == "activedirectory") { diff --git a/htdocs/core/class/rssparser.class.php b/htdocs/core/class/rssparser.class.php index 5a156b1eda7758c619d21bcc7142049e56fdf181..349b32d5104810080de7fadaa4a943856f502399 100644 --- a/htdocs/core/class/rssparser.class.php +++ b/htdocs/core/class/rssparser.class.php @@ -550,7 +550,7 @@ class RssParser // elseif ($this->_format == 'atom' and $el == 'link' ) { - if ( isset($attrs['rel']) and $attrs['rel'] == 'alternate' ) + if ( isset($attrs['rel']) && $attrs['rel'] == 'alternate' ) { $link_el = 'link'; } diff --git a/htdocs/core/datepicker.php b/htdocs/core/datepicker.php index 893b3929e2e65341e75b88ab65d7dba76b65b50a..efa7b753101bf8cdbd908171fa7073997958801e 100644 --- a/htdocs/core/datepicker.php +++ b/htdocs/core/datepicker.php @@ -26,8 +26,8 @@ * \brief File to manage popup date selector */ -if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // disabled -//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load global conf for START_WEEK +if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // disabled +//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); //if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1); @@ -194,6 +194,10 @@ function displayBox($selectedDate,$month,$year) echo '<td width="', (int) (($i+1)*100/7) - (int) ($i*100/7), '%">', $langs->trans($day_names[($i + $startday) % 7]), '</td>', "\n"; } ?> +<<<<<<< HEAD +======= + +>>>>>>> refs/remotes/origin/3.7 </tr> <?php //print "x ".$thedate." y"; // $thedate = first day of month diff --git a/htdocs/core/filemanagerdol/connectors/php/commands.php b/htdocs/core/filemanagerdol/connectors/php/commands.php index 3a0dc0378ea5af7c4d537a224680962c6c100887..18b54c1c6b8df5304d0734b3e1ba1a7bc6e25dc8 100644 --- a/htdocs/core/filemanagerdol/connectors/php/commands.php +++ b/htdocs/core/filemanagerdol/connectors/php/commands.php @@ -188,7 +188,7 @@ function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '') if ( isset( $_FILES['NewFile'] ) && !is_null($_FILES['NewFile']['tmp_name']) // This is for the QuickUpload tab box - or (isset($_FILES['upload']) and !is_null($_FILES['upload']['tmp_name']))) + or (isset($_FILES['upload']) && !is_null($_FILES['upload']['tmp_name']))) { global $Config ; diff --git a/htdocs/core/lib/product.lib.php b/htdocs/core/lib/product.lib.php index 741dd98de6dfeece248913b7405d3dd0ce960f69..1aea8f9e37be91a13d22188954d8ef9c7fc4947b 100644 --- a/htdocs/core/lib/product.lib.php +++ b/htdocs/core/lib/product.lib.php @@ -57,11 +57,6 @@ function product_prepare_head($object, $user) $h++; } - $head[$h][0] = DOL_URL_ROOT."/product/photos.php?id=".$object->id; - $head[$h][1] = $langs->trans("Photos"); - $head[$h][2] = 'photos'; - $h++; - // Show category tab if (! empty($conf->categorie->enabled) && $user->rights->categorie->lire) { @@ -116,14 +111,19 @@ function product_prepare_head($object, $user) // $this->tabs = array('entity:-tabname); to remove a tab complete_head_from_modules($conf,$langs,$object,$head,$h,'product'); - // Attachments + $head[$h][0] = DOL_URL_ROOT."/product/photos.php?id=".$object->id; + $head[$h][1] = $langs->trans("Photos"); + $head[$h][2] = 'photos'; + $h++; + + // Attachments require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; if (! empty($conf->product->enabled)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); elseif (! empty($conf->service->enabled)) $upload_dir = $conf->service->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref); $nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); $head[$h][0] = DOL_URL_ROOT.'/product/document.php?id='.$object->id; $head[$h][1] = $langs->trans('Documents'); - if($nbFiles > 0) $head[$h][1].= ' ('.$nbFiles.')'; + if($nbFiles > 0) $head[$h][1].= ' <span class="badge">'.$nbFiles.'</span>'; $head[$h][2] = 'documents'; $h++; diff --git a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php index 510a1bd88a1d620098eb7c9d4e83e7e1361aa914..f6d28a4f13509455328528e44c79614aa35aaf9c 100644 --- a/htdocs/core/modules/commande/doc/pdf_einstein.modules.php +++ b/htdocs/core/modules/commande/doc/pdf_einstein.modules.php @@ -154,6 +154,8 @@ class pdf_einstein extends ModelePDFCommandes $outputlangs->load("orders"); $outputlangs->load("deliveries"); + $nblignes = count($object->lines); + if ($conf->commande->dir_output) { $object->fetch_thirdparty(); @@ -195,8 +197,6 @@ class pdf_einstein extends ModelePDFCommandes global $action; $reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks - $nblignes = count($object->lines); - // Create pdf instance $pdf=pdf_getInstance($this->format); $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance @@ -328,6 +328,7 @@ class pdf_einstein extends ModelePDFCommandes //print $pageposafter.'-'.$pageposbefore;exit; $pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,4,$curX,$curY,$hideref,$hidedesc); + $pageposafter=$pdf->getPage(); $posyafter=$pdf->GetY(); if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text { @@ -511,11 +512,6 @@ class pdf_einstein extends ModelePDFCommandes $pdf->Output($file,'F'); // Add pdfgeneration hook - if (! is_object($hookmanager)) - { - include_once DOL_DOCUMENT_ROOT.'/core/class/hookmanager.class.php'; - $hookmanager=new HookManager($this->db); - } $hookmanager->initHooks(array('pdfgeneration')); $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs); global $action; @@ -797,7 +793,7 @@ class pdf_einstein extends ModelePDFCommandes //{ foreach( $this->localtax1 as $localtax_type => $localtax_rate ) { - if (in_array((string) $localtax_type, array('1','3','5','7'))) continue; + if (in_array((string) $localtax_type, array('1','3','5'))) continue; foreach( $localtax_rate as $tvakey => $tvaval ) { if ($tvakey!=0) // On affiche pas taux 0 @@ -828,7 +824,7 @@ class pdf_einstein extends ModelePDFCommandes //{ foreach( $this->localtax2 as $localtax_type => $localtax_rate ) { - if (in_array((string) $localtax_type, array('1','3','5','7'))) continue; + if (in_array((string) $localtax_type, array('1','3','5'))) continue; foreach( $localtax_rate as $tvakey => $tvaval ) { if ($tvakey!=0) // On affiche pas taux 0 diff --git a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php index 9cc39cfb5b05a7ff0c7e7f47c876fb93145421e2..1a26a161511a7ccb66102fd6d5244da48aae66f3 100644 --- a/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php +++ b/htdocs/core/modules/fichinter/doc/pdf_soleil.modules.php @@ -96,7 +96,7 @@ class pdf_soleil extends ModelePDFFicheinter /** * Function to build pdf onto disk * - * @param CommonObject $object Id of object to generate + * @param Object $object Object to generate * @param Translate $outputlangs Lang output object * @param string $srctemplatepath Full path of source filename for generator using a template file * @param int $hidedetails Do not show line details @@ -106,7 +106,7 @@ class pdf_soleil extends ModelePDFFicheinter */ function write_file($object,$outputlangs,$srctemplatepath='',$hidedetails=0,$hidedesc=0,$hideref=0) { - global $conf, $hookmanager, $langs, $user; + global $user,$langs,$conf,$mysoc,$db,$hookmanager; if (! is_object($outputlangs)) $outputlangs=$langs; // For backward compatibility with FPDF, force output charset to ISO, because FPDF expect text to be encoded in ISO @@ -121,16 +121,24 @@ class pdf_soleil extends ModelePDFFicheinter { $object->fetch_thirdparty(); - $objectref = dol_sanitizeFileName($object->ref); - $dir = $conf->ficheinter->dir_output; - if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref; - $file = $dir . "/" . $objectref . ".pdf"; + // Definition of $dir and $file + if ($object->specimen) + { + $dir = $conf->ficheinter->dir_output; + $file = $dir . "/SPECIMEN.pdf"; + } + else + { + $objectref = dol_sanitizeFileName($object->ref); + $dir = $conf->ficheinter->dir_output . "/" . $objectref; + $file = $dir . "/" . $objectref . ".pdf"; + } if (! file_exists($dir)) { if (dol_mkdir($dir) < 0) { - $this->error=$outputlangs->trans("ErrorCanNotCreateDir",$dir); + $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); return 0; } } @@ -149,6 +157,9 @@ class pdf_soleil extends ModelePDFFicheinter global $action; $reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks + $nblignes = count($object->lines); + + // Create pdf instance $pdf=pdf_getInstance($this->format); $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance $heightforinfotot = 50; // Height reserved to output the info and total part @@ -196,12 +207,13 @@ class pdf_soleil extends ModelePDFFicheinter $tab_height_newpage = 150; // Affiche notes - if (! empty($object->note_public)) + $notetoshow=empty($object->note_public)?'':$object->note_public; + if ($notetoshow) { $tab_top = 88; $pdf->SetFont('','', $default_font_size - 1); - $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($object->note_public), 0, 1); + $pdf->writeHTMLCell(190, 3, $this->posxdesc-1, $tab_top, dol_htmlentitiesbr($notetoshow), 0, 1); $nexY = $pdf->GetY(); $height_note=$nexY-$tab_top; @@ -252,15 +264,17 @@ class pdf_soleil extends ModelePDFFicheinter $valide = empty($objectligne->id) ? 0 : $objectligne->fetch($objectligne->id); if ($valide > 0 || $object->specimen) { - $curX = $this->posxdesc-1; $curY = $nexY; $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage $pdf->SetTextColor(0,0,0); $pdf->setTopMargin($tab_top_newpage); - $pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext/*+$heightforinfotot*/); // The only function to edit the bottom margin of current page to set it. + $pdf->setPageOrientation('', 1, $heightforfooter+$heightforfreetext+$heightforinfotot); // The only function to edit the bottom margin of current page to set it. $pageposbefore=$pdf->getPage(); + // Description of product line + $curX = $this->posxdesc-1; + // Description of product line $txt=$outputlangs->transnoentities("Date")." : ".dol_print_date($objectligne->datei,'dayhour',false,$outputlangs,true); if ($objectligne->duration > 0) @@ -288,6 +302,8 @@ class pdf_soleil extends ModelePDFFicheinter if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page { $pdf->AddPage('','',true); + if (! empty($tplidx)) $pdf->useTemplate($tplidx); + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); $pdf->setPage($pageposafter+1); } } @@ -316,33 +332,34 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->setPage($pagenb); if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter - $heightforfreetext, 0, $outputlangs, 0, 1); + $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 - $heightforfreetext, 0, $outputlangs, 1); + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf,$object,$outputlangs,1); $pagenb++; $pdf->setPage($pagenb); - $this->_pagehead($pdf, $object, 0, $outputlangs); $pdf->setPageOrientation('', 1, 0); // The only function to edit the bottom margin of current page to set it. + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); } if (isset($object->lines[$i+1]->pagebreak) && $object->lines[$i+1]->pagebreak) { if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfooter - $heightforfreetext, 0, $outputlangs, 0, 1); + $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 - $heightforfreetext, 0, $outputlangs, 1, 1); + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfooter, 0, $outputlangs, 1, 1); } $this->_pagefoot($pdf,$object,$outputlangs,1); // New page $pdf->AddPage(); if (! empty($tplidx)) $pdf->useTemplate($tplidx); $pagenb++; + if (empty($conf->global->MAIN_PDF_DONOTREPEAT_HEAD)) $this->_pagehead($pdf, $object, 0, $outputlangs); } } } @@ -350,13 +367,13 @@ class pdf_soleil extends ModelePDFFicheinter // Show square if ($pagenb == 1) { - $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfreetext - $heightforfooter - 50, 0, $outputlangs, 0, 0); - $bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfooter + 1; + $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0); + $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } else { - $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfreetext - $heightforfooter - 50, 0, $outputlangs, 1, 0); - $bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfooter + 1; + $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0); + $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1; } $this->_pagefoot($pdf,$object,$outputlangs); @@ -364,6 +381,13 @@ class pdf_soleil extends ModelePDFFicheinter $pdf->Close(); $pdf->Output($file,'F'); + + // Add pdfgeneration hook + $hookmanager->initHooks(array('pdfgeneration')); + $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs); + global $action; + $reshook=$hookmanager->executeHooks('afterPDFCreation',$parameters,$this,$action); // Note that $action and $object may have been modified by some hooks + if (! empty($conf->global->MAIN_UMASK)) @chmod($file, octdec($conf->global->MAIN_UMASK)); diff --git a/htdocs/core/modules/member/doc/pdf_standard.class.php b/htdocs/core/modules/member/doc/pdf_standard.class.php index cef4155c60742b7882ca06b3c29cae5ba0f1d78c..9268a10f3c4d229ce258427caec1e322633fc2f2 100644 --- a/htdocs/core/modules/member/doc/pdf_standard.class.php +++ b/htdocs/core/modules/member/doc/pdf_standard.class.php @@ -137,7 +137,7 @@ class pdf_standard $imgscaleheight=(empty($forceimgscalewidth)?0.5:$forceimgscalewidth); // Scale of image for height (1=Full height of sticker) // We are in a new page, then we must add a page - if (($this->_COUNTX ==0) and ($this->_COUNTY==0) and (!$this->_First==1)) { + if (($this->_COUNTX ==0) && ($this->_COUNTY==0) and (!$this->_First==1)) { $pdf->AddPage(); } $this->_First=0; diff --git a/htdocs/core/modules/modAccounting.class.php b/htdocs/core/modules/modAccounting.class.php index d683d4bb27195600f546149abebb0dec63878e3b..70a52dc90e1511ec48bc5c7092ff37dec4b1adbc 100644 --- a/htdocs/core/modules/modAccounting.class.php +++ b/htdocs/core/modules/modAccounting.class.php @@ -129,7 +129,7 @@ class modAccounting extends DolibarrModules $this->const[9] = array( "ACCOUNTING_EXPORT_MODELCSV", "chaine", - "0" + "1" ); $this->const[10] = array( "ACCOUNTING_LENGTH_GACCOUNT", diff --git a/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php index 8ae45bdc681b0700b20c8ceccac1f02470fdec05..193de960bb89c6cc414472314d6568bdfa8f071f 100644 --- a/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php +++ b/htdocs/core/modules/printsheet/doc/pdf_standardlabel.class.php @@ -135,7 +135,7 @@ class pdf_standardlabel $imgscaleheight=(empty($forceimgscalewidth)?0.5:$forceimgscalewidth); // Scale of image for height (1=Full height of sticker) // We are in a new page, then we must add a page - if (($this->_COUNTX ==0) and ($this->_COUNTY==0) and (!$this->_First==1)) { + if (($this->_COUNTX ==0) && ($this->_COUNTY==0) and (!$this->_First==1)) { $pdf->AddPage(); } $this->_First=0; diff --git a/htdocs/expedition/card.php b/htdocs/expedition/card.php index 7e7b3cf6e3beb8b2715336fe97ff680f0194409e..562caee3cb01525f2b1ebac85aafb6e37eeb05a2 100644 --- a/htdocs/expedition/card.php +++ b/htdocs/expedition/card.php @@ -731,7 +731,7 @@ if ($action == 'create') if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0; } - if (empty($conf->productbatch->enabled) || ! ($product->hasbatch() and is_object($product->stock_warehouse[$warehouse_id]))) + if (empty($conf->productbatch->enabled) || ! ($product->hasbatch() && is_object($product->stock_warehouse[$warehouse_id]))) { // Quantity to send print '<td align="center">'; diff --git a/htdocs/fichinter/class/fichinter.class.php b/htdocs/fichinter/class/fichinter.class.php index 10a50947bba27edf7e23ee1140242a7f5f4ade62..6ec66add0851aa1a13088985b253c4ae9ecaa67c 100644 --- a/htdocs/fichinter/class/fichinter.class.php +++ b/htdocs/fichinter/class/fichinter.class.php @@ -951,7 +951,7 @@ class Fichinter extends CommonObject $this->note_private='Private note'; $this->note_public='SPECIMEN'; $this->duree = 0; - $nbp = 20; + $nbp = 25; $xnbp = 0; while ($xnbp < $nbp) { diff --git a/htdocs/fourn/facture/card.php b/htdocs/fourn/facture/card.php index 325a9e5d591e5ddb1d7b10fd9dce125762708d29..b2cc37a982e67247b1cd054bd9ed9e7e1511c5ab 100644 --- a/htdocs/fourn/facture/card.php +++ b/htdocs/fourn/facture/card.php @@ -1191,10 +1191,10 @@ if ($action == 'create') dol_htmloutput_events(); $societe=''; - if ($_GET['socid']) + if (GETPOST('socid') > 0) { $societe=new Societe($db); - $societe->fetch($_GET['socid']); + $societe->fetch(GETPOST('socid','int')); } if (GETPOST('origin') && GETPOST('originid')) @@ -1273,14 +1273,14 @@ if ($action == 'create') print '<tr><td class="fieldrequired">'.$langs->trans('Supplier').'</td>'; print '<td>'; - if ($_REQUEST['socid'] > 0) + if (GETPOST('socid') > 0) { print $societe->getNomUrl(1); - print '<input type="hidden" name="socid" value="'.$_GET['socid'].'">'; + print '<input type="hidden" name="socid" value="'.GETPOST('socid','int').'">'; } else { - print $form->select_company((empty($_GET['socid'])?'':$_GET['socid']),'socid','s.fournisseur = 1',1); + print $form->select_company(GETPOST('socid','int'),'socid','s.fournisseur = 1',1); } print '</td></tr>'; @@ -1401,7 +1401,7 @@ if ($action == 'create') $langs->load('projects'); print '<tr><td>' . $langs->trans('Project') . '</td><td colspan="2">'; - $formproject->select_projects((empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS)?$object->socid:'-1'), $projectid, 'projectid', 0); + $formproject->select_projects((empty($conf->global->PROJECT_CAN_ALWAYS_LINK_TO_ALL_SUPPLIERS)?$societe->id:'-1'), $projectid, 'projectid', 0); print '</td></tr>'; } diff --git a/htdocs/langs/en_US/accountancy.lang b/htdocs/langs/en_US/accountancy.lang index e1713acd57c3f60594e4df8fb424d69d6f7a995f..b09dab7f7645a53dd4fe777216189f054c8b221a 100644 --- a/htdocs/langs/en_US/accountancy.lang +++ b/htdocs/langs/en_US/accountancy.lang @@ -13,7 +13,9 @@ ConfigAccountingExpert=Configuration of the module accounting expert Journaux=Journals JournalFinancial=Financial journals Exports=Exports +Export=Export Modelcsv=Model of export +OptionsDeactivatedForThisExportModel=For this export model, options are deactivated Selectmodelcsv=Select a model of export Modelcsv_normal=Classic export Modelcsv_CEGID=Export towards CEGID Expert @@ -66,7 +68,7 @@ Lineofinvoice=Line of invoice VentilatedinAccount=Ventilated successfully in the accounting account NotVentilatedinAccount=Not ventilated in the accounting account -ACCOUNTING_SEPARATORCSV=Separator CSV +ACCOUNTING_SEPARATORCSV=Column separator in export file ACCOUNTING_LIMIT_LIST_VENTILATION=Number of elements to be breakdown shown by page (maximum recommended : 50) ACCOUNTING_LIST_SORT_VENTILATION_TODO=Begin the sorting of the breakdown pages "Has to breakdown" by the most recent elements diff --git a/htdocs/product/class/product.class.php b/htdocs/product/class/product.class.php index 243c1723af23134699fd28c17deaee6f0867118c..1bca1a64f4ef002f53e83f278fd21af88998fe7d 100755 --- a/htdocs/product/class/product.class.php +++ b/htdocs/product/class/product.class.php @@ -3172,10 +3172,14 @@ class Product extends CommonObject */ function add_photo($sdir, $file, $maxWidth = 160, $maxHeight = 120) { + global $conf; + require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $result = 0; - $dir = $sdir .'/'. get_exdir($this->id,2) . $this->id ."/photos"; + + $dir = $sdir; + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) $dir .= '/'. get_exdir($this->id,2) . $this->id ."/photos"; dol_mkdir($dir); @@ -3227,8 +3231,8 @@ class Product extends CommonObject { include_once DOL_DOCUMENT_ROOT .'/core/lib/files.lib.php'; - $pdir = get_exdir($this->id,2) . $this->id ."/photos/"; - $dir = $sdir . '/'. $pdir; + $dir = $sdir; + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) $dir .= '/'. get_exdir($this->id,2) . $this->id ."/photos"; $nbphoto=0; @@ -3270,8 +3274,19 @@ class Product extends CommonObject include_once DOL_DOCUMENT_ROOT .'/core/lib/files.lib.php'; include_once DOL_DOCUMENT_ROOT .'/core/lib/images.lib.php'; - $pdir = get_exdir($this->id,2) . $this->id ."/photos/"; - $dir = $sdir . '/'. $pdir; + $dir = $sdir . '/'; + $pdir = '/'; + if (! empty($conf->global->PRODUCT_USE_OLD_PATH_FOR_PHOTO)) + { + $dir .= get_exdir($this->id,2) . $this->id ."/photos/"; + $pdir .= get_exdir($this->id,2) . $this->id ."/photos/"; + } + else + { + $dir .= $this->ref.'/'; + $pdir .= $this->ref.'/'; + } + $dirthumb = $dir.'thumbs/'; $pdirthumb = $pdir.'thumbs/'; diff --git a/htdocs/projet/class/project.class.php b/htdocs/projet/class/project.class.php index 26cdeec151c35b8b8f0d06da1c47c4420b0d9c8b..edd9d91facbadf7ddab44199f360b7d53f584d7b 100644 --- a/htdocs/projet/class/project.class.php +++ b/htdocs/projet/class/project.class.php @@ -768,7 +768,7 @@ class Project extends CommonObject if ($statut == 0) return $langs->trans($this->statuts_short[$statut]) . ' ' . img_picto($langs->trans($this->statuts_short[$statut]), 'statut0'); if ($statut == 1) - return $langs->trans($this->statuts_short[$statut]) . ' ' . img_picto($langs->trans($this->statuts_short[$statut]), 'statut1'); + return $langs->trans($this->statuts_short[$statut]) . ' ' . img_picto($langs->trans($this->statuts_short[$statut]), 'statut4'); if ($statut == 2) return img_picto($langs->trans($this->statuts_short[$statut]), 'statut6') . ' ' . $langs->trans($this->statuts_short[$statut]); } diff --git a/htdocs/projet/list.php b/htdocs/projet/list.php index 5b1da5792f5b5c3a21b4fe9f4aa527eb17e4b0cc..884d156c98a0e5e35864ec0c3fc9460f615cb7cc 100644 --- a/htdocs/projet/list.php +++ b/htdocs/projet/list.php @@ -364,7 +364,7 @@ if ($resql) // Status $projectstatic->statut = $objp->fk_statut; - print '<td align="right">'.$projectstatic->getLibStatut(3).'</td>'; + print '<td align="right">'.$projectstatic->getLibStatut(5).'</td>'; print "</tr>\n";