[MERGE] trunk-dev-addons3

bzr revid: psi@tinyerp.co.in-20100506125554-zbf9s1zyvlxp8qut
This commit is contained in:
psi (Open ERP) 2010-05-06 18:25:54 +05:30
commit 48c53d3d0c
96 changed files with 3013 additions and 2281 deletions

View File

@ -515,6 +515,7 @@ class account_journal(osv.osv):
'company_id': fields.many2one('res.company', 'Company', required=True,select=1),
'invoice_sequence_id': fields.many2one('ir.sequence', 'Invoice Sequence', \
help="The sequence used for invoice numbers in this journal."),
'allow_date':fields.boolean('Check Date not in the Period', help= 'If set to True then do not accept the entry if the entry date is not into the period dates'),
}
_defaults = {

View File

@ -785,12 +785,35 @@ class account_move_line(osv.osv):
self.pool.get('account.move').validate(cr, uid, [line.move_id.id], context=context)
return result
def check_date(self, cr, uid, vals, context=None, check=True):
if context is None:
context = {}
if 'date' in vals.keys():
if 'journal_id' in vals and 'journal_id' not in context:
journal_id = vals['journal_id']
if 'period_id' in vals and 'period_id' not in context:
period_id = vals['period_id']
elif 'journal_id' not in context and 'move_id' in vals:
m = self.pool.get('account.move').browse(cr, uid, vals['move_id'])
journal_id = m.journal_id.id
period_id = m.period_id.id
else:
journal_id = context['journal_id']
period_id = context['period_id']
journal=self.pool.get('account.journal').browse(cr,uid,[journal_id])[0]
if journal.allow_date:
period=self.pool.get('account.period').browse(cr,uid,[period_id])[0]
if not time.strptime(vals['date'],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') and time.strptime(vals['date'],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
raise osv.except_osv(_('Error'),_('The date of your Ledger Posting is not in the defined period !'))
else:
return True
def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
if not context:
context={}
if vals.get('account_tax_id', False):
raise osv.except_osv(_('Unable to change tax !'), _('You can not change the tax, you should remove and recreate lines !'))
self.check_date(cr, uid, vals, context, check)
account_obj = self.pool.get('account.account')
if ('account_id' in vals) and not account_obj.read(cr, uid, vals['account_id'], ['active'])['active']:
raise osv.except_osv(_('Bad account!'), _('You can not use an inactive account!'))
@ -844,10 +867,11 @@ class account_move_line(osv.osv):
return True
def create(self, cr, uid, vals, context=None, check=True):
if not context:
context={}
account_obj = self.pool.get('account.account')
tax_obj=self.pool.get('account.tax')
if context is None:
context = {}
self.check_date(cr, uid, vals, context, check)
if ('account_id' in vals) and not account_obj.read(cr, uid, vals['account_id'], ['active'])['active']:
raise osv.except_osv(_('Bad account!'), _('You can not use an inactive account!'))
if 'journal_id' in vals and 'journal_id' not in context:

View File

@ -284,11 +284,11 @@
<field name="default_debit_account_id" attrs="{'required':[('type','=','cash')]}" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<field name="default_credit_account_id" attrs="{'required':[('type','=','cash')]}" domain="[('type','&lt;&gt;','view'),('type','&lt;&gt;','consolidation')]"/>
<field name="user_id" groups="base.group_extended"/>
<field name="allow_date" />
<field name="company_id" groups="base.group_multi_company"/>
<newline/>
<field name="centralisation"/>
<field name="group_invoice_lines"/>
<field name="update_posted"/>
<field name="entry_posted"/>
</page>

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-05-02 10:11+0000\n"
"PO-Revision-Date: 2010-05-05 14:54+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-05-05 03:48+0000\n"
"X-Launchpad-Export-Date: 2010-05-06 04:04+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@ -1596,7 +1596,7 @@ msgstr ""
#: selection:account.tax,tax_group:0
#: selection:account.tax.template,tax_group:0
msgid "VAT"
msgstr "NIP"
msgstr "VAT"
#. module: account
#: rml:account.analytic.account.journal:0

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-05-03 05:57+0000\n"
"Last-Translator: KenSai <Unknown>\n"
"PO-Revision-Date: 2010-05-06 01:44+0000\n"
"Last-Translator: digitalsatori <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-05-05 03:48+0000\n"
"X-Launchpad-Export-Date: 2010-05-06 04:04+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@ -40,7 +40,7 @@ msgstr "凭证录入"
#. module: account
#: model:ir.actions.todo,note:account.config_wizard_account_base_setup_form
msgid "Specify The Message for the Overdue Payment Report."
msgstr "设定这逾期应付款表单的消息"
msgstr "设置过期支付的催款信息"
#. module: account
#: model:process.transition,name:account.process_transition_confirmstatementfromdraft0
@ -115,7 +115,7 @@ msgstr "上级科目"
#. module: account
#: selection:account.move,type:0
msgid "Journal Voucher"
msgstr "原始凭证分类帐"
msgstr "日记账凭证"
#. module: account
#: field:account.invoice,residual:0

View File

@ -1,28 +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/>.
#
##############################################################################
#----------------------------------------------------------
# Init Sales
#----------------------------------------------------------
import account_date_check
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,46 +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/>.
#
##############################################################################
{
'name': 'Account Date check',
'version': '1.0',
'category': 'Generic Modules/Accounting',
'description': """
* Adds a field on journals: "Allows date not in the period"
* By default, this field is checked.
If this field is not checked, the system control that the date is in the
period when you create an account entry. Otherwise, it generates an
error message: "The date of your account move is not in the defined
period !"
""",
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': ['account'],
'init_xml': [],
'update_xml': ['account_date_check_view.xml'],
'demo_xml': [],
'installable': True,
'active': False,
'certificate': '0066174843389',
}
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,82 +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/>.
#
##############################################################################
from osv import fields
from osv import osv
import time
import netsvc
import ir
from mx import DateTime
import pooler
from tools import config
from tools.translate import _
class account_journal(osv.osv):
_inherit='account.journal'
_name='account.journal'
_columns = {
'allow_date':fields.boolean('Allows date not in the period'),
}
_defaults = {
'allow_date': lambda *a: 1,
}
account_journal()
class account_move_line(osv.osv):
_inherit='account.move.line'
_name='account.move.line'
def check_date(self, cr, uid, vals, context=None, check=True):
if not context:
context = {}
if 'date' in vals.keys():
if 'journal_id' in vals and 'journal_id' not in context:
journal_id = vals['journal_id']
if 'period_id' in vals and 'period_id' not in context:
period_id = vals['period_id']
elif 'journal_id' not in context and 'move_id' in vals:
m = self.pool.get('account.move').browse(cr, uid, vals['move_id'])
journal_id = m.journal_id.id
period_id = m.period_id.id
else:
journal_id = context['journal_id']
period_id = context['period_id']
journal=self.pool.get('account.journal').browse(cr,uid,[journal_id])[0]
if not journal.allow_date:
period=self.pool.get('account.period').browse(cr,uid,[period_id])[0]
if not time.strptime(vals['date'],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') and time.strptime(vals['date'],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
raise osv.except_osv(_('Error'),_('The date of your Ledger Posting is not in the defined period !'))
else:
return True
def write(self, cr, uid, ids, vals, context=None, check=True, update_check=True):
flag=self.check_date(cr, uid, vals, context, check)
result = super(account_move_line, self).write(cr, uid, ids, vals, context, check, update_check)
return result
def create(self, cr, uid, vals, context=None, check=True):
flag=self.check_date(cr, uid, vals, context, check)
result = super(account_move_line, self).create(cr, uid, vals, context, check)
return result
account_move_line()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,18 +0,0 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="ir.ui.view" id="view_account_journal_form_inherit2">
<field name="name">account.journal.form.inherit2</field>
<field name="model">account.journal</field>
<field name="type">form</field>
<field name="inherit_id" ref="account.view_account_journal_form"/>
<field name="arch" type="xml">
<field name="user_id" position="after">
<field name="allow_date" />
</field>
</field>
</record>
</data>
</openerp>

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01:51+0000\n"
"PO-Revision-Date: 2009-08-28 16:01:51+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-24 17:36+0000\n"
"Last-Translator: lem0na <nickyk@gmx.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Невалиден XML за преглед на архитектурата"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-21 03:57+0000\n"
"Last-Translator: Miro Glavić <glavicmiro@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Neodgovarajući XML za arhitekturu prikaza!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Dozvoli datum koji nije u periodu"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Provjera Datuma Računa"

View File

@ -1,33 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-29 06:30+0000\n"
"Last-Translator: Jordi Esteve - http://www.zikzakmedia.com "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML invàlid per a la definició de la vista!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permetre dates fora del període"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Comprovació dates en comptabilitat"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Kuvaly [LCT] <kuvaly@seznam.cz>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Invalidní XML pro zobrazení architektury!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Povolit data která nejsou v periodě"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Kontrola data účtu"

View File

@ -1,33 +0,0 @@
# Danish translation for openobject-addons
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: SmartWi <kurt@smartwi.net>\n"
"Language-Team: Danish <da@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Ugyldig XML for View Architecture!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Datoen er uden doe preioden"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Konto data check"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Ferdinand-chricar <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Fehlerhafter xml Code für diese Ansicht!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Erlaubt Datum außerhalb der Periode"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Konto Datums Check"

View File

@ -1,41 +0,0 @@
# Greek translation for openobject-addons
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-08 12:02+0000\n"
"Last-Translator: Makis Nicolaou <mark.nicolaou@gmail.com>\n"
"Language-Team: Greek <el@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Άκυρο XML για την αρχιτεκτονική όψης!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Allows date not in the period"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Account Date check"
#, python-format
#~ msgid "The date of your account move is not in the defined period !"
#~ msgstr "Η ημερομηνία κίνησης λογαριασμού δεν είναι στην καθορισμένη περίοδο!"
#, python-format
#~ msgid "Error"
#~ msgstr "Σφάλμα"

View File

@ -1,33 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-24 17:37+0000\n"
"Last-Translator: Jordi Esteve - http://www.zikzakmedia.com "
"<jesteve@zikzakmedia.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "¡XML inválido para la definición de la vista!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permitir fechas fuera del periodo"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Comprobación fechas en contabilidad"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-14 13:58+0000\n"
"Last-Translator: Silvana Herrera <sherrera@thymbra.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML inválido para la definición de la vista!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permitir fechas fuera del periodo"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Control de fecha contable"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 16:21+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Vigane XML vaate arhitektuurile!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Lubab perioodivälist kuupäeva"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Konto kuupäeva kontroll"

View File

@ -1,41 +0,0 @@
# Finnish translation for openobject-addons
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-08 14:54+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: Finnish <fi@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Virheellinen XML näkymäarkkitehtuurille!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Sallii päiväyksen joka ei ole jaksossa"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Tilin päiväys tarkistus"
#, python-format
#~ msgid "The date of your account move is not in the defined period !"
#~ msgstr "Päiväystä tilinsiirrolle ei ole määritellyssä ajanjaksossa"
#, python-format
#~ msgid "Error"
#~ msgstr "Virhe"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-09 16:21+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML non valide pour l'architecture de la vue"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permet une date hors période"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Vérification de la Date de Compte"

View File

@ -1,42 +0,0 @@
# translation of account-date-check-es.po to Galego
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
# Frco. Javier Rial Rodríguez <fjrial@cesga.es>, 2009.
msgid ""
msgstr ""
"Project-Id-Version: account-date-check-es\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-08 16:28+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: Galego <g11n@mancomun.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "¡XML non válido para a definición da vista!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permitir datas fóra do periodo"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Comprobación datas en contabilidade"
#, python-format
#~ msgid "Error"
#~ msgstr "Erro"
#, python-format
#~ msgid "The date of your account move is not in the defined period !"
#~ msgstr "¡A data do asento contábel non está no periodo indicado!"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-22 12:13+0000\n"
"Last-Translator: Jožek Prikratki <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Neispravan XML za arhitekturu prikaza!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Dozvoljeno je da datum nije u periodu"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Provjera datuma računa"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2008-10-16 03:54+0000\n"
"Last-Translator: opix <inur.opix@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2008-11-13 15:42+0000\n"
"Last-Translator: Marius Marolla <mariusmarolla@areablu.net>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML non valido per Visualizzazione Architettura!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,41 +0,0 @@
# Korean translation for openobject-addons
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-09-08 16:49+0000\n"
"Last-Translator: ekodaq <ceo@ekosdaq.com>\n"
"Language-Team: Korean <ko@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "유효하지 않은 뷰 아키텍처를 위한 XML !"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "기간을 벗어난 날짜를 허용"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "계정 날짜 체크"
#, python-format
#~ msgid "The date of your account move is not in the defined period !"
#~ msgstr "귀하의 계정 이동 날자가 정의된 기간을 벗어 납니다 !"
#, python-format
#~ msgid "Error"
#~ msgstr "에러"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-01-20 14:02+0000\n"
"Last-Translator: Paulius Sladkevičius <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Netinkamas XML peržiūros struktūrai!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-10 10:28+0000\n"
"Last-Translator: Jan Verlaan (Veritos) <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Ongeldige XML, kan overzicht niet weergeven!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Datum niet in de periode"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Datum controle op boeking"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-04-24 15:40+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,33 +0,0 @@
# Occitan (post 1500) translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-03-12 13:29+0000\n"
"Last-Translator: Cédric VALMARY (Per Tot en òc) <cvalmary@yahoo.fr>\n"
"Language-Team: Occitan (post 1500) <oc@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML invalid per l'arquitectura de la vista"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML niewłaściwy dla tej architektury wyświetlania!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Pozwala na datę spoza okresu"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Kontrola daty konta"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-29 00:16+0000\n"
"Last-Translator: Paulino <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML inválido para a arquitectura de vista"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permitir data fora do período"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Verificar data da conta"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-03-24 01:05+0000\n"
"Last-Translator: Pedro_Maschio <pedro.bicudo@tgtconsult.com.br>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML inválido para Arquitetura da View"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permite datas fora do período"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Verificação de Data de Conta"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "XML invalid pentru arhitectura machetei de afișare !"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Permite date ce nu sunt în perioadă"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Verificare dată cont"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2008-11-03 16:11+0000\n"
"Last-Translator: Sergei Kostigoff <sergei.kostigoff@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Неправильный XML для просмотра архитектуры!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,33 +0,0 @@
# Slovak translation for openobject-addons
# Copyright (c) 2009 Rosetta Contributors and Canonical Ltd 2009
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2009.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-18 15:03+0000\n"
"Last-Translator: Radoslav Sloboda <rado.sloboda@gmail.com>\n"
"Language-Team: Slovak <sk@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: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Neplatná XML pre zobrazenie architektúry!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Neveljaven XML za arhitekturo pogleda."
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Dovoli datum, ki ni v obdobju"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "Kontrola datuma konta"

View File

@ -1,64 +0,0 @@
# Translation of OpenERP Server.
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 15:23:46+0000\n"
"PO-Revision-Date: 2009-08-28 15:23:46+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 15:23:46+0000\n"
"PO-Revision-Date: 2009-08-28 15:23:46+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Felaktig XML för Vyarkitektur!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Tillåtet datum ej inom period."
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "konto datum kontroll"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0_rc3\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-02-03 06:24+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 09:32+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Görüntüleme mimarisi için Geçersiz XML"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "Girilen tarih periyod içinde değil"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "hesap tarihi kontrolü"

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2008-11-17 21:09+0000\n"
"Last-Translator: Yuriy Tkachenko <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Неправильний XML для Архітектури Вигляду!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,64 +0,0 @@
# Translation of OpenERP Server.
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:00:38+0000\n"
"PO-Revision-Date: 2009-08-28 16:00:38+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:00:38+0000\n"
"PO-Revision-Date: 2009-08-28 16:00:38+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -1,53 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-03-20 07:01+0000\n"
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "无效的视图结构XML文件!"
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr "允许日期不在这会计期间"
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr "科目日期检查"
#~ msgid ""
#~ "\n"
#~ " * Adds a field on journals: \"Allows date not in the period\"\n"
#~ " * By default, this field is checked.\n"
#~ "\n"
#~ "If this field is not checked, the system control that the date is in the\n"
#~ "period when you create an account entry. Otherwise, it generates an\n"
#~ "error message: \"The date of your account move is not in the defined\n"
#~ "period !\"\n"
#~ " "
#~ msgstr ""
#~ "\n"
#~ " * 在分类帐增加一个字段:允许日期不在会计期间\n"
#~ " * 默认下这字段是已检查\n"
#~ "\n"
#~ " 如果这字段是不检查,系统日期是在这会计期间\n"
#~ "你能创建凭证.\n"
#~ "否则,它会产生一个错误信息:\n"
#~ "你不能在这会计期间凭证\n"
#~ " "

View File

@ -1,32 +0,0 @@
# Translation of OpenERP Server.
# This file contains the translation of the following modules:
# * account_date_check
#
msgid ""
msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-01-30 12:43+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 04:12+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_date_check
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: account_date_check
#: field:account.journal,allow_date:0
msgid "Allows date not in the period"
msgstr ""
#. module: account_date_check
#: model:ir.module.module,shortdesc:account_date_check.module_meta_information
msgid "Account Date check"
msgstr ""

View File

@ -39,6 +39,7 @@
'security/account_payment_security.xml',
'security/ir.model.access.csv',
'wizard/account_payment_pay_view.xml',
'wizard/account_payment_populate_statement_view.xml',
'wizard/account_payment_create_order_view.xml',
'payment_view.xml',
'payment_workflow.xml',

View File

@ -2,7 +2,6 @@
<openerp>
<data>
<wizard id="wizard_populate_statement" menu="False" model="account.bank.statement" name="populate_statement" string="Populate Statement with Payment lines"/>
<!-- View used in the wizard -->
<record id="view_move_line_form" model="ir.ui.view">
<field name="name">account.move.line.form.inherit</field>
@ -300,7 +299,7 @@
<field name="inherit_id" ref="account.view_bank_statement_form"/>
<field name="arch" type="xml">
<group colspan="2" col="3" position="inside">
<button name="%(wizard_populate_statement)d" string="Import payment lines" type="action" icon="gtk-open"/>
<button name="%(action_account_populate_statement_confirm)d" string="Import payment lines" type="action" icon="gtk-open"/>
</group>
</field>
</record>

View File

@ -18,10 +18,8 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import account_payment_order
import account_payment_populate_statement
import account_payment_pay
import wizard_populate_statement
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,110 @@
# -*- 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/>.
#
##############################################################################
from lxml import etree
from osv import osv, fields
class account_payment_populate_statement(osv.osv_memory):
_name = "account.payment.populate.statement"
_description = "Account Payment Populate Statement"
_columns = {
'lines': fields.many2many('payment.line', 'payment_line_rel_', 'payment_id', 'line_id', 'Payment Lines')
}
def search_entries(self, cr, uid, ids, context=None):
line_obj = self.pool.get('payment.line')
statement_obj = self.pool.get('account.bank.statement')
mod_obj = self.pool.get('ir.model.data')
data = self.read(cr, uid, ids, [], context=context)[0]
statement = statement_obj.browse(cr, uid, context['active_id'], context=context)
line_ids = line_obj.search(cr, uid, [
('move_line_id.reconcile_id', '=', False),
('order_id.mode.journal.id', '=', statement.journal_id.id)])
line_ids.extend(line_obj.search(cr, uid, [
('move_line_id.reconcile_id', '=', False),
('order_id.mode', '=', False)]))
context.update({'line_ids': line_ids})
model_data_ids = mod_obj.search(cr, uid,[('model','=','ir.ui.view'),('name','=','account_payment_populate_statement_view')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
return {
'name': ('Entrie Lines'),
'context': context,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'account.payment.populate.statement',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
res = super(account_payment_populate_statement, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=False)
if context and 'line_ids' in context:
view_obj = etree.XML(res['arch'])
child = view_obj.getchildren()[0]
domain = '[("id", "in", '+ str(context['line_ids'])+')]'
field = etree.Element('field', attrib={'domain': domain, 'name':'lines', 'colspan':'4', 'height':'300', 'width':'800', 'nolabel':"1"})
child.addprevious(field)
res['arch'] = etree.tostring(view_obj)
return res
def populate_statement(self, cr, uid, ids, context=None):
line_obj = self.pool.get('payment.line')
statement_obj = self.pool.get('account.bank.statement')
statement_line_obj = self.pool.get('account.bank.statement.line')
currency_obj = self.pool.get('res.currency')
statement_reconcile_obj = self.pool.get('account.bank.statement.reconcile')
if context is None:
context = {}
data = self.read(cr, uid, ids, [])[0]
line_ids = data['lines']
if not line_ids:
return {}
statement = statement_obj.browse(cr, uid, context['active_id'], context=context)
for line in line_obj.browse(cr, uid, line_ids, context=context):
ctx = context.copy()
ctx['date'] = line.ml_maturity_date # was value_date earlier,but this field exists no more now
amount = currency_obj.compute(cr, uid, line.currency.id,
statement.currency.id, line.amount_currency, context=ctx)
if line.move_line_id:
reconcile_id = statement_reconcile_obj.create(cr, uid, {
'line_ids': [(6, 0, [line.move_line_id.id])]
}, context=context)
statement_line_obj.create(cr, uid, {
'name': line.order_id.reference or '?',
'amount': - amount,
'type': 'supplier',
'partner_id': line.partner_id.id,
'account_id': line.move_line_id.account_id.id,
'statement_id': statement.id,
'ref': line.communication,
'reconcile_id': reconcile_id,
}, context=context)
return {'type' : 'ir.actions.act_window_close'}
account_payment_populate_statement()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,59 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="account_populate_statement_confirm_view" model="ir.ui.view">
<field name="name">Payment Populate statement</field>
<field name="model">account.payment.populate.statement</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Populate Statement:">
<label string="Are your sure to import Payment Lines!"/>
<group colspan="4" col="6">
<separator colspan="6"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="search_entries" string="Yes" type="object" icon="gtk-ok"/>
</group>
</form>
</field>
</record>
<record id="action_account_populate_statement_confirm" model="ir.actions.act_window">
<field name="name">Payment Populate statement</field>
<field name="res_model">account.payment.populate.statement</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_populate_statement_confirm_view"/>
<field name="context">{'record_id':active_id}</field>
<field name="target">new</field>
</record>
<record id="account_payment_populate_statement_view" model="ir.ui.view">
<field name="name">Payment Populate statement</field>
<field name="model">account.payment.populate.statement</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Populate Statement:">
<group colspan="4" col="6">
<separator colspan="6"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="populate_statement" string="ADD" type="object" icon="gtk-ok"/>
</group>
</form>
</field>
</record>
<record id="action_account_payment_populate_statement" model="ir.actions.act_window">
<field name="name">Payment Populate statement</field>
<field name="res_model">account.payment.populate.statement</field>
<field name="type">ir.actions.act_window</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="account_payment_populate_statement_view"/>
<field name="context">{'record_id':active_id}</field>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -1,121 +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 wizard
import pooler
from tools.misc import UpdateableStr
FORM = UpdateableStr()
FIELDS = {
'lines': {'string': 'Payment Lines', 'type': 'many2many',
'relation': 'payment.line'},
}
def _search_entries(obj, cursor, user, data, context):
pool = pooler.get_pool(cursor.dbname)
line_obj = pool.get('payment.line')
statement_obj = pool.get('account.bank.statement')
statement = statement_obj.browse(cursor, user, data['id'], context=context)
line_ids = line_obj.search(cursor, user, [
('move_line_id.reconcile_id', '=', False),
('order_id.mode.journal.id', '=', statement.journal_id.id)])
line_ids.extend(line_obj.search(cursor, user, [
('move_line_id.reconcile_id', '=', False),
('order_id.mode', '=', False)]))
FORM.string = '''<?xml version="1.0"?>
<form string="Populate Statement:">
<field name="lines" colspan="4" height="300" width="800" nolabel="1"
domain="[('id', 'in', [%s])]"/>
</form>''' % (','.join([str(x) for x in line_ids]))
return {}
def _populate_statement(obj, cursor, user, data, context):
line_ids = data['form']['lines'][0][2]
if not line_ids:
return {}
pool = pooler.get_pool(cursor.dbname)
line_obj = pool.get('payment.line')
statement_obj = pool.get('account.bank.statement')
statement_line_obj = pool.get('account.bank.statement.line')
currency_obj = pool.get('res.currency')
statement_reconcile_obj = pool.get('account.bank.statement.reconcile')
statement = statement_obj.browse(cursor, user, data['id'], context=context)
for line in line_obj.browse(cursor, user, line_ids, context=context):
ctx = context.copy()
ctx['date'] = line.ml_maturity_date # was value_date earlier,but this field exists no more now
amount = currency_obj.compute(cursor, user, line.currency.id,
statement.currency.id, line.amount_currency, context=ctx)
if line.move_line_id:
reconcile_id = statement_reconcile_obj.create(cursor, user, {
'line_ids': [(6, 0, [line.move_line_id.id])]
}, context=context)
statement_line_obj.create(cursor, user, {
'name': line.order_id.reference or '?',
'amount': - amount,
'type': 'supplier',
'partner_id': line.partner_id.id,
'account_id': line.move_line_id.account_id.id,
'statement_id': statement.id,
'ref': line.communication,
'reconcile_id': reconcile_id,
}, context=context)
return {}
class PopulateStatement(wizard.interface):
"""
Populate the current statement with selected payement lines
"""
states = {
'init': {
'actions': [_search_entries],
'result': {
'type': 'form',
'arch': FORM,
'fields': FIELDS,
'state': [
('end', '_Cancel'),
('add', '_Add', '', True)
]
},
},
'add': {
'actions': [],
'result': {
'type': 'action',
'action': _populate_statement,
'state': 'end'
},
},
}
PopulateStatement('populate_statement')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -38,6 +38,7 @@
'account_report.xml',
'account_wizard.xml',
'wizard/account_report_print_indicators_view.xml',
'wizard/account_report_print_indicators_with_pdf_view.xml',
],
'demo_xml': [],
'installable': True,

View File

@ -4,7 +4,7 @@
<!-- <wizard id="wizard_print_indicators" name="print.indicators" string="Print Indicators"/>-->
<!-- <menuitem action="wizard_print_indicators" type="wizard" parent="account_report.menu_action_account_report_tree_view" id="menu_wizard_print_indicators"/>-->
<wizard id="wizard_indicators_with_pdf" model="account.report.report" name="print.indicators.pdf" string="Indicators in PDF" keyword="client_action_multi" />
<!-- <wizard id="wizard_indicators_with_pdf" model="account.report.report" name="print.indicators.pdf" string="Indicators in PDF" keyword="client_action_multi" />-->
<!--<menuitem action="wizard_indicators_with_pdf" type="wizard" parent="account_report.menu_action_account_report_tree_view" id="menu_wizard_print_indicators_with_pdf"/>-->
</data>
</openerp>

View File

@ -20,6 +20,6 @@
##############################################################################
import account_report_print_indicators
import wizard_print_indicators_with_pdf
import account_report_print_indicators_with_pdf
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,107 @@
# -*- 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 time
from mx.DateTime import *
import os
import base64
import StringIO
from osv import fields, osv
import tools
import pooler
from report.render import render
from report.interface import report_int
class account_report_print_indicators_with_pdf(osv.osv_memory):
_name = "account.report.print.indicators.with.pdf"
_description = "Print Indicators"
_columns = {
'file': fields.binary('Select a PDF File', filters='*.pdf', required=True),
}
def check_report(self, cr, uid, ids, context=None):
datas = {}
if context is None:
context = {}
data = self.read(cr, uid, ids)[0]
datas = {
'ids': context.get('active_ids',[]),
'model': 'account.report.report',
'form': data
}
return {
'type': 'ir.actions.report.xml',
'report_name': 'print.indicator.pdf',
'datas': datas,
}
account_report_print_indicators_with_pdf()
class external_pdf(render):
def __init__(self, pdf):
render.__init__(self)
self.pdf = pdf
self.output_type='pdf'
def _render(self):
return self.pdf
class report_custom(report_int):
def create(self, cr, uid, ids, data, context={}):
pool = pooler.get_pool(cr.dbname)
obj_indicator = pool.get('account.report.report')
code_ids = obj_indicator.browse(cr,uid,context['active_id'])
self.list={}
def find_child(obj):
self.list[str(obj.code)]=str(obj.amount)
if obj.child_ids:
for child in obj.child_ids:
find_child(child)
return True
find_child(code_ids)
file_contents=base64.decodestring(data['form']['file'])
fp = StringIO.StringIO(file_contents)
infile = open(tools.config['addons_path']+"/test.pdf", 'wb')
infile.write(fp.read())
infile.close()
obj_user=pool.get('res.users').browse(cr,uid,uid)
self.list['printing_user']=str(obj_user.name)
self.list['company_name']=(obj_user.company_id.name)
self.list['company_country']=obj_user.company_id.partner_id.country
self.list['company_vat']=obj_user.company_id.partner_id.vat
self.list['printing_time']=time.strftime('%H:%M:%S')
self.list['printing_date']=time.strftime('%D')
tools.pdf_utils.fill_pdf(tools.config['addons_path']+"/test.pdf",'/tmp/output.pdf',self.list)
self.obj = external_pdf(file('/tmp/output.pdf').read())
self.obj.render()
return (self.obj.pdf, 'pdf')
report_custom('report.print.indicator.pdf')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,45 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="account_report_print_indicators_with_pdf_view" model="ir.ui.view">
<field name="name">account.report.print.indicators.with.pdf.form</field>
<field name="model">account.report.print.indicators.with.pdf</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Print Indicators with PDF">
<label string="Select the PDF file on which Indicators will be printed."/>
<newline/>
<field name="file" colspan="4"/>
<separator colspan="4" string=""/>
<group colspan="4" col="6">
<label string ="" colspan="2"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="check_report" string="Print" type="object" icon="gtk-print" default_focus="1"/>
</group>
</form>
</field>
</record>
<record id="action_account_report_print_indicators_with_pdf" model="ir.actions.act_window">
<field name="name">Indicators in PDF</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">account.report.print.indicators.with.pdf</field>
<field name="view_type">form</field>
<field name="view_mode">form</field>
<field name="view_id" ref="account_report_print_indicators_with_pdf_view"/>
<field name="target">new</field>
</record>
<record model="ir.values" id="account_report_print_indicators_with_pdf_values">
<field name="model_id" ref="account_report.model_account_report_report" />
<field name="object" eval="1" />
<field name="name">Indicators in PDF</field>
<field name="key2">client_print_multi</field>
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_account_report_print_indicators_with_pdf'))" />
<field name="key">action</field>
<field name="model">account.report.report</field>
</record>
</data>
</openerp>

View File

@ -1,109 +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 wizard
import pooler
import time
import datetime
import sys
from mx.DateTime import *
import tools
from report.render import render
from report.interface import report_int
import os
import base64
import StringIO
form = '''<?xml version="1.0"?>
<form string="Print Indicators with PDF">
<label string="Select the PDF file on which Indicators will be printed."/>
<newline/>
<field name="file" colspan="4"/>
</form>'''
fields = {
'file': {'string':'Select a PDF File', 'type':'binary','required':True,'filters':'*.pdf'},
}
class external_pdf(render):
def __init__(self, pdf):
render.__init__(self)
self.pdf = pdf
self.output_type='pdf'
def _render(self):
return self.pdf
class report_custom(report_int):
def create(self, cr, uid, ids, data, context={}):
pool = pooler.get_pool(cr.dbname)
obj_indicator = pool.get('account.report.report')
code_ids = obj_indicator.browse(cr,uid,data['id'])
self.list={}
def find_child(obj):
self.list[obj.code]=str(obj.amount)
if obj.child_ids:
for child in obj.child_ids:
find_child(child)
return True
find_child(code_ids)
file_contents=base64.decodestring(data['form']['file'])
fp = StringIO.StringIO(file_contents)
infile = open(tools.config['addons_path']+"/test.pdf", 'wb')
infile.write(fp.read())
infile.close()
obj_user=pool.get('res.users').browse(cr,uid,uid)
self.list['printing_user']=obj_user.name
self.list['company_name']=obj_user.company_id.name
self.list['company_country']=obj_user.company_id.partner_id.country
self.list['company_vat']=obj_user.company_id.partner_id.vat
self.list['printing_time']=time.strftime('%H:%M:%S')
self.list['printing_date']=time.strftime('%D')
tools.pdf_utils.fill_pdf(tools.config['addons_path']+"/test.pdf",'/tmp/output.pdf',self.list)
self.obj = external_pdf(file('/tmp/output.pdf').read())
self.obj.render()
return (self.obj.pdf, 'pdf')
report_custom('report.print.indicator.pdf')
class wizard_print_indicators_with_pdf(wizard.interface):
states = {
'init': {
'actions': [],
'result': {'type': 'form', 'arch':form, 'fields':fields, 'state':[('end','Cancel'),('print','Print')]}
},
'print': {
'actions':[],
'result' :{'type':'print','report':'print.indicator.pdf', 'state':'end'}
}
}
wizard_print_indicators_with_pdf('print.indicators.pdf')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,31 @@
# Estonian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-05-30 15:14+0000\n"
"PO-Revision-Date: 2010-05-05 21:44+0000\n"
"Last-Translator: lyyser <logard.1961@gmail.com>\n"
"Language-Team: Estonian <et@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: 2010-05-06 04:04+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: document_webdav_old
#: model:ir.module.module,description:document_webdav_old.module_meta_information
msgid ""
"This is a complete document management system:\n"
"\t* WebDav Interface\n"
"\t* User Authentification\n"
"\t* Document Indexation\n"
msgstr ""
"See on terviklik juhtimissüsteemi dokument:\n"
"\t* WebDav liides\n"
"\t* Kasutaja audentimise\n"
"\t* Dokumendi indekseerimine\n"

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-01-28 20:11+0000\n"
"Last-Translator: Ahti Hinnov <sipelgas@gmail.com>\n"
"PO-Revision-Date: 2010-05-05 21:41+0000\n"
"Last-Translator: lyyser <logard.1961@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: 2010-04-17 03:55+0000\n"
"X-Launchpad-Export-Date: 2010-05-06 04:03+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: google_map
@ -39,6 +39,9 @@ msgid ""
"so that we can directly open google map from the\n"
"url widget."
msgstr ""
"See moodul lisab google kaardi välja partneri\n"
"aadressile nii, et me saame otse avada google\n"
"kaardi url vidinast."
#. module: google_map
#: view:res.partner:0

View File

@ -0,0 +1,278 @@
# Estonian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-25 12:18+0000\n"
"PO-Revision-Date: 2010-05-05 21:37+0000\n"
"Last-Translator: lyyser <logard.1961@gmail.com>\n"
"Language-Team: Estonian <et@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: 2010-05-06 04:04+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
#: field:hr_evaluation.type,info:0
msgid "Information"
msgstr ""
#. module: hr_evaluation
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Objekti nimi peab algama x_'ga ja ei tohi sisaldada ühtegi erisümbolit !"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Schedule next evaluation"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_bad:0
msgid "Bad Points"
msgstr ""
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.open_view_employee_evaluation_next_my_list
msgid "My Next Evaluation"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.type,value_ids:0
msgid "Values"
msgstr "Väärtused"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_good:0
msgid "Good Points"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,state:0
msgid "State"
msgstr "Olek"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,score:0
#: field:hr_evaluation.quote,score:0
#: field:hr_evaluation.type,score:0
#: field:hr_evaluation.type.value,score:0
msgid "Score"
msgstr ""
#. module: hr_evaluation
#: selection:hr_evaluation.evaluation,state:0
msgid "Draft"
msgstr "Mustand"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Informal Data"
msgstr "Mitteametlikud andmed"
#. module: hr_evaluation
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr "Vigane mudeli nimi toimingu definitsioonis."
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,employee_id:0
msgid "Employee"
msgstr "Töötaja"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_improve:0
msgid "To Improve"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.quote,evaluation_id:0
msgid "Evaluation"
msgstr "Hinnang"
#. module: hr_evaluation
#: field:hr_evaluation.type.value,type_id:0
msgid "Evaluation Type"
msgstr "Hinnangu tüüp"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Status"
msgstr "Olek"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
msgid "Apply to categories"
msgstr "Rakenda ktegooriatele"
#. module: hr_evaluation
#: model:ir.module.module,description:hr_evaluation.module_meta_information
msgid "Ability to create employees evaluation."
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.quote,name:0
msgid "Quote"
msgstr "Tsitaat"
#. module: hr_evaluation
#: field:hr_evaluation.type,category_ids:0
msgid "Appliable Role"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,user_id:0
msgid "Evaluation User"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.type:0
msgid "Choices Results"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,date:0
msgid "Date"
msgstr "Kuupäev"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_eval_hr
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_evaluation_form
msgid "Evaluations"
msgstr "Hinnangud"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_eval_config
msgid "Configuration"
msgstr "Seadistamine"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_evaluation_next_list
msgid "Next Evaluations"
msgstr "Järgmine hindamine"
#. module: hr_evaluation
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "Vigane XML vaate arhitektuurile!"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_evaluation_type_form
msgid "Evaluation Criterions"
msgstr "Hindamise kriteeriumid"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_my_old_evaluation_list
msgid "My Preceeding Evaluations"
msgstr ""
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_resp_hr
msgid "HR Responsible"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.quote,value_id:0
#: field:hr_evaluation.type.value,name:0
msgid "Value"
msgstr "Väärtus"
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,name:0
msgid "Summary"
msgstr "Summaarne"
#. module: hr_evaluation
#: field:hr_evaluation.type,active:0
msgid "Active"
msgstr "Aktiivne"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
msgid "Notes"
msgstr "Märkused"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_evaluation
msgid "Employee Evaluation"
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_type
msgid "Employee Evaluation Type"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
msgid "Quotations"
msgstr "Tsitaadid"
#. module: hr_evaluation
#: model:ir.actions.act_window,name:hr_evaluation.open_view_employee_evaluation_next_list
msgid "Next Employee Evaluation"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.quote,type_id:0
msgid "Type"
msgstr "Tüüp"
#. module: hr_evaluation
#: view:hr_evaluation.type:0
#: field:hr_evaluation.type,name:0
msgid "Evaluation Criterion"
msgstr "Hindamiskriteerium"
#. module: hr_evaluation
#: model:ir.ui.menu,name:hr_evaluation.menu_open_view_employee_evaluation_next_my_list
msgid "My Next Evaluations"
msgstr "Minu järgmine hindamine"
#. module: hr_evaluation
#: view:hr_evaluation.quote:0
msgid "Evalution Quote"
msgstr ""
#. module: hr_evaluation
#: model:ir.module.module,shortdesc:hr_evaluation.module_meta_information
msgid "Human Resources Evaluation"
msgstr ""
#. module: hr_evaluation
#: field:hr_evaluation.evaluation,quote_ids:0
msgid "Quotes"
msgstr "Tsitaadid"
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: selection:hr_evaluation.evaluation,state:0
msgid "Done"
msgstr "Valmis"
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_quote
msgid "Employee Evaluation Quote"
msgstr ""
#. module: hr_evaluation
#: view:hr_evaluation.evaluation:0
#: field:hr_evaluation.evaluation,info_employee:0
msgid "Employee Response"
msgstr ""
#. module: hr_evaluation
#: model:ir.model,name:hr_evaluation.model_hr_evaluation_type_value
msgid "Evaluation Type Value"
msgstr ""

View File

@ -51,7 +51,9 @@
'process/hr_expense_process.xml',
'report/hr_expense_report_view.xml'
],
'demo_xml': ['hr.expense.expense.csv'],
'demo_xml': ['hr_expense_demo.xml',
# 'hr.expense.expense.csv'
],
'installable': True,
'active': False,
'certificate': '0062479841789',

View File

@ -0,0 +1,50 @@
<?xml version="1.0" ?>
<openerp>
<data noupdate="1">
<record id="hr_expense_expense_septemberexpenses0" model="hr.expense.expense">
<field name="currency_id" ref="base.EUR"/>
<field name="employee_id" ref="hr.employee1"/>
<field name="user_id" ref="base.user_root"/>
<field name="name">September Expenses</field>
<field name="company_id" ref="base.main_company"/>
<field name="date">2010-05-03</field>
<field name="state">draft</field>
</record>
<record id="hr_expense_line_travelbycarcustomerseagatedouble0" model="hr.expense.line">
<field name="name">Travel by Car - Customer Seagate 2 - Double</field>
<field name="date_value">2010-05-03</field>
<field name="analytic_account" ref="account.analytic_thymbra"/>
<field model="hr.expense.expense" name="expense_id" search="[('name', '=', u'September Expenses')]"/>
<field eval="200.0" name="unit_amount"/>
<field eval="130.0" name="unit_quantity"/>
</record>
<record id="hr_expense_line_basicpcserverforseagate0" model="hr.expense.line">
<field name="name">Basic PC - Server for Seagate</field>
<field name="date_value">2010-05-03</field>
<field name="analytic_account" ref="account.analytic_seagate_p2"/>
<field model="hr.expense.expense" name="expense_id" search="[('name', '=', u'September Expenses')]"/>
<field eval="500.0" name="unit_amount"/>
<field eval="1.0" name="unit_quantity"/>
</record>
</data>
<data noupdate="1">
<record id="hr_expense_expense_septemberexpenses1" model="hr.expense.expense">
<field name="currency_id" ref="base.EUR"/>
<field name="employee_id" ref="hr.employee1"/>
<field name="user_id" ref="base.user_root"/>
<field name="name">Hotel Expenses</field>
<field name="company_id" ref="base.main_company"/>
<field name="date">2010-04-20</field>
<field name="state">draft</field>
</record>
<record id="hr_expense_line_hotelexpensesthymbra0" model="hr.expense.line">
<field name="name">Hotel Expenses - Thymbra</field>
<field name="date_value">2010-05-03</field>
<field name="analytic_account" ref="account.analytic_thymbra"/>
<field model="hr.expense.expense" name="expense_id" search="[('name', '=', u'Hotel Expenses')]"/>
<field eval="2000.0" name="unit_amount"/>
<field eval="5.0" name="unit_quantity"/>
</record>
</data>
</openerp>

View File

@ -66,7 +66,6 @@
<field name="arch" type="xml">
<form string="Expenses Sheet">
<group colspan="4" col="6">
<field name="employee_id" select="1"/>
<field name="name" select="1"/>
<field name="employee_id" select="1"/>
<field name="ref"/>
@ -99,7 +98,7 @@
<button name="confirm" states="draft" string="Confirm" type="workflow" icon="gtk-apply"/>
<button name="cancel" states="cancel" string="Cancel" type="workflow" icon="gtk-cancel"/>
<button name="validate" states="confirm" string="Accept" type="workflow" icon="gtk-ok"/>
<button name="invoice" states="accepted" string="Invoice" type="workflow" icon="gtk-print"/>
<button name="invoice" states="accepted" string="Invoice" type="workflow" icon="gtk-execute"/>
<button name="draft" states="confirm,cancelled" string="Set to Draft" type="workflow" icon="gtk-convert"/>
<button name="refuse" states="confirm,draft,accepted" string="Refuse" type="workflow" icon="gtk-no"/>
</group>

View File

@ -20,18 +20,35 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from mx import DateTime
import time
import pooler
import netsvc
import datetime
from osv import fields, osv
from tools.translate import _
class hr_holidays_status(osv.osv):
_name = "hr.holidays.status"
_description = "Leave Types"
def get_days_cat(self, cr, uid, ids, category_id, return_false, context={}):
res = {}
for record in self.browse(cr, uid, ids, context):
res[record.id] = {}
max_leaves = leaves_taken = 0
if not return_false:
cr.execute("""SELECT type, sum(number_of_days) FROM hr_holidays WHERE category_id = %s AND state='validate' AND holiday_status_id = %s GROUP BY type""", (str(category_id), str(record.id)))
for line in cr.fetchall():
if line[0] =='remove':
leaves_taken = -line[1]
if line[0] =='add':
max_leaves = line[1]
res[record.id]['max_leaves'] = max_leaves
res[record.id]['leaves_taken'] = leaves_taken
res[record.id]['remaining_leaves'] = max_leaves - leaves_taken
return res
def get_days(self, cr, uid, ids, employee_id, return_false, context={}):
res = {}
for record in self.browse(cr, uid, ids, context):
@ -70,20 +87,20 @@ class hr_holidays_status(osv.osv):
return res
_columns = {
'name' : fields.char('Name', size=64, required=True, translate=True),
'name': fields.char('Name', size=64, required=True, translate=True),
'categ_id': fields.many2one('crm.case.categ', 'Meeting Category', domain="[('object_id.model', '=', 'crm.meeting')]", help='If you link this type of leave with a category in the CRM, it will synchronize each leave asked with a case in this category, to display it in the company shared calendar for example.'),
'color_name' : fields.selection([('red', 'Red'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'),
'limit' : fields.boolean('Allow to Override Limit', help='If you thick this checkbox, the system will allow, for this section, the employees to take more leaves than the available ones.'),
'active' : fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."),
'max_leaves' : fields.function(_user_left_days, method=True, string='Maximum Leaves Allowed', help='This value is given by the sum of all holidays requests with a positive value.', multi='user_left_days'),
'leaves_taken' : fields.function(_user_left_days, method=True, string='Leaves Already Taken', help='This value is given by the sum of all holidays requests with a negative value.', multi='user_left_days'),
'remaining_leaves' : fields.function(_user_left_days, method=True, string='Remaining Leaves', help='Maximum Leaves Allowed - Leaves Already Taken', multi='user_left_days'),
'color_name': fields.selection([('red', 'Red'), ('lightgreen', 'Light Green'), ('lightblue','Light Blue'), ('lightyellow', 'Light Yellow'), ('magenta', 'Magenta'),('lightcyan', 'Light Cyan'),('black', 'Black'),('lightpink', 'Light Pink'),('brown', 'Brown'),('violet', 'Violet'),('lightcoral', 'Light Coral'),('lightsalmon', 'Light Salmon'),('lavender', 'Lavender'),('wheat', 'Wheat'),('ivory', 'Ivory')],'Color in Report', required=True, help='This color will be used in the leaves summary located in Reporting\Leaves by Departement'),
'limit': fields.boolean('Allow to Override Limit', help='If you thick this checkbox, the system will allow, for this section, the employees to take more leaves than the available ones.'),
'active': fields.boolean('Active', help="If the active field is set to false, it will allow you to hide the leave type without removing it."),
'max_leaves': fields.function(_user_left_days, method=True, string='Maximum Leaves Allowed', help='This value is given by the sum of all holidays requests with a positive value.', multi='user_left_days'),
'leaves_taken': fields.function(_user_left_days, method=True, string='Leaves Already Taken', help='This value is given by the sum of all holidays requests with a negative value.', multi='user_left_days'),
'remaining_leaves': fields.function(_user_left_days, method=True, string='Remaining Leaves', help='Maximum Leaves Allowed - Leaves Already Taken', multi='user_left_days'),
}
_defaults = {
'color_name': lambda *args: 'red',
'active' : lambda *a: True,
'color_name': 'red',
'active': True,
}
hr_holidays_status()
class hr_holidays(osv.osv):
@ -91,11 +108,11 @@ class hr_holidays(osv.osv):
_description = "Holidays"
_order = "type desc, date_from asc"
def _employee_get(obj,cr,uid,context={}):
ids = obj.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
if ids:
return ids[0]
return False
# def _employee_get(obj, cr, uid, context=None):
# ids = obj.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
# if ids:
# return ids[0]
# return False
_columns = {
'name' : fields.char('Description', required=True, readonly=True, size=64, states={'draft':[('readonly',False)]}),
@ -116,24 +133,38 @@ class hr_holidays(osv.osv):
'parent_id': fields.many2one('hr.holidays', 'Parent'),
'linked_request_ids': fields.one2many('hr.holidays', 'parent_id', 'Linked Requests',),
'department_id':fields.related('employee_id', 'department_id', string='Department', type='many2one', relation='hr.department', readonly=True, store=True),
}
'category_id': fields.many2one('hr.employee.category', "Employee Category", help='Category Of employee'),
'holiday_type': fields.selection([('employee','Employee Request'),('category','Employee Category Request')], 'Holiday Type'),
}
_defaults = {
'employee_id' : _employee_get ,
'state' : lambda *a: 'draft',
'type': lambda *a: 'remove',
'allocation_type': lambda *a: 'employee',
# 'employee_id' : _employee_get ,
'state' : 'draft',
'type': 'remove',
'allocation_type': 'employee',
'user_id': lambda obj, cr, uid, context: uid,
'holiday_type': 'employee'
}
_order = 'date_from desc'
def create(self, cr, uid, vals, context={}):
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if context:
if context.has_key('type'):
vals['type'] = context['type']
if context.has_key('allocation_type'):
vals['allocation_type'] = context['allocation_type']
return super(osv.osv,self).create(cr, uid, vals, context)
return super(hr_holidays, self).create(cr, uid, vals, context=context)
def write(self, cr, uid, ids, vals, context=None):
if context is None:
context = {}
if 'holiday_type' in vals:
if vals['holiday_type'] == 'employee':
vals.update({'category_id': False})
else:
vals.update({'employee_id': False})
return super(hr_holidays, self).write(cr, uid, ids, vals, context=context)
def onchange_date_from(self, cr, uid, ids, date_to, date_from):
result = {}
@ -157,10 +188,9 @@ class hr_holidays(osv.osv):
self.pool.get('crm.meeting').unlink(cr,uid,[record.case_id.id])
if record.linked_request_ids:
list_ids = []
for id in record.linked_request_ids:
list_ids.append(id.id)
self.holidays_cancel(cr,uid,list_ids)
self.unlink(cr,uid,list_ids)
[list_ids.append(i) for id in record.linked_request_ids]
self.holidays_cancel(cr, uid, list_ids)
self.unlink(cr, uid, list_ids)
def _check_date(self, cr, uid, ids):
if ids:
@ -172,12 +202,10 @@ class hr_holidays(osv.osv):
_constraints = [(_check_date, 'Start date should not be larger than end date! ', ['number_of_days'])]
def unlink(self, cr, uid, ids, context={}):
self._update_user_holidays(cr, uid, ids)
return super(hr_holidays, self).unlink(cr, uid, ids, context)
def onchange_date_to(self, cr, uid, ids, date_from, date_to):
result = {}
if date_from and date_to:
@ -217,7 +245,7 @@ class hr_holidays(osv.osv):
return True
def holidays_validate(self, cr, uid, ids, *args):
self.check_holidays(cr,uid,ids)
self.check_holidays(cr, uid, ids)
vals = {
'state':'validate',
}
@ -228,31 +256,38 @@ class hr_holidays(osv.osv):
raise osv.except_osv(_('Warning !'),_('No user related to the selected employee.'))
self.write(cr, uid, ids, vals)
for record in self.browse(cr, uid, ids):
if record.type=='remove':
if record.holiday_type=='employee' and record.type=='remove':
vals= {
'name':record.name,
'date_from':record.date_from,
'date_to':record.date_to,
'calendar_id':record.employee_id.calendar_id.id,
'company_id':record.employee_id.company_id.id,
'resource_id':record.employee_id.resource_id.id
'name':record.name,
'date_from':record.date_from,
'date_to':record.date_to,
'calendar_id':record.employee_id.calendar_id.id,
'company_id':record.employee_id.company_id.id,
'resource_id':record.employee_id.resource_id.id
}
self.pool.get('resource.calendar.leaves').create(cr,uid,vals)
self.pool.get('resource.calendar.leaves').create(cr, uid, vals)
return True
def holidays_confirm(self, cr, uid, ids, *args):
for record in self.browse(cr, uid, ids):
user_id = False
leave_asked = record.number_of_days_temp
if record.type == 'remove':
if record.holiday_type=='employee' and record.type == 'remove':
if record.employee_id and not record.holiday_status_id.limit:
leaves_rest = self.pool.get('hr.holidays.status').get_days( cr, uid, [record.holiday_status_id.id], record.employee_id.id, False)[record.holiday_status_id.id]['remaining_leaves']
if leaves_rest < leave_asked:
raise osv.except_osv(_('Warning!'),_('You cannot validate leaves for %s while available leaves are less than asked leaves.' %(record.employee_id.name)))
nb = -(record.number_of_days_temp)
elif record.holiday_type=='category' and record.type == 'remove':
if record.category_id and not record.holiday_status_id.limit:
leaves_rest = self.pool.get('hr.holidays.status').get_days_cat( cr, uid, [record.holiday_status_id.id], record.category_id.id, False)[record.holiday_status_id.id]['remaining_leaves']
if leaves_rest < leave_asked:
raise osv.except_osv(_('Warning!'),_('You cannot validate leaves for %s while available leaves are less than asked leaves.' %(record.category_id.name)))
nb = -(record.number_of_days_temp)
else:
nb = record.number_of_days_temp
if record.employee_id:
if record.holiday_type=='employee' and record.employee_id:
user_id = record.employee_id.user_id and record.employee_id.user_id.id or uid
self.write(cr, uid, [record.id], {
@ -285,19 +320,25 @@ class hr_holidays(osv.osv):
})
return True
def check_holidays(self,cr,uid,ids):
def check_holidays(self, cr, uid, ids):
for record in self.browse(cr, uid, ids):
if not record.number_of_days:
raise osv.except_osv(_('Warning!'),_('Wrong leave definition.'))
if record.employee_id:
raise osv.except_osv(_('Warning!'),_('Wrong leave definition.'))
if record.holiday_type=='employee' and record.employee_id:
leave_asked = record.number_of_days
if leave_asked < 0.00:
if not record.holiday_status_id.limit:
leaves_rest = self.pool.get('hr.holidays.status').get_days( cr, uid, [record.holiday_status_id.id], record.employee_id.id, False)[record.holiday_status_id.id]['remaining_leaves']
leaves_rest = self.pool.get('hr.holidays.status').get_days(cr, uid, [record.holiday_status_id.id], record.employee_id.id, False)[record.holiday_status_id.id]['remaining_leaves']
if leaves_rest < -(leave_asked):
raise osv.except_osv(_('Warning!'),_('You Cannot Validate leaves while available leaves are less than asked leaves.'))
else:
elif record.holiday_type=='category' and record.category_id:
leave_asked = record.number_of_days
if leave_asked < 0.00:
if not record.holiday_status_id.limit:
leaves_rest = self.pool.get('hr.holidays.status').get_days_cat(cr, uid, [record.holiday_status_id.id], record.category_id.id, False)[record.holiday_status_id.id]['remaining_leaves']
if leaves_rest < -(leave_asked):
raise osv.except_osv(_('Warning!'),_('You Cannot Validate leaves while available leaves are less than asked leaves.'))
else:# This condition will never meet!!
holiday_ids = []
vals = {
'name' : record.name,
@ -322,7 +363,8 @@ class hr_holidays(osv.osv):
self.holidays_confirm(cr, uid, holiday_ids)
self.holidays_validate(cr, uid, holiday_ids)
if record.holiday_status_id.categ_id and record.date_from and record.date_to and record.employee_id:
#if record.holiday_status_id.categ_id and record.date_from and record.date_to and record.employee_id:
if record.holiday_status_id.categ_id and record.date_from and record.date_to:
vals={}
vals['name']=record.name
vals['categ_id']=record.holiday_status_id.categ_id.id
@ -331,10 +373,13 @@ class hr_holidays(osv.osv):
diff_day = (epoch_c - epoch_d)/(3600*24)
vals['duration'] = (diff_day) * 8
vals['note'] = record.notes
vals['user_id'] = record.user_id.id
# vals['user_id'] = record.user_id.id
vals['date'] = record.date_from
if record.holiday_type=='employee':
vals['user_id'] = record.user_id.id
case_id = self.pool.get('crm.meeting').create(cr,uid,vals)
self.write(cr, uid, ids, {'case_id':case_id})
return True
hr_holidays()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -45,14 +45,21 @@
<form string="Leave Request">
<group col="6" colspan="4">
<field name="name" select="1"/>
<field name="employee_id" select="1" required="1"/>
<field name="holiday_status_id" select="1" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}" />
<field name="date_from" select="1" on_change="onchange_date_from(date_to, date_from)" required="1"/>
<field name="date_to" select="1" on_change="onchange_date_to(date_from, date_to)" required="1"/>
<field name="number_of_days_temp"/>
<field name="holiday_type"/>
</group>
<notebook colspan="4">
<page string="General">
<group colspan="4" attrs="{'invisible':[('holiday_type','=','employee')]}">
<field name="category_id" select="1" attrs="{'required':[('holiday_type','=','category')]}"/>
</group>
<group colspan="4" attrs="{'invisible':[('holiday_type','=','category')]}">
<field name="employee_id" select="1" attrs="{'required':[('holiday_type','=','employee')]}"/>
</group>
<field name="holiday_status_id" select="1" on_change="onchange_sec_id(holiday_status_id)" context="{'employee_id':employee_id}" />
<newline/>
<field name="date_from" select="1" on_change="onchange_date_from(date_to, date_from)" required="1"/>
<field name="date_to" select="1" on_change="onchange_date_to(date_from, date_to)" required="1"/>
<field name="number_of_days_temp"/>
<field name="manager_id"/>
<field name="department_id"/>
<field name="notes" colspan="4"/>
@ -80,11 +87,17 @@
<form string="Allocation Request">
<field name="name" select="1"/>
<field name="holiday_status_id" select="1" />
<field name="employee_id" select="1" required="1"/>
<field name="department_id"/>
<field name="number_of_days_temp"/>
<field name="holiday_type"/>
<notebook colspan="4">
<page string="General">
<group colspan="4" attrs="{'invisible':[('holiday_type','=','employee')]}">
<field name="category_id" select="1" attrs="{'required':[('holiday_type','=','category')]}"/>
</group>
<group colspan="4" attrs="{'invisible':[('holiday_type','=','category')]}">
<field name="employee_id" select="1" attrs="{'required':[('holiday_type','=','employee')]}"/>
</group>
<field name="department_id"/>
<field name="number_of_days_temp"/>
<field name="manager_id"/>
<field name="notes" colspan="4"/>
<newline/>
@ -111,7 +124,9 @@
<form string="Leaves Management">
<field name="name" select="1"/>
<field name="holiday_status_id" select="1"/>
<field name="employee_id" select="1" />
<!-- <field name="holiday_type"/>
<field name="category_id" select="1" required="1"/>
--> <field name="employee_id" select="1" />
<!--<field name="department_id"/>-->
<field name="type"/>
<field name="date_from" select="1" on_change="onchange_date_from(date_to, date_from)" attrs="{'readonly':[('type','=','add')], 'required':[('type','=','remove')]}"/>

View File

@ -63,7 +63,8 @@ class hr_holidays_report(osv.osv):
s.state
from
hr_holidays s
where type='remove'
where type='remove' and
s.employee_id is not null
group by
s.create_date,s.state,s.date_from,s.date_to,
s.number_of_days_temp,s.employee_id,s.user_id
@ -98,7 +99,7 @@ class hr_holidays_remaining_leaves_user(osv.osv):
where
hrs.employee_id = hre.id and
hre.resource_id = rr.id and
hhs.id = hrs.holiday_status_id
hhs.id = hrs.holiday_status_id
group by
rr.name,rr.user_id,hhs.name
)

View File

@ -81,7 +81,7 @@
</record>
<record id="action_hr_holidays_report_all" model="ir.actions.act_window">
<field name="name">Leaves</field>
<field name="name">Leaves By Employee</field>
<field name="res_model">hr.holidays.report</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>

View File

@ -42,7 +42,9 @@
'security/idea_security.xml',
'security/ir.model.access.csv',
],
'demo_xml': [],
'demo_xml': [
"idea_data.xml"
],
'installable': True,
'certificate': '0071515601309',
}

View File

@ -19,7 +19,9 @@
#
##############################################################################
from osv import osv, fields
from osv import osv
from osv import fields
from tools.translate import _
VoteValues = [('-1', 'Not Voted'), ('0', 'Very Bad'), ('25', 'Bad'), \
('50', 'Normal'), ('75', 'Good'), ('100', 'Very Good') ]
@ -35,7 +37,8 @@ class idea_category(osv.osv):
'name': fields.char('Category', size=64, required=True),
'summary': fields.text('Summary'),
'parent_id': fields.many2one('idea.category', 'Parent Categories', ondelete='set null'),
'child_ids': fields.one2many('idea.category', 'parent_id', 'Child Categories')
'child_ids': fields.one2many('idea.category', 'parent_id', 'Child Categories'),
'visibility':fields.boolean('Open Idea?', required=False),
}
_sql_constraints = [
('name', 'unique(parent_id,name)', 'The name of the category must be unique' )
@ -44,7 +47,6 @@ class idea_category(osv.osv):
idea_category()
class idea_idea(osv.osv):
""" Idea """
_name = 'idea.idea'
@ -62,10 +64,10 @@ class idea_idea(osv.osv):
return {}
sql = """SELECT i.id, avg(v.score::integer)
FROM idea_idea i LEFT OUTER JOIN idea_vote v ON i.id = v.idea_id
WHERE i.id = ANY(%s)
GROUP BY i.id
"""
FROM idea_idea i LEFT OUTER JOIN idea_vote v ON i.id = v.idea_id
WHERE i.id = ANY(%s)
GROUP BY i.id
"""
cr.execute(sql, (ids,))
return dict(cr.fetchall())
@ -82,10 +84,10 @@ class idea_idea(osv.osv):
return {}
sql = """SELECT i.id, COUNT(1)
FROM idea_idea i LEFT OUTER JOIN idea_vote v ON i.id = v.idea_id
WHERE i.id = ANY(%s)
GROUP BY i.id
"""
FROM idea_idea i LEFT OUTER JOIN idea_vote v ON i.id = v.idea_id
WHERE i.id = ANY(%s)
GROUP BY i.id
"""
cr.execute(sql, (ids,))
return dict(cr.fetchall())
@ -102,10 +104,10 @@ class idea_idea(osv.osv):
return {}
sql = """SELECT i.id, COUNT(1)
FROM idea_idea i LEFT OUTER JOIN idea_comment c ON i.id = c.idea_id
WHERE i.id = ANY(%s)
GROUP BY i.id
"""
FROM idea_idea i LEFT OUTER JOIN idea_comment c ON i.id = c.idea_id
WHERE i.id = ANY(%s)
GROUP BY i.id
"""
cr.execute(sql, (ids,))
return dict(cr.fetchall())
@ -156,29 +158,77 @@ class idea_idea(osv.osv):
'comment_ids': fields.one2many('idea.comment', 'idea_id', 'Comments'),
'create_date': fields.datetime('Creation date', readonly=True),
'vote_ids': fields.one2many('idea.vote', 'idea_id', 'Vote'),
'my_vote': fields.function(_vote_read, fnct_inv = _vote_save, \
string="My Vote", method=True, type="selection", selection=VoteValues),
'my_vote': fields.function(_vote_read, fnct_inv = _vote_save, string="My Vote", method=True, type="selection", selection=VoteValues),
'vote_avg': fields.function(_vote_avg_compute, method=True, string="Average Score", type="float"),
'count_votes': fields.function(_vote_count, method=True, string="Count of votes", type="integer"),
'count_comments': fields.function(_comment_count, method=True, \
string="Count of comments", type="integer"),
'count_comments': fields.function(_comment_count, method=True, string="Count of comments", type="integer"),
'category_id': fields.many2one('idea.category', 'Category', required=True),
'state': fields.selection([('draft', 'Draft'), ('open', 'Opened'), \
('close', 'Accepted'), ('cancel', 'Cancelled')], \
'State', readonly=True,
help='When the Idea is created the state is \'Draft\'.\n It is \
opened by the user, the state is \'Opened\'.\
\nIf the idea is accepted, the state is \'Accepted\'.'),
'state': fields.selection([('draft', 'Draft'),
('open', 'Opened'),
('close', 'Accepted'),
('cancel', 'Cancelled')],
'State', readonly=True,
help='When the Idea is created the state is \'Draft\'.\n It is \
opened by the user, the state is \'Opened\'.\
\nIf the idea is accepted, the state is \'Accepted\'.'
),
'visibility':fields.boolean('Open Idea?', required=False),
'stat_vote_ids': fields.one2many('idea.vote.stat', 'idea_id', 'Statistics', readonly=True),
}
_defaults = {
'user_id': lambda self,cr,uid,context: uid,
'my_vote': lambda *a: '-1',
'state': lambda *a: 'draft'
'state': lambda *a: 'draft',
'visibility': lambda *a: True,
}
_order = 'id desc'
def create(self, cr, user, vals, context={}):
"""
Create a new record for a model idea_idea
@param cr: A database cursor
@param user: ID of the user currently logged in
@param vals: provides data for new record
@param context: context arguments, like lang, time zone
@return: Returns an id of the new record
"""
visibility = False
if vals.get('category_id', False):
category_pool = self.pool.get('idea.category')
category = category_pool.browse(cr, user, vals.get('category_id'), context)
visibility = category.visibility
vals.update({
'visibility':visibility
})
res_id = super(idea_idea, self).create(cr, user, vals, context)
return res_id
def write(self, cr, user, ids, vals, context=None):
"""
Update redord(s) exist in {ids}, with new value provided in {vals}
@param cr: A database cursor
@param user: ID of the user currently logged in
@param ids: list of record ids to update
@param vals: dict of new values to be set
@param context: context arguments, like lang, time zone
@return: Returns True on success, False otherwise
"""
state = self.browse(cr, user, ids[0]).state
if vals.get('my_vote', False):
if vals.get('state', state) != 'open':
raise osv.except_osv(_("Warning !"), _("Draft/Accepted/Cancelled ideas Could not be voted"))
res = super(idea_idea, self).write(cr, user, ids, vals, context)
return res
def idea_cancel(self, cr, uid, ids):
self.write(cr, uid, ids, { 'state': 'cancel' })
return True
@ -190,7 +240,7 @@ class idea_idea(osv.osv):
def idea_close(self, cr, uid, ids):
self.write(cr, uid, ids, { 'state': 'close' })
return True
def idea_draft(self, cr, uid, ids):
self.write(cr, uid, ids, { 'state': 'draft' })
return True
@ -238,7 +288,6 @@ class idea_vote(osv.osv):
idea_vote()
class idea_vote_stat(osv.osv):
""" Idea votes Statistics """

19
addons/idea/idea_data.xml Normal file
View File

@ -0,0 +1,19 @@
<?xml version="1.0"?>
<openerp>
<data>
<record model="idea.category" id="idea_category_general">
<field name="name">General</field>
<field name="summary">General Ideas</field>
<field name="visibility">True</field>
</record>
<record model="idea.idea" id="idea_idea_one">
<field name="title">TODO: Need to put a good idea on OpenERP</field>
<field name="description">TODO: Need to put a good idea on OpenERP</field>
<field name="category_id" ref="idea_category_general"/>
<field name="visibility">True</field>
</record>
</data>
</openerp>

View File

@ -2,8 +2,7 @@
<openerp>
<data>
<!-- Idea Category Form View -->
<!-- Idea Category Form View -->
<menuitem name="Tools" id="base.menu_tools" icon="STOCK_PREFERENCES" sequence="15"/>
<record model="ir.ui.view" id="view_idea_category_form">
<field name="name">idea.category.form</field>
@ -11,16 +10,18 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Category of ideas">
<field name="name" select="1"/>
<field name="parent_id" select="1"/>
<newline/>
<field name="summary" colspan="4"/>
<group col="6" colspan="4">
<field name="name" select="1"/>
<field name="parent_id" select="1"/>
<field name="visibility"/>
</group>
<separator string="Description" colspan="4"/>
<field name="summary" colspan="4" nolabel="1"/>
</form>
</field>
</record>
<!-- Idea Category Tree View -->
<!-- Idea Category Tree View -->
<record model="ir.ui.view" id="view_idea_category_tree">
<field name="name">idea.category.tree</field>
<field name="model">idea.category</field>
@ -33,7 +34,7 @@
</field>
</record>
<!-- Idea Category Action -->
<!-- Idea Category Action -->
<record model="ir.actions.act_window" id="action_idea_category">
<field name="name">Categories</field>
@ -47,8 +48,7 @@
<menuitem name="Ideas" parent="base.menu_lunch_survey_root" id="menu_ideas"/>
<menuitem name="Categories" parent="menu_ideas"
id="menu_idea_category" action="action_idea_category" />
<menuitem name="Categories" parent="menu_ideas" id="menu_idea_category" action="action_idea_category" />
<!-- Idea Category Action -->
@ -61,11 +61,6 @@
<menuitem name="Ideas" parent="base.menu_tools" id="menu_ideas1" sequence="4"/>
<menuitem
name="Ideas by Categories" parent="menu_ideas1"
id="menu_idea_category_tree"
action="action_idea_category_tree"/>
<!-- Oepn Ideas Action -->
<record model="ir.actions.act_window" id="action_idea_idea_categ_open">
@ -137,21 +132,18 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="New Idea">
<notebook>
<page string="Idea">
<field name="title" select="1" />
<field name="category_id" select="1"/>
<field name="user_id" select="1"/>
<field name="vote_avg" />
<field name="description" colspan="4" widget="text_wiki"/>
<field name="state"/>
<group colspan="2" col="3">
<button name="idea_open" string="Open" states="draft" icon="gtk-go-forward"/>
<button name="idea_close" string="Close" states="open" icon="gtk-close"/>
<button name="idea_cancel" string="Cancel" states="open" icon="gtk-cancel"/>
</group>
<group col="6" colspan="4">
<field name="title" colspan="4" select="1" />
<field name="category_id" select="1"/>
<field name="my_vote"/>
<field name="user_id" attrs="{'invisible':[('visibility','=',False)]}"/>
<field name="vote_avg" widget="progressbar"/>
</group>
<notebook colspan="4">
<page string="Idea Detail">
<field name="description" nolabel="1" colspan="4" widget="text_wiki"/>
</page>
<page string="Comments">
<page string="Comments" groups="base.group_extended">
<field name="comment_ids" nolabel="1" colspan="4">
<form string="Comment">
<separator string="Your comment" colspan="4"/>
@ -159,27 +151,39 @@
</form>
</field>
</page>
<page string="Vote">
<field name="vote_ids" nolabel="1" colspan="4" />
<page string="Vote" groups="base.group_extended">
<field name="vote_ids" nolabel="1" colspan="4" readonly="True"/>
</page>
<page string="Statistics">
<group col="6" colspan="4">
<field name="count_comments" />
<field name="count_votes" />
</group>
<field name="stat_vote_ids" colspan="4" mode="graph,tree" nolabel="1">
<graph string="vote_stat of ideas" type="bar">
<graph string="Vots Statistics" type="bar">
<field name="score"/>
<field name="nbr"/>
</graph>
<tree string="vote_stat of ideas">
<tree string="Vots Statistics">
<field name="score"/>
<field name="nbr"/>
</tree>
</field>
</page>
</notebook>
<group colspan="4" col="6">
<field name="state"/>
<button name="idea_open" string="Open" states="draft" icon="gtk-go-forward"/>
<button name="%(idea.action_idea_post_vote)d" icon="gtk-execute" states="open" type="action" string="Submit Vote"/>
<button name="idea_close" string="Accept" states="open" icon="gtk-jump-to"/>
<button name="idea_cancel" string="Refuse" states="open" icon="gtk-cancel"/>
</group>
</form>
</field>
</record>
<!-- New Idea Tree View -->
<!-- New Idea Tree View -->
<record model="ir.ui.view" id="view_idea_idea_tree">
<field name="name">idea.idea.tree</field>
@ -187,40 +191,47 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="All Ideas">
<field name="title"/>
<field name="category_id" />
<field name="create_date"/>
<field name="user_id" />
<field name="title"/>
<field name="vote_avg" />
<field name="vote_avg" widget="progressbar"/>
<field name="count_comments" />
<field name="count_votes" />
<button name="%(action_idea_post_vote)d" icon="gtk-execute"
type="action" states="draft,open" string="Vote" />
<field name="state"/>
<button name="%(action_idea_post_vote)d" icon="gtk-execute" type="action" states="draft,open" string="Vote"/>
<button name="idea_close" string="Accept" states="open" icon="gtk-jump-to"/>
<button name="idea_cancel" string="Refuse" states="open" icon="gtk-cancel"/>
</tree>
</field>
</record>
<!-- Search Idea -->
<!-- Search Idea -->
<record model="ir.ui.view" id="view_idea_idea_search">
<field name="name">idea.idea.search</field>
<field name="model">idea.idea</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Ideas">
<group col="10" colspan="4">
<filter icon="gtk-execute" string="My" domain="[('user_id','=',uid)]" help="My Ideas"/>
<separator orientation="vertical"/>
<filter icon="gtk-execute" string="Draft"
domain="[('state','=','draft')]" help="Draft Ideas" />
<filter icon="gtk-execute" string="Open"
domain="[('state','=','open')]" help="Open Ideas" />
<separator orientation="vertical"/>
<field name="title" select="1"/>
<field name="category_id" select="1"/>
<field name="user_id" select="1"/>
</group>
</search>
<search string="Ideas">
<group col="10" colspan="4">
<filter icon="gtk-execute" string="My Ideas" domain="[('user_id','=',uid)]" help="My Ideas"/>
<separator orientation="vertical"/>
<filter icon="gtk-execute" string="Draft"
domain="[('state','=','draft')]" help="Draft Ideas" />
<filter icon="gtk-execute" string="Open"
domain="[('state','=','open')]" help="Open Ideas" />
<separator orientation="vertical"/>
<field name="title" select="1"/>
<field name="category_id" select="1"/>
<field name="user_id" select="1"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="12" col="10">
<filter icon="gtk-execute" string="Creator" help="By Creators" context="{'group_by':'user_id'}"/>
<filter icon="gtk-execute" string="State" help="By States" context="{'group_by':'state'}"/>
<filter icon="gtk-execute" string="Category" help="By Idea Category" context="{'group_by':'category_id'}"/>
</group>
</search>
</field>
</record>
@ -314,15 +325,15 @@
<field name="view_type">form</field>
<field name="view_mode">graph,tree</field>
</record>
<menuitem name="Reporting" parent="base.menu_tools" id="base.menu_lunch_reporting" sequence="5"/>
<menuitem name="Reporting" parent="base.menu_tools" id="base.menu_lunch_reporting" sequence="5"/>
<menuitem name="Idea" parent="base.menu_lunch_reporting" id="menu_idea_reporting"/>
<menuitem name="Idea" parent="base.menu_lunch_reporting" id="menu_idea_reporting"/>
<menuitem name="Vote Statistics" parent="menu_idea_reporting"
id="menu_idea_vote_stat" action="action_idea_vote_stat" />
<menuitem name="Vote Statistics" parent="menu_idea_reporting"
id="menu_idea_vote_stat" action="action_idea_vote_stat" />
<!-- Vote For Idea Action -->
<record model="ir.actions.act_window" id="action_idea_vote">
<!-- Vote For Idea Action -->
<record model="ir.actions.act_window" id="action_idea_vote">
<field name="name">Idea's vote</field>
<field name="res_model">idea.vote</field>
<field name="view_type">form</field>

View File

@ -29,13 +29,36 @@ class idea_post_vote(osv.osv_memory):
_description = "Post vote"
_columns = {
'vote': fields.selection([('-1', 'Not Voted'),
('0', 'Very Bad'),
('25', 'Bad'),
('50', 'Normal'),
('75', 'Good'),
('100', 'Very Good') ], 'Post Vote', required=True)
}
'vote': fields.selection([('-1', 'Not Voted'),
('0', 'Very Bad'),
('25', 'Bad'),
('50', 'Normal'),
('75', 'Good'),
('100', 'Very Good') ],
'Post Vote', required=True),
'note': fields.text('Description'),
}
def get_default(self, cr, uid, context={}):
"""
This function checks for precondition before wizard executes
@param self: The object pointer
@param cr: the current row, from the database cursor,
@param uid: the current users ID for security checks,
@param fields: List of fields for default value
@param context: A standard dictionary for contextual values
"""
idea_obj = self.pool.get('idea.idea')
if context.get('active_id'):
idea = idea_obj.browse(cr, uid, context.get('active_id'))
return idea.my_vote
else:
return 75
_defaults = {
'vote': get_default,
}
def view_init(self, cr, uid, fields, context=None):
"""
@ -50,16 +73,12 @@ class idea_post_vote(osv.osv_memory):
for idea in idea_obj.browse(cr, uid, context.get('active_ids', [])):
if idea.state in ['draft', 'close', 'cancel']:
raise osv.except_osv(_("Warning !"), _("Draft/Accepted/Cancelled \
ideas Could not be voted"))
raise osv.except_osv(_("Warning !"), _("Draft/Accepted/Cancelled ideas Could not be voted"))
if idea.state != 'open':
raise osv.except_osv(_('Warning !'), _('idea should be in \
\'Open\' state before vote for that idea.'))
raise osv.except_osv(_('Warning !'), _('idea should be in \'Open\' state before vote for that idea.'))
return False
def do_vote(self, cr, uid, ids, context):
"""
Create idea vote.
@param cr: the current row, from the database cursor,
@ -67,15 +86,26 @@ ideas Could not be voted"))
@param ids: List of Idea Post votes IDs.
@return: Dictionary {}
"""
data = context and context.get('active_id', False) or False
vote_obj = self.pool.get('idea.vote')
vote_id = context and context.get('active_id', False) or False
vote_pool = self.pool.get('idea.vote')
comment_pool = self.pool.get('idea.comment')
for do_vote_obj in self.read(cr, uid, ids):
score = str(do_vote_obj['vote'])
dic = {'idea_id': data, 'user_id': uid, 'score': score }
vote = vote_obj.create(cr, uid, dic)
comment = do_vote_obj['note']
vote = {
'idea_id': vote_id,
'user_id': uid,
'score': score
}
comment = {
'user_id':uid,
'idea_id':vote_id,
'content': comment,
}
vote = vote_pool.create(cr, uid, vote)
comment = comment_pool.create(cr, uid, comment)
return {}
idea_post_vote()

View File

@ -2,43 +2,38 @@
<openerp>
<data>
<!-- Post Idea for vote Form View -->
<!-- Post Idea for vote Form View -->
<record id="view_idea_post_vote" model="ir.ui.view">
<field name="name">idea.post.vote.form</field>
<field name="model">idea.post.vote</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create Tasks">
<group colspan="4" >
<field name="vote"/>
</group>
<separator string="" colspan="4" />
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-ok" name="do_vote" string="Post Vote" type="object"/>
</group>
</form>
</field>
</record>
<record id="view_idea_post_vote" model="ir.ui.view">
<field name="name">idea.post.vote.form</field>
<field name="model">idea.post.vote</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Create Tasks">
<group colspan="4" >
<field name="vote" colspan="4"/>
<separator string="Comment" colspan="4"/>
<field name="note" colspan="4" nolabel="1"/>
</group>
<separator string="" colspan="4" />
<group colspan="4" col="6">
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
<button icon="gtk-ok" name="do_vote" string="Post Vote" type="object"/>
</group>
</form>
</field>
</record>
<!-- Post Idea for vote Action -->
<record id="action_idea_post_vote" model="ir.actions.act_window">
<field name="name">Vote</field>
<field name="res_model">idea.post.vote</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_idea_post_vote"/>
<field name="target">new</field>
</record>
<!-- Post Idea for vote Action Window -->
<act_window id="action_idea_post_vote_values"
key2="client_action_multi" name="vote"
res_model="idea.post.vote" src_model="idea.idea"
view_mode="form" target="new" view_type="form" />
<!-- Post Idea for vote Action -->
<record id="action_idea_post_vote" model="ir.actions.act_window">
<field name="name">Vote</field>
<field name="res_model">idea.post.vote</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_idea_post_vote"/>
<field name="target">new</field>
</record>
</data>
</openerp>

View File

@ -56,9 +56,7 @@ class l10n_be_vat_declaration(osv.osv_memory):
user_cmpny = obj_company.name
vat_no=obj_company.partner_id.vat
if not vat_no:
# raise wizard.except_wizard(_('Data Insufficient'),_('No VAT Number Associated with Main Company!'))
osv.except_osv(_('Data Insufficient'), _('No VAT Number Associated with Main Company!'))
tax_code_ids = obj_tax_code.search(cr, uid, [], context=context)
ctx = context.copy()
@ -68,8 +66,6 @@ class l10n_be_vat_declaration(osv.osv_memory):
address = post_code = city = country_code = ''
city, post_code, address, country_code =self.pool.get('res.company')._get_default_ad(obj_company.partner_id.address)
year_id = obj_fyear.find(cr, uid)
account_period = obj_acc_period.browse(cr, uid, data['period_id'], context=context)
@ -80,7 +76,7 @@ class l10n_be_vat_declaration(osv.osv_memory):
data_of_file +='\n\t<DECLARER>\n\t\t<VATNUMBER>'+str(vat_no)+'</VATNUMBER>\n\t\t<NAME>'+str(obj_company.name)+'</NAME>\n\t\t<ADDRESS>'+address+'</ADDRESS>'
data_of_file +='\n\t\t<POSTCODE>'+post_code+'</POSTCODE>\n\t\t<CITY>'+city+'</CITY>\n\t\t<COUNTRY>'+country_code+'</COUNTRY>\n\t\t<SENDINGREFERENCE>'+send_ref+'</SENDINGREFERENCE>\n\t</DECLARER>'
data_of_file +='\n\t<VATRECORD>\n\t\t<RECNUM>1</RECNUM>\n\t\t<VATNUMBER>'+((vat_no and str(vat_no[2:])) or '')+'</VATNUMBER>\n\t\t<DPERIODE>\n\t\t\t'
starting_month = account_period.date_start[5:7]
ending_month = account_period.date_stop[5:7]
if starting_month != ending_month:
@ -105,7 +101,6 @@ class l10n_be_vat_declaration(osv.osv_memory):
data['file_save'] = base64.encodestring(data_of_file)
self.write(cr, uid, ids, {'file_save':data['file_save']}, context=context)
l10n_be_vat_declaration()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -18,7 +18,7 @@
<field name="ask_resitution"/>
<field name="ask_payment"/>
<field name="client_nihil"/>
<button colspan="1" name="create_xml" string="Create XML" type="object" default_focus="1"/>
<button colspan="1" name="create_xml" string="Create XML" type="object"/>
</group>
<separator string="XML Flie has been Created." colspan="4"/>
<group colspan="4" >

View File

@ -20,21 +20,22 @@
##############################################################################
import time
import base64
from tools.translate import _
from osv import osv, fields
from tools.translate import _
class partner_vat_intra(osv.osv_memory):
""" Partner Vat Intra"""
"""
Partner Vat Intra
"""
_name = "partner.vat.intra"
_description = 'Partner VAT Intra'
def _get_europe_country(self, cursor, user, context={}):
obj_country = self.pool.get('res.country')
return obj_country.search(cursor, user, [('code', 'in', ['AT', 'BG', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB'])])
def _get_europe_country(self, cursor, user, context=None):
return self.pool.get('res.country').search(cursor, user, [('code', 'in', ['AT', 'BG', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB'])])
_columns = {
'name': fields.char('File Name', size=32),
'period_code': fields.char('Period Code',size = 6,required = True, help = '''This is where you have to set the period code for the intracom declaration using the format: ppyyyy
PP can stand for a month: from '01' to '12'.
PP can stand for a trimester: '31','32','33','34'
@ -47,7 +48,8 @@ class partner_vat_intra(osv.osv_memory):
'period_ids': fields.many2many('account.period', 'account_period_rel', 'acc_id', 'period_id', 'Period (s)', help = 'Select here the period(s) you want to include in your intracom declaration'),
'test_xml': fields.boolean('Test XML file', help="Sets the XML output as test file"),
'mand_id' : fields.char('MandataireId', size=14, required=True, help="This identifies the representative of the sending company. This is a string of 14 characters"),
'msg': fields.text('File created', size=64, readonly=True),
'msg': fields.text('File created', size=14, readonly=True),
'no_vat': fields.text('Partner With No VAT', size=14, readonly=True, help="The Partner whose VAT number is not defined they doesn't include in XML File."),
'file_save' : fields.binary('Save File', readonly=True),
'country_ids': fields.many2many('res.country', 'vat_country_rel', 'vat_id', 'country_id', 'European Countries'),
}
@ -56,13 +58,19 @@ class partner_vat_intra(osv.osv_memory):
'country_ids': _get_europe_country,
}
def create_xml(self, cursor, user, ids, context={}):
def create_xml(self, cursor, user, ids, context=None):
obj_user = self.pool.get('res.users')
obj_fyear = self.pool.get('account.fiscalyear')
obj_sequence = self.pool.get('ir.sequence')
obj_partner = self.pool.get('res.partner')
obj_partner_add = self.pool.get('res.partner.address')
obj_country = self.pool.get('res.country')
street = zip_city = country = p_list = data_clientinfo = ''
error_message = list_partner = []
seq = amount_sum = 0
if context is None:
context = {}
data_cmpny = obj_user.browse(cursor, user, user).company_id
data = self.read(cursor, user, ids)[0]
company_vat = data_cmpny.partner_id.vat
@ -73,10 +81,9 @@ class partner_vat_intra(osv.osv_memory):
seq_declarantnum = obj_sequence.get(cursor, user, 'declarantnum')
cref = company_vat[2:] + seq_controlref[-4:]
dnum = cref + seq_declarantnum[-5:]
if len(data['form']['period_code']) != 6:
raise wizard.except_wizard(_('Wrong Period Code'), _('The period code you entered is not valid.'))
if len(data['period_code']) != 6:
raise osv.except_osv(_('Wrong Period Code'), _('The period code you entered is not valid.'))
street = zip_city = country = ''
addr = obj_partner.address_get(cursor, user, [data_cmpny.partner_id.id], ['invoice'])
if addr.get('invoice',False):
ads = obj_partner_add.browse(cursor, user, [addr['invoice']])[0]
@ -99,26 +106,23 @@ class partner_vat_intra(osv.osv_memory):
data_file +='\n\t\t\t<Country>' + str(country) +'</Country>\n\t\t</CompanyInfo>\n\t</AgentRepr>'
data_comp ='\n\t\t<CompanyInfo>\n\t\t\t<VATNum>'+str(company_vat[2:])+'</VATNum>\n\t\t\t<Name>'+str(data_cmpny.name)+'</Name>\n\t\t\t<Street>'+ str(street) +'</Street>\n\t\t\t<CityAndZipCode>'+ str(zip_city) +'</CityAndZipCode>\n\t\t\t<Country>'+ str(country) +'</Country>\n\t\t</CompanyInfo>'
data_period = '\n\t\t<Period>'+ data['period_code'] +'</Period>' #trimester
error_message = []
seq = 0
amount_sum = 0
p_id_list = obj_partner.search(cursor, user, [('vat','!=',False)])
if not p_id_list:
raise osv.except_osv(_('Data Insufficient!'),_('No partner has a VAT Number asociated with him.'))
nb_period = len(data_fiscal.period_ids)
fiscal_periods = data_fiscal.period_ids
list_partner = []
data_clientinfo = ''
cr.execute('''SELECT l.partner_id AS partner_id, p.vat AS vat, t.code AS intra_code, SUM(l.tax_amount) AS amount
FROM account_move_line l
LEFT JOIN account_tax_code t ON (l.tax_code_id = t.id)
LEFT JOIN res_partner p ON (l.partner_id = p.id)
WHERE t.code IN ('44a','44b','88')
AND l.period_id IN %s
GROUP BY l.partner_id, p.vat, t.code''', (tuple(data['form']['period_ids'][0][2]), ))
for row in cr.dictfetchall():
if not data['period_ids']:
raise osv.except_osv(_('Data Insufficient!'),_('Please select at least one Period.'))
cursor.execute('''SELECT p.name As partner_name, l.partner_id AS partner_id, p.vat AS vat, t.code AS intra_code, SUM(l.tax_amount) AS amount
FROM account_move_line l
LEFT JOIN account_tax_code t ON (l.tax_code_id = t.id)
LEFT JOIN res_partner p ON (l.partner_id = p.id)
WHERE t.code IN ('44a','44b','88')
AND l.period_id IN %s
GROUP BY p.name, l.partner_id, p.vat, t.code''', (tuple(data['period_ids']), ))
for row in cursor.dictfetchall():
if not row['vat']:
p_list += str(row['partner_name']) + ', '
continue
seq += 1
amt = row['amount'] or 0
amt = int(amt * 100)
@ -128,11 +132,15 @@ class partner_vat_intra(osv.osv_memory):
amount_sum = int(amount_sum)
data_decl = '\n\t<DeclarantList SequenceNum="1" DeclarantNum="'+ dnum + '" ClientNbr="'+ str(seq) +'" AmountSum="'+ str(amount_sum) +'" >'
data_file += str(data_decl) + str(data_comp) + str(data_period) + str(data_clientinfo) + '\n\t</DeclarantList>\n</VatIntra>'
data['msg'] = 'XML Flie has been Created. Save the File with '".xml"' extension.'
data['file_save'] = base64.encodestring(data_file)
self.write(cursor, user, ids, {'file_save':data['file_save'], 'msg':data['msg']}, context=context)
data = {
'msg': 'XML Flie has been Created. Save the File with '".xml"' extension.',
'file_save': base64.encodestring(data_file),
'name': 'vat_Intra.xml',
'country_ids': [[6, 0, obj_country.search(cursor, user, [('code', 'in', ['AT', 'BG', 'CY', 'CZ', 'DK', 'EE', 'FI', 'FR', 'DE', 'GR', 'HU', 'IE', 'IT', 'LV', 'LT', 'LU', 'MT', 'NL', 'PL', 'PT', 'RO', 'SK', 'SI', 'ES', 'SE', 'GB'])])]],
}
self.write(cursor, user, ids, {'file_save':data['file_save'], 'msg':data['msg'], 'name':data['name'], 'no_vat':p_list, 'country_ids':data['country_ids']}, context=context)
return True
partner_vat_intra()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -7,38 +7,40 @@
name="Belgium Statements"
parent="account.menu_finance_legal_statement"/>
<record id="view_vat_intra" model="ir.ui.view">
<field name="name">Partner VAT intra</field>
<field name="model">partner.vat.intra</field>
<field name="type">form</field>
<field name="arch" type="xml">
<record id="view_vat_intra" model="ir.ui.view">
<field name="name">Partner VAT intra</field>
<field name="model">partner.vat.intra</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Partner VAT intra">
<notebook>
<page string="General Information">
<label string="This wizard will create an XML file for Vat Intra" colspan="4"/>
<newline/>
<field name="fyear" default_focus="1" />
<field name="period_code"/>
<newline/>
<field name="period_ids"/>
<newline/>
<field name="mand_id"/>
<newline/>
<button colspan="4" name="create_xml" string="Create XML" type="object" icon="gtk-execute"/>
<separator colspan="4"/>
<group colspan="4" >
<field name="msg" nolabel="1" colspan="4"/>
<field name="file_save" readonly="True"/>
</group>
<button special="cancel" colspan="4" string="Cancel" icon="gtk-cancel"/>
</page>
<page string="European Countries">
<field name="country_ids" colspan="4" nolabel="1" />
</page>
</notebook>
<newline/>
<separator string="This wizard will create an XML file for Vat Intra" colspan="4"/>
<notebook>
<page string="General Information">
<newline/>
<field name="period_code" colspan="4"/>
<newline/>
<field name="mand_id" colspan="4"/>
<newline/>
<separator string="Periods" colspan="4"/>
<field name="period_ids" nolabel="1" colspan="4"/>
<newline/>
<button colspan="2" name="create_xml" string="Create XML" type="object" icon="gtk-execute"/>
<separator colspan="4"/>
<field name="msg" colspan="4" nolabel="1"/>
<field name="name" colspan="4"/>
<newline/>
<field name="file_save" colspan="4"/>
<newline/>
<field name="no_vat" colspan="4"/>
<separator colspan="4"/>
<button colspan="2" special="cancel" string="Cancel" icon="gtk-cancel"/>
</page>
<page string="European Countries">
<field name="country_ids" colspan="4" nolabel="1" />
</page>
</notebook>
</form>
</field>
</field>
</record>
<record id="action_vat_intra" model="ir.actions.act_window">

1399
addons/olap/i18n/et.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,56 @@
# Estonian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-11-26 05:29+0000\n"
"PO-Revision-Date: 2010-05-05 21:38+0000\n"
"Last-Translator: lyyser <logard.1961@gmail.com>\n"
"Language-Team: Estonian <et@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: 2010-05-06 04:04+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: olap_extract
#: model:ir.module.module,shortdesc:olap_extract.module_meta_information
msgid "olap_extract"
msgstr ""
#. module: olap_extract
#: wizard_button:olap.extract.schema,init,ok:0
msgid "OK"
msgstr "OK"
#. module: olap_extract
#: model:ir.actions.wizard,name:olap_extract.bi_olap_extract_schema
msgid "Olap Extract"
msgstr ""
#. module: olap_extract
#: model:ir.module.module,description:olap_extract.module_meta_information
msgid ""
"\n"
" Extracts the schema structure.\n"
" "
msgstr ""
#. module: olap_extract
#: wizard_field:olap.extract.schema,init,module_name:0
msgid "Module Name"
msgstr "Mooduli nimi"
#. module: olap_extract
#: wizard_button:olap.extract.schema,init,end:0
msgid "Cancel"
msgstr "Katkesta"
#. module: olap_extract
#: wizard_view:olap.extract.schema,init:0
msgid "New Module Name"
msgstr "Uus mooduli nimi"

View File

@ -258,16 +258,17 @@ class task(osv.osv):
(task.description or '')+'\n\n'
# Compute: effective_hours, total_hours, progress
def _hours_get(self, cr, uid, ids, field_names, args, context):
def _hours_get(self, cr, uid, ids, field_names, args, context=None):
res = {}
cr.execute("SELECT task_id, COALESCE(SUM(hours),0) FROM project_task_work WHERE task_id =ANY(%s) GROUP BY task_id",(ids,))
hours = dict(cr.fetchall())
res = {}
for task in self.browse(cr, uid, ids, context=context):
res[task.id] = {}
res[task.id]['effective_hours'] = hours.get(task.id, 0.0)
res[task.id]['total_hours'] = task.remaining_hours + hours.get(task.id, 0.0)
res[task.id] = {'effective_hours': hours.get(task.id, 0.0), 'total_hours': task.remaining_hours + hours.get(task.id, 0.0)}
if (task.remaining_hours + hours.get(task.id, 0.0)):
res[task.id]['progress'] = round(min(100.0 * hours.get(task.id, 0.0) / res[task.id]['total_hours'], 100),2)
if hours.get(task.id, 0.0) > res[task.id]['total_hours']:
res[task.id]['progress'] = round(100 - (max(100.0 * hours.get(task.id, 0.0) / res[task.id]['total_hours'], 100)) % 100, 2)
else:
res[task.id]['progress'] = round(min(100.0 * hours.get(task.id, 0.0) / res[task.id]['total_hours'], 100),2)
else:
res[task.id]['progress'] = 0.0
if task.state in ('done','cancel'):

View File

@ -337,7 +337,7 @@
<field name="delegated_user_id" invisible="context.get('show_delegated', True)"/>
<field name="planned_hours" widget="float_time" />
<field name="total_hours" widget="float_time"/>
<field name="remaining_hours" widget="float_time" avg="Remaining Hours" invisible="context.get('set_visible',False)"/>
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" invisible="context.get('set_visible',False)"/>
<field name="date_deadline" invisible="context.get('set_visible',False)"/>
<field name="type" groups="base.group_extended" invisible="context.get('set_visible',False)"/>
<field name="date_start" invisible="1"/>

View File

@ -13,6 +13,7 @@
<group colspan="4" col="6" attrs="{'invisible':[('target_project','=','all')]}">
<field name="project_id"/>
</group>
<separator colspan="4"/>
<group colspan="4" col="6"> <!-- Improve me -->
<button icon="gtk-cancel" special="cancel" string="_Cancel"/>
<button icon="gtk-ok" name="check_selection" string="_Compute" type="object"/>

View File

@ -111,8 +111,8 @@
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute"/>
<button name="do_reopen" states="done,cancelled" string="Reactivate" type="object" icon="gtk-convert"/>
<button name="do_pending" states="open" string="Pending" type="object" icon="gtk-media-pause"/>
<button groups="base.group_extended" name="%(project.wizard_delegate_task)d" states="pending,open" string="Delegate" type="action" icon="gtk-sort-descending"/>
<button name="%(project.wizard_close_task)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to"/>
<button groups="base.group_extended" name="%(project.action_project_task_delegate)d" states="pending,open" string="Delegate" type="action" icon="gtk-sort-descending"/>
<button name="%(project.action_project_close_task)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel"/>
</group>

View File

@ -7,20 +7,20 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-11-17 10:25+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-05-05 06:46+0000\n"
"Last-Translator: Wojtek Kubiak <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 03:54+0000\n"
"X-Launchpad-Export-Date: 2010-05-06 04:03+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: report_purchase
#: field:report.purchase.order.category,price_average:0
#: field:report.purchase.order.product,price_average:0
msgid "Average Price"
msgstr "Cena przeciętna"
msgstr "Średnia cena"
#. module: report_purchase
#: field:report.purchase.order.category,state:0
@ -49,7 +49,7 @@ msgstr "Zakupy wg produktów"
#. module: report_purchase
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: report_purchase
#: model:ir.ui.menu,name:report_purchase.next_id_75

View File

@ -151,7 +151,7 @@ class resource_resource(osv.osv):
'name' : fields.char("Name", size=64, required=True ),
'code': fields.char('Code', size=16),
'active' : fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the resource record without removing it."),
'company_id' : fields.many2one('res.company', 'Company', required=True),
'company_id' : fields.many2one('res.company', 'Company', required=False),
'resource_type': fields.selection([('user','Human'),('material','Material')], 'Resource Type', required=True),
'user_id' : fields.many2one('res.users', 'User', help='Related user name for the resource to manage its access.'),
'time_efficiency' : fields.float('Efficiency factor', size=8, required=True, help="This field depict the efficiency of the resource to complete tasks. e.g resource put alone on a phase of 5 days with 5 tasks assigned to him, will show a load of 100% for this phase by default, but if we put a efficency of 200%, then his load will only be 50%."),

View File

@ -56,6 +56,7 @@
'scrum_view.xml',
'process/scrum_process.xml',
'wizard/scrum_backlog_sprint_view.xml',
'wizard/scrum_backlog_merger_view.xml',
],
'demo_xml': ['scrum_demo.xml'],
'installable': True,

View File

@ -18,11 +18,10 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
import time
import netsvc
from osv import fields, osv, orm
from osv import fields, osv, orm
from mx import DateTime
import re
@ -35,8 +34,8 @@ class scrum_project(osv.osv):
}
_defaults = {
'product_owner_id': lambda self,cr,uid,context={}: uid,
'sprint_size': lambda *a: 15,
'scrum': lambda *a: 1
'sprint_size': 15,
'scrum': 1
}
scrum_project()
@ -93,25 +92,50 @@ class scrum_sprint(osv.osv):
return True
_columns = {
'name' : fields.char('Sprint Name', required=True, size=64),
'active' : fields.boolean('Active', help="If Active field is set to true, it will allow you to select sprint from task list view. "),
'date_start': fields.date('Starting Date', required=True),
'date_stop': fields.date('Ending Date', required=True),
'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)]),
'project_id': fields.many2one('project.project', 'Project', domain=[('scrum','=',1)], help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
'product_owner_id': fields.many2one('res.users', 'Product Owner', required=True),
'scrum_master_id': fields.many2one('res.users', 'Scrum Master', required=True),
'meeting_ids': fields.one2many('scrum.meeting', 'sprint_id', 'Daily Scrum'),
'review': fields.text('Sprint Review'),
'retrospective': fields.text('Sprint Retrospective'),
'backlog_ids': fields.one2many('scrum.product.backlog', 'sprint_id', 'Sprint Backlog'),
'progress': fields.function(_calc_progress, method=True, string='Progress (0-100)'),
'effective_hours': fields.function(_calc_effective, method=True, string='Effective hours'),
'planned_hours': fields.function(_calc_planned, method=True, string='Planned Hours'),
'expected_hours': fields.function(_calc_expected, method=True, string='Expected Hours'),
'progress': fields.function(_calc_progress, method=True, string='Progress (0-100)', help="Computed as: Time Spent / Total Time."),
'effective_hours': fields.function(_calc_effective, method=True, string='Effective hours', help="Computed using the sum of the task work done."),
'planned_hours': fields.function(_calc_planned, method=True, string='Planned Hours', help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'),
'expected_hours': fields.function(_calc_expected, method=True, string='Expected Hours', help='Estimated time to do the task.'),
'state': fields.selection([('draft','Draft'),('open','Open'),('pending','Pending'),('cancel','Cancelled'),('done','Done')], 'State', required=True),
}
_defaults = {
'state': lambda *a: 'draft',
'date_start' : lambda *a:time.strftime('%Y-%m-%d'),
'state': 'draft',
'date_start' : time.strftime('%Y-%m-%d'),
'active': 1,
}
def copy(self, cr, uid, id, default=None, context=None):
"""Overrides orm copy method
@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 cases IDs
@param context: A standard dictionary for contextual values
"""
if context is None:
context = {}
if default is None:
default = {}
data = self.read(cr, uid, id, context=context)
data.pop('backlog_ids')
data.pop('meeting_ids')
data.update({'scrum_master_id': data['scrum_master_id'][0],
'product_owner_id': data['product_owner_id'][0],
'project_id': data['project_id'][0],
})
return self.create(cr, uid, data, context=context)
def onchange_project_id(self, cr, uid, ids, project_id):
v = {}
if project_id:
@ -178,6 +202,8 @@ class scrum_product_backlog(osv.osv):
return True
def button_close(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'done'}, context=context)
for backlog in self.browse(cr, uid, ids, context=context):
self.pool.get('project.task').write(cr, uid, [i.id for i in backlog.tasks_id], {'state': 'done'})
return True
def button_pending(self, cr, uid, ids, context={}):
self.write(cr, uid, ids, {'state':'pending'}, context=context)
@ -186,23 +212,23 @@ class scrum_product_backlog(osv.osv):
_columns = {
'name' : fields.char('Feature', size=64, required=True),
'note' : fields.text('Note'),
'active' : fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the product backlog without removing it."),
'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)]),
'active' : fields.boolean('Active', help="If Active field is set to true, it will allow you to hide the product backlog without removing it."),
'project_id': fields.many2one('project.project', 'Project', required=True, domain=[('scrum','=',1)], help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
'user_id': fields.many2one('res.users', 'Responsible'),
'sprint_id': fields.many2one('scrum.sprint', 'Sprint'),
'sequence' : fields.integer('Sequence', help="Gives the sequence order when displaying a list of product backlog."),
'tasks_id': fields.one2many('project.task', 'product_backlog_id', 'Tasks Details'),
'state': fields.selection([('draft','Draft'),('open','Open'),('pending','Pending'),('done','Done'),('cancel','Cancelled')], 'State', required=True),
'progress': fields.function(_calc_progress, method=True, string='Progress'),
'effective_hours': fields.function(_calc_effective, method=True, string='Effective hours'),
'planned_hours': fields.function(_calc_planned, method=True, string='Planned Hours'),
'expected_hours': fields.float('Expected Hours'),
'progress': fields.function(_calc_progress, method=True, string='Progress', help="Computed as: Time Spent / Total Time."),
'effective_hours': fields.function(_calc_effective, method=True, string='Effective hours', help="Computed using the sum of the task work done."),
'planned_hours': fields.function(_calc_planned, method=True, string='Planned Hours', help='Estimated time to do the task, usually set by the project manager when the task is in draft state.'),
'expected_hours': fields.float('Expected Hours', help='Estimated time to do the task.'),
'date':fields.datetime("Created Date"),
}
_defaults = {
'state': lambda *a: 'draft',
'active': lambda *a: 1,
'user_id': lambda self,cr,uid,context: uid,
'state': 'draft',
'active': 1,
'user_id': lambda self, cr, uid, context: uid,
}
_order = "sequence"
scrum_product_backlog()
@ -234,8 +260,9 @@ scrum_task()
class scrum_meeting(osv.osv):
_name = 'scrum.meeting'
_description = 'Scrum Meeting'
_order = 'date desc'
_columns = {
'name' : fields.char('Meeting Name', size=64, required=True),
'name' : fields.char('Meeting Name', size=64),
'date': fields.date('Meeting Date', required=True),
'sprint_id': fields.many2one('scrum.sprint', 'Sprint', required=True),
'project_id': fields.many2one('project.project', 'Project'),
@ -249,7 +276,7 @@ class scrum_meeting(osv.osv):
# TODO: Find the right sprint thanks to users and date
#
_defaults = {
'date' : lambda *a:time.strftime('%Y-%m-%d'),
'date' : time.strftime('%Y-%m-%d'),
}
scrum_meeting()

View File

@ -67,12 +67,13 @@
<field name="user_id" select="1"/>
<field name="sequence"/>
<field name="date"/>
<field name="active" select="1"/>
<field name="progress" widget="progressbar"/>
<newline/>
<group colspan="6" col="8">
<field name="effective_hours" widget="float_time"/>
<field name="planned_hours" widget="float_time"/>
<field name="expected_hours" widget="float_time"/>
<field name="progress" widget="progressbar"/>
</group>
</group>
<notebook colspan="4">
@ -189,8 +190,11 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Scrum Sprint">
<field name="name" select="1"/>
<field name="project_id" on_change="onchange_project_id(project_id)"/>
<group colspan="4" col="6">
<field name="name" select="1"/>
<field name="project_id" on_change="onchange_project_id(project_id)"/>
<field name="active"/>
</group>
<notebook colspan="4">
<page string="Sprint Info">
<group colspan="2" col="2">
@ -288,7 +292,6 @@
<field name="arch" type="xml">
<tree string="Scrum Sprint">
<field name="date"/>
<field name="name"/>
<field name="sprint_id"/>
</tree>
</field>
@ -300,17 +303,16 @@
<field name="arch" type="xml">
<form string="Scrum Sprint">
<group colspan="4" col="6">
<field name="name" select="1"/>
<field name="date"/>
<field name="sprint_id"/>
</group>
<notebook colspan="4">
<page string="Scrum Meeting">
<separator colspan="4" string="What have you accomplished since yesterday ?"/>
<separator colspan="4" string="What did you do since the last meeeting?"/>
<field colspan="4" name="question_yesterday" nolabel="1"/>
<separator colspan="4" string="What are you working on today ?"/>
<separator colspan="4" string="What do you plan to do till the next meeting?"/>
<field colspan="4" name="question_today" nolabel="1"/>
<separator colspan="4" string="Is there anything blocking you ?"/>
<separator colspan="4" string="Are there anything blocking you?"/>
<field colspan="4" name="question_blocks" nolabel="1"/>
</page>
<page string="Optional Info">
@ -333,10 +335,9 @@
<field name="arch" type="xml">
<search string="Scrum Sprint">
<group col="10" colspan="4">
<filter icon="terp-project" string="Daily" domain="[('date','=',time.strftime('%%Y%%m%%d'))]" help="Daily Meetings"/>
<filter name="scrum_daily" icon="terp-project" string="Daily" domain="[('date','=',time.strftime('%%Y-%%m-%%d'))]" help="Daily Meetings"/>
<separator orientation="vertical"/>
<field name="name"/>
<field name="sprint_id">
<field name="sprint_id" widget="selection">
<filter icon="terp-project" string="Current" domain="[('sprint_id.state','in',('draft','open'))]" help="Current Sprints" default="1"/>
</field>
<field name="project_id" widget="selection"/>
@ -356,6 +357,7 @@
<field name="res_model">scrum.meeting</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="context">{'search_default_scrum_daily':1}</field>
<field name="search_view_id" ref="view_scrum_meeting_search"/>
</record>
<menuitem sequence="30"

View File

@ -21,6 +21,7 @@
import scrum_backlog_create_task
import scrum_backlog_sprint
import scrum_backlog_merger
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,101 @@
# -*- 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/>.
#
##############################################################################
from osv import osv, fields
from tools.translate import _
class scrum_backlog_merge(osv.osv_memory):
_name = 'scrum.backlog.merge'
_description = 'Merge Two Product Backlogs'
_columns = {
'project_id': fields.many2one('project.project', 'Project', domain=[('scrum','=',1)], help="If you have [?] in the project name, it means there are no analytic account linked to this project."),
}
def check(self, cr, uid, ids, context=None):
backlog_obj = self.pool.get('scrum.product.backlog')
mod_obj = self.pool.get('ir.model.data')
p_list = []
if context is None:
context = {}
#If only one product backlog selected for merging then show an exception
if len(context['active_ids']) < 2:
raise osv.except_osv(_('Warning'),_('Please select at least two Product Backlogs.'))
#If any of the backlog state is done then it will show an exception
for backlogs in backlog_obj.browse(cr, uid, context['active_ids'], context=context):
if backlogs.state == "done":
raise osv.except_osv(_('Warning'),_('Merging is only allowed on draft Product Backlogs.'))
p_list.append(backlogs.project_id.id)
#For checking whether project id's are different or same.
if len(set(p_list)) != 1:
context.update({'diff_projects': True})
model_data_ids = mod_obj.search(cr, uid,[('model','=','ir.ui.view'),('name','=','scrum_merge_project_id_view')], context=context)
resource_id = mod_obj.read(cr, uid, model_data_ids, fields=['res_id'], context=context)[0]['res_id']
return {
'name': _('Use Model'),
'context': context,
'view_type': 'form',
'view_mode': 'form',
'res_model': 'scrum.backlog.merge',
'views': [(resource_id,'form')],
'type': 'ir.actions.act_window',
'target': 'new',
}
else:
self.do_merge(cr, uid, ids, context=context)
return{}
def do_merge(self, cr, uid, ids, context=None):
backlog_obj = self.pool.get('scrum.product.backlog')
task_obj = self.pool.get('project.task')
task_lines = []
new_exp_hour = []
new_note = '===========Merged Features==========='
new_description = '===========Merged Description==========='
if context is None:
context = {}
#This will check product backlog's project id if different then will accept a new id provided by the user.
if 'diff_projects' in context:
data = self.read(cr, uid, ids, [])[0]
new_project_id = data['project_id']
else:
p_id = backlog_obj.read(cr, uid, context['active_id'], ['project_id'])
new_project_id = p_id['project_id'][0]
#To merge note and description of backlogs
for backlogs in backlog_obj.browse(cr, uid, context['active_ids'], context=context):
new_note += '\n--' + backlogs.name
new_description += '\n\n--' + str(backlogs.note)
new_exp_hour.append(backlogs.expected_hours)
for line in backlogs.tasks_id:
task_lines.append(line.id)
id_b = backlog_obj.create(cr, uid, {
'name': 'Merged Product Backlog', 'note': new_note + '\n\n' + new_description, 'project_id': new_project_id,
'expected_hours': round(max(new_exp_hour))
}, context=context)
#To assing a new product backlog to merged tasks
for tasks in task_obj.browse(cr, uid, task_lines, context=context):
task_obj.copy(cr, uid, tasks.id, {'product_backlog_id': id_b})
# This is to change the status of the old product backlogs to done state
for backlogs in backlog_obj.browse(cr, uid, context['active_ids'], context=context):
backlog_obj.write(cr, uid, context['active_ids'], {'state':'done'}, context=context)
return {}
scrum_backlog_merge()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="scrum_backlog_merge_view" model="ir.ui.view">
<field name="name">Merger Product Backlogs</field>
<field name="model">scrum.backlog.merge</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Merge Backlogs">
<separator string="Are you sure you want to merge these Backlogs?" colspan="4"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="check" string="Merge Backlogs" type="object" icon="gtk-convert"/>
</form>
</field>
</record>
<act_window name="Merge Product Backlogs"
res_model="scrum.backlog.merge"
src_model="scrum.product.backlog"
view_mode="form"
target="new"
key2="client_action_multi"
id="action_scrum_backlog_merge"/>
<record id="scrum_merge_project_id_view" model="ir.ui.view">
<field name="name">Merger Product Backlogs</field>
<field name="model">scrum.backlog.merge</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Select Project">
<field name="project_id"/>
<separator string="Slelect the Project" colspan="4"/>
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
<button name="do_merge" string="ok" type="object" icon="gtk-convert"/>
</form>
</field>
</record>
</data>
</openerp>

View File

@ -3,28 +3,29 @@
<data>
<record id="view_scrum_backlog_to_sprint" model="ir.ui.view">
<field name="name">backlog.assign.sprint.form</field>
<field name="model">backlog.assign.sprint</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Assign Sprint">
<group col="4" colspan="6">
<field name="sprint_id" colspan="2"/>
</group>
<newline/>
<separator colspan="2"/>
<newline/>
<group>
<field name="state_open" colspan="1"/>
<field name="convert_to_task" colspan="1"/> </group>
<separator colspan="4"/>
<group col="2" colspan="4">
<button special="cancel" string="Cancel" icon='gtk-cancel'/>
<button name="assign_sprint" string="Assign Sprint" colspan="1" type="object" icon="gtk-execute"/>
</group>
</form>
</field>
</record>
<field name="name">backlog.assign.sprint.form</field>
<field name="model">backlog.assign.sprint</field>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Assign Sprint">
<group col="4" colspan="6">
<field name="sprint_id" colspan="2"/>
</group>
<newline/>
<separator colspan="2"/>
<newline/>
<group>
<field name="state_open" colspan="1"/>
<field name="convert_to_task" colspan="1"/>
</group>
<separator colspan="4"/>
<group col="2" colspan="4">
<button special="cancel" string="Cancel" icon='gtk-cancel'/>
<button name="assign_sprint" string="Assign Sprint" colspan="1" type="object" icon="gtk-execute"/>
</group>
</form>
</field>
</record>
<record id="action_scrum_backlog_to_sprint" model="ir.actions.act_window">
<field name="name">Assign Sprint</field>

View File

@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.6\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-03-29 01:06+0000\n"
"PO-Revision-Date: 2010-05-06 03:59+0000\n"
"Last-Translator: digitalsatori <Unknown>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-04-17 03:56+0000\n"
"X-Launchpad-Export-Date: 2010-05-06 04:03+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: stock
@ -141,7 +141,7 @@ msgstr "业务伙伴"
#. module: stock
#: help:product.product,track_incoming:0
msgid "Force to use a Production Lot during receptions"
msgstr "接收强制的生产批次"
msgstr "在接收时强制使用生产批号"
#. module: stock
#: field:stock.move,move_history_ids:0
@ -184,7 +184,7 @@ msgstr "状态"
#. module: stock
#: field:stock.location,stock_real_value:0
msgid "Real Stock Value"
msgstr "实时库存值"
msgstr "实际库存额"
#. module: stock
#: view:stock.move:0
@ -201,7 +201,7 @@ msgstr "可用"
#. module: stock
#: view:stock.move:0
msgid "Make Parcel"
msgstr "打小包"
msgstr "装箱"
#. module: stock
#: wizard_view:stock.partial_picking,end2:0
@ -211,27 +211,27 @@ msgstr "包装结果"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_QUIT"
msgstr "退出"
msgstr "STOCK_QUIT"
#. module: stock
#: field:stock.warehouse,lot_output_id:0
msgid "Location Output"
msgstr "库位"
msgstr "输出位"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_GOTO_TOP"
msgstr ""
msgstr "STOCK_GOTO_TOP"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_ABOUT"
msgstr "关于"
msgstr "STOCK_ABOUT"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-hr"
msgstr "人力资源"
msgstr "terp-hr"
#. module: stock
#: field:stock.location,usage:0
@ -241,7 +241,7 @@ msgstr "库位类型"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-purchase"
msgstr "采购"
msgstr "terp-purchase"
#. module: stock
#: selection:stock.location,icon:0
@ -256,12 +256,12 @@ msgstr "["
#. module: stock
#: view:stock.picking:0
msgid "Products Sent"
msgstr "产品发出"
msgstr "已发出产品"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_GOTO_FIRST"
msgstr "开始"
msgstr "STOCK_GOTO_FIRST"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_picking_tree6
@ -272,7 +272,7 @@ msgstr "内部调拨"
#. module: stock
#: field:stock.move,product_packaging:0
msgid "Packaging"
msgstr "装"
msgstr "装"
#. module: stock
#: rml:stock.picking.list:0
@ -300,12 +300,12 @@ msgstr "客户退货"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_FLOPPY"
msgstr "软驱"
msgstr "STOCK_FLOPPY"
#. module: stock
#: view:stock.production.lot.revision:0
msgid "Production Lot Revisions"
msgstr "生产批次修改"
msgstr ""
#. module: stock
#: view:stock.location:0
@ -321,7 +321,7 @@ msgstr "库位名称"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_UNINDENT"
msgstr "不缩进"
msgstr "STOCK_UNINDENT"
#. module: stock
#: view:stock.move:0
@ -349,12 +349,12 @@ msgstr "客户"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_UNDERLINE"
msgstr "下划线"
msgstr "STOCK_UNDERLINE"
#. module: stock
#: view:stock.picking.move.wizard:0
msgid "Move Lines"
msgstr "调拨线路"
msgstr "凭证明细"
#. module: stock
#: wizard_field:stock.fill_inventory,init,recursive:0
@ -385,22 +385,22 @@ msgstr "跟踪明细"
#. module: stock
#: field:stock.location,child_ids:0
msgid "Contains"
msgstr "含"
msgstr "含"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_BOLD"
msgstr "粗体"
msgstr "STOCK_BOLD"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-graph"
msgstr "图像"
msgstr "terp-graph"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_PREFERENCES"
msgstr "偏爱"
msgstr "STOCK_PREFERENCES"
#. module: stock
#: rml:lot.location:0
@ -434,12 +434,12 @@ msgstr "库存层1"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_MEDIA_REWIND"
msgstr "倒回"
msgstr "STOCK_MEDIA_REWIND"
#. module: stock
#: field:stock.warehouse,lot_input_id:0
msgid "Location Input"
msgstr "库位"
msgstr "输入库位"
#. module: stock
#: view:res.partner:0
@ -475,7 +475,7 @@ msgstr "产品ID"
#. module: stock
#: view:res.partner:0
msgid "Sales & Purchases"
msgstr "销售&采购"
msgstr "销售采购"
#. module: stock
#: selection:stock.invoice_onshipping,init,type:0
@ -490,12 +490,12 @@ msgstr "盘存库位"
#. module: stock
#: help:product.product,track_production:0
msgid "Force to use a Production Lot during production order"
msgstr "生产单强制的生产批次"
msgstr "在录入生产单时强制使用生产批号"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_CUT"
msgstr "剪贴"
msgstr "STOCK_CUT"
#. module: stock
#: help:product.template,property_stock_inventory:0
@ -513,7 +513,7 @@ msgstr "用于记录出库价值科目"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_ZOOM_FIT"
msgstr "放大到适合"
msgstr "STOCK_ZOOM_FIT"
#. module: stock
#: help:product.category,property_stock_journal:0
@ -540,7 +540,7 @@ msgstr "库存库位"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_SAVE_AS"
msgstr "另存到"
msgstr "STOCK_SAVE_AS"
#. module: stock
#: model:ir.model,name:stock.model_stock_report_prodlots
@ -550,7 +550,7 @@ msgstr "库存生产批次报表"
#. module: stock
#: field:stock.location,stock_virtual:0
msgid "Virtual Stock"
msgstr "虚拟库存"
msgstr "账面库存"
#. module: stock
#: selection:stock.location,usage:0
@ -560,7 +560,7 @@ msgstr "视图"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_DIALOG_ERROR"
msgstr "错误"
msgstr "STOCK_DIALOG_ERROR"
#. module: stock
#: field:stock.location,parent_left:0
@ -575,12 +575,12 @@ msgstr "最近盘存日期"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_INDEX"
msgstr "索引"
msgstr "STOCK_INDEX"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_GOTO_BOTTOM"
msgstr ""
msgstr "STOCK_GOTO_BOTTOM"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_picking_form
@ -614,27 +614,27 @@ msgstr "跟踪批次"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_GO_FORWARD"
msgstr "向前"
msgstr "STOCK_GO_FORWARD"
#. module: stock
#: field:stock.production.lot.revision,author_id:0
msgid "Author"
msgstr "建立者"
msgstr "者"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_UNDELETE"
msgstr "恢复"
msgstr "STOCK_UNDELETE"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_EXECUTE"
msgstr "执行"
msgstr "STOCK_EXECUTE"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_DIALOG_QUESTION"
msgstr "疑问"
msgstr "STOCK_DIALOG_QUESTION"
#. module: stock
#: selection:stock.location,chained_auto_packing:0
@ -664,12 +664,12 @@ msgstr "跟踪号/序号"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_SELECT_FONT"
msgstr "选择字体"
msgstr "STOCK_SELECT_FONT"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_PASTE"
msgstr "粘贴"
msgstr "STOCK_PASTE"
#. module: stock
#: model:stock.location,name:stock.stock_location_locations_partner
@ -680,7 +680,7 @@ msgstr "业务伙伴库位"
#: help:stock.move,tracking_id:0
msgid ""
"Tracking lot is the code that will be put on the logistical unit/pallet"
msgstr "跟踪批次是代码将放入逻辑单位/托板"
msgstr "跟踪批次号是帖在货运包装或托板上的代码"
#. module: stock
#: view:stock.tracking:0
@ -695,7 +695,7 @@ msgstr "欧洲客户"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-stock"
msgstr "库存"
msgstr "terp-stock"
#. module: stock
#: rml:stock.picking.list:0
@ -705,12 +705,12 @@ msgstr "包装单:"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_MEDIA_RECORD"
msgstr "记录"
msgstr "STOCK_MEDIA_RECORD"
#. module: stock
#: view:stock.picking:0
msgid "Calendar View"
msgstr "日程表视图"
msgstr "日视图"
#. module: stock
#: wizard_field:stock.location.products,init,from_date:0
@ -725,7 +725,7 @@ msgstr "重量"
#. module: stock
#: rml:stock.picking.list:0
msgid "Non Assigned Products:"
msgstr "没指定产品"
msgstr "未分派的产品"
#. module: stock
#: view:stock.picking:0
@ -735,12 +735,12 @@ msgstr "发票控制"
#. module: stock
#: model:ir.model,name:stock.model_stock_production_lot_revision
msgid "Production lot revisions"
msgstr "生产批次修订"
msgstr "生产批次修订"
#. module: stock
#: view:stock.picking:0
msgid "Packing Done"
msgstr "打包装完成"
msgstr "装完成"
#. module: stock
#: selection:stock.move,state:0
@ -754,7 +754,7 @@ msgstr "等待中"
#: model:ir.ui.menu,name:stock.menu_action_picking_tree7
#: model:ir.ui.menu,name:stock.menu_picking_waiting
msgid "Available Packing"
msgstr "可包装"
msgstr ""
#. module: stock
#: model:ir.model,name:stock.model_stock_warehouse
@ -765,7 +765,7 @@ msgstr "仓库"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-report"
msgstr "报表"
msgstr "terp-report"
#. module: stock
#: wizard_field:stock.invoice_onshipping,init,type:0
@ -780,12 +780,12 @@ msgstr "一般IT供应商"
#. module: stock
#: model:ir.actions.report.xml,name:stock.report_location_overview_all
msgid "Location Content (With children)"
msgstr "货物内容(子库位)"
msgstr "库存地点(包括子项)"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_FILE"
msgstr "文件"
msgstr "STOCK_FILE"
#. module: stock
#: field:report.stock.lines.date,id:0
@ -795,35 +795,35 @@ msgstr "盘存明细ID"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_EDIT"
msgstr "编辑"
msgstr "STOCK_EDIT"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_CONNECT"
msgstr "连接"
msgstr "STOCK_CONNECT"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_picking_all
#: model:ir.ui.menu,name:stock.menu_action_picking_all
#: wizard_field:stock.picking.make,init,pickings:0
msgid "Packing"
msgstr "装"
msgstr "装"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_GO_DOWN"
msgstr "向下"
msgstr "STOCK_GO_DOWN"
#. module: stock
#: field:res.partner,property_stock_customer:0
#: selection:stock.location,usage:0
msgid "Customer Location"
msgstr "客户库位"
msgstr "客户存货地点"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_OK"
msgstr ""
msgstr "STOCK_OK"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_picking_tree9
@ -876,7 +876,7 @@ msgstr "所有库存调拨"
#. module: stock
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr "无效XML视图结构!"
msgstr "描述视图结构的XML文件无效"
#. module: stock
#: field:res.partner,property_stock_supplier:0
@ -887,7 +887,7 @@ msgstr "供货商库位"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_HELP"
msgstr "帮助"
msgstr "STOCK_HELP"
#. module: stock
#: selection:stock.move,priority:0
@ -897,12 +897,12 @@ msgstr "紧急"
#. module: stock
#: help:product.category,property_stock_account_input_categ:0
msgid "This account will be used to value the input stock"
msgstr "用于记录入库的价值科目"
msgstr "此科目用于记录入库库存金额"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_DIALOG_INFO"
msgstr "信息"
msgstr "STOCK_DIALOG_INFO"
#. module: stock
#: field:stock.move,date:0
@ -928,7 +928,7 @@ msgstr "已创建存货调拨"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_GO_BACK"
msgstr "后退"
msgstr "STOCK_GO_BACK"
#. module: stock
#: selection:stock.picking,invoice_state:0
@ -944,7 +944,7 @@ msgstr "对应库位属性"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_JUSTIFY_FILL"
msgstr "两端对齐"
msgstr "STOCK_JUSTIFY_FILL"
#. module: stock
#: view:stock.move:0
@ -965,7 +965,7 @@ msgstr "分配方法"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-administration"
msgstr "管理员"
msgstr "terp-administration"
#. module: stock
#: field:stock.warehouse,lot_stock_id:0
@ -975,12 +975,12 @@ msgstr "库位库存"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_APPLY"
msgstr "应用"
msgstr "STOCK_APPLY"
#. module: stock
#: wizard_view:stock.partial_picking,end2:0
msgid "The packing has been successfully made !"
msgstr "这包装创建成功!"
msgstr "装箱已完成!"
#. module: stock
#: field:stock.move,address_id:0
@ -997,23 +997,23 @@ msgstr "定期盘存"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-crm"
msgstr "客户关系管理"
msgstr "terp-crm"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_STRIKETHROUGH"
msgstr "加删除线"
msgstr "STOCK_STRIKETHROUGH"
#. module: stock
#: rml:lot.stock.overview_all:0
#: field:stock.incoterms,code:0
msgid "Code"
msgstr "码"
msgstr "码"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-partner"
msgstr "业务伙伴"
msgstr "terp-partner"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_inventory_form_draft
@ -1060,12 +1060,12 @@ msgstr "信息"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_MISSING_IMAGE"
msgstr "图像"
msgstr "STOCK_MISSING_IMAGE"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_SPELL_CHECK"
msgstr "检查"
msgstr "STOCK_SPELL_CHECK"
#. module: stock
#: model:ir.model,name:stock.model_stock_tracking
@ -1082,7 +1082,7 @@ msgstr "单价"
#. module: stock
#: view:stock.picking:0
msgid "Process Later"
msgstr "最后处理"
msgstr "稍候处理"
#. module: stock
#: help:res.partner,property_stock_supplier:0
@ -1115,7 +1115,7 @@ msgstr "可调拨"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_HARDDISK"
msgstr "硬盘"
msgstr "STOCK_HARDDISK"
#. module: stock
#: model:ir.actions.act_window,name:stock.act_relate_picking
@ -1128,7 +1128,7 @@ msgstr "相关领料/提货"
#: field:stock.picking.move.wizard,name:0
#: field:stock.warehouse,name:0
msgid "Name"
msgstr "3"
msgstr "名称"
#. module: stock
#: view:stock.inventory.line:0
@ -1159,7 +1159,7 @@ msgstr "包装单"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_COPY"
msgstr "复制"
msgstr "STOCK_COPY"
#. module: stock
#: selection:stock.invoice_onshipping,init,type:0
@ -1180,7 +1180,7 @@ msgstr "出库科目"
#. module: stock
#: selection:stock.location,chained_auto_packing:0
msgid "Automatic No Step Added"
msgstr "自动没步骤增加"
msgstr "自动,不加入步骤"
#. module: stock
#: wizard_view:stock.location.products,init:0
@ -1190,7 +1190,7 @@ msgstr "库存库位分析"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_CDROM"
msgstr "光驱"
msgstr "STOCK_CDROM"
#. module: stock
#: selection:stock.picking,invoice_state:0
@ -1215,12 +1215,12 @@ msgstr "内部参考"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_REFRESH"
msgstr "恢复"
msgstr "STOCK_REFRESH"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_STOP"
msgstr "停止"
msgstr "STOCK_STOP"
#. module: stock
#: wizard_view:stock.move.track,init:0
@ -1230,27 +1230,27 @@ msgstr "跟踪调拨"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_FIND_AND_REPLACE"
msgstr "替换"
msgstr "STOCK_FIND_AND_REPLACE"
#. module: stock
#: view:stock.picking:0
msgid "Validate"
msgstr "确认"
msgstr "审核"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_DIALOG_WARNING"
msgstr "警告"
msgstr "STOCK_DIALOG_WARNING"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_ZOOM_IN"
msgstr "缩小"
msgstr "STOCK_ZOOM_IN"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_CONVERT"
msgstr "修改"
msgstr "STOCK_CONVERT"
#. module: stock
#: field:stock.move,note:0
@ -1284,27 +1284,27 @@ msgstr "产品"
#. module: stock
#: field:stock.picking,move_type:0
msgid "Delivery Method"
msgstr "交货方式"
msgstr "运输方式"
#. module: stock
#: model:ir.actions.wizard,name:stock.partial_picking
msgid "Partial packing"
msgstr "部分装"
msgstr "部分装"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-calendar"
msgstr "日程表"
msgstr "terp-calendar"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_ITALIC"
msgstr "斜体"
msgstr "STOCK_ITALIC"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_YES"
msgstr ""
msgstr "STOCK_YES"
#. module: stock
#: model:ir.actions.act_window,name:stock.act_stock_picking_move_wizard
@ -1325,7 +1325,7 @@ msgstr "新的定期盘存"
#. module: stock
#: field:stock.production.lot,revisions:0
msgid "Revisions"
msgstr "修"
msgstr "修订记录"
#. module: stock
#: selection:stock.location,allocation_method:0
@ -1370,7 +1370,7 @@ msgstr "单位"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_JUSTIFY_LEFT"
msgstr "左对齐"
msgstr "STOCK_JUSTIFY_LEFT"
#. module: stock
#: view:stock.inventory:0
@ -1420,7 +1420,7 @@ msgstr "固定库位"
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
msgstr "对象名必须以“x_”开始且不能包含任何特殊字符"
#. module: stock
#: field:stock.picking,min_date:0
@ -1436,7 +1436,7 @@ msgstr "发出的产品"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_COLOR_PICKER"
msgstr "颜色包"
msgstr "STOCK_COLOR_PICKER"
#. module: stock
#: model:ir.actions.report.xml,name:stock.report_lot_location
@ -1446,7 +1446,7 @@ msgstr "库位批次"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_DELETE"
msgstr "删除"
msgstr "STOCK_DELETE"
#. module: stock
#: model:account.journal,name:stock.stock_journal
@ -1456,7 +1456,7 @@ msgstr "库存分类帐"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_CLEAR"
msgstr "清空"
msgstr "STOCK_CLEAR"
#. module: stock
#: field:stock.production.lot,date:0
@ -1486,7 +1486,7 @@ msgstr "产品库存视图"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-mrp"
msgstr "生产资源计划"
msgstr "terp-mrp"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_picking_tree3_delivery
@ -1497,12 +1497,12 @@ msgstr "未来的送货单"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_GO_UP"
msgstr "向上"
msgstr "STOCK_GO_UP"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_SORT_DESCENDING"
msgstr "降序"
msgstr "STOCK_SORT_DESCENDING"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_tracking_form
@ -1523,17 +1523,17 @@ msgstr "库存清单"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_HOME"
msgstr "首页"
msgstr "STOCK_HOME"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_PROPERTIES"
msgstr "属性"
msgstr "STOCK_PROPERTIES"
#. module: stock
#: field:stock.location,stock_real:0
msgid "Real Stock"
msgstr "实库存"
msgstr "实库存"
#. module: stock
#: model:ir.actions.wizard,name:stock.wizard_fill_inventory
@ -1576,7 +1576,7 @@ msgstr "包装处理"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_MEDIA_STOP"
msgstr "停止"
msgstr "STOCK_MEDIA_STOP"
#. module: stock
#: view:stock.move:0
@ -1587,7 +1587,7 @@ msgstr "设为可用"
#: model:ir.actions.wizard,name:stock.make_picking
#: wizard_view:stock.picking.make,init:0
msgid "Make packing"
msgstr "进行创建分拣单"
msgstr "装箱"
#. module: stock
#: field:stock.picking,backorder_id:0
@ -1597,12 +1597,12 @@ msgstr "拖欠订单"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_DND_MULTIPLE"
msgstr "倍数"
msgstr "STOCK_DND_MULTIPLE"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_REMOVE"
msgstr "移除"
msgstr "STOCK_REMOVE"
#. module: stock
#: field:stock.incoterms,active:0
@ -1610,7 +1610,7 @@ msgstr "移除"
#: field:stock.picking,active:0
#: field:stock.tracking,active:0
msgid "Active"
msgstr "效"
msgstr "效"
#. module: stock
#: view:product.template:0
@ -1634,12 +1634,12 @@ msgstr "合计:"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_DIALOG_AUTHENTICATION"
msgstr "确定"
msgstr "STOCK_DIALOG_AUTHENTICATION"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_ZOOM_OUT"
msgstr "放大"
msgstr "STOCK_ZOOM_OUT"
#. module: stock
#: wizard_field:stock.move.track,init,tracking_prefix:0
@ -1654,22 +1654,22 @@ msgstr "最近"
#. module: stock
#: wizard_field:stock.location.products,init,to_date:0
msgid "To"
msgstr ""
msgstr ""
#. module: stock
#: field:stock.production.lot.revision,name:0
msgid "Revision Name"
msgstr "修名称"
msgstr "修订版名称"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_SELECT_COLOR"
msgstr "选择颜色"
msgstr "STOCK_SELECT_COLOR"
#. module: stock
#: view:stock.inventory:0
msgid "Confirm Inventory"
msgstr "库存确定"
msgstr "盘点确认"
#. module: stock
#: view:product.category:0
@ -1679,7 +1679,7 @@ msgstr "会计库存属性"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_NO"
msgstr ""
msgstr "STOCK_NO"
#. module: stock
#: model:stock.location,name:stock.stock_location_workshop
@ -1701,7 +1701,7 @@ msgstr "虚拟库位"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_REDO"
msgstr "重做"
msgstr "STOCK_REDO"
#. module: stock
#: model:stock.location,name:stock.stock_location_company
@ -1721,7 +1721,7 @@ msgstr "不紧急"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_CLOSE"
msgstr "关闭"
msgstr "STOCK_CLOSE"
#. module: stock
#: model:ir.actions.act_window,name:stock.action_warehouse_form
@ -1732,7 +1732,7 @@ msgstr "仓库"
#. module: stock
#: help:product.product,track_outgoing:0
msgid "Force to use a Production Lot during deliveries"
msgstr "送货强制的生产批次"
msgstr "在运输时强制使用生产批次"
#. module: stock
#: view:stock.picking:0
@ -1796,7 +1796,7 @@ msgstr "系列型号"
#. module: stock
#: field:stock.location,posx:0
msgid "Corridor (X)"
msgstr "走廊X"
msgstr "通道(X)"
#. module: stock
#: model:stock.location,name:stock.stock_location_suppliers
@ -1806,12 +1806,12 @@ msgstr "供应商"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_JUMP_TO"
msgstr "跳到"
msgstr "STOCK_JUMP_TO"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-tools"
msgstr "工具"
msgstr "terp-tools"
#. module: stock
#: model:ir.actions.report.xml,name:stock.report_location_overview
@ -1826,7 +1826,7 @@ msgstr "产品库位"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_UNDO"
msgstr "取消"
msgstr "STOCK_UNDO"
#. module: stock
#: model:ir.actions.wizard,name:stock.move_split
@ -1836,7 +1836,7 @@ msgstr "分割调拨明细"
#. module: stock
#: selection:stock.location,icon:0
msgid "terp-sale"
msgstr "销售"
msgstr "terp-sale"
#. module: stock
#: field:stock.production.lot,name:0
@ -1846,7 +1846,7 @@ msgstr "序号"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_ADD"
msgstr "增加"
msgstr "STOCK_ADD"
#. module: stock
#: field:stock.location,chained_delay:0
@ -1856,17 +1856,17 @@ msgstr "连锁延迟(天)"
#. module: stock
#: field:stock.move,location_id:0
msgid "Source Location"
msgstr "源位"
msgstr "源位"
#. module: stock
#: view:product.template:0
msgid "Accounting Entries"
msgstr "凭证"
msgstr "会计分录"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_MEDIA_PAUSE"
msgstr "暂停"
msgstr "STOCK_MEDIA_PAUSE"
#. module: stock
#: view:product.product:0
@ -1894,12 +1894,12 @@ msgstr "盘存日期"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_PRINT_PREVIEW"
msgstr "打印预览"
msgstr "STOCK_PRINT_PREVIEW"
#. module: stock
#: selection:stock.location,icon:0
msgid "STOCK_FIND"
msgstr "查找"
msgstr "STOCK_FIND"
#. module: stock
#: view:stock.inventory:0