CLIENT,KERNEL: new tag act_window for new relate implementation

bzr revid: ced-774fa598d18bfb26cf59e94de536c6afd5bf531b
This commit is contained in:
ced 2007-05-24 05:26:36 +00:00
parent 6df1c01919
commit e980813d4d
52 changed files with 404 additions and 182 deletions

View File

@ -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)]}),
}

View File

@ -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),

View File

@ -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)]}),

View File

@ -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>

View File

@ -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)]}),

View File

@ -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>

View File

@ -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,

View File

@ -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>

View File

@ -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'),
}

View File

@ -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),

View File

@ -467,6 +467,46 @@
<menuitem name="CRM &amp; SRM/Configuration/Segmentations/Segmentations rules" id="menu_crm_segmentation-act" action="crm_segmentation-act"/>
<menuitem name="CRM &amp; 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','&lt;&gt;','done'),('state','&lt;&gt;','cancel'),('state','&lt;&gt;','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','&lt;&gt;','done'),('state','&lt;&gt;','cancel'),('state','&lt;&gt;','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','&lt;&gt;','done'),('state','&lt;&gt;','cancel'),('state','&lt;&gt;','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','&lt;&gt;','done'),('state','&lt;&gt;','cancel'),('state','&lt;&gt;','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','&lt;&gt;','done'),('state','&lt;&gt;','cancel'),('state','&lt;&gt;','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>

View File

@ -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."),

View File

@ -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>

View File

@ -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()

View File

@ -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>

View File

@ -133,6 +133,5 @@
id="hr_timesheet_invoice_factor_view"
action="action_hr_timesheet_invoice_factor_form" />
</data>
</terp>

View File

@ -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()

View File

@ -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),
}

View File

@ -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>

View File

@ -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),

View File

@ -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>

View File

@ -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),

View File

@ -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>

View File

@ -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,

View File

@ -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', '&lt;&gt;', 'cancelled'),('state', '&lt;&gt;', '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', '&lt;&gt;', 'cancelled'),('state', '&lt;&gt;', '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', '&gt;=', 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>

View File

@ -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']))),

View File

@ -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>

View File

@ -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

View File

@ -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>

View File

@ -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()

View File

@ -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),

View File

@ -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>

View File

@ -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),

View File

@ -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>

View File

@ -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),

View File

@ -140,7 +140,29 @@
</record>
<menuitem name="CRM &amp; 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>

View File

@ -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),

View File

@ -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),

View File

@ -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>

View File

@ -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),

View File

@ -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("""

View File

@ -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>

View File

@ -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),

View File

@ -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)
}

View File

@ -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>

View File

@ -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'),

View File

@ -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>

View File

@ -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),

View File

@ -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)

View File

@ -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),

View File

@ -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),

View File

@ -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>