bzr revid: fp@tinyerp.com-20100720071812-an2rapqxivp16xdv
This commit is contained in:
Fabien Pinckaers 2010-07-20 09:18:12 +02:00
commit d4af842b35
131 changed files with 13192 additions and 12266 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

@ -484,7 +484,7 @@
<group col="6" colspan="4">
<field name="name" select="1"/>
<field name="date" select="1"/>
<field name="journal_id" on_change="onchange_journal_id(journal_id)" select="1"/>
<field name="journal_id" domain="[('type', '=', 'bank')]" on_change="onchange_journal_id(journal_id)" select="1"/>
<field name="period_id"/>
<field name="balance_start"/>
<field name="balance_end_real"/>

File diff suppressed because it is too large Load Diff

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

@ -23,18 +23,18 @@
<attribute name="string">Install Generic Modules</attribute>
</separator>
<group colspan="8">
<field name="crm" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/> <field name="sale" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="project" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/> <field name="knowledge" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="stock" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/> <field name="mrp" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="account" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/> <field name="purchase" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="hr" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/> <field name="point_of_sale" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="marketing" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/> <field name="misc_tools" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="report_designer" groups="base.group_extended" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="crm" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/> <field name="sale" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="project" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/> <field name="knowledge" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="stock" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/> <field name="mrp" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="account" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/> <field name="purchase" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="hr" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/> <field name="point_of_sale" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="marketing" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/> <field name="misc_tools" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="report_designer" groups="base.group_extended" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<separator string="Install Specific Business Modules" colspan="4"/>
<field name="association" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="profile_auction" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="profile_bookstore" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="product_expiry" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,profile_association,profile_auction,profile_bookstore)"/>
<field name="association" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="profile_auction" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="profile_bookstore" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
<field name="product_expiry" on_change="onchange_moduleselection(crm,sale,project,knowledge,stock,mrp,account,purchase,hr,point_of_sale,marketing,misc_tools,report_designer,association,profile_auction,profile_bookstore)"/>
</group>
</data>
</field>

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

@ -7,13 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-01-05 05:59+0000\n"
"PO-Revision-Date: 2010-06-28 22:26+0000\n"
"Last-Translator: Borja López Soilán (Pexego) <borjals@pexego.es>\n"
"PO-Revision-Date: 2010-07-18 17:30+0000\n"
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-30 03:34+0000\n"
"X-Launchpad-Export-Date: 2010-07-19 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm
@ -94,9 +95,7 @@ msgstr "Nombre de fase"
#. module: crm
#: view:crm.case:0
#: view:crm.case.history:0
#: model:ir.actions.act_window,name:crm.crm_case_categ0-act
#: model:ir.actions.act_window,name:crm.crm_case_section_open_act
#: model:ir.ui.menu,name:crm.menu_crm_case_categ0-act
#: model:ir.ui.menu,name:crm.next_id_51
msgid "Cases"
msgstr "Casos"
@ -147,9 +146,6 @@ msgstr "Reparado"
#. module: crm
#: code:addons/crm/crm.py:0
#: code:addons/crm/wizard/crm_job_wizard.py:0
#: code:addons/crm/wizard/crm_lead_wizard.py:0
#: code:addons/crm/wizard/crm_phonecall_wizard.py:0
#, python-format
msgid "Warning !"
msgstr "Advertencia !"
@ -206,30 +202,16 @@ msgstr ""
"correo para correo de salida."
#. module: crm
#: view:crm.case:0
#: field:crm.case,partner_id:0
#: model:crm.case.categ,name:crm.categ_lead4
#: model:crm.case.categ,name:crm.categ_oppor4
#: wizard_field:crm.case.opportunity.partner_opportunity,init,partner_id:0
#: field:crm.case.rule,trg_partner_id:0
#: selection:crm.email.add.cc,name:0
#: field:crm.email.add.cc,partner_id:0
#: wizard_field:crm.lead.opportunity_set,create_partner,partner_id:0
#: wizard_field:crm.lead.opportunity_set,opportunity,partner_id:0
#: view:crm.opportunity:0
#: view:crm.phonecall:0
#: wizard_field:crm.phonecall.opportunity_set,create_partner,partner_id:0
#: wizard_field:crm.phonecall.opportunity_set,opportunity,partner_id:0
#: model:process.node,name:crm.process_node_partner0
msgid "Partner"
msgstr "Empresa"
#. module: crm
#: field:crm.case.categ,section_id:0
#: field:crm.case.category2,section_id:0
#: view:crm.case.section:0
#: field:crm.case.section,name:0
#: field:crm.case.stage,section_id:0
#: wizard_field:crm.case.section.menu,init,section_id:0
#: model:ir.model,name:crm.model_crm_case_section
msgid "Case Section"
msgstr "Sección del caso"
@ -284,7 +266,8 @@ msgid "Send New Email"
msgstr "Enviar nuevo correo eléctronico"
#. module: crm
#: view:crm.case.history:0
#: model:ir.actions.act_window,name:crm.crm_case_history_my-act
#: model:ir.ui.menu,name:crm.menu_crm_case_history_my-act
msgid "My Histories"
msgstr "Mis historias"
@ -340,15 +323,10 @@ msgstr "Categorías"
#: code:addons/crm/wizard/wizard_crm_new_send_email.py:0
#, python-format
msgid "Warning!"
msgstr "Advertencia!"
msgstr "¡Aviso!"
#. module: crm
#: view:crm.case:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Dates"
msgstr "Fechas"
@ -430,7 +408,6 @@ msgid "Exception Rules"
msgstr "Reglas de Excepción"
#. module: crm
#: field:crm.menu.config_wizard,opportunity:0
#: model:ir.actions.report.xml,name:crm.crm_business_opportunities_report
msgid "Business Opportunities"
msgstr "Oportunidades de negocio"
@ -484,12 +461,6 @@ msgstr "Particular"
#. module: crm
#: field:crm.case,categ_id:0
#: field:crm.case.rule,trg_categ_id:0
#: wizard_field:crm.job.reschedule_phone_call,init,category_id:0
#: view:crm.opportunity:0
#: wizard_field:crm.opportunity.reschedule_phone_call,init,category_id:0
#: field:report.crm.case.section.categ.categ2,categ_id:0
#: field:report.crm.case.section.categ.stage,categ_id:0
#: field:report.crm.case.section.stage,categ_id:0
msgid "Category"
msgstr "Categoría"
@ -521,11 +492,6 @@ msgstr "%(partner)s = Nombre empresa"
#. module: crm
#: view:crm.case:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Action Information"
msgstr "Información de la acción"
@ -554,15 +520,14 @@ msgstr "Condiciones"
#. module: crm
#: model:ir.actions.act_window,name:crm.crm_case_categ0-act_open
#: model:ir.ui.menu,name:crm.menu_crm_case_categ0-act_open
msgid "Open Cases"
msgstr "Casos abiertos"
#. module: crm
#: field:crm.case.log,name:0
#: view:crm.claim:0
#: view:crm.job:0
#: field:crm.case,state:0
msgid "Status"
msgstr "Posición"
msgstr "Estado"
#. module: crm
#: wizard_view:crm.case.opportunity.partner_opportunity,init:0
@ -592,9 +557,6 @@ msgstr "Árbol de reuniones"
#: view:crm.case:0
#: selection:crm.case.rule,trg_state_from:0
#: selection:crm.case.rule,trg_state_to:0
#: view:crm.fundraising:0
#: view:crm.lead:0
#: view:crm.opportunity:0
#, python-format
msgid "Escalate"
msgstr "Escalado"
@ -712,8 +674,6 @@ msgstr "Política de reclamaciones"
#. module: crm
#: code:addons/crm/crm.py:0
#: code:addons/crm/wizard/wizard_crm_new_send_email.py:0
#: code:addons/crm/wizard/wizard_crm_send_email.py:0
#, python-format
msgid ""
"You must define a responsible user for this case in order to use this action!"
@ -759,11 +719,6 @@ msgstr "Setiembre"
#. module: crm
#: view:crm.case:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Communication history"
msgstr "Historial de comunicación"
@ -1191,10 +1146,8 @@ msgid "Next Action"
msgstr "Próxima acción"
#. module: crm
#: view:crm.case:0
#: field:crm.case,date_deadline:0
#: selection:crm.case.rule,trg_date_type:0
#: view:crm.opportunity:0
msgid "Deadline"
msgstr "Fecha límite"
@ -1371,12 +1324,6 @@ msgstr "%(partner_email)s = Email empresa"
#. module: crm
#: view:crm.case:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
#: view:crm.phonecall:0
msgid "Reset to Draft"
msgstr "Cambiar a borrador"
@ -1589,8 +1536,6 @@ msgstr "Esperando respuesta"
#: field:crm.case,date:0
#: field:crm.case.log,date:0
#: selection:crm.case.rule,trg_date_type:0
#: view:crm.claim:0
#: view:crm.phonecall:0
msgid "Date"
msgstr "Fecha"
@ -1637,11 +1582,6 @@ msgstr "Dando la ubicacion de la reunion"
#. module: crm
#: view:crm.case:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "History"
msgstr "Historial"
@ -1676,40 +1616,18 @@ msgstr "Enviar recordatorio"
#. module: crm
#: view:crm.case:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "References"
msgstr "Referencias"
#. module: crm
#: code:addons/crm/crm.py:0
#: view:crm.case:0
#: wizard_button:crm.case.opportunity.partner_opportunity,init,end:0
#: view:crm.claim:0
#: view:crm.claim.assign_wizard:0
#: view:crm.fundraising:0
#: view:crm.helpdesk.assign_wizard:0
#: wizard_button:crm.job.meeting_set,init,end:0
#: wizard_button:crm.job.partner_create,init,end:0
#: wizard_button:crm.job.reschedule_phone_call,init,end:0
#: view:crm.lead:0
#: wizard_button:crm.lead.opportunity_set,create_partner,end:0
#: wizard_button:crm.lead.opportunity_set,opportunity,end:0
#: wizard_button:crm.lead.partner_create,init,end:0
#: view:crm.meeting.generic_wizard:0
#: wizard_button:crm.new.send.mail,init,end:0
#: view:crm.opportunity:0
#: view:crm.opportunity.assign_wizard:0
#: wizard_button:crm.opportunity.reschedule_phone_call,init,end:0
#: view:crm.phonecall:0
#: view:crm.phonecall.assign_wizard:0
#: wizard_button:crm.phonecall.meeting_set,init,end:0
#: wizard_button:crm.phonecall.opportunity_set,create_partner,end:0
#: wizard_button:crm.phonecall.opportunity_set,opportunity,end:0
#: wizard_button:crm.phonecall.partner_create,init,end:0
#: wizard_button:crm.send.mail,init,end:0
#: selection:crm.case,state:0
#: selection:crm.case.rule,act_state:0
#: selection:crm.case.rule,trg_state_from:0
#: selection:crm.case.rule,trg_state_to:0
#: wizard_button:crm.case.section.menu,design_menu,end:0
#: wizard_button:crm.case.section.menu,init,end:0
#, python-format
msgid "Cancel"
msgstr "Cancelar"
@ -1824,9 +1742,6 @@ msgid "="
msgstr "="
#. module: crm
#: view:crm.fundraising:0
#: view:crm.job:0
#: field:crm.menu.config_wizard,name:0
#: field:crm.segmentation,name:0
msgid "Name"
msgstr "Nombre"
@ -1880,11 +1795,6 @@ msgstr "Seguimiento de errores"
#. module: crm
#: view:crm.case:0
#: view:crm.case.rule:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Actions"
msgstr "Acciones"
@ -2151,17 +2061,12 @@ msgstr "Estado del caso"
#. module: crm
#: code:addons/crm/crm.py:0
#: code:addons/crm/wizard/wizard_crm_new_send_email.py:0
#: code:addons/crm/wizard/wizard_crm_send_email.py:0
#, python-format
msgid "Send"
msgstr "Enviar"
#. module: crm
#: field:crm.case,priority:0
#: view:crm.fundraising:0
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Priority"
msgstr "Prioridad"
@ -2207,11 +2112,6 @@ msgstr "Programar una reunión normal o telefónica"
#. module: crm
#: code:addons/crm/crm.py:0
#: code:addons/crm/crm_claim.py:0
#: code:addons/crm/crm_helpdesk.py:0
#: code:addons/crm/crm_meeting.py:0
#: code:addons/crm/crm_opportunity.py:0
#: code:addons/crm/crm_phonecall.py:0
#, python-format
msgid "Error !"
msgstr "¡Error!"
@ -2461,14 +2361,6 @@ msgstr "Bajo"
#. module: crm
#: field:crm.case,date_closed:0
#: selection:crm.case,state:0
#: selection:crm.case.rule,act_state:0
#: selection:crm.case.rule,trg_state_from:0
#: selection:crm.case.rule,trg_state_to:0
#: selection:report.crm.case.section.categ.categ2,state:0
#: selection:report.crm.case.section.categ.stage,state:0
#: selection:report.crm.case.section.categ2,state:0
#: selection:report.crm.case.section.stage,state:0
msgid "Closed"
msgstr "Cerrado"
@ -2655,8 +2547,7 @@ msgstr ""
"Está seguro de que desea crear una empresa basada en esta solicitud laboral ?"
#. module: crm
#: wizard_field:crm.lead.opportunity_set,create_partner,action:0
#: wizard_field:crm.phonecall.opportunity_set,create_partner,action:0
#: field:crm.case.log,name:0
msgid "Action"
msgstr "Acción"
@ -2704,7 +2595,6 @@ msgstr "Ventas"
#. module: crm
#: view:crm.case:0
#: view:crm.phonecall:0
msgid "General"
msgstr "General"
@ -2751,16 +2641,6 @@ msgstr "Todas las oportunidades"
#: selection:crm.case.rule,act_state:0
#: selection:crm.case.rule,trg_state_from:0
#: selection:crm.case.rule,trg_state_to:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: view:crm.opportunity:0
#: view:crm.phonecall:0
#: selection:report.crm.case.section.categ.categ2,state:0
#: selection:report.crm.case.section.categ.stage,state:0
#: selection:report.crm.case.section.categ2,state:0
#: selection:report.crm.case.section.stage,state:0
#, python-format
msgid "Open"
msgstr "Abierto"
@ -2798,16 +2678,6 @@ msgstr "Asistencia/Ayuda"
#. module: crm
#: field:crm.case,user_id:0
#: field:crm.case.rule,trg_user_id:0
#: view:crm.claim:0
#: field:crm.claim.assign_wizard,user_id:0
#: view:crm.fundraising:0
#: field:crm.helpdesk.assign_wizard,user_id:0
#: view:crm.job:0
#: view:crm.meeting:0
#: field:crm.meeting.generic_wizard,user_id:0
#: view:crm.opportunity:0
#: field:crm.opportunity.assign_wizard,user_id:0
#: field:crm.phonecall.assign_wizard,user_id:0
msgid "Responsible"
msgstr "Responsable"
@ -3050,6 +2920,8 @@ msgid "Jobs Hiring Process"
msgstr "Proceso de selección de personal"
#. module: crm
#: model:ir.actions.act_window,name:crm.crm_case_categ0-act
#: model:ir.ui.menu,name:crm.menu_crm_case_categ0-act
#: model:ir.ui.menu,name:crm.next_id_52
msgid "All Cases"
msgstr "Todos los casos"
@ -3171,7 +3043,6 @@ msgstr ""
#. module: crm
#: code:addons/crm/crm.py:0
#: code:addons/crm/wizard/wizard_cal_subscribe.py:0
#, python-format
msgid "Error!"
msgstr "¡Error!"
@ -3262,17 +3133,6 @@ msgstr "%(case_subject)s = Asunto del caso"
#: field:crm.case,section_id:0
#: field:crm.case.log,section_id:0
#: field:crm.case.rule,trg_section_id:0
#: field:crm.claim.assign_wizard,section_id:0
#: field:crm.helpdesk.assign_wizard,section_id:0
#: wizard_field:crm.job.reschedule_phone_call,init,section_id:0
#: field:crm.meeting.generic_wizard,section_id:0
#: field:crm.opportunity.assign_wizard,section_id:0
#: wizard_field:crm.opportunity.reschedule_phone_call,init,section_id:0
#: field:crm.phonecall.assign_wizard,section_id:0
#: field:report.crm.case.section.categ.categ2,section_id:0
#: field:report.crm.case.section.categ.stage,section_id:0
#: field:report.crm.case.section.categ2,section_id:0
#: field:report.crm.case.section.stage,section_id:0
msgid "Section"
msgstr "Sección"
@ -3303,10 +3163,7 @@ msgid "Your action"
msgstr "Su acción"
#. module: crm
#: model:crm.case.category2,name:crm.category_lead3
#: field:crm.case.history,email:0
#: field:crm.email.add.cc,email:0
#: view:crm.job:0
msgid "Email"
msgstr "Email"
@ -3363,16 +3220,6 @@ msgstr "Informes"
#: selection:crm.case.rule,act_state:0
#: selection:crm.case.rule,trg_state_from:0
#: selection:crm.case.rule,trg_state_to:0
#: view:crm.claim:0
#: view:crm.fundraising:0
#: view:crm.job:0
#: view:crm.lead:0
#: selection:crm.new.send.mail,init,state:0
#: view:crm.opportunity:0
#: selection:report.crm.case.section.categ.categ2,state:0
#: selection:report.crm.case.section.categ.stage,state:0
#: selection:report.crm.case.section.categ2,state:0
#: selection:report.crm.case.section.stage,state:0
#, python-format
msgid "Pending"
msgstr "Pendiente"
@ -3519,9 +3366,23 @@ msgid "All Funds"
msgstr "Todos los fondos"
#. module: crm
#: field:crm.case.section,calendar:0
#: view:crm.meeting:0
#: model:ir.ui.menu,name:crm.menu_crm_case_category_act_meetings
#: selection:crm.case.section.menu,design_menu,menu10_option:0
#: selection:crm.case.section.menu,design_menu,menu11_option:0
#: selection:crm.case.section.menu,design_menu,menu12_option:0
#: selection:crm.case.section.menu,design_menu,menu13_option:0
#: selection:crm.case.section.menu,design_menu,menu14_option:0
#: selection:crm.case.section.menu,design_menu,menu15_option:0
#: selection:crm.case.section.menu,design_menu,menu16_option:0
#: selection:crm.case.section.menu,design_menu,menu17_option:0
#: selection:crm.case.section.menu,design_menu,menu1_option:0
#: selection:crm.case.section.menu,design_menu,menu2_option:0
#: selection:crm.case.section.menu,design_menu,menu3_option:0
#: selection:crm.case.section.menu,design_menu,menu4_option:0
#: selection:crm.case.section.menu,design_menu,menu5_option:0
#: selection:crm.case.section.menu,design_menu,menu6_option:0
#: selection:crm.case.section.menu,design_menu,menu7_option:0
#: selection:crm.case.section.menu,design_menu,menu8_option:0
#: selection:crm.case.section.menu,design_menu,menu9_option:0
msgid "Calendar"
msgstr "Calendario"
@ -3567,6 +3428,7 @@ msgstr "Saliente"
#. module: crm
#: code:addons/crm/crm.py:0
#: view:crm.case:0
#, python-format
msgid "Historize"
msgstr "Añadir al historial"
@ -3594,11 +3456,6 @@ msgstr "Probabilidad de éxito"
#: selection:crm.case.rule,act_state:0
#: selection:crm.case.rule,trg_state_from:0
#: selection:crm.case.rule,trg_state_to:0
#: view:crm.meeting:0
#: selection:report.crm.case.section.categ.categ2,state:0
#: selection:report.crm.case.section.categ.stage,state:0
#: selection:report.crm.case.section.categ2,state:0
#: selection:report.crm.case.section.stage,state:0
#, python-format
msgid "Draft"
msgstr "Borrador"
@ -3628,8 +3485,6 @@ msgstr "Normal"
#. module: crm
#: code:addons/crm/crm.py:0
#: code:addons/crm/wizard/wizard_crm_new_send_email.py:0
#: code:addons/crm/wizard/wizard_crm_send_email.py:0
#, python-format
msgid "You must put a Partner eMail to use this action!"
msgstr "¡Debe indicar un Email de empresa para usar esta acción!"
@ -3772,8 +3627,6 @@ msgstr "Fase del caso"
#. module: crm
#: view:crm.case:0
#: view:crm.fundraising:0
#: view:crm.opportunity:0
msgid "Estimates"
msgstr "Estimaciones"
@ -3785,6 +3638,10 @@ msgstr "Usuario responsable"
#. module: crm
#: code:addons/crm/crm.py:0
#: view:crm.case:0
#: selection:crm.case,state:0
#: selection:crm.case.rule,act_state:0
#: selection:crm.case.rule,trg_state_from:0
#: selection:crm.case.rule,trg_state_to:0
#, python-format
msgid "Close"
msgstr "Cerrado"
@ -3842,14 +3699,9 @@ msgid "% = The '%' Character"
msgstr "% = EL '%' caracter"
#. module: crm
#: view:crm.case:0
#: field:crm.case,name:0
#: field:crm.case.history,description:0
#: field:crm.case.history,note:0
#: view:crm.job:0
#: view:crm.meeting:0
#: view:crm.opportunity:0
#: view:crm.phonecall:0
#: field:crm.segmentation,description:0
msgid "Description"
msgstr "Descripción"
@ -3900,14 +3752,6 @@ msgstr "_Importar"
#. module: crm
#: code:addons/crm/crm.py:0
#: field:crm.case.log,case_id:0
#: field:crm.claim,inherit_case_id:0
#: field:crm.fundraising,inherit_case_id:0
#: field:crm.helpdesk,inherit_case_id:0
#: field:crm.job,inherit_case_id:0
#: field:crm.lead,inherit_case_id:0
#: field:crm.meeting,inherit_case_id:0
#: field:crm.opportunity,inherit_case_id:0
#: field:crm.phonecall,inherit_case_id:0
#: model:ir.model,name:crm.model_crm_case
#: model:res.request.link,name:crm.req_link_case
#, python-format
@ -4031,7 +3875,6 @@ msgstr "Exportar archivo ICS"
#. module: crm
#: field:crm.case.rule,sequence:0
#: field:crm.case.section,sequence:0
#: field:crm.case.stage,sequence:0
msgid "Sequence"
msgstr "Secuencia"
@ -4202,9 +4045,6 @@ msgstr "Boletín de noticias"
#~ msgid "List"
#~ msgstr "Lista"
#~ msgid "Send Partner & Historize"
#~ msgstr "Enviar empresa & Añadir historial"
#~ msgid "All Histories"
#~ msgstr "Todos los historiales"
@ -4217,9 +4057,6 @@ msgstr "Boletín de noticias"
#~ msgid "Mail to watchers (Cc)"
#~ msgstr "Enviar correo a observadores (CC)"
#~ msgid "crm.case.section.open"
#~ msgstr "crm.case.section.open"
#~ msgid "Deadline Date is automatically computed from Start Date + Duration"
#~ msgstr ""
#~ "La fecha límite se calcula automáticamente a partir de Fecha de inicio + "
@ -4233,3 +4070,6 @@ msgstr "Boletín de noticias"
#~ msgstr ""
#~ "Es posible que desee crear un nuevo menú padre para poner todos los menús "
#~ "creados en él."
#~ msgid "Send Partner & Historize"
#~ msgstr "Enviar a empresa y añadir al historial"

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-01-05 05:59+0000\n"
"PO-Revision-Date: 2010-07-18 03:06+0000\n"
"PO-Revision-Date: 2010-07-19 03:12+0000\n"
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-07-18 03:38+0000\n"
"X-Launchpad-Export-Date: 2010-07-19 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm
@ -32,7 +32,7 @@ msgstr "这属性定义了一个循环的日历组件的例外日期/ 时间列
#: help:crm.case.rule,act_mail_to_user:0
msgid ""
"Check this if you want the rule to send an email to the responsible person."
msgstr "如果你想定规则发送电子邮件给负责人选这个"
msgstr "选这个, 如果你想规定发送Email给负责人"
#. module: crm
#: view:crm.meeting:0
@ -42,12 +42,12 @@ msgstr "标题"
#. module: crm
#: model:ir.model,name:crm.model_report_crm_case_section_categ2
msgid "Cases by section and category2"
msgstr "分类2和部分业务个案"
msgstr "分类2和业务个案细项"
#. module: crm
#: wizard_field:crm.lead.partner_create,init,close:0
msgid "Close Lead"
msgstr "关闭线索"
msgstr "关闭营销线索"
#. module: crm
#: view:crm.job:0
@ -60,27 +60,27 @@ msgstr " 7天 "
#. module: crm
#: help:crm.menu.config_wizard,helpdesk:0
msgid "Manages an Helpdesk service."
msgstr "管理求助服务"
msgstr "管理求助服务"
#. module: crm
#: view:crm.job:0
msgid "Pending Jobs"
msgstr "等待的工作"
msgstr "悬而未决的工作"
#. module: crm
#: field:crm.case.rule,trg_state_to:0
msgid "Button Pressed"
msgstr "按下按钮"
msgstr "按下按钮"
#. module: crm
#: view:crm.case:0
msgid "Planned costs"
msgstr "计划成本"
msgstr "计划成本"
#. module: crm
#: wizard_field:crm.job.partner_create,init,close:0
msgid "Close job request"
msgstr "关闭工作求"
msgstr "关闭工作求"
#. module: crm
#: field:crm.case.stage,name:0
@ -100,7 +100,7 @@ msgstr "业务个案"
msgid ""
"The partner category that will be added to partners that match the "
"segmentation criterions after computation."
msgstr "业务伙伴分类将加入到与业务伙伴匹配细分标准后处理"
msgstr "这业务伙伴分类将加入到符合的业务伙伴细分准则"
#. module: crm
#: model:ir.ui.menu,name:crm.menu_hr
@ -110,14 +110,14 @@ msgstr "人力资源"
#. module: crm
#: model:ir.ui.menu,name:crm.menu_action_report_crm_case_oppor_categ_categ2
msgid "Cases by Opportunities, Category and Type"
msgstr "按商机,分类和进程排列案例"
msgstr "业务个案的商机, 分类和类型"
#. module: crm
#: help:crm.menu.config_wizard,claims:0
msgid ""
"Manages the supplier and customers claims, including your corrective or "
"preventive actions."
msgstr "管理客户和供应商的索求,包括您的纠正或预防措施"
msgstr "管理客户和供应商的索赔, 包括您的纠正或预防措施"
#. module: crm
#: view:crm.fundraising:0
@ -145,12 +145,12 @@ msgstr "警告!"
#: code:addons/crm/wizard/wizard_crm_new_send_email.py:0
#, python-format
msgid "Please specify user's email address !"
msgstr "请指定用户的电子邮件地址"
msgstr "请指定用户的Email地址"
#. module: crm
#: model:crm.case.categ,name:crm.categ_oppor5
msgid "Campaign"
msgstr "商业活动"
msgstr "营销活动"
#. module: crm
#: view:crm.opportunity:0
@ -161,7 +161,7 @@ msgstr "搜索商机"
#: model:ir.ui.menu,name:crm.menu_crm_case_section_stage_tree
#: view:report.crm.case.section.stage:0
msgid "Cases by Section and Stage"
msgstr "部分业务个案和阶段"
msgstr "业务个案细项和阶段"
#. module: crm
#: wizard_field:crm.job.meeting_set,init,duration:0
@ -172,7 +172,7 @@ msgstr "持续时间(小时数)"
#. module: crm
#: selection:crm.meeting,transparent:0
msgid "TRANSPARENT"
msgstr ""
msgstr "显然的"
#. module: crm
#: help:crm.case.rule,server_action_id:0
@ -186,7 +186,7 @@ msgstr "动作描述, 例如: 根据哪些条件哪些对象的哪些动作要
msgid ""
"Section to which Case belongs to. Define Responsible user and Email account "
"for mail gateway."
msgstr "业务个案属于哪些部分. 定义责任用户和电子邮件帐号的邮件网关."
msgstr "属于哪个业务个案细项. 定义责任用户和电子邮件帐号的邮件网关."
#. module: crm
#: field:crm.case,partner_id:0
@ -201,7 +201,7 @@ msgstr "业务伙伴"
#: wizard_field:crm.case.section.menu,init,section_id:0
#: model:ir.model,name:crm.model_crm_case_section
msgid "Case Section"
msgstr "业务个案项"
msgstr "业务个案项"
#. module: crm
#: view:crm.job:0
@ -211,7 +211,7 @@ msgstr "建议薪资"
#. module: crm
#: help:crm.case.section,sequence:0
msgid "Gives the sequence order when displaying a list of case sections."
msgstr ""
msgstr "在显示业务个案细项列表时提供序列顺序"
#. module: crm
#: code:addons/crm/wizard/crm_job_wizard.py:0
@ -224,7 +224,7 @@ msgstr "电话呼叫"
#. module: crm
#: model:ir.model,name:crm.model_report_crm_case_section_stage
msgid "Cases by section and stage"
msgstr "业务个案项和阶段"
msgstr "业务个案项和阶段"
#. module: crm
#: field:crm.case.rule,act_mail_to_email:0
@ -249,7 +249,7 @@ msgstr "内容使用的特别关键字"
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Send New Email"
msgstr "发送新电子邮件"
msgstr "发送新Email"
#. module: crm
#: model:ir.actions.act_window,name:crm.crm_case_history_my-act
@ -266,7 +266,7 @@ msgstr "标准"
#: model:ir.actions.act_window,name:crm.crm_case_section_act
#: model:ir.ui.menu,name:crm.menu_crm_case_section_act
msgid "Sections"
msgstr "项"
msgstr "项"
#. module: crm
#: help:crm.menu.config_wizard,opportunity:0
@ -291,7 +291,7 @@ msgstr "鉴识"
#. module: crm
#: model:crm.case.stage,name:crm.stage_job3
msgid "Second Interview"
msgstr "复试"
msgstr "第二次面谈"
#. module: crm
#: model:ir.actions.wizard,name:crm.wizard_crm_cal_subscribe
@ -355,7 +355,7 @@ msgstr "耽搁类型"
#: view:crm.opportunity:0
#: view:crm.phonecall:0
msgid "Contact"
msgstr "联系"
msgstr "联系方式"
#. module: crm
#: view:crm.job:0
@ -365,12 +365,12 @@ msgstr "下次会面"
#. module: crm
#: field:crm.case.rule,regex_history:0
msgid "Regular Expression on Case History"
msgstr ""
msgstr "业务个案日志的正则表达式"
#. module: crm
#: model:ir.model,name:crm.model_crm_email_add_cc
msgid "Email Add CC"
msgstr ""
msgstr "Email地址"
#. module: crm
#: model:process.transition,name:crm.process_transition_opportunitymeeting0
@ -383,12 +383,12 @@ msgid ""
"The channels represent the different communication modes available with the "
"customer. With each commercial opportunity, you can indicate the canall "
"which is this opportunity source."
msgstr ""
msgstr "渠道代表与客户不同的沟通, 在每一个商机你能标记出哪个是这机会的来源."
#. module: crm
#: view:crm.meeting:0
msgid "Exception Rules"
msgstr ""
msgstr "例外规则"
#. module: crm
#: model:ir.actions.report.xml,name:crm.crm_business_opportunities_report
@ -398,14 +398,14 @@ msgstr "商机"
#. module: crm
#: model:crm.case.stage,name:crm.stage_claim1
msgid "Accepted as Claim"
msgstr ""
msgstr "接受作为索赔"
#. module: crm
#: view:crm.case.rule:0
msgid ""
"The rule use a AND operator. The case must match all non empty fields so "
"that the rule execute the action described in the 'Actions' tab."
msgstr "该规则使用AND操作符.这业务个案必须是非空字段,而且该规则的执行动作描述在动作标签."
msgstr "该规则使用AND操作符. 这业务个案必须是非空字段而且该规则的执行动作描述在动作标签."
#. module: crm
#: field:crm.case,history_line:0
@ -415,12 +415,12 @@ msgstr "沟通"
#. module: crm
#: view:crm.case.rule:0
msgid "%(email_from)s = Partner email"
msgstr "%(email_from)s = 业务伙伴电子邮箱"
msgstr "%(email_from)s = 业务伙伴的Email"
#. module: crm
#: model:crm.case.stage,name:crm.stage_lead6
msgid "Dead"
msgstr ""
msgstr "死寂的"
#. module: crm
#: view:crm.meeting:0
@ -449,19 +449,19 @@ msgstr "分类"
#: model:ir.ui.menu,name:crm.menu_crm_case_section_categ_stage_tree
#: view:report.crm.case.section.categ.stage:0
msgid "Cases by Section, Category and Stage"
msgstr "按组,分类和阶段排列案例"
msgstr "业务个案细项, 分类和阶段"
#. module: crm
#: help:crm.case.rule,act_mail_to_watchers:0
msgid ""
"Check this if you want the rule to mark CC(mail to any other person defined "
"in actions)."
msgstr ""
msgstr "选这个, 如果你想这规则标记为cc(在行动定义中发邮件到任何人)"
#. module: crm
#: field:crm.meeting,class:0
msgid "Privacy"
msgstr ""
msgstr "隐私"
#. module: crm
#: view:crm.case.rule:0
@ -503,7 +503,7 @@ msgstr "待处理业务个案"
#. module: crm
#: field:crm.case,state:0
msgid "Status"
msgstr ""
msgstr "状态"
#. module: crm
#: wizard_view:crm.case.opportunity.partner_opportunity,init:0
@ -513,7 +513,7 @@ msgstr ""
#: model:ir.actions.wizard,name:crm.wizard_partner_create_opportunity
#: model:ir.actions.wizard,name:crm.wizard_partner_create_opportunity1
msgid "Create Opportunity"
msgstr "创造商机"
msgstr "建立商机"
#. module: crm
#: selection:report.crm.case.section.categ.categ2,month:0
@ -521,7 +521,7 @@ msgstr "创造商机"
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "August"
msgstr "月"
msgstr "8月"
#. module: crm
#: view:crm.meeting:0
@ -545,13 +545,13 @@ msgstr "所有会议"
#. module: crm
#: model:ir.module.module,shortdesc:crm.module_meta_information
msgid "Customer & Supplier Relationship Management"
msgstr "业务关系管理"
msgstr "客户&供应商关系管理"
#. module: crm
#: view:crm.email.add.cc:0
#: model:ir.actions.act_window,name:crm.action_view_crm_email_add_cc_wizard
msgid "Add CC"
msgstr ""
msgstr "加入cc"
#. module: crm
#: selection:report.crm.case.section.categ.categ2,month:0
@ -559,7 +559,7 @@ msgstr ""
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "June"
msgstr "月"
msgstr "6月"
#. module: crm
#: field:crm.segmentation,som_interval_default:0
@ -569,7 +569,7 @@ msgstr "默认(0=无)"
#. module: crm
#: model:crm.case.stage,name:crm.stage_job7
msgid "Refused by Company"
msgstr ""
msgstr "公司拒绝"
#. module: crm
#: field:crm.case,planned_revenue:0
@ -587,12 +587,12 @@ msgstr "允许删除"
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "October"
msgstr "月"
msgstr "10月"
#. module: crm
#: model:crm.case.stage,name:crm.stage_oppor3
msgid "Value Proposition"
msgstr ""
msgstr "价格建议"
#. module: crm
#: view:crm.case.rule:0
@ -620,7 +620,7 @@ msgstr "允许显示日程表。"
#: view:crm.opportunity:0
#: view:crm.phonecall:0
msgid " Today "
msgstr ""
msgstr " 今天 "
#. module: crm
#: wizard_view:crm.job.reschedule_phone_call,init:0
@ -638,12 +638,12 @@ msgstr "业务个案分类"
msgid ""
"Default state of mind for period preceeding the 'Max Interval' computation. "
"This is the starting state of mind by default if the partner has no event."
msgstr "默认满意度在周期前以最大间隔计算.如果业务伙伴没有事件这是默认开始满意度"
msgstr "前期的默认满意度以'最大间隔'计算. 如果业务伙伴没有事件这是默认开始满意度"
#. module: crm
#: model:crm.case.categ,name:crm.categ_claim3
msgid "Policy Claims"
msgstr ""
msgstr "保险索赔"
#. module: crm
#: code:addons/crm/crm.py:0
@ -678,7 +678,7 @@ msgstr "职位招聘流程"
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Related Cases"
msgstr ""
msgstr "相关的业务个案"
#. module: crm
#: selection:report.crm.case.section.categ.categ2,month:0
@ -686,22 +686,22 @@ msgstr ""
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "September"
msgstr "月"
msgstr "9月"
#. module: crm
#: view:crm.case:0
msgid "Communication history"
msgstr "交流记录"
msgstr "沟通日志"
#. module: crm
#: view:crm.claim:0
msgid "New Claims"
msgstr ""
msgstr "新的索赔"
#. module: crm
#: view:crm.meeting:0
msgid "Meetings Form"
msgstr "会议"
msgstr "会议"
#. module: crm
#: model:crm.case.stage,name:crm.stage_oppor5
@ -712,17 +712,17 @@ msgstr "协商/审查"
#: code:addons/crm/wizard/crm_phonecall_wizard.py:0
#, python-format
msgid "A partner is already defined on this phonecall."
msgstr ""
msgstr "在这电话呼叫中一个业务伙伴已定义"
#. module: crm
#: model:ir.ui.menu,name:crm.menu_action_report_crm_case_oppor_stage
msgid "Cases by Opportunities and Stage"
msgstr "商机和阶段排列案例"
msgstr "商机和阶段"
#. module: crm
#: view:crm.claim:0
msgid "Date of Claim"
msgstr ""
msgstr "索赔日期"
#. module: crm
#: view:crm.segmentation.line:0
@ -732,12 +732,12 @@ msgstr "业务伙伴细分明细"
#. module: crm
#: model:ir.actions.act_window,name:crm.crm_case_category_act_leads_all
msgid "All Leads"
msgstr "所有线索"
msgstr "所有营销线索"
#. module: crm
#: view:crm.lead:0
msgid "Leads Form"
msgstr "线索单"
msgstr "营销线索表"
#. module: crm
#: view:crm.segmentation:0
@ -753,12 +753,12 @@ msgstr "已签订合同"
#. module: crm
#: wizard_view:caldav.crm.subscribe,init:0
msgid "Subscribe to Remote ICS"
msgstr ""
msgstr "预约远程ICS"
#. module: crm
#: model:crm.case.category2,name:crm.category_oppor1
msgid "Existing Business"
msgstr ""
msgstr "现有生意"
#. module: crm
#: field:crm.case,probability:0
@ -769,14 +769,14 @@ msgstr "概率(%)"
#. module: crm
#: model:ir.model,name:crm.model_crm_lead
msgid "Leads Cases"
msgstr ""
msgstr "营销线索业务个案"
#. module: crm
#: help:crm.case.section,reply_to:0
msgid ""
"The email address put in the 'Reply-To' of all emails sent by Open ERP about "
"cases in this section"
msgstr "这电子邮件地址设定在这业务个案项所有'回复'的电子邮件"
msgstr "这电子邮件地址设定在这业务个案项所有'回复'的电子邮件"
#. module: crm
#: view:crm.case.rule:0
@ -804,7 +804,7 @@ msgstr "商机"
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Emails"
msgstr "电子邮件"
msgstr "Emails"
#. module: crm
#: model:crm.case.category2,name:crm.category_lead7
@ -819,12 +819,12 @@ msgstr "停止处理"
#. module: crm
#: model:crm.case.categ,name:crm.categ_claim1
msgid "Factual Claims"
msgstr ""
msgstr "实际索赔"
#. module: crm
#: view:crm.phonecall:0
msgid "Search Phonecalls"
msgstr ""
msgstr "查询电话呼叫"
#. module: crm
#: wizard_button:crm.lead.opportunity_set,create_partner,create:0
@ -835,7 +835,7 @@ msgstr "继续"
#. module: crm
#: field:crm.segmentation,som_interval:0
msgid "Days per Periode"
msgstr "周期天数"
msgstr "每个期间的天数"
#. module: crm
#: field:crm.segmentation.line,expr_value:0
@ -845,7 +845,7 @@ msgstr "值"
#. module: crm
#: help:caldav.crm.export,init,name:0
msgid "Save in .ics format"
msgstr ""
msgstr "保持为.ics格式"
#. module: crm
#: wizard_field:crm.new.send.mail,init,text:0
@ -859,7 +859,7 @@ msgid ""
"Check if the category is limited to partners that match the segmentation "
"criterions. If checked, remove the category from partners that doesn't match "
"segmentation criterions"
msgstr "检查如果分类是仅限于业务伙伴匹配的细分标准.如果选中,将在分类中移去不匹配的业务伙伴"
msgstr "检查如果这分类是在与业务伙伴匹配的细分标准. 如果选中, 将在分类中移去不匹配的业务伙伴"
#. module: crm
#: field:crm.segmentation,exclusif:0
@ -871,7 +871,7 @@ msgstr "唯一的"
msgid ""
"Category related to the section.Subdivide the CRM cases independently or "
"section-wise."
msgstr ""
msgstr "这细项有关的分类, 把这CRM的业务个案独立细分或分为细项"
#. module: crm
#: field:crm.case.rule,act_state:0
@ -907,12 +907,12 @@ msgstr "触发日期"
#. module: crm
#: view:crm.case.history:0
msgid "Search Histories"
msgstr "搜索历史记录"
msgstr "搜索日志"
#. module: crm
#: help:crm.case.stage,sequence:0
msgid "Gives the sequence order when displaying a list of case stages."
msgstr ""
msgstr "在显示业务个案阶段列表时提供序列顺序"
#. module: crm
#: model:crm.case.section,name:crm.section_support3
@ -920,12 +920,12 @@ msgstr ""
#: model:ir.ui.menu,name:crm.menu_crm_case_opp
#: model:process.node,name:crm.process_node_opportunities0
msgid "Opportunities"
msgstr "商机列表"
msgstr "商机"
#. module: crm
#: help:crm.segmentation,name:0
msgid "The name of the segmentation."
msgstr "细分名称"
msgstr "细分名称"
#. module: crm
#: field:crm.case.rule,trg_partner_categ_id:0
@ -936,7 +936,7 @@ msgstr "业务伙伴分类"
#. module: crm
#: field:crm.segmentation,sales_purchase_active:0
msgid "Use The Sales Purchase Rules"
msgstr "使用销售采购规则"
msgstr "使用销售采购规则"
#. module: crm
#: selection:crm.segmentation.line,expr_name:0
@ -954,7 +954,7 @@ msgstr ""
msgid ""
"These people will receive a copy of the future communication between partner "
"and users by email"
msgstr ""
msgstr "这些人将收到业务伙伴和用户未来通信的邮件副本"
#. module: crm
#: selection:report.crm.case.section.categ.categ2,month:0
@ -962,12 +962,12 @@ msgstr ""
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "March"
msgstr "月"
msgstr "3月"
#. module: crm
#: view:crm.case.rule:0
msgid "Server Action to be Triggered"
msgstr ""
msgstr "服务器动作被触发"
#. module: crm
#: model:ir.actions.act_window,name:crm.crm_case_rule-act
@ -979,7 +979,7 @@ msgstr "规则"
#: wizard_view:crm.job.meeting_set,init:0
#: wizard_view:crm.phonecall.meeting_set,init:0
msgid "Plan Meeting"
msgstr ""
msgstr "计划会议"
#. module: crm
#: wizard_field:crm.new.send.mail,init,state:0
@ -1010,12 +1010,12 @@ msgstr "<"
#. module: crm
#: view:crm.case.rule:0
msgid "%(case_description)s = Case description"
msgstr "%(case_description)s = 案描述"
msgstr "%(case_description)s = 业务个案描述"
#. module: crm
#: view:crm.fundraising:0
msgid "My Funds"
msgstr ""
msgstr "我的款项"
#. module: crm
#: field:crm.case,partner_mobile:0
@ -1046,7 +1046,7 @@ msgstr "初级软件开发人员"
#. module: crm
#: view:crm.meeting:0
msgid "My Meetings"
msgstr "我的会议列表"
msgstr "我的会议"
#. module: crm
#: field:crm.case.categ,name:0
@ -1061,12 +1061,12 @@ msgstr "预防"
#. module: crm
#: field:crm.case.rule,act_email_cc:0
msgid "Add watchers (Cc)"
msgstr "新增关注者"
msgstr "新增关注者(Cc)"
#. module: crm
#: wizard_view:caldav.crm.export,init:0
msgid "Export ICS"
msgstr ""
msgstr "输出ICS"
#. module: crm
#: code:addons/crm/crm_claim.py:0
@ -1076,13 +1076,13 @@ msgstr ""
#: code:addons/crm/crm_phonecall.py:0
#, python-format
msgid "You can not assign Closed Case."
msgstr ""
msgstr "你不能指定结束的业务个案"
#. module: crm
#: help:crm.case.rule,act_remind_partner:0
msgid ""
"Check this if you want the rule to send a reminder by email to the partner."
msgstr "如果你想发提醒电子邮件给业务伙伴勾选此项"
msgstr "勾选此项, 如果你想发提醒电子邮件给业务伙伴"
#. module: crm
#: code:addons/crm/crm_meeting.py:0
@ -1092,7 +1092,7 @@ msgstr "如果你想发提醒电子邮件给业务伙伴勾选此项"
#: view:crm.meeting:0
#, python-format
msgid "Meetings"
msgstr ""
msgstr "会议"
#. module: crm
#: view:crm.case.rule:0

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,15 @@ 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 = []
if case.email_cc:
new_cc.append(case.email_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' : ', '.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

@ -114,7 +114,7 @@
<blockTable colWidths="287.0,254.0" repeatRows="1" style="Tableau1">
<tr>
<td>
<para style="terp_default_Bold_9">Invoiced to</para>
<para style="terp_default_Bold_9">[[ o.sale_id and o.sale_id.partner_invoice_id and 'Invoiced to' or '' ]]</para>
<para style="terp_default_9">[[ o.sale_id and o.sale_id.partner_invoice_id and o.sale_id.partner_invoice_id.partner_id.name or '']]</para>
<para style="terp_default_9">[[ o.sale_id and o.sale_id.partner_invoice_id and o.sale_id.partner_invoice_id.name or '']]</para>
<para style="terp_default_9">[[ o.sale_id and o.sale_id.partner_invoice_id and o.sale_id.partner_invoice_id.street or '']]</para>

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

@ -222,11 +222,11 @@ class event_event(osv.osv):
'mail_auto_confirm': fields.boolean('Mail Auto Confirm', readonly=False, states={'done': [('readonly', True)]}, help='Check this box if you want ot use the automatic confirmation emailing or the reminder'),
'mail_registr': fields.text('Registration Email', readonly=False, states={'done': [('readonly', True)]}, help='This email will be sent when someone subscribes to the event.'),
'mail_confirm': fields.text('Confirmation Email', readonly=False, states={'done': [('readonly', True)]}, help="This email will be sent when the event gets confimed or when someone subscribes to a confirmed event. This is also the email sent to remind someone about the event."),
'product_id': fields.many2one('product.product', 'Product', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Product which is provided cost of event. Invoice of event will be created with this Product."),
'product_id': fields.many2one('product.product', 'Product', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="The invoices of this event registration will be created with this Product. Thus it allows you to set the default label and the accounting info you want by default on these invoices."),
'note': fields.text('Notes', help="Description or Summary of Event", readonly=False, states={'done': [('readonly', True)]}),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist version for current event."),
'unit_price': fields.related('product_id', 'list_price', type='float', string='Registration Cost', readonly=True, states={'draft':[('readonly',False)]}),
'main_speaker_id': fields.many2one('res.partner','Main Speaker', readonly=False, states={'done': [('readonly', True)]}),
'unit_price': fields.related('product_id', 'list_price', type='float', string='Registration Cost', readonly=True, states={'draft':[('readonly',False)]}, help="This will be the default price used as registration cost when invoicing this event. Note that you can specify for each registration a specific amount if you want to"),
'main_speaker_id': fields.many2one('res.partner','Main Speaker', readonly=False, states={'done': [('readonly', True)]}, help="Speaker who are giving speech on event."),
'speaker_ids':fields.many2many('res.partner', 'event_speaker_rel', 'speaker_id', 'partner_id', 'Other Speakers', readonly=False, states={'done': [('readonly', True)]}),
'address_id': fields.many2one('res.partner.address','Location Address', readonly=False, states={'done': [('readonly', True)]}),
'speaker_confirmed': fields.boolean('Speaker Confirmed', readonly=False, states={'done': [('readonly', True)]}),
@ -285,7 +285,7 @@ class event_registration(osv.osv):
"""Event Registration"""
_name= 'event.registration'
_description = __doc__
_inherit = 'crm.meeting'
_inherit = 'mailgate.thread'
def _amount_line(self, cr, uid, ids, field_name, arg, context=None):
cur_obj = self.pool.get('res.currency')
@ -300,9 +300,10 @@ 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_id': fields.many2one('res.partner', 'Partner', states={'done': [('readonly', True)]}),
"partner_invoice_id": fields.many2one('res.partner', 'Partner Invoiced', readonly=True, states={'draft': [('readonly', False)]}),
"contact_id": fields.many2one('res.partner.contact', 'Partner Contact', readonly=False, states={'done': [('readonly', True)]}), #TODO: filter only the contacts that have a function into the selected partner_id
"unit_price": fields.float('Unit Price', required=True, digits_compute= dp.get_precision('Event Price'), readonly=True, states={'draft': [('readonly', False)]}),
@ -314,16 +315,30 @@ class event_registration(osv.osv):
'date_closed': fields.datetime('Closed', readonly=True),
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
'email_from': fields.char('Email', size=128, states={'done': [('readonly', True)]}, help="These people will receive email."),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Write Date' , readonly=True),
'description': fields.text('Description', states={'done': [('readonly', True)]}),
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('model','=',_name)]),
'log_ids': fields.one2many('mailgate.message', 'res_id', 'Logs', domain=[('history', '=', False),('model','=',_name)]),
'date_deadline': fields.related('event_id','date_end', type='datetime', string="End Date", readonly=True, store=True),
'date': fields.related('event_id', 'date_begin', type='datetime', string="Start Date", readonly=True, store=True),
'section_id': fields.related('event_id', 'section_id', type='many2one', relation='crm.case.section', string='Sale Team', store=True, readonly=True, states={'draft':[('readonly',False)]}),
'date_deadline': fields.related('event_id','date_end', type='datetime', string="End Date", readonly=True),
'date': fields.related('event_id', 'date_begin', type='datetime', string="Start Date", readonly=True),
'user_id': fields.many2one('res.users', 'Responsible', states={'done': [('readonly', True)]}),
'active': fields.boolean('Active'),
'section_id': fields.related('event_id', 'section_id', type='many2one', relation='crm.case.section', string='Sale Team', store=True, readonly=True),
'company_id': fields.related('event_id', 'company_id', type='many2one', relation='res.company', string='Company', store=True, readonly=True, states={'draft':[('readonly',False)]}),
'state': fields.selection([('open', 'Confirmed'),
('draft', 'Unconfirmed'),
('cancel', 'Cancelled'),
('done', 'Done')], 'State', \
size=16, readonly=True)
}
_defaults = {
'nb_register': 1,
'tobe_invoiced': True,
'state': lambda *a: 'draft',
'active': lambda *a: 1,
'user_id': lambda self, cr, uid, ctx: uid,
}
def _make_invoice(self, cr, uid, reg, lines, context=None):
@ -353,7 +368,7 @@ class event_registration(osv.osv):
})
inv_id = inv_pool.create(cr, uid, val_invoice['value'])
inv_pool.button_compute(cr, uid, [inv_id])
self._history(cr, uid, [reg], _('Invoiced'))
self.history(cr, uid, [reg], _('Invoiced'))
return inv_id
def action_invoice_create(self, cr, uid, ids, grouped=False, date_inv = False, context=None):
@ -422,7 +437,7 @@ class event_registration(osv.osv):
"""
res = self.write(cr, uid, ids, {'state': 'open'}, context=context)
self.mail_user(cr, uid, ids)
self._history(cr, uid, ids, _('Open'))
self.history(cr, uid, ids, _('Open'))
return res
def do_close(self, cr, uid, ids, context=None):
@ -436,7 +451,7 @@ class event_registration(osv.osv):
if invoice_id:
values['invoice_id'] = invoice_id
res = self.write(cr, uid, ids, values)
self._history(cr, uid, ids, msg)
self.history(cr, uid, ids, msg)
return res
def check_confirm(self, cr, uid, ids, context=None):
@ -509,7 +524,7 @@ class event_registration(osv.osv):
"""This Function Cancel Event Registration.
"""
registrations = self.browse(cr, uid, ids)
self._history(cr, uid, registrations, _('Cancel'))
self.history(cr, uid, registrations, _('Cancel'))
self.write(cr, uid, ids, {'state': 'cancel'})
return True
@ -606,7 +621,9 @@ class event_registration(osv.osv):
data_event = event_obj.browse(cr, uid, event_id)
res = {'value': {'unit_price': False, 'event_product': False, 'user_id': False,
'date': data_event.date_begin, 'date_deadline': data_event.date_end, 'description': data_event.note, 'name': data_event.name}}
'date': data_event.date_begin, 'date_deadline': data_event.date_end, 'description': data_event.note, 'name': data_event.name,
'section_id': data_event.section_id and data_event.section_id.id or False,
}}
if data_event.user_id.id:
res['value'].update({'user_id':data_event.user_id.id})
if data_event.product_id:
@ -615,6 +632,8 @@ class event_registration(osv.osv):
partner = res_obj.browse(cr, uid, partner_invoice_id, context=context)
pricelist_id = pricelist_id or partner.property_product_pricelist.id
unit_price = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': pricelist_id})[data_event.product_id.id]
if not unit_price:
unit_price = data_event.unit_price
res['value'].update({'unit_price': unit_price, 'event_product': data_event.product_id.name})
return res
@ -675,7 +694,10 @@ class event_registration(osv.osv):
if partner_invoice_id:
partner = res_obj.browse(cr, uid, partner_invoice_id, context=context)
pricelist_id = pricelist_id or partner.property_product_pricelist.id
data['unit_price'] = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': pricelist_id})[data_event.product_id.id]
unit_price = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': pricelist_id})[data_event.product_id.id]
if not unit_price:
unit_price = data_event.unit_price
data['unit_price'] = unit_price
return {'value': data}
event_registration()

View File

@ -131,21 +131,23 @@
<page string="Mailing">
<field name="reply_to" />
<newline/>
<group col="3" colspan="2" expand="1">
<separator string="Auto Registration Email" colspan="2"/>
<newline/>
<field name="mail_auto_registr"/>
<separator string="Registration Email Body" colspan="2"/>
<newline/>
<field name="mail_registr" colspan="2" nolabel="1" attrs="{'readonly':[('mail_auto_registr','=',False)]}"/>
</group>
<group col="2" colspan="2" >
<separator string="Auto Confirmation Email" colspan="2"/>
<field name="mail_auto_confirm"/>
<newline/>
<separator string="Confirmation Email Body" colspan="2"/>
<field name="mail_confirm" colspan="2" nolabel="1" attrs="{'readonly':[('mail_auto_confirm','=',False)]}"/>
<group col="4" colspan="4">
<group col="2" colspan="2">
<separator string="Auto Registration Email" colspan="4"/>
<field name="mail_auto_registr" colspan="4"/>
<group colspan="4" attrs="{'readonly':[('mail_auto_registr','=',False)]}">
<separator string="Registration Email Body" colspan="4"/>
<field name="mail_registr" colspan="4" nolabel="1" />
</group>
</group>
<group col="2" colspan="2">
<separator string="Auto Confirmation Email" colspan="4"/>
<field name="mail_auto_confirm" colspan="4"/>
<group colspan="4" attrs="{'readonly':[('mail_auto_confirm','=',False)]}">
<separator string="Confirmation Email Body" colspan="4"/>
<field name="mail_confirm" nolabel="1" colspan="4"/>
</group>
</group>
</group>
</page>
</notebook>
@ -330,9 +332,8 @@
</group>
<separator string="Description" colspan="4"/>
<field name="description" colspan="4" nolabel="1"/>
<group col="8" colspan="4">
<separator string="" colspan="4"/>
<newline/>
<separator string="" colspan="4"/>
<group col="8" colspan="4">
<field name="state" select="1" colspan="2"/>
<button name="button_reg_close" string="Close Registration" states="open" type="object" icon="gtk-close"/>
<button name="check_confirm" string="Confirm Registration" states="draft" type="object" icon="gtk-apply"/>
@ -376,7 +377,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 +399,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

@ -33,7 +33,7 @@ class event_confirm(osv.osv_memory):
'msg': fields.text('Message', readonly=True),
}
_defaults = {
'msg': _('Total Registrations of this Event could not reached Minimum Registration Limit. What do you want to do?')
'msg': _('Warning: This Event has not reached its Minimum Registration Limit. Are you sure you want to confirm it?')
}
def confirm(self, cr, uid, ids, context):

View File

@ -50,11 +50,10 @@ class event_confirm_registration(osv.osv_memory):
register_max = registration.event_id.register_max
if registration.event_id.id not in overlimit_event_ids:
overlimit_event_ids.append(registration.event_id.id)
msg += _("The Event '%s' is reached Maximum Limit(%s).") \
msg += _("Warning: The Event '%s' has reached its Maximum Limit (%s).") \
%(registration.event_id.name, register_max)
if 'msg' in fields:
res.update({'msg': msg})
return res
def confirm(self, cr, uid, ids, context):

View File

@ -27,7 +27,8 @@
from osv import fields, osv
from tools.translate import _
import time
from datetime import date, datetime
class event_project(osv.osv_memory):
"""
Event Project
@ -36,23 +37,46 @@ class event_project(osv.osv_memory):
_description = "Event Project"
_columns = {
'project_id': fields.many2one('project.project', 'Template of Project', domain = [('active', '<>', False), ('state', '=', 'template')], required =True, help="This is Template Project. Project of event is a duplicate of this Template. After click on 'Create Retro-planning', New Project will be duplicated from this template project.")
'project_id': fields.many2one('project.project', 'Template of Project',
domain = [('active', '<>', False), ('state', '=', 'template')],
required =True,
help="This is Template Project. Project of event is a duplicate of this Template. After click on 'Create Retro-planning', New Project will be duplicated from this template project."),
'date_start': fields.date('Date Start'),
'date': fields.date('Date End'),
}
def default_get(self, cr, uid, fields, context=None):
"""
This function gets default values
@param fields: List of fields for default value
@param context: A standard dictionary for contextual values
@return : default values of fields.
"""
event_obj=self.pool.get('event.event')
project_obj = self.pool.get('project.project')
event = event_obj.browse(cr, uid, context.get('active_id', False))
res = super(event_project, self).default_get(cr, uid, fields, context=context)
if 'date_start' in fields:
res.update({'date_start': time.strftime('%Y-%m-%d')})
if 'date' in fields:
res.update({'date': datetime.strptime(event.date_end, "%Y-%m-%d %H:%M:%S").strftime("%Y-%m-%d")})
return res
def create_duplicate(self, cr, uid, ids, context):
event_obj=self.pool.get('event.event')
project_obj = self.pool.get('project.project')
event = event_obj.browse(cr, uid, context.get('active_id', False))
for current in self.browse(cr, uid, ids):
duplicate_project_id = project_obj.copy(cr, uid, current.project_id.id, {'active': True})
duplicate_project = project_obj.browse(cr, uid, duplicate_project_id, context)
project_obj.write(cr, uid, [duplicate_project_id], {
'name': duplicate_project.name ,
'date_start':time.strftime('%Y-%m-%d'),
'date': event.date_begin[0:10] })
for current in self.browse(cr, uid, ids):
duplicate_project_id = project_obj.copy(cr, uid, current.project_id.id, {
'active': True,
'date_start':current.date_start,
'date': current.date,
})
event_obj.write(cr, uid, [event.id], {'project_id': duplicate_project_id })
return {}
event_project()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -8,7 +8,9 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Retro-Planning">
<field name="project_id" />
<field name="project_id" colspan="4"/>
<field name="date_start"/>
<field name="date"/>
<separator string="" colspan="4"/>
<group colspan="4" col="6">
<button icon="gtk-close" special="cancel" string="Close"/>

View File

@ -72,6 +72,7 @@
<field name="res_model">hr.department</field>
<field name="view_type">form</field>
<field name="search_view_id" ref="view_department_filter"/>
<field name="help">Your Company's Departments Structure is used to manage all documents related to employees by departments: expenses and timesheet validation, leaves management, recruitements, etc.</field>
</record>
<menuitem action="open_module_tree_department" id="menu_department_def" parent="hr.menu_department_tree"/>

View File

@ -147,6 +147,7 @@
<field name="domain">[]</field>
<field name="view_id" ref="view_employee_tree"/>
<field name="search_view_id" ref="view_employee_filter"/>
<field name="help">The employee directory contains all data related to your employees: from their photo up to their hourly estimated costs for the timesheets. Employees are managed by departments and can be linked to users to manage their access rights.</field>
</record>
<menuitem action="open_view_employee_list_my" id="menu_open_view_employee_list_my" sequence="3" parent="menu_hr_main"/>
@ -386,6 +387,7 @@
<field name="res_model">hr.job</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="help">Job Positions are used to define the jobs, the requirements. You can attach a survey to a job position. This survey will be used in the recruitement process to evaluate the applicants for this job position.</field>
</record>
<menuitem name="Recruitment" id="base.menu_crm_case_job_req_main" parent="menu_hr_root"/>

View File

@ -71,6 +71,7 @@
<field name="view_mode">tree,form</field>
<field name="context">{"search_default_employee":1}</field>
<field name="search_view_id" ref="view_hr_attendance_filter" />
<field name="help">Time Tracking functionality aims to manage employee's attendances on the basis of the actions (Sign in/Sign out) performed by them. You can also link this to an attndance machine using OpenERP's webservices features.</field>
</record>
<!--<menuitem id="menu_hr_attendance" name="Attendances" parent="hr.menu_hr_root"

View File

@ -43,6 +43,7 @@
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_hr_attendance_sigh_in_out"/>
<field name="target">new</field>
<field name="help">Sign in / Sign out. In some companies, staff have to sign in when they arrive at work and sign out again at the end of the day. If each employee has been linked to a system user, then they can encode their time with this action button.</field>
</record>
<menuitem action="action_hr_attendance_sigh_in_out" id="menu_hr_attendance_sigh_in_out"

View File

@ -256,10 +256,12 @@
</record>
<record model="ir.actions.act_window" id="open_view_hr_evaluation_tree">
<field name="name">Evaluation</field>
<field name="res_model">hr_evaluation.evaluation</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,graph</field>
<field name="search_view_id" ref="hr_evaluation.evaluation_search"/>
<field name="help">Each employee can be assigned to an evaluation plan. These plans define the frequency and the way you manage your periodic personnal evalautions. You will be able to define steps and attach interview forms to each step. OpenERP manages all kind of evaluations: bottom-up, top-down, self evaluation and final evaluation by the manager.</field>
</record>
<menuitem name="Evaluation" parent="menu_eval_hr" id="menu_open_view_hr_evaluation_tree"
@ -339,12 +341,14 @@
</record>
<record model="ir.actions.act_window" id="action_hr_evaluation_interview_tree">
<field name="name">Interview Requests</field>
<field name="res_model">hr.evaluation.interview</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('is_evaluation' ,'=', True)]</field>
<field name="context">{"search_default_todo":1,"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_hr_evaluation_interview_search"/>
<field name="help">Interview Requests are generated automatically by OpenERP according to employees evaluation plan. Each user receives automatic emails and requests to perform evaluation of their collegues periodically.</field>
</record>
<menuitem name="Interview Requests" parent="menu_eval_hr" id="menu_open_hr_evaluation_interview_requests"

View File

@ -158,6 +158,7 @@
<field name="view_type">form</field>
<field name="context">{"search_default_user_id":uid}</field>
<field name="search_view_id" ref="view_hr_expense_filter"/>
<field name="help">The OpenERP expenses management module allows you to track the full flow. Every month, the employees record their expenses. At the end of the month, their managers validates the expenses sheets which creates costs on projects/analytic accounts. The accountant validates the proposed entries and the employee can be reimbursed. You can also reinvoice the customer at the end of the flow.</field>
</record>
<menuitem id="next_id_49" name="Expenses" sequence="4" parent="hr.menu_hr_root"/>

View File

@ -253,6 +253,7 @@
<field name="domain">[('type','=','remove')]</field>
<field name="context">{'search_default_user_id':uid}</field>
<field name="search_view_id" ref="view_hr_holidays_filter"/>
<field name="help">Leaves requests can be recorded by employees and validated by their managers. Once a leave request is validated it appears automatically in the agenda of the employee. You can define several allowance types (paid holidays, sickness, etc) and manage allowances per type.</field>
</record>
<record model="ir.actions.act_window.view" id="action_open_ask_holidays_tree">

View File

@ -70,9 +70,7 @@ class hr_applicant(osv.osv, crm.crm_case):
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the case without removing it."),
'description': fields.text('Description'),
'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

@ -151,7 +151,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">
@ -173,13 +173,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

@ -46,8 +46,9 @@
<field name="res_model">hr.sign.in.project</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_hr_timesheet_sign_in_message"/>
<field name="target">new</field>
<field name="view_id" ref="view_hr_timesheet_sign_in_message"/>
<field name="target">new</field>
<field name="help">Employees can encode their time spent on the different projects. A project is an analytic account and the time spent on a project generate costs on the analytic account. This feature allows to record at the same time the attendance and the timesheet.</field>
</record>
<menuitem action="action_hr_timesheet_sign_in"

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

@ -1,19 +1,19 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * mrp
# * mrp
#
msgid ""
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: 2010-05-21 08:19+0000\n"
"PO-Revision-Date: 2010-07-18 15:01+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-06-22 03:56+0000\n"
"X-Launchpad-Export-Date: 2010-07-19 03:41+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: mrp
@ -45,7 +45,7 @@ msgstr "Planowanie zasobów produkcyjnych (MRP)"
#. module: mrp
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: mrp
#: field:mrp.bom.revision,indice:0
@ -91,12 +91,14 @@ msgid "Stockable Stock"
msgstr "Zapas rejestrowany"
#. module: mrp
#: field:mrp.procurement,origin:0 field:mrp.production,origin:0
#: field:mrp.procurement,origin:0
#: field:mrp.production,origin:0
msgid "Origin"
msgstr "Pochodzenie"
#. module: mrp
#: model:ir.ui.menu,name:mrp.menu_mrp_configuration view:res.company:0
#: model:ir.ui.menu,name:mrp.menu_mrp_configuration
#: view:res.company:0
msgid "Configuration"
msgstr "Konfiguracja"
@ -175,7 +177,8 @@ msgstr "Automatyczne nabycia"
#. module: mrp
#: wizard_field:change_production_qty,confirm,product_qty:0
#: field:mrp.bom,product_qty:0 field:mrp.production,product_qty:0
#: field:mrp.bom,product_qty:0
#: field:mrp.production,product_qty:0
#: field:mrp.production.product.line,product_qty:0
msgid "Product Qty"
msgstr "Ilość produktu"
@ -203,7 +206,7 @@ msgstr "Wyjątek przesunięcia"
#. module: mrp
#: model:process.node,note:mrp.process_node_orderrfq0
msgid "A purchase order is created for a sub-contracting demand."
msgstr ""
msgstr "Zamówienie zakupu zostało utworzone dla podwykonawcy."
#. module: mrp
#: rml:mrp.production.order:0
@ -262,7 +265,8 @@ msgid "Internal Ref."
msgstr "Wewn. odnośnik"
#. module: mrp
#: view:mrp.procurement:0 field:mrp.procurement,state:0
#: view:mrp.procurement:0
#: field:mrp.procurement,state:0
#: field:mrp.production,state:0
msgid "Status"
msgstr "Stan"
@ -304,26 +308,29 @@ msgstr ""
#. module: mrp
#: model:ir.actions.act_window,name:mrp.mrp_production_action
#: model:ir.ui.menu,name:mrp.menu_mrp_production_action view:mrp.production:0
#: model:ir.ui.menu,name:mrp.menu_mrp_production_action
#: view:mrp.production:0
msgid "Production Orders"
msgstr "Zamówienia produkcji"
#. module: mrp
#: rml:bom.structure:0 field:mrp.procurement,product_qty:0
#: rml:bom.structure:0
#: field:mrp.procurement,product_qty:0
#: rml:mrp.production.order:0
#: wizard_field:product.product.procurement,init,qty:0
msgid "Quantity"
msgstr "Ilość"
#. module: mrp
#: selection:mrp.procurement,priority:0 selection:mrp.production,priority:0
#: selection:mrp.procurement,priority:0
#: selection:mrp.production,priority:0
msgid "Not urgent"
msgstr "Nie pilne"
#. module: mrp
#: model:process.transition,name:mrp.process_transition_procureserviceproduct0
msgid "Procure Service Product"
msgstr ""
msgstr "Nabycie usługi"
#. module: mrp
#: view:mrp.production:0
@ -359,10 +366,11 @@ msgstr "Proces nabycia"
#. module: mrp
#: field:mrp.production,date_planned_date:0
msgid "Scheduled Date"
msgstr ""
msgstr "Zaplanowana data"
#. module: mrp
#: selection:mrp.procurement,priority:0 selection:mrp.production,priority:0
#: selection:mrp.procurement,priority:0
#: selection:mrp.production,priority:0
msgid "Urgent"
msgstr "Pilne"
@ -478,19 +486,20 @@ msgid "Stockable Product Stock"
msgstr ""
#. module: mrp
#: field:mrp.bom,product_uos:0 field:mrp.production.product.line,product_uos:0
#: field:mrp.bom,product_uos:0
#: field:mrp.production.product.line,product_uos:0
msgid "Product UOS"
msgstr "JS produktu"
#. module: mrp
#: model:process.transition,name:mrp.process_transition_productionprocureproducts0
msgid "Production Procure Products"
msgstr ""
msgstr "Nabycie z produkcji"
#. module: mrp
#: model:process.process,name:mrp.process_process_serviceproductprocess0
msgid "Service Product Process"
msgstr ""
msgstr "Proces usługi"
#. module: mrp
#: model:process.transition,note:mrp.process_transition_purchaseprocure0
@ -544,7 +553,7 @@ msgstr "Czas produkcji"
#: model:ir.actions.act_window,name:mrp.mrp_procurement_action4
#: model:ir.ui.menu,name:mrp.menu_mrp_procurement_action4
msgid "Exceptions Procurements to Fix"
msgstr ""
msgstr "Wyjątki nabycia do poprawienia"
#. module: mrp
#: selection:mrp.procurement,state:0
@ -602,8 +611,10 @@ msgid "Waiting"
msgstr "Oczekiwanie"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_routing field:mrp.bom,routing_id:0
#: field:mrp.production,routing_id:0 view:mrp.routing:0
#: model:ir.model,name:mrp.model_mrp_routing
#: field:mrp.bom,routing_id:0
#: field:mrp.production,routing_id:0
#: view:mrp.routing:0
#: model:process.node,name:mrp.process_node_routing0
msgid "Routing"
msgstr "Marszruta"
@ -676,7 +687,8 @@ msgid "Production orders"
msgstr "Zamówienia produkcji"
#. module: mrp
#: field:mrp.bom,child_complete_ids:0 field:mrp.bom,child_ids:0
#: field:mrp.bom,child_complete_ids:0
#: field:mrp.bom,child_ids:0
msgid "BoM Hyerarchy"
msgstr "Hierarchia Zest. Mat."
@ -702,7 +714,8 @@ msgid "Security Days"
msgstr "Dni na wszelki wypadek"
#. module: mrp
#: view:mrp.production:0 field:mrp.production,cycle_total:0
#: view:mrp.production:0
#: field:mrp.production,cycle_total:0
msgid "Total Cycles"
msgstr "Suma cykli"
@ -762,7 +775,9 @@ msgid "Production done"
msgstr "Produkcja wykonana"
#. module: mrp
#: rml:bom.structure:0 field:mrp.bom,code:0 field:mrp.routing,code:0
#: rml:bom.structure:0
#: field:mrp.bom,code:0
#: field:mrp.routing,code:0
#: field:mrp.workcenter,code:0
msgid "Code"
msgstr "Kod"
@ -774,7 +789,8 @@ msgstr "Liczba godzin"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_property_group
#: field:mrp.property,group_id:0 field:mrp.property.group,name:0
#: field:mrp.property,group_id:0
#: field:mrp.property.group,name:0
msgid "Property Group"
msgstr "Grupa właściwości"
@ -789,12 +805,14 @@ msgid "References"
msgstr "Odnośniki"
#. module: mrp
#: wizard_button:change_production_qty,confirm,end:0 view:mrp.procurement:0
#: wizard_button:change_production_qty,confirm,end:0
#: view:mrp.procurement:0
#: selection:mrp.procurement,state:0
#: wizard_button:mrp.procurement.compute,init,end:0
#: wizard_button:mrp.procurement.compute.all,init,end:0
#: wizard_button:mrp.procurement.orderpoint.compute,init,end:0
#: view:mrp.production:0 wizard_button:mrp.workcenter.load,init,end:0
#: view:mrp.production:0
#: wizard_button:mrp.workcenter.load,init,end:0
#: wizard_button:product.product.procurement,init,end:0
#: wizard_button:product_price,init,end:0
msgid "Cancel"
@ -876,10 +894,14 @@ msgid "Nbr of cycle"
msgstr "Liczba cykli"
#. module: mrp
#: field:mrp.bom,name:0 field:mrp.procurement,name:0
#: rml:mrp.production.order:0 field:mrp.production.product.line,name:0
#: field:mrp.property,name:0 field:mrp.routing,name:0
#: field:mrp.routing.workcenter,name:0 field:stock.warehouse.orderpoint,name:0
#: field:mrp.bom,name:0
#: field:mrp.procurement,name:0
#: rml:mrp.production.order:0
#: field:mrp.production.product.line,name:0
#: field:mrp.property,name:0
#: field:mrp.routing,name:0
#: field:mrp.routing.workcenter,name:0
#: field:stock.warehouse.orderpoint,name:0
msgid "Name"
msgstr "Nazwa"
@ -992,7 +1014,8 @@ msgid "Notes"
msgstr "Uwagi"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_bom view:mrp.bom:0
#: model:ir.model,name:mrp.model_mrp_bom
#: view:mrp.bom:0
#: field:mrp.production,bom_id:0
msgid "Bill of Material"
msgstr "Zestawienie materiałowe"
@ -1053,7 +1076,8 @@ msgid "Sale Ref"
msgstr "Odnośnik sprzedaży"
#. module: mrp
#: field:mrp.procurement,priority:0 field:mrp.production,priority:0
#: field:mrp.procurement,priority:0
#: field:mrp.production,priority:0
#: rml:mrp.production.order:0
msgid "Priority"
msgstr "Priorytet"
@ -1082,7 +1106,8 @@ msgstr "Narzędzie"
#. module: mrp
#: help:mrp.production,location_src_id:0
msgid "Location where the system will look for products used in raw materials."
msgid ""
"Location where the system will look for products used in raw materials."
msgstr ""
"Strefa, w której system oczekuje produktów jako materiałów do produkcji."
@ -1118,7 +1143,8 @@ msgid "Max Quantity"
msgstr "Ilość maks."
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_procurement view:mrp.procurement:0
#: model:ir.model,name:mrp.model_mrp_procurement
#: view:mrp.procurement:0
msgid "Procurement"
msgstr "Nabycie"
@ -1168,7 +1194,8 @@ msgid "Procurement for raw materials."
msgstr "Nabycie dla materiałów do produkcji."
#. module: mrp
#: view:mrp.procurement:0 field:mrp.procurement,note:0
#: view:mrp.procurement:0
#: field:mrp.procurement,note:0
#: rml:mrp.production.order:0
msgid "Note"
msgstr "Uwaga"
@ -1194,8 +1221,10 @@ msgid "Define a routing to describe the manufacturing steps."
msgstr "Zdefiniuj marszrutę, aby opisać kroki produkcyjne."
#. module: mrp
#: field:mrp.bom,active:0 field:mrp.routing,active:0
#: field:mrp.workcenter,active:0 field:stock.warehouse.orderpoint,active:0
#: field:mrp.bom,active:0
#: field:mrp.routing,active:0
#: field:mrp.workcenter,active:0
#: field:stock.warehouse.orderpoint,active:0
msgid "Active"
msgstr "Aktywne"
@ -1208,18 +1237,23 @@ msgstr "Nabądź produkty"
#: model:ir.actions.act_window,name:mrp.mrp_property_action
#: model:ir.ui.menu,name:mrp.menu_mrp_property_action
#: model:ir.ui.menu,name:mrp.menu_mrp_property_group_action_prop
#: view:mrp.bom:0 field:mrp.bom,property_ids:0 view:mrp.procurement:0
#: field:mrp.procurement,property_ids:0 view:mrp.property:0
#: view:mrp.bom:0
#: field:mrp.bom,property_ids:0
#: view:mrp.procurement:0
#: field:mrp.procurement,property_ids:0
#: view:mrp.property:0
msgid "Properties"
msgstr "Właściwości"
#. module: mrp
#: field:mrp.procurement,date_planned:0 field:mrp.production,date_planned:0
#: field:mrp.procurement,date_planned:0
#: field:mrp.production,date_planned:0
msgid "Scheduled date"
msgstr "Planowana data"
#. module: mrp
#: view:mrp.procurement:0 view:mrp.production:0
#: view:mrp.procurement:0
#: view:mrp.production:0
msgid "Extra Information"
msgstr "Dodatkowe informacje"
@ -1267,7 +1301,8 @@ msgid "Change Product Qty."
msgstr "Zmień ilość produktu"
#. module: mrp
#: selection:mrp.procurement,state:0 selection:mrp.production,state:0
#: selection:mrp.procurement,state:0
#: selection:mrp.production,state:0
msgid "Done"
msgstr "Wykonano"
@ -1315,15 +1350,18 @@ msgid "Capacity per Cycle"
msgstr "Ilość na cykl"
#. module: mrp
#: field:mrp.bom,product_id:0 field:mrp.procurement,product_id:0
#: field:mrp.production,product_id:0 rml:mrp.production.order:0
#: field:mrp.bom,product_id:0
#: field:mrp.procurement,product_id:0
#: field:mrp.production,product_id:0
#: rml:mrp.production.order:0
#: field:mrp.production.product.line,product_id:0
#: field:stock.warehouse.orderpoint,product_id:0
msgid "Product"
msgstr "Produkt"
#. module: mrp
#: view:mrp.production:0 field:mrp.production,hour_total:0
#: view:mrp.production:0
#: field:mrp.production,hour_total:0
msgid "Total Hours"
msgstr "Suma godzin"
@ -1338,7 +1376,8 @@ msgid "Product BoM Structure"
msgstr "Struktura Zest. Mat. produktu"
#. module: mrp
#: field:mrp.bom,product_uom:0 field:mrp.production,product_uom:0
#: field:mrp.bom,product_uom:0
#: field:mrp.production,product_uom:0
#: field:mrp.production.product.line,product_uom:0
#: field:stock.warehouse.orderpoint,product_uom:0
msgid "Product UOM"
@ -1364,14 +1403,16 @@ msgid "Product type is Stockable and procure method is make to stock"
msgstr "Typ produktu jest Rejestrowany i metoda nabycia jest Na zapas."
#. module: mrp
#: help:mrp.bom,date_start:0 help:mrp.bom,date_stop:0
#: help:mrp.bom,date_start:0
#: help:mrp.bom,date_stop:0
msgid "Validity of this BoM or component. Keep empty if it's always valid."
msgstr ""
"Ważność tego Zestawienia materiałowego lub komponentu. Pozostaw puste, jeśli "
"ma być zawsze ważny."
#. module: mrp
#: field:mrp.procurement,product_uos:0 field:mrp.production,product_uos:0
#: field:mrp.procurement,product_uos:0
#: field:mrp.production,product_uos:0
msgid "Product UoS"
msgstr "JS produktu"
@ -1383,12 +1424,14 @@ msgstr "JM produktu"
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_workcenter
#: field:mrp.production.workcenter.line,workcenter_id:0
#: field:mrp.routing.workcenter,workcenter_id:0 view:mrp.workcenter:0
#: field:mrp.routing.workcenter,workcenter_id:0
#: view:mrp.workcenter:0
msgid "Workcenter"
msgstr "Centrum robocze"
#. module: mrp
#: selection:mrp.procurement,priority:0 selection:mrp.production,priority:0
#: selection:mrp.procurement,priority:0
#: selection:mrp.production,priority:0
msgid "Very Urgent"
msgstr "Bardzo pilne"
@ -1428,7 +1471,8 @@ msgid "Stockable Order Request"
msgstr ""
#. module: mrp
#: view:mrp.production:0 view:mrp.production.product.line:0
#: view:mrp.production:0
#: view:mrp.production.product.line:0
msgid "Scheduled Products"
msgstr "Zaplanowane produkty"
@ -1455,7 +1499,8 @@ msgstr "Jeśli w zamówieniu nabycia produkt jest typu Rejestrowany."
#. module: mrp
#: model:ir.model,name:mrp.model_mrp_production_workcenter_line
#: view:mrp.production:0 rml:mrp.production.order:0
#: view:mrp.production:0
#: rml:mrp.production.order:0
msgid "Work Orders"
msgstr "Centra robocze"
@ -1603,7 +1648,8 @@ msgstr "Wykorzystanie centrów roboczych"
msgid ""
"Efficiency on the production. A factor of 0.9 means a loss of 10% in the "
"production."
msgstr "Efektywność produkcji. Współczynnik 0,9 oznacza stratę 10% produkcji."
msgstr ""
"Efektywność produkcji. Współczynnik 0,9 oznacza stratę 10% produkcji."
#. module: mrp
#: field:mrp.bom,product_rounding:0
@ -1693,7 +1739,8 @@ msgid "plus"
msgstr "plus"
#. module: mrp
#: field:mrp.bom.revision,bom_id:0 field:mrp.procurement,bom_id:0
#: field:mrp.bom.revision,bom_id:0
#: field:mrp.procurement,bom_id:0
msgid "BoM"
msgstr "Zest. Mat."
@ -1737,7 +1784,8 @@ msgid "last indice"
msgstr ""
#. module: mrp
#: field:mrp.bom,revision_ids:0 view:mrp.bom.revision:0
#: field:mrp.bom,revision_ids:0
#: view:mrp.bom.revision:0
msgid "BoM Revisions"
msgstr "Wersje Zest. Mat."
@ -1747,12 +1795,14 @@ msgid "Retry"
msgstr "Powtórz"
#. module: mrp
#: selection:mrp.procurement,state:0 selection:mrp.production,state:0
#: selection:mrp.procurement,state:0
#: selection:mrp.production,state:0
msgid "Draft"
msgstr "Projekt"
#. module: mrp
#: selection:mrp.procurement,priority:0 selection:mrp.production,priority:0
#: selection:mrp.procurement,priority:0
#: selection:mrp.production,priority:0
msgid "Normal"
msgstr "Normalne"
@ -1806,8 +1856,11 @@ msgid "from stock"
msgstr "z zapasu"
#. module: mrp
#: view:mrp.bom:0 view:mrp.property:0 view:mrp.property.group:0
#: view:mrp.routing:0 view:mrp.routing.workcenter:0
#: view:mrp.bom:0
#: view:mrp.property:0
#: view:mrp.property.group:0
#: view:mrp.routing:0
#: view:mrp.routing.workcenter:0
msgid "General Information"
msgstr "Informacje ogólne"
@ -1860,10 +1913,14 @@ msgid "Change Product Qty"
msgstr "Zmień ilość produktu"
#. module: mrp
#: field:mrp.bom.revision,description:0 view:mrp.property:0
#: field:mrp.property,description:0 field:mrp.property.group,description:0
#: view:mrp.routing:0 field:mrp.routing,note:0
#: field:mrp.routing.workcenter,note:0 view:mrp.workcenter:0
#: field:mrp.bom.revision,description:0
#: view:mrp.property:0
#: field:mrp.property,description:0
#: field:mrp.property.group,description:0
#: view:mrp.routing:0
#: field:mrp.routing,note:0
#: field:mrp.routing.workcenter,note:0
#: view:mrp.workcenter:0
#: field:mrp.workcenter,note:0
msgid "Description"
msgstr "Opis"
@ -1923,7 +1980,8 @@ msgid "On Stock"
msgstr "Na zapas"
#. module: mrp
#: field:mrp.bom,sequence:0 rml:mrp.production.order:0
#: field:mrp.bom,sequence:0
#: rml:mrp.production.order:0
#: field:mrp.production.workcenter.line,sequence:0
#: field:mrp.routing.workcenter,sequence:0
msgid "Sequence"
@ -1981,4 +2039,9 @@ msgstr "Tygodniowe odchylenie wartości zapasów"
#: model:ir.model,name:mrp.model_report_mrp_inout
#: view:report.mrp.inout:0
msgid "Stock value variation"
msgstr "Odchylenie wartości zapasów"
msgstr "Zmiany wartości zapasów"
#. module: mrp
#: view:board.board:0
msgid "Next production orders"
msgstr "Następne zamówienie produkcji"

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

@ -319,7 +319,7 @@ class procurement_order(osv.osv):
move_obj = self.pool.get('stock.move')
for procurement in self.browse(cr, uid, ids):
if procurement.product_qty <= 0.00:
raise osv.except_osv(_('Data Insufficient !'), _('Please check the Quantity of Procurement Order(s), it should not be less than 1!'))
raise osv.except_osv(_('Data Insufficient !'), _('Please check the Quantity in Procurement Order(s), it should not be less than 1!'))
if procurement.product_id.type in ('product', 'consu'):
if not procurement.move_id:
source = procurement.location_id.id

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

@ -337,6 +337,7 @@ class task(osv.osv):
def copy_data(self, cr, uid, id, default={}, context=None):
default = default or {}
default['work_ids'] = []
default['active'] = True
return super(task, self).copy_data(cr, uid, id, default, context)
def _check_dates(self, cr, uid, ids, context=None):
@ -353,8 +354,17 @@ class task(osv.osv):
return False
return True
def _is_template(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for task in self.browse(cr, uid, ids, context=context):
res[task.id] = True
if task.project_id:
if task.project_id.active == False or task.project_id.state == 'template':
res[task.id] = False
return res
_columns = {
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the task without removing it. This is basically used for the management of templates of projects and tasks."),
'active': fields.function(_is_template, method=True, store=True, string='Not a Template Task', type='boolean', help="This field is computed automatically and have the same behavior than the boolean 'active' field: if the task is linked to a template or unactivated project, it will be hidden unless specifically asked."),
'name': fields.char('Task Summary', size=128, required=True),
'description': fields.text('Description'),
'priority' : fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Urgent'), ('0','Very urgent')], 'Importance'),

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

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