bzr revid: vir@tinyerp.com-20100720060737-ecs0tue0ncied4mx
This commit is contained in:
Vir (Open ERP) 2010-07-20 11:37:37 +05:30
commit 16948983e4
102 changed files with 11634 additions and 11352 deletions

View File

@ -2572,12 +2572,10 @@ class wizard_multi_charts_accounts(osv.osv_memory):
data_id = data_pool.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view')])
data = data_pool.browse(cr, uid, data_id[0])
view_id_cash = data.res_id
#view_id_cash = self.pool.get('account.journal.view').search(cr, uid, [('name','=','Bank/Cash Journal View')])[0] #TOFIX: why put fix name
data_id = data_pool.search(cr, uid, [('model','=','account.journal.view'), ('name','=','account_journal_bank_view_multi')])
data = data_pool.browse(cr, uid, data_id[0])
ref_acc_bank = data.res_id
#ref_acc_bank = self.pool.get('account.journal.view').search(cr, uid, [('name','=','Bank/Cash Journal (Multi-Currency) View')])[0] #TOFIX: why put fix name
ref_acc_bank = obj_multi.chart_template_id.bank_account_view_id
current_num = 1
@ -2604,8 +2602,8 @@ class wizard_multi_charts_accounts(osv.osv_memory):
if obj_multi.seq_journal:
vals_seq={
'name': _('Bank Journal ') + vals['name'],
'code': 'account.journal',
'name': _('Bank Journal ') + vals['name'],
'code': 'account.journal',
}
seq_id = obj_sequence.create(cr,uid,vals_seq)
@ -2661,9 +2659,9 @@ class wizard_multi_charts_accounts(osv.osv_memory):
for position in obj_fiscal_position_template.browse(cr, uid, fp_ids):
vals_fp = {
'company_id' : company_id,
'name' : position.name,
}
'company_id' : company_id,
'name' : position.name,
}
new_fp = obj_fiscal_position.create(cr, uid, vals_fp)
obj_tax_fp = self.pool.get('account.fiscal.position.tax')
@ -2671,18 +2669,18 @@ class wizard_multi_charts_accounts(osv.osv_memory):
for tax in position.tax_ids:
vals_tax = {
'tax_src_id' : tax_template_ref[tax.tax_src_id.id],
'tax_dest_id' : tax.tax_dest_id and tax_template_ref[tax.tax_dest_id.id] or False,
'position_id' : new_fp,
}
'tax_src_id' : tax_template_ref[tax.tax_src_id.id],
'tax_dest_id' : tax.tax_dest_id and tax_template_ref[tax.tax_dest_id.id] or False,
'position_id' : new_fp,
}
obj_tax_fp.create(cr, uid, vals_tax)
for acc in position.account_ids:
vals_acc = {
'account_src_id' : acc_template_ref[acc.account_src_id.id],
'account_dest_id' : acc_template_ref[acc.account_dest_id.id],
'position_id' : new_fp,
}
'account_src_id' : acc_template_ref[acc.account_src_id.id],
'account_dest_id' : acc_template_ref[acc.account_dest_id.id],
'position_id' : new_fp,
}
obj_ac_fp.create(cr, uid, vals_acc)
#fially inactive the demo chart of accounts

View File

@ -5,7 +5,6 @@
<!--
Invoices
-->
<record id="view_invoice_line_calendar" model="ir.ui.view">
<field name="name">account.invoice.calendar</field>
<field name="model">account.invoice</field>
@ -17,6 +16,7 @@
</calendar>
</field>
</record>
<record model="ir.ui.view" id="view_invoice_graph">
<field name="name">account.invoice.graph</field>
<field name="model">account.invoice</field>
@ -28,6 +28,7 @@
</graph>
</field>
</record>
<record id="view_invoice_line_tree" model="ir.ui.view">
<field name="name">account.invoice.line.tree</field>
<field name="model">account.invoice.line</field>
@ -44,6 +45,7 @@
</tree>
</field>
</record>
<record id="view_invoice_line_form" model="ir.ui.view">
<field name="name">account.invoice.line.form</field>
<field name="model">account.invoice.line</field>
@ -74,6 +76,7 @@
</form>
</field>
</record>
<record id="view_invoice_tax_tree" model="ir.ui.view">
<field name="name">account.invoice.tax.tree</field>
<field name="model">account.invoice.tax</field>
@ -89,6 +92,7 @@
</tree>
</field>
</record>
<record id="view_invoice_tax_form" model="ir.ui.view">
<field name="name">account.invoice.tax.form</field>
<field name="model">account.invoice.tax</field>
@ -115,7 +119,7 @@
<field name="model">account.invoice</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree colors="blue:state in ('draft');black:state not in ('draft')" string="Invoice">
<tree colors="blue:state in ('draft');black:state in ('proforma','proforma2','open');gray:state in ('paid','cancel')" string="Invoice">
<field name="date_invoice"/>
<field name="number"/>
<field name="partner_id" groups="base.group_user"/>
@ -149,7 +153,7 @@
<field name="currency_id" domain="[('company_id','=', company_id)]" on_change="onchange_currency_id(currency_id, company_id)" width="50"/>
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change"/>
<newline/>
<field name="partner_id" domain="[('supplier','=', 1)]" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank,company_id)" context="{'default_customer': 0}"/>
<field name="partner_id" domain="[('supplier','=', 1)]" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" context="{'default_customer': 0}"/>
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id"/>
<field name="fiscal_position" groups="base.group_extended" widget="selection"/>
<newline/>
@ -212,7 +216,7 @@
</group>
</page>
<page string="Other Info">
<field domain="[('partner_id', '=', partner_id)]" name="partner_bank" on_change="onchange_partner_bank(partner_bank)"/>
<field domain="[('partner_id', '=', partner_id)]" name="partner_bank_id" on_change="onchange_partner_bank(partner_bank_id)"/>
<field name="company_id" on_change="onchange_company_id(company_id,partner_id,type,invoice_line,currency_id)" widget="selection" groups="base.group_multi_company"/>
<newline/>
@ -245,7 +249,6 @@
</field>
</record>
<record id="invoice_form" model="ir.ui.view">
<field name="name">account.invoice.form</field>
<field name="model">account.invoice</field>
@ -259,7 +262,7 @@
<field name="currency_id" domain="[('company_id','=', company_id)]" on_change="onchange_currency_id(currency_id, company_id)" width="50"/>
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change"/>
<newline/>
<field name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank,company_id)" groups="base.group_user"/>
<field name="partner_id" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id,company_id)" groups="base.group_user"/>
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id"/>
<field name="fiscal_position" groups="base.group_extended" widget="selection"/>
<newline/>
@ -312,7 +315,7 @@
<field name="date_due"/>
<field name="user_id"/>
<newline/>
<field domain="[('partner_id.ref_companies', 'in', [company_id])]" name="partner_bank"
<field domain="[('partner_id.ref_companies', 'in', [company_id])]" name="partner_bank_id"
groups="base.group_extended"/>
<field name="origin"/>
<field colspan="4" domain="[('partner_id','=',partner_id)]" name="address_contact_id"
@ -403,6 +406,7 @@
<field name="view_mode">tree</field>
<field name="act_window_id" ref="action_invoice_tree"/>
</record>
<record id="action_invoice_tree_view2" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
@ -421,11 +425,13 @@
<field name="context">{'type':'out_invoice'}</field>
<field name="search_view_id" ref="view_account_invoice_filter"/>
</record>
<record id="action_invoice_tree1_view1" model="ir.actions.act_window.view">
<field eval="1" name="sequence"/>
<field name="view_mode">tree</field>
<field name="act_window_id" ref="action_invoice_tree1"/>
</record>
<record id="action_invoice_tree1_view2" model="ir.actions.act_window.view">
<field eval="2" name="sequence"/>
<field name="view_mode">form</field>
@ -469,7 +475,6 @@
<field name="view_id" ref="invoice_form"/>
<field name="act_window_id" ref="action_invoice_tree3"/>
</record>
<menuitem action="action_invoice_tree3" id="menu_action_invoice_tree3" parent="menu_finance_receivables"/>
<record id="action_invoice_tree4" model="ir.actions.act_window">

View File

@ -299,7 +299,7 @@ class account_invoice(osv.osv):
'account.move.line': (_get_invoice_from_line, None, 50),
'account.move.reconcile': (_get_invoice_from_reconcile, None, 50),
}, help="The Ledger Postings of the invoice have been reconciled with Ledger Postings of the payment(s)."),
'partner_bank': fields.many2one('res.partner.bank', 'Bank Account',
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',
help='Bank Account Number, Company bank account if Invoice is customer or supplier refund, otherwise Parner bank account number.', readonly=True, states={'draft':[('readonly',False)]}),
'move_lines':fields.function(_get_lines , method=True, type='many2many', relation='account.move.line', string='Entry Lines'),
'residual': fields.function(_amount_residual, method=True, digits_compute=dp.get_precision('Account'), string='Residual',
@ -373,8 +373,8 @@ class account_invoice(osv.osv):
# def get_invoice_address(self, cr, uid, ids):
# res = self.pool.get('res.partner').address_get(cr, uid, [part], ['invoice'])
# return [{}]
def onchange_partner_id(self, cr, uid, ids, type, partner_id,
date_invoice=False, payment_term=False, partner_bank=False, company_id=False):
def onchange_partner_id(self, cr, uid, ids, type, partner_id,\
date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
invoice_addr_id = False
contact_addr_id = False
partner_payment_term = False
@ -429,7 +429,7 @@ class account_invoice(osv.osv):
}
if type in ('in_invoice', 'in_refund'):
result['value']['partner_bank'] = bank_id
result['value']['partner_bank_id'] = bank_id
if payment_term != partner_payment_term:
if partner_payment_term:
@ -439,7 +439,7 @@ class account_invoice(osv.osv):
else:
result['value']['date_due'] = False
if partner_bank != bank_id:
if partner_bank_id != bank_id:
to_update = self.onchange_partner_bank(cr, uid, ids, bank_id)
result['value'].update(to_update['value'])
return result
@ -474,7 +474,7 @@ class account_invoice(osv.osv):
def onchange_invoice_line(self, cr, uid, ids, lines):
return {}
def onchange_partner_bank(self, cursor, user, ids, partner_bank):
def onchange_partner_bank(self, cursor, user, ids, partner_bank_id=False):
return {'value': {}}
def onchange_company_id(self, cr, uid, ids, company_id, part_id, type, invoice_line, currency_id):

View File

@ -68,7 +68,7 @@ class account_invoice_report(osv.osv):
'address_contact_id': fields.many2one('res.partner.address', 'Contact Address Name', readonly=True),
'address_invoice_id': fields.many2one('res.partner.address', 'Invoice Address Name', readonly=True),
'account_id': fields.many2one('account.account', 'Account',readonly=True),
'partner_bank': fields.many2one('res.partner.bank', 'Bank Account',readonly=True),
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',readonly=True),
'residual':fields.float('Total Residual', readonly=True),
'delay_to_pay':fields.float('Avg. Delay To Pay', readonly=True, group_operator="avg"),
}
@ -101,7 +101,7 @@ class account_invoice_report(osv.osv):
ai.address_contact_id as address_contact_id,
ai.address_invoice_id as address_invoice_id,
ai.account_id as account_id,
ai.partner_bank as partner_bank,
ai.partner_bank_id as partner_bank_id,
sum(case when ai.type in ('out_refund','in_invoice') then
ail.quantity * u.factor * -1
else
@ -152,7 +152,7 @@ class account_invoice_report(osv.osv):
ai.address_contact_id,
ai.address_invoice_id,
ai.account_id,
ai.partner_bank,
ai.partner_bank_id,
ai.residual
)
""")

View File

@ -25,7 +25,7 @@
<field name="date_due" invisible="1"/>
<field name="address_contact_id" invisible="1"/>
<field name="address_invoice_id" invisible="1"/>
<field name="partner_bank" invisible="1"/>
<field name="partner_bank_id" invisible="1"/>
<field name="account_id" invisible="1"/>
<field name="nbr" sum="# of Lines"/>
<field name="product_qty" sum="Qty"/>

View File

@ -93,8 +93,8 @@ class account_move_line(osv.osv):
context=context)
for line in self.browse(cr, uid, ids, context=context):
line2bank[line.id] = False
if line.invoice and line.invoice.partner_bank:
line2bank[line.id] = line.invoice.partner_bank.id
if line.invoice and line.invoice.partner_bank_id:
line2bank[line.id] = line.invoice.partner_bank_id.id
elif line.partner_id:
if not line.partner_id.bank_ids:
#raise osv.except_osv(_('Error !'), _('Partner '+ line.partner_id.name+ ' has no bank account defined'))

View File

@ -8,8 +8,8 @@
<field name="arch" type="xml">
<form string="Setup">
<group colspan="4" col="8">
<group colspan="3" width="200">
<field name="config_logo" widget="image" width="150" height="100" nolabel="1" colspan="1"/>
<group colspan="3" width="220">
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
<newline/>
<label align="0.0" string="You can start configuring the system or connect directly to the database as an administrator." width="200" colspan="2"/>
</group>

View File

@ -115,9 +115,7 @@ class crm_lead(osv.osv, crm_case):
'section_id': fields.many2one('crm.case.section', 'Sales Team', \
select=True, help='Sales team to which this case belongs to. Defines responsible user and e-mail address for the mail gateway.'),
'create_date': fields.datetime('Creation Date' , readonly=True),
'email_cc': fields.text('Watchers Emails', size=252 , help="These \
addresses(Comma-separated) will receive a copy of the future e-mail communication between partner \
and users"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'description': fields.text('Notes'),
'write_date': fields.datetime('Update Date' , readonly=True),

View File

@ -11,6 +11,7 @@
<field name="context">{"search_default_user_id":uid,'search_default_current':1}</field>
<field name="search_view_id" ref="crm.view_crm_case_leads_filter"/>
<field name="context">{'search_default_current':1, 'default_type': 'lead'}</field>
<field name="help">A lead is a first, unqualified, contact with a new prospect. Use leads when you import a database of prospects or integrate your website's contact form with OpenERP. After having been qualified, the lead can be converted to a partner and a business opportunity for a further detailed tracking of the related activities.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_leads_all">

View File

@ -165,7 +165,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -187,16 +187,16 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="2" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.lead'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
<button colspan="2" string="Forward"
name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action" />
icon="terp-mail-forward" type="action" />
</page>
</notebook>
</form>

View File

@ -52,6 +52,7 @@
<field name="view_id" ref="crm_case_calendar_view_meet"/>
<field name="context">{"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_crm_case_meetings_filter"/>
<field name="help">The calendar of meetings is shared between sales teams and fully integrated with the others applications like the employee holidays. You can also synchronize meetings with your mobile phone using the caldav interface.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_calendar_meet">

View File

@ -150,6 +150,19 @@ class crm_opportunity(osv.osv):
return {'value':{}}
return {'value':{'probability': stage.probability}}
def onchange_assign_id(self, cr, uid, ids, partner_assigned_id, context={}):
"""This function updates the "assignation date" automatically, when manually assign a partner in the geo assign tab
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: List of stages IDs
@stage_id: change state id on run time """
if not partner_assigned_id:
return {'value':{'date_assign': False}}
else:
return {'value':{'date_assign': time.strftime('%Y-%m-%d')}}
_defaults = {
'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'crm.lead', context=c),
'priority': crm.AVAILABLE_PRIORITIES[2][0],

View File

@ -30,6 +30,8 @@
<field name="context">{'search_default_user_id':uid,'search_default_current':1, 'default_type': 'opportunity'}</field>
<field name="view_id" ref="crm_case_tree_view_oppor"/>
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
<field name="help">Opportunities allows you to track your best deals pipeline: history of the communication, expected revenues, stage of each opportunity, excepted closings, etc. Opportunities are usually connected with the email gateway: new emails may create opportunities and each opportunity automatically gets the history of the conversation with the customer.
Your teams will be able to plan meeting and phonecalls from opportunities, to convert opportunities into quotations, to manage documents related to the opportunity, to track all activities related to this customer, etc.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_oppor11">

View File

@ -29,8 +29,8 @@
<field name="planned_revenue"/>
<field name="probability"/>
<field name="date_deadline" string="Expected Closing"/>
<button string="Schedule Call"
name="%(opportunity2phonecall_act)d" icon="gtk-redo" type="action" />
<button string="Schedule/Log Call"
name="%(opportunity2phonecall_act)d" icon="terp-call-start" type="action" />
<newline/>
<field name="date_action"/>
<field name="title_action"/>
@ -127,7 +127,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -149,16 +149,16 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.lead', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="2" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.lead'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
<button colspan="2" string="Forward to Partner"
name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action" />
icon="terp-mail-forward" type="action" />
</page>
<page string="Extra Info" groups="base.group_extended">
<group col="2" colspan="2">
@ -182,13 +182,13 @@
<page string="Assignation" groups="base.group_extended">
<group name="partner_assign_group" col="5" colspan="4">
<separator string="Partner Assignation" colspan="5"/>
<field name="partner_assigned_id"/>
<field name="partner_assigned_id" on_change="onchange_assign_id(partner_assigned_id)"/>
<field name="date_assign"/>
<group colspan="1" col="1">
<button string="Forward"
attrs="{'invisible':[('partner_assigned_id','=',False)]}"
name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action"
icon="terp-mail-forward" type="action"
context="{'default_name': 'partner', 'default_partner_id': partner_assigned_id}"
/>
</group>
@ -214,6 +214,7 @@
<field name="country_id" invisible="context.get('invisible_country', True)" />
<field name="date_action"/>
<field name="stage_id"/>
<field name="partner_assigned_id" invisible="1"/>
<button name="stage_previous" string="Previous Stage"
states="open,pending" type="object" icon="gtk-go-back" />
<button name="stage_next" string="Next Stage"
@ -328,11 +329,12 @@
context="{'group_by':'priority'}" />
<filter string="Category" icon="terp-stock_symbol-selection"
domain="[]" context="{'group_by':'categ_id'}" />
<separator orientation="vertical" />
<filter string="Salesman" icon="terp-personal"
domain="[]" context="{'group_by':'user_id'}" />
<filter string="Team" help="Sales Team" icon="terp-personal+" domain="[]" context="{'group_by':'section_id'}"/>
<filter string="Assigned Partner" icon="terp-personal"
domain="[]" context="{'group_by':'partner_assigned_id'}" />
<separator orientation="vertical" />
<filter string="Creation" icon="terp-go-month"
domain="[]" context="{'group_by':'create_date'}" />

View File

@ -12,7 +12,7 @@
domain="[('partner_id', '=', active_id)]"
groups="base.group_extended"
/>
<act_window
id="act_crm_phonecall_crm_meeting_new"
name="Meetings"
@ -69,6 +69,8 @@
<field name="domain" eval="'[(\'categ_id\',\'=\','+str(ref('categ_phone1'))+')]'"/>
<field name="context" eval="'{\'set_editable\':True,\'default_state\':\'open\', \'search_default_current\':1,\'search_default_today\':1, \'default_categ_id\': ' + str(ref('categ_phone1')) +'}'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help">Trace easily all your Inbound calls. The Inbound menu open a search view in editable mode, so you can easily modify or add a new call record. With the actions buttons convert a lead into an opportunity or plan a meeting.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone_incoming0">
@ -105,6 +107,7 @@
<field name="domain" eval="'[(\'categ_id\',\'=\','+str(ref('categ_phone2'))+')]'"/>
<field name="context" eval="'{\'default_state\':\'open\', \'search_default_current\':1, \'default_categ_id\': ' + str(ref('categ_phone2')) +'}'"/>
<field name="search_view_id" ref="crm.view_crm_case_phonecalls_filter"/>
<field name="help">The Outbound menu open a search view in editable mode, so you can easily modify or plan a new call. Actions buttons allows you to to make you call status evolved for a better follow up of your planned calls. During calls, convert your lead into an opportunity, plan a meeting or canceled it.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_phone_outgoing0">

View File

@ -45,6 +45,7 @@
<field name="partner_contact"/>
<field name="partner_phone"/>
<field name="user_id"/>
<field name="categ_id" string="Type"/>
<button string="Opportunity"
name="%(phonecall2opportunity_act)d"
states="draft,open,pending"
@ -107,6 +108,9 @@
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="priority"/>
<field name="opportunity_id"/>
</group>
@ -182,6 +186,9 @@
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Categorization" />
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="priority"/>
<field name="opportunity_id"/>
</group>
@ -209,6 +216,9 @@
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
<field name="partner_phone"/>
<field name="user_id"/>
<field name="categ_id" widget="selection"
domain="[('object_id.model', '=', 'crm.phonecall')]"
string="Type" />
<field name="state" invisible="1"/>
<field name="create_date" invisible="1"/>
<button string="Opportunity"

View File

@ -556,7 +556,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.case.custom', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -578,16 +578,16 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.case.custom', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="2" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.case.custom'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
<button colspan="2" string="Forward to Partner"
name="%(crm_lead_forward_to_partner_act)d"
icon="gtk-go-forward" type="action" />
icon="terp-mail-forward" type="action" />
</page>
</notebook>
</form>

View File

@ -97,6 +97,7 @@ class crm_lead_report(osv.osv):
'delay_expected': fields.float('Overpassed Deadline',digits=(16,2),readonly=True, group_operator="avg"),
'probability': fields.float('Probability',digits=(16,2),readonly=True, group_operator="avg"),
'planned_revenue': fields.float('Planned Revenue',digits=(16,2),readonly=True),
'probable_revenue': fields.float('Probable Revenue', digits=(16,2),readonly=True),
'categ_id': fields.many2one('crm.case.categ', 'Category',\
domain="[('section_id','=',section_id),\
('object_id.model', '=', 'crm.lead')]" , readonly=True),
@ -144,6 +145,7 @@ class crm_lead_report(osv.osv):
c.partner_id,
c.country_id,
c.planned_revenue,
c.planned_revenue*(c.probability/100) as probable_revenue,
1 as nbr,
0 as avg_answers,
0.0 as perc_done,

View File

@ -59,7 +59,7 @@
</graph>
</field>
</record>
<!-- Leads by user and section Search View -->
<record id="view_report_crm_lead_filter" model="ir.ui.view">
@ -175,6 +175,7 @@
<field name="delay_close" sum='Delay to close'/>
<field name="delay_expected"/>
<field name="probability" widget="progressbar"/>
<field name="probable_revenue"/>
</tree>
</field>
</record>
@ -188,6 +189,7 @@
<field name="context">{'search_default_lead':1, "search_default_user":1,"search_default_this_month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('type', '=', 'lead')]</field>
<field name="help">Leads Analysis allows you to consult different informations relative to CRM. Check for treatments delays, number of responses given and emails send. You can sort out your leads analysis on different groups to get fine grained analysis.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_lead_tree">
@ -211,6 +213,7 @@
<field name="context">{"search_default_opportunity": 1, "search_default_user":1,"search_default_this_month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_mode">tree,graph</field>
<field name="domain">[('type', '=', 'opportunity')]</field>
<field name="help">Opportunities Analysis menu gives you an instant access to your opportunities like expected revenue, planned cost, overpassed deadline or the number of exchanges by opportunity.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_opportunity_tree">

View File

@ -171,6 +171,7 @@
<field name="context">{"search_default_User":1,"search_default_This Month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_id" ref="view_report_crm_phonecall_tree"/>
<field name="search_view_id" ref="view_report_crm_phonecall_filter"/>
<field name="help">Get an anlysis of Phone Calls number and delay to close, stage, user suits to different groups for a global or a fine grained analysis.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_phonecall_tree">

View File

@ -186,13 +186,13 @@ class crm_lead_forward_to_partner(osv.osv_memory):
to_write.update({'user_id' : this.user_id.id})
email_re = r'([^ ,<@]+@[^> ,]+)'
email_cc = re.findall(email_re, case.email_cc or '')
new_cc = ''
new_cc = []
for to in this.email_to.split(','):
email_to = re.findall(email_re, to)
email_to = email_to and email_to[0] or ''
if email_to not in email_cc:
new_cc += ', ' + to
to_write.update({'email_cc' : case.email_cc and case.email_cc + new_cc})
new_cc.append(to)
to_write.update({'email_cc' : case.email_cc or '' + ','.join(new_cc)})
case_pool.write(cr, uid, case.id, to_write, context=context)
return {}

View File

@ -79,6 +79,7 @@ class crm_lead2opportunity(osv.osv_memory):
'probability': this.probability,
'name': this.name,
'partner_id': this.partner_id.id,
'user_id': (this.partner_id.user_id and this.partner_id.user_id.id) or (lead.user_id and lead.user_id.id),
'type': 'opportunity'
}
lead_obj.write(cr, uid, lead.id, vals, context=context)

View File

@ -33,6 +33,9 @@ class crm_opportunity2phonecall(osv.osv_memory):
'user_id' : fields.many2one('res.users', "Assign To"),
'date': fields.datetime('Date' , required=True),
'section_id': fields.many2one('crm.case.section', 'Sales Team'),
'categ_id': fields.many2one('crm.case.categ', 'Category', required=True, \
domain="[('section_id','=',section_id),\
('object_id.model', '=', 'crm.phonecall')]"),
}
def default_get(self, cr, uid, fields, context=None):
@ -47,6 +50,12 @@ class crm_opportunity2phonecall(osv.osv_memory):
@return : default values of fields.
"""
opp_obj = self.pool.get('crm.lead')
categ_id = False
data_obj = self.pool.get('ir.model.data')
res_id = data_obj._get_id(cr, uid, 'crm', 'categ_phone2')
if res_id:
categ_id = data_obj.browse(cr, uid, res_id, context=context).res_id
record_ids = context and context.get('active_ids', []) or []
res = super(crm_opportunity2phonecall, self).default_get(cr, uid, fields, context=context)
for opp in opp_obj.browse(cr, uid, record_ids, context=context):
@ -56,6 +65,8 @@ class crm_opportunity2phonecall(osv.osv_memory):
res.update({'user_id': opp.user_id and opp.user_id.id or False})
if 'section_id' in fields:
res.update({'section_id': opp.section_id and opp.section_id.id or False})
if 'categ_id' in fields:
res.update({'categ_id': categ_id})
return res
def action_cancel(self, cr, uid, ids, context=None):
@ -90,8 +101,6 @@ class crm_opportunity2phonecall(osv.osv_memory):
res = mod_obj.read(cr, uid, result, ['res_id'])
data_obj = self.pool.get('ir.model.data')
categ_id = mod_obj._get_id(cr, uid, 'crm', 'categ_phone1')
categ_id = data_obj.browse(cr, uid, categ_id, context=context).res_id
# Select the view
id2 = data_obj._get_id(cr, uid, 'crm', 'crm_case_phone_tree_view')
@ -107,10 +116,10 @@ class crm_opportunity2phonecall(osv.osv_memory):
'name' : opp.name,
'case_id' : opp.id ,
'user_id' : this.user_id and this.user_id.id or False,
'categ_id' : categ_id,
'categ_id' : this.categ_id.id,
'description' : opp.description or False,
'date' : this.date,
'section_id' : opp.section_id and opp.section_id.id or False,
'section_id' : this.section_id.id or opp.section_id.id or False,
'partner_id': opp.partner_id and opp.partner_id.id or False,
'partner_address_id': opp.partner_address_id and opp.partner_address_id.id or False,
'partner_phone' : opp.phone or (opp.partner_address_id and opp.partner_address_id.phone or False),

View File

@ -17,6 +17,7 @@
<newline/>
<field name="user_id" />
<field name="section_id"/>
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.phonecall')]"/>
<separator string="" colspan="4"/>
<label string ="" colspan="2"/>
<button name="action_cancel" string="_Cancel"

View File

@ -48,7 +48,7 @@ class crm_send_new_email(osv.osv_memory):
'email_to' : fields.char('To', size=512, required=True),
'email_from' : fields.char('From', size=128, required=True),
'reply_to' : fields.char('Reply To', size=128, required=True, help="Reply-to of the Sales team defined on this case"),
'email_cc' : fields.char('CC', size=512, help="Carbon Copy: list of recipients that will receive a copy of this mail"),
'email_cc' : fields.char('CC', size=512, help="These addresses will receive a copy of this email. To modify the permanent CC list, edit the global CC field of this case"),
'subject': fields.char('Subject', size=512, required=True),
'body': fields.text('Message Body', required=True),
'state': fields.selection(crm.AVAILABLE_STATES, string='Set New State To', required=True),

View File

@ -75,7 +75,7 @@ class crm_claim(osv.osv, crm.crm_case):
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
# domain="[('partner_id','=',partner_id)]"
),
'email_cc': fields.text('Watchers Emails', size=252, help="These addresses(Comma-separated) will receive a copy of the future communication between partner and users"),
'email_cc': fields.text('Watchers Emails', size=252, help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'partner_name': fields.char("Employee's Name", size=64),
'partner_mobile': fields.char('Mobile', size=32),

View File

@ -16,6 +16,7 @@
<field name="view_id" ref="crm_case_claims_tree_view"/>
<field name="context">{"search_default_section_id":section_id,"search_default_current":1,"search_default_user_id":uid}</field>
<field name="search_view_id" ref="crm_claim.view_crm_case_claims_filter"/>
<field name="help">Record and trace your customers' claims here. A claim is defined by a client name, several types, a status and a priority level. A claim can also be a preventive or repairing action. A claim can be linked to a reference like a sales order, or a lot. You can send emails with attachments and get the history of the claim treatment (emails send, interventions type, etc.). </field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_claim0">

View File

@ -175,7 +175,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.claim', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -197,7 +197,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.claim', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"

View File

@ -46,7 +46,7 @@ class crm_fundraising(osv.osv, crm.crm_case):
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These addresses(Comma-separated) will receive a copy of the future communication between partner and users"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'date_closed': fields.datetime('Closed', readonly=True),
'date': fields.datetime('Date'),

View File

@ -15,6 +15,7 @@
<field name="view_id" ref="crm_fundraising.crm_case_tree_view_fund"/>
<field name="context">{"search_default_user_id":uid,"search_default_current":1}</field>
<field name="search_view_id" ref="crm_fundraising.view_crm_case_fund_filter"/>
<field name="help">When you wish to support your organization or a campaign, trace here all your activities for collecting money. The menu open a search list where you can find funds description, email, history, probability of success. Several actions buttons allows you to easily modify your different fund status.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_tag_tree_view_fund_all1">

View File

@ -165,7 +165,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.fundraising', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -187,13 +187,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.fundraising', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.fundraising'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
<page string="Extra Info" groups="base.group_extended">
<group col="2" colspan="2">

View File

@ -181,10 +181,10 @@
<field name="context">{"search_default_User":1,"search_default_This Month":1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="view_id" ref="view_report_crm_fundraising_tree"/>
<field name="search_view_id" ref="view_report_crm_fundraising_filter"/>
<field name="help">With Fund Raising get at a glance a view to your fund raising campaigns with the estimated revenue, average probability and delay to close.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_fundrising_tree">
<record model="ir.actions.act_window.view" id="action_report_crm_fundrising_tree">
<field name="sequence" eval="1"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="view_report_crm_fundraising_tree"/>

View File

@ -49,7 +49,7 @@ class crm_helpdesk(osv.osv, crm.crm_case):
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \
domain="[('partner_id','=',partner_id)]"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These addresses(Comma-separated) will receive a copy of the future communication between partner and users"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'date': fields.datetime('Date'),
'ref' : fields.reference('Reference', selection=crm._links_get, size=128),

View File

@ -13,6 +13,7 @@
<field name="view_id" ref="crm_case_tree_view_helpdesk"/>
<field name="context">{"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_crm_case_helpdesk_filter"/>
<field name="help">Alike records and processing of claims, Helpdesk and Support is a good tool to trace your interventions. This menu is more adapted to an oral communication, which is not necessarily related to a claim. Select a customer, add notes and categorize your interventions with a channel and a priority level.</field>
</record>
<record model="ir.actions.act_window.view" id="action_crm_sec_tree_view_act111">

View File

@ -103,7 +103,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.helpdesk', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -125,13 +125,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'crm.helpdesk', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'crm.helpdesk'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
<page string="Extra Info" groups="base.group_extended">
<group colspan="2" col="2">

View File

@ -163,6 +163,7 @@
<field name="view_mode">tree,graph</field>
<field name="view_id" ref="view_report_crm_helpdesk_tree"/>
<field name="search_view_id" ref="view_report_crm_helpdesk_filter"/>
<field name="help">Helpdesk allows you to consult different informations relative to support demands. Check for treatments delays, number of responses given and emails send and costs. You can sort out your analysis on different groups to get fine grained analysis.</field>
</record>
<record model="ir.actions.act_window.view" id="action_report_crm_helpdesk_tree">

View File

@ -317,6 +317,8 @@
<field name="res_model">ir.attachment</field>
<field name="name">Document</field>
<field name="view_type">form</field>
<field name="search_view_id" ref="view_attach_filter"/>
<field name="help">Documents give your access to all attached documents; it's a repository of all attached documents (mails, documents attached to a project, etc.)</field>
</record>
<menuitem name="Documents" id="menu_document_doc" parent="knowledge.menu_document" sequence="0"/>
<menuitem

View File

@ -300,7 +300,7 @@ class event_registration(osv.osv):
_columns = {
'name': fields.char('Summary', size=124, readonly=True, states={'draft': [('readonly', False)]}),
'email_cc': fields.text('CC', size=252 , readonly=False, states={'done': [('readonly', True)]}, help="These people will receive a copy of the future communication between partner and users by email"),
'email_cc': fields.text('CC', size=252 , readonly=False, states={'done': [('readonly', True)]}, help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'nb_register': fields.integer('Quantity', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Number of Registrations or Tickets"),
'event_id': fields.many2one('event.event', 'Event Related', required=True, readonly=True, states={'draft': [('readonly', False)]}),
"partner_invoice_id": fields.many2one('res.partner', 'Partner Invoiced', readonly=True, states={'draft': [('readonly', False)]}),

View File

@ -376,7 +376,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'event.registration', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -398,13 +398,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'event.registration', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'event.registration'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
</notebook>
</form>

View File

@ -72,9 +72,7 @@ class hr_applicant(osv.osv, crm.crm_case):
select=True, help='Sales team to which Case belongs to.\
Define Responsible user and Email account for mail gateway.'),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'email_cc': fields.text('Watchers Emails', size=252 , help="These people\
will receive a copy of the future" \
" communication between partner and users by email"),
'email_cc': fields.text('Watchers Emails', size=252 , help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'probability': fields.float('Probability'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'partner_address_id': fields.many2one('res.partner.address', 'Partner Contact', \

View File

@ -152,7 +152,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'hr.applicant', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -174,13 +174,13 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'hr.applicant', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'hr.applicant'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
</notebook>
</form>

View File

@ -9,12 +9,12 @@
<field name="arch" type="xml">
<field name="partner_id" position="replace">
<field name="partner_id"
on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank)"
on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank_id)"
select="1"/>
</field>
</field>
</record>
<record model="ir.ui.view" id="invoice_supplier_form8">
<field name="name">account.invoice.supplier.form.inherit</field>
<field name="model">account.invoice</field>
@ -22,10 +22,10 @@
<field name="inherit_id" ref="account.invoice_supplier_form"/>
<field name="priority" eval="18"/>
<field name="arch" type="xml">
<field name="partner_bank" position="replace">
<field name="partner_bank"
<field name="partner_bank_id" position="replace">
<field name="partner_bank_id"
domain="[('partner_id', '=', partner_id)]"
on_change="onchange_partner_bank(partner_bank)"/>
on_change="onchange_partner_bank(partner_bank_id)"/>
</field>
</field>
</record>
@ -35,8 +35,8 @@
<field name="type">form</field>
<field name="inherit_id" ref="account.invoice_form"/>
<field name="arch" type="xml">
<field name="partner_bank" position="replace">
<field name="partner_bank"
<field name="partner_bank_id" position="replace">
<field name="partner_bank_id"
domain="[('partner_id.ref_companies', 'in', [company_id])]"/>
</field>
</field>

View File

@ -57,8 +57,8 @@ class AccountMoveLine(osv.osv):
bank_type = payment_mode_obj.suitable_bank_types(cr, uid, payment_type,
context=context)
for line in self.browse(cr, uid, ids, context=context):
if line.invoice and line.invoice.partner_bank:
line2bank[line.id] = line.invoice.partner_bank.id
if line.invoice and line.invoice.partner_bank_id:
line2bank[line.id] = line.invoice.partner_bank_id.id
elif line.partner_id:
for bank in line.partner_id.bank_ids:
if bank.state in bank_type:

View File

@ -40,27 +40,27 @@ class account_invoice(osv.osv):
"""Inherit account.invoice in order to add bvr
printing functionnalites. BVR is a Swiss payment vector"""
_inherit = "account.invoice"
## @param self The object pointer.
## @param cursor a psycopg cursor
## @param user res.user.id that is currently loged
## @parma context a standard dict
## @parma context a standard dict
## @return a list of tuple (name,value)
def _get_reference_type(self, cursor, user, context=None):
"""Function use by the function field reference_type in order to initalise available
"""Function use by the function field reference_type in order to initalise available
BVR Reference Types"""
res = super(account_invoice, self)._get_reference_type(cursor, user,
context=context)
res.append(('bvr', 'BVR'))
return res
## @param self The object pointer.
## @param cursor a psycopg cursor
## @param user res.user.id that is currently loged
## @parma context a standard dict
## @param name of the files
## @param args a list of diverse argument
## @parma context a standard dict
## @param name of the files
## @param args a list of diverse argument
## @parma context a standard dict
## @return a dict (invoice id,amount to pay)
def _amount_to_pay(self, cursor, user, ids, name, args, context=None):
'''Return the amount still to pay regarding all the payment orders'''
@ -81,8 +81,8 @@ class account_invoice(osv.osv):
### BVR reference type BVR or FREE
'reference_type': fields.selection(_get_reference_type,
'Reference Type', required=True),
### Partner bank link between bank and partner id
'partner_bank': fields.many2one('res.partner.bank', 'Bank Account',
### Partner bank link between bank and partner id
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',
help='The partner bank account to pay\nKeep empty to use the default'
),
### Amount to pay
@ -91,12 +91,12 @@ class account_invoice(osv.osv):
help='The amount which should be paid at the current date\n' \
'minus the amount which is already in payment order'),
}
## @param self The object pointer.
## @param cursor a psycopg cursor
## @param user res.user.id that is currently loged
## @parma ids invoices id
## @return a boolean True if valid False if invalid
## @return a boolean True if valid False if invalid
def _check_bvr(self, cr, uid, ids):
"""
Function to validate a bvr reference like :
@ -123,14 +123,14 @@ class account_invoice(osv.osv):
## @param cursor a psycopg cursor
## @param user res.user.id that is currently loged
## @parma ids invoices id
## @return a boolean True if valid False if invalid
## @return a boolean True if valid False if invalid
def _check_reference_type(self, cursor, user, ids):
"""Check the customer invoice reference type depending
"""Check the customer invoice reference type depending
on the BVR reference type and the invoice partner bank type"""
for invoice in self.browse(cursor, user, ids):
if invoice.type in 'in_invoice':
if invoice.partner_bank and \
invoice.partner_bank.state in \
if invoice.partner_bank_id and \
invoice.partner_bank_id.state in \
('bvrbank', 'bvrpost') and \
invoice.reference_type != 'bvr':
return False
@ -142,7 +142,7 @@ class account_invoice(osv.osv):
(_check_reference_type, 'Error: BVR reference is required.',
['reference_type']),
]
## @param self The object pointer.
## @param cr a psycopg cursor
## @param uid res.user.id that is currently loged
@ -154,16 +154,16 @@ class account_invoice(osv.osv):
## @param partner_bank_id the partner linked invoice bank
## @return the dict of values with the partner_bank value updated
def onchange_partner_id(self, cr, uid, ids, type, partner_id,
date_invoice=False, payment_term=False, partner_bank=False, company_id=False):
date_invoice=False, payment_term=False, partner_bank_id=False, company_id=False):
""" Function that is call when the partner of the invoice is changed
it will retriev and set the good bank partner bank"""
res = super(account_invoice, self).onchange_partner_id(
cr,
uid,
ids,
uid,
ids,
type,
partner_id,
date_invoice,
partner_id,
date_invoice,
payment_term
)
bank_id = False
@ -173,19 +173,19 @@ class account_invoice(osv.osv):
bank_id = p.bank_ids[0].id
if type in ('in_invoice', 'in_refund'):
res['value']['partner_bank'] = bank_id
res['value']['partner_bank_id'] = bank_id
if partner_bank != bank_id:
if partner_bank_id != bank_id:
to_update = self.onchange_partner_bank(cr, uid, ids, bank_id)
res['value'].update(to_update['value'])
return res
## @param self The object pointer.
## @param cursor a psycopg cursor
## @param user res.user.id that is currently loged
## @parma ids invoices id
## @param partner_bank_id the partner linked invoice bank
## @return the dict of values with the reference type value updated
## @return the dict of values with the reference type value updated
def onchange_partner_bank(self, cursor, user, ids, partner_bank_id):
"""update the reference type depending of the partner bank"""
res = {'value': {}}

View File

@ -34,7 +34,7 @@ import time
from report import report_sxw
from tools import mod10r
import re
import os
import os
import sys
import shutil
from mx.DateTime import *
@ -61,11 +61,11 @@ class account_invoice_bvr(report_sxw.rml_parse):
if date_to_format:
date_formatted = strptime(date_to_format,'%Y-%m-%d').strftime('%d.%m.%Y')
return date_formatted
def police_absolute_path(self, inner_path) :
path = os.path.join(os.path.dirname(sys.argv[0]), inner_path)
return path
def copyocrbfile(self,file):
src = self.police_absolute_path(file)
file = os.path.basename(src)
@ -74,10 +74,10 @@ class account_invoice_bvr(report_sxw.rml_parse):
try:
shutil.copyfile(src,dest)
except:
"""print ocrbfile was not copy in /tmp/ please
"""print ocrbfile was not copy in /tmp/ please
copy it manually from l10_ch/report"""
def comma_me(self,amount):
if type(amount) is float :
@ -101,8 +101,8 @@ class account_invoice_bvr(report_sxw.rml_parse):
def _get_ref(self, o):
res = ''
if o.partner_bank.bvr_adherent_num:
res = o.partner_bank.bvr_adherent_num
if o.partner_bank_id.bvr_adherent_num:
res = o.partner_bank_id.bvr_adherent_num
invoice_number = ''
if o.number:
invoice_number = re.sub('[^0-9]', '0', o.number)

View File

@ -13,7 +13,7 @@
<stroke color="black"/>
<lines>1.3cm 27.7cm 20cm 27.7cm</lines>
<drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]] </drawRightString>
<drawRightString x="20cm" y="27.8cm">[[ company.rml_header1 ]] </drawRightString>
<drawString x="1.3cm" y="27.2cm">[[ company.partner_id.name ]]</drawString>
<drawString x="1.3cm" y="26.8cm">[[ company.partner_id.address and company.partner_id.address[0].street or '' ]]</drawString>
<drawString x="1.3cm" y="26.4cm">[[ company.partner_id.address and company.partner_id.address[0].zip or '' ]] [[ company.partner_id.address and company.partner_id.address[0].city or '' ]] - [[ company.partner_id.address and company.partner_id.address[0].country_id and company.partner_id.address[0].country_id.name or '']]</drawString>
@ -112,11 +112,11 @@
-->
<illustration width="210mm" height="106mm">
<setFont name="Helvetica" size="11"/>
<drawString x="2mm" y="93mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.name or '' ]]</drawString>
<drawString x="2mm" y="88mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.zip or '']] [[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.city or '']]</drawString>
<drawString x="2mm" y="93mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.name or '' ]]</drawString>
<drawString x="2mm" y="88mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.zip or '']] [[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.city or '']]</drawString>
<drawString x="62mm" y="93mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.name or '' ]]</drawString>
<drawString x="62mm" y="88mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.zip or '']] [[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.city or '']]</drawString>
<drawString x="62mm" y="93mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.name or '' ]]</drawString>
<drawString x="62mm" y="88mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.zip or '']] [[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.city or '']]</drawString>
<drawString x="2mm" y="78mm"> [[ user.company_id.partner_id.name ]]</drawString>
<drawString x="2mm" y="73mm"> [[ user.company_id.partner_id.address[0].street ]]</drawString>
@ -147,11 +147,11 @@
<drawString x="124mm" y="67mm">[[ _space(_get_ref(o)) ]]</drawString>
<setFont name="ocrb" size="12"/>
<drawRightString x="52 mm" y="59.3mm">[[ o.partner_bank and o.partner_bank.printAccount and o.partner_bank.bvr_number or '' ]]</drawRightString>
<drawRightString x="112mm" y="59.3mm">[[ o.partner_bank and o.partner_bank.printAccount and o.partner_bank.bvr_number or '' ]]</drawRightString>
<drawRightString x="52 mm" y="59.3mm">[[ o.partner_bank_id and o.partner_bank_id.printAccount and o.partner_bank_id.bvr_number or '' ]]</drawRightString>
<drawRightString x="112mm" y="59.3mm">[[ o.partner_bank_id and o.partner_bank_id.printAccount and o.partner_bank_id.bvr_number or '' ]]</drawRightString>
<drawRightString x="42mm" y="50mm">[[ _space(('%.2f' % o.amount_total)[:-3], 1) + ' ' ]]</drawRightString>
<drawRightString x="104mm" y="50mm">[[ _space(('%.2f' % o.amount_total)[:-3], 1) + ' ' ]]</drawRightString>
<drawRightString x="114 mm" y="59.3mm">[[ o.partner_bank and o.partner_bank.printAccount and o.partner_bank.bvr_number or '' ]]</drawRightString>
<drawRightString x="114 mm" y="59.3mm">[[ o.partner_bank_id and o.partner_bank_id.printAccount and o.partner_bank_id.bvr_number or '' ]]</drawRightString>
<drawRightString x="58mm" y="50mm">[[ _space(('%.2f' % o.amount_total)[-2:], 1) + ' ' ]]</drawRightString>
<drawRightString x="119mm" y="50mm">[[ _space(('%.2f' % o.amount_total)[-2:], 1) + ' ' ]]</drawRightString>
@ -161,7 +161,7 @@
-->
<setFont name="ocrb" size="11.5"/>
<drawRightString x="195mm" y="15mm">[[mod10r('01'+str('%.2f' % o.amount_total).replace('.','').rjust(10,'0'))]]&gt;[[ _get_ref(o) ]]+ [[o.partner_bank.bvr_number.split('-')[0]+(str(o.partner_bank.bvr_number.split('-')[1])).rjust(6,'0')+o.partner_bank.bvr_number.split('-')[2] ]]&gt;</drawRightString>
<drawRightString x="195mm" y="15mm">[[mod10r('01'+str('%.2f' % o.amount_total).replace('.','').rjust(10,'0'))]]&gt;[[ _get_ref(o) ]]+ [[o.partner_bank_id.bvr_number.split('-')[0]+(str(o.partner_bank_id.bvr_number.split('-')[1])).rjust(6,'0')+o.partner_bank_id.bvr_number.split('-')[2] ]]&gt;</drawRightString>
</illustration>
</story>
</document>

View File

@ -250,7 +250,7 @@
<blockTable colWidths="28.0, 499.0" style="Table4">
<tr>
<td>
<para style="P9">[[ note or removeParentNode('blockTable') ]]</para>
<para style="P9">[[ note or removeParentNode('blockTable') ]]</para>
</td>
<td>
<xpre style="P16">[[ l.note ]]</xpre>
@ -326,11 +326,11 @@
-->
<illustration width="210mm" height="106mm">
<setFont name="Helvetica" size="11"/>
<drawString x="2mm" y="93mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.name or '' ]]</drawString>
<drawString x="2mm" y="88mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.zip or '']] [[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.city or '']]</drawString>
<drawString x="2mm" y="93mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.name or '' ]]</drawString>
<drawString x="2mm" y="88mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.zip or '']] [[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.city or '']]</drawString>
<drawString x="62mm" y="93mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.name or '' ]]</drawString>
<drawString x="62mm" y="88mm">[[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.zip or '']] [[ o.partner_bank and o.partner_bank.printBank and o.partner_bank.bank and o.partner_bank.bank.city or '']]</drawString>
<drawString x="62mm" y="93mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.name or '' ]]</drawString>
<drawString x="62mm" y="88mm">[[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.zip or '']] [[ o.partner_bank_id and o.partner_bank_id.printBank and o.partner_bank_id.bank and o.partner_bank_id.bank.city or '']]</drawString>
<drawString x="2mm" y="78mm"> [[user.company_id.name]]</drawString>
<drawString x="2mm" y="73mm"> [[ user.company_id.partner_id.address[0].street ]]</drawString>
<drawString x="2mm" y="68mm"> [[ (user.company_id.partner_id.address[0].street2 or '')]]</drawString>
@ -357,12 +357,12 @@
<setFont name="ocrb" size="11"/>
<drawString x="124mm" y="67mm">[[ _space(_get_ref(o)) ]]</drawString>
<setFont name="ocrb" size="12"/>
<drawRightString x="52 mm" y="59.3mm">[[ o.partner_bank and o.partner_bank.printAccount and o.partner_bank.bvr_number or '' ]]</drawRightString>
<drawRightString x="112mm" y="59.3mm">[[ o.partner_bank and o.partner_bank.printAccount and o.partner_bank.bvr_number or '' ]]</drawRightString>
<drawRightString x="52 mm" y="59.3mm">[[ o.partner_bank_id and o.partner_bank_id.printAccount and o.partner_bank_id.bvr_number or '' ]]</drawRightString>
<drawRightString x="112mm" y="59.3mm">[[ o.partner_bank_id and o.partner_bank_id.printAccount and o.partner_bank_id.bvr_number or '' ]]</drawRightString>
<drawRightString x="42mm" y="50mm">[[ _space(('%.2f' % o.amount_total)[:-3], 1) + ' ' ]]</drawRightString>
<drawRightString x="104mm" y="50mm">[[ _space(('%.2f' % o.amount_total)[:-3], 1) + ' ' ]]</drawRightString>
@ -375,7 +375,7 @@
-->
<setFont name="ocrb" size="11.5"/>
<drawRightString x="195mm" y="15mm">[[mod10r('01'+str('%.2f' % o.amount_total).replace('.','').rjust(10,'0'))]]&gt;[[ _get_ref(o) ]]+ [[o.partner_bank.bvr_number.split('-')[0]+(str(o.partner_bank.bvr_number.split('-')[1])).rjust(6,'0')+o.partner_bank.bvr_number.split('-')[2] ]]&gt;</drawRightString>
<drawRightString x="195mm" y="15mm">[[mod10r('01'+str('%.2f' % o.amount_total).replace('.','').rjust(10,'0'))]]&gt;[[ _get_ref(o) ]]+ [[o.partner_bank_id.bvr_number.split('-')[0]+(str(o.partner_bank_id.bvr_number.split('-')[1])).rjust(6,'0')+o.partner_bank_id.bvr_number.split('-')[2] ]]&gt;</drawRightString>
</illustration>

View File

@ -39,22 +39,22 @@ def _check(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
invoice_obj = pool.get('account.invoice')
for invoice in invoice_obj.browse(cr, uid, data['ids'], context):
if not invoice.partner_bank:
if not invoice.partner_bank_id:
raise wizard.except_wizard(_('UserError'),
_('No bank specified on invoice:\n%s') % \
invoice_obj.name_get(cr, uid, [invoice.id], context=context)[0][1])
if not re.compile('[0-9][0-9]-[0-9]{3,6}-[0-9]').match(
invoice.partner_bank.bvr_number or ''):
invoice.partner_bank_id.bvr_number or ''):
raise wizard.except_wizard(_('UserError'),
_('Your bank BVR number should be of the form 0X-XXX-X!\n' \
'Please check your company ' \
'information for the invoice:\n%s') % \
invoice_obj.name_get(cr, uid, [invoice.id], context=context)[0][1])
if invoice.partner_bank.bvr_adherent_num \
if invoice.partner_bank_id.bvr_adherent_num \
and not re.compile('[0-9]*$').match(
invoice.partner_bank.bvr_adherent_num):
invoice.partner_bank_id.bvr_adherent_num):
raise wizard.except_wizard(_('UserError'),
_('Your bank BVR adherent number must contain exactly seven' \
'digits!\nPlease check your company ' \
@ -65,7 +65,7 @@ def _check(self, cr, uid, data, context):
class wizard_report(wizard.interface):
states = {
'init': {
'actions': [_check],
'actions': [_check],
'result': {'type':'print', 'report':'l10n_ch.bvr', 'state':'end'}
}
}

View File

@ -475,7 +475,7 @@ class mailgate_tool(osv.osv_memory):
'partner_id': False
}
from_email = self.to_email(from_email)[0]
address_ids = address_pool.search(cr, uid, [('email', '=', from_email)])
address_ids = address_pool.search(cr, uid, [('email', 'like', from_email)])
if address_ids:
address = address_pool.browse(cr, uid, address_ids[0])
res['partner_address_id'] = address_ids[0]

View File

@ -83,13 +83,6 @@ class marketing_campaign(osv.osv):
_name = "marketing.campaign"
_description = "Marketing Campaign"
def _check_has_start(self, cr, uid, ids, context=None):
for campaign in self.browse(cr, uid, ids, context=context):
if not any(a.start for a in campaign.activity_ids):
return False
return True
_columns = {
'name': fields.char('Name', size=64, required=True),
'object_id': fields.many2one('ir.model', 'Model', required=True,
@ -121,29 +114,34 @@ Normal - the campaign runs normally and automatically sends all emails and repor
'state': lambda *a: 'draft',
'mode': lambda *a: 'test',
}
_constraints = [(_check_has_start, 'Please mark at least one activity as a start activity', ['Activities'])]
def state_running_set(self, cr, uid, ids, *args):
# TODO check that all subcampaigns are running
campaign = self.browse(cr, uid, ids[0])
if not campaign.activity_ids :
raise osv.except_osv("Error", "There is no activitity in the campaign")
activity_ids = [ act_id.id for act_id in campaign.activity_ids]
if not activity_ids:
raise osv.except_osv(_("Error"), _("The campaign cannot be started : there are no activities in it"))
act_obj = self.pool.get('marketing.campaign.activity')
act_ids = act_obj.search(cr, uid, [('id', 'in', activity_ids),
('type', '=', 'email')])
for activity in act_obj.browse(cr, uid, act_ids):
if not activity.email_template_id.enforce_from_account :
if not campaign.activity_ids:
raise osv.except_osv(_("Error"), _("The campaign cannot be started: there are no activities in it"))
has_start = False
has_signal_without_from = False
for activity in campaign.activity_ids:
if activity.start:
has_start = True
if activity.signal and len(activity.from_ids) == 0:
has_signal_without_from = True
if activity.type != 'email':
continue
if not activity.email_template_id.enforce_from_account:
raise osv.except_osv(_("Error"), _("The campaign cannot be started: an email account is missing in the email activity '%s'")%activity.name)
if activity.email_template_id.enforce_from_account.state != 'approved' :
if activity.email_template_id.enforce_from_account.state != 'approved':
raise osv.except_osv(_("Error"), _("The campaign cannot be started: the email account is not approved in the email activity '%s'")%activity.name)
self.write(cr, uid, ids, {'state': 'running'})
return True
if not has_start and not has_signal_without_from:
raise osv.except_osv(_("Error"), _("The campaign hasn't any starting activity nor any activity with a signal and no previous activity."))
return self.write(cr, uid, ids, {'state': 'running'})
def state_done_set(self, cr, uid, ids, *args):
# TODO check that this campaign is not a subcampaign in running mode.

View File

@ -100,7 +100,6 @@ class StockMove(osv.osv):
'location_id': move.location_dest_id.id,
'auto_validate': True,
'picking_id': False,
'location_id': dest,
'state': 'waiting'
})
for m in procurement_obj.search(cr, uid, [('move_id','=',move.id)], context):

View File

@ -78,8 +78,8 @@
<field name="arch" type="xml">
<form string="Parameters Configure wizard">
<group colspan="4" col="8">
<group colspan="3" width="180" height="250">
<field name="config_logo" widget="image" width="200" height="100" nolabel="1" colspan="1"/>
<group colspan="3" width="220" height="250">
<field name="config_logo" widget="image" width="220" height="130" nolabel="1" colspan="1"/>
<newline/>
<label align="0.0" string="This wizard will automatically configure the web client for Business Intelligence." width="200" colspan="2"/>
</group>

View File

@ -192,6 +192,7 @@
<field name="view_type">form</field>
<field name="view_id" ref="product_product_tree_view"/>
<field name="search_view_id" ref="product_search_form_view"/>
<field name="help">In OpenERP, a product is something you can buy and sell. It can be a raw material, a stockable product, a consumable or a service. The product form contains a detailed information on the products like procurement logistic, sales price, product category, suppliers, etc.</field>
</record>
<menuitem id="base.menu_product" name="Products" parent="base.menu_base_partner" sequence="9"/>
@ -250,6 +251,7 @@
<field name="domain">[('parent_id','=',False)]</field>
<field name="view_type">tree</field>
<field name="view_id" ref="product_category_tree_view"/>
<field name="help">Products category opens a tree structure view of your products by category.</field>
</record>
<menuitem
action="product_category_action"
@ -488,7 +490,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Product Variant">
<field name="product_tmpl_id" select="1"/>
<field name="product_tmpl_id" select="1"/>
<field name="active" select="1"/>
<field name="variants" select="1"/>
<field name="default_code" select="1"/>

View File

@ -1,103 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 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 Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import pooler
import datetime
def timeformat_convert(cr, uid, time_string):
# Function to convert input time string:: 8.5 to output time string 8:30
split_list = str(time_string).split('.')
hour_part = split_list[0]
mins_part = split_list[1]
round_mins = int(round(float(mins_part) * 60,-2))
converted_string = hour_part + ':' + str(round_mins)[0:2]
return converted_string
def leaves_resource(cr, uid, calendar_id, resource_id=False, resource_calendar=False):
# To get the leaves for the resource_ids working on phase
pool = pooler.get_pool(cr.dbname)
resource_leaves_pool = pool.get('resource.calendar.leaves')
leaves = []
if resource_id:
resource_leave_ids = resource_leaves_pool.search(cr, uid, ['|',('calendar_id','=',calendar_id),('calendar_id','=',resource_calendar),('resource_id','=',resource_id)])
else:
resource_leave_ids = resource_leaves_pool.search(cr, uid, [('calendar_id','=',calendar_id),('resource_id','=',False)])
res_leaves = resource_leaves_pool.read(cr, uid, resource_leave_ids, ['date_from','date_to'])
for leave in range(len(res_leaves)):
dt_start = datetime.datetime.strptime(res_leaves[leave]['date_from'],'%Y-%m-%d %H:%M:%S')
dt_end = datetime.datetime.strptime(res_leaves[leave]['date_to'],'%Y-%m-%d %H:%M:%S')
no = dt_end - dt_start
[leaves.append((dt_start + datetime.timedelta(days=x)).strftime('%Y-%m-%d')) for x in range(int(no.days + 1))]
leaves.sort()
return leaves
def compute_working_calendar(cr, uid, calendar_id):
# To change the format of working calendar to bring it into 'faces' format
pool = pooler.get_pool(cr.dbname)
resource_week_pool = pool.get('resource.calendar.week')
time_range = "8:00-8:00"
non_working = ""
wk = {"0":"mon", "1":"tue", "2":"wed", "3":"thu", "4":"fri", "5":"sat", "6":"sun"}
wk_days = {}
wk_time = {}
wktime_list = []
wktime_cal = []
week_ids = resource_week_pool.search(cr, uid, [('calendar_id','=',calendar_id)])
week_obj = resource_week_pool.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'])
# Converting time formats into appropriate format required
# and creating a list like [('mon', '8:00-12:00'), ('mon', '13:00-18:00')]
for week in week_obj:
res_str = ""
if wk.has_key(week['dayofweek']):
day = wk[week['dayofweek']]
wk_days[week['dayofweek']] = wk[week['dayofweek']]
hour_from_str = timeformat_convert(cr, uid, week['hour_from'])
hour_to_str = timeformat_convert(cr, uid, week['hour_to'])
res_str = hour_from_str + '-' + hour_to_str
wktime_list.append((day,res_str))
# Converting it to format like [('mon', '8:00-12:00', '13:00-18:00')]
for item in wktime_list:
if wk_time.has_key(item[0]):
wk_time[item[0]].append(item[1])
else:
wk_time[item[0]] = [item[0]]
wk_time[item[0]].append(item[1])
for k,v in wk_time.items():
wktime_cal.append(tuple(v))
# For non working days adding [('tue,wed,fri,sat,sun', '8:00-8:00')]
for k,v in wk_days.items():
if wk.has_key(k):
wk.pop(k)
for v in wk.itervalues():
non_working += v + ','
if non_working:
wktime_cal.append((non_working[:-1],time_range))
return wktime_cal
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -159,9 +159,7 @@ class project_issue(osv.osv, crm.crm_case):
\nWhen the case is over, the state is set to \'Done\'.\
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
'email_from': fields.char('Email', size=128, help="These people will receive email."),
'email_cc': fields.char('Watchers Emails', size=256, help="These people\
will receive a copy of the future" \
" communication between partner and users by email"),
'email_cc': fields.char('Watchers Emails', size=256, help="These email addresses will be added to the CC field of all inbound and outbound emails for this record before being sent. Separate multiple email addresses with a comma"),
'date_open': fields.datetime('Opened', readonly=True),
# Project Issue fields
'date_closed': fields.datetime('Closed', readonly=True),

View File

@ -82,7 +82,7 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'project.issue', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</tree>
<form string="Communication history">
<group col="4" colspan="4">
@ -104,14 +104,14 @@
string="Reply"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'reply', 'model': 'project.issue', 'include_original' : True}"
icon="gtk-undo" type="action" />
icon="terp-mail-replied" type="action" />
</form>
</field>
<separator colspan="4"/>
<button colspan="4" string="Send New Email"
name="%(crm.action_crm_send_mail)d"
context="{'mail':'new', 'model': 'project.issue'}"
icon="gtk-go-forward" type="action" />
icon="terp-mail-message-new" type="action" />
</page>
<page string="History" groups="base.group_extended">
<group col="2" colspan="2">

View File

@ -73,7 +73,7 @@
<field name="res_model">project.resource.allocation</field>
<field name="view_type">form</field>
<field name="view_mode">gantt,tree,form</field>
<field name="context">{'search_default_resource': 1} </field>
<field name="context">{}</field>
<!--<field name="search_view_id" ref="view_project_phase_search"/>-->
</record>

View File

@ -37,7 +37,6 @@
-
!record {model: project.task, id: project_task_t00}:
name: t1
occupation_rate: 1.0
planned_hours: 20.0
remaining_hours: 20.0
state: draft
@ -50,7 +49,6 @@
-
!record {model: project.task, id: project_task_t11}:
name: t2
occupation_rate: 1.0
planned_hours: 25.0
remaining_hours: 25.0
state: draft
@ -62,7 +60,6 @@
-
!record {model: project.task, id: project_task_t22}:
name: t3
occupation_rate: 1.0
planned_hours: 30.0
remaining_hours: 30.0
state: draft
@ -75,7 +72,6 @@
-
!record {model: project.task, id: project_task_t33}:
name: t4
occupation_rate: 1.0
planned_hours: 25.0
remaining_hours: 25.0
state: draft
@ -105,4 +101,4 @@
prj=self.browse(cr, uid, [ref("project_project_project1")])[0]
for task in prj.tasks:
if (not task.user_id) or (not task.date_start) or (not task.date_end):
raise AssertionError("Project Tasks not scheduled")
raise AssertionError("Project Tasks not scheduled")

View File

@ -81,7 +81,7 @@ def compute_working_calendar(cr, uid, calendar_id, context=None):
"""
pool = pooler.get_pool(cr.dbname)
resource_week_obj = pool.get('resource.calendar.week')
resource_attendance_obj = pool.get('resource.calendar.attendance')
time_range = "8:00-8:00"
non_working = ""
week_days = {"0": "mon", "1": "tue", "2": "wed","3": "thu", "4": "fri", "5": "sat", "6": "sun"}
@ -89,8 +89,8 @@ def compute_working_calendar(cr, uid, calendar_id, context=None):
wk_time = {}
wktime_list = []
wktime_cal = []
week_ids = resource_week_obj.search(cr, uid, [('calendar_id', '=', calendar_id)], context=context)
weeks = resource_week_obj.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'], context=context)
week_ids = resource_attendance_obj.search(cr, uid, [('calendar_id', '=', calendar_id)], context=context)
weeks = resource_attendance_obj.read(cr, uid, week_ids, ['dayofweek', 'hour_from', 'hour_to'], context=context)
# Convert time formats into appropriate format required
# and create a list like [('mon', '8:00-12:00'), ('mon', '13:00-18:00')]
for week in weeks:

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,872 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * scrum
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01:52+0000\n"
"PO-Revision-Date: 2009-08-28 16:01:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: scrum
#: view:scrum.product.backlog:0
msgid "Scrum Product backlog"
msgstr ""
#. module: scrum
#: field:scrum.meeting,name:0
msgid "Meeting Name"
msgstr ""
#. module: scrum
#: model:process.transition,note:scrum.process_transition_backlogtask0
msgid "From backlog create task."
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task4
#: model:ir.ui.menu,name:scrum.menu_action_view_task4
msgid "My tasks"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree6
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree6
msgid "My opened sprints (Product Owner)"
msgstr ""
#. module: scrum
#: model:process.node,note:scrum.process_node_productbacklog0
msgid "Create task from backlogs"
msgstr ""
#. module: scrum
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
#. module: scrum
#: model:ir.module.module,shortdesc:scrum.module_meta_information
msgid "Scrum, Agile Development Method"
msgstr ""
#. module: scrum
#: field:scrum.project,progress_rate:0
msgid "Progress"
msgstr ""
#. module: scrum
#: help:scrum.task,remaining_hours:0
msgid "Total remaining time, can be re-estimated periodically by the assignee of the task."
msgstr ""
#. module: scrum
#: field:scrum.project,child_id:0
msgid "Subproject"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
msgid "What have you accomplished since yesterday ?"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
msgid "Are your Sprint Backlog estimate accurate ?"
msgstr ""
#. module: scrum
#: field:scrum.project,members:0
msgid "Project Members"
msgstr ""
#. module: scrum
#: view:scrum.project:0
msgid "Scrum Projects"
msgstr ""
#. module: scrum
#: field:scrum.task,child_ids:0
msgid "Delegated Tasks"
msgstr ""
#. module: scrum
#: help:scrum.project,warn_header:0
msgid "Header added at the beginning of the email for the warning message sent to the customer when a task is closed."
msgstr ""
#. module: scrum
#: field:scrum.task,priority:0
msgid "Importance"
msgstr ""
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_task
msgid "Scrum Task"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.dblc_proj
msgid "View project's backlog"
msgstr ""
#. module: scrum
#: help:scrum.project,members:0
msgid "Project's member. Not used in any computation, just for information purpose."
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
msgid "Very urgent"
msgstr ""
#. module: scrum
#: field:scrum.sprint,retrospective:0
msgid "Sprint Retrospective"
msgstr ""
#. module: scrum
#: field:scrum.sprint,name:0
msgid "Sprint Name"
msgstr ""
#. module: scrum
#: help:scrum.task,planned_hours:0
msgid "Estimated time to do the task, usually set by the project manager when the task is in draft state."
msgstr ""
#. module: scrum
#: field:scrum.project,notes:0
#: field:scrum.task,notes:0
msgid "Notes"
msgstr ""
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_product_backlog
#: field:scrum.task,product_backlog_id:0
msgid "Product Backlog"
msgstr ""
#. module: scrum
#: field:scrum.sprint,project_id:0
#: field:scrum.task,project_id:0
msgid "Project"
msgstr ""
#. module: scrum
#: help:scrum.project,warn_manager:0
msgid "If you check this field, the project manager will receive a request each time a task is completed by his team."
msgstr ""
#. module: scrum
#: selection:scrum.project,state:0
#: selection:scrum.task,state:0
msgid "Cancelled"
msgstr ""
#. module: scrum
#: field:scrum.team,name:0
msgid "Team Name"
msgstr ""
#. module: scrum
#: field:scrum.project,warn_header:0
msgid "Mail Header"
msgstr ""
#. module: scrum
#: field:scrum.project,sprint_size:0
msgid "Sprint Days"
msgstr ""
#. module: scrum
#: field:scrum.sprint,date_stop:0
msgid "Ending Date"
msgstr ""
#. module: scrum
#: help:scrum.task,effective_hours:0
msgid "Computed using the sum of the task work done."
msgstr ""
#. module: scrum
#: help:scrum.project,warn_customer:0
msgid "If you check this, the user will have a popup when closing a task that propose a message to send by email to the customer."
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_task_open
msgid "View sprint Tasks"
msgstr ""
#. module: scrum
#: field:scrum.project,category_id:0
msgid "Analytic Account"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task
#: model:ir.ui.menu,name:scrum.menu_action_view_task
msgid "All Tasks"
msgstr ""
#. module: scrum
#: field:scrum.task,date_deadline:0
msgid "Deadline"
msgstr ""
#. module: scrum
#: field:scrum.project,partner_id:0
#: field:scrum.task,partner_id:0
msgid "Partner"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,planned_hours:0
#: field:scrum.sprint,planned_hours:0
#: field:scrum.task,planned_hours:0
msgid "Planned Hours"
msgstr ""
#. module: scrum
#: selection:scrum.project,state:0
msgid "Template"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,priority:0
msgid "Priority"
msgstr ""
#. module: scrum
#: field:scrum.project,state:0
#: view:scrum.sprint:0
msgid "State"
msgstr ""
#. module: scrum
#: help:scrum.project,progress_rate:0
msgid "Percent of tasks closed according to the total of tasks todo."
msgstr ""
#. module: scrum
#: help:scrum.project,notes:0
msgid "Internal description of the project."
msgstr ""
#. module: scrum
#: field:scrum.sprint,meetings_id:0
msgid "Daily Scrum"
msgstr ""
#. module: scrum
#: help:scrum.task,total_hours:0
msgid "Computed as: Time Spent + Remaining Time."
msgstr ""
#. module: scrum
#: field:scrum.task,type:0
msgid "Type"
msgstr ""
#. module: scrum
#: view:scrum.project:0
msgid "Scrum Data"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
msgid "Medium"
msgstr ""
#. module: scrum
#: field:scrum.project,total_hours:0
msgid "Total Time"
msgstr ""
#. module: scrum
#: model:ir.ui.menu,name:scrum.next_id_67
msgid "Scrum"
msgstr ""
#. module: scrum
#: field:scrum.project,planned_hours:0
msgid "Planned Time"
msgstr ""
#. module: scrum
#: field:scrum.meeting,question_today:0
msgid "Tasks for today"
msgstr ""
#. module: scrum
#: field:scrum.meeting,question_yesterday:0
msgid "Tasks since yesterday"
msgstr ""
#. module: scrum
#: field:scrum.project,date_start:0
#: field:scrum.sprint,date_start:0
#: field:scrum.task,date_start:0
msgid "Starting Date"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_scrum_project_tree
#: model:ir.ui.menu,name:scrum.menu_action_scrum_project_tree
msgid "Projects"
msgstr ""
#. module: scrum
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: scrum
#: field:scrum.task,history:0
msgid "Task Details"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.dblc_proj2
msgid "View project's tasks"
msgstr ""
#. module: scrum
#: field:scrum.task,delay_hours:0
msgid "Delay Hours"
msgstr ""
#. module: scrum
#: field:scrum.project,contact_id:0
msgid "Contact"
msgstr ""
#. module: scrum
#: field:scrum.project,tasks:0
msgid "Scrum Tasks"
msgstr ""
#. module: scrum
#: field:scrum.meeting,date:0
msgid "Meeting Date"
msgstr ""
#. module: scrum
#: view:scrum.product.backlog:0
msgid "Tasks"
msgstr ""
#. module: scrum
#: view:scrum.sprint:0
msgid "Retrospective"
msgstr ""
#. module: scrum
#: wizard_view:scrum.product.backlog.task.create,init:0
#: wizard_button:scrum.product.backlog.task.create,init,create:0
msgid "Create Tasks"
msgstr ""
#. module: scrum
#: field:scrum.task,progress:0
msgid "Progress (%)"
msgstr ""
#. module: scrum
#: help:scrum.task,progress:0
msgid "Computed as: Time Spent / Total Time."
msgstr ""
#. module: scrum
#: field:scrum.project,scrum:0
#: field:scrum.task,scrum:0
msgid "Is Scrum"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_product_backlog_form_draft
#: model:ir.ui.menu,name:scrum.menu_action_product_backlog_form_draft
msgid "Draft Backlogs"
msgstr ""
#. module: scrum
#: field:scrum.sprint,backlog_ids:0
msgid "Sprint Backlog"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task6
#: model:ir.ui.menu,name:scrum.menu_action_view_task6
msgid "Opened tasks"
msgstr ""
#. module: scrum
#: field:scrum.meeting,question_blocks:0
msgid "Blocks encountered"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
msgid "Optionnal Info"
msgstr ""
#. module: scrum
#: help:scrum.project,total_hours:0
msgid "Sum of total hours of all tasks related to this project."
msgstr ""
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_sprint
#: view:scrum.meeting:0
#: view:scrum.sprint:0
msgid "Scrum Sprint"
msgstr ""
#. module: scrum
#: view:scrum.sprint:0
msgid "Review"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree7
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree7
msgid "My opened sprints (Scrum Master)"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,note:0
msgid "Note"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,state:0
#: selection:scrum.sprint,state:0
#: selection:scrum.task,state:0
msgid "Draft"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
msgid "Low"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task5
#: model:ir.ui.menu,name:scrum.menu_tasks_yours
msgid "My opened tasks"
msgstr ""
#. module: scrum
#: field:scrum.project,manager:0
msgid "Project Manager"
msgstr ""
#. module: scrum
#: selection:scrum.project,state:0
#: selection:scrum.task,state:0
msgid "Pending"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
msgid "Is there anything blocking you ?"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,state:0
#: field:scrum.sprint,state:0
#: field:scrum.task,state:0
msgid "Status"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree
msgid "Opened Sprints"
msgstr ""
#. module: scrum
#: field:scrum.project,effective_hours:0
msgid "Time Spent"
msgstr ""
#. module: scrum
#: field:scrum.project,complete_name:0
#: field:scrum.project,name:0
msgid "Project Name"
msgstr ""
#. module: scrum
#: field:scrum.project,product_owner_id:0
#: field:scrum.sprint,product_owner_id:0
msgid "Product Owner"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree5
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree5
msgid "My Sprints (Scrum Master)"
msgstr ""
#. module: scrum
#: model:process.node,name:scrum.process_node_productbacklog0
#: view:scrum.product.backlog:0
msgid "Product backlog"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_product_backlog_form
#: model:ir.ui.menu,name:scrum.menu_action_product_backlog_form
msgid "Backlogs"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,user_id:0
msgid "User"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,active:0
#: field:scrum.project,active:0
#: field:scrum.task,active:0
msgid "Active"
msgstr ""
#. module: scrum
#: help:scrum.task,delay_hours:0
msgid "Computed as: Total Time - Estimated Time. It gives the difference of the time estimated by the project manager and the real time to close the task."
msgstr ""
#. module: scrum
#: field:scrum.task,timebox_id:0
msgid "Timebox"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree2
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree2
msgid "Draft Sprints"
msgstr ""
#. module: scrum
#: field:scrum.project,timesheet_id:0
msgid "Working Time"
msgstr ""
#. module: scrum
#: field:scrum.task,work_ids:0
msgid "Work done"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_backlog_open
msgid "View sprint backlog"
msgstr ""
#. module: scrum
#: field:scrum.task,delegated_user_id:0
msgid "Delegated To"
msgstr ""
#. module: scrum
#: field:scrum.task,date_close:0
msgid "Date Closed"
msgstr ""
#. module: scrum
#: field:scrum.task,user_id:0
msgid "Assigned to"
msgstr ""
#. module: scrum
#: field:scrum.meeting,question_backlog:0
msgid "Backlog Accurate"
msgstr ""
#. module: scrum
#: help:scrum.project,effective_hours:0
msgid "Sum of spent hours of all tasks related to this project."
msgstr ""
#. module: scrum
#: help:scrum.task,project_id:0
msgid "If you have [?] in the project name, it means there are no analytic account linked to this project."
msgstr ""
#. module: scrum
#: help:scrum.project,planned_hours:0
msgid "Sum of planned hours of all tasks related to this project."
msgstr ""
#. module: scrum
#: field:scrum.project,warn_customer:0
msgid "Warn Partner"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree4
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree4
msgid "My Sprints (Product Owner)"
msgstr ""
#. module: scrum
#: field:scrum.task,name:0
msgid "Task summary"
msgstr ""
#. module: scrum
#: help:scrum.project,category_id:0
msgid "Link this project to an analytic account if you need financial management on projects. It enables you to connect projects with budgets, planning, cost and revenue analysis, timesheets on projects, etc."
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,state:0
#: selection:scrum.project,state:0
#: selection:scrum.sprint,state:0
#: selection:scrum.task,state:0
msgid "Done"
msgstr ""
#. module: scrum
#: wizard_button:scrum.product.backlog.task.create,init,end:0
msgid "Cancel"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,state:0
#: selection:scrum.sprint,state:0
msgid "Open"
msgstr ""
#. module: scrum
#: view:scrum.product.backlog:0
#: field:scrum.product.backlog,effective_hours:0
#: view:scrum.project:0
#: view:scrum.sprint:0
#: field:scrum.sprint,effective_hours:0
msgid "Effective hours"
msgstr ""
#. module: scrum
#: field:scrum.project,warn_manager:0
msgid "Warn Manager"
msgstr ""
#. module: scrum
#: selection:scrum.task,state:0
msgid "In Progress"
msgstr ""
#. module: scrum
#: field:scrum.sprint,review:0
msgid "Sprint Review"
msgstr ""
#. module: scrum
#: constraint:ir.model:0
msgid "The Object name must start with x_ and not contain any special character !"
msgstr ""
#. module: scrum
#: field:scrum.task,remaining_hours:0
msgid "Remaining Hours"
msgstr ""
#. module: scrum
#: field:scrum.task,parent_id:0
msgid "Parent Task"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,name:0
msgid "Feature"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
msgid "Very Low"
msgstr ""
#. module: scrum
#: help:scrum.project,timesheet_id:0
msgid "Timetable working hours to adjust the gantt diagram report"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree3
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree3
msgid "Sprints Done"
msgstr ""
#. module: scrum
#: model:process.transition,name:scrum.process_transition_backlogtask0
msgid "Backlog Task"
msgstr ""
#. module: scrum
#: view:scrum.product.backlog:0
#: view:scrum.project:0
#: view:scrum.sprint:0
msgid "Planned hours"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_scrum_project_form
#: model:ir.ui.menu,name:scrum.menu_action_scrum_project_form
msgid "Edit Projects"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_meeting_form
#: model:ir.model,name:scrum.model_scrum_meeting
#: model:ir.ui.menu,name:scrum.menu_action_meeting_form
#: view:scrum.meeting:0
msgid "Scrum Meeting"
msgstr ""
#. module: scrum
#: field:scrum.task,description:0
msgid "Description"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
msgid "Urgent"
msgstr ""
#. module: scrum
#: view:scrum.sprint:0
msgid "Daily Meetings"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
msgid "What are you working on today ?"
msgstr ""
#. module: scrum
#: selection:scrum.project,state:0
msgid "Running"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,progress:0
#: field:scrum.sprint,progress:0
msgid "Progress (0-100)"
msgstr ""
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_team
msgid "Scrum Team"
msgstr ""
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_project
#: field:scrum.product.backlog,project_id:0
msgid "Scrum Project"
msgstr ""
#. module: scrum
#: field:scrum.project,parent_id:0
msgid "Parent project"
msgstr ""
#. module: scrum
#: view:scrum.sprint:0
msgid "Sprint Info"
msgstr ""
#. module: scrum
#: field:scrum.sprint,scrum_master_id:0
msgid "Scrum Master"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,tasks_id:0
msgid "Tasks Details"
msgstr ""
#. module: scrum
#: field:scrum.task,effective_hours:0
msgid "Hours Spent"
msgstr ""
#. module: scrum
#: field:scrum.task,context_id:0
msgid "Context"
msgstr ""
#. module: scrum
#: field:scrum.task,total_hours:0
msgid "Total Hours"
msgstr ""
#. module: scrum
#: field:scrum.team,users_id:0
msgid "Users"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,sequence:0
#: field:scrum.project,priority:0
#: field:scrum.task,sequence:0
msgid "Sequence"
msgstr ""
#. module: scrum
#: help:scrum.project,warn_footer:0
msgid "Footer added at the beginning of the email for the warning message sent to the customer when a task is closed."
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_product_backlog_form_open
#: model:ir.ui.menu,name:scrum.menu_action_product_backlog_form_open
msgid "Opened Backlogs"
msgstr ""
#. module: scrum
#: model:ir.actions.wizard,name:scrum.wizard_scrum_backlog_task
msgid "Created tasks"
msgstr ""
#. module: scrum
#: constraint:scrum.project:0
msgid "Error ! You can not create recursive projects."
msgstr ""
#. module: scrum
#: wizard_field:scrum.product.backlog.task.create,init,user_id:0
msgid "Assign To"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_form
#: model:ir.ui.menu,name:scrum.menu_action_sprint_form
#: field:scrum.meeting,sprint_id:0
#: field:scrum.product.backlog,sprint_id:0
msgid "Sprint"
msgstr ""
#. module: scrum
#: field:scrum.project,date_end:0
msgid "Expected End"
msgstr ""
#. module: scrum
#: field:scrum.project,warn_footer:0
msgid "Mail Footer"
msgstr ""

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * scrum
# * project_scrum
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-04-10 09:37+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
@ -16,624 +16,622 @@ msgstr ""
"X-Launchpad-Export-Date: 2010-06-22 03:57+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: scrum
#: view:scrum.product.backlog:0
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Scrum Product backlog"
msgstr ""
#. module: scrum
#: field:scrum.meeting,name:0
#. module: project_scrum
#: field:project.scrum.meeting,name:0
msgid "Meeting Name"
msgstr ""
#. module: scrum
#: model:process.transition,note:scrum.process_transition_backlogtask0
#. module: project_scrum
#: model:process.transition,note:project_scrum.process_transition_backlogtask0
msgid "From backlog create task."
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task4
#: model:ir.ui.menu,name:scrum.menu_action_view_task4
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_view_task4
#: model:ir.ui.menu,name:project_scrum.menu_action_view_task4
msgid "My tasks"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree6
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree6
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_open_tree6
#: model:ir.ui.menu,name:project_scrum.menu_action_sprint_open_tree6
msgid "My opened sprints (Product Owner)"
msgstr ""
#. module: scrum
#: model:process.node,note:scrum.process_node_productbacklog0
#. module: project_scrum
#: model:process.node,note:project_scrum.process_node_productbacklog0
msgid "Create task from backlogs"
msgstr ""
#. module: scrum
#. module: project_scrum
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
#. module: scrum
#: model:ir.module.module,shortdesc:scrum.module_meta_information
#. module: project_scrum
#: model:ir.module.module,shortdesc:project_scrum.module_meta_information
msgid "Scrum, Agile Development Method"
msgstr ""
#. module: scrum
#: field:scrum.project,progress_rate:0
#. module: project_scrum
#: field:project.scrum.project,progress_rate:0
msgid "Progress"
msgstr ""
#. module: scrum
#: help:scrum.task,remaining_hours:0
#. module: project_scrum
#: help:project.scrum.task,remaining_hours:0
msgid ""
"Total remaining time, can be re-estimated periodically by the assignee of "
"the task."
msgstr ""
#. module: scrum
#: field:scrum.project,child_id:0
#. module: project_scrum
#: field:project.scrum.project,child_id:0
msgid "Subproject"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
#. module: project_scrum
#: view:project.scrum.meeting:0
msgid "What have you accomplished since yesterday ?"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
#. module: project_scrum
#: view:project.scrum.meeting:0
msgid "Are your Sprint Backlog estimate accurate ?"
msgstr ""
#. module: scrum
#: field:scrum.project,members:0
#. module: project_scrum
#: field:project.scrum.project,members:0
msgid "Project Members"
msgstr ""
#. module: scrum
#: view:scrum.project:0
#. module: project_scrum
#: view:project.scrum.project:0
msgid "Scrum Projects"
msgstr ""
#. module: scrum
#: field:scrum.task,child_ids:0
#. module: project_scrum
#: field:project.scrum.task,child_ids:0
msgid "Delegated Tasks"
msgstr ""
#. module: scrum
#: help:scrum.project,warn_header:0
#. module: project_scrum
#: help:project.scrum.project,warn_header:0
msgid ""
"Header added at the beginning of the email for the warning message sent to "
"the customer when a task is closed."
msgstr ""
#. module: scrum
#: field:scrum.task,priority:0
#. module: project_scrum
#: field:project.scrum.task,priority:0
msgid "Importance"
msgstr ""
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_task
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_scrum_task
msgid "Scrum Task"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.dblc_proj
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.dblc_proj
msgid "View project's backlog"
msgstr ""
#. module: scrum
#: help:scrum.project,members:0
#. module: project_scrum
#: help:project.scrum.project,members:0
msgid ""
"Project's member. Not used in any computation, just for information purpose."
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
#. module: project_scrum
#: selection:project.scrum.product.backlog,priority:0
#: selection:project.scrum.task,priority:0
msgid "Very urgent"
msgstr ""
#. module: scrum
#: field:scrum.sprint,retrospective:0
#. module: project_scrum
#: field:project.scrum.sprint,retrospective:0
msgid "Sprint Retrospective"
msgstr ""
#. module: scrum
#: field:scrum.sprint,name:0
#. module: project_scrum
#: field:project.scrum.sprint,name:0
msgid "Sprint Name"
msgstr ""
#. module: scrum
#: help:scrum.task,planned_hours:0
#. module: project_scrum
#: help:project.scrum.task,planned_hours:0
msgid ""
"Estimated time to do the task, usually set by the project manager when the "
"task is in draft state."
msgstr ""
#. module: scrum
#: field:scrum.project,notes:0
#: field:scrum.task,notes:0
#. module: project_scrum
#: field:project.scrum.project,notes:0
#: field:project.scrum.task,notes:0
msgid "Notes"
msgstr "Anteckningar"
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_product_backlog
#: field:scrum.task,product_backlog_id:0
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_scrum_product_backlog
#: field:project.scrum.task,product_backlog_id:0
msgid "Product Backlog"
msgstr ""
#. module: scrum
#: field:scrum.sprint,project_id:0
#: field:scrum.task,project_id:0
#. module: project_scrum
#: field:project.scrum.sprint,project_id:0
#: field:project.scrum.task,project_id:0
msgid "Project"
msgstr "Projekt"
#. module: scrum
#: help:scrum.project,warn_manager:0
#. module: project_scrum
#: help:project.scrum.project,warn_manager:0
msgid ""
"If you check this field, the project manager will receive a request each "
"time a task is completed by his team."
msgstr ""
#. module: scrum
#: selection:scrum.project,state:0
#: selection:scrum.task,state:0
#. module: project_scrum
#: selection:project.scrum.project,state:0
#: selection:project.scrum.task,state:0
msgid "Cancelled"
msgstr ""
#. module: scrum
#: field:scrum.team,name:0
#. module: project_scrum
#: field:project.scrum.team,name:0
msgid "Team Name"
msgstr ""
#. module: scrum
#: field:scrum.project,warn_header:0
#. module: project_scrum
#: field:project.scrum.project,warn_header:0
msgid "Mail Header"
msgstr ""
#. module: scrum
#: field:scrum.project,sprint_size:0
#. module: project_scrum
#: field:project.scrum.project,sprint_size:0
msgid "Sprint Days"
msgstr ""
#. module: scrum
#: field:scrum.sprint,date_stop:0
#. module: project_scrum
#: field:project.scrum.sprint,date_stop:0
msgid "Ending Date"
msgstr ""
#. module: scrum
#: help:scrum.task,effective_hours:0
#. module: project_scrum
#: help:project.scrum.task,effective_hours:0
msgid "Computed using the sum of the task work done."
msgstr ""
#. module: scrum
#: help:scrum.project,warn_customer:0
#. module: project_scrum
#: help:project.scrum.project,warn_customer:0
msgid ""
"If you check this, the user will have a popup when closing a task that "
"propose a message to send by email to the customer."
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_task_open
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_task_open
msgid "View sprint Tasks"
msgstr ""
#. module: scrum
#: field:scrum.project,category_id:0
#. module: project_scrum
#: field:project.scrum.project,category_id:0
msgid "Analytic Account"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task
#: model:ir.ui.menu,name:scrum.menu_action_view_task
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_view_task
#: model:ir.ui.menu,name:project_scrum.menu_action_view_task
msgid "All Tasks"
msgstr "Alla uppgifter"
#. module: scrum
#: field:scrum.task,date_deadline:0
#. module: project_scrum
#: field:project.scrum.task,date_deadline:0
msgid "Deadline"
msgstr ""
#. module: scrum
#: field:scrum.project,partner_id:0
#: field:scrum.task,partner_id:0
#. module: project_scrum
#: field:project.scrum.project,partner_id:0
#: field:project.scrum.task,partner_id:0
msgid "Partner"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,planned_hours:0
#: field:scrum.sprint,planned_hours:0
#: field:scrum.task,planned_hours:0
#. module: project_scrum
#: field:project.scrum.product.backlog,planned_hours:0
#: field:project.scrum.sprint,planned_hours:0
#: field:project.scrum.task,planned_hours:0
msgid "Planned Hours"
msgstr ""
#. module: scrum
#: selection:scrum.project,state:0
#. module: project_scrum
#: selection:project.scrum.project,state:0
msgid "Template"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,priority:0
#. module: project_scrum
#: field:project.scrum.product.backlog,priority:0
msgid "Priority"
msgstr "Prioritet"
#. module: scrum
#: field:scrum.project,state:0
#: view:scrum.sprint:0
#. module: project_scrum
#: field:project.scrum.project,state:0
#: view:project.scrum.sprint:0
msgid "State"
msgstr "Status"
#. module: scrum
#: help:scrum.project,progress_rate:0
#. module: project_scrum
#: help:project.scrum.project,progress_rate:0
msgid "Percent of tasks closed according to the total of tasks todo."
msgstr ""
#. module: scrum
#: help:scrum.project,notes:0
#. module: project_scrum
#: help:project.scrum.project,notes:0
msgid "Internal description of the project."
msgstr ""
#. module: scrum
#: field:scrum.sprint,meetings_id:0
#. module: project_scrum
#: field:project.scrum.sprint,meetings_id:0
msgid "Daily Scrum"
msgstr ""
#. module: scrum
#: help:scrum.task,total_hours:0
#. module: project_scrum
#: help:project.scrum.task,total_hours:0
msgid "Computed as: Time Spent + Remaining Time."
msgstr ""
#. module: scrum
#: field:scrum.task,type:0
#. module: project_scrum
#: field:project.scrum.task,type:0
msgid "Type"
msgstr "Typ"
#. module: scrum
#: view:scrum.project:0
#. module: project_scrum
#: view:project.scrum.project:0
msgid "Scrum Data"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
#. module: project_scrum
#: selection:project.scrum.product.backlog,priority:0
#: selection:project.scrum.task,priority:0
msgid "Medium"
msgstr ""
#. module: scrum
#: field:scrum.project,total_hours:0
#. module: project_scrum
#: field:project.scrum.project,total_hours:0
msgid "Total Time"
msgstr ""
#. module: scrum
#: model:ir.ui.menu,name:scrum.next_id_67
#. module: project_scrum
#: model:ir.ui.menu,name:project_scrum.next_id_67
msgid "Scrum"
msgstr ""
#. module: scrum
#: field:scrum.project,planned_hours:0
#. module: project_scrum
#: field:project.scrum.project,planned_hours:0
msgid "Planned Time"
msgstr ""
#. module: scrum
#: field:scrum.meeting,question_today:0
#. module: project_scrum
#: field:project.scrum.meeting,question_today:0
msgid "Tasks for today"
msgstr ""
#. module: scrum
#: field:scrum.meeting,question_yesterday:0
#. module: project_scrum
#: field:project.scrum.meeting,question_yesterday:0
msgid "Tasks since yesterday"
msgstr ""
#. module: scrum
#: field:scrum.project,date_start:0
#: field:scrum.sprint,date_start:0
#: field:scrum.task,date_start:0
#. module: project_scrum
#: field:project.scrum.project,date_start:0
#: field:project.scrum.sprint,date_start:0
#: field:project.scrum.task,date_start:0
msgid "Starting Date"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_scrum_project_tree
#: model:ir.ui.menu,name:scrum.menu_action_scrum_project_tree
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_scrum_project_tree
#: model:ir.ui.menu,name:project_scrum.menu_action_scrum_project_tree
msgid "Projects"
msgstr ""
#. module: scrum
#. module: project_scrum
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: scrum
#: field:scrum.task,history:0
#. module: project_scrum
#: field:project.scrum.task,history:0
msgid "Task Details"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.dblc_proj2
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.dblc_proj2
msgid "View project's tasks"
msgstr ""
#. module: scrum
#: field:scrum.task,delay_hours:0
#. module: project_scrum
#: field:project.scrum.task,delay_hours:0
msgid "Delay Hours"
msgstr ""
#. module: scrum
#: field:scrum.project,contact_id:0
#. module: project_scrum
#: field:project.scrum.project,contact_id:0
msgid "Contact"
msgstr "Kontakt"
#. module: scrum
#: field:scrum.project,tasks:0
#. module: project_scrum
#: field:project.scrum.project,tasks:0
msgid "Scrum Tasks"
msgstr ""
#. module: scrum
#: field:scrum.meeting,date:0
#. module: project_scrum
#: field:project.scrum.meeting,date:0
msgid "Meeting Date"
msgstr ""
#. module: scrum
#: view:scrum.product.backlog:0
#. module: project_scrum
#: view:project.scrum.product.backlog:0
msgid "Tasks"
msgstr "Uppgifter"
#. module: scrum
#: view:scrum.sprint:0
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Retrospective"
msgstr ""
#. module: scrum
#: wizard_view:scrum.product.backlog.task.create,init:0
#: wizard_button:scrum.product.backlog.task.create,init,create:0
#. module: project_scrum
#: wizard_view:project.scrum.product.backlog.task.create,init:0
#: wizard_button:project.scrum.product.backlog.task.create,init,create:0
msgid "Create Tasks"
msgstr ""
#. module: scrum
#: field:scrum.task,progress:0
#. module: project_scrum
#: field:project.scrum.task,progress:0
msgid "Progress (%)"
msgstr ""
#. module: scrum
#: help:scrum.task,progress:0
#. module: project_scrum
#: help:project.scrum.task,progress:0
msgid "Computed as: Time Spent / Total Time."
msgstr ""
#. module: scrum
#: field:scrum.project,scrum:0
#: field:scrum.task,scrum:0
#. module: project_scrum
#: field:project.scrum.project,scrum:0
#: field:project.scrum.task,scrum:0
msgid "Is Scrum"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_product_backlog_form_draft
#: model:ir.ui.menu,name:scrum.menu_action_product_backlog_form_draft
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_product_backlog_form_draft
#: model:ir.ui.menu,name:project_scrum.menu_action_product_backlog_form_draft
msgid "Draft Backlogs"
msgstr ""
#. module: scrum
#: field:scrum.sprint,backlog_ids:0
#. module: project_scrum
#: field:project.scrum.sprint,backlog_ids:0
msgid "Sprint Backlog"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task6
#: model:ir.ui.menu,name:scrum.menu_action_view_task6
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_view_task6
#: model:ir.ui.menu,name:project_scrum.menu_action_view_task6
msgid "Opened tasks"
msgstr ""
#. module: scrum
#: field:scrum.meeting,question_blocks:0
#. module: project_scrum
#: field:project.scrum.meeting,question_blocks:0
msgid "Blocks encountered"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
#. module: project_scrum
#: view:project.scrum.meeting:0
msgid "Optionnal Info"
msgstr ""
#. module: scrum
#: help:scrum.project,total_hours:0
#. module: project_scrum
#: help:project.scrum.project,total_hours:0
msgid "Sum of total hours of all tasks related to this project."
msgstr ""
#. module: scrum
#: model:ir.model,name:scrum.model_scrum_sprint
#: view:scrum.meeting:0
#: view:scrum.sprint:0
#. module: project_scrum
#: model:ir.model,name:project_scrum.model_scrum_sprint
#: view:project.scrum.meeting:0
#: view:project.scrum.sprint:0
msgid "Scrum Sprint"
msgstr ""
#. module: scrum
#: view:scrum.sprint:0
#. module: project_scrum
#: view:project.scrum.sprint:0
msgid "Review"
msgstr "Granska"
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree7
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree7
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_open_tree7
#: model:ir.ui.menu,name:project_scrum.menu_action_sprint_open_tree7
msgid "My opened sprints (Scrum Master)"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,note:0
#. module: project_scrum
#: field:project.scrum.product.backlog,note:0
msgid "Note"
msgstr "Anteckning"
#. module: scrum
#: selection:scrum.product.backlog,state:0
#: selection:scrum.sprint,state:0
#: selection:scrum.task,state:0
#. module: project_scrum
#: selection:project.scrum.product.backlog,state:0
#: selection:project.scrum.sprint,state:0
#: selection:project.scrum.task,state:0
msgid "Draft"
msgstr ""
#. module: scrum
#: selection:scrum.product.backlog,priority:0
#: selection:scrum.task,priority:0
#. module: project_scrum
#: selection:project.scrum.product.backlog,priority:0
#: selection:project.scrum.task,priority:0
msgid "Low"
msgstr "Låg"
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_view_task5
#: model:ir.ui.menu,name:scrum.menu_tasks_yours
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_view_task5
#: model:ir.ui.menu,name:project_scrum.menu_tasks_yours
msgid "My opened tasks"
msgstr ""
#. module: scrum
#: field:scrum.project,manager:0
#. module: project_scrum
#: field:project.scrum.project,manager:0
msgid "Project Manager"
msgstr ""
#. module: scrum
#: selection:scrum.project,state:0
#: selection:scrum.task,state:0
#. module: project_scrum
#: selection:project.scrum.project,state:0
#: selection:project.scrum.task,state:0
msgid "Pending"
msgstr ""
#. module: scrum
#: view:scrum.meeting:0
#. module: project_scrum
#: view:project.scrum.meeting:0
msgid "Is there anything blocking you ?"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,state:0
#: field:scrum.sprint,state:0
#: field:scrum.task,state:0
#. module: project_scrum
#: field:project.scrum.product.backlog,state:0
#: field:project.scrum.sprint,state:0
#: field:project.scrum.task,state:0
msgid "Status"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_open_tree
#: model:ir.ui.menu,name:project_scrum.menu_action_sprint_open_tree
msgid "Opened Sprints"
msgstr ""
#. module: scrum
#: field:scrum.project,effective_hours:0
#. module: project_scrum
#: field:project.scrum.project,effective_hours:0
msgid "Time Spent"
msgstr ""
#. module: scrum
#: field:scrum.project,complete_name:0
#: field:scrum.project,name:0
#. module: project_scrum
#: field:project.scrum.project,complete_name:0
#: field:project.scrum.project,name:0
msgid "Project Name"
msgstr ""
#. module: scrum
#: field:scrum.project,product_owner_id:0
#: field:scrum.sprint,product_owner_id:0
#. module: project_scrum
#: field:project.scrum.project,product_owner_id:0
#: field:project.scrum.sprint,product_owner_id:0
msgid "Product Owner"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree5
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree5
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_open_tree5
#: model:ir.ui.menu,name:project_scrum.menu_action_sprint_open_tree5
msgid "My Sprints (Scrum Master)"
msgstr ""
#. module: scrum
#: model:process.node,name:scrum.process_node_productbacklog0
#: view:scrum.product.backlog:0
#. module: project_scrum
#: model:process.node,name:project_scrum.process_node_productbacklog0
#: view:project.scrum.product.backlog:0
msgid "Product backlog"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_product_backlog_form
#: model:ir.ui.menu,name:scrum.menu_action_product_backlog_form
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_product_backlog_form
#: model:ir.ui.menu,name:project_scrum.menu_action_product_backlog_form
msgid "Backlogs"
msgstr ""
#. module: scrum
#: field:scrum.product.backlog,user_id:0
#. module: project_scrum
#: field:project.scrum.product.backlog,user_id:0
msgid "User"
msgstr "Användare"
#. module: scrum
#: field:scrum.product.backlog,active:0
#: field:scrum.project,active:0
#: field:scrum.task,active:0
#. module: project_scrum
#: field:project.scrum.product.backlog,active:0
#: field:project.scrum.project,active:0
#: field:project.scrum.task,active:0
msgid "Active"
msgstr "Aktiv"
#. module: scrum
#: help:scrum.task,delay_hours:0
#. module: project_scrum
#: help:project.scrum.task,delay_hours:0
msgid ""
"Computed as: Total Time - Estimated Time. It gives the difference of the "
"time estimated by the project manager and the real time to close the task."
msgstr ""
#. module: scrum
#: field:scrum.task,timebox_id:0
#. module: project_scrum
#: field:project.scrum.task,timebox_id:0
msgid "Timebox"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree2
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree2
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_open_tree2
#: model:ir.ui.menu,name:project_scrum.menu_action_sprint_open_tree2
msgid "Draft Sprints"
msgstr ""
#. module: scrum
#: field:scrum.project,timesheet_id:0
#. module: project_scrum
#: field:project.scrum.project,timesheet_id:0
msgid "Working Time"
msgstr ""
#. module: scrum
#: field:scrum.task,work_ids:0
#. module: project_scrum
#: field:project.scrum.task,work_ids:0
msgid "Work done"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_backlog_open
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_backlog_open
msgid "View sprint backlog"
msgstr ""
#. module: scrum
#: field:scrum.task,delegated_user_id:0
#. module: project_scrum
#: field:project.scrum.task,delegated_user_id:0
msgid "Delegated To"
msgstr ""
#. module: scrum
#: field:scrum.task,date_close:0
#. module: project_scrum
#: field:project.scrum.task,date_close:0
msgid "Date Closed"
msgstr ""
#. module: scrum
#: field:scrum.task,user_id:0
#. module: project_scrum
#: field:project.scrum.task,user_id:0
msgid "Assigned to"
msgstr "Tilldelad till"
#. module: scrum
#: field:scrum.meeting,question_backlog:0
#. module: project_scrum
#: field:project.scrum.meeting,question_backlog:0
msgid "Backlog Accurate"
msgstr ""
#. module: scrum
#: help:scrum.project,effective_hours:0
#. module: project_scrum
#: help:project.scrum.project,effective_hours:0
msgid "Sum of spent hours of all tasks related to this project."
msgstr ""
#. module: scrum
#: help:scrum.task,project_id:0
#. module: project_scrum
#: help:project.scrum.task,project_id:0
msgid ""
"If you have [?] in the project name, it means there are no analytic account "
"linked to this project."
msgstr ""
#. module: scrum
#: help:scrum.project,planned_hours:0
#. module: project_scrum
#: help:project.scrum.project,planned_hours:0
msgid "Sum of planned hours of all tasks related to this project."
msgstr ""
#. module: scrum
#: field:scrum.project,warn_customer:0
#. module: project_scrum
#: field:project.scrum.project,warn_customer:0
msgid "Warn Partner"
msgstr ""
#. module: scrum
#: model:ir.actions.act_window,name:scrum.action_sprint_open_tree4
#: model:ir.ui.menu,name:scrum.menu_action_sprint_open_tree4
msgid "My Sprints (Product Owner)"
#. module: project_scrum
#: model:ir.actions.act_window,name:project_scrum.action_sprint_open_tree4msgid "My Sprints (Product Owner)"
msgstr ""
#. module: scrum

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:26+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-14 21:39+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-04 06:32+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"

View File

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:00:38+0000\n"
"PO-Revision-Date: 2009-08-28 16:00:38+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-03-20 10:28+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"

View File

@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-01-30 13:29+0000\n"
"PO-Revision-Date: 2010-07-19 19:07:52+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"

View File

@ -31,7 +31,7 @@ class resource_calendar(osv.osv):
_columns = {
'name' : fields.char("Name", size=64, required=True),
'company_id' : fields.many2one('res.company', 'Company', required=False),
'week_id' : fields.one2many('resource.calendar.week', 'calendar_id', 'Working Time'),
'attendance_ids' : fields.one2many('resource.calendar.attendance', 'calendar_id', 'Working Time'),
'manager' : fields.many2one('res.users', 'Workgroup manager'),
}
_defaults = {
@ -65,7 +65,7 @@ class resource_calendar(osv.osv):
maxrecur = 100
current_hour = dt_from.hour
while (todo>0) and maxrecur:
cr.execute("select hour_from,hour_to from resource_calendar_week where dayofweek='%s' and calendar_id=%s order by hour_from desc", (dt_from.day_of_week,id))
cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from desc", (dt_from.day_of_week,id))
for (hour_from,hour_to) in cr.fetchall():
leave_flag = False
if (hour_from<current_hour) and (todo>0):
@ -101,7 +101,7 @@ class resource_calendar(osv.osv):
maxrecur = 100
current_hour = dt_from.hour
while (todo>0) and maxrecur:
cr.execute("select hour_from,hour_to from resource_calendar_week where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
for (hour_from,hour_to) in cr.fetchall():
leave_flag = False
if (hour_to>current_hour) and (todo>0):
@ -136,7 +136,7 @@ class resource_calendar(osv.osv):
current_hour = dt_from.hour
while (dt_from <= dt_to):
cr.execute("select hour_from,hour_to from resource_calendar_week where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
cr.execute("select hour_from,hour_to from resource_calendar_attendance where dayofweek='%s' and calendar_id=%s order by hour_from", (dt_from.day_of_week,id))
der = cr.fetchall()
for (hour_from,hour_to) in der:
if hours != 0.0:#For first time of the loop only,hours will be 0
@ -169,8 +169,8 @@ class resource_calendar(osv.osv):
resource_calendar()
class resource_calendar_week(osv.osv):
_name = "resource.calendar.week"
class resource_calendar_attendance(osv.osv):
_name = "resource.calendar.attendance"
_description = "Work Detail"
_columns = {
'name' : fields.char("Name", size=64, required=True),
@ -181,7 +181,7 @@ class resource_calendar_week(osv.osv):
'calendar_id' : fields.many2one("resource.calendar", "Resource's Calendar", required=True),
}
_order = 'dayofweek, hour_from'
resource_calendar_week()
resource_calendar_attendance()
class resource_resource(osv.osv):
_name = "resource.resource"

View File

@ -8,70 +8,70 @@
<field name="name">38 Hours/Week</field>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Monday morning</field>
<field name="dayofweek">0</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Monday evening</field>
<field name="dayofweek">0</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Tuesday morning</field>
<field name="dayofweek">1</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Tuesday evening</field>
<field name="dayofweek">1</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Wednesday morning</field>
<field name="dayofweek">2</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Wednesday evening</field>
<field name="dayofweek">2</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Thursday morning</field>
<field name="dayofweek">3</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Thursday evening</field>
<field name="hour_from">13</field>
<field name="hour_to">18</field>
<field name="dayofweek">3</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Friday morning</field>
<field name="dayofweek">4</field>
<field name="hour_from">08</field>
<field name="hour_to">12</field>
<field name="calendar_id" ref="timesheet_group1"/>
</record>
<record model="resource.calendar.week">
<record model="resource.calendar.attendance">
<field name="name">Friday evening</field>
<field name="dayofweek">4</field>
<field name="hour_from">13</field>

View File

@ -106,9 +106,9 @@
<field name="search_view_id" ref="view_resource_calendar_search"/>
</record>
<record id="view_resource_calendar_week_tree" model="ir.ui.view">
<field name="name">resource.calendar.week.tree</field>
<field name="model">resource.calendar.week</field>
<record id="view_resource_calendar_attendance_tree" model="ir.ui.view">
<field name="name">resource.calendar.attendance.tree</field>
<field name="model">resource.calendar.attendance</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Working Time">
@ -119,9 +119,9 @@
</tree>
</field>
</record>
<record id="view_resource_calendar_week_form" model="ir.ui.view">
<field name="name">resource.calendar.week.form</field>
<field name="model">resource.calendar.week</field>
<record id="view_resource_calendar_attendance_form" model="ir.ui.view">
<field name="name">resource.calendar.attendance.form</field>
<field name="model">resource.calendar.attendance</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Working Time">

View File

@ -1,6 +1,6 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_resource_calendar","resource.calendar","model_resource_calendar","base.group_system",1,1,1,1
"access_resource_calendar_week","resource.calendar.week","model_resource_calendar_week","base.group_system",1,1,1,1
"access_resource_calendar_attendance","resource.calendar.attendance","model_resource_calendar_attendance","base.group_system",1,1,1,1
"access_resource_resource","resource.resource","model_resource_resource","base.group_system",1,1,1,1
"access_resource_resource_all","resource.resource all","model_resource_resource",,1,0,0,0
"access_resource_calendar_leaves","resource.calendar.leaves","model_resource_calendar_leaves","base.group_system",1,1,1,1

1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_resource_calendar resource.calendar model_resource_calendar base.group_system 1 1 1 1
3 access_resource_calendar_week access_resource_calendar_attendance resource.calendar.week resource.calendar.attendance model_resource_calendar_week model_resource_calendar_attendance base.group_system 1 1 1 1
4 access_resource_resource resource.resource model_resource_resource base.group_system 1 1 1 1
5 access_resource_resource_all resource.resource all model_resource_resource 1 0 0 0
6 access_resource_calendar_leaves resource.calendar.leaves model_resource_calendar_leaves base.group_system 1 1 1 1

View File

@ -124,6 +124,7 @@
<field name="search_view_id" ref="view_order_product_search"/>
<field name="view_id" ref="view_order_product_tree"/>
<field name="context">{'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}</field>
<field name="help">With Sales Analysis consult your sales total amount suits to different group criteria (salesman, partner, product, etc.)</field>
</record>
<menuitem id="base.next_id_64" name="Reporting" parent="base.menu_base_partner" sequence="11"/>
@ -135,6 +136,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
<field name="context">{'search_default_month':1, 'search_default_group_product':1, 'search_default_group_partner':1, 'search_default_done':1, 'search_default_out': 1, 'group_by':[], 'group_by_no_leaf':1}</field>
<field name="help">Shipments Analysis opens a search views with all your shipments (in and out quantities), their total value, planned and actual dates. You can sort out your analysis on different groups to get fine grained analysis.</field>
</record>
<menuitem action="action_stock_move_report_so" id="menu_action_stock_move_report_so" parent="base.next_id_64" sequence="25"/>

View File

@ -294,6 +294,7 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form,calendar,graph</field>
<field name="search_view_id" ref="view_sales_order_filter"/>
<field name="help">The sale order manages the invoicing, the product fullfilment and the delivery processes. OpenERP can handle products, services and consumables so that a sale order can trigger tasks, manufacturing orders, purchases, etc. It support several invoicing methods according to your configuration: from the sale order, from the pickings, etc.</field>
</record>
<menuitem action="action_order_form" id="menu_sale_order" parent="base.menu_sales" sequence="3"/>
@ -500,6 +501,7 @@
<field name="search_view_id" ref="view_sales_order_uninvoiced_line_filter" />
<field name="context">{"search_default_uninvoiced":1}</field>
<field name="filter" eval="True"/>
<field name="help">Lines to invoice opens a search view with sales order and their status.</field>
</record>
<record id="action_order_line_tree3" model="ir.actions.act_window">

View File

@ -25,10 +25,8 @@
name="product_id"
on_change="product_id_change(product_id,product_uom_qty,product_uom,product_uos_qty,product_uos,name,parent.partner_id, 'lang' in context and context['lang'], True, product_packaging, False)"
/>
<group colspan="2">
<field name="product_uom_qty"/>
<field name="product_uom" nolabel="1"/>
</group>
<field name="product_uom"/>
<group colspan="2" groups="product.group_uos">
<field name="product_uos_qty"/>
<field name="product_uos" nolabel="1"/></group>

Some files were not shown because too many files have changed in this diff Show More