diff --git a/htdocs/compta/prelevement/card.php b/htdocs/compta/prelevement/card.php
index 959fc7f161d..e8fed7735d5 100755
--- a/htdocs/compta/prelevement/card.php
+++ b/htdocs/compta/prelevement/card.php
@@ -95,16 +95,21 @@ if (empty($reshook))
}
}
- // Seems to no be used and replaced with $action == 'infocredit'
- if ($action == 'confirm_credite' && GETPOST('confirm', 'alpha') == 'yes')
- {
- $res = $object->set_credite();
- if ($res >= 0)
- {
- header("Location: card.php?id=".$id);
- exit;
- }
- }
+ // Seems to no be used and replaced with $action == 'infocredit'
+ if ($action == 'confirm_credite' && GETPOST('confirm', 'alpha') == 'yes')
+ {
+ if ($object->statut == 2) {
+ $res = -1;
+ setEventMessages('WithdrawalCantBeCreditedTwice', array(), 'errors');
+ } else {
+ $res=$object->set_credite();
+ }
+ if ($res >= 0)
+ {
+ header("Location: card.php?id=".$id);
+ exit;
+ }
+ }
if ($action == 'infotrans' && $user->rights->prelevement->bons->send)
{
@@ -145,12 +150,18 @@ if (empty($reshook))
{
$dt = dol_mktime(12, 0, 0, GETPOST('remonth', 'int'), GETPOST('reday', 'int'), GETPOST('reyear', 'int'));
- $error = $object->set_infocredit($user, $dt);
- if ($error)
- {
+ if ($object->statut == 2) {
+ $error = 1;
+ setEventMessages('WithdrawalCantBeCreditedTwice', array(), 'errors');
+ } else {
+ $error = $object->set_infocredit($user, $dt);
+ }
+
+ if ($error)
+ {
setEventMessages($object->error, $object->errors, 'errors');
- }
- }
+ }
+ }
}
diff --git a/htdocs/langs/en_US/withdrawals.lang b/htdocs/langs/en_US/withdrawals.lang
index a18ff7a8d31..67fc994a0a4 100644
--- a/htdocs/langs/en_US/withdrawals.lang
+++ b/htdocs/langs/en_US/withdrawals.lang
@@ -44,6 +44,7 @@ MakeBankTransferOrder=Make a credit transfer request
WithdrawRequestsDone=%s direct debit payment requests recorded
ThirdPartyBankCode=Third-party bank code
NoInvoiceCouldBeWithdrawed=No invoice debited successfully. Check that invoices are on companies with a valid IBAN and that IBAN has a UMR (Unique Mandate Reference) with mode %s.
+WithdrawalCantBeCreditedTwice=This withdrawal receipt is already marked as credited; this can't be done twice, as this would potentially create duplicate payments and bank entries.
ClassCredited=Classify credited
ClassCreditedConfirm=Are you sure you want to classify this withdrawal receipt as credited on your bank account?
TransData=Transmission date
diff --git a/htdocs/langs/fr_FR/withdrawals.lang b/htdocs/langs/fr_FR/withdrawals.lang
index d05f2663cfc..dc9942b2397 100644
--- a/htdocs/langs/fr_FR/withdrawals.lang
+++ b/htdocs/langs/fr_FR/withdrawals.lang
@@ -44,6 +44,7 @@ MakeBankTransferOrder=Faire une demande de virement
WithdrawRequestsDone=%s demandes de prélèvements enregistrées
ThirdPartyBankCode=Code banque du tiers
NoInvoiceCouldBeWithdrawed=Aucune facture traitée avec succès. Vérifiez que les factures sont sur les sociétés avec un BAN par défaut valide et que le BAN a un RUM avec le mode %s .
+WithdrawalCantBeCreditedTwice=Ce bon de prélèvement est déjà classé crédité ; cette opération ne peut pas être réalisée deux fois, car cela pourrait engendrer des doublons dans les paiements et les écritures bancaires.
ClassCredited=Classer crédité
ClassCreditedConfirm=Êtes-vous sûr de vouloir classer ce bon de prélèvement comme crédité sur votre compte bancaire ?
TransData=Date de transmission