Fix credit-transfer vs direct debit

This commit is contained in:
Laurent Destailleur 2020-05-30 23:46:14 +02:00
parent c6c12e7d7a
commit e8016a5e7e
4 changed files with 38 additions and 17 deletions

View File

@ -78,13 +78,13 @@ print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</
print '<tr class="oddeven"><td>'.$langs->trans("NbOfInvoiceToPayByBankTransfer").'</td>';
print '<td class="right">';
print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0&type=bank-transfer">';
print $bprev->NbFactureAPrelever();
print $bprev->nbOfInvoiceToPay('credit-transfer');
print '</a>';
print '</td></tr>';
print '<tr class="oddeven"><td>'.$langs->trans("AmountToWithdraw").'</td>';
print '<td class="right">';
print price($bprev->SommeAPrelever(), '', '', 1, -1, -1, 'auto');
print price($bprev->SommeAPrelever('credit-transfer'), '', '', 1, -1, -1, 'auto');
print '</td></tr></table></div><br>';

View File

@ -687,17 +687,21 @@ class BonPrelevement extends CommonObject
/**
* Returns amount of withdrawal
*
* @return double Total amount
* @param string $mode 'direct-debit' or 'credit-transfer'
* @return double <O if KO, Total amount
*/
public function SommeAPrelever()
public function SommeAPrelever($mode = 'direct-debit')
{
// phpcs:enable
global $conf;
$sql = "SELECT sum(pfd.amount) as nb";
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f,";
if ($mode != 'credit-transfer') {
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f,";
} else {
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f,";
}
$sql .= " ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
//$sql.= " ,".MAIN_DB_PREFIX."c_paiement as cp";
$sql .= " WHERE f.fk_statut = 1";
$sql .= " AND f.entity IN (".getEntity('invoice').")";
$sql .= " AND f.rowid = pfd.fk_facture";
@ -719,32 +723,51 @@ class BonPrelevement extends CommonObject
$error = 1;
dol_syslog(get_class($this)."::SommeAPrelever Erreur -1");
dol_syslog($this->db->error());
return -1;
}
}
/**
* Get number of invoices waiting for payment
*
* @param string $mode 'direct-debit' or 'credit-transfer'
* @return int <O if KO, number of invoices if OK
*/
public function nbOfInvoiceToPay($mode = 'direct-debit')
{
return $this->NbFactureAPrelever($mode);
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.ScopeNotCamelCaps
/**
* Get number of invoices to withdrawal
* TODO delete params banque and agence when not necesary
*
* @param int $banque dolibarr mysoc bank
* @param int $agence dolibarr mysoc agence
* @param string $mode 'direct-debit' or 'credit-transfer'
* @return int <O if KO, number of invoices if OK
*/
public function NbFactureAPrelever($banque = 0, $agence = 0)
public function NbFactureAPrelever($mode = 'direct-debit')
{
// phpcs:enable
global $conf;
$sql = "SELECT count(f.rowid) as nb";
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
if ($mode == 'credit-transfer') {
$sql .= " FROM ".MAIN_DB_PREFIX."facture_fourn as f";
} else {
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
}
$sql .= ", ".MAIN_DB_PREFIX."prelevement_facture_demande as pfd";
$sql .= " WHERE f.entity IN (".getEntity('invoice').")";
if (empty($conf->global->WITHDRAWAL_ALLOW_ANY_INVOICE_STATUS))
{
$sql .= " AND f.fk_statut = ".Facture::STATUS_VALIDATED;
}
$sql .= " AND f.rowid = pfd.fk_facture";
if ($mode == 'credit-transfer') {
$sql .= " AND f.rowid = pfd.fk_facture_fourn";
} else {
$sql .= " AND f.rowid = pfd.fk_facture";
}
$sql .= " AND pfd.traite = 0";
$sql .= " AND f.total_ttc > 0";

View File

@ -142,10 +142,8 @@ print load_fiche_titre($title);
dol_fiche_head();
$nb = $bprev->NbFactureAPrelever();
$nb1 = $bprev->NbFactureAPrelever(1);
$nb11 = $bprev->NbFactureAPrelever(1, 1);
$pricetowithdraw = $bprev->SommeAPrelever();
if ($nb < 0 || $nb1 < 0 || $nb11 < 0)
if ($nb < 0)
{
dol_print_error($bprev->error);
}

View File

@ -78,13 +78,13 @@ print '<tr class="liste_titre"><th colspan="2">'.$langs->trans("Statistics").'</
print '<tr class="oddeven"><td>'.$langs->trans("NbOfInvoiceToWithdraw").'</td>';
print '<td class="right">';
print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0">';
print $bprev->NbFactureAPrelever();
print $bprev->nbOfInvoiceToPay('direct-debit');
print '</a>';
print '</td></tr>';
print '<tr class="oddeven"><td>'.$langs->trans("AmountToWithdraw").'</td>';
print '<td class="right">';
print price($bprev->SommeAPrelever(), '', '', 1, -1, -1, 'auto');
print price($bprev->SommeAPrelever('direct-debit'), '', '', 1, -1, -1, 'auto');
print '</td></tr></table></div><br>';