forked from extern/egroupware
* Add creation field to timesheet
This commit is contained in:
parent
78f4a6fb9e
commit
a23acf1dfa
@ -56,7 +56,7 @@ class timesheet_bo extends Api\Storage
|
|||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
var $timestamps = array(
|
var $timestamps = array(
|
||||||
'ts_start','ts_modified'
|
'ts_start','ts_created', 'ts_modified'
|
||||||
);
|
);
|
||||||
/**
|
/**
|
||||||
* Start of today in user-time
|
* Start of today in user-time
|
||||||
@ -527,7 +527,7 @@ class timesheet_bo extends Api\Storage
|
|||||||
parent::search($criteria,array(
|
parent::search($criteria,array(
|
||||||
(string)$sum_ts_id[$type],"''","''","''",'MIN(ts_start)','SUM(ts_duration) AS ts_duration',
|
(string)$sum_ts_id[$type],"''","''","''",'MIN(ts_start)','SUM(ts_duration) AS ts_duration',
|
||||||
($this->quantity_sum ? "SUM(ts_quantity) AS ts_quantity" : '0'),
|
($this->quantity_sum ? "SUM(ts_quantity) AS ts_quantity" : '0'),
|
||||||
'0','NULL','0','0','0','0','0',"SUM($total_sql) AS ts_total"
|
'0','NULL','0','0','0','0','0','0',"SUM($total_sql) AS ts_total"
|
||||||
),'GROUP BY '.$sum_sql[$type],$sum_extra_cols,$wildcard,$empty,$op,'UNION',$filter,$join,$need_full_no_count);
|
),'GROUP BY '.$sum_sql[$type],$sum_extra_cols,$wildcard,$empty,$op,'UNION',$filter,$join,$need_full_no_count);
|
||||||
$sum_extra_cols[$type]{0} = '0';
|
$sum_extra_cols[$type]{0} = '0';
|
||||||
}
|
}
|
||||||
@ -597,6 +597,10 @@ class timesheet_bo extends Api\Storage
|
|||||||
if (isset($new[$name]) && $new[$name] != $value) $changed[] = $name;
|
if (isset($new[$name]) && $new[$name] != $value) $changed[] = $name;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (!$this->data['ts_created'])
|
||||||
|
{
|
||||||
|
$this->data['ts_created'] = time();
|
||||||
|
}
|
||||||
if (isset($old) && !$changed)
|
if (isset($old) && !$changed)
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
|
@ -27,7 +27,7 @@ class timesheet_egw_record implements importexport_iface_egw_record
|
|||||||
// Used in conversions
|
// Used in conversions
|
||||||
static $types = array(
|
static $types = array(
|
||||||
'select-account' => array('ts_owner','ts_modifier'),
|
'select-account' => array('ts_owner','ts_modifier'),
|
||||||
'date-time' => array('ts_start', 'ts_modified'),
|
'date-time' => array('ts_start', 'ts_created', 'ts_modified'),
|
||||||
'select-cat' => array('cat_id'),
|
'select-cat' => array('cat_id'),
|
||||||
'links' => array('pl_id'),
|
'links' => array('pl_id'),
|
||||||
'select' => array('ts_status'),
|
'select' => array('ts_status'),
|
||||||
|
@ -57,10 +57,7 @@ class timesheet_merge extends Api\Storage\Merge
|
|||||||
$this->parse_html_styles = Api\Storage\Customfields::use_html('timesheet');
|
$this->parse_html_styles = Api\Storage\Customfields::use_html('timesheet');
|
||||||
|
|
||||||
$this->bo = new timesheet_bo();
|
$this->bo = new timesheet_bo();
|
||||||
$this->date_fields += array(
|
$this->date_fields += timesheet_egw_record::$types['date-time'];
|
||||||
'ts_start',
|
|
||||||
'ts_modified',
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -168,7 +165,11 @@ class timesheet_merge extends Api\Storage\Merge
|
|||||||
echo '<tr><td colspan="4"><h3>'.lang('Timesheet fields:')."</h3></td></tr>";
|
echo '<tr><td colspan="4"><h3>'.lang('Timesheet fields:')."</h3></td></tr>";
|
||||||
|
|
||||||
$n = 0;
|
$n = 0;
|
||||||
$fields = array('ts_id' => lang('Timesheet ID')) + $this->bo->field2label + array('ts_total' => lang('total'));
|
$fields = array('ts_id' => lang('Timesheet ID')) + $this->bo->field2label + array(
|
||||||
|
'ts_total' => lang('total'),
|
||||||
|
'ts_created' => lang('Created'),
|
||||||
|
'ts_modified' => lang('Modified'),
|
||||||
|
);
|
||||||
foreach($fields as $name => $label)
|
foreach($fields as $name => $label)
|
||||||
{
|
{
|
||||||
if (in_array($name,array('pl_id','customfields'))) continue; // dont show them
|
if (in_array($name,array('pl_id','customfields'))) continue; // dont show them
|
||||||
|
@ -19,7 +19,10 @@ class timesheet_wizard_export_csv extends importexport_wizard_basic_export_csv
|
|||||||
|
|
||||||
// Field mapping
|
// Field mapping
|
||||||
$bo = new timesheet_bo();
|
$bo = new timesheet_bo();
|
||||||
$this->export_fields = array('ts_id' => 'Timesheet ID') + $bo->field2label + array('ts_modified'=> 'Modified');
|
$this->export_fields = array('ts_id' => 'Timesheet ID') + $bo->field2label + array(
|
||||||
|
'ts_created' => 'Created',
|
||||||
|
'ts_modified'=> 'Modified'
|
||||||
|
);
|
||||||
|
|
||||||
// Custom fields
|
// Custom fields
|
||||||
unset($this->export_fields['customfields']);
|
unset($this->export_fields['customfields']);
|
||||||
|
@ -17,7 +17,7 @@ if (!defined('TIMESHEET_APP'))
|
|||||||
}
|
}
|
||||||
|
|
||||||
$setup_info[TIMESHEET_APP]['name'] = TIMESHEET_APP;
|
$setup_info[TIMESHEET_APP]['name'] = TIMESHEET_APP;
|
||||||
$setup_info[TIMESHEET_APP]['version'] = '16.1';
|
$setup_info[TIMESHEET_APP]['version'] = '17.1';
|
||||||
$setup_info[TIMESHEET_APP]['app_order'] = 5;
|
$setup_info[TIMESHEET_APP]['app_order'] = 5;
|
||||||
$setup_info[TIMESHEET_APP]['tables'] = array('egw_timesheet','egw_timesheet_extra');
|
$setup_info[TIMESHEET_APP]['tables'] = array('egw_timesheet','egw_timesheet_extra');
|
||||||
$setup_info[TIMESHEET_APP]['enable'] = 1;
|
$setup_info[TIMESHEET_APP]['enable'] = 1;
|
||||||
|
@ -24,6 +24,7 @@ $phpgw_baseline = array(
|
|||||||
'ts_unitprice' => array('type' => 'float','precision' => '4','comment' => 'unitprice'),
|
'ts_unitprice' => array('type' => 'float','precision' => '4','comment' => 'unitprice'),
|
||||||
'cat_id' => array('type' => 'int','meta' => 'category','precision' => '4','default' => '0','comment' => 'category'),
|
'cat_id' => array('type' => 'int','meta' => 'category','precision' => '4','default' => '0','comment' => 'category'),
|
||||||
'ts_owner' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'owner of the timesheet'),
|
'ts_owner' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'owner of the timesheet'),
|
||||||
|
'ts_created' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'comment' => 'Creation date of the timesheet'),
|
||||||
'ts_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'comment' => 'date modified ot the timesheet'),
|
'ts_modified' => array('type' => 'int','meta' => 'timestamp','precision' => '8','nullable' => False,'comment' => 'date modified ot the timesheet'),
|
||||||
'ts_modifier' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'account id of the last modifier'),
|
'ts_modifier' => array('type' => 'int','meta' => 'user','precision' => '4','nullable' => False,'comment' => 'account id of the last modifier'),
|
||||||
'pl_id' => array('type' => 'int','precision' => '4','default' => '0','comment' => 'id of the linked project'),
|
'pl_id' => array('type' => 'int','precision' => '4','default' => '0','comment' => 'id of the linked project'),
|
||||||
|
@ -131,3 +131,17 @@ function timesheet_upgrade14_1()
|
|||||||
{
|
{
|
||||||
return $GLOBALS['setup_info']['timesheet']['currentver'] = '16.1';
|
return $GLOBALS['setup_info']['timesheet']['currentver'] = '16.1';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function timesheet_upgrade16_1()
|
||||||
|
{
|
||||||
|
$GLOBALS['egw_setup']->oProc->AddColumn('egw_timesheet','ts_created',array(
|
||||||
|
'type' => 'int',
|
||||||
|
'meta' => 'timestamp',
|
||||||
|
'precision' => '8',
|
||||||
|
'nullable' => False
|
||||||
|
));
|
||||||
|
// Initialize to start
|
||||||
|
$GLOBALS['egw']->db->query('UPDATE egw_timesheet set ts_created = ts_start');
|
||||||
|
|
||||||
|
return $GLOBALS['setup_info']['timesheet']['currentver'] = '17.1';
|
||||||
|
}
|
@ -134,10 +134,12 @@
|
|||||||
</row>
|
</row>
|
||||||
<row class="dialogOperators">
|
<row class="dialogOperators">
|
||||||
<description value="User" for="ts_owner"/>
|
<description value="User" for="ts_owner"/>
|
||||||
<menulist >
|
<hbox span="2" class="et2_fullWidth">
|
||||||
<menupopup id="ts_owner" no_lang="1" class="et2_fullWidth"/>
|
<menulist>
|
||||||
|
<menupopup id="ts_owner" no_lang="1"/>
|
||||||
</menulist>
|
</menulist>
|
||||||
<description/>
|
<date-time id="ts_created" readonly="true" align="left"/>
|
||||||
|
</hbox>
|
||||||
<description value="Status" disabled="@no_ts_status"/>
|
<description value="Status" disabled="@no_ts_status"/>
|
||||||
<menulist span="3">
|
<menulist span="3">
|
||||||
<menupopup statustext="select a status of the timesheet" id="ts_status" class="et2_fullWidth" empty_label="please select" disabled="@no_ts_status"/>
|
<menupopup statustext="select a status of the timesheet" id="ts_status" class="et2_fullWidth" empty_label="please select" disabled="@no_ts_status"/>
|
||||||
@ -146,11 +148,12 @@
|
|||||||
</row>
|
</row>
|
||||||
<row disabled="!@ts_modified" class="dialogOperators">
|
<row disabled="!@ts_modified" class="dialogOperators">
|
||||||
<description value="Last modified"/>
|
<description value="Last modified"/>
|
||||||
|
<hbox span="2" class="et2_fullWidth">
|
||||||
<menulist>
|
<menulist>
|
||||||
<menupopup type="select-account" id="ts_modifier" readonly="true"/>
|
<menupopup type="select-account" id="ts_modifier" readonly="true"/>
|
||||||
</menulist>
|
</menulist>
|
||||||
<description/>
|
|
||||||
<date-time id="ts_modified" readonly="true" align="left"/>
|
<date-time id="ts_modified" readonly="true" align="left"/>
|
||||||
|
</hbox>
|
||||||
</row>
|
</row>
|
||||||
<row class="dialogFooterToolbar">
|
<row class="dialogFooterToolbar">
|
||||||
<hbox orient="0" span="all">
|
<hbox orient="0" span="all">
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
<column width="60" disabled="@no_ts_unitprice"/>
|
<column width="60" disabled="@no_ts_unitprice"/>
|
||||||
<column width="60" disabled="@no_ts_total"/>
|
<column width="60" disabled="@no_ts_total"/>
|
||||||
<column width="130" disabled="@no_owner_col"/>
|
<column width="130" disabled="@no_owner_col"/>
|
||||||
|
<column width="135"/>
|
||||||
<column width="50"/>
|
<column width="50"/>
|
||||||
<column width="10%" disabled="@no_ts_status"/>
|
<column width="10%" disabled="@no_ts_status"/>
|
||||||
<column width="15%"/>
|
<column width="15%"/>
|
||||||
@ -65,6 +66,7 @@
|
|||||||
<textbox type="float" id="price" readonly="true" precision="2"/>
|
<textbox type="float" id="price" readonly="true" precision="2"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<nextmatch-filterheader id="ts_owner" no_lang="1" options="User" class="$cont[ownerClass]"/>
|
<nextmatch-filterheader id="ts_owner" no_lang="1" options="User" class="$cont[ownerClass]"/>
|
||||||
|
<nextmatch-sortheader label="Created" id="ts_created"/>
|
||||||
<nextmatch-sortheader label="ID" id="ts_id"/>
|
<nextmatch-sortheader label="ID" id="ts_id"/>
|
||||||
<nextmatch-filterheader id="ts_status" options="Status"/>
|
<nextmatch-filterheader id="ts_status" options="Status"/>
|
||||||
<nextmatch-customfields id="customfields"/>
|
<nextmatch-customfields id="customfields"/>
|
||||||
@ -86,6 +88,7 @@
|
|||||||
<menulist class="$cont[ownerClass]">
|
<menulist class="$cont[ownerClass]">
|
||||||
<menupopup type="select-account" id="${row}[ts_owner]" readonly="true"/>
|
<menupopup type="select-account" id="${row}[ts_owner]" readonly="true"/>
|
||||||
</menulist>
|
</menulist>
|
||||||
|
<date-time id="${row}[ts_created]" readonly="true"/>
|
||||||
<description id="${row}[ts_id]"/>
|
<description id="${row}[ts_id]"/>
|
||||||
<menulist>
|
<menulist>
|
||||||
<menupopup id="${row}[ts_status]" readonly="true"/>
|
<menupopup id="${row}[ts_status]" readonly="true"/>
|
||||||
|
@ -91,6 +91,10 @@
|
|||||||
<menupopup id="ts_owner" no_lang="1" class="et2_fullWidth"/>
|
<menupopup id="ts_owner" no_lang="1" class="et2_fullWidth"/>
|
||||||
</menulist>
|
</menulist>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<date-time id="ts_created" readonly="true" align="left"/>
|
||||||
|
</row>
|
||||||
<row disabled="!@ts_modified">
|
<row disabled="!@ts_modified">
|
||||||
<description value="Last modified"/>
|
<description value="Last modified"/>
|
||||||
<menulist>
|
<menulist>
|
||||||
|
@ -73,6 +73,10 @@
|
|||||||
<menupopup id="ts_owner" no_lang="1" class="et2_fullWidth"/>
|
<menupopup id="ts_owner" no_lang="1" class="et2_fullWidth"/>
|
||||||
</menulist>
|
</menulist>
|
||||||
</row>
|
</row>
|
||||||
|
<row>
|
||||||
|
<description/>
|
||||||
|
<date-time id="ts_created" readonly="true" align="left"/>
|
||||||
|
</row>
|
||||||
<row disabled="!@ts_modified">
|
<row disabled="!@ts_modified">
|
||||||
<description value="Last modified"/>
|
<description value="Last modified"/>
|
||||||
<menulist>
|
<menulist>
|
||||||
|
Loading…
Reference in New Issue
Block a user