[MERGE] merged with main addons

bzr revid: darshankalola@gmail.com-20130711055136-55tx296ybhvjfgh5
This commit is contained in:
Darshan Kalola (OpenERP Trainee) 2013-07-11 11:21:36 +05:30
commit 4974565581
18 changed files with 11247 additions and 401 deletions

10849
addons/account/i18n/is.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2013-04-26 16:01+0000\n"
"PO-Revision-Date: 2013-07-10 09:54+0000\n"
"Last-Translator: Els Van Vossel (Agaplan) <Unknown>\n"
"Language-Team: Els Van Vossel\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-04-27 05:44+0000\n"
"X-Generator: Launchpad (build 16580)\n"
"X-Launchpad-Export-Date: 2013-07-11 05:17+0000\n"
"X-Generator: Launchpad (build 16696)\n"
"Language: nl\n"
#. module: account_voucher
@ -28,7 +28,7 @@ msgid "account.config.settings"
msgstr "account.config.settings"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:369
#: code:addons/account_voucher/account_voucher.py:417
#, python-format
msgid "Write-Off"
msgstr "Afschrijving"
@ -132,7 +132,7 @@ msgid "Voucher Statistics"
msgstr "Boekingsstatistieken"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1547
#: code:addons/account_voucher/account_voucher.py:1641
#, python-format
msgid ""
"You can not change the journal as you already reconciled some statement "
@ -233,8 +233,8 @@ msgid "Journal Item"
msgstr "Boekingslijn"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:508
#: code:addons/account_voucher/account_voucher.py:981
#: code:addons/account_voucher/account_voucher.py:558
#: code:addons/account_voucher/account_voucher.py:1073
#, python-format
msgid "Error!"
msgstr "Fout"
@ -261,7 +261,7 @@ msgid "Cancelled"
msgstr "Geannuleerd"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1153
#: code:addons/account_voucher/account_voucher.py:1249
#, python-format
msgid ""
"You have to configure account base code and account tax code on the '%s' tax!"
@ -313,7 +313,7 @@ msgid "Tax"
msgstr "Btw"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:879
#: code:addons/account_voucher/account_voucher.py:971
#, python-format
msgid "Invalid Action!"
msgstr "Ongeldige actie"
@ -366,10 +366,10 @@ msgid "Import Invoices"
msgstr "Facturen importeren"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1112
#: code:addons/account_voucher/account_voucher.py:1208
#, python-format
msgid "Wrong voucher line"
msgstr ""
msgstr "Verkeerde betalingsregel"
#. module: account_voucher
#: selection:account.voucher,pay_now:0
@ -385,7 +385,7 @@ msgid "Receipt"
msgstr "Reçu"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1018
#: code:addons/account_voucher/account_voucher.py:1110
#, python-format
msgid ""
"You should configure the 'Gain Exchange Rate Account' in the accounting "
@ -409,7 +409,7 @@ msgstr "Periode"
#. module: account_voucher
#: view:account.voucher:0
#: code:addons/account_voucher/account_voucher.py:211
#: code:addons/account_voucher/account_voucher.py:231
#, python-format
msgid "Supplier"
msgstr "Leverancier"
@ -430,7 +430,7 @@ msgid "Debit"
msgstr "Debet"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1547
#: code:addons/account_voucher/account_voucher.py:1641
#, python-format
msgid "Unable to change journal !"
msgstr "Het dagboek kan niet worden gewijzigd"
@ -469,6 +469,12 @@ msgid ""
" </p>\n"
" "
msgstr ""
"<p class=\"oe_view_nocontent_create\">\n"
" Klik hier als u een nieuwe leveranciersbetaling wilt maken.\n"
" </p><p>\n"
" Met OpenERP kunt u betalingen aan leveranciers opvolgen.\n"
" </p>\n"
" "
#. module: account_voucher
#: view:account.voucher:0
@ -536,7 +542,7 @@ msgid "Pay Invoice"
msgstr "Factuur betalen"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1153
#: code:addons/account_voucher/account_voucher.py:1249
#, python-format
msgid "No Account Base Code and Account Tax Code!"
msgstr "Geen rekening voor basisvak en btw-vak"
@ -590,15 +596,15 @@ msgid "To Review"
msgstr "Te controleren"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1025
#: code:addons/account_voucher/account_voucher.py:1039
#: code:addons/account_voucher/account_voucher.py:1194
#: code:addons/account_voucher/account_voucher.py:1120
#: code:addons/account_voucher/account_voucher.py:1134
#: code:addons/account_voucher/account_voucher.py:1286
#, python-format
msgid "change"
msgstr "wijzigen"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1014
#: code:addons/account_voucher/account_voucher.py:1106
#, python-format
msgid ""
"You should configure the 'Loss Exchange Rate Account' in the accounting "
@ -656,6 +662,7 @@ msgstr "Maand"
#. module: account_voucher
#: field:account.voucher,currency_id:0
#: field:account.voucher.line,currency_id:0
#: model:ir.model,name:account_voucher.model_res_currency
#: field:sale.receipt.report,currency_id:0
msgid "Currency"
msgstr "Munt"
@ -699,7 +706,7 @@ msgid "Reconcile Payment Balance"
msgstr "Betalingssaldo afpunten"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:975
#: code:addons/account_voucher/account_voucher.py:1067
#, python-format
msgid "Configuration Error !"
msgstr "Configuratiefout"
@ -764,7 +771,7 @@ msgid "October"
msgstr "Oktober"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:976
#: code:addons/account_voucher/account_voucher.py:1068
#, python-format
msgid "Please activate the sequence of selected journal !"
msgstr "Gelieve de nummering van het gekozen journaal te activeren."
@ -844,7 +851,7 @@ msgid "Previous Payments ?"
msgstr "Vorige betalingen?"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1112
#: code:addons/account_voucher/account_voucher.py:1208
#, python-format
msgid "The invoice you are willing to pay is not valid anymore."
msgstr "De factuur die u wilt betalen, is niet meer geldig."
@ -876,7 +883,7 @@ msgid "Active"
msgstr "Actief"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:982
#: code:addons/account_voucher/account_voucher.py:1074
#, python-format
msgid "Please define a sequence on the journal."
msgstr "Gelieve een reeks in te stellen voor het journaal."
@ -1004,7 +1011,7 @@ msgid "Journal Items"
msgstr "Boekingslijnen"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:508
#: code:addons/account_voucher/account_voucher.py:558
#, python-format
msgid "Please define default credit/debit accounts on the journal \"%s\"."
msgstr "Stel een standaard debet-/creditrekening in voor journaal \"%s\"."
@ -1221,7 +1228,7 @@ msgstr ""
"Het bedrag van het reçu moet gelijk zijn aan het bedrag op de uittreksellijn."
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:879
#: code:addons/account_voucher/account_voucher.py:971
#, python-format
msgid "Cannot delete voucher(s) which are already opened or paid."
msgstr "Een openstaand of betaald reçu kan niet meer worden verwijderd."
@ -1284,8 +1291,8 @@ msgid "Status <b>changed</b>"
msgstr "Status <b>vgewijzigd</b>"
#. module: account_voucher
#: code:addons/account_voucher/account_voucher.py:1014
#: code:addons/account_voucher/account_voucher.py:1018
#: code:addons/account_voucher/account_voucher.py:1106
#: code:addons/account_voucher/account_voucher.py:1110
#, python-format
msgid "Insufficient Configuration!"
msgstr "Niet volledig geconfigureerd"

View File

@ -7,14 +7,19 @@ 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: 2013-06-21 07:11+0000\n"
"PO-Revision-Date: 2013-07-09 07:36+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: 2013-06-22 05:36+0000\n"
"X-Generator: Launchpad (build 16677)\n"
"X-Launchpad-Export-Date: 2013-07-10 05:25+0000\n"
"X-Generator: Launchpad (build 16696)\n"
#. module: crm
#: model:crm.case.stage,name:crm.stage_lead3
msgid "Qualification"
msgstr "Besorolás"
#. module: crm
#: view:crm.lead.report:0
@ -2686,11 +2691,6 @@ msgstr "Valószínűség automatikus változtatása"
msgid "My Phone Calls"
msgstr "Telefonhívásaim"
#. module: crm
#: model:crm.case.stage,name:crm.stage_lead3
msgid "Qualification"
msgstr "Besorolás"
#. module: crm
#: field:crm.lead2opportunity.partner,name:0
#: field:crm.lead2opportunity.partner.mass,name:0
@ -3961,9 +3961,19 @@ msgstr ""
#~ msgid "Can not add note!"
#~ msgstr "Nem lehet hozzáadni megjegyzést!"
#, python-format
#~ msgid ""
#~ "Opportunity must have Partner assigned before merging with other Opportunity."
#~ msgstr ""
#~ "Csak a Partnerhez rendelt Lehetőséget lehet más Lehetőséggel összefűzni."
#~ msgid "_Merge"
#~ msgstr "Össze_fésülés"
#, python-format
#~ msgid "The opportunity '%s' has been marked as lost."
#~ msgstr "A '%s' lehetőséget elvesztettnek jelöltem."
#, python-format
#~ msgid "Lead '%s' has been converted to an opportunity."
#~ msgstr "A '%s'"
@ -3991,3 +4001,17 @@ msgstr ""
#~ msgid "Convert To Opportunity"
#~ msgstr "Átalakítás lehetőséggé"
#~ msgid "Edit all Occurrences of recurrent Meeting."
#~ msgstr "Az ismétlődő találkozók összes eseményének szerkesztése."
#~ msgid ""
#~ "Leads Analysis allows you to check different CRM related information. Check "
#~ "for treatment delays, number of responses given and emails sent. You can "
#~ "sort out your leads analysis by different groups to get accurate grained "
#~ "analysis."
#~ msgstr ""
#~ "Az érdeklődések elemzése több CRM-hez kapcsolódó információt nyújt. "
#~ "Ellenőrizhetjük az eljárás elnapolását, a kiküldött válaszok és e-mailek "
#~ "számát. A részletes eredmény érdekében az érdeklődéseket különféle "
#~ "csoportosítások szerint is elemezhetjük."

87
addons/edi/i18n/is.po Normal file
View File

@ -0,0 +1,87 @@
# Icelandic 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-07-10 12:09+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Icelandic <is@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-07-11 05:17+0000\n"
"X-Generator: Launchpad (build 16696)\n"
#. module: edi
#. openerp-web
#: code:addons/edi/static/src/js/edi.js:67
#, python-format
msgid "Reason:"
msgstr "Ástæða:"
#. module: edi
#. openerp-web
#: code:addons/edi/static/src/js/edi.js:60
#, python-format
msgid "The document has been successfully imported!"
msgstr ""
#. module: edi
#. openerp-web
#: code:addons/edi/static/src/js/edi.js:65
#, python-format
msgid "Sorry, the document could not be imported."
msgstr ""
#. module: edi
#: model:ir.model,name:edi.model_res_company
msgid "Companies"
msgstr ""
#. module: edi
#: model:ir.model,name:edi.model_res_currency
msgid "Currency"
msgstr "Gjaldmiðill"
#. module: edi
#. openerp-web
#: code:addons/edi/static/src/js/edi.js:71
#, python-format
msgid "Document Import Notification"
msgstr ""
#. module: edi
#: code:addons/edi/models/edi.py:130
#, python-format
msgid "Missing application."
msgstr ""
#. module: edi
#: code:addons/edi/models/edi.py:131
#, python-format
msgid ""
"The document you are trying to import requires the OpenERP `%s` application. "
"You can install it by connecting as the administrator and opening the "
"configuration assistant."
msgstr ""
#. module: edi
#: code:addons/edi/models/edi.py:47
#, python-format
msgid "'%s' is an invalid external ID"
msgstr ""
#. module: edi
#: model:ir.model,name:edi.model_res_partner
msgid "Partner"
msgstr "Viðskipta aðili"
#. module: edi
#: model:ir.model,name:edi.model_edi_edi
msgid "EDI Subsystem"
msgstr ""

View File

@ -47,7 +47,6 @@ You can define the different phases of interviews and easily rate the applicant
'fetchmail',
],
'data': [
'wizard/hr_recruitment_employee_hired.xml',
'wizard/hr_recruitment_create_partner_job_view.xml',
'hr_recruitment_view.xml',
'hr_recruitment_menu.xml',

View File

@ -22,7 +22,7 @@
<field name="res_model">hr.applicant</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('state','in',('draft','open'))]</field>
<field name="domain">[('stage_id.fold', '!=', True)]</field>
<field name="view_id" ref="view_applicants_status_tree"/>
</record>

View File

@ -0,0 +1,16 @@
.. _changelog:
Changelog
=========
`trunk (saas-2)`
----------------
- Stage/state update
- ``hr.applicant``: removed inheritance from ``base_stage`` class and removed
``state`` field. Added ``date_last_stage_update`` field holding last stage_id
modification. Removed ``date`` field not used anywhere. Updated reports.
- ``hr.recruitment.stage``: removed ``state`` field.
- Removed ``hired.employee`` wizard.

View File

@ -0,0 +1,22 @@
=====================
HR Recruitment DevDoc
=====================
Hr Recruitment module documentation
===================================
Documentation topics
''''''''''''''''''''
.. toctree::
:maxdepth: 1
stage_status.rst
Changelog
'''''''''
.. toctree::
:maxdepth: 1
changelog.rst

View File

@ -0,0 +1,54 @@
.. _stage_status:
Stage and Status
================
.. versionchanged:: 8.0 saas-2 state/stage cleaning
Stage
+++++
This revision removed the concept of state on hr.applicant objects. The ``state``
field has been totally removed and replaced by stages, using ``stage_id``. The
following models are impacted:
- ``hr.applicant`` now use only stages. However a convention still exists about
'New' stage. An applicant is consdered as ``new`` when it has the following
properties:
- ``stage_id and stage_id.sequence = 1``
- ``hr.recruitment.stage`` do not have any ``state`` field anymore.
- ``hr.recruitment.report`` do not have any ``state`` field anymore.
By default a newly created applicant be in a new stage. It means that it will
fetch the stage having ``sequence = 1``. Stage mangement is done using the
kanban view or the clikable statusbar. It is not done using buttons anymore.
Employee creation is still feasible directly from a link button in the form view.
Stage analysis
++++++++++++++
Stage analysis can be performed using the newly introduced ``date_last_stage_update``
datetime field. This field is updated everytime ``stage_id`` is updated.
``hr.recruitment.report`` model also uses the ``date_last_stage_update`` field.
This allows to group and analyse the time spend in the various stages.
Open / Assignation date
+++++++++++++++++++++++
The ``date_open`` field meaning has been updated. It is now set when the ``user_id``
(responsible) is set. It is therefore the assignation date.
Subtypes
++++++++
The following subtypes are triggered on ``hr.applicant``:
- ``mt_applicant_new``: new applicants. Condition: ``obj.stage_id and obj.stage_id.sequence == 1``
- ``mt_applicant_stage_changed``: stage changed. Condition: ``obj.stage_id and obj.stage_id.sequence != 1``
The following subtype is trigerred on ``hr.job``:
- ``mt_job_new_applicant``: new applicant in the job.

View File

@ -19,23 +19,13 @@
#
##############################################################################
import time
from openerp import tools
from openerp.addons.base_status.base_stage import base_stage
from datetime import datetime
from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp.tools import html2plaintext
AVAILABLE_STATES = [
('draft', 'New'),
('cancel', 'Refused'),
('open', 'In Progress'),
('pending', 'Pending'),
('done', 'Hired')
]
AVAILABLE_PRIORITIES = [
('', ''),
('5', 'Not Good'),
@ -62,13 +52,11 @@ class hr_recruitment_stage(osv.osv):
'name': fields.char('Name', size=64, required=True, translate=True),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of stages."),
'department_id':fields.many2one('hr.department', 'Specific to a Department', help="Stages of the recruitment process may be different per department. If this stage is common to all departments, keep this field empty."),
'state': fields.selection(AVAILABLE_STATES, 'Status', required=True, help="The related status for the stage. The status of your document will automatically change according to the selected stage. Example, a stage is related to the status 'Close', when your document reach this stage, it will be automatically closed."),
'fold': fields.boolean('Hide in views if empty', help="This stage is not visible, for example in status bar or kanban view, when there are no records in that stage to display."),
'requirements': fields.text('Requirements'),
}
_defaults = {
'sequence': 1,
'state': 'draft',
'fold': False,
}
@ -87,18 +75,15 @@ class hr_recruitment_degree(osv.osv):
('name_uniq', 'unique (name)', 'The name of the Degree of Recruitment must be unique!')
]
class hr_applicant(base_stage, osv.Model):
class hr_applicant(osv.Model):
_name = "hr.applicant"
_description = "Applicant"
_order = "id desc"
_inherit = ['mail.thread', 'ir.needaction_mixin']
_track = {
'state': {
'hr_recruitment.mt_applicant_hired': lambda self, cr, uid, obj, ctx=None: obj.state == 'done',
'hr_recruitment.mt_applicant_refused': lambda self, cr, uid, obj, ctx=None: obj.state == 'cancel',
},
'stage_id': {
'hr_recruitment.mt_stage_changed': lambda self, cr, uid, obj, ctx=None: obj.state not in ['done', 'cancel'],
'hr_recruitment.mt_applicant_new': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence == 1,
'hr_recruitment.mt_applicant_stage_changed': lambda self, cr, uid, obj, ctx=None: obj.stage_id and obj.stage_id.sequence != 1,
},
}
@ -109,7 +94,7 @@ class hr_applicant(base_stage, osv.Model):
def _get_default_stage_id(self, cr, uid, context=None):
""" Gives default stage_id """
department_id = self._get_default_department_id(cr, uid, context=context)
return self.stage_find(cr, uid, [], department_id, [('state', '=', 'draft')], context=context)
return self.stage_find(cr, uid, [], department_id, [('sequence', '=', '1')], context=context)
def _resolve_department_id_from_context(self, cr, uid, context=None):
""" Returns ID of department based on the value of 'default_department_id'
@ -197,20 +182,12 @@ class hr_applicant(base_stage, osv.Model):
'write_date': fields.datetime('Update Date', readonly=True),
'stage_id': fields.many2one ('hr.recruitment.stage', 'Stage', track_visibility='onchange',
domain="['|', ('department_id', '=', department_id), ('department_id', '=', False)]"),
'state': fields.related('stage_id', 'state', type="selection", store=True,
selection=AVAILABLE_STATES, string="Status", readonly=True,
help='The status is set to \'Draft\', when a case is created.\
If the case is in progress the status is set to \'Open\'.\
When the case is over, the status is set to \'Done\'.\
If the case needs to be reviewed then the status is \
set to \'Pending\'.'),
'categ_ids': fields.many2many('hr.applicant_category', string='Tags'),
'company_id': fields.many2one('res.company', 'Company'),
'user_id': fields.many2one('res.users', 'Responsible', track_visibility='onchange'),
# Applicant Columns
'date_closed': fields.datetime('Closed', readonly=True, select=True),
'date_open': fields.datetime('Opened', readonly=True, select=True),
'date': fields.datetime('Date'),
'date_open': fields.datetime('Assigned', readonly=True, select=True),
'date_last_stage_update': fields.datetime('Last Stage Update', select=True),
'date_action': fields.date('Next Action Date'),
'title_action': fields.char('Next Action', size=64),
'priority': fields.selection(AVAILABLE_PRIORITIES, 'Appreciation'),
@ -234,35 +211,35 @@ class hr_applicant(base_stage, osv.Model):
'day_close': fields.function(_compute_day, string='Days to Close', \
multi='day_close', type="float", store=True),
'color': fields.integer('Color Index'),
'emp_id': fields.many2one('hr.employee', 'employee'),
'emp_id': fields.many2one('hr.employee', string='Employee',
help='Employee linked to the applicant.'),
'user_email': fields.related('user_id', 'email', type='char', string='User Email', readonly=True),
}
_defaults = {
'active': lambda *a: 1,
'user_id': lambda s, cr, uid, c: uid,
'email_from': lambda s, cr, uid, c: s._get_default_email(cr, uid, c),
'stage_id': lambda s, cr, uid, c: s._get_default_stage_id(cr, uid, c),
'department_id': lambda s, cr, uid, c: s._get_default_department_id(cr, uid, c),
'company_id': lambda s, cr, uid, c: s.pool.get('res.company')._company_default_get(cr, uid, 'hr.applicant', context=c),
'color': 0,
'date_last_stage_update': fields.datetime.now(),
}
_group_by_full = {
'stage_id': _read_group_stage_ids
}
def onchange_job(self, cr, uid, ids, job, context=None):
if job:
job_record = self.pool.get('hr.job').browse(cr, uid, job, context=context)
def onchange_job(self, cr, uid, ids, job_id=False, context=None):
if job_id:
job_record = self.pool.get('hr.job').browse(cr, uid, job_id, context=context)
if job_record and job_record.department_id:
return {'value': {'department_id': job_record.department_id.id}}
return {}
def onchange_department_id(self, cr, uid, ids, department_id=False, context=None):
obj_recru_stage = self.pool.get('hr.recruitment.stage')
stage_ids = obj_recru_stage.search(cr, uid, ['|',('department_id','=',department_id),('department_id','=',False)], context=context)
stage_id = stage_ids and stage_ids[0] or False
def onchange_department_id(self, cr, uid, ids, department_id=False, stage_id=False, context=None):
if not stage_id:
stage_id = self.stage_find(cr, uid, [], department_id, [('sequence', '=', '1')], context=context)
return {'value': {'stage_id': stage_id}}
def onchange_partner_id(self, cr, uid, ids, partner_id, context=None):
@ -412,21 +389,20 @@ class hr_applicant(base_stage, osv.Model):
self.pool.get('hr.job').message_post(cr, uid, [applicant.job_id.id], body=_('Applicant <b>created</b>'), subtype="hr_recruitment.mt_job_new_applicant", context=context)
return obj_id
def case_open(self, cr, uid, ids, context=None):
"""
open Request of the applicant for the hr_recruitment
"""
res = super(hr_applicant, self).case_open(cr, uid, ids, context)
date = self.read(cr, uid, ids, ['date_open'])[0]
if not date['date_open']:
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S'),})
return res
def write(self, cr, uid, ids, vals, context=None):
if isinstance(ids, (int, long)):
ids = [ids]
# stage change: update date_last_stage_update
if 'stage_id' in vals:
vals['date_last_stage_update'] = fields.datetime.now()
# user_id change: update date_start
if vals.get('user_id'):
vals['date_start'] = fields.datetime.now()
def case_close(self, cr, uid, ids, context=None):
res = super(hr_applicant, self).case_close(cr, uid, ids, context)
return res
return super(hr_applicant, self).write(cr, uid, ids, vals, context=context)
def case_close_with_emp(self, cr, uid, ids, context=None):
def create_employee_from_applicant(self, cr, uid, ids, context=None):
""" Create an hr.employee from the hr.applicants """
if context is None:
context = {}
hr_employee = self.pool.get('hr.employee')
@ -436,17 +412,16 @@ class hr_applicant(base_stage, osv.Model):
for applicant in self.browse(cr, uid, ids, context=context):
address_id = contact_name = False
if applicant.partner_id:
address_id = self.pool.get('res.partner').address_get(cr,uid,[applicant.partner_id.id],['contact'])['contact']
contact_name = self.pool.get('res.partner').name_get(cr,uid,[applicant.partner_id.id])[0][1]
address_id = self.pool.get('res.partner').address_get(cr, uid, [applicant.partner_id.id], ['contact'])['contact']
contact_name = self.pool.get('res.partner').name_get(cr, uid, [applicant.partner_id.id])[0][1]
if applicant.job_id and (applicant.partner_name or contact_name):
applicant.job_id.write({'no_of_recruitment': applicant.job_id.no_of_recruitment - 1})
emp_id = hr_employee.create(cr,uid,{'name': applicant.partner_name or contact_name,
emp_id = hr_employee.create(cr, uid, {'name': applicant.partner_name or contact_name,
'job_id': applicant.job_id.id,
'address_home_id': address_id,
'department_id': applicant.department_id.id
})
self.write(cr, uid, [applicant.id], {'emp_id': emp_id}, context=context)
self.case_close(cr, uid, [applicant.id], context)
else:
raise osv.except_osv(_('Warning!'), _('You must define an Applied Job and a Contact Name for this applicant.'))
@ -457,26 +432,6 @@ class hr_applicant(base_stage, osv.Model):
dict_act_window['view_mode'] = 'form,tree'
return dict_act_window
def case_cancel(self, cr, uid, ids, context=None):
"""Overrides cancel for crm_case for setting probability
"""
res = super(hr_applicant, self).case_cancel(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability': 0.0})
return res
def case_pending(self, cr, uid, ids, context=None):
"""Marks case as pending"""
res = super(hr_applicant, self).case_pending(cr, uid, ids, context)
self.write(cr, uid, ids, {'probability': 0.0})
return res
def case_reset(self, cr, uid, ids, context=None):
"""Resets case as draft
"""
res = super(hr_applicant, self).case_reset(cr, uid, ids, context)
self.write(cr, uid, ids, {'date_open': False, 'date_closed': False})
return res
def set_priority(self, cr, uid, ids, priority, *args):
"""Set applicant priority
"""

View File

@ -51,34 +51,29 @@
<field name="name">Doctoral Degree</field>
<field name="sequence">4</field>
</record>
<record model="hr.recruitment.stage" id="stage_job1">
<field name="name">Initial Qualification</field>
<field name="state">draft</field>
<field name="sequence">1</field>
</record>
<record model="hr.recruitment.stage" id="stage_job2">
<field name="name">First Interview</field>
<field name="state">open</field>
<field name="sequence">2</field>
</record>
<record model="hr.recruitment.stage" id="stage_job3">
<field name="name">Second Interview</field>
<field name="state">open</field>
<field name="sequence">3</field>
</record>
<record model="hr.recruitment.stage" id="stage_job4">
<field name="name">Contract Proposed</field>
<field name="state">pending</field>
<field name="sequence">4</field>
</record>
<record model="hr.recruitment.stage" id="stage_job5">
<field name="name">Contract Signed</field>
<field name="state">done</field>
<field name="sequence">5</field>
</record>
<record model="hr.recruitment.stage" id="stage_job6">
<field name="name">Refused</field>
<field name="state">cancel</field>
<field name="sequence">6</field>
<field name="fold" eval="True"/>
</record>
@ -467,24 +462,24 @@
<field name="res_model">hr.job</field>
</record>
<!-- Applicant-related subtypes for messaging / Chatter -->
<record id="mt_stage_changed" model="mail.message.subtype">
<record id="mt_applicant_new" model="mail.message.subtype">
<field name="name">New Applicant</field>
<field name="res_model">hr.applicant</field>
<field name="default" eval="False"/>
<field name="description">Applicant created</field>
</record>
<record id="mt_applicant_stage_changed" model="mail.message.subtype">
<field name="name">Stage Changed</field>
<field name="res_model">hr.applicant</field>
<field name="default" eval="False"/>
<field name="description">Stage changed</field>
</record>
<record id="mt_applicant_hired" model="mail.message.subtype">
<record id="mt_applicant_employee" model="mail.message.subtype">
<field name="name">Applicant Hired</field>
<field name="res_model">hr.applicant</field>
<field name="default" eval="False"/>
<field name="description">Applicant hired</field>
</record>
<record id="mt_applicant_refused" model="mail.message.subtype">
<field name="name">Applicant Refused</field>
<field name="res_model">hr.applicant</field>
<field name="default" eval="False"/>
<field name="description">Applicant refused</field>
</record>
<!-- Applicant Categories(Tag) -->
<record id="tag_applicant_reserve" model="hr.applicant_category">
<field name="name">Reserve</field>

View File

@ -18,30 +18,24 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import tools
from openerp.osv import fields,osv
from openerp.osv import fields, osv
from .. import hr_recruitment
from openerp.addons.decimal_precision import decimal_precision as dp
AVAILABLE_STATES = [
('draft','New'),
('open','Open'),
('cancel', 'Refused'),
('done', 'Hired'),
('pending','Pending')
]
class hr_recruitment_report(osv.osv):
class hr_recruitment_report(osv.Model):
_name = "hr.recruitment.report"
_description = "Recruitments Statistics"
_auto = False
_rec_name = 'date'
_rec_name = 'date_create'
_order = 'date_create desc'
_columns = {
'user_id': fields.many2one('res.users', 'User', readonly=True),
'nbr': fields.integer('# of Applications', readonly=True),
'state': fields.selection(AVAILABLE_STATES, 'Status', size=16, readonly=True),
# TDE TODO: use MONTHS
'month':fields.selection([('01', 'January'), ('02', 'February'), \
('03', 'March'), ('04', 'April'),\
('05', 'May'), ('06', 'June'), \
@ -51,7 +45,8 @@ class hr_recruitment_report(osv.osv):
'company_id': fields.many2one('res.company', 'Company', readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'year': fields.char('Year', size=4, readonly=True),
'date': fields.date('Date', readonly=True),
'date_create': fields.date('Create Date', readonly=True),
'date_last_stage_update': fields.datetime('Last Stage Update', readonly=True),
'date_closed': fields.date('Closed', readonly=True),
'job_id': fields.many2one('hr.job', 'Applied Job',readonly=True),
'stage_id': fields.many2one ('hr.recruitment.stage', 'Stage'),
@ -67,19 +62,19 @@ class hr_recruitment_report(osv.osv):
'delay_close': fields.float('Avg. Delay to Close', digits=(16,2), readonly=True, group_operator="avg",
help="Number of Days to close the project issue"),
}
_order = 'date desc'
def init(self, cr):
tools.drop_view_if_exists(cr, 'hr_recruitment_report')
cr.execute("""
create or replace view hr_recruitment_report as (
select
min(s.id) as id,
date_trunc('day',s.create_date) as date,
date_trunc('day',s.create_date) as date_create,
date_trunc('day',s.date_closed) as date_closed,
date_trunc('day',s.date_last_stage_update) as date_last_stage_update,
to_char(s.create_date, 'YYYY') as year,
to_char(s.create_date, 'MM') as month,
to_char(s.create_date, 'YYYY-MM-DD') as day,
s.state,
s.partner_id,
s.company_id,
s.user_id,
@ -93,7 +88,7 @@ class hr_recruitment_report(osv.osv):
(sum(salary_proposed)/count(*)) as salary_prop_avg,
sum(salary_expected) as salary_exp,
(sum(salary_expected)/count(*)) as salary_exp_avg,
extract('epoch' from (s.date_closed-s.create_date))/(3600*24) as delay_close,
extract('epoch' from (s.date_closed-s.create_date))/(3600*24) as delay_close,
count(*) as nbr
from hr_applicant s
group by
@ -105,7 +100,7 @@ class hr_recruitment_report(osv.osv):
s.date_open,
s.create_date,
s.date_closed,
s.state,
s.date_last_stage_update,
s.partner_id,
s.company_id,
s.user_id,

View File

@ -6,7 +6,7 @@
<field name="model">hr.recruitment.report</field>
<field name="arch" type="xml">
<tree string="Recruitment Analysis" create="false">
<field name="date" invisible="1"/>
<field name="date_create" invisible="1"/>
<field name="user_id" invisible="1"/>
<field name="job_id"/>
<field name="stage_id" invisible="1" />
@ -14,10 +14,10 @@
<field name="type_id" invisible="1"/>
<field name="partner_id" invisible="1"/>
<field name="company_id" groups="base.group_multi_company" invisible="1"/>
<field name="state" invisible="1"/>
<field name="year" invisible="1"/>
<field name="day" invisible="1"/>
<field name="month" invisible="1"/>
<field name="date_last_stage_update" invisible="1"/>
<field name="nbr" sum="# of Applications"/>
<field name="available" sum="Available"/>
<field name="salary_exp" sum="Expected Salary"/>
@ -46,34 +46,33 @@
<field name="model">hr.recruitment.report</field>
<field name="arch" type="xml">
<search string="Recruitment Analysis">
<filter string="New" icon="terp-document-new" domain="[('state','=','draft')]" help = "Draft recruitment"/>
<filter string="In progress" icon="terp-camera_test" domain="[('state', '=' ,'open')]" help = "In progress recruitment"/>
<filter string="Pending" icon="terp-gtk-media-pause" domain="[('state','=','pending')]" help = "Pending recruitment"/>
<filter string="Hired" icon="terp-camera_test" domain="[('state','=','done')]" help = "Hired employees"/>
<separator/>
<filter icon="terp-personal" string="My Recruitment" help="My Recruitment" domain="[('user_id','=',uid)]"/>
<field name="job_id"/>
<field name="department_id"/>
<field name="user_id" string="Responsible"/>
<field name="user_id"/>
<filter string="New" domain="[('sequence', '=', 1)]"/>
<separator/>
<filter string="Unassigned" domain="[('user_id', '=', False)]"/>
<filter string="My" domain="[('user_id', '=', uid)]"/>
<separator/>
<group expand="0" string="Extended Filters...">
<!--field name="job_id"/-->
<field name="priority"/>
<field name="stage_id"/>
<field name="company_id" groups="base.group_multi_company"/>
<field name="date" string="Creation Date"/>
<field name="date_create"/>
<field name="date_closed"/>
</group>
<group expand="1" string="Group By ...">
<filter string="Responsible" name='User' icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Company" icon="terp-go-home" domain="[]" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Partner" icon="terp-partner" domain="[]" context="{'group_by':'partner_id'}" />
<filter string="Jobs" name="job" icon="terp-gtk-select-all" domain="[]" context="{'group_by':'job_id'}"/>
<filter string="Department" name="department" icon="terp-personal+" domain="[]" context="{'group_by':'department_id'}"/>
<filter string="Degree" name="degree" icon="terp-gtk-select-all" domain="[]" context="{'group_by':'type_id'}"/>
<filter string="Stage" icon="terp-stage" domain="[]" context="{'group_by':'stage_id'}" />
<filter string="Day" name = "day" icon="terp-go-today" domain="[]" context="{'group_by':'day'}" help="Creation Date"/>
<filter string="Month" icon="terp-go-month" domain="[]" context="{'group_by':'month'}" help="Creation Date"/>
<filter string="Year" icon="terp-go-year" domain="[]" context="{'group_by':'year'}" help="Creation Date"/>
<filter string="Responsible" name='User' context="{'group_by':'user_id'}"/>
<filter string="Company" context="{'group_by':'company_id'}" groups="base.group_multi_company"/>
<filter string="Partner" context="{'group_by':'partner_id'}" />
<filter string="Jobs" name="job" context="{'group_by':'job_id'}"/>
<filter string="Department" name="department" context="{'group_by':'department_id'}"/>
<filter string="Degree" name="degree" context="{'group_by':'type_id'}"/>
<filter string="Stage" context="{'group_by':'stage_id'}" />
<filter string="Last Stage Update" context="{'group_by':'date_last_stage_update'}" />
<filter string="Day" name="day" context="{'group_by':'day'}" help="Creation Date"/>
<filter string="Month" context="{'group_by':'month'}" help="Creation Date"/>
<filter string="Year" context="{'group_by':'year'}" help="Creation Date"/>
</group>
</search>
</field>

View File

@ -17,33 +17,8 @@
resume_ids = self.pool.get('ir.attachment').search(cr, uid, [('datas_fname','=','resume.pdf'),('res_model','=',self._name),('res_id','=',applicant.id)])
assert applicant.name == "Application for the post of Jr.application Programmer.", "Applicant name does not match."
assert applicant.stage_id.id == ref('hr_recruitment.stage_job1'), "Stage should be 'Initial qualification' and is '%s'." % (applicant.stage_id.name)
assert applicant.state == "draft", "Applicant state should be 'draft'."
assert applicant.stage_id.sequence == 1, "Applicant stage sequence should be 1."
assert len(resume_ids), "Resume is not attached."
-
I refuse the applicant (hr_case_programmer)
-
!python {model: hr.applicant}: |
self.case_cancel(cr, uid, [ref("hr_case_programmer")])
-
I check the details of the refused applicant.
-
!python {model: hr.applicant}: |
applicant = self.browse(cr, uid, ref("hr_case_programmer"), context=context)
assert applicant.stage_id.id == ref('hr_recruitment.stage_job6'), "Stage should be 'Refused' and is %s." % (applicant.stage_id.name)
assert applicant.state == 'cancel', "Applicant is not in 'cancel' state."
-
I reset and re-open the previously refused applicant.
-
!python {model: hr.applicant}: |
self.case_reset(cr, uid, [ref("hr_case_programmer")])
self.case_open(cr, uid, [ref("hr_case_programmer")])
-
I check the details of the re-opened applicant.
-
!python {model: hr.applicant}: |
applicant = self.browse(cr, uid, ref("hr_case_programmer"), context=context)
assert applicant.stage_id.id == ref('hr_recruitment.stage_job2'), "Stage should be 'First interview' and is '%s'." % (applicant.stage_id.name)
assert applicant.state == "open", "Applicant state should be 'open'."
-
I assign the Job position to the applicant
-
@ -54,21 +29,6 @@
-
!python {model: hr.applicant}: |
self.action_makeMeeting(cr, uid, [ref('hr_case_programmer')])
-
I check Initial Qualification of applicant.
-
!python {model: hr.applicant}: |
self.stage_next(cr, uid, [ref('hr_case_programmer')])
-
I schedule First Interview of applicant.
-
!python {model: hr.applicant}: |
self.stage_next(cr, uid, [ref('hr_case_programmer')])
-
On a successful First Interview of applicant, I schedule Second Interview.
-
!python {model: hr.applicant}: |
self.stage_next(cr, uid, [ref('hr_case_programmer')])
-
Applicant fillup the answer of the interview quetion.
-
@ -83,40 +43,8 @@
I print Applicant fill up the interview quetion
-
!python {model: hr.applicant}: |
self.action_print_survey(cr, uid, [ref('hr_case_programmer')])
-
On a successful Second Interview of applicant Contract is Proposed to applicant.
-
!python {model: hr.applicant}: |
self.stage_next(cr, uid, [ref('hr_case_programmer')])
self.stage_previous(cr, uid, [ref('hr_case_programmer')])
-
I Hired Applicant.
-
!python {model: hr.applicant}: |
self.case_close_with_emp(cr, uid, [ref('hr_case_programmer')])
-
I check that applicant is "Hired".
-
!assert {model: hr.applicant, id: hr_case_programmer, string: Applicant state is done}:
- state == 'done'
-
I do not give employment to the hired the applicant.
-
!python {model: hired.employee}: |
context.update({'active_model': 'hr.applicant', 'active_ids': [ref("hr_recruitment.hr_case_programmer")], 'active_id': ref("hr_recruitment.hr_case_programmer")})
emp_id = self.create(cr, uid, {}, context=context)
self.case_close(cr, uid, [emp_id], context=context)
-
Now I give employment to hired applicant .
-
!python {model: hr.applicant}: |
hired_emp_obj = self.pool.get('hired.employee')
self.case_reset(cr, uid, [ref("hr_case_programmer")])
self.case_open(cr, uid, [ref("hr_case_programmer")])
context.update({'active_model': 'hr.applicant', 'active_ids': [ref("hr_recruitment.hr_case_programmer")], 'active_id': ref("hr_recruitment.hr_case_programmer")})
emp_hr_id = hired_emp_obj.create(cr, uid, {}, context=context)
hired_emp_obj.case_close_with_emp(cr, uid, [emp_hr_id], context=context)
self.action_print_survey(cr, uid, [ref('hr_case_programmer')])
-
Now hired employee want to be a partner of company.
-

View File

@ -2,7 +2,7 @@
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
# Copyright (C) 2004-Today OpenERP (<http://www.openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@ -19,9 +19,7 @@
#
##############################################################################
import hr_recruitment_create_partner_job
import hr_recruitment_employee_hired
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,54 +0,0 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
# $Id$
#
# 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/>.
#
##############################################################################
from openerp.osv import fields, osv
from openerp.tools.translate import _
class hired_employee(osv.osv_memory):
_name = 'hired.employee'
_description = 'Create Employee'
def case_close(self, cr, uid, ids, context=None):
"""
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: List of case's Ids
@param *args: Give Tuple Value
"""
if context is None:
context = {}
self.pool.get('hr.applicant').case_close(cr, uid,context.get('active_ids',[]))
return {}
def case_close_with_emp(self, cr, uid, ids, context=None):
"""
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param ids: List of case's Ids
"""
if context is None:
context = {}
return self.pool.get('hr.applicant').case_close_with_emp(cr, uid,context.get('active_ids', []))
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,30 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_hr_recruitment_hired_employee" model="ir.ui.view">
<field name="name">hr.recruitment.hired2employee.form</field>
<field name="model">hired.employee</field>
<field name="arch" type="xml">
<form string="Create New Employee" version="7.0">
<header>
<button name="case_close_with_emp" string="Yes" type="object" class="oe_highlight" />
<button name="case_close" string="No" type="object"/>
or
<button string="Cancel" class="oe_link" special="cancel" />
</header>
<label string="Would you like to create an employee ?"/>
</form>
</field>
</record>
<record id="action_hr_recruitment_hired_employee" model="ir.actions.act_window">
<field name="name">Create Employee</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">hired.employee</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</data>
</openerp>

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: 2013-01-11 08:34+0000\n"
"PO-Revision-Date: 2013-07-09 07:56+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: 2013-03-16 05:22+0000\n"
"X-Generator: Launchpad (build 16532)\n"
"X-Launchpad-Export-Date: 2013-07-10 05:26+0000\n"
"X-Generator: Launchpad (build 16696)\n"
#. module: sale
#: model:res.groups,name:sale.group_analytic_accounting
@ -129,7 +129,7 @@ msgid "March"
msgstr "Március"
#. module: sale
#: code:addons/sale/sale.py:567
#: code:addons/sale/sale.py:565
#, python-format
msgid "First cancel all invoices attached to this sales order."
msgstr "Először vonja vissza a megrendelés összes számla mellékletét."
@ -173,7 +173,7 @@ msgstr "Árajánlat megerősítve"
#: selection:sale.order,state:0
#: selection:sale.report,state:0
msgid "Invoice Exception"
msgstr "Számlázási hiba"
msgstr "Számlázási kivétel"
#. module: sale
#: view:sale.order:0
@ -183,7 +183,7 @@ msgstr "Árajánlat "
#. module: sale
#: selection:sale.order,state:0
msgid "Draft Quotation"
msgstr "Árajánlat sablon"
msgstr "Árajánlat tervezet"
#. module: sale
#: field:sale.order,partner_shipping_id:0
@ -205,7 +205,7 @@ msgstr "Engedélyezi a köteg számlázást a megrendeléseken a naplók alapjá
#. module: sale
#: field:sale.order.line,price_subtotal:0
msgid "Subtotal"
msgstr "Részösszeg"
msgstr "Nettó érték"
#. module: sale
#: view:sale.report:0
@ -259,12 +259,12 @@ msgstr "Lehetővé teszi a megrendelés soraihoz árengedmény alkalmazását"
#. module: sale
#: view:sale.order.line:0
msgid "Sales Order Lines that are in 'done' state"
msgstr "Megrendelés sorai melyek 'elvégezve' állapotúak"
msgstr "'Elvégzett' állapotú megrendelési sorok"
#. module: sale
#: selection:sale.order.line,type:0
msgid "on order"
msgstr "Megendelésre"
msgstr "megrendelésre"
#. module: sale
#: field:sale.order,message_ids:0
@ -285,7 +285,7 @@ msgstr "Adók"
#. module: sale
#: field:sale.order,amount_untaxed:0
msgid "Untaxed Amount"
msgstr "Nettó érték"
msgstr "Nettó összeg"
#. module: sale
#: field:sale.config.settings,module_project:0
@ -294,9 +294,9 @@ msgstr "Projekt"
#. module: sale
#: code:addons/sale/sale.py:185
#: code:addons/sale/sale.py:368
#: code:addons/sale/sale.py:509
#: code:addons/sale/sale.py:600
#: code:addons/sale/sale.py:363
#: code:addons/sale/sale.py:504
#: code:addons/sale/sale.py:598
#: code:addons/sale/sale.py:763
#: code:addons/sale/sale.py:780
#, python-format
@ -306,7 +306,7 @@ msgstr "Hiba!"
#. module: sale
#: report:sale.order:0
msgid "Net Total :"
msgstr "Nettó ár:"
msgstr "Nettó érték :"
#. module: sale
#: help:sale.order.line,type:0
@ -315,9 +315,9 @@ msgid ""
"replenishment.\n"
"On order: When needed, the product is purchased or produced."
msgstr ""
"Raktárról: Ha kell, a terméket a raktárról vesszük vagy várunk az alkatrész "
"feltöltésre.\n"
"Megrendelve: Ha kell, a terméket megvásároljuk vagy legyártjuk."
"Raktárról: Ha szükség van rá, a terméket a raktárról vesszük vagy várunk az "
"alkatrész feltöltésre.\n"
"Megrendelve: Ha szükség van rá, a terméket megvásároljuk vagy legyártjuk."
#. module: sale
#: help:sale.config.settings,module_analytic_user_function:0
@ -344,7 +344,7 @@ msgstr ""
#: selection:sale.order.line,state:0
#: selection:sale.report,state:0
msgid "Cancelled"
msgstr "Visszavonva"
msgstr "Érvénytelenített"
#. module: sale
#: view:sale.order.line:0
@ -416,11 +416,11 @@ msgid ""
msgstr ""
"Használja mindet a végszámla elkészítéséhez.\n"
" Használjon százalékot a teljes mennyiség bizonyos "
"százalékának szálázásához.\n"
"százalékának számlázásához.\n"
" Használjon fix árat egy bizonyos mennyiség díjbekérőjéhez / "
"előlegéhez.\n"
" Használjon egyes megrendelés sorokat a kiválasztott "
"megrendelés sorainak számlázásáahoz."
"megrendelés sorainak számlázásához."
#. module: sale
#: view:sale.make.invoice:0
@ -431,10 +431,10 @@ msgstr "Számlák létrehozása"
#. module: sale
#: report:sale.order:0
msgid "Tax"
msgstr "ÁFA"
msgstr "A"
#. module: sale
#: code:addons/sale/sale.py:278
#: code:addons/sale/sale.py:277
#: code:addons/sale/sale.py:820
#: code:addons/sale/sale.py:983
#, python-format
@ -456,7 +456,7 @@ msgstr ""
"elvégzésekkor egy számla érvényesítésekor (Számla kizárás) "
"vagy a kiválogatási lista műveletekben (Szállítási kizárás).\n"
"A 'Ütemezésre várakozás' állapot lesz beállítva, ha a számla megerősített "
" de vár egy, a megrendelés dátumára futó ütemezésre."
" de vár egy, a megrendelés dátumán futó ütemezésre."
#. module: sale
#: field:sale.report,date_confirm:0
@ -467,7 +467,7 @@ msgstr "Megerősítés dátuma"
#: view:sale.report:0
#: field:sale.report,nbr:0
msgid "# of Lines"
msgstr "Sorok száma"
msgstr "# sorok száma"
#. module: sale
#: help:sale.order,message_summary:0
@ -482,7 +482,7 @@ msgstr ""
#: help:sale.order.line,sequence:0
msgid "Gives the sequence order when displaying a list of sales order lines."
msgstr ""
"A megrendelés sorrendet adja ha a megrendelési sorok listáját jelzi ki."
"A megrendelés sorrendet adja a megrendelési sorok listájának kijelzésekor."
#. module: sale
#: view:sale.report:0
@ -496,7 +496,7 @@ msgid "Fax :"
msgstr "Fax:"
#. module: sale
#: code:addons/sale/sale.py:278
#: code:addons/sale/sale.py:277
#, python-format
msgid ""
"In order to delete a confirmed sales order, you must cancel it before !"
@ -507,7 +507,7 @@ msgstr ""
#. module: sale
#: view:sale.order:0
msgid "(update)"
msgstr "(Frissítés)"
msgstr "(frissítés)"
#. module: sale
#: model:ir.model,name:sale.model_res_partner
@ -522,8 +522,8 @@ msgid "Contract Features"
msgstr "Szerződés tulajdonságai"
#. module: sale
#: code:addons/sale/sale.py:288
#: code:addons/sale/sale.py:586
#: code:addons/sale/sale.py:287
#: code:addons/sale/sale.py:584
#: model:ir.model,name:sale.model_sale_order
#: model:process.node,name:sale.process_node_order0
#: model:process.node,name:sale.process_node_saleorder0
@ -533,7 +533,7 @@ msgstr "Szerződés tulajdonságai"
#: selection:sale.order,state:0
#, python-format
msgid "Sales Order"
msgstr "Értékesítési megbízás"
msgstr "Vevői megrendelés"
#. module: sale
#: model:res.groups,name:sale.group_invoice_so_lines
@ -543,7 +543,7 @@ msgstr "Megrendelés sorai számlázásának engedélyezése"
#. module: sale
#: model:ir.model,name:sale.model_sale_order_line
msgid "Sales Order Line"
msgstr "Értékesítési megbízási sor"
msgstr "Vevői megrendelés sor"
#. module: sale
#: field:sale.advance.payment.inv,amount:0
@ -553,7 +553,7 @@ msgstr "Előleg összege"
#. module: sale
#: help:sale.order,invoice_exists:0
msgid "It indicates that sales order has at least one invoice."
msgstr "Ez mutatja, hogy a megrendelének legalább egy számlája van."
msgstr "Ez mutatja, hogy a megrendelésnek legalább egy számlája van."
#. module: sale
#: help:sale.config.settings,group_sale_pricelist:0
@ -568,7 +568,7 @@ msgstr ""
#. module: sale
#: field:sale.config.settings,module_analytic_user_function:0
msgid "One employee can have different roles per contract"
msgstr "Egy munkavállalónak különböző funkciója lehet egy szerződésen belül"
msgstr "Egy alkalmazottnak különböző funkciója lehet egy szerződésen belül"
#. module: sale
#: selection:sale.advance.payment.inv,advance_payment_method:0
@ -583,19 +583,19 @@ msgstr "Alapértelmezett fizetési feltétel"
#. module: sale
#: model:process.transition.action,name:sale.process_transition_action_confirm0
msgid "Confirm"
msgstr "Megerősítés"
msgstr "Jóváhagyás"
#. module: sale
#: field:sale.config.settings,timesheet:0
msgid "Prepare invoices based on timesheets"
msgstr "Az időkimutatások alapján készítsen elő számlát"
msgstr "Az időkimutatások alapján készítsen elő, számlát"
#. module: sale
#: code:addons/sale/sale.py:820
#, python-format
msgid "You cannot cancel a sales order line that has already been invoiced."
msgstr ""
"Nem tud olyan megrendelési sort visszavonni amelyik már számlázva volt."
"Nem tud olyan vevői megrendelési sort visszavonni amelyik már számlázva volt."
#. module: sale
#: view:account.invoice.report:0
@ -644,7 +644,7 @@ msgstr "Megrendelés száma"
#: view:sale.order:0
#: field:sale.order,order_line:0
msgid "Order Lines"
msgstr "Megrendelési tételek"
msgstr "Megrendelés sorok"
#. module: sale
#: report:sale.order:0
@ -673,7 +673,7 @@ msgstr "Összérték"
#: help:account.config.settings,group_analytic_account_for_sales:0
msgid "Allows you to specify an analytic account on sales orders."
msgstr ""
"Lehetővé teszi az analitikus/elemző könyvelés meghatározását a "
"Lehetővé teszi az analitikus/elemző könyvelés gyűjtőkód meghatározását a "
"megrendeléseken."
#. module: sale
@ -711,7 +711,7 @@ msgstr "Óra"
#. module: sale
#: field:res.partner,sale_order_count:0
msgid "# of Sales Order"
msgstr "# megrendelésl"
msgstr "# megrendelésszámból"
#. module: sale
#: help:sale.config.settings,timesheet:0
@ -742,7 +742,7 @@ msgstr "Számlázandó"
#. module: sale
#: help:sale.order,partner_invoice_id:0
msgid "Invoice address for current sales order."
msgstr "Az aktuális értékesítési megbízás számlázási címe."
msgstr "Az aktuális megrendelés számlázási címe."
#. module: sale
#: selection:sale.order,invoice_quantity:0
@ -769,7 +769,7 @@ msgstr "Mennyiség"
#. module: sale
#: report:sale.order:0
msgid "Total :"
msgstr "Bruttó ár:"
msgstr "Összesen :"
#. module: sale
#: view:sale.order.line:0
@ -837,7 +837,7 @@ msgstr "Beállítási hiba!"
#. module: sale
#: field:account.config.settings,group_analytic_account_for_sales:0
msgid "Analytic accounting for sales"
msgstr "Analitikus/elemző könyvelés az értékesítésekhez"
msgstr "Analitikus/elemző könyvelési gyűjtőkód az értékesítésekhez"
#. module: sale
#: view:sale.order:0
@ -889,7 +889,7 @@ msgid "Sales Order done"
msgstr "Megrendelés elvégezve"
#. module: sale
#: code:addons/sale/sale.py:369
#: code:addons/sale/sale.py:364
#, python-format
msgid "Please define sales journal for this company: \"%s\" (id:%d)."
msgstr ""
@ -945,7 +945,7 @@ msgid "Sales Make Invoice"
msgstr "Számla generálása értékesítésből"
#. module: sale
#: code:addons/sale/sale.py:308
#: code:addons/sale/sale.py:307
#, python-format
msgid "Pricelist Warning!"
msgstr "Árlista figyelmeztés!"
@ -956,7 +956,7 @@ msgid "Discount (%)"
msgstr "Árengedmény (%)"
#. module: sale
#: code:addons/sale/wizard/sale_line_invoice.py:110
#: code:addons/sale/wizard/sale_line_invoice.py:107
#, python-format
msgid ""
"Invoice cannot be created for this Sales Order Line due to one of the "
@ -1009,7 +1009,7 @@ msgstr "Hónap"
#. module: sale
#: field:sale.order,currency_id:0
msgid "Currency"
msgstr "Valuta"
msgstr "Pénznem"
#. module: sale
#: view:sale.order.line:0
@ -1023,7 +1023,7 @@ msgid "Category of Product"
msgstr "Termékkaterógia"
#. module: sale
#: code:addons/sale/sale.py:566
#: code:addons/sale/sale.py:564
#, python-format
msgid "Cannot cancel this sales order!"
msgstr "Nem lehet megszakítani ezt a megrendelést!"
@ -1080,7 +1080,7 @@ msgid "Open Sale Menu"
msgstr "Értékesítési menü megnyitása"
#. module: sale
#: code:addons/sale/sale.py:600
#: code:addons/sale/sale.py:598
#, python-format
msgid "You cannot confirm a sales order which has no line."
msgstr "Nem tud megerősíteni sor nélküli megrendelést"
@ -1520,7 +1520,7 @@ msgid "TVA :"
msgstr "ÁFA:"
#. module: sale
#: code:addons/sale/sale.py:449
#: code:addons/sale/sale.py:444
#, python-format
msgid "Customer Invoices"
msgstr "Kimenő számlák"
@ -1546,7 +1546,7 @@ msgid "Sales"
msgstr "Értékesítés"
#. module: sale
#: code:addons/sale/sale.py:309
#: code:addons/sale/sale.py:308
#, python-format
msgid ""
"If you change the pricelist of this order (and eventually the currency), "
@ -1591,7 +1591,8 @@ msgid "Invoice address :"
msgstr "Számlázási cím:"
#. module: sale
#: code:addons/sale/wizard/sale_line_invoice.py:124
#: code:addons/sale/wizard/sale_line_invoice.py:121
#: model:ir.model,name:sale.model_account_invoice
#: model:process.node,name:sale.process_node_invoice0
#: view:sale.order:0
#, python-format
@ -1678,7 +1679,7 @@ msgid "Shipping address :"
msgstr "Szállítási cím:"
#. module: sale
#: code:addons/sale/sale.py:510
#: code:addons/sale/sale.py:505
#, python-format
msgid ""
"You cannot group sales having different currencies for the same partner."
@ -2196,8 +2197,9 @@ msgid "Manual In Progress"
msgstr "Manuális vezérléssel folyamatban"
#. module: sale
#: code:addons/sale/wizard/sale_line_invoice.py:110
#: code:addons/sale/wizard/sale_make_invoice.py:43
#: code:addons/sale/wizard/sale_line_invoice.py:107
#: code:addons/sale/wizard/sale_make_invoice.py:42
#: code:addons/sale/wizard/sale_make_invoice.py:55
#, python-format
msgid "Warning!"
msgstr "Figyelem!"
@ -2466,9 +2468,6 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Compute"
#~ msgstr "Számítás"
#~ msgid "Partial Delivery"
#~ msgstr "Részleges kiszállítás"
#~ msgid "UoM"
#~ msgstr "ME"
@ -2779,9 +2778,6 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Open Advance Invoice"
#~ msgstr "Előzetes számla megnyitása"
#~ msgid "Sales Management"
#~ msgstr "Értékesítési menedzsment"
#~ msgid "Deliver"
#~ msgstr "Szállítás"
@ -2792,9 +2788,6 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Sale Order Line"
#~ msgstr "Rendelési tétel"
#~ msgid "Cancel Assignation"
#~ msgstr "Számla sztornó"
#~ msgid "Invoice from the Packing"
#~ msgstr "Számla a csomagolási listából"
@ -2850,9 +2843,6 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Related invoices"
#~ msgstr "Kapcsolódó számlák"
#~ msgid "Payment Before Delivery"
#~ msgstr "Fizetés szállítás előtt"
#~ msgid ""
#~ "This is the list of invoices that have been generated for this sale order. "
#~ "The same sale order may have been invoiced in several times (by line for "
@ -2877,6 +2867,9 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Sale Order line"
#~ msgstr "Rendelési sor"
#~ msgid "Payment Before Delivery"
#~ msgstr "Szállítás előtti fizetés"
#~ msgid "All at Once"
#~ msgstr "Egyszerre"
@ -2892,9 +2885,6 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Notes"
#~ msgstr "Megjegyzések"
#~ msgid "Lines to Invoice"
#~ msgstr "Számla sorai"
#~ msgid "All Quotations"
#~ msgstr "Összes árajánlat"
@ -2922,9 +2912,6 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Picking List"
#~ msgstr "Kiszedési lista"
#~ msgid "Picking List & Delivery Order"
#~ msgstr "Kiszedési lista és Szállítás megrendelése"
#~ msgid "Invoicing"
#~ msgstr "Számlázás"
@ -2950,18 +2937,21 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Shipped Qty"
#~ msgstr "Szállított mennyiség"
#~ msgid "Shipping Default Policy"
#~ msgstr "Alapértelmezett szállítási politika"
#~ msgid "Close"
#~ msgstr "Zárás"
#~ msgid "Cancel Assignation"
#~ msgstr "Hozzárendelés megszüntetése"
#~ msgid "State"
#~ msgstr "Állapot"
#~ msgid "Configure"
#~ msgstr "Beállítás"
#~ msgid "Lines to Invoice"
#~ msgstr "Kiszámlázandó sorok"
#~ msgid "Order State"
#~ msgstr "Megrendelés állapota"
@ -3675,3 +3665,15 @@ msgstr "A megrendelés megrendelési dátuma"
#~ msgid "Invoice Policy"
#~ msgstr "Számlázási szabály"
#~ msgid "Partial Delivery"
#~ msgstr "Rész-szállítmány"
#~ msgid "Shipping Default Policy"
#~ msgstr "Alapértelmezett számlázási szabály"
#~ msgid "Sales Management"
#~ msgstr "Értékesítés kezelés"
#~ msgid "Picking List & Delivery Order"
#~ msgstr "Kiválogatási lista & Kézbesítési bizonylat/szállító levél"