Fix supplier sepa

This commit is contained in:
Laurent Destailleur 2020-06-14 21:19:31 +02:00
parent b763b40d8c
commit f0ca29cc6e
2 changed files with 31 additions and 11 deletions

View File

@ -3986,9 +3986,11 @@ class Facture extends CommonInvoice
* *
* @param User $fuser User asking the direct debit transfer * @param User $fuser User asking the direct debit transfer
* @param float $amount Amount we request direct debit for * @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 * @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 // phpcs:enable
@ -4004,7 +4006,11 @@ class Facture extends CommonInvoice
$sql = 'SELECT count(*)'; $sql = 'SELECT count(*)';
$sql .= ' FROM '.MAIN_DB_PREFIX.'prelevement_facture_demande'; $sql .= ' FROM '.MAIN_DB_PREFIX.'prelevement_facture_demande';
if ($type == 'bank-transfer') {
$sql .= ' WHERE fk_facture_fourn = '.$this->id;
} else {
$sql .= ' WHERE fk_facture = '.$this->id; $sql .= ' WHERE fk_facture = '.$this->id;
}
$sql .= ' AND traite = 0'; $sql .= ' AND traite = 0';
dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG); dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG);
@ -4029,8 +4035,13 @@ class Facture extends CommonInvoice
if (is_numeric($amount) && $amount != 0) if (is_numeric($amount) && $amount != 0)
{ {
$sql = 'INSERT INTO '.MAIN_DB_PREFIX.'prelevement_facture_demande'; $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)'; 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 .= ' VALUES ('.$this->id;
$sql .= ",'".price2num($amount)."'"; $sql .= ",'".price2num($amount)."'";
$sql .= ",'".$this->db->idate($now)."'"; $sql .= ",'".$this->db->idate($now)."'";
@ -4038,7 +4049,9 @@ class Facture extends CommonInvoice
$sql .= ",'".$bac->code_banque."'"; $sql .= ",'".$bac->code_banque."'";
$sql .= ",'".$bac->code_guichet."'"; $sql .= ",'".$bac->code_guichet."'";
$sql .= ",'".$bac->number."'"; $sql .= ",'".$bac->number."'";
$sql .= ",'".$bac->cle_rib."')"; $sql .= ",'".$bac->cle_rib."'";
$sql .= ",'".$source_type."'";
$sql .= ")";
dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG); dol_syslog(get_class($this)."::demande_prelevement", LOG_DEBUG);
$resql = $this->db->query($sql); $resql = $this->db->query($sql);

View File

@ -24,7 +24,7 @@
/** /**
* \file htdocs/compta/facture/prelevement.php * \file htdocs/compta/facture/prelevement.php
* \ingroup facture * \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'; require '../../main.inc.php';
@ -83,7 +83,13 @@ if (empty($reshook))
{ {
$db->begin(); $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) if ($result > 0)
{ {
$db->commit(); $db->commit();
@ -101,7 +107,7 @@ if (empty($reshook))
{ {
if ($object->id > 0) if ($object->id > 0)
{ {
$result = $object->demande_prelevement_delete($user, GETPOST('did')); $result = $object->demande_prelevement_delete($user, GETPOST('did', 'int'));
if ($result == 0) if ($result == 0)
{ {
header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id); header("Location: ".$_SERVER['PHP_SELF']."?id=".$object->id);
@ -197,6 +203,7 @@ if ($object->id > 0)
$morehtmlref .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">'; $morehtmlref .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
$morehtmlref .= '<input type="hidden" name="action" value="classin">'; $morehtmlref .= '<input type="hidden" name="action" value="classin">';
$morehtmlref .= '<input type="hidden" name="token" value="'.newToken().'">'; $morehtmlref .= '<input type="hidden" name="token" value="'.newToken().'">';
$morehtmlref .= '<input type="hidden" name="type" value="'.$type.'">';
$morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1); $morehtmlref .= $formproject->select_projects($object->socid, $object->fk_project, 'projectid', $maxlength, 0, 1, 0, 1, 0, 0, '', 1);
$morehtmlref .= '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">'; $morehtmlref .= '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
$morehtmlref .= '</form>'; $morehtmlref .= '</form>';