+ [[ (line_id.partner_id and line_id.partner_id.name) or 'Account']]
+
+
+ [[ formatLang(line_id.debit) ]]
+
+
+ [[ formatLang(line_id.credit) ]]
+
+
+
+
+ [[ line_id.account_id.name ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ line_id.name ]]-[[voucher.ref]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Through :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ voucher.narration or '']]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ On Account of :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ voucher.line_id and voucher.line_id.name and voucher.line_id.name[1] or removeParentNode('para') ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Amount (in words) :
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ convert(voucher.amount) ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ [[ formatLang(debit(voucher.line_id))]]
+
+
+ [[ formatLang(credit(voucher.line_id)) ]]
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Receiver's Signature
+
+
+
+
+
+
+
+
+
+
+
+
+ Authorised Signatory
+
+
+
+
+
+
+
+
diff --git a/addons/account/rml_parse.py b/addons/account/rml_parse.py
new file mode 100755
index 00000000000..fd73d16a406
--- /dev/null
+++ b/addons/account/rml_parse.py
@@ -0,0 +1,166 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2008 Tiny SPRL (). All Rights Reserved
+# $Id$
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+#
+##############################################################################
+
+from report import report_sxw
+import xml.dom.minidom
+import os, time
+import osv
+import re
+import tools
+import pooler
+import re
+import sys
+
+class rml_parse(report_sxw.rml_parse):
+ def __init__(self, cr, uid, name, context):
+ super(rml_parse, self).__init__(cr, uid, name, context=None)
+ self.localcontext.update({
+ 'comma_me': self.comma_me,
+ 'format_date': self._get_and_change_date_format_for_swiss,
+ 'strip_name' : self._strip_name,
+ 'explode_name' : self._explode_name,
+ })
+
+ def comma_me(self,amount):
+ #print "#" + str(amount) + "#"
+ if not amount:
+ amount = 0.0
+ if type(amount) is float :
+ amount = str('%.2f'%amount)
+ else :
+ amount = str(amount)
+ if (amount == '0'):
+ return ' '
+ orig = amount
+ new = re.sub("^(-?\d+)(\d{3})", "\g<1>'\g<2>", amount)
+ if orig == new:
+ return new
+ else:
+ return self.comma_me(new)
+
+ def _ellipsis(self, string, maxlen=100, ellipsis = '...'):
+ ellipsis = ellipsis or ''
+ try:
+ return string[:maxlen - len(ellipsis) ] + (ellipsis, '')[len(string) < maxlen]
+ except Exception, e:
+ return False
+
+ def _strip_name(self, name, maxlen=50):
+ return self._ellipsis(name, maxlen, '...')
+
+ def _get_and_change_date_format_for_swiss (self,date_to_format):
+ date_formatted=''
+ if date_to_format:
+ date_formatted = strptime (date_to_format,'%Y-%m-%d').strftime('%d.%m.%Y')
+ return date_formatted
+
+ def _explode_name(self,chaine,length):
+ # We will test if the size is less then account
+ full_string = ''
+ if (len(str(chaine)) <= length):
+ return chaine
+ #
+ else:
+ chaine = unicode(chaine,'utf8').encode('iso-8859-1')
+ rup = 0
+ for carac in chaine:
+ rup = rup + 1
+ if rup == length:
+ full_string = full_string + '\n'
+ full_string = full_string + carac
+ rup = 0
+ else:
+ full_string = full_string + carac
+
+ return full_string
+
+ def makeAscii(self,str):
+ try:
+ Stringer = str.encode("utf-8")
+ except UnicodeDecodeError:
+ try:
+ Stringer = str.encode("utf-16")
+ except UnicodeDecodeError:
+ print "UTF_16 Error"
+ Stringer = str
+ else:
+ return Stringer
+ else:
+ return Stringer
+ return Stringer
+
+ def explode_this(self,chaine,length):
+ #chaine = self.repair_string(chaine)
+ chaine = rstrip(chaine)
+ ast = list(chaine)
+ i = length
+ while i <= len(ast):
+ ast.insert(i,'\n')
+ i = i + length
+ chaine = str("".join(ast))
+ return chaine
+
+ def repair_string(self,chaine):
+ ast = list(chaine)
+ UnicodeAst = []
+ _previouslyfound = False
+ i = 0
+ #print str(ast)
+ while i < len(ast):
+ elem = ast[i]
+ try:
+ Stringer = elem.encode("utf-8")
+ except UnicodeDecodeError:
+ to_reencode = elem + ast[i+1]
+ print str(to_reencode)
+ Good_char = to_reencode.decode('utf-8')
+ UnicodeAst.append(Good_char)
+ i += i +2
+ else:
+ UnicodeAst.append(elem)
+ i += i + 1
+ return "".join(UnicodeAst)
+
+ def ReencodeAscii(self,str):
+ print sys.stdin.encoding
+ try:
+ Stringer = str.decode("ascii")
+ except UnicodeEncodeError:
+ print "REENCODING ERROR"
+ return str.encode("ascii")
+ except UnicodeDecodeError:
+ print "DECODING ERROR"
+ return str.encode("ascii")
+ else:
+ print Stringer
+ return Stringer
+
+ def _add_header(self, node, header=1):
+ if header==2:
+ rml_head = self.rml_header2
+ else:
+ rml_head = self.rml_header
+ rml_head = rml_head.replace('','''[[company.logo]] ''')
+ return True
+
+
+
diff --git a/addons/account/wizard/account_aged_trial_balance_view.xml b/addons/account/wizard/account_aged_trial_balance_view.xml
index 7984f69e86e..769d7ee268f 100644
--- a/addons/account/wizard/account_aged_trial_balance_view.xml
+++ b/addons/account/wizard/account_aged_trial_balance_view.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/account/wizard/account_balance_report_view.xml b/addons/account/wizard/account_balance_report_view.xml
index dd1b7147f13..f50cce039cc 100644
--- a/addons/account/wizard/account_balance_report_view.xml
+++ b/addons/account/wizard/account_balance_report_view.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/account/wizard/account_chart.py b/addons/account/wizard/account_chart.py
index ba94bbfb37c..af3f0c26511 100644
--- a/addons/account/wizard/account_chart.py
+++ b/addons/account/wizard/account_chart.py
@@ -24,7 +24,7 @@ from tools.translate import _
class account_chart(osv.osv_memory):
"""
For Chart of Accounrs
- """
+ """
_name = "account.chart"
_description = "chart"
_columns = {
diff --git a/addons/account/wizard/account_general_ledger_report_view.xml b/addons/account/wizard/account_general_ledger_report_view.xml
index 0790a1654b9..a2ff3accf5f 100644
--- a/addons/account/wizard/account_general_ledger_report_view.xml
+++ b/addons/account/wizard/account_general_ledger_report_view.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py
index 7820e327256..9396209ccc6 100644
--- a/addons/account/wizard/account_invoice_refund.py
+++ b/addons/account/wizard/account_invoice_refund.py
@@ -18,10 +18,11 @@
# along with this program. If not, see .
#
##############################################################################
+import time
+
from osv import fields, osv
from tools.translate import _
import netsvc
-import time
class account_invoice_refund(osv.osv_memory):
@@ -30,16 +31,15 @@ class account_invoice_refund(osv.osv_memory):
_name = "account.invoice.refund"
_description = "Invoice Refund"
_columns = {
- 'date': fields.date('Operation date', required=False, help='This date will be used as the invoice date for Refund Invoice and Period will be chosen accordingly!'),
- 'period': fields.many2one('account.period', 'Force period', required=False),
- 'description': fields.char('Description', size=150, required=True),
+ 'date': fields.date('Operation date', help='This date will be used as the invoice date for Refund Invoice and Period will be chosen accordingly!'),
+ 'period': fields.many2one('account.period', 'Force period'),
+ 'description': fields.char('Description', size=128, required=True),
}
-
_defaults = {
'date': time.strftime('%Y-%m-%d'),
- }
+ }
- def compute_refund(self, cr, uid, ids, mode, context=None):
+ def compute_refund(self, cr, uid, ids, mode='refund', context=None):
"""
@param cr: the current row, from the database cursor,
@param uid: the current user’s ID for security checks,
@@ -78,21 +78,20 @@ class account_invoice_refund(osv.osv_memory):
result_query = cr.fetchone()
if result_query:
cr.execute("""SELECT id
- from account_period where date('%s')
+ from account_period where date(%s)
between date_start AND date_stop \
and company_id = %s limit 1 """,
- (form['date'], self.pool.get('res.users').browse(cr, uid, uid,context=context).company_id.id,))
+ (date, self.pool.get('res.users').browse(cr, uid, uid,context=context).company_id.id,))
else:
cr.execute("""SELECT id
- from account_period where date('%s')
+ from account_period where date(%s)
between date_start AND date_stop \
- limit 1 """, (form['date'],))
+ limit 1 """, (date,))
res = cr.fetchone()
if res:
period = res[0]
else:
date = inv.date_invoice
-
if form['description'] :
description = form['description']
else:
@@ -129,7 +128,7 @@ class account_invoice_refund(osv.osv_memory):
writeoff_journal_id=inv.journal_id.id,
writeoff_acc_id=inv.account_id.id
)
- if mode == 'modify' :
+ if mode == 'modify':
invoice = inv_obj.read(cr, uid, [inv.id],
['name', 'type', 'number', 'reference',
'comment', 'date_due', 'partner_id',
diff --git a/addons/account/wizard/account_partner_balance_report_view.xml b/addons/account/wizard/account_partner_balance_report_view.xml
index 02c2ec03a25..55fb71553d7 100644
--- a/addons/account/wizard/account_partner_balance_report_view.xml
+++ b/addons/account/wizard/account_partner_balance_report_view.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/account/wizard/account_third_party_ledger.xml b/addons/account/wizard/account_third_party_ledger.xml
index 6ddc9a1e847..e731086af2c 100644
--- a/addons/account/wizard/account_third_party_ledger.xml
+++ b/addons/account/wizard/account_third_party_ledger.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/account/wizard/account_unreconcile.py b/addons/account/wizard/account_unreconcile.py
index 02e6ee2515e..c57e61e79ab 100644
--- a/addons/account/wizard/account_unreconcile.py
+++ b/addons/account/wizard/account_unreconcile.py
@@ -29,7 +29,7 @@ class account_unreconcile(osv.osv_memory):
obj_move_reconcile = self.pool.get('account.move.reconcile')
if context is None:
context = {}
- recs = obj_move_line.read(cr, uid, data['ids'], ['reconcile_id','reconcile_partial_id'])
+ recs = obj_move_line.read(cr, uid, context['active_ids'], ['reconcile_id','reconcile_partial_id'])
unlink_ids = []
full_recs = filter(lambda x: x['reconcile_id'], recs)
rec_ids = [rec['reconcile_id'][0] for rec in full_recs]
diff --git a/addons/account/wizard/account_vat_view.xml b/addons/account/wizard/account_vat_view.xml
index 7662594bb79..528922d8763 100644
--- a/addons/account/wizard/account_vat_view.xml
+++ b/addons/account/wizard/account_vat_view.xml
@@ -8,7 +8,7 @@
form
-
+
diff --git a/addons/account_analytic_default/account_analytic_default.py b/addons/account_analytic_default/account_analytic_default.py
index 84fd933d9a9..1db16ca8787 100644
--- a/addons/account_analytic_default/account_analytic_default.py
+++ b/addons/account_analytic_default/account_analytic_default.py
@@ -47,7 +47,7 @@ class account_analytic_default(osv.osv):
domain += ['|',('partner_id','=',partner_id)]
domain += [('partner_id','=',False)]
if user_id:
- domain += ['|',('user_id','=',uid)]
+ domain += ['|',('user_id','=',user_id)]
domain += [('user_id','=',False)]
if date:
domain += ['|',('date_start','<=',date),('date_start','=',False)]
diff --git a/addons/account_followup/__openerp__.py b/addons/account_followup/__openerp__.py
index 2fc950d9e0c..df3955d8180 100644
--- a/addons/account_followup/__openerp__.py
+++ b/addons/account_followup/__openerp__.py
@@ -30,7 +30,7 @@
You can define your multiple levels of recall through the menu:
Financial Management/Configuration/Payment Terms/Follow-Ups
- Once it's defined, you can automatically prints recall every days
+ Once it's defined, you can automatically print recalls every day
through simply clicking on the menu:
Financial_Management/Periodical_Processing/Print_Follow-Ups
diff --git a/addons/account_invoice_layout/__openerp__.py b/addons/account_invoice_layout/__openerp__.py
index f2df124dc75..8692385179e 100644
--- a/addons/account_invoice_layout/__openerp__.py
+++ b/addons/account_invoice_layout/__openerp__.py
@@ -32,7 +32,7 @@
* add titles, comment lines, sub total lines
* draw horizontal lines and put page breaks
- Moreover, there is one option which allow you to print all the selected invoices with a given special message at the bottom of it. This feature can be very useful for printing your invoices with end-of-year wishes, special punctual conditions...
+ Moreover, there is one option which allows you to print all the selected invoices with a given special message at the bottom of it. This feature can be very useful for printing your invoices with end-of-year wishes, special punctual conditions...
""",
'author': 'Tiny',
diff --git a/addons/account_payment/__openerp__.py b/addons/account_payment/__openerp__.py
index 0388bc2d4e4..5cdc1254976 100644
--- a/addons/account_payment/__openerp__.py
+++ b/addons/account_payment/__openerp__.py
@@ -28,7 +28,7 @@
"depends": ["account"],
"init_xml": [],
"description": """
- This module provide :
+ This module provides :
* a more efficient way to manage invoice payment.
* a basic mechanism to easily plug various automated payment.
""",
diff --git a/addons/account_voucher/__openerp__.py b/addons/account_voucher/__openerp__.py
index 14265e3403a..ed250f0aaf0 100644
--- a/addons/account_voucher/__openerp__.py
+++ b/addons/account_voucher/__openerp__.py
@@ -24,8 +24,8 @@
"version" : "1.0",
"author" : 'Tiny & Axelor',
"description": """
- India Accounting module includes all the basic requirenment of
- Basic Accounting, plus new things which available are
+ Indian Accounting module includes all the basic requirenments of
+ Basic Accounting, plus new things which are available :
* Indian Account Chart
* New Invoice - (Local, Retail)
* Invoice Report
@@ -36,7 +36,10 @@
""",
"category" : "Generic Modules/Accounting",
"website" : "http://tinyerp.com",
- "depends" : ["base", "account"],
+ "depends" : [
+ "base",
+ "account"
+ ],
"init_xml" : [
],
@@ -46,10 +49,12 @@
"update_xml" : [
"security/ir.model.access.csv",
"voucher_sequence.xml",
+ "voucher_workflow.xml",
"voucher_report.xml",
"voucher_view.xml",
"voucher_wizard.xml",
"wizard/account_voucher_open_view.xml",
+
],
'certificate': '0037580727101',
"active": False,
diff --git a/addons/account_voucher/voucher.py b/addons/account_voucher/voucher.py
index 140442aa02e..7da226b3188 100644
--- a/addons/account_voucher/voucher.py
+++ b/addons/account_voucher/voucher.py
@@ -28,6 +28,17 @@ import mx.DateTime
from mx.DateTime import RelativeDateTime
from tools import config
+type2journal = {
+ 'rec_voucher': 'cash',
+ 'bank_rec_voucher': 'cash',
+ 'pay_voucher': 'cash',
+ 'bank_pay_voucher': 'cash',
+ 'cont_voucher': 'cash',
+ 'journal_sale_vou': 'sale',
+ 'journal_pur_voucher': 'purchase',
+ 'journal_voucher':'expanse'
+}
+
class ir_sequence_type(osv.osv):
_inherit = "ir.sequence.type"
_columns = {
@@ -36,7 +47,15 @@ class ir_sequence_type(osv.osv):
}
ir_sequence_type()
+class account_journal(osv.osv):
+ _inherit = "account.journal"
+ _columns = {
+ 'max_amount': fields.float('Verify Transection', digits=(16, int(config['price_accuracy'])), help="Validate voucher entry twice before posting it, if transection amount more then entered here"),
+ }
+account_journal()
+
class account_voucher(osv.osv):
+
def _get_period(self, cr, uid, context):
periods = self.pool.get('account.period').find(cr, uid)
if periods:
@@ -45,34 +64,22 @@ class account_voucher(osv.osv):
return False
def _get_type(self, cr, uid, context={}):
- type = context.get('type', 'rec_voucher')
+ type = context.get('type', 'bank_rec_voucher')
return type
def _get_reference_type(self, cursor, user, context=None):
return [('none', 'Free Reference')]
- def _get_journal(self, cr, uid, context):
- type_inv = 'rec_voucher'
-
- if type(context) == type(''):
- type_inv = context
- elif type(context) == type({}):
- type_inv = context.get('type', 'rec_voucher')
-
- type2journal = {
- 'rec_voucher': 'cash',
- 'bank_rec_voucher': 'cash',
- 'pay_voucher': 'cash',
- 'bank_pay_voucher': 'cash',
- 'cont_voucher': 'cash',
- 'journal_sale_vou': 'sale',
- 'journal_pur_voucher': 'purchase',
- 'journal_voucher':'expanse'
- }
-
- journal_obj = self.pool.get('account.journal')
- ttype = type2journal.get(type_inv, 'cash')
- res = journal_obj.search(cr, uid, [('type', '=', ttype)], limit=1)
+ def _get_journal(self, cr, uid, context={}):
+ journal_pool = self.pool.get('account.journal')
+
+ if context.get('journal_id', False):
+ return context.get('journal_id')
+
+ type_inv = context.get('type', 'rec_voucher')
+
+ ttype = type2journal.get(type_inv, type_inv)
+ res = journal_pool.search(cr, uid, [('type', '=', ttype)], limit=1)
if res:
return res[0]
@@ -80,7 +87,7 @@ class account_voucher(osv.osv):
return False
def _get_currency(self, cr, uid, context):
- user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, [uid])[0]
+ user = pooler.get_pool(cr.dbname).get('res.users').browse(cr, uid, uid)
if user.company_id:
return user.company_id.currency_id.id
else:
@@ -92,13 +99,13 @@ class account_voucher(osv.osv):
_columns = {
'name':fields.char('Name', size=256, required=True, readonly=True, states={'draft':[('readonly',False)]}),
'type': fields.selection([
- ('pay_voucher','Cash Payment Voucher'),
- ('bank_pay_voucher','Bank Payment Voucher'),
- ('rec_voucher','Cash Receipt Voucher'),
- ('bank_rec_voucher','Bank Receipt Voucher'),
- ('cont_voucher','Contra Voucher'),
- ('journal_sale_vou','Journal Sale Voucher'),
- ('journal_pur_voucher','Journal Purchase Voucher'),
+ ('pay_voucher','Cash Payment'),
+ ('bank_pay_voucher','Bank Payment'),
+ ('rec_voucher','Cash Receipt'),
+ ('bank_rec_voucher','Bank Receipt'),
+ ('cont_voucher','Contra'),
+ ('journal_sale_vou','Journal Sale'),
+ ('journal_pur_voucher','Journal Purchase'),
('journal_voucher','Journal Voucher'),
],'Type', readonly=True, select=True , size=128),
'date':fields.date('Date', readonly=True, states={'draft':[('readonly',False)]}),
@@ -110,16 +117,17 @@ class account_voucher(osv.osv):
'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'company_id': fields.many2one('res.company', 'Company', required=True),
'state':fields.selection(
- [('draft','Draft'),
- ('proforma','Pro-forma'),
- ('posted','Posted'),
- ('cancel','Cancel')
- ], 'State',
- readonly=True,
- help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed Voucher. \
+ [('draft','Draft'),
+ ('proforma','Pro-forma'),
+ ('posted','Posted'),
+ ('recheck','Waiting for Re-checking'),
+ ('cancel','Cancel'),
+ ('audit','Audit Complete')
+ ], 'State', readonly=True, size=32,
+ help=' * The \'Draft\' state is used when a user is encoding a new and unconfirmed Voucher. \
\n* The \'Pro-forma\' when voucher is in Pro-forma state,voucher does not have an voucher number. \
\n* The \'Posted\' state is used when user create voucher,a voucher number is generated and voucher entries are created in account \
- \n* The \'Cancelled\' state is used when user cancel voucher.'),
+ \n* The \'Cancelled\' state is used when user cancel voucher.'),
'amount':fields.float('Amount', readonly=True),
'number':fields.char('Number', size=32, readonly=True),
'reference': fields.char('Voucher Reference', size=64),
@@ -433,14 +441,14 @@ class account_voucher(osv.osv):
if not len(ids):
return []
types = {
- 'pay_voucher': 'CPV: ',
- 'rec_voucher': 'CRV: ',
- 'cont_voucher': 'CV: ',
- 'bank_pay_voucher': 'BPV: ',
- 'bank_rec_voucher': 'BRV: ',
- 'journal_sale_vou': 'JSV: ',
- 'journal_pur_voucher': 'JPV: ',
- 'journal_voucher':'JV'
+ 'pay_voucher': 'CPV: ',
+ 'rec_voucher': 'CRV: ',
+ 'cont_voucher': 'CV: ',
+ 'bank_pay_voucher': 'BPV: ',
+ 'bank_rec_voucher': 'BRV: ',
+ 'journal_sale_vou': 'JSV: ',
+ 'journal_pur_voucher': 'JPV: ',
+ 'journal_voucher':'JV'
}
return [(r['id'], types[r['type']]+(r['number'] or '')+' '+(r['name'] or '')) for r in self.read(cr, uid, ids, ['type', 'number', 'name'], context, load='_classic_write')]
diff --git a/addons/account_voucher/voucher_view.xml b/addons/account_voucher/voucher_view.xml
index 956d9e533a0..08262bb17df 100644
--- a/addons/account_voucher/voucher_view.xml
+++ b/addons/account_voucher/voucher_view.xml
@@ -6,7 +6,7 @@
account.vouchertree
-
+
@@ -25,7 +25,7 @@
account.voucherform
-
+
@@ -36,8 +36,8 @@
-
-
+
+
@@ -49,13 +49,14 @@
-
+
-
-
-
-
+
+
+
+
+
@@ -103,19 +104,9 @@
-
- Vouchers
- account.voucher
- form
- tree,form
-
-
-
-
- Receipt Vouchers
+ Receivable Entriesaccount.voucherformtree,form
@@ -123,8 +114,8 @@
[('type','like','rec_voucher')]{'type':'rec_voucher'}
-
+
Cash Receipt
@@ -135,7 +126,7 @@
[('type','=','rec_voucher')]{'type':'rec_voucher'}
-
@@ -147,7 +138,7 @@
[('type','=','bank_rec_voucher')]{'type':'bank_rec_voucher'}
-
@@ -155,7 +146,7 @@
- Payment Vouchers
+ Payable Entriesaccount.voucherformtree,form
@@ -163,11 +154,11 @@
[('type','like','pay_voucher')]{'type':'pay_voucher'}
-
+
- Payment Vouchers
+ Cash Paymentaccount.voucherformtree,form
@@ -175,11 +166,11 @@
[('type','=','pay_voucher')]{'type':'pay_voucher'}
-
- Payment Vouchers
+ Bank Paymentaccount.voucherformtree,form
@@ -187,24 +178,24 @@
[('type','=','bank_pay_voucher')]{'type':'bank_pay_voucher'}
-
- Other Vouchers
+ Other Entriesaccount.voucherformtree,form
-
+
- Contra Voucher
+ Contra Entriesaccount.voucherformtree,form
@@ -212,11 +203,11 @@
[('type','=','cont_voucher')]{'type':'cont_voucher'}
-
- Journal Sale Voucher
+ Journal Saleaccount.voucherformtree,form
@@ -224,11 +215,11 @@
[('type','=','journal_sale_vou')]{'type':'journal_sale_vou'}
-
- Journal Purchase Voucher
+ Journal Purchaseaccount.voucherformtree,form
@@ -236,7 +227,7 @@
[('type','=','journal_pur_voucher')]{'type':'journal_pur_voucher'}
-
@@ -248,9 +239,28 @@
[('type','=','journal_voucher')]{'type':'journal_voucher'}
-
-
+
+
+ account.journal.form.inherit
+ account.journal
+ form
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_voucher/voucher_wizard.xml b/addons/account_voucher/voucher_wizard.xml
index 661acdd4241..b8851b51afe 100644
--- a/addons/account_voucher/voucher_wizard.xml
+++ b/addons/account_voucher/voucher_wizard.xml
@@ -1,20 +1,18 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_voucher/voucher_workflow.xml b/addons/account_voucher/voucher_workflow.xml
index 261a56ebb34..ceb8da48722 100644
--- a/addons/account_voucher/voucher_workflow.xml
+++ b/addons/account_voucher/voucher_workflow.xml
@@ -1,75 +1,80 @@
-
-
-
+
+ account.voucher.basicaccount.voucherTrue
-
+
-
+ Truedraft
-
-
-
-
- performa
- open_voucher()
+ write({'state':'draft'})function
-
-
- posted
- proforma_voucher()
+
+
+ proforma
+ write({'state':'proforma'})
+ open_voucher()
+ function
+
+
+
+
+ done
+ write({'state':'posted'})
+ proforma_voucher()Truefunction
-
-
- cancel
- cancel_voucher()
+
+
+ recheck
+ write({'state':'recheck'})function
-
+ open_voucher
-
-
+
+ proforma_voucher
+ amount <= journal_id.max_amount
-
-
- cancel_voucher
+
+
+ proforma_voucher
+ amount > journal_id.max_amount
+
+
+
+
+
+ recheck_voucher
-
-
- cancel_voucher
+
+
+ action_cancel_draft
-
-
- cancel_voucher
+
+
+ action_cancel_draft
-
-
-
-
- open_voucher
-
-
+
diff --git a/addons/account_voucher/wizard/account_voucher_open.py b/addons/account_voucher/wizard/account_voucher_open.py
index b286217e106..f33c00fd099 100644
--- a/addons/account_voucher/wizard/account_voucher_open.py
+++ b/addons/account_voucher/wizard/account_voucher_open.py
@@ -31,11 +31,11 @@ _types = {
'journal_pur_voucher':'Journal Purchase Voucher'
}
_states = {
- 'draft':'Draft',
- 'proforma':'Pro-forma',
- 'posted':'Posted',
- 'cancel':'Cancel'
- }
+ 'draft':'Draft',
+ 'proforma':'Pro-forma',
+ 'posted':'Posted',
+ 'cancel':'Cancel'
+}
class account_open_voucher(osv.osv_memory):
_name = "account.open.voucher"
@@ -43,18 +43,18 @@ class account_open_voucher(osv.osv_memory):
_columns = {
'type': fields.selection([('pay_voucher','Cash Payment Voucher'),
- ('bank_pay_voucher','Bank Payment Voucher'),
- ('rec_voucher','Cash Receipt Voucher'),
- ('bank_rec_voucher','Bank Receipt Voucher'),
- ('cont_voucher','Contra Voucher'),
- ('journal_sale_vou','Journal Sale Voucher'),
- ('journal_pur_voucher','Journal Purchase Voucher')],'Voucher Type', required=True),
+ ('bank_pay_voucher','Bank Payment Voucher'),
+ ('rec_voucher','Cash Receipt Voucher'),
+ ('bank_rec_voucher','Bank Receipt Voucher'),
+ ('cont_voucher','Contra Voucher'),
+ ('journal_sale_vou','Journal Sale Voucher'),
+ ('journal_pur_voucher','Journal Purchase Voucher')],'Voucher Type', required=True),
'state': fields.selection([('draft','Draft'),
- ('proforma','Pro-forma'),
- ('posted','Posted'),
- ('cancel','Cancel')], 'State', required=True),
+ ('proforma','Pro-forma'),
+ ('posted','Posted'),
+ ('cancel','Cancel')], 'State', required=True),
'period_ids': fields.many2many('account.period', 'voucher_period_rel', 'voucher_id', 'period_id', 'Periods'),
- }
+ }
def action_open_window(self, cr, uid, ids, context=None):
obj_period = self.pool.get('account.period')
@@ -83,4 +83,4 @@ class account_open_voucher(osv.osv_memory):
account_open_voucher()
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_voucher/wizard/account_voucher_open_view.xml b/addons/account_voucher/wizard/account_voucher_open_view.xml
index 11ab3d1ca8a..b6277e7615c 100644
--- a/addons/account_voucher/wizard/account_voucher_open_view.xml
+++ b/addons/account_voucher/wizard/account_voucher_open_view.xml
@@ -31,12 +31,12 @@
new
-
+
+
+
+
+
+
diff --git a/addons/account_voucher_payment/__init__.py b/addons/account_voucher_payment/__init__.py
new file mode 100755
index 00000000000..75d9f73de64
--- /dev/null
+++ b/addons/account_voucher_payment/__init__.py
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+import account_voucher_payment
+import account_voucher_unreconcile
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_voucher_payment/__terp__.py b/addons/account_voucher_payment/__terp__.py
new file mode 100755
index 00000000000..83864a543be
--- /dev/null
+++ b/addons/account_voucher_payment/__terp__.py
@@ -0,0 +1,48 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+{
+ "name" : "Invoice Payment/Receipt by Vouchers.",
+ "version" : "1.0",
+ "author" : 'Tiny & Axelor',
+ "description": """This module includes :
+ * It reconcile the invoice (supplier, customer) while paying through
+ Accounting Vouchers
+ """,
+ "category" : "Generic Modules/Indian Accounting",
+ "website" : "http://tinyerpindia.com",
+ "depends" : [
+ "base",
+ "account",
+ "account_voucher",
+ ],
+ "init_xml" : [
+ ],
+
+ "demo_xml" : [],
+ "update_xml" : [
+ "account_voucher_payment_view.xml",
+ "account_voucher_payment_wizard.xml"
+ ],
+ "active": False,
+ "installable": True,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_voucher_payment/account_voucher_payment.py b/addons/account_voucher_payment/account_voucher_payment.py
new file mode 100755
index 00000000000..3d08ad9e1f3
--- /dev/null
+++ b/addons/account_voucher_payment/account_voucher_payment.py
@@ -0,0 +1,290 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+from osv import fields, osv
+from tools.translate import _
+
+
+class account_move_line(osv.osv):
+ _inherit = "account.move.line"
+ _columns = {
+ 'voucher_invoice': fields.many2one('account.invoice', 'Invoice', readonly=True),
+ }
+account_move_line()
+
+class account_voucher(osv.osv):
+ _inherit = 'account.voucher'
+ _columns = {
+ 'voucher_line_ids':fields.one2many('account.voucher.line','voucher_id','Voucher Lines', readonly=False, states={'proforma':[('readonly',True)]}),
+ }
+
+ def action_move_line_create(self, cr, uid, ids, *args):
+
+ for inv in self.browse(cr, uid, ids):
+ if inv.move_id:
+ continue
+ company_currency = inv.company_id.currency_id.id
+
+ line_ids = self.read(cr, uid, [inv.id], ['payment_ids'])[0]['payment_ids']
+ ils = self.pool.get('account.voucher.line').read(cr, uid, line_ids)
+
+ iml = self._get_analytic_lines(cr, uid, inv.id)
+
+ diff_currency_p = inv.currency_id.id <> company_currency
+
+ total = 0
+ if inv.type in ('pay_voucher', 'journal_voucher', 'rec_voucher','cont_voucher','bank_pay_voucher','bank_rec_voucher','journal_sale_voucher','journal_pur_voucher'):
+ ref = inv.reference
+ else:
+ ref = self._convert_ref(cr, uid, inv.number)
+
+ date = inv.date
+ total_currency = 0
+ for i in iml:
+ partner_id=i['partner_id']
+ acc_id = i['account_id']
+ if inv.currency_id.id != company_currency:
+ i['currency_id'] = inv.currency_id.id
+ i['amount_currency'] = i['amount']
+ else:
+ i['amount_currency'] = False
+ i['currency_id'] = False
+ if inv.type in ('rec_voucher','bank_rec_voucher','journal_pur_voucher','journal_voucher'):
+ total += i['amount']
+ total_currency += i['amount_currency'] or i['amount']
+ i['amount'] = - i['amount']
+ else:
+ total -= i['amount']
+ total_currency -= i['amount_currency'] or i['amount']
+
+ name = inv['name'] or '/'
+ totlines = False
+
+ iml.append({
+ 'type': 'dest',
+ 'name': name,
+ 'amount': total or False,
+ 'account_id': acc_id,
+ 'amount_currency': diff_currency_p \
+ and total_currency or False,
+ 'currency_id': diff_currency_p \
+ and inv.currency_id.id or False,
+ 'ref': ref,
+ 'partner_id':partner_id or False,
+ })
+
+ date = inv.date
+ inv.amount=total
+
+ line = map(lambda x:(0,0,self.line_get_convert(cr, uid, x,date, context={})) ,iml)
+ an_journal_id=inv.journal_id.analytic_journal_id.id
+ journal_id = inv.journal_id.id
+
+ journal = self.pool.get('account.journal').browse(cr, uid, journal_id)
+ if journal.sequence_id:
+ name = self.pool.get('ir.sequence').get_id(cr, uid, journal.sequence_id.id)
+
+ move = {
+ 'name': name,
+ 'journal_id': journal_id,
+ 'voucher_type':inv.type,
+ 'narration' : inv.narration,
+ 'data':date
+ }
+
+ if inv.period_id:
+ move['period_id'] = inv.period_id.id
+ for i in line:
+ i[2]['period_id'] = inv.period_id.id
+ move_id = self.pool.get('account.move').create(cr, uid, move)
+ ref=move['name']
+ amount=0.0
+ #create the first line our self
+ move_line = {
+ 'name': inv.name,
+ 'voucher_invoice' : iml and iml[0]['invoice'] and iml[0]['invoice'].id or False,
+ 'debit': False,
+ 'credit':False,
+ 'account_id': inv.account_id.id or False,
+ 'move_id':move_id ,
+ 'journal_id':journal_id ,
+ 'period_id':inv.period_id.id,
+ 'partner_id': False,
+ 'ref': ref,
+ 'date': date
+ }
+ if inv.type in ('rec_voucher', 'bank_rec_voucher', 'journal_pur_voucher', 'journal_voucher'):
+ move_line['debit'] = inv.amount
+ else:
+ move_line['credit'] = inv.amount * (-1)
+ self.pool.get('account.move.line').create(cr, uid, move_line)
+ id_mapping_dict = {}
+ mline_ids = []
+ for line in inv.voucher_line_ids:
+ move_line = {
+ 'name':line.name,
+ 'voucher_invoice' : iml and iml[0]['invoice'] and iml[0]['invoice'].id or False,
+ 'debit':False,
+ 'credit':False,
+ 'move_id':move_id,
+ 'account_id':line.account_id.id or False,
+ 'journal_id':journal_id ,
+ 'period_id':inv.period_id.id,
+ 'partner_id':line.partner_id.id or False,
+ 'ref':ref,
+ 'date':date
+ }
+
+ if line.type == 'dr':
+ move_line['debit'] = line.amount or False
+ amount=line.amount
+ elif line.type == 'cr':
+ move_line['credit'] = line.amount or False
+ amount=line.amount * (-1)
+ ml_id=self.pool.get('account.move.line').create(cr, uid, move_line)
+ id_mapping_dict[line.id] = ml_id
+
+ total = 0.0
+ mline = self.pool.get('account.move.line')
+ if line.invoice_id.id:
+ invoice = self.pool.get('account.invoice').browse(cr, uid, line.invoice_id.id)
+ src_account_id = invoice.account_id.id
+ cr.execute('select id from account_move_line where move_id in ('+str(invoice.move_id.id)+')')
+ temp_ids = map(lambda x: x[0], cr.fetchall())
+ temp_ids.append(ml_id)
+ mlines = mline.browse(cr, uid, temp_ids)
+ for ml in mlines:
+ if ml.account_id.id==src_account_id:
+ mline_ids.append(ml.id)
+ total += (ml.debit or 0.0) - (ml.credit or 0.0)
+ #end if line.invoice_id.id:
+ if inv.narration:
+ line.name=inv.narration
+ else:
+ line.name=line.name
+
+ if line.account_analytic_id:
+ an_line = {
+ 'name':line.name,
+ 'date':date,
+ 'amount':amount,
+ 'account_id':line.account_analytic_id.id or False,
+ 'move_id':ml_id,
+ 'journal_id':an_journal_id ,
+ 'general_account_id':line.account_id.id,
+ 'ref':ref
+ }
+ self.pool.get('account.analytic.line').create(cr,uid,an_line)
+ if mline_ids:
+ self.pool.get('account.move.line').reconcile_partial(cr, uid, mline_ids, 'manual', context={})
+ self.write(cr, uid, [inv.id], {'move_id': move_id})
+ obj=self.pool.get('account.move').browse(cr, uid, move_id)
+
+ for line in obj.line_id :
+ cr.execute('insert into voucher_id (account_id,rel_account_move) values (%d, %d)',(int(ids[0]),int(line.id)))
+
+ return True
+
+account_voucher()
+
+class VoucherLine(osv.osv):
+ _inherit = 'account.voucher.line'
+
+ def default_get(self, cr, uid, fields, context={}):
+ data = super(VoucherLine, self).default_get(cr, uid, fields, context)
+ self.voucher_context = context
+ return data
+
+ _columns = {
+ 'invoice_id' : fields.many2one('account.invoice','Invoice'),
+ }
+
+
+ def move_line_get_item(self, cr, uid, line, context={}):
+ res = super(VoucherLine, self).move_line_get_item(cr, uid, line, context)
+ res['invoice'] = line.invoice_id or False
+ return res
+
+ def onchange_invoice_id(self, cr, uid, ids, invoice_id, context={}):
+ lines = []
+ if 'lines' in self.voucher_context:
+ lines = [x[2] for x in self.voucher_context['lines']]
+ if not invoice_id:
+ return {'value':{}}
+ else:
+ invoice_obj = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context)
+ residual = invoice_obj.residual
+ same_invoice_amounts = [x['amount'] for x in lines if x['invoice_id']==invoice_id]
+ residual -= sum(same_invoice_amounts)
+ return {'value' : {'amount':residual}}
+
+ def onchange_line_account(self, cr, uid, ids, account_id, type, type1):
+ if not account_id:
+ return {'value' : {'account_id' : False, 'type' : False ,'amount':False}}
+ obj = self.pool.get('account.account')
+ acc_id = False
+
+ if type1 in ('rec_voucher','bank_rec_voucher', 'journal_voucher'):
+ acc_id = obj.browse(cr, uid, account_id)
+ balance = acc_id.credit
+ type = 'cr'
+ elif type1 in ('pay_voucher','bank_pay_voucher','cont_voucher') :
+ acc_id = obj.browse(cr, uid, account_id)
+ balance = acc_id.debit
+ type = 'dr'
+ elif type1 in ('journal_sale_vou') :
+ acc_id = obj.browse(cr, uid, account_id)
+ balance = acc_id.credit
+ type = 'dr'
+ elif type1 in ('journal_pur_voucher') :
+ acc_id = obj.browse(cr, uid, account_id)
+ balance = acc_id.debit
+ type = 'cr'
+
+ return {
+ 'value' : {'type' : type, 'amount':balance}
+ }
+
+VoucherLine()
+
+
+
+class account_invoice(osv.osv):
+ _inherit = "account.invoice"
+
+ def action_cancel(self, cr, uid, ids, *args):
+
+ res = super(account_invoice, self).action_cancel(cr, uid, ids, *args)
+
+ invoices = self.read(cr, uid, ids, ['move_id'])
+ voucher_db = self.pool.get('account.voucher')
+ voucher_ids = voucher_db.search(cr, uid, [])
+ voucher_obj = voucher_db.browse(cr, uid, voucher_ids)
+ move_db = self.pool.get('account.move')
+ move_ids = move_db.search(cr, uid, [])
+ move_obj = move_db.browse(cr, uid, move_ids)
+
+ return res
+
+account_invoice()
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/account_voucher_payment/account_voucher_payment_view.xml b/addons/account_voucher_payment/account_voucher_payment_view.xml
new file mode 100755
index 00000000000..d87802e0e1a
--- /dev/null
+++ b/addons/account_voucher_payment/account_voucher_payment_view.xml
@@ -0,0 +1,69 @@
+
+
+
+
+
+
+ account.voucher.line.form.inherit
+ account.voucher.line
+ form
+
+
+
+
+
+
+
+
+
+ account.voucher.form.inherit
+ account.voucher
+ form
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ account.move.line.form.inherit
+ account.move.line
+ form
+
+
+
+
+
+
+
+
+
+ account.move.line.form.inherit
+ account.move.line
+ tree
+
+
+
+
+
+
+
+
+
+
diff --git a/addons/account_voucher_payment/account_voucher_payment_wizard.xml b/addons/account_voucher_payment/account_voucher_payment_wizard.xml
new file mode 100644
index 00000000000..0551b1bbcb5
--- /dev/null
+++ b/addons/account_voucher_payment/account_voucher_payment_wizard.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
diff --git a/addons/account_voucher_payment/account_voucher_unreconcile.py b/addons/account_voucher_payment/account_voucher_unreconcile.py
new file mode 100644
index 00000000000..a209fe13ba0
--- /dev/null
+++ b/addons/account_voucher_payment/account_voucher_unreconcile.py
@@ -0,0 +1,56 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+import wizard
+import pooler
+
+_info_form = '''
+
+
+
+
+
'''
+
+def _trans_unrec(self, cr, uid, data, context):
+ pool = pooler.get_pool(cr.dbname)
+ voucher = pool.get('account.voucher').browse(cr, uid, data.get('id'))
+ recs = None
+ for line in voucher.move_ids:
+ if line.reconcile_id:
+ recs = [line.reconcile_id.id]
+
+ for rec in recs:
+ pool.get('account.move.reconcile').unlink(cr, uid, rec)
+ return {}
+
+class wiz_unreconcile(wizard.interface):
+ states = {
+ 'init': {
+ 'actions': [],
+ 'result': {'type': 'form', 'arch': _info_form, 'fields': {}, 'state':[('end', 'Cancel'), ('unrec', 'Unreconcile')]}
+ },
+ 'unrec': {
+ 'actions': [_trans_unrec],
+ 'result': {'type': 'state', 'state':'end'}
+ }
+ }
+wiz_unreconcile('account.voucher.unreconcile')
+
diff --git a/addons/account_voucher_payment/i18n/account_voucher_payment.pot b/addons/account_voucher_payment/i18n/account_voucher_payment.pot
new file mode 100644
index 00000000000..4824e4d9d74
--- /dev/null
+++ b/addons/account_voucher_payment/i18n/account_voucher_payment.pot
@@ -0,0 +1,82 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_voucher_payment
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.0\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-05-13 20:11:36+0000\n"
+"PO-Revision-Date: 2009-05-13 20:11:36+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_voucher_payment
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation transactions"
+msgstr ""
+
+#. module: account_voucher_payment
+#: model:ir.module.module,description:account_voucher_payment.module_name_translation
+msgid "This module includes :\n"
+" * It reconcile the invoice (supplier, customer) while paying through \n"
+" Accounting Vouchers\n"
+" "
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable"
+msgstr ""
+
+#. module: account_voucher_payment
+#: view:account.voucher:0
+#: field:account.voucher,voucher_line_ids:0
+msgid "Voucher Lines"
+msgstr ""
+
+#. module: account_voucher_payment
+#: model:ir.module.module,shortdesc:account_voucher_payment.module_name_translation
+msgid "Invoice Payment/Receipt by Vouchers."
+msgstr ""
+
+#. module: account_voucher_payment
+#: model:ir.actions.wizard,name:account_voucher_payment.wizard_unreconcile_voucher
+msgid "Unreconcile entries"
+msgstr ""
+
+#. module: account_voucher_payment
+#: field:account.move.line,voucher_invoice:0
+#: field:account.voucher.line,invoice_id:0
+msgid "Invoice"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: account_voucher_payment
+#: field:account.voucher,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,unrec:0
+msgid "Unreconcile"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation"
+msgstr ""
+
diff --git a/addons/account_voucher_payment/i18n/ca.po b/addons/account_voucher_payment/i18n/ca.po
new file mode 100644
index 00000000000..daf15f0ea67
--- /dev/null
+++ b/addons/account_voucher_payment/i18n/ca.po
@@ -0,0 +1,94 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_voucher_payment
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.0\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-05-13 20:11+0000\n"
+"PO-Revision-Date: 2010-01-26 11:00+0000\n"
+"Last-Translator: Jordi Esteve (www.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-05-21 03:47+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: account_voucher_payment
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML invàlid per a la definició de la vista!"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation transactions"
+msgstr "Trenca conciliació de transaccions"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,description:account_voucher_payment.module_name_translation
+msgid ""
+"This module includes :\n"
+" * It reconcile the invoice (supplier, customer) while paying through \n"
+" Accounting Vouchers\n"
+" "
+msgstr ""
+"Aquest mòdul inclou:\n"
+" * Concilia factures de proveïdors i clients mentre són pagades "
+"mitjançant \n"
+" comprovants comptables\n"
+" "
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid ""
+"If you unreconciliate transactions, you must also verify all the actions "
+"that are linked to those transactions because they will not be disable"
+msgstr ""
+"Si trenqueu conciliació de transaccions, també heu de comprovar totes les "
+"accions que estan relacionades amb aquestes transaccions ja que no seran "
+"eliminades"
+
+#. module: account_voucher_payment
+#: view:account.voucher:0
+#: field:account.voucher,voucher_line_ids:0
+msgid "Voucher Lines"
+msgstr "Línies de comprovant"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,shortdesc:account_voucher_payment.module_name_translation
+msgid "Invoice Payment/Receipt by Vouchers."
+msgstr "Pagaments i rebuts de factures per comprovant."
+
+#. module: account_voucher_payment
+#: model:ir.actions.wizard,name:account_voucher_payment.wizard_unreconcile_voucher
+msgid "Unreconcile entries"
+msgstr "Trenca conciliació entrades"
+
+#. module: account_voucher_payment
+#: field:account.move.line,voucher_invoice:0
+#: field:account.voucher.line,invoice_id:0
+msgid "Invoice"
+msgstr "Factura"
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,end:0
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#. module: account_voucher_payment
+#: field:account.voucher,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,unrec:0
+msgid "Unreconcile"
+msgstr "Trenca conciliació"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation"
+msgstr "Trenca conciliació"
diff --git a/addons/account_voucher_payment/i18n/ca_ES.po b/addons/account_voucher_payment/i18n/ca_ES.po
new file mode 100644
index 00000000000..e168daa59a1
--- /dev/null
+++ b/addons/account_voucher_payment/i18n/ca_ES.po
@@ -0,0 +1,81 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_voucher_payment
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.0\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-05-13 19:47:47+0000\n"
+"PO-Revision-Date: 2009-05-16 18:57+0100\n"
+"Last-Translator: Jordi Esteve \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+
+#. module: account_voucher_payment
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML invàlid per a la definició de la vista!"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation transactions"
+msgstr "Trenca conciliació de transaccions"
+
+#. module: account_voucher_payment
+#: field:account.move.line,voucher_invoice:0
+#: field:account.voucher.line,invoice_id:0
+msgid "Invoice"
+msgstr "Factura"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable"
+msgstr "Si trenqueu conciliació de transaccions, també heu de comprovar totes les accions que estan relacionades amb aquestes transaccions ja que no seran eliminades"
+
+#. module: account_voucher_payment
+#: view:account.voucher:0
+#: field:account.voucher,voucher_line_ids:0
+msgid "Voucher Lines"
+msgstr "Línies de comprovant"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,shortdesc:account_voucher_payment.module_name_translation
+msgid "Invoice Payment/Receipt by Vouchers."
+msgstr "Pagaments i rebuts de factures per comprovant."
+
+#. module: account_voucher_payment
+#: model:ir.actions.wizard,name:account_voucher_payment.wizard_unreconcile_voucher
+msgid "Unreconcile entries"
+msgstr "Trenca conciliació entrades"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,description:account_voucher_payment.module_name_translation
+msgid ""
+"This module includes :\n"
+" * It reconcile the invoice (supplier, customer) while paying through \n"
+" Accounting Vouchers\n"
+" "
+msgstr ""
+"Aquest mòdul inclou:\n"
+" * Concilia factures de proveïdors i clients mentre són pagades mitjançant \n"
+" comprovants comptables\n"
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,end:0
+msgid "Cancel"
+msgstr "Cancel·la"
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,unrec:0
+msgid "Unreconcile"
+msgstr "Trenca conciliació"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation"
+msgstr "Trenca conciliació"
+
diff --git a/addons/account_voucher_payment/i18n/es.po b/addons/account_voucher_payment/i18n/es.po
new file mode 100644
index 00000000000..a3df62eaec2
--- /dev/null
+++ b/addons/account_voucher_payment/i18n/es.po
@@ -0,0 +1,92 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_voucher_payment
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.0\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-05-13 20:11+0000\n"
+"PO-Revision-Date: 2010-02-19 05:54+0000\n"
+"Last-Translator: Luis Alejandro Rangel Sánchez \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-21 03:47+0000\n"
+"X-Generator: Launchpad (build Unknown)\n"
+
+#. module: account_voucher_payment
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation transactions"
+msgstr "Romper conciliación de transacciones"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,description:account_voucher_payment.module_name_translation
+msgid ""
+"This module includes :\n"
+" * It reconcile the invoice (supplier, customer) while paying through \n"
+" Accounting Vouchers\n"
+" "
+msgstr ""
+"Este módulo incluye :\n"
+" * Concilia facturas de proveedores y clientes mientras son pagadas "
+"mediante \n"
+" comprobantes contables\n"
+" "
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid ""
+"If you unreconciliate transactions, you must also verify all the actions "
+"that are linked to those transactions because they will not be disable"
+msgstr ""
+"Si rompe conciliación de transacciones, también debe verificar todas las "
+"acciones que están enlazadas a estas transacciones porque no serán eliminadas"
+
+#. module: account_voucher_payment
+#: view:account.voucher:0
+#: field:account.voucher,voucher_line_ids:0
+msgid "Voucher Lines"
+msgstr "Líneas de comprobante"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,shortdesc:account_voucher_payment.module_name_translation
+msgid "Invoice Payment/Receipt by Vouchers."
+msgstr "Pagos y recibos de facturas por comprobantes."
+
+#. module: account_voucher_payment
+#: model:ir.actions.wizard,name:account_voucher_payment.wizard_unreconcile_voucher
+msgid "Unreconcile entries"
+msgstr "Romper concilación entradas"
+
+#. module: account_voucher_payment
+#: field:account.move.line,voucher_invoice:0
+#: field:account.voucher.line,invoice_id:0
+msgid "Invoice"
+msgstr "Factura"
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,end:0
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: account_voucher_payment
+#: field:account.voucher,partner_id:0
+msgid "Partner"
+msgstr "Compañero"
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,unrec:0
+msgid "Unreconcile"
+msgstr "Romper conciliación"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation"
+msgstr "Romper conciliación"
diff --git a/addons/account_voucher_payment/i18n/es_ES.po b/addons/account_voucher_payment/i18n/es_ES.po
new file mode 100644
index 00000000000..edeedde1f12
--- /dev/null
+++ b/addons/account_voucher_payment/i18n/es_ES.po
@@ -0,0 +1,81 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_voucher_payment
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.0\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-05-13 19:47:47+0000\n"
+"PO-Revision-Date: 2009-05-16 18:57+0100\n"
+"Last-Translator: Jordi Esteve \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+
+#. module: account_voucher_payment
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "¡XML inválido para la definición de la vista!"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation transactions"
+msgstr "Romper conciliación de transacciones"
+
+#. module: account_voucher_payment
+#: field:account.move.line,voucher_invoice:0
+#: field:account.voucher.line,invoice_id:0
+msgid "Invoice"
+msgstr "Factura"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable"
+msgstr "Si rompe conciliación de transacciones, también debe verificar todas las acciones que están enlazadas a estas transacciones porque no serán eliminadas"
+
+#. module: account_voucher_payment
+#: view:account.voucher:0
+#: field:account.voucher,voucher_line_ids:0
+msgid "Voucher Lines"
+msgstr "Líneas de comprobante"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,shortdesc:account_voucher_payment.module_name_translation
+msgid "Invoice Payment/Receipt by Vouchers."
+msgstr "Pagos y recibos de facturas por comprobantes."
+
+#. module: account_voucher_payment
+#: model:ir.actions.wizard,name:account_voucher_payment.wizard_unreconcile_voucher
+msgid "Unreconcile entries"
+msgstr "Romper concilación entradas"
+
+#. module: account_voucher_payment
+#: model:ir.module.module,description:account_voucher_payment.module_name_translation
+msgid ""
+"This module includes :\n"
+" * It reconcile the invoice (supplier, customer) while paying through \n"
+" Accounting Vouchers\n"
+" "
+msgstr ""
+"Este módulo incluye :\n"
+" * Concilia facturas de proveedores y clientes mientras son pagadas mediante \n"
+" comprobantes contables\n"
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,end:0
+msgid "Cancel"
+msgstr "Cancelar"
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,unrec:0
+msgid "Unreconcile"
+msgstr "Romper conciliación"
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation"
+msgstr "Romper conciliación"
+
diff --git a/addons/account_voucher_payment/i18n/fr_BE.po b/addons/account_voucher_payment/i18n/fr_BE.po
new file mode 100644
index 00000000000..65e082f1a34
--- /dev/null
+++ b/addons/account_voucher_payment/i18n/fr_BE.po
@@ -0,0 +1,77 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * account_voucher_payment
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-11-26 06:54:11+0000\n"
+"PO-Revision-Date: 2009-11-26 06:54:11+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_voucher_payment
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation transactions"
+msgstr ""
+
+#. module: account_voucher_payment
+#: field:account.move.line,voucher_invoice:0
+#: field:account.voucher.line,invoice_id:0
+msgid "Invoice"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "If you unreconciliate transactions, you must also verify all the actions that are linked to those transactions because they will not be disable"
+msgstr ""
+
+#. module: account_voucher_payment
+#: view:account.voucher:0
+#: field:account.voucher,voucher_line_ids:0
+msgid "Voucher Lines"
+msgstr ""
+
+#. module: account_voucher_payment
+#: model:ir.module.module,shortdesc:account_voucher_payment.module_meta_information
+msgid "Invoice Payment/Receipt by Vouchers."
+msgstr ""
+
+#. module: account_voucher_payment
+#: model:ir.actions.wizard,name:account_voucher_payment.wizard_unreconcile_voucher
+msgid "Unreconcile entries"
+msgstr ""
+
+#. module: account_voucher_payment
+#: model:ir.module.module,description:account_voucher_payment.module_meta_information
+msgid "This module includes :\n"
+" * It reconcile the invoice (supplier, customer) while paying through \n"
+" Accounting Vouchers\n"
+" "
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_button:account.voucher.unreconcile,init,unrec:0
+msgid "Unreconcile"
+msgstr ""
+
+#. module: account_voucher_payment
+#: wizard_view:account.voucher.unreconcile,init:0
+msgid "Unreconciliation"
+msgstr ""
+
diff --git a/addons/analytic_journal_billing_rate/__openerp__.py b/addons/analytic_journal_billing_rate/__openerp__.py
index 0049d03f3c5..f77f5ad625c 100644
--- a/addons/analytic_journal_billing_rate/__openerp__.py
+++ b/addons/analytic_journal_billing_rate/__openerp__.py
@@ -25,7 +25,7 @@
'category': 'Generic Modules/Others',
'description': """
- This module allows you to define what is the default invoicing rate for a specific journal on a given account. This is mostly used when a user encode his timesheet: the values are retrieved and the fields are auto-filled... but the possibility to change these values is still available.
+ This module allows you to define what is the default invoicing rate for a specific journal on a given account. This is mostly used when a user encodes his timesheet: the values are retrieved and the fields are auto-filled... but the possibility to change these values is still available.
Obviously if no data has been recorded for the current account, the default value is given as usual by the account data so that this module is perfectly compatible with older configurations.
diff --git a/addons/analytic_user_function/__openerp__.py b/addons/analytic_user_function/__openerp__.py
index a6149cabb7c..072d6cfc4f9 100644
--- a/addons/analytic_user_function/__openerp__.py
+++ b/addons/analytic_user_function/__openerp__.py
@@ -26,7 +26,7 @@
'category': 'Generic Modules/Others',
'description': """
- This module allows you to define what is the default function of a specific user on a given account. This is mostly used when a user encode his timesheet: the values are retrieved and the fields are auto-filled... but the possibility to change these values is still available.
+ This module allows you to define what is the default function of a specific user on a given account. This is mostly used when a user encodes his timesheet: the values are retrieved and the fields are auto-filled... but the possibility to change these values is still available.
Obviously if no data has been recorded for the current account, the default value is given as usual by the employee data so that this module is perfectly compatible with older configurations.
diff --git a/addons/base_calendar/__openerp__.py b/addons/base_calendar/__openerp__.py
index de44f6e0333..2c6c8bf3f9b 100644
--- a/addons/base_calendar/__openerp__.py
+++ b/addons/base_calendar/__openerp__.py
@@ -20,10 +20,11 @@
##############################################################################
{
- "name" : "Basic Calendar Functionality",
- "version" : "1.0",
- "depends" : ["base"],
- 'description': """Full featured calendar system that support:
+ "name" : "Basic Calendar Functionality",
+ "version" : "1.0",
+ "depends" : ["base"],
+ 'description': """Full featured calendar system that supports:
+
- Alerts (create requests)
- Recurring events (*)
- Invitations to others people""",
diff --git a/addons/base_calendar/base_calendar.py b/addons/base_calendar/base_calendar.py
index 4c3940301b3..bf93c9c775d 100644
--- a/addons/base_calendar/base_calendar.py
+++ b/addons/base_calendar/base_calendar.py
@@ -1660,9 +1660,10 @@ class ir_model(osv.osv):
@param ids: List of IR Model’s IDs.
@param context: A standard dictionary for contextual values
"""
+ new_ids = isinstance(ids, (str, int, long)) and [ids] or ids
if not context:
context = {}
- data = super(ir_model, self).read(cr, uid, ids, fields=fields, \
+ data = super(ir_model, self).read(cr, uid, new_ids, fields=fields, \
context=context, load=load)
if data:
for val in data:
diff --git a/addons/base_calendar/base_calendar_view.xml b/addons/base_calendar/base_calendar_view.xml
index d31266c9090..a5afddc9823 100644
--- a/addons/base_calendar/base_calendar_view.xml
+++ b/addons/base_calendar/base_calendar_view.xml
@@ -1,7 +1,7 @@
-
+
@@ -24,7 +24,7 @@
+ string="Contact" />
+
+
+
+
+
+
+
+
+
+
@@ -165,14 +186,15 @@
tree20
-
-
+
+
-
+
+
@@ -194,6 +216,7 @@
+
@@ -268,7 +291,7 @@
tree
-
+
@@ -332,7 +355,7 @@
- Leaves Type
+ Leave Typeir.actions.act_windowhr.holidays.statusform
@@ -340,7 +363,7 @@
-
diff --git a/addons/hr_holidays/report/available_holidays.py b/addons/hr_holidays/report/available_holidays.py
index e9832c7e1e4..5949e527f6a 100644
--- a/addons/hr_holidays/report/available_holidays.py
+++ b/addons/hr_holidays/report/available_holidays.py
@@ -31,7 +31,7 @@ class available_holidays_report(osv.osv):
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'),
('05','May'), ('06','June'), ('07','July'), ('08','August'), ('09','September'),
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
- 'employee_id': fields.many2one ('hr.employee', 'Employee', readonly=True),
+ 'employee_id': fields.many2one ('hr.employee', "Employee's Name", readonly=True),
'category_id' : fields.many2one('hr.employee.category', "Category's Name", readonly=True),
'holiday_status_id': fields.many2one('hr.holidays.status', 'Leave Type', readonly=True),
'max_leave': fields.float('Allocated Leaves', readonly=True),
diff --git a/addons/hr_holidays/report/available_holidays_view.xml b/addons/hr_holidays/report/available_holidays_view.xml
index ef40b42331c..34f14271758 100644
--- a/addons/hr_holidays/report/available_holidays_view.xml
+++ b/addons/hr_holidays/report/available_holidays_view.xml
@@ -10,9 +10,9 @@
tree
-
-
-
+
+
+
@@ -48,6 +48,13 @@
+
+
+
@@ -61,13 +68,21 @@
domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
help="Leaves during last 7 days"/>
-
-
+
+
+
+
+
+
+
+
+
+
-
-
@@ -88,9 +103,8 @@
available.holidays.reportformtree,graph
- {'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[], "search_default_user_id": uid}
+ {'search_default_month':1,'search_default_User':1,'group_by':[], "search_default_user_id": uid}
-
diff --git a/addons/hr_holidays/report/hr_holidays_report_view.xml b/addons/hr_holidays/report/hr_holidays_report_view.xml
index 551259fae59..b6afe32fb25 100644
--- a/addons/hr_holidays/report/hr_holidays_report_view.xml
+++ b/addons/hr_holidays/report/hr_holidays_report_view.xml
@@ -1,6 +1,7 @@
-
+
+
hr.holidays.report.treehr.holidays.report
@@ -8,8 +9,8 @@
-
-
+
+
@@ -44,6 +45,13 @@
+
+
+
@@ -70,36 +78,12 @@
domain="[('state','=','validate')]"
help = "Pending Leaves"/>
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -110,6 +94,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -119,7 +122,7 @@
hr.holidays.reportformtree,graph
- {"search_default_user_id": uid, 'search_default_month':1,'search_default_Employee':1,'group_by_no_leaf':1,'group_by':[]}
+ {"search_default_user_id": uid, 'search_default_month':1,'search_default_Employee':1,'group_by':[]}
@@ -150,5 +153,6 @@
-
+
+
diff --git a/addons/hr_holidays/test/test_hr_holiday.yml b/addons/hr_holidays/test/test_hr_holiday.yml
new file mode 100644
index 00000000000..960d12f23bd
--- /dev/null
+++ b/addons/hr_holidays/test/test_hr_holiday.yml
@@ -0,0 +1,112 @@
+- |
+ In order to test the hr_holiday in OpenERP, I will Manage leaves for employee,
+ Leave requests.
+- |
+ For that First I create new user "user1" to make leave request.
+-
+ !record {model: res.users, id: res_users_user0}:
+ company_id: base.main_company
+ context_lang: en_US
+ groups_id:
+ - base.group_user
+ - hr.group_hr_manager
+ - hr.group_hr_user
+ login: user1
+ name: user1
+ password: user1
+- |
+ Now, I create a new employee “Mark Johnshon” as Manager to validate employee leave.
+-
+ !record {model: hr.employee, id: hr_employee_employee0}:
+ address_home_id: base.res_partner_address_1
+ company_id: base.main_company
+ gender: male
+ name: Mark Johnson
+ user_id: base.user_root
+- |
+ create another employee "Brijesh Patel" as "user1" who make leave request.
+-
+ !record {model: hr.employee, id: hr_employee_brijeshpatel0}:
+ address_home_id: base.res_partner_address_8
+ name: Brijesh Patel
+ parent_id: 'hr_employee_employee0'
+ user_id: 'res_users_user0'
+- |
+ Given that I have Leave type for employee.
+-
+ !record {model: hr.holidays.status, id: hr_holidays_status_fullleave0}:
+ color_name: red
+ name: Full Leave.
+ limit: 1
+
+- |
+ After that I allocate leave request for employee "Brijesh Patel".
+-
+ !record {model: hr.holidays, id: hr_holidays_allocateleaveforuser0}:
+ allocation_type: employee
+ employee_id: 'hr_employee_brijeshpatel0'
+ holiday_status_id: hr_holidays_status_fullleave0
+ name: Allocate leave for user1
+ number_of_days_temp: 12.0
+ date_from: '05/20/2010 13:59:00'
+ date_to: '05/22/2010 13:59:00'
+ type: add
+- |
+ I click on "Confirm" button to confirm allocate leave for employee.
+-
+ !workflow {model: hr.holidays, action: confirm, ref: hr_holidays_allocateleaveforuser0}
+
+- |
+ I click on "Validate" button to validate leave for employee.
+-
+ !workflow {model: hr.holidays, action: validate, ref: hr_holidays_allocateleaveforuser0}
+
+- |
+ Now employee "Brijesh Patel" want to leave. so, I connect as user1 which is username of this employee and want to make leave request.
+-
+ !record {model: hr.holidays, id: hr_holidays_iwanttoleaveforgotohospital0}:
+ allocation_type: employee
+ date_from: '2010-05-20 11:48:00'
+ date_to: '2010-05-21 11:48:00'
+ employee_id: 'hr_employee_brijeshpatel0'
+ holiday_status_id: 'hr_holidays_status_fullleave0'
+ name: I want to leave for go to hospital
+ notes: I want to leave for go to hospital. so please accept my leave.
+ number_of_days_temp: 2.0
+ type: remove
+ user_id: 'res_users_user0'
+- |
+ I check that Leave Request is on "Draft" state.
+-
+ !assert {model: hr.holidays, id: hr_holidays_iwanttoleaveforgotohospital0}:
+ - state == 'draft'
+
+- |
+ Now I confirm my leave Request by click on "Confirm" button.
+-
+ !workflow {model: hr.holidays, action: confirm, ref: hr_holidays_iwanttoleaveforgotohospital0}
+
+- |
+ Now I connect as Admin user and Open Leave request of "Brijesh Patel".
+ and "validate" it by click on "validate" button.
+-
+ !workflow {model: hr.holidays, action: validate, ref: hr_holidays_iwanttoleaveforgotohospital0}
+
+- |
+ I check that "Leave Manager" field is automaticly filled by the user who validate the leave'.
+-
+ !python {model: hr.holidays}: |
+ ids2 = self.pool.get('hr.employee').search(cr, uid, [('user_id','=', uid)])
+ obj = self.browse(cr, uid, ref('hr_holidays_iwanttoleaveforgotohospital0'))
+ assert ids2[0] == obj.manager_id.id
+
+- |
+ I check that Leave request state is "Validated".
+-
+ !assert {model: hr.holidays, id: hr_holidays_iwanttoleaveforgotohospital0}:
+ - state == "validate"
+
+- |
+ I can also see Summary of Employee's holiday by using 'Print Summary of Employee's Holidays'.
+ This will allow you to choose if you want to print either the Confirmed & Validated holidays or only the Validated ones.
+
\ No newline at end of file
diff --git a/addons/hr_holidays/wizard/hr_holidays_summary_employees_view.xml b/addons/hr_holidays/wizard/hr_holidays_summary_employees_view.xml
index ce87b1172b1..980ad38c855 100644
--- a/addons/hr_holidays/wizard/hr_holidays_summary_employees_view.xml
+++ b/addons/hr_holidays/wizard/hr_holidays_summary_employees_view.xml
@@ -18,7 +18,7 @@
-
+
diff --git a/addons/hr_recruitment/__openerp__.py b/addons/hr_recruitment/__openerp__.py
index 1e0af949825..0d10ba0f248 100644
--- a/addons/hr_recruitment/__openerp__.py
+++ b/addons/hr_recruitment/__openerp__.py
@@ -25,7 +25,7 @@
'category': 'Generic Modules/Human Resources',
'description': """
Manages job positions and the recruitement process. It's integrated with the
-survey module to allows you to define interview for different jobs.
+survey module to allow you to define interview for different jobs.
This module is integrated with the mail gateway to automatically tracks email
sent to jobs@YOURCOMPANY.com. It's also integrated with the document management
@@ -49,8 +49,9 @@ system to store and search in your CV base.
'hr_recruitment_data.xml'
],
'demo_xml': [
- 'hr_recruitment_demo.xml'
+ 'hr_recruitment_demo.xml',
],
+ 'test':['test/test_hr_recruitment.yml'],
'installable': True,
'active': False,
}
diff --git a/addons/hr_recruitment/hr_recruitment_view.xml b/addons/hr_recruitment/hr_recruitment_view.xml
index a3bf7a08ab9..ab383748fe0 100644
--- a/addons/hr_recruitment/hr_recruitment_view.xml
+++ b/addons/hr_recruitment/hr_recruitment_view.xml
@@ -79,7 +79,7 @@
-
+
diff --git a/addons/hr_recruitment/report/hr_recruitment_report_view.xml b/addons/hr_recruitment/report/hr_recruitment_report_view.xml
index 2315e707911..5913684eb80 100644
--- a/addons/hr_recruitment/report/hr_recruitment_report_view.xml
+++ b/addons/hr_recruitment/report/hr_recruitment_report_view.xml
@@ -92,8 +92,26 @@
domain="[('user_id','=',False)]"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
diff --git a/addons/hr_recruitment/test/test_hr_recruitment.yml b/addons/hr_recruitment/test/test_hr_recruitment.yml
new file mode 100644
index 00000000000..bf5da78c69a
--- /dev/null
+++ b/addons/hr_recruitment/test/test_hr_recruitment.yml
@@ -0,0 +1,115 @@
+- |
+ In order to test hr_recruitment module for OpenERP object, I create applicants form and Manages job positions and the recruitement process.
+- |
+ I create job possition for employee to manage job position.
+-
+ |
+ First I create Department "R & D" in Department form for which I make recruitment.
+-
+ !record {model: hr.department, id: hr_department_rd0}:
+ manager_id: base.user_root
+ name: 'R & D '
+
+- |
+ Now I will create new Job Position. I will check successfull creation of new Job Position by adding the information.
+-
+ !record {model: hr.job, id: hr_job_jea0}:
+ department_id: 'hr_department_rd0'
+ description: 'Position of Junier Application Engineer '
+ expected_employees: 5
+ name: 'JEA '
+- |
+ Given that I have stage "Initial Jobs Demand".
+-
+ !record {model: hr.recruitment.stage, id: hr_recrutiment_stage_first0}:
+ name: 'Initial Jobs Demand'
+ sequence: 1
+- |
+ I create applicants for "Fresher" and specify job information for that applicant.
+-
+ !record {model: hr.applicant, id: hr_applicant_fresher0}:
+ availability: 0.0
+ department_id: hr.dep_it
+ name: Fresher
+ partner_address_id: base.res_partner_address_tang
+ partner_id: base.res_partner_asus
+ partner_name: Jose
+ partner_phone: '999666735'
+ response: 0.0
+ salary_expected: 0.0
+ salary_proposed: 0.0
+ stage_id: crm.stage_lead3
+ type_id: hr_recruitment.type_job2
+ stage_id: hr_recrutiment_stage_first0
+
+- |
+ I check that applicant is on "draft" state.
+-
+ !assert {model: hr.applicant, id: hr_applicant_fresher0}:
+ - state == 'draft'
+
+- |
+ I start progress by click on "In Progress" button.
+-
+ !python {model: hr.applicant}: |
+ self.case_open(cr, uid, [ref("hr_applicant_fresher0")], {"active_ids": [ref("hr_recruitment.menu_crm_case_categ0_act_job")],
+ })
+
+- |
+ Given that I have case category "Employee".
+-
+ !record {model: crm.case.categ, id: crm_case_categ_employee0}:
+ name: 'Employee'
+
+- |
+ I make phonecall for this applicant by click on "Schedule a Phone Call" button.
+-
+ !record {model: hr.recruitment.job2phonecall, id: hr_recruitment_forinterview0}:
+ user_id: base.user_root
+ deadline: '05/28/2010 11:51:00'
+ note: 'For interview.'
+ category_id: 'crm_case_categ_employee0'
+
+- |
+ I click on "Schedule phonecall" button of this wizard.
+-
+ !python {model: hr.recruitment.job2phonecall}: |
+ self.make_phonecall(cr, uid, [ref('hr_recruitment_forinterview0')], {'active_ids': [ref('hr_applicant_fresher0')]})
+
+- |
+ I schedule meeting for interview of this applicant by click on "Schdule Meeting" button.
+-
+ !python {model: hr.applicant}: |
+ self.action_makeMeeting(cr, uid, [ref('hr_recruitment_forinterview0')])
+- |
+ I can see that Meeting's calendar view is shown.
+ then I click on the date on which I want schedule meeting.
+ I fill proper data for that meeting and save it.
+-
+ !record {model: crm.meeting, id: crm_meeting_fresher0}:
+ alarm_id: base_calendar.alarm1
+ count: 0.0
+ date: '2010-05-27 00:00:00'
+ date_deadline: '2010-05-27 08:00:00'
+ day: 0.0
+ duration: 8.0
+ name: Fresher
+ opportunity_id: crm.crm_case_construstazunits0
+ partner_address_id: base.res_partner_address_tang
+ partner_id: base.res_partner_asus
+ recurrent_uid: 0.0
+ rrule_type: none
+ state: open
+ user_id: base.user_root
+
+- |
+ After Meeting of this applicant , I hired employee by click on "Hired" button of this form.
+-
+ !python {model: hr.applicant}: |
+ self.case_close(cr, uid, [ref('hr_applicant_fresher0')])
+- |
+ I check that applicant state is "done".
+-
+ !assert {model: hr.applicant, id: hr_applicant_fresher0}:
+ - state == 'done'
+
\ No newline at end of file
diff --git a/addons/hr_timesheet/__openerp__.py b/addons/hr_timesheet/__openerp__.py
index 4bd6d3525fc..312f17b44b3 100644
--- a/addons/hr_timesheet/__openerp__.py
+++ b/addons/hr_timesheet/__openerp__.py
@@ -25,9 +25,9 @@
'version': '1.0',
'category': 'Generic Modules/Human Resources',
'description': """
-This module implement a timesheet system. Each employee can encode and
+This module implements a timesheet system. Each employee can encode and
track their time spent on the different projects. A project is an
-analytic account and the time spent on a project generate costs on
+analytic account and the time spent on a project generates costs on
the analytic account.
Lots of reporting on time and employee tracking are provided.
diff --git a/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml b/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml
index 75c54357a0a..cfe61e91dc5 100644
--- a/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml
+++ b/addons/hr_timesheet_invoice/report/hr_timesheet_invoice_report_view.xml
@@ -69,6 +69,17 @@
+
+
+
+
+
+
+
+
+
+
+
@@ -450,7 +461,7 @@
-
+
diff --git a/addons/hr_timesheet_sheet/__openerp__.py b/addons/hr_timesheet_sheet/__openerp__.py
index 44058d048cb..997b9f74898 100644
--- a/addons/hr_timesheet_sheet/__openerp__.py
+++ b/addons/hr_timesheet_sheet/__openerp__.py
@@ -25,21 +25,21 @@
'version': '1.0',
'category': 'Generic Modules/Human Resources',
'description': """
-This module help you easily encode and validate timesheet and attendances
+This module helps you to easily encode and validate timesheet and attendances
within the same view. The upper part of the view is for attendances and
track (sign in/sign out) events. The lower part is for timesheet.
-Others tabs contains statistics views to help you analyse your
+Other tabs contains statistics views to help you analyse your
time or the time of your team:
* Time spent by day (with attendances)
* Time spent by project
-This module also implement a complete timesheet validation process:
+This module also implements a complete timesheet validation process:
* Draft sheet
* Confirmation at the end of the period by the employee
* Validation by the project manager
-The validation can be configured in te company:
+The validation can be configured in the company:
* Period size (day, week, month, year)
* Maximal difference between timesheet and attendances
""",
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
index f4bd524f150..61eaf4cc843 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
@@ -205,7 +205,7 @@
-
+
diff --git a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml
index 517937848ff..c7cf7b0495e 100644
--- a/addons/hr_timesheet_sheet/report/timesheet_report_view.xml
+++ b/addons/hr_timesheet_sheet/report/timesheet_report_view.xml
@@ -74,9 +74,26 @@
domain="[('user_id','=',False)]"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
@@ -94,24 +111,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/addons/idea/__init__.py b/addons/idea/__init__.py
index 0cd3b1c090c..4c285a7a0a7 100644
--- a/addons/idea/__init__.py
+++ b/addons/idea/__init__.py
@@ -21,6 +21,5 @@
import idea
import wizard
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/idea/__openerp__.py b/addons/idea/__openerp__.py
index 0db86965870..f10a00c75e2 100644
--- a/addons/idea/__openerp__.py
+++ b/addons/idea/__openerp__.py
@@ -27,8 +27,8 @@
'description': """
This module allows your user to easily and efficiently participate in the innovation of the enterprise.
It allows everybody to express ideas about different subjects.
- Then, others users can comment these ideas and vote for particular ideas.
- Each idea as a score based on the different votes.
+ Then, other users can comment on these ideas and vote for particular ideas.
+ Each idea has a score based on the different votes.
The managers can obtain an easy view on best ideas from all the users.
Once installed, check the menu 'Ideas' in the 'Tools' main menu.""",
'author': 'Tiny',
diff --git a/addons/l10n_be/__openerp__.py b/addons/l10n_be/__openerp__.py
index c8fdb530a45..e5d8e1255a6 100644
--- a/addons/l10n_be/__openerp__.py
+++ b/addons/l10n_be/__openerp__.py
@@ -26,7 +26,7 @@
After Installing this module,The Configuration wizard for accounting is launched.
* We have the account templates which can be helpful to generate Charts of Accounts.
- * On that particular wizard,You will be asked to pass the name of the company,the chart template to follow,the no. of digits to generate the code for your account and Bank account,currency to create Journals.
+ * On that particular wizard,You will be asked to pass the name of the company,the chart template to follow,the no. of digits to generate the code for your account and Bank account,currency to create Journals.
Thus,the pure copy of Chart Template is generated.
* This is the same wizard that runs from Financial Management/Configuration/Financial Accounting/Financial Accounts/Generate Chart of Accounts from a Chart Template.
diff --git a/addons/l10n_ch/__openerp__.py b/addons/l10n_ch/__openerp__.py
index ba10ab52212..9d0b2852abd 100644
--- a/addons/l10n_ch/__openerp__.py
+++ b/addons/l10n_ch/__openerp__.py
@@ -34,7 +34,7 @@
"name" : "Switzerland localisation corrected by Camptocamp",
"description" : """
Swiss localisation :
- - DTA generation for a lot of paiment types
+ - DTA generation for a lot of payment types
- BVR management (number generation, report, etc..)
- Import account move from the bank file (like v11 etc..)
- Simplify the way you handle the bank statement for reconciliation
diff --git a/addons/lunch/__openerp__.py b/addons/lunch/__openerp__.py
index efde2f16e61..831bc45d122 100644
--- a/addons/lunch/__openerp__.py
+++ b/addons/lunch/__openerp__.py
@@ -23,7 +23,7 @@
"name": "Lunch Module",
"author": "Tiny",
"Description": """
- The lunch module is for keeping record of the order placing and payment of the orders.
+ The lunch module is for keeping record of the order placed and payment of the orders.
The products are defined under categories and the payment records are maintained user wise
Every user has a cashbox which keeps track of the amount paid for a particular order.
diff --git a/addons/marketing_campaign/__openerp__.py b/addons/marketing_campaign/__openerp__.py
index 3363dd87144..9a10fdbaa3d 100755
--- a/addons/marketing_campaign/__openerp__.py
+++ b/addons/marketing_campaign/__openerp__.py
@@ -37,10 +37,12 @@
'update_xml': [
'marketing_campaign_view.xml',
'marketing_campaign_data.xml',
- 'marketing_campaign_workflow.xml',
+ 'marketing_campaign_workflow.xml',
'report/campaign_analysis_view.xml',
],
- 'demo_xml': [],
+ 'demo_xml': [
+ 'marketing_campaign_demo.xml',
+ ],
'installable': True,
'active': False,
}
diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py
index 52733fad159..398e0e805be 100755
--- a/addons/marketing_campaign/marketing_campaign.py
+++ b/addons/marketing_campaign/marketing_campaign.py
@@ -25,6 +25,7 @@ from dateutil.relativedelta import relativedelta
from osv import fields, osv
import netsvc
+import tools
_intervalTypes = {
'hours': lambda interval: relativedelta(hours=interval),
@@ -39,12 +40,14 @@ class marketing_campaign(osv.osv): #{{{
_columns = {
'name': fields.char('Name', size=64, required=True),
- 'object_id': fields.many2one('ir.model', 'Objects', required=True),
+ 'object_id': fields.many2one('ir.model', 'Objects', required=True,
+ help="Choose the Object on which you want \
+ this campaign to be run"),
'mode':fields.selection([('test', 'Test'),
- ('test_realtime', 'Realtime Time'),
+ ('test_realtime', 'Realtime'),
('manual', 'Manual'),
('active', 'Active')],
- 'Mode'),
+ 'Mode', required=True),
'state': fields.selection([('draft', 'Draft'),
('running', 'Running'),
('done', 'Done'),
@@ -52,14 +55,16 @@ class marketing_campaign(osv.osv): #{{{
'State',),
'activity_ids': fields.one2many('marketing.campaign.activity',
'campaign_id', 'Activities'),
- 'fixed_cost': fields.float('Fixed Cost'),
+ 'fixed_cost': fields.float('Fixed Cost', help="The fixed cost is cost\
+ you required for the campaign"),
}
_defaults = {
'state': lambda *a: 'draft',
+ 'mode': lambda *a: 'test',
}
-
+
def state_running_set(self, cr, uid, ids, *args):
campaign = self.browse(cr, uid, ids[0])
if not campaign.activity_ids :
@@ -72,8 +77,6 @@ class marketing_campaign(osv.osv): #{{{
segment_ids = self.pool.get('marketing.campaign.segment').search(cr, uid,
[('campaign_id', '=', campaign.id),
('state', '=', 'draft')])
- if not segment_ids :
- raise osv.except_osv("Error", "There is no associate semgnet for the campaign")
self.write(cr, uid, ids, {'state': 'running'})
return True
@@ -102,7 +105,7 @@ class marketing_campaign_segment(osv.osv): #{{{
'object_id': fields.related('campaign_id','object_id',
type='many2one', relation='ir.model',
string='Object'),
- 'ir_filter_id': fields.many2one('ir.filters', 'Filter'),
+ 'ir_filter_id': fields.many2one('ir.filters', 'Filter', help=""),
'sync_last_date': fields.datetime('Date'),
'sync_mode': fields.selection([('create_date', 'Create'),
('write_date', 'Write')],
@@ -124,15 +127,17 @@ class marketing_campaign_segment(osv.osv): #{{{
def state_running_set(self, cr, uid, ids, *args):
segment = self.browse(cr, uid, ids[0])
curr_date = time.strftime('%Y-%m-%d %H:%M:%S')
+ vals = {'state': 'running'}
if not segment.date_run:
- raise osv.except_osv("Error", "Segment can't be start before giving running date")
- if segment.campaign_id.state != 'running' :
- raise osv.except_osv("Error", "You have to start campaign first")
- if (segment.date_run >= curr_date):
- raise osv.except_osv("Error", "Segment cannot start before run date")
+ vals['date_run'] = segment.campaign_id.date_run and \
+ segment.campaign_id.date_run or \
+ time.strftime('%Y-%m-%d %H:%M:%S')
if not segment.sync_last_date:
- self.write(cr, uid, ids, {'sync_last_date':curr_date})
- self.write(cr, uid, ids, {'state': 'running','date_done': curr_date})
+ vals['sync_last_date']=curr_date
+ if not segment.date_done:
+ vals['date_done']= (datetime.now() + _intervalTypes['years'](1) \
+ ).strftime('%Y-%m-%d %H:%M:%S')
+ self.write(cr, uid, ids, vals)
return True
def state_done_set(self, cr, uid, ids, *args):
@@ -191,27 +196,34 @@ class marketing_campaign_activity(osv.osv): #{{{
_description = "Campaign Activity"
_columns = {
- 'name': fields.char('Name', size=64),
- 'campaign_id': fields.many2one('marketing.campaign', 'Campaign'),
+ 'name': fields.char('Name', size=64, required=True),
+ 'campaign_id': fields.many2one('marketing.campaign', 'Campaign',
+ required = True, ondelete='cascade'),
'object_id': fields.related('campaign_id','object_id',
type='many2one', relation='ir.model',
string='Object'),
- 'start': fields.boolean('Start'),
- 'condition': fields.text('Condition'),
+ 'start': fields.boolean('Start',help= "Its necessary to start activity \
+ before running campaign"),
+ 'condition': fields.char('Condition', size=256, required=True,
+ help="Condition that is to be tested before \
+ action is executed"),
'type': fields.selection([('email', 'E-mail'),
('paper', 'Paper'),
('action', 'Action'),
('subcampaign', 'Sub-Campaign')],
'Type', required=True),
'email_template_id': fields.many2one('poweremail.templates','Email Template'),
- 'report_id': fields.many2one('ir.actions.report.xml', 'Reports'),
- 'report_directory_id': fields.many2one('document.directory', 'Directory'),
- 'server_action_id': fields.many2one('ir.actions.server', string='Action'),
+ 'report_id': fields.many2one('ir.actions.report.xml', 'Reports', ),
+ 'report_directory_id': fields.many2one('document.directory','Directory',
+ help="Folder is used to store the generated reports"),
+ 'server_action_id': fields.many2one('ir.actions.server', string='Action',
+ help= "Describes the action name.\n"
+ "eg:On which object which action to be taken on basis of which condition"),
'to_ids': fields.one2many('marketing.campaign.transition',
- 'activity_to_id',
+ 'activity_from_id',
'Next Activities'),
'from_ids': fields.one2many('marketing.campaign.transition',
- 'activity_from_id',
+ 'activity_to_id',
'Previous Activities'),
'subcampaign_id': fields.many2one('marketing.campaign', 'Sub-Campaign'),
'subcampaign_segment_id': fields.many2one('marketing.campaign.segment',
@@ -220,7 +232,12 @@ class marketing_campaign_activity(osv.osv): #{{{
'revenue': fields.float('Revenue')
}
-
+ _defaults = {
+ 'type': lambda *a: 'email',
+ 'condition': lambda *a: 'True',
+ 'object_id' : lambda obj, cr, uid, context : context.get('object_id',False),
+ }
+
def search(self, cr, uid, args, offset=0, limit=None, order=None,
context=None, count=False):
if context == None:
@@ -237,10 +254,11 @@ class marketing_campaign_activity(osv.osv): #{{{
def process(self, cr, uid, act_id, wi_id, context={}):
activity = self.browse(cr, uid, act_id)
- workitem = self.pool.get('marketing.campaign.workitem').browse(cr, uid, wi_id)
+ workitem_obj = self.pool.get('marketing.campaign.workitem')
+ workitem = workitem_obj.browse(cr, uid, wi_id)
if activity.type == 'paper' :
service = netsvc.LocalService('report.%s'%activity.report_id.report_name)
- (report_data, format) = service.create(cr, uid, [activity.report_id.id], {}, {})
+ (report_data, format) = service.create(cr, uid, [], {}, {})
attach_vals = {
'name': '%s_%s_%s'%(activity.report_id.report_name,
activity.name,workitem.partner_id.name),
@@ -251,7 +269,36 @@ class marketing_campaign_activity(osv.osv): #{{{
'file_type': format
}
self.pool.get('ir.attachment').create(cr, uid, attach_vals)
-# elif activity.type == 'email' :
+ elif activity.type == 'email' :
+ context = {}
+ template = activity.email_template_id
+ accounts = template.enforce_from_account
+ if not template.enforce_from_account:
+ return {'error_msg' : "There is no account defined for the email"}
+ if not workitem.partner_id.email:
+ return {'error_msg' : "There is no email defined for the partner"}
+ vals = {
+ 'pem_from': tools.ustr(accounts.name) + "<" + tools.ustr(accounts.email_id) + ">",
+ 'pem_to': workitem.partner_id.email,
+ 'pem_subject': template.def_subject,
+ 'pem_body_text': template.def_body_text,
+ 'pem_body_html': template.def_body_html,
+ 'pem_account_id':accounts.id,
+ 'state':'na',
+ 'mail_type':'multipart/alternative' #Options:'multipart/mixed','multipart/alternative','text/plain','text/html'
+ }
+# if accounts.use_sign:
+# signature = self.pool.get('res.users').read(cr, uid, uid, ['signature'], context)['signature']
+# if signature:
+# vals['pem_body_text'] = tools.ustr(vals['pem_body_text'] or '') + signature
+# vals['pem_body_html'] = tools.ustr(vals['pem_body_html'] or '') + signature
+
+ #Create partly the mail and later update attachments
+ mail_id = self.pool.get('poweremail.mailbox').create(cr, uid, vals, context)
+ elif activity.type == 'action' :
+ server_obj = self.pool.get('ir.actions.server')
+ server_obj.run(cr, uid, [activity.server_action_id.id], context)
+ #???
return True
marketing_campaign_activity()#}}}
@@ -259,6 +306,7 @@ marketing_campaign_activity()#}}}
class marketing_campaign_transition(osv.osv): #{{{
_name = "marketing.campaign.transition"
_description = "Campaign Transition"
+ _rec_name = "interval_type"
_columns = {
'activity_from_id': fields.many2one('marketing.campaign.activity',
@@ -297,7 +345,9 @@ class marketing_campaign_workitem(osv.osv): #{{{
'partner_id': fields.many2one('res.partner', 'Partner',required=True),
'state': fields.selection([('todo', 'ToDo'), ('inprogress', 'In Progress'),
('exception', 'Exception'), ('done', 'Done'),
- ('cancelled', 'Cancelled')], 'State')
+ ('cancelled', 'Cancelled')], 'State'),
+
+ 'error_msg' : fields.text('Error Message')
}
_defaults = {
'state': lambda *a: 'draft',
@@ -324,7 +374,7 @@ class marketing_campaign_workitem(osv.osv): #{{{
def process(self, cr, uid, workitem_ids, context={}):
for wi in self.browse(cr, uid, workitem_ids):
- if wi.state == 'todo' :# we searched the wi which are in todo state
+ if wi.state == 'todo':# we searched the wi which are in todo state
#then y v keep this filter again
eval_context = {
'pool': self.pool,
@@ -332,21 +382,23 @@ class marketing_campaign_workitem(osv.osv): #{{{
'uid': uid,
'wi': wi,
'object': wi.activity_id,
- 'transition' : wi.activity_id.to_ids
+ 'transition': wi.activity_id.to_ids
}
- val = {}
- exec wi.activity_id.condition.replace('\r','') in \
- eval_context, val
- if 'action' in val and val['action']:
+ expr = eval(str(wi.activity_id.condition), eval_context)
+ if expr:
try :
- self.pool.get('marketing.campaign.activity').process(cr,
- uid, wi.activity_id.id, wi.id, context)
- self.write(cr, uid, wi.id, {'state':'done'})
- self.process_chain(cr, uid, wi.id, context)
+ res = self.pool.get('marketing.campaign.activity').process(
+ cr, uid, wi.activity_id.id, wi.id, context)
+ if res :
+ self.write(cr, uid, wi.id, {'state': 'done'})
+ self.process_chain(cr, uid, wi.id, context)
+ else :
+ self.write(cr, uid, wi.id, {'state': 'exception',
+ 'error_msg': res['error_msg']})
except Exception,e:
- self.write(cr, uid, wi.id, {'state':'exception'})
+ self.write(cr, uid, wi.id, {'state': 'exception'})
else :
- self.write(cr, uid, wi.id, {'state':'cancelled'})
+ self.write(cr, uid, wi.id, {'state': 'cancelled'})
return True
@@ -357,5 +409,28 @@ class marketing_campaign_workitem(osv.osv): #{{{
self.process(cr, uid, workitem_ids, context)
marketing_campaign_workitem() #}}}
+
+class poweremail_templates(osv.osv):
+ _inherit = "poweremail.templates"
+
+ _defaults = {
+ 'object_name': lambda obj, cr, uid, context: context.get('object_id',False),
+ }
+poweremail_templates()
+
+class report_xml(osv.osv):
+
+ _inherit = 'ir.actions.report.xml'
+
+ def search(self, cr, uid, args, offset=0, limit=None, order=None, context=None, count=False):
+ if not context:
+ context = {}
+ if context and 'object_id' in context and context['object_id']:
+ model = self.pool.get('ir.model').browse(cr, uid,
+ context['object_id']).model
+ args.append(('model', '=', model))
+ return super(report_xml, self).search(cr, uid, args, offset, limit, order, context, count)
+
+report_xml()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/marketing_campaign/marketing_campaign_demo.xml b/addons/marketing_campaign/marketing_campaign_demo.xml
new file mode 100644
index 00000000000..9c2211903c5
--- /dev/null
+++ b/addons/marketing_campaign/marketing_campaign_demo.xml
@@ -0,0 +1,89 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Thanks for showing interest in OpenERP
+ info@tinyerp.com
+
+
+
+
+
+
+
+ Hello,
+Thanks for generous interest you have shown in the open ERP.
+Regards,
+OpenERP Team,
+ mako
+
+ For OpenERP OnDemand Free Trial 2010
+ crm.lead
+
+
+
+
+ Marketing campaign demo report
+ ir.actions.report.xml
+ crm.lead
+ crm.lead.demo
+ marketing_campaign/report/crm_lead_mc_demo_report.rml
+ pdf
+
+
+
+ OpenERP OnDemand Free Trial 2010
+
+
+
+
+ Propose a 1 month free trial for an OnDemand offer
+
+
+
+ paper
+
+
+
+
+ Thanks for showing interest
+
+
+
+
+
+
+
+
+
+
+
+ BossList US Associations List-0/90
+ create_date
+
+ draft
+
+
+
+
diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml
index f013f37e853..9c9d4e96c14 100755
--- a/addons/marketing_campaign/marketing_campaign_view.xml
+++ b/addons/marketing_campaign/marketing_campaign_view.xml
@@ -20,19 +20,20 @@
-
+
-
+
@@ -417,7 +417,7 @@
-
+
-
+
-
+
diff --git a/addons/process/__openerp__.py b/addons/process/__openerp__.py
index d8c039ef276..57b28e76311 100644
--- a/addons/process/__openerp__.py
+++ b/addons/process/__openerp__.py
@@ -26,7 +26,7 @@
'category': 'Generic Modules/Base',
'description': """
This module shows the basic processes involved
- in the selected modules and in the sequence these
+ in the selected modules and in the sequence they
occur
Note: This applies to the modules containing modulename_process_xml
diff --git a/addons/product/product.py b/addons/product/product.py
index f8f96ff69de..18c9e6ded8d 100644
--- a/addons/product/product.py
+++ b/addons/product/product.py
@@ -262,7 +262,7 @@ class product_template(osv.osv):
'produce_delay': fields.float('Manufacturing Lead Time', help="Average time to produce this product. This is only for the production order and, if it is a multi-level bill of material, it's only for the level of this product. Different lead times will be summed for all levels and purchase orders."),
'procure_method': fields.selection([('make_to_stock','Make to Stock'),('make_to_order','Make to Order')], 'Procurement Method', required=True, help="'Make to Stock': When needed, take from the stock or wait until re-supplying. 'Make to Order': When needed, purchase or produce for the procurement request."),
'rental': fields.boolean('Can be Rent'),
- 'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]"),
+ 'categ_id': fields.many2one('product.category','Category', required=True, change_default=True, domain="[('type','=','normal')]" ,help="Select category for the current product"),
'list_price': fields.float('Sale Price', digits_compute=dp.get_precision('Sale Price'), help="Base price for computing the customer price. Sometimes called the catalog price."),
'standard_price': fields.float('Cost Price', required=True, digits_compute=dp.get_precision('Account'), help="Product's cost for accounting stock valuation. It is the base price for the supplier price."),
'volume': fields.float('Volume', help="The volume in m3."),
@@ -586,7 +586,7 @@ class product_packaging(osv.osv):
_rec_name = 'ean'
_columns = {
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of packaging."),
- 'name' : fields.char('Description', size=64),
+ 'name' : fields.text('Description', size=64),
'qty' : fields.float('Quantity by Package',
help="The total number of products you can put by pallet or box."),
'ul' : fields.many2one('product.ul', 'Type of Package', required=True),
@@ -645,9 +645,9 @@ class product_supplierinfo(osv.osv):
_name = "product.supplierinfo"
_description = "Information about a product supplier"
_columns = {
- 'name' : fields.many2one('res.partner', 'Partner', required=True, ondelete='cascade', help="Supplier of this product"),
- 'product_name': fields.char('Partner Product Name', size=128, help="This partner's product name will be used when printing a request for quotation. Keep empty to use the internal one."),
- 'product_code': fields.char('Partner Product Code', size=64, help="This partner's product code will be used when printing a request for quotation. Keep empty to use the internal one."),
+ 'name' : fields.many2one('res.partner', 'Supplier', required=True, ondelete='cascade', help="Supplier of this product"),
+ 'product_name': fields.char('Supplier Product Name', size=128, help="This supplier's product name will be used when printing a request for quotation. Keep empty to use the internal one."),
+ 'product_code': fields.char('Supplier Product Code', size=64, help="This supplier's product code will be used when printing a request for quotation. Keep empty to use the internal one."),
'sequence' : fields.integer('Sequence', help="Assigns the priority to the list of product supplier."),
'qty' : fields.float('Minimal Quantity', required=True, help="The minimal quantity to purchase to this supplier, expressed in the default unit of measure."),
'product_id' : fields.many2one('product.template', 'Product', required=True, ondelete='cascade', select=True),
diff --git a/addons/product/product_view.xml b/addons/product/product_view.xml
index 9bfcb33b050..aa2f9d2d509 100644
--- a/addons/product/product_view.xml
+++ b/addons/product/product_view.xml
@@ -18,17 +18,17 @@
-
-
-
-
-
+
+
+
+
+
@@ -104,7 +104,7 @@
-
+
@@ -175,8 +175,8 @@
-
-
+
+
diff --git a/addons/product/wizard/product_price_view.xml b/addons/product/wizard/product_price_view.xml
index 17d9010ed43..a253a0e00af 100644
--- a/addons/product/wizard/product_price_view.xml
+++ b/addons/product/wizard/product_price_view.xml
@@ -10,16 +10,17 @@
form
-
+
-
-
+
+
+
+
+
diff --git a/addons/product_margin/__openerp__.py b/addons/product_margin/__openerp__.py
index 9272287371a..7607c499add 100644
--- a/addons/product_margin/__openerp__.py
+++ b/addons/product_margin/__openerp__.py
@@ -26,7 +26,7 @@
'category': 'Custom',
'description': """
Adds a reporting menu in products that computes sales, purchases, margins
-and others interesting indicators based on invoices. The wizard to launch
+and other interesting indicators based on invoices. The wizard to launch
the report has several options to help you get the data you need.
""",
'author': 'Tiny',
diff --git a/addons/profile_accounting/i18n/pl.po b/addons/profile_accounting/i18n/pl.po
index 2322b2ce98e..be89ead2d63 100644
--- a/addons/profile_accounting/i18n/pl.po
+++ b/addons/profile_accounting/i18n/pl.po
@@ -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: 2009-09-08 12:59+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-25 16:49+0000\n"
+"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: profile_accounting
@@ -23,6 +23,8 @@ msgid ""
"Profile you selected. You will be able to install them based on our "
"requirements."
msgstr ""
+"Instaluj więcej modułów. Proponujemy moduły zalecane do profilu księgowego, "
+"który wybrałeś. Będziesz mógł je instalować według naszych wskazań."
#. module: profile_accounting
#: constraint:ir.model:0
@@ -35,7 +37,7 @@ msgstr ""
#. module: profile_accounting
#: view:profile.accounting.config.install_modules_wizard:0
msgid "Services Management"
-msgstr ""
+msgstr "Zarządzanie usługami"
#. module: profile_accounting
#: help:profile.accounting.config.install_modules_wizard,board_document:0
@@ -45,51 +47,55 @@ msgid ""
"documents, printed reports, calendar system). It opens an FTP access for the "
"users to easily browse association's document."
msgstr ""
+"System zarządzania dokumentami w OpenERP pozwala przechowywać, przeglądać, "
+"automatycznie indeksować, przeszukiwać i podglądać wszystkie rodzaje "
+"dokumentów (dokumenty wewnętrzne, drukowane raporty, kalendarze). Otwiera on "
+"dla użytkowników dostęp FTP do łatwego przeglądania powiązanych dokumentów."
#. module: profile_accounting
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: profile_accounting
#: view:profile.accounting.config.install_modules_wizard:0
msgid "Resources Management"
-msgstr ""
+msgstr "Zarządzanie zasobami"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,account_payment:0
msgid "Suppliers Payment Management"
-msgstr ""
+msgstr "Zarządzanie płatnościami dla dostawców"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,account_asset:0
msgid "Asset Management"
-msgstr ""
+msgstr "Środki trwałe"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,account_analytic_plans:0
msgid "Multiple Analytic Plans"
-msgstr ""
+msgstr "Planowanie analityczne"
#. module: profile_accounting
#: model:ir.actions.act_window,name:profile_accounting.action_config_install_module
msgid "Accounting Profile : Install Extra Modules"
-msgstr ""
+msgstr "Profil księgowy: Instaluj dodatkowe moduły"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,hr_timesheet_invoice:0
msgid "Invoice on Analytic Entries"
-msgstr ""
+msgstr "Faktura z zapisów analitycznych"
#. module: profile_accounting
#: model:ir.module.module,description:profile_accounting.module_meta_information
msgid "Profile for Accounting"
-msgstr ""
+msgstr "Profil dla księgowości"
#. module: profile_accounting
#: help:profile.accounting.config.install_modules_wizard,account_budget:0
msgid "Helps you to manage financial and analytic budgets."
-msgstr ""
+msgstr "Pomaga zarządzać budżetami finansowymi i analitycznymi."
#. module: profile_accounting
#: constraint:ir.ui.view:0
@@ -99,37 +105,37 @@ msgstr "XML niewłaściwy dla tej architektury wyświetlania!"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,name:0
msgid "Name"
-msgstr ""
+msgstr "Nazwa"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,account_budget:0
msgid "Budgets"
-msgstr ""
+msgstr "Budżety"
#. module: profile_accounting
#: view:profile.accounting.config.install_modules_wizard:0
msgid "Install"
-msgstr ""
+msgstr "Instaluj"
#. module: profile_accounting
#: view:profile.accounting.config.install_modules_wizard:0
msgid "Install Extra Module"
-msgstr ""
+msgstr "Instaluj dodatkowe moduły"
#. module: profile_accounting
#: model:ir.module.module,shortdesc:profile_accounting.module_meta_information
msgid "Accounting only profile"
-msgstr ""
+msgstr "Profil tylko księgowy"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,account_analytic_analysis:0
msgid "Analytic Accounting"
-msgstr ""
+msgstr "Księgowość analityczna"
#. module: profile_accounting
#: field:profile.accounting.config.install_modules_wizard,board_document:0
msgid "Document Management"
-msgstr ""
+msgstr "Zarządzanie dokumentami"
#. module: profile_accounting
#: model:ir.model,name:profile_accounting.model_profile_accounting_config_install_modules_wizard
@@ -139,4 +145,4 @@ msgstr ""
#. module: profile_accounting
#: view:profile.accounting.config.install_modules_wizard:0
msgid "Cancel"
-msgstr ""
+msgstr "Anuluj"
diff --git a/addons/profile_manufacturing/i18n/pl.po b/addons/profile_manufacturing/i18n/pl.po
index 4a7c7de9f7b..9b653d520b3 100644
--- a/addons/profile_manufacturing/i18n/pl.po
+++ b/addons/profile_manufacturing/i18n/pl.po
@@ -7,24 +7,24 @@ 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-08 13:28+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-25 16:49+0000\n"
+"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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:16+0000\n"
+"X-Launchpad-Export-Date: 2010-05-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,mrp_operation:0
msgid "Manufacturing Operations"
-msgstr ""
+msgstr "Operacje produkcyjne"
#. module: profile_manufacturing
#: model:ir.module.module,description:profile_manufacturing.module_meta_information
msgid "Profile for manufacturing industries"
-msgstr ""
+msgstr "Profil dla firm produkcyjnych"
#. module: profile_manufacturing
#: constraint:ir.model:0
@@ -37,22 +37,22 @@ msgstr ""
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,mrp_jit:0
msgid "Just in Time Scheduling"
-msgstr ""
+msgstr "Planowanie natychmiastowe (JiT)"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,sale_journal:0
msgid "Manage by Journals"
-msgstr ""
+msgstr "Zarządzanie wg dzienników"
#. module: profile_manufacturing
#: view:profile.manufacturing.config.install_modules_wizard:0
msgid "Relationship Management"
-msgstr ""
+msgstr "Zarządzanie relacjami"
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,portal:0
msgid "This module allows you to manage a Portal system."
-msgstr ""
+msgstr "Ten moduł pozwoli ci zarządzać systemem portalu."
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,board_document:0
@@ -62,6 +62,10 @@ msgid ""
"documents, printed reports, calendar system). It opens an FTP access for the "
"users to easily browse association's document."
msgstr ""
+"System zarządzania dokumentami w OpenERP pozwala przechowywać, przeglądać, "
+"automatycznie indeksować, przeszukiwać i podglądać wszystkie rodzaje "
+"dokumentów (dokumenty wewnętrzne, drukowane raporty, kalendarze). Otwiera on "
+"dla użytkowników dostęp FTP do łatwego przeglądania powiązanych dokumentów."
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,sale_journal:0
@@ -70,17 +74,20 @@ msgid ""
"journals. You can define journals for trucks, salesman, departments, "
"invoicing date delivery period, etc."
msgstr ""
+"Ten moduł pozwala zarządzać sprzedażą, fakturowaniem i pobieraniem produktów "
+"przez dzinniki. Możesz definiować dzienniki dla ciężarówek, sprzedawców, "
+"działów, dat fakturowania, okresów dostaw itp."
#. module: profile_manufacturing
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: profile_manufacturing
#: model:ir.actions.act_window,name:profile_manufacturing.action_config_install_module
#: view:profile.manufacturing.config.install_modules_wizard:0
msgid "Manufacturing Profile: Install Extra Modules"
-msgstr ""
+msgstr "Profil produkcyjny: Instaluj dodatkowe moduły"
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,mrp_jit:0
@@ -89,6 +96,9 @@ msgid ""
"and faster for real time stock computation but, in counter-part, it manages "
"less efficiently priorities in procurements."
msgstr ""
+"Moduł JIT pozwala działać planiście bez jego uruchamiania. Jest to szybsze i "
+"łatwiejsze dla obliczeń zapasów w czasie rzeczywistym, ale nieefektywne w "
+"zarządzaniu priorytetami w nabyciach."
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,mrp_operation:0
@@ -97,11 +107,15 @@ msgid ""
"work order/operation. You will be able to planify, analyse the cost, check "
"times, ... on all operations of each manufacturing order"
msgstr ""
+"Ten moduł pozwala nie tylko zarządzać produkcją przez zamówienia produkcji, "
+"ale również przez zamówienia czynności/operacje. Będziesz mógł planować, "
+"analizować koszt, sprawdzać czas, ... dla wszystkich operacji w każdym "
+"zamówieniu produkcyjnym"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,board_document:0
msgid "Document Management"
-msgstr ""
+msgstr "Zarządzanie dokumentami"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,portal:0
@@ -111,7 +125,7 @@ msgstr ""
#. module: profile_manufacturing
#: view:profile.manufacturing.config.install_modules_wizard:0
msgid "Stock & Manufacturing"
-msgstr ""
+msgstr "Zapasy i Produkcja"
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,mrp_repair:0
@@ -119,6 +133,8 @@ msgid ""
"Allow to manage product repairs. Handle the guarantee limit date and the "
"invoicing of products and services."
msgstr ""
+"Pozwala zarządzać naprawami produktów. Obsługuje czasy gwarancji i "
+"fakturowanie produktów i usług."
#. module: profile_manufacturing
#: constraint:ir.ui.view:0
@@ -132,16 +148,20 @@ msgid ""
"manufacturing profile you selected. You will be able to install them based "
"on our requirements."
msgstr ""
+"Instaluj więcej modułów. Proponujemy moduły zalecane do profilu "
+"produkcyjnego, który wybrałeś. Będziesz mógł je instalować według naszych "
+"wskazań."
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,mrp_subproduct:0
msgid "This module allows you to add sub poducts in mrp bom."
msgstr ""
+"Ten moduł pozwala dodać produkty uboczne w zestawieniu materiałowym MRP."
#. module: profile_manufacturing
#: model:ir.module.module,shortdesc:profile_manufacturing.module_meta_information
msgid "Manufacturing industry profile"
-msgstr ""
+msgstr "Profil firm produkcyjnych"
#. module: profile_manufacturing
#: model:ir.model,name:profile_manufacturing.model_profile_manufacturing_config_install_modules_wizard
@@ -155,26 +175,28 @@ msgid ""
"opportunities tracking, shared calendar, jobs tracking, bug tracker, and so "
"on."
msgstr ""
+"To instaluje funkcjonalność relacji z klientami jak: obsługa sygnałów i "
+"szans, współdzielone kalendarze, obsadzanie stanowisk, obsługa błędów itp."
#. module: profile_manufacturing
#: view:profile.manufacturing.config.install_modules_wizard:0
msgid "Install"
-msgstr ""
+msgstr "Instaluj"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,sale_crm:0
msgid "CRM and Calendars"
-msgstr ""
+msgstr "CRM i kalendarze"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,mrp_repair:0
msgid "Repair"
-msgstr ""
+msgstr "Naprawa"
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,sale_margin:0
msgid "Display margins on the sale order form."
-msgstr ""
+msgstr "Wyświetlaj marże na formularzu zamówienia sprzedaży."
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,point_of_sale:0
@@ -184,26 +206,30 @@ msgid ""
"a perfect ergonomy with touchscreen materials and payment processing "
"hardware."
msgstr ""
+"Ten moduł pozwala obsługiwać punkt sprzedaży. Zawiera podstawową formę "
+"operacji punktu sprzedaży. Musisz sprawdzić jeszcze nasz punkt sprzedaży dla "
+"sprzedawcy (frontend), zby się przekonać o ergonomii ekranu dotykowego i "
+"urządzeń do obsługi płatności."
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,mrp_subproduct:0
msgid "Mrp Sub Product"
-msgstr ""
+msgstr "Produkt uboczny MRP"
#. module: profile_manufacturing
#: view:profile.manufacturing.config.install_modules_wizard:0
msgid "Sales Management"
-msgstr ""
+msgstr "Sprzedaż"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,warning:0
msgid "Warning"
-msgstr ""
+msgstr "Ostrzeżenie"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,sale_margin:0
msgid "Margins on Sales Order"
-msgstr ""
+msgstr "Marże w zamówieniu sprzedaży"
#. module: profile_manufacturing
#: help:profile.manufacturing.config.install_modules_wizard,stock_location:0
@@ -214,18 +240,23 @@ msgid ""
"managing a manufacturing chain, a quality control location, product that you "
"rent, etc."
msgstr ""
+"Pozwala zarządzać zaawansowaną logistyką z różnymi strefami. Możesz "
+"zdefiniować, według produktu: domyślną strefę, ścieżkę stref dla różnych "
+"operacji, itp. Moduł ten jest zwykle stosowany do: lokalizacji produktów, "
+"zarządzania łańcuchem produkcyjnym, stref kontroli jakości, produktów "
+"wypożyczanych, itp."
#. module: profile_manufacturing
#: view:profile.manufacturing.config.install_modules_wizard:0
msgid "Cancel"
-msgstr ""
+msgstr "Anuluj"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,point_of_sale:0
msgid "Point of Sale"
-msgstr ""
+msgstr "Punkt sprzedaży"
#. module: profile_manufacturing
#: field:profile.manufacturing.config.install_modules_wizard,stock_location:0
msgid "Advanced Locations"
-msgstr ""
+msgstr "Zaawansowane strefy"
diff --git a/addons/project/__openerp__.py b/addons/project/__openerp__.py
index 3c7e80d4c11..a98b5cb28fd 100644
--- a/addons/project/__openerp__.py
+++ b/addons/project/__openerp__.py
@@ -28,7 +28,7 @@
"category" : "Generic Modules/Projects & Services",
"depends" : ["product", "analytic", "process", "mail_gateway"],
"description": """Project management module that track multi-level projects, tasks,
-works done on tasks, eso. It is able to render planning, order tasks, eso.
+work done on tasks, eso. It is able to render planning, order tasks, eso.
""",
"init_xml" : [],
"update_xml": [
diff --git a/addons/project/i18n/pl.po b/addons/project/i18n/pl.po
index cd6839344dc..386eb18b18e 100644
--- a/addons/project/i18n/pl.po
+++ b/addons/project/i18n/pl.po
@@ -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-13 17:05+0000\n"
+"PO-Revision-Date: 2010-05-25 15:03+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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-14 04:55+0000\n"
+"X-Launchpad-Export-Date: 2010-05-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: project
@@ -1130,7 +1130,7 @@ msgstr "Błąd ! Nie możesz tworzyć rekurencyjnych projektów."
#. module: project
#: field:project.task,date_deadline:0
msgid "Deadline"
-msgstr "Ostateczny czas ukończenia"
+msgstr "Termin"
#. module: project
#: wizard_field:project.task.delegate,init,user_id:0
diff --git a/addons/project/project.py b/addons/project/project.py
index a6c703657d0..bdf7e30837e 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -47,6 +47,8 @@ class project(osv.osv):
_inherits = {'account.analytic.account':"category_id"}
def search(self, cr, user, args, offset=0, limit=None, order=None, context=None, count=False):
+ if context is None:
+ context = {}
if user == 1:
return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order, context=context, count=count)
if context and context.has_key('user_prefence') and context['user_prefence']:
@@ -266,13 +268,11 @@ class task(osv.osv):
hours = dict(cr.fetchall())
for task in self.browse(cr, uid, ids, context=context):
res[task.id] = {'effective_hours': hours.get(task.id, 0.0), 'total_hours': task.remaining_hours + hours.get(task.id, 0.0)}
+ res[task.id]['progress'] = 0.0
if (task.remaining_hours + hours.get(task.id, 0.0)):
- if task.state =='done':
- res[task.id]['progress'] = 100.0
- else:
+ if task.state != 'done':
res[task.id]['progress'] = round(min(100.0 * hours.get(task.id, 0.0) / res[task.id]['total_hours'], 99.99),2)
- else:
- res[task.id]['progress'] = 0.0
+
if task.state in ('done','cancel'):
res[task.id]['progress'] = 100.0
res[task.id]['delay_hours'] = res[task.id]['total_hours'] - task.planned_hours
@@ -559,6 +559,8 @@ class config_compute_remaining(osv.osv_memory):
}
def compute_hours(self, cr, uid, ids, context=None):
+ if context is None:
+ context = {}
task_obj = self.pool.get('project.task')
request = self.pool.get('res.request')
if 'active_id' in context:
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 76ee14b990a..f22e352d16b 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -122,8 +122,7 @@
-
-
+
diff --git a/addons/project/report/project_report_view.xml b/addons/project/report/project_report_view.xml
index db880ae0149..a56ae9435c3 100644
--- a/addons/project/report/project_report_view.xml
+++ b/addons/project/report/project_report_view.xml
@@ -55,10 +55,10 @@
-
-
@@ -98,22 +98,11 @@
+ string="My Projects"
+ help="My Projects"
+ domain="[('project_id','=',context.get('project_id', False)]"/>
-
-
-
-
-
-
-
-
-
-
-
@@ -129,6 +118,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -216,7 +215,7 @@
-
+ task.by.days.vs.planned.hours.treetask.by.days.vs.planned.hourstree
@@ -248,5 +247,6 @@
graph,tree
+
diff --git a/addons/project_gtd/i18n/pl.po b/addons/project_gtd/i18n/pl.po
index 068c42bee8d..d5271fc913e 100644
--- a/addons/project_gtd/i18n/pl.po
+++ b/addons/project_gtd/i18n/pl.po
@@ -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-12-22 14:25+0000\n"
+"PO-Revision-Date: 2010-05-25 10:02+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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:15+0000\n"
+"X-Launchpad-Export-Date: 2010-05-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: project_gtd
@@ -37,7 +37,7 @@ msgstr ""
#. module: project_gtd
#: model:ir.actions.act_window,name:project_gtd.act_timebox_tasks_my_deadline_open
msgid "My Deadlines"
-msgstr ""
+msgstr "Moje terminy"
#. module: project_gtd
#: selection:project.gtd.timebox,type:0
@@ -83,7 +83,7 @@ msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: project_gtd
#: field:project.gtd.timebox,context4_id:0
msgid "Context 4"
-msgstr ""
+msgstr "Kontekst 4"
#. module: project_gtd
#: wizard_field:project.gtd.timebox.fill,init,timebox_to_id:0
@@ -110,7 +110,7 @@ msgstr ""
#. module: project_gtd
#: model:ir.module.module,shortdesc:project_gtd.module_meta_information
msgid "Getting Things Done - Time Management Module"
-msgstr ""
+msgstr "GTD - personalny moduł zarządzania czasem"
#. module: project_gtd
#: model:ir.actions.act_window,name:project_gtd.act_timebox_tasks
@@ -140,7 +140,7 @@ msgstr ""
#. module: project_gtd
#: model:ir.actions.act_window,name:project_gtd.act_timebox_tasks_my_pending
msgid "My Pending Tasks"
-msgstr ""
+msgstr "Moje zadania oczekujące"
#. module: project_gtd
#: view:project.gtd.timebox:0
@@ -166,17 +166,17 @@ msgstr ""
#. module: project_gtd
#: field:project.gtd.timebox,context1_id:0
msgid "Context 1"
-msgstr ""
+msgstr "Kontekst 1"
#. module: project_gtd
#: field:project.gtd.timebox,context2_id:0
msgid "Context 2"
-msgstr ""
+msgstr "Kontekst 2"
#. module: project_gtd
#: field:project.gtd.timebox,context3_id:0
msgid "Context 3"
-msgstr ""
+msgstr "Kontekst 3"
#. module: project_gtd
#: wizard_button:project.gtd.timebox.fill,init,process:0
@@ -186,12 +186,12 @@ msgstr ""
#. module: project_gtd
#: field:project.gtd.timebox,context5_id:0
msgid "Context 5"
-msgstr ""
+msgstr "Kontekst 5"
#. module: project_gtd
#: field:project.gtd.timebox,context6_id:0
msgid "Context 6"
-msgstr ""
+msgstr "Kontekst 6"
#. module: project_gtd
#: model:ir.actions.act_window,name:project_gtd.open_gtd_context_tree
@@ -244,18 +244,18 @@ msgstr "Kontekst"
#. module: project_gtd
#: model:ir.actions.act_window,name:project_gtd.act_timebox_tasks_my_open
msgid "My Open Tasks"
-msgstr ""
+msgstr "Moje otwarte zadania"
#. module: project_gtd
#: model:ir.ui.menu,name:project_gtd.menu_open_gtd_time
#: model:ir.ui.menu,name:project_gtd.menu_open_time
msgid "Time Management"
-msgstr ""
+msgstr "Zarządzanie czasem"
#. module: project_gtd
#: view:project.task:0
msgid "Getting Things Done"
-msgstr ""
+msgstr "GTD - planowanie osobiste"
#. module: project_gtd
#: field:project.gtd.timebox,task1_ids:0
diff --git a/addons/project_issue/__openerp__.py b/addons/project_issue/__openerp__.py
index 513bae085bd..982d1688014 100644
--- a/addons/project_issue/__openerp__.py
+++ b/addons/project_issue/__openerp__.py
@@ -31,8 +31,10 @@
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': [
+ 'crm',
'project',
'hr_timesheet_sheet',
+ 'project_long_term',
],
'init_xml': [
'project_issue_data.xml'
diff --git a/addons/project_issue/project_issue.py b/addons/project_issue/project_issue.py
index f67986526cd..b67ef6a849a 100644
--- a/addons/project_issue/project_issue.py
+++ b/addons/project_issue/project_issue.py
@@ -113,7 +113,6 @@ class project_issue(osv.osv, crm.crm_case):
'thread_id': fields.many2one('mailgate.thread', 'Thread', required=False),
'id': fields.integer('ID'),
'name': fields.char('Name', size=128, required=True),
- 'active': fields.boolean('Active', required=False),
'create_date': fields.datetime('Creation Date' , readonly=True),
'write_date': fields.datetime('Update Date' , readonly=True),
'date_deadline': fields.date('Deadline'),
@@ -173,7 +172,6 @@ class project_issue(osv.osv, crm.crm_case):
return False
_defaults = {
- 'active': lambda *a: 1,
'user_id': crm.crm_case._get_default_user,
'partner_id': crm.crm_case._get_default_partner,
'partner_address_id': crm.crm_case._get_default_partner_address,
diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml
index 210ad4ee737..27b72e459ef 100644
--- a/addons/project_issue/project_issue_view.xml
+++ b/addons/project_issue/project_issue_view.xml
@@ -82,11 +82,8 @@
-
-
-
@@ -143,6 +140,7 @@
+
@@ -155,6 +153,7 @@
states="open,draft,pending,done,cancel" />
+
@@ -172,21 +171,18 @@
search
-
+
-
-
-
-
+
@@ -196,7 +192,7 @@
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -127,49 +170,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/project_issue_sheet/project_issue_sheet.py b/addons/project_issue_sheet/project_issue_sheet.py
index 353fe6c28c1..c48ff73b0f0 100644
--- a/addons/project_issue_sheet/project_issue_sheet.py
+++ b/addons/project_issue_sheet/project_issue_sheet.py
@@ -34,13 +34,11 @@ from tools.translate import _
class project_issue(osv.osv):
_inherit = 'project.issue'
-
_columns = {
'timesheet_ids' : fields.one2many('hr.analytic.timesheet', 'issue_id', 'Timesheets'),
- 'analytic_account_id' : fields.many2one('account.analytic.account', 'Analytic Account',
- domain="[('partner_id', '=', partner_id)]",
- required=True),
+ 'analytic_account_id': fields.related('project_id','category_id',string='Analytic Account')
}
+project_issue()
class account_analytic_line(osv.osv):
_inherit = 'account.analytic.line'
@@ -53,10 +51,8 @@ account_analytic_line()
class hr_analytic_issue(osv.osv):
_inherit = 'hr.analytic.timesheet'
-
_columns = {
'issue_id' : fields.many2one('project.issue', 'Issue'),
}
-
hr_analytic_issue()
diff --git a/addons/project_issue_sheet/project_issue_sheet_view.xml b/addons/project_issue_sheet/project_issue_sheet_view.xml
index 2ed2e7fbdcc..12171d0a429 100644
--- a/addons/project_issue_sheet/project_issue_sheet_view.xml
+++ b/addons/project_issue_sheet/project_issue_sheet_view.xml
@@ -9,11 +9,11 @@
-
+
-
-
+
+
diff --git a/addons/project_long_term/__openerp__.py b/addons/project_long_term/__openerp__.py
index 99bce80caca..32945899b30 100644
--- a/addons/project_long_term/__openerp__.py
+++ b/addons/project_long_term/__openerp__.py
@@ -27,13 +27,13 @@
"depends" : ["project", "resource"],
"description": """
- Long Term Project management module that track planning, scheduling, resources allocation.
+ Long Term Project management module that tracks planning, scheduling, resources allocation.
Mainly used with Big project management.
- - Project Phases will be maintain by Manager of the project
+ - Project Phases will be maintained by Manager of the project
- Compute Phase Scheduling: Compute start date and end date of the phases which are in draft,open and pending state of the project given.
- If no project given then all the draft,open and pending states phases will be taken
- - Compute Task Scheduling: This works same as the scheduler button on project.phase. It takes the project as arguement and computes all the open,draft and pending tasks
- - Schedule Tasks: All the tasks which are in draft,pending and open states are scheduled with taking the phase's start date
+ If no project given then all the draft,open and pending state phases will be taken
+ - Compute Task Scheduling: This works same as the scheduler button on project.phase. It takes the project as argument and computes all the open,draft and pending tasks
+ - Schedule Tasks: All the tasks which are in draft,pending and open state are scheduled with taking the phase's start date
""",
"init_xml" : [],
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py
index 0a0e92c71e5..95e9099f549 100644
--- a/addons/project_long_term/project_long_term.py
+++ b/addons/project_long_term/project_long_term.py
@@ -33,7 +33,7 @@ class project_phase(osv.osv):
data_phase = self.browse(cr, uid, ids[0], context=context)
prev_ids = data_phase.previous_phase_ids
next_ids = data_phase.next_phase_ids
- # it should nither be in prev_ids nor in next_ids
+ # it should neither be in prev_ids nor in next_ids
if (data_phase in prev_ids) or (data_phase in next_ids):
return False
ids = [id for id in prev_ids if id in next_ids]
@@ -235,7 +235,7 @@ class project_resource_allocation(osv.osv):
_columns = {
'resource_id': fields.many2one('resource.resource', 'Resource', required=True),
'phase_id': fields.many2one('project.phase', 'Project Phase', required=True),
- 'useability': fields.float('Useability', help="Useability of this ressource for this project phase in percentage (=50%)"),
+ 'useability': fields.float('Usability', help="Usability of this resource for this project phase in percentage (=50%)"),
}
_defaults = {
'useability': 100,
diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml
index 6fc07eb9274..7eedf814817 100644
--- a/addons/project_long_term/project_long_term_view.xml
+++ b/addons/project_long_term/project_long_term_view.xml
@@ -230,7 +230,7 @@
-
+
diff --git a/addons/project_mrp/i18n/pl.po b/addons/project_mrp/i18n/pl.po
index 22c5097c897..7fd2d0f39f7 100644
--- a/addons/project_mrp/i18n/pl.po
+++ b/addons/project_mrp/i18n/pl.po
@@ -7,19 +7,19 @@ 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 21:08+0000\n"
+"PO-Revision-Date: 2010-05-25 15:08+0000\n"
"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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:13+0000\n"
+"X-Launchpad-Export-Date: 2010-05-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: project_mrp
#: model:process.node,note:project_mrp.process_node_procuretasktask0
msgid "For each product, on type service and on order"
-msgstr ""
+msgstr "Dla każdego produktu o typie usługa i na zamówienie"
#. module: project_mrp
#: model:process.node,name:project_mrp.process_node_mrptask0
@@ -31,7 +31,7 @@ msgstr "Zadanie"
#: model:process.transition,note:project_mrp.process_transition_ordertask0
msgid "If procure method is Make to order and supply method is produce"
msgstr ""
-"Jeśli metoda nabycia jest \"Na zamówienie' i metoda zaopatrzenia jest "
+"Jeśli metoda nabycia jest 'Na zamówienie' i metoda zaopatrzenia jest "
"'Produkcja'"
#. module: project_mrp
@@ -57,29 +57,29 @@ msgstr "Zarządzanie projektami - Integracja ze sprzedażą i MRP"
#. module: project_mrp
#: model:process.transition,name:project_mrp.process_transition_procuretask0
msgid "Procure Task"
-msgstr ""
+msgstr "Utwórz zadanie"
#. module: project_mrp
#: model:process.node,note:project_mrp.process_node_mrptask0
msgid "A task is created to provide the service."
-msgstr ""
+msgstr "Utworzono zadanie dla wykonywanej usługi"
#. module: project_mrp
#: model:process.transition,name:project_mrp.process_transition_ordertask0
msgid "Order Task"
-msgstr ""
+msgstr "Zamów zadanie"
#. module: project_mrp
#: model:process.node,name:project_mrp.process_node_saleordertask0
msgid "Sale Order Task"
-msgstr ""
+msgstr "Zadanie do zamówienia sprzedaży"
#. module: project_mrp
#: model:process.transition,name:project_mrp.process_transition_createtask0
msgid "Create Task"
-msgstr ""
+msgstr "Utwórz zadanie"
#. module: project_mrp
#: model:process.node,note:project_mrp.process_node_saleordertask0
msgid "In case you sell services on sale order"
-msgstr ""
+msgstr "W przypadku sprzedaży usług na zamówienie sprzedaży"
diff --git a/addons/project_planning/__openerp__.py b/addons/project_planning/__openerp__.py
index cbc30a912e7..87a68a2e410 100644
--- a/addons/project_planning/__openerp__.py
+++ b/addons/project_planning/__openerp__.py
@@ -32,7 +32,7 @@ This module is based on the analytic accounting and is totally integrated with
* the holidays management
* the project management
-So that, each department manager can know if someone in his team has still unaloccated time for a given planning (taking in consideration the validated leaves) or if he still needs to encode tasks.
+So that, each department manager can know if someone in his team has still unallocated time for a given planning (taking in consideration the validated leaves) or if he still needs to encode tasks.
At the end of the month, the planning manager can also check if the encoded timesheets are respecting the planned time on each analytic account.
""",
diff --git a/addons/project_planning/project_planning_view.xml b/addons/project_planning/project_planning_view.xml
index 7dbf2195c16..0ebbcd8e519 100644
--- a/addons/project_planning/project_planning_view.xml
+++ b/addons/project_planning/project_planning_view.xml
@@ -112,11 +112,7 @@
-<<<<<<< TREE
-
-=======
->>>>>>> MERGE-SOURCE
diff --git a/addons/project_retro_planning/__openerp__.py b/addons/project_retro_planning/__openerp__.py
index 4d89af6bb28..80601db9e81 100644
--- a/addons/project_retro_planning/__openerp__.py
+++ b/addons/project_retro_planning/__openerp__.py
@@ -25,7 +25,7 @@
'version': '0.1',
'category': 'Generic Modules/Projects & Services',
'description': """
- - If deadline date of project is changed will
+ - If deadline date of project is changed
then the deadline date for all the tasks will change to the same """,
'author': 'Tiny',
'depends': ['base', 'project'],
diff --git a/addons/project_timesheet/i18n/pl.po b/addons/project_timesheet/i18n/pl.po
index 6d000c26b4f..fcc33100d02 100644
--- a/addons/project_timesheet/i18n/pl.po
+++ b/addons/project_timesheet/i18n/pl.po
@@ -7,21 +7,21 @@ 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-08 15:12+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-25 15:04+0000\n"
+"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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:16+0000\n"
+"X-Launchpad-Export-Date: 2010-05-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: project_timesheet
#: model:ir.module.module,shortdesc:project_timesheet.module_meta_information
msgid "Project Timesheet"
-msgstr ""
+msgstr "Karta czasu pracy projektu"
#. module: project_timesheet
#: field:project.task.work,hr_analytic_timesheet_id:0
msgid "Related Timeline Id"
-msgstr ""
+msgstr "ID związanej karty czasu pracy"
diff --git a/addons/project_timesheet/report/task_report_view.xml b/addons/project_timesheet/report/task_report_view.xml
index 7093582d7fc..35a7c9f3de6 100644
--- a/addons/project_timesheet/report/task_report_view.xml
+++ b/addons/project_timesheet/report/task_report_view.xml
@@ -78,7 +78,7 @@
-
+
@@ -96,7 +96,7 @@
domain="[('priority','=','4')]"/>
-
+
diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml
index 8f76d4b409b..8aa643d1c43 100644
--- a/addons/purchase/purchase_view.xml
+++ b/addons/purchase/purchase_view.xml
@@ -163,7 +163,7 @@
-
+
diff --git a/addons/purchase/report/purchase_report_view.xml b/addons/purchase/report/purchase_report_view.xml
index 49caced7a6b..0cfc357b51f 100644
--- a/addons/purchase/report/purchase_report_view.xml
+++ b/addons/purchase/report/purchase_report_view.xml
@@ -88,7 +88,29 @@
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -113,28 +135,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/addons/purchase_requisition/purchase_requisition_view.xml b/addons/purchase_requisition/purchase_requisition_view.xml
index 72f11069fcf..4a4587f5f04 100644
--- a/addons/purchase_requisition/purchase_requisition_view.xml
+++ b/addons/purchase_requisition/purchase_requisition_view.xml
@@ -127,7 +127,7 @@
-
+
diff --git a/addons/report_analytic/i18n/pl.po b/addons/report_analytic/i18n/pl.po
index 906dafc61c1..24bd7fd6d0b 100644
--- a/addons/report_analytic/i18n/pl.po
+++ b/addons/report_analytic/i18n/pl.po
@@ -7,19 +7,19 @@ 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-08 16:36+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-25 16:48+0000\n"
+"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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:59+0000\n"
+"X-Launchpad-Export-Date: 2010-05-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: report_analytic
#: model:ir.model,name:report_analytic.model_report_analytic_account_close
msgid "Analytic account to close"
-msgstr ""
+msgstr "Konto analityczne do zamknięcia"
#. module: report_analytic
#: constraint:ir.model:0
@@ -32,7 +32,7 @@ msgstr ""
#. module: report_analytic
#: field:report.analytic.account.close,quantity_max:0
msgid "Max. Quantity"
-msgstr ""
+msgstr "Maksymalna ilość"
#. module: report_analytic
#: constraint:ir.ui.view:0
@@ -42,27 +42,27 @@ msgstr "XML niewłaściwy dla tej architektury wyświetlania!"
#. module: report_analytic
#: field:report.analytic.account.close,name:0
msgid "Analytic account"
-msgstr ""
+msgstr "Konto analityczne"
#. module: report_analytic
#: field:report.analytic.account.close,state:0
msgid "State"
-msgstr ""
+msgstr "Stan"
#. module: report_analytic
#: field:report.analytic.account.close,date_deadline:0
msgid "Deadline"
-msgstr ""
+msgstr "Termin"
#. module: report_analytic
#: 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_analytic
#: model:ir.module.module,shortdesc:report_analytic.module_meta_information
msgid "Analytic Account Reporting"
-msgstr ""
+msgstr "Raportowanie kont analitycznych"
#. module: report_analytic
#: field:report.analytic.account.close,partner_id:0
@@ -72,16 +72,16 @@ msgstr ""
#. module: report_analytic
#: field:report.analytic.account.close,balance:0
msgid "Balance"
-msgstr ""
+msgstr "Saldo"
#. module: report_analytic
#: model:ir.actions.act_window,name:report_analytic.action_analytic_account_tree
#: model:ir.ui.menu,name:report_analytic.menu_action_analytic_account_tree
#: view:report.analytic.account.close:0
msgid "Expired analytic accounts"
-msgstr ""
+msgstr "Konta analityczne przeterminowane"
#. module: report_analytic
#: field:report.analytic.account.close,quantity:0
msgid "Quantity"
-msgstr ""
+msgstr "Ilość"
diff --git a/addons/report_intrastat/__openerp__.py b/addons/report_intrastat/__openerp__.py
index 5fb8f7e564c..de9d3af1e44 100644
--- a/addons/report_intrastat/__openerp__.py
+++ b/addons/report_intrastat/__openerp__.py
@@ -26,7 +26,7 @@
'category': 'Generic Modules/Inventory Control',
'description': """
A module that adds intrastat reports.
- This module gives the details of the goods traded between the countries of Europan Union """,
+ This module gives the details of the goods traded between the countries of European Union """,
'author': 'Tiny',
'website': 'http://www.openerp.com',
'depends': ['base', 'product', 'stock', 'sale', 'purchase'],
diff --git a/addons/report_intrastat/report_intrastat.py b/addons/report_intrastat/report_intrastat.py
index 8d986aa4c64..3bf58ea034e 100644
--- a/addons/report_intrastat/report_intrastat.py
+++ b/addons/report_intrastat/report_intrastat.py
@@ -66,7 +66,7 @@ class report_intrastat(osv.osv):
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
'supply_units':fields.float('Supply Units', readonly=True),
'ref':fields.char('Source document',size=64, readonly=True),
- 'code': fields.char('Country code', size="2", readonly=True),
+ 'code': fields.char('Country code', size=2, readonly=True),
'intrastat_id': fields.many2one('report.intrastat.code', 'Intrastat code', readonly=True),
'weight': fields.float('Weight', readonly=True),
'value': fields.float('Value', readonly=True),
diff --git a/addons/resource/resource.py b/addons/resource/resource.py
index 172d7e23a44..225a6626ab1 100644
--- a/addons/resource/resource.py
+++ b/addons/resource/resource.py
@@ -35,7 +35,7 @@ class resource_calendar(osv.osv):
'manager' : fields.many2one('res.users', 'Workgroup manager'),
}
_defaults = {
- 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'resource.calendar', c)
+ 'company_id': lambda self, cr, uid, c: self.pool.get('res.company')._company_default_get(cr, uid, 'resource.calendar', context=c)
}
def interval_min_get(self, cr, uid, id, dt_from, hours, resource=False):
diff --git a/addons/resource/resource_view.xml b/addons/resource/resource_view.xml
index 68cd5ccbe9b..579f6976814 100644
--- a/addons/resource/resource_view.xml
+++ b/addons/resource/resource_view.xml
@@ -14,10 +14,10 @@
-
+
-
+
@@ -36,7 +36,7 @@
-
+
@@ -50,13 +50,14 @@
-
+
-
+
+
@@ -70,7 +71,7 @@
-
+
@@ -85,7 +86,7 @@
-
+
@@ -162,11 +163,11 @@
-
+
-
+
@@ -177,10 +178,10 @@
-
+
-
+
@@ -200,7 +201,7 @@
-
+
@@ -216,7 +217,7 @@
-
+
diff --git a/addons/sale/report/sale_report.py b/addons/sale/report/sale_report.py
index c8b616ced78..e713c479f72 100644
--- a/addons/sale/report/sale_report.py
+++ b/addons/sale/report/sale_report.py
@@ -36,16 +36,15 @@ class sale_report(osv.osv):
('10','October'), ('11','November'), ('12','December')], 'Month',readonly=True),
'day': fields.char('Day', size=128, readonly=True),
'product_id':fields.many2one('product.product', 'Product', readonly=True),
- 'product_qty':fields.float('Qty', readonly=True),
+ 'product_qty':fields.float('# of Qty', readonly=True),
'partner_id':fields.many2one('res.partner', 'Partner', readonly=True),
'shop_id':fields.many2one('sale.shop', 'Shop', readonly=True),
'company_id':fields.many2one('res.company', 'Company', readonly=True),
- 'payment_term': fields.many2one('account.payment.term', 'Payment Term',readonly=True),
- 'fiscal_position': fields.many2one('account.fiscal.position', 'Fiscal Position',readonly=True),
'user_id':fields.many2one('res.users', 'Salesman', readonly=True),
'price_total':fields.float('Total Price', readonly=True),
- 'delay':fields.float('Avg Closing Days', digits=(16,2), readonly=True),
+ 'delay':fields.float('Days to Close', digits=(16,2), readonly=True),
'price_average':fields.float('Average Price', readonly=True),
+ 'categ_id': fields.many2one('product.category','Category of Product', readonly=True),
'nbr':fields.integer('# of Lines', readonly=True),
'state': fields.selection([
('draft', 'Quotation'),
@@ -57,12 +56,8 @@ class sale_report(osv.osv):
('done', 'Done'),
('cancel', 'Cancelled')
], 'Order State', readonly=True),
- 'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address Name', readonly=True),
- 'partner_order_id': fields.many2one('res.partner.address', 'Ordering Contact Name', readonly=True),
- 'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address Name', readonly=True),
- 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True),
+ 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', readonly=True),
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True),
- 'date_confirm': fields.date('Confirmation Date', readonly=True)
}
_order = 'date desc'
def init(self, cr):
@@ -80,42 +75,32 @@ class sale_report(osv.osv):
s.partner_id as partner_id,
s.user_id as user_id,
s.shop_id as shop_id,
- s.fiscal_position as fiscal_position,
- s.payment_term as payment_term,
s.company_id as company_id,
extract(epoch from avg(s.date_confirm-s.create_date))/(24*60*60)::decimal(16,2) as delay,
sum(l.product_uom_qty*l.price_unit) as price_total,
(sum(l.product_uom_qty*l.price_unit)/sum(l.product_uom_qty * u.factor))::decimal(16,2) as price_average,
count(*) as nbr,
s.state,
- s.partner_invoice_id as partner_invoice_id,
- s.partner_order_id as partner_order_id,
- s.partner_shipping_id as partner_shipping_id,
+ pt.categ_id,
s.pricelist_id as pricelist_id,
- s.project_id as analytic_account_id,
- s.date_confirm as date_confirm
+ s.project_id as analytic_account_id
from
sale_order_line l
- left join
- sale_order s on (s.id=l.order_id)
- left join product_uom u on (u.id=l.product_uom)
+ left join sale_order s on (s.id=l.order_id)
+ left join product_uom u on (u.id=l.product_uom)
+ left join product_template pt on (pt.id=l.product_id)
group by
s.date_order,
s.partner_id,
l.product_id,
l.product_uom,
s.user_id,
+ pt.categ_id,
s.state,
s.shop_id,
s.company_id,
- s.fiscal_position,
- s.payment_term,
- s.partner_invoice_id,
- s.partner_order_id,
- s.partner_shipping_id,
s.pricelist_id,
- s.project_id,
- s.date_confirm
+ s.project_id
)
""")
sale_report()
@@ -212,7 +197,7 @@ class product_bought_by_sale_order(osv.osv):
where
s.state='manual' or s.state='progress'
group by
- l.product_id, to_char(l.create_date, 'MM'), to_char(l.create_date, 'YYYY')
+ l.product_id, to_char(l.create_date, 'MM'), to_char(l.create_date, 'YYYY')
)
""")
product_bought_by_sale_order()
diff --git a/addons/sale/report/sale_report_view.xml b/addons/sale/report/sale_report_view.xml
index fe88fa33555..2fca6dedd5a 100644
--- a/addons/sale/report/sale_report_view.xml
+++ b/addons/sale/report/sale_report_view.xml
@@ -1,35 +1,31 @@
+
sale.report.treesale.reporttree
-
+
-
+
-
-
+
+
+
-
-
-
-
-
-
@@ -39,9 +35,10 @@
sale.reportgraph
-
+
+
@@ -51,43 +48,58 @@
sale.reportsearch
-
+
-
-
+
+
+ string=" 7 Days "
+ separator="1"
+ domain="[('date','<=', time.strftime('%%Y-%%m-%%d')), ('date','>',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
+ help="Tasks during last 7 days"/>
+ string="Quotations"
+ domain="[('state','=','draft')]"/>
-
-
+ string="Sales"
+ domain="[('state','not in',('draft','done','cancel'))]"/>
+
+
+ string="My Sales"
+ help="My Sales"
+ domain="[('user_id','=',uid)]"/>
-
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -110,48 +122,24 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sales Orders
+ Sales Analysissale.reportformtree,graph
- {'search_default_month':1,'search_default_User':1,'search_default_user_id':uid,'group_by_no_leaf':1,'group_by':[]}
+ {'search_default_month':1,'search_default_User':1,'group_by_no_leaf':1,'group_by':[]}
-
-
+
+ sale.order.by.clients.treesale.order.by.clientstree
@@ -216,7 +204,7 @@
-
+ product.bought.by.sale.order.treeproduct.bought.by.sale.ordertree
@@ -283,5 +271,6 @@
tree,graph
+
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 272ee0ecd70..43d8d6768cc 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -227,7 +227,7 @@ class sale_order(osv.osv):
'partner_id': fields.many2one('res.partner', 'Customer', readonly=True, states={'draft': [('readonly', False)]}, required=True, change_default=True, select=True),
'partner_invoice_id': fields.many2one('res.partner.address', 'Invoice Address', readonly=True, required=True, states={'draft': [('readonly', False)]}),
'partner_order_id': fields.many2one('res.partner.address', 'Ordering Contact', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="The name and address of the contact who requested the order or quotation."),
- 'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}),
+ 'partner_shipping_id': fields.many2one('res.partner.address', 'Shipping Address', readonly=True, required=True, states={'draft': [('readonly', False)]}, help="Shipping address for current sale order"),
'incoterm': fields.selection(_incoterm_get, 'Incoterm', size=3),
'picking_policy': fields.selection([('direct', 'Partial Delivery'), ('one', 'Complete Delivery')],
@@ -243,7 +243,7 @@ class sale_order(osv.osv):
- The 'Shipping & Manual Invoice' will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice.
- The 'Invoice on Order After Delivery' choice will generate the draft invoice based on sale order after all picking lists have been finished.
- The 'Invoice from the picking' choice is used to create an invoice during the picking process."""),
- 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}),
+ 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}, help="Pricelist version for current sale order"),
'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft': [('readonly', False)]}),
'order_line': fields.one2many('sale.order.line', 'order_id', 'Order Lines', readonly=True, states={'draft': [('readonly', False)]}),
@@ -292,7 +292,7 @@ class sale_order(osv.osv):
'partner_invoice_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['invoice'])['invoice'],
'partner_order_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['contact'])['contact'],
'partner_shipping_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').address_get(cr, uid, [context['partner_id']], ['delivery'])['delivery'],
- 'pricelist_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').browse(cr, uid, context['partner_id']).property_product_pricelist.id,
+# 'pricelist_id': lambda self, cr, uid, context: context.get('partner_id', False) and self.pool.get('res.partner').browse(cr, uid, context['partner_id']).property_product_pricelist.id,
}
_order = 'name desc'
@@ -824,7 +824,7 @@ class sale_order_line(osv.osv):
'property_ids': fields.many2many('mrp.property', 'sale_order_line_property_rel', 'order_id', 'property_id', 'Properties', readonly=True, states={'draft':[('readonly',False)]}),
'address_allotment_id': fields.many2one('res.partner.address', 'Allotment Partner'),
'product_uom_qty': fields.float('Quantity (UoM)', digits=(16, 2), required=True, readonly=True, states={'draft':[('readonly',False)]}),
- 'product_uom': fields.many2one('product.uom', 'Product UoM', required=True, readonly=True, states={'draft':[('readonly',False)]}),
+ 'product_uom': fields.many2one('product.uom', 'Unit of Measure ', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'product_uos_qty': fields.float('Quantity (UoS)', readonly=True, states={'draft':[('readonly',False)]}),
'product_uos': fields.many2one('product.uom', 'Product UoS'),
'product_packaging': fields.many2one('product.packaging', 'Packaging'),
@@ -1036,7 +1036,7 @@ class sale_order_line(osv.osv):
if product_obj.uos_id.category_id.id != uos2.category_id.id:
uos = False
else:
- uos = False
+ uos = False
if product_obj.description_sale:
result['notes'] = product_obj.description_sale
fpos = fiscal_position and self.pool.get('account.fiscal.position').browse(cr, uid, fiscal_position) or False
diff --git a/addons/sale/sale_view.xml b/addons/sale/sale_view.xml
index 5add715a0cc..c3a8708decb 100644
--- a/addons/sale/sale_view.xml
+++ b/addons/sale/sale_view.xml
@@ -225,7 +225,7 @@
-
+
@@ -260,7 +260,7 @@
-
+
@@ -380,7 +380,8 @@
-
+
+
@@ -397,12 +398,12 @@
-
-
-
+
+
+
@@ -443,10 +444,14 @@
+ />
+ domain="[('invoiced','<>', 1),('state','<>','draft'),('state','<>','cancel')]"
+ />
+
@@ -468,7 +473,6 @@
sale.order.lineformtree,form,graph
- {"search_default_uninvoiced":1,"search_default_unshipped":1}
diff --git a/addons/sale_journal/__openerp__.py b/addons/sale_journal/__openerp__.py
index b7c5f4fd512..d204d4a3ee5 100644
--- a/addons/sale_journal/__openerp__.py
+++ b/addons/sale_journal/__openerp__.py
@@ -28,7 +28,7 @@
The sale journal modules allows you to categorise your
sales and deliveries (picking lists) between different journals.
This module is very helpful for bigger companies that
- works by departments.
+ work by departments.
You can use journal for different purposes, some examples:
* isolate sales of different departments
diff --git a/addons/sale_journal/i18n/pl.po b/addons/sale_journal/i18n/pl.po
index dc903684be6..089e36cb5cd 100644
--- a/addons/sale_journal/i18n/pl.po
+++ b/addons/sale_journal/i18n/pl.po
@@ -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: 2009-11-17 10:39+0000\n"
-"Last-Translator: Fabien (Open ERP) \n"
+"PO-Revision-Date: 2010-05-26 07:02+0000\n"
+"Last-Translator: Grzegorz Grzelak (Cirrus.pl) \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-Launchpad-Export-Date: 2010-05-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: sale_journal
@@ -25,35 +25,35 @@ msgstr "Sprzedaż miesięczna"
#: model:ir.actions.act_window,name:sale_journal.act_sale_journal_picking_journal_2_stock_picking_assigned
#: model:ir.actions.act_window,name:sale_journal.act_sale_journal_sale_journal_2_stock_picking_assigned
msgid "Assigned packing"
-msgstr ""
+msgstr "Przypisane przesunięcie"
#. module: sale_journal
#: selection:sale_journal.invoice.type.stats,state:0
#: selection:sale_journal.picking.stats,state:0
msgid "assigned"
-msgstr "Przypisany"
+msgstr ""
#. module: sale_journal
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
-msgstr ""
+msgstr "Nieprawidłowa nazwa modelu w definicji akcji."
#. module: sale_journal
#: selection:sale_journal.sale.stats,state:0
msgid "Waiting Schedule"
-msgstr ""
+msgstr "Czeka na planowanie"
#. module: sale_journal
#: selection:sale_journal.invoice.type.stats,invoice_state:0
msgid "to be invoiced"
-msgstr "do zaksięgowania"
+msgstr ""
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_sale_journal_sale_journal
#: view:sale_journal.sale.journal:0
#: field:stock.picking,sale_journal_id:0
msgid "Sale Journal"
-msgstr ""
+msgstr "Dziennik sprzedaży"
#. module: sale_journal
#: field:sale_journal.sale.journal,sale_stats_ids:0
@@ -64,19 +64,19 @@ msgstr "Statystyki sprzedaży"
#: selection:sale_journal.invoice.type.stats,state:0
#: selection:sale_journal.picking.stats,state:0
msgid "waiting"
-msgstr "oczekuje"
+msgstr ""
#. module: sale_journal
#: view:sale_journal.picking.journal:0
#: view:sale_journal.sale.journal:0
msgid "Set to Draft"
-msgstr "Ustaw na wer.roboczą"
+msgstr "Ustaw na projekt"
#. module: sale_journal
#: field:sale_journal.picking.journal,date:0
#: field:sale_journal.sale.journal,date:0
msgid "Journal date"
-msgstr ""
+msgstr "Data dziennika"
#. module: sale_journal
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_picking_invoice_method
@@ -88,7 +88,7 @@ msgstr "Metoda pakowania wg faktur"
#. module: sale_journal
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_picking
msgid "Packing Journals"
-msgstr "Dzienniki pakowania"
+msgstr "Dzienniki przesunięć"
#. module: sale_journal
#: view:sale_journal.picking.journal:0
@@ -123,7 +123,7 @@ msgstr "Zarządzanie sprzedażą i dostawami przez dziennik"
#: selection:sale_journal.invoice.type.stats,state:0
#: selection:sale_journal.picking.stats,state:0
msgid "done"
-msgstr "gotowe"
+msgstr ""
#. module: sale_journal
#: field:sale_journal.invoice.type.stats,price_average:0
@@ -165,7 +165,7 @@ msgstr "Cena całkowita"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.action_definition_picking_journal
msgid "Packing journals"
-msgstr "Dzienniki pakowania"
+msgstr "Dzienniki przesunięć"
#. module: sale_journal
#: model:ir.ui.menu,name:sale_journal.menu_definition_report_sales
@@ -190,27 +190,27 @@ msgstr "Otwarte dzienniki"
#. module: sale_journal
#: view:sale_journal.picking.journal:0
msgid "Packing"
-msgstr ""
+msgstr "Lista przesunięć"
#. module: sale_journal
#: help:res.partner,property_invoice_type:0
msgid "The type of journal used for sales and packing."
-msgstr ""
+msgstr "Typ dziennika stosowany do sprzedaży i list przesunięć"
#. module: sale_journal
#: selection:sale_journal.invoice.type.stats,invoice_state:0
msgid "None"
-msgstr ""
+msgstr "Brak"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.action_sale_sale_stats_open_menu_month
msgid "Sales by journal (this month)"
-msgstr ""
+msgstr "Sprzedaż wg dziennika (bieżący miesiąc)"
#. module: sale_journal
#: selection:sale_journal.sale.stats,state:0
msgid "Manual in progress"
-msgstr ""
+msgstr "Ręczne w trakcie przetwarzania"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.action_definition_picking_journal_tree
@@ -218,28 +218,28 @@ msgstr ""
#: model:ir.actions.act_window,name:sale_journal.action_picking_picking_stats_open_menu_all
#: model:ir.actions.act_window,name:sale_journal.action_picking_picking_stats_open_menu_month
msgid "Packing by journal"
-msgstr ""
+msgstr "Listy przesunięć wg dziennika"
#. module: sale_journal
#: view:sale_journal.picking.journal:0
msgid "Cancel Packing"
-msgstr ""
+msgstr "Anuluj listę przesunięć"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.act_sale_journal_picking_journal_2_stock_picking_confirmed
#: model:ir.actions.act_window,name:sale_journal.act_sale_journal_sale_journal_2_stock_picking_confirmed
msgid "Confirmed packing"
-msgstr ""
+msgstr "Potwierdzone listy przesunięć"
#. module: sale_journal
#: selection:sale_journal.sale.stats,state:0
msgid "In progress"
-msgstr ""
+msgstr "W toku"
#. module: sale_journal
#: view:sale_journal.picking.stats:0
msgid "Packing by journals"
-msgstr ""
+msgstr "Listy przesunięć wg dzienników"
#. module: sale_journal
#: field:sale_journal.invoice.type.stats,name:0
@@ -258,7 +258,7 @@ msgstr "Stan faktury"
#: model:ir.actions.act_window,name:sale_journal.action_invoice_type_picking_stats_open_menu_month
#: view:sale_journal.invoice.type.stats:0
msgid "Packing by invoice method"
-msgstr ""
+msgstr "Listy przesunięć wg metod faktury"
#. module: sale_journal
#: field:sale_journal.sale.stats,state:0
@@ -268,7 +268,7 @@ msgstr "Stan zamówienia"
#. module: sale_journal
#: selection:sale_journal.sale.stats,state:0
msgid "Shipping Exception"
-msgstr ""
+msgstr "Wyjątek wysyłki"
#. module: sale_journal
#: field:sale_journal.invoice.type,note:0
@@ -281,7 +281,7 @@ msgstr "Uwaga"
#: selection:sale_journal.picking.journal,state:0
#: selection:sale_journal.sale.journal,state:0
msgid "Draft"
-msgstr "Roboczy"
+msgstr "Projekt"
#. module: sale_journal
#: selection:sale_journal.invoice.type.stats,state:0
@@ -292,7 +292,7 @@ msgstr ""
#. module: sale_journal
#: selection:sale_journal.sale.stats,state:0
msgid "Invoice Exception"
-msgstr ""
+msgstr "Wyjątek faktury"
#. module: sale_journal
#: field:sale_journal.picking.journal,date_validation:0
@@ -309,17 +309,17 @@ msgstr ""
#. module: sale_journal
#: field:sale_journal.invoice.type,active:0
msgid "Active"
-msgstr ""
+msgstr "Aktywne"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.act_sale_journal_sale_journal_2_sale_order_draft
msgid "Draft sales"
-msgstr "wer.robocza sprzedaży"
+msgstr "Projekt sprzedaży"
#. module: sale_journal
#: selection:sale_journal.sale.stats,state:0
msgid "Quotation"
-msgstr ""
+msgstr "Oferta"
#. module: sale_journal
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal
@@ -370,7 +370,7 @@ msgstr "Sprzedaż"
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_reporting
#: view:sale_journal.picking.journal:0
msgid "Packing Journal"
-msgstr ""
+msgstr "Dziennik list przesunięcia"
#. module: sale_journal
#: selection:sale_journal.picking.journal,state:0
@@ -382,7 +382,7 @@ msgstr "Gotowe"
#. module: sale_journal
#: selection:sale_journal.sale.stats,state:0
msgid "Cancel"
-msgstr ""
+msgstr "Anulowano"
#. module: sale_journal
#: field:sale_journal.picking.journal,picking_stats_ids:0
@@ -393,7 +393,7 @@ msgstr "Statystyka dziennika"
#: selection:sale_journal.picking.journal,state:0
#: selection:sale_journal.sale.journal,state:0
msgid "Open"
-msgstr ""
+msgstr "Otwarte"
#. module: sale_journal
#: constraint:ir.model:0
@@ -423,7 +423,7 @@ msgstr "Moje otwarte dzienniki"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.action_invoice_type_picking_stats_open
msgid "Statistics on packing to invoice"
-msgstr ""
+msgstr "Statystyka list przesunięć wg faktur"
#. module: sale_journal
#: view:sale_journal.sale.journal:0
@@ -436,23 +436,23 @@ msgstr "Anuluj sprzedaż"
#: field:sale_journal.invoice.type,name:0
#: field:stock.picking,invoice_type_id:0
msgid "Invoice Type"
-msgstr ""
+msgstr "Typ faktury"
#. module: sale_journal
#: selection:sale_journal.invoice.type.stats,invoice_state:0
msgid "invoiced"
-msgstr "zafakturowano"
+msgstr ""
#. module: sale_journal
#: selection:sale_journal.invoice.type.stats,state:0
#: selection:sale_journal.picking.stats,state:0
msgid "confirmed"
-msgstr "Potwierdzono"
+msgstr ""
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_sale_journal_picking_stats
msgid "Packing lists by Journal"
-msgstr ""
+msgstr "Listy przesunięć wg dziennika"
#. module: sale_journal
#: field:sale_journal.invoice.type.stats,quantity:0
@@ -483,7 +483,7 @@ msgstr "Metoda fakturowania"
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_reporting_this
#: model:ir.ui.menu,name:sale_journal.menu_definition_report_sales_this_month
msgid "This Month"
-msgstr ""
+msgstr "W tym miesiącu"
#. module: sale_journal
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_sales
@@ -506,7 +506,7 @@ msgstr "Nie pogrupowane"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.action_invoice_type_picking_open
msgid "Packing to invoice"
-msgstr ""
+msgstr "Listy przesunięć do zafakturowania"
#. module: sale_journal
#: view:sale_journal.picking.journal:0
@@ -517,7 +517,7 @@ msgstr "Informacja dziennika"
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_sale_journal_invoice_type_stats
msgid "Stats on packing by invoice method"
-msgstr ""
+msgstr "Statystyka list przesunięć wg metody fakturowania"
#. module: sale_journal
#: model:ir.model,name:sale_journal.model_sale_journal_invoice_type
@@ -535,7 +535,7 @@ msgstr "Stany"
#: model:ir.ui.menu,name:sale_journal.menu_picking_picking_stats_open_all
#: model:ir.ui.menu,name:sale_journal.menu_picking_picking_stats_open_menu
msgid "Packing by Journal"
-msgstr ""
+msgstr "Listy przesunięć wg dziennika"
#. module: sale_journal
#: view:sale_journal.picking.journal:0
@@ -546,7 +546,7 @@ msgstr "Zamknij dziennik"
#. module: sale_journal
#: model:ir.ui.menu,name:sale_journal.menu_definition_journal_picking_invoice
msgid "Packing to Invoice"
-msgstr ""
+msgstr "Lista przesunięć do zafakturowania"
#. module: sale_journal
#: model:ir.actions.act_window,name:sale_journal.act_sale_journal_sale_journal_2_sale_order_approved
diff --git a/addons/scrum/__openerp__.py b/addons/scrum/__openerp__.py
index 3170baca2a1..2f4007793ac 100644
--- a/addons/scrum/__openerp__.py
+++ b/addons/scrum/__openerp__.py
@@ -25,7 +25,7 @@
'version': '1.0',
'category': 'Enterprise Specific Modules/Information Technology',
'description': """
- This modules implements all concepts defined by the scrum project
+ This module implements all concepts defined by the scrum project
management methodology for IT companies:
* Project with sprints, product owner, scrum master
* Sprints with reviews, daily meetings, feedbacks
@@ -36,10 +36,10 @@
* Mid-term, long-term road-map
* Customers/functional requests VS technical ones
- It also create a new reporting:
+ It also creates a new reporting:
* Burn-down chart
- The scrum projects and tasks inherits from the real projects and
+ The scrum projects and tasks inherit from the real projects and
tasks, so you can continue working on normal tasks that will also
include tasks from scrum projects.
diff --git a/addons/scrum/scrum_view.xml b/addons/scrum/scrum_view.xml
index b9c4e0149b8..107fa97b13c 100644
--- a/addons/scrum/scrum_view.xml
+++ b/addons/scrum/scrum_view.xml
@@ -151,7 +151,7 @@
-
+
diff --git a/addons/stock/partner_view.xml b/addons/stock/partner_view.xml
index 487dbcf55ea..be2ed4bfc55 100644
--- a/addons/stock/partner_view.xml
+++ b/addons/stock/partner_view.xml
@@ -14,8 +14,8 @@
-
-
+
+
diff --git a/addons/stock/product.py b/addons/stock/product.py
index ad189ee546a..dc300994232 100644
--- a/addons/stock/product.py
+++ b/addons/stock/product.py
@@ -148,10 +148,10 @@ class product_product(osv.osv):
return res
def get_product_available(self,cr,uid,ids,context=None):
- if not context:
+ if context is None:
context = {}
- states=context.get('states',[])
- what=context.get('what',())
+ states = context.get('states',[])
+ what = context.get('what',())
if not ids:
ids = self.search(cr, uid, [])
res = {}.fromkeys(ids, 0.0)
@@ -184,9 +184,9 @@ class product_product(osv.osv):
# build the list of ids of children of the location given by id
if context.get('compute_child',True):
child_location_ids = self.pool.get('stock.location').search(cr, uid, [('location_id', 'child_of', location_ids)])
- location_ids= len(child_location_ids) and child_location_ids or location_ids
+ location_ids = child_location_ids or location_ids
else:
- location_ids= location_ids
+ location_ids = location_ids
uoms_o = {}
product2uom = {}
diff --git a/addons/stock/report/report_stock.py b/addons/stock/report/report_stock.py
index 3e7fe147c73..81e2bb125fd 100644
--- a/addons/stock/report/report_stock.py
+++ b/addons/stock/report/report_stock.py
@@ -95,7 +95,7 @@ class stock_report_tracklots(osv.osv):
}
def init(self, cr):
- drop_view_if_exists(cr, 'stock_report_prodlots')
+ drop_view_if_exists(cr, 'stock_report_tracklots')
cr.execute("""
create or replace view stock_report_tracklots as (
@@ -150,7 +150,7 @@ class report_stock_lines_date(osv.osv):
'date': fields.datetime('Latest Inventory Date'),
}
def init(self, cr):
- drop_view_if_exists(cr, 'stock_report_prodlots')
+ drop_view_if_exists(cr, 'report_stock_lines_date')
cr.execute("""
create or replace view report_stock_lines_date as (
select
diff --git a/addons/stock/report/report_stock_move_view.xml b/addons/stock/report/report_stock_move_view.xml
index 3a7b233504a..673fd14e76e 100755
--- a/addons/stock/report/report_stock_move_view.xml
+++ b/addons/stock/report/report_stock_move_view.xml
@@ -20,7 +20,7 @@
-
+
@@ -75,7 +75,7 @@
icon="terp-stock"
domain="[('state','=','done')]"
help = "Completed Stock-Moves"/>
-
+
@@ -83,15 +83,8 @@
-
-
-
-
-
-
-
-
+
@@ -102,6 +95,13 @@
+
+
+
+
+
+
+
@@ -118,9 +118,9 @@
+ parent="stock.menu_stock_root" groups="base.group_user"/>
-
+
-
\ No newline at end of file
+
diff --git a/addons/stock/report/report_stock_picking_view.xml b/addons/stock/report/report_stock_picking_view.xml
index 62d1b06fd19..c343b09931a 100644
--- a/addons/stock/report/report_stock_picking_view.xml
+++ b/addons/stock/report/report_stock_picking_view.xml
@@ -54,22 +54,41 @@
-
-
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -82,20 +101,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 7ef8920f305..fadcd6f77f1 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -1214,7 +1214,7 @@ class stock_move(osv.osv):
'priority': fields.selection([('0', 'Not urgent'), ('1', 'Urgent')], 'Priority'),
'date': fields.datetime('Created Date'),
- 'date_planned': fields.datetime('Date', required=True, help="Scheduled date for the movement of the products or real date if the move is done."),
+ 'date_planned': fields.datetime('Date Planned', required=True, help="Scheduled date for the movement of the products or real date if the move is done."),
'date_expected': fields.datetime('Date Expected', readonly=True,required=True, help="Scheduled date for the movement of the products"),
'product_id': fields.many2one('product.product', 'Product', required=True, select=True),
diff --git a/addons/stock/stock_view.xml b/addons/stock/stock_view.xml
index 5cb543b748e..970c55f9bd8 100644
--- a/addons/stock/stock_view.xml
+++ b/addons/stock/stock_view.xml
@@ -55,7 +55,7 @@
-
+
@@ -341,7 +341,7 @@
-
+
@@ -652,7 +652,7 @@
-
+
-
+
@@ -777,7 +777,7 @@
-
+
-
+
-
+
-
+
-
+
@@ -1225,7 +1225,7 @@
-
+
@@ -1286,7 +1286,7 @@
-
+
@@ -1312,18 +1312,16 @@
tree
-
-
+
+
-
-
-
+
-
+
@@ -1362,7 +1360,7 @@
-
+
@@ -1395,31 +1393,39 @@
stock.move.searchstock.movesearch
-
+
-
+
+
+
-
-
+
+
+
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
- All Moves
+ Stock Movesstock.moveir.actions.act_windowform
@@ -1611,10 +1617,10 @@
src_model="stock.location"/>
@@ -1626,7 +1632,7 @@
src_model="stock.move"/>
\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-27 03:42+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: subscription
@@ -83,7 +83,7 @@ msgstr "Pola dokumentu subskrypcji"
#. module: subscription
#: field:subscription.subscription,interval_number:0
msgid "Interval Qty"
-msgstr ""
+msgstr "Il. interwał"
#. module: subscription
#: view:subscription.subscription:0
diff --git a/addons/survey/__openerp__.py b/addons/survey/__openerp__.py
index ee4099828f2..47840d7082f 100644
--- a/addons/survey/__openerp__.py
+++ b/addons/survey/__openerp__.py
@@ -25,7 +25,7 @@
'version': '1.0',
'category': 'Tools',
'description': """
- This module is used for surveing. It depends on the answers or reviews of some questions by different users.
+ This module is used for surveying. It depends on the answers or reviews of some questions by different users.
A survey may have multiple pages. Each page may contain multiple questions and each question may have multiple answers.
Different users may give different answers of question and according to that survey is done.
Partners are also sent mails with user name and password for the invitation of the survey