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 '<tr class="oddeven"><td>'.$langs->trans("NbOfInvoiceToPayByBankTransfer").'</td>';
print '<td class="right">'; print '<td class="right">';
print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0&type=bank-transfer">'; 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 '</a>';
print '</td></tr>'; print '</td></tr>';
print '<tr class="oddeven"><td>'.$langs->trans("AmountToWithdraw").'</td>'; print '<tr class="oddeven"><td>'.$langs->trans("AmountToWithdraw").'</td>';
print '<td class="right">'; 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>'; print '</td></tr></table></div><br>';

View File

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

View File

@ -142,10 +142,8 @@ print load_fiche_titre($title);
dol_fiche_head(); dol_fiche_head();
$nb = $bprev->NbFactureAPrelever(); $nb = $bprev->NbFactureAPrelever();
$nb1 = $bprev->NbFactureAPrelever(1);
$nb11 = $bprev->NbFactureAPrelever(1, 1);
$pricetowithdraw = $bprev->SommeAPrelever(); $pricetowithdraw = $bprev->SommeAPrelever();
if ($nb < 0 || $nb1 < 0 || $nb11 < 0) if ($nb < 0)
{ {
dol_print_error($bprev->error); 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 '<tr class="oddeven"><td>'.$langs->trans("NbOfInvoiceToWithdraw").'</td>';
print '<td class="right">'; print '<td class="right">';
print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0">'; print '<a href="'.DOL_URL_ROOT.'/compta/prelevement/demandes.php?status=0">';
print $bprev->NbFactureAPrelever(); print $bprev->nbOfInvoiceToPay('direct-debit');
print '</a>'; print '</a>';
print '</td></tr>'; print '</td></tr>';
print '<tr class="oddeven"><td>'.$langs->trans("AmountToWithdraw").'</td>'; print '<tr class="oddeven"><td>'.$langs->trans("AmountToWithdraw").'</td>';
print '<td class="right">'; 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>'; print '</td></tr></table></div><br>';