Save cash fence event into unalterable log

This commit is contained in:
Laurent Destailleur 2018-12-17 11:41:59 +01:00
parent 1979e3238c
commit 6b5c0d1ea1
4 changed files with 102 additions and 81 deletions

View File

@ -274,6 +274,17 @@ class BlockedLog
$this->error++;
}
}
else if($this->element === 'cashcontrol') {
require_once DOL_DOCUMENT_ROOT.'/compta/cashcontrol/class/cashcontrol.class.php';
$object = new CashControl($this->db);
if ($object->fetch($this->fk_object)>0) {
return $object->getNomUrl(1);
}
else{
$this->error++;
}
}
else if ($this->action == 'MODULE_SET')
{
return '<i class="opacitymedium">System to track events into unalterable logs were enabled</i>';
@ -355,6 +366,10 @@ class BlockedLog
{
$this->date_object = $object->dateh;
}
elseif ($object->element=='cashcontrol')
{
$this->date_object = $object->date_creation;
}
else {
$this->date_object = $object->date;
}
@ -368,7 +383,12 @@ class BlockedLog
// Set object_data
$this->object_data=new stdClass();
$arrayoffieldstoexclude = array('table_element','fields','ref_previous','ref_next','origin','origin_id','oldcopy','picto','error','modelpdf','table_element_line','linkedObjectsIds','linkedObjects','fk_delivery_address');
$arrayoffieldstoexclude = array(
'table_element','fields','ref_previous','ref_next','origin','origin_id','oldcopy','picto','error','errors','modelpdf',
'table_element_line','ismultientitymanaged','isextrafieldmanaged',
'linkedObjectsIds','linkedObjects','fk_delivery_address',
'context'
);
// Add thirdparty info
if (empty($object->thirdparty) && method_exists($object, 'fetch_thirdparty')) $object->fetch_thirdparty();

View File

@ -141,12 +141,17 @@ elseif ($action=="add")
if ($action=="close")
{
$object->id=$id;
$object->fetch($id);
$result = $object->valid($user);
if ($result <= 0)
{
setEventMessages($object->error, $object->errors, 'errors');
}
else
{
setEventMessages($langs->trans("CashFenceDone"), null);
}
$action="view";
}
@ -284,6 +289,11 @@ if (empty($action) || $action=="view")
llxHeader('', $langs->trans("CashControl"));
$head=array();
$head[0][0] = DOL_URL_ROOT.'/compta/cashcontrol/cashcontrol_card.php?id='.$object->id;
$head[0][1] = $langs->trans("Card");
$head[0][2] = 'cashcontrol';
dol_fiche_head($head, 'cashcontrol', $langs->trans("CashControl"), -1, 'cashcontrol');
$linkback = '<a href="' . DOL_URL_ROOT . '/compta/cashcontrol/cashcontrol_list.php?restore_lastsearch_values=1">' . $langs->trans("BackToList") . '</a>';
@ -299,7 +309,7 @@ if (empty($action) || $action=="view")
print '<div class="underbanner clearboth"></div>';
print '<table class="border tableforfield" width="100%">';
print '<tr><td class="tdfieldcreate nowrap">';
print '<tr><td class="titlefield nowrap">';
print $langs->trans("Ref");
print '</td><td>';
print $id;
@ -309,8 +319,8 @@ if (empty($action) || $action=="view")
print $object->posmodule;
print "</td></tr>";
print '<tr><td valign="middle">'.$langs->trans("InitialBankBalance").'</td><td>';
print price($object->opening);
print '<tr><td valign="middle">'.$langs->trans("CashDesk").' ID</td><td>';
print $object->posnumber;
print "</td></tr>";
print '<tr><td class="nowrap">';
@ -326,15 +336,26 @@ if (empty($action) || $action=="view")
print '<div class="underbanner clearboth"></div>';
print '<table class="border tableforfield" width="100%">';
print '<tr><td class="nowrap">';
print '<tr><td class="titlefield nowrap">';
print $langs->trans("DateCreationShort");
print '</td><td>';
print dol_print_date($object->date_creation, 'dayhour');
print '</td></tr>';
print '<tr><td valign="middle">'.$langs->trans("CashDesk").' ID</td><td>';
print $object->posnumber;
print '<tr><td valign="middle">'.$langs->trans("InitialBankBalance").'</td><td>';
print price($object->opening, 0, $langs, 1, -1, -1, $conf->currency);
print "</td></tr>";
print '<tr><td valign="middle">'.$langs->trans("Cash").'</td><td>';
print price($object->cash, 0, $langs, 1, -1, -1, $conf->currency);
print "</td></tr>";
print '<tr><td valign="middle">'.$langs->trans("Cheque").'</td><td>';
print price($object->cheque, 0, $langs, 1, -1, -1, $conf->currency);
print "</td></tr>";
print '<tr><td valign="middle">'.$langs->trans("Card").'</td><td>';
print price($object->card, 0, $langs, 1, -1, -1, $conf->currency);
print "</td></tr>";
print "</table>\n";
print '</div>';

View File

@ -32,7 +32,7 @@ class CashControl extends CommonObject
/**
* @var string ID to identify managed object
*/
public $element = 'CashControl';
public $element = 'cashcontrol';
/**
* @var string Name of table without prefix where object is stored
@ -55,29 +55,29 @@ class CashControl extends CommonObject
public $picto = 'bank';
public $fields=array(
'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>10),
'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>15),
'ref' =>array('type'=>'varchar(64)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>18),
'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>19),
'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>20),
'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>24),
'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25),
'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30),
'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>33),
'card' =>array('type'=>'double(24,8)', 'label'=>'CreditCard', 'enabled'=>1, 'visible'=>1, 'position'=>36),
'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>50),
'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55),
'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>60),
'date_creation' =>array('type'=>'datetime', 'label'=>'Date creation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500),
'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505),
'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510),
'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>1000, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Brouillon', '1'=>'Validated')),
'rowid' =>array('type'=>'integer', 'label'=>'ID', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>10),
'entity' =>array('type'=>'integer', 'label'=>'Entity', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>15),
'ref' =>array('type'=>'varchar(64)', 'label'=>'Ref', 'enabled'=>1, 'visible'=>1, 'notnull'=>1, 'position'=>18),
'posmodule' =>array('type'=>'varchar(30)', 'label'=>'Module', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>19),
'posnumber' =>array('type'=>'varchar(30)', 'label'=>'CashDesk', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>20),
'label' =>array('type'=>'varchar(255)', 'label'=>'Label', 'enabled'=>1, 'visible'=>0, 'position'=>24),
'opening' =>array('type'=>'double(24,8)', 'label'=>'Opening', 'enabled'=>1, 'visible'=>1, 'position'=>25),
'cash' =>array('type'=>'double(24,8)', 'label'=>'Cash', 'enabled'=>1, 'visible'=>1, 'position'=>30),
'cheque' =>array('type'=>'double(24,8)', 'label'=>'Cheque', 'enabled'=>1, 'visible'=>1, 'position'=>33),
'card' =>array('type'=>'double(24,8)', 'label'=>'CreditCard', 'enabled'=>1, 'visible'=>1, 'position'=>36),
'year_close' =>array('type'=>'integer', 'label'=>'Year close', 'enabled'=>1, 'visible'=>1, 'notnul'=>1, 'position'=>50),
'month_close' =>array('type'=>'integer', 'label'=>'Month close', 'enabled'=>1, 'visible'=>1, 'position'=>55),
'day_close' =>array('type'=>'integer', 'label'=>'Day close', 'enabled'=>1, 'visible'=>1, 'position'=>60),
'date_valid' =>array('type'=>'datetime', 'label'=>'DateValid', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>490),
'date_creation' =>array('type'=>'datetime', 'label'=>'DateCreation', 'enabled'=>1, 'visible'=>-1, 'notnull'=>1, 'position'=>500),
'tms' =>array('type'=>'timestamp', 'label'=>'Tms', 'enabled'=>1, 'visible'=>0, 'notnull'=>1, 'position'=>505),
'import_key' =>array('type'=>'varchar(14)', 'label'=>'Import key', 'enabled'=>1, 'visible'=>0, 'position'=>510),
'status' => array('type'=>'integer', 'label'=>'Status', 'enabled'=>1, 'visible'=>1, 'position'=>1000, 'notnull'=>1, 'index'=>1, 'arrayofkeyval'=>array('0'=>'Brouillon', '1'=>'Validated')),
);
public $id;
public $opening;
public $status;
public $date_creation;
public $year_close;
public $month_close;
public $day_close;
@ -86,6 +86,9 @@ class CashControl extends CommonObject
public $cash;
public $cheque;
public $card;
public $date_valid;
public $date_creation;
public $date_modification;
const STATUS_DRAFT = 0;
const STATUS_VALIDATED = 1;
@ -125,7 +128,7 @@ class CashControl extends CommonObject
$sql .= "entity";
//$sql .= ", ref";
$sql .= ", opening";
$sql .= ", status";
$sql .= ", status";
$sql .= ", date_creation";
$sql .= ", posmodule";
$sql .= ", posnumber";
@ -139,7 +142,7 @@ class CashControl extends CommonObject
//$sql .= "'(PROV)', ";
$sql .= $conf->entity;
$sql .= ", ".($this->opening > 0 ? $this->opening : 0);
$sql .= ", 0"; // Draft by default
$sql .= ", 0"; // Draft by default
$sql .= ", '".$this->db->idate(dol_now())."'";
$sql .= ", '".$this->db->escape($this->posmodule)."'";
$sql .= ", '".$this->db->escape($this->posnumber)."'";
@ -203,14 +206,14 @@ class CashControl extends CommonObject
}
/*
$posmodule = $this->posmodule;
if (! empty($user->rights->$posmodule->use))
{
$this->error='NotEnoughPermissions';
dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR);
return -1;
}
*/
$posmodule = $this->posmodule;
if (! empty($user->rights->$posmodule->use))
{
$this->error='NotEnoughPermissions';
dol_syslog(get_class($this)."::valid ".$this->error, LOG_ERR);
return -1;
}
*/
$now=dol_now();
@ -231,13 +234,13 @@ class CashControl extends CommonObject
}
if (!$error) {
$this->id = $this->db->last_insert_id(MAIN_DB_PREFIX."pos_cash_fence");
$this->status = self::STATUS_VALIDATED;
$this->date_valid = $now;
$this->fk_user_valid = $user->id;
}
if (! $error && ! $notrigger)
{
$this->context=array('date_valid'=>$now);
// Call trigger
$result=$this->call_trigger('CASHCONTROL_VALIDATE', $user);
if ($result < 0) $error++;
@ -260,48 +263,20 @@ class CashControl extends CommonObject
/**
* Load object in memory from database
* Load object in memory from the database
*
* @param int $id Id object
* @return int <0 if KO, >0 if OK
* @param int $id Id object
* @param string $ref Ref
* @return int <0 if KO, 0 if not found, >0 if OK
*/
public function fetch($id)
public function fetch($id, $ref = null)
{
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->ref = $obj->id;
$this->label = $obj->label;
$this->opening = $obj->opening;
$this->status = $obj->status;
$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->date_creation = $obj->date_creation;
$this->tms = $obj->tms;
$this->id=$id;
}
$this->db->free($resql);
return 1;
} else {
$this->error = "Error ".$this->db->lasterror();
return -1;
}
$result = $this->fetchCommon($id, $ref);
if ($result > 0 && ! empty($this->table_element_line)) $this->fetchLines();
return $result;
}
/**
* Return label of the status
*
@ -374,7 +349,7 @@ class CashControl extends CommonObject
* @param string $option Where point the link ('stock', 'composition', 'category', 'supplier', '')
* @param int $maxlength Maxlength of ref
* @param int $save_lastsearch_value -1=Auto, 0=No save of lastsearch_values when clicking, 1=Save lastsearch_values whenclicking
* @param int $notooltip No tooltip
* @param int $notooltip No tooltip
* @return string String with URL
*/
public function getNomUrl($withpicto=0, $option='', $maxlength=0, $save_lastsearch_value=-1, $notooltip=0)

View File

@ -56,10 +56,10 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers
*/
public function runTrigger($action, $object, User $user, Translate $langs, Conf $conf)
{
if (empty($conf->blockedlog->enabled)) return 0; // Module not active, we do nothing
if (empty($conf->blockedlog->enabled)) return 0; // Module not active, we do nothing
// Test if event/record is qualified
$listofqualifiedelement = array('facture', 'don', 'payment', 'payment_donation', 'subscription','payment_various');
$listofqualifiedelement = array('facture', 'don', 'payment', 'payment_donation', 'subscription', 'payment_various', 'cashcontrol');
if (! in_array($object->element, $listofqualifiedelement)) return 1;
dol_syslog("Trigger '".$this->name."' for action '$action' launched by ".__FILE__.". id=".$object->id);
@ -80,6 +80,7 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers
|| $action==='BILL_SUPPLIER_VALIDATE' || $action==='BILL_SUPPLIER_DELETE' || $action === 'BILL_SUPPLIER_SENTBYMAIL'
|| $action==='MEMBER_SUBSCRIPTION_CREATE' || $action==='MEMBER_SUBSCRIPTION_MODIFY' || $action==='MEMBER_SUBSCRIPTION_DELETE'
|| $action==='DON_VALIDATE' || $action==='DON_MODIFY' || $action==='DON_DELETE'
|| $action==='CASHCONTROL_VALIDATE'
|| (in_array($object->element, array('facture','suplier_invoice')) && $action === 'DOC_DOWNLOAD') || (in_array($object->element, array('facture','suplier_invoice')) && $action === 'DOC_PREVIEW')
)
{
@ -88,6 +89,10 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers
if (in_array($action, array(
'MEMBER_SUBSCRIPTION_CREATE','MEMBER_SUBSCRIPTION_MODIFY','MEMBER_SUBSCRIPTION_DELETE',
'DON_VALIDATE','DON_MODIFY','DON_DELETE'))) $amounts = (double) $object->amount;
elseif ($action == 'CASHCONTROL_VALIDATE')
{
$amounts = (double) $object->cash + (double) $object->cheque + (double) $object->card;
}
else $amounts = (double) $object->total_ttc;
}
/*if ($action === 'BILL_PAYED' || $action==='BILL_UNPAYED'
@ -103,7 +108,7 @@ class InterfaceActionsBlockedLog extends DolibarrTriggers
$amounts = 0;
if(!empty($object->amounts)) {
foreach($object->amounts as $amount) {
$amounts+= price2num($amount);
$amounts += price2num($amount);
}
}
}