0010036: Highlight important tasks
authorAlexander Stintzing <a.stintzing@metaways.de>
Tue, 8 Jul 2014 09:11:58 +0000 (11:11 +0200)
committerPhilipp Schüle <p.schuele@metaways.de>
Wed, 10 Sep 2014 11:09:23 +0000 (13:09 +0200)
tasks with leadstate_id is not closed or accepted (ending) and
having a resubmission date or scheduled end date which is in
the past should be highlighted in the grid

https://forge.tine20.org/mantisbt/view.php?id=10036

Change-Id: Iefa2b41664d1ce24789e96057ac1751ba8153bc7
Reviewed-on: http://gerrit.tine20.com/customers/833
Tested-by: Jenkins CI (http://ci.tine20.com/)
Reviewed-by: Philipp Schüle <p.schuele@metaways.de>
Tested-by: sstamer <s.stamer@metaways.de>
12 files changed:
tests/tine20/Crm/Export/CsvTest.php
tine20/Crm/Model/Lead.php
tine20/Crm/Model/LeadFilter.php
tine20/Crm/Setup/Update/Release8.php [new file with mode: 0644]
tine20/Crm/Setup/setup.xml
tine20/Crm/css/Crm.css
tine20/Crm/js/Crm.js
tine20/Crm/js/LeadEditDialog.js
tine20/Crm/js/LeadGridPanel.js
tine20/Crm/js/Model.js
tine20/Crm/translations/de.po
tine20/Crm/translations/template.pot

index d9afbc9..f0a2cde 100644 (file)
@@ -87,7 +87,7 @@ class Crm_Export_CsvTest extends Crm_Export_AbstractTest
         
         $defaultContainerId = Tinebase_Container::getInstance()->getDefaultContainer('Crm')->getId();
         $this->assertContains('"lead_name","leadstate_id","Leadstate","leadtype_id","Leadtype","leadsource_id","Leadsource","container_id","start"'
-            . ',"description","end","turnover","probableTurnover","probability","end_scheduled","tags","attachments","notes","seq","tags",'
+            . ',"description","end","turnover","probableTurnover","probability","end_scheduled","resubmission_date","tags","attachments","notes","seq","tags",'
             . '"CUSTOMER-org_name","CUSTOMER-n_family","CUSTOMER-n_given","CUSTOMER-adr_one_street","CUSTOMER-adr_one_postalcode","CUSTOMER-adr_one_locality",'
             . '"CUSTOMER-adr_one_countryname","CUSTOMER-tel_work","CUSTOMER-tel_cell","CUSTOMER-email",'
             . '"PARTNER","RESPONSIBLE","TASK"', $export, 'headline wrong: ' . substr($export, 0, 360));
index 82f8863..fc34c3d 100644 (file)
@@ -79,6 +79,7 @@ class Crm_Model_Lead extends Tinebase_Record_Abstract
         'probableTurnover'      => array(Zend_Filter_Input::ALLOW_EMPTY => true),
         'probability'           => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => 0),
         'end_scheduled'         => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
+        'resubmission_date'     => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
     // linked objects
         'tags'                  => array(Zend_Filter_Input::ALLOW_EMPTY => true),
         'relations'             => array(Zend_Filter_Input::ALLOW_EMPTY => true, Zend_Filter_Input::DEFAULT_VALUE => NULL),
@@ -108,7 +109,8 @@ class Crm_Model_Lead extends Tinebase_Record_Abstract
         'end_scheduled',
         'creation_time',
         'last_modified_time',
-        'deleted_time'
+        'deleted_time',
+        'resubmission_date'
     );
     
     /**
index 05239d1..2fd550f 100644 (file)
@@ -57,6 +57,8 @@ class Crm_Model_LeadFilter extends Tinebase_Model_Filter_FilterGroup
         'customfield'           => array('filter' => 'Tinebase_Model_Filter_CustomField', 'options' => array('idProperty' => 'metacrm_lead.id')),
         
         'end_scheduled'         => array('filter' => 'Tinebase_Model_Filter_DateTime'),
+        'resubmission_date'     => array('filter' => 'Tinebase_Model_Filter_DateTime'),
+
     // relation filters
         'contact'        => array('filter' => 'Tinebase_Model_Filter_Relation', 'options' => array(
             'related_model'     => 'Addressbook_Model_Contact',
diff --git a/tine20/Crm/Setup/Update/Release8.php b/tine20/Crm/Setup/Update/Release8.php
new file mode 100644 (file)
index 0000000..431e055
--- /dev/null
@@ -0,0 +1,31 @@
+<?php
+/**
+ * Tine 2.0
+ *
+ * @package     Crm
+ * @subpackage  Setup
+ * @license     http://www.gnu.org/licenses/agpl.html AGPL3
+ * @copyright   Copyright (c) 2014 Metaways Infosystems GmbH (http://www.metaways.de)
+ * @author      Alexander Stintzing <a.stintzing@metaways.de>
+ */
+class Crm_Setup_Update_Release8 extends Setup_Update_Abstract
+{
+    /**
+     * update to 8.1
+     * 
+     * - add resubmission date to lead
+     */
+    public function update_0()
+    {
+        $declaration = new Setup_Backend_Schema_Field_Xml('<field>
+            <name>resubmission_date</name>
+            <type>datetime</type>
+        </field>');
+        
+        $this->_backend->addCol('metacrm_lead', $declaration);
+
+        $this->setTableVersion('metacrm_lead', 8);
+        
+        $this->setApplicationVersion('Crm', '8.1');
+    }
+}
index fcf42bf..08a95a0 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>
 <application>
     <name>Crm</name>
-    <version>8.0</version>
+    <version>8.1</version>
     <order>20</order>
     <depends>
         <application>Admin</application>
@@ -12,7 +12,7 @@
     <tables>
         <table>
             <name>metacrm_lead</name>
-            <version>7</version>
+            <version>8</version>
             <declaration>
                 <field>
                     <name>id</name>
                     <type>datetime</type>
                 </field>
                 <field>
+                    <name>resubmission_date</name>
+                    <type>datetime</type>
+                </field>
+                <field>
                     <name>lastread</name>
                     <type>datetime</type>
                 </field>
index d5dc1f0..60b643d 100644 (file)
     float:right;
     height:108px;
     position:relative;
+}
+
+.crm-highlight-task {
+    color: red;
 }
\ No newline at end of file
index 9ead85a..03e6296 100644 (file)
@@ -122,3 +122,18 @@ Tine.Crm.settingsBackend = new Tine.Tinebase.data.RecordProxy({
     modelName: 'Settings',
     recordClass: Tine.Crm.Model.Settings
 });
+
+/**
+ * returns ids of ended lead states
+ */
+Tine.Crm.getEndedLeadStateIds = function() {
+    var leadstates = Tine.Crm.registry.get('leadstates')['results'];
+    var ids = [];
+    for (var index = 0; index < leadstates.length; index++) {
+        if (leadstates[index].endslead == 1) {
+            ids.push(leadstates[index].id);
+        }
+    }
+    
+    return ids;
+}
index 2376bea..0364dc7 100644 (file)
@@ -388,7 +388,12 @@ Tine.Crm.LeadEditDialog = Ext.extend(Tine.widgets.dialog.EditDialog, {
                                         anchor: '95%',
                                         minValue: 0
                                     },  
-                                        this.combo_probability
+                                        this.combo_probability,
+                                        new Ext.ux.form.ClearableDateField({
+                                            fieldLabel: this.app.i18n._('Resubmission Date'), 
+                                            id: 'resubmission_date',
+                                            anchor: '95%'
+                                        })
                                     ]
                                 }]
                             }, {
index 10ac2eb..2343720 100644 (file)
@@ -54,7 +54,27 @@ Tine.Crm.LeadGridPanel = Ext.extend(Tine.widgets.grid.GridPanel, {
         enableDragDrop: true,
         ddGroup: 'containerDDGroup'
     },
-     
+    
+    
+    /**
+     * returns view row class (scope is this.grid.view)
+     */
+    getViewRowClass: function(record, index, rowParams, store) {
+        
+        var className = Tine.Crm.LeadGridPanel.superclass.getViewRowClass(record, index, rowParams, store);
+        
+        var now = new Date();
+        if (this.endingLeadStateIds.indexOf(record.get('leadstate_id')) == -1) {
+            var rsd = record.get('resubmission_date');
+            var esd = record.get('end_scheduled');
+            if (((esd && (esd < now)) || (rsd && (rsd < now)))) {
+                className += ' crm-highlight-task';
+            }
+        }
+        
+        return className;
+    },
+    
     /**
      * inits this cmp
      * @private
@@ -71,6 +91,8 @@ Tine.Crm.LeadGridPanel = Ext.extend(Tine.widgets.grid.GridPanel, {
         });
         
         Tine.Crm.LeadGridPanel.superclass.initComponent.call(this);
+        
+        this.grid.view.endingLeadStateIds = Tine.Crm.getEndedLeadStateIds();
     },
     
     /**
@@ -123,8 +145,11 @@ Tine.Crm.LeadGridPanel = Ext.extend(Tine.widgets.grid.GridPanel, {
                 {header: this.app.i18n._('Leadstate'), id: 'leadstate_id', dataIndex: 'leadstate_id', sortable: false, width: 100, renderer: Tine.Crm.LeadState.Renderer},
                 {header: this.app.i18n._('Probability'), id: 'probability', dataIndex: 'probability', width: 50, renderer: Ext.util.Format.percentage },
                 {header: this.app.i18n._('Turnover'), id: 'turnover', dataIndex: 'turnover', width: 100, renderer: Ext.util.Format.euMoney },
+
                 {header: this.app.i18n._('Estimated end'), id: 'end_scheduled', dataIndex: 'end_scheduled', width: 100, renderer: Tine.Tinebase.common.dateRenderer, sortable: true },
-                {header: this.app.i18n._('Probable Turnover'), id: 'probableTurnover', dataIndex: 'probableTurnover', width: 100, renderer: Ext.util.Format.euMoney, sortable: false }
+                {header: this.app.i18n._('Probable Turnover'), id: 'probableTurnover', dataIndex: 'probableTurnover', width: 100, renderer: Ext.util.Format.euMoney, sortable: false },
+                {header: this.app.i18n._('Resubmission Date'), id: 'resubmission_date', dataIndex: 'resubmission_date', width: 100, renderer: Tine.Tinebase.common.dateRenderer, sortable: true }
+                
             ].concat(this.getModlogColumns().concat(this.getCustomfieldColumns()))
         });
     },
index d1b7a8f..d58cc2b 100644 (file)
@@ -30,6 +30,8 @@ Tine.Crm.Model.Lead = Tine.Tinebase.data.Record.create(Tine.Tinebase.Model.gener
         {name: 'probability',   type: 'int'},
         {name: 'probableTurnover',   type: 'int'},
         {name: 'end_scheduled', type: 'date', dateFormat: Date.patterns.ISO8601Long},
+        {name: 'resubmission_date', type: 'date', dateFormat: Date.patterns.ISO8601Long},
+
         {name: 'lastread'},
         {name: 'lastreader'},
         {name: 'responsible'},
@@ -114,6 +116,7 @@ Tine.Crm.Model.Lead.getFilterModel = function() {
             {label: _('Created By'),                                                        field: 'created_by',         valueType: 'user'},
             
             {label: app.i18n._('Estimated end'), field: 'end_scheduled', valueType: 'date'},
+            {label: app.i18n._('Resubmission Date'), field: 'resubmission_date', valueType: 'date'},
             
             {filtertype: 'crm.contact'},
             {filtertype: 'foreignrecord', app: app, foreignRecordClass: Tine.Tasks.Model.Task, ownField: 'task'}
index e697967..6d07d5b 100644 (file)
@@ -596,3 +596,7 @@ msgstr "Lead %s wurde geändert"
 #, python-format
 msgid "Lead %s has been created"
 msgstr "Lead %s wurde angelegt"
+
+#: js/LeadGridPanel.js:144 js/LeadEditDialog.js:393
+msgid "Resubmission Date"
+msgstr "Wiedervorlagedatum"
index 2ac04e2..4716467 100644 (file)
@@ -13,248 +13,262 @@ msgstr ""
 "X-Poedit-SourceCharset: utf-8\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
-#: Acl/Rights.php:106
-msgid "manage shared lead folders"
+#: Preference.php:37
+msgid "All leads"
 msgstr ""
 
-#: Acl/Rights.php:107
-msgid "Create new shared lead folders"
+#: Preference.php:81
+msgid "Default Lead List"
 msgstr ""
 
-#: Acl/Rights.php:110
-msgid "manage shared leads favorites"
+#: Preference.php:82
+msgid "The default list for new leads"
 msgstr ""
 
-#: Acl/Rights.php:111
-msgid "Create or update shared leads favorites"
+#: Preference.php:86
+msgid "Get Notification Emails"
 msgstr ""
 
-#: Controller.php:117
-#, python-format
-msgid "%s's personal leads"
+#: Preference.php:87
+msgid "The level of actions you want to be notified about."
 msgstr ""
 
-#: Controller.php:162 Model/Lead.php:120 js/LeadGridDetailsPanel.js:45
-#: js/Contact.js:161 js/Contact.js:356 js/Contact.js:396
-#: js/LeadGridPanel.js:122 Controller/Lead.php:186
-msgid "Customer"
+#: Preference.php:91
+msgid "Send Notifications Emails for own actions"
 msgstr ""
 
-#: Controller.php:163 js/LeadGridDetailsPanel.js:45 js/Contact.js:181
-#: js/Contact.js:357 js/Contact.js:400 js/LeadGridPanel.js:121
-msgid "Partner"
+#: Preference.php:92
+msgid "Get notifications emails for actions you did yourself"
 msgstr ""
 
-#: Controller.php:164
-msgid "Reseller"
+#: Preference.php:95
+msgid "Default Favorite"
 msgstr ""
 
-#: Controller.php:167
-msgid "open"
+#: Preference.php:96
+msgid "The default favorite which is loaded on crm startup"
 msgstr ""
 
-#: Controller.php:168
-msgid "contacted"
+#: Setup/Update/Release3.php:37 Setup/Initialize.php:36
+msgid "All leads I have read grants for"
 msgstr ""
 
-#: Controller.php:169
-msgid "waiting for feedback"
+#: Setup/Initialize.php:43
+msgid "Last modified by me"
 msgstr ""
 
-#: Controller.php:170
-msgid "quote sent"
+#: Setup/Initialize.php:44
+msgid "All leads that I have last modified"
 msgstr ""
 
-#: Controller.php:171
-msgid "accepted"
+#: Setup/Initialize.php:53
+msgid "My leads"
 msgstr ""
 
-#: Controller.php:172
-msgid "lost"
+#: Setup/Initialize.php:54
+msgid "All leads that I am responsible for"
 msgstr ""
 
-#: Controller.php:175
-msgid "Market"
+#: Setup/Initialize.php:67
+msgid "Leads with overdue tasks"
 msgstr ""
 
-#: Controller.php:176 Export/Pdf.php:219
-msgid "Email"
+#: Model/Lead.php:122 js/LeadGridPanel.js:137 js/Contact.js:171
+#: js/Contact.js:355 js/Contact.js:392
+msgid "Responsible"
 msgstr ""
 
-#: Controller.php:177 Export/Pdf.php:218
-msgid "Telephone"
+#: Model/Lead.php:123 js/LeadGridPanel.js:139 js/Contact.js:161
+#: js/Contact.js:356 js/Contact.js:396 js/LeadGridDetailsPanel.js:45
+#: Controller/Lead.php:193 Controller.php:162
+msgid "Customer"
 msgstr ""
 
-#: Controller.php:178
-msgid "Website"
+#: Model/Lead.php:129
+msgid "Task"
 msgstr ""
 
-#: Model/Lead.php:119 js/Contact.js:171 js/Contact.js:355 js/Contact.js:392
-#: js/LeadGridPanel.js:120
-msgid "Responsible"
+#: js/Task.js:83 js/LeadEditDialog.js:245 Export/Pdf.php:232
+msgid "Tasks"
 msgstr ""
 
-#: Model/Lead.php:125
-msgid "Task"
+#: js/Task.js:109
+msgid "No Tasks to display"
 msgstr ""
 
-#: Setup/Update/Release3.php:37 Setup/Initialize.php:36
-msgid "All leads I have read grants for"
+#: js/Task.js:168
+msgid "Summary"
 msgstr ""
 
-#: Setup/Initialize.php:43
-msgid "Last modified by me"
+#: js/Task.js:172
+msgid "Add a task..."
 msgstr ""
 
-#: Setup/Initialize.php:44
-msgid "All leads that I have last modified"
+#: js/Task.js:176 Export/Pdf.php:252
+msgid "Due Date"
 msgstr ""
 
-#: Setup/Initialize.php:53
-msgid "My leads"
+#: js/Task.js:189 Export/Pdf.php:259
+msgid "Priority"
 msgstr ""
 
-#: Setup/Initialize.php:54
-msgid "All leads that I am responsible for"
+#: js/Task.js:205
+msgid "Percent"
 msgstr ""
 
-#: Setup/Initialize.php:67
-msgid "Leads with overdue tasks"
+#: js/Task.js:218 js/LeadGridDetailsPanel.js:439
+msgid "Status"
 msgstr ""
 
-#: Preference.php:37
-msgid "All leads"
+#: js/LeadGridPanel.js:134
+msgid "Lead id"
 msgstr ""
 
-#: Preference.php:81
-msgid "Default Lead List"
+#: js/LeadGridPanel.js:135
+msgid "Tags"
 msgstr ""
 
-#: Preference.php:82
-msgid "The default list for new leads"
+#: js/LeadGridPanel.js:136 js/Model.js:108
+msgid "Lead name"
 msgstr ""
 
-#: Preference.php:86
-msgid "Get Notification Emails"
+#: js/LeadGridPanel.js:138 js/Contact.js:181 js/Contact.js:357
+#: js/Contact.js:400 js/LeadGridDetailsPanel.js:45 Controller.php:163
+msgid "Partner"
 msgstr ""
 
-#: Preference.php:87
-msgid "The level of actions you want to be notified about."
+#: js/LeadGridPanel.js:140 js/LeadEditDialog.js:343 js/AdminPanel.js:157
+#: js/LeadStateFilterModel.js:32 Export/Pdf.php:78
+msgid "Leadstate"
 msgstr ""
 
-#: Preference.php:91
-msgid "Send Notifications Emails for own actions"
+#: js/LeadGridPanel.js:141 js/LeadEditDialog.js:222 js/Model.js:110
+#: Controller/Lead.php:201 Export/Pdf.php:90
+msgid "Probability"
 msgstr ""
 
-#: Preference.php:92
-msgid "Get notifications emails for actions you did yourself"
+#: js/LeadGridPanel.js:142 js/Model.js:111 Controller/Lead.php:200
+#: Export/Pdf.php:87
+msgid "Turnover"
 msgstr ""
 
-#: Preference.php:95
-msgid "Default Favorite"
+#: js/LeadGridPanel.js:143
+msgid "Probable Turnover"
 msgstr ""
 
-#: Preference.php:96
-msgid "The default favorite which is loaded on crm startup"
+#: js/LeadGridPanel.js:144 js/LeadEditDialog.js:393
+msgid "Resubmission Date"
 msgstr ""
 
-#: Export/Pdf.php:75
-msgid "Lead Data"
+#: js/LeadGridPanel.js:186
+msgid "Export Lead"
 msgstr ""
 
-#: Export/Pdf.php:78 js/AdminPanel.js:157 js/LeadStateFilterModel.js:32
-#: js/LeadEditDialog.js:343 js/LeadGridPanel.js:123
-msgid "Leadstate"
+#: js/LeadGridPanel.js:195
+msgid "Export as PDF"
 msgstr ""
 
-#: Export/Pdf.php:81 js/AdminPanel.js:171 js/LeadGridDetailsPanel.js:454
-#: js/LeadEditDialog.js:362
-msgid "Leadtype"
+#: js/LeadGridPanel.js:202
+msgid "Export as CSV"
 msgstr ""
 
-#: Export/Pdf.php:84 js/AdminPanel.js:164 js/LeadGridDetailsPanel.js:459
-#: js/LeadEditDialog.js:369
-msgid "Leadsource"
+#: js/LeadGridPanel.js:209
+msgid "Export as ODS"
 msgstr ""
 
-#: Export/Pdf.php:87 js/Model.js:109 js/LeadGridPanel.js:125
-#: Controller/Lead.php:193
-msgid "Turnover"
+#: js/LeadGridPanel.js:216
+msgid "Export as XLS"
 msgstr ""
 
-#: Export/Pdf.php:90 js/Model.js:108 js/LeadEditDialog.js:222
-#: js/LeadGridPanel.js:124 Controller/Lead.php:194
-msgid "Probability"
+#: js/LeadEditDialog.js:229 Controller/Lead.php:199 Export/Pdf.php:96
+msgid "End"
 msgstr ""
 
-#: Export/Pdf.php:93 js/LeadGridDetailsPanel.js:444 js/LeadEditDialog.js:401
-#: Controller/Lead.php:190
-msgid "Start"
+#: js/LeadEditDialog.js:246
+msgid ""
+"You do not have the run right for the Tasks application or it is not "
+"activated."
 msgstr ""
 
-#: Export/Pdf.php:96 js/LeadEditDialog.js:229 Controller/Lead.php:192
-msgid "End"
+#: js/LeadEditDialog.js:256 js/Product.js:85 Export/Pdf.php:274
+msgid "Products"
 msgstr ""
 
-#: Export/Pdf.php:99
-msgid "End Scheduled"
+#: js/LeadEditDialog.js:257
+msgid ""
+"You do not have the run right for the Sales application or it is not "
+"activated."
 msgstr ""
 
-#: Export/Pdf.php:184
-msgid "Contacts"
+#: js/LeadEditDialog.js:274 js/AddToLeadPanel.js:73 js/Model.js:52
+msgid "Lead"
+msgid_plural "Leads"
+msgstr[0] ""
+msgstr[1] ""
+
+#: js/LeadEditDialog.js:301
+msgid "Enter short name"
 msgstr ""
 
-#: Export/Pdf.php:211 js/Contact.js:231
-msgid "Address"
+#: js/LeadEditDialog.js:362 js/AdminPanel.js:171
+#: js/LeadGridDetailsPanel.js:454 Export/Pdf.php:81
+msgid "Leadtype"
 msgstr ""
 
-#: Export/Pdf.php:232 js/Task.js:83 js/LeadEditDialog.js:245
-msgid "Tasks"
+#: js/LeadEditDialog.js:369 js/AdminPanel.js:164
+#: js/LeadGridDetailsPanel.js:459 Export/Pdf.php:84
+msgid "Leadsource"
 msgstr ""
 
-#: Export/Pdf.php:252 js/Task.js:176
-msgid "Due Date"
+#: js/LeadEditDialog.js:385
+msgid "Expected turnover"
 msgstr ""
 
-#: Export/Pdf.php:259 js/Task.js:189
-msgid "Priority"
+#: js/LeadEditDialog.js:406 js/LeadGridDetailsPanel.js:444
+#: Controller/Lead.php:197 Export/Pdf.php:93
+msgid "Start"
 msgstr ""
 
-#: Export/Pdf.php:274 js/Product.js:85 js/LeadEditDialog.js:256
-msgid "Products"
+#: js/LeadEditDialog.js:412 js/LeadGridDetailsPanel.js:449
+msgid "Estimated end"
 msgstr ""
 
-#: Export/Pdf.php:315
-msgid "low"
+#: js/LeadEditDialog.js:444 js/Product.js:139
+msgid "Description"
 msgstr ""
 
-#: Export/Pdf.php:316
-msgid "normal"
+#: js/LeadEditDialog.js:458
+msgid "Enter description"
 msgstr ""
 
-#: Export/Pdf.php:317
-msgid "high"
+#: js/Crm.js:24
+msgid "New Lead"
 msgstr ""
 
-#: Export/Pdf.php:318
-msgid "urgent"
+#: js/Product.js:134
+msgid "Product"
 msgstr ""
 
-#: js/AdminPanel.js:122 js/LeadGridDetailsPanel.js:194
-#: js/LeadGridDetailsPanel.js:227
-msgid "Leadstates"
+#: js/Product.js:146
+msgid "Price"
 msgstr ""
 
-#: js/AdminPanel.js:126 js/LeadGridDetailsPanel.js:216
-msgid "Leadtypes"
+#: js/Product.js:158
+msgid "Quantity"
 msgstr ""
 
-#: js/AdminPanel.js:130 js/LeadGridDetailsPanel.js:205
-msgid "Leadsources"
+#: js/Product.js:185 js/LinkGridPanel.js:56
+#, python-brace-format
+msgid "Unlink {0}"
 msgstr ""
 
-#: js/AdminPanel.js:138
-msgid "Defaults"
+#: js/Product.js:186 js/LinkGridPanel.js:57
+#, python-brace-format
+msgid "Unlink selected {0}"
+msgstr ""
+
+#: js/Product.js:216
+msgid "Search for Products to add ..."
 msgstr ""
 
 #: js/LeadType.js:29
@@ -267,6 +281,33 @@ msgstr[1] ""
 msgid "Add a Leadtype..."
 msgstr ""
 
+#: js/LeadSource.js:29
+msgid "Lead Source"
+msgid_plural "Lead Sources"
+msgstr[0] ""
+msgstr[1] ""
+
+#: js/LeadSource.js:136
+msgid "Add a Leadsource..."
+msgstr ""
+
+#: js/AdminPanel.js:122 js/LeadGridDetailsPanel.js:194
+#: js/LeadGridDetailsPanel.js:227
+msgid "Leadstates"
+msgstr ""
+
+#: js/AdminPanel.js:126 js/LeadGridDetailsPanel.js:216
+msgid "Leadtypes"
+msgstr ""
+
+#: js/AdminPanel.js:130 js/LeadGridDetailsPanel.js:205
+msgid "Leadsources"
+msgstr ""
+
+#: js/AdminPanel.js:138
+msgid "Defaults"
+msgstr ""
+
 #: js/AddToLeadPanel.js:31
 msgid "Please choose the Lead to add the contacts to"
 msgstr ""
@@ -275,17 +316,11 @@ msgstr ""
 msgid "Please select the attenders' role"
 msgstr ""
 
-#: js/AddToLeadPanel.js:73 js/Model.js:50 js/LeadEditDialog.js:274
-msgid "Lead"
-msgid_plural "Leads"
-msgstr[0] ""
-msgstr[1] ""
-
 #: js/AddToLeadPanel.js:74
 msgid "Select Lead"
 msgstr ""
 
-#: js/AddToLeadPanel.js:78 js/Contact.js:252 Controller/Lead.php:188
+#: js/AddToLeadPanel.js:78 js/Contact.js:252 Controller/Lead.php:195
 msgid "Role"
 msgstr ""
 
@@ -294,29 +329,10 @@ msgid "Select Role"
 msgstr ""
 
 #: js/AddToLeadPanel.js:93
+#, python-brace-format
 msgid "Adding {0} contacts to lead"
 msgstr ""
 
-#: js/Task.js:109
-msgid "No Tasks to display"
-msgstr ""
-
-#: js/Task.js:168
-msgid "Summary"
-msgstr ""
-
-#: js/Task.js:172
-msgid "Add a task..."
-msgstr ""
-
-#: js/Task.js:205
-msgid "Percent"
-msgstr ""
-
-#: js/Task.js:218 js/LeadGridDetailsPanel.js:439
-msgid "Status"
-msgstr ""
-
 #: js/LeadState.js:32
 msgid "Lead State"
 msgid_plural "Lead States"
@@ -327,48 +343,44 @@ msgstr[1] ""
 msgid "Add a Leadstate..."
 msgstr ""
 
-#: js/LeadGridContactFilter.js:47
-msgid "Contact"
-msgstr ""
-
-#: js/LeadGridContactFilter.js:54
-msgid "CRM Role"
+#: js/Contact.js:162
+msgid "Change type to Customer"
 msgstr ""
 
-#: js/LeadStateFilterModel.js:37
-msgid "Show closed"
+#: js/Contact.js:172
+msgid "Change type to Responsible"
 msgstr ""
 
-#: js/Product.js:134
-msgid "Product"
+#: js/Contact.js:182
+msgid "Change type to Partner"
 msgstr ""
 
-#: js/Product.js:139 js/LeadEditDialog.js:439
-msgid "Description"
+#: js/Contact.js:193
+msgid "Change contact type"
 msgstr ""
 
-#: js/Product.js:146
-msgid "Price"
+#: js/Contact.js:205
+msgid "Search for Contacts to add ..."
 msgstr ""
 
-#: js/Product.js:158
-msgid "Quantity"
+#: js/Contact.js:222
+msgid "Name"
 msgstr ""
 
-#: js/Product.js:185 js/LinkGridPanel.js:56
-msgid "Unlink {0}"
+#: js/Contact.js:231 Export/Pdf.php:211
+msgid "Address"
 msgstr ""
 
-#: js/Product.js:186 js/LinkGridPanel.js:57
-msgid "Unlink selected {0}"
+#: js/Contact.js:242
+msgid "Data"
 msgstr ""
 
-#: js/Product.js:216
-msgid "Search for Products to add ..."
+#: js/Contact.js:245 js/LeadGridDetailsPanel.js:48
+msgid "Phone"
 msgstr ""
 
-#: js/LeadGridDetailsPanel.js:48 js/Contact.js:245
-msgid "Phone"
+#: js/Contact.js:246
+msgid "Cellphone"
 msgstr ""
 
 #: js/LeadGridDetailsPanel.js:51
@@ -387,205 +399,203 @@ msgstr ""
 msgid "Web"
 msgstr ""
 
-#: js/LeadGridDetailsPanel.js:449 js/LeadEditDialog.js:407
-msgid "Estimated end"
-msgstr ""
-
-#: js/LeadSource.js:29
-msgid "Lead Source"
-msgid_plural "Lead Sources"
-msgstr[0] ""
-msgstr[1] ""
-
-#: js/LeadSource.js:136
-msgid "Add a Leadsource..."
-msgstr ""
-
-#: js/Model.js:54
+#: js/Model.js:56
 msgid "lead list"
 msgid_plural "lead lists"
 msgstr[0] ""
 msgstr[1] ""
 
-#: js/Model.js:54
+#: js/Model.js:56
 msgid "lead lists"
 msgstr ""
 
-#: js/Model.js:104
+#: js/Model.js:106
 msgid "Quick Search"
 msgstr ""
 
-#: js/Model.js:106 js/LeadGridPanel.js:119
-msgid "Lead name"
-msgstr ""
-
-#: js/Model.js:111
+#: js/Model.js:113
 msgid "Last Modified Time"
 msgstr ""
 
-#: js/Model.js:112
+#: js/Model.js:114
 msgid "Last Modified By"
 msgstr ""
 
-#: js/Model.js:113
+#: js/Model.js:115
 msgid "Creation Time"
 msgstr ""
 
-#: js/Model.js:114
+#: js/Model.js:116
 msgid "Created By"
 msgstr ""
 
-#: js/Model.js:153
+#: js/Model.js:155
 msgid "Settings"
 msgid_plural "Settings"
 msgstr[0] ""
 msgstr[1] ""
 
-#: js/Model.js:156
+#: js/Model.js:158
 msgid "record list"
 msgid_plural "record lists"
 msgstr[0] ""
 msgstr[1] ""
 
-#: js/LeadEditDialog.js:246
-msgid ""
-"You do not have the run right for the Tasks application or it is not "
-"activated."
+#: js/LeadGridContactFilter.js:47
+msgid "Contact"
 msgstr ""
 
-#: js/LeadEditDialog.js:257
-msgid ""
-"You do not have the run right for the Sales application or it is not "
-"activated."
+#: js/LeadGridContactFilter.js:54
+msgid "CRM Role"
 msgstr ""
 
-#: js/LeadEditDialog.js:301
-msgid "Enter short name"
+#: js/LinkGridPanel.js:34
+#, python-brace-format
+msgid "Add new {0}"
 msgstr ""
 
-#: js/LeadEditDialog.js:385
-msgid "Expected turnover"
+#: js/LinkGridPanel.js:72
+#, python-brace-format
+msgid "Edit {0}"
 msgstr ""
 
-#: js/LeadEditDialog.js:453
-msgid "Enter description"
+#: js/LinkGridPanel.js:73
+#, python-brace-format
+msgid "Edit selected {0}"
 msgstr ""
 
-#: js/Contact.js:162
-msgid "Change type to Customer"
+#: js/LeadStateFilterModel.js:37
+msgid "Show closed"
 msgstr ""
 
-#: js/Contact.js:172
-msgid "Change type to Responsible"
+#: Controller/Lead.php:194
+msgid "State"
 msgstr ""
 
-#: js/Contact.js:182
-msgid "Change type to Partner"
+#: Controller/Lead.php:196
+msgid "Source"
 msgstr ""
 
-#: js/Contact.js:193
-msgid "Change contact type"
+#: Controller/Lead.php:198
+msgid "Scheduled end"
 msgstr ""
 
-#: js/Contact.js:205
-msgid "Search for Contacts to add ..."
+#: Controller/Lead.php:202
+msgid "Folder"
 msgstr ""
 
-#: js/Contact.js:222
-msgid "Name"
+#: Controller/Lead.php:203
+msgid "Updated by"
 msgstr ""
 
-#: js/Contact.js:242
-msgid "Data"
+#: Controller/Lead.php:204
+msgid "Updated Fields:"
 msgstr ""
 
-#: js/Contact.js:246
-msgid "Cellphone"
+#: Controller/Lead.php:205
+#, python-format
+msgid "%s changed from %s to %s."
 msgstr ""
 
-#: js/LinkGridPanel.js:34
-msgid "Add new {0}"
+#: Controller/Lead.php:211
+#, python-format
+msgid "Lead %s has been changed"
 msgstr ""
 
-#: js/LinkGridPanel.js:72
-msgid "Edit {0}"
+#: Controller/Lead.php:213
+#, python-format
+msgid "Lead %s has been created"
 msgstr ""
 
-#: js/LinkGridPanel.js:73
-msgid "Edit selected {0}"
+#: Export/Pdf.php:75
+msgid "Lead Data"
 msgstr ""
 
-#: js/LeadGridPanel.js:117
-msgid "Lead id"
+#: Export/Pdf.php:99
+msgid "End Scheduled"
 msgstr ""
 
-#: js/LeadGridPanel.js:118
-msgid "Tags"
+#: Export/Pdf.php:184
+msgid "Contacts"
 msgstr ""
 
-#: js/LeadGridPanel.js:126
-msgid "Probable Turnover"
+#: Export/Pdf.php:218 Controller.php:177
+msgid "Telephone"
 msgstr ""
 
-#: js/LeadGridPanel.js:168
-msgid "Export Lead"
+#: Export/Pdf.php:219 Controller.php:176
+msgid "Email"
 msgstr ""
 
-#: js/LeadGridPanel.js:177
-msgid "Export as PDF"
+#: Export/Pdf.php:315
+msgid "low"
 msgstr ""
 
-#: js/LeadGridPanel.js:184
-msgid "Export as CSV"
+#: Export/Pdf.php:316
+msgid "normal"
 msgstr ""
 
-#: js/LeadGridPanel.js:191
-msgid "Export as ODS"
+#: Export/Pdf.php:317
+msgid "high"
 msgstr ""
 
-#: js/LeadGridPanel.js:198
-msgid "Export as XLS"
+#: Export/Pdf.php:318
+msgid "urgent"
 msgstr ""
 
-#: js/Crm.js:24
-msgid "New Lead"
+#: Acl/Rights.php:106
+msgid "manage shared lead folders"
 msgstr ""
 
-#: Controller/Lead.php:187
-msgid "State"
+#: Acl/Rights.php:107
+msgid "Create new shared lead folders"
 msgstr ""
 
-#: Controller/Lead.php:189
-msgid "Source"
+#: Acl/Rights.php:110
+msgid "manage shared leads favorites"
 msgstr ""
 
-#: Controller/Lead.php:191
-msgid "Scheduled end"
+#: Acl/Rights.php:111
+msgid "Create or update shared leads favorites"
 msgstr ""
 
-#: Controller/Lead.php:195
-msgid "Folder"
+#: Controller.php:117
+#, python-format
+msgid "%s's personal leads"
 msgstr ""
 
-#: Controller/Lead.php:196
-msgid "Updated by"
+#: Controller.php:164
+msgid "Reseller"
 msgstr ""
 
-#: Controller/Lead.php:197
-msgid "Updated Fields:"
+#: Controller.php:167
+msgid "open"
 msgstr ""
 
-#: Controller/Lead.php:198
-#, python-format
-msgid "%s changed from %s to %s."
+#: Controller.php:168
+msgid "contacted"
 msgstr ""
 
-#: Controller/Lead.php:204
-#, python-format
-msgid "Lead %s has been changed"
+#: Controller.php:169
+msgid "waiting for feedback"
 msgstr ""
 
-#: Controller/Lead.php:206
-#, python-format
-msgid "Lead %s has been created"
+#: Controller.php:170
+msgid "quote sent"
+msgstr ""
+
+#: Controller.php:171
+msgid "accepted"
+msgstr ""
+
+#: Controller.php:172
+msgid "lost"
+msgstr ""
+
+#: Controller.php:175
+msgid "Market"
+msgstr ""
+
+#: Controller.php:178
+msgid "Website"
 msgstr ""