[MERGE] with parent

bzr revid: fka@tinyerp.com-20130222044845-q0garo17cwuwbe1k
This commit is contained in:
Foram Katharotiya (OpenERP) 2013-02-22 10:18:45 +05:30
commit a1cdf1b61d
53 changed files with 1338 additions and 635 deletions

View File

@ -343,7 +343,7 @@ class account_journal_cashbox_line(osv.osv):
_rec_name = 'pieces'
_columns = {
'pieces': fields.float('Values', digits_compute=dp.get_precision('Account')),
'journal_id' : fields.many2one('account.journal', 'Journal', required=True, select=1),
'journal_id' : fields.many2one('account.journal', 'Journal', required=True, select=1, ondelete="cascade"),
}
_order = 'pieces asc'

View File

@ -449,11 +449,15 @@ class account_invoice(osv.osv):
context = {}
invoices = self.read(cr, uid, ids, ['state','internal_number'], context=context)
unlink_ids = []
for t in invoices:
if t['state'] in ('draft', 'cancel') and t['internal_number']== False:
unlink_ids.append(t['id'])
if t['state'] not in ('draft', 'cancel'):
raise openerp.exceptions.Warning(_('You cannot delete an invoice which is not draft or cancelled. You should refund it instead.'))
elif t['internal_number']:
raise openerp.exceptions.Warning(_('You cannot delete an invoice after it has been validated (and received a number). You can set it back to "Draft" state and modify its content, then re-confirm it.'))
else:
raise osv.except_osv(_('Invalid Action!'), _('You can not delete an invoice which is not cancelled. You should refund it instead.'))
unlink_ids.append(t['id'])
osv.osv.unlink(self, cr, uid, unlink_ids, context=context)
return True
@ -1147,6 +1151,11 @@ class account_invoice(osv.osv):
return self.name_get(cr, user, ids, context)
def _refund_cleanup_lines(self, cr, uid, lines, context=None):
"""Convert records to dict of values suitable for one2many line creation
:param list(browse_record) lines: records to convert
:return: list of command tuple for one2many line creation [(0, 0, dict of valueis), ...]
"""
clean_lines = []
for line in lines:
clean_line = {}

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-12-24 11:01+0000\n"
"PO-Revision-Date: 2013-02-20 17:45+0000\n"
"Last-Translator: Pedro Manuel Baeza <pedro.baeza@gmail.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: 2012-12-25 04:47+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-21 05:14+0000\n"
"X-Generator: Launchpad (build 16491)\n"
#. module: account
#: model:process.transition,name:account.process_transition_supplierreconcilepaid0
@ -26,7 +26,7 @@ msgstr "Pago del sistema"
msgid ""
"An account fiscal position could be defined only once time on same accounts."
msgstr ""
"Una posición fiscal solo puede estar definida una vez en las mismas cuentas."
"Una posición fiscal sólo puede estar definida una vez en las mismas cuentas."
#. module: account
#: help:account.tax.code,sequence:0

View File

@ -18,6 +18,7 @@
<field name="parent_id" invisible="1"/>
<field name="state" invisible="1"/>
<field name="type" invisible="1"/>
<field name="template_id" invisible="1"/>
<field name="company_id" groups="base.group_multi_company"/>
</tree>
</field>

View File

@ -56,7 +56,7 @@ class report_account_common(report_sxw.rml_parse, common_report_header):
for report in self.pool.get('account.financial.report').browse(self.cr, self.uid, ids2, context=data['form']['used_context']):
vals = {
'name': report.name,
'balance': report.balance * report.sign,
'balance': report.balance * report.sign or 0.0,
'type': 'report',
'level': bool(report.style_overwrite) and report.style_overwrite or report.level,
'account_type': report.type =='sum' and 'view' or False, #used to underline the financial report balances

View File

@ -1,3 +1,8 @@
-
Test with that Finance manager who can only create supplier invoice.
-
!context
uid: 'res_users_account_manager'
-
In order to test account invoice I create a new supplier invoice
-

View File

@ -180,9 +180,9 @@ class account_invoice_refund(osv.osv_memory):
'journal_id', 'period_id'], context=context)
invoice = invoice[0]
del invoice['id']
invoice_lines = inv_line_obj.read(cr, uid, invoice['invoice_line'], context=context)
invoice_lines = inv_line_obj.browse(cr, uid, invoice['invoice_line'], context=context)
invoice_lines = inv_obj._refund_cleanup_lines(cr, uid, invoice_lines)
tax_lines = inv_tax_obj.read(cr, uid, invoice['tax_line'], context=context)
tax_lines = inv_tax_obj.browse(cr, uid, invoice['tax_line'], context=context)
tax_lines = inv_obj._refund_cleanup_lines(cr, uid, tax_lines)
invoice.update({
'type': inv.type,

View File

@ -20,7 +20,6 @@
##############################################################################
import account_analytic_analysis
import cron_account_analytic_account
import res_config
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -38,7 +38,6 @@ Adds menu to show relevant information to each manager.You can also view the rep
'security/ir.model.access.csv',
'security/account_analytic_analysis_security.xml',
'account_analytic_analysis_view.xml',
'account_analytic_analysis_menu.xml',
'account_analytic_analysis_cron.xml',
'res_config_view.xml',
],

View File

@ -18,6 +18,9 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import datetime
import logging
import time
from openerp.osv import osv, fields
from openerp.osv.orm import intersect, except_orm
@ -26,6 +29,7 @@ from openerp.tools.translate import _
from openerp.addons.decimal_precision import decimal_precision as dp
_logger = logging.getLogger(__name__)
class account_analytic_account(osv.osv):
_name = "account.analytic.account"
@ -484,7 +488,48 @@ class account_analytic_account(osv.osv):
res['value']['to_invoice'] = template.to_invoice.id
res['value']['pricelist_id'] = template.pricelist_id.id
return res
account_analytic_account()
def cron_account_analytic_account(self, cr, uid, context=None):
if context is None:
context = {}
remind = {}
def fill_remind(key, domain, write_pending=False):
base_domain = [
('type', '=', 'contract'),
('partner_id', '!=', False),
('manager_id', '!=', False),
('manager_id.email', '!=', False),
]
base_domain.extend(domain)
accounts_ids = self.search(cr, uid, base_domain, context=context, order='name asc')
accounts = self.browse(cr, uid, accounts_ids, context=context)
for account in accounts:
if write_pending:
account.write({'state' : 'pending'}, context=context)
remind_user = remind.setdefault(account.manager_id.id, {})
remind_type = remind_user.setdefault(key, {})
remind_partner = remind_type.setdefault(account.partner_id, []).append(account)
# Already expired
fill_remind("old", [('state', 'in', ['pending'])])
# Expires now
fill_remind("new", [('state', 'in', ['draft', 'open']), '|', '&', ('date', '!=', False), ('date', '<=', time.strftime('%Y-%m-%d')), ('is_overdue_quantity', '=', True)], True)
# Expires in less than 30 days
fill_remind("future", [('state', 'in', ['draft', 'open']), ('date', '!=', False), ('date', '<', (datetime.datetime.now() + datetime.timedelta(30)).strftime("%Y-%m-%d"))])
context['base_url'] = self.pool.get('ir.config_parameter').get_param(cr, uid, 'web.base.url')
context['action_id'] = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_analytic_analysis', 'action_account_analytic_overdue_all')[1]
template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account_analytic_analysis', 'account_analytic_cron_email_template')[1]
for user_id, data in remind.items():
context["data"] = data
_logger.debug("Sending reminder to uid %s", user_id)
self.pool.get('email.template').send_mail(cr, uid, template_id, user_id, context=context)
return True
class account_analytic_account_summary_user(osv.osv):
_name = "account_analytic_analysis.summary.user"
@ -538,8 +583,6 @@ class account_analytic_account_summary_user(osv.osv):
lu.user_id as "user",
unit_amount
from lu, mu)''')
account_analytic_account_summary_user()
class account_analytic_account_summary_month(osv.osv):
_name = "account_analytic_analysis.summary.month"
@ -600,6 +643,4 @@ class account_analytic_account_summary_month(osv.osv):
'GROUP BY d.month, d.account_id ' \
')')
account_analytic_account_summary_month()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,15 +1,77 @@
<?xml version="1.0" encoding='UTF-8'?>
<openerp>
<data>
<record id="account_analytic_cron_email_template" model="email.template">
<field name="name">Contract expiration reminder</field>
<field name="email_from">${object.email or ''}</field>
<field name="subject">Contract expiration reminder ${user.company_id.name}</field>
<field name="email_to">${object.email}</field>
<field name="lang">${object.lang}</field>
<field name="model_id" ref="base.model_res_users"/>
<field name="auto_delete" eval="True"/>
<field name="body_html"><![CDATA[
Hello ${object.name},
% macro account_table(values):
<table cellspacing="1" border="1" cellpadding="4">
<tr>
<th>Customer</th>
<th>Contract</th>
<th>Dates</th>
<th>Prepaid Units</th>
<th>Contact</th>
</tr>
% for partner, accounts in values:
% for account in accounts:
<tr>
<td>${partner.name}</td>
<td><a href="${ctx["base_url"]}/#action=${ctx["action_id"]}&id=${account.id}&view_type=form">${account.name}</a></td>
<td>${account.date_start} to ${account.date and account.date or '???'}</td>
<td>
% if account.quantity_max != 0.0:
${account.remaining_hours}/${account.quantity_max} units
% endif
</td>
<td>${account.partner_id.phone or ''}, ${account.partner_id.email or ''}</td>
</tr>
% endfor
% endfor
</table>
% endmacro
% if "new" in ctx["data"]:
<h2>The following contracts just expired: </h2>
${account_table(ctx["data"]["new"].iteritems())}
% endif
% if "old" in ctx["data"]:
<h2>The following expired contracts are still not processed: </h2>
${account_table(ctx["data"]["old"].iteritems())}
% endif
% if "future" in ctx["data"]:
<h2>The following contracts will expire in less than one month: </h2>
${account_table(ctx["data"]["future"].iteritems())}
% endif
</pre>
]]></field>
</record>
<!--
-->
<record model="ir.cron" id="account_analytic_cron">
<field name="name">Analytic Account Report for Sales</field>
<field name="name">Contract expiration reminder</field>
<field name="interval_number">1</field>
<field name="interval_type">weeks</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="'account.analytic.account'" name="model"/>
<field eval="'cron_account_analytic_account'" name="function"/>
<field eval="'()'" name="args"/>
<field name="doall" eval="False"/>
<field name="model" eval="'account.analytic.account'"/>
<field name="function" eval="'cron_account_analytic_account'"/>
<field name="args" eval="'()'" />
</record>
</data>
</openerp>

View File

@ -1,104 +0,0 @@
<openerp>
<data>
<menuitem id="base.menu_invoiced" name="Invoicing" parent="base.menu_base_partner" sequence="5"/>
<record id="action_hr_tree_invoiced_all" model="ir.actions.act_window">
<field name="name">Time &amp; Materials to Invoice</field>
<field name="res_model">account.analytic.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('invoice_id','=',False)]</field>
<field name="context">{'search_default_to_invoice': 1, 'search_default_sales': 1}</field>
<field name="search_view_id" ref="account.view_account_analytic_line_filter"/>
<field name="help" type="html">
<p>
You will find here timesheets and purchases you did for
contracts that can be reinvoiced to the customer. If you want
to record new activities to invoice, you should use the timesheet
menu instead.
</p>
</field>
</record>
<menuitem action="action_hr_tree_invoiced_all" id="menu_action_hr_tree_invoiced_all" parent="base.menu_invoiced" sequence="5"/>
<record id="view_account_analytic_account_overdue_search" model="ir.ui.view">
<field name="name">account.analytic.account.search</field>
<field name="model">account.analytic.account</field>
<field name="arch" type="xml">
<search string="Contracts">
<field name="name" filter_domain="['|', ('name','ilike',self),('code','ilike',self)]" string="Contract"/>
<field name="date"/>
<field name="partner_id"/>
<field name="manager_id"/>
<field name="parent_id"/>
<filter name="open" string="Open" domain="[('state','in',('open','draft'))]" help="Contracts in progress"/>
<filter name="pending" string="Pending" domain="[('state','=','pending')]" help="Pending contracts to renew with your customer"/>
<filter string="To Renew" domain="['|', '&amp;', ('date', '!=', False), ('date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('is_overdue_quantity', '=', True)]" name="renew"
help="The contracts to be renewed because the deadline is passed or the working hours are higher than the allocated hours" />
<separator/>
<filter string="Customer Contracts" help="Contracts assigned to a customer." name="has_partner" domain="[('partner_id', '!=', False)]"/>
<filter string="Contracts not assigned" help="Contracts that are not assigned to an account manager." domain="[('manager_id', '=', False)]"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Account Manager" domain="[]" context="{'group_by':'manager_id'}"/>
<filter string="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Parent" domain="[]" context="{'group_by':'parent_id'}"/>
<filter string="Start Date" domain="[]" context="{'group_by' : 'date_start'}" />
<filter string="End Date" domain="[]" context="{'group_by' : 'date'}" />
</group>
</search>
</field>
</record>
<record id="action_account_analytic_overdue" model="ir.actions.act_window">
<field name="name">Contracts to Renew</field>
<field name="res_model">account.analytic.account</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_manager_id':uid, 'search_default_pending':1, 'search_default_renew':1}</field>
<field name="domain">[('type','=','contract')]</field>
<field name="search_view_id" ref="view_account_analytic_account_overdue_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define a new contract.
</p><p>
You will find here the contracts to be renewed because the
end date is passed or the working effort is higher than the
maximum authorized one.
</p><p>
OpenERP automatically sets contracts to be renewed in a pending
state. After the negociation, the salesman should close or renew
pending contracts.
</p>
</field>
</record>
<menuitem action="action_account_analytic_overdue" id="menu_action_account_analytic_overdue" sequence="50" parent="base.menu_invoiced"/>
<record id="action_account_analytic_overdue_all" model="ir.actions.act_window">
<field name="name">Contracts</field>
<field name="res_model">account.analytic.account</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'default_type':'contract', 'search_default_open':1, 'search_default_pending':1, 'default_manager_id':uid}</field>
<field name="domain">[('type','=','contract')]</field>
<field name="search_view_id" ref="view_account_analytic_account_overdue_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new contract.
</p><p>
Use contracts to follow tasks, issues, timesheets or invoicing based on
work done, expenses and/or sales orders. OpenERP will automatically manage
the alerts for the renewal of the contracts to the right salesperson.
</p>
</field>
</record>
<menuitem id="base.menu_sales" name="Sales"
parent="base.menu_base_partner"
sequence="1"/>
<menuitem action="action_account_analytic_overdue_all" id="menu_action_account_analytic_overdue_all" sequence="7" parent="base.menu_sales"/>
</data>
</openerp>

View File

@ -1,17 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!--
Analytic Account form
-->
<record model="ir.actions.act_window" id="action_sales_order">
<field name="name">Sales Orders</field>
<field name="res_model">sale.order</field>
<field name="src_model">account.analytic.account</field>
</record>
<!-- Inherited Analytic Account form for contracts -->
<record id="account_analytic_account_form_form" model="ir.ui.view">
<field name="name">account.analytic.account.invoice.form.inherit</field>
<field name="model">account.analytic.account</field>
@ -142,19 +138,7 @@
</field>
</record>
<record id="view_account_analytic_account_tree_c2c_3" model="ir.ui.view">
<field name="name">account.analytic.account.tree</field>
<field name="model">account.analytic.account</field>
<field name="inherit_id" ref="account.view_account_analytic_account_list"/>
<field name="arch" type="xml">
<field name="date" position="before">
<field name="last_invoice_date"/>
<field name="toinvoice_total"/>
<field name="remaining_hours"/>
</field>
</field>
</record>
<!-- Inherited Analytic Account form for template required -->
<record id="view_account_analytic_account_template_required" model="ir.ui.view">
<field name="name">account.analytic.account.form.template.required</field>
<field name="model">account.analytic.account</field>
@ -167,6 +151,132 @@
</field>
</record>
<!-- Inherited Analytic Account list for contracts -->
<record id="view_account_analytic_account_tree_c2c_3" model="ir.ui.view">
<field name="name">account.analytic.account.list.contract</field>
<field name="model">account.analytic.account</field>
<field name="inherit_id" ref="account.view_account_analytic_account_list"/>
<field name="arch" type="xml">
<field name="date" position="before">
<field name="last_invoice_date"/>
<field name="toinvoice_total"/>
<field name="remaining_hours"/>
<field name="pricelist_id" invisible="1"/>
</field>
</field>
</record>
<!-- Analytic Account search view for contract -->
<record id="view_account_analytic_account_overdue_search" model="ir.ui.view">
<field name="name">account.analytic.account.search</field>
<field name="model">account.analytic.account</field>
<field name="arch" type="xml">
<search string="Contracts">
<field name="name" filter_domain="['|', ('name','ilike',self),('code','ilike',self)]" string="Contract"/>
<field name="date"/>
<field name="partner_id"/>
<field name="manager_id"/>
<field name="parent_id"/>
<filter name="open" string="In Progress" domain="[('state','in',('open','draft'))]" help="Contracts in progress (open, draft)"/>
<filter name="pending" string="To Renew" domain="[('state','=','pending')]" help="Pending contracts"/>
<filter name="closed" string="Closed" domain="[('state','=','pending')]" help="Closed contracts"/>
<filter name="cancelled" string="Cancelled" domain="[('state','=','cancel')]" help="Cancelled contracts"/>
<separator/>
<filter
string="Expired or consumed"
domain="[('state','in',('open','draft','pending')), '|', '&amp;', ('date', '!=', False), ('date', '&lt;=', time.strftime('%%Y-%%m-%%d')), ('is_overdue_quantity', '=', True)]"
help="End date passed or prepaid unit consumed" />
<filter
string="Expiring soon"
domain="[('date', '!=', False), ('date', '&lt;=', (context_today() + datetime.timedelta(30)).strftime('%%Y-%%m-%%d') )]"
help="End date is in the next month" />
<separator/>
<filter string="Customer Contracts" help="Contracts assigned to a customer." name="has_partner" domain="[('partner_id', '!=', False)]"/>
<filter string="Contracts not assigned" help="Contracts that are not assigned to an account manager." domain="[('manager_id', '=', False)]"/>
<separator/>
<group expand="0" string="Group By...">
<filter string="Status" domain="[]" context="{'group_by':'state'}"/>
<filter string="Account Manager" domain="[]" context="{'group_by':'manager_id'}"/>
<filter string="Partner" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="Parent" domain="[]" context="{'group_by':'parent_id'}"/>
<filter string="Template" domain="[]" context="{'group_by':'template_id'}"/>
<filter string="Start Date" domain="[]" context="{'group_by' : 'date_start'}" />
<filter string="End Date" domain="[]" context="{'group_by' : 'date'}" />
<filter string="Pricelist" domain="[]" context="{'group_by' : 'pricelist_id'}" />
</group>
</search>
</field>
</record>
<!-- Action Sales/Sales/Contracts -->
<record id="action_account_analytic_overdue_all" model="ir.actions.act_window">
<field name="name">Contracts</field>
<field name="res_model">account.analytic.account</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'default_type':'contract', 'search_default_open':1, 'search_default_pending':1, 'default_manager_id':uid}</field>
<field name="domain">[('type','=','contract')]</field>
<field name="search_view_id" ref="view_account_analytic_account_overdue_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create a new contract.
</p><p>
Use contracts to follow tasks, issues, timesheets or invoicing based on
work done, expenses and/or sales orders. OpenERP will automatically manage
the alerts for the renewal of the contracts to the right salesperson.
</p>
</field>
</record>
<menuitem id="base.menu_sales" name="Sales" parent="base.menu_base_partner" sequence="1"/>
<menuitem action="action_account_analytic_overdue_all" id="menu_action_account_analytic_overdue_all" sequence="7" parent="base.menu_sales"/>
<!-- Action Sales/Invoicing/Time and Material to Invoice -->
<record id="action_hr_tree_invoiced_all" model="ir.actions.act_window">
<field name="name">Time &amp; Materials to Invoice</field>
<field name="res_model">account.analytic.line</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('invoice_id','=',False)]</field>
<field name="context">{'search_default_to_invoice': 1, 'search_default_sales': 1}</field>
<field name="search_view_id" ref="account.view_account_analytic_line_filter"/>
<field name="help" type="html">
<p>
You will find here timesheets and purchases you did for
contracts that can be reinvoiced to the customer. If you want
to record new activities to invoice, you should use the timesheet
menu instead.
</p>
</field>
</record>
<menuitem id="base.menu_invoiced" name="Invoicing" parent="base.menu_base_partner" sequence="5"/>
<menuitem action="action_hr_tree_invoiced_all" id="menu_action_hr_tree_invoiced_all" parent="base.menu_invoiced" sequence="5"/>
<!-- Action Sales/Invoicing/Contract to renew -->
<record id="action_account_analytic_overdue" model="ir.actions.act_window">
<field name="name">Contracts to Renew</field>
<field name="res_model">account.analytic.account</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_manager_id':uid, 'search_default_pending':1, 'search_default_renew':1}</field>
<field name="domain">[('type','=','contract')]</field>
<field name="search_view_id" ref="view_account_analytic_account_overdue_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define a new contract.
</p><p>
You will find here the contracts to be renewed because the
end date is passed or the working effort is higher than the
maximum authorized one.
</p><p>
OpenERP automatically sets contracts to be renewed in a pending
state. After the negociation, the salesman should close or renew
pending contracts.
</p>
</field>
</record>
<menuitem action="action_account_analytic_overdue" id="menu_action_account_analytic_overdue" sequence="50" parent="base.menu_invoiced"/>
<!-- Action Sales/Configuration/Contract template -->
<record id="template_of_contract_action" model="ir.actions.act_window">
<field name="name">Contract Template</field>
<field name="type">ir.actions.act_window</field>
@ -184,8 +294,8 @@
terms and conditions of the contract.
</p>
</field>
</record>
<menuitem action="template_of_contract_action" id="menu_template_of_contract_action" parent="base.menu_base_config"/>
</data>
</openerp>

View File

@ -1,79 +0,0 @@
#!/usr/bin/env python
from mako.template import Template
import time
try:
import cStringIO as StringIO
except ImportError:
import StringIO
from openerp import tools
from openerp.osv import osv
MAKO_TEMPLATE = u"""Hello ${user.name},
Here is a list of contracts that have to be renewed for two
possible reasons:
- the end of contract date is passed
- the customer consumed more hours than expected
Can you contact the customer in order to sell a new or renew its contract.
The contract has been set with a pending state, can you update the status
of the analytic account following this rule:
- Set Done: if the customer does not want to renew
- Set Open: if the customer purchased an extra contract
Here is the list of contracts to renew:
% for partner, accounts in partners.iteritems():
* ${partner.name}
% for account in accounts:
- Name: ${account.name}
% if account.quantity_max != 0.0:
- Quantity: ${account.quantity}/${account.quantity_max} hours
% endif
- Dates: ${account.date_start} to ${account.date and account.date or '???'}
- Contacts:
${account.partner_id.name}, ${account.partner_id.phone or ''}, ${account.partner_id.email or ''}
% endfor
% endfor
You can use the report in the menu: Sales > Invoicing > Overdue Accounts
Regards,
--
OpenERP
"""
class analytic_account(osv.osv):
_inherit = 'account.analytic.account'
def cron_account_analytic_account(self, cr, uid, context=None):
domain = [
('name', 'not ilike', 'maintenance'),
('partner_id', '!=', False),
('user_id', '!=', False),
('user_id.email', '!=', False),
('state', 'in', ('draft', 'open')),
'|', ('date', '<', time.strftime('%Y-%m-%d')), ('date', '=', False),
]
account_ids = self.search(cr, uid, domain, context=context, order='name asc')
accounts = self.browse(cr, uid, account_ids, context=context)
users = dict()
for account in accounts:
users.setdefault(account.user_id, dict()).setdefault(account.partner_id, []).append(account)
account.write({'state' : 'pending'}, context=context)
for user, data in users.iteritems():
subject = '[OPENERP] Reporting: Analytic Accounts'
body = Template(MAKO_TEMPLATE).render_unicode(user=user, partners=data)
tools.email_send('noreply@openerp.com', [user.email, ], subject, body)
return True
analytic_account()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,230 @@
# Czech translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-02-20 13:50+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-02-21 05:14+0000\n"
"X-Generator: Launchpad (build 16491)\n"
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on Top"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.top:0
msgid "Open Balance"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
#: view:account.voucher:0
msgid "Print Check"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check in middle"
msgstr ""
#. module: account_check_writing
#: help:res.company,check_layout:0
msgid ""
"Check on top is compatible with Quicken, QuickBooks and Microsoft Money. "
"Check in middle is compatible with Peachtree, ACCPAC and DacEasy. Check on "
"bottom is compatible with Peachtree, ACCPAC and DacEasy only"
msgstr ""
#. module: account_check_writing
#: selection:res.company,check_layout:0
msgid "Check on bottom"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_account_check_write
msgid "Print Check in Batch"
msgstr ""
#. module: account_check_writing
#: code:addons/account_check_writing/wizard/account_check_batch_printing.py:59
#, python-format
msgid "One of the printed check already got a number."
msgstr ""
#. module: account_check_writing
#: help:account.journal,allow_check_writing:0
msgid "Check this if the journal is to be used for writing checks."
msgstr ""
#. module: account_check_writing
#: field:account.journal,allow_check_writing:0
msgid "Allow Check writing"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Description"
msgstr "Popis"
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_journal
msgid "Journal"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,name:account_check_writing.action_write_check
#: model:ir.ui.menu,name:account_check_writing.menu_action_write_check
msgid "Write Checks"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Discount"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Original Amount"
msgstr ""
#. module: account_check_writing
#: field:res.company,check_layout:0
msgid "Check Layout"
msgstr ""
#. module: account_check_writing
#: field:account.voucher,allow_check:0
msgid "Allow Check Writing"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Payment"
msgstr ""
#. module: account_check_writing
#: field:account.journal,use_preprint_check:0
msgid "Use Preprinted Check"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_bottom
msgid "Print Check (Bottom)"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.act_window,help:account_check_writing.action_write_check
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to create a new check. \n"
" </p><p>\n"
" The check payment form allows you to track the payment you "
"do\n"
" to your suppliers using checks. When you select a supplier, "
"the\n"
" payment method and an amount for the payment, OpenERP will\n"
" propose to reconcile your payment with the open supplier\n"
" invoices or bills.\n"
" </p>\n"
" "
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Due Date"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_middle
msgid "Print Check (Middle)"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_res_company
msgid "Companies"
msgstr ""
#. module: account_check_writing
#: code:addons/account_check_writing/wizard/account_check_batch_printing.py:59
#, python-format
msgid "Error!"
msgstr ""
#. module: account_check_writing
#: help:account.check.write,check_number:0
msgid "The number of the next check number to be printed."
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
msgid "Balance Due"
msgstr ""
#. module: account_check_writing
#: model:ir.actions.report.xml,name:account_check_writing.account_print_check_top
msgid "Print Check (Top)"
msgstr ""
#. module: account_check_writing
#: report:account.print.check.bottom:0
#: report:account.print.check.middle:0
#: report:account.print.check.top:0
msgid "Check Amount"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_voucher
msgid "Accounting Voucher"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
msgid "or"
msgstr ""
#. module: account_check_writing
#: field:account.voucher,amount_in_word:0
msgid "Amount in Word"
msgstr ""
#. module: account_check_writing
#: model:ir.model,name:account_check_writing.model_account_check_write
msgid "Prin Check in Batch"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
msgid "Cancel"
msgstr ""
#. module: account_check_writing
#: field:account.check.write,check_number:0
msgid "Next Check Number"
msgstr ""
#. module: account_check_writing
#: view:account.check.write:0
msgid "Check"
msgstr ""

View File

@ -26,8 +26,6 @@ from openerp import tools
from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp import SUPERUSER_ID
class account_followup_stat_by_partner(osv.osv):
_name = "account_followup.stat.by.partner"
_description = "Follow-up Statistics by Partner"
@ -315,13 +313,6 @@ class account_followup_print(osv.osv_memory):
if stat_line_id not in partner_list:
partner_list.append(stat_line_id)
to_update[str(id)]= {'level': fups[followup_line_id][1], 'partner_id': stat_line_id}
#Remove partners that are other companies in OpenERP
comp_obj = self.pool.get("res.company")
comp_ids = comp_obj.search(cr, SUPERUSER_ID, [], context=context)
for comp in comp_obj.browse(cr, SUPERUSER_ID, comp_ids, context=context):
company_partner_wiz_id = comp.partner_id.id * 10000 + company_id
if company_partner_wiz_id in partner_list:
partner_list.remove(company_partner_wiz_id)
return {'partner_ids': partner_list, 'to_update': to_update}
account_followup_print()

View File

@ -61,6 +61,7 @@ This module manages:
'account_voucher_data.xml',
],
'test' : [
'test/account_voucher_users.yml',
'test/case5_suppl_usd_usd.yml',
'test/account_voucher.yml',
'test/sales_receipt.yml',

View File

@ -1,3 +1,9 @@
-
I check the voucher module with user who is accountant.
-
!context
uid: 'res_users_account_voucher_user'
-
In order to check account voucher module in OpenERP I create a customer voucher
-

View File

@ -0,0 +1,20 @@
-
Create a user as 'Accountant for voucher'
-
!record {model: res.users, id: res_users_account_voucher_user}:
company_id: base.main_company
name: Voucher Accountant
login: vacc
password: acc
groups_id:
- account.group_account_user
-
Create a user as 'Financial Manager for account voucher'
-
!record {model: res.users, id: res_users_account_voucher_manager}:
company_id: base.main_company
name: Financial Manager for voucher
login: fmv
password: fmv
groups_id:
- account.group_account_manager

View File

@ -1,4 +1,9 @@
##YAML test on the account_voucher as depicted in this bug report: https://bugs.launchpad.net/openobject-addons/+bug/954155
-
Only manager can create and take decision about bank and currency there I checkd this test with user who is finance manager.
-
!context
uid: 'res_users_account_voucher_manager'
-
In order to check the payment with multi-currency in OpenERP,
I create an invoice in EUR and make payment in USD based on the currency rating.

View File

@ -1,3 +1,8 @@
-
I test sales payment with user who is accountant.
-
!context
uid: 'res_users_account_voucher_user'
-
Create an invoice for the partner Seagate with amount 450.0
-

View File

@ -1,3 +1,8 @@
-
Accountant can also be created receipt and validate it there for I checked it with that user who is accountant.
-
!context
uid: 'res_users_account_voucher_user'
-
Creating a Voucher Receipt for partner Seagate with amount 30000.0
-

View File

@ -196,7 +196,7 @@ class account_analytic_account(osv.osv):
'date_start': fields.date('Start Date'),
'date': fields.date('Date End', select=True),
'company_id': fields.many2one('res.company', 'Company', required=False), #not required because we want to allow different companies to use the same chart of account, except for leaf accounts.
'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'), ('cancelled', 'Cancelled'),('pending','To Renew'),('close','Closed')], 'Status', required=True, track_visibility='onchange'),
'state': fields.selection([('template', 'Template'),('draft','New'),('open','In Progress'),('pending','To Renew'),('close','Closed'),('cancelled', 'Cancelled')], 'Status', required=True, track_visibility='onchange'),
'currency_id': fields.function(_currency, fnct_inv=_set_company_currency, #the currency_id field is readonly except if it's a view account and if there is no company
store = {
'res.company': (_get_analytic_account, ['currency_id'], 10),
@ -258,6 +258,9 @@ class account_analytic_account(osv.osv):
(check_recursion, 'Error! You cannot create recursive analytic accounts.', ['parent_id']),
]
def name_create(self, cr, uid, name, context=None):
raise osv.except_osv(_('Warning'), _("Quick account creation disallowed."))
def copy(self, cr, uid, id, default=None, context=None):
if not default:
default = {}
@ -349,6 +352,4 @@ class account_analytic_line(osv.osv):
(_check_no_view, 'You cannot create analytic line on view account.', ['account_id']),
]
account_analytic_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -41,7 +41,7 @@ class res_users(osv.Model):
state = simplejson.loads(params['state'])
token = state.get('t')
oauth_uid = validation['user_id']
email = validation.get('email', 'provider_%d_user_%d' % (provider, oauth_uid))
email = validation.get('email', 'provider_%s_user_%s' % (provider, oauth_uid))
name = validation.get('name', email)
values = {
'name': name,

View File

@ -21,8 +21,8 @@
<!-- add Reset Password button -->
<xpath expr="//div[@class='oe_right oe_button_box']" position="replace">
<div class="oe_right oe_button_box">
<button string="Reset Password" type="object" name="action_reset_password"
help="Send an email to the user to (re)set their password."/>
<button string="Send reset password instructions by email"
type="object" name="action_reset_password" />
</div>
</xpath>
</field>

View File

@ -587,27 +587,25 @@ class crm_lead(base_stage, format_address, osv.osv):
return True
def _merge_opportunity_attachments(self, cr, uid, opportunity_id, opportunities, context=None):
attachment = self.pool.get('ir.attachment')
attach_obj = self.pool.get('ir.attachment')
# return attachments of opportunity
def _get_attachments(opportunity_id):
attachment_ids = attachment.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', opportunity_id)], context=context)
return attachment.browse(cr, uid, attachment_ids, context=context)
attachment_ids = attach_obj.search(cr, uid, [('res_model', '=', self._name), ('res_id', '=', opportunity_id)], context=context)
return attach_obj.browse(cr, uid, attachment_ids, context=context)
count = 1
first_attachments = _get_attachments(opportunity_id)
#counter of all attachments to move. Used to make sure the name is different for all attachments
count = 1
for opportunity in opportunities:
attachments = _get_attachments(opportunity.id)
for first in first_attachments:
for attachment in attachments:
if attachment.name == first.name:
values = dict(
name = "%s (%s)" % (attachment.name, count,),
res_id = opportunity_id,
)
attachment.write(values)
count+=1
for attachment in attachments:
values = {'res_id': opportunity_id,}
for attachment_in_first in first_attachments:
if attachment.name == attachment_in_first.name:
name = "%s (%s)" % (attachment.name, count,),
count+=1
attachment.write(values)
return True
def merge_opportunity(self, cr, uid, ids, context=None):

View File

@ -2,7 +2,6 @@
<openerp>
<data>
<!--
CRM CASE STAGE
-->
@ -110,7 +109,7 @@
string="Phone Calls"/>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only" string="Lead Description"/>
<label for="name" class="oe_edit_only"/>
<h1><field name="name" placeholder="Describe the lead..."/></h1>
</div>
<group>
@ -217,9 +216,8 @@
<field name="arch" type="xml">
<tree string="Leads" fonts="bold:message_unread==True" colors="grey:state in ('cancel', 'done')">
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="create_date"/>
<field name="name"/>
<field name="type"/>
<field name="contact_name"/>
<field name="country_id" invisible="context.get('invisible_country', True)"/>
<field name="email_from"/>
@ -390,8 +388,7 @@
<button string="Meeting"
name="action_makeMeeting"
type="object"
context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"
/>
context="{'search_default_attendee_id': active_id, 'default_attendee_id' : active_id}"/>
</div>
<div class="oe_title">
<label for="name" class="oe_edit_only"/>
@ -512,7 +509,7 @@
<field name="arch" type="xml">
<tree string="Opportunities" fonts="bold:message_unread==True" colors="gray:state in ('cancel', 'done');red:date_deadline and (date_deadline &lt; current_date)">
<field name="date_deadline" invisible="1"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="create_date"/>
<field name="name" string="Opportunity"/>
<field name="partner_id" string="Customer"/>
<field name="country_id" invisible="context.get('invisible_country', True)"/>
@ -527,8 +524,8 @@
<field name="user_id"/>
<field name="referred" invisible="1"/>
<field name="priority" invisible="1"/>
<field name="state" groups="base.group_no_one"/>
<field name="message_unread" invisible="1"/>
<field name="state" invisible="1"/>
</tree>
</field>
</record>

View File

@ -45,8 +45,8 @@ class test_message_compose(TestMailBase):
# Mail data
_subject1 = 'Pigs'
_subject2 = 'Bird'
_body_html1 = '<div><p>Fans of Pigs, unite !\n</p><p>Admin</p></div>'
_body_html2 = '<div><p>I am angry !\n</p><p>Admin</p></div>'
_body_html1 = 'Fans of Pigs, unite !'
_body_html2 = 'I am angry !'
_attachments = [
{'name': 'First', 'datas_fname': 'first.txt', 'datas': base64.b64encode('My first attachment')},
{'name': 'Second', 'datas_fname': 'second.txt', 'datas': base64.b64encode('My second attachment')}
@ -113,7 +113,7 @@ class test_message_compose(TestMailBase):
partner_ids = self.res_partner.search(cr, uid, [('email', 'in', ['b@b.b', 'c@c.c', 'd@d.d'])])
# Test: mail.compose.message: subject, body, partner_ids
self.assertEqual(compose.subject, _subject1, 'mail.compose.message subject incorrect')
self.assertEqual(compose.body, _body_html1, 'mail.compose.message body incorrect')
self.assertIn(_body_html1, compose.body, 'mail.compose.message body incorrect')
self.assertEqual(set(message_pids), set(partner_ids), 'mail.compose.message partner_ids incorrect')
# Test: mail.compose.message: attachments
# Test: mail.message: attachments
@ -159,8 +159,8 @@ class test_message_compose(TestMailBase):
# Test: subject, body
self.assertEqual(message_pigs.subject, _subject1, 'mail.message subject on Pigs incorrect')
self.assertEqual(message_bird.subject, _subject2, 'mail.message subject on Bird incorrect')
self.assertEqual(message_pigs.body, _body_html1, 'mail.message body on Pigs incorrect')
self.assertEqual(message_bird.body, _body_html2, 'mail.message body on Bird incorrect')
self.assertIn(_body_html1, message_pigs.body, 'mail.message body on Pigs incorrect')
self.assertIn(_body_html2, message_bird.body, 'mail.message body on Bird incorrect')
# Test: partner_ids: p_a_id (default) + 3 newly created partners
message_pigs_pids = [partner.id for partner in message_pigs.notified_partner_ids]
message_bird_pids = [partner.id for partner in message_bird.notified_partner_ids]

View File

@ -150,8 +150,8 @@ class mail_compose_message(osv.TransientModel):
values = {}
# get values to return
email_dict = super(mail_compose_message, self).render_message(cr, uid, wizard, res_id, context)
email_dict.update(values)
return email_dict
values.update(email_dict)
return values
def render_template(self, cr, uid, template, model, res_id, context=None):
return self.pool.get('email.template').render_template(cr, uid, template, model, res_id, context=context)

View File

@ -49,7 +49,7 @@
</group>
<group string="Actions to Perform on Incoming Mails">
<field name="object_id" on_change="onchange_server_type(type, is_ssl, object_id)"/>
<field name="action_id"/>
<field name="action_id" groups="base.group_no_one"/>
</group>
<group attrs="{'invisible' : [('type', '!=', 'local')]}" string="Configuration">
<field name="configuration" colspan="4"/>

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2012-05-17 13:22+0000\n"
"Last-Translator: Herczeg Péter <hp@erp-cloud.hu>\n"
"PO-Revision-Date: 2013-02-20 14:04+0000\n"
"Last-Translator: krnkris <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: 2012-12-22 05:58+0000\n"
"X-Generator: Launchpad (build 16378)\n"
"X-Launchpad-Export-Date: 2013-02-21 05:14+0000\n"
"X-Generator: Launchpad (build 16491)\n"
#. module: hr_recruitment
#: help:hr.applicant,active:0
@ -22,6 +22,8 @@ msgid ""
"If the active field is set to false, it will allow you to hide the case "
"without removing it."
msgstr ""
"Ha az aktív mező hamisra van állítva, akkor lehetővé teszi az eset "
"eltüntetését, annak eltávolítása nélkül."
#. module: hr_recruitment
#: view:hr.recruitment.stage:0
@ -37,12 +39,12 @@ msgstr ""
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Start Interview"
msgstr ""
msgstr "Interjú elindítás"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Mobile:"
msgstr ""
msgstr "Mobil:"
#. module: hr_recruitment
#: help:hr.recruitment.stage,fold:0
@ -50,6 +52,8 @@ msgid ""
"This stage is not visible, for example in status bar or kanban view, when "
"there are no records in that stage to display."
msgstr ""
"Ez a szint nem látható, például az állapot sorban vagy kanban nézetben, ha "
"azon a szinten nem lehet rekordot kijelezni."
#. module: hr_recruitment
#: model:hr.recruitment.degree,name:hr_recruitment.degree_graduate
@ -59,12 +63,12 @@ msgstr "Diplomás"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Group By..."
msgstr "Csoportosítás..."
msgstr "Csoportosítás ezzel..."
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Filter and view on next actions and date"
msgstr ""
msgstr "Szűrés és nézet a következő műveletnél és dátumnál"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -82,7 +86,7 @@ msgstr "Következő művelet időpontja"
#. module: hr_recruitment
#: field:hr.applicant,salary_expected_extra:0
msgid "Expected Salary Extra"
msgstr ""
msgstr "Elvárt extra jövedelem"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
@ -98,7 +102,7 @@ msgstr "Függő állások"
#: view:hr.applicant:0
#: field:hr.applicant,message_unread:0
msgid "Unread Messages"
msgstr ""
msgstr "Olvasatlan üzenetek"
#. module: hr_recruitment
#: field:hr.applicant,company_id:0
@ -112,13 +116,13 @@ msgstr "Vállalat"
#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_source_action
#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_source
msgid "Sources of Applicants"
msgstr ""
msgstr "Pályázók forrása"
#. module: hr_recruitment
#: code:addons/hr_recruitment/hr_recruitment.py:435
#, python-format
msgid "You must define Applied Job for this applicant."
msgstr ""
msgstr "Meg kell határoznia egy betöltött állást ehhez a jelentkezőhöz"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -128,7 +132,7 @@ msgstr "Munka"
#. module: hr_recruitment
#: field:hr.recruitment.partner.create,close:0
msgid "Close job request"
msgstr ""
msgstr "Állás igénylés lezárása"
#. module: hr_recruitment
#: model:ir.actions.act_window,help:hr_recruitment.crm_case_categ0_act_job
@ -151,12 +155,29 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Kattintson új állásra jelentkező hozzáadásához.\n"
" </p><p>\n"
" OpenERP segít a jelentkezők nyomon követéséhez a felvétel\n"
" folyamatában és az összes művelet nyomon követésében: "
"találkozók, interjúk, stb.\n"
" </p><p>\n"
" Ha beállította az e-mail csatornát, akkor a jelentkezők és "
"azok \n"
" melléklet CV önéletrajza automatikusan létre lesz hozva ha e-"
"mailt küld ide\n"
" munka@azönvállalkozása.com. Ha a dokumentum kezelő modult\n"
" telepíti, minden szakmai önéletrajz automatikusan indexelve "
"lesz, így\n"
" könnyen kereshet a teljes tartalomban.\n"
" </p>\n"
" "
#. module: hr_recruitment
#: model:ir.actions.act_window,name:hr_recruitment.crm_case_categ0_act_job
#: model:ir.ui.menu,name:hr_recruitment.menu_crm_case_categ0_act_job
msgid "Applications"
msgstr ""
msgstr "Alkalmazások"
#. module: hr_recruitment
#: field:hr.applicant,day_open:0
@ -166,12 +187,12 @@ msgstr "Megnyitásig hátralévő napok"
#. module: hr_recruitment
#: field:hr.applicant,emp_id:0
msgid "employee"
msgstr ""
msgstr "Alkalmazott"
#. module: hr_recruitment
#: field:hr.config.settings,fetchmail_applicants:0
msgid "Create applicants from an incoming email account"
msgstr ""
msgstr "Jelentkező létrehozása egy beérkezett e-mail fiókból"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
@ -183,7 +204,7 @@ msgstr "Nap"
#: view:hr.recruitment.partner.create:0
#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_partner_create
msgid "Create Contact"
msgstr ""
msgstr "Kapcsolat létrehozása"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -193,7 +214,7 @@ msgstr "Visszautasít"
#. module: hr_recruitment
#: model:hr.recruitment.degree,name:hr_recruitment.degree_licenced
msgid "Master Degree"
msgstr ""
msgstr "Mester fokozat"
#. module: hr_recruitment
#: field:hr.applicant,partner_mobile:0
@ -215,12 +236,12 @@ msgstr "Következő műveletek"
#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:56
#, python-format
msgid "Error!"
msgstr ""
msgstr "Hiba!"
#. module: hr_recruitment
#: model:hr.recruitment.degree,name:hr_recruitment.degree_bac5
msgid "Doctoral Degree"
msgstr ""
msgstr "Doktorátusi fokozat"
#. module: hr_recruitment
#: field:hr.applicant,job_id:0
@ -234,21 +255,23 @@ msgid ""
"Stages of the recruitment process may be different per department. If this "
"stage is common to all departments, keep this field empty."
msgstr ""
"A toborzás szakaszai eltérhetnek osztályonként. Ha ez a szakasz minden "
"osztálynak közös, akkor ezt a mezőt hagyja üresen."
#. module: hr_recruitment
#: help:hr.applicant,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
msgstr "Ha be van jelölve, akkor figyelje az új üzeneteket."
#. module: hr_recruitment
#: field:hr.applicant,color:0
msgid "Color Index"
msgstr ""
msgstr "Szín meghatározó"
#. module: hr_recruitment
#: model:ir.actions.act_window,name:hr_recruitment.act_hr_applicant_to_meeting
msgid "Meetings"
msgstr ""
msgstr "Találkozók"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -259,12 +282,12 @@ msgstr "Pályázók státusza"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "My Recruitment"
msgstr ""
msgstr "Én toborzásaim"
#. module: hr_recruitment
#: field:hr.job,survey_id:0
msgid "Interview Form"
msgstr ""
msgstr "Interjú űrlap"
#. module: hr_recruitment
#: help:hr.job,survey_id:0
@ -272,6 +295,9 @@ msgid ""
"Choose an interview form for this job position and you will be able to "
"print/answer this interview from all applicants who apply for this job"
msgstr ""
"Vállaaszon ki egy interjú űrlapot ehhez az álláshoz és akkor ki tudja "
"nyomtatni/ meg tudja válaszolni ezt az interjút azokkal a jelentkezőkkel "
"akik jelentkeztek erre az állásra."
#. module: hr_recruitment
#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_recruitment
@ -284,12 +310,14 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"A chettelés összegzést megállítja (üzenetek száma,...). Ez az összegzés "
"direkt HTML formátumú ahhoz hogy beilleszthető legyen a kanban nézetekbe."
#. module: hr_recruitment
#: code:addons/hr_recruitment/hr_recruitment.py:435
#, python-format
msgid "Warning!"
msgstr ""
msgstr "Figyelem!"
#. module: hr_recruitment
#: field:hr.recruitment.report,salary_prop:0
@ -323,7 +351,7 @@ msgstr "Javasolt fizetés"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_recruitment_source
msgid "Source of Applicants"
msgstr ""
msgstr "Jelentkezők forrása"
#. module: hr_recruitment
#: view:hr.recruitment.partner.create:0
@ -338,12 +366,12 @@ msgstr "Toborzási statisztika"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Print interview report"
msgstr ""
msgstr "Interjú jelentés nyomtatás"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "Hired employees"
msgstr ""
msgstr "Felvett alkalmazottak"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_job
@ -354,22 +382,22 @@ msgstr "Munkaköri leírás"
#: view:hr.applicant:0
#: field:hr.applicant,source_id:0
msgid "Source"
msgstr ""
msgstr "Forrás"
#. module: hr_recruitment
#: field:hr.applicant,message_follower_ids:0
msgid "Followers"
msgstr ""
msgstr "Követők"
#. module: hr_recruitment
#: model:hr.recruitment.source,name:hr_recruitment.source_monster
msgid "Monster"
msgstr ""
msgstr "Monster/szörny"
#. module: hr_recruitment
#: model:mail.message.subtype,name:hr_recruitment.mt_applicant_hired
msgid "Applicant Hired"
msgstr ""
msgstr "Felvett jelentkező"
#. module: hr_recruitment
#: field:hr.applicant,email_from:0
@ -389,6 +417,14 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Kattintson a felvételi folyamat új szakaszának hozzáadásához.\n"
" </p><p>\n"
" Itt határozza meg a felvételi folyamatok szakaszait, például:\n"
" képzésre felhívás, első interjú, második interjú, elutasított,\n"
" felvett.\n"
" </p>\n"
" "
#. module: hr_recruitment
#: view:hr.recruitment.report:0
@ -406,6 +442,8 @@ msgid ""
"Email alias for this job position. New emails will automatically create new "
"applicants for this job position."
msgstr ""
"e-mail álnév ehhez az állás pozícióhoz. Ide érkező új e-mailek automatikusan "
"létrehoznak jelentkezőket erre az állásra."
#. module: hr_recruitment
#: selection:hr.applicant,priority:0
@ -429,7 +467,7 @@ msgstr "Létrehozás dátuma"
#: model:ir.actions.act_window,name:hr_recruitment.action_hr_recruitment_hired_employee
#: model:ir.model,name:hr_recruitment.model_hired_employee
msgid "Create Employee"
msgstr ""
msgstr "Alkalmazott létrehozás"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -441,12 +479,12 @@ msgstr "Elismerés"
#. module: hr_recruitment
#: model:hr.recruitment.stage,name:hr_recruitment.stage_job1
msgid "Initial Qualification"
msgstr ""
msgstr "Elsődleges végzettség"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Print Interview"
msgstr ""
msgstr "Interjú kinyomtatás"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -465,7 +503,7 @@ msgstr "Második interjú"
#. module: hr_recruitment
#: model:ir.actions.act_window,name:hr_recruitment.hr_job_stage_act
msgid "Recruitment / Applicants Stages"
msgstr ""
msgstr "Toborzás / Pályázati szakaszok"
#. module: hr_recruitment
#: field:hr.applicant,salary_expected:0
@ -481,7 +519,7 @@ msgstr "Július"
#. module: hr_recruitment
#: field:hr.applicant,email_cc:0
msgid "Watchers Emails"
msgstr ""
msgstr "Email örző"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -492,7 +530,7 @@ msgstr "Pályázók"
#: code:addons/hr_recruitment/hr_recruitment.py:351
#, python-format
msgid "No Subject"
msgstr ""
msgstr "Nincs tárgy"
#. module: hr_recruitment
#: field:hr.recruitment.report,salary_exp:0
@ -507,7 +545,7 @@ msgstr "Pályázó"
#. module: hr_recruitment
#: help:hr.recruitment.stage,sequence:0
msgid "Gives the sequence order when displaying a list of stages."
msgstr ""
msgstr "Sorozati rendet ad a szakaszok lista nézetében."
#. module: hr_recruitment
#: field:hr.applicant,partner_id:0
@ -517,7 +555,7 @@ msgstr "Kapcsolat"
#. module: hr_recruitment
#: help:hr.applicant,salary_expected_extra:0
msgid "Salary Expected by Applicant, extra advantages"
msgstr ""
msgstr "A jelentkező által elvárt fizetés, extra előnyök"
#. module: hr_recruitment
#: help:hr.applicant,state:0
@ -528,6 +566,11 @@ msgid ""
"the case needs to be reviewed then the status is set "
"to 'Pending'."
msgstr ""
"Az állapot 'Terv', az ügy létrehozásakor. Ha az ügy "
"folyamatban van akkor az állapota 'Nyitott'. Ha az ügy "
"elintézve akkor az állapota 'Elvégezve'. Ha az ügyet át "
"kell tekinteni akkor az állapota be lesz állítva "
"'Függőben'."
#. module: hr_recruitment
#: selection:hr.recruitment.report,month:0
@ -544,7 +587,7 @@ msgstr "Szakaszok"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "Draft recruitment"
msgstr ""
msgstr "Toborzás tervezet"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -559,12 +602,12 @@ msgstr "Folyamatban"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Hire & Create Employee"
msgstr ""
msgstr "Felvétel & alkalmazott létrehozás"
#. module: hr_recruitment
#: model:mail.message.subtype,description:hr_recruitment.mt_applicant_hired
msgid "Applicant hired"
msgstr ""
msgstr "Jelentkező felvéve"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -595,17 +638,17 @@ msgstr "December"
#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:39
#, python-format
msgid "A contact is already defined on this job request."
msgstr ""
msgstr "Ehhez az állás igényléshez már van kapcsolat meghatározva."
#. module: hr_recruitment
#: field:hr.applicant,categ_ids:0
msgid "Tags"
msgstr ""
msgstr "Címkék"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_applicant_category
msgid "Category of applicant"
msgstr ""
msgstr "Jelentkező kategóriája"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
@ -616,7 +659,7 @@ msgstr "Hónap"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Answer related job question"
msgstr ""
msgstr "Kapcsolódó állás kérdés válasza"
#. module: hr_recruitment
#: model:hr.recruitment.stage,name:hr_recruitment.stage_job2
@ -643,17 +686,17 @@ msgstr "Tárgy"
#: view:hired.employee:0
#: view:hr.recruitment.partner.create:0
msgid "or"
msgstr ""
msgstr "vagy"
#. module: hr_recruitment
#: model:mail.message.subtype,name:hr_recruitment.mt_applicant_refused
msgid "Applicant Refused"
msgstr ""
msgstr "Jelentkező elutasítva"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Schedule Meeting"
msgstr ""
msgstr "Találkozó ütemezése"
#. module: hr_recruitment
#: field:hr.applicant,partner_name:0
@ -694,7 +737,7 @@ msgstr "Várható fizetések kérelmezőnként"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "All Initial Jobs"
msgstr ""
msgstr "Munden elsődleges állás"
#. module: hr_recruitment
#: help:hr.applicant,email_cc:0
@ -703,11 +746,14 @@ msgid ""
"outbound emails for this record before being sent. Separate multiple email "
"addresses with a comma"
msgstr ""
"Ezek az email címek lesznek hozzáadva a CC /Carbon copy,másolat/ mezőhöz "
"minden bejövő és kimenő email-hez amit ezzel a feljegyzéssel küld. Több "
"email felsorolását vesszővel elválasztva adja meg."
#. module: hr_recruitment
#: model:ir.ui.menu,name:hr_recruitment.menu_hr_recruitment_degree
msgid "Degrees"
msgstr ""
msgstr "Fokozat"
#. module: hr_recruitment
#: field:hr.applicant,date_closed:0
@ -723,7 +769,7 @@ msgstr "Szakasz meghatározása"
#. module: hr_recruitment
#: field:hr.recruitment.report,delay_close:0
msgid "Avg. Delay to Close"
msgstr ""
msgstr "Átl. bezárási idő"
#. module: hr_recruitment
#: help:hr.applicant,salary_proposed:0
@ -749,13 +795,13 @@ msgstr "Státusz"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Schedule interview with this applicant"
msgstr ""
msgstr "Ennek a jelentkezőnek az interjú ütemezése"
#. module: hr_recruitment
#: code:addons/hr_recruitment/hr_recruitment.py:397
#, python-format
msgid "Applicant <b>created</b>"
msgstr ""
msgstr "Jelentkező <b>létrehozva</b>"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -785,7 +831,7 @@ msgstr "Lezárásig hátralévő napok"
#. module: hr_recruitment
#: field:hr.applicant,message_is_follower:0
msgid "Is a Follower"
msgstr ""
msgstr "Ez egy követő"
#. module: hr_recruitment
#: field:hr.recruitment.report,user_id:0
@ -807,7 +853,7 @@ msgstr "Aktív"
#: view:hr.recruitment.report:0
#: field:hr.recruitment.report,nbr:0
msgid "# of Applications"
msgstr ""
msgstr "# Pályázati kiírás"
#. module: hr_recruitment
#: model:ir.actions.act_window,help:hr_recruitment.hr_recruitment_stage_act
@ -821,6 +867,14 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Kattintson a toborzás új szakaszának hozzáadásához.\n"
" </p><p>\n"
" Ne felejtse el részletezni az osztály megadását ha a toborzási "
"folyamatai\n"
" eltérőek az állással illetően.\n"
" </p>\n"
" "
#. module: hr_recruitment
#: field:hr.applicant,response:0
@ -835,12 +889,12 @@ msgstr "Október"
#. module: hr_recruitment
#: field:hr.config.settings,module_document_ftp:0
msgid "Allow the automatic indexation of resumes"
msgstr ""
msgstr "Engedje meg az önéletrajzok automatikus inexálását"
#. module: hr_recruitment
#: field:hr.applicant,salary_proposed_extra:0
msgid "Proposed Salary Extra"
msgstr ""
msgstr "Javasolt kiegészítő jövedelem"
#. module: hr_recruitment
#: selection:hr.recruitment.report,month:0
@ -851,17 +905,17 @@ msgstr "Január"
#: code:addons/hr_recruitment/wizard/hr_recruitment_create_partner_job.py:56
#, python-format
msgid "A contact is already existing with the same name."
msgstr ""
msgstr "Ezzel a névvel már létezik kapcsolat."
#. module: hr_recruitment
#: model:ir.actions.act_window,name:hr_recruitment.hr_recruitment_stage_form_installer
msgid "Review Recruitment Stages"
msgstr ""
msgstr "Toborzási szakaszok felülvizsgálata"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Contact:"
msgstr ""
msgstr "Kapcsolat:"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -882,12 +936,12 @@ msgstr "Felmérés"
#. module: hr_recruitment
#: view:hired.employee:0
msgid "Would you like to create an employee ?"
msgstr ""
msgstr "Létre akar hozni egy alkalmazottat?"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Degree:"
msgstr ""
msgstr "Fok:"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
@ -901,11 +955,14 @@ msgid ""
"forget to specify the department if your recruitment process is different "
"according to the job position."
msgstr ""
"Jelölje, ha a következő állapot egyezik a toborzási folyamatával. Ne "
"felejtse az osztály meghatározását ha a toborzási folyamat különbözik a "
"betöltendő állástól."
#. module: hr_recruitment
#: view:hr.config.settings:0
msgid "Configure"
msgstr ""
msgstr "Beállítás"
#. module: hr_recruitment
#: model:hr.recruitment.stage,name:hr_recruitment.stage_job4
@ -920,7 +977,7 @@ msgstr "Cég weboldala"
#. module: hr_recruitment
#: sql_constraint:hr.recruitment.degree:0
msgid "The name of the Degree of Recruitment must be unique!"
msgstr ""
msgstr "A toborzási fok nevének egyedinek kell lennie!"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
@ -938,6 +995,7 @@ msgstr "Mégse"
#: view:hr.recruitment.partner.create:0
msgid "Are you sure you want to create a contact based on this job request ?"
msgstr ""
"Bizton létre akarja hozni a kapcsolati űrlapot az állás igénylés alapján?"
#. module: hr_recruitment
#: help:hr.config.settings,fetchmail_applicants:0
@ -946,6 +1004,9 @@ msgid ""
"(jobs@mycompany.com),\n"
" and create automatically application documents in the system."
msgstr ""
"Lehetővé teszi a jelentkezőknek, hogy a jelentkezésüket egy e-mail címre "
"elküldjék (munka@azönvállalkozása.com),\n"
" és automatikus jelentkezési lapot hozzon létre a rendszerben."
#. module: hr_recruitment
#: view:hr.applicant:0
@ -957,17 +1018,17 @@ msgstr "Folyamatban"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Subject / Applicant"
msgstr ""
msgstr "Tárgy / Jelentkező"
#. module: hr_recruitment
#: help:hr.recruitment.degree,sequence:0
msgid "Gives the sequence order when displaying a list of degrees."
msgstr ""
msgstr "Sorrendet ad a fokozatok listakénti megjelenítésénél."
#. module: hr_recruitment
#: model:mail.message.subtype,description:hr_recruitment.mt_stage_changed
msgid "Stage changed"
msgstr ""
msgstr "Szakasz megváltoztatva"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -986,17 +1047,17 @@ msgstr "Toborzás elemzése"
#. module: hr_recruitment
#: view:hired.employee:0
msgid "Create New Employee"
msgstr ""
msgstr "Új alkalmazott létrehozása"
#. module: hr_recruitment
#: model:hr.recruitment.source,name:hr_recruitment.source_linkedin
msgid "LinkedIn"
msgstr ""
msgstr "LinkedIn"
#. module: hr_recruitment
#: model:mail.message.subtype,name:hr_recruitment.mt_job_new_applicant
msgid "New Applicant"
msgstr ""
msgstr "Új pályázó"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_recruitment_stage
@ -1006,7 +1067,7 @@ msgstr "Toborzási szakasz"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Cases By Stage and Estimates"
msgstr ""
msgstr "Szakasz és lehetőségenkénti esetek"
#. module: hr_recruitment
#: view:hr.applicant:0
@ -1026,12 +1087,12 @@ msgstr "Interjú"
#. module: hr_recruitment
#: field:hr.recruitment.source,name:0
msgid "Source Name"
msgstr ""
msgstr "Forrásnév"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Day(s)"
msgstr ""
msgstr "Nap(ok)"
#. module: hr_recruitment
#: field:hr.applicant,description:0
@ -1041,7 +1102,7 @@ msgstr "Leírás"
#. module: hr_recruitment
#: model:mail.message.subtype,name:hr_recruitment.mt_stage_changed
msgid "Stage Changed"
msgstr ""
msgstr "Szint megváltoztatva"
#. module: hr_recruitment
#: selection:hr.recruitment.report,month:0
@ -1061,7 +1122,7 @@ msgstr ""
#. module: hr_recruitment
#: field:hr.recruitment.stage,fold:0
msgid "Hide in views if empty"
msgstr ""
msgstr "Ne mutassa a nézetekben, ha üres"
#. module: hr_recruitment
#: help:hr.config.settings,module_document_ftp:0
@ -1071,6 +1132,11 @@ msgid ""
"knowledge management module in order to allow you to search using specific "
"keywords through the content of all documents (PDF, .DOCx...)"
msgstr ""
"Az összes jelentkezőhöz tartozó Önéletrajz CV és motivációs levél kezelése.\n"
" Ez a document_ftp modult telepíti. Ez a knowledge management "
"- tudás kezelés modult telepíti ahhoz, hogy lehetővé tegye az egyéni "
"kulcsszó alapján való keresést az összes dokumentum tartalma alapján (PDF, "
".DOCx...)"
#. module: hr_recruitment
#: selection:hr.applicant,state:0
@ -1086,38 +1152,38 @@ msgstr "Elutasított"
#: selection:hr.recruitment.report,state:0
#: selection:hr.recruitment.stage,state:0
msgid "Hired"
msgstr ""
msgstr "Felvett"
#. module: hr_recruitment
#: field:hr.applicant,reference:0
msgid "Referred By"
msgstr ""
msgstr "Előterjesztette"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Departement:"
msgstr ""
msgstr "Osztály:"
#. module: hr_recruitment
#: selection:hr.applicant,priority:0
#: selection:hr.recruitment.report,priority:0
msgid "On Average"
msgstr ""
msgstr "Átlagon"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_recruitment_degree
msgid "Degree of Recruitment"
msgstr ""
msgstr "Toborzás mértéke"
#. module: hr_recruitment
#: field:hr.recruitment.report,salary_prop_avg:0
msgid "Avg. Proposed Salary"
msgstr ""
msgstr "Ajánlott kereset átlaga"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Open Jobs"
msgstr ""
msgstr "Nyitott állások"
#. module: hr_recruitment
#: selection:hr.recruitment.report,month:0
@ -1145,17 +1211,17 @@ msgstr "November"
#. module: hr_recruitment
#: field:hr.recruitment.report,salary_exp_avg:0
msgid "Avg. Expected Salary"
msgstr ""
msgstr "Kívánt kereset átl."
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "Avg Expected Salary"
msgstr ""
msgstr "Kívánt kereset átlaga"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_recruitment_partner_create
msgid "Create Partner from job application"
msgstr ""
msgstr "Partner létrehozás az állás jelentkezésből"
#. module: hr_recruitment
#: help:hr.applicant,email_from:0
@ -1165,42 +1231,42 @@ msgstr "Ezek az emberek fogják megkapni az e-mailt."
#. module: hr_recruitment
#: field:hr.job,alias_id:0
msgid "Alias"
msgstr ""
msgstr "Álnév"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "Pending recruitment"
msgstr ""
msgstr "Eldöntetlen toborzás"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Contract"
msgstr ""
msgstr "Szerződés"
#. module: hr_recruitment
#: field:hr.applicant,message_summary:0
msgid "Summary"
msgstr ""
msgstr "Összegzés"
#. module: hr_recruitment
#: help:hr.applicant,message_ids:0
msgid "Messages and communication history"
msgstr ""
msgstr "Üzenetek és kommunikáció történet"
#. module: hr_recruitment
#: model:mail.message.subtype,description:hr_recruitment.mt_applicant_refused
msgid "Applicant refused"
msgstr ""
msgstr "Jelentkező elutasítva"
#. module: hr_recruitment
#: field:hr.recruitment.stage,department_id:0
msgid "Specific to a Department"
msgstr ""
msgstr "Osztályhoz kötődő"
#. module: hr_recruitment
#: view:hr.recruitment.report:0
msgid "In progress recruitment"
msgstr ""
msgstr "Folyamatban lévő toborzás"
#. module: hr_recruitment
#: field:hr.recruitment.degree,sequence:0
@ -1211,17 +1277,17 @@ msgstr "Sorszám"
#. module: hr_recruitment
#: model:hr.recruitment.degree,name:hr_recruitment.degree_bachelor
msgid "Bachelor Degree"
msgstr ""
msgstr "Tudományos fokozat"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Unassigned Recruitments"
msgstr ""
msgstr "Kijelöletlen toborzások"
#. module: hr_recruitment
#: model:ir.model,name:hr_recruitment.model_hr_config_settings
msgid "hr.config.settings"
msgstr ""
msgstr "hr.config.settings"
#. module: hr_recruitment
#: help:hr.recruitment.stage,state:0
@ -1231,16 +1297,20 @@ msgid ""
"related to the status 'Close', when your document reach this stage, it will "
"be automatically closed."
msgstr ""
"A szakasszal összefüggő állapot. A dokumentuma állapota automatikusan "
"változik a kiválasztott szakasz szerint. Például, egy szakasz a 'Lezárt' "
"állapothoz tartozik, ha a dokumentum eléri ezt a szakaszt, akkor "
"automatikusan le lesz zárva."
#. module: hr_recruitment
#: help:hr.applicant,salary_proposed_extra:0
msgid "Salary Proposed by the Organisation, extra advantages"
msgstr ""
msgstr "Fizetés a szervezet, extra előny által javasolva"
#. module: hr_recruitment
#: help:hr.recruitment.report,delay_close:0
msgid "Number of Days to close the project issue"
msgstr ""
msgstr "Az ügy lezárásáig használt napok száma."
#. module: hr_recruitment
#: selection:hr.recruitment.report,state:0
@ -1250,12 +1320,12 @@ msgstr "Nyitott"
#. module: hr_recruitment
#: view:board.board:0
msgid "Applications to be Processed"
msgstr ""
msgstr "Jelentkezések feldolgozásra"
#. module: hr_recruitment
#: view:hr.applicant:0
msgid "Schedule Interview"
msgstr ""
msgstr "Interjú ütemezés"
#~ msgid "# of Cases"
#~ msgstr "Igények száma"

View File

@ -9,7 +9,6 @@
</record>
<record id="hr.employee" model="hr.employee">
<field name="product_id" ref="product.product_product_consultant"/>
<field name="journal_id" ref="analytic_journal"/>
</record>

View File

@ -372,12 +372,25 @@ class lunch_order_line(osv.Model):
cash_ids = [cash.id for cash in order_line.cashmove]
cashmove_ref.unlink(cr, uid, cash_ids, context=context)
return self._update_order_lines(cr, uid, ids, context=context)
def _get_line_order_ids(self, cr, uid, ids, context=None):
"""
return the list of lunch.order.lines ids to which belong the lunch.order 'ids'
"""
result = set()
for lunch_order in self.browse(cr, uid, ids, context=context):
for lines in lunch_order.order_line_ids:
result.add(lines.id)
return list(result)
_columns = {
'name': fields.related('product_id', 'name', readonly=True),
'order_id': fields.many2one('lunch.order', 'Order', ondelete='cascade'),
'product_id': fields.many2one('lunch.product', 'Product', required=True),
'date': fields.related('order_id', 'date', type='date', string="Date", readonly=True, store=True),
'date': fields.related('order_id', 'date', type='date', string="Date", readonly=True, store={
'lunch.order': (_get_line_order_ids, ['date'], 10),
'lunch.order.line': (lambda self, cr, uid, ids, ctx: ids, [], 10),
}),
'supplier': fields.related('product_id', 'supplier', type='many2one', relation='res.partner', string="Supplier", readonly=True, store=True),
'user_id': fields.related('order_id', 'user_id', type='many2one', relation='res.users', string='User', readonly=True, store=True),
'note': fields.text('Note'),

View File

@ -157,7 +157,7 @@ class mail_mail(osv.Model):
:param browse_record partner: specific recipient partner
"""
if force or (not mail.subject and mail.model and mail.res_id):
return '%s posted on %s' % (mail.author_id.name, mail.record_name)
return 'Re: %s' % (mail.record_name)
return mail.subject
def send_get_mail_body(self, cr, uid, mail, partner=None, context=None):

View File

@ -592,7 +592,7 @@ class mail_thread(osv.AbstractModel):
thread_id = False
for model, thread_id, custom_values, user_id in routes:
if self._name != model:
if self._name == 'mail.thread':
context.update({'thread_model': model})
if model:
model_pool = self.pool.get(model)
@ -772,7 +772,7 @@ class mail_thread(osv.AbstractModel):
if author_ids:
msg_dict['author_id'] = author_ids[0]
else:
msg_dict['email_from'] = message.get('from')
msg_dict['email_from'] = decode(message.get('from'))
partner_ids = self._message_find_partners(cr, uid, message, ['To', 'Cc'], context=context)
msg_dict['partner_ids'] = [(4, partner_id) for partner_id in partner_ids]
@ -883,7 +883,12 @@ class mail_thread(osv.AbstractModel):
if isinstance(thread_id, (list, tuple)):
thread_id = thread_id and thread_id[0]
mail_message = self.pool.get('mail.message')
model = context.get('thread_model', self._name) if thread_id else False
# if we're processing a message directly coming from the gateway, the destination model was
# set in the context.
model = False
if thread_id:
model = context.get('thread_model', self._name) if self._name == 'mail.thread' else self._name
attachment_ids = kwargs.pop('attachment_ids', [])
for name, content in attachments:
@ -961,13 +966,12 @@ class mail_thread(osv.AbstractModel):
mail_message_obj = self.pool.get('mail.message')
ir_attachment = self.pool.get('ir.attachment')
# 1.A.1: add recipients of parent message
# 1.A.1: add recipients of parent message (# TDE FIXME HACK: mail.thread -> private message)
partner_ids = set([])
if parent_id:
if parent_id and self._name == 'mail.thread':
parent_message = mail_message_obj.browse(cr, uid, parent_id, context=context)
partner_ids |= set([(4, partner.id) for partner in parent_message.partner_ids])
# TDE FIXME HACK: mail.thread -> private message
if self._name == 'mail.thread' and parent_message.author_id.id:
if parent_message.author_id.id:
partner_ids.add((4, parent_message.author_id.id))
# 1.A.2: add specified recipients

View File

@ -206,21 +206,23 @@ openerp_mail_followers = function(session, mail) {
/** Fetch subtypes, only if current user is follower */
fetch_subtypes: function () {
var self = this;
var subtype_list_ul = this.$('.oe_subtype_list').empty();
if (! this.message_is_follower) return;
var context = new session.web.CompoundContext(this.build_context(), {});
this.ds_model.call('message_get_subscription_data', [[this.view.datarecord.id], context]).then(this.proxy('display_subtypes'));
var id = this.view.datarecord.id;
this.ds_model.call('message_get_subscription_data', [[id], new session.web.CompoundContext(this.build_context(), {})])
.then(function (data) {self.display_subtypes(data, id);});
},
/** Display subtypes: {'name': default, followed} */
display_subtypes:function (data) {
display_subtypes:function (data, id) {
var self = this;
var subtype_list_ul = this.$('.oe_subtype_list');
var records = [];
var nb_subtype = 0;
subtype_list_ul.empty();
if (this.view.datarecord.id) {
records = data[this.view.datarecord.id].message_subtype_data;
if (data[id]) {
records = data[id].message_subtype_data;
}
_(records).each(function (record) {nb_subtype++;});
if (nb_subtype > 1) {

View File

@ -339,7 +339,7 @@ class test_mail(TestMailBase):
# Mail data
_subject = 'Pigs'
_mail_subject = '%s posted on %s' % (user_raoul.name, group_pigs.name)
_mail_subject = 'Re: %s' % (group_pigs.name)
_body1 = '<p>Pigs rules</p>'
_mail_body1 = '<p>Pigs rules</p>\n<div><p>Raoul</p></div>\n'
_mail_bodyalt1 = 'Pigs rules\nRaoul\n'

View File

@ -56,7 +56,7 @@ class invite_wizard(osv.osv_memory):
document = model_obj.browse(cr, uid, wizard.res_id, context=context)
# filter partner_ids to get the new followers, to avoid sending email to already following partners
new_follower_ids = [p.id for p in wizard.partner_ids if p.id not in document.message_follower_ids]
new_follower_ids = [p.id for p in wizard.partner_ids if p not in document.message_follower_ids]
model_obj.message_subscribe(cr, uid, [wizard.res_id], new_follower_ids, context=context)
# send an email

View File

@ -7,6 +7,7 @@
id="base.marketing_menu"
groups="marketing.group_marketing_user,marketing.group_marketing_manager"
sequence="85"/>
<record id="view_crm_lead_form" model="ir.ui.view">
<field name="name">crm.lead.inherit.form</field>
<field name="model">crm.lead</field>
@ -14,6 +15,7 @@
<field name="arch" type="xml">
<xpath expr="//group[@name='categorization']" position="attributes">
<attribute name="string">Marketing</attribute>
<attribute name="groups"></attribute>
</xpath>
<xpath expr="//field[@name='company_id']" position="after">
<field name="type_id"/>
@ -21,6 +23,7 @@
</xpath>
</field>
</record>
<record id="view_crm_opportunity_form" model="ir.ui.view">
<field name="name">crm.lead.inherit.form</field>
<field name="model">crm.lead</field>

View File

@ -38,7 +38,6 @@
<field name="name"/>
<field name="categ_id" invisible="1"/>
<field name="type" invisible="1"/>
<field name="variants" groups="product.group_product_variant"/>
<field name="uom_id" string="Unit of Measure" groups="product.group_uom"/>
<field name="qty_available"/>
<field name="virtual_available"/>
@ -90,11 +89,6 @@
<field name="ean13" placeholder="e.g. 5901234123457"/>
</div>
</group>
<group>
<field groups="product.group_product_variant" name="variants"/>
<field name="price_margin" groups="product.group_product_variant"/>
<field name="price_extra" groups="product.group_product_variant"/>
</group>
</group>
<field name="description" placeholder="describe the product characteristics..."/>
</page>
@ -615,6 +609,7 @@
</field>
</record>
<!-- Variants -->
<record id="product_variant_form_view" model="ir.ui.view">
<field name="name">product.variant.form</field>
<field name="model">product.product</field>
@ -623,7 +618,7 @@
<group col="4">
<field name="product_tmpl_id"/>
<field name="active"/>
<field name="variants"/>
<field name="variants" required="1"/>
<field name="default_code"/>
<field name="price_margin"/>
<field name="price_extra"/>
@ -631,22 +626,53 @@
</form>
</field>
</record>
<record id="product_variant_tree_view" model="ir.ui.view">
<field name="name">product.variant.tree</field>
<field name="model">product.product</field>
<field name="arch" type="xml">
<tree string="Product Variant">
<field name="product_tmpl_id"/>
<field name="active"/>
<field name="variants"/>
<field name="default_code"/>
<field name="price_margin"/>
<field name="price_extra"/>
<field name="company_id" invisible="1"/>
<field name="type" invisible="1"/>
<field name="uom_id" invisible="1"/>
<field name="categ_id" invisible="1"/>
</tree>
</field>
</record>
<record id="product_variant_action" model="ir.actions.act_window">
<field name="name">Product Variants</field>
<field name="type">ir.actions.act_window</field>
<!--<field name="domain">[('variants','&lt;&gt;', False)]</field>-->
<field name="res_model">product.product</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form,kanban</field>
<field name="view_id" ref="product_variant_tree_view"/>
<field name="search_view_id" ref="product_search_form_view"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to define a new variant of product.
</p>
</field>
</record>
<record id="tree_view_product_variant" model="ir.actions.act_window.view">
<field name="sequence" eval="10"/>
<field name="view_mode">tree</field>
<field name="view_id" ref="product_variant_tree_view"/>
<field name="act_window_id" ref="product_variant_action"/>
</record>
<record id="form_view_product_variant" model="ir.actions.act_window.view">
<field name="sequence" eval="20"/>
<field name="view_mode">form</field>
<field name="view_id" ref="product_variant_form_view"/>
<field name="act_window_id" ref="product_variant_action"/>
</record>
<menuitem action="product.product_variant_action" id="product.menu_variant_product" parent="base.menu_product" sequence="100" groups="product.group_product_variant"/>
<!-- templates -->
<record id="product_template_tree_view" model="ir.ui.view">
<field name="name">product.template.product.tree</field>
<field name="model">product.template</field>

View File

@ -1,117 +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 datetime
from openerp.report.interface import report_rml
from openerp.report.interface import toxml
from openerp import pooler
from openerp.osv import osv
import datetime
class report_custom(report_rml):
def create_xml(self, cr, uid, ids, data, context):
pool = pooler.get_pool(cr.dbname)
price_list_id = data['form']['price_list']
product_categ_id =pool.get('product.category').search(cr, uid, [])
currency = pool.get('product.pricelist').read(cr, uid, [price_list_id], ['currency_id','name'])[0]
qty =[]
for i in range(1,6):
q = 'qty%d'%i
if data['form'][q]:
qty.append(data['form'][q])
if not qty:
qty.append(1)
product_xml = []
cols = ''
cols = cols+'6cm'
title ='<title name=" Description " number="0" />'
i=1
for q in qty:
cols = cols+',2.5cm'
if q==1:
title+='<title name="%d unit" number="%d"/>'%(q,i)
else:
title+='<title name="%d units" number="%d"/>'%(q,i)
i+=1
date = datetime.date.today()
str_date=date.strftime("%d/%m/%Y")
product_xml.append('<cols>'+cols+'</cols>')
product_xml.append('<pricelist> %s </pricelist>'%currency['name'])
product_xml.append('<currency> %s </currency>'%currency['currency_id'][1])
product_xml.append('<date> %s </date>'%str_date)
product_xml.append("<product>")
for p_categ_id in product_categ_id:
product_ids = pool.get('product.product').search(cr, uid, [('id','in',ids),('categ_id','=',p_categ_id)])
if product_ids:
categ_name = pool.get('product.category').read(cr, uid, [p_categ_id], ['name'])
products = pool.get('product.product').read(cr, uid, product_ids, ['id','name','code'])
pro = []
i=0
pro.append('<pro name="%s" categ="true">' % (categ_name[0]['name']))
temp = []
for q in qty:
temp.append('<price name=" " />')
pro.extend(temp)
pro.append('</pro>')
for x in products:
#Replacement of special characters with their code html for allowing reporting - Edited by Hasa
x['name'] = x['name'].replace("&","&amp;")
x['name'] = x['name'].replace("\"","&quot;")
if x['code']:
pro.append('<pro name="[%s] %s" >' % (x['code'], x['name']))
else:
pro.append('<pro name="%s" >' % (x['name']))
temp = []
for q in qty:
price_dict = pool.get('product.pricelist').price_get(cr, uid, [price_list_id], x['id'], q, context=context)
if price_dict[price_list_id]:
price = price_dict[price_list_id]
else:
res = pool.get('product.product').read(cr, uid, [x['id']])
price = res[0]['list_price']
temp.append('<price name="%.2f" />'%(price))
i+=1
pro.extend(temp)
pro.append('</pro>')
product_xml.extend(pro)
product_xml.append('</product>')
xml = '''<?xml version="1.0" encoding="UTF-8" ?>
<report>
%s
</report>
''' % (title+'\n'.join(product_xml))
return self.post_process_xml_data(cr, uid, xml, context)
report_custom('report.pricelist.pricelist', 'product.product','','addons/product_pricelist_print/report/product_price.xsl')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,104 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:import href="../../base/report/corporate_defaults.xsl" />
<xsl:template match="/">
<xsl:call-template name="rml" />
</xsl:template>
<xsl:template name="rml" match="/">
<document filename="example.pdf">
<template>
<pageTemplate id="first">
<frame id="first" x1="1cm" y1="2.5cm" width="19.0cm" height="23.0cm"/>
<pageGraphics>
<xsl:apply-imports />
</pageGraphics>
</pageTemplate>
</template>
<stylesheet>
<paraStyle name="normal" fontName="Times-Roman" fontSize="12" />
<paraStyle name="title" fontName="Times-Bold" fontSize="15" alignment="center" />
<paraStyle name="table_title" fontName="Times-Bold" fontSize="12" alignment="center" />
<paraStyle name="product1" fontName="Times-Roman" fontSize="8" />
<paraStyle name="categ" fontName="Times-Bold" fontSize="10" textColor="blue"/>
<paraStyle name="price" fontName="Times-Roman" fontSize="8" alignment="right" />
<blockTableStyle id="main_title">
<blockAlignment value="CENTER" />
<lineStyle kind="GRID" colorName="black"/>
<blockBackground colorName="#e6e6e6" />
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="product">
<blockAlignment value="LEFT" />
<xsl:for-each select="/report/title">
<xsl:variable name="col" select="attribute::number" />
<blockBackground>
<xsl:attribute name="colorName">#e6e6e6</xsl:attribute>
<xsl:attribute name="start">
<xsl:value-of select="$col" />
<xsl:text>,0</xsl:text>
</xsl:attribute>
<xsl:attribute name="stop">
<xsl:value-of select="$col" />
<xsl:text>,0</xsl:text>
</xsl:attribute>
</blockBackground>
</xsl:for-each>
<lineStyle kind="LINEABOVE" colorName="black" start="0,0" stop="-1,-1" />
<lineStyle kind="LINEBEFORE" colorName="black" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="black" start="-1,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="black" start="0,-1" stop="-1,-1"/>
<blockValign value="TOP"/>
</blockTableStyle>
</stylesheet >
<story>
<xsl:call-template name="story"/>
</story>
</document>
</xsl:template>
<xsl:template name="story">
<spacer length="1cm" />
<blockTable rowHeights="1cm">
<xsl:attribute name="style">main_title</xsl:attribute>
<tr> <td> <para style="title" t="1">Products Price List</para> </td> </tr>
</blockTable>
<spacer length="1cm" />
<para style="normal" t="1">Price List Name :<xsl:value-of select="report/pricelist" /></para>
<para style="normal" t="1">Currency : <xsl:value-of select="report/currency" /></para>
<para style="normal" t="1">Printing Date : <xsl:value-of select="report/date" /></para>
<spacer length="0.7cm" />
<blockTable>
<xsl:attribute name="style">product</xsl:attribute>
<xsl:attribute name="colWidths"><xsl:value-of select="report/cols" /></xsl:attribute>
<tr>
<xsl:for-each select="report/title" >
<td><para style="table_title"> <xsl:value-of select="attribute::name" /> </para></td>
</xsl:for-each>
</tr>
<xsl:for-each select="report/product/pro" >
<tr>
<xsl:choose>
<xsl:when test="@categ">
<td> <para style="categ"><xsl:value-of select="attribute::name" /> </para> </td>
</xsl:when>
<xsl:otherwise>
<td> <para style="product1"> <xsl:value-of select="attribute::name" /> </para> </td>
</xsl:otherwise>
</xsl:choose>
<xsl:for-each select="price" >
<td><para style="price"> <xsl:value-of select="attribute::name" /> </para> </td>
</xsl:for-each>
</tr>
</xsl:for-each>
</blockTable>
</xsl:template>
</xsl:stylesheet>

View File

@ -58,7 +58,7 @@
<field name="arch" type="xml">
<form string="Issue" version="7.0">
<header>
<button name="case_close" string="Done" type="object"
<button name="case_close" string="Done" type="object"
states="open" groups="base.group_user"/>
<button name="case_close" string="Done" type="object"
states="draft,pending" groups="base.group_user"/>
@ -129,11 +129,11 @@
<tree string="Issue Tracker Tree" fonts="bold:message_unread==True" colors="black:state=='open';blue:state=='pending';grey:state in ('cancel', 'done')">
<field name="message_unread" invisible="1"/>
<field name="id"/>
<field name="create_date" groups="base.group_no_one"/>
<field name="name"/>
<field name="partner_id"/>
<field name="project_id"/>
<field name="priority" string="Priority" groups="base.group_user"/>
<field name="create_date"/>
<field name="version_id" widget="selection"/>
<field name="user_id"/>
<field name="progress" widget="progressbar" attrs="{'invisible':[('task_id','=',False)]}"/>
@ -157,7 +157,7 @@
<filter string="New" icon="terp-document-new" domain="[('state','=','draft')]" help="New Issues"/>
<filter string="To Do" domain="[('state','=','open')]" help="To Do Issues" icon="terp-check"/>
<separator/>
<filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-" />
<filter string="Unassigned Issues" domain="[('user_id','=',False)]" help="Unassigned Issues" icon="terp-personal-"/>
<field name="user_id"/>
<field name="project_id"/>
<field name="categ_ids"/>

View File

@ -0,0 +1,476 @@
# Mongolian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:06+0000\n"
"PO-Revision-Date: 2013-02-20 07:21+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Mongolian <mn@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-02-21 05:14+0000\n"
"X-Generator: Launchpad (build 16491)\n"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Request a Quotation"
msgstr ""
#. module: purchase_requisition
#: selection:purchase.requisition,exclusive:0
msgid "Multiple Requisitions"
msgstr ""
#. module: purchase_requisition
#: field:purchase.requisition.line,product_uom_id:0
msgid "Product Unit of Measure"
msgstr "Барааны хэмжих нэгж"
#. module: purchase_requisition
#: model:ir.actions.act_window,help:purchase_requisition.action_purchase_requisition
msgid ""
"<p class=\"oe_view_nocontent_create\">\n"
" Click to start a new purchase requisition process. \n"
" </p><p>\n"
" A purchase requisition is the step before a request for "
"quotation.\n"
" In a purchase requisition (or purchase tender), you can record "
"the\n"
" products you need to buy and trigger the creation of RfQs to\n"
" suppliers. After the negotiation, once you have reviewed all "
"the\n"
" supplier's offers, you can validate some and cancel others.\n"
" </p>\n"
" "
msgstr ""
#. module: purchase_requisition
#: view:purchase.requisition:0
#: field:purchase.requisition,user_id:0
msgid "Responsible"
msgstr "Хариуцагч"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: field:purchase.requisition,state:0
msgid "Status"
msgstr "Төлөв"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Send to Suppliers"
msgstr "Нийлүүлэгчрүү илгээх"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Group By..."
msgstr "Бүлэглэх..."
#. module: purchase_requisition
#: view:purchase.requisition:0
#: selection:purchase.requisition,state:0
msgid "Purchase Done"
msgstr "Худалдан авалт хийсэн"
#. module: purchase_requisition
#: field:purchase.requisition,message_follower_ids:0
msgid "Followers"
msgstr "Дагагчид"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Purchase Requisition in negociation"
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition.partner,partner_id:0
msgid "Supplier"
msgstr "Нийлүүлэгч"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: selection:purchase.requisition,state:0
msgid "New"
msgstr "Шинэ"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Product Detail"
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Qty"
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Type"
msgstr "Төрөл"
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition_partner
#: model:ir.actions.report.xml,name:purchase_requisition.report_purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_requisition
#: model:ir.module.category,name:purchase_requisition.module_category_purchase_requisition
#: field:product.product,purchase_requisition:0
#: field:purchase.order,requisition_id:0
#: view:purchase.requisition:0
#: field:purchase.requisition.line,requisition_id:0
#: view:purchase.requisition.partner:0
msgid "Purchase Requisition"
msgstr "Худалдан авах шаардлага"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_requisition_line
msgid "Purchase Requisition Line"
msgstr "Худалдан авах хүсэлтийн мөр"
#. module: purchase_requisition
#: view:purchase.order:0
msgid "Purchase Orders with requisition"
msgstr "Худалдан авах захиалгууд хүсэлтийн хамт"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_product_product
#: field:purchase.requisition.line,product_id:0
msgid "Product"
msgstr "Бараа"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Quotations"
msgstr "Үнэ ханш"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Terms and Conditions"
msgstr "Гэрээний заалт/нөхцөл"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition,description:0
msgid "Description"
msgstr "Тайлбар"
#. module: purchase_requisition
#: field:purchase.requisition,message_unread:0
msgid "Unread Messages"
msgstr "Уншаагүй Зурвасууд"
#. module: purchase_requisition
#: field:purchase.requisition,company_id:0
#: field:purchase.requisition.line,company_id:0
msgid "Company"
msgstr "Компани"
#. module: purchase_requisition
#: view:purchase.requisition.partner:0
msgid "Create Quotation"
msgstr "Үнэлгээ үүсгэх"
#. module: purchase_requisition
#: help:purchase.requisition,message_ids:0
msgid "Messages and communication history"
msgstr "Зурвас болон харилцсан түүх"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Approved by Supplier"
msgstr "Нийлүүлэгч зөвшөөрсөн"
#. module: purchase_requisition
#: view:purchase.requisition.partner:0
msgid "or"
msgstr "эсвэл"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Reset to Draft"
msgstr ""
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Current Purchase Requisition"
msgstr "Одоогийн худалдан авах шаардлага"
#. module: purchase_requisition
#: model:res.groups,name:purchase_requisition.group_purchase_requisition_user
msgid "User"
msgstr "Хэрэглэгч"
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Order Reference"
msgstr ""
#. module: purchase_requisition
#: field:purchase.requisition,message_is_follower:0
msgid "Is a Follower"
msgstr "Дагагч эсэх"
#. module: purchase_requisition
#: field:purchase.requisition.line,product_qty:0
msgid "Quantity"
msgstr "Тоо хэмжээ"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Unassigned Requisition"
msgstr ""
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.action_purchase_requisition
#: model:ir.ui.menu,name:purchase_requisition.menu_purchase_requisition_pro_mgt
msgid "Purchase Requisitions"
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Quotation Detail"
msgstr ""
#. module: purchase_requisition
#: code:addons/purchase_requisition/purchase_requisition.py:134
#, python-format
msgid ""
"You have already one %s purchase order for this partner, you must cancel "
"this purchase order to create a new quotation."
msgstr ""
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "End Date"
msgstr "Дуусах огноо"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition,name:0
msgid "Requisition Reference"
msgstr ""
#. module: purchase_requisition
#: field:purchase.requisition,line_ids:0
msgid "Products to Purchase"
msgstr "Бараа худалдан авах"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: selection:purchase.requisition,state:0
msgid "Sent to Suppliers"
msgstr "Нийлүүлэгчрүү илгээх"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Search Purchase Requisition"
msgstr ""
#. module: purchase_requisition
#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:41
#, python-format
msgid "No Product in Tender."
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Date Ordered"
msgstr "Захиалсан огноо"
#. module: purchase_requisition
#: field:purchase.requisition,message_ids:0
msgid "Messages"
msgstr "Зурвасууд"
#. module: purchase_requisition
#: help:purchase.requisition,exclusive:0
msgid ""
"Purchase Requisition (exclusive): On the confirmation of a purchase order, "
"it cancels the remaining purchase order.\n"
"Purchase Requisition(Multiple): It allows to have multiple purchase "
"orders.On confirmation of a purchase order it does not cancel the remaining "
"orders"
msgstr ""
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Cancel Purchase Order"
msgstr "Захиалга цуцлах"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_order
#: view:purchase.requisition:0
msgid "Purchase Order"
msgstr "Худалдан авах захиалга"
#. module: purchase_requisition
#: field:purchase.requisition,origin:0
msgid "Source Document"
msgstr "Эх баримт"
#. module: purchase_requisition
#: code:addons/purchase_requisition/wizard/purchase_requisition_partner.py:41
#, python-format
msgid "Error!"
msgstr "Алдаа!"
#. module: purchase_requisition
#: field:purchase.requisition,exclusive:0
msgid "Requisition Type"
msgstr "Шаардлагын төрөл"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "New Purchase Requisition"
msgstr "Шинэ худалдан авах хүсэлт"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Products"
msgstr "Бараа"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Order Date"
msgstr "Захиалгын Огноо"
#. module: purchase_requisition
#: selection:purchase.requisition,state:0
msgid "Cancelled"
msgstr "Цуцлагдсан"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_purchase_requisition_partner
msgid "Purchase Requisition Partner"
msgstr ""
#. module: purchase_requisition
#: help:purchase.requisition,message_unread:0
msgid "If checked new messages require your attention."
msgstr "Хэрэв тэмдэглэгдсэн бол шинэ зурвас нь анхаарал татахыг шаардана."
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Purchase for Requisitions"
msgstr ""
#. module: purchase_requisition
#: model:ir.actions.act_window,name:purchase_requisition.act_res_partner_2_purchase_order
msgid "Purchase orders"
msgstr "Худалдан авах захиалгууд"
#. module: purchase_requisition
#: field:purchase.requisition,date_end:0
msgid "Requisition Deadline"
msgstr "Хүсэлтийн эцсийн аугацаа"
#. module: purchase_requisition
#: field:purchase.requisition,message_summary:0
msgid "Summary"
msgstr "Хураангуй"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Reference"
msgstr "Код"
#. module: purchase_requisition
#: model:ir.model,name:purchase_requisition.model_procurement_order
msgid "Procurement"
msgstr ""
#. module: purchase_requisition
#: report:purchase.requisition:0
#: view:purchase.requisition:0
msgid "Source"
msgstr "Эх үүсвэр"
#. module: purchase_requisition
#: field:purchase.requisition,warehouse_id:0
msgid "Warehouse"
msgstr "Агуулах"
#. module: purchase_requisition
#: field:procurement.order,requisition_id:0
msgid "Latest Requisition"
msgstr "Cүүлийн хүсэлт"
#. module: purchase_requisition
#: model:res.groups,name:purchase_requisition.group_purchase_requisition_manager
msgid "Manager"
msgstr "Менежер"
#. module: purchase_requisition
#: selection:purchase.requisition,exclusive:0
msgid "Purchase Requisition (exclusive)"
msgstr ""
#. module: purchase_requisition
#: help:purchase.requisition,message_summary:0
msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
"Чаатлагчийн хураангуйг агуулна (зурвасын тоо,...). Энэ хураангуй нь шууд "
"html форматтай бөгөөд канбан харагдацад шууд орж харагдах боломжтой."
#. module: purchase_requisition
#: report:purchase.requisition:0
msgid "Product UoM"
msgstr "Барааны х.н"
#. module: purchase_requisition
#: code:addons/purchase_requisition/purchase_requisition.py:134
#, python-format
msgid "Warning!"
msgstr "Анхааруулга!"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Confirm Purchase Order"
msgstr "Худалдан авах захиалгыг батлах"
#. module: purchase_requisition
#: view:purchase.requisition:0
#: view:purchase.requisition.partner:0
msgid "Cancel"
msgstr "Цуцлах"
#. module: purchase_requisition
#: report:purchase.requisition:0
#: field:purchase.requisition,date_start:0
msgid "Requisition Date"
msgstr ""
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Start Date"
msgstr "Эхлэх огноо"
#. module: purchase_requisition
#: view:purchase.requisition:0
msgid "Unassigned"
msgstr "Тодорхой бус"
#. module: purchase_requisition
#: view:purchase.order:0
msgid "Requisition"
msgstr "Хүсэлт"
#. module: purchase_requisition
#: help:product.product,purchase_requisition:0
msgid ""
"Check this box to generates purchase requisition instead of generating "
"requests for quotation from procurement."
msgstr ""
#. module: purchase_requisition
#: field:purchase.requisition,purchase_ids:0
msgid "Purchase Orders"
msgstr "Худалдан авах захиалгууд"

View File

@ -220,7 +220,7 @@ class WebKitParser(report_sxw):
if report_xml.report_file :
path = addons.get_module_resource(*report_xml.report_file.split(os.path.sep))
if os.path.exists(path) :
if path and os.path.exists(path) :
template = file(path).read()
if not template and report_xml.report_webkit_data :
template = report_xml.report_webkit_data

View File

@ -55,6 +55,9 @@ Example: 10% for retailers, promotion of 5 EUR on this product, etc."""),
'group_discount_per_so_line': fields.boolean("Allow setting a discount on the sales order lines",
implied_group='sale.group_discount_per_so_line',
help="Allows you to apply some discount per sales order line."),
'group_product_variant': fields.boolean("Support multiple variants per products ",
implied_group='product.group_product_variant',
help="""Allow to manage several variants per product. As an example, if you sell T-Shirts, for the same "Linux T-Shirt", you may have variants on sizes or colors; S, M, L, XL, XXL."""),
'module_warning': fields.boolean("Allow configuring alerts by customer or products",
help="""Allow to configure notification on products and trigger them when a user wants to sale a given product or a given customer.
Example: Product: this product is deprecated, do not purchase more than 5.

View File

@ -69,6 +69,10 @@
<field name="group_discount_per_so_line" class="oe_inline"/>
<label for="group_discount_per_so_line"/>
</div>
<div>
<field name="group_product_variant" class="oe_inline"/>
<label for="group_product_variant"/>
</div>
</div>
</group>
</group>

View File

@ -51,9 +51,9 @@ class sale_make_invoice(osv.osv_memory):
if context is None:
context = {}
data = self.read(cr, uid, ids)[0]
order_obj.action_invoice_create(cr, uid, context.get(('active_ids'), []), data['grouped'], date_inv = data['invoice_date'])
order_obj.action_invoice_create(cr, uid, context.get(('active_ids'), []), data['grouped'], date_invoice = data['invoice_date'])
order_obj.signal_manual_invoice(cr, uid, context.get(('active_ids'), []))
for o in order_obj.browse(cr, uid, context.get(('active_ids'), []), context=context):
for i in o.invoice_ids:
newinv.append(i.id)

View File

@ -69,9 +69,6 @@ This installs the module product_expiry."""),
implied_group='stock.group_locations',
help="""This allows to configure and use multiple stock locations and warehouses,
instead of having a single default one."""),
'group_product_variant': fields.boolean("Support multiple variants per products ",
implied_group='product.group_product_variant',
help="""Allow to manage several variants per product. As an example, if you sell T-Shirts, for the same "Linux T-Shirt", you may have variants on sizes or colors; S, M, L, XL, XXL."""),
'decimal_precision': fields.integer('Decimal precision on weight', help="As an example, a decimal precision of 2 will allow weights like: 9.99 kg, whereas a decimal precision of 4 will allow weights like: 0.0231 kg."),
}

View File

@ -91,10 +91,6 @@
<field name="group_uos" class="oe_inline"/>
<label for="group_uos" />
</div>
<div invisible="1">
<field name="group_product_variant" class="oe_inline"/>
<label for="group_product_variant"/>
</div>
</div>
</group>
</form>

View File

@ -29,11 +29,14 @@ import openerp.addons.decimal_precision as dp
class stock_return_picking_memory(osv.osv_memory):
_name = "stock.return.picking.memory"
_rec_name = 'product_id'
_columns = {
'product_id' : fields.many2one('product.product', string="Product", required=True),
'quantity' : fields.float("Quantity", digits_compute=dp.get_precision('Product Unit of Measure'), required=True),
'wizard_id' : fields.many2one('stock.return.picking', string="Wizard"),
'move_id' : fields.many2one('stock.move', "Move"),
'prodlot_id': fields.related('move_id', 'prodlot_id', type='many2one', relation='stock.production.lot', string='Serial Number', readonly=True),
}
stock_return_picking_memory()
@ -74,7 +77,7 @@ class stock_return_picking(osv.osv_memory):
for line in pick.move_lines:
qty = line.product_qty - return_history.get(line.id, 0)
if qty > 0:
result1.append({'product_id': line.product_id.id, 'quantity': qty,'move_id':line.id})
result1.append({'product_id': line.product_id.id, 'quantity': qty,'move_id':line.id, 'prodlot_id': line.prodlot_id and line.prodlot_id.id or False})
if 'product_return_moves' in fields:
res.update({'product_return_moves': result1})
return res

View File

@ -32,8 +32,8 @@
<field name="arch" type="xml">
<tree editable="bottom" string="Product Moves">
<field name="product_id" />
<field name="prodlot_id" groups="stock.group_production_lot"/>
<field name="quantity" />
</tree>
</field>
</record>
@ -45,6 +45,7 @@
<form string="Return Picking Memory" version="7.0">
<group col="4">
<field name="product_id" />
<field name="prodlot_id" groups="stock.group_production_lot"/>
<field name="quantity" />
</group>
</form>

View File

@ -0,0 +1,25 @@
# Czech translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:06+0000\n"
"PO-Revision-Date: 2013-02-20 13:43+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Czech <cs@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-02-21 05:14+0000\n"
"X-Generator: Launchpad (build 16491)\n"
#. module: web_shortcuts
#. openerp-web
#: code:addons/web_shortcuts/static/src/xml/web_shortcuts.xml:21
#, python-format
msgid "Add / Remove Shortcut..."
msgstr "Přidat / Odebrat zkratku..."