diff --git a/htdocs/compta/bank/account.php b/htdocs/compta/bank/account.php index c64d8b48e3d2aa2c615b5ab8551cbf00a1b7d28a..c5d868d02e304cd4933e32a801ee133693183dcb 100644 --- a/htdocs/compta/bank/account.php +++ b/htdocs/compta/bank/account.php @@ -371,23 +371,32 @@ if ($id > 0 || ! empty($ref)) /* - * Boutons actions + * Buttons actions */ - if ($action != 'delete') { + if ($action != 'delete') + { print '<div class="tabsAction">'; - if ($object->type != 2 && $object->rappro) { // If not cash account and can be reconciliate - if ($user->rights->banque->consolidate) { + if ($object->type != 2 && $object->rappro) + { + // If not cash account and can be reconciliate + if ($user->rights->banque->consolidate) + { print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>'; - } else { + } + else + { print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>'; } } - if ($action != 'addline') { - if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) { - if (empty($conf->accounting->enabled)) { + if ($action != 'addline') + { + if (empty($conf->global->BANK_DISABLE_DIRECT_INPUT)) + { + if (empty($conf->accounting->enabled)) + { if ($user->rights->banque->modifier) { print '<a class="butAction" href="'.$_SERVER["PHP_SELF"].'?action=addline&id='.$object->id.'&page='.$page.($vline?'&vline='.$vline:'').'">'.$langs->trans("AddBankRecord").'</a>'; } else { @@ -500,12 +509,13 @@ if ($id > 0 || ! empty($ref)) print '<br>'; } - print '<table class="noborder" width="100%">'; - + /* - * Affiche tableau des transactions bancaires + * Show list of bank transactions */ + print '<table class="noborder" width="100%">'; + // Ligne de titre tableau des ecritures print '<tr class="liste_titre">'; print '<td>'.$langs->trans("Date").'</td>'; @@ -654,7 +664,8 @@ if ($id > 0 || ! empty($ref)) $label=($langs->trans("PaymentTypeShort".$objp->fk_type)!="PaymentTypeShort".$objp->fk_type)?$langs->trans("PaymentTypeShort".$objp->fk_type):$objp->fk_type; if ($objp->fk_type == 'SOLD') $label=' '; - if ($objp->fk_type == 'CHQ' && $objp->fk_bordereau > 0) { + if ($objp->fk_type == 'CHQ' && $objp->fk_bordereau > 0) + { dol_include_once('/compta/paiement/cheque/class/remisecheque.class.php'); $bordereaustatic = new RemiseCheque($db); $bordereaustatic->id = $objp->fk_bordereau; @@ -678,6 +689,7 @@ if ($id > 0 || ! empty($ref)) { print dol_trunc($objp->label,60); } + // Add links after description $links = $object->get_url($objp->rowid); foreach($links as $key=>$val) diff --git a/htdocs/compta/bank/rappro.php b/htdocs/compta/bank/rappro.php index 18aacc82bf901435193654809b61b3fa43f1d61f..8468bfbd5fb72558aafe0b5535816890b8bbdc0f 100644 --- a/htdocs/compta/bank/rappro.php +++ b/htdocs/compta/bank/rappro.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2010 Juanjo Menent <jmenent@2byte.es> * Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr> * @@ -43,6 +43,7 @@ if (! $user->rights->banque->consolidate) accessforbidden(); $action=GETPOST('action', 'alpha'); $id=GETPOST('account', 'int'); + /* * Actions */ @@ -220,7 +221,7 @@ if ($resql) print "<input type=\"hidden\" name=\"action\" value=\"rappro\">"; print "<input type=\"hidden\" name=\"account\" value=\"".$acct->id."\">"; - print $langs->trans("InputReceiptNumber").': '; + print '<strong>'.$langs->trans("InputReceiptNumber").'</strong>: '; print '<input class="flat" name="num_releve" type="text" value="'.(GETPOST('num_releve')?GETPOST('num_releve'):$objp->num_releve).'" size="10">'; print '<br>'; if ($options) diff --git a/htdocs/compta/bank/releve.php b/htdocs/compta/bank/releve.php index eb56a95f96abe214ae1a521323e224fc700a82a8..73fd8df531a862dabbd4225fe3fae252d6b34d35 100644 --- a/htdocs/compta/bank/releve.php +++ b/htdocs/compta/bank/releve.php @@ -94,10 +94,10 @@ $banklinestatic=new AccountLine($db); // Load account -$acct = new Account($db); +$object = new Account($db); if ($id > 0 || ! empty($ref)) { - $acct->fetch($id, $ref); + $object->fetch($id, $ref); } if (empty($num)) @@ -107,7 +107,7 @@ if (empty($num)) */ $sql = "SELECT DISTINCT(b.num_releve) as numr"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; - $sql.= " WHERE b.fk_account = ".$acct->id; + $sql.= " WHERE b.fk_account = ".$object->id; $sql.= " ORDER BY numr DESC"; $sql.= $db->plimit($conf->liste_limit+1,$offset); @@ -120,7 +120,7 @@ if (empty($num)) $i = 0; // Onglets - $head=bank_prepare_head($acct); + $head=bank_prepare_head($object); dol_fiche_head($head,'statement',$langs->trans("FinancialAccount"),0,'account'); print '<table class="border" width="100%">'; @@ -130,19 +130,36 @@ if (empty($num)) // Ref print '<tr><td width="25%">'.$langs->trans("Ref").'</td>'; print '<td colspan="3">'; - print $form->showrefnav($acct, 'ref', $linkback, 1, 'ref'); + print $form->showrefnav($object, 'ref', $linkback, 1, 'ref'); print '</td></tr>'; // Label print '<tr><td>'.$langs->trans("Label").'</td>'; - print '<td colspan="3">'.$acct->label.'</td></tr>'; + print '<td colspan="3">'.$object->label.'</td></tr>'; print '</table>'; dol_fiche_end(); + print '<div class="tabsAction">'; + + if ($object->type != 2 && $object->rappro) + { + // If not cash account and can be reconciliate + if ($user->rights->banque->consolidate) + { + print '<a class="butAction" href="'.DOL_URL_ROOT.'/compta/bank/rappro.php?account='.$object->id.($vline?'&vline='.$vline:'').'">'.$langs->trans("Conciliate").'</a>'; + } + else + { + print '<a class="butActionRefused" title="'.$langs->trans("NotEnoughPermissions").'" href="#">'.$langs->trans("Conciliate").'</a>'; + } + } + + print '</div>'; + - print_barre_liste('', $page, $_SERVER["PHP_SELF"], "&account=".$acct->id, $sortfield, $sortorder,'',$numrows); + print_barre_liste('', $page, $_SERVER["PHP_SELF"], "&account=".$object->id, $sortfield, $sortorder,'',$numrows); print '<table class="noborder" width="100%">'; print '<tr class="liste_titre">'; @@ -164,13 +181,13 @@ if (empty($num)) } else { - print '<tr '.$bc[$var].'><td><a href="releve.php?num='.$objp->numr.'&account='.$acct->id.'">'.$objp->numr.'</a></td>'; + print '<tr '.$bc[$var].'><td><a href="releve.php?num='.$objp->numr.'&account='.$object->id.'">'.$objp->numr.'</a></td>'; // Calculate start amount $sql = "SELECT sum(b.amount) as amount"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE b.num_releve < '".$db->escape($objp->numr)."'"; - $sql.= " AND b.fk_account = ".$acct->id; + $sql.= " AND b.fk_account = ".$object->id; $resql=$db->query($sql); if ($resql) { @@ -184,7 +201,7 @@ if (empty($num)) $sql = "SELECT sum(b.amount) as amount"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE b.num_releve = '".$db->escape($objp->numr)."'"; - $sql.= " AND b.fk_account = ".$acct->id; + $sql.= " AND b.fk_account = ".$object->id; $resql=$db->query($sql); if ($resql) { @@ -222,7 +239,7 @@ else $sql = "SELECT DISTINCT(b.num_releve) as num"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE b.num_releve < '".$db->escape($num)."'"; - $sql.= " AND b.fk_account = ".$acct->id; + $sql.= " AND b.fk_account = ".$object->id; $sql.= " ORDER BY b.num_releve DESC"; dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG); @@ -244,7 +261,7 @@ else $sql = "SELECT DISTINCT(b.num_releve) as num"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE b.num_releve > '".$db->escape($num)."'"; - $sql.= " AND b.fk_account = ".$acct->id; + $sql.= " AND b.fk_account = ".$object->id; $sql.= " ORDER BY b.num_releve ASC"; dol_syslog("htdocs/compta/bank/releve.php", LOG_DEBUG); @@ -265,10 +282,10 @@ else $found=true; } - $mesprevnext ="<a href=\"releve.php?rel=prev&num=$num&ve=$ve&account=$acct->id\">".img_previous()."</a> "; + $mesprevnext ="<a href=\"releve.php?rel=prev&num=$num&ve=$ve&account=$object->id\">".img_previous()."</a> "; $mesprevnext.= $langs->trans("AccountStatement")." $num"; - $mesprevnext.=" <a href=\"releve.php?rel=next&num=$num&ve=$ve&account=$acct->id\">".img_next()."</a>"; - print_fiche_titre($langs->trans("AccountStatement").' '.$num.', '.$langs->trans("BankAccount").' : '.$acct->getNomUrl(0),$mesprevnext, 'title_bank.png'); + $mesprevnext.=" <a href=\"releve.php?rel=next&num=$num&ve=$ve&account=$object->id\">".img_next()."</a>"; + print_fiche_titre($langs->trans("AccountStatement").' '.$num.', '.$langs->trans("BankAccount").' : '.$object->getNomUrl(0),$mesprevnext, 'title_bank.png'); print '<br>'; print "<form method=\"post\" action=\"releve.php\">"; @@ -291,7 +308,7 @@ else $sql = "SELECT sum(b.amount) as amount"; $sql.= " FROM ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE b.num_releve < '".$db->escape($num)."'"; - $sql.= " AND b.fk_account = ".$acct->id; + $sql.= " AND b.fk_account = ".$object->id; $resql=$db->query($sql); if ($resql) @@ -309,7 +326,7 @@ else $sql.= ", ".MAIN_DB_PREFIX."bank as b"; $sql.= " WHERE b.num_releve='".$db->escape($num)."'"; if (!isset($num)) $sql.= " OR b.num_releve is null"; - $sql.= " AND b.fk_account = ".$acct->id; + $sql.= " AND b.fk_account = ".$object->id; $sql.= " AND b.fk_account = ba.rowid"; $sql.= $db->order("b.datev, b.datec", "ASC"); // We add date of creation to have correct order when everything is done the same day @@ -321,7 +338,7 @@ else $i = 0; // Ligne Solde debut releve - print "<tr><td colspan=\"4\"><a href=\"releve.php?num=$num&ve=1&rel=$rel&account=".$acct->id."\"> </a></td>"; + print "<tr><td colspan=\"4\"><a href=\"releve.php?num=$num&ve=1&rel=$rel&account=".$object->id."\"> </a></td>"; print "<td align=\"right\" colspan=\"2\"><b>".$langs->trans("InitialBankBalance")." :</b></td><td align=\"right\"><b>".price($total)."</b></td><td> </td></tr>\n"; while ($i < $numrows) @@ -337,10 +354,10 @@ else // Date de valeur print '<td align="center" valign="center" class="nowrap">'; - print '<a href="releve.php?action=dvprev&num='.$num.'&account='.$acct->id.'&dvid='.$objp->rowid.'">'; + print '<a href="releve.php?action=dvprev&num='.$num.'&account='.$object->id.'&dvid='.$objp->rowid.'">'; print img_previous().'</a> '; print dol_print_date($db->jdate($objp->dv),"day") .' '; - print '<a href="releve.php?action=dvnext&num='.$num.'&account='.$acct->id.'&dvid='.$objp->rowid.'">'; + print '<a href="releve.php?action=dvnext&num='.$num.'&account='.$object->id.'&dvid='.$objp->rowid.'">'; print img_next().'</a>'; print "</td>\n"; @@ -353,7 +370,7 @@ else print '<td class="nowrap">'.$type_label.' '.($objp->num_chq?$objp->num_chq:'').'</td>'; // Description - print '<td valign="center"><a href="'.DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$objp->rowid.'&account='.$acct->id.'">'; + print '<td valign="center"><a href="'.DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$objp->rowid.'&account='.$object->id.'">'; $reg=array(); preg_match('/\((.+)\)/i',$objp->label,$reg); // Si texte entoure de parenthese on tente recherche de traduction if ($reg[1] && $langs->trans($reg[1])!=$reg[1]) print $langs->trans($reg[1]); @@ -364,7 +381,7 @@ else * Ajout les liens (societe, company...) */ $newline=1; - $links = $acct->get_url($objp->rowid); + $links = $object->get_url($objp->rowid); foreach($links as $key=>$val) { if (! $newline) print ' - '; @@ -500,7 +517,7 @@ else if ($user->rights->banque->modifier || $user->rights->banque->consolidate) { - print "<td align=\"center\"><a href=\"ligne.php?rowid=$objp->rowid&account=".$acct->id."\">"; + print "<td align=\"center\"><a href=\"ligne.php?rowid=$objp->rowid&account=".$object->id."\">"; print img_edit(); print "</a></td>"; } @@ -522,6 +539,7 @@ else print "</table></form>\n"; } -$db->close(); llxFooter(); + +$db->close(); diff --git a/htdocs/expensereport/card.php b/htdocs/expensereport/card.php index e79906314577b0f174e1291fd3220dad89a90d57..1eb5d8d47babf3a633bccda0c15f60afa56882c3 100644 --- a/htdocs/expensereport/card.php +++ b/htdocs/expensereport/card.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2008 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> * @@ -166,7 +166,8 @@ if ($action == 'update' && $user->rights->expensereport->creer) $object->fk_c_paiement = GETPOST('fk_c_paiement','int'); $object->note_public = GETPOST('note_public'); $object->note_private = GETPOST('note_private'); - + $object->fk_user_modif = $user->id; + $result = $object->update($user); if ($result > 0) { @@ -1318,30 +1319,35 @@ else { dol_fiche_head($head, 'card', $langs->trans("TripCard"), 0, 'trip'); - if ($action == 'save'): - $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_validate","","",1); - if ($ret == 'html') print '<br>'; - endif; + if ($action == 'save') + { + $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_validate","","",1); + if ($ret == 'html') print '<br>'; + } - if ($action == 'save_from_refuse'): - $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_save_from_refuse","","",1); - if ($ret == 'html') print '<br>'; - endif; + if ($action == 'save_from_refuse') + { + $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("SaveTrip"),$langs->trans("ConfirmSaveTrip"),"confirm_save_from_refuse","","",1); + if ($ret == 'html') print '<br>'; + } - if ($action == 'delete'): - $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("DeleteTrip"),$langs->trans("ConfirmDeleteTrip"),"confirm_delete","","",1); - if ($ret == 'html') print '<br>'; - endif; + if ($action == 'delete') + { + $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("DeleteTrip"),$langs->trans("ConfirmDeleteTrip"),"confirm_delete","","",1); + if ($ret == 'html') print '<br>'; + } - if ($action == 'validate'): - $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("ValideTrip"),$langs->trans("ConfirmValideTrip"),"confirm_approve","","",1); - if ($ret == 'html') print '<br>'; - endif; + if ($action == 'validate') + { + $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("ValideTrip"),$langs->trans("ConfirmValideTrip"),"confirm_approve","","",1); + if ($ret == 'html') print '<br>'; + } - if ($action == 'paid'): - $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("PaidTrip"),$langs->trans("ConfirmPaidTrip"),"confirm_paid","","",1); - if ($ret == 'html') print '<br>'; - endif; + if ($action == 'paid') + { + $ret=$form->form_confirm($_SERVER["PHP_SELF"]."?id=".$id,$langs->trans("PaidTrip"),$langs->trans("ConfirmPaidTrip"),"confirm_paid","","",1); + if ($ret == 'html') print '<br>'; + } if ($action == 'cancel') { @@ -1968,7 +1974,7 @@ if ($action != 'create' && $action != 'edit') * ET user à droit de "to_paid" * Afficher : "Annuler" / "Payer" / "Supprimer" */ - if ($user->rights->expensereport->to_paid && $object->fk_statut == 5) + if ($user->rights->expensereport->to_paid && ! empty($conf->banque->enabled) && $object->fk_statut == 5) { // Pay if ($remaintopay == 0) @@ -1979,8 +1985,11 @@ if ($action != 'create' && $action != 'edit') { print '<div class="inline-block divButAction"><a class="butAction" href="'.DOL_URL_ROOT.'/expensereport/payment/payment.php?id=' . $object->id . '&action=create">' . $langs->trans('DoPayment') . '</a></div>'; } - - if (round($remaintopay) == 0 && $object->paid == 0) + } + + if (($user->rights->expensereport->to_paid || empty($conf->banque->enabled)) && $object->fk_statut == 5) + { + if ((round($remaintopay) == 0 || empty($conf->banque->enabled)) && $object->paid == 0) { print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id='.$object->id.'&action=set_paid">'.$langs->trans("ClassifyPaid")."</a></div>"; } diff --git a/htdocs/expensereport/class/expensereport.class.php b/htdocs/expensereport/class/expensereport.class.php index 93dcb7ee03d97713f036510814726fa09437e386..86d5eb51d1830ac8238b19cd452244d7f6e3eacc 100644 --- a/htdocs/expensereport/class/expensereport.class.php +++ b/htdocs/expensereport/class/expensereport.class.php @@ -61,14 +61,16 @@ class ExpenseReport extends CommonObject var $code_paiement; var $code_statut; - /* - ACTIONS - */ + // ACTIONS - // Enregistrement + // Create var $date_create; var $fk_user_author; + // Update + var $date_modif; + var $fk_user_modif; + // Refus var $date_refuse; var $detail_refuse; @@ -141,6 +143,7 @@ class ExpenseReport extends CommonObject $sql.= ",date_create"; $sql.= ",fk_user_author"; $sql.= ",fk_user_validator"; + $sql.= ",fk_user_modif"; $sql.= ",fk_statut"; $sql.= ",fk_c_paiement"; $sql.= ",paid"; @@ -156,6 +159,7 @@ class ExpenseReport extends CommonObject $sql.= ", '".$this->db->idate($now)."'"; $sql.= ", ".($user->id > 0 ? $user->id:"null"); $sql.= ", ".($this->fk_user_validator > 0 ? $this->fk_user_validator:"null"); + $sql.= ", ".($this->fk_user_modif > 0 ? $this->fk_user_modif:"null"); $sql.= ", ".($this->fk_statut > 1 ? $this->fk_statut:0); $sql.= ", ".($this->modepaymentid?$this->modepaymentid:"null"); $sql.= ", 0"; @@ -240,6 +244,7 @@ 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_modif = ".($this->fk_user_modif > 0 ? $this->fk_user_modif:"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)."'":"''"); @@ -275,9 +280,10 @@ 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,"; // DATES (datetime) - $sql.= " d.fk_user_author, d.fk_user_validator, d.fk_statut as status, d.fk_c_paiement,"; + $sql.= " d.date_debut, d.date_fin, d.date_create, d.tms as date_modif, d.date_valid, d.date_approve,"; // DATES (datetime) + $sql.= " d.fk_user_author, d.fk_user_modif, d.fk_user_validator,"; $sql.= " d.fk_user_valid, d.fk_user_approve,"; + $sql.= " d.fk_statut as status, d.fk_c_paiement,"; $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,16 +312,18 @@ class ExpenseReport extends CommonObject $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); + $this->date_modif = $this->db->jdate($obj->date_modif); $this->date_refuse = $this->db->jdate($obj->date_refuse); $this->date_cancel = $this->db->jdate($obj->date_cancel); $this->fk_user_author = $obj->fk_user_author; + $this->fk_user_modif = $obj->fk_user_modif; $this->fk_user_validator = $obj->fk_user_validator; $this->fk_user_valid = $obj->fk_user_valid; $this->fk_user_refuse = $obj->fk_user_refuse; $this->fk_user_cancel = $obj->fk_user_cancel; $this->fk_user_approve = $obj->fk_user_approve; - + $user_author = new User($this->db); if ($this->fk_user_author > 0) $user_author->fetch($this->fk_user_author); @@ -496,7 +504,13 @@ class ExpenseReport extends CommonObject $muser->fetch($obj->fk_user_modification); $this->user_modification = $muser; } - + if ($obj->fk_user_approve) + { + $auser = new User($this->db); + $auser->fetch($obj->fk_user_approve); + $this->user_approve = $auser; + } + } $this->db->free($resql); } @@ -869,20 +883,21 @@ class ExpenseReport extends CommonObject if ($this->fk_statut != 2) { + $now = dol_now(); + $sql = 'UPDATE '.MAIN_DB_PREFIX.$this->table_element; - $sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$fuser->id.","; + $sql.= " SET ref = '".$this->ref."', fk_statut = 2, fk_user_valid = ".$fuser->id.", date_valid='".$this->db->idate($now)."',"; $sql.= " ref_number_int = ".$ref_number_int; $sql.= ' WHERE rowid = '.$this->id; - dol_syslog(get_class($this)."::set_save sql=".$sql, LOG_DEBUG); - - if ($this->db->query($sql)) + $resql=$this->db->query($sql); + if ($resql) { return 1; } else { - $this->error=$this->db->error(); + $this->error=$this->db->lasterror(); return -1; } } diff --git a/htdocs/expensereport/class/paymentexpensereport.class.php b/htdocs/expensereport/class/paymentexpensereport.class.php index 96e421c4769d864aa53b07e4afcf2b541d74b6df..c07776548930868a5f0cfbc7861acc2d3dc4648b 100644 --- a/htdocs/expensereport/class/paymentexpensereport.class.php +++ b/htdocs/expensereport/class/paymentexpensereport.class.php @@ -469,7 +469,7 @@ class PaymentExpenseReport extends CommonObject */ function addPaymentToBank($user,$mode,$label,$accountid,$emetteur_nom,$emetteur_banque) { - global $conf; + global $langs,$conf; $error=0; @@ -482,7 +482,7 @@ class PaymentExpenseReport extends CommonObject $total=$this->total; if ($mode == 'payment_expensereport') $amount=$total; - + // Insert payment into llx_bank $bank_line_id = $acc->addline( $this->datepaid, @@ -519,6 +519,32 @@ class PaymentExpenseReport extends CommonObject dol_print_error($this->db); } } + + // Add link 'user' in bank_url between user and bank transaction + if (! $error) + { + foreach ($this->amounts as $key => $value) // We should have always same third party but we loop in case of. + { + if ($mode == 'payment_expensereport') + { + $euser = new User($this->db); + $euser->fetch($key); + $result=$acc->add_url_line( + $bank_line_id, + $euser->id, + DOL_URL_ROOT.'/user/card.php?id=', + $euser->getFullName($langs), + 'user' + ); + if ($result <= 0) + { + $this->error=$this->db->lasterror(); + dol_syslog(get_class($this).'::addPaymentToBank '.$this->error); + $error++; + } + } + } + } } else { diff --git a/htdocs/expensereport/info.php b/htdocs/expensereport/info.php index c1e0b598e7e183965a1580606c5e3fd06b06fee2..b4302631c78e71df1584ef78bb5cc430915a5a51 100644 --- a/htdocs/expensereport/info.php +++ b/htdocs/expensereport/info.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2004 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2004-2005 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2004-2015 Laurent Destailleur <eldy@users.sourceforge.net> * * 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 @@ -59,6 +59,6 @@ if ($id) print '</div>'; } -$db->close(); - llxFooter(); + +$db->close(); diff --git a/htdocs/expensereport/payment/card.php b/htdocs/expensereport/payment/card.php index 0a9b5a0577800ac6f26cd7778b2bce8479683e3c..eb5314fbd30db2cd0c9c18515e555d5c355f7d5b 100644 --- a/htdocs/expensereport/payment/card.php +++ b/htdocs/expensereport/payment/card.php @@ -157,19 +157,19 @@ print $form->showrefnav($payment,'id','',1,'rowid','id'); print '</td></tr>'; // Date -print '<tr><td valign="top">'.$langs->trans('Date').'</td><td colspan="3">'.dol_print_date($payment->datep,'day').'</td></tr>'; +print '<tr><td>'.$langs->trans('Date').'</td><td colspan="3">'.dol_print_date($payment->datep,'day').'</td></tr>'; // Mode -print '<tr><td valign="top">'.$langs->trans('Mode').'</td><td colspan="3">'.$langs->trans("PaymentType".$payment->type_code).'</td></tr>'; +print '<tr><td>'.$langs->trans('Mode').'</td><td colspan="3">'.$langs->trans("PaymentType".$payment->type_code).'</td></tr>'; // Number -print '<tr><td valign="top">'.$langs->trans('Number').'</td><td colspan="3">'.$payment->num_payment.'</td></tr>'; +print '<tr><td>'.$langs->trans('Numero').'</td><td colspan="3">'.$payment->num_payment.'</td></tr>'; // Amount -print '<tr><td valign="top">'.$langs->trans('Amount').'</td><td colspan="3">'.price($payment->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'</td></tr>'; +print '<tr><td>'.$langs->trans('Amount').'</td><td colspan="3">'.price($payment->amount, 0, $outputlangs, 1, -1, -1, $conf->currency).'</td></tr>'; // Note -print '<tr><td valign="top">'.$langs->trans('Note').'</td><td colspan="3">'.nl2br($payment->note).'</td></tr>'; +print '<tr><td class="tdtop">'.$langs->trans('Note').'</td><td colspan="3">'.nl2br($payment->note).'</td></tr>'; // Bank account if (! empty($conf->banque->enabled)) diff --git a/htdocs/expensereport/payment/payment.php b/htdocs/expensereport/payment/payment.php index 3c61179e1b36b9bd725935ffc3b9933d00679896..c65e42f709cb94952f4fd95c8302ac02a68563df 100644 --- a/htdocs/expensereport/payment/payment.php +++ b/htdocs/expensereport/payment/payment.php @@ -1,5 +1,6 @@ <?php -/* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> +/* Copyright (C) 2015 Alexandre Spangaro <aspangaro.dolibarr@gmail.com> + * Copyright (C) 2015 Laurent Destailleur <eldy@users.sourceforge.net> * * 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 @@ -31,6 +32,7 @@ $langs->load("bills"); $chid=GETPOST("id"); $action=GETPOST('action'); $amounts = array(); +$accountid=GETPOST('accountid','int'); // Security check $socid=0; @@ -67,7 +69,7 @@ if ($action == 'add_payment') $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("Date")); $error++; } - if (! empty($conf->banque->enabled) && ! $_POST["accountid"] > 0) + if (! empty($conf->banque->enabled) && ! $accountid > 0) { $mesg = $langs->trans("ErrorFieldRequired",$langs->transnoentities("AccountToCredit")); $error++; @@ -76,6 +78,7 @@ if ($action == 'add_payment') if (! $error) { $paymentid = 0; + $total = 0; // Read possible payments foreach ($_POST as $key => $value) @@ -84,6 +87,7 @@ if ($action == 'add_payment') { $other_chid = substr($key,7); $amounts[$other_chid] = price2num($_POST[$key]); + $total += price2num($_POST[$key]); } } @@ -102,6 +106,7 @@ if ($action == 'add_payment') $payment->chid = $chid; $payment->datepaid = $datepaid; $payment->amounts = $amounts; // Tableau de montant + $payment->total = $total; $payment->fk_typepayment = $_POST["fk_typepayment"]; $payment->num_payment = $_POST["num_payment"]; $payment->note = $_POST["note"]; @@ -118,7 +123,7 @@ if ($action == 'add_payment') if (! $error) { - $result=$payment->addPaymentToBank($user,'payment_expensereport','(ExpenseReportPayment)',$_POST['accountid'],'',''); + $result=$payment->addPaymentToBank($user,'payment_expensereport','(ExpenseReportPayment)',$accountid,'',''); if (! $result > 0) { $errmsg=$payment->error; 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 16b9f274e5092c9ef306211babd8c2279eedd6ac..15dd8761e4742b6ea10dee82fb122e1bfe03abde 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 @@ -22,6 +22,7 @@ UPDATE llx_facture_fourn set ref=rowid where ref IS NULL; ALTER TABLE llx_facture_fourn MODIFY COLUMN ref varchar(255) NOT NULL; +ALTER TABLE llx_bank_url MODIFY COLUMN type varchar(24) NOT NULL; -- IVORY COST (id country=21) insert into llx_c_tva(rowid,fk_pays,taux,recuperableonly,localtax1,localtax1_type,localtax2,localtax2_type,note,active) values (211, 21, '0','0',0,0,0,0,'IVA Rate 0',1); diff --git a/htdocs/install/mysql/tables/llx_bank_url.sql b/htdocs/install/mysql/tables/llx_bank_url.sql index 841e08822eaaa7c21c6f439a899483d3a9c761c0..0fd99a32e9aa0e671f9486810db4190bcf045b3f 100644 --- a/htdocs/install/mysql/tables/llx_bank_url.sql +++ b/htdocs/install/mysql/tables/llx_bank_url.sql @@ -1,6 +1,6 @@ -- =================================================================== --- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> --- Copyright (C) 2007 Laurent Destailleur <eldy@users.sourceforge.net> +-- Copyright (C) 2003 Rodolphe Quiedeville <rodolphe@quiedeville.org> +-- Copyright (C) 2007-2015 Laurent Destailleur <eldy@users.sourceforge.net> -- -- 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 @@ -24,5 +24,5 @@ create table llx_bank_url url_id integer, url varchar(255), label varchar(255), - type varchar(20) NOT NULL + type varchar(24) NOT NULL )ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_expensereport.sql b/htdocs/install/mysql/tables/llx_expensereport.sql index 6d0da853fbb5efff072c2fc10f1056eb5dad3b26..c61ed8a9335a9fc1060e3f9a8784c460c2609342 100755 --- a/htdocs/install/mysql/tables/llx_expensereport.sql +++ b/htdocs/install/mysql/tables/llx_expensereport.sql @@ -51,6 +51,9 @@ CREATE TABLE llx_expensereport ( detail_cancel varchar(255) DEFAULT NULL, integration_compta integer DEFAULT NULL, -- not used fk_bank_account integer DEFAULT NULL, - model_pdf varchar(50) DEFAULT NULL + model_pdf varchar(50) DEFAULT NULL, + + import_key varchar(14), + extraparams varchar(255) -- for other parameters with json format ) ENGINE=innodb; diff --git a/htdocs/install/mysql/tables/llx_facture.sql b/htdocs/install/mysql/tables/llx_facture.sql index 93a376c599c7040edee14c10a7ec95f48e56c745..e6da2bda214ddc8d493fc4823c15de9843cdf8b3 100644 --- a/htdocs/install/mysql/tables/llx_facture.sql +++ b/htdocs/install/mysql/tables/llx_facture.sql @@ -78,11 +78,11 @@ create table llx_facture fk_incoterms integer, -- for incoterms location_incoterms varchar(255), -- for incoterms - import_key varchar(14), - extraparams varchar(255), -- for stock other parameters with json format situation_cycle_ref smallint, -- situation cycle reference situation_counter smallint, -- situation counter - situation_final smallint -- is the situation final ? + situation_final smallint, -- is the situation final ? + import_key varchar(14), + extraparams varchar(255) -- for other parameters with json format )ENGINE=innodb;