diff --git a/htdocs/compta/cashcontrol/cashcontrol.php b/htdocs/compta/cashcontrol/cashcontrol.php new file mode 100644 index 00000000000..6671b0562ee --- /dev/null +++ b/htdocs/compta/cashcontrol/cashcontrol.php @@ -0,0 +1,204 @@ + + * Copyright (C) 2004-2013 Laurent Destailleur + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2013 Charles-Fr BENKE + * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2016 Marcos García + * Copyright (C) 2018 Andreu Bisquerra + * + * 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 . + */ + +/** + * \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 '
'; + print ''; + print ''; + print ''; + print ''; + print "\n"; + print ''; + print ''; + print ''; + print ''; + print ''; + print ''; + print '
'.$langs->trans("Ref").''.$langs->trans("InitialBankBalance").''.$langs->trans("Module").''.$langs->trans("CashDesk").' ID,
 '.$form->selectarray('posmodule', array('0'=>$langs->trans('CashDesk'),'1'=>$langs->trans('TakePOS')),1).'
'; +} + + +if ($action=="list") +{ +llxHeader(); + print load_fiche_titre("Cashcontrol - ".$langs->trans("List"), '', 'title_bank.png'); + print '
'; + print ''; + print ''; + print ''; + print ''; + print "\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 ''; + $objp = $db->fetch_object($result); + $totalpaye += $objp->amount; + print ''; + print ''; + $i ++; + } + } else { + //no hay + } + + print '
'.$langs->trans("Ref").''.$langs->trans("DateCreationShort").''.$langs->trans("DateEnd").''.$langs->trans("Cash").''.$langs->trans("PaymentTypeCB").''.$langs->trans("Status").'
'; + print ''.$objp->rowid.''; + print ''.dol_print_date($objp->date_creation, 'dayhour').''.dol_print_date(strtotime($objp->year_close."-".$objp->month_close."-".$objp->day_close), 'day').''; + if ($objp->status==2) print price($objp->cash); + print ''; + if ($objp->status==2) price($objp->card); + print ''; + if ($objp->status==1) print $langs->trans("Opened"); + if ($objp->status==2) print $langs->trans("Closed"); + print '
'; +} + + + +if ($action=="view") +{ + $cashcontrol= new CashControl($db); + $cashcontrol->fetch($id); + llxHeader(); + print load_fiche_titre($langs->trans("CashControl"), '', 'title_bank.png'); + print '
'; + print '
'; + print '
'; + print ''; + + print ''; + + print ''; + + print ''; + + print ''; + + print '
'; + print $langs->trans("Code"); + print ''; + print $id; + print '
'; + print $langs->trans("DateCreationShort"); + print ''; + print dol_print_date($cashcontrol->date_creation, 'dayhour'); + print '
'; + print $langs->trans("DateEnd"); + print ''; + print dol_print_date(strtotime($cashcontrol->year_close."-".$cashcontrol->month_close."-".$cashcontrol->day_close), 'day'); + print '
'; + print $langs->trans("Status"); + print ''; + if ($cashcontrol->status==1) print $langs->trans("Opened"); + if ($cashcontrol->status==2) print $langs->trans("Closed"); + print '
'; + print '
'; + print '
'; + print '
'; + print ''; + + print '"; + + print '"; + + print '"; + + print "
'.$langs->trans("InitialBankBalance").''; + print price($cashcontrol->opening); + print "
'.$langs->trans("CashDesk").' ID'; + print $cashcontrol->posnumber; + print "
'.$langs->trans("Module").''; + print $cashcontrol->posmodule; + print "
\n"; + print '
'; + print '
'; + print '
'; + + dol_fiche_end(); + + print '
'; + print ''; + if ($cashcontrol->status==1) print ''; + print '
'; + + print '
'; +} + +llxFooter(); diff --git a/htdocs/compta/cashcontrol/class/cashcontrol.class.php b/htdocs/compta/cashcontrol/class/cashcontrol.class.php new file mode 100644 index 00000000000..fcf80e093d8 --- /dev/null +++ b/htdocs/compta/cashcontrol/class/cashcontrol.class.php @@ -0,0 +1,199 @@ + + * Copyright (C) 2009 Regis Houssin + * Copyright (C) 2016 Marcos García + * Copyright (C) 2018 Andreu Bisquerra + * + * 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 . + */ + +/** + * \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; + } + } +} diff --git a/htdocs/compta/cashcontrol/report.php b/htdocs/compta/cashcontrol/report.php new file mode 100644 index 00000000000..8dd3075d8c7 --- /dev/null +++ b/htdocs/compta/cashcontrol/report.php @@ -0,0 +1,303 @@ + + * Copyright (C) 2004-2016 Laurent Destailleur + * Copyright (C) 2005-2010 Regis Houssin + * Copyright (C) 2012 Vinícius Nogueira + * Copyright (C) 2014 Florian Henry + * Copyright (C) 2015 Jean-François Ferry + * Copyright (C) 2016 Juanjo Menent + * Copyright (C) 2017 Alexandre Spangaro + * Copyright (C) 2018 Andreu Bisquerra + * + * 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 . + */ + +/** + * \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 "

"; + if ($cashcontrol->status==2) print "Cashcontrol ".$cashcontrol->id; + else print $langs->trans("Cashcontrol")." - ".$langs->trans("Draft"); + print "
".$langs->trans("DateCreationShort").": ".dol_print_date($cashcontrol->date_creation, 'day')."

"; + + + print '
'; + print ''."\n"; + + // Fields title + print ''; + 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 "\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 ''; + if ($tmpnbfieldbeforebalance) + { + print ''; + } + print ''; + print ''; + print ''; + } + } + + $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 ''; + + if ($first==""){ + print ''; + print ''; + $first="no"; + } + + // Ref + print ''; + if (! $i) $totalarray['nbfield']++; + + + // Date ope + print '\n"; + if (! $i) $totalarray['nbfield']++; + + // Bank account + print '\n"; + if (! $i) $totalarray['nbfield']++; + + // Debit + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totaldebfield']=$totalarray['nbfield']; + + // Credit + print '\n"; + if (! $i) $totalarray['nbfield']++; + if (! $i) $totalarray['totalcredfield']=$totalarray['nbfield']; + + print ""; + + $i++; + } + + // Show total line + if (isset($totalarray['totaldebfield']) || isset($totalarray['totalcredfield'])) + { + print ''; + $i=0; + while ($i < $totalarray['nbfield']) + { + $i++; + if ($i == 1) + { + if ($num < $limit && empty($offset)) print ''; + else print ''; + } + elseif ($totalarray['totaldebfield'] == $i) print ''; + elseif ($totalarray['totalcredfield'] == $i) print ''; + else print ''; + } + print ''; + } + + print "
'; + print ''; + print price(price2num($balance, 'MT'), 1, $langs); + print ''; + print '
'.$langs->trans("InitialBankBalance").''.price($cashcontrol->opening).'
'; + print $objp->facnumber; + print ''; + print ''.dol_print_date($db->jdate($objp->do),"day").""; + print "'; + 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 "'; + if ($objp->amount < 0) + { + print price($objp->amount * -1); + $totalarray['totaldeb'] += $objp->amount; + } + print "'; + if ($objp->amount > 0) + { + print price($objp->amount); + $totalarray['totalcred'] += $objp->amount; + } + print "
'.$langs->trans("Total").''.$langs->trans("Totalforthispage").''.price(-1 * $totalarray['totaldeb']).''.price($totalarray['totalcred']).'
"; + + $cash=$cash+$cashcontrol->opening; + print "

".$langs->trans("Cash").": ".price($cash)."

".$langs->trans("PaymentTypeCB").": ".price($bank)."

"; + + + //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 "
"; + + print ''; + $db->free($resql); +} +else +{ + dol_print_error($db); +} + +llxFooter(); + +$db->close(); diff --git a/htdocs/core/menus/standard/eldy.lib.php b/htdocs/core/menus/standard/eldy.lib.php index c97307bd830..3667f2ec157 100644 --- a/htdocs/core/menus/standard/eldy.lib.php +++ b/htdocs/core/menus/standard/eldy.lib.php @@ -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); + } } /* diff --git a/htdocs/install/mysql/tables/llx_pos_cash_fence.sql b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql new file mode 100644 index 00000000000..f8014e17366 --- /dev/null +++ b/htdocs/install/mysql/tables/llx_pos_cash_fence.sql @@ -0,0 +1,34 @@ +-- Copyright (C) 2018 Andreu Bisquerra +-- +-- 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; \ No newline at end of file