From 2ffe4f589e94964255ee3ca3a5ce3bae80fbdad4 Mon Sep 17 00:00:00 2001 From: philippe Date: Fri, 18 Apr 2014 10:54:21 +0200 Subject: [PATCH 01/10] style enhancement --- htdocs/theme/eldy/style.css.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/theme/eldy/style.css.php b/htdocs/theme/eldy/style.css.php index b23a42c9739..d6d5199b3c6 100644 --- a/htdocs/theme/eldy/style.css.php +++ b/htdocs/theme/eldy/style.css.php @@ -183,7 +183,7 @@ if ($tmpval <= 360) { $colortextbackvmenu='FFF'; } else { $colortextbackvmenu='444'; } $tmppart=explode(',',$colorbacktitle1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); -if ($tmpval <= 360) { $colortexttitle='FFF'; $colorshadowtitle='000'; } +if ($tmpval <= 360) { $colortexttitle='FFF'; $colorshadowtitle='888'; } else { $colortexttitle='444'; $colorshadowtitle='FFF'; } $tmppart=explode(',',$colorbacktabcard1); $tmpval=(! empty($tmppart[1]) ? $tmppart[1] : '')+(! empty($tmppart[2]) ? $tmppart[2] : '')+(! empty($tmppart[3]) ? $tmppart[3] : ''); From 8564691896c055c3c5c303dac2c2aac6dbda21ef Mon Sep 17 00:00:00 2001 From: philippe Date: Mon, 21 Apr 2014 09:46:03 +0200 Subject: [PATCH 02/10] Fix some misspelling --- htdocs/langs/fr_FR/errors.lang | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang index a1ed822619e..455f13802c3 100644 --- a/htdocs/langs/fr_FR/errors.lang +++ b/htdocs/langs/fr_FR/errors.lang @@ -19,10 +19,10 @@ ErrorFailToCreateFile=Echec de la création du fichier '%s'. ErrorFailToRenameDir=Echec du renommage du répertoire '%s' en '%s'. ErrorFailToCreateDir=Echec de création du répertoire '%s'. ErrorFailToDeleteDir=Echec de la suppression du répertoire '%s'. -ErrorFailedToDeleteJoinedFiles=Impossible de supprimer l'entité car il existe des pièces jointes. Supprimer d'abord les pièces jointes. +ErrorFailedToDeleteJoinedFiles=Impossible de supprimer l'entité car il existe des pièces jointes. Supprimez d'abord les pièces jointes. ErrorThisContactIsAlreadyDefinedAsThisType=Ce contact est déjà défini comme contact pour ce type. -ErrorCashAccountAcceptsOnlyCashMoney=Ce compte bancaire est de type caisse et n'accepte que les mode de règlement de type espèce. -ErrorFromToAccountsMustDiffers=Le compte source et destination doivent être différents. +ErrorCashAccountAcceptsOnlyCashMoney=Ce compte bancaire est de type caisse et n'accepte que le mode de règlement de type espèce. +ErrorFromToAccountsMustDiffers=Les comptes source et destination doivent être différents. ErrorBadThirdPartyName=Nom de tiers incorrect ErrorProdIdIsMandatory=Le %s est obligatoire ErrorBadCustomerCodeSyntax=La syntaxe du code client est incorrecte @@ -41,9 +41,9 @@ ErrorFailedToWriteInDir=Impossible d'écrire dans le répertoire %s ErrorFoundBadEmailInFile=Syntaxe de mail incorrecte trouvée pour %s lignes dans le fichier (exemple ligne %s avec email=%s) ErrorUserCannotBeDelete=L'utilisateur ne peut pas être supprimé. Peut-être est-il associé à des éléments de Dolibarr. ErrorFieldsRequired=Des champs obligatoires n'ont pas été renseignés -ErrorFailedToCreateDir=Echec à la création d'un répertoire. Vérifiez que le user du serveur Web a bien les droits d'écriture dans les répertoires documents de Dolibarr. Si le paramètre safe_mode a été activé sur ce PHP, vérifier que les fichiers php dolibarr appartiennent à l'utilisateur du serveur Web. +ErrorFailedToCreateDir=Echec à la création d'un répertoire. Vérifiez que le user du serveur Web a bien les droits d'écriture dans les répertoires documents de Dolibarr. Si le paramètre safe_mode a été activé sur ce PHP, vérifiez que les fichiers php dolibarr appartiennent à l'utilisateur du serveur Web. ErrorNoMailDefinedForThisUser=EMail non défini pour cet utilisateur -ErrorFeatureNeedJavascript=Cette fonctionnalité a besoin de javascript activé pour fonctionner. Modifier dans configuration - affichage. +ErrorFeatureNeedJavascript=Cette fonctionnalité a besoin de javascript activé pour fonctionner. Modifiez dans configuration - affichage. ErrorTopMenuMustHaveAParentWithId0=Un menu de type 'Top' ne peut avoir de menu père. Mettre 0 dans l'id père ou choisir un menu de type 'Left'. ErrorLeftMenuMustHaveAParentId=Un menu de type 'Left' doit avoir un id de père. ErrorFileNotFound=Fichier %s introuvable (Mauvais chemin, permissions incorrectes ou accès interdit par le paramètre PHP openbasedir ou safe_mode) @@ -57,8 +57,8 @@ ErrorUploadBlockedByAddon=Upload bloqué par un plugin PHP/Apache. ErrorFileSizeTooLarge=La taille du fichier est trop grande. ErrorSizeTooLongForIntType=Longueur de champ trop longue pour le type int (%s chiffres maximum) ErrorSizeTooLongForVarcharType=Longueur de champ trop longue pour le type chaine (%s caractères maximum) -ErrorNoValueForSelectType=Les valeurs de la liste de selection doivent être renseignées -ErrorNoValueForCheckBoxType=Les valeurs de la liste de case a cochées doivent être renseignées +ErrorNoValueForSelectType=Les valeurs de la liste de sélection doivent être renseignées +ErrorNoValueForCheckBoxType=Les valeurs de la liste de cases à cocher doivent être renseignées ErrorNoValueForRadioType=Les valeurs de la liste d'options doivent être renseignées ErrorBadFormatValueList=Les valeurs de la liste ne peuvent pas contenir plus d'une virgule : %s, mais doivent en avoir au moins une: clef,valeur ErrorFieldCanNotContainSpecialCharacters=Le champ %s ne peut contenir de caractères spéciaux. @@ -66,7 +66,7 @@ ErrorFieldCanNotContainSpecialNorUpperCharacters=Le champ %s ne peut cont ErrorNoAccountancyModuleLoaded=Aucun module de comptabilité activé ErrorExportDuplicateProfil=Ce nom de profil existe déjà pour ce lot d'export. ErrorLDAPSetupNotComplete=Le matching Dolibarr-LDAP est incomplet. -ErrorLDAPMakeManualTest=Un fichier .ldif a été généré dans le répertoire %s. Essayez de charger ce fichier en manuel depuis la ligne de commande pour plus de détail sur l'erreur. +ErrorLDAPMakeManualTest=Un fichier .ldif a été généré dans le répertoire %s. Essayez de charger ce fichier manuellement depuis la ligne de commande pour plus de détail sur l'erreur. ErrorCantSaveADoneUserWithZeroPercentage=Impossible de sauver une action à l'état non commencé avec un utilisateur défini comme ayant fait l'action. ErrorRefAlreadyExists=La référence utilisée pour la création existe déjà ErrorPleaseTypeBankTransactionReportName=Veuillez saisir le nom de relevé bancaire sur lequel l'écriture est constatée (Format AAAAMM de préférence ou AAAAMMJJ) @@ -80,7 +80,7 @@ ErrorFieldRefNotIn=Mauvaise valeur pour le champ numéro %s (la valeur '< ErrorsOnXLines=Erreurs sur %s enregistrement(s) source ErrorFileIsInfectedWithAVirus=L'antivirus n'a pas pu valider ce fichier (il est probablement infecté par un virus) ! ErrorSpecialCharNotAllowedForField=Les caractères spéciaux ne sont pas admis pour le champ "%s" -ErrorDatabaseParameterWrong=Le paramètre de configuration de la base de donnée '%s' a une valeur non compatible pour une utilisation de Dolibarr (doit avoir la valeur '%s'). +ErrorDatabaseParameterWrong=Le paramètre de configuration de la base de données '%s' a une valeur non compatible pour une utilisation de Dolibarr (doit avoir la valeur '%s'). ErrorNumRefModel=Une référence existe en base (%s) et est incompatible avec cette numérotation. Supprimez la ligne ou renommez la référence pour activer ce module. ErrorQtyTooLowForThisSupplier=Quantité insuffisante pour ce fournisseur ou aucun tarif défini sur ce produit pour ce fournisseur ErrorModuleSetupNotComplete=La configuration du module semble incomplète. Aller dans l'espace Configuration - Modules pour corriger. @@ -92,7 +92,7 @@ ErrorProductWithRefNotExist=La référence produit '%s' n'existe pas ErrorDeleteNotPossibleLineIsConsolidated=Suppression impossible car l'enregistrement porte sur au moins une transaction bancaire rapprochée ErrorProdIdAlreadyExist=%s est attribué à un autre tiers ErrorFailedToSendPassword=Échec de l'envoi du mot de passe -ErrorFailedToLoadRSSFile=Echec de la récupération du flux RSS. Ajouter la constante MAIN_SIMPLEXMLLOAD_DEBUG si le message d'erreur n'est pas assez explicite. +ErrorFailedToLoadRSSFile=Echec de la récupération du flux RSS. Ajoutez la constante MAIN_SIMPLEXMLLOAD_DEBUG si le message d'erreur n'est pas assez explicite. ErrorPasswordDiffers=Les mots de passe ne sont pas identiques, veuillez les saisir à nouveau ErrorForbidden=Accès non autorisé.
Vous essayez d'accéder à une page, zone ou fonction sans être au sein d'une session authentifiée ou qui n'est pas autorisée pour votre compte utilisateur. ErrorForbidden2=Les permissions pour ce login peuvent être attribuées par l'administrateur Dolibarr via le menu %s -> %s. @@ -102,16 +102,16 @@ ErrorRecordAlreadyExists=Enregistrement déjà existant ErrorCantReadFile=Échec de lecture du fichier '%s' ErrorCantReadDir=Échec de lecture du répertoire '%s' ErrorFailedToFindEntity=Échec de lecture de l'environnement '%s' -ErrorBadLoginPassword=Identifiants login ou mot de passe incorrects +ErrorBadLoginPassword=Identifiants login ou mot de passe incorrect ErrorLoginDisabled=Votre compte est désactivé -ErrorFailedToRunExternalCommand=Échec de l'exécution de la commande externe. Vérifiez qu'elle est disponible et exécutable par votre serveur PHP. Si le Safe Mode PHP est actif, vérifiez que la commande se trouve dans un répertoire définie dans le paramètre safe_mode_exec_dir. +ErrorFailedToRunExternalCommand=Échec de l'exécution de la commande externe. Vérifiez qu'elle est disponible et exécutable par votre serveur PHP. Si le Safe Mode PHP est actif, vérifiez que la commande se trouve dans un répertoire défini dans le paramètre safe_mode_exec_dir. ErrorFailedToChangePassword=Échec de modification du mot de passe ErrorLoginDoesNotExists=Le compte utilisateur de login %s n'a pu être trouvé. ErrorLoginHasNoEmail=Cet utilisateur n'a pas d'email. Impossible de continuer. ErrorBadValueForCode=Mauvaise valeur saisie pour le code. Réessayez avec une nouvelle valeur... ErrorBothFieldCantBeNegative=Les champs %s et %s ne peuvent être tous deux négatifs -ErrorWebServerUserHasNotPermission=Le compte d'execution du serveur web %s n'a pas les permissions pour cela -ErrorNoActivatedBarcode=Aucun type de code bar activé +ErrorWebServerUserHasNotPermission=Le compte d'exécution du serveur web %s n'a pas les permissions pour cela +ErrorNoActivatedBarcode=Aucun type de code-barres activé ErrUnzipFails=Impossible de décompresser le fichier %s avec ZipArchive ErrNoZipEngine=Pas de moteur pour décompresser le fichier %s dans ce PHP ErrorFileMustBeADolibarrPackage=Le fichier doit être un package Dolibarr @@ -120,11 +120,11 @@ ErrorPhpCurlNotInstalled=L'extension PHP CURL n'est pas installée, ceci est ind ErrorFailedToAddToMailmanList=Echec de l'ajout de %s à la liste Mailman %s ou base SPIP ErrorFailedToRemoveToMailmanList=Echec de la suppression de %s de la liste Mailman %s ou base SPIP ErrorNewValueCantMatchOldValue=La nouvelle valeur ne peut être égale à l'ancienne -ErrorFailedToValidatePasswordReset=Echec de la réinitialisation du mot de passe. Il est possible que ce lien ait déjà été utilisé (l'utilisation de ce lien ne fonctionne qu'une fois). Si ce n'est pas le cas, essayer de recommencer le processus de réinit de mot de passe depuis le début. -ErrorToConnectToMysqlCheckInstance=Echec de la connection au serveur de base de donnée. Vérifier que Mysql est bien lancé (dans la plupart des cas, vous pouvez le lancer depuis la ligne de commande par la commande 'sudo /etc/init.d/mysql start'). +ErrorFailedToValidatePasswordReset=Echec de la réinitialisation du mot de passe. Il est possible que ce lien ait déjà été utilisé (l'utilisation de ce lien ne fonctionne qu'une fois). Si ce n'est pas le cas, essayer de recommencer le processus de réinitialisation de mot de passe depuis le début. +ErrorToConnectToMysqlCheckInstance=Echec de la connection au serveur de base de données. Vérifiez que Mysql est bien lancé (dans la plupart des cas, vous pouvez le lancer depuis la ligne de commande par la commande 'sudo /etc/init.d/mysql start'). ErrorFailedToAddContact=Echec à l'ajout du contact ErrorDateMustBeBeforeToday=La date ne peut pas être supérieure à aujourd'hui -ErrorPaymentModeDefinedToWithoutSetup=Un mode de paiement a été défini de type %s mais la configuration du module Facture n'a pas été complété pour définir les informations afficher pour ce mode de paiment. +ErrorPaymentModeDefinedToWithoutSetup=Un mode de paiement a été défini de type %s mais la configuration du module Facture n'a pas été complétée pour définir les informations affichées pour ce mode de paiment. ErrorPHPNeedModule=Erreur, votre PHP doit avoir le module %s installé pour utiliser cette fonctionnalité. ErrorOpenIDSetupNotComplete=Vous avez configuré Dolibarr pour accepter l'authentication OpenID, mais l'URL du service OpenID n'est pas défini dans la constante %s ErrorWarehouseMustDiffers=Les entrepôts source et destination doivent être différents From 34948ef2d6fc3fed5de8e3e644a5754402db2da3 Mon Sep 17 00:00:00 2001 From: Alexis Algoud Date: Wed, 23 Apr 2014 14:53:23 +0200 Subject: [PATCH 03/10] Add somes dol_escape_htmltag on product cards inputs --- htdocs/product/fiche.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/htdocs/product/fiche.php b/htdocs/product/fiche.php index 1ab03bb6a9b..1ec4855155e 100644 --- a/htdocs/product/fiche.php +++ b/htdocs/product/fiche.php @@ -881,10 +881,10 @@ else print ''; // Ref - print ''; + print ''; // Label - print ''; + print ''; // Status print '
'.$langs->trans("Ref").'
'.$langs->trans("Ref").'
'.$langs->trans("Label").'
'.$langs->trans("Label").'
'.$langs->trans("Status").' ('.$langs->trans("Sell").')'; From 889ed4a49ca568d58822652b8adc0c9285e70569 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Thu, 24 Apr 2014 01:26:28 +0200 Subject: [PATCH 04/10] Fix: div was opened and not close or the oposite. --- htdocs/core/class/html.formother.class.php | 4 ++-- htdocs/imports/import.php | 4 ++-- htdocs/main.inc.php | 19 ++++++++----------- 3 files changed, 12 insertions(+), 15 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index a78c43fca60..f48ec9e6539 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -1042,7 +1042,7 @@ class FormOther $emptybox->showBox(array(),array()); } print "\n"; - print "\n"; + print "\n"; print '
'; @@ -1073,7 +1073,7 @@ class FormOther $emptybox->showBox(array(),array()); } print "
\n"; - print "\n"; + print "\n"; print '
'; print "\n"; diff --git a/htdocs/imports/import.php b/htdocs/imports/import.php index c6ada78322a..8385982fe70 100644 --- a/htdocs/imports/import.php +++ b/htdocs/imports/import.php @@ -482,7 +482,7 @@ if ($step == 3 && $datatoimport) if ($action == 'delete') { print $form->formconfirm($_SERVER["PHP_SELF"].'?urlfile='.urlencode(GETPOST('urlfile')).'&step=3'.$param, $langs->trans('DeleteFile'), $langs->trans('ConfirmDeleteFile'), 'confirm_deletefile', '', 0, 1); - + } print ''; @@ -824,7 +824,7 @@ if ($step == 4 && $datatoimport) } print "\n"; - print "\n"; + print "\n"; print ''; // Date start From bd8cdd337a5f896623e4a85936d11bb5a665be74 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 26 Apr 2014 22:17:11 +0200 Subject: [PATCH 09/10] Fix: Option MAIN_INVERT_SENDER_RECIPIENT broken with typhon template. --- ChangeLog | 1 + htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php | 6 ++++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5d1af46d54f..455ba63c7ee 100644 --- a/ChangeLog +++ b/ChangeLog @@ -6,6 +6,7 @@ English Dolibarr ChangeLog Fix: Error on field accountancy code for export profile of invoices. Fix: [ bug #1351 ] VIES verification link broken. Fix: [ bug #1352 ] Removing a shipping does not remove the delivery. +Fix: Option MAIN_INVERT_SENDER_RECIPIENT broken with typhon template. ***** ChangeLog for 3.5.2 compared to 3.5.1 ***** diff --git a/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php b/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php index b9d61ec1049..295139e4619 100644 --- a/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php +++ b/htdocs/core/modules/livraison/pdf/pdf_typhon.modules.php @@ -780,9 +780,11 @@ class pdf_typhon extends ModelePDFDeliveryOrder // Client destinataire $posy=42; + $posx=102; + if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche; $pdf->SetTextColor(0,0,0); $pdf->SetFont('','', $default_font_size - 2); - $pdf->SetXY(102,$posy-5); + $pdf->SetXY($posx,$posy-5); $pdf->MultiCell(80,5, $outputlangs->transnoentities("DeliveryAddress").":", 0, 'L'); // If SHIPPING contact defined on order, we use it @@ -814,7 +816,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder if ($this->page_largeur < 210) $widthrecbox=84; // To work with US executive format $posy=42; $posx=$this->page_largeur-$this->marge_droite-$widthrecbox; - //if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche; + if (! empty($conf->global->MAIN_INVERT_SENDER_RECIPIENT)) $posx=$this->marge_gauche; // Show recipient frame $pdf->SetTextColor(0,0,0); From 4fa472518e83f5202f0ee2e2fe107e444adc236b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 26 Apr 2014 22:23:46 +0200 Subject: [PATCH 10/10] Fix: doxygen --- htdocs/core/lib/functions2.lib.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index a36b86cef70..e7eb9ccf0b0 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -1537,6 +1537,7 @@ function dolGetElementUrl($objectid,$objecttype,$withpicto=0,$option='') /** * Clean corrupted tree (orphelins linked to a not existing parent), record linked to themself and child-parent loop * + * @param DoliDB $db Database handler * @param string $tabletocleantree Table to clean * @param string $fieldfkparent Field name that contains id of parent * @return int Nb of records fixed/deleted
'; diff --git a/htdocs/main.inc.php b/htdocs/main.inc.php index 54fb4f781b7..98adfca23e0 100644 --- a/htdocs/main.inc.php +++ b/htdocs/main.inc.php @@ -1506,7 +1506,7 @@ function top_menu($head, $title='', $target='', $disablejs=0, $disablehead=0, $a print '
'; print "\n\n"; - if (empty($conf->dol_hide_leftmenu) && (empty($conf->use_javascript_ajax) || ! empty($conf->dol_use_jmobile) || empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT))) print '
'; + if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
'; } @@ -1537,7 +1537,7 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me $hookmanager->initHooks(array('searchform','leftblock')); if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print "\n".'
'."\n"; - else print '
'; + else print '
'; print "\n"; @@ -1715,7 +1715,7 @@ function left_menu($menu_array_before, $helppagename='', $moresearchform='', $me print $leftblock; if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
'."\n"; - else print '
'; // End div id="id-left" + else print '
'; // End div id="id-left" } print "\n"; @@ -1736,10 +1736,7 @@ function main_area($title='') { global $conf, $langs; - if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) - { - print '
'."\n"; - } + if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
'."\n"; if (empty($conf->dol_hide_leftmenu)) print '
'; print "\n"; @@ -1864,22 +1861,22 @@ if (! function_exists("llxFooter")) } print "\n\n"; - print '
'."\n"; + print '
'."\n"; if (! empty($conf->dol_use_jmobile)) print '
'; // end data-role="page" if (empty($conf->dol_use_jmobile) && ! empty($conf->use_javascript_ajax) && ! empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print '
'."\n"; - if (empty($conf->dol_hide_leftmenu)) print '
'; // End div id-right + if (empty($conf->dol_hide_leftmenu)) print '
'; // End div id-right print "\n"; if ($comment) print ''."\n"; printCommonFooter($zone); - if (empty($conf->dol_hide_leftmenu)) print ''; // End div container + if (empty($conf->dol_hide_leftmenu) && empty($conf->dol_use_jmobile) && empty($conf->global->MAIN_MENU_USE_JQUERY_LAYOUT)) print ' '."\n"; // End div container print "\n"; print "\n"; } } -?> +?> \ No newline at end of file From c54d9d9171b6c06ae7f7a6b7c27d845ed5683d1b Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 26 Apr 2014 16:27:06 +0200 Subject: [PATCH 05/10] Fix: [ bug #1351 ] VIES verification link broken --- ChangeLog | 1 + htdocs/langs/ca_ES/companies.lang | 1 - htdocs/langs/es_ES/companies.lang | 1 - htdocs/langs/pt_PT/companies.lang | 1 - 4 files changed, 1 insertion(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8a437d574fb..41bfa83f1bd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ English Dolibarr ChangeLog ***** ChangeLog for 3.5.3 compared to 3.5.2 ***** Fix: Error on field accountancy code for export profile of invoices. +Fix: [ bug #1351 ] VIES verification link broken. ***** ChangeLog for 3.5.2 compared to 3.5.1 ***** Fix: Can't add user for a task. diff --git a/htdocs/langs/ca_ES/companies.lang b/htdocs/langs/ca_ES/companies.lang index 10ef9fd4665..f7a33041cfe 100644 --- a/htdocs/langs/ca_ES/companies.lang +++ b/htdocs/langs/ca_ES/companies.lang @@ -312,7 +312,6 @@ EditDeliveryAddress=Modificar adreça d'enviament ThisUserIsNot=Aquest usuari no és ni un client potencial, ni un client, ni un proveïdor VATIntraCheck=Verificar VATIntraCheckDesc=El link %s permet consultar al servei europeu de control de números d'IVA intracomunitari. Es requereix accés a internet per a que el servei funcioni -VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/lang.do?fromWhichPage=vieshome&selectedLanguage=ES VATIntraCheckableOnEUSite=Verificar a la web de la Comissió Europea VATIntraManualCheck=Podeu també fer una verificació manual a la web europea %s ErrorVATCheckMS_UNAVAILABLE=Comprovació impossible. El servei de comprovació no és prestat pel país membre (%s). diff --git a/htdocs/langs/es_ES/companies.lang b/htdocs/langs/es_ES/companies.lang index 9768349fc84..f7e2f1ea9ab 100644 --- a/htdocs/langs/es_ES/companies.lang +++ b/htdocs/langs/es_ES/companies.lang @@ -311,7 +311,6 @@ EditDeliveryAddress=Modificar dirección de envío ThisUserIsNot=Este usuario no es ni un cliente potencial, ni un cliente, ni un proveedor VATIntraCheck=Verificar VATIntraCheckDesc=El link %s permite consultar al servicio europeo de control de números de IVA intracomunitario. Se requiere acceso a internet para que el servicio funcione -VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/lang.do?fromWhichPage=vieshome&selectedLanguage=ES VATIntraCheckableOnEUSite=Verificar en la web de la Comisión Europea VATIntraManualCheck=Puede también realizar una verificación manual en la web europea %s ErrorVATCheckMS_UNAVAILABLE=Comprobación imposible. El servicio de comprobación no es prestado por el país país miembro (%s). diff --git a/htdocs/langs/pt_PT/companies.lang b/htdocs/langs/pt_PT/companies.lang index 7ee046dd57b..abbc9bd8de6 100644 --- a/htdocs/langs/pt_PT/companies.lang +++ b/htdocs/langs/pt_PT/companies.lang @@ -312,7 +312,6 @@ EditDeliveryAddress=Modificar Direcção de Envío ThisUserIsNot=Este utilizador nem é um cliente potencial, nem um cliente, nem um fornecedor VATIntraCheck=Verificar VATIntraCheckDesc=o link %s permite consultar à serviço europeu de control de números de IVA intracomunitario. Requer acesso á internet para que o serviço funcione -VATIntraCheckURL=http://ec.europa.eu/taxation_customs/vies/lang.do?fromWhichPage=vieshome&selectedLanguage=é VATIntraCheckableOnEUSite=Verificar na web da Comissão Europeia VATIntraManualCheck=Pode também realizar uma verificação manual na web europea %s ErrorVATCheckMS_UNAVAILABLE=Verificação Impossivel. O serviço de verificação não é prestado pelo país membro (%s). From 696830464122891b28d04681b8b8ae8bc8e74365 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 26 Apr 2014 17:27:59 +0200 Subject: [PATCH 06/10] Fix: [ bug #1352 ] Removing a shipping does not remove the delivery. --- ChangeLog | 2 + htdocs/core/class/commonobject.class.php | 9 +-- htdocs/expedition/class/expedition.class.php | 75 ++++++++++++-------- htdocs/expedition/fiche.php | 7 +- htdocs/langs/en_US/errors.lang | 1 + 5 files changed, 58 insertions(+), 36 deletions(-) diff --git a/ChangeLog b/ChangeLog index 41bfa83f1bd..5d1af46d54f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -5,6 +5,8 @@ English Dolibarr ChangeLog ***** ChangeLog for 3.5.3 compared to 3.5.2 ***** Fix: Error on field accountancy code for export profile of invoices. Fix: [ bug #1351 ] VIES verification link broken. +Fix: [ bug #1352 ] Removing a shipping does not remove the delivery. + ***** ChangeLog for 3.5.2 compared to 3.5.1 ***** Fix: Can't add user for a task. diff --git a/htdocs/core/class/commonobject.class.php b/htdocs/core/class/commonobject.class.php index dd3efeeeb9a..49dd62acfd6 100644 --- a/htdocs/core/class/commonobject.class.php +++ b/htdocs/core/class/commonobject.class.php @@ -47,8 +47,8 @@ abstract class CommonObject public $array_options=array(); - public $linkedObjectsIds; - public $linkedObjects; + public $linkedObjectsIds; // Loaded by ->fetchObjectLinked + public $linkedObjects; // Loaded by ->fetchObjectLinked // No constructor as it is an abstract class @@ -1691,7 +1691,7 @@ abstract class CommonObject * @param string $sourcetype Object source type * @param int $targetid Object target id * @param string $targettype Object target type - * @param string $clause OR, AND clause + * @param string $clause 'OR' or 'AND' clause used when both source id and target id are provided * @return void */ function fetchObjectLinked($sourceid='',$sourcetype='',$targetid='',$targettype='',$clause='OR') @@ -2359,7 +2359,8 @@ abstract class CommonObject /** - * Function to check if an object is used by others + * Function to check if an object is used by others. + * Check is done into this->childtables. There is no check into llx_element_element. * * @param int $id Id of object * @return int <0 if KO, 0 if not used, >0 if already used diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index 136063d4552..ba956ccdef4 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -785,9 +785,10 @@ class Expedition extends CommonObject } /** - * Delete shipment + * Delete shipment. + * Warning, do not delete a shipment if a delivery is linked to (with table llx_element_element) * - * @return int >0 if OK otherwise if KO + * @return int >0 if OK, 0 if deletion done but failed to delete files, <0 if KO */ function delete() { @@ -796,6 +797,14 @@ class Expedition extends CommonObject $error=0; + // Add a protection to refuse deleting if shipment has at least one delivery + $this->fetchObjectLinked($this->id, 'shipping', 0, 'delivery'); // Get deliveries linked to this shipment + if (count($this->linkedObjectsIds) > 0) + { + $this->error='ErrorThereIsSomeDeliveries'; + return -1; + } + $this->db->begin(); // Stock control @@ -840,7 +849,7 @@ class Expedition extends CommonObject } } - if(! $error) + if (! $error) { $sql = "DELETE FROM ".MAIN_DB_PREFIX."expeditiondet"; $sql.= " WHERE fk_expedition = ".$this->id; @@ -858,31 +867,6 @@ class Expedition extends CommonObject if ($this->db->query($sql)) { - $this->db->commit(); - - // On efface le repertoire de pdf provisoire - $ref = dol_sanitizeFileName($this->ref); - if (! empty($conf->expedition->dir_output)) - { - $dir = $conf->expedition->dir_output . '/sending/' . $ref ; - $file = $dir . '/' . $ref . '.pdf'; - if (file_exists($file)) - { - if (! dol_delete_file($file)) - { - return 0; - } - } - if (file_exists($dir)) - { - if (!dol_delete_dir($dir)) - { - $this->error=$langs->trans("ErrorCanNotDeleteDir",$dir); - return 0; - } - } - } - // Call triggers include_once DOL_DOCUMENT_ROOT.'/core/class/interfaces.class.php'; $interface=new Interfaces($this->db); @@ -890,7 +874,40 @@ class Expedition extends CommonObject if ($result < 0) { $error++; $this->errors=$interface->errors; } // End call triggers - return 1; + if (! $error) + { + $this->db->commit(); + + // We delete PDFs + $ref = dol_sanitizeFileName($this->ref); + if (! empty($conf->expedition->dir_output)) + { + $dir = $conf->expedition->dir_output . '/sending/' . $ref ; + $file = $dir . '/' . $ref . '.pdf'; + if (file_exists($file)) + { + if (! dol_delete_file($file)) + { + return 0; + } + } + if (file_exists($dir)) + { + if (!dol_delete_dir($dir)) + { + $this->error=$langs->trans("ErrorCanNotDeleteDir",$dir); + return 0; + } + } + } + + return 1; + } + else + { + $this->db->rollback(); + return -1; + } } else { diff --git a/htdocs/expedition/fiche.php b/htdocs/expedition/fiche.php index c77753c0948..6d566337e10 100644 --- a/htdocs/expedition/fiche.php +++ b/htdocs/expedition/fiche.php @@ -183,7 +183,7 @@ if ($action == 'add') /* * Build a receiving receipt -*/ + */ else if ($action == 'create_delivery' && $conf->livraison_bon->enabled && $user->rights->expedition->livraison->creer) { $result = $object->create_delivery($user); @@ -235,8 +235,9 @@ else if ($action == 'confirm_delete' && $confirm == 'yes' && $user->rights->expe exit; } else - { - $mesg = $object->error; + { + $langs->load("errors"); + setEventMessage($langs->trans($object->error),'errors'); } } diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang index 3ebd9720118..4e020ab3ae0 100644 --- a/htdocs/langs/en_US/errors.lang +++ b/htdocs/langs/en_US/errors.lang @@ -128,6 +128,7 @@ ErrorPaymentModeDefinedToWithoutSetup=A payment mode was set to type %s but setu ErrorPHPNeedModule=Error, your PHP must have module %s installed to use this feature. ErrorOpenIDSetupNotComplete=You setup Dolibarr config file to allow OpenID authentication, but URL of OpenID service is not defined into constant %s ErrorWarehouseMustDiffers=Source and target warehouses must differs +ErrorThereIsSomeDeliveries=Error, there is some deliveries linked to this shipment. Deletion refused. # Warnings WarningMandatorySetupNotComplete=Mandatory setup parameters are not yet defined From 4ecfa1d6e043efb4bd832e1a94b796dc3ea50fea Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 26 Apr 2014 21:40:57 +0200 Subject: [PATCH 07/10] Clean corrupted data for categories Conflicts: htdocs/install/mysql/migration/repair.sql --- htdocs/install/mysql/migration/repair.sql | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/htdocs/install/mysql/migration/repair.sql b/htdocs/install/mysql/migration/repair.sql index 0495171a9d0..366c06741b1 100644 --- a/htdocs/install/mysql/migration/repair.sql +++ b/htdocs/install/mysql/migration/repair.sql @@ -55,6 +55,18 @@ delete from llx_product_extrafields where fk_object not in (select rowid from ll --delete from llx_societe_commerciaux where fk_soc not in (select rowid from llx_societe); +-- Fix: delete category child with no category parent. +drop table tmp_categorie; +create table tmp_categorie as select * from llx_categorie; +-- select * from llx_categorie where fk_parent not in (select rowid from tmp_categorie) and fk_parent is not null and fk_parent <> 0; +delete from llx_categorie where fk_parent not in (select rowid from tmp_categorie) and fk_parent is not null and fk_parent <> 0; +drop table tmp_categorie; +-- Fix: delete orphelin category. +delete from llx_categorie_product where fk_categorie not in (select rowid from llx_categorie where type = 0); +delete from llx_categorie_societe where fk_categorie not in (select rowid from llx_categorie where type in (1, 2)); +delete from llx_categorie_member where fk_categorie not in (select rowid from llx_categorie where type = 3); + + -- Fix: delete orphelin deliveries. Note: deliveries are linked to shipment by llx_element_element only. No other links. delete from llx_livraisondet where fk_livraison not in (select fk_target from llx_element_element where targettype = 'delivery') AND fk_livraison not in (select fk_source from llx_element_element where sourcetype = 'delivery'); delete from llx_livraison where rowid not in (select fk_target from llx_element_element where targettype = 'delivery') AND rowid not in (select fk_source from llx_element_element where sourcetype = 'delivery'); From 537ada96a8680df7d06382cd21d79d993a536428 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sat, 26 Apr 2014 21:47:15 +0200 Subject: [PATCH 08/10] Fix: [ bug #1354 ] Tasks disapear in same sub-task Conflicts: htdocs/install/mysql/migration/repair.sql htdocs/projet/class/project.class.php --- htdocs/core/class/html.formother.class.php | 47 +++++--- htdocs/core/lib/functions2.lib.php | 122 +++++++++++++++++++++ htdocs/install/mysql/migration/repair.sql | 3 + htdocs/projet/class/project.class.php | 60 ---------- htdocs/projet/tasks.php | 12 +- htdocs/projet/tasks/task.php | 2 +- 6 files changed, 166 insertions(+), 80 deletions(-) diff --git a/htdocs/core/class/html.formother.class.php b/htdocs/core/class/html.formother.class.php index f48ec9e6539..472a1c19668 100644 --- a/htdocs/core/class/html.formother.class.php +++ b/htdocs/core/class/html.formother.class.php @@ -424,16 +424,17 @@ class FormOther /** * Return list of project and tasks * - * @param int $selectedtask Pre-selected task - * @param int $projectid Project id - * @param string $htmlname Name of html select - * @param int $modeproject 1 to restrict on projects owned by user - * @param int $modetask 1 to restrict on tasks associated to user - * @param int $mode 0=Return list of tasks and their projects, 1=Return projects and tasks if exists - * @param int $useempty 0=Allow empty values + * @param int $selectedtask Pre-selected task + * @param int $projectid Project id + * @param string $htmlname Name of html select + * @param int $modeproject 1 to restrict on projects owned by user + * @param int $modetask 1 to restrict on tasks associated to user + * @param int $mode 0=Return list of tasks and their projects, 1=Return projects and tasks if exists + * @param int $useempty 0=Allow empty values + * @param int $disablechildoftaskid 1=Disable task that are child of the provided task id * @return void */ - function selectProjectTasks($selectedtask='', $projectid=0, $htmlname='task_parent', $modeproject=0, $modetask=0, $mode=0, $useempty=0) + function selectProjectTasks($selectedtask='', $projectid=0, $htmlname='task_parent', $modeproject=0, $modetask=0, $mode=0, $useempty=0, $disablechildoftaskid=0) { global $user, $langs; @@ -448,7 +449,7 @@ class FormOther if ($useempty) print ''; $j=0; $level=0; - $this->_pLineSelect($j, 0, $tasksarray, $level, $selectedtask, $projectid); + $this->_pLineSelect($j, 0, $tasksarray, $level, $selectedtask, $projectid, $disablechildoftaskid); print ''; } else @@ -458,17 +459,18 @@ class FormOther } /** - * Write all lines of a project (if parent = 0) + * Write lines of a project (all lines of a project if parent = 0) * * @param int &$inc Cursor counter - * @param int $parent Id parent - * @param Object $lines Line object + * @param int $parent Id of parent task we want to see + * @param array $lines Array of task lines * @param int $level Level * @param int $selectedtask Id selected task * @param int $selectedproject Id selected project + * @param int $disablechildoftaskid 1=Disable task that are child of the provided task id * @return void */ - private function _pLineSelect(&$inc, $parent, $lines, $level=0, $selectedtask=0, $selectedproject=0) + private function _pLineSelect(&$inc, $parent, $lines, $level=0, $selectedtask=0, $selectedproject=0, $disablechildoftaskid=0) { global $langs, $user, $conf; @@ -481,12 +483,12 @@ class FormOther { $var = !$var; - //var_dump($selectedtask."--".$selectedtask."--".$lines[$i]->fk_project."_".$lines[$i]->id); + //var_dump($selectedproject."--".$selectedtask."--".$lines[$i]->fk_project."_".$lines[$i]->id); // Break on a new project - if ($parent == 0) + if ($parent == 0) // We are on a task at first level { - if ($lines[$i]->fk_project != $lastprojectid) + if ($lines[$i]->fk_project != $lastprojectid) // Break found on project { if ($i > 0 && $conf->browser->firefox) print ''; print '
'.$langs->trans("ChildOfTask").''; - print $formother->selectProjectTasks($object->fk_task_parent,$projectstatic->id, 'task_parent', $user->admin?0:1, 0); + print $formother->selectProjectTasks($object->fk_task_parent, $projectstatic->id, 'task_parent', ($user->admin?0:1), 0, 0, 0, $object->id); print '