[MERGE]: merging from same branch

bzr revid: mga@tinyerp.com-20100216070952-afwj3i0laijixbm0
This commit is contained in:
Mantavya Gajjar 2010-02-16 12:39:52 +05:30
commit 810ae047dc
7 changed files with 148 additions and 155 deletions

View File

@ -4,18 +4,18 @@
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="crm_lead_stage_act" model="ir.actions.act_window">
<field name="name">Lead Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
<field name="context">{'object_id':'crm.lead'}</field>
</record>
<menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Stage
# ------------------------------------------------------
<record id="crm_lead_stage_act" model="ir.actions.act_window">
<field name="name">Lead Stages</field>
<field name="res_model">crm.case.stage</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_stage_tree"/>
<field name="domain">[('object_id.model', '=', 'crm.lead')]</field>
<field name="context">{'object_id':'crm.lead'}</field>
</record>
<menuitem action="crm_lead_stage_act" id="menu_crm_lead_stage_act" parent="crm.menu_crm_case_stage"/>
# ------------------------------------------------------
# Leads
# ------------------------------------------------------
@ -26,47 +26,40 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Leads Form">
<group colspan="4" col="4">
<group colspan="4" col="6">
<field name="partner_name" string="Lead Name" required="1"/>
<field name="name" string="Lead Subject"/>
<field name="partner_name2" string="Contact Name"/>
<field name="email_from" string="Email"/>
<newline/>
<group colspan="4" col="5">
<label string="" colspan="2"/>
<button string="Create Opportunity" name="%(wizard_crm_lead_opportunity_set)d" icon="gtk-index" type="action"/>
<button string="Convert to Partner"
icon="terp-partner" name="%(wizard_crm_lead_partner_create)d"
type="action" attrs="{'invisible':[('partner_id','!=',False)]}"
/>
</group>
<button string="Create Opportunity" name="%(wizard_crm_lead_opportunity_set)d" icon="gtk-index" type="action"/>
<field name="partner_name2" string="Contact Name"/>
<field name="email_from" string="Email"/>
<button string="Convert to Partner"
icon="terp-partner" name="%(wizard_crm_lead_partner_create)d"
type="action" attrs="{'invisible':[('partner_id','!=',False)]}"
/>
</group>
<group colspan="4" col="4">
<notebook>
<notebook colspan="4">
<page string="Leads">
<separator colspan="4" string="Communication"/>
<field name="partner_id" string="Partner"
on_change="onchange_partner_id(partner_id)" />
on_change="onchange_partner_id(partner_id)" />
<field name="partner_address_id"
string="Contact"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
string="Contact"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<field name="partner_phone"/>
<field name="partner_mobile"/>
<separator colspan="4" string="Status and Categarization"/>
<separator colspan="4" string="Status and Categorization"/>
<group colspan="4" col="6">
<field name="user_id" select="2"/>
<field name="stage_id" select="1" string="Status" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
<field name="user_id" select="2"/>
<field name="stage_id" select="1" string="Status" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
<field name="categ_id" select="1"
on_change="onchange_categ_id(categ_id)"
string="Lead Source" widget="selection"
domain="[('object_id.model', '=', 'crm.opportunity')]" />
on_change="onchange_categ_id(categ_id)"
string="Lead Source" widget="selection"
domain="[('object_id.model', '=', 'crm.opportunity')]" />
<field name="type_id" string="Campaign" select="1"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="priority" string="Priority"/>
<field name="date" string="Create Date"/>
</group>
</group>
<separator colspan="4" string="Details"/>
<field name="description" nolabel="1" colspan="4"/>
<separator colspan="4"/>
@ -106,12 +99,11 @@
</tree>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.wizard_crm_new_send_mail)d"
context="{'mail':'new'}" icon="gtk-go-forward"
type="action" />
name="%(crm.wizard_crm_new_send_mail)d"
context="{'mail':'new'}" icon="gtk-go-forward"
type="action" />
</page>
</notebook>
</group>
</form>
</field>
</record>
@ -120,7 +112,7 @@
<field name="model">crm.lead</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Leads Tree" colors="red:state=='open';black:state in ('draft', 'pending');grey: state in ('cancel','done')">
<tree string="Leads Tree" colors="red:state=='open';black:state in ('draft', 'pending');grey: state in ('cancel','done')">
<field name="partner_name" string="Lead Name"/>
<field name="stage_id" string="Status"/>
<field name="date" string="Create Date"/>
@ -181,22 +173,22 @@
<filter icon="gtk-new" domain="[('state','in',('draft', 'open'))]" help="Current Leads" default="1"/>
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Leads"/>
</field>
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
<filter icon="terp-crm"
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"
/>
</field>
</field>
</group>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="4" col="20">
<filter string="By Status" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="By Status" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="By Lead Source" icon="terp-crm" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="By Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="By Create Date" icon="terp-crm" domain="[]" context="{'group_by':'date'}"/>
</group>
</group>
</search>
</field>
</record>

View File

@ -13,10 +13,12 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="department">
<field colspan="4" name="name" select="1"/>
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
<field name="parent_id" select="2"/>
<field colspan="4" name="manager_id" select="1"/>
<group col="6" colspan="4">
<field colspan="4" name="name" select="1"/>
<field name="parent_id" select="2"/>
<field colspan="4" name="manager_id" select="1"/>
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
</group>
<notebook colspan="4" >
<page string="Members">
<field colspan="4" name="member_ids" nolabel="1"/>
@ -55,25 +57,8 @@
<field name="view_type">form</field>
</record>
<menuitem action="open_module_tree_department" id="menu_department_def" parent="hr.menu_department_tree"/>
<menuitem action="open_module_tree_department" id="menu_department_def" parent="hr.menu_department_tree"/>
<menuitem action="open_module_tree_department" id="menu_hr_department_tree" parent="menu_hr_human_resources"/>
<!-- res.users inherit -->
<record model="ir.ui.view" id="view_users_form_inherit">
<field name="name">res.users.form</field>
<field name="type">form</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<notebook position="inside">
<page string="Departements Informations">
<separator string="Managers" colspan="4"/>
<field name="parent_id" nolabel="1" colspan="4"/>
<separator string="Subordinates" colspan="4"/>
<field name="child_ids" nolabel="1" colspan="4"/>
</page>
</notebook>
</field>
</record>
</data>
</openerp>

View File

@ -30,11 +30,11 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Employee">
<group colspan="4" col="4">
<group colspan="4" col="6">
<field name="name" select="1"/>
<field name="active" select="1"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
<field name="user_id"/>
<field name="active"/>
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
</group>
<notebook colspan="4">
<page string="Personal Information">
@ -119,7 +119,7 @@
parent="menu_open_view_employee_list"/>-->
<record id="open_view_employee_list_my" model="ir.actions.act_window">
<field name="name">All Employees</field>
<field name="name">Employees</field>
<field name="res_model">hr.employee</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>

View File

@ -118,46 +118,62 @@
<field name="model">hr.expense.expense</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Expense">
<group col='6' colspan='4'>
<filter icon="gtk-execute" string="My Expense" domain="[('user_id','=',uid)]" separator="1" help="Expenses Related to Current User"/>
<field name="state" select="1">
<filter icon="terp-hr" domain="[('state','=','confirm')]" help="Confirmed Expense"/>
<filter icon="terp-hr" domain="[('state','=','accepted')]" help="Accepted Expense"/>
<filter icon="terp-hr" domain="[('state','=','invoiced')]" help="Invoiced Expense"/>
</field>
<separator orientation="vertical"/>
<field name="name" select='1'/>
<field name="user_id" select="1" widget="selection"/>
</group>
<search string="Expense">
<group col="20" colspan="4">
<filter
icon="terp-hr"
domain="[('state','=','draft')]"
string="Draft"
help="Draft Expense"/>
<filter
icon="terp-hr"
domain="[('state','=','confirm')]"
string="To Validate"
help="Confirmed Expense"/>
<filter
icon="terp-hr"
domain="[('state','=','accepted')]"
string="To Pay"
help="Expenses to Invoice"/>
<separator orientation="vertical"/>
<field name="name" select='1'/>
<field name="user_id" select="1" widget="selection">
<filter
icon="gtk-execute"
help="My Expenses"
default="1"
domain="[('user_id','=',uid)]"/>
</field>
<field name="state" select="1"/>
</group>
</search>
</field>
</record>
<record id="expense_all" model="ir.actions.act_window">
<field name="name">All expenses</field>
<field name="name">Expenses</field>
<field name="res_model">hr.expense.expense</field>
<field name="view_type">form</field>
<field name="search_view_id" ref="view_hr_expense_filter"/>
</record>
<menuitem id="next_id_49" name="Expenses" sequence="6"
parent="hr.menu_hr_root"/>
parent="hr.menu_hr_root"/>
<menuitem action="expense_all" id="menu_expense_all" name="Expenses"
parent="next_id_49" groups="hr.group_hr_manager"/>
parent="next_id_49" groups="hr.group_hr_manager"/>
<record id="view_product_hr_expense_form" model="ir.ui.view">
<field name="name">product.product.expense.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field groups="base.group_extended" name="rental" position="after">
<field name="hr_expense_ok"/>
</field>
</field>
</record>
<field name="name">product.product.expense.form</field>
<field name="model">product.product</field>
<field name="inherit_id" ref="product.product_normal_form_view"/>
<field name="type">form</field>
<field name="arch" type="xml">
<field groups="base.group_extended" name="rental" position="after">
<field name="hr_expense_ok"/>
</field>
</field>
</record>
</data>
</openerp>

View File

@ -26,10 +26,12 @@ import datetime
from resource.faces import *
from new import classobj
import operator
import time
compute_form = """<?xml version="1.0" ?>
<form string="Compute Scheduling of Tasks">
<field name="project_id" colspan="4"/>
<field name= "date_from" colspan="4"/>
</form>"""
success_msg = """<?xml version="1.0" ?>
@ -39,8 +41,9 @@ success_msg = """<?xml version="1.0" ?>
compute_fields = {
'project_id': {'string':'Project', 'type':'many2one', 'relation': 'project.project', 'required':'True'},
'date_from': {'string':"Start date",'type':'datetime','required':'True' ,'default': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S')},
}
def timeformat_convert(cr, uid, time_string, context={}):
# Function to convert input time string:: 8.5 to output time string 8:30
@ -71,6 +74,7 @@ def leaves_resource(cr,uid,id):
class wizard_compute_tasks(wizard.interface):
def _compute_date(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
project_pool = pool.get('project.project')
@ -89,8 +93,7 @@ class wizard_compute_tasks(wizard.interface):
task_ids.sort()
task_obj = task_pool.browse(cr,uid,task_ids)
task_1 = task_obj[0]
date_start = datetime.datetime.strftime(datetime.datetime.strptime(project.date_start,"%Y-%m-%d"),"%Y-%m-%d %H:%M")
date_start = datetime.datetime.strftime(datetime.datetime.strptime(data['form']['date_from'],"%Y-%m-%d %H:%M:%S"),"%Y-%m-%d %H:%M")
calendar_id = project.resource_calendar_id.id
# If project has a working calendar then that would be used otherwise
@ -154,31 +157,28 @@ class wizard_compute_tasks(wizard.interface):
resource_objs = []
for no in range(len(resource)):
leaves = []
resource_eff = 1.00
resource_id = resource_pool.search(cr,uid,[('user_id','=',resource[no].id)])
if resource_id and wktime_cal:
# Getting list of leaves for specific resource
leaves = leaves_resource(cr,uid,resource_id)
resource_objs.append(classobj(str(resource[no].name),(Resource,),{'__doc__':resource[no].name,'__name__':resource[no].name,'vacation':tuple(leaves)}))
if resource_id:
# Getting the efficiency for specific resource
resource_eff = resource_pool.browse(cr,uid,resource_id)[0].time_efficiency
# To create dynamic no of tasks
def tasks(j,eff):
def task():
"""
task is a dynamic method!
"""
effort = eff
task.__doc__ = "TaskNO%d" %j
task.__name__ = "task%d" %j
return task
# Getting list of leaves for specific resource
if wktime_cal:
leaves = leaves_resource(cr,uid,resource_id)
resource_objs.append(classobj(str(resource[no].name),(Resource,),{'__doc__':resource[no].name,'__name__':resource[no].name,'vacation':tuple(leaves),'efficiency':resource_eff}))
priority_dict = {'0':1000,'1':800,'2':500,'3':300,'4':100}
# To create dynamic no of tasks with the resource specified
def tasks_resource(j,eff,obj):
def tasks_resource(j,eff,priorty = 500,obj=None):
def task():
"""
task is a dynamic method!
"""
effort = eff
resource = obj
if obj:
resource = obj
priority = priorty
task.__doc__ = "TaskNO%d" %j
task.__name__ = "task%d" %j
return task
@ -188,6 +188,8 @@ class wizard_compute_tasks(wizard.interface):
title = project.name
start = date_start
resource = reduce(operator.or_,resource_objs)
minimum_time_unit = 1
# If project has calendar
if wktime_cal:
working_days = wktime_cal
@ -196,27 +198,27 @@ class wizard_compute_tasks(wizard.interface):
# Dynamic Creation of tasks
for i in range(len(task_obj)):
hours = str(task_obj[i].remaining_hours / task_obj[i].occupation_rate)+ 'H'
if task_obj[i].priority in priority_dict.keys():
priorty = priority_dict[task_obj[i].priority]
if task_obj[i].user_id:
for resource_object in resource_objs:
for resource_object in resource_objs:
if resource_object.__name__ == task_obj[i].user_id.name:
task = tasks_resource(i,hours,resource_object)
task = tasks_resource(i,hours,priorty,resource_object)
else:
task = tasks(i,hours)
task = tasks_resource(i,hours,priorty)
project = BalancedProject(Project)
task_no = len(task_obj)
loop_no = 0
for t in project:
no2 = loop_no
while loop_no <= task_no:
s_date = t.start.to_datetime()
e_date = t.end.to_datetime()
if loop_no != 0:
user_id = user_pool.search(cr,uid,[('name','=',t.booked_resource[0].__name__)])
task_pool.write(cr,uid,[task_obj[loop_no - 1].id],{'date_start':s_date,'date_end':e_date,'user_id':user_id[0]})
loop_no = task_no + 1
loop_no = no2
s_date = t.start.to_datetime()
e_date = t.end.to_datetime()
if loop_no == 0:
project_pool.write(cr,uid,[project_id],{'date':e_date})
else:
user_id = user_pool.search(cr,uid,[('name','=',t.booked_resource[0].__name__)])
task_pool.write(cr,uid,[task_obj[loop_no-1].id],{'date_start':s_date,'date_deadline':e_date,'user_id':user_id[0]})
loop_no +=1
return {}
states = {

View File

@ -1941,7 +1941,7 @@ class Task(object):
func.task_func = instrumented # will be used in the gui
self._function = instrumented
self.name = func.func_name
self.name = name
self.up = parent
self.children = []
self._sources = {} # all tasks, I am linked to
@ -2548,7 +2548,6 @@ class Task(object):
#@+node:Setting methods
#@+node:_set_attrib
def _set_attrib(self, name, value):
if value is _NEVER_USED_: return
try:
@ -2564,11 +2563,11 @@ class Task(object):
#@ << add child task >>
#@+node:<< add child task >>
try:
task = self.__dict__[name]
task = self.__dict__[value.func_name]
except KeyError:
task = Task(value, name, self, len(self.children) + 1)
task = Task(value, value.func_name, self, len(self.children) + 1)
self.children.append(task)
setattr(self, task.name, task)
setattr(self, value.func_name, task)
return
#@nonl
#@-node:<< add child task >>
@ -3698,7 +3697,6 @@ class AdjustedProject(_AllocationPoject):
for t in balancing_list:
src = base.get_task(t.path)
if src.end <= now and src.complete == 100:
#@ << copy the attribs of complete tasks >>
#@+node:<< copy the attribs of complete tasks >>

View File

@ -3,10 +3,10 @@
<data>
<!-- <menuitem icon="terp-sale" id="menu_sale_root" name="Sales Management"-->
<!-- groups="group_sale_user"/>-->
<menuitem id="base.menu_sales" name="Sales" parent="base.menu_base_partner" sequence="1"/>
<menuitem id="base.menu_sales" name="Sales" parent="base.menu_base_partner" sequence="1"/>
<menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="4"/>
<menuitem action="product.product_normal_action" id="product.menu_products" parent="base.menu_product" sequence="1"/>
<menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="4"/>
<menuitem action="product.product_normal_action" id="product.menu_products" parent="base.menu_product" sequence="1"/>
<record id="view_shop_form" model="ir.ui.view">
<field name="name">sale.shop</field>
@ -233,21 +233,21 @@
<field name="arch" type="xml">
<search string="Search Sales Order">
<group col='10' colspan='4'>
<filter icon="terp-sale" string="Quotation" domain="[('state','=','draft')]"/>
<filter icon="terp-sale" string="Quotations" domain="[('state','=','draft')]"/>
<filter icon="terp-sale" string="Running" domain="[('state','in',('manual','progress'))]"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="partner_id" select="1"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Sale Orders"/>
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Sale Orders" default="1"/>
</field>
<field name="date_order" select="1"/>
</group>
<group expand="1" string="Group By..." colspan="4" col="8">
<filter string="By Customer" icon="terp-sale" domain="[]" context="{'group_by':'partner_id'}"/>
</group>
<group expand="1" string="Group By..." colspan="4" col="8">
<filter string="By Customer" icon="terp-sale" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
<filter string="By Order Date" icon="terp-sale" domain="[]" context="{'group_by':'date_order'}"/>
</group>
</group>
</search>
</field>
</record>
@ -305,7 +305,7 @@
<field name="search_view_id" ref="view_sales_order_filter"/>
</record>
<record id="action_order_tree" model="ir.actions.act_window">
<record id="action_order_tree" model="ir.actions.act_window">
<field name="name">Old Quotations</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.order</field>
@ -411,12 +411,12 @@
<filter icon="terp-sale" domain="[('salesman_id','=',uid)]" help="My Sale Order Lines"/>
<filter icon="terp-sale" domain="[('salesman_id','child_of',[uid])]" help="My Departments Sale Order Lines"/>
</field>
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
<filter string="By Product" icon="terp-sale" default="1" domain="[]" context="{'group_by':'product_id'}"/>
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
<filter string="By Product" icon="terp-sale" default="1" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="By Order" icon="terp-sale" domain="[]" context="{'group_by':'order_id'}"/>
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
</group>
</group>
</group>
</search>
</field>
@ -446,9 +446,9 @@
<act_window domain="[('product_id','=',active_id)]" id="action_order_line_product_tree" name="Product sales" res_model="sale.order.line" src_model="product.product"/>
<menuitem id="menu_invoiced" name="Invoicing" parent="base.menu_base_partner" sequence="6"/>
<menuitem action="action_order_tree3" id="menu_invoicing_sales_order" parent="menu_invoiced" sequence="1"/>
<menuitem action="action_order_line_tree2" id="menu_invoicing_sales_order_lines" parent="menu_invoiced" sequence="2"/>
<menuitem id="menu_invoiced" name="Invoicing" parent="base.menu_base_partner" sequence="6"/>
<menuitem action="action_order_tree3" id="menu_invoicing_sales_order" parent="menu_invoiced" sequence="1"/>
<menuitem action="action_order_line_tree2" id="menu_invoicing_sales_order_lines" parent="menu_invoiced" sequence="2"/>
<!-- configartion view -->
<record id="view_config_picking_policy" model="ir.ui.view">