From 54fc731df78f4249dfae21af3aeb214086665468 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marcos=20Garci=CC=81a?= Date: Sun, 28 Apr 2013 01:58:57 +0200 Subject: [PATCH 1/3] =?UTF-8?q?Fix:=20[bug=20#856]=C2=A0Mail=20error=20if?= =?UTF-8?q?=20destination=20user=20doesn't=20have=20an=20email?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ChangeLog | 1 + htdocs/holiday/fiche.php | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/ChangeLog b/ChangeLog index 4c717ab680d..e1d7f482be2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -26,6 +26,7 @@ English Dolibarr ChangeLog - Fix: [ bug #824 ] MAIN_DB_PREFIX not use into dictionnary - Fix: [ bug #828 ] Error when code_region is not a number in llx_c_regions (with postgres) - Fix: [ bug #857 ] Invoice created from shipment does not have the order discount +- Fix: [ bug #856 ] (Holidays module) Mail error if destination user doesn't have an email ***** ChangeLog for 3.3.1 compared to 3.3 ***** diff --git a/htdocs/holiday/fiche.php b/htdocs/holiday/fiche.php index f50c77e4fe6..3d3572f20cd 100644 --- a/htdocs/holiday/fiche.php +++ b/htdocs/holiday/fiche.php @@ -276,6 +276,12 @@ if ($action == 'confirm_send') $destinataire->fetch($cp->fk_validator); $emailTo = $destinataire->email; + if (!$emailTo) + { + header('Location: fiche.php?id='.$_GET['id']); + exit; + } + // From $expediteur = new User($db); $expediteur->fetch($cp->fk_user); @@ -385,6 +391,12 @@ if($action == 'confirm_valid') $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; + if (!$emailTo) + { + header('Location: fiche.php?id='.$_GET['id']); + exit; + } + // From $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); @@ -453,6 +465,12 @@ if ($action == 'confirm_refuse') $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; + if (!$emailTo) + { + header('Location: fiche.php?id='.$_GET['id']); + exit; + } + // From $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); @@ -524,6 +542,12 @@ if ($action == 'confirm_cancel' && $_GET['confirm'] == 'yes') $destinataire->fetch($cp->fk_user); $emailTo = $destinataire->email; + if (!$emailTo) + { + header('Location: fiche.php?id='.$_GET['id']); + exit; + } + // From $expediteur = new User($db); $expediteur->fetch($cp->fk_validator); From 00adb1b9ab4938f778c3050d39ad814fc6deec47 Mon Sep 17 00:00:00 2001 From: simnandez Date: Mon, 29 Apr 2013 12:46:07 +0200 Subject: [PATCH 2/3] Fix: [ bug #855 ] Holiday approval email in French --- ChangeLog | 1 + htdocs/holiday/fiche.php | 17 ++-- htdocs/langs/ca_ES/holiday.lang | 154 ++++++++++++++++++++++++++++++++ htdocs/langs/en_US/holiday.lang | 14 +++ htdocs/langs/es_ES/holiday.lang | 14 +++ htdocs/langs/fr_FR/holiday.lang | 14 +++ 6 files changed, 206 insertions(+), 8 deletions(-) create mode 100644 htdocs/langs/ca_ES/holiday.lang diff --git a/ChangeLog b/ChangeLog index e1d7f482be2..993eff9c2da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -27,6 +27,7 @@ English Dolibarr ChangeLog - Fix: [ bug #828 ] Error when code_region is not a number in llx_c_regions (with postgres) - Fix: [ bug #857 ] Invoice created from shipment does not have the order discount - Fix: [ bug #856 ] (Holidays module) Mail error if destination user doesn't have an email +- Fix: [ bug #855 ] Holiday approval email in French ***** ChangeLog for 3.3.1 compared to 3.3 ***** diff --git a/htdocs/holiday/fiche.php b/htdocs/holiday/fiche.php index 3d3572f20cd..f562eb5734b 100644 --- a/htdocs/holiday/fiche.php +++ b/htdocs/holiday/fiche.php @@ -2,6 +2,7 @@ /* Copyright (C) 2011 Dimitri Mouillard * Copyright (C) 2012 Laurent Destailleur * Copyright (C) 2012 Regis Houssin + * Copyright (C) 2013 Juanjo Menent * * 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 @@ -296,7 +297,7 @@ if ($action == 'confirm_send') // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; - $message.= "Veuillez trouver ci-dessous une demande de congés payés à valider.\n"; + $message.= $langs->transnoentities("HolidaysToValidateBody")."\n"; $delayForRequest = $cp->getConfCP('delayForRequest'); //$delayForRequest = $delayForRequest * (60*60*24); @@ -309,7 +310,7 @@ if ($action == 'confirm_send') if($cp->date_debut < $nextMonth) { $message.= "\n"; - $message.= "Cette demande de congés payés à été effectué dans un délai de moins de ".$cp->getConfCP('delayForRequest')." jours avant ceux-ci.\n"; + $message.= $langs->transnoentities("HolidaysToValidateDelay",$cp->getConfCP('delayForRequest'))."\n"; } } @@ -320,7 +321,7 @@ if ($action == 'confirm_send') if ($nbopenedday > $cp->getCPforUser($cp->fk_user)) { $message.= "\n"; - $message.= "L'utilisateur ayant fait cette demande de congés payés n'a pas le solde requis.\n"; + $message.= $langs->transnoentities("HolidaysToValidateAlertSolde")."\n"; } } @@ -411,7 +412,7 @@ if($action == 'confirm_valid') // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; - $message.= "Votre demande de congés payés du ".dol_print_date($cp->date_debut,'day')." au ".dol_print_date($cp->date_fin,'day')." vient d'être validée!\n"; + $message.= $langs->transnoentities("HolidaysValidatedBody", dol_print_date($cp->date_debut,'day'),dol_print_date($cp->date_fin,'day'))."\n"; $message.= "- ".$langs->transnoentitiesnoconv("ValidatedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n"; @@ -485,9 +486,9 @@ if ($action == 'confirm_refuse') // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; - $message.= "Votre demande de congés payés ".dol_print_date($cp->date_debut,'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($cp->date_fin,'day')." vient d'être refusée pour le motif suivant :\n"; - $message.= $_POST['detail_refuse']."\n\n"; - $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; + $message.= $langs->transnoentities("HolidaysRefusedBody", dol_print_date($cp->date_debut,'day'), dol_print_date($cp->date_fin,'day'))."\n"; + $message.= GETPOST('detail_refuse','alpha')."\n\n"; + $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".dolGetFirstLastname($expediteur->firstname, $expediteur->lastname)."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n"; @@ -562,7 +563,7 @@ if ($action == 'confirm_cancel' && $_GET['confirm'] == 'yes') // Content $message = $langs->transnoentitiesnoconv("Hello")." ".$destinataire->prenom.",\n"; $message.= "\n"; - $message.= "Votre demande de congés ".dol_print_date($cp->date_debut,'day')." ".$langs->transnoentitiesnoconv("To")." ".dol_print_date($cp->date_fin,'day')." va été annulée.\n"; + $message.= $langs->transnoentities("HolidaysCanceledBody", dol_print_date($cp->date_debut,'day'), dol_print_date($cp->date_fin,'day'))."\n"; $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n"; diff --git a/htdocs/langs/ca_ES/holiday.lang b/htdocs/langs/ca_ES/holiday.lang new file mode 100644 index 00000000000..d77e31fbb7f --- /dev/null +++ b/htdocs/langs/ca_ES/holiday.lang @@ -0,0 +1,154 @@ +# Dolibarr language file - ca_ES - holiday +CHARSET= UTF-8 + +Holidays=Vacacions +CPTitreMenu=Vacacions +MenuReportMonth=Estat mensual +MenuAddCP=Nova petició +NotActiveModCP=Heu d'activar el mòdul Vacacions per veure aquesta pàgina. +NotConfigModCP=Heu de configurar el mòdul Vacacions per veure aquesta pàgina. per configurar, feu clic aquí. +NoCPforUser=No té peticions de vacances. +AddCP=Crear petició de vacances +CPErrorSQL=S'ha produït un error de SQL: +Employe=Empleat +DateDebCP=Data inici +DateFinCP=Data fi +DateCreateCP=Data de creació +DraftCP=Esborrany +ToValidateCP=En espera de validació +ValidateCP=Validada +CancelCP=Anul·lada +RefuseCP=Rebutjada +ValidatorCP=Validador +ListeCP=Llista de vacances +ValidateByCP=Serà validada per +DescCP=Descripció +SendRequestCP=Enviar la petició de vacances +DelayToRequestCP=Les peticions de vacances s'han de fer almenys %s dies abans. +MenuConfCP=Definir les vacances +UpdateAllCP=Actualitzar les vacances +SoldeCPUser=El seu saldo de vacances és de %s dies. +ErrorEndDateCP=Ha d'indicar una data de fi superior a la data d'inici. +ErrorSQLCreateCP=S'ha produït un error de SQL durant la creació: +ErrorIDFicheCP=S'ha produït un error, aquesta sol·licitud de vacances no existeix. +ReturnCP=Tornar a la pàgina anterior +ErrorUserViewCP=No està autoritzat a llegir aquesta petició de vacances. +InfosCP=Informació de la petició de vacances +InfosWorkflowCP=Informació del workflow +DateCreateCP=Data de creació +RequestByCP=Comandada per +TitreRequestCP=Fitxa vacances +NbUseDaysCP=Nombre de dies de vacances consumits +EditCP=Modificar +DeleteCP=Eliminar +ActionValidCP=Validar +ActionRefuseCP=Rebutjar +ActionCancelCP=Anul·lar +StatutCP=Estat +SendToValidationCP=Enviar validació +TitleDeleteCP=Eliminar la petició de vacances +ConfirmDeleteCP=Està segur de voler eliminar aquesta petició de vacances? +ErrorCantDeleteCP=Error, no té vacances per eliminar aquesta petició de vacances. +CantCreateCP=No té vacances per realitzar peticions de vacances. +InvalidValidatorCP=Ha d'indicar un validador per a la seva petició de vacances. +UpdateButtonCP=Actualitzar +CantUpdate=No pot actualitzar aquesta petició de vacances. +NoDateDebut=Ha d'indicar una data d'inici. +NoDateFin=Ha d'indicar una data de fi. +ErrorDureeCP=La seva petició de vacances no conté cap dia hàbil. +TitleValidCP=Validar la petició de vacances +ConfirmValidCP=Esteu segur de voler validar aquesta petició de vacances? +DateValidCP=Data de validació +TitleToValidCP=Enviar la petició de vacances +ConfirmToValidCP=Esteu segur de voler enviar la petició de vacances? +TitleRefuseCP=Rebutjar la petició de vacances +ConfirmRefuseCP=Esteu segur de voler rebutjar la petició de vacances? +NoMotifRefuseCP=Ha de seleccionar un motiu per rebutjar aquesta petició. +TitleCancelCP=Anul·lar la petició de vacances +ConfirmCancelCP=Esteu segur de voler anul·lar la petició de vacances? +DetailRefusCP=Motiu del rebuig +DateRefusCP=Data del rebuig +DateCancelCP=Data de l'anul·lació +DefineEventUserCP=Assignar permís excepcional a un usuari +addEventToUserCP=Assignar aquest permís +MotifCP=Motiu +UserCP=Usuari +ErrorAddEventToUserCP=S'ha produït un error en l'assignació del permís excepcional. +AddEventToUserOkCP=S'ha afegit el permís excepcional. +MenuLogCP=Veure els logs de vacances +LogCP=Logs d'actualitzacions de vacances +ActionByCP=Realitzat per +UserUpdateCP=Per a l'usuari +ActionTypeCP=Tipus +PrevSoldeCP=Saldo anterior +NewSoldeCP=Nou saldo +alreadyCPexist=Ja s'ha efectuat una petició de vacances per a aquest període. +UserName=Nom Cognoms +Employee=Empleat +FirstDayOfHoliday=Primer dia lliure +LastDayOfHoliday=Últim dí lliure +Morning=Matí +Afternoon=Vesprada +HolidaysMonthlyUpdate=Actualització mensual +ManualUpdate=Actualització manual + +## Configuration du Module ## +ConfCP=Configuració del mòdul Vacacions +DescOptionCP=Descripció de l'opció +ValueOptionCP=Valor +GroupToValidateCP=Grup amb possibilitat d'aprovar les vacances +ConfirmConfigCP=Validar la configuració +LastUpdateCP=Darrera actualització automàtica de vacances +UpdateConfCPOK=Actualització efectuada correctament. +ErrorUpdateConfCP=S'ha produït un error durant l'actualització, torne a provar. +AddCPforUsers=Afegiu els saldos de vacances dels usuaris fent clic aquí. +DelayForSubmitCP=Antelació mínima per sol·licitar vacances +AlertValidatorDelayCP=Advertir a l'usuari validador si la petició no respecta el límit previst +AlertValidorSoldeCP=Advertir a l'usuari validador si l'usuari demana vacances superiors al seu saldo +nbUserCP=Nombre d'usuaris presos en compte en el mòdul vacances +nbHolidayDeductedCP=Nombre de dies retribuïts a deduir per dia de vacances +nbHolidayEveryMonthCP=Nombre de vacances afegides per mes +Module27130Name=Gestió de les vacances +TitleOptionMainCP=Ajustaments principals de vacances +TitleOptionEventCP=Ajustaments de vacances enllaçats a esdeveniments +ValidEventCP=Validar +UpdateEventCP=Actualitzar els esdeveniments +CreateEventCP=Crear +NameEventCP=Nom de l'esdeveniment +OkCreateEventCP=S'ha afegit l'esdeveniment correctament. +ErrorCreateEventCP=Error en la creació de l'esdeveniment. +UpdateEventOkCP=S'ha actualitzat l'esdeveniment correctament. +ErrorUpdateEventCP=Error en l'actualització de l'esdeveniment. +DeleteEventCP=Eliminar l'esdeveniment +DeleteEventOkCP=S'ha eliminat l'esdeveniment. +ErrorDeleteEventCP=Error en l'eliminació de l'esdeveniment. +TitleDeleteEventCP=Eliminar un permís excepcional +TitleCreateEventCP=Crear un permís excepcional +TitleUpdateEventCP=Modificar o eliminar un permís excepcional +DeleteEventOptionCP=Eliminar +UpdateEventOptionCP=Actualitzar +ErrorMailNotSend=S'ha produït un error en l'enviament del correu electrònic: +NoCPforMonth=Sense vacances aquest mes. +Jours=dies +nbJours=Número de dies +TitleAdminCP=Configuració de les vacances + +#Messages +Hello=Hola +HolidaysToValidate=Dies retribuïts a validar +HolidaysToValidateBody=A continuació trobareu una sol·licitud de dies retribuïts per validar +HolidaysToValidateDelay=Aquesta sol·licitud de dies retribuïts tindrà lloc en un termini de menys de %s dies. +HolidaysToValidateAlertSolde=L'usuari que ha realitzat la sol·licitud de dies retribuïts no disposa de suficients dies disponibles. +HolidaysValidated=Dies retribuïts validats +HolidaysValidatedBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat validada. +HolidaysRefused=Dies retribuïts denegats +HolidaysRefusedBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat denegada pel següent motiu: +HolidaysCanceled=Dies retribuïts cancel·lats +HolidaysCanceledBody=La seva sol·licitud de dies retribuïts des de %s al %s ha estat cancel·lada. + +Permission20001=Consultar/crear/modificar les seves vacances +Permission20002=Consultar/modificar totes les sol·licituds de permisos retribuïts +Permission20003=Eliminar les sol·licituds de permisos retribuïts +Permission20004=Definir els permisos retribuïts dels usuaris +Permission20005=Consultar l'historial de modificacions de permisos retribuïts +Permission20006=Accedir a l'informe mensual de permisos retribuïts \ No newline at end of file diff --git a/htdocs/langs/en_US/holiday.lang b/htdocs/langs/en_US/holiday.lang index bf96666c8f5..bc2358dad2b 100755 --- a/htdocs/langs/en_US/holiday.lang +++ b/htdocs/langs/en_US/holiday.lang @@ -131,6 +131,20 @@ NoCPforMonth=No leave this month. Jours=days nbJours=Number days TitleAdminCP=Configuration of Holidays + +#Messages +Hello=Hello +HolidaysToValidate=Validate holidays +HolidaysToValidateBody=Below is a request for holidays to validate +HolidaysToValidateDelay=This request for holidays will take place within a period of less than %s days. +HolidaysToValidateAlertSolde=The user who made this request for holidays do not have enough available days. +HolidaysValidated=Validated holidays +HolidaysValidatedBody=Your request for holidays for %s to %s has been validated. +HolidaysRefused=Denied holidays +HolidaysRefusedBody=Your request for holidays for %s to %s has been denied for the following reason : +HolidaysCanceled=Canceled holidays +HolidaysCanceledBody=Your request for holidays for %s to %s has been canceled. + Permission20001=Read/create/modify their holidays Permission20002=Read/modify all requests of holidays Permission20003=Delete their holidays requests diff --git a/htdocs/langs/es_ES/holiday.lang b/htdocs/langs/es_ES/holiday.lang index 75621b274bd..325dbc1b7bf 100644 --- a/htdocs/langs/es_ES/holiday.lang +++ b/htdocs/langs/es_ES/holiday.lang @@ -132,6 +132,20 @@ NoCPforMonth=Sin vacaciones este mes. Jours=días nbJours=Número de días TitleAdminCP=Configuración de las vacaciones + +#Messages +Hello=Hola +HolidaysToValidate=Días retribuidos a validar +HolidaysToValidateBody=A continuación encontrará una solicitud de días retribuidos para validar +HolidaysToValidateDelay=Esta solicitud de días retribuidos tendrá lugar en un plazo de menos de %s días. +HolidaysToValidateAlertSolde=El usuario que ha realizado la solicitud de días retribuidos no dispone de suficientes días disponibles. +HolidaysValidated=Días retribuidos validados +HolidaysValidatedBody=Su solicitud de días retribuidos desde el %s al %s ha sido validada. +HolidaysRefused=Días retribuidos denegados +HolidaysRefusedBody=Su solicitud de días retribuidos desde el %s al %s ha sido denegada por el siguiente motivo : +HolidaysCanceled=Días retribuidos cancelados +HolidaysCanceledBody=Su solicitud de días retribuidos desde el %s al %s ha sido cancelada. + Permission20001=Consultar/crear/modificar sus vacaciones Permission20002=Consultar/modificar todas las solicitudes de permisos retribuídos Permission20003=Eliminar las solicitudes de permisos retribuídos diff --git a/htdocs/langs/fr_FR/holiday.lang b/htdocs/langs/fr_FR/holiday.lang index 52c6ac37d9b..be368bf661a 100644 --- a/htdocs/langs/fr_FR/holiday.lang +++ b/htdocs/langs/fr_FR/holiday.lang @@ -130,6 +130,20 @@ NoCPforMonth=Aucun congé ce mois-ci. Jours=jours nbJours=Nombre jours TitleAdminCP=Configuration des Congés + +#Messages +Hello=Bonjour +HolidaysToValidate=Congés payés à valider +HolidaysToValidateBody=Veuillez trouver ci-dessous une demande de congés payés à valider. +HolidaysToValidateDelay=Cette demande de congés payés à été effectué dans un délai de moins de %s jours avant ceux-ci. +HolidaysToValidateAlertSolde=L'utilisateur ayant fait cette demande de congés payés n'a pas le solde requis. +HolidaysValidated=Congés payés validée +HolidaysValidatedBody=Votre demande de congés payés du %s au %s vient d'être validée! +HolidaysRefused=Congés payés refusée +HolidaysRefusedBody=Votre demande de congés payés %s à %s vient d'être refusée pour le motif suivant : +HolidaysCanceled=Congés payés annulée +HolidaysCanceledBody=Votre demande de congés %s à %s va été annulée. + Permission20001=Lire / Créer / modifier ses congès Permission20002=Lire / Modifier toutes les demandes de congés payés Permission20003=Supprimer des demandes de congés payés From fd85755461e71d8a8b38f166f2b89d711b905df3 Mon Sep 17 00:00:00 2001 From: simnandez Date: Mon, 29 Apr 2013 12:55:14 +0200 Subject: [PATCH 3/3] Fix: [ bug #855 ] Holiday approval email in French --- htdocs/holiday/fiche.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/holiday/fiche.php b/htdocs/holiday/fiche.php index f562eb5734b..8e2d8509002 100644 --- a/htdocs/holiday/fiche.php +++ b/htdocs/holiday/fiche.php @@ -488,7 +488,7 @@ if ($action == 'confirm_refuse') $message.= "\n"; $message.= $langs->transnoentities("HolidaysRefusedBody", dol_print_date($cp->date_debut,'day'), dol_print_date($cp->date_fin,'day'))."\n"; $message.= GETPOST('detail_refuse','alpha')."\n\n"; - $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".dolGetFirstLastname($expediteur->firstname, $expediteur->lastname)."\n"; + $message.= "- ".$langs->transnoentitiesnoconv("ModifiedBy")." : ".$expediteur->prenom." ".$expediteur->nom."\n"; $message.= "- ".$langs->transnoentitiesnoconv("Link")." : ".$dolibarr_main_url_root."/holiday/fiche.php?id=".$cp->rowid."\n\n"; $message.= "\n";