11762 use doctrine for schema creation and update
[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-2016 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  * @property    $name
19  */
20 class Inventory_Model_InventoryItem extends Tinebase_Record_Abstract
21 {
22     /**
23      * holds the configuration object (must be declared in the concrete class)
24      *
25      * @var Tinebase_ModelConfiguration
26      */
27     protected static $_configurationObject = NULL;
28
29     /**
30      * Holds the model configuration (must be assigned in the concrete class)
31      *
32      * @var array
33      */
34     protected static $_modelConfiguration = array(
35         'version'           => 7,
36         'recordName'        => 'Inventory item',
37         'recordsName'       => 'Inventory items', // ngettext('Inventory item', 'Inventory items', n)
38         'containerProperty' => 'container_id',
39         'titleProperty'     => 'name',
40         'containerName'     => 'Inventory item list',
41         'containersName'    => 'Inventory item lists', // ngettext('Inventory item list', 'Inventory item lists', n)
42         'hasRelations'      => TRUE,
43         'hasCustomFields'   => TRUE,
44         'hasNotes'          => TRUE,
45         'hasTags'           => TRUE,
46         'modlogActive'      => TRUE,
47         'hasAttachments'    => TRUE,
48         'exposeJsonApi'     => TRUE,
49
50         'createModule'    => TRUE,
51
52         'appName'         => 'Inventory',
53         'modelName'       => 'InventoryItem',
54
55         'table'           => array(
56             'name'    => 'inventory_item',
57             'options' => array('collate' => 'utf8_general_ci'),
58             'indexes' => array(
59                 'container_id' => array(
60                     'columns' => array('container_id')
61                 )
62             ),
63             // not now - is_deleted problem
64 //            'uniqueConstraints' => array(
65 //                'inventory_id' => array(
66 //                    'columns' => array('inventory_id')
67 //                )
68 //            )
69         ),
70
71
72
73         'fields'          => array(
74             'name' => array(
75                 'type'        => 'string',
76                 'length'      => 255,
77                 'validators'  => array(Zend_Filter_Input::ALLOW_EMPTY => false, 'presence' => 'required'),
78                 'label'       => 'Name', // _('Name')
79                 'queryFilter' => TRUE
80             ),
81             'status' => array(
82                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
83                 'nullable' => true,
84                 'label' => 'Status', // _('Status')
85                 'type' => 'keyfield',
86                 'name' => 'inventoryStatus',
87             ),
88             'inventory_id' => array(
89                 'type'       => 'string',
90                 'length'     => 100,
91                 'nullable'   => true,
92                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
93                 'label'      => 'Inventory ID' // _('Inventory ID')
94             ),
95             'description' => array(
96                 'type'       => 'text',
97                 'nullable'   => true,
98                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
99                 'label'      =>'Description' // _('Description')
100             ),
101             'location' => array(
102                 'type'       => 'string',
103                 'length'     => 255,
104                 'nullable'   => true,
105                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
106                 'label'      => 'Location', // _('Location')
107             ),
108             'invoice_date' => array(
109                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
110                 'label'      => 'Invoice date', // _('Invoice date')
111                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
112                 'hidden'     => TRUE,
113                 'default'    => NULL,
114                 'type'       => 'datetime',
115                 'nullable'     => true,
116                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
117             ),
118             'total_number' => array(
119                 'type'         => 'integer',
120                 'nullable'     => true,
121                 'validators'   => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
122                 'label'        => NULL,
123                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
124                 'default'      => 1,
125             ),
126             'active_number' => array(
127                 'type'         => 'integer',
128                 'nullable'     => true,
129                 'validators'   => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
130                 'label'        => 'Available number', // _(Available number)
131                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
132                 'default'      => 1,
133             ),
134             'invoice' => array(
135                 'type'       => 'string',
136                 'nullable'   => true,
137                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
138                 'label'      => 'Invoice', // _('Invoice')
139                 'hidden'     => TRUE
140             ),
141             'price' => array(
142                 'type'         => 'float',
143                 'specialType'  => 'euMoney',
144                 'nullable'     => true,
145                 'validators'   => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
146                 'label'        => 'Price', // _('Price')
147                 'hidden'       => TRUE,
148                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
149             ),
150             'costcentre' => array(
151                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
152                 'label'      => 'Cost centre', // _('Cost Center')
153                 'hidden'     => TRUE,
154                 'type'       => 'record',
155                 'nullable'   => true,
156                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE, Zend_Filter_Input::DEFAULT_VALUE => NULL),
157                 'config' => array(
158                     'appName'     => 'Sales',
159                     'modelName'   => 'CostCenter',
160                     'idProperty'  => 'id',
161                 ),
162             ),
163             'warranty' => array(
164                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
165                 'label'      => 'Warranty', // _('Warranty')
166                 'hidden'     => TRUE,
167                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
168                 'type'       => 'datetime',
169                 'nullable'   => true,
170             ),
171             'added_date' => array(
172                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
173                 'label'      => 'Item added', // _('Item added')
174                 'hidden'     => TRUE,
175                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
176                 'type'       => 'datetime',
177                 'nullable'   => true,
178             ),
179             'removed_date' => array(
180                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
181                 'label'      => 'Item removed', // _('Item removed')
182                 'hidden'     => TRUE,
183                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
184                 'type'       => 'datetime',
185                 'nullable'   => true,
186             ),
187             'deprecated_status' => array(
188                 'type'         => 'boolean',
189                 'validators'   => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE, Zend_Filter_Input::DEFAULT_VALUE => 0),
190                 //'label'        => 'Deprecate', // _('Deprecate')
191                 'label'        => NULL,
192                 'default'      => false,
193             ),
194             'image' => array(
195                 'validators' => array(Zend_Filter_Input::ALLOW_EMPTY => TRUE),
196                 'label' => 'Image', // _('Image')
197                 'inputFilters' => array('Zend_Filter_Empty' => NULL),
198                 // is saved in vfs, only image files allowed
199                 'type' => 'image'
200             ),
201         )
202     );
203 }