diff -BNaur --exclude=CVS --exclude='*.patch' --exclude='.#*' --exclude='*~' --exclude='*.rej' --exclude='*.orig' --exclude='*.bak' --exclude=conf.php --exclude=documents --exclude='*.bkp' htdocs.bkp/fichinter/fiche.php htdocs/fichinter/fiche.php --- htdocs.bkp/fichinter/fiche.php 2011-01-17 02:42:31.000000000 +0100 +++ htdocs/fichinter/fiche.php 2011-04-27 21:42:34.000000000 +0200 @@ -58,6 +58,8 @@ $fichinterid=$fichinter->id; } +if (isset($_GET["msg"])) { $mesg=$_GET["msg"]; } + // Security check if ($user->societe_id) $socid=$user->societe_id; $result = restrictedArea($user, 'ficheinter', $fichinterid, 'fichinter'); @@ -423,6 +425,163 @@ } + + + +/* + * Send mail (from comm/propal/fiche.php ) + */ +if ($_POST['action'] == 'send' && ! $_POST['cancel']) +{ + $langs->load('mails'); + + $fichinter = new Fichinter($db); + if ( $fichinter->fetch($_POST['fichinter_id']) ) + { + $ficheinterref = dol_sanitizeFileName($fichinter->ref); + $file = $conf->ficheinter->dir_output . '/' . $ficheinterref . '/' . $ficheinterref . '.pdf'; + + if (is_readable($file)) + { + $fichinter->fetch_thirdparty(); + + if ($_POST['sendto']) + { + // Le destinataire a ete fourni via le champ libre + $sendto = $_POST['sendto']; + $sendtoid = 0; + } + elseif ($_POST['receiver']) + { + // Le destinataire a ete fourni via la liste deroulante + if ($_POST['receiver'] < 0) // Id du tiers + { + $sendto = $fichinter->client->email; + $sendtoid = 0; + } + else // Id du contact + { + $sendto = $fichinter->client->contact_get_email($_POST['receiver']); + $sendtoid = $_POST['receiver']; + } + } + + if (strlen($sendto)) + { + $langs->load("commercial"); + + $from = $_POST['fromname'] . ' <' . $_POST['frommail'] .'>'; + $replyto = $_POST['replytoname']. ' <' . $_POST['replytomail'].'>'; + $message = $_POST['message']; + $sendtocc = $_POST['sendtocc']; + $deliveryreceipt = $_POST['deliveryreceipt']; + + if ($_POST['action'] == 'send') + { + if (strlen($_POST['subject'])) $subject = $_POST['subject']; + else $subject = $langs->transnoentities('Intervention').' '.$fichinter->ref; + $actiontypecode='AC_FICH'; + $actionmsg = $langs->transnoentities('MailSentBy').' '.$from.' '.$langs->transnoentities('To').' '.$sendto.".\n"; + if ($message) + { + $actionmsg.=$langs->transnoentities('MailTopic').": ".$subject."\n"; + $actionmsg.=$langs->transnoentities('TextUsedInTheMessageBody').":\n"; + $actionmsg.=$message; + } + $actionmsg2=$langs->transnoentities('Action'.$actiontypecode); + } + + // Create form object + include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'); + $formmail = new FormMail($db); + + $attachedfiles=$formmail->get_attached_files(); + $filepath = $attachedfiles['paths']; + $filename = $attachedfiles['names']; + $mimetype = $attachedfiles['mimes']; + + // Envoi de la propal + require_once(DOL_DOCUMENT_ROOT.'/lib/CMailFile.class.php'); + $mailfile = new CMailFile($subject,$sendto,$from,$message,$filepath,$mimetype,$filename,$sendtocc,'',$deliveryreceipt); + if ($mailfile->error) + { + $mesg='
'.$mailfile->error.'
'; + } + else + { + $result=$mailfile->sendfile(); + if ($result) + { + $mesg='
'.$langs->trans('MailSuccessfulySent',$from,$sendto).'.
'; + + $error=0; + + // Initialisation donnees + $fichinter->sendtoid=$sendtoid; + $fichinter->actiontypecode=$actiontypecode; + $fichinter->actionmsg = $actionmsg; + $fichinter->actionmsg2= $actionmsg2; + $fichinter->rowid=$fichinter->id; + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('FICHINTER_SENTBYMAIL',$fichinter,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + + if ($error) + { + dol_print_error($db); + } + else + { + // Redirect here + // This avoid sending mail twice if going out and then back to page + Header('Location: '.$_SERVER["PHP_SELF"].'?id='.$fichinter->id.'&msg='.urlencode($mesg)); + exit; + } + } + else + { + $langs->load("other"); + $mesg='
'; + if ($mailfile->error) + { + $mesg.=$langs->trans('ErrorFailedToSendMail',$from,$sendto); + $mesg.='
'.$mailfile->error; + } + else + { + $mesg.='No mail sent. Feature is disabled by option MAIN_DISABLE_ALL_MAILS'; + } + $mesg.='
'; + } + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorMailRecipientIsEmpty').' !
'; + dol_syslog('Recipient email is empty'); + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorCantReadFile',$file).'
'; + dol_syslog('Failed to read file: '.$file); + } + } + else + { + $langs->load("other"); + $mesg='
'.$langs->trans('ErrorFailedToReadEntity',$langs->trans("Intervention")).'
'; + dol_syslog('Impossible de lire les donnees de l\'intervention. Le fichier intervention n\'a peut-etre pas ete genere.'); + } +} + + /* * View */ @@ -876,11 +1035,80 @@ print ''.$langs->trans('Delete').''; } + + + // Send + if ($fichinter->statut == 1 && $user->rights->ficheinter->envoyer) + { + $ficheinterref = dol_sanitizeFileName($fichinter->ref); + $file = $conf->ficheinter->dir_output . '/'.$ficheinterref.'/'.$ficheinterref.'.pdf'; + if (file_exists($file)) + { + print ''.$langs->trans('SendByMail').''; + } + else echo "fichier non existant"; + } + } } print ''; + + /* + * Action presend + * + */ + if ($_GET['action'] == 'presend') + { + $ref = dol_sanitizeFileName($fichinter->ref); + $file = $conf->ficheinter->dir_output . '/' . $ref . '/' . $ref . '.pdf'; + + print '
'; + print_titre($langs->trans('SendInterventionByMail')); + + // Create form object + include_once(DOL_DOCUMENT_ROOT.'/core/class/html.formmail.class.php'); + $formmail = new FormMail($db); + $formmail->fromtype = 'user'; + $formmail->fromid = $user->id; + $formmail->fromname = $user->fullname; + $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; + $formmail->withtoccc=$conf->global->MAIN_EMAIL_USECCC; + $formmail->withtocccsocid=0; + $formmail->withtopic=$langs->trans('SendInterventionRef','__FICHREF__'); + $formmail->withfile=1; + $formmail->withbody=1; + $formmail->withdeliveryreceipt=1; + $formmail->withcancel=1; + + // Tableau des substitutions + $formmail->substit['__FICHREF__']=$fichinter->ref; + // Tableau des parametres complementaires + $formmail->param['action']='send'; + $formmail->param['models']='fichinter_send'; + $formmail->param['fichinter_id']=$fichinter->id; + $formmail->param['returnurl']=DOL_URL_ROOT.'/fichinter/fiche.php?id='.$fichinter->id; + + // Init list of files + if (! empty($_REQUEST["mode"]) && $_REQUEST["mode"]=='init') + { + $formmail->clear_attached_files(); + $formmail->add_attached_files($file,$fichinter->ref.'.pdf','application/pdf'); + } + + $formmail->show_form(); + + print '
'; + } + + + print '
'; /* * Built documents diff -BNaur --exclude=CVS --exclude='*.patch' --exclude='.#*' --exclude='*~' --exclude='*.rej' --exclude='*.orig' --exclude='*.bak' --exclude=conf.php --exclude=documents --exclude='*.bkp' htdocs.bkp/includes/modules/modFicheinter.class.php htdocs/includes/modules/modFicheinter.class.php --- htdocs.bkp/includes/modules/modFicheinter.class.php 2011-01-17 02:43:23.000000000 +0100 +++ htdocs/includes/modules/modFicheinter.class.php 2011-04-27 21:48:09.000000000 +0200 @@ -127,6 +127,13 @@ $this->rights[$r][3] = 0; $this->rights[$r][4] = 'export'; + $r++; + $this->rights[$r][0] = 68; + $this->rights[$r][1] = 'Envoyer les fiches d\'intervention'; + $this->rights[$r][2] = 'd'; + $this->rights[$r][3] = 0; + $this->rights[$r][4] = 'envoyer'; + //Exports //-------- $r=1; diff -BNaur --exclude=CVS --exclude='*.patch' --exclude='.#*' --exclude='*~' --exclude='*.rej' --exclude='*.orig' --exclude='*.bak' --exclude=conf.php --exclude=documents --exclude='*.bkp' htdocs.bkp/langs/fr_FR/interventions.lang htdocs/langs/fr_FR/interventions.lang --- htdocs.bkp/langs/fr_FR/interventions.lang 2010-08-04 01:23:53.000000000 +0200 +++ htdocs/langs/fr_FR/interventions.lang 2011-04-27 19:58:18.000000000 +0200 @@ -45,3 +45,5 @@ ArcticNumRefModelError=Activation impossible PacificNumRefModelDesc1=Renvoie le numéro sous la forme %syymm-nnnn où yy est l'année, mm le mois et nnnn un compteur séquentiel sans rupture et sans remise à 0 PacificNumRefModelError=Une facture commençant par $syymm existe en base et est incompatible avec cette numérotation. Supprimez la ou renommez la pour activer ce module. +SendInterventionByMail=Envoi de la fiche d'intervention par mail +SendInterventionRef=Envoi Intervention %s