diff --git a/htdocs/comm/action/fiche.php b/htdocs/comm/action/fiche.php index 782d7444429..af09519cfef 100644 --- a/htdocs/comm/action/fiche.php +++ b/htdocs/comm/action/fiche.php @@ -183,7 +183,7 @@ if ($action == 'add_action') if (! empty($conf->phenix->enabled) && GETPOST('add_phenix') == 'on') $actioncomm->use_phenix=1; // Check parameters - if ($actioncomm->type_code == 'AC_RDV' && ($datep == '' || $datef == '')) + if ($actioncomm->type_code == 'AC_RDV' && ($datep == '' || ($datef == '' && empty($fulldayevent)))) { $error++; $action = 'create'; @@ -559,7 +559,7 @@ if ($action == 'create') } else { print $form->select_company('','socid','',1,1); } - + } print ''; diff --git a/htdocs/comm/propal.php b/htdocs/comm/propal.php index cd2f44878ed..cc34443a622 100644 --- a/htdocs/comm/propal.php +++ b/htdocs/comm/propal.php @@ -38,7 +38,7 @@ require_once DOL_DOCUMENT_ROOT.'/comm/action/class/actioncomm.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/modules/propale/modules_propale.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/propal.lib.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/functions2.lib.php'; -if (! empty($conf->projet->enabled)) +if (! empty($conf->projet->enabled)) { require_once DOL_DOCUMENT_ROOT.'/projet/class/project.class.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/project.lib.php'; @@ -260,7 +260,7 @@ else if ($action == 'add' && $user->rights->propal->creer) $action='create'; $error++; } - + if ($socid<1) { setEventMessage($langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("Customer")),'errors'); @@ -1174,7 +1174,7 @@ $now=dol_now(); if ($action == 'create') { print_fiche_titre($langs->trans("NewProp")); - + $soc = new Societe($db); if ($socid>0) $res=$soc->fetch($socid); @@ -1214,7 +1214,7 @@ if ($action == 'create') print '
'; print ''; print ''; - + if ($origin != 'project' && $originid) { print ''; @@ -1459,20 +1459,20 @@ if ($action == 'create') print "
"; } -else +else { /* * Show object in view mode */ - + $soc = new Societe($db); $soc->fetch($object->socid); - + $head = propal_prepare_head($object); dol_fiche_head($head, 'comm', $langs->trans('Proposal'), 0, 'propal'); - + $formconfirm=''; - + // Clone confirmation if ($action == 'clone') { @@ -1486,30 +1486,30 @@ else // Paiement incomplet. On demande si motif = escompte ou autre $formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id,$langs->trans('ClonePropal'),$langs->trans('ConfirmClonePropal',$object->ref),'confirm_clone',$formquestion,'yes',1); } - + // Confirm delete else if ($action == 'delete') { $formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('DeleteProp'), $langs->trans('ConfirmDeleteProp',$object->ref), 'confirm_delete','',0,1); } - + // Confirm reopen else if ($action == 'reopen') { $formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ReOpen'), $langs->trans('ConfirmReOpenProp',$object->ref), 'confirm_reopen','',0,1); } - + // Confirmation delete product/service line else if ($action == 'ask_deleteline') { $formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id.'&lineid='.$lineid, $langs->trans('DeleteProductLine'), $langs->trans('ConfirmDeleteProductLine'), 'confirm_deleteline','',0,1); } - + // Confirm validate proposal else if ($action == 'validate') { $error=0; - + // on verifie si l'objet est en numerotation provisoire $ref = substr($object->ref, 1, 4); if ($ref == 'PROV') @@ -1525,7 +1525,7 @@ else { $numref = $object->ref; } - + $text=$langs->trans('ConfirmValidateProp',$numref); if (! empty($conf->notification->enabled)) { @@ -1534,29 +1534,29 @@ else $text.='
'; $text.=$notify->confirmMessage('NOTIFY_VAL_PROPAL',$object->socid); } - + if (! $error) $formconfirm=$form->formconfirm($_SERVER["PHP_SELF"].'?id='.$object->id, $langs->trans('ValidateProp'), $text, 'confirm_validate','',0,1); } - + if (! $formconfirm) { $parameters=array('lineid'=>$lineid); $formconfirm=$hookmanager->executeHooks('formConfirm',$parameters,$object,$action); // Note that $action and $object may have been modified by hook } - + // Print form confirm print $formconfirm; - - + + print ''; - + $linkback = ''.$langs->trans("BackToList").''; - + // Ref print ''; - + // Ref client print '
'.$langs->trans('Ref').''; print $form->showrefnav($object, 'ref', $linkback, 1, 'ref', 'ref', ''); print '
'; print ''; print ''; - + // Company print ''; print ''; - + // Ligne info remises tiers print ''; - + // Date of proposal print ''; print ''; - + // Date end proposal print ''; print ''; print ''; - + // Payment term print '
'; @@ -1580,11 +1580,11 @@ else } print '
'.$langs->trans('Company').''.$soc->getNomUrl(1).'
'.$langs->trans('Discounts').''; if ($soc->remise_client) print $langs->trans("CompanyHasRelativeDiscount",$soc->remise_client); @@ -1614,7 +1614,7 @@ else } if (! $absolute_discount && ! $absolute_creditnote) print $langs->trans("CompanyHasNoAbsoluteDiscount").'.'; print '
'; @@ -1645,7 +1645,7 @@ else } } print '
'; @@ -1678,7 +1678,7 @@ else } print '
'; print ''; print ''; - + // Delivery date $langs->load('deliveries'); print ''; print ''; - + // Delivery delay print '\n"; } @@ -462,23 +451,11 @@ class FormMail else { $out.= 'withtoccc) : (isset($_POST["sendtoccc"])?$_POST["sendtoccc"]:"") ).'" />'; - if (! empty($this->withto) && is_array($this->withto)) + if (! empty($this->withtoccc) && is_array($this->withtoccc)) { $out.= " ".$langs->trans("or")." "; $out.= $form->selectarray("receiverccc", $this->withto, GETPOST("receiverccc"), 1); } - if (! empty($this->withtocccsocid) && $this->withtocccsocid > 0) // deprecated. TODO Remove this. Instead, fill withto with array before calling method. - { - $liste=array(); - $soc=new Societe($this->db); - $soc->fetch($this->withtosocid); - foreach ($soc->thirdparty_and_contact_email_array(1) as $key=>$value) - { - $liste[$key]=$value; - } - $out.= " ".$langs->trans("or")." "; - $out.= $form->selectarray("receiverccc", $liste, GETPOST("receiverccc"), 1); - } } //if (! empty($conf->global->MAIN_MAIL_AUTOCOPY_TO)) print ' '.info_admin("+ ".$conf->global->MAIN_MAIL_AUTOCOPY_TO,1); $out.= "\n"; diff --git a/htdocs/expedition/fiche.php b/htdocs/expedition/fiche.php index 90850fce683..21289f60864 100644 --- a/htdocs/expedition/fiche.php +++ b/htdocs/expedition/fiche.php @@ -1443,12 +1443,11 @@ else $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $formmail->withto=GETPOST('sendto','int')?GETPOST('sendto','int'):1; - $formmail->withtosocid=$soc->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; + $liste=array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value; + $formmail->withto=GETPOST("sendto")?GETOST("sendto"):$liste; + $formmail->withtocc=$liste; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtocccsocid=0; $formmail->withtopic=$langs->trans('SendShippingRef','__SHIPPINGREF__'); $formmail->withfile=2; $formmail->withbody=1; diff --git a/htdocs/fichinter/fiche.php b/htdocs/fichinter/fiche.php index 11e1eabd782..b2db591eefc 100644 --- a/htdocs/fichinter/fiche.php +++ b/htdocs/fichinter/fiche.php @@ -1487,12 +1487,11 @@ else if ($id > 0 || ! empty($ref)) $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $formmail->withto=(!GETPOST('sendto','alpha'))?1:GETPOST('sendto','alpha'); - $formmail->withtosocid=$societe->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; + $liste=array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value; + $formmail->withto=GETPOST("sendto")?GETOST("sendto"):$liste; + $formmail->withtocc=$liste; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtocccsocid=0; $formmail->withtopic=$langs->trans('SendInterventionRef','__FICHINTERREF__'); $formmail->withfile=2; $formmail->withbody=1; diff --git a/htdocs/fourn/commande/fiche.php b/htdocs/fourn/commande/fiche.php index ee802c3dc0f..24ecd0690b0 100644 --- a/htdocs/fourn/commande/fiche.php +++ b/htdocs/fourn/commande/fiche.php @@ -1819,12 +1819,11 @@ if (! empty($object->id)) $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"]; - $formmail->withtosocid=$object->thirdparty->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; + $liste=array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value; + $formmail->withto=GETPOST("sendto")?GETOST("sendto"):$liste; + $formmail->withtocc=$liste; $formmail->withtoccc=(! empty($conf->global->MAIN_EMAIL_USECCC)?$conf->global->MAIN_EMAIL_USECCC:false); - $formmail->withtocccsocid=0; $formmail->withtopic=$langs->trans('SendOrderRef','__ORDERREF__'); $formmail->withfile=2; $formmail->withbody=1; diff --git a/htdocs/fourn/facture/fiche.php b/htdocs/fourn/facture/fiche.php index be8b7f6664d..571742a977d 100644 --- a/htdocs/fourn/facture/fiche.php +++ b/htdocs/fourn/facture/fiche.php @@ -2075,12 +2075,11 @@ else $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"]; - $formmail->withtosocid=$societe->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; + $liste=array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value; + $formmail->withto=GETPOST("sendto")?GETOST("sendto"):$liste; + $formmail->withtocc=$liste; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtocccsocid=0; $formmail->withtopic=$langs->trans('SendBillRef','__FACREF__'); $formmail->withfile=2; $formmail->withbody=1; diff --git a/htdocs/holiday/class/holiday.class.php b/htdocs/holiday/class/holiday.class.php index 3974a93641a..9c20caed835 100644 --- a/htdocs/holiday/class/holiday.class.php +++ b/htdocs/holiday/class/holiday.class.php @@ -32,14 +32,14 @@ class Holiday extends CommonObject { public $element='holiday'; public $table_element='holiday'; - + var $db; var $error; var $errors=array(); var $rowid; var $ref; - + var $fk_user; var $date_create=''; var $description; @@ -72,16 +72,24 @@ class Holiday extends CommonObject function __construct($db) { $this->db = $db; - - // Mets à jour les congés payés en début de mois - $this->updateSoldeCP(); - - // Vérifie le nombre d'utilisateur et mets à jour si besoin - $this->verifNbUsers($this->countActiveUsers(),$this->getConfCP('nbUser')); - return 1; } + /** + * updateSold + * + * @return int Return 1 + */ + function updateSold() + { + // Mets à jour les congés payés en début de mois + $this->updateSoldeCP(); + + // Vérifie le nombre d'utilisateur et mets à jour si besoin + $this->verifNbUsers($this->countActiveUsers(),$this->getConfCP('nbUser')); + return 1; + } + /** * Créer un congés payés dans la base de données * @@ -358,10 +366,10 @@ class Holiday extends CommonObject $sql.= " uu.name as user_lastname,"; $sql.= " uu.firstname as user_firstname,"; - + $sql.= " ua.name as validator_lastname,"; $sql.= " ua.firstname as validator_firstname"; - + $sql.= " FROM ".MAIN_DB_PREFIX."holiday as cp, ".MAIN_DB_PREFIX."user as uu, ".MAIN_DB_PREFIX."user as ua"; $sql.= " WHERE cp.fk_user = uu.rowid AND cp.fk_validator = ua.rowid "; // Hack pour la recherche sur le tableau @@ -415,10 +423,10 @@ class Holiday extends CommonObject $tab_result[$i]['user_firstname'] = $obj->user_firstname; $tab_result[$i]['user_lastname'] = $obj->user_lastname; - + $tab_result[$i]['validator_firstname'] = $obj->validator_firstname; $tab_result[$i]['validator_lastname'] = $obj->validator_lastname; - + $i++; } // Retourne 1 et ajoute le tableau à la variable @@ -601,13 +609,13 @@ class Holiday extends CommonObject { $this->fetchByUser($fk_user,'',''); - foreach($this->holiday as $infos_CP) + foreach($this->holiday as $infos_CP) { if ($infos_CP['statut'] == 4) continue; // ignore not validated holidays if ($infos_CP['statut'] == 5) continue; // ignore not validated holidays - + // TODO Also use halfday for the check - if ($dateDebut >= $infos_CP['date_debut'] && $dateDebut <= $infos_CP['date_fin'] || $dateFin <= $infos_CP['date_fin'] && $dateFin >= $infos_CP['date_debut']) + if ($dateDebut >= $infos_CP['date_debut'] && $dateDebut <= $infos_CP['date_fin'] || $dateFin <= $infos_CP['date_fin'] && $dateFin >= $infos_CP['date_debut']) { return false; } @@ -627,23 +635,24 @@ class Holiday extends CommonObject function getNomUrl($withpicto=0) { global $langs; - + $result=''; - + $lien = ''; $lienfin=''; - + $picto='holiday'; - + $label=$langs->trans("Show").': '.$this->ref; - + if ($withpicto) $result.=($lien.img_object($label,$picto).$lienfin); if ($withpicto && $withpicto != 2) $result.=' '; if ($withpicto != 2) $result.=$lien.$this->ref.$lienfin; return $result; + } - + /** * Returns the label status * @@ -654,7 +663,7 @@ class Holiday extends CommonObject { return $this->LibStatut($this->statut, $mode, $this->date_debut); } - + /** * Returns the label of a statut * @@ -678,7 +687,7 @@ class Holiday extends CommonObject if ($mode == 2) { $pictoapproved='statut6'; - if (! empty($startdate) && $startdate > dol_now()) $pictoapproved='statut4'; + if (! empty($startdate) && $startdate > dol_now()) $pictoapproved='statut4'; if ($statut == 1) return img_picto($langs->trans('DraftCP'),'statut0').' '.$langs->trans('DraftCP'); // Draft if ($statut == 2) return img_picto($langs->trans('ToValidateCP'),'statut1').' '.$langs->trans('ToValidateCP'); // Waiting approval if ($statut == 3) return img_picto($langs->trans('ValidateCP'),$pictoapproved).' '.$langs->trans('ValidateCP'); @@ -688,18 +697,18 @@ class Holiday extends CommonObject if ($mode == 5) { $pictoapproved='statut6'; - if (! empty($startdate) && $startdate > dol_now()) $pictoapproved='statut4'; + if (! empty($startdate) && $startdate > dol_now()) $pictoapproved='statut4'; if ($statut == 1) return $langs->trans('DraftCP').' '.img_picto($langs->trans('DraftCP'),'statut0'); // Draft if ($statut == 2) return $langs->trans('ToValidateCP').' '.img_picto($langs->trans('ToValidateCP'),'statut1'); // Waiting approval if ($statut == 3) return $langs->trans('ValidateCP').' '.img_picto($langs->trans('ValidateCP'),$pictoapproved); if ($statut == 4) return $langs->trans('CancelCP').' '.img_picto($langs->trans('CancelCP'),'statut5'); if ($statut == 5) return $langs->trans('RefuseCP').' '.img_picto($langs->trans('RefuseCP'),'statut5'); } - + return $statut; } - + /** * Affiche un select HTML des statuts de congés payés * @@ -857,19 +866,21 @@ class Holiday extends CommonObject { // Si mise à jour pour tout le monde en début de mois $now=dol_now(); - + // Mois actuel $month = date('m',$now); $lastUpdate = $this->getConfCP('lastUpdate'); - $monthLastUpdate = date('m', $lastUpdate); + $monthLastUpdate = $lastUpdate[4].$lastUpdate[5]; + //print 'month: '.$month.' '.$lastUpdate.' '.$monthLastUpdate; // Si la date du mois n'est pas la même que celle sauvegardée, on met à jour le timestamp if ($month != $monthLastUpdate) { $sql = "UPDATE ".MAIN_DB_PREFIX."holiday_config SET"; - $sql.= " value = '".$this->db->idate($now)."'"; + $sql.= " value = '".dol_print_date($now,'%Y%m%d%H%M%S')."'"; $sql.= " WHERE name = 'lastUpdate'"; + dol_syslog(get_class($this).'::updateSoldeCP sql='.$sql); $result = $this->db->query($sql); // On ajoute x jours à chaque utilisateurs diff --git a/htdocs/holiday/common.inc.php b/htdocs/holiday/common.inc.php index 8953352973b..133177df614 100644 --- a/htdocs/holiday/common.inc.php +++ b/htdocs/holiday/common.inc.php @@ -50,7 +50,7 @@ $sql.= " WHERE name = 'userGroup'"; $result = $db->query($sql); $obj = $db->fetch_object($result); -if ($obj->value == null) +if ($obj->value == null || $obj->value < 0) { llxHeader('',$langs->trans('CPTitreMenu')); diff --git a/htdocs/holiday/index.php b/htdocs/holiday/index.php index c9f77a3f63e..19944b16ae8 100644 --- a/htdocs/holiday/index.php +++ b/htdocs/holiday/index.php @@ -73,6 +73,9 @@ $search_statut = GETPOST('select_statut'); $holiday = new Holiday($db); $holidaystatic=new Holiday($db); +// Update sold +$holiday->updateSold(); + $max_year = 5; $min_year = 10; $filter=''; diff --git a/htdocs/langs/en_US/admin.lang b/htdocs/langs/en_US/admin.lang index 0fafedaf2b0..42924eb253f 100644 --- a/htdocs/langs/en_US/admin.lang +++ b/htdocs/langs/en_US/admin.lang @@ -50,6 +50,7 @@ DisableJavascript=Disable JavaScript and Ajax functions ConfirmAjax=Use Ajax confirmation popups UseSearchToSelectCompany=Use autocompletion fields to choose third parties (instead of using a list box).

Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant SOCIETE_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. ActivityStateToSelectCompany= Add a filter option to show/hide thirdparties which are currently in activity or has ceased it +UseSearchToSelectContact=Use autocompletion fields to choose contact (instead of using a list box).

Also if you have a large number of third parties (> 100 000), you can increase speed by setting constant CONTACT_DONOTSEARCH_ANYWHERE to 1 in Setup->Other. Search will then be limited to start of string. SearchFilter=Search filters options NumberOfKeyToSearch=Nbr of characters to trigger search: %s ViewFullDateActions=Show full dates events in the third sheet diff --git a/htdocs/langs/en_US/agenda.lang b/htdocs/langs/en_US/agenda.lang index 3d180e7b747..2355c112194 100644 --- a/htdocs/langs/en_US/agenda.lang +++ b/htdocs/langs/en_US/agenda.lang @@ -15,7 +15,7 @@ MyEvents=My events OtherEvents=Other events ListOfActions=List of events Location=Location -EventOnFullDay=Event on full day +EventOnFullDay=Event on all day(s) SearchAnAction= Search an event/task MenuToDoActions= All incomplete events MenuDoneActions= All terminated events diff --git a/htdocs/langs/es_ES/dict.lang b/htdocs/langs/es_ES/dict.lang index bf0b59e3ef1..c0cd7042334 100644 --- a/htdocs/langs/es_ES/dict.lang +++ b/htdocs/langs/es_ES/dict.lang @@ -85,7 +85,7 @@ CountryDM=Dominica CountryDO=República Dominicana CountryEC=Ecuador CountryEG=Egipto -CountrySV=Salvador +CountrySV=El Salvador CountryGQ=Guinea Ecuatorial CountryER=Eritrea CountryEE=Estonia diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 75518421e5a..802bbb28191 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -49,6 +49,7 @@ DisableJavascript= Désactiver les fonctions Javascript et Ajax ConfirmAjax= Utiliser les popups de confirmation Ajax UseSearchToSelectCompany= Utiliser un champ avec autocomplétion pour choisir un tiers (plutôt qu'une liste déroulante).

Notez que si vous avez un nombre important de produits ou services (> 100 000), vous pouvez améliorer les performances en définissant la constante SOCIETE_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limitée au début de la chaine. ActivityStateToSelectCompany= Ajouter une option de filtrage lors des recherches pour afficher/masquer les tiers en exercice ou ayant cessés d'exercer +UseSearchToSelectContact= Utiliser un champ avec autocomplétion pour choisir un contact (plutôt qu'une liste déroulante).

Notez que si vous avez un nombre important de produits ou services (> 100 000), vous pouvez améliorer les performances en définissant la constante CONTACT_DONOTSEARCH_ANYWHERE à 1 dans Configuration->Divers. La recherche sera alors limitée au début de la chaine. SearchFilter=Options des filtres de recherche NumberOfKeyToSearch=Nb carac. déclenchant recherche: %s ViewFullDateActions= Visualiser les dates des actions en entier dans la fiche tiers diff --git a/htdocs/langs/fr_FR/agenda.lang b/htdocs/langs/fr_FR/agenda.lang index d91f836d9b9..33555be6951 100644 --- a/htdocs/langs/fr_FR/agenda.lang +++ b/htdocs/langs/fr_FR/agenda.lang @@ -14,7 +14,7 @@ EventsNb=Nombre d'événements MyEvents=Mes événements OtherEvents=Autres événements ListOfActions=Liste des événements -EventOnFullDay=Événement sur la journée +EventOnFullDay=Événement sur la(les) journée(s) Location=Lieu SearchAnAction=Rechercher un événement/tâche MenuToDoActions=Les événem. incomplets diff --git a/htdocs/societe/admin/societe.php b/htdocs/societe/admin/societe.php index 3bb95dd10ee..1b0efa2c4b2 100644 --- a/htdocs/societe/admin/societe.php +++ b/htdocs/societe/admin/societe.php @@ -82,6 +82,21 @@ if ($action == 'COMPANY_USE_SEARCH_TO_SELECT') } } +if ($action == 'CONTACT_USE_SEARCH_TO_SELECT') +{ + $contactsearch = GETPOST('activate_CONTACT_USE_SEARCH_TO_SELECT','alpha'); + $res = dolibarr_set_const($db, "CONTACT_USE_SEARCH_TO_SELECT", $contactsearch,'chaine',0,'',$conf->entity); + if (! $res > 0) $error++; + if (! $error) + { + $mesg = "".$langs->trans("SetupSaved").""; + } + else + { + $mesg = "".$langs->trans("Error").""; + } +} + // Define constants for submodules that contains parameters (forms with param1, param2, ... and value1, value2, ...) if ($action == 'setModuleOptions') { @@ -647,9 +662,37 @@ else print ''; print ''; + +$var=!$var; +print ''; +print ''; +print ''; +print ""; +print ''; +if (! $conf->use_javascript_ajax) +{ + print '"; +} +else +{ + print '"; +} +print ''; print '
'; @@ -1697,7 +1697,7 @@ else } print '
'; @@ -1722,7 +1722,7 @@ else } print '
'; print ''; print ''; - + // Origin of demand print ''; $form_close.= '
'; @@ -1740,10 +1740,10 @@ else { $form->form_availability($_SERVER['PHP_SELF'].'?id='.$object->id,$object->availability_id,'none',1); } - + print '
'; print ''; print ''; - + // Payment mode print ''; print ''; - + // Project if (! empty($conf->projet->enabled)) { @@ -1825,7 +1825,7 @@ else } print ''; } - + // Other attributes $parameters=array('colspan' => ' colspan="3"'); $reshook=$hookmanager->executeHooks('formObjectOptions',$parameters,$object,$action); // Note that $action and $object may have been modified by hook @@ -1841,12 +1841,12 @@ else print ''."\n"; } } - + // Amount HT print ''; print ''; print ''; - + // Margin Infos if (! empty($conf->margin->enabled)) { print ''; } print ''; - + // Amount VAT print ''; print ''; print ''; - + // Amount Local Taxes if ($mysoc->localtax1_assuj=="1") //Localtax1 { @@ -1873,55 +1873,55 @@ else print ''; print ''; } - - + + // Amount TTC print ''; print ''; print ''; - + // Statut print ''; - + print '
'; @@ -1761,10 +1761,10 @@ else { $form->form_demand_reason($_SERVER['PHP_SELF'].'?id='.$object->id,$object->demand_reason_id,'none'); } - + print '
'; @@ -1783,7 +1783,7 @@ else $form->form_modes_reglement($_SERVER['PHP_SELF'].'?id='.$object->id,$object->mode_reglement_id,'none'); } print '
'.$langs->trans('AmountHT').''.price($object->total_ht).''.$langs->trans("Currency".$conf->currency).''; @@ -1854,12 +1854,12 @@ else print '
'.$langs->trans('AmountVAT').''.price($object->total_tva).''.$langs->trans("Currency".$conf->currency).'
'.price($object->total_localtax2).''.$langs->trans("Currency".$conf->currency).'
'.$langs->trans('AmountTTC').''.price($object->total_ttc).''.$langs->trans("Currency".$conf->currency).'
'.$langs->trans('Status').''.$object->getLibStatut(4).'

'; - + if (! empty($conf->global->MAIN_DISABLE_CONTACTS_TAB)) { $blocname = 'contacts'; $title = $langs->trans('ContactsAddresses'); include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php'; } - + if (! empty($conf->global->MAIN_DISABLE_NOTES_TAB)) { $blocname = 'notes'; $title = $langs->trans('Notes'); include DOL_DOCUMENT_ROOT.'/core/tpl/bloc_showhide.tpl.php'; } - + /* * Lines */ - + if (! empty($conf->use_javascript_ajax) && $object->statut == 0) { include DOL_DOCUMENT_ROOT.'/core/tpl/ajaxrow.tpl.php'; } - + print ''; - + // Show object lines $result = $object->getLinesArray(); if (! empty($object->lines)) $ret=$object->printObjectLines($action,$mysoc,$soc,$lineid); - + // Form to add new line if ($object->statut == 0 && $user->rights->propal->creer) { if ($action != 'editline') { $var=true; - + if ($conf->global->MAIN_FEATURES_LEVEL > 1) { // Add free or predefined products/services @@ -1931,7 +1931,7 @@ else { // Add free products/services $object->formAddFreeProduct(0,$mysoc,$soc); - + // Add predefined products/services if (! empty($conf->product->enabled) || ! empty($conf->service->enabled)) { @@ -1939,17 +1939,17 @@ else $object->formAddPredefinedProduct(0,$mysoc,$soc); } } - + $parameters=array(); $reshook=$hookmanager->executeHooks('formAddObjectLine',$parameters,$object,$action); // Note that $action and $object may have been modified by hook } } - + print '
'; - + print ''; print "\n"; - + if ($action == 'statut') { /* @@ -1975,18 +1975,18 @@ else $form_close.= ' '; $form_close.= '
'; - + print $form_close; } - - + + /* * Boutons Actions */ if ($action != 'presend') { print '
'; - + if ($action != 'statut' && $action <> 'editline') { // Validate @@ -1995,20 +1995,20 @@ else if (count($object->lines) > 0) print ''.$langs->trans('Validate').''; else print ''.$langs->trans('Validate').''; } - + // Edit if ($object->statut == 1 && $user->rights->propal->creer) { print ''.$langs->trans('Modify').''; } - + // ReOpen if (($object->statut == 2 || $object->statut == 3) && $user->rights->propal->cloturer) { print 'global->MAIN_JUMP_TAG)?'':'#reopen').'"'; print '>'.$langs->trans('ReOpen').''; } - + // Send if ($object->statut == 1 || $object->statut == 2) { @@ -2018,7 +2018,7 @@ else } else print ''.$langs->trans('SendByMail').''; } - + // Create an order if (! empty($conf->commande->enabled) && $object->statut == 2 && $user->societe_id == 0) { @@ -2027,7 +2027,7 @@ else print ''.$langs->trans("AddOrder").''; } } - + // Create an invoice and classify billed if ($object->statut == 2 && $user->societe_id == 0) { @@ -2035,46 +2035,46 @@ else { print ''.$langs->trans("AddBill").''; } - + $arraypropal=$object->getInvoiceArrayList(); if (is_array($arraypropal) && count($arraypropal) > 0) { print 'socid.'">'.$langs->trans("ClassifyBilled").''; } } - + // Close if ($object->statut == 1 && $user->rights->propal->cloturer) { print 'global->MAIN_JUMP_TAG)?'':'#close').'"'; print '>'.$langs->trans('Close').''; } - + // Clone if ($user->rights->propal->creer) { print ''.$langs->trans("ToClone").''; } - + // Delete if ($user->rights->propal->supprimer) { print ''.$langs->trans('Delete').''; } - + } - + print '
'; print "
\n"; } - + if ($action != 'presend') { print '
'; print ''; // ancre - - + + /* * Documents generes */ @@ -2083,28 +2083,28 @@ else $urlsource=$_SERVER["PHP_SELF"]."?id=".$object->id; $genallowed=$user->rights->propal->creer; $delallowed=$user->rights->propal->supprimer; - + $var=true; - + $somethingshown=$formfile->show_documents('propal',$filename,$filedir,$urlsource,$genallowed,$delallowed,$object->modelpdf,1,0,0,28,0,'',0,'',$soc->default_lang); - - + + /* * Linked object block */ $somethingshown=$object->showLinkedObjectBlock(); - + print ''; - + // List of actions on element include_once DOL_DOCUMENT_ROOT.'/core/class/html.formactions.class.php'; $formactions=new FormActions($db); $somethingshown=$formactions->showactions($object,'propal',$socid); - + print '
'; } - - + + /* * Action presend * @@ -2115,7 +2115,7 @@ else include_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; $fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($object->ref,'/')); $file=$fileparams['fullname']; - + // Build document if it not exists if (! $file || ! is_readable($file)) { @@ -2129,7 +2129,7 @@ else $outputlangs = new Translate("",$conf); $outputlangs->setDefaultLang($newlang); } - + $result=propale_pdf_create($db, $object, GETPOST('model')?GETPOST('model'):$object->modelpdf, $outputlangs, $hidedetails, $hidedesc, $hideref); if ($result <= 0) { @@ -2139,10 +2139,10 @@ else $fileparams = dol_most_recent_file($conf->propal->dir_output . '/' . $ref, preg_quote($object->ref,'/')); $file=$fileparams['fullname']; } - + print '
'; print_titre($langs->trans('SendPropalByMail')); - + // Create form object include_once DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'; $formmail = new FormMail($db); @@ -2151,18 +2151,17 @@ else $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"]; - $formmail->withtosocid=$soc->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; + $liste=array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value; + $formmail->withto=GETPOST("sendto")?GETPOST("sendto"):$liste; + $formmail->withtocc=$liste; $formmail->withtoccc=(! empty($conf->global->MAIN_EMAIL_USECCC)?$conf->global->MAIN_EMAIL_USECCC:false); - $formmail->withtocccsocid=0; $formmail->withtopic=$langs->trans('SendPropalRef','__PROPREF__'); $formmail->withfile=2; $formmail->withbody=1; $formmail->withdeliveryreceipt=1; $formmail->withcancel=1; - + // Tableau des substitutions $formmail->substit['__PROPREF__']=$object->ref; $formmail->substit['__SIGNATURE__']=$user->signature; @@ -2172,16 +2171,16 @@ else $formmail->param['models']='propal_send'; $formmail->param['id']=$object->id; $formmail->param['returnurl']=$_SERVER["PHP_SELF"].'?id='.$object->id; - + // Init list of files if (GETPOST("mode")=='init') { $formmail->clear_attached_files(); $formmail->add_attached_files($file,basename($file),dol_mimetype($file)); } - + $formmail->show_form(); - + print '
'; } } diff --git a/htdocs/commande/fiche.php b/htdocs/commande/fiche.php index ccaadefe2ee..03dde1a24ff 100644 --- a/htdocs/commande/fiche.php +++ b/htdocs/commande/fiche.php @@ -2418,12 +2418,11 @@ if ($action == 'send' && ! GETPOST('addfile') && ! GETPOST('removedfile') && ! G $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $formmail->withto=GETPOST('sendto')?GETPOST('sendto'):1; - $formmail->withtosocid=$soc->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; + $liste=array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value; + $formmail->withto=GETPOST('sendto')?GETPOST('sendto'):$liste; + $formmail->withtocc=$liste; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtocccsocid=0; $formmail->withtopic=$langs->trans('SendOrderRef','__ORDERREF__'); $formmail->withfile=2; $formmail->withbody=1; diff --git a/htdocs/compta/facture.php b/htdocs/compta/facture.php index 4295e1f6fa9..bccac8d8354 100644 --- a/htdocs/compta/facture.php +++ b/htdocs/compta/facture.php @@ -3403,12 +3403,11 @@ else if ($id > 0 || ! empty($ref)) $formmail->fromname = $user->getFullName($langs); $formmail->frommail = $user->email; $formmail->withfrom=1; - $formmail->withto=empty($_POST["sendto"])?1:$_POST["sendto"]; - $formmail->withtosocid=$soc->id; - $formmail->withtocc=1; - $formmail->withtoccsocid=0; + $liste=array(); + foreach ($object->thirdparty->thirdparty_and_contact_email_array(1) as $key=>$value) $liste[$key]=$value; + $formmail->withto=GETPOST('sendto')?GETPOST('sendto'):$liste; + $formmail->withtocc=$liste; $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; - $formmail->withtocccsocid=0; $formmail->withtopic=$langs->transnoentities($topicmail,'__FACREF__'); $formmail->withfile=2; $formmail->withbody=1; diff --git a/htdocs/core/class/html.form.class.php b/htdocs/core/class/html.form.class.php index f31cb0f741e..71673aca078 100644 --- a/htdocs/core/class/html.form.class.php +++ b/htdocs/core/class/html.form.class.php @@ -823,11 +823,13 @@ class Form * @param string $showfunction Add function into label * @param string $moreclass Add more class to class style * @param string $showsoc Add company into label + * @param int $forcecombo Force to use combo box + * @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) * @return int <0 if KO, Nb of contact in list if OK */ - function select_contacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $showsoc=0) + function select_contacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $showsoc=0, $forcecombo=0, $event=array()) { - print $this->selectcontacts($socid,$selected,$htmlname,$showempty,$exclude,$limitto,$showfunction, $moreclass, $showsoc); + print $this->selectcontacts($socid,$selected,$htmlname,$showempty,$exclude,$limitto,$showfunction, $moreclass, $showsoc, $forcecombo, $event); return $this->num; } @@ -844,9 +846,11 @@ class Form * @param string $moreclass Add more class to class style * @param bool $options_only Return options only (for ajax treatment) * @param string $showsoc Add company into label + * @param int $forcecombo Force to use combo box + * @param array $event Event options. Example: array(array('method'=>'getContacts', 'url'=>dol_buildpath('/core/ajax/contacts.php',1), 'htmlname'=>'contactid', 'params'=>array('add-customer-contact'=>'disabled'))) * @return int <0 if KO, Nb of contact in list if OK */ - function selectcontacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $options_only=false, $showsoc=0) + function selectcontacts($socid,$selected='',$htmlname='contactid',$showempty=0,$exclude='',$limitto='',$showfunction=0, $moreclass='', $options_only=false, $showsoc=0, $forcecombo=0, $event=array()) { global $conf,$langs; @@ -872,6 +876,11 @@ class Form if ($resql) { $num=$this->db->num_rows($resql); + + if ($conf->use_javascript_ajax && $conf->global->CONTACT_USE_SEARCH_TO_SELECT && ! $forcecombo) + { + $out.= ajax_combobox($htmlname, $event); + } if ($htmlname != 'none' || $options_only) $out.= 'withtocc) : (isset($_POST["sendtocc"])?$_POST["sendtocc"]:"") ).'" />'; - if (! empty($this->withto) && is_array($this->withto)) + if (! empty($this->withtocc) && is_array($this->withtocc)) { $out.= " ".$langs->trans("or")." "; $out.= $form->selectarray("receivercc", $this->withto, GETPOST("receivercc"), 1); } - if (! empty($this->withtoccsocid) && $this->withtoccsocid > 0) // deprecated. TODO Remove this. Instead, fill withto with array before calling method. - { - $liste=array(); - $soc=new Societe($this->db); - $soc->fetch($this->withtoccsocid); - foreach ($soc->thirdparty_and_contact_email_array(1) as $key=>$value) - { - $liste[$key]=$value; - } - $out.= " ".$langs->trans("or")." "; - $out.= $form->selectarray("receivercc", $liste, GETPOST("receivercc"), 1); - } } $out.= "
'.$langs->trans("UseSearchToSelectContact").''; + print $langs->trans("NotAvailableWhenAjaxDisabled"); + print "'; + $arrval=array('0'=>$langs->trans("No"), + '1'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch",1).')', + '2'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch",2).')', + '3'=>$langs->trans("Yes").' ('.$langs->trans("NumberOfKeyToSearch",3).')', + ); + print $form->selectarray("activate_CONTACT_USE_SEARCH_TO_SELECT",$arrval,$conf->global->CONTACT_USE_SEARCH_TO_SELECT); + print ''; + print ''; + print "
'; + dol_fiche_end(); $db->close(); diff --git a/htdocs/user/fiche.php b/htdocs/user/fiche.php index 92ebb740523..cf0e0170c94 100644 --- a/htdocs/user/fiche.php +++ b/htdocs/user/fiche.php @@ -324,9 +324,7 @@ if ($action == 'update' && ! $_POST["cancel"]) $object->firstname = GETPOST("prenom"); $object->login = GETPOST("login"); $object->pass = GETPOST("password"); - if($user->admin == 1) { // A user can only be set admin by an admin - $object->admin = GETPOST("admin"); - } + $object->admin = empty($user->admin)?0:GETPOST("admin"); // A user can only be set admin by an admin $object->office_phone=GETPOST("office_phone"); $object->office_fax = GETPOST("office_fax"); $object->user_mobile= GETPOST("user_mobile");