First CashControl version
This commit is contained in:
parent
db46d82de3
commit
cdaf048766
204
htdocs/compta/cashcontrol/cashcontrol.php
Normal file
204
htdocs/compta/cashcontrol/cashcontrol.php
Normal file
@ -0,0 +1,204 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2005 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2013 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2013 Charles-Fr BENKE <charles.fr@benke.fr>
|
||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||
* Copyright (C) 2016 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2018 Andreu Bisquerra <jove@bisquerra.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/compta/bank/categ.php
|
||||
* \ingroup compta
|
||||
* \brief Page ajout de categories bancaires
|
||||
*/
|
||||
|
||||
$res=@include("../main.inc.php");
|
||||
if (! $res) $res=@include("../../main.inc.php");
|
||||
include_once 'class/cashcontrol.class.php';
|
||||
|
||||
$langs->loadLangs(array("cashcontrol","install","cashdesk","admin"));
|
||||
|
||||
$action=GETPOST('action','aZ09');
|
||||
$id=GETPOST('id');
|
||||
|
||||
if (!$user->rights->banque->configurer)
|
||||
accessforbidden();
|
||||
|
||||
$categid = GETPOST('categid');
|
||||
$label = GETPOST("label");
|
||||
|
||||
if (empty($conf->global->CASHDESK_ID_BANKACCOUNT_CASH) or empty($conf->global->CASHDESK_ID_BANKACCOUNT_CB)) setEventMessages($langs->trans("CashDesk")." - ".$langs->trans("NotConfigured"), null, 'errors');
|
||||
|
||||
/*
|
||||
* Add category
|
||||
*/
|
||||
if ($action=="start")
|
||||
{
|
||||
$cashcontrol= new CashControl($db);
|
||||
$cashcontrol->opening=GETPOST('opening');
|
||||
if (GETPOST('posmodule')==0) $cashcontrol->posmodule="cashdesk";
|
||||
else if (GETPOST('posmodule')==1) $cashcontrol->posmodule="takepos";
|
||||
$cashcontrol->posnumber=GETPOST('posnumber');
|
||||
$id=$cashcontrol->create($user);
|
||||
$action="view";
|
||||
}
|
||||
|
||||
if ($action=="close")
|
||||
{
|
||||
$cashcontrol= new CashControl($db);
|
||||
$cashcontrol->id=$id;
|
||||
$cashcontrol->close($user);
|
||||
$action="view";
|
||||
}
|
||||
|
||||
|
||||
if ($action=="create")
|
||||
{
|
||||
llxHeader();
|
||||
print load_fiche_titre("Cashcontrol - ".$langs->trans("New"), '', 'title_bank.png');
|
||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
print '<input type="hidden" name="action" value="start">';
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Ref").'</td><td>'.$langs->trans("InitialBankBalance").'</td><td>'.$langs->trans("Module").'</td><td>'.$langs->trans("CashDesk").' ID</td><td>,</td>';
|
||||
print "</tr>\n";
|
||||
print '<tr class="oddeven">';
|
||||
print '<td> </td><td><input name="opening" type="text" size="10" value="0"></td>';
|
||||
print '<td>'.$form->selectarray('posmodule', array('0'=>$langs->trans('CashDesk'),'1'=>$langs->trans('TakePOS')),1).'</td>';
|
||||
print '<td><input name="posnumber" type="text" size="10" value="0"></td>';
|
||||
print '<td align="center"><input type="submit" name="add" class="button" value="'.$langs->trans("Start").'"></td>';
|
||||
print '</tr>';
|
||||
print '</table></form>';
|
||||
}
|
||||
|
||||
|
||||
if ($action=="list")
|
||||
{
|
||||
llxHeader();
|
||||
print load_fiche_titre("Cashcontrol - ".$langs->trans("List"), '', 'title_bank.png');
|
||||
print '<form method="POST" action="'.$_SERVER["PHP_SELF"].'">';
|
||||
print '<input type="hidden" name="action" value="start">';
|
||||
print '<table class="noborder" width="100%">';
|
||||
print '<tr class="liste_titre">';
|
||||
print '<td>'.$langs->trans("Ref").'</td><td>'.$langs->trans("DateCreationShort").'</td><td colspan="2">'.$langs->trans("DateEnd").'</td><td align=right>'.$langs->trans("Cash").'</td><td align=right>'.$langs->trans("PaymentTypeCB").'</td><td>'.$langs->trans("Status").'</td>';
|
||||
print "</tr>\n";
|
||||
|
||||
$sql = "SELECT *";
|
||||
$sql.= " FROM ";
|
||||
$sql.= MAIN_DB_PREFIX."pos_cash_fence order by rowid DESC";
|
||||
$result = $db->query($sql);
|
||||
if ($result) {
|
||||
$i = 0;
|
||||
$num = $db->num_rows($result);
|
||||
|
||||
while ($i < $num) {
|
||||
print '<tr class="oddeven">';
|
||||
$objp = $db->fetch_object($result);
|
||||
$totalpaye += $objp->amount;
|
||||
print '<td>';
|
||||
print '<a href="cashcontrol.php?action=view&id='.$objp->rowid.'">'.$objp->rowid.'</a>';
|
||||
print '</td><td>'.dol_print_date($objp->date_creation, 'dayhour').'<td><td>'.dol_print_date(strtotime($objp->year_close."-".$objp->month_close."-".$objp->day_close), 'day').'</td>';
|
||||
print '<td align=right>';
|
||||
if ($objp->status==2) print price($objp->cash);
|
||||
print '</td><td align=right>';
|
||||
if ($objp->status==2) price($objp->card);
|
||||
print '</td><td>';
|
||||
if ($objp->status==1) print $langs->trans("Opened");
|
||||
if ($objp->status==2) print $langs->trans("Closed");
|
||||
print '</td></tr>';
|
||||
$i ++;
|
||||
}
|
||||
} else {
|
||||
//no hay
|
||||
}
|
||||
|
||||
print '</table></form>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($action=="view")
|
||||
{
|
||||
$cashcontrol= new CashControl($db);
|
||||
$cashcontrol->fetch($id);
|
||||
llxHeader();
|
||||
print load_fiche_titre($langs->trans("CashControl"), '', 'title_bank.png');
|
||||
print '<div class="fichecenter">';
|
||||
print '<div class="fichehalfleft">';
|
||||
print '<div class="underbanner clearboth"></div>';
|
||||
print '<table class="border tableforfield" width="100%">';
|
||||
|
||||
print '<tr><td class="nowrap">';
|
||||
print $langs->trans("Code");
|
||||
print '</td><td colspan="2">';
|
||||
print $id;
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td class="nowrap">';
|
||||
print $langs->trans("DateCreationShort");
|
||||
print '</td><td colspan="2">';
|
||||
print dol_print_date($cashcontrol->date_creation, 'dayhour');
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td class="nowrap">';
|
||||
print $langs->trans("DateEnd");
|
||||
print '</td><td colspan="2">';
|
||||
print dol_print_date(strtotime($cashcontrol->year_close."-".$cashcontrol->month_close."-".$cashcontrol->day_close), 'day');
|
||||
print '</td></tr>';
|
||||
|
||||
print '<tr><td class="nowrap">';
|
||||
print $langs->trans("Status");
|
||||
print '</td><td colspan="2">';
|
||||
if ($cashcontrol->status==1) print $langs->trans("Opened");
|
||||
if ($cashcontrol->status==2) print $langs->trans("Closed");
|
||||
print '</td></tr>';
|
||||
|
||||
print '</table>';
|
||||
print '</div>';
|
||||
print '<div class="fichehalfright"><div class="ficheaddleft">';
|
||||
print '<div class="underbanner clearboth"></div>';
|
||||
print '<table class="border tableforfield" width="100%">';
|
||||
|
||||
print '<tr><td valign="middle">'.$langs->trans("InitialBankBalance").'</td><td colspan="3">';
|
||||
print price($cashcontrol->opening);
|
||||
print "</td></tr>";
|
||||
|
||||
print '<tr><td valign="middle">'.$langs->trans("CashDesk").' ID</td><td colspan="3">';
|
||||
print $cashcontrol->posnumber;
|
||||
print "</td></tr>";
|
||||
|
||||
print '<tr><td valign="middle">'.$langs->trans("Module").'</td><td colspan="3">';
|
||||
print $cashcontrol->posmodule;
|
||||
print "</td></tr>";
|
||||
|
||||
print "</table>\n";
|
||||
print '</div>';
|
||||
print '</div></div>';
|
||||
print '<div style="clear:both"></div>';
|
||||
|
||||
dol_fiche_end();
|
||||
|
||||
print '<div class="tabsAction">';
|
||||
print '<div class="inline-block divButAction"><a target="_blank" class="butAction" href="report.php?id='.$id.'">' . $langs->trans('PrintTicket') . '</a></div>';
|
||||
if ($cashcontrol->status==1) print '<div class="inline-block divButAction"><a class="butAction" href="' . $_SERVER["PHP_SELF"] . '?id=' . $id . '&action=close">' . $langs->trans('Close') . '</a></div>';
|
||||
print '</div>';
|
||||
|
||||
print '<center><iframe src="report.php?id='.$id.'" width="60%" height="800"></iframe></center>';
|
||||
}
|
||||
|
||||
llxFooter();
|
||||
199
htdocs/compta/cashcontrol/class/cashcontrol.class.php
Normal file
199
htdocs/compta/cashcontrol/class/cashcontrol.class.php
Normal file
@ -0,0 +1,199 @@
|
||||
<?php
|
||||
/* Copyright (C) 2008 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2009 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2016 Marcos García <marcosgdf@gmail.com>
|
||||
* Copyright (C) 2018 Andreu Bisquerra <jove@bisquerra.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file cashcontrol/class/cashcontrol.class.php
|
||||
* \ingroup bank
|
||||
* \brief This file is CRUD class file (Create/Read/Update/Delete) for bank categories
|
||||
*/
|
||||
|
||||
/**
|
||||
* Class to manage bank categories
|
||||
*/
|
||||
class CashControl // extends CommonObject
|
||||
{
|
||||
public $id;
|
||||
public $opening;
|
||||
public $status;
|
||||
public $date_creation;
|
||||
public $year_close;
|
||||
public $month_close;
|
||||
public $day_close;
|
||||
public $posmodule;
|
||||
public $posnumber;
|
||||
|
||||
|
||||
/**
|
||||
* Constructor
|
||||
*
|
||||
* @param DoliDB $db Database handler
|
||||
*/
|
||||
public function __construct(DoliDB $db)
|
||||
{
|
||||
$this->db = $db;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Create in database
|
||||
*
|
||||
* @param User $user User that create
|
||||
* @param int $notrigger 0=launch triggers after, 1=disable triggers
|
||||
* @return int <0 if KO, Id of created object if OK
|
||||
*/
|
||||
public function create(User $user, $notrigger = 0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$error = 0;
|
||||
|
||||
// Insert request
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."pos_cash_fence (";
|
||||
$sql .= "entity";
|
||||
$sql .= ", opening";
|
||||
$sql .= ", status";
|
||||
$sql .= ", date_creation";
|
||||
$sql .= ", posmodule";
|
||||
$sql .= ", posnumber";
|
||||
$sql .= ") VALUES (";
|
||||
$sql .= $conf->entity;
|
||||
$sql .= ", ".$this->opening;
|
||||
$sql .= ",1";
|
||||
$sql .= ", now()";
|
||||
$sql .= ", '".$this->posmodule."'";
|
||||
$sql .= ", '".$this->posnumber."'";
|
||||
$sql .= ")";
|
||||
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (!$resql) {
|
||||
$error++;
|
||||
$this->errors[] = "Error ".$this->db->lasterror();
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."pos_cash_fence");
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error) {
|
||||
foreach ($this->errors as $errmsg) {
|
||||
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
|
||||
$this->error .= ($this->error ? ', '.$errmsg : $errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1 * $error;
|
||||
} else {
|
||||
$this->db->commit();
|
||||
return $this->id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public function close(User $user, $notrigger = 0)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$error = 0;
|
||||
|
||||
// Update request
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence ";
|
||||
$sql .= "SET";
|
||||
$sql .= " day_close=DAYOFMONTH(NOW())";
|
||||
$sql .= ", month_close=MONTH(NOW())";
|
||||
$sql .= ", year_close=YEAR(NOW())";
|
||||
$sql .= ", status=2";
|
||||
$sql .= " where rowid=".$this->id;
|
||||
$this->db->begin();
|
||||
|
||||
dol_syslog(get_class($this)."::create", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if (!$resql) {
|
||||
$error++;
|
||||
$this->errors[] = "Error ".$this->db->lasterror();
|
||||
}
|
||||
|
||||
if (!$error) {
|
||||
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."pos_cash_fence");
|
||||
}
|
||||
|
||||
// Commit or rollback
|
||||
if ($error) {
|
||||
foreach ($this->errors as $errmsg) {
|
||||
dol_syslog(get_class($this)."::create ".$errmsg, LOG_ERR);
|
||||
$this->error .= ($this->error ? ', '.$errmsg : $errmsg);
|
||||
}
|
||||
$this->db->rollback();
|
||||
return -1 * $error;
|
||||
} else {
|
||||
$this->db->commit();
|
||||
return $this->id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Load object in memory from database
|
||||
*
|
||||
* @param int $id Id object
|
||||
* @return int <0 if KO, >0 if OK
|
||||
*/
|
||||
public function fetch($id)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$sql = "SELECT";
|
||||
$sql .= " *";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."pos_cash_fence";
|
||||
$sql .= " WHERE rowid = ".$id;
|
||||
$sql .= " AND entity = ".$conf->entity;
|
||||
|
||||
dol_syslog(get_class($this)."::fetch", LOG_DEBUG);
|
||||
$resql = $this->db->query($sql);
|
||||
if ($resql) {
|
||||
if ($this->db->num_rows($resql)) {
|
||||
$obj = $this->db->fetch_object($resql);
|
||||
$this->opening = $obj->opening;
|
||||
$this->status = $obj->status;
|
||||
$this->date_creation = $obj->date_creation;
|
||||
$this->year_close = $obj->year_close;
|
||||
$this->month_close = $obj->month_close;
|
||||
$this->day_close = $obj->day_close;
|
||||
$this->posmodule = $obj->posmodule;
|
||||
$this->posnumber = $obj->posnumber;
|
||||
$this->id=$id;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
|
||||
return 1;
|
||||
} else {
|
||||
$this->error = "Error ".$this->db->lasterror();
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
303
htdocs/compta/cashcontrol/report.php
Normal file
303
htdocs/compta/cashcontrol/report.php
Normal file
@ -0,0 +1,303 @@
|
||||
<?php
|
||||
/* Copyright (C) 2001-2002 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
||||
* Copyright (C) 2004-2016 Laurent Destailleur <eldy@users.sourceforge.net>
|
||||
* Copyright (C) 2005-2010 Regis Houssin <regis.houssin@capnetworks.com>
|
||||
* Copyright (C) 2012 Vinícius Nogueira <viniciusvgn@gmail.com>
|
||||
* Copyright (C) 2014 Florian Henry <florian.henry@open-cooncept.pro>
|
||||
* Copyright (C) 2015 Jean-François Ferry <jfefe@aternatik.fr>
|
||||
* Copyright (C) 2016 Juanjo Menent <jmenent@2byte.es>
|
||||
* Copyright (C) 2017 Alexandre Spangaro <aspangaro@zendsi.com>
|
||||
* Copyright (C) 2018 Andreu Bisquerra <jove@bisquerra.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \file htdocs/compta/bank/bankentries_list.php
|
||||
* \ingroup banque
|
||||
* \brief List of bank transactions
|
||||
*/
|
||||
|
||||
$res=@include("../main.inc.php");
|
||||
if (! $res) $res=@include("../../main.inc.php");
|
||||
require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php';
|
||||
|
||||
$id = GETPOST('id','int');
|
||||
|
||||
$_GET['optioncss']="print";
|
||||
include_once 'class/cashcontrol.class.php';
|
||||
$cashcontrol= new CashControl($db);
|
||||
$cashcontrol->fetch($id);
|
||||
|
||||
$limit = GETPOST('limit')?GETPOST('limit','int'):$conf->liste_limit;
|
||||
$sortorder='ASC';
|
||||
$sortfield='b.datev,b.dateo,b.rowid';
|
||||
|
||||
$arrayfields=array(
|
||||
'b.rowid'=>array('label'=>$langs->trans("Ref"), 'checked'=>1),
|
||||
'b.dateo'=>array('label'=>$langs->trans("DateOperationShort"), 'checked'=>1),
|
||||
'b.num_chq'=>array('label'=>$langs->trans("Number"), 'checked'=>1),
|
||||
'ba.ref'=>array('label'=>$langs->trans("BankAccount"), 'checked'=>1),
|
||||
'b.debit'=>array('label'=>$langs->trans("Debit"), 'checked'=>1, 'position'=>600),
|
||||
'b.credit'=>array('label'=>$langs->trans("Credit"), 'checked'=>1, 'position'=>605),
|
||||
);
|
||||
|
||||
/*
|
||||
* View
|
||||
*/
|
||||
|
||||
llxHeader('', $langs->trans("CashControl"), '', '', 0, 0, array(), array(), $param);
|
||||
|
||||
$sql = "SELECT b.rowid, b.dateo as do, b.datev as dv, b.amount, b.label, b.rappro as conciliated, b.num_releve, b.num_chq,";
|
||||
$sql.= " b.fk_account, b.fk_type,";
|
||||
$sql.= " ba.rowid as bankid, ba.ref as bankref,";
|
||||
$sql.= " bu.url_id,";
|
||||
$sql.= " f.module_source, f.facnumber as facnumber";
|
||||
$sql.= " FROM ";
|
||||
if ($bid) $sql.= MAIN_DB_PREFIX."bank_class as l,";
|
||||
$sql.= " ".MAIN_DB_PREFIX."bank_account as ba,";
|
||||
$sql.= " ".MAIN_DB_PREFIX."bank as b";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."bank_url as bu ON bu.fk_bank = b.rowid AND type = 'payment'";
|
||||
$sql.= " LEFT JOIN ".MAIN_DB_PREFIX."facture as f ON bu.url_id = f.rowid";
|
||||
$sql.= " WHERE b.fk_account = ba.rowid";
|
||||
$sql.= " AND f.module_source='$cashcontrol->posmodule'";
|
||||
$sql.= " AND ba.entity IN (".getEntity('bank_account').")";
|
||||
|
||||
$sql.=" AND b.datec>'".$cashcontrol->date_creation."'";
|
||||
if ($cashcontrol->date_close>0) $sql.=" AND b.datec<'".$cashcontrol->date_close."'";
|
||||
$sql.=" AND (b.fk_account=";
|
||||
$sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH;
|
||||
$sql.=" or b.fk_account=";
|
||||
$sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB;
|
||||
$sql.=")";
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$num = $db->num_rows($resql);
|
||||
$i = 0;
|
||||
|
||||
print "<center><h2>";
|
||||
if ($cashcontrol->status==2) print "Cashcontrol ".$cashcontrol->id;
|
||||
else print $langs->trans("Cashcontrol")." - ".$langs->trans("Draft");
|
||||
print "<br>".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'day')."</h2></center>";
|
||||
|
||||
|
||||
print '<div class="div-table-responsive">';
|
||||
print '<table class="tagtable liste">'."\n";
|
||||
|
||||
// Fields title
|
||||
print '<tr class="liste_titre">';
|
||||
print_liste_field_titre($arrayfields['b.rowid']['label'],$_SERVER['PHP_SELF'],'b.rowid','',$param,'',$sortfield,$sortorder);
|
||||
print_liste_field_titre($arrayfields['b.dateo']['label'],$_SERVER['PHP_SELF'],'b.dateo','',$param,'align="left"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($arrayfields['ba.ref']['label'],$_SERVER['PHP_SELF'],'ba.ref','',$param,'align="right"',$sortfield,$sortorder);
|
||||
print_liste_field_titre($arrayfields['b.debit']['label'],$_SERVER['PHP_SELF'],'b.amount','',$param,'align="right"',$sortfield,$sortorder);
|
||||
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;
|
||||
|
||||
$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;
|
||||
|
||||
// Output a line with start balance
|
||||
if ($user->rights->banque->consolidate && $action == 'reconcile')
|
||||
{
|
||||
$tmpnbfieldbeforebalance=0;
|
||||
$tmpnbfieldafterbalance=0;
|
||||
$balancefieldfound=false;
|
||||
foreach($arrayfields as $key => $val)
|
||||
{
|
||||
if ($key == 'balancebefore' || $key == 'balance')
|
||||
{
|
||||
$balancefieldfound=true;
|
||||
continue;
|
||||
}
|
||||
if (! empty($arrayfields[$key]['checked']))
|
||||
{
|
||||
if (! $balancefieldfound) $tmpnbfieldbeforebalance++;
|
||||
else $tmpnbfieldafterbalance++;
|
||||
}
|
||||
}
|
||||
|
||||
print '<tr class="oddeven trforbreak">';
|
||||
if ($tmpnbfieldbeforebalance)
|
||||
{
|
||||
print '<td colspan="'.$tmpnbfieldbeforebalance.'">';
|
||||
print '</td>';
|
||||
}
|
||||
print '<td align="right">';
|
||||
print price(price2num($balance, 'MT'), 1, $langs);
|
||||
print '</td>';
|
||||
print '<td colspan="'.($tmpnbfieldafterbalance+3).'">';
|
||||
print '</td>';
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
|
||||
$balance = price2num($balance + ($sign * $objp->amount),'MT');
|
||||
|
||||
if (empty($cachebankaccount[$objp->bankid]))
|
||||
{
|
||||
$bankaccounttmp = new Account($db);
|
||||
$bankaccounttmp->fetch($objp->bankid);
|
||||
$cachebankaccount[$objp->bankid]=$bankaccounttmp;
|
||||
$bankaccount = $bankaccounttmp;
|
||||
}
|
||||
else
|
||||
{
|
||||
$bankaccount = $cachebankaccount[$objp->bankid];
|
||||
}
|
||||
print '<tr class="oddeven">';
|
||||
|
||||
if ($first==""){
|
||||
print '<td>'.$langs->trans("InitialBankBalance").'</td><td></td><td></td><td></td><td align="right">'.price($cashcontrol->opening).'</td></tr>';
|
||||
print '<tr class="oddeven">';
|
||||
$first="no";
|
||||
}
|
||||
|
||||
// Ref
|
||||
print '<td align="left" class="nowrap">';
|
||||
print $objp->facnumber;
|
||||
print '</td>';
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
|
||||
|
||||
// Date ope
|
||||
print '<td align="left" class="nowrap">';
|
||||
print '<span id="dateoperation_'.$objp->rowid.'">'.dol_print_date($db->jdate($objp->do),"day")."</span>";
|
||||
print "</td>\n";
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
|
||||
// Bank account
|
||||
print '<td align="right" class="nowrap">';
|
||||
print $bankaccount->getNomUrl(1);
|
||||
if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CASH==$bankaccount->rowid) $cash+=$objp->amount;
|
||||
if ($sql.=$conf->global->CASHDESK_ID_BANKACCOUNT_CB==$bankaccount->rowid) $bank+=$objp->amount;
|
||||
print "</td>\n";
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
|
||||
// Debit
|
||||
print '<td align="right">';
|
||||
if ($objp->amount < 0)
|
||||
{
|
||||
print price($objp->amount * -1);
|
||||
$totalarray['totaldeb'] += $objp->amount;
|
||||
}
|
||||
print "</td>\n";
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
if (! $i) $totalarray['totaldebfield']=$totalarray['nbfield'];
|
||||
|
||||
// Credit
|
||||
print '<td align="right">';
|
||||
if ($objp->amount > 0)
|
||||
{
|
||||
print price($objp->amount);
|
||||
$totalarray['totalcred'] += $objp->amount;
|
||||
}
|
||||
print "</td>\n";
|
||||
if (! $i) $totalarray['nbfield']++;
|
||||
if (! $i) $totalarray['totalcredfield']=$totalarray['nbfield'];
|
||||
|
||||
print "</tr>";
|
||||
|
||||
$i++;
|
||||
}
|
||||
|
||||
// Show total line
|
||||
if (isset($totalarray['totaldebfield']) || isset($totalarray['totalcredfield']))
|
||||
{
|
||||
print '<tr class="liste_total">';
|
||||
$i=0;
|
||||
while ($i < $totalarray['nbfield'])
|
||||
{
|
||||
$i++;
|
||||
if ($i == 1)
|
||||
{
|
||||
if ($num < $limit && empty($offset)) print '<td align="left">'.$langs->trans("Total").'</td>';
|
||||
else print '<td align="left">'.$langs->trans("Totalforthispage").'</td>';
|
||||
}
|
||||
elseif ($totalarray['totaldebfield'] == $i) print '<td align="right">'.price(-1 * $totalarray['totaldeb']).'</td>';
|
||||
elseif ($totalarray['totalcredfield'] == $i) print '<td align="right">'.price($totalarray['totalcred']).'</td>';
|
||||
else print '<td></td>';
|
||||
}
|
||||
print '</tr>';
|
||||
}
|
||||
|
||||
print "</table>";
|
||||
|
||||
$cash=$cash+$cashcontrol->opening;
|
||||
print "<div style='text-align: right'><h2>".$langs->trans("Cash").": ".price($cash)."<br><br>".$langs->trans("PaymentTypeCB").": ".price($bank)."</h2></div>";
|
||||
|
||||
|
||||
//save totals to DB
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."pos_cash_fence ";
|
||||
$sql .= "SET";
|
||||
$sql .= " cash='".$cash."'";
|
||||
$sql .= ", card='".$bank."'";
|
||||
$sql .= " where rowid=".$id;
|
||||
$db->query($sql);
|
||||
|
||||
print "</div>";
|
||||
|
||||
print '</form>';
|
||||
$db->free($resql);
|
||||
}
|
||||
else
|
||||
{
|
||||
dol_print_error($db);
|
||||
}
|
||||
|
||||
llxFooter();
|
||||
|
||||
$db->close();
|
||||
@ -1244,6 +1244,13 @@ function print_left_eldy_menu($db,$menu_array_before,$menu_array_after,&$tabMenu
|
||||
if (preg_match('/checks/',$leftmenu)) $newmenu->add("/compta/paiement/cheque/card.php?leftmenu=checks_bis&action=new&mainmenu=bank",$langs->trans("NewChequeDeposit"),1,$user->rights->banque->cheque);
|
||||
if (preg_match('/checks/',$leftmenu)) $newmenu->add("/compta/paiement/cheque/list.php?leftmenu=checks_bis&mainmenu=bank",$langs->trans("List"),1,$user->rights->banque->cheque);
|
||||
}
|
||||
|
||||
//Cash Control
|
||||
if ($conf->takepos->enabled or $conf->cashdesk->enabled){
|
||||
$newmenu->add("/compta/cashcontrol/cashcontrol.php?action=list",$langs->trans("CashControl"),0,1, '', $mainmenu, 'cashcontrol');
|
||||
$newmenu->add("/compta/cashcontrol/cashcontrol.php?action=list",$langs->trans("List"),1,1);
|
||||
$newmenu->add("/compta/cashcontrol/cashcontrol.php?action=create",$langs->trans("New"),1,1);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
34
htdocs/install/mysql/tables/llx_pos_cash_fence.sql
Normal file
34
htdocs/install/mysql/tables/llx_pos_cash_fence.sql
Normal file
@ -0,0 +1,34 @@
|
||||
-- Copyright (C) 2018 Andreu Bisquerra <jove@bisquerra.com>
|
||||
--
|
||||
-- This program is free software: you can redistribute it and/or modify
|
||||
-- it under the terms of the GNU General Public License as published by
|
||||
-- the Free Software Foundation, either version 3 of the License, or
|
||||
-- (at your option) any later version.
|
||||
--
|
||||
-- This program is distributed in the hope that it will be useful,
|
||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
-- GNU General Public License for more details.
|
||||
--
|
||||
-- You should have received a copy of the GNU General Public License
|
||||
-- along with this program. If not, see http://www.gnu.org/licenses/.
|
||||
|
||||
|
||||
CREATE TABLE llx_pos_cash_fence(
|
||||
rowid INTEGER AUTO_INCREMENT PRIMARY KEY,
|
||||
entity INTEGER DEFAULT 1 NOT NULL,
|
||||
label VARCHAR(255),
|
||||
opening double(24,8) default 0,
|
||||
cash double(24,8) default 0,
|
||||
card double(24,8) default 0,
|
||||
status INTEGER,
|
||||
date_creation DATETIME NOT NULL,
|
||||
day_close INTEGER,
|
||||
month_close INTEGER,
|
||||
year_close INTEGER,
|
||||
posmodule VARCHAR(30),
|
||||
posnumber VARCHAR(30),
|
||||
fk_user_valid integer,
|
||||
tms TIMESTAMP NOT NULL,
|
||||
import_key VARCHAR(14)
|
||||
) ENGINE=innodb;
|
||||
Loading…
Reference in New Issue
Block a user