*
* 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/asset/type.php
* \ingroup asset
* \brief Asset's type setup
*/
require '../main.inc.php';
require_once DOL_DOCUMENT_ROOT.'/core/lib/asset.lib.php';
require_once DOL_DOCUMENT_ROOT.'/asset/class/asset.class.php';
require_once DOL_DOCUMENT_ROOT.'/asset/class/asset_type.class.php';
require_once DOL_DOCUMENT_ROOT.'/core/class/extrafields.class.php';
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/lib/accounting.lib.php';
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/core/class/html.formaccounting.class.php';
if (! empty($conf->accounting->enabled)) require_once DOL_DOCUMENT_ROOT.'/accountancy/class/accountingaccount.class.php';
// Load translation files required by the page
$langs->load("assets");
$rowid = GETPOST('rowid','int');
$action = GETPOST('action','alpha');
$cancel = GETPOST('cancel','alpha');
$backtopage = GETPOST('backtopage','alpha');
$type = GETPOST('type','alpha');
$limit = GETPOST('limit','int')?GETPOST('limit','int'):$conf->liste_limit;
$sortfield = GETPOST("sortfield",'alpha');
$sortorder = GETPOST("sortorder",'alpha');
$page = GETPOST("page",'int');
if (empty($page) || $page == -1) { $page = 0; } // If $page is not defined, or '' or -1
$offset = $limit * $page ;
$pageprev = $page - 1;
$pagenext = $page + 1;
if (! $sortorder) { $sortorder="DESC"; }
if (! $sortfield) { $sortfield="a.label"; }
$label=GETPOST("label","alpha");
$accountancy_code_asset=GETPOST('accountancy_code_asset','string');
$accountancy_code_depreciation_asset=GETPOST('accountancy_code_depreciation_asset','string');
$accountancy_code_depreciation_expense=GETPOST('accountancy_code_depreciation_expense','string');
$comment=GETPOST('comment','string');
// Security check
$result=restrictedArea($user,'asset',$rowid,'asset_type');
$object = new AssetType($db);
$extrafields = new ExtraFields($db);
// fetch optionals attributes and labels
$extralabels=$extrafields->fetch_name_optionals_label('asset_type');
if (GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter_x','alpha') || GETPOST('button_removefilter','alpha')) // All tests are required to be compatible with all browsers
{
$type="";
$sall="";
}
// Initialize technical object to manage hooks of page. Note that conf->hooks_modules contains array of hook context
$hookmanager->initHooks(array('assettypecard','globalcard'));
/*
* Actions
*/
if ($cancel) {
$action='';
if (! empty($backtopage))
{
header("Location: ".$backtopage);
exit;
}
}
if ($action == 'add' && $user->rights->asset->write)
{
$object->label = trim($label);
$object->accountancy_code_asset = trim($accountancy_code_asset);
$object->accountancy_code_depreciation_asset = trim($accountancy_code_depreciation_asset);
$object->accountancy_code_depreciation_expense = trim($accountancy_code_depreciation_expense);
$object->note = trim($comment);
// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
if ($ret < 0) $error++;
if (empty($object->label)) {
$error++;
setEventMessages($langs->trans("ErrorFieldRequired",$langs->transnoentities("Label")), null, 'errors');
}
else {
$sql = "SELECT label FROM ".MAIN_DB_PREFIX."asset_type WHERE label='".$db->escape($object->label)."'";
$result = $db->query($sql);
if ($result) {
$num = $db->num_rows($result);
}
if ($num) {
$error++;
$langs->load("errors");
setEventMessages($langs->trans("ErrorLabelAlreadyExists",$login), null, 'errors');
}
}
if (! $error)
{
$id=$object->create($user);
if ($id > 0)
{
header("Location: ".$_SERVER["PHP_SELF"]);
exit;
}
else
{
setEventMessages($object->error, $object->errors, 'errors');
$action = 'create';
}
}
else
{
$action = 'create';
}
}
if ($action == 'update' && $user->rights->asset->write)
{
$object->fetch($rowid);
$object->oldcopy = clone $object;
$object->label = trim($label);
$object->accountancy_code_asset = trim($accountancy_code_asset);
$object->accountancy_code_depreciation_asset = trim($accountancy_code_depreciation_asset);
$object->accountancy_code_depreciation_expense = trim($accountancy_code_depreciation_expense);
$object->note = trim($comment);
// Fill array 'array_options' with data from add form
$ret = $extrafields->setOptionalsFromPost($extralabels,$object);
if ($ret < 0) $error++;
$ret=$object->update($user);
if ($ret >= 0 && ! count($object->errors))
{
setEventMessages($langs->trans("AssetsTypeModified"), null, 'mesgs');
}
else
{
setEventMessages($object->error, $object->errors, 'errors');
}
header("Location: ".$_SERVER["PHP_SELF"]."?rowid=".$object->id);
exit;
}
if ($action == 'confirm_delete' && $user->rights->asset->write)
{
$object->fetch($rowid);
$res=$object->delete();
if ($res > 0)
{
setEventMessages($langs->trans("AssetsTypeDeleted"), null, 'mesgs');
header("Location: ".$_SERVER["PHP_SELF"]);
exit;
}
else
{
setEventMessages($langs->trans("AssetsTypeCanNotBeDeleted"), null, 'errors');
$action='';
}
}
/*
* View
*/
$form=new Form($db);
$helpurl='';
llxHeader('',$langs->trans("AssetsTypeSetup"),$helpurl);
// List of asset type
if (! $rowid && $action != 'create' && $action != 'edit')
{
//dol_fiche_head('');
$sql = "SELECT d.rowid, d.label as label, d.accountancy_code_asset, d.accountancy_code_depreciation_asset, d.accountancy_code_depreciation_expense, d.note";
$sql.= " FROM ".MAIN_DB_PREFIX."asset_type as d";
$sql.= " WHERE d.entity IN (".getEntity('asset_type').")";
$result = $db->query($sql);
if ($result)
{
$num = $db->num_rows($result);
$nbtotalofrecords = $num;
$i = 0;
$param = '';
print '