From 83263cc174380ba1300cf15aca45bfe4da1bf199 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Sun, 14 Jun 2020 21:19:31 +0200 Subject: [PATCH] Fix supplier sepa --- htdocs/compta/facture/class/facture.class.php | 29 ++++++++++++++----- htdocs/compta/facture/prelevement.php | 13 +++++++-- 2 files changed, 31 insertions(+), 11 deletions(-) diff --git a/htdocs/compta/facture/class/facture.class.php b/htdocs/compta/facture/class/facture.class.php index 80b68182363..3a1b4d7dc9e 100644 --- a/htdocs/compta/facture/class/facture.class.php +++ b/htdocs/compta/facture/class/facture.class.php @@ -4083,11 +4083,13 @@ class Facture extends CommonInvoice * Create a withdrawal request for a standing order. * Use the remain to pay excluding all existing open direct debit requests. * - * @param User $fuser User asking the direct debit transfer - * @param float $amount Amount we request direct debit for - * @return int <0 if KO, >0 if OK + * @param User $fuser User asking the direct debit transfer + * @param float $amount Amount we request direct debit for + * @param string $type 'direct-debit' or 'bank-transfer' + * @param string $source_type Source ('facture' or 'supplier_invoice') + * @return int <0 if KO, >0 if OK */ - public function demande_prelevement($fuser, $amount = 0) + public function demande_prelevement($fuser, $amount = 0, $type = 'direct-debit', $source_type = 'facture') { // phpcs:enable @@ -4103,7 +4105,11 @@ class Facture extends CommonInvoice $sql = 'SELECT count(*)'; $sql .= ' FROM '.MAIN_DB_PREFIX.'prelevement_facture_demande'; - $sql .= ' WHERE fk_facture = '.$this->id; + if ($type == 'bank-transfer') { + $sql .= ' WHERE fk_facture_fourn = '.$this->id; + } else { + $sql .= ' WHERE fk_facture = '.$this->id; + } $sql .= ' AND traite = 0'; dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG); @@ -4128,8 +4134,13 @@ class Facture extends CommonInvoice if (is_numeric($amount) && $amount != 0) { - $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande'; - $sql .= ' (fk_facture, amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib)'; + $sql = 'INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande('; + if ($type == 'bank-transfer') { + $sql .= 'fk_facture_fourn, '; + } else { + $sql .= 'fk_facture, '; + } + $sql .= ' amount, date_demande, fk_user_demande, code_banque, code_guichet, number, cle_rib, source_type)'; $sql .= ' VALUES ('.$this->id; $sql .= ",'".price2num($amount)."'"; $sql .= ",'".$this->db->idate($now)."'"; @@ -4137,7 +4148,9 @@ class Facture extends CommonInvoice $sql .= ",'".$bac->code_banque."'"; $sql .= ",'".$bac->code_guichet."'"; $sql .= ",'".$bac->number."'"; - $sql .= ",'".$bac->cle_rib."')"; + $sql .= ",'".$bac->cle_rib."'"; + $sql .= ",'".$source_type."'"; + $sql .= ")"; dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG); $resql = $this->db->query($sql); diff --git a/htdocs/compta/facture/prelevement.php b/htdocs/compta/facture/prelevement.php index 984c29d75ed..bdf45514229 100644 --- a/htdocs/compta/facture/prelevement.php +++ b/htdocs/compta/facture/prelevement.php @@ -24,7 +24,7 @@ /** * \file htdocs/compta/facture/prelevement.php * \ingroup facture - * \brief Management of direct debit order of invoices + * \brief Management of direct debit order or credit tranfer of invoices */ require '../../main.inc.php'; @@ -83,7 +83,13 @@ if (empty($reshook)) { $db->begin(); - $result = $object->demande_prelevement($user, GETPOST('withdraw_request_amount')); + $newtype = $type; + $source_type = 'facture'; + if ($type == 'bank-transfer') { + $source_type = 'supplier_invoice'; + } + + $result = $object->demande_prelevement($user, price2num(GETPOST('withdraw_request_amount'), 'alpha'), $newtype, $source_type); if ($result > 0) { $db->commit(); @@ -103,7 +109,7 @@ if (empty($reshook)) { if ($object->id > 0) { - $result = $object->demande_prelevement_delete($user, GETPOST('did')); + $result = $object->demande_prelevement_delete($user, GETPOST('did', 'int')); if ($result == 0) { header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); @@ -199,6 +205,7 @@ if ($object->id > 0) $morehtmlref .= '
'; $morehtmlref .= ''; $morehtmlref .= ''; + $morehtmlref .= ''; $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); $morehtmlref .= ''; $morehtmlref .= '
';