Merge branch 'develop' of git@github.com:Dolibarr/dolibarr.git into develop

This commit is contained in:
Florian HENRY 2015-02-07 20:32:54 +01:00
commit 5f68acfdd8
179 changed files with 3732 additions and 1771 deletions

1
.gitignore vendored
View File

@ -9,6 +9,7 @@ default.properties
.buildpath .buildpath
.gitmodules .gitmodules
dolibarr_install.log dolibarr_install.log
upgrade.log
doxygen_warnings.log doxygen_warnings.log
/.project /.project
.DS_Store .DS_Store

View File

@ -13,10 +13,25 @@ Issues are tracked at [Doliforge](https://doliforge.org/projects/dolibarr)
Code Code
---- ----
### Basic workflow
1. Fork the [GitHub repository](https://github.com/Dolibarr/dolibarr). 1. Fork the [GitHub repository](https://github.com/Dolibarr/dolibarr).
2. Clone your fork. 2. Clone your fork.
3. Commit and push your changes. 3. Choose a branch(See the Branches section below).
4. Make a pull request. 4. Commit and push your changes.
5. Make a pull request.
### Branches
Unless you're fixing a bug, all pull request should be made against the *develop* branch.
If you're fixing a bug, it is preferred that you cook your fix and pull request it
against the oldest version affected that's still supported.
We officially support versions N, N − 1 and N − 2 for N the latest version available.
Choose your base branch accordingly.
### General rules ### General rules
Please don't edit the ChangeLog file. A project manager will update it from your commit messages. Please don't edit the ChangeLog file. A project manager will update it from your commit messages.

View File

@ -1,13 +1,11 @@
-------------------------------------------------------------- --------------------------------------------------------------
English Dolibarr ChangeLog English Dolibarr ChangeLog
-------------------------------------------------------------- --------------------------------------------------------------
***** ChangeLog for 3.8 compared to 3.7.* *****
- New: Add Option to not change date on cloning project
- New: Add check list from table for extrafield type
***** ChangeLog for 3.8 compared to 3.7.* ***** ***** ChangeLog for 3.8 compared to 3.7.* *****
For users: For users:
- New: Add Option to not change date on cloning project
- New: Add check list from table for extrafield type
- New: Use new combobox. - New: Use new combobox.
- New: Add hidden option MAXTABS_IN_CARD. - New: Add hidden option MAXTABS_IN_CARD.
- Fix / Improve : [ bug #1747 ] Remove creation of batch 'Undefined' - Fix / Improve : [ bug #1747 ] Remove creation of batch 'Undefined'
@ -16,6 +14,7 @@ For users:
- Introduce option MAIN_HTML_TITLE to start to control format of html title content. - Introduce option MAIN_HTML_TITLE to start to control format of html title content.
- Add extrafields on bank account cards. - Add extrafields on bank account cards.
- Added delay between mails in Newsletter module - Added delay between mails in Newsletter module
- [ task #1793 ] Create new permission to restrict commercial agent margin to logged user
For translators: For translators:
- Update language files. - Update language files.

View File

@ -1,6 +1,6 @@
INSTALL INSTALL
------- -------
English: See README file. English: See README.md file.
French: Voir fichier README-FR. French: Voir fichier README-FR.md.

View File

@ -1,21 +1,16 @@
# DOLIBARR ERP & CRM # DOLIBARR ERP & CRM
## INTRODUCTION
Dolibarr ERP & CRM est un logiciel moderne pour gérer votre activité (société, association, auto-entrepreneurs, artisans). 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, ...). 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, ...).
![ScreenShot](http://www.dolibarr.org/images/dolibarr_screenshot1_640x480.png) ![ScreenShot](http://www.dolibarr.org/images/dolibarr_screenshot1_640x480.png)
--------------------------------
Documentation démarrage rapide
--------------------------------
1) Installer Dolibarr
2) Mettre à jour Dolibarr depuis une ancienne version ## LICENCE
3) Ce qui est nouveau dans cette version
4) Ce que peux faire Dolibarr Dolibarr est distribué sous les termes de la licence GNU General Public License v3+ ou supérieure.
5) Ce que ne peux pas faire Dolibarr (pas encore)
## INSTALLER DOLIBARR ## INSTALLER DOLIBARR

View File

@ -58,9 +58,9 @@ You can use a Web server and a supported database (MySQL recommended) to install
## UPGRADING ## UPGRADING
- Overwrite all old files from 'dolibarr' directory with files provided into the new version's package. - Overwrite all old files from 'dolibarr' directory with files provided into the new version's package.
- If you're upgrading from version x.y.z to x.y.w (only third number differs), there is no need to run any migration process - If you're upgrading from version x.y.z to x.y.w (only third number differs), there is no need to run any migration process.
- If you're upgrading from a beta version or from any version x.y.z to any other where x or y number differs, you must call the Dolibarr "install/" page in your browser (this should be done automatically at first dolibarr access) and follow the upgrade process. - If you're upgrading from a beta version or from any version x.y.z to any other where x or y number differs, you must call the Dolibarr "install/" page in your browser (this should be done automatically at first dolibarr access) and follow the upgrade process.
-
*Note: migration process can safely be done multiple times.* *Note: migration process can safely be done multiple times.*
## NEWS ## NEWS

View File

@ -42,7 +42,7 @@ if (!$user->admin)
$action = GETPOST('action', 'alpha'); $action = GETPOST('action', 'alpha');
// Other parameters ACCOUNTING_* // Other parameters ACCOUNTING_EXPORT_*
$list = array ( $list = array (
'ACCOUNTING_EXPORT_SEPARATORCSV', 'ACCOUNTING_EXPORT_SEPARATORCSV',
'ACCOUNTING_EXPORT_DATE', 'ACCOUNTING_EXPORT_DATE',
@ -114,20 +114,24 @@ print '</tr>';
$var = ! $var; $var = ! $var;
print '<tr ' . $bc[$var] . '>'; print '<tr ' . $bc[$var] . '>';
print "<td>" . $langs->trans("Selectmodelcsv") . "</td>"; print '<td width="50%">' . $langs->trans("Selectmodelcsv") . '</td>';
print "<td>"; if (! $conf->use_javascript_ajax)
print '<select class="flat" name="modelcsv" id="modelcsv">'; {
print '<option value="0"'; print '<td class="nowrap">';
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 0) { print $langs->trans("NotAvailableWhenAjaxDisabled");
print ' selected="selected"'; print "</td>";
} }
print '>' . $langs->trans("Modelcsv_normal") . '</option>'; else
print '<option value="1"'; {
if ($conf->global->ACCOUNTING_EXPORT_MODELCSV == 1) { print '<td>';
print ' selected="selected"'; $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 "</td></tr>";
print "</table>"; print "</table>";
@ -138,12 +142,13 @@ print "<br>\n";
*/ */
$num = count($list); $num = count($list);
if ($num) { if ($num)
{
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print '<td colspan="3">' . $langs->trans('OtherOptions') . '</td>'; print '<td colspan="3">' . $langs->trans('OtherOptions') . '</td>';
print "</tr>\n"; 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 ) { foreach ( $list as $key ) {
$var = ! $var; $var = ! $var;
@ -152,7 +157,7 @@ foreach ( $list as $key ) {
// Param // Param
$label = $langs->trans($key); $label = $langs->trans($key);
print '<td>' . $label . '</td>'; print '<td width="50%">' . $label . '</td>';
// Value // Value
print '<td>'; print '<td>';
@ -161,8 +166,10 @@ foreach ( $list as $key ) {
} }
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>'; print '</form>';
llxFooter(); llxFooter();

View File

@ -75,7 +75,7 @@ if ($action == 'delbookkeeping') {
setEventMessage($object->errors, 'errors'); setEventMessage($object->errors, 'errors');
} }
} }
} // export csv } // Export
else if ($action == 'export_csv') { else if ($action == 'export_csv') {
header('Content-Type: text/csv'); header('Content-Type: text/csv');
@ -160,7 +160,7 @@ else {
print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; print '<form name="add" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION['newtoken'] . '">';
print '<input type="hidden" name="action" value="export_csv">'; 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 '</form>';
print '<table class="noborder" width="100%">'; print '<table class="noborder" width="100%">';

View File

@ -4,7 +4,7 @@
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.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 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * 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 = "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 .= " 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 .= " FROM " . MAIN_DB_PREFIX . "bank as b";
$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account ba on b.fk_account=ba.rowid"; $sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as 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 . "bank_url as 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 .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid";
// To isolate the cash of the other accounts // To isolate the cash of the other accounts
$sql .= " WHERE ba.courant <> 2"; $sql .= " WHERE ba.courant <> 2";
$sql .= " AND ba.rowid=".$id_accountancy_journal; $sql .= " AND ba.rowid=".$id_accountancy_journal;
@ -176,6 +176,7 @@ if ($result) {
{ {
$tabtype[$obj->rowid] = $links[$key]['type']; $tabtype[$obj->rowid] = $links[$key]['type'];
if ($links[$key]['type'] == 'payment') if ($links[$key]['type'] == 'payment')
{ {
$paymentstatic->id = $links[$key]['url_id']; $paymentstatic->id = $links[$key]['url_id'];
@ -305,6 +306,7 @@ if ($result) {
/* /*
* Actions * Actions
* FIXME Action should be before any view
*/ */
// Write bookkeeping // Write bookkeeping
@ -447,18 +449,21 @@ if ($action == 'writeBookKeeping')
setEventMessage($langs->trans('Success'), 'mesgs'); setEventMessage($langs->trans('Success'), 'mesgs');
} }
} }
// export csv // Export
if ($action == 'export_csv') if ($action == 'export_csv')
{ {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$bank_journal = $conf->global->ACCOUNTING_BANK_JOURNAL;
header('Content-Type: text/csv'); header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=journal_banque.csv'); header('Content-Disposition: attachment;filename=journal_banque.csv');
$companystatic = new Client($db); $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 ) { foreach ( $tabpay as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
@ -466,23 +471,23 @@ if ($action == 'export_csv')
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
// Bank // Bank
print $date . $sep;
print $conf->global->ACCOUNTING_BANK_JOURNAL . $sep;
foreach ( $tabbq[$key] as $k => $mt ) { foreach ( $tabbq[$key] as $k => $mt ) {
print $date . $sep;
print $bank_journal . $sep;
print length_accountg(html_entity_decode($k)) . $sep; print length_accountg(html_entity_decode($k)) . $sep;
print $sep; print $sep;
print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt < 0 ? 'C' : 'D') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep; print $val["type_payment"] . $sep;
print $sep; print $val["ref"] . $sep;
}
print "\n"; print "\n";
}
// Third party // Third party
foreach ( $tabtp[$key] as $k => $mt ) { foreach ( $tabtp[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print $date . $sep; print $date . $sep;
print $conf->global->ACCOUNTING_BANK_JOURNAL . $sep; print $bank_journal . $sep;
if ($val["lib"] == '(SupplierInvoicePayment)') { if ($val["lib"] == '(SupplierInvoicePayment)') {
print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep;
} else { } else {
@ -492,12 +497,12 @@ if ($action == 'export_csv')
print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt < 0 ? 'D' : 'C') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $val["type_payment"] . $sep; print $val["type_payment"] . $sep;
print $sep; print $val["ref"] . $sep;
print "\n"; print "\n";
} }
} }
} }
} else // Modèle Export Classique } else // Model Classic Export
{ {
foreach ( $tabpay as $key => $val ) { foreach ( $tabpay as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
@ -505,24 +510,22 @@ if ($action == 'export_csv')
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
print '"' . $date . '"' . $sep;
print '"' . $val["type_payment"] . '"' . $sep;
// Bank // Bank
foreach ( $tabbq[$key] as $k => $mt ) { foreach ( $tabbq[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep;
print '"' . $val["type_payment"] . '"' . $sep;
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
print '"' . $langs->trans("Bank") . '"' . $sep; print '"' . $langs->trans("Bank") . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
}
print "\n"; print "\n";
}
// Third party // Third party
foreach ( $tabtp[$key] as $k => $mt ) { foreach ( $tabtp[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["type_payment"] . '"' . $sep; print '"' . $val["type_payment"] . '"' . $sep;
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
print '"' . $companystatic->name . '"' . $sep; print '"' . $companystatic->name . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $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); $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' => '')); 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();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writeBookKeeping();" />';
@ -632,5 +635,4 @@ else
// End of page // End of page
llxFooter(); llxFooter();
} }
$db->close(); $db->close();

View File

@ -4,7 +4,7 @@
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.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 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * 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 = "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 .= " 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 .= " FROM " . MAIN_DB_PREFIX . "bank as b";
$sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account ba on b.fk_account=ba.rowid"; $sql .= " JOIN " . MAIN_DB_PREFIX . "bank_account as 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 . "bank_url as 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 .= " LEFT JOIN " . MAIN_DB_PREFIX . "societe as soc on bu1.url_id=soc.rowid";
// Code opération type caisse // Code opération type caisse
$sql .= " WHERE ba.courant = 2"; $sql .= " WHERE ba.courant = 2";
@ -365,66 +365,68 @@ if ($action == 'writeBookKeeping')
setEventMessage($langs->trans('Success'), 'mesgs'); setEventMessage($langs->trans('Success'), 'mesgs');
} }
} }
// export csv // Export
if ($action == 'export_csv') { if ($action == 'export_csv') {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$cash_journal = $conf->global->ACCOUNTING_CASH_JOURNAL;
header('Content-Type: text/csv'); header('Content-Type: text/csv');
header('Content-Disposition:attachment;filename=journal_caisse.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 ) { foreach ( $tabpay as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
// Cash // Cash
print $date . $sep;
print $conf->global->ACCOUNTING_CASH_JOURNAL . $sep;
foreach ( $tabbq[$key] as $k => $mt ) { foreach ( $tabbq[$key] as $k => $mt ) {
print $date . $sep;
print $cash_journal . $sep;
print length_accountg(html_entity_decode($k)) . $sep; print length_accountg(html_entity_decode($k)) . $sep;
print $sep; print $sep;
print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt < 0 ? 'C' : 'D') . $sep;
print price($mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
} print $val["type_payment"] . $sep;
print utf8_decode($langs->trans("CashPayment")) . $sep;
print $val["ref"] . $sep; print $val["ref"] . $sep;
print "\n"; print "\n";
}
// Third party // Third party
foreach ( $tabtp[$key] as $k => $mt ) { foreach ( $tabtp[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print $date . $sep; print $date . $sep;
print $conf->global->ACCOUNTING_CASH_JOURNAL . $sep; print $cash_journal . $sep;
if ($obj->label == '(SupplierInvoicePayment)') { if ($val["lib"] == '(SupplierInvoicePayment)') {
print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep; print length_accountg($conf->global->ACCOUNTING_ACCOUNT_SUPPLIER) . $sep;
} else { } else {
print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep; print length_accountg($conf->global->ACCOUNTING_ACCOUNT_CUSTOMER) . $sep;
} }
print length_accounta(html_entity_decode($k)) . $sep; print length_accounta(html_entity_decode($k)) . $sep;
print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt < 0 ? 'D' : 'C') . $sep;
print price($mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print $langs->trans("ThirdParty") . $sep; print $val["type_payment"] . $sep;
print $val["ref"] . $sep; print $val["ref"] . $sep;
print "\n"; print "\n";
} }
} }
} }
} else // Modèle Export Classique } else // Model Classic Export
{ {
foreach ( $tabpay as $key => $val ) { foreach ( $tabpay as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep;
// Cash // Cash
foreach ( $tabbq[$key] as $k => $mt ) { foreach ( $tabbq[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep;
print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep; print '"' . length_accountg(html_entity_decode($k)) . '"' . $sep;
print '"' . $langs->trans("Cash") . '"' . $sep; print '"' . $langs->trans("Cash") . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
}
print "\n"; print "\n";
}
// Third party // Third party
foreach ( $tabtp[$key] as $k => $mt ) { foreach ( $tabtp[$key] as $k => $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); $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' => '')); 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();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writeBookKeeping();" />';

View File

@ -242,16 +242,19 @@ if ($action == 'writebookkeeping') {
$companystatic = new Fournisseur($db); $companystatic = new Fournisseur($db);
// export csv // Export
if ($action == 'export_csv') if ($action == 'export_csv')
{ {
$sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$purchase_journal = $conf->global->ACCOUNTING_PURCHASE_JOURNAL;
header('Content-Type: text/csv'); header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=journal_achats.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 ) { foreach ( $tabfac as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $date = dol_print_date($db->jdate($val["date"]), '%d%m%Y');
@ -263,7 +266,7 @@ if ($action == 'export_csv')
if ($mt) { if ($mt) {
print $date . $sep; print $date . $sep;
print $conf->global->ACCOUNTING_PURCHASE_JOURNAL . $sep; print $purchase_journal . $sep;
print length_accountg(html_entity_decode($k)) . $sep; print length_accountg(html_entity_decode($k)) . $sep;
print $sep; print $sep;
print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt < 0 ? 'C' : 'D') . $sep;
@ -275,11 +278,10 @@ if ($action == 'export_csv')
} }
// VAT // VAT
// var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print $date . $sep; print $date . $sep;
print $conf->global->ACCOUNTING_PURCHASE_JOURNAL . $sep; print $purchase_journal . $sep;
print length_accountg(html_entity_decode($k)) . $sep; print length_accountg(html_entity_decode($k)) . $sep;
print $sep; print $sep;
print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt < 0 ? 'C' : 'D') . $sep;
@ -289,20 +291,20 @@ if ($action == 'export_csv')
print "\n"; 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 ) { 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 length_accounta(html_entity_decode($k)) . $sep;
print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt < 0 ? 'D' : 'C') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print utf8_decode($companystatic->name) . $sep; print utf8_decode($companystatic->name) . $sep;
print $val["ref"]; print $val["ref"];
}
print "\n"; print "\n";
} }
} else // Modèle Export Classique }
} else // Model Classic Export
{ {
foreach ( $tabfac as $key => $val ) { foreach ( $tabfac as $key => $val ) {
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
@ -326,7 +328,6 @@ if ($action == 'export_csv')
} }
} }
// VAT // VAT
// var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
@ -340,9 +341,9 @@ if ($action == 'export_csv')
} }
// Third party // Third party
foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
print '"' . utf8_decode($companystatic->name) . '"' . $sep; print '"' . utf8_decode($companystatic->name) . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"' . $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); $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' => '')); 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();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />';
@ -433,7 +434,6 @@ if ($action == 'export_csv')
} }
} }
// VAT // VAT
// var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print "<tr " . $bc[$var] . " >"; print "<tr " . $bc[$var] . " >";
@ -448,13 +448,11 @@ if ($action == 'export_csv')
print "<tr " . $bc[$var] . ">"; print "<tr " . $bc[$var] . ">";
// Third party // Third party
foreach ( $tabttc[$key] as $k => $mt ) {
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
foreach ( $tabttc[$key] as $k => $mt ) {
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
print "<td>" . length_accounta($k); print "<td>" . length_accounta($k);
print "</td><td>" . $langs->trans("ThirdParty"); print "</td><td>" . $langs->trans("ThirdParty");
print ' (' . $companystatic->getNomUrl(0, 'supplier', 16) . ')'; print ' (' . $companystatic->getNomUrl(0, 'supplier', 16) . ')';

View File

@ -4,7 +4,7 @@
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2012 Regis Houssin <regis@dolibarr.fr>
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.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 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com> * Copyright (C) 2013-2014 Olivier Geffroy <jeff@jeffinfo.com>
* Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
@ -60,6 +60,8 @@ if ($user->societe_id > 0)
$action = GETPOST('action'); $action = GETPOST('action');
/* /*
* View * 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 .= " 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 . "facture as f ON f.rowid = fd.fk_facture";
$sql .= " JOIN " . MAIN_DB_PREFIX . "societe as s ON s.rowid = f.fk_soc"; $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 "; $sql .= " WHERE fd.fk_code_ventilation > 0 ";
if (! empty($conf->multicompany->enabled)) { if (! empty($conf->multicompany->enabled)) {
$sql .= " AND f.entity = " . $conf->entity; $sql .= " AND f.entity = " . $conf->entity;
@ -176,14 +178,18 @@ if ($result) {
/* /*
* Action * Action
* FIXME Action must be set before any view part
*/ */
// Bookkeeping Write // Bookkeeping Write
if ($action == 'writebookkeeping') { if ($action == 'writebookkeeping')
{
$now = dol_now(); $now = dol_now();
foreach ( $tabfac as $key => $val ) { foreach ($tabfac as $key => $val)
foreach ( $tabttc[$key] as $k => $mt ) { {
foreach ($tabttc[$key] as $k => $mt)
{
$bookkeeping = new BookKeeping($db); $bookkeeping = new BookKeeping($db);
$bookkeeping->doc_date = $val["date"]; $bookkeeping->doc_date = $val["date"];
$bookkeeping->doc_ref = $val["ref"]; $bookkeeping->doc_ref = $val["ref"];
@ -232,8 +238,10 @@ if ($action == 'writebookkeeping') {
// VAT // VAT
// var_dump($tabtva); // var_dump($tabtva);
foreach ( $tabtva[$key] as $k => $mt ) { foreach ($tabtva[$key] as $k => $mt)
if ($mt) { {
if ($mt)
{
$bookkeeping = new BookKeeping($db); $bookkeeping = new BookKeeping($db);
$bookkeeping->doc_date = $val["date"]; $bookkeeping->doc_date = $val["date"];
$bookkeeping->doc_ref = $val["ref"]; $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; $sep = $conf->global->ACCOUNTING_EXPORT_SEPARATORCSV;
$sell_journal = $conf->global->ACCOUNTING_SELL_JOURNAL;
header('Content-Type: text/csv'); header('Content-Type: text/csv');
header('Content-Disposition: attachment;filename=journal_ventes.csv'); header('Content-Disposition: attachment;filename=journal_ventes.csv');
$companystatic = new Client($db); $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 ) { foreach ( $tabfac as $key => $val ) {
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
@ -274,23 +287,23 @@ if ($action == 'export_csv') {
$date = dol_print_date($db->jdate($val["date"]), '%d%m%Y'); $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 ) { 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 length_accounta(html_entity_decode($k)) . $sep;
print ($mt < 0 ? 'C' : 'D') . $sep; print ($mt < 0 ? 'C' : 'D') . $sep;
print ($mt <= 0 ? price(- $mt) : $mt) . $sep; print ($mt <= 0 ? price(- $mt) : $mt) . $sep;
print utf8_decode($companystatic->name) . $sep; print utf8_decode($companystatic->name) . $sep;
}
print $val["ref"]; print $val["ref"];
print "\n"; print "\n";
}
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ( $tabht[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print $date . $sep; print $date . $sep;
print $conf->global->ACCOUNTING_SELL_JOURNAL . $sep; print $sell_journal . $sep;
print length_accountg(html_entity_decode($k)) . $sep; print length_accountg(html_entity_decode($k)) . $sep;
print $sep; print $sep;
print ($mt < 0 ? 'D' : 'C') . $sep; print ($mt < 0 ? 'D' : 'C') . $sep;
@ -300,11 +313,12 @@ if ($action == 'export_csv') {
print "\n"; print "\n";
} }
} }
// TVA // TVA
foreach ( $tabtva[$key] as $k => $mt ) { foreach ( $tabtva[$key] as $k => $mt ) {
if ($mt) { if ($mt) {
print $date . $sep; print $date . $sep;
print $conf->global->ACCOUNTING_SELL_JOURNAL . $sep; print $sell_journal . $sep;
print length_accountg(html_entity_decode($k)) . $sep; print length_accountg(html_entity_decode($k)) . $sep;
print $sep; print $sep;
print ($mt < 0 ? 'D' : 'C') . $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->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client']; $companystatic->client = $tabcompany[$key]['code_client'];
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $sep; print '"' . $val["ref"] . '"' . $sep;
foreach ( $tabttc[$key] as $k => $mt ) {
print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep; print '"' . length_accounta(html_entity_decode($k)) . '"' . $sep;
print '"' . utf8_decode($companystatic->name) . '"' . $sep; print '"' . utf8_decode($companystatic->name) . '"' . $sep;
print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep; print '"' . ($mt >= 0 ? price($mt) : '') . '"' . $sep;
print '"' . ($mt < 0 ? price(- $mt) : '') . '"'; print '"' . ($mt < 0 ? price(- $mt) : '') . '"';
}
print "\n"; print "\n";
}
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ($tabht[$key] as $k => $mt)
{
$accountingaccount = new AccountingAccount($db); $accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k); $accountingaccount->fetch(null, $k);
@ -350,8 +368,8 @@ if ($action == 'export_csv') {
} }
// VAT // VAT
// var_dump($tabtva); foreach ($tabtva[$key] as $k => $mt)
foreach ( $tabtva[$key] as $k => $mt ) { {
if ($mt) { if ($mt) {
print '"' . $date . '"' . $sep; print '"' . $date . '"' . $sep;
print '"' . $val["ref"] . '"' . $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); $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' => '')); 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();" />'; print '<input type="button" class="button" value="' . $langs->trans("WriteBookKeeping") . '" onclick="writebookkeeping();" />';
@ -423,7 +441,8 @@ if ($action == 'export_csv') {
$invoicestatic = new Facture($db); $invoicestatic = new Facture($db);
$companystatic = new Client($db); $companystatic = new Client($db);
foreach ( $tabfac as $key => $val ) { foreach ($tabfac as $key => $val)
{
$invoicestatic->id = $key; $invoicestatic->id = $key;
$invoicestatic->ref = $val["ref"]; $invoicestatic->ref = $val["ref"];
$invoicestatic->type = $val["type"]; $invoicestatic->type = $val["type"];
@ -431,12 +450,12 @@ if ($action == 'export_csv') {
$date = dol_print_date($db->jdate($val["date"]), 'day'); $date = dol_print_date($db->jdate($val["date"]), 'day');
print "<tr " . $bc[$var] . ">";
// Third party // Third party
foreach ($tabttc[$key] as $k => $mt)
{
print "<tr " . $bc[$var] . ">";
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
print "<td>" . $invoicestatic->getNomUrl(1) . "</td>"; print "<td>" . $invoicestatic->getNomUrl(1) . "</td>";
foreach ( $tabttc[$key] as $k => $mt ) {
$companystatic->id = $tabcompany[$key]['id']; $companystatic->id = $tabcompany[$key]['id'];
$companystatic->name = $tabcompany[$key]['name']; $companystatic->name = $tabcompany[$key]['name'];
$companystatic->client = $tabcompany[$key]['code_client']; $companystatic->client = $tabcompany[$key]['code_client'];
@ -449,7 +468,8 @@ if ($action == 'export_csv') {
print "</tr>"; print "</tr>";
// Product / Service // Product / Service
foreach ( $tabht[$key] as $k => $mt ) { foreach ($tabht[$key] as $k => $mt)
{
$accountingaccount = new AccountingAccount($db); $accountingaccount = new AccountingAccount($db);
$accountingaccount->fetch(null, $k); $accountingaccount->fetch(null, $k);
@ -466,8 +486,8 @@ if ($action == 'export_csv') {
} }
// VAT // VAT
// var_dump($tabtva); foreach ($tabtva[$key] as $k => $mt)
foreach ( $tabtva[$key] as $k => $mt ) { {
if ($mt) { if ($mt) {
print "<tr " . $bc[$var] . ">"; print "<tr " . $bc[$var] . ">";
print "<td>" . $date . "</td>"; print "<td>" . $date . "</td>";
@ -484,8 +504,9 @@ if ($action == 'export_csv') {
} }
print "</table>"; print "</table>";
// End of page
llxFooter();
} }
llxFooter();
$db->close(); $db->close();

View File

@ -1563,7 +1563,10 @@ class Adherent extends CommonObject
global $langs; global $langs;
$result=''; $result='';
$label=$langs->trans("ShowMember").': '.$this->ref; $label = '<u>' . $langs->trans("ShowMember") . '</u>';
$label.= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
if (! empty($this->firstname) || ! empty($this->lastname))
$label.= '<br><b>' . $langs->trans('Name') . ':</b> ' . $this->getFullName($langs);
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
if ($option == 'card') if ($option == 'card')

View File

@ -230,7 +230,7 @@ $sql.= ", entity";
$sql.= " FROM ".MAIN_DB_PREFIX."const"; $sql.= " FROM ".MAIN_DB_PREFIX."const";
$sql.= " WHERE entity IN (".$user->entity.",".$conf->entity.")"; $sql.= " WHERE entity IN (".$user->entity.",".$conf->entity.")";
if (empty($user->entity) && $debug) {} // to force for superadmin 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"; $sql.= " ORDER BY entity, name ASC";
dol_syslog("Const::listConstant", LOG_DEBUG); dol_syslog("Const::listConstant", LOG_DEBUG);
@ -280,7 +280,6 @@ if ($result)
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)
{ {
print '<input type="checkbox" class="flat checkboxfordelete" id="check_'.$i.'" name="const['.$i.'][check]" value="1">'; print '<input type="checkbox" class="flat checkboxfordelete" id="check_'.$i.'" name="const['.$i.'][check]" value="1">';
print ' &nbsp; ';
} }
else else
{ {

View File

@ -63,6 +63,7 @@ if ($action == 'update')
dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", $_POST["MAIN_DEFAULT_WORKING_HOURS"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_DEFAULT_WORKING_HOURS", $_POST["MAIN_DEFAULT_WORKING_HOURS"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_SHOW_LOGO", $_POST["MAIN_SHOW_LOGO"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_SHOW_LOGO", $_POST["MAIN_SHOW_LOGO"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_ACTIVATE_HTML5", $_POST["MAIN_ACTIVATE_HTML5"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_ACTIVATE_HTML5", $_POST["MAIN_ACTIVATE_HTML5"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_ACTIVATE_FILECACHE", $_POST["MAIN_ACTIVATE_FILECACHE"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", $_POST["MAIN_FIRSTNAME_NAME_POSITION"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_FIRSTNAME_NAME_POSITION", $_POST["MAIN_FIRSTNAME_NAME_POSITION"],'chaine',0,'',$conf->entity);
dolibarr_set_const($db, "MAIN_THEME", $_POST["main_theme"],'chaine',0,'',$conf->entity); dolibarr_set_const($db, "MAIN_THEME", $_POST["main_theme"],'chaine',0,'',$conf->entity);
@ -185,6 +186,16 @@ if ($action == 'edit') // Edit
print '</tr>'; print '</tr>';
} }
// Activate FileCache - Developement
if ($conf->global->MAIN_FEATURES_LEVEL == 2 || ! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
$var=!$var;
print '<tr '.$bc[$var].'><td width="35%">'.$langs->trans("EnableFileCache").'</td><td>';
print $form->selectyesno('MAIN_ACTIVATE_FILECACHE',$conf->global->MAIN_ACTIVATE_FILECACHE,1);
print '</td>';
print '<td width="20">&nbsp;</td>';
print '</tr>';
}
// Max size of lists // Max size of lists
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td><input class="flat" name="main_size_liste_limit" size="4" value="' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '"></td>'; print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td><input class="flat" name="main_size_liste_limit" size="4" value="' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '"></td>';
@ -373,6 +384,14 @@ else // Show
print "</tr>"; print "</tr>";
} }
// Activate FileCache - Developement
if ($conf->global->MAIN_FEATURES_LEVEL == 2 || ! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
$var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("EnableFileCache").'</td><td>' . yn($conf->global->MAIN_ACTIVATE_FILECACHE) . '</td>';
print '<td width="20">&nbsp;</td>';
print "</tr>";
}
$var=!$var; $var=!$var;
print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td>' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '</td>'; print '<tr '.$bc[$var].'><td>'.$langs->trans("DefaultMaxSizeList").'</td><td>' . $conf->global->MAIN_SIZE_LISTE_LIMIT . '</td>';
print '<td width="20">&nbsp;</td>'; print '<td width="20">&nbsp;</td>';

View File

@ -480,10 +480,10 @@ function backup_tables($outputfile, $tables='*')
if ($row[$j] == null and !is_string($row[$j])) { if ($row[$j] == null and !is_string($row[$j])) {
// IMPORTANT: if the field is NULL we set it NULL // IMPORTANT: if the field is NULL we set it NULL
$row[$j] = '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 // if it's an empty string, we set it as an empty string
$row[$j] = "''"; $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 // if it's a number, we return it as-is
// $row[$j] = $row[$j]; // $row[$j] = $row[$j];
} else { // else for all other cases we escape the value and put quotes around } else { // else for all other cases we escape the value and put quotes around

View File

@ -36,7 +36,6 @@ require_once DOL_DOCUMENT_ROOT.'/comm/action/class/cactioncomm.class.php';
require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/class/html.formfile.class.php';
if (! empty($conf->projet->enabled)) if (! empty($conf->projet->enabled))
{ {
require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
@ -541,6 +540,7 @@ $help_url='EN:Module_Agenda_En|FR:Module_Agenda|ES:M&omodulodulo_Agenda';
llxHeader('',$langs->trans("Agenda"),$help_url); llxHeader('',$langs->trans("Agenda"),$help_url);
$form = new Form($db); $form = new Form($db);
$formfile = new FormFile($db);
$formactions = new FormActions($db); $formactions = new FormActions($db);
if ($action == 'create') if ($action == 'create')
@ -1290,7 +1290,7 @@ if ($id > 0)
if (empty($conf->global->AGENDA_DISABLE_BUILDDOC)) if (empty($conf->global->AGENDA_DISABLE_BUILDDOC))
{ {
print '<div style="clear:both;">&nbsp;</div><div class="fichecenter"><div class="fichehalfleft">'; print '<div style="clear:both;">&nbsp;<br><br></div><div class="fichecenter"><div class="fichehalfleft">';
print '<a name="builddoc"></a>'; // ancre print '<a name="builddoc"></a>'; // ancre
/* /*

View File

@ -897,9 +897,11 @@ class ActionComm extends CommonObject
global $conf,$langs; global $conf,$langs;
$result=''; $result='';
$tooltip = '<u>' . $langs->trans('ShowAction'.$objp->code) . '</u>';
$tooltip .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->label;
$label = $this->label; $label = $this->label;
if (empty($label)) $label=$this->libelle; // For backward compatibility if (empty($label)) $label=$this->libelle; // For backward compatibility
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkclose = '" title="'.dol_escape_htmltag($tooltip, 1).'" class="classfortooltip">';
if ($option=='birthday') $lien = '<a '.($classname?'class="'.$classname.'" ':'').'href="'.DOL_URL_ROOT.'/contact/perso.php?id='.$this->id.$linkclose; if ($option=='birthday') $lien = '<a '.($classname?'class="'.$classname.'" ':'').'href="'.DOL_URL_ROOT.'/contact/perso.php?id='.$this->id.$linkclose;
else $lien = '<a '.($classname?'class="'.$classname.'" ':'').'href="'.DOL_URL_ROOT.'/comm/action/card.php?id='.$this->id.$linkclose; else $lien = '<a '.($classname?'class="'.$classname.'" ':'').'href="'.DOL_URL_ROOT.'/comm/action/card.php?id='.$this->id.$linkclose;
$lienfin='</a>'; $lienfin='</a>';

View File

@ -205,6 +205,8 @@ if ($action == 'show_day' || $action == 'show_week' || $action == 'show_month' |
$param.="&maxprint=".$maxprint; $param.="&maxprint=".$maxprint;
$prev = dol_get_first_day_week($day, $month, $year); $prev = dol_get_first_day_week($day, $month, $year);
//print "day=".$day." month=".$month." year=".$year;
//var_dump($prev); exit;
$prev_year = $prev['prev_year']; $prev_year = $prev['prev_year'];
$prev_month = $prev['prev_month']; $prev_month = $prev['prev_month'];
$prev_day = $prev['prev_day']; $prev_day = $prev['prev_day'];
@ -223,6 +225,7 @@ $next_day = $next['day'];
// Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1) // Define firstdaytoshow and lastdaytoshow (warning: lastdaytoshow is last second to show + 1)
$firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year); $firstdaytoshow=dol_mktime(0,0,0,$first_month,$first_day,$first_year);
$lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd'); $lastdaytoshow=dol_time_plus_duree($firstdaytoshow, 7, 'd');
//print $firstday.'-'.$first_month.'-'.$first_year;
//print dol_print_date($firstdaytoshow,'dayhour'); //print dol_print_date($firstdaytoshow,'dayhour');
//print dol_print_date($lastdaytoshow,'dayhour'); //print dol_print_date($lastdaytoshow,'dayhour');
@ -534,12 +537,16 @@ echo '<input type="hidden" name="newdate" id="newdate">' ;
echo '</form>'; echo '</form>';
// Table : // Line header with list of days
//print "begin_d=".$begin_d." end_d=".$end_d;
echo '<table width="100%" class="nocellnopadd cal_month">'; echo '<table width="100%" class="nocellnopadd cal_month">';
echo '<tr class="liste_titre">'; echo '<tr class="liste_titre">';
echo '<td></td>'; echo '<td></td>';
$i=0; $i=0; // 0 = sunday,
while ($i < 7) while ($i < 7)
{ {
if (($i + 1) < $begin_d || ($i + 1) > $end_d) if (($i + 1) < $begin_d || ($i + 1) > $end_d)
@ -679,7 +686,7 @@ foreach ($usernames as $username)
// Lopp on each day of week // Lopp on each day of week
$i = 0; $i = 0;
for ($iter_day = 0; $iter_day < 7; $iter_day++) for ($iter_day = 0; $iter_day < 8; $iter_day++)
{ {
if (($i + 1) < $begin_d || ($i + 1) > $end_d) if (($i + 1) < $begin_d || ($i + 1) > $end_d)
{ {

View File

@ -501,8 +501,11 @@ if ($id > 0)
{ {
$propal_static = new Propal($db); $propal_static = new Propal($db);
$sql = "SELECT s.nom, s.rowid, p.rowid as propalid, p.fk_statut, p.total_ht, p.ref, p.remise, "; $sql = "SELECT s.nom, s.rowid, p.rowid as propalid, p.fk_statut, p.total_ht";
$sql.= " p.datep as dp, p.fin_validite as datelimite"; $sql.= ", p.tva as total_tva";
$sql.= ", p.total as total_ttc";
$sql.= ", p.ref, p.ref_client, p.remise";
$sql.= ", p.datep as dp, p.fin_validite as datelimite";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as p, ".MAIN_DB_PREFIX."c_propalst as c"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."propal as p, ".MAIN_DB_PREFIX."c_propalst as c";
$sql.= " WHERE p.fk_soc = s.rowid AND p.fk_statut = c.id"; $sql.= " WHERE p.fk_soc = s.rowid AND p.fk_statut = c.id";
$sql.= " AND s.rowid = ".$object->id; $sql.= " AND s.rowid = ".$object->id;
@ -535,6 +538,10 @@ if ($id > 0)
print '<td class="nowrap">'; print '<td class="nowrap">';
$propal_static->id = $objp->propalid; $propal_static->id = $objp->propalid;
$propal_static->ref = $objp->ref; $propal_static->ref = $objp->ref;
$propal_static->ref_client = $objp->ref_client;
$propal_static->total_ht = $objp->total_ht;
$propal_static->total_tva = $objp->total_tva;
$propal_static->total_ttc = $objp->total_ttc;
print $propal_static->getNomUrl(1); print $propal_static->getNomUrl(1);
if ( ($db->jdate($objp->dp) < ($now - $conf->propal->cloture->warning_delay)) && $objp->fk_statut == 1 ) { if ( ($db->jdate($objp->dp) < ($now - $conf->propal->cloture->warning_delay)) && $objp->fk_statut == 1 ) {
print " ".img_warning(); print " ".img_warning();
@ -561,9 +568,12 @@ if ($id > 0)
{ {
$commande_static=new Commande($db); $commande_static=new Commande($db);
$sql = "SELECT s.nom, s.rowid,"; $sql = "SELECT s.nom, s.rowid";
$sql.= " c.rowid as cid, c.total_ht, c.ref, c.fk_statut, c.facture,"; $sql.= ", c.rowid as cid, c.total_ht";
$sql.= " c.date_commande as dc"; $sql.= ", c.tva as total_tva";
$sql.= ", c.total_ttc";
$sql.= ", c.ref, c.ref_client, c.fk_statut, c.facture";
$sql.= ", c.date_commande as dc";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande as c"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."commande as c";
$sql.= " WHERE c.fk_soc = s.rowid "; $sql.= " WHERE c.fk_soc = s.rowid ";
$sql.= " AND s.rowid = ".$object->id; $sql.= " AND s.rowid = ".$object->id;
@ -612,6 +622,10 @@ if ($id > 0)
print '<td class="nowrap">'; print '<td class="nowrap">';
$commande_static->id = $objp->cid; $commande_static->id = $objp->cid;
$commande_static->ref = $objp->ref; $commande_static->ref = $objp->ref;
$commande_static->ref_client=$objp->ref_client;
$commande_static->total_ht = $objp->total_ht;
$commande_static->total_tva = $objp->total_tva;
$commande_static->total_ttc = $objp->total_ttc;
print $commande_static->getNomUrl(1); print $commande_static->getNomUrl(1);
print '</td><td align="right" width="80">'.dol_print_date($db->jdate($objp->dc),'day')."</td>\n"; print '</td><td align="right" width="80">'.dol_print_date($db->jdate($objp->dc),'day')."</td>\n";
print '<td align="right" style="min-width: 60px">'.price($objp->total_ht).'</td>'; print '<td align="right" style="min-width: 60px">'.price($objp->total_ht).'</td>';
@ -750,15 +764,18 @@ if ($id > 0)
{ {
$facturestatic = new Facture($db); $facturestatic = new Facture($db);
$sql = 'SELECT f.rowid as facid, f.facnumber, f.type, f.amount, f.total, f.total_ttc,'; $sql = 'SELECT f.rowid as facid, f.facnumber, f.type, f.amount';
$sql.= ' f.datef as df, f.datec as dc, f.paye as paye, f.fk_statut as statut,'; $sql.= ', f.total';
$sql.= ' s.nom, s.rowid as socid,'; $sql.= ', f.tva as total_tva';
$sql.= ' SUM(pf.amount) as am'; $sql.= ', f.total_ttc';
$sql.= ', f.datef as df, f.datec as dc, f.paye as paye, f.fk_statut as statut';
$sql.= ', s.nom, s.rowid as socid';
$sql.= ', SUM(pf.amount) as am';
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON f.rowid=pf.fk_facture'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'paiement_facture as pf ON f.rowid=pf.fk_facture';
$sql.= " WHERE f.fk_soc = s.rowid AND s.rowid = ".$object->id; $sql.= " WHERE f.fk_soc = s.rowid AND s.rowid = ".$object->id;
$sql.= " AND f.entity = ".$conf->entity; $sql.= " AND f.entity = ".$conf->entity;
$sql.= ' GROUP BY f.rowid, f.facnumber, f.type, f.amount, f.total, f.total_ttc,'; $sql.= ' GROUP BY f.rowid, f.facnumber, f.type, f.amount, f.total, f.tva, f.total_ttc,';
$sql.= ' f.datef, f.datec, f.paye, f.fk_statut,'; $sql.= ' f.datef, f.datec, f.paye, f.fk_statut,';
$sql.= ' s.nom, s.rowid'; $sql.= ' s.nom, s.rowid';
$sql.= " ORDER BY f.datef DESC, f.datec DESC"; $sql.= " ORDER BY f.datef DESC, f.datec DESC";
@ -790,6 +807,9 @@ if ($id > 0)
$facturestatic->id = $objp->facid; $facturestatic->id = $objp->facid;
$facturestatic->ref = $objp->facnumber; $facturestatic->ref = $objp->facnumber;
$facturestatic->type = $objp->type; $facturestatic->type = $objp->type;
$facturestatic->total_ht = $objp->total;
$facturestatic->total_tva = $objp->total_tva;
$facturestatic->total_ttc = $objp->total_ttc;
print $facturestatic->getNomUrl(1); print $facturestatic->getNomUrl(1);
print '</td>'; print '</td>';
if ($objp->df > 0) if ($objp->df > 0)

View File

@ -142,7 +142,7 @@ if (! empty($conf->ficheinter->enabled) && $user->rights->ficheinter->lire)
*/ */
if (! empty($conf->propal->enabled) && $user->rights->propal->lire) if (! empty($conf->propal->enabled) && $user->rights->propal->lire)
{ {
$sql = "SELECT p.rowid, p.ref, p.ref_client, p.total_ht, s.rowid as socid, s.nom as name, s.client, s.canvas"; $sql = "SELECT p.rowid, p.ref, p.ref_client, p.total_ht, p.tva as total_tva, p.total as total_ttc, s.rowid as socid, s.nom as name, s.client, s.canvas";
$sql.= " FROM ".MAIN_DB_PREFIX."propal as p"; $sql.= " FROM ".MAIN_DB_PREFIX."propal as p";
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -173,6 +173,9 @@ if (! empty($conf->propal->enabled) && $user->rights->propal->lire)
$propalstatic->id=$obj->rowid; $propalstatic->id=$obj->rowid;
$propalstatic->ref=$obj->ref; $propalstatic->ref=$obj->ref;
$propalstatic->ref_client=$obj->ref_client; $propalstatic->ref_client=$obj->ref_client;
$propalstatic->total_ht = $obj->total_ht;
$propalstatic->total_tva = $obj->total_tva;
$propalstatic->total_ttc = $obj->total_ttc;
print $propalstatic->getNomUrl(1); print $propalstatic->getNomUrl(1);
print '</td>'; print '</td>';
print '<td class="nowrap">'; print '<td class="nowrap">';
@ -210,7 +213,7 @@ if (! empty($conf->commande->enabled) && $user->rights->commande->lire)
{ {
$langs->load("orders"); $langs->load("orders");
$sql = "SELECT c.rowid, c.ref, c.ref_client, c.total_ttc, s.rowid as socid, s.nom as name, s.client, s.canvas"; $sql = "SELECT c.rowid, c.ref, c.ref_client, c.total_ht, c.tva as total_tva, c.total_ttc, s.rowid as socid, s.nom as name, s.client, s.canvas";
$sql.= " FROM ".MAIN_DB_PREFIX."commande as c"; $sql.= " FROM ".MAIN_DB_PREFIX."commande as c";
$sql.= ", ".MAIN_DB_PREFIX."societe as s"; $sql.= ", ".MAIN_DB_PREFIX."societe as s";
if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -241,6 +244,9 @@ if (! empty($conf->commande->enabled) && $user->rights->commande->lire)
$orderstatic->id=$obj->rowid; $orderstatic->id=$obj->rowid;
$orderstatic->ref=$obj->ref; $orderstatic->ref=$obj->ref;
$orderstatic->ref_client=$obj->ref_client; $orderstatic->ref_client=$obj->ref_client;
$orderstatic->total_ht = $obj->total_ht;
$orderstatic->total_tva = $obj->total_tva;
$orderstatic->total_ttc = $obj->total_ttc;
print $orderstatic->getNomUrl(1); print $orderstatic->getNomUrl(1);
print '</td>'; print '</td>';
print '<td class="nowrap">'; print '<td class="nowrap">';
@ -469,7 +475,7 @@ if (! empty($conf->propal->enabled) && $user->rights->propal->lire)
{ {
$langs->load("propal"); $langs->load("propal");
$sql = "SELECT s.nom as name, s.rowid, p.rowid as propalid, p.total as total_ttc, p.total_ht, p.ref, p.ref_client, p.fk_statut, p.datep as dp, p.fin_validite as dfv"; $sql = "SELECT s.nom as name, s.rowid, p.rowid as propalid, p.total as total_ttc, p.total_ht, p.tva as total_tva, p.ref, p.ref_client, p.fk_statut, p.datep as dp, p.fin_validite as dfv";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
$sql.= ", ".MAIN_DB_PREFIX."propal as p"; $sql.= ", ".MAIN_DB_PREFIX."propal as p";
if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (! $user->rights->societe->client->voir && ! $socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -506,6 +512,9 @@ if (! empty($conf->propal->enabled) && $user->rights->propal->lire)
$propalstatic->id=$obj->propalid; $propalstatic->id=$obj->propalid;
$propalstatic->ref=$obj->ref; $propalstatic->ref=$obj->ref;
$propalstatic->ref_client=$obj->ref_client; $propalstatic->ref_client=$obj->ref_client;
$propalstatic->total_ht = $obj->total_ht;
$propalstatic->total_tva = $obj->total_tva;
$propalstatic->total_ttc = $obj->total_ttc;
print '<table class="nobordernopadding"><tr class="nocellnopadd">'; print '<table class="nobordernopadding"><tr class="nocellnopadd">';
print '<td class="nobordernopadding nowrap">'; print '<td class="nobordernopadding nowrap">';

View File

@ -2608,9 +2608,17 @@ class Propal extends CommonObject
global $langs; global $langs;
$result=''; $result='';
$label=$langs->trans("ShowPropal").': '.$this->ref; $label = '<u>' . $langs->trans("ShowPropal") . '</u>';
if (! empty($this->ref))
$label.= '<br><b>'.$langs->trans('Ref').':</b> '.$this->ref;
if (! empty($this->ref_client)) if (! empty($this->ref_client))
$label.= '<br>'.$langs->trans('RefCustomer').': '.$this->ref_client; $label.= '<br><b>'.$langs->trans('RefCustomer').':</b> '.$this->ref_client;
if (! empty($this->total_ht))
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
if (! empty($this->total_tva))
$label.= '<br><b>' . $langs->trans('TVA') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
if (! empty($this->total_ttc))
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
if ($option == '') { if ($option == '') {
$lien = '<a href="'.DOL_URL_ROOT.'/comm/propal.php?id='.$this->id. $get_params .$linkclose; $lien = '<a href="'.DOL_URL_ROOT.'/comm/propal.php?id='.$this->id. $get_params .$linkclose;
@ -2649,7 +2657,8 @@ class Propal extends CommonObject
$sql.= ' pt.total_ht, pt.total_tva, pt.total_ttc, pt.fk_product_fournisseur_price as fk_fournprice, pt.buy_price_ht as pa_ht, pt.special_code, pt.localtax1_tx, pt.localtax2_tx,'; $sql.= ' pt.total_ht, pt.total_tva, pt.total_ttc, pt.fk_product_fournisseur_price as fk_fournprice, pt.buy_price_ht as pa_ht, pt.special_code, pt.localtax1_tx, pt.localtax2_tx,';
$sql.= ' pt.date_start, pt.date_end, pt.product_type, pt.rang, pt.fk_parent_line,'; $sql.= ' pt.date_start, pt.date_end, pt.product_type, pt.rang, pt.fk_parent_line,';
$sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid,'; $sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid,';
$sql.= ' p.description as product_desc'; $sql.= ' p.description as product_desc,';
$sql.= ' p.entity';
$sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt'; $sql.= ' FROM '.MAIN_DB_PREFIX.'propaldet as pt';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pt.fk_product=p.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON pt.fk_product=p.rowid';
$sql.= ' WHERE pt.fk_propal = '.$this->id; $sql.= ' WHERE pt.fk_propal = '.$this->id;
@ -2673,6 +2682,7 @@ class Propal extends CommonObject
$this->lines[$i]->description = $obj->description; $this->lines[$i]->description = $obj->description;
$this->lines[$i]->fk_product = $obj->fk_product; $this->lines[$i]->fk_product = $obj->fk_product;
$this->lines[$i]->ref = $obj->ref; $this->lines[$i]->ref = $obj->ref;
$this->lines[$i]->entity = $obj->entity; // Product entity
$this->lines[$i]->product_label = $obj->product_label; $this->lines[$i]->product_label = $obj->product_label;
$this->lines[$i]->product_desc = $obj->product_desc; $this->lines[$i]->product_desc = $obj->product_desc;
$this->lines[$i]->fk_product_type = $obj->fk_product_type; // deprecated $this->lines[$i]->fk_product_type = $obj->fk_product_type; // deprecated

View File

@ -51,8 +51,8 @@ foreach($linkedObjectBlock as $object)
{ {
$var=!$var; $var=!$var;
?> ?>
<tr <?php echo $bc[$var]; ?> ><td> <tr <?php echo $bc[$var]; ?> >
<a href="<?php echo DOL_URL_ROOT.'/comm/propal.php?id='.$object->id ?>"><?php echo img_object($langs->trans("ShowPropal"),"propal").' '.$object->ref; ?></a></td> <td><?php echo $object->getNomUrl(1); ?></td>
<td><?php echo $object->ref_client; ?></td> <td><?php echo $object->ref_client; ?></td>
<td align="center"><?php echo dol_print_date($object->date,'day'); ?></td> <td align="center"><?php echo dol_print_date($object->date,'day'); ?></td>
<td align="right"><?php <td align="right"><?php

View File

@ -2888,9 +2888,17 @@ class Commande extends CommonOrder
if ($short) return $url; if ($short) return $url;
$picto = 'order'; $picto = 'order';
$label=$langs->trans("ShowOrder").': '.$this->ref; $label = '<u>' . $langs->trans("ShowOrder") . '</u>';
if (! empty($this->ref))
$label .= '<br><b>' . $langs->trans('Ref') . ':</b> ' . $this->ref;
if (! empty($this->ref_client)) if (! empty($this->ref_client))
$label.= '<br>'.$langs->trans('RefCustomer').': '.$this->ref_client; $label.= '<br><b>' . $langs->trans('RefCustomer') . ':</b> ' . $this->ref_client;
if (! empty($this->total_ht))
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
if (! empty($this->total_tva))
$label.= '<br><b>' . $langs->trans('TVA') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
if (! empty($this->total_ttc))
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
$linkstart = '<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $linkstart = '<a href="'.$url.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
$linkend='</a>'; $linkend='</a>';
@ -3099,7 +3107,8 @@ class Commande extends CommonOrder
$sql.= ' l.total_ht, l.total_tva, l.total_ttc, l.fk_product_fournisseur_price as fk_fournprice, l.buy_price_ht as pa_ht, l.localtax1_tx, l.localtax2_tx,'; $sql.= ' l.total_ht, l.total_tva, l.total_ttc, l.fk_product_fournisseur_price as fk_fournprice, l.buy_price_ht as pa_ht, l.localtax1_tx, l.localtax2_tx,';
$sql.= ' l.date_start, l.date_end,'; $sql.= ' l.date_start, l.date_end,';
$sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, '; $sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid, ';
$sql.= ' p.description as product_desc, p.stock as stock_reel'; $sql.= ' p.description as product_desc, p.stock as stock_reel,';
$sql.= ' p.entity';
$sql.= ' FROM '.MAIN_DB_PREFIX.'commandedet as l'; $sql.= ' FROM '.MAIN_DB_PREFIX.'commandedet as l';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid';
$sql.= ' WHERE l.fk_commande = '.$this->id; $sql.= ' WHERE l.fk_commande = '.$this->id;
@ -3121,6 +3130,7 @@ class Commande extends CommonOrder
$this->lines[$i]->description = $obj->description; $this->lines[$i]->description = $obj->description;
$this->lines[$i]->fk_product = $obj->fk_product; $this->lines[$i]->fk_product = $obj->fk_product;
$this->lines[$i]->ref = $obj->ref; $this->lines[$i]->ref = $obj->ref;
$this->lines[$i]->entity = $obj->entity; // Product entity
$this->lines[$i]->product_label = $obj->product_label; $this->lines[$i]->product_label = $obj->product_label;
$this->lines[$i]->product_desc = $obj->product_desc; $this->lines[$i]->product_desc = $obj->product_desc;
$this->lines[$i]->fk_product_type = $obj->fk_product_type; $this->lines[$i]->fk_product_type = $obj->fk_product_type;

View File

@ -6,6 +6,7 @@
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr> * Copyright (C) 2013 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2013 Cédric Salvador <csalvador@gpcsolutions.fr>
* Copyright (C) 2015 Frederic 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
@ -109,7 +110,7 @@ $companystatic = new Societe($db);
$help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes"; $help_url="EN:Module_Customers_Orders|FR:Module_Commandes_Clients|ES:Módulo_Pedidos_de_clientes";
llxHeader('',$langs->trans("Orders"),$help_url); llxHeader('',$langs->trans("Orders"),$help_url);
$sql = 'SELECT s.nom as name, s.rowid as socid, s.client, c.rowid, c.ref, c.total_ht, c.ref_client,'; $sql = 'SELECT s.nom as name, s.rowid as socid, s.client, s.code_client, c.rowid, c.ref, c.total_ht, c.tva as total_tva, c.total_ttc, c.ref_client,';
$sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison, c.fk_statut, c.facture as facturee'; $sql.= ' c.date_valid, c.date_commande, c.note_private, c.date_livraison, c.fk_statut, c.facture as facturee';
$sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s'; $sql.= ' FROM '.MAIN_DB_PREFIX.'societe as s';
$sql.= ', '.MAIN_DB_PREFIX.'commande as c'; $sql.= ', '.MAIN_DB_PREFIX.'commande as c';
@ -323,6 +324,7 @@ if ($resql)
$var=true; $var=true;
$total=0; $total=0;
$subtotal=0; $subtotal=0;
$productstat_cache=array();
$generic_commande = new Commande($db); $generic_commande = new Commande($db);
$generic_product = new Product($db); $generic_product = new Product($db);
@ -334,6 +336,10 @@ if ($resql)
$generic_commande->id=$objp->rowid; $generic_commande->id=$objp->rowid;
$generic_commande->ref=$objp->ref; $generic_commande->ref=$objp->ref;
$generic_commande->ref_client = $objp->ref_client;
$generic_commande->total_ht = $objp->total_ht;
$generic_commande->total_tva = $objp->total_tva;
$generic_commande->total_ttc = $objp->total_ttc;
$generic_commande->lines=array(); $generic_commande->lines=array();
$generic_commande->getLinesArray(); $generic_commande->getLinesArray();
@ -351,17 +357,32 @@ if ($resql)
if ($generic_commande->lines[$lig]->product_type==0) { if ($generic_commande->lines[$lig]->product_type==0) {
$nbprod++; // order contains real products $nbprod++; // order contains real products
$generic_product->id = $generic_commande->lines[$lig]->fk_product; $generic_product->id = $generic_commande->lines[$lig]->fk_product;
$generic_product->load_stock(); if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product])) {
$generic_product->load_stock(true);
$productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'] = $generic_product->stock_reel;
} else {
$generic_product->stock_reel = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stock_reel'];
}
// stock order and stock order_supplier // stock order and stock order_supplier
$stock_order=0; $stock_order=0;
$stock_order_supplier=0; $stock_order_supplier=0;
if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) { if (! empty($conf->global->STOCK_CALCULATE_ON_SHIPMENT)) {
if (! empty($conf->commande->enabled)) { if (! empty($conf->commande->enabled)) {
$generic_product->load_stats_commande(0,'1,2'); if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'])) {
$generic_product->load_stats_commande(0,'1,2',true);
$productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'] = $generic_product->stats_commande['qty'];
} else {
$generic_product->stats_commande['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_customer'];
}
$stock_order=$generic_product->stats_commande['qty']; $stock_order=$generic_product->stats_commande['qty'];
} }
if (! empty($conf->fournisseur->enabled)) { if (! empty($conf->fournisseur->enabled)) {
$generic_product->load_stats_commande_fournisseur(0,'3'); if (empty($productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'])) {
$generic_product->load_stats_commande_fournisseur(0,'3',true);
$productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'] = $generic_product->stats_commande_fournisseur['qty'];
} else {
$generic_product->stats_commande_fournisseur['qty'] = $productstat_cache[$generic_commande->lines[$lig]->fk_product]['stats_order_supplier'];
}
$stock_order_supplier=$generic_product->stats_commande_fournisseur['qty']; $stock_order_supplier=$generic_product->stats_commande_fournisseur['qty'];
} }
} }
@ -421,6 +442,7 @@ if ($resql)
// Company // Company
$companystatic->id=$objp->socid; $companystatic->id=$objp->socid;
$companystatic->code_client = $objp->code_client;
$companystatic->name=$objp->name; $companystatic->name=$objp->name;
$companystatic->client=$objp->client; $companystatic->client=$objp->client;
print '<td>'; print '<td>';

View File

@ -36,6 +36,7 @@ print_titre($langs->trans('RelatedOrders'));
<table class="noborder allwidth"> <table class="noborder allwidth">
<tr class="liste_titre"> <tr class="liste_titre">
<td><?php echo $langs->trans("Ref"); ?></td> <td><?php echo $langs->trans("Ref"); ?></td>
<td align="center"><?php echo $langs->trans("RefCustomer"); ?></td>
<td align="center"><?php echo $langs->trans("Date"); ?></td> <td align="center"><?php echo $langs->trans("Date"); ?></td>
<td align="right"><?php echo $langs->trans("AmountHTShort"); ?></td> <td align="right"><?php echo $langs->trans("AmountHTShort"); ?></td>
<td align="right"><?php echo $langs->trans("Status"); ?></td> <td align="right"><?php echo $langs->trans("Status"); ?></td>
@ -47,8 +48,9 @@ foreach($linkedObjectBlock as $object)
{ {
$var=!$var; $var=!$var;
?> ?>
<tr <?php echo $GLOBALS['bc'][$var]; ?> ><td> <tr <?php echo $GLOBALS['bc'][$var]; ?> >
<a href="<?php echo DOL_URL_ROOT.'/commande/card.php?id='.$object->id ?>"><?php echo img_object($langs->trans("ShowOrder"),"order").' '.$object->ref; ?></a></td> <td><?php echo $object->getNomUrl(1); ?></td>
<td align="center"><?php echo $object->ref_client; ?></td>
<td align="center"><?php echo dol_print_date($object->date,'day'); ?></td> <td align="center"><?php echo dol_print_date($object->date,'day'); ?></td>
<td align="right"><?php <td align="right"><?php
if ($user->rights->commande->lire) { if ($user->rights->commande->lire) {
@ -62,7 +64,7 @@ foreach($linkedObjectBlock as $object)
?> ?>
<tr class="liste_total"> <tr class="liste_total">
<td align="left" colspan="2"><?php echo $langs->trans('TotalHT'); ?></td> <td align="left" colspan="3"><?php echo $langs->trans('TotalHT'); ?></td>
<td align="right"><?php <td align="right"><?php
if ($user->rights->commande->lire) { if ($user->rights->commande->lire) {
echo price($total); echo price($total);

View File

@ -935,7 +935,12 @@ class Account extends CommonObject
global $langs; global $langs;
$result=''; $result='';
$linkclose = '" title="'.dol_escape_htmltag($this->label, 1).'" class="classfortooltip">'; $label = '<u>' . $langs->trans("ShowAccount") . '</u>';
if (! empty($this->label))
$label .= '<br><b>' . $langs->trans('Account') . ':</b> ' . $this->label;
if (! empty($this->number))
$label .= '<br><b>' . $langs->trans('AccountNumber') . ':</b> ' . $this->number;
$linkclose = '" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
if (empty($mode)) if (empty($mode))
{ {
@ -948,7 +953,7 @@ class Account extends CommonObject
$lienfin='</a>'; $lienfin='</a>';
} }
if ($withpicto) $result.=($lien.img_object($langs->trans("ShowAccount").': '.$this->label, 'account', 'class="classfortooltip"').$lienfin.' '); if ($withpicto) $result.=($lien.img_object($label, 'account', 'class="classfortooltip"').$lienfin.' ');
$result.=$lien.$this->label.$lienfin; $result.=$lien.$this->label.$lienfin;
return $result; return $result;
} }

View File

@ -391,10 +391,9 @@ else
} }
} }
elseif ($links[$key]['type']=='company') { elseif ($links[$key]['type']=='company') {
print '<a href="'.DOL_URL_ROOT.'/societe/soc.php?socid='.$links[$key]['url_id'].'">'; $societestatic->id = $links[$key]['url_id'];
print img_object($langs->trans('ShowCustomer'),'company').' '; $societestatic->name = $links[$key]['label'];
print dol_trunc($links[$key]['label'],24); print $societestatic->getNomUrl(1, 'company', 24);
print '</a>';
$newline=0; $newline=0;
} }
elseif ($links[$key]['type']=='member') { elseif ($links[$key]['type']=='member') {

View File

@ -858,7 +858,17 @@ class Facture extends CommonInvoice
if ($this->type == self::TYPE_CREDIT_NOTE) $picto.='a'; // Credit note if ($this->type == self::TYPE_CREDIT_NOTE) $picto.='a'; // Credit note
if ($this->type == self::TYPE_DEPOSIT) $picto.='d'; // Deposit invoice if ($this->type == self::TYPE_DEPOSIT) $picto.='d'; // Deposit invoice
$label=$langs->trans("ShowInvoice").': '.$this->ref; $label = '<u>' . $langs->trans("ShowInvoice") . '</u>';
if (! empty($this->ref))
$label .= '<br><b>'.$langs->trans('Ref') . ':</b> ' . $this->ref;
if (! empty($this->ref_client))
$label .= '<br><b>' . $langs->trans('RefCustomer') . ':</b> ' . $this->ref_client;
if (! empty($this->total_ht))
$label.= '<br><b>' . $langs->trans('AmountHT') . ':</b> ' . price($this->total_ht, 0, $langs, 0, -1, -1, $conf->currency);
if (! empty($this->total_tva))
$label.= '<br><b>' . $langs->trans('TVA') . ':</b> ' . price($this->total_tva, 0, $langs, 0, -1, -1, $conf->currency);
if (! empty($this->total_ttc))
$label.= '<br><b>' . $langs->trans('AmountTTC') . ':</b> ' . price($this->total_ttc, 0, $langs, 0, -1, -1, $conf->currency);
if ($this->type == self::TYPE_REPLACEMENT) $label=$langs->transnoentitiesnoconv("ShowInvoiceReplace").': '.$this->ref; if ($this->type == self::TYPE_REPLACEMENT) $label=$langs->transnoentitiesnoconv("ShowInvoiceReplace").': '.$this->ref;
if ($this->type == self::TYPE_CREDIT_NOTE) $label=$langs->transnoentitiesnoconv("ShowInvoiceAvoir").': '.$this->ref; if ($this->type == self::TYPE_CREDIT_NOTE) $label=$langs->transnoentitiesnoconv("ShowInvoiceAvoir").': '.$this->ref;
if ($this->type == self::TYPE_DEPOSIT) $label=$langs->transnoentitiesnoconv("ShowInvoiceDeposit").': '.$this->ref; if ($this->type == self::TYPE_DEPOSIT) $label=$langs->transnoentitiesnoconv("ShowInvoiceDeposit").': '.$this->ref;
@ -1681,8 +1691,8 @@ class Facture extends CommonInvoice
return 0; return 0;
} }
if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->facture->creer)) if ((empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->facture->creer))
|| (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && ! empty($user->rights->facture->invoice_advance->validate))) || (! empty($conf->global->MAIN_USE_ADVANCED_PERMS) && empty($user->rights->facture->invoice_advance->validate)))
{ {
$this->error='Permission denied'; $this->error='Permission denied';
dol_syslog(get_class($this)."::validate ".$this->error, LOG_ERR); dol_syslog(get_class($this)."::validate ".$this->error, LOG_ERR);
@ -3329,7 +3339,8 @@ class Facture extends CommonInvoice
$sql.= ' l.total_ht, l.total_tva, l.total_ttc, l.fk_product_fournisseur_price as fk_fournprice, l.buy_price_ht as pa_ht,'; $sql.= ' l.total_ht, l.total_tva, l.total_ttc, l.fk_product_fournisseur_price as fk_fournprice, l.buy_price_ht as pa_ht,';
$sql.= ' l.date_start, l.date_end,'; $sql.= ' l.date_start, l.date_end,';
$sql.= ' p.ref as product_ref, p.fk_product_type, p.label as product_label,'; $sql.= ' p.ref as product_ref, p.fk_product_type, p.label as product_label,';
$sql.= ' p.description as product_desc'; $sql.= ' p.description as product_desc,';
$sql.= ' p.entity';
$sql.= ' FROM '.MAIN_DB_PREFIX.'facturedet as l'; $sql.= ' FROM '.MAIN_DB_PREFIX.'facturedet as l';
$sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid'; $sql.= ' LEFT JOIN '.MAIN_DB_PREFIX.'product as p ON l.fk_product=p.rowid';
$sql.= ' WHERE l.fk_facture = '.$this->id; $sql.= ' WHERE l.fk_facture = '.$this->id;
@ -3352,6 +3363,7 @@ class Facture extends CommonInvoice
$this->lines[$i]->description = $obj->description; $this->lines[$i]->description = $obj->description;
$this->lines[$i]->fk_product = $obj->fk_product; $this->lines[$i]->fk_product = $obj->fk_product;
$this->lines[$i]->ref = $obj->product_ref; $this->lines[$i]->ref = $obj->product_ref;
$this->lines[$i]->entity = $obj->entity; // Product entity
$this->lines[$i]->product_label = $obj->product_label; $this->lines[$i]->product_label = $obj->product_label;
$this->lines[$i]->product_desc = $obj->product_desc; $this->lines[$i]->product_desc = $obj->product_desc;
$this->lines[$i]->fk_product_type = $obj->fk_product_type; $this->lines[$i]->fk_product_type = $obj->fk_product_type;

View File

@ -36,6 +36,7 @@ else print_titre($langs->trans("RelatedBill"));
<table class="noborder allwidth"> <table class="noborder allwidth">
<tr class="liste_titre"> <tr class="liste_titre">
<td><?php echo $langs->trans("Ref"); ?></td> <td><?php echo $langs->trans("Ref"); ?></td>
<td align="center"><?php echo $langs->trans("RefCustomer"); ?></td>
<td align="center"><?php echo $langs->trans("Date"); ?></td> <td align="center"><?php echo $langs->trans("Date"); ?></td>
<td align="right"><?php echo $langs->trans("AmountHTShort"); ?></td> <td align="right"><?php echo $langs->trans("AmountHTShort"); ?></td>
<td align="right"><?php echo $langs->trans("Status"); ?></td> <td align="right"><?php echo $langs->trans("Status"); ?></td>
@ -47,8 +48,9 @@ foreach($linkedObjectBlock as $object)
{ {
$var=!$var; $var=!$var;
?> ?>
<tr <?php echo $GLOBALS['bc'][$var]; ?> ><td> <tr <?php echo $GLOBALS['bc'][$var]; ?> >
<a href="<?php echo DOL_URL_ROOT.'/compta/facture.php?facid='.$object->id ?>"><?php echo img_object($langs->trans("ShowBill"),"bill").' '.$object->ref; ?></a></td> <td><?php echo $object->getNomUrl(1); ?></td>
<td align="center"><?php echo $object->ref_client; ?></td>
<td align="center"><?php echo dol_print_date($object->date,'day'); ?></td> <td align="center"><?php echo dol_print_date($object->date,'day'); ?></td>
<td align="right"><?php <td align="right"><?php
if ($user->rights->facture->lire) { if ($user->rights->facture->lire) {
@ -61,7 +63,7 @@ foreach($linkedObjectBlock as $object)
} }
?> ?>
<tr class="liste_total"> <tr class="liste_total">
<td align="left" colspan="2"><?php echo $langs->trans("TotalHT"); ?></td> <td align="left" colspan="3"><?php echo $langs->trans("TotalHT"); ?></td>
<td align="right"><?php <td align="right"><?php
if ($user->rights->facture->lire) { if ($user->rights->facture->lire) {
echo price($total); echo price($total);

View File

@ -144,8 +144,12 @@ if (! empty($conf->don->enabled) && $user->rights->don->lire)
*/ */
if (! empty($conf->facture->enabled) && $user->rights->facture->lire) if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
{ {
$sql = "SELECT f.facnumber, f.rowid, f.total_ttc, f.type,"; $sql = "SELECT f.facnumber";
$sql.= " s.nom as name, s.rowid as socid"; $sql.= ", f.rowid, f.total as total_ht, f.tva as total_tva, f.total_ttc";
$sql.= ", f.type";
$sql.= ", s.nom as name";
$sql.= ", s.rowid as socid";
$sql.= ",s.code_client";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", sc.fk_soc, sc.fk_user "; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", sc.fk_soc, sc.fk_user ";
$sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -180,6 +184,9 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
print '<tr '.$bc[$var].'><td class="nowrap">'; print '<tr '.$bc[$var].'><td class="nowrap">';
$facturestatic->ref=$obj->facnumber; $facturestatic->ref=$obj->facnumber;
$facturestatic->id=$obj->rowid; $facturestatic->id=$obj->rowid;
$facturestatic->total_ht=$obj->total_ht;
$facturestatic->total_tva=$obj->total_tva;
$facturestatic->total_ttc=$obj->total_ttc;
$facturestatic->type=$obj->type; $facturestatic->type=$obj->type;
print $facturestatic->getNomUrl(1,''); print $facturestatic->getNomUrl(1,'');
print '</td>'; print '</td>';
@ -187,6 +194,8 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
$companystatic->id=$obj->socid; $companystatic->id=$obj->socid;
$companystatic->name=$obj->name; $companystatic->name=$obj->name;
$companystatic->client = 1; $companystatic->client = 1;
$companystatic->code_client = $obj->code_client;
$companystatic->code_fournisseur = $obj->code_fournisseur;
print $companystatic->getNomUrl(1,'',16); print $companystatic->getNomUrl(1,'',16);
print '</td>'; print '</td>';
print '<td align="right" class="nowrap">'.price($obj->total_ttc).'</td>'; print '<td align="right" class="nowrap">'.price($obj->total_ttc).'</td>';
@ -218,8 +227,10 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
*/ */
if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire) if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture->lire)
{ {
$sql = "SELECT f.ref, f.rowid, f.total_ttc, f.type,"; $sql = "SELECT f.ref, f.rowid, f.total_ht, f.tva as total_tva, f.total_ttc, f.type";
$sql.= " s.nom as name, s.rowid as socid"; $sql.= ", s.nom as name";
$sql.= ", s.rowid as socid";
$sql.= ", s.code_fournisseur";
$sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn as f, ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE s.rowid = f.fk_soc AND f.fk_statut = 0"; $sql.= " WHERE s.rowid = f.fk_soc AND f.fk_statut = 0";
@ -249,14 +260,19 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
print '<tr '.$bc[$var].'><td class="nowrap">'; print '<tr '.$bc[$var].'><td class="nowrap">';
$facturesupplierstatic->ref=$obj->ref; $facturesupplierstatic->ref=$obj->ref;
$facturesupplierstatic->id=$obj->rowid; $facturesupplierstatic->id=$obj->rowid;
$facturesupplierstatic->total_ht=$obj->total_ht;
$facturesupplierstatic->total_tva=$obj->total_tva;
$facturesupplierstatic->total_ttc=$obj->total_ttc;
$facturesupplierstatic->type=$obj->type; $facturesupplierstatic->type=$obj->type;
print $facturesupplierstatic->getNomUrl(1,'',16); print $facturesupplierstatic->getNomUrl(1,'',16);
print '</td>'; print '</td>';
print '<td>'; print '<td>';
$companystatic->id=$obj->socid; $companystatic->id=$obj->socid;
$companystatic->name=$obj->name; $companystatic->name=$obj->name;
$companystatic->client=1; $companystatic->fournisseur = 1;
print $companystatic->getNomUrl(1,'',16); $companystatic->code_client = $obj->code_client;
$companystatic->code_fournisseur = $obj->code_fournisseur;
print $companystatic->getNomUrl(1,'supplier',16);
print '</td>'; print '</td>';
print '<td align="right">'.price($obj->total_ttc).'</td>'; print '<td align="right">'.price($obj->total_ttc).'</td>';
print '</tr>'; print '</tr>';
@ -292,10 +308,12 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
$langs->load("boxes"); $langs->load("boxes");
$facstatic=new Facture($db); $facstatic=new Facture($db);
$sql = "SELECT f.rowid, f.facnumber, f.fk_statut, f.type, f.total, f.total_ttc, f.paye, f.tms,"; $sql = "SELECT f.rowid, f.facnumber, f.fk_statut, f.type, f.total as total_ht, f.tva as total_tva, f.total_ttc, f.paye, f.tms";
$sql.= " f.date_lim_reglement as datelimite,"; $sql.= ", f.date_lim_reglement as datelimite";
$sql.= " s.nom as name, s.rowid as socid,"; $sql.= ", s.nom as name";
$sql.= " sum(pf.amount) as am"; $sql.= ", s.rowid as socid";
$sql.= ", s.code_client";
$sql.= ", sum(pf.amount) as am";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf on f.rowid=pf.fk_facture"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf on f.rowid=pf.fk_facture";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -335,6 +353,9 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
print '<td width="110" class="nobordernopadding nowrap">'; print '<td width="110" class="nobordernopadding nowrap">';
$facturestatic->ref=$obj->facnumber; $facturestatic->ref=$obj->facnumber;
$facturestatic->id=$obj->rowid; $facturestatic->id=$obj->rowid;
$facturestatic->total_ht=$obj->total_ht;
$facturestatic->total_tva=$obj->total_tva;
$facturestatic->total_ttc=$obj->total_ttc;
$facturestatic->type=$obj->type; $facturestatic->type=$obj->type;
print $facturestatic->getNomUrl(1,''); print $facturestatic->getNomUrl(1,'');
print '</td>'; print '</td>';
@ -353,9 +374,11 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
$thirdpartystatic->id=$obj->socid; $thirdpartystatic->id=$obj->socid;
$thirdpartystatic->name=$obj->name; $thirdpartystatic->name=$obj->name;
$thirdpartystatic->client=1; $thirdpartystatic->client=1;
$thirdpartystatic->code_client = $obj->code_client;
$thirdpartystatic->code_fournisseur = $obj->code_fournisseur;
print $thirdpartystatic->getNomUrl(1,'customer',44); print $thirdpartystatic->getNomUrl(1,'customer',44);
print '</td>'; print '</td>';
if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total).'</td>'; if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>';
print '<td align="right">'.price($obj->total_ttc).'</td>'; print '<td align="right">'.price($obj->total_ttc).'</td>';
print '<td align="right">'.dol_print_date($db->jdate($obj->tms),'day').'</td>'; print '<td align="right">'.dol_print_date($db->jdate($obj->tms),'day').'</td>';
print '<td>'.$facstatic->LibStatut($obj->paye,$obj->fk_statut,3,$obj->am).'</td>'; print '<td>'.$facstatic->LibStatut($obj->paye,$obj->fk_statut,3,$obj->am).'</td>';
@ -391,8 +414,10 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
$langs->load("boxes"); $langs->load("boxes");
$facstatic=new FactureFournisseur($db); $facstatic=new FactureFournisseur($db);
$sql = "SELECT ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_ttc, ff.tms, ff.paye"; $sql = "SELECT ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_tva, ff.total_ttc, ff.tms, ff.paye";
$sql.= ", s.nom as name, s.rowid as socid"; $sql.= ", s.nom as name";
$sql.= ", s.rowid as socid";
$sql.= ", s.code_fournisseur";
$sql.= ", SUM(pf.amount) as am"; $sql.= ", SUM(pf.amount) as am";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as ff"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as ff";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf on ff.rowid=pf.fk_facturefourn"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf on ff.rowid=pf.fk_facturefourn";
@ -401,7 +426,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
$sql.= " AND ff.entity = ".$conf->entity; $sql.= " AND ff.entity = ".$conf->entity;
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
if ($socid) $sql.= " AND ff.fk_soc = ".$socid; if ($socid) $sql.= " AND ff.fk_soc = ".$socid;
$sql.= " GROUP BY ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_ttc, ff.tms, ff.paye, s.nom, s.rowid"; $sql.= " GROUP BY ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.tva, ff.total_ttc, ff.tms, ff.paye, s.nom, s.rowid";
$sql.= " ORDER BY ff.tms DESC "; $sql.= " ORDER BY ff.tms DESC ";
$sql.= $db->plimit($max, 0); $sql.= $db->plimit($max, 0);
@ -428,12 +453,17 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
print '<tr '.$bc[$var].'><td>'; print '<tr '.$bc[$var].'><td>';
$facstatic->ref=$obj->ref; $facstatic->ref=$obj->ref;
$facstatic->id = $obj->rowid; $facstatic->id = $obj->rowid;
$facstatic->total_ht = $obj->total_ht;
$facstatic->total_tva = $obj->total_tva;
$facstatic->total_ttc = $obj->total_ttc;
print $facstatic->getNomUrl(1,''); print $facstatic->getNomUrl(1,'');
print '</td>'; print '</td>';
print '<td>'; print '<td>';
$thirdpartystatic->id=$obj->socid; $thirdpartystatic->id=$obj->socid;
$thirdpartystatic->name=$obj->name; $thirdpartystatic->name=$obj->name;
$thirdpartystatic->fournisseur=1; $thirdpartystatic->fournisseur=1;
$thirdpartystatic->code_client = $obj->code_client;
$thirdpartystatic->code_fournisseur = $obj->code_fournisseur;
print $thirdpartystatic->getNomUrl(1,'supplier',44); print $thirdpartystatic->getNomUrl(1,'supplier',44);
print '</td>'; print '</td>';
if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>'; if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>';
@ -612,9 +642,11 @@ if (! empty($conf->facture->enabled) && ! empty($conf->commande->enabled) && $us
$commandestatic=new Commande($db); $commandestatic=new Commande($db);
$langs->load("orders"); $langs->load("orders");
$sql = "SELECT sum(f.total) as tot_fht, sum(f.total_ttc) as tot_fttc,"; $sql = "SELECT sum(f.total) as tot_fht, sum(f.total_ttc) as tot_fttc";
$sql.= " s.nom as name, s.rowid as socid,"; $sql.= ", s.nom as name";
$sql.= " c.rowid, c.ref, c.facture, c.fk_statut, c.total_ht, c.total_ttc"; $sql.= ", s.rowid as socid";
$sql.= ", s.code_client";
$sql.= ", c.rowid, c.ref, c.facture, c.fk_statut, c.total_ht, c.tva as total_tva, c.total_ttc";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= ", ".MAIN_DB_PREFIX."commande as c"; $sql.= ", ".MAIN_DB_PREFIX."commande as c";
@ -677,6 +709,8 @@ if (! empty($conf->facture->enabled) && ! empty($conf->commande->enabled) && $us
$societestatic->id=$obj->socid; $societestatic->id=$obj->socid;
$societestatic->name=$obj->name; $societestatic->name=$obj->name;
$societestatic->client=1; $societestatic->client=1;
$societestatic->code_client = $obj->code_client;
$societestatic->code_fournisseur = $obj->code_fournisseur;
print $societestatic->getNomUrl(1,'customer',44); print $societestatic->getNomUrl(1,'customer',44);
print '</td>'; print '</td>';
if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>'; if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>';
@ -715,10 +749,12 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
{ {
$facstatic=new Facture($db); $facstatic=new Facture($db);
$sql = "SELECT f.rowid, f.facnumber, f.fk_statut, f.datef, f.type, f.total, f.total_ttc, f.paye, f.tms,"; $sql = "SELECT f.rowid, f.facnumber, f.fk_statut, f.datef, f.type, f.total as total_ht, f.tva as total_tva, f.total_ttc, f.paye, f.tms";
$sql.= " f.date_lim_reglement as datelimite,"; $sql.= ", f.date_lim_reglement as datelimite";
$sql.= " s.nom as name, s.rowid as socid,"; $sql.= ", s.nom as name";
$sql.= " sum(pf.amount) as am"; $sql.= ", s.rowid as socid";
$sql.= ", s.code_client";
$sql.= ", sum(pf.amount) as am";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf on f.rowid=pf.fk_facture"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiement_facture as pf on f.rowid=pf.fk_facture";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -758,6 +794,9 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
print '<td width="110" class="nobordernopadding nowrap">'; print '<td width="110" class="nobordernopadding nowrap">';
$facturestatic->ref=$obj->facnumber; $facturestatic->ref=$obj->facnumber;
$facturestatic->id=$obj->rowid; $facturestatic->id=$obj->rowid;
$facturestatic->total_ht=$obj->total_ht;
$facturestatic->total_tva=$obj->total_tva;
$facturestatic->total_ttc=$obj->total_ttc;
$facturestatic->type=$obj->type; $facturestatic->type=$obj->type;
print $facturestatic->getNomUrl(1,''); print $facturestatic->getNomUrl(1,'');
print '</td>'; print '</td>';
@ -776,9 +815,11 @@ if (! empty($conf->facture->enabled) && $user->rights->facture->lire)
$societestatic->id=$obj->socid; $societestatic->id=$obj->socid;
$societestatic->name=$obj->name; $societestatic->name=$obj->name;
$societestatic->client=1; $societestatic->client=1;
$societestatic->code_client = $obj->code_client;
$societestatic->code_fournisseur = $obj->code_fournisseur;
print $societestatic->getNomUrl(1,'customer',44); print $societestatic->getNomUrl(1,'customer',44);
print '</td>'; print '</td>';
if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total).'</td>'; if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>';
print '<td align="right">'.price($obj->total_ttc).'</td>'; print '<td align="right">'.price($obj->total_ttc).'</td>';
print '<td align="right">'.price($obj->am).'</td>'; print '<td align="right">'.price($obj->am).'</td>';
print '<td>'.$facstatic->LibStatut($obj->paye,$obj->fk_statut,3,$obj->am).'</td>'; print '<td>'.$facstatic->LibStatut($obj->paye,$obj->fk_statut,3,$obj->am).'</td>';
@ -820,9 +861,12 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
{ {
$facstatic=new FactureFournisseur($db); $facstatic=new FactureFournisseur($db);
$sql = "SELECT ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_ttc, ff.paye,"; $sql = "SELECT ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_tva, ff.total_ttc, ff.paye";
$sql.= " s.nom as name, s.rowid as socid,"; $sql.= ", s.nom as name";
$sql.= " sum(pf.amount) as am"; $sql.= ", s.rowid as socid";
$sql.= ", s.code_client";
$sql.= ", s.code_fournisseur";
$sql.= ", sum(pf.amount) as am";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as ff"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s, ".MAIN_DB_PREFIX."facture_fourn as ff";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf on ff.rowid=pf.fk_facturefourn"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."paiementfourn_facturefourn as pf on ff.rowid=pf.fk_facturefourn";
if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$socid) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -832,7 +876,7 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
$sql.= " AND ff.fk_statut = 1"; $sql.= " AND ff.fk_statut = 1";
if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id; if (!$user->rights->societe->client->voir && !$socid) $sql.= " AND s.rowid = sc.fk_soc AND sc.fk_user = ".$user->id;
if ($socid) $sql.= " AND ff.fk_soc = ".$socid; if ($socid) $sql.= " AND ff.fk_soc = ".$socid;
$sql.= " GROUP BY ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.total_ttc, ff.paye,"; $sql.= " GROUP BY ff.rowid, ff.ref, ff.fk_statut, ff.libelle, ff.total_ht, ff.tva, ff.total_ttc, ff.paye,";
$sql.= " s.nom, s.rowid"; $sql.= " s.nom, s.rowid";
$resql=$db->query($sql); $resql=$db->query($sql);
@ -860,11 +904,16 @@ if (! empty($conf->fournisseur->enabled) && $user->rights->fournisseur->facture-
print '<tr '.$bc[$var].'><td>'; print '<tr '.$bc[$var].'><td>';
$facstatic->ref=$obj->ref; $facstatic->ref=$obj->ref;
$facstatic->id = $obj->rowid; $facstatic->id = $obj->rowid;
$facstatic->total_ht = $obj->total_ht;
$facstatic->total_tva = $obj->total_tva;
$facstatic->total_ttc = $obj->total_ttc;
print $facstatic->getNomUrl(1,''); print $facstatic->getNomUrl(1,'');
print '</td>'; print '</td>';
$societestatic->id=$obj->socid; $societestatic->id=$obj->socid;
$societestatic->name=$obj->name; $societestatic->name=$obj->name;
$societestatic->client=0; $societestatic->client=0;
$societestatic->code_client = $obj->code_client;
$societestatic->code_fournisseur = $obj->code_fournisseur;
print '<td>'.$societestatic->getNomUrl(1, 'supplier', 44).'</td>'; print '<td>'.$societestatic->getNomUrl(1, 'supplier', 44).'</td>';
if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>'; if (! empty($conf->global->MAIN_SHOW_HT_ON_SUMMARY)) print '<td align="right">'.price($obj->total_ht).'</td>';
print '<td align="right">'.price($obj->total_ttc).'</td>'; print '<td align="right">'.price($obj->total_ttc).'</td>';

View File

@ -887,7 +887,8 @@ class Contact extends CommonObject
global $langs; global $langs;
$result=''; $result='';
$label = $langs->trans("ShowContact").': '.$this->getFullName($langs); $label = '<u>' . $langs->trans("ShowContact") . '</u>';
$label.= '<br><b>' . $langs->trans("Name") . ':</b> '.$this->getFullName($langs);
$lien = '<a href="'.DOL_URL_ROOT.'/contact/card.php?id='.$this->id.$moreparam.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">'; $lien = '<a href="'.DOL_URL_ROOT.'/contact/card.php?id='.$this->id.$moreparam.'" title="'.dol_escape_htmltag($label, 1).'" class="classfortooltip">';
$lienfin='</a>'; $lienfin='</a>';

View File

@ -0,0 +1,159 @@
<?php
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2003 Jean-Louis Bergamo <jlb@j1b.org>
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Philippe Grand <philippe.grand@atoo-net.com>
*
* 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
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/**
* \file htdocs/contrat/admin/contract_extrafields.php
* \ingroup contrat
* \brief Page to setup extra fields of contract
*/
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/contract.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
$langs->load("companies");
$langs->load("admin");
$langs->load("contracts");
$extrafields = new ExtraFields($db);
$form = new Form($db);
// List of supported format
$tmptype2label=ExtraFields::$type2label;
$type2label=array('');
foreach ($tmptype2label as $key => $val) $type2label[$key]=$langs->trans($val);
$action=GETPOST('action', 'alpha');
$attrname=GETPOST('attrname', 'alpha');
$elementtype='contratdet'; //Must be the $element of the class that manage extrafield
if (!$user->admin) accessforbidden();
/*
* Actions
*/
require DOL_DOCUMENT_ROOT.'/core/actions_extrafields.inc.php';
/*
* View
*/
llxHeader();
$linkback='<a href="'.DOL_URL_ROOT.'/admin/modules.php">'.$langs->trans("BackToModuleList").'</a>';
print_fiche_titre($langs->trans("ContractsSetup"),$linkback,'setup');
print '<br>';
$head=contract_admin_prepare_head();
dol_fiche_head($head, 'attributeslines', $langs->trans("Contracts"), 0, 'contract');
$textobject = $langs->transnoentitiesnoconv('Contracts');
print $langs->trans("DefineHereComplementaryAttributes",$textobject).'<br>'."\n";
print '<br>';
// Load attribute_label
$extrafields->fetch_name_optionals_label($elementtype);
print "<table summary=\"listofattributes\" class=\"noborder\" width=\"100%\">";
print '<tr class="liste_titre">';
print '<td align="center">'.$langs->trans("Position").'</td>';
print '<td>'.$langs->trans("Label").'</td>';
print '<td>'.$langs->trans("AttributeCode").'</td>';
print '<td>'.$langs->trans("Type").'</td>';
print '<td align="right">'.$langs->trans("Size").'</td>';
print '<td align="center">'.$langs->trans("Unique").'</td>';
print '<td align="center">'.$langs->trans("Required").'</td>';
print '<td width="80">&nbsp;</td>';
print "</tr>\n";
$var=True;
foreach($extrafields->attribute_type as $key => $value)
{
$var=!$var;
print "<tr ".$bc[$var].">";
print "<td>".$extrafields->attribute_pos[$key]."</td>\n";
print "<td>".$extrafields->attribute_label[$key]."</td>\n";
print "<td>".$key."</td>\n";
print "<td>".$type2label[$extrafields->attribute_type[$key]]."</td>\n";
print '<td align="right">'.$extrafields->attribute_size[$key]."</td>\n";
print '<td align="center">'.yn($extrafields->attribute_unique[$key])."</td>\n";
print '<td align="center">'.yn($extrafields->attribute_required[$key])."</td>\n";
print '<td align="right"><a href="'.$_SERVER["PHP_SELF"].'?action=edit&attrname='.$key.'">'.img_edit().'</a>';
print "&nbsp; <a href=\"".$_SERVER["PHP_SELF"]."?action=delete&attrname=$key\">".img_delete()."</a></td>\n";
print "</tr>";
// $i++;
}
print "</table>";
dol_fiche_end();
// Buttons
if ($action != 'create' && $action != 'edit')
{
print '<div class="tabsAction">';
print "<a class=\"butAction\" href=\"".$_SERVER["PHP_SELF"]."?action=create\">".$langs->trans("NewAttribute")."</a>";
print "</div>";
}
/* ************************************************************************** */
/* */
/* Creation d'un champ optionnel
/* */
/* ************************************************************************** */
if ($action == 'create')
{
print "<br>";
print_titre($langs->trans('NewAttribute'));
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_add.tpl.php';
}
/* ************************************************************************** */
/* */
/* Edition d'un champ optionnel */
/* */
/* ************************************************************************** */
if ($action == 'edit' && ! empty($attrname))
{
print "<br>";
print_titre($langs->trans("FieldEdition", $attrname));
require DOL_DOCUMENT_ROOT.'/core/tpl/admin_extrafields_edit.tpl.php';
}
llxFooter();
$db->close();

View File

@ -84,6 +84,10 @@ if ($id > 0 || ! empty($ref)) {
// fetch optionals attributes and labels // fetch optionals attributes and labels
$extralabels = $extrafields->fetch_name_optionals_label($object->table_element); $extralabels = $extrafields->fetch_name_optionals_label($object->table_element);
// fetch optionals attributes lines and labels
$extrafieldsline = new ExtraFields($db);
$extralabelslines=$extrafieldsline->fetch_name_optionals_label($object->table_element_line);
$permissionnote=$user->rights->contrat->creer; // Used by the include of actions_setnotes.inc.php $permissionnote=$user->rights->contrat->creer; // Used by the include of actions_setnotes.inc.php
@ -408,6 +412,18 @@ else if ($action == 'addline' && $user->rights->contrat->creer)
$error++; $error++;
} }
// Extrafields
$extrafieldsline = new ExtraFields($db);
$extralabelsline = $extrafieldsline->fetch_name_optionals_label($object->table_element_line);
$array_option = $extrafieldsline->getOptionalsFromPost($extralabelsline, $predef);
// Unset extrafield
if (is_array($extralabelsline)) {
// Get extra fields
foreach ($extralabelsline as $key => $value) {
unset($_POST["options_" . $key]);
}
}
if (! $error) if (! $error)
{ {
// Clean parameters // Clean parameters
@ -520,7 +536,8 @@ else if ($action == 'addline' && $user->rights->contrat->creer)
$pu_ttc, $pu_ttc,
$info_bits, $info_bits,
$fk_fournprice, $fk_fournprice,
$pa_ht $pa_ht,
$array_option
); );
} }
@ -617,6 +634,12 @@ else if ($action == 'updateligne' && $user->rights->contrat->creer && ! GETPOST(
$objectline->fk_fournprice=$fk_fournprice; $objectline->fk_fournprice=$fk_fournprice;
$objectline->pa_ht=$pa_ht; $objectline->pa_ht=$pa_ht;
// Extrafields
$extrafieldsline = new ExtraFields($db);
$extralabelsline = $extrafieldsline->fetch_name_optionals_label($objectline->table_element);
$array_option = $extrafieldsline->getOptionalsFromPost($extralabelsline, $predef);
$objectline->array_options=$array_option;
// TODO verifier price_min si fk_product et multiprix // TODO verifier price_min si fk_product et multiprix
$result=$objectline->update($user); $result=$objectline->update($user);
@ -1237,7 +1260,7 @@ else
* Lines of contracts * Lines of contracts
*/ */
if ($conf->product->enabled) { if ($conf->product->enabled || $conf->service->enabled) {
$productstatic=new Product($db); $productstatic=new Product($db);
} }
@ -1306,7 +1329,7 @@ else
$productstatic->ref=$objp->label; $productstatic->ref=$objp->label;
print $productstatic->getNomUrl(0,'',16); print $productstatic->getNomUrl(0,'',16);
} }
if (! empty($conf->global->PRODUIT_DESC_IN_FORM) and $objp->description) if (! empty($conf->global->PRODUIT_DESC_IN_FORM) && !empty($objp->description))
print '<br>'.dol_nl2br($objp->description); print '<br>'.dol_nl2br($objp->description);
print '</td>'; print '</td>';
} }
@ -1391,6 +1414,16 @@ else
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
} }
//Display lines extrafields
if (is_array($extralabelslines) && count($extralabelslines)>0) {
print '<tr '.$bc[$var].'>';
$line = new ContratLigne($db);
$line->fetch_optionals($objp->rowid,$extralabelslines);
print $line->showOptionals($extrafieldsline, 'view', array('style'=>$bc[$var], 'colspan'=>$colspan));
print '</tr>';
}
} }
// Ligne en mode update // Ligne en mode update
else else
@ -1448,6 +1481,15 @@ else
print '<br>'.$langs->trans("DateEndPlanned").' '; print '<br>'.$langs->trans("DateEndPlanned").' ';
$form->select_date($db->jdate($objp->date_fin),"date_end_update",$usehm,$usehm,($db->jdate($objp->date_fin)>0?0:1),"update"); $form->select_date($db->jdate($objp->date_fin),"date_end_update",$usehm,$usehm,($db->jdate($objp->date_fin)>0?0:1),"update");
print '</td>'; print '</td>';
if (is_array($extralabelslines) && count($extralabelslines)>0) {
print '<tr '.$bc[$var].'>';
$line = new ContratLigne($db);
$line->fetch_optionals($objp->rowid,$extralabelslines);
print $line->showOptionals($extrafieldsline, 'edit', array('style'=>$bc[$var], 'colspan'=>$colspan));
print '</tr>';
}
print '</tr>'; print '</tr>';
} }

View File

@ -923,7 +923,8 @@ class Contrat extends CommonObject
$modCodeContract = new $module(); $modCodeContract = new $module();
} }
if (!empty($modCodeContract->code_auto)) { //Commerce Efficace - Debut : Modification r<>f<EFBFBD>rence Contrat
/*if (!empty($modCodeContract->code_auto)) {
// Mise a jour ref // Mise a jour ref
$sql = 'UPDATE '.MAIN_DB_PREFIX."contrat SET ref='(PROV".$this->id.")' WHERE rowid=".$this->id; $sql = 'UPDATE '.MAIN_DB_PREFIX."contrat SET ref='(PROV".$this->id.")' WHERE rowid=".$this->id;
if ($this->db->query($sql)) if ($this->db->query($sql))
@ -933,7 +934,8 @@ class Contrat extends CommonObject
$this->ref="(PROV".$this->id.")"; $this->ref="(PROV".$this->id.")";
} }
} }
} }*/
//Commerce Efficace - Fin : Modification r<>f<EFBFBD>rence Contrat
// Insert contacts commerciaux ('SALESREPSIGN','contrat') // Insert contacts commerciaux ('SALESREPSIGN','contrat')
$result=$this->add_contact($this->commercial_signature_id,'SALESREPSIGN','internal'); $result=$this->add_contact($this->commercial_signature_id,'SALESREPSIGN','internal');
@ -1254,9 +1256,10 @@ class Contrat extends CommonObject
* @param int $info_bits Bits de type de lignes * @param int $info_bits Bits de type de lignes
* @param int $fk_fournprice Fourn price id * @param int $fk_fournprice Fourn price id
* @param int $pa_ht Buying price HT * @param int $pa_ht Buying price HT
* @param array $array_option extrafields array
* @return int <0 si erreur, >0 si ok * @return int <0 si erreur, >0 si ok
*/ */
function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1, $txlocaltax2, $fk_product, $remise_percent, $date_start, $date_end, $price_base_type='HT', $pu_ttc=0.0, $info_bits=0, $fk_fournprice=null, $pa_ht = 0) function addline($desc, $pu_ht, $qty, $txtva, $txlocaltax1, $txlocaltax2, $fk_product, $remise_percent, $date_start, $date_end, $price_base_type='HT', $pu_ttc=0.0, $info_bits=0, $fk_fournprice=null, $pa_ht = 0,$array_option=0)
{ {
global $user, $langs, $conf, $mysoc; global $user, $langs, $conf, $mysoc;
@ -1364,6 +1367,21 @@ class Contrat extends CommonObject
$result=$this->update_statut($user); $result=$this->update_statut($user);
if ($result > 0) if ($result > 0)
{ {
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_option) && count($array_option)>0) // For avoid conflicts if trigger used
{
$contractline = new ContratLigne($this->db);
$contractline->array_options=$array_option;
$contractline->id= $this->db->last_insert_id(MAIN_DB_PREFIX.$contractline->table_element);
$result=$contractline->insertExtraFields();
if ($result < 0)
{
$this->error[]=$contractline->error;
$error++;
}
}
if (empty($error)) {
// Call trigger // Call trigger
$result=$this->call_trigger('LINECONTRACT_CREATE',$user); $result=$this->call_trigger('LINECONTRACT_CREATE',$user);
if ($result < 0) if ($result < 0)
@ -1376,6 +1394,7 @@ class Contrat extends CommonObject
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
}
else else
{ {
$this->db->rollback(); $this->db->rollback();
@ -1415,9 +1434,10 @@ class Contrat extends CommonObject
* @param int $info_bits Bits de type de lignes * @param int $info_bits Bits de type de lignes
* @param int $fk_fournprice Fourn price id * @param int $fk_fournprice Fourn price id
* @param int $pa_ht Buying price HT * @param int $pa_ht Buying price HT
* @param array $array_option extrafields array
* @return int < 0 si erreur, > 0 si ok * @return int < 0 si erreur, > 0 si ok
*/ */
function updateline($rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $tvatx, $localtax1tx=0.0, $localtax2tx=0.0, $date_debut_reel='', $date_fin_reel='', $price_base_type='HT', $info_bits=0, $fk_fournprice=null, $pa_ht = 0) function updateline($rowid, $desc, $pu, $qty, $remise_percent, $date_start, $date_end, $tvatx, $localtax1tx=0.0, $localtax2tx=0.0, $date_debut_reel='', $date_fin_reel='', $price_base_type='HT', $info_bits=0, $fk_fournprice=null, $pa_ht = 0,$array_option=0)
{ {
global $user, $conf, $langs, $mysoc; global $user, $conf, $langs, $mysoc;
@ -1517,6 +1537,21 @@ class Contrat extends CommonObject
$result=$this->update_statut($user); $result=$this->update_statut($user);
if ($result >= 0) if ($result >= 0)
{ {
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($array_option) && count($array_option)>0) // For avoid conflicts if trigger used
{
$contractline = new ContratLigne($this->db);
$contractline->array_options=$array_option;
$contractline->id= $this->db->last_insert_id(MAIN_DB_PREFIX.$contractline->table_element);
$result=$contractline->insertExtraFields();
if ($result < 0)
{
$this->error[]=$contractline->error;
$error++;
}
}
if (empty($error)) {
// Call trigger // Call trigger
$result=$this->call_trigger('LINECONTRACT_UPDATE',$user); $result=$this->call_trigger('LINECONTRACT_UPDATE',$user);
if ($result < 0) if ($result < 0)
@ -1529,6 +1564,7 @@ class Contrat extends CommonObject
$this->db->commit(); $this->db->commit();
return 1; return 1;
} }
}
else else
{ {
$this->db->rollback(); $this->db->rollback();
@ -1576,12 +1612,32 @@ class Contrat extends CommonObject
if (! $resql) if (! $resql)
{ {
$this->error="Error ".$this->db->lasterror(); $this->error="Error ".$this->db->lasterror();
$error++;
}
if (empty($error)) {
// Remove extrafields
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED)) // For avoid conflicts if trigger used
{
$contractline = new ContratLigne($this->db);
$contractline->id= $idline;
$result=$contractline->deleteExtraFields();
if ($result < 0)
{
$error++;
$this->error="Error ".get_class($this)."::delete deleteExtraFields error -4 ".$contractline->error;
}
}
}
if (empty($error)) {
$this->db->commit();
return 1;
} else {
dol_syslog(get_class($this)."::delete ERROR:".$this->error, LOG_ERR);
$this->db->rollback(); $this->db->rollback();
return -1; return -1;
} }
$this->db->commit();
return 1;
} }
else else
{ {
@ -2083,6 +2139,9 @@ class ContratLigne extends CommonObject
var $statut; // 0 inactive, 4 active, 5 closed var $statut; // 0 inactive, 4 active, 5 closed
var $label; var $label;
public $element='contratdet';
public $table_element='contratdet';
/** /**
* @var string * @var string
* @deprecated Use $label instead * @deprecated Use $label instead
@ -2461,10 +2520,21 @@ class ContratLigne extends CommonObject
else else
{ {
$this->error="Error ".$this->db->lasterror(); $this->error="Error ".$this->db->lasterror();
$this->db->rollback(); $error++;
return -1; //return -1;
} }
if (empty($conf->global->MAIN_EXTRAFIELDS_DISABLED) && is_array($this->array_options) && count($this->array_options)>0) // For avoid conflicts if trigger used
{
$result=$this->insertExtraFields();
if ($result < 0)
{
$error++;
}
}
if (empty($error)) {
if (! $notrigger) if (! $notrigger)
{ {
// Call trigger // Call trigger
@ -2472,9 +2542,16 @@ class ContratLigne extends CommonObject
if ($result < 0) { $error++; $this->db->rollback(); return -1; } if ($result < 0) { $error++; $this->db->rollback(); return -1; }
// End call triggers // End call triggers
} }
}
if (empty($error)) {
$this->db->commit(); $this->db->commit();
return 1; return 1;
} else {
$this->db->rollback();
$this->errors[]=$this->error;
return -1;
}
} }

View File

@ -42,8 +42,8 @@ foreach($linkedObjectBlock as $object)
$object->fetch_lines(); $object->fetch_lines();
$var=!$var; $var=!$var;
?> ?>
<tr <?php echo $bc[$var]; ?> ><td> <tr <?php echo $bc[$var]; ?> >
<a href="<?php echo DOL_URL_ROOT.'/contrat/card.php?id='.$object->id ?>"><?php echo img_object($langs->trans("ShowContract"),"contract").' '.$object->ref; ?></a></td> <td><?php echo $object->getNomUrl(1); ?></td>
<td align="center"><?php echo dol_print_date($object->date_contrat,'day'); ?></td> <td align="center"><?php echo dol_print_date($object->date_contrat,'day'); ?></td>
<td align="right">&nbsp;</td> <td align="right">&nbsp;</td>
<td align="right"><?php echo $object->getLibStatut(6); ?></td> <td align="right"><?php echo $object->getLibStatut(6); ?></td>

View File

@ -188,7 +188,7 @@ if (file_exists($fullpathselecteddir))
$userstatic->lastname=isset($val['login_c'])?$val['login_c']:0; $userstatic->lastname=isset($val['login_c'])?$val['login_c']:0;
$htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>'; $htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>';
$htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>'; $htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>';
$htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1).'<br>'; $htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1, '', false, 1).'<br>';
$htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.(isset($val['date_c'])?dol_print_date($val['date_c'],"dayhour"):$langs->trans("NeedRefresh")).'<br>'; $htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.(isset($val['date_c'])?dol_print_date($val['date_c'],"dayhour"):$langs->trans("NeedRefresh")).'<br>';
$htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>'; $htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>';
$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.((isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0)?$val['cachenbofdoc']:$langs->trans("NeedRefresh")).'<br>'; $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.((isset($val['cachenbofdoc']) && $val['cachenbofdoc'] >= 0)?$val['cachenbofdoc']:$langs->trans("NeedRefresh")).'<br>';

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Charles-Fr BENKE <charles.fr@benke.fr> * Copyright (C) 2014 Charles-Fr BENKE <charles.fr@benke.fr>
* Copyright (C) 2015 Frederic 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
@ -55,15 +56,20 @@ class box_actions extends ModeleBoxes
$this->max=$max; $this->max=$max;
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; include_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php';
$societestatic = new Societe($db);
$actionstatic = new ActionComm($db); $actionstatic = new ActionComm($db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleLastActionsToDo",$max)); $this->info_box_head = array('text' => $langs->trans("BoxTitleLastActionsToDo",$max));
if ($user->rights->agenda->myactions->read) { if ($user->rights->agenda->myactions->read) {
$sql = "SELECT a.id, a.label, a.datep as dp, a.percent as percentage,"; $sql = "SELECT a.id, a.label, a.datep as dp, a.percent as percentage";
$sql.= " ta.code, ta.libelle as type_label,"; $sql.= ", ta.code";
$sql.= " s.nom as name, s.rowid as socid"; $sql.= ", ta.libelle as type_label";
$sql.= ", s.nom as name";
$sql.= ", s.rowid as socid";
$sql.= ", s.code_client";
$sql.= " FROM (".MAIN_DB_PREFIX."c_actioncomm AS ta, "; $sql.= " FROM (".MAIN_DB_PREFIX."c_actioncomm AS ta, ";
$sql.= MAIN_DB_PREFIX."actioncomm AS a)"; $sql.= MAIN_DB_PREFIX."actioncomm AS a)";
if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc"; if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe_commerciaux as sc ON a.fk_soc = sc.fk_soc";
@ -84,65 +90,61 @@ class box_actions extends ModeleBoxes
$delay_warning = $conf->global->MAIN_DELAY_ACTIONS_TODO*24*60*60; $delay_warning = $conf->global->MAIN_DELAY_ACTIONS_TODO*24*60*60;
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $line = 0;
while ($i < $num) { while ($line < $num) {
$late = ''; $late = '';
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datelimite = $db->jdate($objp->dp); $datelimite = $db->jdate($objp->dp);
$actionstatic->label = $objp->label;
$actionstatic->type_label = $objp->type_label;
$actionstatic->code = $objp->code;
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->code_client = $objp->code_client;
if ($objp->percentage >= 0 && $objp->percentage < 100 && $datelimite < ($now - $delay_warning)) $late=img_warning($langs->trans("Late")); if ($objp->percentage >= 0 && $objp->percentage < 100 && $datelimite < ($now - $delay_warning))
$late=img_warning($langs->trans("Late"));
//($langs->transnoentities("Action".$objp->code)!=("Action".$objp->code) ? $langs->transnoentities("Action".$objp->code) : $objp->label) //($langs->transnoentities("Action".$objp->code)!=("Action".$objp->code) ? $langs->transnoentities("Action".$objp->code) : $objp->label)
$label = empty($objp->label)?$objp->type_label:$objp->label; $label = empty($objp->label)?$objp->type_label:$objp->label;
$this->info_box_contents[$i][0] = array( $tooltip = $langs->trans('Action'.$objp->code).': '.$label;
'td' => 'align="left" width="16"', $this->info_box_contents[$line][] = array(
'logo' => ("action"),
'tooltip' => $langs->trans('Action'.$objp->code).': '.$label,
'url' => DOL_URL_ROOT."/comm/action/card.php?id=".$objp->id,
);
$this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => dol_trunc($label,32), 'text' => $actionstatic->getNomUrl(1),
'text2'=> $late, 'text2'=> $late,
'tooltip' => $langs->trans('Action'.$objp->code).': '.$label, 'asis' => 1,
'url' => DOL_URL_ROOT."/comm/action/card.php?id=".$objp->id,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"',
'logo' => ($objp->socid?'company':''),
'tooltip' => $langs->trans('Customer').': '.$objp->name,
'url' => ($objp->socid?DOL_URL_ROOT."/societe/soc.php?socid=".$objp->socid:''),
);
$this->info_box_contents[$i][3] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => dol_trunc($objp->name,24), 'text' => $societestatic->getNomUrl(1),
'tooltip' => $langs->trans('Customer').': '.$objp->name, 'asis' => 1,
'url' => DOL_URL_ROOT."/societe/soc.php?socid=".$objp->socid,
); );
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" class="nowrap"', 'td' => 'align="left" class="nowrap"',
'text' => dol_print_date($datelimite, "dayhour"), 'text' => dol_print_date($datelimite, "dayhour"),
); );
$this->info_box_contents[$i][5] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => ($objp->percentage>= 0?$objp->percentage.'%':''), 'text' => ($objp->percentage>= 0?$objp->percentage.'%':''),
); );
$this->info_box_contents[$i][6] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $actionstatic->LibStatut($objp->percentage,3), 'text' => $actionstatic->LibStatut($objp->percentage,3),
); );
$i++; $line++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoActionsToDo")); if ($num==0)
$this->info_box_contents[$line][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoActionsToDo"),
);
$db->free($result); $db->free($result);
} else { } else {
@ -171,8 +173,7 @@ class box_actions extends ModeleBoxes
{ {
global $langs, $conf; global $langs, $conf;
parent::showBox($this->info_box_head, $this->info_box_contents); parent::showBox($this->info_box_head, $this->info_box_contents);
if ($conf->global->SHOW_DIALOG_HOMEPAGE) if ($conf->global->SHOW_DIALOG_HOMEPAGE) {
{
$actioncejour=false; $actioncejour=false;
$contents=$this->info_box_contents; $contents=$this->info_box_contents;
$nblines=count($contents); $nblines=count($contents);
@ -183,23 +184,23 @@ class box_actions extends ModeleBoxes
{ {
print '<div id="dialog" title="'.$nblines." ".$langs->trans("ActionsToDo").'">'; print '<div id="dialog" title="'.$nblines." ".$langs->trans("ActionsToDo").'">';
print '<table width=100%>'; print '<table width=100%>';
for ($i=0, $n=$nblines; $i < $n; $i++) for ($line=0, $n=$nblines; $line < $n; $line++)
{ {
if (isset($contents[$i])) if (isset($contents[$line]))
{ {
// on affiche que les évènement du jours ou passé // on affiche que les évènement du jours ou passé
// qui ne sont pas à 100% // qui ne sont pas à 100%
$actioncejour=true; $actioncejour=true;
$var=!$var; $var=!$var;
// TR // TR
$logo=$contents[$i][0]['logo']; $logo=$contents[$line][0]['logo'];
$label=$contents[$i][1]['text']; $label=$contents[$line][1]['text'];
$urlevent=$contents[$i][1]['url']; $urlevent=$contents[$line][1]['url'];
$logosoc=$contents[$i][2]['logo']; $logosoc=$contents[$line][2]['logo'];
$nomsoc=$contents[$i][3]['text']; $nomsoc=$contents[$line][3]['text'];
$urlsoc=$contents[$i][3]['url']; $urlsoc=$contents[$line][3]['url'];
$dateligne=$contents[$i][4]['text']; $dateligne=$contents[$line][4]['text'];
$percentage=$contents[$i][5]['text']; $percentage=$contents[$line][5]['text'];
print '<tr '.$bcx[$var].'>'; print '<tr '.$bcx[$var].'>';
print '<td align=center>'; print '<td align=center>';
print img_object("",$logo); print img_object("",$logo);

View File

@ -1,7 +1,7 @@
<?php <?php
/* Copyright (C) 2012 Charles-François BENKE <charles.fr@benke.fr> /* Copyright (C) 2012 Charles-François BENKE <charles.fr@benke.fr>
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2014 Frederic France <frederic.france@free.fr> * Copyright (C) 2014-2015 Frederic 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
@ -73,7 +73,7 @@ class box_activity extends ModeleBoxes
$totalMnt = 0; $totalMnt = 0;
$totalnb = 0; $totalnb = 0;
$i = 0; $line = 0;
$cachetime = 3600; $cachetime = 3600;
$fileid = '-e'.$conf->entity.'-u'.$user->id.'-s'.$user->societe_id.'-r'.($user->rights->societe->client->voir?'1':'0').'.cache'; $fileid = '-e'.$conf->entity.'-u'.$user->id.'-s'.$user->societe_id.'-r'.($user->rights->societe->client->voir?'1':'0').'.cache';
$now = dol_now(); $now = dol_now();
@ -94,8 +94,10 @@ class box_activity extends ModeleBoxes
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$facturestatic=new Facture($db); $facturestatic=new Facture($db);
$cachefile = DOL_DATA_ROOT.'/facture/temp/boxactivity-invoice'.$fileid; $cachedir = DOL_DATA_ROOT.'/facture/temp';
$refresh = !file_exists($cachefile) || ($now-$cachetime) > dol_filemtime($cachefile); $filename = '/boxactivity-invoice'.$fileid;
$refresh = dol_cache_refresh($cachedir, $filename, $cachetime);
$data = array(); $data = array();
if ($refresh) { if ($refresh) {
$sql = "SELECT f.fk_statut, SUM(f.total_ttc) as Mnttot, COUNT(*) as nb"; $sql = "SELECT f.fk_statut, SUM(f.total_ttc) as Mnttot, COUNT(*) as nb";
@ -118,38 +120,40 @@ class box_activity extends ModeleBoxes
$data[$j]=$db->fetch_object($result); $data[$j]=$db->fetch_object($result);
$j++; $j++;
} }
file_put_contents($cachefile,serialize($data),LOCK_EX); if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
dol_filecache($cachedir, $filename, $data);
}
$db->free($result); $db->free($result);
} else { } else {
dol_print_error($db); dol_print_error($db);
} }
} else { } else {
$data = unserialize(file_get_contents($cachefile)); $data = dol_readcachefile($cachedir, $filename);
} }
if (! empty($data)) { if (! empty($data)) {
$j=0; $j=0;
while ($i < count($data)) { while ($line < count($data)) {
$billurl="viewstatut=2&amp;paye=1&amp;year=".$data[$j]->annee; $billurl="viewstatut=2&amp;paye=1&amp;year=".$data[$j]->annee;
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(1,$data[$j]->fk_statut,0), 'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(1,$data[$j]->fk_statut,0),
'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills", 'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills",
'logo' => 'bill', 'logo' => 'bill',
); );
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $langs->trans("Bills")."&nbsp;".$facturestatic->LibStatut(1,$data[$j]->fk_statut,0)." ".$data[$j]->annee, 'text' => $langs->trans("Bills")."&nbsp;".$facturestatic->LibStatut(1,$data[$j]->fk_statut,0)." ".$data[$j]->annee,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][2] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(1,$data[$j]->fk_statut,0), 'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(1,$data[$j]->fk_statut,0),
'text' => $data[$j]->nb, 'text' => $data[$j]->nb,
'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills", 'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills",
); );
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][3] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency) 'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency)
); );
@ -159,22 +163,24 @@ class box_activity extends ModeleBoxes
$totalnb += $data[$j]->nb; $totalnb += $data[$j]->nb;
$totalMnt += $data[$j]->Mnttot; $totalMnt += $data[$j]->Mnttot;
} }
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][4] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $facturestatic->LibStatut(1,$data[$j]->fk_statut,3), 'text' => $facturestatic->LibStatut(1,$data[$j]->fk_statut,3),
); );
$i++; $line++;
$j++; $j++;
} }
if (count($data)==0) if (count($data)==0)
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="center"', 'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedInvoices"), 'text'=>$langs->trans("NoRecordedInvoices"),
); );
} }
$cachefile = DOL_DATA_ROOT.'/facture/temp/boxactivity-invoice2'.$fileid; $cachedir = DOL_DATA_ROOT.'/facture/temp';
$refresh = !file_exists($cachefile) || ($now-$cachetime) > dol_filemtime($cachefile); $filename = '/boxactivity-invoice2'.$fileid;
$refresh = dol_cache_refresh($cachedir, $filename, $cachetime);
if ($refresh) { if ($refresh) {
$sql = "SELECT f.fk_statut, SUM(f.total_ttc) as Mnttot, COUNT(*) as nb"; $sql = "SELECT f.fk_statut, SUM(f.total_ttc) as Mnttot, COUNT(*) as nb";
@ -187,58 +193,60 @@ class box_activity extends ModeleBoxes
$result = $db->query($sql); $result = $db->query($sql);
if ($result) { if ($result) {
$num = $db->num_rows($result) + $i; $num = $db->num_rows($result) + $line;
$j=0; $j=0;
while ($j < $num) { while ($j < $num) {
$data[$j]=$db->fetch_object($result); $data[$j]=$db->fetch_object($result);
$j++; $j++;
} }
file_put_contents($cachefile,serialize($data),LOCK_EX); if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
dol_filecache($cachedir, $filename, $data);
}
$db->free($result); $db->free($result);
} else { } else {
dol_print_error($db); dol_print_error($db);
} }
} else { } else {
$data = unserialize(file_get_contents($cachefile)); $data = dol_readcachefile($cachedir, $filename);
} }
if (! empty($data)) { if (! empty($data)) {
$j=0; $j=0;
while ($i < count($data)) { while ($line < count($data)) {
$billurl="viewstatut=".$data[$j]->fk_statut."&amp;paye=0"; $billurl="viewstatut=".$data[$j]->fk_statut."&amp;paye=0";
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(0,$data[$j]->fk_statut,0), 'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(0,$data[$j]->fk_statut,0),
'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills", 'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills",
'logo' => 'bill', 'logo' => 'bill',
); );
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $langs->trans("Bills")."&nbsp;".$facturestatic->LibStatut(0,$data[$j]->fk_statut,0), 'text' => $langs->trans("Bills")."&nbsp;".$facturestatic->LibStatut(0,$data[$j]->fk_statut,0),
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][2] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => $data[$j]->nb, 'text' => $data[$j]->nb,
'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(0,$data[$j]->fk_statut,0), 'tooltip' => $langs->trans('Bills').'&nbsp;'.$facturestatic->LibStatut(0,$data[$j]->fk_statut,0),
'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills", 'url' => DOL_URL_ROOT."/compta/facture/list.php?".$billurl."&amp;mainmenu=accountancy&amp;leftmenu=customers_bills",
); );
$totalnb += $data[$j]->nb; $totalnb += $data[$j]->nb;
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][3] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency), 'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency),
); );
$totalMnt += $objp->Mnttot; $totalMnt += $objp->Mnttot;
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][4] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $facturestatic->LibStatut(0,$data[$j]->fk_statut,3), 'text' => $facturestatic->LibStatut(0,$data[$j]->fk_statut,3),
); );
$i++; $line++;
$j++; $j++;
} }
if ($num==0) if ($num==0)
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="center"', 'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedInvoices"), 'text'=>$langs->trans("NoRecordedInvoices"),
); );
@ -255,9 +263,11 @@ class box_activity extends ModeleBoxes
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
$commandestatic=new Commande($db); $commandestatic=new Commande($db);
$cachefile = DOL_DATA_ROOT.'/commande/temp/boxactivity-order'.$fileid; $cachedir = DOL_DATA_ROOT.'/commande/temp';
$refresh = !file_exists($cachefile) || ($now-$cachetime) > dol_filemtime($cachefile); $filename = '/boxactivity-order'.$fileid;
$refresh = dol_cache_refresh($cachedir, $filename, $cachetime);
$data = array(); $data = array();
if ($refresh) { if ($refresh) {
$sql = "SELECT c.fk_statut, sum(c.total_ttc) as Mnttot, count(*) as nb"; $sql = "SELECT c.fk_statut, sum(c.total_ttc) as Mnttot, count(*) as nb";
@ -276,36 +286,38 @@ class box_activity extends ModeleBoxes
$result = $db->query($sql); $result = $db->query($sql);
if ($result) { if ($result) {
$num = $db->num_rows($result) + $i; $num = $db->num_rows($result) + $line;
$j=0; $j=0;
while ($j < $num) { while ($j < $num) {
$data[$j]=$db->fetch_object($result); $data[$j]=$db->fetch_object($result);
$j++; $j++;
} }
file_put_contents($cachefile,serialize($data),LOCK_EX); if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
dol_filecache($cachedir, $filename, $data);
}
$db->free($result); $db->free($result);
} else { } else {
dol_print_error($db); dol_print_error($db);
} }
} else { } else {
$data = unserialize(file_get_contents($cachefile)); $data = dol_readcachefile($cachedir, $filename);
} }
if (! empty($data)) { if (! empty($data)) {
$j=0; $j=0;
while ($i < count($data)) { while ($line < count($data)) {
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'url' => DOL_URL_ROOT."/commande/list.php?mainmenu=commercial&amp;leftmenu=orders&amp;viewstatut=".$data[$j]->fk_statut, 'url' => DOL_URL_ROOT."/commande/list.php?mainmenu=commercial&amp;leftmenu=orders&amp;viewstatut=".$data[$j]->fk_statut,
'tooltip' => $langs->trans("Orders")."&nbsp;".$commandestatic->LibStatut($data[$j]->fk_statut,0,0), 'tooltip' => $langs->trans("Orders")."&nbsp;".$commandestatic->LibStatut($data[$j]->fk_statut,0,0),
'logo' => 'object_order', 'logo' => 'object_order',
); );
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' =>$langs->trans("Orders")."&nbsp;".$commandestatic->LibStatut($data[$j]->fk_statut,0,0), 'text' =>$langs->trans("Orders")."&nbsp;".$commandestatic->LibStatut($data[$j]->fk_statut,0,0),
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][2] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => $data[$j]->nb, 'text' => $data[$j]->nb,
'tooltip' => $langs->trans("Orders")."&nbsp;".$commandestatic->LibStatut($data[$j]->fk_statut,0,0), 'tooltip' => $langs->trans("Orders")."&nbsp;".$commandestatic->LibStatut($data[$j]->fk_statut,0,0),
@ -313,17 +325,17 @@ class box_activity extends ModeleBoxes
); );
$totalnb += $data[$j]->nb; $totalnb += $data[$j]->nb;
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][3] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency), 'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency),
); );
$totalMnt += $data[$j]->Mnttot; $totalMnt += $data[$j]->Mnttot;
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][4] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $commandestatic->LibStatut($data[$j]->fk_statut,0,3), 'text' => $commandestatic->LibStatut($data[$j]->fk_statut,0,3),
); );
$i++; $line++;
$j++; $j++;
} }
} }
@ -334,8 +346,9 @@ class box_activity extends ModeleBoxes
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
$propalstatic=new Propal($db); $propalstatic=new Propal($db);
$cachefile = DOL_DATA_ROOT.'/propale/temp/boxactivity-propal'.$fileid; $cachedir = DOL_DATA_ROOT.'/propale/temp';
$refresh = !file_exists($cachefile) || ($now-$cachetime) > dol_filemtime($cachefile); $filename = '/boxactivity-propal'.$fileid;
$refresh = dol_cache_refresh($cachedir, $filename, $cachetime);
$data = array(); $data = array();
if ($refresh) { if ($refresh) {
$sql = "SELECT p.fk_statut, SUM(p.total) as Mnttot, COUNT(*) as nb"; $sql = "SELECT p.fk_statut, SUM(p.total) as Mnttot, COUNT(*) as nb";
@ -354,24 +367,26 @@ class box_activity extends ModeleBoxes
$result = $db->query($sql); $result = $db->query($sql);
if ($result) { if ($result) {
$num = $db->num_rows($result) + $i; $num = $db->num_rows($result) + $line;
$j=0; $j=0;
while ($j < $num) { while ($j < $num) {
$data[$j]=$db->fetch_object($result); $data[$j]=$db->fetch_object($result);
$j++; $j++;
} }
file_put_contents($cachefile,serialize($data),LOCK_EX); if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
dol_filecache($cachedir, $filename, $data);
}
$db->free($result); $db->free($result);
} else { } else {
dol_print_error($db); dol_print_error($db);
} }
} else { } else {
$data = unserialize(file_get_contents($cachefile)); $data = dol_readcachefile($cachedir, $filename);
} }
if (! empty($data)) { if (! empty($data)) {
$j=0; $j=0;
while ($i < count($data)) { while ($line < count($data)) {
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'url' => DOL_URL_ROOT."/comm/propal/list.php?mainmenu=commercial&amp;leftmenu=propals&amp;viewstatut=".$data[$j]->fk_statut, 'url' => DOL_URL_ROOT."/comm/propal/list.php?mainmenu=commercial&amp;leftmenu=propals&amp;viewstatut=".$data[$j]->fk_statut,
'tooltip' => $langs->trans("Proposals")."&nbsp;".$propalstatic->LibStatut($data[$j]->fk_statut,0), 'tooltip' => $langs->trans("Proposals")."&nbsp;".$propalstatic->LibStatut($data[$j]->fk_statut,0),
@ -379,12 +394,12 @@ class box_activity extends ModeleBoxes
); );
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $langs->trans("Proposals")."&nbsp;".$propalstatic->LibStatut($data[$j]->fk_statut,0), 'text' => $langs->trans("Proposals")."&nbsp;".$propalstatic->LibStatut($data[$j]->fk_statut,0),
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => $data[$j]->nb, 'text' => $data[$j]->nb,
'tooltip' => $langs->trans("Proposals")."&nbsp;".$propalstatic->LibStatut($data[$j]->fk_statut,0), 'tooltip' => $langs->trans("Proposals")."&nbsp;".$propalstatic->LibStatut($data[$j]->fk_statut,0),
@ -392,40 +407,40 @@ class box_activity extends ModeleBoxes
); );
$totalnb += $data[$j]->nb; $totalnb += $data[$j]->nb;
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency), 'text' => price($data[$j]->Mnttot,1,$langs,0,0,-1,$conf->currency),
); );
$totalMnt += $data[$j]->Mnttot; $totalMnt += $data[$j]->Mnttot;
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $propalstatic->LibStatut($data[$j]->fk_statut,3), 'text' => $propalstatic->LibStatut($data[$j]->fk_statut,3),
); );
$i++; $line++;
$j++; $j++;
} }
} }
} }
// Add the sum in the bottom of the boxes // Add the sum in the bottom of the boxes
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][1] = array(
'td' => 'align="left" ', 'td' => 'align="left" ',
'text' => $langs->trans("Total")."&nbsp;".$textHead, 'text' => $langs->trans("Total")."&nbsp;".$textHead,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][2] = array(
'td' => 'align="right" ', 'td' => 'align="right" ',
'text' => $totalnb, 'text' => $totalnb,
); );
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][3] = array(
'td' => 'align="right" ', 'td' => 'align="right" ',
'text' => price($totalMnt,1,$langs,0,0,-1,$conf->currency) 'text' => price($totalMnt,1,$langs,0,0,-1,$conf->currency)
); );
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][4] = array(
'td' => 'align="right" ', 'td' => 'align="right" ',
'text' => "", 'text' => "",
); );
$this->info_box_contents[$i][5] = array( $this->info_box_contents[$line][5] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => "", 'text' => "",
); );

View File

@ -1,5 +1,6 @@
<?php <?php
/* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2005-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2015 Frederic 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
@ -80,19 +81,19 @@ class box_bookmarks extends ModeleBoxes
{ {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $line = 0;
while ($i < $num) { while ($line < $num) {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'logo' => $this->boximg, 'logo' => $this->boximg,
'url' => $objp->url, 'url' => $objp->url,
'tooltip' => $objp->title, 'tooltip' => $objp->title,
'target' => $objp->target?'newtab':'', 'target' => $objp->target?'newtab':'',
); );
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->title, 'text' => $objp->title,
'url' => $objp->url, 'url' => $objp->url,
@ -100,13 +101,13 @@ class box_bookmarks extends ModeleBoxes
'target' => $objp->target?'newtab':'', 'target' => $objp->target?'newtab':'',
); );
$i++; $line++;
} }
if ($num==0) { if ($num==0) {
$mytxt=$langs->trans("NoRecordedBookmarks"); $mytxt=$langs->trans("NoRecordedBookmarks");
if ($user->rights->bookmark->creer) $mytxt.=' '.$langs->trans("ClickToAdd"); if ($user->rights->bookmark->creer) $mytxt.=' '.$langs->trans("ClickToAdd");
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="center" colspan="2"', 'td' => 'align="center" colspan="2"',
'tooltip' => $mytxt, 'tooltip' => $mytxt,
'url'=> DOL_URL_ROOT.'/bookmarks/list.php', 'text'=>$mytxt, 'url'=> DOL_URL_ROOT.'/bookmarks/list.php', 'text'=>$mytxt,

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -79,7 +80,13 @@ class box_clients extends ModeleBoxes
if ($user->rights->societe->lire) if ($user->rights->societe->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid, s.datec, s.tms, s.status"; $sql = "SELECT s.nom as name, s.rowid as socid";
$sql.= ", s.code_client";
$sql.= ", s.client";
$sql.= ", s.code_fournisseur";
$sql.= ", s.fournisseur";
$sql.= ", s.logo";
$sql.= ", s.datec, s.tms, s.status";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE s.client IN (1, 3)"; $sql.= " WHERE s.client IN (1, 3)";
@ -97,40 +104,40 @@ class box_clients extends ModeleBoxes
if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url= DOL_URL_ROOT."/comm/card.php?socid="; if (empty($conf->global->SOCIETE_DISABLE_CUSTOMERS)) $url= DOL_URL_ROOT."/comm/card.php?socid=";
else $url= DOL_URL_ROOT."/societe/soc.php?socid="; else $url= DOL_URL_ROOT."/societe/soc.php?socid=";
$i = 0; $line = 0;
while ($i < $num) while ($line < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datec=$db->jdate($objp->datec); $datec=$db->jdate($objp->datec);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
$thirdpartystatic->id = $objp->socid;
$thirdpartystatic->name = $objp->name;
$thirdpartystatic->code_client = $objp->code_client;
$thirdpartystatic->code_fournisseur = $objp->code_fournisseur;
$thirdpartystatic->client = $objp->client;
$thirdpartystatic->fournisseur = $objp->fournisseur;
$thirdpartystatic->logo = $objp->logo;
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg,
'tooltip' => $langs->trans('Customer').': '.$objp->name,
'url' => $url.$objp->socid
);
$this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->name, 'text' => $thirdpartystatic->getNomUrl(1),
'tooltip' => $langs->trans('Customer').': '.$objp->name, 'asis' => 1,
'url' => $url.$objp->socid
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => dol_print_date($datem, "day") 'text' => dol_print_date($datem, "day")
); );
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $thirdpartystatic->LibStatut($objp->status,3) 'text' => $thirdpartystatic->LibStatut($objp->status,3)
); );
$i++; $line++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedCustomers")); if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedCustomers"));
$db->free($result); $db->free($result);
} }

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -56,17 +57,30 @@ class box_commandes extends ModeleBoxes
$this->max = $max; $this->max = $max;
include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php'; include_once DOL_DOCUMENT_ROOT.'/commande/class/commande.class.php';
$commandestatic=new Commande($db); include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$commandestatic = new Commande($db);
$societestatic = new Societe($db);
$userstatic = new User($db); $userstatic = new User($db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."CustomerOrders",$max)); $this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."CustomerOrders",$max));
if ($user->rights->commande->lire) if ($user->rights->commande->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid,"; $sql = "SELECT s.nom as name";
$sql.= " c.ref, c.tms, c.rowid, c.date_commande,"; $sql.= ", s.rowid as socid";
$sql.= " c.fk_statut, c.fk_user_valid, c.facture, c.total_ht"; $sql.= ", s.code_client";
$sql.= ", s.logo";
$sql.= ", c.ref, c.tms";
$sql.= ", c.rowid";
$sql.= ", c.date_commande";
$sql.= ", c.ref_client";
$sql.= ", c.fk_statut";
$sql.= ", c.fk_user_valid";
$sql.= ", c.facture";
$sql.= ", c.total_ht";
$sql.= ", c.tva as total_tva";
$sql.= ", c.total_ttc";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
$sql.= ", ".MAIN_DB_PREFIX."commande as c"; $sql.= ", ".MAIN_DB_PREFIX."commande as c";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -83,68 +97,63 @@ class box_commandes extends ModeleBoxes
if ($result) { if ($result) {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $line = 0;
while ($i < $num) { while ($line < $num) {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$date=$db->jdate($objp->date_commande); $date=$db->jdate($objp->date_commande);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
$commandestatic->id = $objp->rowid;
$commandestatic->ref = $objp->ref;
$commandestatic->ref_client = $objp->ref_client;
$commandestatic->total_ht = $objp->total_ht;
$commandestatic->total_tva = $objp->total_tva;
$commandestatic->total_ttc = $objp->total_ttc;
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->code_client = $objp->code_client;
$societestatic->logo = $objp->logo;
$this->info_box_contents[$i][] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg,
'tooltip' => $langs->trans('Order').': '.$objp->ref,
'url' => DOL_URL_ROOT."/commande/card.php?id=".$objp->rowid,
);
$this->info_box_contents[$i][] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->ref, 'text' => $commandestatic->getNomUrl(1),
'tooltip' => $langs->trans('Order').': '.$objp->ref, 'asis' => 1,
'url' => DOL_URL_ROOT."/commande/card.php?id=".$objp->rowid,
);
$this->info_box_contents[$i][] = array(
'td' => 'align="left" width="16"',
'logo' => 'company',
'tooltip' => $langs->trans('Customer').': '.$objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
); );
$this->info_box_contents[$i][] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->name, 'text' => $societestatic->getNomUrl(1),
'tooltip' => $langs->trans('Customer').': '.$objp->name, 'asis' => 1,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
); );
$this->info_box_contents[$i][] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => price($objp->total_ht), 'text' => price($objp->total_ht),
); );
if (! empty($conf->global->ORDER_BOX_LAST_ORDERS_SHOW_VALIDATE_USER)) { if (! empty($conf->global->ORDER_BOX_LAST_ORDERS_SHOW_VALIDATE_USER)) {
if ($objp->fk_user_valid > 0) $userstatic->fetch($objp->fk_user_valid); if ($objp->fk_user_valid > 0) $userstatic->fetch($objp->fk_user_valid);
$this->info_box_contents[$i][] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => (($objp->fk_user_valid > 0)?$userstatic->getNomUrl(1):''), 'text' => (($objp->fk_user_valid > 0)?$userstatic->getNomUrl(1):''),
'url' => (($objp->fk_user_valid > 0)?DOL_URL_ROOT.'/user/card.php?id='.$objp->fk_user_valid:''), 'asis' => 1,
); );
} }
$this->info_box_contents[$i][] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => dol_print_date($date,'day'), 'text' => dol_print_date($date,'day'),
); );
$this->info_box_contents[$i][] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $commandestatic->LibStatut($objp->fk_statut,$objp->facture,3), 'text' => $commandestatic->LibStatut($objp->fk_statut,$objp->facture,3),
); );
$i++; $line++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedOrders")); if ($num==0) $this->info_box_contents[$line][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedOrders"));
$db->free($result); $db->free($result);
} else { } else {

View File

@ -3,6 +3,7 @@
* Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Frederic 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
@ -94,66 +95,56 @@ class box_comptes extends ModeleBoxes
if ($result) { if ($result) {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $line = 0;
$solde_total = array(); $solde_total = array();
$account_static = new Account($db); $account_static = new Account($db);
while ($i < $num) { while ($line < $num) {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$account_static->id = $objp->rowid; $account_static->id = $objp->rowid;
$account_static->label = $objp->label;
$account_static->number = $objp->number;
$solde=$account_static->solde(0); $solde=$account_static->solde(0);
$solde_total[$objp->currency_code] += $solde; $solde_total[$objp->currency_code] += $solde;
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg,
'tooltip' => $langs->trans('Account').': '.$objp->label,
'url' => DOL_URL_ROOT."/compta/bank/account.php?account=".$objp->rowid,
);
$this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->label, 'text' => $account_static->getNomUrl(1),
'tooltip' => $langs->trans('Account').': '.$objp->label, 'asis' => 1,
'url' => DOL_URL_ROOT."/compta/bank/account.php?account=".$objp->rowid,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->number, 'text' => $objp->number,
); );
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => price($solde, 0, $langs, 0, 0, -1, $objp->currency_code) 'text' => price($solde, 0, $langs, 0, -1, -1, $objp->currency_code)
); );
$i++; $line++;
} }
// Total // Total
foreach ($solde_total as $key=>$solde) { foreach ($solde_total as $key=>$solde) {
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][] = array(
'tr' => 'class="liste_total"', 'tr' => 'class="liste_total"',
'td' => 'align="right" class="liste_total"',
'text' => '&nbsp;',
);
$this->info_box_contents[$i][1] = array(
'td' => 'align="left" class="liste_total"', 'td' => 'align="left" class="liste_total"',
'text' => $langs->trans('Total').' '.$key, 'text' => $langs->trans('Total').' '.$key,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right" class="liste_total"', 'td' => 'align="right" class="liste_total"',
'text' => '&nbsp;' 'text' => '&nbsp;'
); );
$totalamount=price($solde,0,$langs,0,0,-1,$key);
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right" class="liste_total"', 'td' => 'align="right" class="liste_total"',
'text' => $totalamount 'text' => price($solde, 0, $langs, 0, -1, -1, $key)
); );
$i++; $line++;
} }
$db->free($result); $db->free($result);

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -61,14 +62,15 @@ class box_contacts extends ModeleBoxes
if ($user->rights->societe->lire) if ($user->rights->societe->lire)
{ {
$sql = "SELECT sp.rowid, sp.lastname, sp.firstname, sp.civility as civility_id, sp.datec, sp.tms, sp.fk_soc,"; $sql = "SELECT sp.rowid, sp.lastname, sp.firstname, sp.civility as civility_id, sp.datec, sp.tms, sp.fk_soc";
$sql.= " s.nom as socname"; $sql.= ", s.nom as socname";
$sql.= ", s.code_client";
$sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp"; $sql.= " FROM ".MAIN_DB_PREFIX."socpeople as sp";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON sp.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON sp.fk_soc = s.rowid";
if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
$sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")"; $sql.= " WHERE sp.entity IN (".getEntity('societe', 1).")";
if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= " AND sp.rowid = sc.fk_soc AND sc.fk_user = " .$user->id; if (! $user->rights->societe->client->voir && ! $user->societe_id) $sql.= " AND sp.rowid = sc.fk_soc AND sc.fk_user = " .$user->id;
if ($user->societe_id) $sql.= " AND sp.fk_soc = $user->societe_id"; if ($user->societe_id) $sql.= " AND sp.fk_soc = ".$user->societe_id;
$sql.= " ORDER BY sp.tms DESC"; $sql.= " ORDER BY sp.tms DESC";
$sql.= $db->plimit($max, 0); $sql.= $db->plimit($max, 0);
@ -79,8 +81,8 @@ class box_contacts extends ModeleBoxes
$contactstatic=new Contact($db); $contactstatic=new Contact($db);
$societestatic=new Societe($db); $societestatic=new Societe($db);
$i = 0; $line = 0;
while ($i < $num) { while ($line < $num) {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datec=$db->jdate($objp->datec); $datec=$db->jdate($objp->datec);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
@ -90,46 +92,31 @@ class box_contacts extends ModeleBoxes
$contactstatic->civility_id=$objp->civility_id; $contactstatic->civility_id=$objp->civility_id;
$societestatic->id = $objp->fk_soc; $societestatic->id = $objp->fk_soc;
$societestatic->code_client = $objp->code_client;
$societestatic->name = $objp->socname; $societestatic->name = $objp->socname;
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg,
'tooltip' => $langs->trans('Contact').': '.$contactstatic->getFullName($langs,0),
'url' => DOL_URL_ROOT."/contact/card.php?id=".$objp->rowid,
);
$this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $contactstatic->getFullName($langs,0), 'text' => $contactstatic->getNomUrl(1),
'tooltip' => $langs->trans('Contact').': '.$contactstatic->getFullName($langs,0), 'asis' => 1,
'url' => DOL_URL_ROOT."/contact/card.php?id=".$objp->rowid,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"',
'logo' => ($objp->fk_soc > 0?'company':''),
'tooltip' => $societestatic->name,
'url' => ($objp->fk_soc > 0?DOL_URL_ROOT."/societe/soc.php?socid=".$objp->fk_soc:''),
);
$this->info_box_contents[$i][3] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $societestatic->name, 'text' => $societestatic->getNomUrl(1),
'tooltip' => $societestatic->name, 'asis' => 1,
'url' => DOL_URL_ROOT."/societe/soc.php?socid=".$objp->fk_soc,
); );
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => dol_print_date($datem, "day"), 'text' => dol_print_date($datem, "day"),
); );
$i++; $line++;
} }
if ($num==0) if ($num==0)
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="center"', 'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedContacts"), 'text'=>$langs->trans("NoRecordedContacts"),
); );

View File

@ -1,5 +1,6 @@
<?php <?php
/* Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com> /* Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -77,9 +78,9 @@ class box_contracts extends ModeleBoxes
$num = $db->num_rows($resql); $num = $db->num_rows($resql);
$now=dol_now(); $now=dol_now();
$i = 0; $line = 0;
while ($i < $num) { while ($line < $num) {
$objp = $db->fetch_object($resql); $objp = $db->fetch_object($resql);
$datec=$db->jdate($objp->datec); $datec=$db->jdate($objp->datec);
$dateterm=$db->jdate($objp->fin_validite); $dateterm=$db->jdate($objp->fin_validite);
@ -93,14 +94,14 @@ class box_contracts extends ModeleBoxes
// fin_validite is no more on contract but on services // fin_validite is no more on contract but on services
// if ($objp->fk_statut == 1 && $dateterm < ($now - $conf->contrat->cloture->warning_delay)) { $late = img_warning($langs->trans("Late")); } // if ($objp->fk_statut == 1 && $dateterm < ($now - $conf->contrat->cloture->warning_delay)) { $late = img_warning($langs->trans("Late")); }
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'logo' => $this->boximg, 'logo' => $this->boximg,
'tooltip' => $langs->trans('Contract').': '.($objp->ref?$objp->ref:$objp->rowid), 'tooltip' => $langs->trans('Contract').': '.($objp->ref?$objp->ref:$objp->rowid),
'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid, 'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid,
); );
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => ($objp->ref?$objp->ref:$objp->rowid), // Some contracts have no ref 'text' => ($objp->ref?$objp->ref:$objp->rowid), // Some contracts have no ref
'tooltip' => $langs->trans('Contract').': '.($objp->ref?$objp->ref:$objp->rowid), 'tooltip' => $langs->trans('Contract').': '.($objp->ref?$objp->ref:$objp->rowid),
@ -108,36 +109,36 @@ class box_contracts extends ModeleBoxes
'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid, 'url' => DOL_URL_ROOT."/contrat/card.php?id=".$objp->rowid,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'logo' => 'company', 'logo' => 'company',
'tooltip' => $langs->trans('Customer').': '.$objp->name, 'tooltip' => $langs->trans('Customer').': '.$objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid, 'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
); );
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => dol_trunc($objp->name,40), 'text' => dol_trunc($objp->name,40),
'tooltip' => $langs->trans('Customer').': '.$objp->name, 'tooltip' => $langs->trans('Customer').': '.$objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid, 'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
); );
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => dol_print_date($datec,'day'), 'text' => dol_print_date($datec,'day'),
); );
$this->info_box_contents[$i][5] = array( $this->info_box_contents[$line][] = array(
'td' => 'align="right" class="nowrap"', 'td' => 'align="right" class="nowrap"',
'text' => $contractstatic->getLibStatut(6), 'text' => $contractstatic->getLibStatut(6),
'asis'=>1, 'asis'=>1,
); );
$i++; $line++;
} }
if ($num==0) if ($num==0)
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$line][0] = array(
'td' => 'align="center"', 'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedContracts"), 'text'=>$langs->trans("NoRecordedContracts"),
); );

View File

@ -3,6 +3,7 @@
* Copyright (C) 2003 Eric Seigne <erics@rycks.com> * Copyright (C) 2003 Eric Seigne <erics@rycks.com>
* Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2011 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -108,10 +109,11 @@ class box_external_rss extends ModeleBoxes
// INFO on items // INFO on items
$items=$rssparser->getItems(); $items=$rssparser->getItems();
//print '<pre>'.print_r($items,true).'</pre>';
$nbitems=count($items); $nbitems=count($items);
for($i = 0; $i < $max && $i < $nbitems; $i++) for($line = 0; $line < $max && $line < $nbitems; $line++)
{ {
$item = $items[$i]; $item = $items[$line];
// Feed common fields // Feed common fields
$href = $item['link']; $href = $item['link'];
@ -142,24 +144,34 @@ class box_external_rss extends ModeleBoxes
$title=preg_replace("/^\s+/","",$title); // Supprime espaces de debut $title=preg_replace("/^\s+/","",$title); // Supprime espaces de debut
$this->info_box_contents["$href"]="$title"; $this->info_box_contents["$href"]="$title";
$this->info_box_contents[$i][0] = array( $tooltip = $title;
$description = ! empty($item['description'])?$item['description']:'';
$isutf8 = utf8_check($description);
if (! $isutf8 && $conf->file->character_set_client == 'UTF-8') $description=utf8_encode($description);
elseif ($isutf8 && $conf->file->character_set_client == 'ISO-8859-1') $description=utf8_decode($description);
$description=preg_replace("/([[:alnum:]])\?([[:alnum:]])/","\\1'\\2",$description);
$description=preg_replace("/^\s+/","",$description);
$description=str_replace("\r\n","",$description);
$tooltip.= '<br>'.$description;
$this->info_box_contents[$line][0] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'logo' => $this->boximg, 'logo' => $this->boximg,
'url' => $href, 'url' => $href,
'tooltip' => $title, 'tooltip' => $tooltip,
'target' => 'newrss', 'target' => 'newrss',
); );
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$line][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $title, 'text' => $title,
'url' => $href, 'url' => $href,
'tooltip' => $title, 'tooltip' => $tooltip,
'maxlength' => 64, 'maxlength' => 64,
'target' => 'newrss', 'target' => 'newrss',
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$line][2] = array(
'td' => 'align="right" nowrap="1"', 'td' => 'align="right" nowrap="1"',
'text' => $date, 'text' => $date,
); );

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -54,7 +55,10 @@ class box_factures extends ModeleBoxes
$this->max=$max; $this->max=$max;
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$facturestatic=new Facture($db); $facturestatic=new Facture($db);
$societestatic = new Societe($db);
$text = $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."CustomerBills",$max); $text = $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."CustomerBills",$max);
$this->info_box_head = array( $this->info_box_head = array(
@ -62,11 +66,16 @@ class box_factures extends ModeleBoxes
'limit'=> dol_strlen($text) 'limit'=> dol_strlen($text)
); );
if ($user->rights->facture->lire) if ($user->rights->facture->lire) {
{ $sql = "SELECT f.rowid as facid";
$sql = "SELECT f.rowid as facid, f.facnumber, f.type, f.total as total_ht, f.datef as df"; $sql.= ", f.facnumber, f.type, f.total as total_ht";
$sql.= ", f.tva as total_tva";
$sql.= ", f.total_ttc";
$sql.= ", f.datef as df";
$sql.= ", f.paye, f.fk_statut, f.datec, f.tms"; $sql.= ", f.paye, f.fk_statut, f.datec, f.tms";
$sql.= ", s.nom as name, s.rowid as socid"; $sql.= ", s.nom as name";
$sql.= ", s.rowid as socid";
$sql.= ", s.code_client";
$sql.= ", f.date_lim_reglement as datelimite"; $sql.= ", f.date_lim_reglement as datelimite";
$sql.= " FROM (".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; $sql.= " FROM (".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -88,60 +97,48 @@ class box_factures extends ModeleBoxes
$i = 0; $i = 0;
$l_due_date = $langs->trans('Late').' ('.strtolower($langs->trans('DateEcheance')).': %s)'; $l_due_date = $langs->trans('Late').' ('.strtolower($langs->trans('DateEcheance')).': %s)';
while ($i < $num) while ($i < $num) {
{
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datelimite = $db->jdate($objp->datelimite); $datelimite = $db->jdate($objp->datelimite);
$date = $db->jdate($objp->df); $date = $db->jdate($objp->df);
$datem = $db->jdate($objp->tms); $datem = $db->jdate($objp->tms);
$facturestatic->id = $objp->facid;
$facturestatic->ref = $objp->facnumber;
$facturestatic->type = $objp->type;
$facturestatic->total_ht = $objp->total_ht;
$facturestatic->total_tva = $objp->total_tva;
$facturestatic->total_ttc = $objp->total_ttc;
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->code_client = $objp->code_client;
$picto='bill';
if ($objp->type == 1) $picto.='r';
if ($objp->type == 2) $picto.='a';
$late = ''; $late = '';
if ($objp->paye == 0 && ($objp->fk_statut != 2 && $objp->fk_statut != 3) && $datelimite < ($now - $conf->facture->client->warning_delay)) { $late = img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day')));} if ($objp->paye == 0 && ($objp->fk_statut != 2 && $objp->fk_statut != 3) && $datelimite < ($now - $conf->facture->client->warning_delay)) { $late = img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day')));}
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="left" width="16"',
'logo' => $picto,
'tooltip' => $langs->trans('CustomerInvoice').': '.$objp->facnumber,
'url' => DOL_URL_ROOT."/compta/facture.php?facid=".$objp->facid,
);
$this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->facnumber, 'text' => $facturestatic->getNomUrl(1),
'text2'=> $late, 'text2'=> $late,
'tooltip' => $langs->trans('CustomerInvoice').': '.$objp->facnumber, 'asis' => 1,
'url' => DOL_URL_ROOT."/compta/facture.php?facid=".$objp->facid,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="left" width="16"',
'logo' => 'company',
'tooltip' => $langs->trans('Customer').': '.$objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][3] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->name, 'text' => $societestatic->getNomUrl(1, '', 40),
'maxlength'=>40, 'asis' => 1,
'tooltip' => $langs->trans('Customer').': '.$objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
); );
$this->info_box_contents[$i][4] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => price($objp->total_ht), 'text' => price($objp->total_ht),
); );
$this->info_box_contents[$i][5] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => dol_print_date($date,'day'), 'text' => dol_print_date($date,'day'),
); );
$this->info_box_contents[$i][6] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="right" width="18"', 'td' => 'align="right" width="18"',
'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3), 'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3),
); );

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -55,7 +56,10 @@ class box_factures_fourn extends ModeleBoxes
$this->max=$max; $this->max=$max;
include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php';
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$facturestatic = new FactureFournisseur($db); $facturestatic = new FactureFournisseur($db);
$societestatic = new Societe($db);
$this->info_box_head = array( $this->info_box_head = array(
'text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."SupplierBills",$max) 'text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."SupplierBills",$max)
@ -64,7 +68,12 @@ class box_factures_fourn extends ModeleBoxes
if ($user->rights->fournisseur->facture->lire) if ($user->rights->fournisseur->facture->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid,"; $sql = "SELECT s.nom as name, s.rowid as socid,";
$sql.= " f.rowid as facid, f.ref, f.ref_supplier, f.total_ht,"; $sql.= " s.code_fournisseur,";
$sql.= " s.logo,";
$sql.= " f.rowid as facid, f.ref, f.ref_supplier,";
$sql.= " f.total_ht,";
$sql.= " f.total_tva,";
$sql.= " f.total_ttc,";
$sql.= " f.paye, f.fk_statut,"; $sql.= " f.paye, f.fk_statut,";
$sql.= ' f.datef as df,'; $sql.= ' f.datef as df,';
$sql.= ' f.datec as datec,'; $sql.= ' f.datec as datec,';
@ -94,47 +103,41 @@ class box_factures_fourn extends ModeleBoxes
$datelimite=$db->jdate($objp->datelimite); $datelimite=$db->jdate($objp->datelimite);
$date=$db->jdate($objp->df); $date=$db->jdate($objp->df);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
$facturestatic->id = $objp->facid;
$facturestatic->ref = $objp->ref;
$facturestatic->total_ht = $objp->total_ht;
$facturestatic->total_tva = $objp->total_tva;
$facturestatic->total_ttc = $objp->total_ttc;
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->fournisseur = 1;
$societestatic->code_fournisseur = $objp->code_fournisseur;
$societestatic->logo = $objp->logo;
$late = ''; $late = '';
if ($objp->paye == 0 && $datelimite && $datelimite < ($now - $conf->facture->fournisseur->warning_delay)) $late=img_warning(sprintf($l_due_date, dol_print_date($datelimite,'day'))); if ($objp->paye == 0 && $datelimite && $datelimite < ($now - $conf->facture->fournisseur->warning_delay)) $late=img_warning(sprintf($l_due_date, dol_print_date($datelimite,'day')));
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg,
'tooltip' => $langs->trans('SupplierInvoice').': '.($objp->ref?$objp->ref:$objp->facid).'<br>'.$langs->trans('RefSupplier').': '.$objp->ref_supplier,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid,
);
$this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => ($objp->ref?$objp->ref:$objp->facid), 'text' => $facturestatic->getNomUrl(1),
'text2'=> $late, 'text2'=> $late,
'tooltip' => $langs->trans('SupplierInvoice').': '.($objp->ref?$objp->ref:$objp->facid).'<br>'.$langs->trans('RefSupplier').': '.$objp->ref_supplier, 'asis' => 1,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->ref_supplier, 'text' => $objp->ref_supplier,
'tooltip' => $langs->trans('SupplierInvoice').': '.($objp->ref?$objp->ref:$objp->facid).'<br>'.$langs->trans('RefSupplier').': '.$objp->ref_supplier, 'tooltip' => $langs->trans('SupplierInvoice').': '.($objp->ref?$objp->ref:$objp->facid).'<br>'.$langs->trans('RefSupplier').': '.$objp->ref_supplier,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid, 'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid,
); );
$this->info_box_contents[$i][3] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="left" width="16"',
'logo' => 'company',
'tooltip' => $langs->trans('Supplier').': '.$objp->name,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][4] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->name, 'text' => $societestatic->getNomUrl(1, 'supplier'),
'tooltip' => $langs->trans('Supplier').': '.$objp->name, 'asis' => 1,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid,
); );
$this->info_box_contents[$i][5] = array( $this->info_box_contents[$i][] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => dol_print_date($date,'day'), 'text' => dol_print_date($date,'day'),
); );

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2004-2009 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -93,52 +94,79 @@ class box_factures_fourn_imp extends ModeleBoxes
$late=''; $late='';
if ($datelimite && $datelimite < ($now - $conf->facture->fournisseur->warning_delay)) $late=img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day'))); if ($datelimite && $datelimite < ($now - $conf->facture->fournisseur->warning_delay)) $late=img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day')));
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $tooltip = $langs->trans('SupplierInvoice') . ': ' . ($objp->ref?$objp->ref:$objp->facid) . '<br>' . $langs->trans('RefSupplier') . ': ' . $objp->ref_supplier;
$this->info_box_contents[$i][0] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg, 'logo' => $this->boximg,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid); 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid,
);
$this->info_box_contents[$i][1] = array('td' => 'align="left"', $this->info_box_contents[$i][1] = array(
'td' => 'align="left"',
'text' => ($objp->ref?$objp->ref:$objp->facid), 'text' => ($objp->ref?$objp->ref:$objp->facid),
'text2'=> $late, 'text2'=> $late,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid); 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid,
);
$this->info_box_contents[$i][2] = array('td' => 'align="left"', $this->info_box_contents[$i][2] = array(
'td' => 'align="left"',
'text' => $objp->ref_supplier, 'text' => $objp->ref_supplier,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid); 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/fourn/facture/card.php?facid=".$objp->facid,
);
$this->info_box_contents[$i][3] = array('td' => 'align="left" width="16"', $tooltip = $langs->trans('Supplier') . ': '. $objp->name;
$this->info_box_contents[$i][3] = array(
'td' => 'align="left" width="16"',
'logo' => 'company', 'logo' => 'company',
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid); 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][4] = array('td' => 'align="left"', $this->info_box_contents[$i][4] = array(
'td' => 'align="left"',
'text' => $objp->name, 'text' => $objp->name,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid); 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][5] = array('td' => 'align="right"', $this->info_box_contents[$i][5] = array(
'text' => dol_print_date($datelimite,'day')); 'td' => 'align="right"',
'text' => dol_print_date($datelimite,'day'),
);
$fac = new FactureFournisseur($db); $fac = new FactureFournisseur($db);
$fac->fetch($objp->facid); $fac->fetch($objp->facid);
$alreadypaid=$fac->getSommePaiement(); $alreadypaid=$fac->getSommePaiement();
$this->info_box_contents[$i][6] = array('td' => 'align="right" width="18"', $this->info_box_contents[$i][6] = array(
'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3,$alreadypaid,$objp->type)); 'td' => 'align="right" width="18"',
'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3,$alreadypaid,$objp->type),
);
$i++; $i++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoUnpaidSupplierBills")); if ($num==0)
$this->info_box_contents[$i][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoUnpaidSupplierBills"),
);
$db->free($result); $db->free($result);
} } else {
else { $this->info_box_contents[0][0] = array(
$this->info_box_contents[0][0] = array( 'td' => 'align="left"', 'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} } else {
else { $this->info_box_contents[0][0] = array(
$this->info_box_contents[0][0] = array('td' => 'align="left"', 'td' => 'align="left"',
'text' => $langs->trans("ReadPermissionNotAllowed")); 'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -57,15 +58,24 @@ class box_factures_imp extends ModeleBoxes
$this->max=$max; $this->max=$max;
include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php'; include_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$facturestatic = new Facture($db); $facturestatic = new Facture($db);
$societestatic = new Societe($db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleOldestUnpaidCustomerBills",$max)); $this->info_box_head = array('text' => $langs->trans("BoxTitleOldestUnpaidCustomerBills",$max));
if ($user->rights->facture->lire) if ($user->rights->facture->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid,"; $sql = "SELECT s.nom as name, s.rowid as socid,";
$sql.= " s.code_client,";
$sql.= " s.logo,";
$sql.= " f.facnumber, f.date_lim_reglement as datelimite,"; $sql.= " f.facnumber, f.date_lim_reglement as datelimite,";
$sql.= " f.type,";
$sql.= " f.amount, f.datef as df,"; $sql.= " f.amount, f.datef as df,";
$sql.= " f.total as total_ht,";
$sql.= " f.tva as total_tva,";
$sql.= " f.total_ttc,";
$sql.= " f.paye, f.fk_statut, f.rowid as facid"; $sql.= " f.paye, f.fk_statut, f.rowid as facid";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -92,34 +102,43 @@ class box_factures_imp extends ModeleBoxes
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datelimite=$db->jdate($objp->datelimite); $datelimite=$db->jdate($objp->datelimite);
$facturestatic->id = $objp->facid;
$facturestatic->ref = $objp->facnumber;
$facturestatic->type = $objp->type;
$facturestatic->total_ht = $objp->total_ht;
$facturestatic->total_tva = $objp->total_tva;
$facturestatic->total_ttc = $objp->total_ttc;
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->client = 1;
$societestatic->code_client = $objp->code_client;
$societestatic->logo = $objp->logo;
$late=''; $late='';
if ($datelimite < ($now - $conf->facture->client->warning_delay)) $late = img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day'))); if ($datelimite < ($now - $conf->facture->client->warning_delay)) $late = img_warning(sprintf($l_due_date,dol_print_date($datelimite,'day')));
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $this->info_box_contents[$i][] = array(
'logo' => $this->boximg, 'td' => 'align="left"',
'url' => DOL_URL_ROOT."/compta/facture.php?facid=".$objp->facid); 'text' => $facturestatic->getNomUrl(1),
$this->info_box_contents[$i][1] = array('td' => 'align="left"',
'text' => $objp->facnumber,
'text2'=> $late, 'text2'=> $late,
'url' => DOL_URL_ROOT."/compta/facture.php?facid=".$objp->facid); 'asis' => 1,
);
$this->info_box_contents[$i][2] = array('td' => 'align="left" width="16"', $this->info_box_contents[$i][] = array(
'logo' => 'company', 'td' => 'align="left"',
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid); 'text' => $societestatic->getNomUrl(1, '', 44),
'asis' => 1,
);
$this->info_box_contents[$i][3] = array('td' => 'align="left"', $this->info_box_contents[$i][] = array(
'text' => $objp->name, 'td' => 'align="right"',
'maxlength'=>44,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid);
$this->info_box_contents[$i][4] = array('td' => 'align="right"',
'text' => dol_print_date($datelimite,'day'), 'text' => dol_print_date($datelimite,'day'),
); );
$this->info_box_contents[$i][5] = array('td' => 'align="right" width="18"', $this->info_box_contents[$i][] = array(
'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3)); 'td' => 'align="right" width="18"',
'text' => $facturestatic->LibStatut($objp->paye,$objp->fk_statut,3),
);
$i++; $i++;
} }
@ -130,14 +149,18 @@ class box_factures_imp extends ModeleBoxes
} }
else else
{ {
$this->info_box_contents[0][0] = array( 'td' => 'align="left"', $this->info_box_contents[0][0] = array(
'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} }
else { else {
$this->info_box_contents[0][0] = array('td' => 'align="left"', $this->info_box_contents[0][0] = array(
'text' => $langs->trans("ReadPermissionNotAllowed")); 'td' => 'align="left"',
'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> /* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2013 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2015 Frederic 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

View File

@ -1,6 +1,7 @@
<?php <?php
/* Copyright (C) 2004-2006 Destailleur Laurent <eldy@users.sourceforge.net> /* Copyright (C) 2004-2006 Destailleur Laurent <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -84,36 +85,52 @@ class box_fournisseurs extends ModeleBoxes
$datec=$db->jdate($objp->datec); $datec=$db->jdate($objp->datec);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $tooltip = $langs->trans('Supplier') . ': ' . $objp->name;
$this->info_box_contents[$i][0] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg, 'logo' => $this->boximg,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid); 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][1] = array('td' => 'align="left"', $this->info_box_contents[$i][1] = array(
'td' => 'align="left"',
'text' => $objp->name, 'text' => $objp->name,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid); 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][2] = array('td' => 'align="right"', $this->info_box_contents[$i][2] = array(
'text' => dol_print_date($datem, "day")); 'td' => 'align="right"',
'text' => dol_print_date($datem, "day"),
);
$this->info_box_contents[$i][3] = array('td' => 'align="right" width="18"', $this->info_box_contents[$i][3] = array(
'text' => $thirdpartystatic->LibStatut($objp->status,3)); 'td' => 'align="right" width="18"',
'text' => $thirdpartystatic->LibStatut($objp->status,3),
);
$i++; $i++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedSuppliers")); if ($num==0) $this->info_box_contents[$i][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedSuppliers"),
);
$db->free($result); $db->free($result);
} } else {
else { $this->info_box_contents[0][0] = array(
$this->info_box_contents[0][0] = array( 'td' => 'align="left"', 'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} } else {
else { $this->info_box_contents[0][0] = array(
$this->info_box_contents[0][0] = array('td' => 'align="left"', 'td' => 'align="left"',
'text' => $langs->trans("ReadPermissionNotAllowed")); 'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -95,8 +96,8 @@ class box_members extends ModeleBoxes
{ {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $line = 0;
while ($i < $num) while ($line < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datec=$db->jdate($objp->datec); $datec=$db->jdate($objp->datec);
@ -104,6 +105,7 @@ class box_members extends ModeleBoxes
$memberstatic->lastname=$objp->lastname; $memberstatic->lastname=$objp->lastname;
$memberstatic->firstname=$objp->firstname; $memberstatic->firstname=$objp->firstname;
$memberstatic->ref = $objp->rowid;
if (! empty($objp->fk_soc)) { if (! empty($objp->fk_soc)) {
$memberstatic->socid = $objp->fk_soc; $memberstatic->socid = $objp->fk_soc;
@ -113,36 +115,50 @@ class box_members extends ModeleBoxes
$memberstatic->name=$objp->company; $memberstatic->name=$objp->company;
} }
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $this->info_box_contents[$line][] = array(
'logo' => $this->boximg, 'td' => 'align="left"',
'url' => DOL_URL_ROOT."/adherents/card.php?rowid=".$objp->rowid); 'text' => $memberstatic->getNomUrl(1),
'asis' => 1,
);
$this->info_box_contents[$i][1] = array('td' => 'align="left"', $this->info_box_contents[$line][] = array(
'td' => 'align="left"',
'text' => $memberstatic->getFullName($langs), 'text' => $memberstatic->getFullName($langs),
'url' => DOL_URL_ROOT."/adherents/card.php?rowid=".$objp->rowid); 'url' => DOL_URL_ROOT."/adherents/card.php?rowid=".$objp->rowid,
);
$this->info_box_contents[$i][2] = array('td' => 'align="right"', $this->info_box_contents[$line][] = array(
'text' => dol_print_date($datem, "day")); 'td' => 'align="right"',
'text' => dol_print_date($datem, "day"),
);
$this->info_box_contents[$i][3] = array('td' => 'align="right" width="18"', $this->info_box_contents[$line][] = array(
'text' => $memberstatic->LibStatut($objp->status,$objp->cotisation,$db->jdate($objp->date_end_subscription),3)); 'td' => 'align="right" width="18"',
'text' => $memberstatic->LibStatut($objp->status,$objp->cotisation,$db->jdate($objp->date_end_subscription),3),
);
$i++; $line++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedCustomers")); if ($num==0)
$this->info_box_contents[$line][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedCustomers"),
);
$db->free($result); $db->free($result);
} } else {
else { $this->info_box_contents[0][0] = array(
$this->info_box_contents[0][0] = array( 'td' => 'align="left"', 'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} } else {
else { $this->info_box_contents[0][0] = array(
$this->info_box_contents[0][0] = array('align' => 'left', 'align' => 'left',
'text' => $langs->trans("ReadPermissionNotAllowed")); 'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -63,7 +64,7 @@ class box_produits extends ModeleBoxes
if ($user->rights->produit->lire || $user->rights->service->lire) if ($user->rights->produit->lire || $user->rights->service->lire)
{ {
$sql = "SELECT p.rowid, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy"; $sql = "SELECT p.rowid, p.label, p.ref, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.fk_price_expression";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= ' WHERE p.entity IN ('.getEntity($productstatic->element, 1).')'; $sql.= ' WHERE p.entity IN ('.getEntity($productstatic->element, 1).')';
if (empty($user->rights->produit->lire)) $sql.=' AND p.fk_product_type != 0'; if (empty($user->rights->produit->lire)) $sql.=' AND p.fk_product_type != 0';
@ -75,8 +76,8 @@ class box_produits extends ModeleBoxes
if ($result) if ($result)
{ {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $line = 0;
while ($i < $num) while ($line < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
@ -98,56 +99,90 @@ class box_produits extends ModeleBoxes
$objp->label = $objtp->label; $objp->label = $objtp->label;
} }
} }
$productstatic->id = $objp->rowid;
$productstatic->ref = $objp->ref;
$productstatic->type = $objp->fk_product_type;
$productstatic->label = $objp->label;
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $this->info_box_contents[$line][] = array(
'logo' => ($objp->fk_product_type==1?'object_service':'object_product'), 'td' => 'align="left"',
'url' => DOL_URL_ROOT."/product/card.php?id=".$objp->rowid); 'text' => $productstatic->getNomUrl(1),
'asis' => 1,
);
$this->info_box_contents[$i][1] = array('td' => 'align="left"', $this->info_box_contents[$line][] = array(
'td' => 'align="left"',
'text' => $objp->label, 'text' => $objp->label,
'url' => DOL_URL_ROOT."/product/card.php?id=".$objp->rowid); );
if (empty($objp->fk_price_expression)) {
$price_base_type=$langs->trans($objp->price_base_type);
$price=($objp->price_base_type == 'HT')?price($objp->price):$price=price($objp->price_ttc);
}
else //Parse the dinamic price
{
$productstatic->fetch($objp->rowid, '', '', 1);
$priceparser = new PriceParser($this->db);
$price_result = $priceparser->parseProduct($productstatic);
if ($price_result >= 0) {
if ($objp->price_base_type == 'HT') if ($objp->price_base_type == 'HT')
{ {
$price=price($objp->price);
$price_base_type=$langs->trans("HT"); $price_base_type=$langs->trans("HT");
} }
else else
{ {
$price=price($objp->price_ttc); $price_result = $price_result * (1 + ($productstatic->tva_tx / 100));
$price_base_type=$langs->trans("TTC"); $price_base_type=$langs->trans("TTC");
} }
$this->info_box_contents[$i][2] = array('td' => 'align="right"', $price=price($price_result);
'text' => $price);
$this->info_box_contents[$i][3] = array('td' => 'align="left" class="nowrap"',
'text' => $price_base_type);
$this->info_box_contents[$i][4] = array('td' => 'align="right"',
'text' => dol_print_date($datem,'day'));
$this->info_box_contents[$i][5] = array('td' => 'align="right" width="18"',
'text' => $productstatic->LibStatut($objp->tosell,3,0));
$this->info_box_contents[$i][6] = array('td' => 'align="right" width="18"',
'text' => $productstatic->LibStatut($objp->tobuy,3,1));
$i++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedProducts")); }
$this->info_box_contents[$line][] = array(
'td' => 'align="right"',
'text' => $price,
);
$this->info_box_contents[$line][] = array(
'td' => 'align="left" class="nowrap"',
'text' => $price_base_type,
);
$this->info_box_contents[$line][] = array(
'td' => 'align="right"',
'text' => dol_print_date($datem,'day'),
);
$this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"',
'text' => $productstatic->LibStatut($objp->tosell,3,0),
);
$this->info_box_contents[$line][] = array(
'td' => 'align="right" width="18"',
'text' => $productstatic->LibStatut($objp->tobuy,3,1),
);
$line++;
}
if ($num==0)
$this->info_box_contents[$line][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedProducts"),
);
$db->free($result); $db->free($result);
} } else {
else $this->info_box_contents[0][0] = array(
{ 'td' => 'align="left"',
$this->info_box_contents[0][0] = array( 'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} } else {
else { $this->info_box_contents[0][0] = array(
$this->info_box_contents[0][0] = array('td' => 'align="left"', 'td' => 'align="left"',
'text' => $langs->trans("ReadPermissionNotAllowed")); 'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -3,6 +3,7 @@
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2005-2012 Maxime Kohlhaas <mko@atm-consulting.fr> * Copyright (C) 2005-2012 Maxime Kohlhaas <mko@atm-consulting.fr>
* Copyright (C) 2015 Frederic 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
@ -64,7 +65,7 @@ class box_produits_alerte_stock extends ModeleBoxes
if ($user->rights->produit->lire || $user->rights->service->lire) if ($user->rights->produit->lire || $user->rights->service->lire)
{ {
$sql = "SELECT p.rowid, p.label, p.price, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte,"; $sql = "SELECT p.rowid, p.label, p.price, p.ref, p.price_base_type, p.price_ttc, p.fk_product_type, p.tms, p.tosell, p.tobuy, p.seuil_stock_alerte,";
$sql.= " SUM(".$db->ifsql("s.reel IS NULL","0","s.reel").") as total_stock"; $sql.= " SUM(".$db->ifsql("s.reel IS NULL","0","s.reel").") as total_stock";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_stock as s on p.rowid = s.fk_product";
@ -82,9 +83,8 @@ class box_produits_alerte_stock extends ModeleBoxes
{ {
$langs->load("stocks"); $langs->load("stocks");
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $line = 0;
while ($i < $num) while ($line < $num) {
{
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
@ -105,57 +105,90 @@ class box_produits_alerte_stock extends ModeleBoxes
$objp->label = $objtp->label; $objp->label = $objtp->label;
} }
} }
$productstatic->id = $objp->rowid;
$productstatic->ref = $objp->ref;
$productstatic->type = $objp->fk_product_type;
$productstatic->label = $objp->label;
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $this->info_box_contents[$line][] = array(
'logo' => ($objp->fk_product_type==1?'object_service':'object_product'), 'td' => 'align="left"',
'url' => DOL_URL_ROOT."/product/card.php?id=".$objp->rowid); 'text' => $productstatic->getNomUrl(1),
'asis' => 1,
);
$this->info_box_contents[$i][1] = array('td' => 'align="left"', $this->info_box_contents[$line][] = array(
'td' => 'align="left"',
'text' => $objp->label, 'text' => $objp->label,
'url' => DOL_URL_ROOT."/product/card.php?id=".$objp->rowid); );
if (empty($objp->fk_price_expression))
{
$price_base_type=$langs->trans($objp->price_base_type);
$price=($objp->price_base_type == 'HT')?price($objp->price):$price=price($objp->price_ttc);
}
else //Parse the dinamic price
{
$productstatic->fetch($objp->rowid, '', '', 1);
$priceparser = new PriceParser($this->db);
$price_result = $priceparser->parseProduct($productstatic);
if ($price_result >= 0) {
if ($objp->price_base_type == 'HT') if ($objp->price_base_type == 'HT')
{ {
$price=price($objp->price);
$price_base_type=$langs->trans("HT"); $price_base_type=$langs->trans("HT");
} }
else else
{ {
$price=price($objp->price_ttc); $price_result = $price_result * (1 + ($productstatic->tva_tx / 100));
$price_base_type=$langs->trans("TTC"); $price_base_type=$langs->trans("TTC");
} }
$this->info_box_contents[$i][2] = array('td' => 'align="right"', $price=price($price_result);
'text' => $price); }
}
$this->info_box_contents[$i][3] = array('td' => 'align="left" class="nowrap"', $this->info_box_contents[$line][] = array(
'text' => $price_base_type); 'td' => 'align="right"',
'text' => $price,
);
$this->info_box_contents[$i][4] = array('td' => 'align="center"', $this->info_box_contents[$line][] = array(
'td' => 'align="left" class="nowrap"',
'text' => $price_base_type,
);
$this->info_box_contents[$line][] = array('td' => 'align="center"',
'text' => $objp->total_stock . ' / '.$objp->seuil_stock_alerte, 'text' => $objp->total_stock . ' / '.$objp->seuil_stock_alerte,
'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit"))); 'text2'=>img_warning($langs->transnoentitiesnoconv("StockLowerThanLimit")));
$this->info_box_contents[$i][5] = array('td' => 'align="right" width="18"', $this->info_box_contents[$line][] = array('td' => 'align="right" width="18"',
'text' => $productstatic->LibStatut($objp->tosell,3,0)); 'text' => $productstatic->LibStatut($objp->tosell,3,0));
$this->info_box_contents[$i][6] = array('td' => 'align="right" width="18"', $this->info_box_contents[$line][] = array('td' => 'align="right" width="18"',
'text' => $productstatic->LibStatut($objp->tobuy,3,1)); 'text' => $productstatic->LibStatut($objp->tobuy,3,1));
$i++; $line++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoTooLowStockProducts")); if ($num==0)
$this->info_box_contents[$line][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoTooLowStockProducts"),
);
$db->free($result); $db->free($result);
} }
else else
{ {
$this->info_box_contents[0][0] = array( 'td' => 'align="left"', $this->info_box_contents[0][0] = array(
'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} }
else { else {
$this->info_box_contents[0][0] = array('td' => 'align="left"', $this->info_box_contents[0][0] = array(
'text' => $langs->trans("ReadPermissionNotAllowed")); 'td' => 'align="left"',
'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -1,6 +1,8 @@
<?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>
*
* 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
* the Free Software Foundation; either version 3 of the License, or * the Free Software Foundation; either version 3 of the License, or
@ -90,21 +92,24 @@ class box_project extends ModeleBoxes
while ($i < $num) { while ($i < $num) {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$tooltip = $langs->trans('Project') . ': ' . $objp->ref;
$this->info_box_contents[$i][0] = array( $this->info_box_contents[$i][0] = array(
'td' => 'align="left" width="16"', 'td' => 'align="left" width="16"',
'logo' => 'object_project', 'logo' => 'object_project',
'url' => DOL_URL_ROOT."/projet/card.php?id=".$objp->rowid 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/projet/card.php?id=".$objp->rowid,
); );
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->ref, 'text' => $objp->ref,
'url' => DOL_URL_ROOT."/product/card.php?id=".$objp->rowid 'tooltip' => $tooltip,
'url' => DOL_URL_ROOT."/product/card.php?id=".$objp->rowid,
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$i][2] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' => $objp->title 'text' => $objp->title,
); );
$sql ="SELECT count(*) as nb, sum(progress) as totprogress"; $sql ="SELECT count(*) as nb, sum(progress) as totprogress";
@ -114,9 +119,15 @@ class box_project extends ModeleBoxes
$resultTask = $db->query($sql); $resultTask = $db->query($sql);
if ($resultTask) { if ($resultTask) {
$objTask = $db->fetch_object($resultTask); $objTask = $db->fetch_object($resultTask);
$this->info_box_contents[$i][3] = array('td' => 'align="right"', 'text' => number_format($objTask->nb, 0, ',', ' ')."&nbsp;".$langs->trans("Tasks")); $this->info_box_contents[$i][3] = array(
'td' => 'align="right"',
'text' => number_format($objTask->nb, 0, ',', ' ')."&nbsp;".$langs->trans("Tasks"),
);
if ($objTask->nb > 0 ) if ($objTask->nb > 0 )
$this->info_box_contents[$i][4] = array('td' => 'align="right"', 'text' => number_format(($objTask->totprogress/$objTask->nb), 0, ',', ' ')."%"); $this->info_box_contents[$i][4] = array(
'td' => 'align="right"',
'text' => number_format(($objTask->totprogress/$objTask->nb), 0, ',', ' ')."%",
);
else else
$this->info_box_contents[$i][4] = array('td' => 'align="right"', 'text' => "N/A&nbsp;"); $this->info_box_contents[$i][4] = array('td' => 'align="right"', 'text' => "N/A&nbsp;");
$totalnbTask += $objTask->nb; $totalnbTask += $objTask->nb;
@ -132,11 +143,28 @@ class box_project extends ModeleBoxes
// Add the sum à the bottom of the boxes // Add the sum à the bottom of the boxes
$this->info_box_contents[$i][0] = array('tr' => 'class="liste_total"', 'td' => 'align="left" ', 'text' => $langs->trans("Total")."&nbsp;".$textHead); $this->info_box_contents[$i][0] = array(
$this->info_box_contents[$i][1] = array('td' => '', 'text' => ""); 'tr' => 'class="liste_total"',
$this->info_box_contents[$i][2] = array('td' => 'align="right" ', 'text' => number_format($num, 0, ',', ' ')."&nbsp;".$langs->trans("Projects")); 'td' => 'align="left" ',
$this->info_box_contents[$i][3] = array('td' => 'align="right" ', 'text' => number_format($totalnbTask, 0, ',', ' ')."&nbsp;".$langs->trans("Tasks")); 'text' => "&nbsp;",
$this->info_box_contents[$i][4] = array('td' => '', 'text' => ""); );
$this->info_box_contents[$i][1] = array(
'td' => '',
'text' => $langs->trans("Total")."&nbsp;".$textHead,
'text' => "&nbsp;",
);
$this->info_box_contents[$i][2] = array(
'td' => 'align="right" ',
'text' => number_format($num, 0, ',', ' ')."&nbsp;".$langs->trans("Projects"),
);
$this->info_box_contents[$i][3] = array(
'td' => 'align="right" ',
'text' => number_format($totalnbTask, 0, ',', ' ')."&nbsp;".$langs->trans("Tasks"),
);
$this->info_box_contents[$i][4] = array(
'td' => '',
'text' => "&nbsp;",
);
} }

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2007 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -56,14 +57,16 @@ class box_propales extends ModeleBoxes
$this->max=$max; $this->max=$max;
include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php'; include_once DOL_DOCUMENT_ROOT.'/comm/propal/class/propal.class.php';
include_once DOL_DOCUMENT_ROOT.'/societe/class/societe.class.php';
$propalstatic=new Propal($db); $propalstatic=new Propal($db);
$societestatic = new Societe($db);
$this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."Propals",$max)); $this->info_box_head = array('text' => $langs->trans("BoxTitleLast".($conf->global->MAIN_LASTBOX_ON_OBJECT_DATE?"":"Modified")."Propals",$max));
if ($user->rights->propale->lire) if ($user->rights->propale->lire)
{ {
$sql = "SELECT s.nom as name, s.rowid as socid,"; $sql = "SELECT s.nom as name, s.rowid as socid, s.code_client, s.logo,";
$sql.= " p.rowid, p.ref, p.fk_statut, p.datep as dp, p.datec, p.fin_validite, p.date_cloture, p.total_ht, p.tms"; $sql.= " p.rowid, p.ref, p.fk_statut, p.datep as dp, p.datec, p.fin_validite, p.date_cloture, p.total_ht, p.tva as total_tva, p.total as total_ttc, p.tms";
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s"; $sql.= " FROM ".MAIN_DB_PREFIX."societe as s";
$sql.= ", ".MAIN_DB_PREFIX."propal as p"; $sql.= ", ".MAIN_DB_PREFIX."propal as p";
if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc"; if (!$user->rights->societe->client->voir && !$user->societe_id) $sql.= ", ".MAIN_DB_PREFIX."societe_commerciaux as sc";
@ -81,67 +84,80 @@ class box_propales extends ModeleBoxes
$num = $db->num_rows($result); $num = $db->num_rows($result);
$now=dol_now(); $now=dol_now();
$i = 0; $line = 0;
while ($i < $num) while ($line < $num) {
{
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$date=$db->jdate($objp->dp); $date=$db->jdate($objp->dp);
$datec=$db->jdate($objp->datec); $datec=$db->jdate($objp->datec);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
$dateterm=$db->jdate($objp->fin_validite); $dateterm=$db->jdate($objp->fin_validite);
$dateclose=$db->jdate($objp->date_cloture); $dateclose=$db->jdate($objp->date_cloture);
$propalstatic->id = $objp->rowid;
$propalstatic->ref = $objp->ref;
$propalstatic->total_ht = $objp->total_ht;
$propalstatic->total_tva = $objp->total_tva;
$propalstatic->total_ttc = $objp->total_ttc;
$societestatic->id = $objp->socid;
$societestatic->name = $objp->name;
$societestatic->code_client = $objp->code_client;
$societestatic->logo = $objp->logo;
$late = ''; $late = '';
if ($objp->fk_statut == 1 && $dateterm < ($now - $conf->propal->cloture->warning_delay)) { if ($objp->fk_statut == 1 && $dateterm < ($now - $conf->propal->cloture->warning_delay)) {
$late = img_warning($langs->trans("Late")); $late = img_warning($langs->trans("Late"));
} }
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $this->info_box_contents[$line][] = array(
'logo' => $this->boximg, 'td' => 'align="left"',
'url' => DOL_URL_ROOT."/comm/propal.php?id=".$objp->rowid); 'text' => $propalstatic->getNomUrl(1),
$this->info_box_contents[$i][1] = array('td' => 'align="left"',
'text' => $objp->ref,
'text2'=> $late, 'text2'=> $late,
'url' => DOL_URL_ROOT."/comm/propal.php?id=".$objp->rowid); 'asis' => 1,
);
$this->info_box_contents[$i][2] = array('td' => 'align="left" width="16"', $this->info_box_contents[$line][] = array(
'logo' => 'company', 'td' => 'align="left"',
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid); 'text' => $societestatic->getNomUrl(1,'',40),
'asis' => 1,
);
$this->info_box_contents[$i][3] = array('td' => 'align="left"', $this->info_box_contents[$line][] = array(
'text' => dol_trunc($objp->name,40), 'td' => 'align="right"',
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid);
$this->info_box_contents[$i][4] = array('td' => 'align="right"',
'text' => price($objp->total_ht), 'text' => price($objp->total_ht),
); );
$this->info_box_contents[$i][5] = array('td' => 'align="right"', $this->info_box_contents[$line][] = array(
'text' => dol_print_date($date,'day')); 'td' => 'align="right"',
'text' => dol_print_date($date,'day'),
);
$this->info_box_contents[$i][6] = array('td' => 'align="right" width="18"', $this->info_box_contents[$line][] = array(
'text' => $propalstatic->LibStatut($objp->fk_statut,3)); 'td' => 'align="right" width="18"',
'text' => $propalstatic->LibStatut($objp->fk_statut,3),
);
$i++; $line++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedProposals")); if ($num==0)
$this->info_box_contents[$line][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedProposals"),
);
$db->free($result); $db->free($result);
} } else {
else $this->info_box_contents[0][0] = array(
{ 'td' => 'align="left"',
$this->info_box_contents[0][0] = array( 'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} } else {
else $this->info_box_contents[0][0] = array(
{ 'td' => 'align="left"',
$this->info_box_contents[0][0] = array('td' => 'align="left"', 'text' => $langs->trans("ReadPermissionNotAllowed"),
'text' => $langs->trans("ReadPermissionNotAllowed")); );
} }
} }

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org> /* Copyright (C) 2003-2007 Rodolphe Quiedeville <rodolphe@quiedeville.org>
* Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2004-2011 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2015 Frederic 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
@ -104,41 +105,58 @@ class box_prospect extends ModeleBoxes
$datec=$db->jdate($objp->datec); $datec=$db->jdate($objp->datec);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $this->info_box_contents[$i][0] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg, 'logo' => $this->boximg,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid); 'tooltip' => $objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][1] = array('td' => 'align="left"', $this->info_box_contents[$i][1] = array(
'td' => 'align="left"',
'text' => $objp->name, 'text' => $objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid); 'tooltip' => $objp->name,
'url' => DOL_URL_ROOT."/comm/card.php?socid=".$objp->socid,
);
$this->info_box_contents[$i][2] = array('td' => 'align="right"', $this->info_box_contents[$i][2] = array(
'text' => dol_print_date($datem, "day")); 'td' => 'align="right"',
'text' => dol_print_date($datem, "day"),
);
$this->info_box_contents[$i][3] = array('td' => 'align="right" width="18"', $this->info_box_contents[$i][3] = array(
'text' => str_replace('img ','img height="14" ',$prospectstatic->LibProspStatut($objp->fk_stcomm,3))); 'td' => 'align="right" width="18"',
'text' => str_replace('img ','img height="14" ',$prospectstatic->LibProspStatut($objp->fk_stcomm,3)),
);
$this->info_box_contents[$i][4] = array('td' => 'align="right" width="18"', $this->info_box_contents[$i][4] = array(
'text' => $thirdpartystatic->LibStatut($objp->status,3)); 'td' => 'align="right" width="18"',
'text' => $thirdpartystatic->LibStatut($objp->status,3),
);
$i++; $i++;
} }
if ($num==0) $this->info_box_contents[$i][0] = array('td' => 'align="center"','text'=>$langs->trans("NoRecordedProspects")); if ($num==0)
$this->info_box_contents[$i][0] = array(
'td' => 'align="center"',
'text'=>$langs->trans("NoRecordedProspects"),
);
$db->free($resql); $db->free($resql);
} } else {
else $this->info_box_contents[0][0] = array(
{ 'td' => 'align="left"',
$this->info_box_contents[0][0] = array( 'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} } else {
else {
dol_syslog("box_prospect::loadBox not allowed de read this box content",LOG_ERR); dol_syslog("box_prospect::loadBox not allowed de read this box content",LOG_ERR);
$this->info_box_contents[0][0] = array('td' => 'align="left"', $this->info_box_contents[0][0] = array(
'text' => $langs->trans("ReadPermissionNotAllowed")); 'td' => 'align="left"',
'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -3,6 +3,7 @@
/* Copyright (C) 2004-2006 Destailleur Laurent <eldy@users.sourceforge.net> /* Copyright (C) 2004-2006 Destailleur Laurent <eldy@users.sourceforge.net>
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2012 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2012 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* Copyright (C) 2015 Frederic 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
@ -82,8 +83,7 @@ class box_supplier_orders extends ModeleBoxes
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num) {
{
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$date=$db->jdate($objp->date_commande); $date=$db->jdate($objp->date_commande);
$datem=$db->jdate($objp->tms); $datem=$db->jdate($objp->tms);
@ -91,48 +91,70 @@ class box_supplier_orders extends ModeleBoxes
$urlo = DOL_URL_ROOT."/fourn/commande/card.php?id=".$objp->rowid; $urlo = DOL_URL_ROOT."/fourn/commande/card.php?id=".$objp->rowid;
$urls = DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid; $urls = DOL_URL_ROOT."/fourn/card.php?socid=".$objp->socid;
$this->info_box_contents[$i][0] = array('td' => 'align="left" width="16"', $tooltip = $langs->trans('SupplierOrder') . ': ' . $objp->ref;
$this->info_box_contents[$i][0] = array(
'td' => 'align="left" width="16"',
'logo' => $this->boximg, 'logo' => $this->boximg,
'url' => $urlo); 'tooltip' => $tooltip,
'url' => $urlo,
);
$this->info_box_contents[$i][1] = array('td' => 'align="left"', $this->info_box_contents[$i][1] = array(
'td' => 'align="left"',
'text' => $objp->ref, 'text' => $objp->ref,
'url' => $urlo); 'tooltip' => $tooltip,
'url' => $urlo,
);
$this->info_box_contents[$i][2] = array('td' => 'align="left" width="16"', $tooltip = $langs->trans('Supplier') . ': ' . $objp->name;
$this->info_box_contents[$i][2] = array(
'td' => 'align="left" width="16"',
'logo' => 'company', 'logo' => 'company',
'url' => $urls); 'tooltip' => $tooltip,
'url' => $urls,
);
$this->info_box_contents[$i][3] = array('td' => 'align="left"', $this->info_box_contents[$i][3] = array(
'td' => 'align="left"',
'text' => $objp->name, 'text' => $objp->name,
'url' => $urls); 'tooltip' => $tooltip,
'url' => $urls,
);
$this->info_box_contents[$i][4] = array('td' => 'align="right"', $this->info_box_contents[$i][4] = array(
'td' => 'align="right"',
'text' => dol_print_date($date,'day'), 'text' => dol_print_date($date,'day'),
); );
$this->info_box_contents[$i][5] = array('td' => 'align="right" width="18"', $this->info_box_contents[$i][5] = array(
'text' => $supplierorderstatic->LibStatut($objp->fk_statut,3)); 'td' => 'align="right" width="18"',
'text' => $supplierorderstatic->LibStatut($objp->fk_statut,3),
);
$i++; $i++;
} }
if ($num == 0) if ($num == 0)
$this->info_box_contents[$i][0] = array('td' => 'align="center"', 'text' => $langs->trans("NoSupplierOrder")); $this->info_box_contents[$i][0] = array(
'td' => 'align="center"',
'text' => $langs->trans("NoSupplierOrder"),
);
$db->free($result); $db->free($result);
} } else {
else $this->info_box_contents[0][0] = array(
{ 'td' => 'align="left"',
$this->info_box_contents[0][0] = array( 'td' => 'align="left"',
'maxlength'=>500, 'maxlength'=>500,
'text' => ($db->error().' sql='.$sql)); 'text' => ($db->error().' sql='.$sql),
);
} }
} }
else else
{ {
$this->info_box_contents[0][0] = array('td' => 'align="left"', $this->info_box_contents[0][0] = array(
'text' => $langs->trans("ReadPermissionNotAllowed")); 'td' => 'align="left"',
'text' => $langs->trans("ReadPermissionNotAllowed"),
);
} }
} }

View File

@ -1,5 +1,6 @@
<?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) 2015 Frederic 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
@ -99,13 +100,13 @@ class box_task extends ModeleBoxes
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$this->info_box_contents[$i][1] = array( $this->info_box_contents[$i][1] = array(
'td' => 'align="left"', 'td' => 'align="left"',
'text' =>$langs->trans("Task")."&nbsp;".$taskstatic->LibStatut($objp->fk_statut,0) 'text' =>$langs->trans("Task")."&nbsp;".$taskstatic->LibStatut($objp->fk_statut,0),
); );
$this->info_box_contents[$i][2] = array( $this->info_box_contents[$i][2] = array(
'td' => 'align="right"', 'td' => 'align="right"',
'text' => $objp->nb."&nbsp;".$langs->trans("Tasks"), 'text' => $objp->nb."&nbsp;".$langs->trans("Tasks"),
'url' => DOL_URL_ROOT."/projet/tasks/index.php?leftmenu=projects&viewstatut=".$objp->fk_statut 'url' => DOL_URL_ROOT."/projet/tasks/index.php?leftmenu=projects&viewstatut=".$objp->fk_statut,
); );
$totalnb += $objp->nb; $totalnb += $objp->nb;
$this->info_box_contents[$i][3] = array('td' => 'align="right"', 'text' => ConvertSecondToTime($objp->plannedtot,'all',25200,5)); $this->info_box_contents[$i][3] = array('td' => 'align="right"', 'text' => ConvertSecondToTime($objp->plannedtot,'all',25200,5));

View File

@ -2,6 +2,7 @@
/* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr>
* Copyright (C) 2015 Frederic 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
@ -178,7 +179,9 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
*/ */
function showBox($head, $contents) function showBox($head, $contents)
{ {
global $langs,$conf; global $langs, $user, $conf;
require_once DOL_DOCUMENT_ROOT .'/core/lib/files.lib.php';
$MAXLENGTHBOX=60; // Mettre 0 pour pas de limite $MAXLENGTHBOX=60; // Mettre 0 pour pas de limite
$bcx = array(); $bcx = array();
@ -186,6 +189,14 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
$bcx[1] = 'class="box_impair"'; $bcx[1] = 'class="box_impair"';
$var = false; $var = false;
$cachetime = 900; // 900 : 15mn
$cachedir = DOL_DATA_ROOT.'/boxes/temp';
$fileid = get_class($this).'id-'.$this->box_id.'-e'.$conf->entity.'-u'.$user->id.'-s'.$user->societe_id.'.cache';
$filename = '/box-'.$fileid;
$refresh = dol_cache_refresh($cachedir, $filename, $cachetime);
$out = '';
if ($refresh) {
dol_syslog(get_class($this).'::showBox'); dol_syslog(get_class($this).'::showBox');
// Define nbcol and nblines of the box to show // Define nbcol and nblines of the box to show
@ -193,57 +204,57 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
if (isset($contents[0])) $nbcol=count($contents[0]); if (isset($contents[0])) $nbcol=count($contents[0]);
$nblines=count($contents); $nblines=count($contents);
print "\n\n<!-- Box start -->\n"; $out.= "\n<!-- Box ".get_class($this)." start -->\n";
print '<div class="box" id="boxto_'.$this->box_id.'">'."\n"; $out.= '<div class="box" id="boxto_'.$this->box_id.'">'."\n";
if (! empty($head['text']) || ! empty($head['sublink']) || ! empty($head['subpicto']) || $nblines) if (! empty($head['text']) || ! empty($head['sublink']) || ! empty($head['subpicto']) || $nblines)
{ {
print '<table summary="boxtable'.$this->box_id.'" width="100%" class="noborder boxtable">'."\n"; $out.= '<table summary="boxtable'.$this->box_id.'" width="100%" class="noborder boxtable">'."\n";
} }
// Show box title // Show box title
if (! empty($head['text']) || ! empty($head['sublink']) || ! empty($head['subpicto'])) if (! empty($head['text']) || ! empty($head['sublink']) || ! empty($head['subpicto']))
{ {
//print '<div id="boxto_'.$this->box_id.'_title">'."\n"; //$out.= '<div id="boxto_'.$this->box_id.'_title">'."\n";
//print '<table summary="boxtabletitle'.$this->box_id.'" width="100%" class="noborder">'."\n"; //$out.= '<table summary="boxtabletitle'.$this->box_id.'" width="100%" class="noborder">'."\n";
print '<tr class="box_titre">'; $out.= '<tr class="box_titre">';
print '<td'; $out.= '<td';
if ($nbcol > 0) { print ' colspan="'.$nbcol.'"'; } if ($nbcol > 0) { $out.= ' colspan="'.$nbcol.'"'; }
print '>'; $out.= '>';
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)
{ {
print '<table summary="" class="nobordernopadding" width="100%"><tr><td>'; $out.= '<table summary="" class="nobordernopadding" width="100%"><tr><td>';
} }
if (! empty($head['text'])) if (! empty($head['text']))
{ {
$s=dol_trunc($head['text'],isset($head['limit'])?$head['limit']:$MAXLENGTHBOX); $s=dol_trunc($head['text'],isset($head['limit'])?$head['limit']:$MAXLENGTHBOX);
print $s; $out.= $s;
} }
print ' '; $out.= ' ';
if (! empty($head['sublink'])) print '<a href="'.$head['sublink'].'"'.(empty($head['target'])?' target="_blank"':'').'>'; if (! empty($head['sublink'])) $out.= '<a href="'.$head['sublink'].'"'.(empty($head['target'])?' target="_blank"':'').'>';
if (! empty($head['subpicto'])) print img_picto($head['subtext'], $head['subpicto'], 'class="'.(empty($head['subclass'])?'':$head['subclass']).'" id="idsubimg'.$this->boxcode.'"'); if (! empty($head['subpicto'])) $out.= img_picto($head['subtext'], $head['subpicto'], 'class="'.(empty($head['subclass'])?'':$head['subclass']).'" id="idsubimg'.$this->boxcode.'"');
if (! empty($head['sublink'])) '</a>'; if (! empty($head['sublink'])) '</a>';
if (! empty($conf->use_javascript_ajax)) if (! empty($conf->use_javascript_ajax))
{ {
print '</td><td class="nocellnopadd boxclose nowrap">'; $out.= '</td><td class="nocellnopadd boxclose nowrap">';
// The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object // The image must have the class 'boxhandle' beause it's value used in DOM draggable objects to define the area used to catch the full object
print img_picto($langs->trans("MoveBox",$this->box_id),'grip_title','class="boxhandle hideonsmartphone" style="cursor:move;"'); $out.= img_picto($langs->trans("MoveBox",$this->box_id),'grip_title','class="boxhandle hideonsmartphone" style="cursor:move;"');
print img_picto($langs->trans("Close2",$this->box_id),'close_title','class="boxclose" rel="x:y" style="cursor:pointer;" id="imgclose'.$this->box_id.'"'); $out.= img_picto($langs->trans("Close2",$this->box_id),'close_title','class="boxclose" rel="x:y" style="cursor:pointer;" id="imgclose'.$this->box_id.'"');
$label=$head['text']; $label=$head['text'];
if (! empty($head['graph'])) $label.=' ('.$langs->trans("Graph").')'; if (! empty($head['graph'])) $label.=' ('.$langs->trans("Graph").')';
print '<input type="hidden" id="boxlabelentry'.$this->box_id.'" value="'.dol_escape_htmltag($label).'">'; $out.= '<input type="hidden" id="boxlabelentry'.$this->box_id.'" value="'.dol_escape_htmltag($label).'">';
print '</td></tr></table>'; $out.= '</td></tr></table>';
} }
print '</td>'; $out.= '</td>';
print "</tr>\n"; $out.= "</tr>\n";
//print "</table>\n"; //$out.= "</table>\n";
//print "</div>\n"; //$out.= "</div>\n";
} }
// Show box lines // Show box lines
if ($nblines) if ($nblines)
{ {
//print '<table summary="boxtablelines'.$this->box_id.'" width="100%" class="noborder">'."\n"; //$out.= '<table summary="boxtablelines'.$this->box_id.'" width="100%" class="noborder">'."\n";
// Loop on each record // Loop on each record
for ($i=0, $n=$nblines; $i < $n; $i++) for ($i=0, $n=$nblines; $i < $n; $i++)
{ {
@ -252,8 +263,8 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
$var=!$var; $var=!$var;
// TR // TR
if (isset($contents[$i][0]['tr'])) print '<tr valign="top" '.$contents[$i][0]['tr'].'>'; if (isset($contents[$i][0]['tr'])) $out.= '<tr valign="top" '.$contents[$i][0]['tr'].'>';
else print '<tr valign="top" '.$bcx[$var].'>'; else $out.= '<tr valign="top" '.$bcx[$var].'>';
// Loop on each TD // Loop on each TD
$nbcolthisline=count($contents[$i]); $nbcolthisline=count($contents[$i]);
@ -268,62 +279,72 @@ class ModeleBoxes // Can't be abtract as it is instantiated to build "empty"
$text2=isset($contents[$i][$j]['text2'])?$contents[$i][$j]['text2']:''; $text2=isset($contents[$i][$j]['text2'])?$contents[$i][$j]['text2']:'';
$text2withnotags=preg_replace('/<([^>]+)>/i','',$text2); $text2withnotags=preg_replace('/<([^>]+)>/i','',$text2);
$textnoformat=isset($contents[$i][$j]['textnoformat'])?$contents[$i][$j]['textnoformat']:''; $textnoformat=isset($contents[$i][$j]['textnoformat'])?$contents[$i][$j]['textnoformat']:'';
//print "xxx $textwithnotags y"; //$out.= "xxx $textwithnotags y";
if (empty($contents[$i][$j]['tooltip'])) $contents[$i][$j]['tooltip']=""; if (empty($contents[$i][$j]['tooltip'])) $contents[$i][$j]['tooltip']="";
$tooltip=isset($contents[$i][$j]['tooltip'])?$contents[$i][$j]['tooltip']:''; $tooltip=isset($contents[$i][$j]['tooltip'])?$contents[$i][$j]['tooltip']:'';
print '<td'.$tdparam.'>'."\n"; $out.= '<td'.$tdparam.'>'."\n";
// Url // Url
if (! empty($contents[$i][$j]['url']) && empty($contents[$i][$j]['logo'])) if (! empty($contents[$i][$j]['url']) && empty($contents[$i][$j]['logo']))
{ {
print '<a href="'.$contents[$i][$j]['url'].'" title="'.dol_escape_htmltag($langs->trans("Show").' '.$tooltip, 1).'" class="classfortooltip"'; $out.= '<a href="'.$contents[$i][$j]['url'].'" title="'.dol_escape_htmltag($langs->trans("Show").' '.$tooltip, 1).'" class="classfortooltip"';
//print ' alt="'.$textwithnotags.'"'; // Pas de alt sur un "<a href>" //$out.= ' alt="'.$textwithnotags.'"'; // Pas de alt sur un "<a href>"
print isset($contents[$i][$j]['target'])?' target="'.$contents[$i][$j]['target'].'"':''; $out.= isset($contents[$i][$j]['target'])?' target="'.$contents[$i][$j]['target'].'"':'';
print '>'; $out.= '>';
} }
// Logo // Logo
if (! empty($contents[$i][$j]['logo'])) if (! empty($contents[$i][$j]['logo']))
{ {
$logo=preg_replace("/^object_/i","",$contents[$i][$j]['logo']); $logo=preg_replace("/^object_/i","",$contents[$i][$j]['logo']);
print '<a href="'.$contents[$i][$j]['url'].'">'; $out.= '<a href="'.$contents[$i][$j]['url'].'">';
print img_object($langs->trans("Show").' '.$tooltip, $logo, 'class="classfortooltip"'); $out.= img_object($langs->trans("Show").' '.$tooltip, $logo, 'class="classfortooltip"');
} }
$maxlength=$MAXLENGTHBOX; $maxlength=$MAXLENGTHBOX;
if (! empty($contents[$i][$j]['maxlength'])) $maxlength=$contents[$i][$j]['maxlength']; if (! empty($contents[$i][$j]['maxlength'])) $maxlength=$contents[$i][$j]['maxlength'];
if ($maxlength) $textwithnotags=dol_trunc($textwithnotags,$maxlength); if ($maxlength) $textwithnotags=dol_trunc($textwithnotags,$maxlength);
if (preg_match('/^<img/i',$text) || ! empty($contents[$i][$j]['asis'])) print $text; // show text with no html cleaning if (preg_match('/^<img/i',$text) || ! empty($contents[$i][$j]['asis'])) $out.= $text; // show text with no html cleaning
else print $textwithnotags; // show text with html cleaning else $out.= $textwithnotags; // show text with html cleaning
// End Url // End Url
if (! empty($contents[$i][$j]['url'])) print '</a>'; if (! empty($contents[$i][$j]['url'])) $out.= '</a>';
if (preg_match('/^<img/i',$text2) || ! empty($contents[$i][$j]['asis2'])) print $text2; // show text with no html cleaning if (preg_match('/^<img/i',$text2) || ! empty($contents[$i][$j]['asis2'])) $out.= $text2; // show text with no html cleaning
else print $text2withnotags; // show text with html cleaning else $out.= $text2withnotags; // show text with html cleaning
if (! empty($textnoformat)) print "\n".$textnoformat."\n"; if (! empty($textnoformat)) $out.= "\n".$textnoformat."\n";
print "</td>\n"; $out.= "</td>\n";
} }
print "</tr>\n"; $out.= "</tr>\n";
} }
} }
} }
if (! empty($head['text']) || ! empty($head['sublink']) || ! empty($head['subpicto']) || $nblines) if (! empty($head['text']) || ! empty($head['sublink']) || ! empty($head['subpicto']) || $nblines)
{ {
print "</table>\n"; $out.= "</table>\n";
} }
// If invisible box with no contents // If invisible box with no contents
if (empty($head['text']) && empty($head['sublink']) && empty($head['subpicto']) && ! $nblines) print "<br>\n"; if (empty($head['text']) && empty($head['sublink']) && empty($head['subpicto']) && ! $nblines) $out.= "<br>\n";
print "</div>\n"; $out.= "</div>\n";
print "<!-- Box end -->\n\n"; $out.= "<!-- Box ".get_class($this)." end -->\n\n";
if (! empty($conf->global->MAIN_ACTIVATE_FILECACHE)) {
dol_filecache($cachedir, $filename, $out);
}
} else {
dol_syslog(get_class($this).'::showBoxCached');
$out = dol_readcachefile($cachedir, $filename);
print "<!-- Box ".get_class($this)." from cache -->";
}
print $out;
} }
} }

View File

@ -737,7 +737,8 @@ abstract class CommonObject
$project = new Project($this->db); $project = new Project($this->db);
$result = $project->fetch($this->fk_project); $result = $project->fetch($this->fk_project);
$this->projet = $project; $this->projet = $project; // deprecated
$this->project = $project;
return $result; return $result;
} }
@ -2691,6 +2692,8 @@ abstract class CommonObject
$product_static->type=$line->fk_product_type; $product_static->type=$line->fk_product_type;
$product_static->id=$line->fk_product; $product_static->id=$line->fk_product;
$product_static->ref=$line->ref; $product_static->ref=$line->ref;
if (! empty($line->entity))
$product_static->entity=$line->entity;
$text=$product_static->getNomUrl(1); $text=$product_static->getNomUrl(1);
// Define output language and label // Define output language and label

57
htdocs/core/class/html.form.class.php Executable file → Normal file
View File

@ -832,8 +832,9 @@ class Form
if ($conf->use_javascript_ajax && ! $forcecombo) if ($conf->use_javascript_ajax && ! $forcecombo)
{ {
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$out.= ajax_combobox($htmlname, $events, $conf->global->COMPANY_USE_SEARCH_TO_SELECT); $comboenhancement =ajax_combobox($htmlname, $events, $conf->global->COMPANY_USE_SEARCH_TO_SELECT);
$nodatarole=' data-role="none"'; $out.= $comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':'');
} }
// Construct $out and $outarray // Construct $out and $outarray
@ -1037,8 +1038,9 @@ class Form
if ($conf->use_javascript_ajax && ! $forcecombo && ! $options_only) if ($conf->use_javascript_ajax && ! $forcecombo && ! $options_only)
{ {
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$out.= ajax_combobox($htmlname, $events, $conf->global->CONTACT_USE_SEARCH_TO_SELECT); $comboenhancement = ajax_combobox($htmlname, $events, $conf->global->CONTACT_USE_SEARCH_TO_SELECT);
$nodatarole=' data-role="none"'; $out.= $comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':'');
} }
if ($htmlname != 'none' || $options_only) $out.= '<select class="flat'.($moreclass?' '.$moreclass:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>'; if ($htmlname != 'none' || $options_only) $out.= '<select class="flat'.($moreclass?' '.$moreclass:'').'" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';
@ -1227,12 +1229,13 @@ class Form
{ {
// Enhance with select2 // Enhance with select2
$nodatarole=''; $nodatarole='';
/*if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)
{ {
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$out.= ajax_combobox($htmlname); $comboenhancement = ajax_combobox($htmlname);
$nodatarole=' data-role="none"'; $out.=$comboenhancement;
}*/ $nodatarole=($comboenhancement?' data-role="none"':'');
}
$out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled="disabled"':'').$nodatarole.'>'; $out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled="disabled"':'').$nodatarole.'>';
if ($show_empty) $out.= '<option value="-1"'.((empty($selected) || $selected==-1)?' selected="selected"':'').'>&nbsp;</option>'."\n"; if ($show_empty) $out.= '<option value="-1"'.((empty($selected) || $selected==-1)?' selected="selected"':'').'>&nbsp;</option>'."\n";
@ -1466,7 +1469,7 @@ class Form
$outarray=array(); $outarray=array();
$sql = "SELECT "; $sql = "SELECT ";
$sql.= " p.rowid, p.label, p.ref, p.description, p.fk_product_type, p.price, p.price_ttc, p.price_base_type, p.tva_tx, p.duration, p.stock"; $sql.= " p.rowid, p.label, p.ref, p.description, p.fk_product_type, p.price, p.price_ttc, p.price_base_type, p.tva_tx, p.duration, p.stock, p.fk_price_expression";
//Price by customer //Price by customer
if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES) && !empty($socid)) { if (! empty($conf->global->PRODUIT_CUSTOMER_PRICES) && !empty($socid)) {
@ -1545,6 +1548,8 @@ class Form
$result=$this->db->query($sql); $result=$this->db->query($sql);
if ($result) if ($result)
{ {
require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
require_once DOL_DOCUMENT_ROOT.'/product/class/priceparser.class.php';
$num = $this->db->num_rows($result); $num = $this->db->num_rows($result);
$out.='<select class="flat" name="'.$htmlname.'" id="'.$htmlname.'">'; $out.='<select class="flat" name="'.$htmlname.'" id="'.$htmlname.'">';
@ -1594,6 +1599,19 @@ class Form
} }
else else
{ {
if (!empty($objp->fk_price_expression)) {
$price_product = new Product($this->db);
$price_product->fetch($objp->rowid, '', '', 1);
$priceparser = new PriceParser($this->db);
$price_result = $priceparser->parseProduct($price_product);
if ($price_result >= 0) {
$objp->price = $price_result;
$objp->unitprice = $price_result;
//Calculate the VAT
$objp->price_ttc = price2num($objp->price) * (1 + ($objp->tva_tx / 100));
$objp->price_ttc = price2num($objp->price_ttc,'MU');
}
}
$this->constructProductListOption($objp, $opt, $optJson, $price_level, $selected); $this->constructProductListOption($objp, $opt, $optJson, $price_level, $selected);
// Add new entry // Add new entry
// "key" value of json key array is used by jQuery automatically as selected value // "key" value of json key array is used by jQuery automatically as selected value
@ -1875,7 +1893,7 @@ class Form
$sql = "SELECT p.rowid, p.label, p.ref, p.price, p.duration,"; $sql = "SELECT p.rowid, p.label, p.ref, p.price, p.duration,";
$sql.= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.remise_percent, pfp.remise, pfp.unitprice,"; $sql.= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.remise_percent, pfp.remise, pfp.unitprice,";
$sql.= " pfp.fk_price_expression, pfp.fk_product, pfp.tva_tx, s.nom as name"; $sql.= " pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, s.nom as name";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product";
if ($socid) $sql.= " AND pfp.fk_soc = ".$socid; if ($socid) $sql.= " AND pfp.fk_soc = ".$socid;
@ -1957,9 +1975,9 @@ class Form
{ {
$outqty=$objp->quantity; $outqty=$objp->quantity;
$outdiscount=$objp->remise_percent; $outdiscount=$objp->remise_percent;
if (!empty($objp->fk_price_expression)) { if (!empty($objp->fk_supplier_price_expression)) {
$priceparser = new PriceParser($this->db); $priceparser = new PriceParser($this->db);
$price_result = $priceparser->parseProductSupplier($objp->fk_product, $objp->fk_price_expression, $objp->quantity, $objp->tva_tx); $price_result = $priceparser->parseProductSupplier($objp->fk_product, $objp->fk_supplier_price_expression, $objp->quantity, $objp->tva_tx);
if ($price_result >= 0) { if ($price_result >= 0) {
$objp->fprice = $price_result; $objp->fprice = $price_result;
if ($objp->quantity >= 1) if ($objp->quantity >= 1)
@ -2056,7 +2074,7 @@ class Form
$sql = "SELECT p.rowid, p.label, p.ref, p.price, p.duration,"; $sql = "SELECT p.rowid, p.label, p.ref, p.price, p.duration,";
$sql.= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.unitprice,"; $sql.= " pfp.ref_fourn, pfp.rowid as idprodfournprice, pfp.price as fprice, pfp.quantity, pfp.unitprice,";
$sql.= " pfp.fk_price_expression, pfp.fk_product, pfp.tva_tx, s.nom as name"; $sql.= " pfp.fk_supplier_price_expression, pfp.fk_product, pfp.tva_tx, s.nom as name";
$sql.= " FROM ".MAIN_DB_PREFIX."product as p"; $sql.= " FROM ".MAIN_DB_PREFIX."product as p";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product_fournisseur_price as pfp ON p.rowid = pfp.fk_product";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."societe as s ON pfp.fk_soc = s.rowid";
@ -2096,9 +2114,9 @@ class Form
} }
$opt.= '>'.$objp->name.' - '.$objp->ref_fourn.' - '; $opt.= '>'.$objp->name.' - '.$objp->ref_fourn.' - ';
if (!empty($objp->fk_price_expression)) { if (!empty($objp->fk_supplier_price_expression)) {
$priceparser = new PriceParser($this->db); $priceparser = new PriceParser($this->db);
$price_result = $priceparser->parseProductSupplier($objp->fk_product, $objp->fk_price_expression, $objp->quantity, $objp->tva_tx); $price_result = $priceparser->parseProductSupplier($objp->fk_product, $objp->fk_supplier_price_expression, $objp->quantity, $objp->tva_tx);
if ($price_result >= 0) { if ($price_result >= 0) {
$objp->fprice = $price_result; $objp->fprice = $price_result;
if ($objp->quantity >= 1) if ($objp->quantity >= 1)
@ -4273,7 +4291,7 @@ class Form
// Try also magic suggest // Try also magic suggest
// Add data-role="none" to diable jmobile decoration // Add data-role="none" to disable jmobile decoration
$out = '<select data-role="none" id="'.$htmlname.'" class="multiselect" multiple="multiple" name="'.$htmlname.'[]"'.$option.($width?' style="width: '.$width.'px"':'').'>'."\n"; $out = '<select data-role="none" id="'.$htmlname.'" class="multiselect" multiple="multiple" name="'.$htmlname.'[]"'.$option.($width?' style="width: '.$width.'px"':'').'>'."\n";
if (is_array($array) && ! empty($array)) if (is_array($array) && ! empty($array))
{ {
@ -4488,7 +4506,7 @@ class Form
* @param int $width Width of photo * @param int $width Width of photo
* @return string HTML code to output photo * @return string HTML code to output photo
*/ */
function showphoto($modulepart,$object,$width=100) static function showphoto($modulepart,$object,$width=100)
{ {
global $conf; global $conf;
@ -4613,8 +4631,9 @@ class Form
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)
{ {
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$out.= ajax_combobox($htmlname); $comboenhancement = ajax_combobox($htmlname);
$nodatarole=' data-role="none"'; $out.= $comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':'');
} }
$out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled="disabled"':'').$nodatarole.'>'; $out.= '<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.($disabled?' disabled="disabled"':'').$nodatarole.'>';

View File

@ -324,8 +324,9 @@ class FormOther
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)
{ {
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$moreforfilter.= ajax_combobox('select_categ_'.$htmlname); $comboenhancement = ajax_combobox('select_categ_'.$htmlname);
$nodatarole=' data-role="none"'; $moreforfilter.=$comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':'');
} }
// Print a select with each of them // Print a select with each of them
@ -373,8 +374,9 @@ class FormOther
if ($conf->use_javascript_ajax) if ($conf->use_javascript_ajax)
{ {
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$out.= ajax_combobox($htmlname); $comboenhancement = ajax_combobox($htmlname);
$nodatarole=' data-role="none"'; $out.=$comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':'');
} }
// Select each sales and print them in a select input // Select each sales and print them in a select input
$out.='<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>'; $out.='<select class="flat" id="'.$htmlname.'" name="'.$htmlname.'"'.$nodatarole.'>';

View File

@ -91,8 +91,9 @@ class FormProjets
if (! empty($conf->use_javascript_ajax)) if (! empty($conf->use_javascript_ajax))
{ {
include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php'; include_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
$out.= ajax_combobox($htmlname, '', 0, $forcefocus); $comboenhancement = ajax_combobox($htmlname, '', 0, $forcefocus);
$nodatarole=' data-role="none"'; $out.=$comboenhancement;
$nodatarole=($comboenhancement?' data-role="none"':'');
} }
if (empty($option_only)) { if (empty($option_only)) {

View File

@ -176,7 +176,10 @@ class Ldap
if (is_resource($this->connection)) if (is_resource($this->connection))
{ {
// Execute the ldap_set_option here (after connect and before bind)
$this->setVersion(); $this->setVersion();
ldap_set_option($this->connection, LDAP_OPT_SIZELIMIT, 0); // no limit here. should return true.
if ($this->serverType == "activedirectory") if ($this->serverType == "activedirectory")
{ {

View File

@ -550,7 +550,7 @@ class RssParser
// //
elseif ($this->_format == 'atom' and $el == 'link' ) 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'; $link_el = 'link';
} }

View File

@ -26,17 +26,18 @@
* \brief File to manage popup date selector * \brief File to manage popup date selector
*/ */
if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // Not disabled cause need to load personalized language if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER','1'); // disabled
//if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language //if (! defined('NOREQUIREDB')) define('NOREQUIREDB','1'); // Not disabled cause need to load personalized language
if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1'); if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC','1');
//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations //if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN','1'); // Not disabled cause need to do translations
if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1); if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK',1);
if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1); if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL',1);
if (! defined('NOLOGIN')) define('NOLOGIN',1); // Not disabled cause need to load personalized language if (! defined('NOLOGIN')) define('NOLOGIN',1); // disabled
if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1); if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU',1);
if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1); if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML',1);
require_once '../main.inc.php'; require_once '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
if (GETPOST('lang')) $langs->setDefaultLang(GETPOST('lang')); // If language was forced on URL by the main.inc.php if (GETPOST('lang')) $langs->setDefaultLang(GETPOST('lang')); // If language was forced on URL by the main.inc.php
$langs->load("main"); $langs->load("main");
@ -186,37 +187,49 @@ function displayBox($selectedDate,$month,$year)
</tr> </tr>
<tr class="dpDayNames"> <tr class="dpDayNames">
<?php <?php
$first_day_of_week = isset($conf->global->MAIN_START_WEEK) ? (int) $conf->global->MAIN_START_WEEK : 0; $startday=isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1;
$day_names = array('ShortSunday', 'ShortMonday', 'ShortTuesday', 'ShortWednesday', 'ShortThursday', 'ShortFriday', 'ShortSaturday'); $day_names = array('ShortSunday', 'ShortMonday', 'ShortTuesday', 'ShortWednesday', 'ShortThursday', 'ShortFriday', 'ShortSaturday');
for( $i=0; $i < 7; $i++ ) for( $i=0; $i < 7; $i++ )
{ {
echo '<td width="', (int) (($i+1)*100/7) - (int) ($i*100/7), '%">', $langs->trans($day_names[($i + $first_day_of_week) % 7]), '</td>', "\n"; 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> </tr>
<?php <?php
//print "x ".$thedate." y"; //print "x ".$thedate." y"; // $thedate = first day of month
$firstdate=dol_getdate($thedate); $firstdate=dol_getdate($thedate);
$mydate=$firstdate; //var_dump($firstdateofweek);
$mydate=dol_get_first_day_week(1, $month, $year, true); // mydate = cursor date
// Loop on each day of month // Loop on each day of month
$stoploop=0; $day=1; $cols=0; $stoploop=0; $day=1; $cols=0;
while (! $stoploop) while (! $stoploop)
{ {
//print_r($mydate); //print_r($mydate);
if($firstdate==$mydate) // At first run if ($mydate < $firstdate) // At first run
{ {
echo "<TR class=\"dpWeek\">"; echo "<TR class=\"dpWeek\">";
//echo $conf->global->MAIN_START_WEEK.' '.$firstdate["wday"].' '.$startday;
$cols=0; $cols=0;
for($i=0;$i< ($mydate["wday"]+7-$first_day_of_week)%7;$i++) for ($i = 0; $i < 7; $i++)
{ {
$w = ($i + $startday) % 7;
if ($w == $firstdate["wday"])
{
$mydate = $firstdate;
break;
}
echo "<TD>&nbsp;</TD>"; echo "<TD>&nbsp;</TD>";
$cols++; $cols++;
} }
} }
else else
{ {
if ($mydate["wday"]==$first_day_of_week) if ($mydate["wday"] == $startday)
{ {
echo "<TR class=\"dpWeek\">"; echo "<TR class=\"dpWeek\">";
$cols=0; $cols=0;
@ -240,7 +253,7 @@ function displayBox($selectedDate,$month,$year)
echo ">".sprintf("%02s",$mydate["mday"])."</TD>"; echo ">".sprintf("%02s",$mydate["mday"])."</TD>";
$cols++; $cols++;
if ($mydate != $firstdate && $mydate["wday"]==(($first_day_of_week + 6)%7)) echo "</TR>\n"; if (($mydate["wday"] + 1) % 7 == $startday) echo "</TR>\n";
//$thedate=strtotime("tomorrow",$thedate); //$thedate=strtotime("tomorrow",$thedate);
$day++; $day++;

View File

@ -188,7 +188,7 @@ function FileUpload($resourceType, $currentFolder, $sCommand, $CKEcallback = '')
if ( isset( $_FILES['NewFile'] ) && !is_null($_FILES['NewFile']['tmp_name']) if ( isset( $_FILES['NewFile'] ) && !is_null($_FILES['NewFile']['tmp_name'])
// This is for the QuickUpload tab box // 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 ; global $Config ;

View File

@ -50,6 +50,8 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
global $conf, $user, $langs, $db, $hookmanager; global $conf, $user, $langs, $db, $hookmanager;
global $begin_h, $end_h, $begin_d, $end_d; global $begin_h, $end_h, $begin_d, $end_d;
$langs->load("companies");
// Filters // Filters
print '<form name="listactionsfilter" class="listactionsfilter" action="' . $_SERVER["PHP_SELF"] . '" method="POST">'; print '<form name="listactionsfilter" class="listactionsfilter" action="' . $_SERVER["PHP_SELF"] . '" method="POST">';
print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">'; print '<input type="hidden" name="token" value="' . $_SESSION ['newtoken'] . '">';
@ -114,7 +116,7 @@ function print_actions_filter($form, $canedit, $status, $year, $month, $day, $sh
print '<td class="nowrap">'; print '<td class="nowrap">';
print $langs->trans("Project").' &nbsp; '; print $langs->trans("Project").' &nbsp; ';
print '</td><td class="nowrap maxwidthonsmartphone">'; print '</td><td class="nowrap maxwidthonsmartphone">';
$formproject->select_projects($socid?$socid:-1, $pid, 'projectid'); $formproject->select_projects($socid?$socid:-1, $pid, 'projectid', 0);
print '</td></tr>'; print '</td></tr>';
} }

View File

@ -322,7 +322,7 @@ function ajax_combobox($htmlname, $events=array(), $minLengthToAutocomplete=0, $
global $conf; global $conf;
//if (! empty($conf->browser->phone)) return ''; // combobox disabled for smartphones (does not works) //if (! empty($conf->browser->phone)) return ''; // combobox disabled for smartphones (does not works)
//if (! empty($conf->dol_use_jmobile)) return ''; // select2 works with jmobile if (! empty($conf->dol_use_jmobile)) return ''; // select2 works with jmobile but it breaks the autosize feature of jmobile.
if (! empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return ''; if (! empty($conf->global->MAIN_DISABLE_AJAX_COMBOX)) return '';
if (empty($conf->use_javascript_ajax)) return ''; if (empty($conf->use_javascript_ajax)) return '';

View File

@ -7,6 +7,7 @@
* Copyright (C) 2013-2014 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2013-2014 Juanjo Menent <jmenent@2byte.es>
* Copyright (C) 2013 Christophe Battarel <contact@altairis.fr> * Copyright (C) 2013 Christophe Battarel <contact@altairis.fr>
* Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com> * Copyright (C) 2013 Alexandre Spangaro <alexandre.spangaro@gmail.com>
* Copyright (C) 2015 Frederic 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
@ -988,9 +989,11 @@ function show_actions_todo($conf,$langs,$db,$object,$objcon='',$noprint=0)
} }
$out.='<td width="80" class="nowrap">'; $out.='<td width="80" class="nowrap">';
$userstatic->id=$obj->fk_user_author; //$userstatic->id=$obj->fk_user_author;
$userstatic->login=$obj->login; //$userstatic->login=$obj->login;
$out.=$userstatic->getLoginUrl(1); //$out.=$userstatic->getLoginUrl(1);
$userstatic->fetch($obj->fk_user_author);
$out.=$userstatic->getNomUrl(1);
$out.='</td>'; $out.='</td>';
// Statut // Statut
@ -1235,22 +1238,36 @@ function show_actions_done($conf,$langs,$db,$object,$objcon='',$noprint=0)
{ {
if ($histo[$key]['elementtype'] == 'propal' && ! empty($conf->propal->enabled)) if ($histo[$key]['elementtype'] == 'propal' && ! empty($conf->propal->enabled))
{ {
$propalstatic->ref=$langs->trans("ProposalShort"); //$propalstatic->ref=$langs->trans("ProposalShort");
$propalstatic->id=$histo[$key]['fk_element']; //$propalstatic->id=$histo[$key]['fk_element'];
if ($propalstatic->fetch($histo[$key]['fk_element'])>0) {
$propalstatic->type=$histo[$key]['ftype'];
$out.=$propalstatic->getNomUrl(1); $out.=$propalstatic->getNomUrl(1);
} else {
$out.= $langs->trans("ProposalDeleted");
}
} }
elseif (($histo[$key]['elementtype'] == 'order' || $histo[$key]['elementtype'] == 'commande') && ! empty($conf->commande->enabled)) elseif (($histo[$key]['elementtype'] == 'order' || $histo[$key]['elementtype'] == 'commande') && ! empty($conf->commande->enabled))
{ {
$orderstatic->ref=$langs->trans("Order"); //$orderstatic->ref=$langs->trans("Order");
$orderstatic->id=$histo[$key]['fk_element']; //$orderstatic->id=$histo[$key]['fk_element'];
if ($orderstatic->fetch($histo[$key]['fk_element'])>0) {
$orderstatic->type=$histo[$key]['ftype'];
$out.=$orderstatic->getNomUrl(1); $out.=$orderstatic->getNomUrl(1);
} else {
$out.= $langs->trans("OrderDeleted");
}
} }
elseif (($histo[$key]['elementtype'] == 'invoice' || $histo[$key]['elementtype'] == 'facture') && ! empty($conf->facture->enabled)) elseif (($histo[$key]['elementtype'] == 'invoice' || $histo[$key]['elementtype'] == 'facture') && ! empty($conf->facture->enabled))
{ {
$facturestatic->ref=$langs->trans("Invoice"); //$facturestatic->ref=$langs->trans("Invoice");
$facturestatic->id=$histo[$key]['fk_element']; //$facturestatic->id=$histo[$key]['fk_element'];
if ($facturestatic->fetch($histo[$key]['fk_element'])>0) {
$facturestatic->type=$histo[$key]['ftype']; $facturestatic->type=$histo[$key]['ftype'];
$out.=$facturestatic->getNomUrl(1,'compta'); $out.=$facturestatic->getNomUrl(1,'compta');
} else {
$out.= $langs->trans("InvoiceDeleted");
}
} }
else $out.='&nbsp;'; else $out.='&nbsp;';
} }
@ -1272,9 +1289,11 @@ function show_actions_done($conf,$langs,$db,$object,$objcon='',$noprint=0)
// Auteur // Auteur
$out.='<td class="nowrap" width="80">'; $out.='<td class="nowrap" width="80">';
$userstatic->id=$histo[$key]['userid']; //$userstatic->id=$histo[$key]['userid'];
$userstatic->login=$histo[$key]['login']; //$userstatic->login=$histo[$key]['login'];
$out.=$userstatic->getLoginUrl(1); //$out.=$userstatic->getLoginUrl(1);
$userstatic->fetch($histo[$key]['userid']);
$out.=$userstatic->getNomUrl(1);
$out.='</td>'; $out.='</td>';
// Statut // Statut

View File

@ -112,6 +112,11 @@ function contract_admin_prepare_head()
$head[$h][2] = 'attributes'; $head[$h][2] = 'attributes';
$h++; $h++;
$head[$h][0] = DOL_URL_ROOT.'/contrat/admin/contractdet_extrafields.php';
$head[$h][1] = $langs->trans("ExtraFieldsLines");
$head[$h][2] = 'attributeslines';
$h++;
complete_head_from_modules($conf,$langs,null,$head,$h,'contract_admin','remove'); complete_head_from_modules($conf,$langs,null,$head,$h,'contract_admin','remove');

View File

@ -479,34 +479,36 @@ function dol_get_last_day($year,$month=12,$gm=false)
return $datelim; return $datelim;
} }
/** Return first day of week for a date /** Return first day of week for a date. First day of week may be monday if option MAIN_START_WEEK is 1.
* *
* @param int $day Day * @param int $day Day
* @param int $month Month * @param int $month Month
* @param int $year Year * @param int $year Year
* @param int $gm False or 0 or 'server' = Return date to compare with server TZ, True or 1 to compare with GM date. * @param int $gm False or 0 or 'server' = Return date to compare with server TZ, True or 1 to compare with GM date.
* @return array year,month,week,first_day,prev_year,prev_month,prev_day * @return array year,month,week,first_day,first_month,first_year,prev_day,prev_month,prev_year
*/ */
function dol_get_first_day_week($day,$month,$year,$gm=false) function dol_get_first_day_week($day,$month,$year,$gm=false)
{ {
global $conf; global $conf;
//$day=2; $month=2; $year=2015;
$date = dol_mktime(0,0,0,$month,$day,$year,$gm); $date = dol_mktime(0,0,0,$month,$day,$year,$gm);
//Checking conf of start week //Checking conf of start week
$start_week = (isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1); $start_week = (isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1);
$tmparray = dol_getdate($date,true); $tmparray = dol_getdate($date,true); // detail of current day
//Calculate days to count //Calculate days = offset from current day
$days = $start_week - $tmparray['wday']; $days = $start_week - $tmparray['wday'];
if ($days>=1) $days=7-$days; if ($days>=1) $days=7-$days;
$days = abs($days); $days = abs($days);
$seconds = $days*24*60*60; $seconds = $days*24*60*60;
//print 'start_week='.$start_week.' tmparray[wday]='.$tmparray['wday'].' day offset='.$days.' seconds offset='.$seconds.'<br>';
//Get first day of week //Get first day of week
$tmpday = date($tmparray[0])-$seconds; $tmpdaytms = date($tmparray[0])-$seconds; // $tmparray[0] is day of parameters
$tmpday = date("d",$tmpday); $tmpday = date("d",$tmpdaytms);
//Check first day of week is in same month than current day or not //Check first day of week is in same month than current day or not
if ($tmpday>$day) if ($tmpday>$day)

View File

@ -1876,3 +1876,49 @@ function dol_check_secure_access_document($modulepart,$original_file,$entity,$fu
return $ret; return $ret;
} }
/**
* Store object in file
*
* @param string $directory Directory of cache
* @param string $filename Name of filecache
* @param mixed $object Object to store in cachefile
* @return void
*/
function dol_filecache($directory, $filename, $object)
{
if (! dol_is_dir($directory)) dol_mkdir($directory);
$cachefile = $directory . $filename;
file_put_contents($cachefile, serialize($object), LOCK_EX);
@chmod($cachefile, 0644);
}
/**
* Test if Refresh needed
*
* @param string $directory Directory of cache
* @param string $filename Name of filecache
* @param int $cachetime Cachetime delay
* @return boolean 0 no refresh 1 if refresh needed
*/
function dol_cache_refresh($directory, $filename, $cachetime)
{
$now = dol_now();
$cachefile = $directory . $filename;
$refresh = !file_exists($cachefile) || ($now-$cachetime) > dol_filemtime($cachefile);
return $refresh;
}
/**
* Read object from cachefile
*
* @param string $directory Directory of cache
* @param string $filename Name of filecache
* @return mixed Unserialise from file
*/
function dol_readcachefile($directory, $filename)
{
$cachefile = $directory . $filename;
$object = unserialize(file_get_contents($cachefile));
return $object;
}

View File

@ -688,7 +688,7 @@ function dol_get_fiche_head($links=array(), $active='0', $title='', $notab=0, $p
// Show tabs // Show tabs
$bactive=false; $bactive=false;
// if =0 we don't use the feature // if =0 we don't use the feature
$limittoshow=($conf->global->MAXTABS_IN_CARD?$conf->global->MAXTABS_IN_CARD:99); $limittoshow=($conf->global->MAIN_MAXTABS_IN_CARD?$conf->global->MAIN_MAXTABS_IN_CARD:99);
$displaytab=0; $displaytab=0;
for ($i = 0 ; $i <= $maxkey ; $i++) for ($i = 0 ; $i <= $maxkey ; $i++)
@ -1046,8 +1046,9 @@ function dol_print_date($time,$format='',$tzoutput='tzserver',$outputlangs='',$e
/** /**
* Return an array with locale date info. * Return an array with locale date info.
* PHP getdate is restricted to the years 1901-2038 on Unix and 1970-2038 on Windows * PHP getdate is restricted to the years 1901-2038 on Unix and 1970-2038 on Windows
* WARNING: This function always use PHP server timezone to return locale informations. * WARNING: This function always use PHP server timezone to return locale informations !!!
* Usage must be avoid. * Usage must be avoid.
* FIXME: Replace this with PHP date function and a parameter $gm
* *
* @param int $timestamp Timestamp * @param int $timestamp Timestamp
* @param boolean $fast Fast mode * @param boolean $fast Fast mode
@ -1057,7 +1058,7 @@ function dol_print_date($time,$format='',$tzoutput='tzserver',$outputlangs='',$e
* 'minutes' => $min, * 'minutes' => $min,
* 'hours' => $hour, * 'hours' => $hour,
* 'mday' => $day, * 'mday' => $day,
* 'wday' => $dow, * 'wday' => $dow, 0=sunday, 6=saturday
* 'mon' => $month, * 'mon' => $month,
* 'year' => $year, * 'year' => $year,
* 'yday' => floor($secsInYear/$_day_power), * 'yday' => floor($secsInYear/$_day_power),
@ -1091,7 +1092,7 @@ function dol_getdate($timestamp,$fast=false)
{ {
$arrayinfo=getdate($timestamp); $arrayinfo=getdate($timestamp);
$startday=isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1; /*$startday=isset($conf->global->MAIN_START_WEEK)?$conf->global->MAIN_START_WEEK:1;
if($startday==1) if($startday==1)
{ {
if ($arrayinfo["wday"]==0) if ($arrayinfo["wday"]==0)
@ -1102,7 +1103,7 @@ function dol_getdate($timestamp,$fast=false)
{ {
$arrayinfo["wday"]=$arrayinfo["wday"]-1; $arrayinfo["wday"]=$arrayinfo["wday"]-1;
} }
} }*/
} }
return $arrayinfo; return $arrayinfo;
@ -2458,7 +2459,7 @@ function dol_print_error($db='',$error='')
if ($_SERVER['DOCUMENT_ROOT']) // Mode web if ($_SERVER['DOCUMENT_ROOT']) // Mode web
{ {
$out.=$langs->trans("DolibarrHasDetectedError").".<br>\n"; $out.=$langs->trans("DolibarrHasDetectedError").".<br>\n";
if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental level of features, so please do NOT report any bugs, anywhere, until going back to MAIN_FEATURES_LEVEL = 0.<br>\n"; if (! empty($conf->global->MAIN_FEATURES_LEVEL)) $out.="You use an experimental level of features, so please do NOT report any bugs, except if problem is confirmed moving option MAIN_FEATURES_LEVEL back to 0.<br>\n";
$out.=$langs->trans("InformationToHelpDiagnose").":<br>\n"; $out.=$langs->trans("InformationToHelpDiagnose").":<br>\n";
$out.="<b>".$langs->trans("Date").":</b> ".dol_print_date(time(),'dayhourlog')."<br>\n"; $out.="<b>".$langs->trans("Date").":</b> ".dol_print_date(time(),'dayhourlog')."<br>\n";
@ -2956,7 +2957,7 @@ function price($amount, $form=0, $outlangs='', $trunc=1, $rounding=-1, $forcerou
{ {
if ($currency_code == 'auto') $currency_code=$conf->currency; if ($currency_code == 'auto') $currency_code=$conf->currency;
$listofcurrenciesbefore=array('USD','GBP','AUD'); $listofcurrenciesbefore=array('USD','GBP','AUD','MXN');
if (in_array($currency_code,$listofcurrenciesbefore)) $cursymbolbefore.=$outlangs->getCurrencySymbol($currency_code); if (in_array($currency_code,$listofcurrenciesbefore)) $cursymbolbefore.=$outlangs->getCurrencySymbol($currency_code);
else else
{ {
@ -4964,3 +4965,4 @@ function natural_search($fields, $value)
} }
return " AND " . ($end > 1? '(' : '') . $res; return " AND " . ($end > 1? '(' : '') . $res;
} }

View File

@ -608,7 +608,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m
$maskraz=-1; $maskraz=-1;
$maskoffset=0; $maskoffset=0;
$resetEveryMonth=false; $resetEveryMonth=false;
if (dol_strlen($maskcounter) < 3 && empty($conf->global->MAIN_COUNTER_WITH_LESS_3_DIGITS)) return 'CounterMustHaveMoreThan3Digits'; if (dol_strlen($maskcounter) < 3 && empty($conf->global->MAIN_COUNTER_WITH_LESS_3_DIGITS)) return 'ErrorCounterMustHaveMoreThan3Digits';
// Extract value for third party mask counter // Extract value for third party mask counter
if (preg_match('/\{(c+)(0*)\}/i',$mask,$regClientRef)) if (preg_match('/\{(c+)(0*)\}/i',$mask,$regClientRef))

View File

@ -0,0 +1,132 @@
<?php
/* Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2015 Víctor Ortiz Pérez <victor@accett.com.mx>
*
* 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
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
* or see http://www.gnu.org/
*/
/**
* \file htdocs/core/lib/functionsnumbertoword.lib.php
* \brief A set of functions for Dolibarr
* This file contains all frequently used functions.
*/
/**
* Function to return number or amount in text.
*
* @param float $numero Number to convert
* @param Lang $langs Language
* @param string $numorcurrency 'number' or 'amount'
* @return string Text of the number
*/
function dolNumberToWord($numero, $langs, $numorcurrency='number')
{
$entexto=$numero;
if ($langs->default == 'es_MX' && $numorcurrency == 'currency')
{
$veintis = array("VEINTE","VEINTIUN","VEINTID&OacuteS","VEINTITR&EacuteS","VEINTICUATRO","VEINTICINCO","VEINTIS&EacuteIS","VEINTISIETE","VEINTIOCHO","VEINTINUEVE");
$unidades = array("UN","DOS","TRES","CUATRO","CINCO","SEIS","SIETE","OCHO","NUEVE");
$decenas = array("","","TREINTA ","CUARENTA ","CINCUENTA ","SESENTA ","SETENTA ","OCHENTA ","NOVENTA ");
$centenas = array("CIENTO","DOSCIENTOS","TRESCIENTOS","CUATROCIENTOS","QUINIENTOS","SEISCIENTOS","SETECIENTOS","OCHOCIENTOS","NOVECIENTOS");
$number = $numero;
$parte_decimal = $numero - (int) $numero;
$parte_decimal = (int) round($parte_decimal*100);
if ($parte_decimal < 10)
$parte_decimal = "0".$parte_decimal;
$entexto ="";
if ($numero>=1 && $numero<2) {
$entexto .= " UN PESO ".$parte_decimal." / 100 M.N.";
}
elseif ($numero>=0 && $numero<1){
$entexto .= " CERO PESOS ".$parte_decimal." / 100 M.N.";
}
elseif ($numero>=100 && $numero<101){
$entexto .= " CIEN PESOS ".$parte_decimal." / 100 M.N.";
}
else {
$cdm = (int) ($numero / 100000);
$numero = $numero - $cdm * 100000;
$ddm = (int) ($numero / 10000);
$numero = $numero - $ddm * 10000;
$udm = (int) ($numero / 1000);
$numero = $numero - $udm * 1000;
$c = (int) ($numero / 100);
$numero = $numero - $c * 100;
$d = (int) ($numero / 10);
$u = (int) $numero - $d * 10;
$completo=FALSE;
if ($cdm==1 && $ddm==0 && $udm==0){
$entexto .= "CIEN";
$completo = TRUE;
}
if ($cdm!=0 && !$completo){
$entexto .= $centenas[$cdm-1]." ";
}
$completo=FALSE;
if ($ddm>2){
$entexto .= " ".$decenas[$ddm-1];
if ($udm!=0){
$entexto .= " Y ";
}
}
elseif ($ddm!=0){
$completo=TRUE;
if ($ddm==1){
$entexto .= " ".$diecis[$udm];
}
else{
$entexto .= " ".$veintis[$udm];
}
}
if ($udm!=0 && !$completo){
$entexto .= $unidades[$udm-1];
}
$completo=FALSE;
if ($number>=1000){
$entexto .= " MIL ";
}
if ($c==1 && $d==0 && $u==0){
$entexto .= "CIEN";
$completo = TRUE;
}
if ($c!=0 && !$completo){
$entexto .= $centenas[$c-1]." ";
}
if ($d>2){
$entexto .= " ".$decenas[$d-1];
if ($u!=0){
$entexto .= " Y ";
}
}
elseif ($d!=0){
$completo=TRUE;
if ($d==1){
$entexto .= " ".$diecis[$u];
}
else{
$entexto .= " ".$veintis[$u];
}
}
if ($u!=0 && !$completo){
$entexto .= $unidades[$u-1];
}
$entexto .= " PESOS ".$parte_decimal." / 100 M.N.";
}
}
return $entexto;
}

View File

@ -522,7 +522,7 @@ function pdf_bank(&$pdf,$outputlangs,$curx,$cury,$account,$onlynumber=0,$default
// Get format of bank account according to its country // Get format of bank account according to its country
$usedetailedbban=$account->useDetailedBBAN(); $usedetailedbban=$account->useDetailedBBAN();
$onlynumber=0; $usedetailedbban=1; // For tests //$onlynumber=0; $usedetailedbban=1; // For tests
if ($usedetailedbban) if ($usedetailedbban)
{ {
$savcurx=$curx; $savcurx=$curx;

View File

@ -57,11 +57,6 @@ function product_prepare_head($object, $user)
$h++; $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 // Show category tab
if (! empty($conf->categorie->enabled) && $user->rights->categorie->lire) if (! empty($conf->categorie->enabled) && $user->rights->categorie->lire)
{ {
@ -116,6 +111,11 @@ function product_prepare_head($object, $user)
// $this->tabs = array('entity:-tabname); to remove a tab // $this->tabs = array('entity:-tabname); to remove a tab
complete_head_from_modules($conf,$langs,$object,$head,$h,'product'); complete_head_from_modules($conf,$langs,$object,$head,$h,'product');
$head[$h][0] = DOL_URL_ROOT."/product/photos.php?id=".$object->id;
$head[$h][1] = $langs->trans("Photos");
$head[$h][2] = 'photos';
$h++;
// Attachments // Attachments
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; 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); if (! empty($conf->product->enabled)) $upload_dir = $conf->product->multidir_output[$object->entity].'/'.dol_sanitizeFileName($object->ref);
@ -123,7 +123,7 @@ function product_prepare_head($object, $user)
$nbFiles = count(dol_dir_list($upload_dir,'files',0,'','(\.meta|_preview\.png)$')); $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][0] = DOL_URL_ROOT.'/product/document.php?id='.$object->id;
$head[$h][1] = $langs->trans('Documents'); $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'; $head[$h][2] = 'documents';
$h++; $h++;

View File

@ -1,5 +1,5 @@
<?php <?php
/* Copyright (C) 2006-2014 Laurent Destailleur <eldy@users.sourceforge.net> /* Copyright (C) 2006-2015 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com> * Copyright (C) 2010 Regis Houssin <regis.houssin@capnetworks.com>
* Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es>
* *
@ -85,23 +85,19 @@ function project_prepare_head($object)
$head[$h][2] = 'document'; $head[$h][2] = 'document';
$h++; $h++;
if (empty($conf->global->PROJECT_HIDE_TASKS))
{
// Then tab for sub level of projet, i mean tasks // Then tab for sub level of projet, i mean tasks
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id;
$head[$h][1] = $langs->trans("Tasks"); $head[$h][1] = $langs->trans("Tasks");
$head[$h][2] = 'tasks'; $head[$h][2] = 'tasks';
$h++; $h++;
/* Now this is a filter in the Task tab.
$head[$h][0] = DOL_URL_ROOT.'/projet/tasks.php?id='.$object->id.'&mode=mine';
$head[$h][1] = $langs->trans("MyTasks");
$head[$h][2] = 'mytasks';
$h++;
*/
$head[$h][0] = DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id; $head[$h][0] = DOL_URL_ROOT.'/projet/ganttview.php?id='.$object->id;
$head[$h][1] = $langs->trans("Gantt"); $head[$h][1] = $langs->trans("Gantt");
$head[$h][2] = 'gantt'; $head[$h][2] = 'gantt';
$h++; $h++;
}
complete_head_from_modules($conf,$langs,$object,$head,$h,'project','remove'); complete_head_from_modules($conf,$langs,$object,$head,$h,'project','remove');
@ -502,7 +498,7 @@ function projectLinesb(&$inc, $parent, $lines, &$level, &$projectsrole, &$tasksr
// Ref // Ref
print '<td>'; print '<td>';
$taskstatic->id=$lines[$i]->id; $taskstatic->id=$lines[$i]->id;
$taskstatic->ref=$lines[$i]->id; $taskstatic->ref=($lines[$i]->ref?$lines[$i]->ref:$lines[$i]->id);
print $taskstatic->getNomUrl(1); print $taskstatic->getNomUrl(1);
print '</td>'; print '</td>';

View File

@ -685,7 +685,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire); $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers", $langs->trans("List"), 1, $user->rights->fournisseur->commande->lire);
if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=0", $langs->trans("StatusOrderDraftShort"), 2, $user->rights->fournisseur->commande->lire);
if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->fournisseur->commande->lire); if ((empty($leftmenu) || $leftmenu=="orders_suppliers") && empty($conf->global->SUPPLIER_ORDER_HIDE_VALIDATED)) $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=1", $langs->trans("StatusOrderValidated"), 2, $user->rights->fournisseur->commande->lire);
if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=2", $langs->trans("StatusOrderApprovedShort"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=2", $langs->trans("StatusOrderApprovedShort"), 2, $user->rights->fournisseur->commande->lire);
if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=3", $langs->trans("StatusOrderOnProcess"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=3", $langs->trans("StatusOrderOnProcess"), 2, $user->rights->fournisseur->commande->lire);
if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=4", $langs->trans("StatusOrderReceivedPartially"), 2, $user->rights->fournisseur->commande->lire); if (empty($leftmenu) || $leftmenu=="orders_suppliers") $newmenu->add("/fourn/commande/list.php?leftmenu=orders_suppliers&statut=4", $langs->trans("StatusOrderReceivedPartially"), 2, $user->rights->fournisseur->commande->lire);
@ -1141,6 +1141,8 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$newmenu->add("/projet/card.php?leftmenu=projects&action=create", $langs->trans("NewProject"), 1, $user->rights->projet->creer && $user->rights->projet->creer); $newmenu->add("/projet/card.php?leftmenu=projects&action=create", $langs->trans("NewProject"), 1, $user->rights->projet->creer && $user->rights->projet->creer);
$newmenu->add("/projet/list.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire); $newmenu->add("/projet/list.php?leftmenu=projects", $langs->trans("List"), 1, $user->rights->projet->lire && $user->rights->projet->lire);
if (empty($conf->global->PROJECT_HIDE_TASKS))
{
// Project affected to user // Project affected to user
$newmenu->add("/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire); $newmenu->add("/projet/activity/index.php?mode=mine", $langs->trans("MyActivities"), 0, $user->rights->projet->lire);
$newmenu->add("/projet/tasks.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer); $newmenu->add("/projet/tasks.php?action=create&mode=mine", $langs->trans("NewTask"), 1, $user->rights->projet->creer);
@ -1154,6 +1156,7 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
$newmenu->add("/projet/activity/list.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->creer); $newmenu->add("/projet/activity/list.php", $langs->trans("NewTimeSpent"), 1, $user->rights->projet->creer && $user->rights->projet->creer);
} }
} }
}
/* /*
* Menu HRM * Menu HRM

View File

@ -154,6 +154,8 @@ class pdf_einstein extends ModelePDFCommandes
$outputlangs->load("orders"); $outputlangs->load("orders");
$outputlangs->load("deliveries"); $outputlangs->load("deliveries");
$nblignes = count($object->lines);
if ($conf->commande->dir_output) if ($conf->commande->dir_output)
{ {
$object->fetch_thirdparty(); $object->fetch_thirdparty();
@ -195,8 +197,6 @@ class pdf_einstein extends ModelePDFCommandes
global $action; global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks $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 // Create pdf instance
$pdf=pdf_getInstance($this->format); $pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
@ -328,6 +328,7 @@ class pdf_einstein extends ModelePDFCommandes
//print $pageposafter.'-'.$pageposbefore;exit; //print $pageposafter.'-'.$pageposbefore;exit;
$pdf->setPageOrientation('', 1, $heightforfooter); // The only function to edit the bottom margin of current page to set it. $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); pdf_writelinedesc($pdf,$object,$i,$outputlangs,$this->posxtva-$curX,4,$curX,$curY,$hideref,$hidedesc);
$pageposafter=$pdf->getPage();
$posyafter=$pdf->GetY(); $posyafter=$pdf->GetY();
if ($posyafter > ($this->page_hauteur - ($heightforfooter+$heightforfreetext+$heightforinfotot))) // There is no space left for total+free text 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'); $pdf->Output($file,'F');
// Add pdfgeneration hook // 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')); $hookmanager->initHooks(array('pdfgeneration'));
$parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs); $parameters=array('file'=>$file,'object'=>$object,'outputlangs'=>$outputlangs);
global $action; global $action;
@ -797,7 +793,7 @@ class pdf_einstein extends ModelePDFCommandes
//{ //{
foreach( $this->localtax1 as $localtax_type => $localtax_rate ) 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 ) foreach( $localtax_rate as $tvakey => $tvaval )
{ {
if ($tvakey!=0) // On affiche pas taux 0 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 ) 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 ) foreach( $localtax_rate as $tvakey => $tvaval )
{ {
if ($tvakey!=0) // On affiche pas taux 0 if ($tvakey!=0) // On affiche pas taux 0

View File

@ -560,7 +560,7 @@ class pdf_merou extends ModelePdfExpedition
$pdf->SetXY($blSocX-80,$blSocY+17); $pdf->SetXY($blSocX-80,$blSocY+17);
$pdf->SetFont('','B', $default_font_size - 2); $pdf->SetFont('','B', $default_font_size - 2);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->MultiCell(50, 8, $outputlangs->transnoentities("Date")." : " . dol_print_date($object->date_delivery,'day',false,$outputlangs,true), '', 'L'); $pdf->MultiCell(50, 8, $outputlangs->transnoentities("DateDelivery")." : " . dol_print_date($object->date_delivery,'day',false,$outputlangs,true), '', 'L');
$pdf->SetXY($blSocX-80,$blSocY+20); $pdf->SetXY($blSocX-80,$blSocY+20);
$pdf->SetFont('','B', $default_font_size - 2); $pdf->SetFont('','B', $default_font_size - 2);
@ -568,7 +568,7 @@ class pdf_merou extends ModelePdfExpedition
$pdf->MultiCell(50, 8, $outputlangs->transnoentities("TrackingNumber")." : " . $object->tracking_number, '', 'L'); $pdf->MultiCell(50, 8, $outputlangs->transnoentities("TrackingNumber")." : " . $object->tracking_number, '', 'L');
// Deliverer // Deliverer
$pdf->SetXY($blSocX-80,$blSocY+24); $pdf->SetXY($blSocX-80,$blSocY+23);
$pdf->SetFont('','', $default_font_size - 2); $pdf->SetFont('','', $default_font_size - 2);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
@ -581,8 +581,16 @@ class pdf_merou extends ModelePdfExpedition
{ {
// Get code using getLabelFromKey // Get code using getLabelFromKey
$code=$outputlangs->getLabelFromKey($this->db,$object->shipping_method_id,'c_shipment_mode','rowid','code'); $code=$outputlangs->getLabelFromKey($this->db,$object->shipping_method_id,'c_shipment_mode','rowid','code');
$label=$outputlangs->trans("SendingMethod".strtoupper($code))." :"; $label='';
$pdf->writeHTMLCell(50, 8, '', '', $label." ".$object->tracking_url, '', 'L'); $label.=$outputlangs->trans("SendingMethod").": ".$outputlangs->trans("SendingMethod".strtoupper($code));
//var_dump($object->tracking_url != $object->tracking_number);exit;
if ($object->tracking_url != $object->tracking_number)
{
$label.=" : ";
$label.=$object->tracking_url;
}
$pdf->SetFont('','B', $default_font_size - 2);
$pdf->writeHTMLCell(50, 8, '', '', $label, '', 'L');
} }
} }
} }

View File

@ -212,10 +212,17 @@ class pdf_rouget extends ModelePdfExpedition
{ {
// Get code using getLabelFromKey // Get code using getLabelFromKey
$code=$outputlangs->getLabelFromKey($this->db,$object->shipping_method_id,'c_shipment_mode','rowid','code'); $code=$outputlangs->getLabelFromKey($this->db,$object->shipping_method_id,'c_shipment_mode','rowid','code');
$label=$outputlangs->trans("LinkToTrackYourPackage")."<br>"; $label='';
$label.=$outputlangs->trans("SendingMethod".strtoupper($code))." :"; if ($object->tracking_url != $object->tracking_number) $label.=$outputlangs->trans("LinkToTrackYourPackage")."<br>";
$label.=$outputlangs->trans("SendingMethod").": ".$outputlangs->trans("SendingMethod".strtoupper($code));
//var_dump($object->tracking_url != $object->tracking_number);exit;
if ($object->tracking_url != $object->tracking_number)
{
$label.=" : ";
$label.=$object->tracking_url;
}
$pdf->SetFont('','B', $default_font_size - 2); $pdf->SetFont('','B', $default_font_size - 2);
$pdf->writeHTMLCell(60, 4, $this->posxdesc-1, $tab_top+6, $label." ".$object->tracking_url, 0, 1, false, true, 'L'); $pdf->writeHTMLCell(60, 4, $this->posxdesc-1, $tab_top_alt, $label, 0, 1, false, true, 'L');
$tab_top_alt = $pdf->GetY(); $tab_top_alt = $pdf->GetY();
} }
@ -537,7 +544,7 @@ class pdf_rouget extends ModelePdfExpedition
$posy+=4; $posy+=4;
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Date")." : ".dol_print_date($object->date_creation,"daytext",false,$outputlangs,true), '', 'R'); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("DateDeliveryPlanned")." : ".dol_print_date($object->date_livraison,"daytext",false,$outputlangs,true), '', 'R');
if (! empty($object->client->code_client)) if (! empty($object->client->code_client))
{ {

View File

@ -96,7 +96,7 @@ class pdf_soleil extends ModelePDFFicheinter
/** /**
* Function to build pdf onto disk * 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 Translate $outputlangs Lang output object
* @param string $srctemplatepath Full path of source filename for generator using a template file * @param string $srctemplatepath Full path of source filename for generator using a template file
* @param int $hidedetails Do not show line details * @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) 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; 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 // 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(); $object->fetch_thirdparty();
$objectref = dol_sanitizeFileName($object->ref); // Definition of $dir and $file
if ($object->specimen)
{
$dir = $conf->ficheinter->dir_output; $dir = $conf->ficheinter->dir_output;
if (! preg_match('/specimen/i',$objectref)) $dir.= "/" . $objectref; $file = $dir . "/SPECIMEN.pdf";
}
else
{
$objectref = dol_sanitizeFileName($object->ref);
$dir = $conf->ficheinter->dir_output . "/" . $objectref;
$file = $dir . "/" . $objectref . ".pdf"; $file = $dir . "/" . $objectref . ".pdf";
}
if (! file_exists($dir)) if (! file_exists($dir))
{ {
if (dol_mkdir($dir) < 0) if (dol_mkdir($dir) < 0)
{ {
$this->error=$outputlangs->trans("ErrorCanNotCreateDir",$dir); $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
return 0; return 0;
} }
} }
@ -149,6 +157,9 @@ class pdf_soleil extends ModelePDFFicheinter
global $action; global $action;
$reshook=$hookmanager->executeHooks('beforePDFCreation',$parameters,$object,$action); // Note that $action and $object may have been modified by some hooks $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); $pdf=pdf_getInstance($this->format);
$default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance $default_font_size = pdf_getPDFFontSize($outputlangs); // Must be after pdf_getInstance
$heightforinfotot = 50; // Height reserved to output the info and total part $heightforinfotot = 50; // Height reserved to output the info and total part
@ -196,12 +207,13 @@ class pdf_soleil extends ModelePDFFicheinter
$tab_height_newpage = 150; $tab_height_newpage = 150;
// Affiche notes // Affiche notes
if (! empty($object->note_public)) $notetoshow=empty($object->note_public)?'':$object->note_public;
if ($notetoshow)
{ {
$tab_top = 88; $tab_top = 88;
$pdf->SetFont('','', $default_font_size - 1); $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(); $nexY = $pdf->GetY();
$height_note=$nexY-$tab_top; $height_note=$nexY-$tab_top;
@ -252,15 +264,17 @@ class pdf_soleil extends ModelePDFFicheinter
$valide = empty($objectligne->id) ? 0 : $objectligne->fetch($objectligne->id); $valide = empty($objectligne->id) ? 0 : $objectligne->fetch($objectligne->id);
if ($valide > 0 || $object->specimen) if ($valide > 0 || $object->specimen)
{ {
$curX = $this->posxdesc-1;
$curY = $nexY; $curY = $nexY;
$pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage $pdf->SetFont('','', $default_font_size - 1); // Into loop to work with multipage
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->setTopMargin($tab_top_newpage); $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(); $pageposbefore=$pdf->getPage();
// Description of product line
$curX = $this->posxdesc-1;
// Description of product line // Description of product line
$txt=$outputlangs->transnoentities("Date")." : ".dol_print_date($objectligne->datei,'dayhour',false,$outputlangs,true); $txt=$outputlangs->transnoentities("Date")." : ".dol_print_date($objectligne->datei,'dayhour',false,$outputlangs,true);
if ($objectligne->duration > 0) 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 if ($i == ($nblines-1)) // No more lines, and no space left to show total, so we create a new page
{ {
$pdf->AddPage('','',true); $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); $pdf->setPage($pageposafter+1);
} }
} }
@ -316,33 +332,34 @@ class pdf_soleil extends ModelePDFFicheinter
$pdf->setPage($pagenb); $pdf->setPage($pagenb);
if ($pagenb == 1) 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 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); $this->_pagefoot($pdf,$object,$outputlangs,1);
$pagenb++; $pagenb++;
$pdf->setPage($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. $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 (isset($object->lines[$i+1]->pagebreak) && $object->lines[$i+1]->pagebreak)
{ {
if ($pagenb == 1) 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 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); $this->_pagefoot($pdf,$object,$outputlangs,1);
// New page // New page
$pdf->AddPage(); $pdf->AddPage();
if (! empty($tplidx)) $pdf->useTemplate($tplidx); if (! empty($tplidx)) $pdf->useTemplate($tplidx);
$pagenb++; $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 // Show square
if ($pagenb == 1) if ($pagenb == 1)
{ {
$this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforfreetext - $heightforfooter - 50, 0, $outputlangs, 0, 0); $this->_tableau($pdf, $tab_top, $this->page_hauteur - $tab_top - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 0, 0);
$bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfooter + 1; $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
} }
else else
{ {
$this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforfreetext - $heightforfooter - 50, 0, $outputlangs, 1, 0); $this->_tableau($pdf, $tab_top_newpage, $this->page_hauteur - $tab_top_newpage - $heightforinfotot - $heightforfreetext - $heightforfooter, 0, $outputlangs, 1, 0);
$bottomlasttab=$this->page_hauteur - $heightforfooter - $heightforfooter + 1; $bottomlasttab=$this->page_hauteur - $heightforinfotot - $heightforfreetext - $heightforfooter + 1;
} }
$this->_pagefoot($pdf,$object,$outputlangs); $this->_pagefoot($pdf,$object,$outputlangs);
@ -364,6 +381,13 @@ class pdf_soleil extends ModelePDFFicheinter
$pdf->Close(); $pdf->Close();
$pdf->Output($file,'F'); $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)) if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK)); @chmod($file, octdec($conf->global->MAIN_UMASK));

View File

@ -137,7 +137,7 @@ class pdf_standard
$imgscaleheight=(empty($forceimgscalewidth)?0.5:$forceimgscalewidth); // Scale of image for height (1=Full height of sticker) $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 // 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(); $pdf->AddPage();
} }
$this->_First=0; $this->_First=0;

View File

@ -129,7 +129,7 @@ class modAccounting extends DolibarrModules
$this->const[9] = array( $this->const[9] = array(
"ACCOUNTING_EXPORT_MODELCSV", "ACCOUNTING_EXPORT_MODELCSV",
"chaine", "chaine",
"0" "1"
); );
$this->const[10] = array( $this->const[10] = array(
"ACCOUNTING_LENGTH_GACCOUNT", "ACCOUNTING_LENGTH_GACCOUNT",

0
htdocs/core/modules/modDynamicPrices.class.php Executable file → Normal file
View File

View File

@ -1,5 +1,6 @@
<?php <?php
/* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr> /* Copyright (C) 2012 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2015 Marcos García <marcosgdf@gmail.com>
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
@ -129,6 +130,14 @@ class modMargin extends DolibarrModules
$this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour) $this->rights[$r][2] = 'w'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut $this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'creer'; $this->rights[$r][4] = 'creer';
$r++;
$this->rights[$r][0] = 59003; // id de la permission
$this->rights[$r][1] = 'Read every user margin'; // libelle de la permission
$this->rights[$r][2] = 'r'; // type de la permission (deprecie a ce jour)
$this->rights[$r][3] = 0; // La permission est-elle une permission par defaut
$this->rights[$r][4] = 'read';
$this->rights[$r][5] = 'all';
} }
/** /**

View File

@ -135,7 +135,7 @@ class pdf_standardlabel
$imgscaleheight=(empty($forceimgscalewidth)?0.5:$forceimgscalewidth); // Scale of image for height (1=Full height of sticker) $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 // 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(); $pdf->AddPage();
} }
$this->_First=0; $this->_First=0;

View File

@ -939,16 +939,28 @@ class pdf_canelle extends ModelePDFSuppliersInvoices
if ($object->ref_supplier) if ($object->ref_supplier)
{ {
$posy+=5; $posy+=4;
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefSupplier")." : " . $object->ref_supplier, '', 'R'); $pdf->MultiCell(100, 4, $outputlangs->transnoentities("RefSupplier")." : " . $object->ref_supplier, '', 'R');
} }
$posy+=1;
$pdf->SetFont('','', $default_font_size - 1); $pdf->SetFont('','', $default_font_size - 1);
$posy+=5; $posy+=6;
if (! empty($conf->global->PDF_SHOW_PROJECT))
{
$object->fetch_projet();
$pdf->SetXY($posx,$posy);
if (! empty($object->project->ref))
{
$langs->load("projects");
$pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R');
$posy+=4;
}
}
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
if ($object->date) if ($object->date)
{ {

View File

@ -976,16 +976,11 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetFont('', 'B', $default_font_size + 3); $pdf->SetFont('', 'B', $default_font_size + 3);
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60); $pdf->SetTextColor(0,0,60);
$title=$outputlangs->transnoentities("SupplierOrder"); $title=$outputlangs->transnoentities("SupplierOrder")." ".$outputlangs->convToOutputCharset($object->ref);
$pdf->MultiCell(100, 3, $title, '', 'R'); $pdf->MultiCell(100, 3, $title, '', 'R');
$pdf->SetFont('','B', $default_font_size); $pdf->SetFont('','B', $default_font_size);
$posy+=6;
$pdf->SetXY($posx,$posy);
$pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 4, $outputlangs->transnoentities("Ref")." : " . $outputlangs->convToOutputCharset($object->ref), '', 'R');
if ($object->ref_supplier) if ($object->ref_supplier)
{ {
$posy+=4; $posy+=4;
@ -994,10 +989,22 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefSupplier")." : " . $outputlangs->convToOutputCharset($object->ref_supplier), '', 'R'); $pdf->MultiCell(100, 3, $outputlangs->transnoentities("RefSupplier")." : " . $outputlangs->convToOutputCharset($object->ref_supplier), '', 'R');
} }
$posy+=2;
$pdf->SetFont('','', $default_font_size -1); $pdf->SetFont('','', $default_font_size -1);
$posy+=5; $posy+=6;
if (! empty($conf->global->PDF_SHOW_PROJECT))
{
$object->fetch_projet();
$pdf->SetXY($posx,$posy);
if (! empty($object->project->ref))
{
$langs->load("projects");
$pdf->SetTextColor(0,0,60);
$pdf->MultiCell(100, 3, $outputlangs->transnoentities("Project")." : " . (empty($object->project->ref)?'':$object->projet->ref), '', 'R');
$posy+=4;
}
}
$pdf->SetXY($posx,$posy); $pdf->SetXY($posx,$posy);
if (! empty($object->date_commande)) if (! empty($object->date_commande))
{ {

View File

@ -3,7 +3,7 @@
* Copyright (C) 2010-2014 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2010-2014 Laurent Destailleur <eldy@users.sourceforge.net>
* Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr> * Copyright (C) 2012-2013 Christophe Battarel <christophe.battarel@altairis.fr>
* Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr> * Copyright (C) 2012 Cédric Salvador <csalvador@gpcsolutions.fr>
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro> * Copyright (C) 2014 Florian Henry <florian.henry@open-concept.pro>
* Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.fr> * Copyright (C) 2014 Raphaël Doursenaud <rdoursenaud@gpcsolutions.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
@ -273,6 +273,9 @@ else {
elseif ($this->table_element_line=='facturedet') { elseif ($this->table_element_line=='facturedet') {
$newline = new FactureLigne($this->db); $newline = new FactureLigne($this->db);
} }
elseif ($this->table_element_line=='contratdet') {
$newline = new ContratLigne($this->db);
}
if (is_object($newline)) { if (is_object($newline)) {
print $newline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay+8)); print $newline->showOptionals($extrafieldsline, 'edit', array('style'=>$bcnd[$var], 'colspan'=>$coldisplay+8));
} }

View File

@ -664,7 +664,7 @@ if (empty($action) || $action == 'file_manager' || preg_match('/refresh/i',$acti
$userstatic->lastname=$val['login_c']; $userstatic->lastname=$val['login_c'];
$htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>'; $htmltooltip='<b>'.$langs->trans("ECMSection").'</b>: '.$val['label'].'<br>';
$htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>'; $htmltooltip='<b>'.$langs->trans("Type").'</b>: '.$langs->trans("ECMSectionManual").'<br>';
$htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1).'<br>'; $htmltooltip.='<b>'.$langs->trans("ECMCreationUser").'</b>: '.$userstatic->getNomUrl(1, '', false, 1).'<br>';
$htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.dol_print_date($val['date_c'],"dayhour").'<br>'; $htmltooltip.='<b>'.$langs->trans("ECMCreationDate").'</b>: '.dol_print_date($val['date_c'],"dayhour").'<br>';
$htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>'; $htmltooltip.='<b>'.$langs->trans("Description").'</b>: '.$val['description'].'<br>';
$htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.$val['cachenbofdoc'].'<br>'; $htmltooltip.='<b>'.$langs->trans("ECMNbOfFilesInDir").'</b>: '.$val['cachenbofdoc'].'<br>';

View File

@ -731,7 +731,7 @@ if ($action == 'create')
if (($line->product_type == 1 && empty($conf->global->STOCK_SUPPORTS_SERVICES)) || $defaultqty < 0) $defaultqty=0; 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 // Quantity to send
print '<td align="center">'; print '<td align="center">';

View File

@ -1218,7 +1218,9 @@ class Expedition extends CommonObject
global $langs; global $langs;
$result=''; $result='';
$label=$langs->trans("ShowSending").': '.$this->ref; $label = '<u>' . $langs->trans("ShowSending") . '</u>';
if (! empty($this->ref))
$label .= '<br><b>' . $langs->trans('Ref') . ':</b> '.$this->ref;
$url = DOL_URL_ROOT.'/expedition/card.php?id='.$this->id; $url = DOL_URL_ROOT.'/expedition/card.php?id='.$this->id;

View File

@ -69,7 +69,7 @@ $shipment=new Expedition($db);
$helpurl='EN:Module_Shipments|FR:Module_Exp&eacute;ditions|ES:M&oacute;dulo_Expediciones'; $helpurl='EN:Module_Shipments|FR:Module_Exp&eacute;ditions|ES:M&oacute;dulo_Expediciones';
llxHeader('',$langs->trans('ListOfSendings'),$helpurl); llxHeader('',$langs->trans('ListOfSendings'),$helpurl);
$sql = "SELECT e.rowid, e.ref, e.date_delivery as date_expedition, l.date_delivery as date_livraison, e.fk_statut"; $sql = "SELECT e.rowid, e.ref, e.date_expedition as date_expedition, e.date_delivery as date_livraison, l.date_delivery as date_reception, e.fk_statut";
$sql.= ", s.nom as socname, s.rowid as socid"; $sql.= ", s.nom as socname, s.rowid as socid";
$sql.= " FROM (".MAIN_DB_PREFIX."expedition as e"; $sql.= " FROM (".MAIN_DB_PREFIX."expedition as e";
if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all if (!$user->rights->societe->client->voir && !$socid) // Internal user with no permission to see all
@ -120,8 +120,10 @@ if ($resql)
print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"],"e.ref","",$param,'',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Ref"), $_SERVER["PHP_SELF"],"e.ref","",$param,'',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"],"s.nom", "", $param,'align="left"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Company"), $_SERVER["PHP_SELF"],"s.nom", "", $param,'align="left"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateDeliveryPlanned"), $_SERVER["PHP_SELF"],"e.date_delivery","",$param, 'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateDeliveryPlanned"), $_SERVER["PHP_SELF"],"e.date_delivery","",$param, 'align="center"',$sortfield,$sortorder);
if($conf->livraison_bon->enabled) { if($conf->expedition_bon->enabled) {
print_liste_field_titre($langs->trans("DeliveryOrder"), $_SERVER["PHP_SELF"],"e.date_expedition","",$param, '',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DeliveryOrder"), $_SERVER["PHP_SELF"],"e.date_expedition","",$param, '',$sortfield,$sortorder);
}
if($conf->livraison_bon->enabled) {
print_liste_field_titre($langs->trans("DateReceived"), $_SERVER["PHP_SELF"],"e.date_expedition","",$param, 'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("DateReceived"), $_SERVER["PHP_SELF"],"e.date_expedition","",$param, 'align="center"',$sortfield,$sortorder);
} }
print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"],"e.fk_statut","",$param,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Status"), $_SERVER["PHP_SELF"],"e.fk_statut","",$param,'align="right"',$sortfield,$sortorder);
@ -137,10 +139,12 @@ if ($resql)
print '<input class="flat" type="text" size="10" name="search_company" value="'.dol_escape_htmltag($search_company).'">'; print '<input class="flat" type="text" size="10" name="search_company" value="'.dol_escape_htmltag($search_company).'">';
print '</td>'; print '</td>';
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
if($conf->livraison_bon->enabled) { if($conf->expedition_bon->enabled) {
print '<td class="liste_titre">'; print '<td class="liste_titre">';
print '<input class="flat" size="10" type="text" name="search_ref_liv" value="'.$search_ref_liv.'"'; print '<input class="flat" size="10" type="text" name="search_ref_liv" value="'.$search_ref_liv.'"';
print '</td>'; print '</td>';
}
if($conf->livraison_bon->enabled) {
print '<td class="liste_titre">&nbsp;</td>'; print '<td class="liste_titre">&nbsp;</td>';
} }
print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">'; print '<td class="liste_titre" align="right"><input type="image" class="liste_titre" name="button_search" src="'.img_picto($langs->trans("Search"),'search.png','','',1).'" value="'.dol_escape_htmltag($langs->trans("Search")).'" title="'.dol_escape_htmltag($langs->trans("Search")).'">';
@ -178,17 +182,22 @@ if ($resql)
// Date delivery planed // Date delivery planed
print "<td align=\"center\">"; print "<td align=\"center\">";
print dol_print_date($db->jdate($objp->date_expedition),"day"); print dol_print_date($db->jdate($objp->date_livraison),"day");
/*$now = time(); /*$now = time();
if ( ($now - $db->jdate($objp->date_expedition)) > $conf->warnings->lim && $objp->statutid == 1 ) if ( ($now - $db->jdate($objp->date_expedition)) > $conf->warnings->lim && $objp->statutid == 1 )
{ {
}*/ }*/
print "</td>\n"; print "</td>\n";
if($conf->livraison_bon->enabled) { if($conf->expedition_bon->enabled) {
// Date real // Date real
print "<td align=\"center\">"; print '<td align="center">';
print dol_print_date($db->jdate($objp->date_livraison),"day"); print dol_print_date($db->jdate($objp->date_expedition),"day");
print "</td>\n"; print '</td>'."\n";
}
if($conf->livraison_bon->enabled) {
print '<td align="center">';
print dol_print_date($db->jdate($objp->date_reception),"day");
print '</td>'."\n";
} }
print '<td align="right">'.$expedition->LibStatut($objp->fk_statut,5).'</td>'; print '<td align="right">'.$expedition->LibStatut($objp->fk_statut,5).'</td>';

View File

@ -380,7 +380,7 @@ if ($id > 0 || ! empty($ref))
$sql.= " cd.qty,"; $sql.= " cd.qty,";
$sql.= ' cd.date_start,'; $sql.= ' cd.date_start,';
$sql.= ' cd.date_end,'; $sql.= ' cd.date_end,';
$sql.= ' p.label as product_label, p.ref, p.fk_product_type, p.rowid as prodid,'; $sql.= ' p.label as product_label, p.entity, p.ref, p.fk_product_type, p.rowid as prodid,';
$sql.= ' p.description as product_desc, p.fk_product_type as product_type'; $sql.= ' p.description as product_desc, p.fk_product_type as product_type';
$sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd"; $sql.= " FROM ".MAIN_DB_PREFIX."commandedet as cd";
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid"; $sql.= " LEFT JOIN ".MAIN_DB_PREFIX."product as p ON cd.fk_product = p.rowid";
@ -437,6 +437,7 @@ if ($id > 0 || ! empty($ref))
$prod = new Product($db); $prod = new Product($db);
$prod->id = $objp->fk_product; $prod->id = $objp->fk_product;
$prod->entity = $objp->entity;
$prod->getMultiLangs(); $prod->getMultiLangs();
$outputlangs = $langs; $outputlangs = $langs;
@ -461,9 +462,11 @@ if ($id > 0 || ! empty($ref))
$product_static->type=$objp->fk_product_type; $product_static->type=$objp->fk_product_type;
$product_static->id=$objp->fk_product; $product_static->id=$objp->fk_product;
$product_static->ref=$objp->ref; $product_static->ref=$objp->ref;
$product_static->entity = $objp->entity;
$text=$product_static->getNomUrl(1); $text=$product_static->getNomUrl(1);
$text.= ' - '.$label; $text.= ' - '.$label;
$description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($objp->description)); $description=($conf->global->PRODUIT_DESC_IN_FORM?'':dol_htmlentitiesbr($objp->description)).'<br>';
$description.= $product_static->show_photos($conf->product->multidir_output[$product_static->entity],1,1,0,0,0,80);
print $form->textwithtooltip($text,$description,3,'','',$i); print $form->textwithtooltip($text,$description,3,'','',$i);
// Show range // Show range

Some files were not shown because too many files have changed in this diff Show More