CLIENT,KERNEL: new tag act_window for new relate implementation
bzr revid: ced-774fa598d18bfb26cf59e94de536c6afd5bf531b
This commit is contained in:
parent
6df1c01919
commit
e980813d4d
|
@ -533,7 +533,7 @@ class account_move(osv.osv):
|
|||
'name': fields.char('Entry Name', size=64, required=True),
|
||||
'ref': fields.char('Ref', size=64),
|
||||
'period_id': fields.many2one('account.period', 'Period', required=True, states={'posted':[('readonly',True)]}),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}, relate=True),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'posted':[('readonly',True)]}),
|
||||
'state': fields.selection([('draft','Draft'), ('posted','Posted')], 'State', required=True, readonly=True),
|
||||
'line_id': fields.one2many('account.move.line', 'move_id', 'Entries', states={'posted':[('readonly',True)]}),
|
||||
}
|
||||
|
|
|
@ -89,7 +89,7 @@ class timesheet_invoice(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, relate=True, select=True),
|
||||
'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, select=True),
|
||||
'journal_id': fields.many2one('account.analytic.journal', 'Journal', readonly=True),
|
||||
'quantity': fields.float('Quantities', readonly=True),
|
||||
'cost': fields.float('Credit', readonly=True),
|
||||
|
|
|
@ -76,7 +76,7 @@ class account_bank_statement(osv.osv):
|
|||
_columns = {
|
||||
'name': fields.char('Name', size=64, required=True),
|
||||
'date': fields.date('Date', required=True, states={'confirm':[('readonly',True)]}),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'confirm':[('readonly',True)]}, domain=[('type','=','cash')], relate=True),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True, states={'confirm':[('readonly',True)]}, domain=[('type','=','cash')]),
|
||||
'period_id': fields.many2one('account.period', 'Period', required=True, states={'confirm':[('readonly',True)]}),
|
||||
'balance_start': fields.float('Starting Balance', digits=(16,2), states={'confirm':[('readonly',True)]}),
|
||||
'balance_end_real': fields.float('Ending Balance', digits=(16,2), states={'confirm':[('readonly',True)]}),
|
||||
|
|
|
@ -525,5 +525,23 @@
|
|||
|
||||
<menuitem name="Financial Management/Invoices/All invoices" id="menu_action_invoice_tree" action="action_invoice_tree"/>
|
||||
|
||||
<act_window name="Opened invoices"
|
||||
domain="[('partner_id', '=', active_id),('state', '=', 'open')]"
|
||||
res_model="account.invoice"
|
||||
src_model="res.partner"
|
||||
id="act_res_partner_2_account_invoice_opened"/>
|
||||
|
||||
<act_window name="Opened invoices"
|
||||
domain="[('journal_id', '=', active_id),('state', '=', 'open')]"
|
||||
res_model="account.invoice"
|
||||
src_model="account.journal"
|
||||
id="act_account_journal_2_account_invoice_opened"/>
|
||||
|
||||
<act_window name="Invoice lines"
|
||||
domain="[('account_analytic_id', '=', active_id)]"
|
||||
res_model="account.invoice.line"
|
||||
src_model="account.analytic.account"
|
||||
id="act_account_analytic_account_2_account_invoice_line"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -171,7 +171,7 @@ class account_move_line(osv.osv):
|
|||
'currency_id': fields.many2one('res.currency', 'Currency', help="The optionnal other currency if it is a multi-currency entry."),
|
||||
|
||||
'period_id': fields.many2one('account.period', 'Period', required=True),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True, relate=True),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True),
|
||||
'blocked': fields.boolean('Litigation', help="You can check this box to mark the entry line as a litigation with the associated partner"),
|
||||
|
||||
'partner_id': fields.many2one('res.partner', 'Partner Ref.', states={'reconciled':[('readonly',True)]}),
|
||||
|
|
|
@ -1419,5 +1419,23 @@
|
|||
</record>
|
||||
<menuitem name="Administration/Configuration/Account/Add Account journal" action="open_module_journal" sequence="6" id="menu_journal_def"/>
|
||||
|
||||
<act_window name="Bank statements"
|
||||
domain="[('journal_id', '=', active_id)]"
|
||||
res_model="account.bank.statement"
|
||||
src_model="account.journal"
|
||||
id="act_account_journal_2_account_bank_statement"/>
|
||||
|
||||
<act_window name="Entry lines"
|
||||
domain="[('journal_id', '=', active_id)]"
|
||||
res_model="account.move.line"
|
||||
src_model="account.journal"
|
||||
id="act_account_journal_2_account_move_line"/>
|
||||
|
||||
<act_window name="Account entries"
|
||||
domain="[('journal_id', '=', active_id)]"
|
||||
res_model="account.move"
|
||||
src_model="account.journal"
|
||||
id="act_account_journal_2_account_move"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -117,7 +117,7 @@ class account_invoice(osv.osv):
|
|||
'date_invoice': fields.date('Date Invoiced', required=True, states={'open':[('readonly',True)],'close':[('readonly',True)]}),
|
||||
'date_due': fields.date('Due Date', states={'open':[('readonly',True)],'close':[('readonly',True)]}),
|
||||
|
||||
'partner_id': fields.many2one('res.partner', 'Partner', change_default=True, readonly=True, required=True, states={'draft':[('readonly',False)]}, relate=True),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner', change_default=True, readonly=True, required=True, states={'draft':[('readonly',False)]}),
|
||||
'partner_bank_id': fields.many2one('res.partner.bank', 'Partner bank'),
|
||||
'address_contact_id': fields.many2one('res.partner.address', 'Contact Address', readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'address_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft':[('readonly',False)]}),
|
||||
|
@ -135,7 +135,7 @@ class account_invoice(osv.osv):
|
|||
'amount_tax': fields.function(_amount_tax, method=True, string='Tax', store=True),
|
||||
'amount_total': fields.function(_amount_total, method=True, string='Total', store=True),
|
||||
'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True, relate=True,readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'journal_id': fields.many2one('account.journal', 'Journal', required=True,readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True),
|
||||
'check_total': fields.float('Total', digits=(16,2)),
|
||||
}
|
||||
|
@ -620,7 +620,7 @@ class account_invoice_line(osv.osv):
|
|||
'discount': fields.float('Discount (%)', digits=(16,2)),
|
||||
'invoice_line_tax_id': fields.many2many('account.tax', 'account_invoice_line_tax', 'invoice_line_id', 'tax_id', 'Taxes', domain=[('parent_id','=',False)]),
|
||||
'note': fields.text('Notes'),
|
||||
'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account', relate=True),
|
||||
'account_analytic_id': fields.many2one('account.analytic.account', 'Analytic Account'),
|
||||
}
|
||||
_defaults = {
|
||||
'quantity': lambda *a: 1,
|
||||
|
|
|
@ -374,5 +374,11 @@
|
|||
|
||||
<menuitem name="Financial Management/Configuration/Analytic Accounts Budgets/Budget items" id="menu_account_analytic_budget_post_form" action="open_account_analytic_budget_post_form"/>
|
||||
|
||||
<act_window name="Costs & revenues"
|
||||
domain="[('account_id', '=', active_id)]"
|
||||
res_model="report.hr.timesheet.invoice.journal"
|
||||
src_model="account.analytic.account"
|
||||
id="act_account_analytic_account_2_report_hr_timesheet_invoice_journal"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -16,7 +16,7 @@ class airport_flight(osv.osv):
|
|||
_table = 'product_product'
|
||||
_columns = {
|
||||
'date': fields.datetime('Departure Date'),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer', relate=True),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer'),
|
||||
'airport_from': fields.many2one('airport.airport', 'Airport Departure'),
|
||||
'airport_to': fields.many2one('airport.airport', 'Airport Arrival'),
|
||||
}
|
||||
|
|
|
@ -231,22 +231,22 @@ class crm_case(osv.osv):
|
|||
'active': fields.boolean('Active'),
|
||||
'description': fields.text('Description'),
|
||||
'section_id': fields.many2one('crm.case.section', 'Case Section', required=True, select=True),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id)]", relate=True),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Category', domain="[('section_id','=',section_id)]"),
|
||||
'planned_revenue': fields.float('Planned Revenue'),
|
||||
'planned_cost': fields.float('Planned Costs'),
|
||||
'probability': fields.float('Probability (0.50)'),
|
||||
'email_from': fields.char('Partner Email', size=128),
|
||||
'email_cc': fields.char('Watchers Emails', size=252),
|
||||
'email_last': fields.text('Latest E-Mail'),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner', relate=True),
|
||||
'partner_id': fields.many2one('res.partner', 'Partner'),
|
||||
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', domain="[('partner_id','=',partner_id)]"),
|
||||
'som': fields.many2one('res.partner.som', 'State of Mind'),
|
||||
'date': fields.datetime('Date'),
|
||||
'create_date': fields.datetime('Date Created'),
|
||||
'date_deadline': fields.date('Date Deadline'),
|
||||
'date_closed': fields.datetime('Date Closed', readonly=True),
|
||||
'canal_id': fields.many2one('res.partner.canal', 'Channel', relate=True),
|
||||
'user_id': fields.many2one('res.users', 'User Responsible', relate=True),
|
||||
'canal_id': fields.many2one('res.partner.canal', 'Channel'),
|
||||
'user_id': fields.many2one('res.users', 'User Responsible'),
|
||||
'history_line': fields.one2many('crm.case.history', 'case_id', 'Case History'),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
|
||||
'ref' : fields.reference('Reference', selection=_links_get, size=128),
|
||||
|
|
|
@ -467,6 +467,46 @@
|
|||
<menuitem name="CRM & SRM/Configuration/Segmentations/Segmentations rules" id="menu_crm_segmentation-act" action="crm_segmentation-act"/>
|
||||
<menuitem name="CRM & SRM/Automatic Segmentations" id="menu_crm_segmentation_tree-act" action="crm_segmentation_tree-act"/>
|
||||
|
||||
<act_window name="Opened cases"
|
||||
domain="[('section_id', '=', active_id),('state','<>','done'),('state','<>','cancel'),('state','<>','pending')]"
|
||||
res_model="crm.case"
|
||||
src_model="crm.case.section"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_crm_case_section_crm_case_opened"/>
|
||||
|
||||
<act_window name="Opened cases"
|
||||
domain="[('categ_id', '=', active_id),('state','<>','done'),('state','<>','cancel'),('state','<>','pending')]"
|
||||
res_model="crm.case"
|
||||
src_model="crm.case.categ"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_crm_case_categ_crm_case_opened"/>
|
||||
|
||||
<act_window name="Opened cases"
|
||||
domain="[('partner_id', '=', active_id),('state','<>','done'),('state','<>','cancel'),('state','<>','pending')]"
|
||||
res_model="crm.case"
|
||||
src_model="res.partner"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_res_partner_2_crm_case_opened"/>
|
||||
|
||||
<act_window name="Opened cases"
|
||||
domain="[('canal_id', '=', active_id),('state','<>','done'),('state','<>','cancel'),('state','<>','pending')]"
|
||||
res_model="crm.case"
|
||||
src_model="res.partner.canal"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_res_partner_canal_2_crm_case_opened"/>
|
||||
|
||||
<act_window name="Opened cases"
|
||||
domain="[('user_id', '=', active_id),('state','<>','done'),('state','<>','cancel'),('state','<>','pending')]"
|
||||
res_model="crm.case"
|
||||
src_model="res.users"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_res_users_2_crm_case_opened"/>
|
||||
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -76,8 +76,8 @@ class hr_allocation(osv.osv):
|
|||
_description = 'Allocations'
|
||||
_columns = {
|
||||
'name' : fields.char('Allocation Name', size=30, required=True),
|
||||
'employee_id' : fields.many2one('hr.employee', 'Employee', required=True, relate=True),
|
||||
'department_id' : fields.many2one('res.company', 'Department', required=True, relate=True),
|
||||
'employee_id' : fields.many2one('hr.employee', 'Employee', required=True),
|
||||
'department_id' : fields.many2one('res.company', 'Department', required=True),
|
||||
'function' : fields.many2one('res.partner.function', 'Function'),
|
||||
'date_start' : fields.date('Start Date', required=True),
|
||||
'date_end' : fields.date('End Date', help="Keep empty for unlimited allocation."),
|
||||
|
|
|
@ -49,6 +49,18 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<act_window name="Allocations"
|
||||
domain="[('employee_id', '=', active_id)]"
|
||||
res_model="hr.allocation"
|
||||
src_model="hr.employee"
|
||||
id="act_hr_employee_2_hr_allocation"/>
|
||||
|
||||
<act_window name="Allocations"
|
||||
domain="[('department_id', '=', active_id)]"
|
||||
res_model="hr.allocation"
|
||||
src_model="hr.company"
|
||||
id="act_hr_company_2_hr_allocation"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
||||
|
|
|
@ -52,7 +52,7 @@ class hr_skill_weight(osv.osv):
|
|||
_columns = {
|
||||
'name': fields.char('Name', size=64,required=True),
|
||||
'value': fields.float('Numerical value', required=True),
|
||||
'category_id': fields.many2one('hr_skill.weight.category', 'Category', required=True, ondelete='cascade', relate=True), # relate -> click droit dispo
|
||||
'category_id': fields.many2one('hr_skill.weight.category', 'Category', required=True, ondelete='cascade'),
|
||||
}# hr_skill.category ne passe pas (cad creation des tables) la premiere fois (hr_skill_category bien)
|
||||
|
||||
hr_skill_weight()
|
||||
|
|
|
@ -308,8 +308,11 @@
|
|||
<!-- defini l'entree evaluations ds le menu principal -->
|
||||
<menuitem name="Human Resources/Configuration/Skills Management/Evaluations" id="menu_open_view_evaluation_form" action="open_view_evaluation_form"/>
|
||||
|
||||
|
||||
|
||||
<act_window name="Skill weight"
|
||||
domain="[('category_id', '=', active_id)]"
|
||||
res_model="hr_skill.weight"
|
||||
src_model="hr_skill.weight.category"
|
||||
id="act_hr_skill_weight_category_2_hr_skill_weight"/>
|
||||
|
||||
|
||||
</data>
|
||||
|
|
|
@ -133,6 +133,5 @@
|
|||
id="hr_timesheet_invoice_factor_view"
|
||||
action="action_hr_timesheet_invoice_factor_form" />
|
||||
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -1,106 +0,0 @@
|
|||
##############################################################################
|
||||
#
|
||||
# Copyright (c) 2004-2006 TINY SPRL. (http://tiny.be) All Rights Reserved.
|
||||
#
|
||||
# $Id: project.py 1005 2005-07-25 08:41:42Z nicoe $
|
||||
#
|
||||
# WARNING: This program as such is intended to be used by professional
|
||||
# programmers who take the whole responsability of assessing all potential
|
||||
# consequences resulting from its eventual inadequacies and bugs
|
||||
# End users who are looking for a ready-to-use solution with commercial
|
||||
# garantees and support are strongly adviced to contract a Free Software
|
||||
# Service Company
|
||||
#
|
||||
# This program is Free Software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields,osv
|
||||
|
||||
class account_analytic_to_invoice(osv.osv):
|
||||
_name = "account"
|
||||
_description = "Cases by user and section"
|
||||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True, relate=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True, relate=True),
|
||||
'amount_revenue': fields.float('Est.Revenue', readonly=True),
|
||||
'amount_costs': fields.float('Est.Cost', readonly=True),
|
||||
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
|
||||
'nbr': fields.integer('# of Cases', readonly=True),
|
||||
'probability': fields.float('Avg. Probability', readonly=True),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
|
||||
'delay_close': fields.integer('Delay to close', readonly=True),
|
||||
}
|
||||
_order = 'name desc, user_id, section_id'
|
||||
def init(self, cr):
|
||||
cr.execute("""
|
||||
create or replace view report_crm_case_user as (
|
||||
select
|
||||
min(c.id) as id,
|
||||
substring(c.create_date for 7)||'-01' as name,
|
||||
c.state,
|
||||
c.user_id,
|
||||
c.section_id,
|
||||
count(*) as nbr,
|
||||
sum(planned_revenue) as amount_revenue,
|
||||
sum(planned_cost) as amount_costs,
|
||||
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
|
||||
avg(probability)::decimal(16,2) as probability,
|
||||
to_char(avg(date_closed-c.create_date), 'DD"d" HH12:MI:SS') as delay_close
|
||||
from
|
||||
crm_case c
|
||||
group by substring(c.create_date for 7), c.state, c.user_id, c.section_id
|
||||
)""")
|
||||
report_crm_case_user()
|
||||
|
||||
class report_crm_case_categ(osv.osv):
|
||||
_name = "report.crm.case.categ"
|
||||
_description = "Cases by section and category"
|
||||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True, relate=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True, relate=True),
|
||||
'amount_revenue': fields.float('Est.Revenue', readonly=True),
|
||||
'amount_costs': fields.float('Est.Cost', readonly=True),
|
||||
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
|
||||
'nbr': fields.integer('# of Cases', readonly=True),
|
||||
'probability': fields.float('Avg. Probability', readonly=True),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
|
||||
'delay_close': fields.integer('Delay Close', readonly=True),
|
||||
}
|
||||
_order = 'name desc, categ_id, section_id'
|
||||
def init(self, cr):
|
||||
cr.execute("""
|
||||
create or replace view report_crm_case_categ as (
|
||||
select
|
||||
min(c.id) as id,
|
||||
substring(c.create_date for 7)||'-01' as name,
|
||||
c.state,
|
||||
c.categ_id,
|
||||
c.section_id,
|
||||
count(*) as nbr,
|
||||
sum(planned_revenue) as amount_revenue,
|
||||
sum(planned_cost) as amount_costs,
|
||||
sum(planned_revenue*probability)::decimal(16,2) as amount_revenue_prob,
|
||||
avg(probability)::decimal(16,2) as probability,
|
||||
to_char(avg(date_closed-c.create_date), 'DD"d" HH12:MI:SS') as delay_close
|
||||
from
|
||||
crm_case c
|
||||
group by substring(c.create_date for 7), c.state, c.categ_id, c.section_id
|
||||
)""")
|
||||
report_crm_case_categ()
|
|
@ -297,7 +297,7 @@ class hr_timesheet_line(osv.osv):
|
|||
return True
|
||||
|
||||
_columns = {
|
||||
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', ondelete='set null', required=True, relate=True)
|
||||
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', ondelete='set null', required=True)
|
||||
}
|
||||
_defaults = {
|
||||
'sheet_id': _get_current_sheet,
|
||||
|
@ -341,7 +341,7 @@ class hr_attendance(osv.osv):
|
|||
return True
|
||||
|
||||
_columns = {
|
||||
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', ondelete='set null', required=True, relate=True)
|
||||
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', ondelete='set null', required=True)
|
||||
}
|
||||
_defaults = {
|
||||
'sheet_id': _get_current_sheet,
|
||||
|
@ -442,7 +442,7 @@ class hr_timesheet_sheet_sheet_account(osv.osv):
|
|||
_order='name'
|
||||
_columns = {
|
||||
'name': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
|
||||
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', readonly=True, relate=True),
|
||||
'sheet_id': fields.many2one('hr_timesheet_sheet.sheet', 'Sheet', readonly=True),
|
||||
'total': fields.float('Total Time', digits=(16,2), readonly=True),
|
||||
'invoice_rate': fields.many2one('hr_timesheet_invoice.factor', 'Invoice rate', readonly=True),
|
||||
}
|
||||
|
|
|
@ -264,5 +264,17 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<act_window name="Timesheet lines"
|
||||
domain="[('sheet_id', '=', active_id)]"
|
||||
res_model="hr.analytic.timesheet"
|
||||
src_model="hr_timesheet_sheet.sheet"
|
||||
id="act_hr_timesheet_sheet_sheet_2_hr_analytic_timesheet"/>
|
||||
|
||||
<act_window name="Attendances"
|
||||
domain="[('sheet_id', '=', active_id)]"
|
||||
res_model="hr.attendance"
|
||||
src_model="hr_timesheet_sheet.sheet"
|
||||
id="act_hr_timesheet_sheet_sheet_2_hr_attendance"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -903,8 +903,8 @@ class stock_warehouse_orderpoint(osv.osv):
|
|||
'name': fields.char('Name', size=32, required=True),
|
||||
'active': fields.boolean('Active'),
|
||||
'logic': fields.selection([('max','Order to Max'),('price','Best price (not yet active!)')], 'Reordering Mode', required=True),
|
||||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True, relate=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', required=True, domain=[('type','=','product')], relate=True),
|
||||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', required=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', required=True, domain=[('type','=','product')]),
|
||||
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True ),
|
||||
'product_min_qty': fields.float('Min Quantity', required=True),
|
||||
'product_max_qty': fields.float('Max Quantity', required=True),
|
||||
|
|
|
@ -669,6 +669,16 @@
|
|||
<menuitem name="Inventory Control/Reordering Policy" sequence="4"/>
|
||||
<menuitem name="Inventory Control/Reordering Policy/Order Point" id="menu_action_orderpoint_form" action="action_orderpoint_form"/>
|
||||
|
||||
<act_window name="Orderpoint"
|
||||
domain="[('warehouse_id', '=', active_id)]"
|
||||
res_model="stock.warehouse.orderpoint"
|
||||
src_model="stock.warehouse"
|
||||
id="act_stock_warehouse_2_stock_warehouse_orderpoint"/>
|
||||
|
||||
<act_window name="Warehouse Orderpoint"
|
||||
domain="[('product_id', '=', active_id)]"
|
||||
res_model="stock.warehouse.orderpoint"
|
||||
src_model="product.product"
|
||||
id="act_product_product_2_stock_warehouse_orderpoint"/>
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -185,7 +185,7 @@ class product_pricelist_version(osv.osv):
|
|||
_name = "product.pricelist.version"
|
||||
_description = "Pricelist Version"
|
||||
_columns = {
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Price List', required=True, select=True, relate=True),
|
||||
'pricelist_id': fields.many2one('product.pricelist', 'Price List', required=True, select=True),
|
||||
'name': fields.char('Name', size=64, required=True),
|
||||
'active': fields.boolean('Active'),
|
||||
'items_id': fields.one2many('product.pricelist.item', 'price_version_id', 'Price List Items', required=True),
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="product_pricelist_action">
|
||||
<field name="name">product.pricelist.version.form</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.pricelist.version</field>
|
||||
<field name="view_type">form</field>
|
||||
|
@ -106,7 +105,6 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="product_pricelist_action2">
|
||||
<field name="name">product.pricelist.form</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.pricelist</field>
|
||||
<field name="view_type">form</field>
|
||||
|
@ -128,7 +126,6 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="product_price_type_action">
|
||||
<field name="name">product.price.type.form</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.price.type</field>
|
||||
<field name="view_type">form</field>
|
||||
|
@ -148,7 +145,6 @@
|
|||
</field>
|
||||
</record>
|
||||
<record model="ir.actions.act_window" id="product_pricelist_type_action">
|
||||
<field name="name">product.pricelist.type.form</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.pricelist.type</field>
|
||||
<field name="view_type">form</field>
|
||||
|
@ -156,5 +152,11 @@
|
|||
</record>
|
||||
<menuitem name="Products/Configuration/Pricelists Types" id="menu_product_pricelist_type_action" action="product_pricelist_type_action"/>
|
||||
|
||||
<act_window name="Pricelist versions"
|
||||
domain="[('pricelist_id', '=', active_id)]"
|
||||
res_model="product.pricelist.version"
|
||||
src_model="product.pricelist"
|
||||
id="act_product_pricelist_2_product_pricelist_version"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -87,7 +87,7 @@ class project(osv.osv):
|
|||
'active': fields.boolean('Active'),
|
||||
'category_id': fields.many2one('account.analytic.account','Analytic Account'),
|
||||
'priority': fields.integer('Priority'),
|
||||
'manager': fields.many2one('res.users', 'Project manager', relate=True),
|
||||
'manager': fields.many2one('res.users', 'Project manager'),
|
||||
'warn_manager': fields.boolean('Warn manager'),
|
||||
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project members'),
|
||||
'tasks': fields.one2many('project.task', 'project_id', "Project tasks"),
|
||||
|
@ -178,7 +178,7 @@ class task(osv.osv):
|
|||
'date_start': fields.datetime('Date Start',readonly=True),
|
||||
'date_deadline': fields.datetime('Deadline'),
|
||||
'date_close': fields.datetime('Date Closed', readonly=True),
|
||||
'project_id': fields.many2one('project.project', 'Project', ondelete='cascade', relate=True),
|
||||
'project_id': fields.many2one('project.project', 'Project', ondelete='cascade'),
|
||||
'notes': fields.text('Notes'),
|
||||
'start_sequence': fields.boolean('Wait for previous sequences'),
|
||||
'planned_hours': fields.float('Planned hours'),
|
||||
|
@ -186,7 +186,7 @@ class task(osv.osv):
|
|||
'progress': fields.integer('Progress (0-100)'),
|
||||
'billable': fields.boolean('To be invoiced'),
|
||||
'invoice_id': fields.many2one('account.invoice','Generated Invoice'),
|
||||
'user_id': fields.many2one('res.users', 'Assigned to', relate=True),
|
||||
'user_id': fields.many2one('res.users', 'Assigned to'),
|
||||
'partner_id': fields.many2one('res.partner', 'Customer'),
|
||||
'work_ids': fields.one2many('project.task.work', 'task_id', 'Work done'),
|
||||
'procurement_id': fields.many2one('mrp.procurement', 'Procurement', ondelete='set null')
|
||||
|
@ -289,7 +289,7 @@ class project_work(osv.osv):
|
|||
'date': fields.datetime('Date'),
|
||||
'task_id': fields.many2one('project.task', 'Task', ondelete='cascade'),
|
||||
'hours': fields.float('Hours spent'),
|
||||
'user_id': fields.many2one('res.users', 'Done by', required=True, relate=True),
|
||||
'user_id': fields.many2one('res.users', 'Done by', required=True),
|
||||
}
|
||||
_defaults = {
|
||||
'user_id': lambda obj,cr,uid,context: uid,
|
||||
|
|
|
@ -388,5 +388,38 @@
|
|||
<field name="view_id" ref="task_type_edit"/>
|
||||
</record>
|
||||
<menuitem name="Project/Configuration/Task types" id="menu_task_types" action="open_task_type_form"/>
|
||||
|
||||
<act_window name="User's projects"
|
||||
domain="[('manager', '=', active_id)]"
|
||||
res_model="project.project"
|
||||
src_model="res.users"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_res_users_2_project_project"/>
|
||||
|
||||
<act_window name="Opened tasks"
|
||||
domain="[('project_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]"
|
||||
res_model="project.task"
|
||||
src_model="project.project"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_project_project_2_project_task_opened"/>
|
||||
|
||||
<act_window name="Assigned tasks"
|
||||
domain="[('user_id', '=', active_id),('state', '<>', 'cancelled'),('state', '<>', 'done')]"
|
||||
res_model="project.task"
|
||||
src_model="res.users"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_res_users_2_project_task_opened"/>
|
||||
|
||||
<act_window name="Month works"
|
||||
domain="[('user_id', '=', active_id),('date', '>=', time.strftime('%Y-%m-01'))]"
|
||||
res_model="project.task.work"
|
||||
src_model="res.users"
|
||||
view_type="form"
|
||||
view_mode="tree,form"
|
||||
id="act_res_users_2_project_task_work_month"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -88,11 +88,11 @@ class purchase_order(osv.osv):
|
|||
'partner_ref': fields.char('Partner Reference', size=64),
|
||||
'date_order':fields.date('Date Ordered', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}),
|
||||
'date_approve':fields.date('Date Approved'),
|
||||
'partner_id':fields.many2one('res.partner', 'Partner', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}, change_default=True, relate=True),
|
||||
'partner_id':fields.many2one('res.partner', 'Partner', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}, change_default=True),
|
||||
'partner_address_id':fields.many2one('res.partner.address', 'Address', required=True, states={'posted':[('readonly',True)]}),
|
||||
|
||||
'dest_address_id':fields.many2one('res.partner.address', 'Destination Address', states={'posted':[('readonly',True)]}),
|
||||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', states={'posted':[('readonly',True)]}, relate=True),
|
||||
'warehouse_id': fields.many2one('stock.warehouse', 'Warehouse', states={'posted':[('readonly',True)]}),
|
||||
'location_id': fields.many2one('stock.location', 'Delivery destination', required=True),
|
||||
|
||||
'pricelist_id':fields.many2one('product.pricelist', 'Pricelist', required=True, states={'confirmed':[('readonly',True)], 'approved':[('readonly',True)]}),
|
||||
|
@ -299,7 +299,7 @@ class purchase_order_line(osv.osv):
|
|||
'date_planned': fields.date('Date Promised', required=True),
|
||||
'taxes_id': fields.many2many('account.tax', 'purchase_order_taxe', 'ord_id', 'tax_id', 'Taxes'),
|
||||
'product_uom': fields.many2one('product.uom', 'Product UOM', required=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', domain=[('purchase_ok','=',True)], change_default=True, relate=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', domain=[('purchase_ok','=',True)], change_default=True),
|
||||
'move_id': fields.many2one('stock.move', 'Reservation', ondelete='set null'),
|
||||
'move_dest_id': fields.many2one('stock.move', 'Reservation Destination', ondelete='set null'),
|
||||
'price_unit': fields.float('Unit Price', required=True, digits=(16, int(config['price_accuracy']))),
|
||||
|
|
|
@ -161,5 +161,11 @@
|
|||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<act_window name="Purchases"
|
||||
domain="[('partner_id', '=', active_id)]"
|
||||
res_model="purchase.order"
|
||||
src_model="res.partner"
|
||||
id="act_res_partner_2_purchase_order"/>
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -44,7 +44,7 @@ stock_move()
|
|||
class stock_picking(osv.osv):
|
||||
_inherit = 'stock.picking'
|
||||
_columns = {
|
||||
'purchase_id': fields.many2one('purchase.order', 'Purchase Order', ondelete='set null', relate=True, select=True),
|
||||
'purchase_id': fields.many2one('purchase.order', 'Purchase Order', ondelete='set null', select=True),
|
||||
}
|
||||
_defaults = {
|
||||
'purchase_id': lambda *a: False
|
||||
|
|
|
@ -13,5 +13,11 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<act_window name="Pickings"
|
||||
domain="[('purchase_id', '=', active_id)]"
|
||||
res_model="stock.picking"
|
||||
src_model="purchase.order"
|
||||
id="act_purchase_order_2_stock_picking"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -32,7 +32,7 @@ from osv import osv, fields
|
|||
class purchase(osv.osv):
|
||||
_inherit="purchase.order"
|
||||
_columns = {
|
||||
'journal_id': fields.many2one('purchase_journal.purchase.journal', 'Journal', relate=True),
|
||||
'journal_id': fields.many2one('purchase_journal.purchase.journal', 'Journal'),
|
||||
}
|
||||
def action_picking_create(self, cr, uid, ids, *args):
|
||||
result = super(purchase, self).action_picking_create(cr, uid, ids, *args)
|
||||
|
@ -47,6 +47,6 @@ purchase()
|
|||
class picking(osv.osv):
|
||||
_inherit="stock.picking"
|
||||
_columns = {
|
||||
'purchase_journal_id': fields.many2one('purchase_journal.purchase.journal', 'Purchase Journal', select=True, relate=True),
|
||||
'purchase_journal_id': fields.many2one('purchase_journal.purchase.journal', 'Purchase Journal', select=True),
|
||||
}
|
||||
picking()
|
||||
|
|
|
@ -31,7 +31,7 @@ from osv import fields,osv
|
|||
|
||||
class report_purchase_journal_purchase(osv.osv):
|
||||
_name = "purchase_journal.purchase.stats"
|
||||
_description = "purchases Orders by Journal"
|
||||
_description = "Purchases Orders by Journal"
|
||||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
|
@ -44,7 +44,7 @@ class report_purchase_journal_purchase(osv.osv):
|
|||
('except_invoice', 'Invoice Exception'),
|
||||
('done', 'Done'), ('cancel', 'Cancelled')], 'Order State', readonly=True,
|
||||
select=True),
|
||||
'journal_id':fields.many2one('purchase_journal.purchase.journal', 'Journal', readonly=True, relate=True),
|
||||
'journal_id':fields.many2one('purchase_journal.purchase.journal', 'Journal', readonly=True),
|
||||
'quantity': fields.float('Quantities', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
|
|
@ -209,7 +209,34 @@
|
|||
action="action_purchase_purchase_stats_open_menu_all"
|
||||
id="menu_purchase_purchase_stats_open_all"/>
|
||||
|
||||
<act_window name="Draft purchases"
|
||||
domain="[('journal_id', '=', active_id),('state', '=', 'draft')]"
|
||||
res_model="purchase.order"
|
||||
src_model="purchase_journal.purchase.journal"
|
||||
id="act_purchase_journal_purchase_journal_2_purchase_order_draft"/>
|
||||
|
||||
<act_window name="Approved purchases"
|
||||
domain="[('journal_id', '=', active_id),('state', '=', 'approved')]"
|
||||
res_model="purchase.order"
|
||||
src_model="purchase_journal.purchase.journal"
|
||||
id="act_purchase_journal_purchase_journal_2_purchase_order_approved"/>
|
||||
|
||||
<act_window name="Assigned pickings"
|
||||
domain="[('purchase_journal_id', '=', active_id),('state', '=', 'assigned')]"
|
||||
res_model="stock.picking"
|
||||
src_model="purchase_journal.purchase.journal"
|
||||
id="act_purchase_journal_purchase_journal_2_stock_picking_assigned"/>
|
||||
|
||||
<act_window name="Confirmed pickings"
|
||||
domain="[('purchase_journal_id', '=', active_id),('state', '=', 'confirmed')]"
|
||||
res_model="stock.picking"
|
||||
src_model="purchase_journal.purchase.journal"
|
||||
id="act_purchase_journal_purchase_journal_2_stock_picking_confirmed"/>
|
||||
|
||||
<act_window name="Monthly purchases"
|
||||
domain="[('journal_id', '=', active_id)]"
|
||||
res_model="purchase_journal.purchase.stats"
|
||||
src_model="purchase_journal.purchase.journal"
|
||||
id="act_purchase_journal_purchase_journal_2_purchase_journal_purchase_stats"/>
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -35,8 +35,8 @@ class report_account_analytic_line_to_invoice(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'product_id':fields.many2one('product.product', 'Product', readonly=True, relate=True),
|
||||
'account_id':fields.many2one('account.analytic.account', 'Analytic account', readonly=True, relate=True),
|
||||
'product_id':fields.many2one('product.product', 'Product', readonly=True),
|
||||
'account_id':fields.many2one('account.analytic.account', 'Analytic account', readonly=True),
|
||||
'product_uom_id':fields.many2one('product.uom', 'UoM', readonly=True),
|
||||
'unit_amount': fields.float('Units', readonly=True),
|
||||
'sale_price': fields.float('Sale price', readonly=True),
|
||||
|
|
|
@ -58,5 +58,16 @@
|
|||
</record>
|
||||
<menuitem name="Financial Management/Reporting/Analytic/All Months/Analytic lines to invoice" id="account_analytic_lines_to_invoice_report" action="action_account_analytic_line_to_invoice" />
|
||||
|
||||
<act_window name="Analytic lines to invoice"
|
||||
domain="[('product_id', '=', active_id)]"
|
||||
res_model="report.account.analytic.line.to.invoice"
|
||||
src_model="product.product"
|
||||
id="act_product_product_2_report_account_analytic_line_to_invoice"/>
|
||||
|
||||
<act_window name="Analytic lines to invoice"
|
||||
domain="[('account_id', '=', active_id)]"
|
||||
res_model="report.account.analytic.line.to.invoice"
|
||||
src_model="account.analytic.account"
|
||||
id="act_account_analytic_account_2_report_account_analytic_line_to_invoice"/>
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -43,8 +43,8 @@ class report_crm_case_user(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True, relate=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True, relate=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
|
||||
'amount_revenue': fields.float('Est.Revenue', readonly=True),
|
||||
'amount_costs': fields.float('Est.Cost', readonly=True),
|
||||
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
|
||||
|
@ -81,8 +81,8 @@ class report_crm_case_categ(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True, relate=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True, relate=True),
|
||||
'categ_id':fields.many2one('crm.case.categ', 'Category', readonly=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
|
||||
'amount_revenue': fields.float('Est.Revenue', readonly=True),
|
||||
'amount_costs': fields.float('Est.Cost', readonly=True),
|
||||
'amount_revenue_prob': fields.float('Est. Rev*Prob.', readonly=True),
|
||||
|
|
|
@ -140,7 +140,29 @@
|
|||
</record>
|
||||
<menuitem name="CRM & SRM/Reporting/All Months/Cases by categories and section" action="action_report_crm_case_categ_tree" id="menu_crm_case_categ_tree"/>
|
||||
|
||||
<act_window name="Monthly cases"
|
||||
domain="[('user_id', '=', active_id)]"
|
||||
res_model="report.crm.case.user"
|
||||
src_model="res.users"
|
||||
id="act_res_users_2_report_crm_case_user"/>
|
||||
|
||||
<act_window name="Monthly cases by user"
|
||||
domain="[('section_id', '=', active_id)]"
|
||||
res_model="report.crm.case.user"
|
||||
src_model="crm.case.section"
|
||||
id="act_crm_case_section_2_report_crm_case_user"/>
|
||||
|
||||
<act_window name="Monthly cases"
|
||||
domain="[('crm.case.categ', '=', active_id)]"
|
||||
res_model="report.crm.case.categ"
|
||||
src_model="crm.case.categ"
|
||||
id="act_crm_case_categ_2_report_crm_case_categ"/>
|
||||
|
||||
<act_window name="Monthly cases by section"
|
||||
domain="[('section_id', '=', active_id)]"
|
||||
res_model="report.crm.case.categ"
|
||||
src_model="crm.case.section"
|
||||
id="act_crm_case_section_2_report_crm_case_categ"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -35,8 +35,8 @@ class report_project_task_user(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True, relate=True),
|
||||
'project_id':fields.many2one('project.project', 'Project', readonly=True, relate=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'project_id':fields.many2one('project.project', 'Project', readonly=True),
|
||||
'hours_planned': fields.float('Planned Hours', readonly=True),
|
||||
'hours_effective': fields.float('Effective Hours', readonly=True),
|
||||
'hours_delay': fields.float('Avg. Plan.-Eff.', readonly=True),
|
||||
|
@ -74,7 +74,7 @@ class report_project_task(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'project_id':fields.many2one('project.project', 'Project', readonly=True, relate=True),
|
||||
'project_id':fields.many2one('project.project', 'Project', readonly=True),
|
||||
'hours_planned': fields.float('Planned Hours', readonly=True),
|
||||
'hours_effective': fields.float('Effective Hours', readonly=True),
|
||||
'hours_delay': fields.float('Avg. Plan.-Eff.', readonly=True),
|
||||
|
|
|
@ -49,7 +49,7 @@ class report_purchase_order_product(osv.osv):
|
|||
('done','Done'),
|
||||
('cancel','Cancel')
|
||||
], 'Order State', readonly=True),
|
||||
'product_id':fields.many2one('product.product', 'Product', readonly=True, relate=True),
|
||||
'product_id':fields.many2one('product.product', 'Product', readonly=True),
|
||||
'quantity': fields.float('# of Products', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
@ -92,7 +92,7 @@ class report_purchase_order_category(osv.osv):
|
|||
('done','Done'),
|
||||
('cancel','Cancel')
|
||||
], 'Order State', readonly=True),
|
||||
'category_id': fields.many2one('product.category', 'Categories', readonly=True, relate=True),
|
||||
'category_id': fields.many2one('product.category', 'Categories', readonly=True),
|
||||
'quantity': fields.float('# of Products', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
|
|
@ -108,6 +108,17 @@
|
|||
</record>
|
||||
<menuitem name="Purchase Management/Reporting/All Months/Purchases by Category of Products" action="action_order_category_tree_all" id="menu_report_order_category_all"/>
|
||||
|
||||
<act_window name="Monthly purchases"
|
||||
domain="[('product_id', '=', active_id)]"
|
||||
res_model="report.purchase.order.product"
|
||||
src_model="product.product"
|
||||
id="act_product_product_2_report_purchases_order_product"/>
|
||||
|
||||
<act_window name="Monthly purchases"
|
||||
domain="[('category_id', '=', active_id)]"
|
||||
res_model="report.purchase.order.category"
|
||||
src_model="product.category"
|
||||
id="act_product_category_2_report_purchase_order_category"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -45,7 +45,7 @@ class report_sale_order_product(osv.osv):
|
|||
('done','Done'),
|
||||
('cancel','Cancel')
|
||||
], 'Order State', readonly=True),
|
||||
'product_id':fields.many2one('product.product', 'Product', readonly=True, relate=True),
|
||||
'product_id':fields.many2one('product.product', 'Product', readonly=True),
|
||||
'quantity': fields.float('# of Products', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
@ -97,7 +97,7 @@ class report_sale_order_category(osv.osv):
|
|||
('done','Done'),
|
||||
('cancel','Cancel')
|
||||
], 'Order State', readonly=True),
|
||||
'category_id': fields.many2one('product.category', 'Categories', readonly=True, relate=True),
|
||||
'category_id': fields.many2one('product.category', 'Categories', readonly=True),
|
||||
'quantity': fields.float('# of Products', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
|
|
@ -35,9 +35,9 @@ class report_stock_prodlots(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.float('Quantity', readonly=True),
|
||||
'location_id': fields.many2one('stock.location', 'Location', readonly=True, relate=True, select=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', readonly=True, relate=True, select=True),
|
||||
'prodlot_id': fields.many2one('stock.production.lot', 'Production lot', readonly=True, relate=True, select=True),
|
||||
'location_id': fields.many2one('stock.location', 'Location', readonly=True, select=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', readonly=True, select=True),
|
||||
'prodlot_id': fields.many2one('stock.production.lot', 'Production lot', readonly=True, select=True),
|
||||
}
|
||||
def init(self, cr):
|
||||
cr.execute("""
|
||||
|
|
|
@ -26,5 +26,23 @@
|
|||
|
||||
<menuitem name="Inventory Control/Reporting/Traceability/Stock by production lots" action="action_report_stock_prodlots_form" id="menu_report_stock_prodlots"/>
|
||||
|
||||
<act_window name="Stock by production lots"
|
||||
domain="[('location_id', '=', active_id)]"
|
||||
res_model="report.stock.prodlots"
|
||||
src_model="stock.location"
|
||||
id="act_stock_location_2_report_stock_prodlots"/>
|
||||
|
||||
<act_window name="Stock by production lots"
|
||||
domain="[('product_id', '=', active_id)]"
|
||||
res_model="report.stock.prodlots"
|
||||
src_model="product.product"
|
||||
id="act_product_product_2_report_stock_prodlots"/>
|
||||
|
||||
<act_window name="Stock"
|
||||
domain="[('prodlot_id', '=', active_id)]"
|
||||
res_model="report.stock.prodlots"
|
||||
src_model="stock.production.lot"
|
||||
id="act_stock_production_lot_2_report_stock_prodlots"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -34,7 +34,7 @@ class report_task_user_pipeline_open (osv.osv):
|
|||
_description = "Tasks by user and project"
|
||||
_auto = False
|
||||
_columns = {
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True, relate=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'task_nbr': fields.float('Task Number', readonly=True),
|
||||
'task_hrs': fields.float('Task Hours', readonly=True),
|
||||
'task_progress': fields.float('Task Progress', readonly=True),
|
||||
|
|
|
@ -35,7 +35,7 @@ class report_timesheet_user(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Date', readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True, relate=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'quantity': fields.float('Quantity', readonly=True),
|
||||
'cost': fields.float('Cost', readonly=True)
|
||||
}
|
||||
|
@ -64,8 +64,8 @@ class report_timesheet_account(osv.osv):
|
|||
_auto = False
|
||||
_columns = {
|
||||
'name': fields.date('Month', readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True, relate=True),
|
||||
'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, relate=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'account_id':fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
|
||||
'quantity': fields.float('Quantity', readonly=True),
|
||||
}
|
||||
_order = 'name desc,account_id desc,user_id desc'
|
||||
|
@ -92,9 +92,9 @@ class report_timesheet_invoice(osv.osv):
|
|||
_description = "Costs to invoice"
|
||||
_auto = False
|
||||
_columns = {
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True, relate=True),
|
||||
'project_id':fields.many2one('res.users', 'Project', readonly=True, relate=True),
|
||||
'manager_id':fields.many2one('res.users', 'Manager', readonly=True, relate=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'account_id':fields.many2one('account.analytic.account', 'Project', readonly=True),
|
||||
'manager_id':fields.many2one('res.users', 'Manager', readonly=True),
|
||||
'quantity': fields.float('Quantity', readonly=True),
|
||||
'amount_invoice': fields.float('To invoice', readonly=True)
|
||||
}
|
||||
|
|
|
@ -203,6 +203,35 @@
|
|||
action="action_timesheet_account_stat_my"
|
||||
id="menu_report_timesheet_account_my"/>
|
||||
|
||||
<act_window name="Timesheets per day"
|
||||
domain="[('user_id', '=', active_id)]"
|
||||
res_model="report_timesheet.user"
|
||||
src_model="res.users"
|
||||
id="act_res_users_2_report_timesheet_user"/>
|
||||
|
||||
<act_window name="Timesheets per account"
|
||||
domain="[('user_id', '=', active_id)]"
|
||||
res_model="report_timesheet.account"
|
||||
src_model="res.users"
|
||||
id="act_res_users_2_report_timehsheet_account"/>
|
||||
|
||||
<act_window name="Timesheets"
|
||||
domain="[('account_id', '=', active_id)]"
|
||||
res_model="report_timesheet.account"
|
||||
src_model="account.analytic.account"
|
||||
id="act_account_analytic_account_2_report_timehsheet_account"/>
|
||||
|
||||
<act_window name="Costs to invoice"
|
||||
domain="[('account_id', '=', active_id)]"
|
||||
res_model="report_timesheet.invoice"
|
||||
src_model="account.analytic.account"
|
||||
id="act_account_analytic_account_2_report_timesheet_invoice"/>
|
||||
|
||||
<act_window name="Costs to invoice"
|
||||
domain="[('manager_id', '=', active_id)]"
|
||||
res_model="report_timesheet.invoice"
|
||||
src_model="res.users"
|
||||
id="act_res_users_2_report_timesheet.invoice"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -119,8 +119,8 @@ class sale_order(osv.osv):
|
|||
], 'Order State', readonly=True, help="Gives the state of the quotation or sale order. The exception state is automatically set when a cancel operation occurs in the invoice validation (Invoice Exception) or in the picking list process (Shipping Exception). The 'Waiting Schedule' state is set when the invoice is confirmed but waiting for the scheduler to be on the date 'Date Ordered'.", select=True),
|
||||
'date_order':fields.date('Date Ordered', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
|
||||
'user_id':fields.many2one('res.users', 'Salesman', states={'draft':[('readonly',False)]}, relate=True, select=True),
|
||||
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True, states={'draft':[('readonly',False)]}, change_default=True, relate=True, select=True),
|
||||
'user_id':fields.many2one('res.users', 'Salesman', states={'draft':[('readonly',False)]}, select=True),
|
||||
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True, states={'draft':[('readonly',False)]}, change_default=True, select=True),
|
||||
'partner_invoice_id':fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft':[('readonly',False)]}),
|
||||
'partner_order_id':fields.many2one('res.partner.address', 'Ordering Contact', readonly=True, required=True, states={'draft':[('readonly',False)]}, help="The name and address of the contact that requested the order or quotation."),
|
||||
'partner_shipping_id':fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft':[('readonly',False)]}),
|
||||
|
@ -528,7 +528,7 @@ class sale_order_line(osv.osv):
|
|||
'name': fields.char('Description', size=256, required=True, select=True),
|
||||
'sequence': fields.integer('Sequence'),
|
||||
'delay': fields.float('Delivery Delay', required=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok','=',True)], change_default=True, relate=True),
|
||||
'product_id': fields.many2one('product.product', 'Product', domain=[('sale_ok','=',True)], change_default=True),
|
||||
'invoice_lines': fields.many2many('account.invoice.line', 'sale_order_line_invoice_rel', 'order_line_id','invoice_id', 'Invoice Lines', readonly=True),
|
||||
'invoiced': fields.boolean('Invoiced', readonly=True, select=True),
|
||||
'procurement_id': fields.many2one('mrp.procurement', 'Procurement'),
|
||||
|
|
|
@ -435,7 +435,11 @@
|
|||
</record>
|
||||
<menuitem name="Sales Management/Sales Order Lines/Uninvoiced lines/Uninvoiced lines done" id="menu_action_order_line_tree3" action="action_order_line_tree3"/>
|
||||
|
||||
|
||||
<act_window name="Sales"
|
||||
domain="[('partner_id', '=', active_id)]"
|
||||
res_model="sale.order"
|
||||
src_model="res.partner"
|
||||
id="act_res_partner_2_sale_order"/>
|
||||
|
||||
</data>
|
||||
</terp>
|
||||
|
|
|
@ -34,7 +34,7 @@ class sale_journal_invoice_type(osv.osv):
|
|||
_name = 'sale_journal.invoice.type'
|
||||
_description = 'Invoice Types'
|
||||
_columns = {
|
||||
'name': fields.char('Invoice Type', size=64, required=True, relate=True),
|
||||
'name': fields.char('Invoice Type', size=64, required=True),
|
||||
'active': fields.boolean('Active'),
|
||||
'note': fields.text('Note'),
|
||||
'invoicing_method': fields.selection([('simple','Non grouped'),('grouped','Grouped')], 'Invoicing method', required=True),
|
||||
|
|
|
@ -47,17 +47,17 @@ res_partner()
|
|||
class picking(osv.osv):
|
||||
_inherit="stock.picking"
|
||||
_columns = {
|
||||
'journal_id': fields.many2one('sale_journal.picking.journal', 'Journal', relate=True),
|
||||
'sale_journal_id': fields.many2one('sale_journal.sale.journal', 'Sale Journal', relate=True),
|
||||
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', relate=True, readonly=True)
|
||||
'journal_id': fields.many2one('sale_journal.picking.journal', 'Journal'),
|
||||
'sale_journal_id': fields.many2one('sale_journal.sale.journal', 'Sale Journal'),
|
||||
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', readonly=True)
|
||||
}
|
||||
picking()
|
||||
|
||||
class sale(osv.osv):
|
||||
_inherit="sale.order"
|
||||
_columns = {
|
||||
'journal_id': fields.many2one('sale_journal.sale.journal', 'Journal', relate=True),
|
||||
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type', relate=True)
|
||||
'journal_id': fields.many2one('sale_journal.sale.journal', 'Journal'),
|
||||
'invoice_type_id': fields.many2one('sale_journal.invoice.type', 'Invoice Type')
|
||||
}
|
||||
def action_ship_create(self, cr, uid, ids, *args):
|
||||
result = super(sale, self).action_ship_create(cr, uid, ids, *args)
|
||||
|
|
|
@ -48,7 +48,7 @@ class report_sale_journal_invoice_type_stats(osv.osv):
|
|||
('done','done'),
|
||||
('cancel','cancel'),
|
||||
], 'State', readonly=True),
|
||||
'invoice_type_id':fields.many2one('sale_journal.invoice.type', 'Invoicing method', readonly=True, relate=True),
|
||||
'invoice_type_id':fields.many2one('sale_journal.invoice.type', 'Invoicing method', readonly=True),
|
||||
'quantity': fields.float('Quantities', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
@ -91,7 +91,7 @@ class report_sale_journal_picking(osv.osv):
|
|||
('done','done'),
|
||||
('cancel','cancel'),
|
||||
], 'State', readonly=True),
|
||||
'journal_id':fields.many2one('sale_journal.picking.journal', 'Journal', readonly=True, relate=True),
|
||||
'journal_id':fields.many2one('sale_journal.picking.journal', 'Journal', readonly=True),
|
||||
'quantity': fields.float('Quantities', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
|
|
@ -45,7 +45,7 @@ class report_sale_journal_sale(osv.osv):
|
|||
('done','Done'),
|
||||
('cancel','Cancel')
|
||||
], 'Order State', readonly=True),
|
||||
'journal_id':fields.many2one('sale_journal.sale.journal', 'Journal', readonly=True, relate=True),
|
||||
'journal_id':fields.many2one('sale_journal.sale.journal', 'Journal', readonly=True),
|
||||
'quantity': fields.float('Quantities', readonly=True),
|
||||
'price_total': fields.float('Total Price', readonly=True),
|
||||
'price_average': fields.float('Average Price', readonly=True),
|
||||
|
|
|
@ -253,6 +253,47 @@
|
|||
action="action_sale_sale_stats_open_menu_all"
|
||||
id="menu_sale_sale_stats_open_all"/>
|
||||
|
||||
<act_window name="Monthly sales"
|
||||
domain="[('journal_id', '=', active_id)]"
|
||||
res_model="sale_journal.sale.stats"
|
||||
src_model="sale_journal.sale.journal"
|
||||
id="act_sale_journal_sale_journal_2_sale_journal_sale_stats"/>
|
||||
|
||||
<act_window name="Assigned pickings"
|
||||
domain="[('journal_id', '=', active_id),('state', '=', 'assigned')]"
|
||||
res_model="stock.picking"
|
||||
src_model="sale_journal.picking.journal"
|
||||
id="act_sale_journal_picking_journal_2_stock_picking_assigned"/>
|
||||
|
||||
<act_window name="Confirmed pickings"
|
||||
domain="[('journal_id', '=', active_id),('state', '=', 'confirmed')]"
|
||||
res_model="stock.picking"
|
||||
src_model="sale_journal.picking.journal"
|
||||
id="act_sale_journal_picking_journal_2_stock_picking_confirmed"/>
|
||||
|
||||
<act_window name="Assigned pickings"
|
||||
domain="[('sale_journal_id', '=', active_id),('state', '=', 'assigned')]"
|
||||
res_model="stock.picking"
|
||||
src_model="sale_journal.sale.journal"
|
||||
id="act_sale_journal_sale_journal_2_stock_picking_assigned"/>
|
||||
|
||||
<act_window name="Confirmed pickings"
|
||||
domain="[('sale_journal_id', '=', active_id),('state', '=', 'confirmed')]"
|
||||
res_model="stock.picking"
|
||||
src_model="sale_journal.sale.journal"
|
||||
id="act_sale_journal_sale_journal_2_stock_picking_confirmed"/>
|
||||
|
||||
<act_window name="Draft sales"
|
||||
domain="[('journal_id', '=', active_id),('state', '=', 'draft')]"
|
||||
res_model="sale.order"
|
||||
src_model="sale_journal.sale.journal"
|
||||
id="act_sale_journal_sale_journal_2_sale_order_draft"/>
|
||||
|
||||
<act_window name="Approved sales"
|
||||
domain="[('journal_id', '=', active_id),('state', '=', 'approved')]"
|
||||
res_model="sale.order"
|
||||
src_model="sale_journal.sale.journal"
|
||||
id="act_sale_journal_sale_journal_2_sale_order_approved"/>
|
||||
|
||||
|
||||
</data>
|
||||
|
|
Loading…
Reference in New Issue