mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Merge remote-tracking branch 'origin/3.5' into develop
Conflicts: ChangeLog dev/initdata/mysqldump_dolibarr_3.5.0.sql htdocs/commande/fiche.php htdocs/compta/facture.php htdocs/product/index.php htdocs/user/fiche.php
This commit is contained in:
commit
1b02cdd352
|
|
@ -124,7 +124,6 @@ Fix: Error on ajax_constantonoff function.
|
|||
Fix: [ bug #1323 ] problème pour générer un odt depuis les taches dans projet.
|
||||
Fix: Can not make withdrawals
|
||||
|
||||
|
||||
***** ChangeLog for 3.5.1 compared to 3.5.0 *****
|
||||
Fix: Do not report trigger errors twice.
|
||||
Fix: Error when creating event was not reported.
|
||||
|
|
@ -162,10 +161,11 @@ Fix: [ bug #520 ] Product statistics and detailed lists are wrong.
|
|||
Fix: [ bug #1240 ] traduction.
|
||||
Fix: [ bug #1238 ] When creating accompte with a %, free product are used for calculation.
|
||||
Fix: [ bug #1280 ] service with not end of date was tagged as expired.
|
||||
Fix: [ bug #1295 ] Error when creating an agenda extrafield with a number as reference
|
||||
Fix: [ bug #1306 ] Fatal error when adding an external calendar
|
||||
Fix: [ bug #1295 ] Error when creating an agenda extrafield with a number as reference.
|
||||
Fix: [ bug #1306 ] Fatal error when adding an external calendar.
|
||||
New: Added es_CL language
|
||||
Fix: Margin tabs bad data show
|
||||
Fix: [ bug #1318 ] Problem with enter key when adding an existing product to a customer invoice.
|
||||
|
||||
***** ChangeLog for 3.5 compared to 3.4.* *****
|
||||
For users:
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ $force_install_lockinstall='444';
|
|||
//$force_dolibarr_lib_NUSOAP_PATH='/usr/share/php/nusoap';
|
||||
//$force_dolibarr_lib_ODTPHP_PATHTOPCLZIP='/usr/share/php/libphp-pclzip';
|
||||
//$force_dolibarr_lib_PHPEXCEL_PATH='';
|
||||
//$force_dolibarr_js_CKEDITOR='/javascript/ckeditor';
|
||||
//$force_dolibarr_js_CKEDITOR='/javascript/ckeditor'; // Use '/javascript/ckeditor' or 'disabled'
|
||||
//$force_dolibarr_js_JQUERY='/javascript/jquery';
|
||||
//$force_dolibarr_js_JQUERY_UI='/javascript/jquery-ui';
|
||||
//$force_dolibarr_js_JQUERY_FLOT='/javascript/flot';
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -171,6 +171,7 @@ export list="
|
|||
--ignore-table=$base.llx_abonne_extrafields
|
||||
--ignore-table=$base.llx_abonne_type
|
||||
--ignore-table=$base.llx_abonnement
|
||||
--ignore-table=$base.llx_bootstrap
|
||||
--ignore-table=$base.llx_bt_namemap
|
||||
--ignore-table=$base.llx_bt_speedlimit
|
||||
--ignore-table=$base.llx_bt_summary
|
||||
|
|
|
|||
|
|
@ -183,7 +183,7 @@ if ($resql)
|
|||
if ($type > 0)
|
||||
{
|
||||
$membertype=new AdherentType($db);
|
||||
$result=$membertype->fetch($_REQUEST["type"]);
|
||||
$result=$membertype->fetch(GETPOST("type"));
|
||||
$titre.=" (".$membertype->libelle.")";
|
||||
}
|
||||
|
||||
|
|
@ -193,6 +193,7 @@ if ($resql)
|
|||
if ($search_login) $param.="&search_login=".$search_login;
|
||||
if ($search_email) $param.="&search_email=".$search_email;
|
||||
if ($filter) $param.="&filter=".$filter;
|
||||
if ($type > 0) $param.="&type=".$type;
|
||||
print_barre_liste($titre,$page,$_SERVER["PHP_SELF"],$param,$sortfield,$sortorder,'',$num,$nbtotalofrecords);
|
||||
|
||||
if ($sall)
|
||||
|
|
|
|||
|
|
@ -544,9 +544,9 @@ else if ($action == 'addline' && $user->rights->commande->creer) {
|
|||
|
||||
if (! $error && ($qty >= 0) && (! empty($product_desc) || ! empty($idprod))) {
|
||||
// Clean parameters
|
||||
$date_start = dol_mktime(0, 0, 0, GETPOST('date_start' . $predef . 'month'), GETPOST('date_start' . $predef . 'day'), GETPOST('date_start' . $predef . 'year'));
|
||||
$date_end = dol_mktime(0, 0, 0, GETPOST('date_end' . $predef . 'month'), GETPOST('date_end' . $predef . 'day'), GETPOST('date_end' . $predef . 'year'));
|
||||
$price_base_type = (GETPOST('price_base_type', 'alpha') ? GETPOST('price_base_type', 'alpha') : 'HT');
|
||||
$date_start=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), 0, GETPOST('date_start'.$predef.'month'), GETPOST('date_start'.$predef.'day'), GETPOST('date_start'.$predef.'year'));
|
||||
$date_end=dol_mktime(GETPOST('date_start'.$predef.'hour'), GETPOST('date_start'.$predef.'min'), 0, GETPOST('date_end'.$predef.'month'), GETPOST('date_end'.$predef.'day'), GETPOST('date_end'.$predef.'year'));
|
||||
$price_base_type = (GETPOST('price_base_type', 'alpha')?GETPOST('price_base_type', 'alpha'):'HT');
|
||||
|
||||
// Ecrase $pu par celui du produit
|
||||
// Ecrase $desc par celui du produit
|
||||
|
|
@ -735,13 +735,13 @@ else if ($action == 'addline' && $user->rights->commande->creer) {
|
|||
*/
|
||||
else if ($action == 'updateligne' && $user->rights->commande->creer && GETPOST('save') == $langs->trans('Save')) {
|
||||
// Clean parameters
|
||||
$date_start = '';
|
||||
$date_end = '';
|
||||
$date_start = dol_mktime(0, 0, 0, GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear'));
|
||||
$date_end = dol_mktime(0, 0, 0, GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear'));
|
||||
$description = dol_htmlcleanlastbr(GETPOST('product_desc'));
|
||||
$pu_ht = GETPOST('price_ht');
|
||||
$vat_rate = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0);
|
||||
$date_start='';
|
||||
$date_end='';
|
||||
$date_start=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), 0, GETPOST('date_startmonth'), GETPOST('date_startday'), GETPOST('date_startyear'));
|
||||
$date_end=dol_mktime(GETPOST('date_starthour'), GETPOST('date_startmin'), 0, GETPOST('date_endmonth'), GETPOST('date_endday'), GETPOST('date_endyear'));
|
||||
$description=dol_htmlcleanlastbr(GETPOST('product_desc'));
|
||||
$pu_ht=GETPOST('price_ht');
|
||||
$vat_rate=(GETPOST('tva_tx')?GETPOST('tva_tx'):0);
|
||||
|
||||
// Define info_bits
|
||||
$info_bits = 0;
|
||||
|
|
@ -1648,7 +1648,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
|
|||
// => 1),
|
||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"),
|
||||
// 'value' => 1),
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockDecrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'), 'idwarehouse', '', 1)));
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockDecrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1)));
|
||||
}
|
||||
|
||||
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('ValidateOrder'), $text, 'confirm_validate', $formquestion, 0, 1, 220);
|
||||
|
|
@ -1668,7 +1668,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
|
|||
// => 1),
|
||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"),
|
||||
// 'value' => 1),
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'), 'idwarehouse', '', 1)));
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1)));
|
||||
}
|
||||
|
||||
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('UnvalidateOrder'), $text, 'confirm_modif', $formquestion, "yes", 1, 220);
|
||||
|
|
@ -1697,7 +1697,7 @@ if ($action == 'create' && $user->rights->commande->creer) {
|
|||
// => 1),
|
||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"),
|
||||
// 'value' => 1),
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'), 'idwarehouse', '', 1)));
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $langs->trans("SelectWarehouseForStockIncrease"),'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1)));
|
||||
}
|
||||
|
||||
$formconfirm = $form->formconfirm($_SERVER ["PHP_SELF"] . '?id=' . $object->id, $langs->trans('Cancel'), $text, 'confirm_cancel', $formquestion, 0, 1);
|
||||
|
|
|
|||
|
|
@ -337,7 +337,7 @@ else if ($action == 'set_ref_client' && $user->rights->facture->creer) {
|
|||
}
|
||||
|
||||
// Classify to validated
|
||||
else if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->facture->valider)
|
||||
else if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->facture->valider)
|
||||
{
|
||||
$idwarehouse = GETPOST('idwarehouse');
|
||||
|
||||
|
|
@ -347,7 +347,7 @@ else if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->factu
|
|||
// Check parameters
|
||||
|
||||
// Check for mandatory prof id
|
||||
for($i = 1; $i < 6; $i ++)
|
||||
for($i = 1; $i < 6; $i ++)
|
||||
{
|
||||
$idprof_mandatory = 'SOCIETE_IDPROF' . ($i) . '_INVOICE_MANDATORY';
|
||||
$idprof = 'idprof' . $i;
|
||||
|
|
@ -376,10 +376,10 @@ else if ($action == 'confirm_valid' && $confirm == 'yes' && $user->rights->factu
|
|||
}
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
if (! $error)
|
||||
{
|
||||
$result = $object->validate($user, '', $idwarehouse);
|
||||
if ($result >= 0)
|
||||
if ($result >= 0)
|
||||
{
|
||||
// Define output language
|
||||
$outputlangs = $langs;
|
||||
|
|
@ -678,13 +678,13 @@ else if ($action == 'add' && $user->rights->facture->creer)
|
|||
|
||||
$id = $object->create($user);
|
||||
|
||||
if (GETPOST('invoiceAvoirWithLines', 'int')==1 && $id>0)
|
||||
if (GETPOST('invoiceAvoirWithLines', 'int')==1 && $id>0)
|
||||
{
|
||||
$facture_source = new Facture($db); // fetch origin object
|
||||
if ($facture_source->fetch($object->fk_facture_source)>0)
|
||||
if ($facture_source->fetch($object->fk_facture_source)>0)
|
||||
{
|
||||
|
||||
foreach($facture_source->lines as $line)
|
||||
foreach($facture_source->lines as $line)
|
||||
{
|
||||
$line->fk_facture = $object->id;
|
||||
|
||||
|
|
@ -735,7 +735,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
|
|||
}
|
||||
|
||||
// Standard invoice or Deposit invoice created from a Predefined invoice
|
||||
if (($_POST['type'] == 0 || $_POST['type'] == 3) && $_POST['fac_rec'] > 0)
|
||||
if (($_POST['type'] == 0 || $_POST['type'] == 3) && $_POST['fac_rec'] > 0)
|
||||
{
|
||||
$datefacture = dol_mktime(12, 0, 0, $_POST['remonth'], $_POST['reday'], $_POST['reyear']);
|
||||
if (empty($datefacture)) {
|
||||
|
|
@ -743,7 +743,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
|
|||
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors');
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
if (! $error)
|
||||
{
|
||||
$object->socid = GETPOST('socid', 'int');
|
||||
$object->type = $_POST['type'];
|
||||
|
|
@ -763,9 +763,9 @@ else if ($action == 'add' && $user->rights->facture->creer)
|
|||
}
|
||||
|
||||
// Standard or deposit or proforma invoice
|
||||
if (($_POST['type'] == 0 || $_POST['type'] == 3 || $_POST['type'] == 4) && $_POST['fac_rec'] <= 0)
|
||||
if (($_POST['type'] == 0 || $_POST['type'] == 3 || $_POST['type'] == 4) && $_POST['fac_rec'] <= 0)
|
||||
{
|
||||
if (GETPOST('socid', 'int') < 1)
|
||||
if (GETPOST('socid', 'int') < 1)
|
||||
{
|
||||
$error ++;
|
||||
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Customer")), 'errors');
|
||||
|
|
@ -777,7 +777,7 @@ else if ($action == 'add' && $user->rights->facture->creer)
|
|||
setEventMessage($langs->trans("ErrorFieldRequired", $langs->transnoentitiesnoconv("Date")), 'errors');
|
||||
}
|
||||
|
||||
if (! $error)
|
||||
if (! $error)
|
||||
{
|
||||
// Si facture standard
|
||||
$object->socid = GETPOST('socid', 'int');
|
||||
|
|
@ -1043,7 +1043,9 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
|
|||
$error = 0;
|
||||
|
||||
// Set if we used free entry or predefined product
|
||||
if (GETPOST('addline_libre'))
|
||||
if (GETPOST('addline_libre')
|
||||
|| (GETPOST('dp_desc') && ! GETPOST('addline_libre') && ! GETPOST('idprod', 'int')>0) // we push enter onto qty field
|
||||
)
|
||||
{
|
||||
$predef = '';
|
||||
$idprod = 0;
|
||||
|
|
@ -1051,7 +1053,9 @@ else if (($action == 'addline' || $action == 'addline_predef') && $user->rights-
|
|||
$price_ht = GETPOST('price_ht');
|
||||
$tva_tx = (GETPOST('tva_tx') ? GETPOST('tva_tx') : 0);
|
||||
}
|
||||
if (GETPOST('addline_predefined'))
|
||||
if (GETPOST('addline_predefined')
|
||||
|| (! GETPOST('dp_desc') && ! GETPOST('addline_predefined') && GETPOST('idprod', 'int')>0) // we push enter onto qty field
|
||||
)
|
||||
{
|
||||
$predef = (($conf->global->MAIN_FEATURES_LEVEL < 2) ? '_predef' : '');
|
||||
$idprod = GETPOST('idprod', 'int');
|
||||
|
|
@ -1881,7 +1885,7 @@ if ($action == 'create')
|
|||
}
|
||||
$dateinvoice = empty($conf->global->MAIN_AUTOFILL_DATE) ? -1 : ''; // Dot not set 0 here (0 for a date is 1970)
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
$cond_reglement_id = $soc->cond_reglement_id;
|
||||
$mode_reglement_id = $soc->mode_reglement_id;
|
||||
|
|
@ -1891,7 +1895,7 @@ if ($action == 'create')
|
|||
}
|
||||
$absolute_discount = $soc->getAvailableDiscounts();
|
||||
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
if (! empty($conf->use_javascript_ajax))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT . '/core/lib/ajax.lib.php';
|
||||
print ajax_combobox('fac_replacement');
|
||||
|
|
@ -2145,7 +2149,7 @@ if ($action == 'create')
|
|||
print ' <input type="checkbox" name="invoiceAvoirWithLines" id="invoiceAvoirWithLines" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').attr(\'checked\',\'checked\'); $(\'#invoiceAvoirWithPaymentRestAmount\').removeAttr(\'checked\'); }" '.(GETPOST('invoiceAvoirWithLines','int')>0 ? 'checked="checked"':'').' /> <label for="invoiceAvoirWithLines">'.$langs->trans('invoiceAvoirWithLines')."</label>";
|
||||
print '<br> <input type="checkbox" name="invoiceAvoirWithPaymentRestAmount" id="invoiceAvoirWithPaymentRestAmount" value="1" onclick="if($(this).is(\':checked\') ) { $(\'#radio_creditnote\').attr(\'checked\',\'checked\'); $(\'#invoiceAvoirWithLines\').removeAttr(\'checked\'); }" '.(GETPOST('invoiceAvoirWithPaymentRestAmount','int')>0 ? 'checked="checked"':'').' /> <label for="invoiceAvoirWithPaymentRestAmount">'.$langs->trans('invoiceAvoirWithPaymentRestAmount')."</label>";
|
||||
print '</div>';
|
||||
|
||||
|
||||
print '</td></tr>' . "\n";
|
||||
}
|
||||
else
|
||||
|
|
@ -2461,7 +2465,7 @@ if ($action == 'create')
|
|||
// 1),
|
||||
// array('type' => 'checkbox', 'name' => 'update_prices', 'label' => $langs->trans("PuttingPricesUpToDate"), 'value'
|
||||
// => 1),
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $label,'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse'), 'idwarehouse', '', 1, 0, 0, $langs->trans("NoStockAction"))));
|
||||
array('type' => 'other','name' => 'idwarehouse','label' => $label,'value' => $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1, 0, 0, $langs->trans("NoStockAction"))));
|
||||
$formconfirm = $form->formconfirm($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', $formquestion, "yes", 1);
|
||||
} else {
|
||||
$formconfirm = $form->formconfirm($_SERVER ['PHP_SELF'] . '?facid=' . $object->id, $langs->trans('DeleteBill'), $text, 'confirm_delete', '', '', 1);
|
||||
|
|
@ -2512,7 +2516,7 @@ if ($action == 'create')
|
|||
$value = '<input type="hidden" id="idwarehouse" name="idwarehouse" value="' . key($warehouse_array) . '">';
|
||||
} else {
|
||||
$label = $object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("SelectWarehouseForStockIncrease") : $langs->trans("SelectWarehouseForStockDecrease");
|
||||
$value = $formproduct->selectWarehouses(GETPOST('idwarehouse'), 'idwarehouse', '', 1);
|
||||
$value = $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1);
|
||||
}
|
||||
$formquestion = array(
|
||||
// 'text' => $langs->trans("ConfirmClone"),
|
||||
|
|
@ -2552,7 +2556,7 @@ if ($action == 'create')
|
|||
$value = '<input type="hidden" id="idwarehouse" name="idwarehouse" value="' . key($warehouse_array) . '">';
|
||||
} else {
|
||||
$label = $object->type == Facture::TYPE_CREDIT_NOTE ? $langs->trans("SelectWarehouseForStockDecrease") : $langs->trans("SelectWarehouseForStockIncrease");
|
||||
$value = $formproduct->selectWarehouses(GETPOST('idwarehouse'), 'idwarehouse', '', 1);
|
||||
$value = $formproduct->selectWarehouses(GETPOST('idwarehouse')?GETPOST('idwarehouse'):'ifone', 'idwarehouse', '', 1);
|
||||
}
|
||||
$formquestion = array(
|
||||
// 'text' => $langs->trans("ConfirmClone"),
|
||||
|
|
|
|||
|
|
@ -791,6 +791,7 @@ class ExtraFields
|
|||
$labeltoshow=dol_trunc($obj->$field_toshow,18).' ';
|
||||
}
|
||||
}
|
||||
$out.='<option value="'.$obj->rowid.'" selected="selected">'.$labeltoshow.'</option>';
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
|||
|
|
@ -510,6 +510,12 @@ function dol_copy($srcfile, $destfile, $newmask=0, $overwriteifexists=1)
|
|||
return -3;
|
||||
}
|
||||
if (empty($newmask) && ! empty($conf->global->MAIN_UMASK)) $newmask=$conf->global->MAIN_UMASK;
|
||||
if (empty($newmask)) // This should no happen
|
||||
{
|
||||
dol_syslog("Warning: dol_copy called with empty value for newmask and no default value defined", LOG_WARNING);
|
||||
$newmask='0664';
|
||||
}
|
||||
|
||||
@chmod($newpathofdestfile, octdec($newmask));
|
||||
|
||||
return 1;
|
||||
|
|
|
|||
|
|
@ -129,9 +129,9 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P')
|
|||
|
||||
// Protection and encryption of pdf
|
||||
if (empty($conf->global->MAIN_USE_FPDF) && ! empty($conf->global->PDF_SECURITY_ENCRYPTION))
|
||||
{
|
||||
{
|
||||
/* Permission supported by TCPDF
|
||||
- print : Print the document;
|
||||
- print : Print the document;
|
||||
- modify : Modify the contents of the document by operations other than those controlled by 'fill-forms', 'extract' and 'assemble';
|
||||
- copy : Copy or otherwise extract text and graphics from the document;
|
||||
- annot-forms : Add or modify text annotations, fill in interactive form fields, and, if 'modify' is also set, create or modify interactive form fields (including signature fields);
|
||||
|
|
@ -146,8 +146,8 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P')
|
|||
// For TCPDF, we specify permission we want to block
|
||||
$pdfrights = array('modify','copy');
|
||||
|
||||
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final
|
||||
$pdfownerpass = NULL; // Mot de passe du proprietaire, cree aleatoirement si pas defini
|
||||
$pdfuserpass = ''; // Password for the end user
|
||||
$pdfownerpass = NULL; // Password of the owner, created randomly if not defined
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
|
|
@ -161,8 +161,8 @@ function pdf_getInstance($format='',$metric='mm',$pagetype='P')
|
|||
{
|
||||
// Declare here a class to overwrite FPDI to add method writeHTMLCell
|
||||
/**
|
||||
* This class if a enhanced FPDI class that support method writeHTMLCell
|
||||
*/
|
||||
* This class if a enhanced FPDI class that support method writeHTMLCell
|
||||
*/
|
||||
class FPDI_DolExtended extends FPDI
|
||||
{
|
||||
/**
|
||||
|
|
@ -259,7 +259,7 @@ function pdf_getPDFFontSize($outputlangs)
|
|||
|
||||
|
||||
/**
|
||||
* Return height to use for Logo onot PDF
|
||||
* Return height to use for Logo onto PDF
|
||||
*
|
||||
* @param string $logo Full path to logo file to use
|
||||
* @param bool $url Image with url (true or false)
|
||||
|
|
@ -312,7 +312,7 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target
|
|||
|
||||
if (empty($conf->global->MAIN_PDF_DISABLESOURCEDETAILS))
|
||||
{
|
||||
// Tel
|
||||
// Phone
|
||||
if ($sourcecompany->phone) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Phone").": ".$outputlangs->convToOutputCharset($sourcecompany->phone);
|
||||
// Fax
|
||||
if ($sourcecompany->fax) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Fax").": ".$outputlangs->convToOutputCharset($sourcecompany->fax);
|
||||
|
|
@ -345,7 +345,7 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target
|
|||
|
||||
if (! empty($conf->global->MAIN_PDF_ADDALSOTARGETDETAILS))
|
||||
{
|
||||
// Tel
|
||||
// Phone
|
||||
if ($targetcontact->phone_pro) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Phone").": ".$outputlangs->convToOutputCharset($targetcontact->phone_pro);
|
||||
// Fax
|
||||
if ($targetcontact->fax) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Fax").": ".$outputlangs->convToOutputCharset($targetcontact->fax);
|
||||
|
|
@ -363,7 +363,7 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target
|
|||
|
||||
if (! empty($conf->global->MAIN_PDF_ADDALSOTARGETDETAILS))
|
||||
{
|
||||
// Tel
|
||||
// Phone
|
||||
if ($targetcompany->phone) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Phone").": ".$outputlangs->convToOutputCharset($targetcompany->phone);
|
||||
// Fax
|
||||
if ($targetcompany->fax) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Fax").": ".$outputlangs->convToOutputCharset($targetcompany->fax);
|
||||
|
|
@ -411,7 +411,7 @@ function pdf_build_address($outputlangs,$sourcecompany,$targetcompany='',$target
|
|||
{
|
||||
$stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->convToOutputCharset(dol_format_address($deliverycompany))."\n";
|
||||
|
||||
// Tel
|
||||
// Phone
|
||||
if ($deliverycompany->phone) $stringaddress .= ($stringaddress ? "\n" : '' ).$outputlangs->transnoentities("Phone").": ".$outputlangs->convToOutputCharset($deliverycompany->phone);
|
||||
// Fax
|
||||
if ($deliverycompany->fax) $stringaddress .= ($stringaddress ? ($deliverycompany->phone ? " - " : "\n") : '' ).$outputlangs->transnoentities("Fax").": ".$outputlangs->convToOutputCharset($deliverycompany->fax);
|
||||
|
|
@ -447,7 +447,7 @@ function pdf_pagehead(&$pdf,$outputlangs,$page_height)
|
|||
* @param Translate $outputlangs Object lang
|
||||
* @param int $h Height of PDF
|
||||
* @param int $w Width of PDF
|
||||
* @param string $unit Unit of height (mmn, pt, ...)
|
||||
* @param string $unit Unit of height (mm, pt, ...)
|
||||
* @param string $text Text to show
|
||||
* @return void
|
||||
*/
|
||||
|
|
@ -783,7 +783,7 @@ function pdf_pagefoot(&$pdf,$outputlangs,$paramfreetext,$fromcompany,$marge_bass
|
|||
$pdf->SetFont('','',7);
|
||||
$pdf->SetDrawColor(224,224,224);
|
||||
|
||||
// On positionne le debut du bas de page selon nbre de lignes de ce bas de page
|
||||
// The start of the bottom of this page footer is positioned according to # of lines
|
||||
$freetextheight=0;
|
||||
if ($line) // Free text
|
||||
{
|
||||
|
|
@ -901,7 +901,7 @@ function pdf_writeLinkedObjects(&$pdf,$object,$outputlangs,$posx,$posy,$w,$h,$al
|
|||
* @param int $posx Pos x
|
||||
* @param int $posy Pos y
|
||||
* @param int $hideref Hide reference
|
||||
* @param int $hidedesc Hide description
|
||||
* @param int $hidedesc Hide description
|
||||
* @param int $issupplierline Is it a line for a supplier object ?
|
||||
* @return void
|
||||
*/
|
||||
|
|
@ -1015,7 +1015,7 @@ function pdf_getlinedesc($object,$i,$outputlangs,$hideref=0,$hidedesc=0,$issuppl
|
|||
// If line linked to a product
|
||||
if ($idprod)
|
||||
{
|
||||
// On ajoute la ref
|
||||
// We add ref
|
||||
if ($prodser->ref)
|
||||
{
|
||||
$prefix_prodserv = "";
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/* Copyright (C) 2003-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2010 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004-2014 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2004 Sebastien Di Cintio <sdicintio@ressource-toi.org>
|
||||
* Copyright (C) 2004 Benoit Mortier <benoit.mortier@opensides.be>
|
||||
* Copyright (C) 2005-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
|
|
@ -184,12 +184,6 @@ class modProjet extends DolibarrModules
|
|||
$this->export_permission[$r]=array(array("projet","export"));
|
||||
$this->export_dependencies_array[$r]=array('task_time'=>'ppt.rowid');
|
||||
|
||||
$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country',
|
||||
's.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode',
|
||||
'p.rowid'=>"ProjectId",'p.ref'=>"RefProject",'p.datec'=>"DateCreation",'p.dateo'=>"DateStart",'p.datee'=>"DateEnd",'p.fk_statut'=>'Status','p.description'=>"Description",
|
||||
'pt.rowid'=>'RefTask','pt.dateo'=>"TaskDateStart",'pt.datee'=>"TaskDateEnd",'pt.duration_effective'=>"DurationEffective",'pt.planned_workload'=>"PlannedWorkload",'pt.progress'=>"Progress",'pt.description'=>"TaskDescription",
|
||||
'ptt.task_date'=>'TaskTimeDate','ptt.task_duration'=>"TimesSpent",'ptt.fk_user'=>"TaskTimeUser",'ptt.note'=>"TaskTimeNote");
|
||||
|
||||
$this->export_TypeFields_array[$r]=array('s.rowid'=>"List:societe:nom",'s.nom'=>'Text','s.address'=>'Text','s.zip'=>'Text','s.town'=>'Text','s.fk_pays'=>'List:c_pays:libelle',
|
||||
's.phone'=>'Text','s.siren'=>'Text','s.siret'=>'Text','s.ape'=>'Text','s.idprof4'=>'Text','s.code_compta'=>'Text','s.code_compta_fournisseur'=>'Text',
|
||||
'p.rowid'=>"List:projet:ref",'p.ref'=>"Text",'p.datec'=>"Date",'p.dateo'=>"Date",'p.datee'=>"Date",'p.fk_statut'=>'Status','p.description'=>"Text",
|
||||
|
|
@ -198,15 +192,96 @@ class modProjet extends DolibarrModules
|
|||
|
||||
$this->export_entities_array[$r]=array('s.rowid'=>"company",'s.nom'=>'company','s.address'=>'company','s.zip'=>'company','s.town'=>'company','s.fk_pays'=>'company',
|
||||
's.phone'=>'company','s.siren'=>'company','s.siret'=>'company','s.ape'=>'company','s.idprof4'=>'company','s.code_compta'=>'company','s.code_compta_fournisseur'=>'company',
|
||||
'p.rowid'=>"project",'p.ref'=>"project",'p.datec'=>"project",'p.dateo'=>"project",'p.datee'=>"project",'p.duree'=>"project",'p.fk_statut'=>"project",'p.description'=>"project",
|
||||
'pt.rowid'=>'projecttask','pt.dateo'=>"projecttask",'pt.datee'=>"projecttask",'pt.duration_effective'=>"projecttask",'pt.planned_workload'=>"projecttask",'pt.progress'=>"projecttask",'pt.description'=>"projecttask",
|
||||
'ptt.task_date'=>'task_time','ptt.task_duration'=>"task_time",'ptt.fk_user'=>"task_time",'ptt.note'=>"task_time");
|
||||
'p.rowid'=>"project",'p.ref'=>"project",'p.datec'=>"project",'p.dateo'=>"project",'p.datee'=>"project",'p.duree'=>"project",'p.fk_statut'=>"project",'p.description'=>"project");
|
||||
|
||||
|
||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||
$this->export_sql_end[$r] =' FROM ('.MAIN_DB_PREFIX.'projet as p, '.MAIN_DB_PREFIX.'societe as s)';
|
||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task as pt ON (p.rowid = pt.fk_projet)";
|
||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task_time as ptt ON (pt.rowid = ptt.fk_task)";
|
||||
$this->export_fields_array[$r]=array('s.rowid'=>"IdCompany",'s.nom'=>'CompanyName','s.address'=>'Address','s.zip'=>'Zip','s.town'=>'Town','s.fk_pays'=>'Country',
|
||||
's.phone'=>'Phone','s.siren'=>'ProfId1','s.siret'=>'ProfId2','s.ape'=>'ProfId3','s.idprof4'=>'ProfId4','s.code_compta'=>'CustomerAccountancyCode','s.code_compta_fournisseur'=>'SupplierAccountancyCode',
|
||||
'p.rowid'=>"ProjectId",'p.ref'=>"RefProject",'p.datec'=>"DateCreation",'p.dateo'=>"DateStart",'p.datee'=>"DateEnd",'p.fk_statut'=>'Status','p.description'=>"Description");
|
||||
|
||||
// Add fields for project
|
||||
$this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array());
|
||||
// Add extra fields
|
||||
$sql="SELECT name, label FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'projet'";
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql) // This can fail when class is used on old database (during migration for example)
|
||||
{
|
||||
while ($obj=$this->db->fetch_object($resql))
|
||||
{
|
||||
$fieldname='extra.'.$obj->name;
|
||||
$fieldlabel=ucfirst($obj->label);
|
||||
$typeFilter="Text";
|
||||
switch($obj->type)
|
||||
{
|
||||
case 'int':
|
||||
case 'double':
|
||||
case 'price':
|
||||
$typeFilter="Numeric";
|
||||
break;
|
||||
case 'date':
|
||||
case 'datetime':
|
||||
$typeFilter="Date";
|
||||
break;
|
||||
case 'boolean':
|
||||
$typeFilter="Boolean";
|
||||
break;
|
||||
case 'sellist':
|
||||
$typeFilter="List:".$obj->param;
|
||||
break;
|
||||
}
|
||||
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
|
||||
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
|
||||
$this->export_entities_array[$r][$fieldname]='project';
|
||||
}
|
||||
}
|
||||
// End add extra fields
|
||||
|
||||
// Add fields for tasks
|
||||
$this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array('pt.rowid'=>'RefTask','pt.dateo'=>"TaskDateStart",'pt.datee'=>"TaskDateEnd",'pt.duration_effective'=>"DurationEffective",'pt.planned_workload'=>"PlannedWorkload",'pt.progress'=>"Progress",'pt.description'=>"TaskDescription"));
|
||||
$this->export_entities_array[$r]=array_merge($this->export_entities_array[$r], array('pt.rowid'=>'projecttask','pt.dateo'=>"projecttask",'pt.datee'=>"projecttask",'pt.duration_effective'=>"projecttask",'pt.planned_workload'=>"projecttask",'pt.progress'=>"projecttask",'pt.description'=>"projecttask"));
|
||||
// Add extra fields
|
||||
$sql="SELECT name, label FROM ".MAIN_DB_PREFIX."extrafields WHERE elementtype = 'projet_task'";
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql) // This can fail when class is used on old database (during migration for example)
|
||||
{
|
||||
while ($obj=$this->db->fetch_object($resql))
|
||||
{
|
||||
$fieldname='extra2.'.$obj->name;
|
||||
$fieldlabel=ucfirst($obj->label);
|
||||
$typeFilter="Text";
|
||||
switch($obj->type)
|
||||
{
|
||||
case 'int':
|
||||
case 'double':
|
||||
case 'price':
|
||||
$typeFilter="Numeric";
|
||||
break;
|
||||
case 'date':
|
||||
case 'datetime':
|
||||
$typeFilter="Date";
|
||||
break;
|
||||
case 'boolean':
|
||||
$typeFilter="Boolean";
|
||||
break;
|
||||
case 'sellist':
|
||||
$typeFilter="List:".$obj->param;
|
||||
break;
|
||||
}
|
||||
$this->export_fields_array[$r][$fieldname]=$fieldlabel;
|
||||
$this->export_TypeFields_array[$r][$fieldname]=$typeFilter;
|
||||
$this->export_entities_array[$r][$fieldname]='projecttask';
|
||||
}
|
||||
}
|
||||
// End add extra fields
|
||||
$this->export_fields_array[$r]=array_merge($this->export_fields_array[$r], array('ptt.task_date'=>'TaskTimeDate','ptt.task_duration'=>"TimesSpent",'ptt.fk_user'=>"TaskTimeUser",'ptt.note'=>"TaskTimeNote"));
|
||||
$this->export_entities_array[$r]=array_merge($this->export_entities_array[$r], array('ptt.task_date'=>'task_time','ptt.task_duration'=>"task_time",'ptt.fk_user'=>"task_time",'ptt.note'=>"task_time"));
|
||||
|
||||
$this->export_sql_start[$r]='SELECT DISTINCT ';
|
||||
$this->export_sql_end[$r] =' FROM '.MAIN_DB_PREFIX.'projet as p';
|
||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet_extrafields as extra ON p.rowid = extra.fk_object';
|
||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task as pt ON p.rowid = pt.fk_projet";
|
||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX.'projet_task_extrafields as extra2 ON pt.rowid = extra2.fk_object';
|
||||
$this->export_sql_end[$r] .=' LEFT JOIN '.MAIN_DB_PREFIX."projet_task_time as ptt ON pt.rowid = ptt.fk_task,";
|
||||
$this->export_sql_end[$r] .=' '.MAIN_DB_PREFIX.'societe as s';
|
||||
$this->export_sql_end[$r] .=' WHERE p.fk_soc = s.rowid';
|
||||
$this->export_sql_end[$r] .=' AND p.entity = '.$conf->entity;
|
||||
|
||||
|
|
@ -228,6 +303,47 @@ class modProjet extends DolibarrModules
|
|||
// Permissions
|
||||
$this->remove($options);
|
||||
|
||||
//ODT template for project
|
||||
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/projects/template_project.odt';
|
||||
$dirodt=DOL_DATA_ROOT.'/doctemplates/projects';
|
||||
$dest=$dirodt.'/template_project.odt';
|
||||
|
||||
if (file_exists($src) && ! file_exists($dest))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
dol_mkdir($dirodt);
|
||||
$result=dol_copy($src,$dest,0,0);
|
||||
if ($result < 0)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$this->error=$langs->trans('ErrorFailToCopyFile',$src,$dest);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
//ODT template for tasks
|
||||
$src=DOL_DOCUMENT_ROOT.'/install/doctemplates/tasks/template_task_summary.odt';
|
||||
$dirodt=DOL_DATA_ROOT.'/doctemplates/tasks';
|
||||
$dest=$dirodt.'/template_task_summary.odt';
|
||||
|
||||
if (file_exists($src) && ! file_exists($dest))
|
||||
{
|
||||
require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php';
|
||||
dol_mkdir($dirodt);
|
||||
$result=dol_copy($src,$dest,0,0);
|
||||
if ($result < 0)
|
||||
{
|
||||
$langs->load("errors");
|
||||
$this->error=$langs->trans('ErrorFailToCopyFile',$src,$dest);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
$sql = array(
|
||||
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity,
|
||||
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','invoice',".$conf->entity.")"
|
||||
);
|
||||
|
||||
$sql = array(
|
||||
"DELETE FROM ".MAIN_DB_PREFIX."document_model WHERE nom = '".$this->const[0][2]."' AND entity = ".$conf->entity,
|
||||
"INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity) VALUES('".$this->const[0][2]."','project',".$conf->entity.")",
|
||||
|
|
|
|||
|
|
@ -111,7 +111,7 @@ abstract class ModeleNumRefTask
|
|||
|
||||
/**
|
||||
* Renvoi prochaine valeur attribuee
|
||||
*
|
||||
*
|
||||
* @param Societe $objsoc Object third party
|
||||
* @param Project $project Object project
|
||||
* @return string Valeur
|
||||
|
|
@ -171,7 +171,7 @@ function task_pdf_create($db, $object, $modele, $outputlangs, $hidedetails=0, $h
|
|||
}
|
||||
else
|
||||
{
|
||||
$modele='baleine';
|
||||
$modele='nodefault';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ function task_pdf_create($db, $object, $modele, $outputlangs, $hidedetails=0, $h
|
|||
$file = $prefix."_".$modele.".modules.php";
|
||||
|
||||
// On verifie l'emplacement du modele
|
||||
$file=dol_buildpath($reldir."core/modules/project/pdf/".$file,0);
|
||||
$file=dol_buildpath($reldir."core/modules/project/task/pdf/".$file,0);
|
||||
if (file_exists($file))
|
||||
{
|
||||
$filefound=1;
|
||||
|
|
|
|||
|
|
@ -340,7 +340,7 @@ class doc_generic_task_odt extends ModelePDFTask
|
|||
$texte.= '</div><div style="display: inline-block; vertical-align: middle;">';
|
||||
$texte.= '<input type="submit" class="button" value="'.$langs->trans("Modify").'" name="Button">';
|
||||
$texte.= '<br></div></div>';
|
||||
|
||||
|
||||
// Scan directories
|
||||
if (count($listofdir)) $texte.=$langs->trans("NumberOfModelFilesFound").': <b>'.count($listoffiles).'</b>';
|
||||
|
||||
|
|
@ -526,7 +526,6 @@ class doc_generic_task_odt extends ModelePDFTask
|
|||
else // Text
|
||||
{
|
||||
$odfHandler->setVars($key, $value, true, 'UTF-8');
|
||||
$odfHandler->setVarsHeadFooter($key, $value, true, 'UTF-8');
|
||||
}
|
||||
}
|
||||
catch(OdfException $e)
|
||||
|
|
|
|||
|
|
@ -142,7 +142,7 @@ class InterfaceMailmanSpipsynchro
|
|||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
|
||||
// We add subscription if we change category (new category may means more mailing-list to subscribe)
|
||||
if ($object->linkto->add_to_abo() < 0)
|
||||
if (is_object($object->linkto) && method_exists($object->linkto, 'add_to_abo') && $object->linkto->add_to_abo() < 0)
|
||||
{
|
||||
$this->error=$object->linkto->error;
|
||||
$this->errors=$object->linkto->errors;
|
||||
|
|
@ -160,7 +160,7 @@ class InterfaceMailmanSpipsynchro
|
|||
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
|
||||
|
||||
// We remove subscription if we change category (lessw category may means less mailing-list to subscribe)
|
||||
if ($object->unlinkoff->del_to_abo() < 0)
|
||||
if (is_object($object->unlinkoff) && method_exists($object->unlinkoff, 'del_to_abo') && $object->unlinkoff->del_to_abo() < 0)
|
||||
{
|
||||
$this->error=$object->unlinkoff->error;
|
||||
$this->errors=$object->unlinkoff->errors;
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -39,6 +39,10 @@ TaskTimeDate=Date
|
|||
NewTimeSpent=Nouveau consommé
|
||||
MyTimeSpent=Mon consommé
|
||||
MyTasks=Mes tâches
|
||||
TaskTimeSpent=Temps consommé sur les tâches
|
||||
TaskTimeUser=Utilisateur
|
||||
TaskTimeNote=Note
|
||||
TaskTimeDate=Date
|
||||
Tasks=Tâches
|
||||
Task=Tâche
|
||||
TaskDateStart=Date de début de tâche
|
||||
|
|
|
|||
|
|
@ -20,7 +20,7 @@
|
|||
/**
|
||||
* \file htdocs/product/index.php
|
||||
* \ingroup product
|
||||
* \brief Page accueil des produits et services
|
||||
* \brief Homepage products and services
|
||||
*/
|
||||
|
||||
require '../main.inc.php';
|
||||
|
|
@ -29,7 +29,7 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/date.lib.php';
|
|||
|
||||
$type=isset($_GET["type"])?$_GET["type"]:(isset($_POST["type"])?$_POST["type"]:'');
|
||||
if ($type =='' && !$user->rights->produit->lire) $type='1'; // Force global page on service page only
|
||||
if ($type =='' && !$user->rights->service->lire) $type='0'; // Force global page on prpduct page only
|
||||
if ($type =='' && !$user->rights->service->lire) $type='0'; // Force global page on product page only
|
||||
|
||||
// Security check
|
||||
if ($type=='0') $result=restrictedArea($user,'produit');
|
||||
|
|
@ -72,7 +72,7 @@ print '<div class="fichecenter"><div class="fichethirdleft">';
|
|||
|
||||
|
||||
/*
|
||||
* Zone recherche produit/service
|
||||
* Search Area of product/service
|
||||
*/
|
||||
$rowspan=2;
|
||||
if (! empty($conf->barcode->enabled)) $rowspan++;
|
||||
|
|
@ -99,7 +99,7 @@ print "</table></form><br>";
|
|||
|
||||
|
||||
/*
|
||||
* Nombre de produits et/ou services
|
||||
* Number of products and/or services
|
||||
*/
|
||||
$prodser = array();
|
||||
$prodser[0][0]=$prodser[0][1]=$prodser[1][0]=$prodser[1][1]=0;
|
||||
|
|
@ -280,10 +280,10 @@ function activitytrim($product_type)
|
|||
{
|
||||
global $conf,$langs,$db;
|
||||
|
||||
// on affiche les 3 dernières années
|
||||
// We display the last 3 years
|
||||
$yearofbegindate=date('Y',dol_time_plus_duree(time(), -3, "y"));
|
||||
|
||||
// ventilation par trimestre
|
||||
// breakdown by quarter
|
||||
$sql = "SELECT DATE_FORMAT(p.datep,'%Y') as annee, DATE_FORMAT(p.datep,'%m') as mois, SUM(fd.total_ht) as Mnttot";
|
||||
$sql.= " FROM ".MAIN_DB_PREFIX."societe as s,".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."facturedet as fd";
|
||||
$sql.= " , ".MAIN_DB_PREFIX."paiement as p,".MAIN_DB_PREFIX."paiement_facture as pf";
|
||||
|
|
@ -342,7 +342,7 @@ function activitytrim($product_type)
|
|||
print '</tr>';
|
||||
$lgn++;
|
||||
}
|
||||
// on passe à l'année suivante
|
||||
// We go to the following year
|
||||
$tmpyear = $objp->annee;
|
||||
$trim1=0;
|
||||
$trim2=0;
|
||||
|
|
|
|||
|
|
@ -214,7 +214,7 @@ foreach ($listofreferent as $key => $value)
|
|||
print '<br>';
|
||||
|
||||
print_titre($langs->trans($title));
|
||||
|
||||
|
||||
$selectList=$formproject->select_element($tablename);
|
||||
if ($selectList)
|
||||
{
|
||||
|
|
@ -223,7 +223,7 @@ foreach ($listofreferent as $key => $value)
|
|||
print '<input type="hidden" name="action" value="addelement">';
|
||||
print '<table><tr><td>'.$langs->trans("SelectElement").'</td>';
|
||||
print '<td>'.$selectList.'</td>';
|
||||
print '<td><input type="submit" class="button" value="'.$langs->trans("AddElement").'"></td>';
|
||||
print '<td><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("AddElement")).'"></td>';
|
||||
print '</tr></table>';
|
||||
print '</form>';
|
||||
}
|
||||
|
|
|
|||
|
|
@ -129,9 +129,9 @@ if ($action == 'add' && $user->rights->projet->creer)
|
|||
$db->begin();
|
||||
|
||||
$object->ref = GETPOST('ref','alpha');
|
||||
$object->title = GETPOST('title','alpha');
|
||||
$object->title = GETPOST('title'); // Do not use 'alpha' here, we want field as it is
|
||||
$object->socid = GETPOST('socid','int');
|
||||
$object->description = GETPOST('description','alpha');
|
||||
$object->description = GETPOST('description'); // Do not use 'alpha' here, we want field as it is
|
||||
$object->public = GETPOST('public','alpha');
|
||||
$object->datec=dol_now();
|
||||
$object->date_start=$date_start;
|
||||
|
|
@ -205,9 +205,9 @@ if ($action == 'update' && ! $_POST["cancel"] && $user->rights->projet->creer)
|
|||
$old_start_date = $object->date_start;
|
||||
|
||||
$object->ref = GETPOST('ref','alpha');
|
||||
$object->title = GETPOST('title','alpha');
|
||||
$object->title = GETPOST('title'); // Do not use 'alpha' here, we want field as it is
|
||||
$object->socid = GETPOST('socid','int');
|
||||
$object->description = GETPOST('description','alpha');
|
||||
$object->description = GETPOST('description'); // Do not use 'alpha' here, we want field as it is
|
||||
$object->public = GETPOST('public','alpha');
|
||||
$object->date_start = empty($_POST["project"])?'':$date_start;
|
||||
$object->date_end = empty($_POST["projectend"])?'':$date_end;
|
||||
|
|
|
|||
|
|
@ -166,7 +166,6 @@ function constructGanttLine($tarr,$task,$project_dependencies,$level=0,$project_
|
|||
}
|
||||
// Add line to gantt
|
||||
$s = "// Add taks id=".$task["task_id"]." level = ".$level."\n";
|
||||
//$s.= "g.AddElementItem(new JSGantt.ElementItem('task',".$task['task_id'].",'".$name."','".$start_date."', '".$end_date."', '".$task['task_color']."', '', ".$task['task_milestone'].", '".$resources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", ".$parent.", 1".($depend?", ".$depend:"")."));";
|
||||
$s = "g.AddTaskItem(new JSGantt.TaskItem(".$task['task_id'].",'".dol_escape_js($name)."','".$start_date."', '".$end_date."', '".$task['task_color']."', '".$link."', ".$task['task_milestone'].", '".$resources."', ".$percent.", ".($task["task_is_group"]>0?1:0).", '".$parent."', 1, '".($depend?$depend:"")."'));";
|
||||
echo $s."\n";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -310,7 +310,7 @@ if ($id > 0 || ! empty($ref))
|
|||
print '<td colspan="1">';
|
||||
// On recupere les id des users deja selectionnes
|
||||
$contactsofproject=$projectstatic->getListContactId('internal');
|
||||
$form->select_users($user->id,'userid',0,'',0,'',$contactsofproject);
|
||||
$form->select_users($user->id,'contactid',0,'',0,'',$contactsofproject);
|
||||
print '</td>';
|
||||
print '<td>';
|
||||
$formcompany->selectTypeContact($object, '', 'type','internal','rowid');
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
/* Copyright (C) 2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2006-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2006-2014 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2010-2012 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
|
|
|
|||
|
|
@ -1160,7 +1160,8 @@ class Societe extends CommonObject
|
|||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
else dol_syslog("Can't remove thirdparty with id ".$id.". There is ".$objectisused." childs", LOG_WARNING);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
* Copyright (C) 2011 Herve Prot <herve.prot@symeos.com>
|
||||
* Copyright (C) 2012 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2013 Florian Henry <florian.henry@open-concept.pro>
|
||||
* Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.com>
|
||||
* Copyright (C) 2013-2014 Alexandre Spangaro <alexandre.spangaro@gmail.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
|
||||
|
|
@ -185,13 +185,14 @@ if ($action == 'add' && $canadduser)
|
|||
$object->office_phone = GETPOST("office_phone");
|
||||
$object->office_fax = GETPOST("office_fax");
|
||||
$object->user_mobile = GETPOST("user_mobile");
|
||||
$object->skype = GETPOST("skype");
|
||||
$object->skype = GETPOST("skype");
|
||||
$object->email = GETPOST("email");
|
||||
$object->job = GETPOST("job");
|
||||
$object->signature = GETPOST("signature");
|
||||
$object->accountancy_code = GETPOST("accountancy_code");
|
||||
$object->note = GETPOST("note");
|
||||
$object->ldap_sid = GETPOST("ldap_sid");
|
||||
$object->fk_user = GETPOST("fk_user")>0?GETPOST("fk_user"):0;
|
||||
|
||||
// Fill array 'array_options' with data from add form
|
||||
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
|
||||
|
|
@ -327,7 +328,7 @@ if ($action == 'update' && ! $_POST["cancel"])
|
|||
$object->email = GETPOST("email");
|
||||
$object->job = GETPOST("job");
|
||||
$object->signature = GETPOST("signature");
|
||||
$object->accountancy_code = GETPOST("accountancy_code");
|
||||
$object->accountancy_code = GETPOST("accountancy_code");
|
||||
$object->openid = GETPOST("openid");
|
||||
$object->fk_user = GETPOST("fk_user")>0?GETPOST("fk_user"):0;
|
||||
|
||||
|
|
@ -864,7 +865,7 @@ if (($action == 'create') || ($action == 'adduserldap'))
|
|||
print '<input size="20" type="text" name="office_fax" value="'.GETPOST('office_fax').'">';
|
||||
}
|
||||
print '</td></tr>';
|
||||
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
|
|
@ -1190,7 +1191,7 @@ else
|
|||
print '<tr><td valign="top">'.$langs->trans("Fax").'</td>';
|
||||
print '<td>'.dol_print_phone($object->office_fax,'',0,0,1).'</td>';
|
||||
print '</tr>'."\n";
|
||||
|
||||
|
||||
// Skype
|
||||
if (! empty($conf->skype->enabled))
|
||||
{
|
||||
|
|
@ -1809,7 +1810,7 @@ else
|
|||
}
|
||||
print '</td></tr>';
|
||||
}
|
||||
|
||||
|
||||
// EMail
|
||||
print "<tr>".'<td valign="top"'.(! empty($conf->global->USER_MAIL_REQUIRED)?' class="fieldrequired"':'').'>'.$langs->trans("EMail").'</td>';
|
||||
print '<td>';
|
||||
|
|
|
|||
1
test/.gitignore
vendored
1
test/.gitignore
vendored
|
|
@ -1 +1,2 @@
|
|||
/report
|
||||
/test.xml
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user