Fix: If a transaction was reconciliated and should not, there was no way to reverse error.

This commit is contained in:
Laurent Destailleur 2010-12-27 23:40:32 +00:00
parent a2f949a4df
commit e9b48f8b0b
4 changed files with 346 additions and 295 deletions

View File

@ -53,6 +53,7 @@ For users:
- New: Task #10796: Add Spain ProfId1 Verification - New: Task #10796: Add Spain ProfId1 Verification
- New: Page "supplier summary" is now available. - New: Page "supplier summary" is now available.
- New: Task #10611: Add option to choose order of field in bank account info on PDF - New: Task #10611: Add option to choose order of field in bank account info on PDF
- New: If a transaction was reconciliated and should not, there was no way to reverse error.
- Perf: Avoid reading database to determine country code after each - Perf: Avoid reading database to determine country code after each
page call. page call.
- Fix: Special chars are now supported in ECM module for filename (not yet for - Fix: Special chars are now supported in ECM module for filename (not yet for

View File

@ -23,7 +23,7 @@
/** /**
* \file htdocs/compta/bank/account.php * \file htdocs/compta/bank/account.php
* \ingroup banque * \ingroup banque
* \brief List of detail of bank transaction for an account * \brief List of details of bank transactions for an account
* \version $Id$ * \version $Id$
*/ */
@ -646,12 +646,12 @@ if ($account || $_GET["ref"])
print '<td align="right">-</td>'; print '<td align="right">-</td>';
} }
// Receipt conciliate or edit link // Transaction reconciliated or edit link
if ($objp->rappro && $acct->type != 2) // Si non compte cash if ($objp->rappro && $acct->type != 2) // Si non compte cash
{ {
print "<td align=\"center\" nowrap>"; print "<td align=\"center\" nowrap>";
print '<a href="'.DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$objp->rowid.'&amp;account='.$acct->id.'&amp;page='.$page.'">'; print '<a href="'.DOL_URL_ROOT.'/compta/bank/ligne.php?rowid='.$objp->rowid.'&amp;account='.$acct->id.'&amp;page='.$page.'">';
print img_view(); print img_edit();
print '</a>'; print '</a>';
print "&nbsp; "; print "&nbsp; ";
print "<a href=\"releve.php?num=$objp->num_releve&amp;account=$acct->id\">$objp->num_releve</a>"; print "<a href=\"releve.php?num=$objp->num_releve&amp;account=$acct->id\">$objp->num_releve</a>";

View File

@ -49,119 +49,133 @@ $html = new Form($db);
if ($user->rights->banque->consolidate && $_GET["action"] == 'dvnext') if ($user->rights->banque->consolidate && $_GET["action"] == 'dvnext')
{ {
$ac = new Account($db); $ac = new Account($db);
$ac->datev_next($_GET["rowid"]); $ac->datev_next($_GET["rowid"]);
} }
if ($user->rights->banque->consolidate && $_GET["action"] == 'dvprev') if ($user->rights->banque->consolidate && $_GET["action"] == 'dvprev')
{ {
$ac = new Account($db); $ac = new Account($db);
$ac->datev_previous($_GET["rowid"]); $ac->datev_previous($_GET["rowid"]);
} }
if ($_POST["action"] == 'confirm_delete_categ' && $_POST["confirm"] == "yes") if ($_POST["action"] == 'confirm_delete_categ' && $_POST["confirm"] == "yes")
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = $rowid AND fk_categ = ".$_GET["cat1"]; $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = $rowid AND fk_categ = ".$_GET["cat1"];
if (! $db->query($sql)) if (! $db->query($sql))
{ {
dol_print_error($db); dol_print_error($db);
} }
} }
if ($_POST["action"] == 'class') if ($_POST["action"] == 'class')
{ {
$sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = $rowid AND fk_categ = ".$_POST["cat1"]; $sql = "DELETE FROM ".MAIN_DB_PREFIX."bank_class WHERE lineid = $rowid AND fk_categ = ".$_POST["cat1"];
if (! $db->query($sql)) if (! $db->query($sql))
{ {
dol_print_error($db); dol_print_error($db);
} }
$sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_class (lineid, fk_categ) VALUES (".$_GET["rowid"].", ".$_POST["cat1"].")"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."bank_class (lineid, fk_categ) VALUES (".$_GET["rowid"].", ".$_POST["cat1"].")";
if (! $db->query($sql)) if (! $db->query($sql))
{ {
dol_print_error($db); dol_print_error($db);
} }
} }
if ($_POST["action"] == "update") if ($_POST["action"] == "update")
{ {
// Avant de modifier la date ou le montant, on controle si ce n'est pas encore rapproche // Avant de modifier la date ou le montant, on controle si ce n'est pas encore rapproche
$sql = "SELECT b.rappro FROM ".MAIN_DB_PREFIX."bank as b WHERE rowid=".$rowid; $sql = "SELECT b.rappro FROM ".MAIN_DB_PREFIX."bank as b WHERE rowid=".$rowid;
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
if ($objp->rappro) if ($objp->rappro)
die ("Conciliation of a line already conciliated is not possible"); die ("Conciliation of a line already conciliated is not possible");
} }
$db->begin(); $db->begin();
$amount = price2num($_POST['amount']); $amount = price2num($_POST['amount']);
$dateop = dol_mktime(12,0,0,$_POST["dateomonth"],$_POST["dateoday"],$_POST["dateoyear"]); $dateop = dol_mktime(12,0,0,$_POST["dateomonth"],$_POST["dateoday"],$_POST["dateoyear"]);
$dateval= dol_mktime(12,0,0,$_POST["datevmonth"],$_POST["datevday"],$_POST["datevyear"]); $dateval= dol_mktime(12,0,0,$_POST["datevmonth"],$_POST["datevday"],$_POST["datevyear"]);
$sql = "UPDATE ".MAIN_DB_PREFIX."bank"; $sql = "UPDATE ".MAIN_DB_PREFIX."bank";
$sql.= " SET label='".addslashes($_POST["label"])."',"; $sql.= " SET label='".addslashes($_POST["label"])."',";
if (isset($_POST['amount'])) $sql.=" amount='$amount',"; if (isset($_POST['amount'])) $sql.=" amount='$amount',";
$sql.= " dateo = '".$db->idate($dateop)."', datev = '".$db->idate($dateval)."',"; $sql.= " dateo = '".$db->idate($dateop)."', datev = '".$db->idate($dateval)."',";
$sql.= " fk_account = ".$_POST['accountid']; $sql.= " fk_account = ".$_POST['accountid'];
$sql.= " WHERE rowid = ".$rowid; $sql.= " WHERE rowid = ".$rowid;
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$db->commit(); $db->commit();
} }
else else
{ {
$db->rollback(); $db->rollback();
dol_print_error($db); dol_print_error($db);
} }
} }
if ($_POST["action"] == 'type') if ($_POST["action"] == 'type')
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."bank set fk_type='".$_POST["value"]."', num_chq='".$_POST["num_chq"]."' WHERE rowid = $rowid;"; $sql = "UPDATE ".MAIN_DB_PREFIX."bank set fk_type='".$_POST["value"]."', num_chq='".$_POST["num_chq"]."' WHERE rowid = $rowid;";
$result = $db->query($sql); $result = $db->query($sql);
} }
if ($_POST["action"] == 'banque') if ($_POST["action"] == 'banque')
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."bank set banque='".addslashes($_POST["banque"])."' WHERE rowid = $rowid;"; $sql = "UPDATE ".MAIN_DB_PREFIX."bank set banque='".addslashes($_POST["banque"])."' WHERE rowid = $rowid;";
$result = $db->query($sql); $result = $db->query($sql);
} }
if ($_POST["action"] == 'emetteur') if ($_POST["action"] == 'emetteur')
{ {
$sql = "UPDATE ".MAIN_DB_PREFIX."bank set emetteur='".addslashes($_POST["emetteur"])."' WHERE rowid = $rowid;"; $sql = "UPDATE ".MAIN_DB_PREFIX."bank set emetteur='".addslashes($_POST["emetteur"])."' WHERE rowid = $rowid;";
$result = $db->query($sql); $result = $db->query($sql);
} }
if ($user->rights->banque->consolidate && $_POST["action"] == 'num_releve') // Reconcile
if ($user->rights->banque->consolidate && ($_POST["action"] == 'num_releve' || $_POST["action"] == 'setreconcile'))
{ {
$db->begin(); $num_rel=trim($_POST["num_rel"]);
$rappro=$_POST['reconciled']?1:0;
$num_rel=trim($_POST["num_rel"]); // Check parameters
if ($rappro && empty($num_rel))
{
$mesg=$langs->trans("ErrorFieldRequired",$langs->transnoentitiesnoconv("AccountStatement"));
$error++;
}
$sql = "UPDATE ".MAIN_DB_PREFIX."bank"; if (! $error)
$sql.= " SET num_releve=".($num_rel?"'".$num_rel."'":"null"); {
if (! $num_rel) $sql.= ", rappro = 0"; $db->begin();
$sql.= " WHERE rowid = ".$rowid;
dol_syslog("ligne.php sql=".$sql, LOG_DEBUG); $sql = "UPDATE ".MAIN_DB_PREFIX."bank";
$result = $db->query($sql); $sql.= " SET num_releve=".($num_rel?"'".$num_rel."'":"null");
if ($result) if (empty($num_rel)) $sql.= ", rappro = 0";
{ else $sql.=", rappro = ".$rappro;
$db->commit(); $sql.= " WHERE rowid = ".$rowid;
}
else dol_syslog("ligne.php sql=".$sql, LOG_DEBUG);
{ $result = $db->query($sql);
$db->rollback(); if ($result)
dol_print_error($db); {
} $db->commit();
}
else
{
$db->rollback();
dol_print_error($db);
}
}
} }
/* /*
* View * View
*/ */
@ -175,17 +189,17 @@ $sql.= " ORDER BY label";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$var=True; $var=True;
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $i = 0;
$options = "<option value=\"0\" selected=\"true\">&nbsp;</option>"; $options = "<option value=\"0\" selected=\"true\">&nbsp;</option>";
while ($i < $num) while ($i < $num)
{ {
$obj = $db->fetch_object($result); $obj = $db->fetch_object($result);
$options .= "<option value=\"$obj->rowid\">$obj->label</option>\n"; $options .= "<option value=\"$obj->rowid\">$obj->label</option>\n";
$i++; $i++;
} }
$db->free($result); $db->free($result);
} }
$var=False; $var=False;
@ -203,6 +217,7 @@ $h++;
dol_fiche_head($head, $hselected, $langs->trans('LineRecord'),0,'account'); dol_fiche_head($head, $hselected, $langs->trans('LineRecord'),0,'account');
if ($mesg) print '<div class="error">'.$mesg.'</div><br>';
$sql = "SELECT b.rowid,b.dateo as do,b.datev as dv, b.amount, b.label, b.rappro,"; $sql = "SELECT b.rowid,b.dateo as do,b.datev as dv, b.amount, b.label, b.rappro,";
$sql.= " b.num_releve, b.fk_user_author, b.num_chq, b.fk_type, b.fk_account"; $sql.= " b.num_releve, b.fk_user_author, b.num_chq, b.fk_type, b.fk_account";
@ -213,54 +228,48 @@ $sql.= " ORDER BY dateo ASC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$i = 0; $total = 0; $i = 0; $total = 0;
if ($db->num_rows($result)) if ($db->num_rows($result))
{ {
// Confirmations // Confirmations
if ($_GET["action"] == 'delete_categ') if ($_GET["action"] == 'delete_categ')
{ {
$ret=$html->form_confirm("ligne.php?rowid=".$_GET["rowid"]."&amp;cat1=".$_GET["fk_categ"]."&amp;orig_account=".$orig_account,$langs->trans("RemoveFromRubrique"),$langs->trans("RemoveFromRubriqueConfirm"),"confirm_delete_categ"); $ret=$html->form_confirm("ligne.php?rowid=".$_GET["rowid"]."&amp;cat1=".$_GET["fk_categ"]."&amp;orig_account=".$orig_account,$langs->trans("RemoveFromRubrique"),$langs->trans("RemoveFromRubriqueConfirm"),"confirm_delete_categ");
if ($ret == 'html') print '<br>'; if ($ret == 'html') print '<br>';
} }
print '<table class="border" width="100%">'; print '<table class="border" width="100%">';
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$total = $total + $objp->amount; $total = $total + $objp->amount;
$acct=new Account($db); $acct=new Account($db);
$acct->fetch($objp->fk_account); $acct->fetch($objp->fk_account);
$account = $acct->id; $account = $acct->id;
$bankline = new AccountLine($db); $bankline = new AccountLine($db);
$bankline->fetch($rowid,$ref); $bankline->fetch($rowid,$ref);
$links=$acct->get_url($rowid); $links=$acct->get_url($rowid);
$bankline->load_previous_next_ref('','rowid'); $bankline->load_previous_next_ref('','rowid');
// Ref // Ref
print '<tr><td width="20%">'.$langs->trans("Ref")."</td>"; print '<tr><td width="20%">'.$langs->trans("Ref")."</td>";
print '<td colspan="4">'; print '<td colspan="4">';
print $html->showrefnav($bankline,'rowid','',1,'rowid','rowid'); print $html->showrefnav($bankline,'rowid','',1,'rowid','rowid');
print '</td>'; print '</td>';
print '</tr>'; print '</tr>';
$i++; $i++;
print '<form name="update" method="post" action="ligne.php?rowid='.$objp->rowid.'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"update\">";
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
// Account // Account
print "<tr><td>".$langs->trans("Account")."</td>"; print "<tr><td>".$langs->trans("Account")."</td>";
print '<td colspan="4">'; print '<td colspan="4">';
print '<a href="account.php?account='.$acct->id.'">'.img_object($langs->trans("ShowAccount"),'account').' '.$acct->label.'</a>'; print '<a href="account.php?account='.$acct->id.'">'.img_object($langs->trans("ShowAccount"),'account').' '.$acct->label.'</a>';
print '<input type="hidden" name="accountid" value="'.$acct->id.'">'; print '</td>';
print '</td>'; print '</tr>';
print '</tr>';
// Show links of bank transactions // Show links of bank transactions
if (sizeof($links)) if (sizeof($links))
@ -327,177 +336,218 @@ if ($result)
print '</td></tr>'; print '</td></tr>';
} }
// Type of payment / Number
print "<tr><td>".$langs->trans("Type")." / ".$langs->trans("Numero")."</td><td colspan=\"3\">";
if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
{
print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="type">';
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
print $html->select_types_paiements($objp->fk_type,"value",'',2);
print '<input type="text" class="flat" name="num_chq" value="'.(empty($objp->num_chq) ? '' : $objp->num_chq).'">';
print '</td><td align="center" width="20%"><input type="submit" class="button" value="'.$langs->trans("Update").'">';
print "</form>";
}
else
{
print $objp->fk_type.' '.$objp->num_chq.'</td><td>&nbsp;</td>';
}
print "</td></tr>";
// Bank
print "<tr><td>".$langs->trans("Bank")."</td><td colspan=\"3\">";
if ($user->rights->banque->modifier)
{
print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="banque">';
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
print '<input type="text" class="flat" size="40" name="banque" value="'.(empty($objp->banque) ? '' : $objp->banque).'">';
print '</td><td align="center" width="20%"><input type="submit" class="button" value="'.$langs->trans("Update").'">';
print "</form>";
}
else
{
print $objp->banque.'&nbsp;</td><td>&nbsp;</td>';
}
print "</td></tr>";
// Transmitter
print "<tr><td>".$langs->trans("CheckTransmitter")."</td><td colspan=\"3\">";
if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
{
print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="emetteur">';
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
print '<input type="text" class="flat" size="40" name="emetteur" value="'.(empty($objp->emetteur) ? '' : stripslashes($objp->emetteur)).'">';
print '</td><td align="center" width="20%"><input type="submit" class="button" value="'.$langs->trans("Update").'">';
print "</form>";
}
else
{
print $objp->emetteur.'&nbsp;</td><td>&nbsp;</td>';
}
print "</td></tr>";
print '<form name="update" method="post" action="ligne.php?rowid='.$objp->rowid.'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"action\" value=\"update\">";
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
print '<input type="hidden" name="accountid" value="'.$acct->id.'">';
// Date ope // Date ope
print '<tr><td>'.$langs->trans("DateOperation").'</td>'; print '<tr><td>'.$langs->trans("DateOperation").'</td>';
if (! $objp->rappro && ($user->rights->banque->modifier || $user->rights->banque->consolidate)) if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
{ {
print '<td colspan="3">'; print '<td colspan="3">';
$html->select_date($db->jdate($objp->do),'dateo','','','','update'); if ($objp->rappro) print dol_print_date($db->jdate($objp->do),"day");
print '</td><td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'"></td>'; else $html->select_date($db->jdate($objp->do),'dateo','','','','update');
} print '</td><td align="center" rowspan="4" width="20%"><input type="submit" class="button" value="'.$langs->trans("Update").'"'.($objp->rappro?' disabled="true"':'').'></td>';
else }
{ else
print '<td colspan="4">'; {
print dol_print_date($db->jdate($objp->do),"day"); print '<td colspan="4">';
} print dol_print_date($db->jdate($objp->do),"day");
print '</td></tr>'; }
print '</td></tr>';
// Value date // Value date
print "<tr><td>".$langs->trans("DateValue")."</td>"; print "<tr><td>".$langs->trans("DateValue")."</td>";
if (! $objp->rappro && ($user->rights->banque->modifier || $user->rights->banque->consolidate)) if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
{ {
print '<td colspan="3">'; print '<td colspan="3">';
$html->select_date($db->jdate($objp->dv),'datev','','','','update'); if ($objp->rappro) print dol_print_date($db->jdate($objp->dv),"day");
print ' &nbsp; '; else
print '<a href="'.$_SERVER['PHP_SELF'].'?action=dvprev&amp;account='.$_GET["account"].'&amp;rowid='.$objp->rowid.'">'; {
print img_edit_remove() . "</a> "; $html->select_date($db->jdate($objp->dv),'datev','','','','update');
print '<a href="'.$_SERVER['PHP_SELF'].'?action=dvnext&amp;account='.$_GET["account"].'&amp;rowid='.$objp->rowid.'">'; print ' &nbsp; ';
print img_edit_add() ."</a>"; print '<a href="'.$_SERVER['PHP_SELF'].'?action=dvprev&amp;account='.$_GET["account"].'&amp;rowid='.$objp->rowid.'">';
print '</td>'; print img_edit_remove() . "</a> ";
print '<td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'"></td>'; print '<a href="'.$_SERVER['PHP_SELF'].'?action=dvnext&amp;account='.$_GET["account"].'&amp;rowid='.$objp->rowid.'">';
} print img_edit_add() ."</a>";
else }
{ }
print '<td colspan="4">'; else
print dol_print_date($db->jdate($objp->dv),"day"); {
print '</td>'; print '<td colspan="4">';
} print dol_print_date($db->jdate($objp->dv),"day");
print "</tr>"; print '</td>';
}
print "</tr>";
// Description // Description
print "<tr><td>".$langs->trans("Label")."</td>"; print "<tr><td>".$langs->trans("Label")."</td>";
if (! $objp->rappro && ($user->rights->banque->modifier || $user->rights->banque->consolidate)) if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
{ {
print '<td colspan="3">'; print '<td colspan="3">';
print '<input name="label" class="flat" value="'; if ($objp->rappro)
if (preg_match('/^\((.*)\)$/i',$objp->label,$reg)) {
{ if (preg_match('/^\((.*)\)$/i',$objp->label,$reg))
// Label generique car entre parentheses. On l'affiche en le traduisant {
print $langs->trans($reg[1]); // Label generique car entre parentheses. On l'affiche en le traduisant
} print $langs->trans($reg[1]);
else }
{ else
print $objp->label; {
} print $objp->label;
print '" size="50">'; }
print '</td>'; }
print '<td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'">'; else
} {
else print '<input name="label" class="flat" value="';
{ if (preg_match('/^\((.*)\)$/i',$objp->label,$reg))
print '<td colspan="4">'; {
if (preg_match('/^\((.*)\)$/i',$objp->label,$reg)) // Label generique car entre parentheses. On l'affiche en le traduisant
{ print $langs->trans($reg[1]);
// Label generique car entre parentheses. On l'affiche en le traduisant }
print $langs->trans($reg[1]); else
} {
else print $objp->label;
{ }
print $objp->label; print '" size="50">';
} }
} }
print '</td></tr>'; else
{
print '<td colspan="4">';
if (preg_match('/^\((.*)\)$/i',$objp->label,$reg))
{
// Label generique car entre parentheses. On l'affiche en le traduisant
print $langs->trans($reg[1]);
}
else
{
print $objp->label;
}
}
print '</td></tr>';
// Amount // Amount
print "<tr><td>".$langs->trans("Amount")."</td>"; print "<tr><td>".$langs->trans("Amount")."</td>";
if (! $objp->rappro && $user->rights->banque->modifier) if ($user->rights->banque->modifier || $user->rights->banque->consolidate)
{ {
print '<td colspan="3">'; print '<td colspan="3">';
print '<input name="amount" class="flat" size="10" value="'.price($objp->amount).'"> '.$langs->trans("Currency".$conf->monnaie); if ($objp->rappro) print price($objp->amount);
print '</td><td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'">'; else print '<input name="amount" class="flat" size="10" value="'.price($objp->amount).'"> '.$langs->trans("Currency".$conf->monnaie);
} print '</td>';
else }
{ else
print '<td colspan="4">'; {
print price($objp->amount); print '<td colspan="4">';
} print price($objp->amount);
print "</td></tr>"; }
print "</td></tr>";
print "</form>"; print "</form>";
print "</table>";
// Type paiement // Releve rappro
print "<tr><td>".$langs->trans("Type")." / ".$langs->trans("Numero")."</td><td colspan=\"3\">"; if ($acct->rappro) // Si compte rapprochable
if ($user->rights->banque->modifier || $user->rights->banque->consolidate) {
{ print '<br>'."\n";
print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">"; print_fiche_titre($langs->trans("Reconciliation"),'','');
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">";
print '<input type="hidden" name="action" value="type">'; print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">"; print '<input type="hidden" name="action" value="setreconcile">';
print $html->select_types_paiements($objp->fk_type,"value",'',2); print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
print '<input type="text" class="flat" name="num_chq" value="'.(empty($objp->num_chq) ? '' : $objp->num_chq).'">';
print '</td><td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'">';
print "</form>";
}
else
{
print $objp->fk_type.' '.$objp->num_chq.'</td><td>&nbsp;</td>';
}
print "</td></tr>";
// Banque print '<table class="border" width="100%">';
print "<tr><td>".$langs->trans("Bank")."</td><td colspan=\"3\">";
if ($user->rights->banque->modifier)
{
print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="banque">';
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
print '<input type="text" class="flat" size="40" name="banque" value="'.(empty($objp->banque) ? '' : $objp->banque).'">';
print '</td><td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'">';
print "</form>";
}
else
{
print $objp->banque.'&nbsp;</td><td>&nbsp;</td>';
}
print "</td></tr>";
// Emetteur print '<tr><td width="20%">'.$langs->trans("Conciliation")."</td>";
print "<tr><td>".$langs->trans("CheckTransmitter")."</td><td colspan=\"3\">"; if ($user->rights->banque->consolidate)
if ($user->rights->banque->modifier || $user->rights->banque->consolidate) {
{ print '<td colspan="3">';
print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">"; print $langs->trans("AccountStatement").' <input name="num_rel" class="flat" value="'.$objp->num_releve.'">';
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">'; print '</td><td align="center" rowspan="2" width="20%"><input type="submit" class="button" value="'.$langs->trans("Update").'"></td>';
print '<input type="hidden" name="action" value="emetteur">'; }
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">"; else
print '<input type="text" class="flat" size="40" name="emetteur" value="'.(empty($objp->emetteur) ? '' : stripslashes($objp->emetteur)).'">'; {
print '</td><td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'">'; print '<td colspan="4">'.$objp->num_releve.'&nbsp;</td>';
print "</form>"; }
} print '</tr>';
else
{
print $objp->emetteur.'&nbsp;</td><td>&nbsp;</td>';
}
print "</td></tr>";
print "<tr><td>".$langs->trans("BankLineConciliated")."</td>";
if ($user->rights->banque->consolidate)
{
print '<td colspan="3">';
print '<input type="checkbox" name="reconciled" class="flat" '.(isset($_POST["reconciled"])?($_POST["reconciled"]?' checked="true"':''):($objp->rappro?' checked="true"':'')).'">';
print '</td>';
}
else
{
print '<td colspan="4">'.yn($objp->rappro).'</td>';
}
print '</tr>';
// Releve rappro print "</table>";
if ($acct->rappro) // Si compte rapprochable print '</form>';
{ }
print "<tr><td>".$langs->trans("Conciliation")."</td>";
if ($user->rights->banque->consolidate)
{
print "<form method=\"post\" action=\"ligne.php?rowid=$objp->rowid\">";
print '<input type="hidden" name="token" value="'.$_SESSION['newtoken'].'">';
print '<input type="hidden" name="action" value="num_releve">';
print "<input type=\"hidden\" name=\"orig_account\" value=\"".$orig_account."\">";
print '<td colspan="3">';
print $langs->trans("AccountStatement").' <input name="num_rel" class="flat" value="'.$objp->num_releve.'">';
print '</td><td align="center"><input type="submit" class="button" value="'.$langs->trans("Update").'"></td>';
print '</form>';
}
else
{
print '<td colspan="4">'.$objp->num_releve.'&nbsp;</td>';
}
print '</tr>';
}
print "</table>"; }
} $db->free($result);
$db->free($result);
} }
print '</div>'; print '</div>';
@ -525,24 +575,24 @@ $sql.= " ORDER BY c.label";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$var=True; $var=True;
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $total = 0; $i = 0; $total = 0;
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
$var=!$var; $var=!$var;
print "<tr $bc[$var]>"; print "<tr $bc[$var]>";
print "<td>$objp->label</td>"; print "<td>$objp->label</td>";
print "<td align=\"center\"><a href=\"budget.php?bid=$objp->rowid\">".$langs->trans("ListBankTransactions")."</a></td>"; print "<td align=\"center\"><a href=\"budget.php?bid=$objp->rowid\">".$langs->trans("ListBankTransactions")."</a></td>";
print "<td align=\"right\"><a href=\"ligne.php?action=delete_categ&amp;rowid=$rowid&amp;fk_categ=$objp->rowid\">".img_delete($langs->trans("Remove"))."</a></td>"; print "<td align=\"right\"><a href=\"ligne.php?action=delete_categ&amp;rowid=$rowid&amp;fk_categ=$objp->rowid\">".img_delete($langs->trans("Remove"))."</a></td>";
print "</tr>"; print "</tr>";
$i++; $i++;
} }
$db->free($result); $db->free($result);
} }
print "</table>"; print "</table>";

View File

@ -84,7 +84,7 @@ if ($resql)
print '<table class="liste" width="100%">'; print '<table class="liste" width="100%">';
print '<tr class="liste_titre">'; print '<tr class="liste_titre">';
print_liste_field_titre($langs->trans("Ref"),"liste.php","bc.number","",$paramlist,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Ref"),"liste.php","bc.number","",$paramlist,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("DateCreation"),"liste.php","dp","",$paramlist,'align="center"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Date"),"liste.php","dp","",$paramlist,'align="center"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Account"),"liste.php","ba.label","",$paramlist,"",$sortfield,$sortorder); print_liste_field_titre($langs->trans("Account"),"liste.php","ba.label","",$paramlist,"",$sortfield,$sortorder);
print_liste_field_titre($langs->trans("NbOfCheques"),"liste.php","bc.nbcheque","",$paramlist,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("NbOfCheques"),"liste.php","bc.nbcheque","",$paramlist,'align="right"',$sortfield,$sortorder);
print_liste_field_titre($langs->trans("Amount"),"liste.php","bc.amount","",$paramlist,'align="right"',$sortfield,$sortorder); print_liste_field_titre($langs->trans("Amount"),"liste.php","bc.amount","",$paramlist,'align="right"',$sortfield,$sortorder);