First CashControl version

This commit is contained in:
andreubisquerra 2018-12-08 21:33:54 +01:00 committed by Laurent Destailleur
parent db46d82de3
commit cdaf048766
5 changed files with 747 additions and 0 deletions

View 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>&nbsp;</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 . '&amp;action=close">' . $langs->trans('Close') . '</a></div>';
print '</div>';
print '<center><iframe src="report.php?id='.$id.'" width="60%" height="800"></iframe></center>';
}
llxFooter();

View 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;
}
}
}

View 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();

View File

@ -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&amp;action=new&amp;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&amp;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);
}
}
/*

View 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;