[MERGE] merged the usability branch (with fixesssss)
authorqdp-launchpad@tinyerp.com <>
Fri, 15 Oct 2010 16:53:15 +0000 (18:53 +0200)
committerqdp-launchpad@tinyerp.com <>
Fri, 15 Oct 2010 16:53:15 +0000 (18:53 +0200)
bzr revid: qdp-launchpad@tinyerp.com-20101015165315-qigrk92klwozhv5f

20 files changed:
1  2 
addons/crm/wizard/crm_merge_opportunities_view.xml
addons/hr/hr.py
addons/hr/hr_view.xml
addons/hr_evaluation/hr_evaluation.py
addons/hr_holidays/report/available_holidays_view.xml
addons/hr_recruitment/hr_recruitment.py
addons/project/project_view.xml
addons/project/report/project_report_view.xml
addons/project_issue/project_issue_view.xml
addons/project_issue/report/project_issue_report_view.xml
addons/project_long_term/project_long_term_view.xml
addons/project_messages/project_messages_view.xml
addons/purchase/purchase.py
addons/purchase/wizard/purchase_order_group_view.xml
addons/sale/report/sale_report_view.xml
addons/sale/sale.py
addons/sale/wizard/sale_make_invoice.xml
addons/stock/stock.py
addons/stock/wizard/stock_fill_inventory_view.xml
addons/stock/wizard/stock_inventory_merge_view.xml

          </record>
  
          <act_window id="action_merge_opportunities"
++            multi="True"
              key2="client_action_multi" name="Merge Opportunities"
              res_model="crm.merge.opportunity" src_model="crm.lead"
              view_mode="form" target="new" view_type="form" />
  
      </data>
--</openerp>
++</openerp>
diff --cc addons/hr/hr.py
@@@ -80,18 -80,13 +80,25 @@@ hr_employee_marital_status(
  
  class hr_job(osv.osv):
  
 +    def _no_of_employee(self, cr, uid, ids, name, args, context=None):
 +        res = {}
-         for emp in self.browse(cr, uid, ids):
-             res[emp.id] = len(emp.employee_ids or [])
++        for job in self.browse(cr, uid, ids, context):
++            res[job.id] = len(job.employee_ids or [])
++        return res
++
++    def _no_of_recruitement(self, cr, uid, ids, name, args, context=None):
++        res = {}
++        for job in self.browse(cr, uid, ids, context):
++            res[job.id] = job.expected_employees - job.no_of_employee
 +        return res
 +
      _name = "hr.job"
      _description = "Job Description"
      _columns = {
          'name': fields.char('Job Name', size=128, required=True, select=True),
--        'expected_employees': fields.integer('Expected Employees', help='Required number of Employees'),
-         'no_of_employee': fields.function(_no_of_employee, method=True, string='No of Employees', type='integer', help='Number of Employees selected'),
 -        'no_of_employee': fields.integer('No of Employees', help='Number of employee there are already in the department'),
 -        'no_of_recruitment': fields.integer('No of Recruitment', readonly=True),
++        'expected_employees': fields.integer('Expected Employees', help='Required number of Employees in total for that job.'),
++        'no_of_employee': fields.function(_no_of_employee, method=True, string="No of Employee", help='Number of employee with that job.'),
++        'no_of_recruitment': fields.function(_no_of_recruitement, method=True, string='Expected in Recruitment', readonly=True),
          'employee_ids': fields.one2many('hr.employee', 'job_id', 'Employees'),
          'description': fields.text('Job Description'),
          'requirements': fields.text('Requirements'),
      _defaults = {
          'expected_employees': 1,
          'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'hr.job', context=c),
-         'state': 'open'
+         'state': 'open',
 -        'no_of_recruitment': 1,
      }
  
+     def on_change_expected_employee(self, cr, uid, ids, expected_employee, no_of_employee, context=None):
+         if context is None:
+             context = {}
+         result={}
+         if expected_employee:
+             result['no_of_recruitment'] = expected_employee - no_of_employee
+         return {'value': result}
      def job_old(self, cr, uid, ids, *args):
          self.write(cr, uid, ids, {'state': 'old'})
          return True
                      <field name="name" />
                      <field name="department_id" />
                      <field name="company_id" widget="selection" groups="base.group_multi_company"/>
-                     <field name="expected_employees"/>
+                     <field name="expected_employees" on_change="on_change_expected_employee(expected_employees,no_of_employee)"/>
 -                    <field name="no_of_employee" on_change="on_change_expected_employee(expected_employees,no_of_employee)"/>
 +                    <field name="no_of_employee"/>
+                     <field name="no_of_recruitment"/>
                      </group>
                      <newline/>
                      <notebook colspan="4">
@@@ -267,7 -267,21 +267,18 @@@ class hr_evaluation(osv.osv)
              context = {}
          self.write(cr, uid, ids,{'state':'cancel'}, context=context)
          return True
+         
+     def write(self, cr, uid, ids, vals, context=None):
+         if context is None:
+             context = {}
+         if 'date' in vals:
 -            new_vals = {}
++            new_vals = {'date_deadline': vals.get('date')}
+             obj_hr_eval_iterview = self.pool.get('hr.evaluation.interview')
 -            current_record = self.browse(cr, uid, ids, context=context)[0]
 -            survey_requests =  current_record.survey_request_ids
 -            new_vals.update({'date_deadline':vals.get('date')})
 -            if survey_requests:
 -                for survey_req in survey_requests:
 -                    obj_hr_eval_iterview.write(cr, uid, survey_req.id, new_vals,context=context)
++            for evalutation in self.browse(cr, uid, ids, context=context):
++                for survey_req in evalutation.survey_request_ids:
++                    obj_hr_eval_iterview.write(cr, uid, [survey_req.id], new_vals, context=context)
+         return super(hr_evaluation, self).write(cr, uid, ids, vals, context=context)
+     
  hr_evaluation()
  
  class survey_request(osv.osv):
@@@ -432,14 -432,10 +432,6 @@@ class hr_applicant(crm.crm_case, osv.os
          applicant = self.browse(cr, uid, ids)[0]
          if applicant.job_id :
              emp_id = employee_obj.create(cr,uid,{'name':applicant.name,'job_id':applicant.job_id.id})
--            job_data = job_obj.browse(cr,uid, applicant.job_id.id)
-             expected_emp = job_data['expected_employees'] - 1
-             if expected_emp == 0:
-                 job_obj.write(cr,uid, [applicant.job_id.id],{'state':'old'})
-             job_obj.write(cr,uid, [applicant.job_id.id],{'expected_employees':expected_emp})
 -            no_of_emp = job_data['no_of_employee'] + 1
 -            no_of_recruit = job_data['no_of_recruitment'] - 1
 -            job_obj.write(cr,uid, [applicant.job_id.id],{'no_of_employee':no_of_emp,'no_of_recruitment':no_of_recruit})
          return res
  
      def case_reset(self, cr, uid, ids, *args):
Simple merge
@@@ -37,6 -37,25 +37,7 @@@ from osv.orm import browse_record, brow
  # Model definition
  #
  class purchase_order(osv.osv):
+     
 -    def fields_view_get(self, cr, uid, view_id=None, view_type='form',
 -                            context=None, toolbar=False, submenu=False):
 -            """
 -             Changes the view dynamically
 -             @param self: The object pointer.
 -             @param cr: A database cursor
 -             @param uid: ID of the user currently logged in
 -             @param context: A standard dictionary
 -             @return: New arch of view.
 -            """
 -            if not context:
 -                context={}
 -            res = super(purchase_order, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
 -            if view_type == 'form':
 -               if res['toolbar']['action'] and res['toolbar']['action'][0]['res_model']=='purchase.order.group':
 -                   res['toolbar']['action']=[]
 -            return res
 -             
      def _calc_amount(self, cr, uid, ids, prop, unknow_none, unknow_dict):
          res = {}
          for order in self.browse(cr, uid, ids):
@@@ -30,7 -30,7 +30,8 @@@ Lines will only be merged if: &#13
              res_model="purchase.order.group"
              src_model="purchase.order"
              view_mode="form"
--            target="new"        
++            target="new"
++            multi="True"        
              key2="client_action_multi"    
              groups="base.group_extended"
              id="action_view_purchase_order_group"/>    
@@@ -54,7 -54,25 +54,7 @@@ def _incoterm_get(self, cr, uid, contex
  class sale_order(osv.osv):
      _name = "sale.order"
      _description = "Sale Order"
+     
 -    def fields_view_get(self, cr, uid, view_id=None, view_type='form',
 -                            context=None, toolbar=False, submenu=False):
 -            """
 -             Changes the view dynamically
 -             @param self: The object pointer.
 -             @param cr: A database cursor
 -             @param uid: ID of the user currently logged in
 -             @param context: A standard dictionary
 -             @return: New arch of view.
 -            """
 -            if not context:
 -                context={}
 -            res = super(sale_order, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
 -            if view_type == 'form':
 -               if res['toolbar']['action'] and res['toolbar']['action'][0]['res_model']=='sale.make.invoice':
 -                   res['toolbar']['action']=[]
 -            return res
 -    
      def copy(self, cr, uid, id, default=None, context=None):
          if context is None:
              context = {}
@@@ -26,6 -26,6 +26,7 @@@
              <field name="view_mode">form</field>
              <field name="view_id" ref="view_sale_order_make_invoice"/>
              <field name="target">new</field>
++            <field name="multi">True</field>
          </record>
          
          <record model="ir.values" id="sale_order_make_invoice">
@@@ -2371,7 -2371,25 +2371,7 @@@ class stock_inventory(osv.osv)
          'state': 'draft',
          'company_id': lambda self,cr,uid,c: self.pool.get('res.company')._company_default_get(cr, uid, 'stock.inventory', context=c)
      }
+     
 -    def fields_view_get(self, cr, uid, view_id=None, view_type='form',
 -                            context=None, toolbar=False, submenu=False):
 -            """
 -             Changes the view dynamically
 -             @param self: The object pointer.
 -             @param cr: A database cursor
 -             @param uid: ID of the user currently logged in
 -             @param context: A standard dictionary
 -             @return: New arch of view.
 -            """
 -            if not context:
 -                context={}
 -            res = super(stock_inventory, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
 -            if view_type == 'form':
 -               if res['toolbar']['action'] and res['toolbar']['action'][0]['res_model']=='stock.fill.inventory':
 -                   res['toolbar']['action']=[]
 -            return res
 -
      def _inventory_line_hook(self, cr, uid, inventory_line, move_vals):
          """ Creates a stock move from an inventory line
          @param inventory_line:
@@@ -1,33 -1,33 +1,34 @@@
  <?xml version="1.0" encoding="utf-8"?>
  <openerp>
      <data>
--              <record id="view_stock_fill_inventory" model="ir.ui.view">
++           <record id="view_stock_fill_inventory" model="ir.ui.view">
              <field name="name">Import Inventory</field>
              <field name="model">stock.fill.inventory</field>
              <field name="type">form</field>
              <field name="arch" type="xml">
                <form string="Import Inventory">
--                      <separator string="Import current product inventory from the following location" colspan="4" />
--                      <field name="location_id"/>
--                      <newline/>
--                      <field name="recursive"/>
--                              <newline/>
--                              <field name="set_stock_zero"/>
--                      <separator string="" colspan="4" />
--                                      <button special="cancel" string="_Cancel" icon='gtk-cancel'/>
--                  <button name="fill_inventory" string="Fill Inventory" type="object" icon="gtk-ok"/>
++                     <separator string="Import current product inventory from the following location" colspan="4" />
++                    <field name="location_id"/>
++                    <newline/>
++                    <field name="recursive"/>
++                    <newline/>
++                    <field name="set_stock_zero"/>
++                    <separator string="" colspan="4" />
++                    <button special="cancel" string="_Cancel" icon='gtk-cancel'/>
++                    <button name="fill_inventory" string="Fill Inventory" type="object" icon="gtk-ok"/>
               </form>
              </field>
--              </record>
++        </record>
  
--         <act_window name="Import Inventory"              
--                  res_model="stock.fill.inventory"
--                  src_model="stock.inventory"
--                  view_mode="form"
--                  target="new"        
--                  context="{'search_default_in_location':1}" 
++         <act_window name="Import Inventory"            
++            res_model="stock.fill.inventory"
++            src_model="stock.inventory"
++            view_mode="form"
++            target="new"
++            multi="False"        
++            context="{'search_default_in_location':1}" 
              key2="client_action_multi"    
--                  id="action_view_stock_fill_inventory"/>     
++            id="action_view_stock_fill_inventory"/>    
  
      </data>
  </openerp>
@@@ -22,6 -22,6 +22,7 @@@
                        res_model="stock.inventory.merge"
                        src_model="stock.inventory"
                        view_mode="form"
++                        multi="True"
                        target="new"        
                        key2="client_action_multi"    
                        id="action_view_stock_merge_inventories"/>