From f0a3057221c230a38172ab656fe826123f6cc871 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Sun, 21 Jun 2015 08:07:06 +0200 Subject: [PATCH 1/3] Fix: ER button set_paid & merge with old option setPaid --- htdocs/expensereport/card.php | 215 ++++++++---------- .../class/expensereport.class.php | 45 +--- 2 files changed, 96 insertions(+), 164 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 1a52f0dc194..d5dd3098080 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -666,123 +666,6 @@ if ($action == "confirm_cancel" && GETPOST('confirm')=="yes" && GETPOST('detail_ } } -if ($action == "confirm_paid" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->to_paid) -{ - $object = new ExpenseReport($db); - $object->fetch($id); - - $result = $object->setPaid($user); - - if ($result > 0) - { - // Define output language - if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) - { - $outputlangs = $langs; - $newlang = ''; - if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha'); - if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; - if (! empty($newlang)) { - $outputlangs = new Translate("", $conf); - $outputlangs->setDefaultLang($newlang); - } - $model=$object->modelpdf; - $ret = $object->fetch($id); // Reload to get new records - - $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); - } - } - - if ($result > 0) - { - if (! empty($conf->global->DEPLACEMENT_TO_CLEAN)) - { - // Send mail - - // TO - $destinataire = new User($db); - $destinataire->fetch($object->fk_user_author); - $emailTo = $destinataire->email; - - // FROM - $expediteur = new User($db); - $expediteur->fetch($object->fk_user_paid); - $emailFrom = $expediteur->email; - - // SUBJECT - $subject = "' ERP - Note de frais payée"; - - // CONTENT - $message = "Bonjour {$destinataire->firstname},\n\n"; - $message.= "Votre note de frais \"{$object->ref}\" vient d'être payée.\n"; - $message.= "- Payeur : {$expediteur->firstname} {$expediteur->lastname}\n"; - $message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n"; - $message.= "Bien cordialement,\n' SI"; - - // Génération du pdf avant attachement - $object->setDocModel($user,""); - $resultPDF = expensereport_pdf_create($db,$object,'',"",$langs); - - // PREPARE SEND - $mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message); - - if(!$mailfile->error): - - // SEND - $result=$mailfile->sendfile(); - if ($result): - // Insert écriture dans le compte courant - $idTrip = $id; - $idAccount = 1; - - $object = new ExpenseReport($db); - $object->fetch($idTrip); - - $datePaiement = explode("-",$object->date_paiement); - - $dateop = dol_mktime(12,0,0,$datePaiement[1],$datePaiement[2],$datePaiement[0]); - $operation = $object->code_paiement; - $label = "Règlement ".$object->ref; - $amount = - price2num($object->total_ttc); - $num_chq = ''; - $cat1 = ''; - - $user = new User($db); - $user->fetch($object->fk_user_paid); - - $acct=new Account($db,$idAccount); - $insertid = $acct->addline($dateop, $operation, $label, $amount, $num_chq, $cat1, $user); - - if ($insertid > 0): - $sql = " UPDATE ".MAIN_DB_PREFIX."expensereport as d"; - $sql.= " SET integration_compta = 1, fk_bank_account = $idAccount"; - $sql.= " WHERE rowid = $idTrip"; - $resql=$db->query($sql); - if($result): - Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); - exit; - else: - dol_print_error($db); - endif; - else: - dol_print_error($db,$acct->error); - endif; - endif; - - else: - - $mesg="Impossible d'envoyer l'email."; - - endif; - // END - Send mail - } - } - else - { - setEventMessages($object->error, $object->errors, 'errors'); - } -} - if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 && $user->rights->expensereport->creer) { $object = new ExpenseReport($db); @@ -827,16 +710,96 @@ if ($action == "confirm_brouillonner" && GETPOST('confirm')=="yes" && $id > 0 && } } -if ($action == 'set_paid') +if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid) { - if ($object->set_paid($id) >= 0) + $object = new ExpenseReport($db); + $object->fetch($id); + + $result = $object->set_paid($id, $user) + + if ($result > 0) { - header("Location: ".$_SERVER['PHP_SELF']."?id=".$id); - exit; + // Define output language + if (empty($conf->global->MAIN_DISABLE_PDF_AUTOUPDATE)) + { + $outputlangs = $langs; + $newlang = ''; + if ($conf->global->MAIN_MULTILANGS && empty($newlang) && GETPOST('lang_id')) $newlang = GETPOST('lang_id','alpha'); + if ($conf->global->MAIN_MULTILANGS && empty($newlang)) $newlang = $object->thirdparty->default_lang; + if (! empty($newlang)) { + $outputlangs = new Translate("", $conf); + $outputlangs->setDefaultLang($newlang); + } + $model=$object->modelpdf; + $ret = $object->fetch($id); // Reload to get new records + + $object->generateDocument($model, $outputlangs, $hidedetails, $hidedesc, $hideref); + } + } + + if ($result > 0) + { + if (! empty($conf->global->DEPLACEMENT_TO_CLEAN)) + { + // Send mail + + // TO + $destinataire = new User($db); + $destinataire->fetch($object->fk_user_author); + $emailTo = $destinataire->email; + + // FROM + $expediteur = new User($db); + $expediteur->fetch($object->fk_user_paid); + $emailFrom = $expediteur->email; + + // SUBJECT + $subject = "'ERP - Note de frais payée"; + + // CONTENT + $message = "Bonjour {$destinataire->firstname},\n\n"; + $message.= "Votre note de frais \"{$object->ref}\" vient d'être payée.\n"; + $message.= "- Payeur : {$expediteur->firstname} {$expediteur->lastname}\n"; + $message.= "- Lien : {$dolibarr_main_url_root}/expensereport/card.php?id={$object->id}\n\n"; + $message.= "Bien cordialement,\n' SI"; + + // Generate pdf before attachment + $object->setDocModel($user,""); + $resultPDF = expensereport_pdf_create($db,$object,'',"",$langs); + + // PREPARE SEND + $mailfile = new CMailFile($subject,$emailTo,$emailFrom,$message); + + if(!$mailfile->error): + + // SEND + $result=$mailfile->sendfile(); + if ($result): + + // Retour + if($result): + Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); + exit; + else: + dol_print_error($db); + endif; + else: + dol_print_error($db,$acct->error); + endif; + endif; + + else: + + $mesg="Impossible d'envoyer l'email."; + + endif; + // END - Send mail + } + } + else + { + setEventMessages($object->error, $object->errors, 'errors'); } - else { - setEventMessage($object->error, 'errors'); - } } if ($action == "addline") @@ -2001,9 +1964,9 @@ if ($action != 'create' && $action != 'edit') print '
' . $langs->trans('DoPayment') . '
'; } - if ($object->statut == 1 && round($remaintopay) == 0 && $object->paid == 0 && $user->rights->don->creer) + if (round($remaintopay) == 0 && $object->paid == 0) { - print '
'.$langs->trans("ClassifyPaid")."
"; + print '
'.$langs->trans("ClassifyPaid")."
"; } // Cancel diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 914ff34043d..10b96d7b013 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -1,6 +1,7 @@ * Copyright (C) 2015 Laurent Destailleur + * Copyright (C) 2015 Alexandre Spangaro * * 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 @@ -376,13 +377,16 @@ class ExpenseReport extends CommonObject * Classify the expense report as paid * * @param int $id id of expense report - * @return int <0 if KO, >0 if OK + * @param user $fuser User + * @return int <0 if KO, >0 if OK */ - function set_paid($id) + function set_paid($id, $fuser) { - $sql = "UPDATE ".MAIN_DB_PREFIX."expensereport SET fk_statut = 6"; + $sql = "UPDATE ".MAIN_DB_PREFIX."expensereport"; + $sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id.","; $sql.= " WHERE rowid = $id AND fk_statut = 5"; + dol_syslog(get_class($this)."::set_paid sql=".$sql, LOG_DEBUG); $resql=$this->db->query($sql); if ($resql) { @@ -1018,41 +1022,6 @@ class ExpenseReport extends CommonObject } } - /** - * setPaid - * - * @param User $fuser User - * @return int <0 if KO, >0 if OK - */ - function setPaid($fuser) - { - $now= dol_now(); - - $this->date_paiement = $this->db->idate($now); - if ($this->fk_statut != 6) - { - $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id.","; - $sql.= " date_paiement='".$this->db->idate($this->date_paiement)."'"; - $sql.= ' WHERE rowid = '.$this->id; - - dol_syslog(get_class($this)."::setPaid sql=".$sql, LOG_DEBUG); - if ($this->db->query($sql)) - { - return 1; - } - else - { - $this->error=$this->db->error(); - return -1; - } - } - else - { - dol_syslog(get_class($this)."::set_paid expensereport already with paid status", LOG_WARNING); - } - } - /** * set_unpaid * From 134cea194dc3a3e3ca79a80bb75d94b4cf20afb2 Mon Sep 17 00:00:00 2001 From: aspangaro Date: Mon, 22 Jun 2015 06:53:43 +0200 Subject: [PATCH 2/3] Debug --- htdocs/expensereport/card.php | 24 ++++--------------- .../class/expensereport.class.php | 2 +- 2 files changed, 6 insertions(+), 20 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index d02dea03976..1f8d17d4a4c 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -715,7 +715,7 @@ if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid) $object = new ExpenseReport($db); $object->fetch($id); - $result = $object->set_paid($id, $user) + $result = $object->set_paid($id, $user); if ($result > 0) { @@ -778,15 +778,15 @@ if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid) // Retour if($result): - Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); - exit; + Header("Location: ".$_SERVER["PHP_SELF"]."?id=".$id); + exit; else: - dol_print_error($db); + dol_print_error($db); endif; + else: dol_print_error($db,$acct->error); endif; - endif; else: @@ -1492,20 +1492,6 @@ else print ''.$langs->trans("DATE_SAVE").''; print ''.dol_print_date($object->date_create,'dayhour').''; print ''; - if($object->fk_statut==6) - { - print ''; - print ''.$langs->trans("AUTHORPAIEMENT").''; - print ''; - $userfee=new User($db); - $userfee->fetch($object->fk_user_paid); - print $userfee->getNomUrl(1); - print ''; - print ''; - print ''.$langs->trans("DATE_PAIEMENT").''; - print ''.$object->date_paiement.''; - print ''; - } // User to inform if($object->fk_statut<3) // informed diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index a30889c5bf4..b7eaf65568a 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -383,7 +383,7 @@ class ExpenseReport extends CommonObject function set_paid($id, $fuser) { $sql = "UPDATE ".MAIN_DB_PREFIX."expensereport"; - $sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id.","; + $sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id; $sql.= " WHERE rowid = $id AND fk_statut = 5"; dol_syslog(get_class($this)."::set_paid sql=".$sql, LOG_DEBUG); From 385857380bfeb3c10eb179c00bc0c403085ac87a Mon Sep 17 00:00:00 2001 From: aspangaro Date: Tue, 23 Jun 2015 06:39:55 +0200 Subject: [PATCH 3/3] Remove old field --- htdocs/expensereport/card.php | 4 ++-- .../class/expensereport.class.php | 18 +++--------------- htdocs/expensereport/export_csv.php | 5 ++--- htdocs/expensereport/synchro_compta.php | 4 +--- htdocs/install/mysql/migration/3.7.0-3.8.0.sql | 2 -- .../install/mysql/tables/llx_expensereport.sql | 2 -- 6 files changed, 8 insertions(+), 27 deletions(-) diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index 1f8d17d4a4c..204dd2f47dc 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -750,7 +750,7 @@ if ($action == 'set_paid' && $id > 0 && $user->rights->expensereport->to_paid) // FROM $expediteur = new User($db); - $expediteur->fetch($object->fk_user_paid); + $expediteur->fetch($user->id); $emailFrom = $expediteur->email; // SUBJECT @@ -1271,7 +1271,7 @@ else print ''.$langs->trans("AUTHORPAIEMENT").''; print ''; $userfee=new User($db); - $userfee->fetch($object->fk_user_paid); + $userfee->fetch($user->id); print $userfee->getNomUrl(1); print ''; diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index b7eaf65568a..2fdb937dc99 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -89,8 +89,6 @@ class ExpenseReport extends CommonObject var $fk_user_approve; // Paiement - var $date_paiement; - var $fk_user_paid; var $user_paid_infos; /* @@ -242,7 +240,6 @@ class ExpenseReport extends CommonObject $sql.= " , fk_user_author = ".($user->id > 0 ? "'".$user->id."'":"null"); $sql.= " , fk_user_validator = ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null"); $sql.= " , fk_user_valid = ".($this->fk_user_valid > 0 ? $this->fk_user_valid:"null"); - $sql.= " , fk_user_paid = ".($this->fk_user_paid > 0 ? $this->fk_user_paid:"null"); $sql.= " , fk_statut = ".($this->fk_statut >= 0 ? $this->fk_statut:'0'); $sql.= " , fk_c_paiement = ".($this->fk_c_paiement > 0 ? $this->fk_c_paiement:"null"); $sql.= " , note_public = ".(!empty($this->note_public)?"'".$this->db->escape($this->note_public)."'":"''"); @@ -278,9 +275,9 @@ class ExpenseReport extends CommonObject $sql.= " d.detail_refuse, d.detail_cancel, d.fk_user_refuse, d.fk_user_cancel,"; // ACTIONS $sql.= " d.date_refuse, d.date_cancel,"; // ACTIONS $sql.= " d.total_ht, d.total_ttc, d.total_tva,"; // TOTAUX (int) - $sql.= " d.date_debut, d.date_fin, d.date_create, d.date_valid, d.date_approve, d.date_paiement,"; // DATES (datetime) + $sql.= " d.date_debut, d.date_fin, d.date_create, d.date_valid, d.date_approve,"; // DATES (datetime) $sql.= " d.fk_user_author, d.fk_user_validator, d.fk_statut as status, d.fk_c_paiement,"; - $sql.= " d.fk_user_valid, d.fk_user_approve, d.fk_user_paid,"; + $sql.= " d.fk_user_valid, d.fk_user_approve,"; $sql.= " dp.libelle as libelle_paiement, dp.code as code_paiement"; // INNER JOIN paiement $sql.= " FROM ".MAIN_DB_PREFIX.$this->table_element." as d LEFT JOIN ".MAIN_DB_PREFIX."c_paiement as dp ON d.fk_c_paiement = dp.id"; if ($ref) $sql.= " WHERE d.ref = '".$this->db->escape($ref)."'"; @@ -306,7 +303,6 @@ class ExpenseReport extends CommonObject $this->date_debut = $this->db->jdate($obj->date_debut); $this->date_fin = $this->db->jdate($obj->date_fin); - $this->date_paiement = $this->db->jdate($obj->date_paiement); $this->date_valid = $this->db->jdate($obj->date_valid); $this->date_approve = $this->db->jdate($obj->date_approve); $this->date_create = $this->db->jdate($obj->date_create); @@ -319,7 +315,6 @@ class ExpenseReport extends CommonObject $this->fk_user_refuse = $obj->fk_user_refuse; $this->fk_user_cancel = $obj->fk_user_cancel; $this->fk_user_approve = $obj->fk_user_approve; - $this->fk_user_paid = $obj->fk_user_paid; $user_author = new User($this->db); if ($this->fk_user_author > 0) $user_author->fetch($this->fk_user_author); @@ -342,13 +337,6 @@ class ExpenseReport extends CommonObject $this->user_valid_infos = dolGetFirstLastname($user_valid->firstname, $user_valid->lastname); } - if ($this->fk_statut==6) - { - $user_paid = new User($this->db); - if ($this->fk_user_paid > 0) $user_paid->fetch($this->fk_user_paid); - $this->user_paid_infos = dolGetFirstLastname($user_paid->firstname, $user_paid->lastname); - } - $this->libelle_statut = $obj->libelle_statut; $this->libelle_paiement = $obj->libelle_paiement; $this->code_statut = $obj->code_statut; @@ -383,7 +371,7 @@ class ExpenseReport extends CommonObject function set_paid($id, $fuser) { $sql = "UPDATE ".MAIN_DB_PREFIX."expensereport"; - $sql.= " SET fk_statut = 6, fk_user_paid = ".$fuser->id; + $sql.= " SET fk_statut = 6; $sql.= " WHERE rowid = $id AND fk_statut = 5"; dol_syslog(get_class($this)."::set_paid sql=".$sql, LOG_DEBUG); diff --git a/htdocs/expensereport/export_csv.php b/htdocs/expensereport/export_csv.php index 3a2010ce340..817d651c3e8 100644 --- a/htdocs/expensereport/export_csv.php +++ b/htdocs/expensereport/export_csv.php @@ -126,9 +126,8 @@ if (isset($_POST['action'])) $outputlangs = $langs; $outputlangs->charset_output = 'UTF-8'; - $sql = "SELECT d.rowid, d.ref, d.date_paiement, d.total_ht, d.total_tva, d.total_ttc"; + $sql = "SELECT d.rowid, d.ref, d.total_ht, d.total_tva, d.total_ttc"; $sql.= " FROM ".MAIN_DB_PREFIX."expensereport as d"; - $sql.= " WHERE date_paiement LIKE '".$select_date."%'"; $sql.= " ORDER BY d.rowid"; $result = $db->query($sql); @@ -146,7 +145,7 @@ if (isset($_POST['action'])) $objet->total_tva = number_format($objet->total_tva,2); $objet->total_ttc = number_format($objet->total_ttc,2); $objet->ref = trim($objet->ref); - $ligne.= "{$objet->rowid}, {$objet->ref}, ----, {$objet->date_paiement}, {$objet->total_ht}, {$objet->total_tva}, {$objet->total_ttc}\n"; + $ligne.= "{$objet->rowid}, {$objet->ref}, ----, {$objet->total_ht}, {$objet->total_tva}, {$objet->total_ttc}\n"; $ligne.= "--->, Ligne, Type, Description, ----, ----, ----\n"; diff --git a/htdocs/expensereport/synchro_compta.php b/htdocs/expensereport/synchro_compta.php index 58fcbaee301..90eb4bd4674 100644 --- a/htdocs/expensereport/synchro_compta.php +++ b/htdocs/expensereport/synchro_compta.php @@ -33,8 +33,6 @@ if ($_GET["action"] == 'confirm_ndf_to_account' && $_GET["confirm"] == "yes"): $expensereport = new ExpenseReport($db); $expensereport->fetch($idTrip,$user); - $datePaiement = explode("-",$expensereport->date_paiement); - $dateop = dol_mktime(12,0,0,$datePaiement[1],$datePaiement[2],$datePaiement[0]); $operation = $expensereport->code_paiement; $label = "Règlement ".$expensereport->ref; @@ -43,7 +41,7 @@ if ($_GET["action"] == 'confirm_ndf_to_account' && $_GET["confirm"] == "yes"): $cat1 = ''; $user = new User($db); - $user->fetch($expensereport->fk_user_paid); + $user->fetch($user->id); $acct=new Account($db,$idAccount); $insertid = $acct->addline($dateop, $operation, $label, $amount, $num_chq, $cat1, $user); diff --git a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql index 5f207693f57..aa43d763e84 100755 --- a/htdocs/install/mysql/migration/3.7.0-3.8.0.sql +++ b/htdocs/install/mysql/migration/3.7.0-3.8.0.sql @@ -231,7 +231,6 @@ CREATE TABLE llx_expensereport ( date_approve datetime, date_refuse datetime, date_cancel datetime, - date_paiement datetime, tms timestamp, fk_user_author integer NOT NULL, fk_user_modif integer DEFAULT NULL, @@ -240,7 +239,6 @@ CREATE TABLE llx_expensereport ( fk_user_approve integer DEFAULT NULL, fk_user_refuse integer DEFAULT NULL, fk_user_cancel integer DEFAULT NULL, - fk_user_paid integer DEFAULT NULL, fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé fk_c_paiement integer DEFAULT NULL, paid smallint default 0 NOT NULL, diff --git a/htdocs/install/mysql/tables/llx_expensereport.sql b/htdocs/install/mysql/tables/llx_expensereport.sql index 879623b6b7e..2e7e3911f99 100755 --- a/htdocs/install/mysql/tables/llx_expensereport.sql +++ b/htdocs/install/mysql/tables/llx_expensereport.sql @@ -34,7 +34,6 @@ CREATE TABLE llx_expensereport ( date_approve datetime, date_refuse datetime, date_cancel datetime, - date_paiement datetime, tms timestamp, fk_user_author integer NOT NULL, fk_user_modif integer DEFAULT NULL, @@ -43,7 +42,6 @@ CREATE TABLE llx_expensereport ( fk_user_approve integer DEFAULT NULL, fk_user_refuse integer DEFAULT NULL, fk_user_cancel integer DEFAULT NULL, - fk_user_paid integer DEFAULT NULL, fk_statut integer NOT NULL, -- 1=brouillon, 2=validé (attente approb), 4=annulé, 5=approuvé, 6=payed, 99=refusé fk_c_paiement integer DEFAULT NULL, paid smallint default 0 NOT NULL,