#8212: can't sort by tags
[tine20] / tine20 / Inventory / Model / InventoryItem.php
1 <?php
2 /**
3  * class to hold InventoryItem data
4  * 
5  * @package     Inventory
6  * @subpackage  Model
7  * @license     http://www.gnu.org/licenses/agpl.html AGPL Version 3
8  * @author      Stefanie Stamer <s.stamer@metaways.de>
9  * @copyright   Copyright (c) 2007-2013 Metaways Infosystems GmbH (http://www.metaways.de)
10  * 
11  */
12
13 /**
14  * class to hold InventoryItem data
15  * 
16  * @package     Inventory
17  * @subpackage  Model
18  */
19 class Inventory_Model_InventoryItem extends Tinebase_Record_Abstract
20 {
21     /**
22      * holds the configuration object (must be declared in the concrete class)
23      *
24      * @var Tinebase_ModelConfiguration
25      */
26     protected static $_configurationObject = NULL;
27     
28     /**
29      * Holds the model configuration (must be assigned in the concrete class)
30      *
31      * @var array
32      */
33     protected static $_modelConfiguration = array(
34         'recordName'        => 'Inventory item', // _('Inventory item') ngettext('Inventory item', 'Inventory items', n)
35         'recordsName'       => 'Inventory items', // _('Inventory items')
36         'containerProperty' => 'container_id',
37         'titleProperty'     => 'name',
38         'containerName'     => 'Inventory item list', // _('Inventory item list')
39         'containersName'    => 'Inventory items lists', // _('Inventory items lists')
40         'hasRelations'      => true,
41         'hasCustomFields'   => true,
42         'hasNotes'          => true,
43         'hasTags'           => true,
44         'useModlog'         => true,
45
46         'createModule'    => true,
47
48         'appName'         => 'Inventory',
49         'modelName'       => 'InventoryItem',
50         
51         'fields'          => array(
52             'name' => array(
53                 'validators'  => array(Zend_Filter_Input::ALLOW_EMPTY => false, 'presence' => 'required'),
54                 'label'       => 'Name', // _('Name')
55                 'queryFilter' => true
56             ),
57             'status' => array(
58                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
59                 'label' => 'Status', // _('Status')
60                 'type' => 'keyfield',
61                 'name' => 'inventoryStatus',
62                 'default' => 'UNKNOWN'
63             ),
64             'inventory_id' => array(
65                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
66                 'label'      => 'Inventory ID' // _('Inventory ID')
67             ),
68             'description' => array(
69                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
70                 'label'      =>'Description' // _('Description')
71             ),
72             'location' => array(
73                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
74                 'label'      => 'Location', // _('Location')
75             ),
76             'invoice_date' => array(
77                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
78                 'label'      => 'Invoice date', // _('Invoice date')
79                 'hidden'     => TRUE,
80                 'default'    => NULL,
81                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
82             ),
83             'total_number' => array(
84                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
85                 'label'      => NULL,
86                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
87                 'default'    => 1,
88             ),
89             'invoice' => array(
90                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
91                 'label'      => 'Invoice', // _('Invoice')
92                 'hidden'     => TRUE
93             ),
94             'price' => array(
95                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
96                 'label'      => 'Price', // _('Price')
97                 'hidden'     => TRUE,
98                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
99             ),
100             'costcentre' => array(
101                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
102                 'label'      => 'Cost centre', // _('Cost centre')
103                 'hidden'     => TRUE,
104                 'type'  => 'record',
105                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE, Zend_Filter_Input::DEFAULT_VALUE => NULL),
106                 'config' => array(
107                     'appName'     => 'Sales',
108                     'modelName'   => 'CostCenter',
109                     'idProperty'  => 'id'
110                 )
111             ),
112             'warranty' => array(
113                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
114                 'label'      => 'Warranty', // _('Warranty')
115                 'hidden'     => TRUE,
116                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
117             ),
118             'added_date' => array(
119                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
120                 'label'      => 'Item added', // _('Item added')
121                 'hidden'     => TRUE,
122                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
123             ),
124             'removed_date' => array(
125                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
126                 'label'      => 'Item removed', // _('Item removed')
127                 'hidden'     => TRUE,
128                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
129             ),
130             'active_number' => array(
131                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true),
132                 'label'      => 'Available number', // _(Available number)
133                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
134                 'default'    => 1,
135             ),
136             'depreciate_status' => array(
137                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => 0),
138                 //'label' => 'Depreciate', // _('Depreciate')
139                 'label'      => NULL,
140                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
141             ),
142         )
143      );
144     
145     /**
146      * if foreign Id fields should be resolved on search and get from json
147      * should have this format:
148      *     array('Calendar_Model_Contact' => 'contact_id', ...)
149      * or for more fields:
150      *     array('Calendar_Model_Contact' => array('contact_id', 'customer_id), ...)
151      * (e.g. resolves contact_id with the corresponding Model)
152      *
153      * @var array
154      */
155 //     protected static $_resolveForeignIdFields = array(
156 //             'Sales_Model_CostCenter' => array('costcentre')
157 //     );
158     
159     /**
160      * Returns every valid key to manage in Frontend/Json.php
161      * 
162      * @todo to be removed if we have a similiar function in the core
163      * @param void
164      * @return array
165      */
166     public static function getValidFields()
167     {
168         return static::$_configurationObject->fieldKeys;
169     }
170 }