FIX Cash fence

This commit is contained in:
Laurent Destailleur 2019-01-07 19:35:20 +01:00
parent 527ef8bdc8
commit 8b1455f29e
3 changed files with 23 additions and 52 deletions

View File

@ -18,7 +18,7 @@
/**
* \file cashcontrol_list.php
* \ingroup bank
* \ingroup cashdesk|takepos
* \brief List page for cashcontrol
*/

View File

@ -20,7 +20,7 @@
/**
* \file cashcontrol/class/cashcontrol.class.php
* \ingroup bank
* \ingroup cashdesk|takepos
* \brief This file is CRUD class file (Create/Read/Update/Delete) for cash fence table
*/

View File

@ -25,13 +25,14 @@
/**
* \file htdocs/compta/cashcontrol/report.php
* \ingroup pos
* \ingroup cashdesk|takepos
* \brief List of bank transactions
*/
require '../../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
require_once DOL_DOCUMENT_ROOT.'/compta/facture/class/facture.class.php';
$id = GETPOST('id','int');
@ -94,9 +95,9 @@ $sql.=" OR b.fk_account=".$conf->global->CASHDESK_ID_BANKACCOUNT_CB;
$sql.=" OR b.fk_account=".$conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE;
$sql.=")";
*/
$sql = "SELECT f.facnumber, pf.amount as total, cp.code";
$sql.= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as cp";
$sql.= " WHERE pf.fk_facture = f.rowid AND p.rowid = pf.fk_paiement AND cp.id = p.fk_paiement";
$sql = "SELECT f.rowid as facid, f.facnumber, f.datef as do, pf.amount as amount, b.fk_account as bankid, cp.code";
$sql.= " FROM ".MAIN_DB_PREFIX."paiement_facture as pf, ".MAIN_DB_PREFIX."facture as f, ".MAIN_DB_PREFIX."paiement as p, ".MAIN_DB_PREFIX."c_paiement as cp, ".MAIN_DB_PREFIX."bank as b";
$sql.= " WHERE pf.fk_facture = f.rowid AND p.rowid = pf.fk_paiement AND cp.id = p.fk_paiement AND p.fk_bank = b.rowid";
$sql.= " AND f.module_source = '".$db->escape($posmodule)."'";
$sql.= " AND f.pos_source = '".$db->escape($terminalid)."'";
$sql.= " AND f.paye = 1";
@ -125,6 +126,12 @@ if ($resql)
else print $langs->trans("CashControl")." - ".$langs->trans("Draft");
print "<br>".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'dayhour')."</h2></center>";
$invoicetmp = new Facture($db);
print "<div style='text-align: right'><h2>";
print $langs->trans("InitialBankBalance").' - '.$langs->trans("Cash")." : ".price($cashcontrol->opening);
print "</h2></div>";
print '<div class="div-table-responsive">';
print '<table class="tagtable liste">'."\n";
@ -138,55 +145,17 @@ if ($resql)
print_liste_field_titre($arrayfields['b.credit']['label'],$_SERVER['PHP_SELF'],'b.amount','',$param,'align="right"',$sortfield,$sortorder);
print "</tr>\n";
$balance = 0; // For balance
$balancecalculated = false;
$posconciliatecol = 0;
// Loop on each record
$sign = 1;
$first='yes';
$cash=$bank=$cheque=$other=0;
$totalarray=array();
while ($i < min($num,$limit))
{
$objp = $db->fetch_object($resql);
// If we are in a situation where we need/can show balance, we calculate the start of balance
if (! $balancecalculated && (! empty($arrayfields['balancebefore']['checked']) || ! empty($arrayfields['balance']['checked'])) && $mode_balance_ok)
{
if (! $account)
{
dol_print_error('', 'account is not defined but $mode_balance_ok is true');
exit;
}
// Loop on each record before
$sign = 1;
$i = 0;
$sqlforbalance='SELECT SUM(b.amount) as balance';
$sqlforbalance.= " FROM ";
$sqlforbalance.= " ".MAIN_DB_PREFIX."bank_account as ba,";
$sqlforbalance.= " ".MAIN_DB_PREFIX."bank as b";
$sqlforbalance.= " WHERE b.fk_account = ba.rowid";
$sqlforbalance.= " AND ba.entity IN (".getEntity('bank_account').")";
$sqlforbalance.= " AND b.fk_account = ".$account;
$sqlforbalance.= " AND (b.datev < '" . $db->idate($db->jdate($objp->dv)) . "' OR (b.datev = '" . $db->idate($db->jdate($objp->dv)) . "' AND (b.dateo < '".$db->idate($db->jdate($objp->do))."' OR (b.dateo = '".$db->idate($db->jdate($objp->do))."' AND b.rowid < ".$objp->rowid."))))";
$resqlforbalance = $db->query($sqlforbalance);
if ($resqlforbalance)
{
$objforbalance = $db->fetch_object($resqlforbalance);
if ($objforbalance)
{
$balance = $objforbalance->balance;
}
}
else dol_print_error($db);
$balancecalculated=true;
}
$balance = price2num($balance + ($sign * $objp->amount),'MT');
if (empty($cachebankaccount[$objp->bankid]))
{
$bankaccounttmp = new Account($db);
@ -198,22 +167,22 @@ if ($resql)
{
$bankaccount = $cachebankaccount[$objp->bankid];
}
print '<tr class="oddeven">';
if ($first == "yes")
/*if ($first == "yes")
{
print '<tr class="oddeven">';
print '<td>'.$langs->trans("InitialBankBalance").' - '.$langs->trans("Cash").'</td>';
print '<td></td><td></td><td></td><td align="right">'.price($cashcontrol->opening).'</td>';
print '</tr>';
$first = "no";
}
}*/
print '<tr class="oddeven">';
// Ref
print '<td align="left" class="nowrap">';
print $objp->facnumber;
$invoicetmp->fetch($objp->facid);
print $invoicetmp->getNomUrl(1);
print '</td>';
if (! $i) $totalarray['nbfield']++;
@ -227,9 +196,10 @@ if ($resql)
// Bank account
print '<td align="right" class="nowrap">';
print $bankaccount->getNomUrl(1);
if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->id) $cash+=$objp->amount;
if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->id) $bank+=$objp->amount;
if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE==$bankaccount->id) $cheque+=$objp->amount;
if ($conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->id) $cash+=$objp->amount;
elseif ($conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->id) $bank+=$objp->amount;
elseif ($conf->global->CASHDESK_ID_BANKACCOUNT_CHEQUE==$bankaccount->id) $cheque+=$objp->amount;
else $other+=$objp->amount;
print "</td>\n";
if (! $i) $totalarray['nbfield']++;
@ -287,6 +257,7 @@ if ($resql)
print $langs->trans("Cash").": ".price($cash)."<br><br>";
print $langs->trans("PaymentTypeCB").": ".price($bank)."<br><br>";
print $langs->trans("PaymentTypeCHQ").": ".price($cheque)."<br><br>";
if ($other) print $langs->trans("Other").": ".price($other)."<br><br>";
print "</h2></div>";
//save totals to DB