Fix supplier sepa

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

View File

@ -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);

View File

@ -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 .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'?id='.$object->id.'">';
$morehtmlref .= '<input type="hidden" name="action" value="classin">';
$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 .= '<input type="submit" class="button valignmiddle" value="'.$langs->trans("Modify").'">';
$morehtmlref .= '</form>';