From 39a92df6473981f44a90740951f3a0f878fdcc29 Mon Sep 17 00:00:00 2001 From: Quentin Vial-Gouteyron Date: Tue, 24 Jan 2017 11:50:07 +0100 Subject: [PATCH 1/3] Massive withdrawal request --- htdocs/compta/facture/list.php | 92 +++++++++++++++++++++++++++++++++- htdocs/langs/fr_FR/bills.lang | 1 + 2 files changed, 92 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 8807023784d..4dce7418159 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -460,7 +460,8 @@ if ($resql) $arrayofmassactions=array( 'presend'=>$langs->trans("SendByMail"), - 'builddoc'=>$langs->trans("PDFMerge") + 'builddoc'=>$langs->trans("PDFMerge"), + 'withdrawrequest'=>$langs->trans("WithdrawRequest") ); if ($user->rights->facture->supprimer) { @@ -587,6 +588,95 @@ if ($resql) dol_fiche_end(); } + + if ($massaction == 'withdrawrequest') + { + if (!$user->rights->prelevement->bons->creer) + { + $error++; + setEventMessages($langs->trans("NotEnoughPermissions"), $objecttmp->errors, 'errors'); + } + else { + + //Checking error + $error = 0; + + $listofbills=array(); + foreach($arrayofselected as $toselectid) + { + $objecttmp=new Facture($db); + $result=$objecttmp->fetch($toselectid); + if ($result > 0) + { + $totalpaye = $objecttmp->getSommePaiement(); + $totalcreditnotes = $objecttmp->getSumCreditNotesUsed(); + $totaldeposits = $objecttmp->getSumDepositsUsed(); + $objecttmp->resteapayer = price2num($objecttmp->total_ttc - $totalpaye - $totalcreditnotes - $totaldeposits,'MT'); + $listofbills[] = $objecttmp; + if($objecttmp->paye || $objecttmp->resteapayer==0){ + $error++; + setEventMessages($objecttmp->ref.' '.$langs->trans("AlreadyPaid"), $objecttmp->errors, 'errors'); + } else if($objecttmp->resteapayer<0){ + $error++; + setEventMessages($objecttmp->ref.' '.$langs->trans("AmountMustBePositive"), $objecttmp->errors, 'errors'); + } + if(!($objecttmp->statut > Facture::STATUS_DRAFT)){ + $error++; + setEventMessages($objecttmp->ref.' '.$langs->trans("Draft"), $objecttmp->errors, 'errors'); + } + + $rsql = "SELECT pfd.rowid, pfd.traite, pfd.date_demande as date_demande"; + $rsql .= " , pfd.date_traite as date_traite"; + $rsql .= " , pfd.amount"; + $rsql .= " , u.rowid as user_id, u.lastname, u.firstname, u.login"; + $rsql .= " FROM ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd"; + $rsql .= " , ".MAIN_DB_PREFIX."user as u"; + $rsql .= " WHERE fk_facture = ".$objecttmp->id; + $rsql .= " AND pfd.fk_user_demande = u.rowid"; + $rsql .= " AND pfd.traite = 0"; + $rsql .= " ORDER BY pfd.date_demande DESC"; + + $result_sql = $db->query($rsql); + if ($result_sql) + { + $numprlv = $db->num_rows($result_sql); + } + + if($numprlv>0){ + $error++; + setEventMessages($objecttmp->ref.' '.$langs->trans("RequestAlreadyDone"), $objecttmp->errors, 'errors'); + } + + } + } + + + //Massive withdraw request + if(!empty($listofbills) && empty($error)){ + + foreach($listofbills as $aBill) + { + + + $db->begin(); + $result = $aBill->demande_prelevement($user, $aBill->resteapayer); + if ($result > 0) + { + $db->commit(); + setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); + } + else + { + + $db->rollback(); + setEventMessages($aBill->error, $aBill->errors, 'errors'); + } + + } + } + } + + } if ($sall) { diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index 5bb77a19245..bae477e8a09 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -489,3 +489,4 @@ DeleteRepeatableInvoice=Supprimer facture modèle ConfirmDeleteRepeatableInvoice=Est-ce votre sûr de vouloir supprimer la facture modèle ? CreateOneBillByThird=Créer une facture par tiers (sinon, une facture par commande) BillCreated=%s facture(s) créée(s) +WithdrawRequest=Demande de prélèvement From 6011c98515c241a1aacae7391e80383b5c2201d5 Mon Sep 17 00:00:00 2001 From: Quentin Vial-Gouteyron Date: Tue, 24 Jan 2017 12:22:23 +0100 Subject: [PATCH 2/3] FIX payment method exception --- htdocs/compta/facture/list.php | 6 +++++- htdocs/langs/fr_FR/bills.lang | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 4dce7418159..3757f9fec2a 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -646,6 +646,10 @@ if ($resql) $error++; setEventMessages($objecttmp->ref.' '.$langs->trans("RequestAlreadyDone"), $objecttmp->errors, 'errors'); } + if($objecttmp->mode_reglement_id != 3){ + $error++; + setEventMessages($objecttmp->ref.' '.$langs->trans("BadPaymentMethod"), $objecttmp->errors, 'errors'); + } } } @@ -663,7 +667,7 @@ if ($resql) if ($result > 0) { $db->commit(); - setEventMessages($langs->trans("RecordSaved"), null, 'mesgs'); + setEventMessages( $langs->trans("RecordSaved"), null, 'mesgs'); } else { diff --git a/htdocs/langs/fr_FR/bills.lang b/htdocs/langs/fr_FR/bills.lang index bae477e8a09..e361fdb9f2b 100644 --- a/htdocs/langs/fr_FR/bills.lang +++ b/htdocs/langs/fr_FR/bills.lang @@ -490,3 +490,4 @@ ConfirmDeleteRepeatableInvoice=Est-ce votre sûr de vouloir supprimer la facture CreateOneBillByThird=Créer une facture par tiers (sinon, une facture par commande) BillCreated=%s facture(s) créée(s) WithdrawRequest=Demande de prélèvement +BadPaymentMethod=Mauvais mode de paiement \ No newline at end of file From 94b42021bd3a43e2ad1d5cfda105ab2e5d70cbc9 Mon Sep 17 00:00:00 2001 From: Quentin Vial-Gouteyron Date: Tue, 24 Jan 2017 15:15:31 +0100 Subject: [PATCH 3/3] fix payment method --- htdocs/compta/facture/list.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/htdocs/compta/facture/list.php b/htdocs/compta/facture/list.php index 3757f9fec2a..dcb0deeb2dd 100644 --- a/htdocs/compta/facture/list.php +++ b/htdocs/compta/facture/list.php @@ -646,7 +646,7 @@ if ($resql) $error++; setEventMessages($objecttmp->ref.' '.$langs->trans("RequestAlreadyDone"), $objecttmp->errors, 'errors'); } - if($objecttmp->mode_reglement_id != 3){ + if(!empty($objecttmp->mode_reglement_id ) && $objecttmp->mode_reglement_id != 3){ $error++; setEventMessages($objecttmp->ref.' '.$langs->trans("BadPaymentMethod"), $objecttmp->errors, 'errors'); }