From 3d10689eca8532f05a507c4bb44722cebb8fda1d Mon Sep 17 00:00:00 2001 From: Laurent Destailleur <eldy@destailleur.fr> Date: Thu, 29 Nov 2012 01:18:57 +0100 Subject: [PATCH] Qual: Maxi debug of withdrawal module. It is possible to understand how it works now ! --- .../class/bonprelevement.class.php | 45 +++- htdocs/compta/prelevement/fiche-rejet.php | 10 +- htdocs/compta/prelevement/fiche.php | 244 ++++++++++-------- htdocs/compta/prelevement/index.php | 12 +- htdocs/langs/en_US/withdrawals.lang | 3 + htdocs/langs/fr_FR/withdrawals.lang | 3 + 6 files changed, 189 insertions(+), 128 deletions(-) diff --git a/htdocs/compta/prelevement/class/bonprelevement.class.php b/htdocs/compta/prelevement/class/bonprelevement.class.php index 0f12ab0cfc8..00e988688ea 100644 --- a/htdocs/compta/prelevement/class/bonprelevement.class.php +++ b/htdocs/compta/prelevement/class/bonprelevement.class.php @@ -546,17 +546,12 @@ class BonPrelevement extends CommonObject // TODO Call trigger to create a notification using notification module } else - { + { dol_syslog(get_class($this)."::set_infotrans Erreur 1", LOG_ERR); dol_syslog($this->db->error()); $error++; } - /* - * End of procedure - * - */ - if ($error == 0) { $this->db->commit(); @@ -1047,6 +1042,44 @@ class BonPrelevement extends CommonObject } + /** + * Get object and lines from database + * + * @return int >0 if OK, <0 if KO + */ + function delete() + { + $this->db->begin(); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_facture WHERE fk_prelevement_lignes IN (SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes WHERE fk_prelevement_bons = '".$this->id."')"; + $resql1=$this->db->query($sql); + if (! $resql1) dol_print_error($this->db); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_lignes WHERE fk_prelevement_bons = '".$this->id."'"; + $resql2=$this->db->query($sql); + if (! $resql2) dol_print_error($this->db); + + $sql = "DELETE FROM ".MAIN_DB_PREFIX."prelevement_bons WHERE rowid = '".$this->id."'"; + $resql3=$this->db->query($sql); + if (! $resql3) dol_print_error($this->db); + + $sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande SET fk_prelevement_bons = NULL, traite = 0 WHERE fk_prelevement_bons = '".$this->id."'"; + $resql4=$this->db->query($sql); + if (! $resql4) dol_print_error($this->db); + + if ($resql1 && $resql2 && $resql3) + { + $this->db->commit(); + return 1; + } + else + { + $this->db->rollback(); + return -1; + } + } + + /** * Returns clickable name (with picto) * diff --git a/htdocs/compta/prelevement/fiche-rejet.php b/htdocs/compta/prelevement/fiche-rejet.php index 2ca9479f441..3b688c13331 100644 --- a/htdocs/compta/prelevement/fiche-rejet.php +++ b/htdocs/compta/prelevement/fiche-rejet.php @@ -103,8 +103,6 @@ $rej = new RejetPrelevement($db, $user); /* * Liste des factures - * - * */ $sql = "SELECT pl.rowid, pl.amount, pl.statut"; $sql.= " , s.rowid as socid, s.nom"; @@ -141,10 +139,10 @@ if ($resql) { $obj = $db->fetch_object($resql); - print "<tr $bc[$var]><td>"; - print '<img border="0" src="./img/statut'.$obj->statut.'.png"></a> '; - print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/ligne.php?id='.$obj->rowid.'">'; + print "<tr ".$bc[$var]."><td>"; + print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/ligne.php?id='.$obj->rowid.'">'; + print img_picto('', 'statut'.$obj->statut).' '; print substr('000000'.$obj->rowid, -6); print '</a></td>'; print '<td><a href="'.DOL_URL_ROOT.'/comm/fiche.php?socid='.$obj->socid.'">'.stripslashes($obj->nom)."</a></td>\n"; @@ -164,7 +162,7 @@ if ($resql) print '<tr class="liste_total"><td> </td>'; print '<td class="liste_total">'.$langs->trans("Total").'</td>'; print '<td align="right">'.price($total)."</td>\n"; - print '<td> </td>'; + print '<td colspan="3"> </td>'; print "</tr>\n</table>\n"; $db->free($resql); } diff --git a/htdocs/compta/prelevement/fiche.php b/htdocs/compta/prelevement/fiche.php index cd99849de9c..af2b1bbf495 100644 --- a/htdocs/compta/prelevement/fiche.php +++ b/htdocs/compta/prelevement/fiche.php @@ -42,14 +42,28 @@ if ($user->societe_id > 0) accessforbidden(); $action = GETPOST('action','alpha'); $id = GETPOST('id','int'); + /* * Actions */ +if ( $action == 'confirm_delete' ) +{ + $bon = new BonPrelevement($db,""); + $bon->fetch($id); + + $res=$bon->delete(); + if ($res > 0) + { + header("Location: index.php"); + exit; + } +} if ( $action == 'confirm_credite' && GETPOST('confirm','alpha') == 'yes') { $bon = new BonPrelevement($db,""); - $bon->id = $id; + $bon->fetch($id); + $bon->set_credite(); header("Location: fiche.php?id=".$id); @@ -63,14 +77,15 @@ if ($action == 'infotrans' && $user->rights->prelevement->bons->send) $bon = new BonPrelevement($db,""); $bon->fetch($id); + $dt = dol_mktime(12,0,0,GETPOST('remonth','int'),GETPOST('reday','int'),GETPOST('reyear','int')); + + /* if ($_FILES['userfile']['name'] && basename($_FILES['userfile']['name'],".ps") == $bon->ref) { $dir = $conf->prelevement->dir_output.'/receipts'; if (dol_move_uploaded_file($_FILES['userfile']['tmp_name'], $dir . "/" . dol_unescapefile($_FILES['userfile']['name']),1) > 0) { - $dt = dol_mktime(12,0,0,GETPOST('remonth','int'),GETPOST('reday','int'),GETPOST('reyear','int')); - $bon->set_infotrans($user, $dt, GETPOST('methode','alpha')); } @@ -81,7 +96,15 @@ if ($action == 'infotrans' && $user->rights->prelevement->bons->send) { dol_syslog("Fichier invalide",LOG_WARNING); $mesg='BadFile'; - } + }*/ + + $error = $bon->set_infotrans($user, $dt, GETPOST('methode','alpha')); + + if ($error) + { + header("Location: fiche.php?id=".$id."&error=$error"); + exit; + } } if ($action == 'infocredit' && $user->rights->prelevement->bons->credit) @@ -92,15 +115,11 @@ if ($action == 'infocredit' && $user->rights->prelevement->bons->credit) $error = $bon->set_infocredit($user, $dt); - if ($error == 0) - { - header("Location: fiche.php?id=".$id); - } - else + if ($error) { header("Location: fiche.php?id=".$id."&error=$error"); + exit; } - exit; } @@ -108,132 +127,139 @@ if ($action == 'infocredit' && $user->rights->prelevement->bons->credit) * View */ +$bon = new BonPrelevement($db,""); +$form = new Form($db); + llxHeader('',$langs->trans("WithdrawalReceipt")); -$form = new Form($db); -if ($id) +if ($id > 0) { - $bon = new BonPrelevement($db,""); + $bon->fetch($id); - if ($bon->fetch($id) == 0) + $head = prelevement_prepare_head($bon); + dol_fiche_head($head, 'prelevement', $langs->trans("WithdrawalReceipt"), '', 'payment'); + + if (GETPOST('error','alpha')!='') { - $head = prelevement_prepare_head($bon); - dol_fiche_head($head, 'prelevement', $langs->trans("WithdrawalReceipt"), '', 'payment'); + print '<div class="error">'.$bon->ReadError(GETPOST('error','alpha')).'</div>'; + } - if (GETPOST('error','alpha')!='') - { - print '<div class="error">'.$bon->ReadError(GETPOST('error','alpha')).'</div>'; - } + /*if ($action == 'credite') + { + $ret=$form->form_confirm("fiche.php?id=".$bon->id,$langs->trans("ClassCredited"),$langs->trans("ClassCreditedConfirm"),"confirm_credite",'',1,1); + if ($ret == 'html') print '<br>'; + }*/ - if ($action == 'credite') - { - $ret=$form->form_confirm("fiche.php?id=".$bon->id,$langs->trans("ClassCredited"),$langs->trans("ClassCreditedConfirm"),"confirm_credite",'',1,1); - if ($ret == 'html') print '<br>'; - } + print '<table class="border" width="100%">'; - print '<table class="border" width="100%">'; + print '<tr><td width="20%">'.$langs->trans("Ref").'</td><td>'.$bon->getNomUrl(1).'</td></tr>'; + print '<tr><td width="20%">'.$langs->trans("Date").'</td><td>'.dol_print_date($bon->datec,'day').'</td></tr>'; + print '<tr><td width="20%">'.$langs->trans("Amount").'</td><td>'.price($bon->amount).'</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("Ref").'</td><td>'.$bon->getNomUrl(1).'</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("Date").'</td><td>'.dol_print_date($bon->datec,'day').'</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("Amount").'</td><td>'.price($bon->amount).'</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("File").'</td><td>'; + // Status + print '<tr><td width="20%">'.$langs->trans('Status').'</td>'; + print '<td>'.$bon->getLibStatut(1).'</td>'; + print '</tr>'; - $relativepath = 'receipts/'.$bon->ref; + if($bon->date_trans <> 0) + { + $muser = new User($db); + $muser->fetch($bon->user_trans); + + print '<tr><td width="20%">'.$langs->trans("TransData").'</td><td>'; + print dol_print_date($bon->date_trans,'day'); + print ' '.$langs->trans("By").' '.$muser->getFullName($langs).'</td></tr>'; + print '<tr><td width="20%">'.$langs->trans("TransMetod").'</td><td>'; + print $bon->methodes_trans[$bon->method_trans]; + print '</td></tr>'; + } + if($bon->date_credit <> 0) + { + print '<tr><td width="20%">'.$langs->trans('CreditDate').'</td><td>'; + print dol_print_date($bon->date_credit,'day'); + print '</td></tr>'; + } - print '<a href="'.DOL_URL_ROOT.'/document.php?type=text/plain&modulepart=prelevement&file='.urlencode($relativepath).'">'.$relativepath.'</a>'; + print '</table>'; - print '</td></tr>'; + print '<br>'; - // Status - print '<tr><td width="20%">'.$langs->trans('Status').'</td>'; - print '<td>'.$bon->getLibStatut(1).'</td>'; - print '</tr>'; + print '<table class="border" width="100%"><tr><td width="20%">'; + print $langs->trans("WithdrawalFile").'</td><td>'; + $relativepath = 'receipts/'.$bon->ref; + print '<a href="'.DOL_URL_ROOT.'/document.php?type=text/plain&modulepart=prelevement&file='.urlencode($relativepath).'">'.$relativepath.'</a>'; + print '</td></tr></table>'; + + dol_fiche_end(); - if($bon->date_trans <> 0) - { - $muser = new User($db); - $muser->fetch($bon->user_trans); - - print '<tr><td width="20%">'.$langs->trans("TransData").'</td><td>'; - print dol_print_date($bon->date_trans,'day'); - print ' '.$langs->trans("By").' '.$muser->getFullName($langs).'</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("TransMetod").'</td><td>'; - print $bon->methodes_trans[$bon->method_trans]; - print '</td></tr>'; - } - if($bon->date_credit <> 0) - { - print '<tr><td width="20%">'.$langs->trans('CreditDate').'</td><td>'; - print dol_print_date($bon->date_credit,'day'); - print '</td></tr>'; - } + + + if (empty($bon->date_trans) && $user->rights->prelevement->bons->send && $action=='settransmitted') + { + print '<form method="post" name="userfile" action="fiche.php?id='.$bon->id.'" enctype="multipart/form-data">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="infotrans">'; + print '<table class="border" width="100%">'; + print '<tr class="liste_titre">'; + print '<td colspan="3">'.$langs->trans("NotifyTransmision").'</td></tr>'; + print '<tr><td width="20%">'.$langs->trans("TransData").'</td><td>'; + print $form->select_date('','','','','',"userfile",1,1); + print '</td></tr>'; + print '<tr><td width="20%">'.$langs->trans("TransMetod").'</td><td>'; + print $form->selectarray("methode",$bon->methodes_trans); + print '</td></tr>'; +/* print '<tr><td width="20%">'.$langs->trans("File").'</td><td>'; + print '<input type="hidden" name="max_file_size" value="'.$conf->maxfilesize.'">'; + print '<input class="flat" type="file" name="userfile"><br>'; + print '</td></tr>';*/ + print '</table><br>'; + print '<center><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("SetToStatusSent")).'">'; + print '</form>'; + } + + if (! empty($bon->date_trans) && $bon->date_credit == 0 && $user->rights->prelevement->bons->credit && $action=='setcredited') + { + print '<form name="infocredit" method="post" action="fiche.php?id='.$bon->id.'">'; + print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; + print '<input type="hidden" name="action" value="infocredit">'; + print '<table class="border" width="100%">'; + print '<tr class="liste_titre">'; + print '<td colspan="3">'.$langs->trans("NotifyCredit").'</td></tr>'; + print '<tr><td width="20%">'.$langs->trans('CreditDate').'</td><td>'; + print $form->select_date('','','','','',"infocredit",1,1); + print '</td></tr>'; print '</table>'; - dol_fiche_end(); + print '<br>'.$langs->trans("ThisWillAlsoAddPaymentOnInvoice"); + print '<center><input type="submit" class="button" value="'.dol_escape_htmltag($langs->trans("ClassCredited")).'">'; + print '</form>'; + } - if($bon->date_trans == 0 && $user->rights->prelevement->bons->send) + + // Actions + if ($action != 'settransmitted' && $action != 'setcredited') + { + print "\n<div class=\"tabsAction\">\n"; + + if (empty($bon->date_trans) && $user->rights->prelevement->bons->send) { - print '<form method="post" name="userfile" action="fiche.php?id='.$bon->id.'" enctype="multipart/form-data">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="infotrans">'; - print '<table class="border" width="100%">'; - print '<tr class="liste_titre">'; - print '<td colspan="3">'.$langs->trans("NotifyTransmision").'</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("TransData").'</td><td>'; - print $form->select_date('','','','','',"userfile"); - print '</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("TransMetod").'</td><td>'; - print $form->selectarray("methode",$bon->methodes_trans); - print '</td></tr>'; - print '<tr><td width="20%">'.$langs->trans("File").'</td><td>'; - print '<input type="hidden" name="max_file_size" value="'.$conf->maxfilesize.'">'; - print '<input class="flat" type="file" name="userfile"><br>'; - print '</td></tr>'; - print '</table><br>'; - print '<center><input type="submit" class="button" value="'.$langs->trans("Send").'">'; - print '</form>'; + print "<a class=\"butAction\" href=\"fiche.php?action=settransmitted&id=".$bon->id."\">".$langs->trans("SetToStatusSent")."</a>"; } - if($bon->date_trans <> 0 && $bon->date_credit == 0 && $user->rights->prelevement->bons->credit) + if (! empty($bon->date_trans) && $bon->date_credit == 0) { - print '<form name="infocredit" method="post" action="fiche.php?id='.$bon->id.'">'; - print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; - print '<input type="hidden" name="action" value="infocredit">'; - print '<table class="border" width="100%">'; - print '<tr class="liste_titre">'; - print '<td colspan="3">'.$langs->trans("NotifyCredit").'</td></tr>'; - print '<tr><td width="20%">'.$langs->trans('CreditDate').'</td><td>'; - print $form->select_date('','','','','',"infocredit"); - print '</td></tr>'; - print '</table><br>'; - print '<center><input type="submit" class="button" value="'.$langs->trans("ClassCredited").'">'; - print '</form>'; + print "<a class=\"butAction\" href=\"fiche.php?action=setcredited&id=".$bon->id."\">".$langs->trans("ClassCredited")."</a>"; } - } - else - { - dol_print_error($db); - } -} -/* ************************************************************************** */ -/* */ -/* Barre d'action */ -/* */ -/* ************************************************************************** */ + print "<a class=\"butActionDelete\" href=\"fiche.php?action=confirm_delete&id=".$bon->id."\">".$langs->trans("Delete")."</a>"; -/* -print "\n</div>\n<div class=\"tabsAction\">\n"; - -if ($bon->statut == 0) -{ - print "<a class=\"butAction\" href=\"fiche.php?action=credite&id=$bon->id\">".$langs->trans("ClassCredited")."</a>"; + print "</div>"; + } } -*/ -print "</div>"; -$db->close(); llxFooter(); + +$db->close(); ?> diff --git a/htdocs/compta/prelevement/index.php b/htdocs/compta/prelevement/index.php index 8dba0b37cae..53100598544 100644 --- a/htdocs/compta/prelevement/index.php +++ b/htdocs/compta/prelevement/index.php @@ -1,6 +1,6 @@ <?php /* Copyright (C) 2004-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org> - * Copyright (C) 2005-2011 Laurent Destailleur <eldy@users.sourceforge.net> + * Copyright (C) 2005-2012 Laurent Destailleur <eldy@users.sourceforge.net> * Copyright (C) 2005-2009 Regis Houssin <regis@dolibarr.fr> * Copyright (C) 2011 Juanjo Menent <jmenent@2byte.es> * @@ -117,14 +117,12 @@ if ($result) $obj = $db->fetch_object($result); $var=!$var; - print "<tr $bc[$var]><td>"; - - print '<img border="0" src="./img/statut'.$obj->statut.'.png"></a> '; - - print '<a href="fiche.php?id='.$obj->rowid.'">'.$obj->ref."</a></td>\n"; + print "<tr ".$bc[$var]."><td>"; + print '<a href="fiche.php?id='.$obj->rowid.'">'; + print img_picto('', 'statut'.$obj->statut).' '; + print $obj->ref."</a></td>\n"; print '<td>'.dol_print_date($db->jdate($obj->datec),"dayhour")."</td>\n"; - print '<td align="right">'.price($obj->amount)."</td>\n"; print "</tr>\n"; diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang index 5488f674620..fe9fa0a9b99 100644 --- a/htdocs/langs/en_US/withdrawals.lang +++ b/htdocs/langs/en_US/withdrawals.lang @@ -81,6 +81,9 @@ WithdrawalFileNotCapable=Unable to generate withdrawal receipt file for your cou ShowWithdraw=Show Withdraw IfInvoiceNeedOnWithdrawPaymentWontBeClosed=However, if invoice has at least one withdrawal payment not yet processed, it won't be set as payed to allow to manage withdrawal before. DoStandingOrdersBeforePayments=This tabs allows you to request for a standing order. Once it will be finished, you can type the payment to close the invoice. +WithdrawalFile=Withdrawal file +SetToStatusSent=Set to status "File Sent" +ThisWillAlsoAddPaymentOnInvoice=This will also create payments onto invoices and will classify them to paid ### Notifications InfoCreditSubject=Payment of standing order %s by the bank diff --git a/htdocs/langs/fr_FR/withdrawals.lang b/htdocs/langs/fr_FR/withdrawals.lang index 39f62c0f5c1..27c00e307cf 100644 --- a/htdocs/langs/fr_FR/withdrawals.lang +++ b/htdocs/langs/fr_FR/withdrawals.lang @@ -81,6 +81,9 @@ WithdrawalFileNotCapable=Impossible de générer un fichier de bons de prélève ShowWithdraw=Voir prélèvement IfInvoiceNeedOnWithdrawPaymentWontBeClosed=Toutefois, si la facture a au moins un paiement par prélèvement non traité, elle ne le sera pas afin de permettre la gestion du prélèvement d'abord. DoStandingOrdersBeforePayments=Cet onglet permet de faire une demande de prélèvement bancaire. Une fois réalisé, vous pourrez saisir le paiement sur la facture pour la clore. +WithdrawalFile=Fichier de prélèvement +SetToStatusSent=Mettre status "Fichier envoyé" +ThisWillAlsoAddPaymentOnInvoice=Ceci créera également les paiements sur les factures et les classera payées ### Notifications InfoCreditSubject=Crédit prélèvement %s à la banque -- GitLab