*
* 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
@@ -45,70 +46,68 @@ require_once DOL_DOCUMENT_ROOT.'/expensereport/class/paymentexpensereport.class.
$langs->loadLangs(array("other", "compta", "banks", "bills", "companies", "product", "trips", "admin"));
$now = dol_now();
-$current_date = dol_getdate($now);
-if (empty($conf->global->SOCIETE_FISCAL_MONTH_START)) {
- $conf->global->SOCIETE_FISCAL_MONTH_START = 1;
-}
-
-// Date range
-$year = GETPOST("year", "int");
-if (empty($year)) {
- $year_current = $current_date['year'];
- $year_start = $year_current;
+$refresh = GETPOSTISSET('submit') ? true : false;
+$invoice_type = GETPOSTISSET('invoice_type') ? GETPOST('invoice_type', 'alpha') : '';
+$vat_rate_show = GETPOSTISSET('vat_rate_show') ? GETPOST('vat_rate_show', 'int') : -1;
+$year_current = GETPOSTISSET('year') ? GETPOST('year', 'int') : intval(strftime('%Y', $now));
+$year_start = $year_current;
+$month_current = GETPOSTISSET('month') ? GETPOST('month', 'int') : intval(strftime('%m', $now));
+$month_start = $month_current;
+if ($refresh === false) {
+ $date_start = dol_get_first_day($year_start, $month_start);
+ $date_end = dol_get_last_day($year_start, $month_start);
} else {
- $year_current = $year;
- $year_start = $year;
-}
-$date_start = dol_mktime(0, 0, 0, GETPOST("date_startmonth"), GETPOST("date_startday"), GETPOST("date_startyear"));
-$date_end = dol_mktime(23, 59, 59, GETPOST("date_endmonth"), GETPOST("date_endday"), GETPOST("date_endyear"));
-// Set default period if not defined
-if (empty($date_start) || empty($date_end)) { // We define date_start and date_end
- $q = GETPOST("q", "int");
- if (empty($q)) {
- if (GETPOST("month", "int")) {
- $date_start = dol_get_first_day($year_start, GETPOST("month", "int"), false);
- $date_end = dol_get_last_day($year_start, GETPOST("month", "int"), false);
- } else {
- if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) { // quaterly vat, we take last past complete quarter
- $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -3 - (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) % 3), 'm');
- $date_end = dol_time_plus_duree($date_start, 3, 'm') - 1;
- } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) { // yearly vat
- if ($current_date['mon'] < $conf->global->SOCIETE_FISCAL_MONTH_START) {
- if (($conf->global->SOCIETE_FISCAL_MONTH_START - $current_date['mon']) > 6) { // If period started from less than 6 years, we show past year
- $year_start--;
- }
- } else {
- if (($current_date['mon'] - $conf->global->SOCIETE_FISCAL_MONTH_START) < 6) { // If perdio started from less than 6 years, we show past year
- $year_start--;
- }
+ // Date range
+ //$year=GETPOST("year", "int");
+ //if (empty($year))
+ //{
+ // $year_current = strftime("%Y", dol_now());
+ // $year_start = $year_current;
+ //} else {
+ // $year_current = $year;
+ // $year_start = $year;
+ //}
+
+ $date_start=dol_mktime(0, 0, 0, GETPOST("date_startmonth"), GETPOST("date_startday"), GETPOST("date_startyear"));
+ $date_end=dol_mktime(23, 59, 59, GETPOST("date_endmonth"), GETPOST("date_endday"), GETPOST("date_endyear"));
+ // Quarter
+ if (empty($date_start) || empty($date_end)) { // We define date_start and date_end
+ $q=GETPOST("q", "int");
+ if (empty($q)) {
+ if (GETPOST("month", "int")) {
+ $date_start=dol_get_first_day($year_start, GETPOST("month", "int"), false);
+ $date_end=dol_get_last_day($year_start, GETPOST("month", "int"), false);
+ } else {
+ $date_start=dol_get_first_day($year_start, empty($conf->global->SOCIETE_FISCAL_MONTH_START)?1:$conf->global->SOCIETE_FISCAL_MONTH_START, false);
+ if (empty($conf->global->MAIN_INFO_VAT_RETURN) || $conf->global->MAIN_INFO_VAT_RETURN == 2) {
+ $date_end=dol_time_plus_duree($date_start, 3, 'm') - 1;
+ } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 3) {
+ $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1;
+ } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) {
+ $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1;
}
- $date_start = dol_get_first_day($year_start, $conf->global->SOCIETE_FISCAL_MONTH_START, false);
- $date_end = dol_time_plus_duree($date_start, 1, 'y') - 1;
- } elseif ($conf->global->MAIN_INFO_VAT_RETURN == 1) { // monthly vat, we take last past complete month
- $date_start = dol_time_plus_duree(dol_get_first_day($year_start, $current_date['mon'], false), -1, 'm');
- $date_end = dol_time_plus_duree($date_start, 1, 'm') - 1;
}
- }
- } else {
- if ($q == 1) {
- $date_start = dol_get_first_day($year_start, 1, false);
- $date_end = dol_get_last_day($year_start, 3, false);
- }
- if ($q == 2) {
- $date_start = dol_get_first_day($year_start, 4, false);
- $date_end = dol_get_last_day($year_start, 6, false);
- }
- if ($q == 3) {
- $date_start = dol_get_first_day($year_start, 7, false);
- $date_end = dol_get_last_day($year_start, 9, false);
- }
- if ($q == 4) {
- $date_start = dol_get_first_day($year_start, 10, false);
- $date_end = dol_get_last_day($year_start, 12, false);
+ } else {
+ if ($q == 1) {
+ $date_start=dol_get_first_day($year_start, 1, false); $date_end=dol_get_last_day($year_start, 3, false);
+ }
+ if ($q == 2) {
+ $date_start=dol_get_first_day($year_start, 4, false); $date_end=dol_get_last_day($year_start, 6, false);
+ }
+ if ($q == 3) {
+ $date_start=dol_get_first_day($year_start, 7, false); $date_end=dol_get_last_day($year_start, 9, false);
+ }
+ if ($q == 4) {
+ $date_start=dol_get_first_day($year_start, 10, false); $date_end=dol_get_last_day($year_start, 12, false);
+ }
}
}
}
+$month_start = strftime('%m', $date_start);
+$year_start = strftime('%Y', $date_start);
+
+
$min = price2num(GETPOST("min", "alpha"));
if (empty($min)) {
$min = 0;
@@ -428,7 +427,10 @@ if (!is_array($x_coll) || !is_array($x_paye)) {
if (is_array($x_both[$rate]['coll']['detail'])) {
// VAT Rate
print "";
- print ''.$langs->trans("Rate").': '.vatrate($rate).'% ';
+ print '';
+ print $langs->trans('Rate') . ' : ' . vatrate($rate) . '%';
+ print ' - ' . img_picto('', 'chevron-down', 'class="paddingrightonly"') . $langs->trans('VATReportShowByRateDetails') . ' ';
+ print ' ';
print ' '."\n";
foreach ($x_both[$rate]['coll']['detail'] as $index => $fields) {
@@ -444,112 +446,149 @@ if (!is_array($x_coll) || !is_array($x_paye)) {
$type = 1;
}
-
- print '';
-
- // Ref
- print ''.$fields['link'].' ';
-
- // Invoice date
- print ''.dol_print_date($fields['datef'], 'day').' ';
-
- // Payment date
- if ($conf->global->TAX_MODE_SELL_PRODUCT == 'payment' || $conf->global->TAX_MODE_SELL_SERVICE == 'payment') {
- print ''.dol_print_date($fields['datep'], 'day').' ';
- } else {
- print ' ';
- }
-
- // Company name
- print ''.$fields['company_link'].' ';
-
- // Description
- print '';
- if ($fields['pid']) {
- $product_static->id = $fields['pid'];
- $product_static->ref = $fields['pref'];
- $product_static->type = $fields['dtype']; // We force with the type of line to have type how line is registered
- print $product_static->getNomUrl(1);
- if (dol_string_nohtmltag($fields['descr'])) {
- print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
- }
- } else {
- if ($type) {
- $text = img_object($langs->trans('Service'), 'service');
- } else {
- $text = img_object($langs->trans('Product'), 'product');
- }
- if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) {
- if ($reg[1] == 'DEPOSIT') {
- $fields['descr'] = $langs->transnoentitiesnoconv('Deposit');
- } elseif ($reg[1] == 'CREDIT_NOTE') {
- $fields['descr'] = $langs->transnoentitiesnoconv('CreditNote');
- } else {
- $fields['descr'] = $langs->transnoentitiesnoconv($reg[1]);
- }
- }
- print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
-
- // Show range
- print_date_range($fields['ddate_start'], $fields['ddate_end']);
- }
- print ' ';
-
- // Total HT
- if ($modetax != 1) {
- print '';
- print price($fields['totalht']);
- if (price2num($fields['ftotal_ttc'])) {
- //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
- $ratiolineinvoice = ($fields['dtotal_ttc'] / $fields['ftotal_ttc']);
- //print ' ('.round($ratiolineinvoice*100,2).'%)';
- }
- print ' ';
- }
-
// Payment
- $ratiopaymentinvoice = 1;
+ $ratiopaymentinvoice=1;
if ($modetax != 1) {
- print '';
- //print $fields['totalht']."-".$fields['payment_amount']."-".$fields['ftotal_ttc'];
- if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
- $payment_static->id = $fields['payment_id'];
- print $payment_static->getNomUrl(2);
- }
if (($type == 0 && $conf->global->TAX_MODE_SELL_PRODUCT == 'invoice')
|| ($type == 1 && $conf->global->TAX_MODE_SELL_SERVICE == 'invoice')) {
- print $langs->trans("NA");
} else {
if (isset($fields['payment_amount']) && price2num($fields['ftotal_ttc'])) {
- $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']);
- }
- print price(price2num($fields['payment_amount'], 'MT'));
- if (isset($fields['payment_amount'])) {
- print ' ('.round($ratiopaymentinvoice * 100, 2).'%)';
+ $ratiopaymentinvoice=($fields['payment_amount']/$fields['ftotal_ttc']);
}
}
- print ' ';
}
// Total collected
- print '';
- $temp_ht = $fields['totalht'] * $ratiopaymentinvoice;
- print price(price2num($temp_ht, 'MT'), 1);
- print ' ';
+ $temp_ht=$fields['totalht']*$ratiopaymentinvoice;
// VAT
- print '';
- $temp_vat = $fields['vat'] * $ratiopaymentinvoice;
- print price(price2num($temp_vat, 'MT'), 1);
- //print price($fields['vat']);
- print ' ';
- print ' ';
+ $temp_vat=$fields['vat']*$ratiopaymentinvoice;
$subtot_coll_total_ht += $temp_ht;
$subtot_coll_vat += $temp_vat;
$x_coll_sum += $temp_vat;
}
}
+
+ if ($invoice_type == 'customer' && $vat_rate_show == $rate) {
+ if (is_array($x_both[$rate]['coll']['detail'])) {
+ foreach ($x_both[$rate]['coll']['detail'] as $index => $fields) {
+ // Define type
+ // We MUST use dtype (type in line). We can use something else, only if dtype is really unknown.
+ $type = (isset($fields['dtype']) ? $fields['dtype'] : $fields['ptype']);
+ // Try to enhance type detection using date_start and date_end for free lines where type
+ // was not saved.
+ if (!empty($fields['ddate_start'])) {
+ $type = 1;
+ }
+ if (!empty($fields['ddate_end'])) {
+ $type = 1;
+ }
+
+
+ print '';
+
+ // Ref
+ print '' . $fields['link'] . ' ';
+
+ // Invoice date
+ print '' . dol_print_date($fields['datef'], 'day') . ' ';
+
+ // Payment date
+ if ($conf->global->TAX_MODE_SELL_PRODUCT == 'payment' || $conf->global->TAX_MODE_SELL_SERVICE == 'payment') print '' . dol_print_date($fields['datep'], 'day') . ' ';
+ else print ' ';
+
+ // Company name
+ print '' . $fields['company_link'] . ' ';
+
+ // Description
+ print '';
+ if ($fields['pid']) {
+ $product_static->id = $fields['pid'];
+ $product_static->ref = $fields['pref'];
+ $product_static->type = $fields['dtype']; // We force with the type of line to have type how line is registered
+ print $product_static->getNomUrl(1);
+ if (dol_string_nohtmltag($fields['descr'])) {
+ print ' - ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
+ }
+ } else {
+ if ($type) {
+ $text = img_object($langs->trans('Service'), 'service');
+ } else {
+ $text = img_object($langs->trans('Product'), 'product');
+ }
+ if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) {
+ if ($reg[1] == 'DEPOSIT') {
+ $fields['descr'] = $langs->transnoentitiesnoconv('Deposit');
+ } elseif ($reg[1] == 'CREDIT_NOTE') {
+ $fields['descr'] = $langs->transnoentitiesnoconv('CreditNote');
+ } else {
+ $fields['descr'] = $langs->transnoentitiesnoconv($reg[1]);
+ }
+ }
+ print $text . ' ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
+
+ // Show range
+ print_date_range($fields['ddate_start'], $fields['ddate_end']);
+ }
+ print ' ';
+
+ // Total HT
+ if ($modetax != 1) {
+ print '';
+ print price($fields['totalht']);
+ if (price2num($fields['ftotal_ttc'])) {
+ //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
+ $ratiolineinvoice = ($fields['dtotal_ttc'] / $fields['ftotal_ttc']);
+ //print ' ('.round($ratiolineinvoice*100,2).'%)';
+ }
+ print ' ';
+ }
+
+ // Payment
+ $ratiopaymentinvoice = 1;
+ if ($modetax != 1) {
+ print '';
+ //print $fields['totalht']."-".$fields['payment_amount']."-".$fields['ftotal_ttc'];
+ if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
+ $payment_static->id = $fields['payment_id'];
+ print $payment_static->getNomUrl(2);
+ }
+ if (($type == 0 && $conf->global->TAX_MODE_SELL_PRODUCT == 'invoice')
+ || ($type == 1 && $conf->global->TAX_MODE_SELL_SERVICE == 'invoice')) {
+ print $langs->trans("NA");
+ } else {
+ if (isset($fields['payment_amount']) && price2num($fields['ftotal_ttc'])) {
+ $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']);
+ }
+ print price(price2num($fields['payment_amount'], 'MT'));
+ if (isset($fields['payment_amount'])) {
+ print ' (' . round($ratiopaymentinvoice * 100, 2) . '%)';
+ }
+ }
+ print ' ';
+ }
+
+ // Total collected
+ print '';
+ $temp_ht = $fields['totalht'] * $ratiopaymentinvoice;
+ print price(price2num($temp_ht, 'MT'), 1);
+ print ' ';
+
+ // VAT
+ print '';
+ $temp_vat = $fields['vat'] * $ratiopaymentinvoice;
+ print price(price2num($temp_vat, 'MT'), 1);
+ //print price($fields['vat']);
+ print ' ';
+ print ' ';
+
+ //$subtot_coll_total_ht += $temp_ht;
+ //$subtot_coll_vat += $temp_vat;
+ //$x_coll_sum += $temp_vat;
+ }
+ }
+ }
// Total customers for this vat rate
print '';
print ' ';
@@ -577,17 +616,14 @@ if (!is_array($x_coll) || !is_array($x_paye)) {
}
// Blank line
- print ' ';
+ print ' ';
// Print table headers for this quadri - expenses now
print '';
print ''.$elementsup.' ';
print ''.$langs->trans("DateInvoice").' ';
- if ($conf->global->TAX_MODE_BUY_PRODUCT == 'payment' || $conf->global->TAX_MODE_BUY_SERVICE == 'payment') {
- print ''.$langs->trans("DatePayment").' ';
- } else {
- print ' ';
- }
+ if ($conf->global->TAX_MODE_BUY_PRODUCT == 'payment' || $conf->global->TAX_MODE_BUY_SERVICE == 'payment') print ''.$langs->trans("DatePayment").' ';
+ else print ' ';
print ''.$namesup.' ';
print ''.$productsup.' ';
if ($modetax != 1) {
@@ -604,7 +640,10 @@ if (!is_array($x_coll) || !is_array($x_paye)) {
if (is_array($x_both[$rate]['paye']['detail'])) {
print " ";
- print ''.$langs->trans("Rate").': '.vatrate($rate).'% ';
+ print '';
+ print $langs->trans('Rate') . ' : ' . vatrate($rate) . '%';
+ print ' - ' . img_picto('', 'chevron-down', 'class="paddingrightonly"') . $langs->trans('VATReportShowByRateDetails') . ' ';
+ print ' ';
print ' '."\n";
foreach ($x_both[$rate]['paye']['detail'] as $index => $fields) {
@@ -620,112 +659,151 @@ if (!is_array($x_coll) || !is_array($x_paye)) {
$type = 1;
}
-
- print '';
-
- // Ref
- print ''.$fields['link'].' ';
-
- // Invoice date
- print ''.dol_print_date($fields['datef'], 'day').' ';
-
- // Payment date
- if ($conf->global->TAX_MODE_BUY_PRODUCT == 'payment' || $conf->global->TAX_MODE_BUY_SERVICE == 'payment') {
- print ''.dol_print_date($fields['datep'], 'day').' ';
- } else {
- print ' ';
- }
-
- // Company name
- print ''.$fields['company_link'].' ';
-
- // Description
- print '';
- if ($fields['pid']) {
- $product_static->id = $fields['pid'];
- $product_static->ref = $fields['pref'];
- $product_static->type = $fields['dtype']; // We force with the type of line to have type how line is registered
- print $product_static->getNomUrl(1);
- if (dol_string_nohtmltag($fields['descr'])) {
- print ' - '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
- }
- } else {
- if ($type) {
- $text = img_object($langs->trans('Service'), 'service');
- } else {
- $text = img_object($langs->trans('Product'), 'product');
- }
- if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) {
- if ($reg[1] == 'DEPOSIT') {
- $fields['descr'] = $langs->transnoentitiesnoconv('Deposit');
- } elseif ($reg[1] == 'CREDIT_NOTE') {
- $fields['descr'] = $langs->transnoentitiesnoconv('CreditNote');
- } else {
- $fields['descr'] = $langs->transnoentitiesnoconv($reg[1]);
- }
- }
- print $text.' '.dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
-
- // Show range
- print_date_range($fields['ddate_start'], $fields['ddate_end']);
- }
- print ' ';
-
- // Total HT
- if ($modetax != 1) {
- print '';
- print price($fields['totalht']);
- if (price2num($fields['ftotal_ttc'])) {
- //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
- $ratiolineinvoice = ($fields['dtotal_ttc'] / $fields['ftotal_ttc']);
- //print ' ('.round($ratiolineinvoice*100,2).'%)';
- }
- print ' ';
- }
-
// Payment
$ratiopaymentinvoice = 1;
if ($modetax != 1) {
- print '';
- if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
- $paymentfourn_static->id = $fields['payment_id'];
- print $paymentfourn_static->getNomUrl(2);
- }
-
if (($type == 0 && $conf->global->TAX_MODE_BUY_PRODUCT == 'invoice')
|| ($type == 1 && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) {
- print $langs->trans("NA");
} else {
if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) {
$ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']);
}
- print price(price2num($fields['payment_amount'], 'MT'));
- if (isset($fields['payment_amount'])) {
- print ' ('.round($ratiopaymentinvoice * 100, 2).'%)';
- }
}
- print ' ';
}
// VAT paid
- print '';
$temp_ht = $fields['totalht'] * $ratiopaymentinvoice;
- print price(price2num($temp_ht, 'MT'), 1);
- print ' ';
// VAT
- print '';
$temp_vat = $fields['vat'] * $ratiopaymentinvoice;
- print price(price2num($temp_vat, 'MT'), 1);
- //print price($fields['vat']);
- print ' ';
- print ' ';
$subtot_paye_total_ht += $temp_ht;
$subtot_paye_vat += $temp_vat;
$x_paye_sum += $temp_vat;
}
+
+ if ($invoice_type == 'supplier' && $vat_rate_show == $rate) {
+ foreach ($x_both[$rate]['paye']['detail'] as $index => $fields) {
+ // Define type
+ // We MUST use dtype (type in line). We can use something else, only if dtype is really unknown.
+ $type = (isset($fields['dtype']) ? $fields['dtype'] : $fields['ptype']);
+ // Try to enhance type detection using date_start and date_end for free lines where type
+ // was not saved.
+ if (!empty($fields['ddate_start'])) {
+ $type = 1;
+ }
+ if (!empty($fields['ddate_end'])) {
+ $type = 1;
+ }
+
+
+ print '';
+
+ // Ref
+ print '' . $fields['link'] . ' ';
+
+ // Invoice date
+ print '' . dol_print_date($fields['datef'], 'day') . ' ';
+
+ // Payment date
+ if ($conf->global->TAX_MODE_BUY_PRODUCT == 'payment' || $conf->global->TAX_MODE_BUY_SERVICE == 'payment') {
+ print '' . dol_print_date($fields['datep'], 'day') . ' ';
+ } else {
+ print ' ';
+ }
+
+ // Company name
+ print '' . $fields['company_link'] . ' ';
+
+ // Description
+ print '';
+ if ($fields['pid']) {
+ $product_static->id = $fields['pid'];
+ $product_static->ref = $fields['pref'];
+ $product_static->type = $fields['dtype']; // We force with the type of line to have type how line is registered
+ print $product_static->getNomUrl(1);
+ if (dol_string_nohtmltag($fields['descr'])) {
+ print ' - ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
+ }
+ } else {
+ if ($type) {
+ $text = img_object($langs->trans('Service'), 'service');
+ } else {
+ $text = img_object($langs->trans('Product'), 'product');
+ }
+ if (preg_match('/^\((.*)\)$/', $fields['descr'], $reg)) {
+ if ($reg[1] == 'DEPOSIT') {
+ $fields['descr'] = $langs->transnoentitiesnoconv('Deposit');
+ } elseif ($reg[1] == 'CREDIT_NOTE') {
+ $fields['descr'] = $langs->transnoentitiesnoconv('CreditNote');
+ } else {
+ $fields['descr'] = $langs->transnoentitiesnoconv($reg[1]);
+ }
+ }
+ print $text . ' ' . dol_trunc(dol_string_nohtmltag($fields['descr']), 24);
+
+ // Show range
+ print_date_range($fields['ddate_start'], $fields['ddate_end']);
+ }
+ print ' ';
+
+ // Total HT
+ if ($modetax != 1) {
+ print '';
+ print price($fields['totalht']);
+ if (price2num($fields['ftotal_ttc'])) {
+ //print $fields['dtotal_ttc']."/".$fields['ftotal_ttc']." - ";
+ $ratiolineinvoice = ($fields['dtotal_ttc'] / $fields['ftotal_ttc']);
+ //print ' ('.round($ratiolineinvoice*100,2).'%)';
+ }
+ print ' ';
+ }
+
+ // Payment
+ $ratiopaymentinvoice = 1;
+ if ($modetax != 1) {
+ print '';
+ if ($fields['payment_amount'] && $fields['ftotal_ttc']) {
+ $paymentfourn_static->id = $fields['payment_id'];
+ print $paymentfourn_static->getNomUrl(2);
+ }
+
+ if (($type == 0 && $conf->global->TAX_MODE_BUY_PRODUCT == 'invoice')
+ || ($type == 1 && $conf->global->TAX_MODE_BUY_SERVICE == 'invoice')) {
+ print $langs->trans("NA");
+ } else {
+ if (isset($fields['payment_amount']) && $fields['ftotal_ttc']) {
+ $ratiopaymentinvoice = ($fields['payment_amount'] / $fields['ftotal_ttc']);
+ }
+ print price(price2num($fields['payment_amount'], 'MT'));
+ if (isset($fields['payment_amount'])) {
+ print ' (' . round($ratiopaymentinvoice * 100, 2) . '%)';
+ }
+ }
+ print ' ';
+ }
+
+ // VAT paid
+ print '';
+ $temp_ht = $fields['totalht'] * $ratiopaymentinvoice;
+ print price(price2num($temp_ht, 'MT'), 1);
+ print ' ';
+
+ // VAT
+ print '';
+ $temp_vat = $fields['vat'] * $ratiopaymentinvoice;
+ print price(price2num($temp_vat, 'MT'), 1);
+ //print price($fields['vat']);
+ print ' ';
+ print ' ';
+
+ //$subtot_paye_total_ht += $temp_ht;
+ //$subtot_paye_vat += $temp_vat;
+ //$x_paye_sum += $temp_vat;
+ }
+ }
}
+
// Total suppliers for this vat rate
print '';
print ' ';
diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php
index 0b4954e5e88..beaa51edac3 100644
--- a/htdocs/core/class/commonobject.class.php
+++ b/htdocs/core/class/commonobject.class.php
@@ -1619,6 +1619,9 @@ abstract class CommonObject
if ($idtofetch) {
$thirdparty = new Societe($this->db);
$result = $thirdparty->fetch($idtofetch);
+ if ($result<0) {
+ $this->errors=array_merge($this->errors, $thirdparty->errors);
+ }
$this->thirdparty = $thirdparty;
// Use first price level if level not defined for third party
@@ -5704,7 +5707,7 @@ abstract class CommonObject
return 0;
}
} else {
- dol_print_error($this->db);
+ $this->errors[]=$this->db->lasterror;
return -1;
}
}
@@ -8258,7 +8261,7 @@ abstract class CommonObject
* @param string $alias String of alias of table for fields. For example 't'.
* @return string list of alias fields
*/
- protected function getFieldList($alias = '')
+ public function getFieldList($alias = '')
{
$keys = array_keys($this->fields);
if (!empty($alias)) {
diff --git a/htdocs/core/lib/memory.lib.php b/htdocs/core/lib/memory.lib.php
index ce603415009..1300c1b771f 100644
--- a/htdocs/core/lib/memory.lib.php
+++ b/htdocs/core/lib/memory.lib.php
@@ -93,7 +93,7 @@ function dol_setcache($memoryid, $data, $expire = 0)
$dolmemcache->add($memoryid, $data, $expire); // This fails if key already exists
$rescode = $dolmemcache->getResultCode();
if ($rescode == 0) {
- return count($data);
+ return is_countable($data) ? count($data) : 0;
} else {
return -$rescode;
}
@@ -113,7 +113,7 @@ function dol_setcache($memoryid, $data, $expire = 0)
//$dolmemcache->setOption(Memcached::OPT_COMPRESSION, false);
$result = $dolmemcache->add($memoryid, $data, false, $expire); // This fails if key already exists
if ($result) {
- return count($data);
+ return is_countable($data) ? count($data) : 0;
} else {
return -1;
}
diff --git a/htdocs/core/lib/project.lib.php b/htdocs/core/lib/project.lib.php
index c5820b42d89..f2dbacc3ab4 100644
--- a/htdocs/core/lib/project.lib.php
+++ b/htdocs/core/lib/project.lib.php
@@ -208,7 +208,7 @@ function project_prepare_head(Project $project)
$langs->load('eventorganization');
//TODO : Count
$nbConfOrBooth = 1;
- $head[$h][0] = DOL_URL_ROOT . '/projet/event.php?id=' . $project->id;
+ $head[$h][0] = DOL_URL_ROOT . '/eventorganization/conferenceorbooth_list.php?projectid=' . $project->id;
$head[$h][1] = $langs->trans("ConferenceOrBoothTab");
if ($nbContact > 0) {
$head[$h][1] .= '' . $nbConfOrBooth . ' ';
diff --git a/htdocs/core/lib/tax.lib.php b/htdocs/core/lib/tax.lib.php
index e2257369865..c66d16b6736 100644
--- a/htdocs/core/lib/tax.lib.php
+++ b/htdocs/core/lib/tax.lib.php
@@ -1,11 +1,12 @@
- * Copyright (C) 2006-2007 Yannick Warnier
- * Copyright (C) 2011 Regis Houssin
- * Copyright (C) 2012-2017 Juanjo Menent
- * Copyright (C) 2012 Cédric Salvador
- * Copyright (C) 2012-2014 Raphaël Doursenaud
- * Copyright (C) 2015 Marcos García
+/* Copyright (C) 2004-2009 Laurent Destailleur
+ * Copyright (C) 2006-2007 Yannick Warnier
+ * Copyright (C) 2011 Regis Houssin
+ * Copyright (C) 2012-2017 Juanjo Menent
+ * Copyright (C) 2012 Cédric Salvador
+ * Copyright (C) 2012-2014 Raphaël Doursenaud
+ * Copyright (C) 2015 Marcos García
+ * Copyright (C) 2021 Open-Dsi
*
* 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
@@ -642,9 +643,9 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
$sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql .= " 0 as payment_id, 0 as payment_amount";
- $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
- $sql .= " ".MAIN_DB_PREFIX."societe as s,";
- $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d";
+ $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable." as d ON d.".$fk_facture."=f.rowid";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely)
@@ -653,8 +654,6 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
} else {
$sql .= " AND f.type IN (0,1,2,3,5)";
}
- $sql .= " AND f.rowid = d.".$fk_facture;
- $sql .= " AND s.rowid = f.fk_soc";
if ($y && $m) {
$sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
$sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'";
@@ -683,11 +682,11 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql .= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,";
$sql .= " pa.datep as datep";
- $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
- $sql .= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,";
- $sql .= " ".MAIN_DB_PREFIX.$paymenttable." as pa,";
- $sql .= " ".MAIN_DB_PREFIX."societe as s,";
- $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d";
+ $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$paymentfacturetable." as pf ON pf.".$fk_facture2." = f.rowid";;
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$paymenttable." as pa ON pa.rowid = pf.".$fk_payment;
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable." as d ON d.".$fk_facture." = f.rowid";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely)
@@ -696,10 +695,6 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
} else {
$sql .= " AND f.type IN (0,1,2,3,5)";
}
- $sql .= " AND f.rowid = d.".$fk_facture;
- $sql .= " AND s.rowid = f.fk_soc";
- $sql .= " AND pf.".$fk_facture2." = f.rowid";
- $sql .= " AND pa.rowid = pf.".$fk_payment;
if ($y && $m) {
$sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
$sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'";
@@ -805,9 +800,9 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " f.".$invoicefieldref." as facnum, f.type, f.total_ttc as ftotal_ttc, f.datef, s.nom as company_name, s.rowid as company_id,";
$sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql .= " 0 as payment_id, 0 as payment_amount";
- $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
- $sql .= " ".MAIN_DB_PREFIX."societe as s,";
- $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d";
+ $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable." as d ON d.".$fk_facture." = f.rowid";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Validated or paid (partially or completely)
@@ -816,8 +811,6 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
} else {
$sql .= " AND f.type IN (0,1,2,3,5)";
}
- $sql .= " AND f.rowid = d.".$fk_facture;
- $sql .= " AND s.rowid = f.fk_soc";
if ($y && $m) {
$sql .= " AND f.datef >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
$sql .= " AND f.datef <= '".$db->idate(dol_get_last_day($y, $m, false))."'";
@@ -846,11 +839,11 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " p.rowid as pid, p.ref as pref, p.fk_product_type as ptype,";
$sql .= " pf.".$fk_payment." as payment_id, pf.amount as payment_amount,";
$sql .= " pa.datep as datep";
- $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f,";
- $sql .= " ".MAIN_DB_PREFIX.$paymentfacturetable." as pf,";
- $sql .= " ".MAIN_DB_PREFIX.$paymenttable." as pa,";
- $sql .= " ".MAIN_DB_PREFIX."societe as s,";
- $sql .= " ".MAIN_DB_PREFIX.$invoicedettable." as d";
+ $sql .= " FROM ".MAIN_DB_PREFIX.$invoicetable." as f";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$paymentfacturetable." as pf ON pf.".$fk_facture2." = f.rowid";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$paymenttable." as pa ON pa.rowid = pf.".$fk_payment;
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX."societe as s ON s.rowid = f.fk_soc";
+ $sql .= " INNER JOIN ".MAIN_DB_PREFIX.$invoicedettable." as d ON d.".$fk_facture." = f.rowid";
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX."product as p on d.fk_product = p.rowid";
$sql .= " WHERE f.entity IN (".getEntity($invoicetable).")";
$sql .= " AND f.fk_statut in (1,2)"; // Paid (partially or completely)
@@ -859,10 +852,6 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
} else {
$sql .= " AND f.type IN (0,1,2,3,5)";
}
- $sql .= " AND f.rowid = d.".$fk_facture;
- $sql .= " AND s.rowid = f.fk_soc";
- $sql .= " AND pf.".$fk_facture2." = f.rowid";
- $sql .= " AND pa.rowid = pf.".$fk_payment;
if ($y && $m) {
$sql .= " AND pa.datep >= '".$db->idate(dol_get_first_day($y, $m, false))."'";
$sql .= " AND pa.datep <= '".$db->idate(dol_get_last_day($y, $m, false))."'";
@@ -967,9 +956,9 @@ function tax_by_rate($type, $db, $y, $q, $date_start, $date_end, $modetax, $dire
$sql .= " e.date_debut as date_start, e.date_fin as date_end, e.fk_user_author,";
$sql .= " e.ref as facnum, e.total_ttc as ftotal_ttc, e.date_create, d.fk_c_type_fees as type,";
$sql .= " p.fk_bank as payment_id, p.amount as payment_amount, p.rowid as pid, e.ref as pref";
- $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as e ";
- $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport_det as d ON d.fk_expensereport = e.rowid ";
- $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."payment_expensereport as p ON p.fk_expensereport = e.rowid ";
+ $sql .= " FROM ".MAIN_DB_PREFIX."expensereport as e";
+ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."expensereport_det as d ON d.fk_expensereport = e.rowid";
+ $sql .= " LEFT JOIN ".MAIN_DB_PREFIX."payment_expensereport as p ON p.fk_expensereport = e.rowid";
$sql .= " WHERE e.entity = ".$conf->entity;
$sql .= " AND e.fk_statut in (6)";
if ($y && $m) {
diff --git a/htdocs/eventorganization/class/conferenceorbooth.class.php b/htdocs/eventorganization/class/conferenceorbooth.class.php
index 53f09bb4786..186bd57811b 100644
--- a/htdocs/eventorganization/class/conferenceorbooth.class.php
+++ b/htdocs/eventorganization/class/conferenceorbooth.class.php
@@ -208,11 +208,13 @@ class ConferenceOrBooth extends ActionComm
*
* @param int $id Id object
* @param string $ref Ref
+ * @param string $ref_ext Ref ext to get
+ * @param string $email_msgid Email msgid
* @return int <0 if KO, 0 if not found, >0 if OK
*/
- public function fetch($id, $ref = null)
+ public function fetch($id, $ref = null, $ref_ext = '', $email_msgid = '')
{
- $result = parent::fetch($id, $ref);
+ $result = parent::fetch($id, $ref, $ref_ext, $email_msgid);
return $result;
}
@@ -238,7 +240,7 @@ class ConferenceOrBooth extends ActionComm
$records = array();
$sql = 'SELECT ';
- $sql .= $this->getFieldList();
+ $sql .= $this->getFieldList('t');
$sql .= ' FROM '.MAIN_DB_PREFIX.$this->table_element.' as t';
if (isset($this->ismultientitymanaged) && $this->ismultientitymanaged == 1) {
$sql .= ' WHERE t.entity IN ('.getEntity($this->table_element).')';
@@ -314,11 +316,10 @@ class ConferenceOrBooth extends ActionComm
/**
* Delete object in database
*
- * @param User $user User that deletes
* @param bool $notrigger false=launch triggers after, true=disable triggers
* @return int <0 if KO, >0 if OK
*/
- public function delete(User $user, $notrigger = false)
+ public function delete($notrigger = false)
{
//TODO delete attendees and subscription
return parent::delete($notrigger);
@@ -496,13 +497,16 @@ class ConferenceOrBooth extends ActionComm
* Return a link to the object card (with optionaly the picto)
*
* @param int $withpicto Include picto in link (0=No picto, 1=Include picto into link, 2=Only picto)
+ * @param int $maxlength Not use here just for declaration method compatibility with parent classes
+ * @param string $classname Not use here just for declaration method compatibility with parent classes
* @param string $option On what the link point to ('nolink', ...)
+ * @param int $overwritepicto Not use here just for declaration method compatibility with parent classes
* @param int $notooltip 1=Disable tooltip
- * @param string $morecss Add more css on link
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
+ * @param string $morecss Add more css on link
* @return string String with URL
*/
- public function getNomUrl($withpicto = 0, $option = '', $notooltip = 0, $morecss = '', $save_lastsearch_value = -1)
+ public function getNomUrl($withpicto = 0, $maxlength = 0, $classname = '', $option = '', $overwritepicto = 0, $notooltip = 0, $save_lastsearch_value = -1, $morecss = '')
{
global $conf, $langs, $hookmanager;
@@ -603,11 +607,12 @@ class ConferenceOrBooth extends ActionComm
* Return the label of the status
*
* @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto
+ * @param int $hidenastatus Not use here just for declaration method compatibility with parent classes
* @return string Label of status
*/
- public function getLibStatut($mode = 0)
+ public function getLibStatut($mode = 0, $hidenastatus = 0)
{
- return $this->LibStatut($this->status, $mode);
+ return $this->LibStatutEvent($this->status, $mode);
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
@@ -618,7 +623,7 @@ class ConferenceOrBooth extends ActionComm
* @param int $mode 0=long label, 1=short label, 2=Picto + short label, 3=Picto, 4=Picto + long label, 5=Short label + Picto, 6=Long label + Picto
* @return string Label of status
*/
- public function LibStatut($status, $mode = 0)
+ public function LibStatutEvent($status, $mode = 0)
{
// phpcs:enable
if (empty($this->labelStatus) || empty($this->labelStatusShort)) {
@@ -627,13 +632,13 @@ class ConferenceOrBooth extends ActionComm
$this->labelStatus[self::STATUS_DRAFT] = $langs->trans('Draft');
$this->labelStatus[self::STATUS_SUGGESTED] = $langs->trans('Suggested');
$this->labelStatus[self::STATUS_CONFIRMED] = $langs->trans('Confirmed');
- $this->labelStatus[self::STATUS_NOTSELECTED] = $langs->trans('NotSelected');
+ $this->labelStatus[self::STATUS_NOT_QUALIFIED] = $langs->trans('NotSelected');
$this->labelStatus[self::STATUS_DONE] = $langs->trans('Done');
$this->labelStatus[self::STATUS_CANCELED] = $langs->trans('Canceled');
$this->labelStatusShort[self::STATUS_DRAFT] = $langs->trans('Draft');
$this->labelStatusShort[self::STATUS_SUGGESTED] = $langs->trans('Suggested');
$this->labelStatusShort[self::STATUS_CONFIRMED] = $langs->trans('Confirmed');
- $this->labelStatusShort[self::STATUS_NOTSELECTED] = $langs->trans('NotSelected');
+ $this->labelStatusShort[self::STATUS_NOT_QUALIFIED] = $langs->trans('NotSelected');
$this->labelStatusShort[self::STATUS_DONE] = $langs->trans('Done');
$this->labelStatusShort[self::STATUS_CANCELED] = $langs->trans('Canceled');
}
diff --git a/htdocs/eventorganization/class/index.html b/htdocs/eventorganization/class/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/eventorganization/class/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/eventorganization/conferenceorbooth_list.php b/htdocs/eventorganization/conferenceorbooth_list.php
index b3c76ef2493..374ea25f68c 100644
--- a/htdocs/eventorganization/conferenceorbooth_list.php
+++ b/htdocs/eventorganization/conferenceorbooth_list.php
@@ -22,70 +22,22 @@
* \brief List page for conferenceorbooth
*/
-//if (! defined('NOREQUIREDB')) define('NOREQUIREDB', '1'); // Do not create database handler $db
-//if (! defined('NOREQUIREUSER')) define('NOREQUIREUSER', '1'); // Do not load object $user
-//if (! defined('NOREQUIRESOC')) define('NOREQUIRESOC', '1'); // Do not load object $mysoc
-//if (! defined('NOREQUIRETRAN')) define('NOREQUIRETRAN', '1'); // Do not load object $langs
-//if (! defined('NOSCANGETFORINJECTION')) define('NOSCANGETFORINJECTION', '1'); // Do not check injection attack on GET parameters
-//if (! defined('NOSCANPOSTFORINJECTION')) define('NOSCANPOSTFORINJECTION', '1'); // Do not check injection attack on POST parameters
-//if (! defined('NOCSRFCHECK')) define('NOCSRFCHECK', '1'); // Do not check CSRF attack (test on referer + on token if option MAIN_SECURITY_CSRF_WITH_TOKEN is on).
-//if (! defined('NOTOKENRENEWAL')) define('NOTOKENRENEWAL', '1'); // Do not roll the Anti CSRF token (used if MAIN_SECURITY_CSRF_WITH_TOKEN is on)
-//if (! defined('NOSTYLECHECK')) define('NOSTYLECHECK', '1'); // Do not check style html tag into posted data
-//if (! defined('NOREQUIREMENU')) define('NOREQUIREMENU', '1'); // If there is no need to load and show top and left menu
-//if (! defined('NOREQUIREHTML')) define('NOREQUIREHTML', '1'); // If we don't need to load the html.form.class.php
-//if (! defined('NOREQUIREAJAX')) define('NOREQUIREAJAX', '1'); // Do not load ajax.lib.php library
-//if (! defined("NOLOGIN")) define("NOLOGIN", '1'); // If this page is public (can be called outside logged session). This include the NOIPCHECK too.
-//if (! defined('NOIPCHECK')) define('NOIPCHECK', '1'); // Do not check IP defined into conf $dolibarr_main_restrict_ip
-//if (! defined("MAIN_LANG_DEFAULT")) define('MAIN_LANG_DEFAULT', 'auto'); // Force lang to a particular value
-//if (! defined("MAIN_AUTHENTICATION_MODE")) define('MAIN_AUTHENTICATION_MODE', 'aloginmodule'); // Force authentication handler
-//if (! defined("NOREDIRECTBYMAINTOLOGIN")) define('NOREDIRECTBYMAINTOLOGIN', 1); // The main.inc.php does not make a redirect if not logged, instead show simple error message
-//if (! defined("FORCECSP")) define('FORCECSP', 'none'); // Disable all Content Security Policies
-//if (! defined('CSRFCHECK_WITH_TOKEN')) define('CSRFCHECK_WITH_TOKEN', '1'); // Force use of CSRF protection with tokens even for GET
-//if (! defined('NOBROWSERNOTIF')) define('NOBROWSERNOTIF', '1'); // Disable browser notification
-
-// Load Dolibarr environment
-$res = 0;
-// Try main.inc.php into web root known defined into CONTEXT_DOCUMENT_ROOT (not always defined)
-if (!$res && !empty($_SERVER["CONTEXT_DOCUMENT_ROOT"])) {
- $res = @include $_SERVER["CONTEXT_DOCUMENT_ROOT"]."/main.inc.php";
-}
-// Try main.inc.php into web root detected using web root calculated from SCRIPT_FILENAME
-$tmp = empty($_SERVER['SCRIPT_FILENAME']) ? '' : $_SERVER['SCRIPT_FILENAME']; $tmp2 = realpath(__FILE__); $i = strlen($tmp) - 1; $j = strlen($tmp2) - 1;
-while ($i > 0 && $j > 0 && isset($tmp[$i]) && isset($tmp2[$j]) && $tmp[$i] == $tmp2[$j]) {
- $i--; $j--;
-}
-if (!$res && $i > 0 && file_exists(substr($tmp, 0, ($i + 1))."/main.inc.php")) {
- $res = @include substr($tmp, 0, ($i + 1))."/main.inc.php";
-}
-if (!$res && $i > 0 && file_exists(dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php")) {
- $res = @include dirname(substr($tmp, 0, ($i + 1)))."/main.inc.php";
-}
-// Try main.inc.php using relative path
-if (!$res && file_exists("../main.inc.php")) {
- $res = @include "../main.inc.php";
-}
-if (!$res && file_exists("../../main.inc.php")) {
- $res = @include "../../main.inc.php";
-}
-if (!$res && file_exists("../../../main.inc.php")) {
- $res = @include "../../../main.inc.php";
-}
-if (!$res) {
- die("Include of main fails");
-}
-
+require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formcompany.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/company.lib.php';
-
-// load eventorganization libraries
-require_once __DIR__.'/class/conferenceorbooth.class.php';
+require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
+require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
+require_once DOL_DOCUMENT_ROOT.'/eventorganization/class/conferenceorbooth.class.php';
+if ($conf->categorie->enabled) {
+ require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
+}
// for other modules
//dol_include_once('/othermodule/class/otherobject.class.php');
// Load translation files required by the page
-$langs->loadLangs(array("eventorganization@eventorganization", "other"));
+$langs->loadLangs(array("eventorganization", "other"));
$action = GETPOST('action', 'aZ09') ?GETPOST('action', 'aZ09') : 'view'; // The action 'add', 'create', 'edit', 'update', 'view', ...
$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
@@ -98,6 +50,7 @@ $backtopage = GETPOST('backtopage', 'alpha'); // Go back to a dedicated page
$optioncss = GETPOST('optioncss', 'aZ'); // Option for the css output (always '' except when 'print')
$id = GETPOST('id', 'int');
+$projectid = GETPOST('projectid', 'int');
// Load variable for pagination
$limit = GETPOST('limit', 'int') ? GETPOST('limit', 'int') : $conf->liste_limit;
@@ -174,9 +127,9 @@ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_list_array_fields.tpl.php';
$object->fields = dol_sort_array($object->fields, 'position');
$arrayfields = dol_sort_array($arrayfields, 'position');
-$permissiontoread = $user->rights->eventorganization->conferenceorbooth->read;
-$permissiontoadd = $user->rights->eventorganization->conferenceorbooth->write;
-$permissiontodelete = $user->rights->eventorganization->conferenceorbooth->delete;
+$permissiontoread = $user->rights->eventorganization->read;
+$permissiontoadd = $user->rights->eventorganization->write;
+$permissiontodelete = $user->rights->eventorganization->delete;
// Security check
if (empty($conf->eventorganization->enabled)) {
@@ -243,22 +196,193 @@ if (empty($reshook)) {
/*
* View
*/
-
$form = new Form($db);
-
$now = dol_now();
//$help_url="EN:Module_ConferenceOrBooth|FR:Module_ConferenceOrBooth_FR|ES:Módulo_ConferenceOrBooth";
$help_url = '';
$title = $langs->trans('ListOf', $langs->transnoentitiesnoconv("ConferenceOrBooths"));
+if ($projectid > 0) {
+ $project = new Project($db);
+ $result=$project->fetch($projectid);
+ if ($result < 0) {
+ setEventMessages(null, $project->errors, 'errors');
+ }
+ $result=$project->fetch_thirdparty();
+ if ($result < 0) {
+ setEventMessages(null, $project->errors, 'errors');
+ }
+ $result = $project->fetch_optionals();
+ if ($result < 0) {
+ setEventMessages(null, $project->errors, 'errors');
+ }
+
+ $help_url = "EN:Module_Projects|FR:Module_Projets|ES:Módulo_Proyectos";
+ $title = $langs->trans("Project") . ' - ' . $langs->trans("ConferenceOrBooths") . ' - ' . $project->ref . ' ' . $project->name;
+ if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/', $conf->global->MAIN_HTML_TITLE) && $project->name) {
+ $title = $project->ref . ' ' . $project->name . ' - ' . $langs->trans("ConferenceOrBooths");
+ }
+}
+
+// Output page
+// --------------------------------------------------------------------
+
+llxHeader('', $title, $help_url);
+
+// Example : Adding jquery code
+print '';
+
+if ($projectid > 0) {
+ // To verify role of users
+ //$userAccess = $object->restrictedProjectArea($user,'read');
+ $userWrite = $project->restrictedProjectArea($user, 'write');
+ //$userDelete = $object->restrictedProjectArea($user,'delete');
+ //print "userAccess=".$userAccess." userWrite=".$userWrite." userDelete=".$userDelete;
+
+ $head = project_prepare_head($project);
+ print dol_get_fiche_head($head, 'eventorganisation', $langs->trans("Project"), -1, ($project->public ? 'projectpub' : 'project'));
+
+ // Project card
+ $linkback = ''.$langs->trans("BackToList").' ';
+
+ $morehtmlref = '';
+ // Title
+ $morehtmlref .= $project->title;
+ // Thirdparty
+ if ($project->thirdparty->id > 0) {
+ $morehtmlref .= ' '.$langs->trans('ThirdParty').' : '.$project->thirdparty->getNomUrl(1, 'project');
+ }
+ $morehtmlref .= '
';
+
+ // Define a complementary filter for search of next/prev ref.
+ if (!$user->rights->project->all->lire) {
+ $objectsListId = $project->getProjectsAuthorizedForUser($user, 0, 0);
+ $project->next_prev_filter = " rowid in (".(count($objectsListId) ?join(',', array_keys($objectsListId)) : '0').")";
+ }
+
+ dol_banner_tab($project, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
+
+ print '';
+ print '
';
+ print '
';
+
+ print '
';
+
+ // Usage
+ print '';
+ print $langs->trans("Usage");
+ print ' ';
+ print '';
+ if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
+ print ' usage_opportunity ? ' checked="checked"' : '').'"> ';
+ $htmltext = $langs->trans("ProjectFollowOpportunity");
+ print $form->textwithpicto($langs->trans("ProjectFollowOpportunity"), $htmltext);
+ print ' ';
+ }
+ if (empty($conf->global->PROJECT_HIDE_TASKS)) {
+ print ' usage_task ? ' checked="checked"' : '').'"> ';
+ $htmltext = $langs->trans("ProjectFollowTasks");
+ print $form->textwithpicto($langs->trans("ProjectFollowTasks"), $htmltext);
+ print ' ';
+ }
+ if (!empty($conf->global->PROJECT_BILL_TIME_SPENT)) {
+ print ' usage_bill_time ? ' checked="checked"' : '').'"> ';
+ $htmltext = $langs->trans("ProjectBillTimeDescription");
+ print $form->textwithpicto($langs->trans("BillTime"), $htmltext);
+ print ' ';
+ }
+ if (!empty($conf->eventorganization->enabled)) {
+ print ' usage_organize_event ? ' checked="checked"' : '')).'"> ';
+ $htmltext = $langs->trans("EventOrganizationDescriptionLong");
+ print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext);
+ }
+ print ' ';
+
+ // Visibility
+ print ''.$langs->trans("Visibility").' ';
+ if ($project->public) {
+ print $langs->trans('SharedProject');
+ } else {
+ print $langs->trans('PrivateProject');
+ }
+ print ' ';
+
+ // Date start - end
+ print ''.$langs->trans("DateStart").' - '.$langs->trans("DateEnd").' ';
+ $start = dol_print_date($project->date_start, 'day');
+ print ($start ? $start : '?');
+ $end = dol_print_date($project->date_end, 'day');
+ print ' - ';
+ print ($end ? $end : '?');
+ if ($object->hasDelay()) {
+ print img_warning("Late");
+ }
+ print ' ';
+
+ // Budget
+ print ''.$langs->trans("Budget").' ';
+ if (strcmp($project->budget_amount, '')) {
+ print price($project->budget_amount, '', $langs, 1, 0, 0, $conf->currency);
+ }
+ print ' ';
+
+ // Other attributes
+ $cols = 2;
+ $objectconf=$object;
+ $object = $project;
+ include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
+ $object = $objectconf;
+
+ print '
';
+
+ print '
';
+ print '
';
+ print '
';
+ print '
';
+
+ print '
';
+
+ // Description
+ print ''.$langs->trans("Description").' ';
+ print nl2br($project->description);
+ print ' ';
+
+ // Categories
+ if ($conf->categorie->enabled) {
+ print ''.$langs->trans("Categories").' ';
+ print $form->showCategories($project->id, Categorie::TYPE_PROJECT, 1);
+ print " ";
+ }
+
+ print '
';
+
+ print '
';
+ print '
';
+ print '
';
+
+ print '
';
+
+
+ print dol_get_fiche_end();
+}
// Build and execute select
// --------------------------------------------------------------------
$sql = 'SELECT ';
-foreach ($object->fields as $key => $val) {
- $sql .= 't.'.$key.', ';
-}
+$sql .= $object->getFieldList('t');
// Add fields from extrafields
if (!empty($extrafields->attributes[$object->table_element]['label'])) {
foreach ($extrafields->attributes[$object->table_element]['label'] as $key => $val) {
@@ -274,6 +398,7 @@ $sql .= " FROM ".MAIN_DB_PREFIX.$object->table_element." as t";
if (is_array($extrafields->attributes[$object->table_element]['label']) && count($extrafields->attributes[$object->table_element]['label'])) {
$sql .= " LEFT JOIN ".MAIN_DB_PREFIX.$object->table_element."_extrafields as ef on (t.rowid = ef.fk_object)";
}
+$sql .= " INNER JOIN ".MAIN_DB_PREFIX."c_actioncomm as cact ON cact.id=t.fk_action AND cact.module LIKE '%@eventorganization'";
// Add table from hooks
$parameters = array();
$reshook = $hookmanager->executeHooks('printFieldListFrom', $parameters, $object); // Note that $action and $object may have been modified by hook
@@ -376,27 +501,6 @@ if ($num == 1 && !empty($conf->global->MAIN_SEARCH_DIRECT_OPEN_IF_ONLY_ONE) && $
exit;
}
-
-// Output page
-// --------------------------------------------------------------------
-
-llxHeader('', $title, $help_url);
-
-// Example : Adding jquery code
-print '';
-
$arrayofselected = is_array($toselect) ? $toselect : array();
$param = '';
@@ -440,7 +544,7 @@ if (GETPOST('nomassaction', 'int') || in_array($massaction, array('presend', 'pr
}
$massactionbutton = $form->selectMassAction('', $arrayofmassactions);
-print ' ';
// Visibility
diff --git a/htdocs/projet/element.php b/htdocs/projet/element.php
index 353fff374fc..ac8ed3879cd 100644
--- a/htdocs/projet/element.php
+++ b/htdocs/projet/element.php
@@ -134,6 +134,9 @@ if (!empty($conf->salaries->enabled)) {
if (!empty($conf->mrp->enabled)) {
$langs->load("mrp");
}
+if (!empty($conf->eventorganization->enabled)) {
+ $langs->load("eventorganization");
+}
$id = GETPOST('id', 'int');
$ref = GETPOST('ref', 'alpha');
@@ -254,6 +257,11 @@ if (!empty($conf->global->PROJECT_BILL_TIME_SPENT)) {
print $form->textwithpicto($langs->trans("BillTime"), $htmltext);
print ' ';
}
+if (!empty($conf->eventorganization->enabled)) {
+ print ' usage_organize_event ? ' checked="checked"' : '')).'"> ';
+ $htmltext = $langs->trans("EventOrganizationDescriptionLong");
+ print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext);
+}
print '';
// Visibility
diff --git a/htdocs/projet/event.php b/htdocs/projet/event.php
deleted file mode 100644
index b033cb95742..00000000000
--- a/htdocs/projet/event.php
+++ /dev/null
@@ -1,358 +0,0 @@
-
- * Copyright (C) 2012 Laurent Destailleur
- * Copyright (C) 2021 florian.henry@scopen.fr
- *
- * 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 .
- */
-
-/**
- * \file htdocs/projet/event.php
- * \ingroup project
- * \brief Tab event organization
- */
-
-require '../main.inc.php';
-require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php';
-require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php';
-require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
-require_once DOL_DOCUMENT_ROOT.'/categories/class/categorie.class.php';
-
-// Load translation files required by the page
-$langs->load('projects', 'eventorganization');
-
-$action = GETPOST('action', 'aZ09');
-$id = GETPOST('id', 'int');
-$ref = GETPOST('ref', 'alpha');
-
-$mine = $_REQUEST['mode'] == 'mine' ? 1 : 0;
-//if (! $user->rights->projet->all->lire) $mine=1; // Special for projects
-
-$object = new Project($db);
-
-include DOL_DOCUMENT_ROOT.'/core/actions_fetchobject.inc.php'; // Must be include, not include_once
-
-// Security check
-$socid = 0;
-if ($user->socid > 0) {
- $socid = $user->socid; // For external user, no check is done on company because readability is managed by public status of project and assignement.
-}
-$result = restrictedArea($user, 'eventorganization', $id);
-
-$permissiontoread = $user->rights->eventorganization->read;
-$permissiontoadd = $user->rights->eventorganization->write; // Used by the include of actions_addupdatedelete.inc.php and actions_lineupdown.inc.php
-$permissiontodelete = $user->rights->eventorganization->delete || ($permissiontoadd && isset($object->status) && $object->status == $object::STATUS_DRAFT);
-
-/*
- * Actions
- */
-
-if ($action == 'update' && empty(GETPOST('cancel')) && $permissiontoadd) {
- $error = 0;
- $object->oldcopy = clone $object;
-
- $object->accept_conference_suggestions=(GETPOST('accept_conference_suggestions', 'alpha') == 'on' ? 1 : 0);
- $object->accept_booth_suggestions=(GETPOST('accept_booth_suggestions', 'alpha') == 'on' ? 1 : 0);
- $object->price_registration=price2num(GETPOST('price_registration', 'alphanohtml'));;
- $object->price_booth=price2num(GETPOST('price_booth', 'alphanohtml'));;
-
- $result = $object->update($user);
- if ($result < 0) {
- setEventMessages($object->error, $object->errors, 'errors');
- $db->rollback();
- $action = 'edit';
- } else {
- $db->commit();
- if (GETPOST('socid', 'int') > 0) {
- $object->fetch_thirdparty(GETPOST('socid', 'int'));
- } else {
- unset($object->thirdparty);
- }
- $action='';
- }
-}
-
-
-
-/*
- * View
- */
-
-$title = $langs->trans("Project").' - '.$langs->trans("ConferenceOrBoothTab").' - '.$object->ref.' '.$object->name;
-if (!empty($conf->global->MAIN_HTML_TITLE) && preg_match('/projectnameonly/', $conf->global->MAIN_HTML_TITLE) && $object->name) {
- $title = $object->ref.' '.$object->name.' - '.$langs->trans("Note");
-}
-//TODO Make wiki docs
-$help_url = '';
-llxHeader("", $title, $help_url);
-
-$form = new Form($db);
-$userstatic = new User($db);
-
-$now = dol_now();
-
-if ($id > 0 || !empty($ref)) {
- $head = project_prepare_head($object);
- print dol_get_fiche_head($head, 'eventorganisation', $langs->trans('ConferenceOrBoothTab'), -1);
-
- // Project card
-
- $linkback = ''.$langs->trans("BackToList").' ';
-
- $morehtmlref = '';
- // Title
- $morehtmlref .= $object->title;
- // Thirdparty
- if ($object->thirdparty->id > 0) {
- $morehtmlref .= ' '.$langs->trans('ThirdParty').' : '.$object->thirdparty->getNomUrl(1, 'project');
- }
- $morehtmlref .= '
';
-
- // Define a complementary filter for search of next/prev ref.
- if (!$user->rights->projet->all->lire) {
- $objectsListId = $object->getProjectsAuthorizedForUser($user, 0, 0);
- $object->next_prev_filter = " rowid in (".(count($objectsListId) ?join(',', array_keys($objectsListId)) : '0').")";
- }
-
- dol_banner_tab($object, 'ref', $linkback, 1, 'ref', 'ref', $morehtmlref);
-
-
- print '';
- print '
';
- print '
';
-
- print '
';
-
- // Usage
- print '';
- print $langs->trans("Usage");
- print ' ';
- print '';
- if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES)) {
- print ' usage_opportunity ? ' checked="checked"' : '')).'"> ';
- $htmltext = $langs->trans("ProjectFollowOpportunity");
- print $form->textwithpicto($langs->trans("ProjectFollowOpportunity"), $htmltext);
- print ' ';
- }
- if (empty($conf->global->PROJECT_HIDE_TASKS)) {
- print ' usage_task ? ' checked="checked"' : '')).'"> ';
- $htmltext = $langs->trans("ProjectFollowTasks");
- print $form->textwithpicto($langs->trans("ProjectFollowTasks"), $htmltext);
- print ' ';
- }
- if (!empty($conf->global->PROJECT_BILL_TIME_SPENT)) {
- print ' usage_bill_time ? ' checked="checked"' : '')).'"> ';
- $htmltext = $langs->trans("ProjectBillTimeDescription");
- print $form->textwithpicto($langs->trans("BillTime"), $htmltext);
- print ' ';
- }
-
- if (!empty($conf->eventorganization->enabled)) {
- print ' usage_organize_event ? ' checked="checked"' : '')).'"> ';
- $htmltext = $langs->trans("EventOrganizationDescriptionLong");
- print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext);
- }
- print ' ';
-
- // Visibility
- print ''.$langs->trans("Visibility").' ';
- if ($object->public) {
- print $langs->trans('SharedProject');
- } else {
- print $langs->trans('PrivateProject');
- }
- print ' ';
-
- if (!empty($conf->global->PROJECT_USE_OPPORTUNITIES) && !empty($object->usage_opportunity)) {
- // Opportunity status
- print ''.$langs->trans("OpportunityStatus").' ';
- $code = dol_getIdFromCode($db, $object->opp_status, 'c_lead_status', 'rowid', 'code');
- if ($code) {
- print $langs->trans("OppStatus".$code);
- }
- print ' ';
-
- // Opportunity percent
- print ''.$langs->trans("OpportunityProbability").' ';
- if (strcmp($object->opp_percent, '')) {
- print price($object->opp_percent, 0, $langs, 1, 0).' %';
- }
- print ' ';
-
- // Opportunity Amount
- print ''.$langs->trans("OpportunityAmount").' ';
- /*if ($object->opp_status)
- {
- print price($obj->opp_amount, 1, $langs, 1, 0, -1, $conf->currency);
- }*/
- if (strcmp($object->opp_amount, '')) {
- print price($object->opp_amount, 0, $langs, 1, 0, -1, $conf->currency);
- }
- print ' ';
-
- // Opportunity Weighted Amount
- print ''.$langs->trans('OpportunityWeightedAmount').' ';
- if (strcmp($object->opp_amount, '') && strcmp($object->opp_percent, '')) {
- print price($object->opp_amount * $object->opp_percent / 100, 0, $langs, 1, 0, -1, $conf->currency);
- }
- print ' ';
- }
-
- // Date start - end
- print ''.$langs->trans("DateStart").' - '.$langs->trans("DateEnd").' ';
- $start = dol_print_date($object->date_start, 'day');
- print ($start ? $start : '?');
- $end = dol_print_date($object->date_end, 'day');
- print ' - ';
- print ($end ? $end : '?');
- if ($object->hasDelay()) {
- print img_warning("Late");
- }
- print ' ';
-
- // Budget
- print ''.$langs->trans("Budget").' ';
- if (strcmp($object->budget_amount, '')) {
- print price($object->budget_amount, 0, $langs, 1, 0, 0, $conf->currency);
- }
- print ' ';
-
- // Other attributes
- $cols = 2;
- include DOL_DOCUMENT_ROOT.'/core/tpl/extrafields_view.tpl.php';
-
- print '
';
-
- print '
';
- print '
';
- print '
';
- print '
';
-
- if ($action == 'edit') {
- print '
';
- print '
';
- print '
';
-
- print '
';
-}
-
-print dol_get_fiche_end();
-
-if ($action == 'edit' && $permissiontoadd > 0) {
- print '';
- print ' ';
- print ' ';
- print '
';
-
- print '';
-}
-
-
-/*
- * Actions Buttons
- */
-print '';
-$parameters = array();
-$reshook = $hookmanager->executeHooks('addMoreActionsButtons', $parameters, $object, $action); // Note that $action and $object may have been
-// modified by hook
-if (empty($reshook)) {
- // Modify
- if ($object->statut != Project::STATUS_CLOSED && $action=='') {
- if ($permissiontoadd > 0) {
- print '
'.$langs->trans("Modify").' ';
- } else {
- print '
'.$langs->trans('Modify').' ';
- }
- }
-}
-
-// End of page
-llxFooter();
-$db->close();
diff --git a/htdocs/projet/tasks.php b/htdocs/projet/tasks.php
index 32a12ff36fd..eb5b0ae7b0a 100644
--- a/htdocs/projet/tasks.php
+++ b/htdocs/projet/tasks.php
@@ -36,7 +36,12 @@ if ($conf->categorie->enabled) {
}
// Load translation files required by the page
-$langs->loadLangs(array('projects', 'users', 'companies'));
+$langsLoad=array('projects', 'users', 'companies');
+if (!empty($conf->eventorganization->enabled)) {
+ $langsLoad[]='eventorganization';
+}
+
+$langs->loadLangs($langsLoad);
$action = GETPOST('action', 'aZ09');
$massaction = GETPOST('massaction', 'alpha');
@@ -351,9 +356,19 @@ llxHeader("", $title, $help_url);
if ($id > 0 || !empty($ref)) {
- $object->fetch($id, $ref);
- $object->fetch_thirdparty();
- $res = $object->fetch_optionals();
+ $result = $object->fetch($id, $ref);
+ if ($result < 0) {
+ setEventMessages(null, $object->errors, 'errors');
+ }
+ $result = $object->fetch_thirdparty();
+ if ($result < 0) {
+ setEventMessages(null, $object->errors, 'errors');
+ }
+ $result = $object->fetch_optionals();
+ if ($result < 0) {
+ setEventMessages(null, $object->errors, 'errors');
+ }
+
// To verify role of users
//$userAccess = $object->restrictedProjectArea($user,'read');
@@ -469,6 +484,11 @@ if ($id > 0 || !empty($ref)) {
print $form->textwithpicto($langs->trans("BillTime"), $htmltext);
print '
';
}
+ if (!empty($conf->eventorganization->enabled)) {
+ print '
usage_organize_event ? ' checked="checked"' : '')).'"> ';
+ $htmltext = $langs->trans("EventOrganizationDescriptionLong");
+ print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext);
+ }
print '';
// Visibility
diff --git a/htdocs/projet/tasks/time.php b/htdocs/projet/tasks/time.php
index d95fba9d48f..0beacab18a0 100644
--- a/htdocs/projet/tasks/time.php
+++ b/htdocs/projet/tasks/time.php
@@ -37,7 +37,12 @@ require_once DOL_DOCUMENT_ROOT.'/core/class/html.formother.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/html.formprojet.class.php';
// Load translation files required by the page
-$langs->loadLangs(array('projects', 'bills', 'orders'));
+$langsLoad=array('projects', 'bills', 'orders');
+if (!empty($conf->eventorganization->enabled)) {
+ $langsLoad[]='eventorganization';
+}
+
+$langs->loadLangs($langsLoad);
$action = GETPOST('action', 'alpha');
$massaction = GETPOST('massaction', 'alpha'); // The bulk action (combo box choice into lists)
@@ -629,6 +634,11 @@ if (($id > 0 || !empty($ref)) || $projectidforalltimes > 0) {
print $form->textwithpicto($langs->trans("BillTime"), $htmltext);
print '
';
}
+ if (!empty($conf->eventorganization->enabled)) {
+ print '
usage_organize_event ? ' checked="checked"' : '')).'"> ';
+ $htmltext = $langs->trans("EventOrganizationDescriptionLong");
+ print $form->textwithpicto($langs->trans("ManageOrganizeEvent"), $htmltext);
+ }
print '';
// Visibility
diff --git a/htdocs/recruitment/admin/index.html b/htdocs/recruitment/admin/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/recruitment/admin/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/recruitment/class/index.html b/htdocs/recruitment/class/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/recruitment/class/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/recruitment/core/modules/recruitment/doc/index.html b/htdocs/recruitment/core/modules/recruitment/doc/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/recruitment/core/modules/recruitment/doc/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/recruitment/core/modules/recruitment/index.html b/htdocs/recruitment/core/modules/recruitment/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/recruitment/core/modules/recruitment/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/recruitment/index.html b/htdocs/recruitment/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/recruitment/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/recruitment/lib/index.html b/htdocs/recruitment/lib/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/recruitment/lib/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/societe/class/societe.class.php b/htdocs/societe/class/societe.class.php
index 5d6f8e44703..47d714e08db 100644
--- a/htdocs/societe/class/societe.class.php
+++ b/htdocs/societe/class/societe.class.php
@@ -1812,6 +1812,7 @@ class Societe extends CommonObject
$this->db->free($resql);
} else {
$this->error = $this->db->lasterror();
+ $this->errors[] = $this->db->lasterror();
$result = -3;
}
diff --git a/htdocs/workstation/class/index.html b/htdocs/workstation/class/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/workstation/class/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/workstation/index.html b/htdocs/workstation/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/workstation/index.html
@@ -0,0 +1 @@
+
diff --git a/htdocs/workstation/lib/index.html b/htdocs/workstation/lib/index.html
new file mode 100644
index 00000000000..8b137891791
--- /dev/null
+++ b/htdocs/workstation/lib/index.html
@@ -0,0 +1 @@
+