From a88ea408234615d9f9ba32988fc7f3d375e9b873 Mon Sep 17 00:00:00 2001
From: Laurent Destailleur <eldy@users.sourceforge.net>
Date: Sat, 10 Oct 2009 15:32:28 +0000
Subject: [PATCH] A better error report for paypal payments

---
 htdocs/langs/en_US/errors.lang      |  4 +++-
 htdocs/langs/fr_FR/errors.lang      |  4 +++-
 htdocs/lib/functions.lib.php        | 12 ++++++++++++
 htdocs/public/paybox/newpayment.php | 18 +++++++++++++++---
 4 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/htdocs/langs/en_US/errors.lang b/htdocs/langs/en_US/errors.lang
index 514a4e2f94b..3966cfae4cb 100644
--- a/htdocs/langs/en_US/errors.lang
+++ b/htdocs/langs/en_US/errors.lang
@@ -3,6 +3,7 @@ CHARSET=UTF-8
 MenuManager=Menu manager
 ErrorLoginAlreadyExists=Login %s already exists.
 ErrorGroupAlreadyExists=Group %s already exists.
+ErrorRecordNotFound=Record not found.
 ErrorFailToDeleteFile=Failed to remove file '<b>%s</b>'.
 ErrorFailToCreateFile=Failed to create file '<b>%s</b>'.
 ErrorFailToRenameDir=Failed to rename directory '<b>%s</b>' into '<b>%s</b>'.
@@ -49,4 +50,5 @@ ErrorPleaseTypeBankTransactionReportName=Please type bank receipt name where tra
 ErrorRecordHasChildren=Failed to delete records since it has some childs.
 WarningConfFileMustBeReadOnly=Warning, your config file (<b>htdocs/conf/conf.php</b>) can be overwritten by the web server. This is a serious security hole. Modify permissions on file to be in read only mode for operating system user used by Web server. If you use Windows and FAT format for your disk, you must know that this file system does not allow to add permissions on file, so can't be completely safe.
 ErrorModuleRequireJavascript=Javascript must not be disabled to have this feature working. To enable/disable Javascript, go to menu Home->Setup->Display.
-ErrorPasswordsMustMatch=Both typed passwords must match each other
\ No newline at end of file
+ErrorPasswordsMustMatch=Both typed passwords must match each other
+ErrorContactEMail=A technical error occured. Pleas, contact administrator to folowwing email <b>%</b> en provide the error code <b>%s</b> in your message, or even better by adding a screen copy of this page.
\ No newline at end of file
diff --git a/htdocs/langs/fr_FR/errors.lang b/htdocs/langs/fr_FR/errors.lang
index aad9c37e9fe..1ae1c3d378b 100644
--- a/htdocs/langs/fr_FR/errors.lang
+++ b/htdocs/langs/fr_FR/errors.lang
@@ -3,6 +3,7 @@ CHARSET=UTF-8
 MenuManager=Gestionnaire de menu
 ErrorLoginAlreadyExists=Le login %s existe déjà.
 ErrorGroupAlreadyExists=Le groupe %s existe déjà.
+ErrorRecordNotFound=Enregistrement non trouvé.
 ErrorDuplicateTrigger=Un fichier trigger de classe '<b>%s</b>' est present plusieurs fois. Supprimer le doublon du répertoire '<b>%s</b>'.
 ErrorFailToCreateFile=Echec de la création du fichier '<b>%s</b>'.
 ErrorFailToDeleteFile=Echec de l'effacement du fichier '<b>%s</b>'.
@@ -50,4 +51,5 @@ ErrorPleaseTypeBankTransactionReportName=Veuiller saisir le nom de relevé banca
 ErrorRecordHasChildren=Impossible de supprimer l'enregistrement car il possède des fils.
 WarningConfFileMustBeReadOnly=Attention, votre fichier de configuration (<b>htdocs/conf/conf.php</b>) est accessible en écriture au serveur Web. Ceci représente une faille sérieuse de sécurité. Modifier les permissions pour qu'il soit en lecture seule pour le compte sous lequel tourne le serveur Web.<br>Si vous êtes sous Windows sur un disque dur utilisant un formatage FAT, sachez que ce système de fichier ne permet pas de protéger des fichiers et n'offre donc aucune solution pour réduire les risques de manipulation de ce fichier.
 ErrorModuleRequireJavascript=Le javascript ne doit pas etre désactivé pour que cette fonctionnalité soit utilisable. Pour activer/désactiver l'utilisation de javascript, aller dans le menu Accueil->Configuration->Affichage.
-ErrorPasswordsMustMatch=Les 2 mots de passe saisis doivent correspondre
\ No newline at end of file
+ErrorPasswordsMustMatch=Les 2 mots de passe saisis doivent correspondre
+ErrorContactEMail=Une erreur technique est apparue. Merci de contacter l'administrateur à l'email suivant <b>%s</b> en lui indiquant le code erreur <b>%s</b> dans votre message ou mieux en fournissant une copie d'écran de cette page.
diff --git a/htdocs/lib/functions.lib.php b/htdocs/lib/functions.lib.php
index 634e25a85d0..287d2162f5b 100644
--- a/htdocs/lib/functions.lib.php
+++ b/htdocs/lib/functions.lib.php
@@ -1818,6 +1818,18 @@ function dol_print_error($db='',$error='')
 	dol_syslog("Error ".$syslog, LOG_ERR);
 }
 
+/**
+ * Show email to contact if technical error
+ */
+function dol_print_error_email()
+{
+	global $langs,$conf;
+
+	$langs->load("errors");
+	print '<br><div class="error">'.$langs->trans("ErrorContactEMail",$conf->global->MAIN_INFO_SOCIETE_MAIL,'ERRORNEWPAYMENT'.dol_print_date(mktime(),'%Y%m%d%')).'</div>';
+}
+
+
 
 /**
  *	\brief  Deplacer les fichiers telecharges, apres quelques controles divers
diff --git a/htdocs/public/paybox/newpayment.php b/htdocs/public/paybox/newpayment.php
index c447ad7eb3d..2269b9c5fb4 100644
--- a/htdocs/public/paybox/newpayment.php
+++ b/htdocs/public/paybox/newpayment.php
@@ -190,6 +190,7 @@ print '<table with="100%">';
 print '<tr class="liste_total"><td align="left" colspan="2">'.$langs->trans("ThisIsInformationOnPayment").' :</td></tr>'."\n";
 
 $found=false;
+$error=0;
 $var=false;
 
 
@@ -249,6 +250,7 @@ if ($_REQUEST["amount"] == 'order')
 	if ($result < 0)
 	{
 		$mesg=$order->error;
+		$error++;
 	}
 	else
 	{
@@ -322,6 +324,7 @@ if ($_REQUEST["amount"] == 'invoice')
 	if ($result < 0)
 	{
 		$mesg=$invoice->error;
+		$error++;
 	}
 	else
 	{
@@ -394,6 +397,7 @@ if ($_REQUEST["amount"] == 'contractline')
 	if ($result < 0)
 	{
 		$mesg=$contractline->error;
+		$error++;
 	}
 	else
 	{
@@ -408,11 +412,13 @@ if ($_REQUEST["amount"] == 'contractline')
 			else
 			{
 				$mesg=$contract->error;
+				$error++;
 			}
 		}
 		else
 		{
 			$mesg='ErrorRecordNotFound';
+			$error++;
 		}
 	}
 
@@ -557,6 +563,7 @@ if ($_REQUEST["amount"] == 'membersubscription')
 	if ($result < 0)
 	{
 		$mesg=$member->error;
+		$error++;
 	}
 	else
 	{
@@ -624,13 +631,18 @@ if (! $found && ! $mesg) $mesg=$langs->trans("ErrorBadParameters");
 
 if ($mesg) print '<tr><td align="center" colspan="2"><br><div class="warning">'.$mesg.'</div></td></tr>';
 
-if ($found)
+print '</table>';
+
+if ($found && ! $error)	// We are in a management option and no error
 {
-	print '<tr><td align="center" colspan="2"><br><input class="button" type="submit" name="dopayment" value="'.$langs->trans("PayBoxDoPayment").'"></td></tr>';
+	print '<br><input class="button" type="submit" name="dopayment" value="'.$langs->trans("PayBoxDoPayment").'">';
 	//print '<tr><td align="center" colspan="2">'.$langs->trans("YouWillBeRedirectedOnPayBox").'...</td></tr>';
 }
+else
+{
+	dol_print_error_email();
+}
 
-print '</table>';
 print '</td></tr>';
 
 print '</table>';
-- 
GitLab