From 7d7fe62ca8147a8d6ebd323034a64d7cc076a0c8 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Fri, 25 Jan 2013 16:49:41 +0100
Subject: [PATCH 01/60] [IMP] procurement: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130125154941-8jbzke0diaqhf5j3
---
addons/procurement/schedulers.py | 21 ++++++++-------------
1 file changed, 8 insertions(+), 13 deletions(-)
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 3cb34d6bdff..76b31cc6da3 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -62,8 +62,7 @@ class procurement_order(osv.osv):
procurement_obj = self.pool.get('procurement.order')
if not ids:
ids = procurement_obj.search(cr, uid, [('state', '=', 'exception')], order="date_planned")
- for id in ids:
- wf_service.trg_validate(uid, 'procurement.order', id, 'button_restart', cr)
+ self.signal_button_restart(cr, uid, ids)
if use_new_cursor:
cr.commit()
company = self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id
@@ -78,7 +77,7 @@ class procurement_order(osv.osv):
ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_order')], offset=offset, limit=500, order='priority, date_planned', context=context)
for proc in procurement_obj.browse(cr, uid, ids, context=context):
if maxdate >= proc.date_planned:
- wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
+ self.signal_button_check(cr, uid, [proc.id])
else:
offset += 1
report_later += 1
@@ -100,7 +99,7 @@ class procurement_order(osv.osv):
ids = procurement_obj.search(cr, uid, [('state', '=', 'confirmed'), ('procure_method', '=', 'make_to_stock')], offset=offset)
for proc in procurement_obj.browse(cr, uid, ids):
if maxdate >= proc.date_planned:
- wf_service.trg_validate(uid, 'procurement.order', proc.id, 'button_check', cr)
+ self.signal_button_check(cr, uid, [proc.id])
report_ids.append(proc.id)
else:
report_later += 1
@@ -178,8 +177,8 @@ class procurement_order(osv.osv):
proc_id = proc_obj.create(cr, uid,
self._prepare_automatic_op_procurement(cr, uid, product, warehouse, location_id, context=context),
context=context)
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_check', cr)
+ self.signal_button_confirm(cr, uid, [proc_id])
+ self.signal_button_check(cr, uid, [proc_id])
return True
def _get_orderpoint_date_planned(self, cr, uid, orderpoint, start_date, context=None):
@@ -254,7 +253,7 @@ class procurement_order(osv.osv):
to_generate = qty
for proc_data in procure_datas:
if to_generate >= proc_data['product_qty']:
- wf_service.trg_validate(uid, 'procurement.order', proc_data['id'], 'button_confirm', cr)
+ self.signal_button_confirm(cr, uid, [proc_data['id']])
procurement_obj.write(cr, uid, [proc_data['id']], {'origin': op.name}, context=context)
to_generate -= proc_data['product_qty']
if not to_generate:
@@ -265,10 +264,8 @@ class procurement_order(osv.osv):
proc_id = procurement_obj.create(cr, uid,
self._prepare_orderpoint_procurement(cr, uid, op, qty, context=context),
context=context)
- wf_service.trg_validate(uid, 'procurement.order', proc_id,
- 'button_confirm', cr)
- wf_service.trg_validate(uid, 'procurement.order', proc_id,
- 'button_check', cr)
+ self.signal_button_confirm(cr, uid, [proc_id])
+ self.signal_button_check(cr, uid, [proc_id])
orderpoint_obj.write(cr, uid, [op.id],
{'procurement_id': proc_id}, context=context)
offset += len(ids)
@@ -279,6 +276,4 @@ class procurement_order(osv.osv):
cr.close()
return {}
-procurement_order()
-
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
From a2679597a0f3f3eaf6277e030ca2a9b44763f873 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Fri, 25 Jan 2013 17:53:55 +0100
Subject: [PATCH 02/60] [IMP] purchase: use the new signal_xxx methods instead
of trg_validate.
bzr revid: vmt@openerp.com-20130125165355-78o1utblskn0sa5e
---
addons/purchase/purchase.py | 36 +++++++++++++++---------------------
1 file changed, 15 insertions(+), 21 deletions(-)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index 799601acb64..bf3686d5a34 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -22,6 +22,7 @@
import time
from datetime import datetime
from dateutil.relativedelta import relativedelta
+from operator import attrgetter
from openerp.osv import fields, osv
from openerp import netsvc
@@ -260,9 +261,7 @@ class purchase_order(osv.osv):
raise osv.except_osv(_('Invalid Action!'), _('In order to delete a purchase order, you must cancel it first.'))
# automatically sending subflow.delete upon deletion
- wf_service = netsvc.LocalService("workflow")
- for id in unlink_ids:
- wf_service.trg_validate(uid, 'purchase.order', id, 'purchase_cancel', cr)
+ self.signal_purchase_cancel(cr, uid, unlink_ids)
return super(purchase_order, self).unlink(cr, uid, unlink_ids, context=context)
@@ -439,8 +438,7 @@ class purchase_order(osv.osv):
This function prints the request for quotation and mark it as sent, so that we can see more easily the next step of the workflow
'''
assert len(ids) == 1, 'This option should only be used for a single id at a time'
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'purchase.order', ids[0], 'send_rfq', cr)
+ self.signal_send_rfq(cr, uid, ids)
datas = {
'model': 'purchase.order',
'ids': ids,
@@ -571,26 +569,24 @@ class purchase_order(osv.osv):
return False
def action_cancel(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
for purchase in self.browse(cr, uid, ids, context=context):
for pick in purchase.picking_ids:
if pick.state not in ('draft','cancel'):
raise osv.except_osv(
_('Unable to cancel this purchase order.'),
_('First cancel all receptions related to this purchase order.'))
- for pick in purchase.picking_ids:
- wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_cancel', cr)
+ self.pool.get('stock.picking') \
+ .signal_button_cancel(cr, uid, map(attrgetter('id'), purchase.picking_ids))
for inv in purchase.invoice_ids:
if inv and inv.state not in ('cancel','draft'):
raise osv.except_osv(
_('Unable to cancel this purchase order.'),
_('You must first cancel all receptions related to this purchase order.'))
- if inv:
- wf_service.trg_validate(uid, 'account.invoice', inv.id, 'invoice_cancel', cr)
+ self.pool.get('account.invoice') \
+ .signal_invoice_cancel(cr, uid, map(attrgetter('id'), purchase.invoice_ids))
self.write(cr,uid,ids,{'state':'cancel'})
- for (id, name) in self.name_get(cr, uid, ids):
- wf_service.trg_validate(uid, 'purchase.order', id, 'purchase_cancel', cr)
+ self.signal_purchase_cancel(cr, uid, ids)
return True
def _prepare_order_picking(self, cr, uid, order, context=None):
@@ -648,11 +644,11 @@ class purchase_order(osv.osv):
will be added. A new picking will be created if omitted.
:return: list of IDs of pickings used/created for the given order lines (usually just one)
"""
+ stock_picking = self.pool.get('stock.picking')
if not picking_id:
- picking_id = self.pool.get('stock.picking').create(cr, uid, self._prepare_order_picking(cr, uid, order, context=context))
+ picking_id = stock_picking.create(cr, uid, self._prepare_order_picking(cr, uid, order, context=context))
todo_moves = []
stock_move = self.pool.get('stock.move')
- wf_service = netsvc.LocalService("workflow")
for order_line in order_lines:
if not order_line.product_id:
continue
@@ -663,7 +659,7 @@ class purchase_order(osv.osv):
todo_moves.append(move)
stock_move.action_confirm(cr, uid, todo_moves)
stock_move.force_assign(cr, uid, todo_moves)
- wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
+ stock_picking.signal_button_confirm(cr, uid, [picking_id])
return [picking_id]
def action_picking_create(self, cr, uid, ids, context=None):
@@ -714,7 +710,6 @@ class purchase_order(osv.osv):
"""
#TOFIX: merged order line should be unlink
- wf_service = netsvc.LocalService("workflow")
def make_key(br, fields):
list_key = []
for field in fields:
@@ -782,6 +777,7 @@ class purchase_order(osv.osv):
allorders = []
orders_info = {}
+ wf_service = netsvc.LocalService("workflow")
for order_key, (order_data, old_ids) in new_orders.iteritems():
# skip merges with only one order
if len(old_ids) < 2:
@@ -802,7 +798,7 @@ class purchase_order(osv.osv):
# make triggers pointing to the old orders point to the new order
for old_id in old_ids:
wf_service.trg_redirect(uid, 'purchase.order', old_id, neworder_id, cr)
- wf_service.trg_validate(uid, 'purchase.order', old_id, 'purchase_cancel', cr)
+ self.signal_purchase_cancel(cr, uid, [old_id]) # TODO Is it necessary to interleave the calls?
return orders_info
@@ -1169,8 +1165,7 @@ class mail_mail(osv.Model):
def _postprocess_sent_message(self, cr, uid, mail, context=None):
if mail.model == 'purchase.order':
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'purchase.order', mail.res_id, 'send_rfq', cr)
+ self.pool.get('purchase.order').signal_send_rfq(cr, uid, [mail.res_id])
return super(mail_mail, self)._postprocess_sent_message(cr, uid, mail=mail, context=context)
@@ -1192,8 +1187,7 @@ class mail_compose_message(osv.Model):
context = context or {}
if context.get('default_model') == 'purchase.order' and context.get('default_res_id'):
context = dict(context, mail_post_autofollow=True)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'purchase.order', context['default_res_id'], 'send_rfq', cr)
+ self.pool.get('purchase.order').signal_send_rfq(cr, uid, [context['default_res_id']])
return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
From 11632909ae3e6952d4f26469077819ad57134985 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Fri, 25 Jan 2013 22:17:51 +0100
Subject: [PATCH 03/60] [FIX] lunch: passing self in a super call.
bzr revid: vmt@openerp.com-20130125211751-725w3trha283ypa2
---
addons/lunch/lunch.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/lunch/lunch.py b/addons/lunch/lunch.py
index 0f9033fce38..022eb5208eb 100644
--- a/addons/lunch/lunch.py
+++ b/addons/lunch/lunch.py
@@ -159,7 +159,7 @@ class lunch_order(osv.Model):
def specific_function(cr, uid, ids, context=None):
return self.add_preference(cr, uid, ids, pref_id, context=context)
return specific_function
- return super(lunch_order,self).__getattr__(self,attr)
+ return super(lunch_order, self).__getattr__(attr)
def fields_view_get(self, cr, uid, view_id=None, view_type=False, context=None, toolbar=False, submenu=False):
"""
From 494b2481e2ce798364eb1548b1e57d9e1e9c2d39 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 10:17:16 +0100
Subject: [PATCH 04/60] [IMP] purchase: use the new signal_xxx methods instead
of trg_validate.
bzr revid: vmt@openerp.com-20130128091716-ni5zb1qp4sib58rm
---
addons/purchase/test/process/rfq2order2done.yml | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/addons/purchase/test/process/rfq2order2done.yml b/addons/purchase/test/process/rfq2order2done.yml
index 4bf55d61973..be68a8ca01e 100644
--- a/addons/purchase/test/process/rfq2order2done.yml
+++ b/addons/purchase/test/process/rfq2order2done.yml
@@ -62,8 +62,7 @@
import netsvc
invoice_ids = [x.id for x in self.browse(cr, uid, ref("purchase_order_1")).invoice_ids]
wf_service = netsvc.LocalService("workflow")
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice', invoice, 'invoice_open', cr)
+ self.pool.get('account.invoice').signal_invoice_open(cr, uid, invoice_ids)
-
I check that purchase order is invoiced.
-
From 86680d853b12bd4564ab7d0792eae7534bdbbd9f Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 10:29:30 +0100
Subject: [PATCH 05/60] [IMP] account_payment: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130128092930-6lhgyprwirpt6y3z
---
addons/account_payment/account_payment.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py
index d67db60e590..c57c83aa765 100644
--- a/addons/account_payment/account_payment.py
+++ b/addons/account_payment/account_payment.py
@@ -135,9 +135,8 @@ class payment_order(osv.osv):
return True
def set_done(self, cr, uid, ids, *args):
- wf_service = netsvc.LocalService("workflow")
self.write(cr, uid, ids, {'date_done': time.strftime('%Y-%m-%d')})
- wf_service.trg_validate(uid, 'payment.order', ids[0], 'done', cr)
+ self.signal_done(cr, uid, [ids[0]])
return True
def copy(self, cr, uid, id, default=None, context=None):
From f6fd7368a283439f3d7ca8110acd49066dcac18b Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 11:00:38 +0100
Subject: [PATCH 06/60] [IMP] procurement: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130128100038-6dyftmdm8tfn6j5k
---
addons/procurement/procurement.py | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 50efe0f500e..21c260b99cd 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -19,10 +19,12 @@
#
##############################################################################
+from operator import attrgetter
+import time
+
from openerp.osv import fields, osv
from openerp.tools.translate import _
from openerp import netsvc
-import time
import openerp.addons.decimal_precision as dp
# Procurement
@@ -42,7 +44,6 @@ class mrp_property_group(osv.osv):
'name': fields.char('Property Group', size=64, required=True),
'description': fields.text('Description'),
}
-mrp_property_group()
class mrp_property(osv.osv):
"""
@@ -59,7 +60,6 @@ class mrp_property(osv.osv):
_defaults = {
'composition': lambda *a: 'min',
}
-mrp_property()
class StockMove(osv.osv):
_inherit = 'stock.move'
@@ -72,7 +72,6 @@ class StockMove(osv.osv):
default['procurements'] = []
return super(StockMove, self).copy(cr, uid, id, default, context=context)
-StockMove()
class procurement_order(osv.osv):
"""
@@ -456,15 +455,13 @@ class procurement_order(osv.osv):
class StockPicking(osv.osv):
_inherit = 'stock.picking'
- def test_finished(self, cursor, user, ids):
+ def test_finished(self, cr, uid, ids):
wf_service = netsvc.LocalService("workflow")
- res = super(StockPicking, self).test_finished(cursor, user, ids)
- for picking in self.browse(cursor, user, ids):
+ res = super(StockPicking, self).test_finished(cr, uid, ids)
+ for picking in self.browse(cr, uid, ids):
for move in picking.move_lines:
if move.state == 'done' and move.procurements:
- for procurement in move.procurements:
- wf_service.trg_validate(user, 'procurement.order',
- procurement.id, 'button_check', cursor)
+ self.pool.get('procurement.order').signal_button_check(cr, uid, map(attrgetter('id'), move.procurements))
return res
class stock_warehouse_orderpoint(osv.osv):
From 99664df35a52019dab329b993801ee1642b0704b Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 12:39:54 +0100
Subject: [PATCH 07/60] [IMP] stock_location: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130128113954-i60z7w4mygprra40
---
addons/stock_location/procurement_pull.py | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/addons/stock_location/procurement_pull.py b/addons/stock_location/procurement_pull.py
index eb5235d35ba..9f5dfb77375 100644
--- a/addons/stock_location/procurement_pull.py
+++ b/addons/stock_location/procurement_pull.py
@@ -49,7 +49,6 @@ class procurement_order(osv.osv):
proc_obj = self.pool.get('procurement.order')
move_obj = self.pool.get('stock.move')
picking_obj=self.pool.get('stock.picking')
- wf_service = netsvc.LocalService("workflow")
for proc in proc_obj.browse(cr, uid, ids, context=context):
line = None
for line in proc.product_id.flow_pull_ids:
@@ -109,9 +108,8 @@ class procurement_order(osv.osv):
'procure_method': line.procure_method,
'move_id': move_id,
})
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
+ self.pool.get('stock.picking').signal_button_confirm(cr, uid, [picking_id])
+ self.signal_button_confirm(cr, uid, [proc_id])
if proc.move_id:
move_obj.write(cr, uid, [proc.move_id.id],
{'location_id':proc.location_id.id})
@@ -119,9 +117,8 @@ class procurement_order(osv.osv):
self.write(cr, uid, [proc.id], {'state':'running', 'message': msg})
self.message_post(cr, uid, [proc.id], body=msg, context=context)
# trigger direct processing (the new procurement shares the same planned date as the original one, which is already being processed)
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_check', cr)
+ self.signal_button_check(cr, uid, [proc_id]) # TODO is it necessary to interleave the calls?
return False
-procurement_order()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
From 781e6737acc114b7a76d711aa7e31ba78dd401b3 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 13:01:47 +0100
Subject: [PATCH 08/60] [IMP] account_followup: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130128120147-oj7pvl2015x4764v
---
addons/account_followup/tests/test_account_followup.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/addons/account_followup/tests/test_account_followup.py b/addons/account_followup/tests/test_account_followup.py
index 14f458de98d..8ddf3f82288 100644
--- a/addons/account_followup/tests/test_account_followup.py
+++ b/addons/account_followup/tests/test_account_followup.py
@@ -44,8 +44,7 @@ class TestAccountFollowup(TransactionCase):
'quantity': 5,
'price_unit':200
})]})
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.invoice', self.invoice_id, 'invoice_open', cr)
+ self.registry('account.invoice').signal_invoice_open(cr, uid, [self.invoice_id])
self.voucher = self.registry("account.voucher")
From 8d50446d278643bf645107744a6ba12108c9eea1 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 15:16:23 +0100
Subject: [PATCH 09/60] [IMP] hr_holidays: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130128141623-4rxcgqx7t33yydbp
---
addons/hr_holidays/hr_holidays.py | 21 +++++++++------------
addons/hr_holidays/test/test_hr_holiday.yml | 3 +--
2 files changed, 10 insertions(+), 14 deletions(-)
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index c7d7867911d..234897809e1 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -24,7 +24,7 @@
import datetime
import time
from itertools import groupby
-from operator import itemgetter
+from operator import attrgetter, itemgetter
import math
from openerp import netsvc
@@ -370,11 +370,11 @@ class hr_holidays(osv.osv):
'employee_id': emp.id
}
leave_ids.append(self.create(cr, uid, vals, context=None))
- wf_service = netsvc.LocalService("workflow")
for leave_id in leave_ids:
- wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'confirm', cr)
- wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'validate', cr)
- wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
+ # TODO is it necessary to interleave the calls?
+ self.signal_confirm(cr, uid, [leave_id])
+ self.signal_validate(cr, uid, [leave_id])
+ self.signal_second_validate(cr, uid, [leave_id])
return True
def holidays_confirm(self, cr, uid, ids, context=None):
@@ -404,9 +404,7 @@ class hr_holidays(osv.osv):
meeting_obj.unlink(cr, uid, [record.meeting_id.id])
# If a category that created several holidays, cancel all related
- wf_service = netsvc.LocalService("workflow")
- for request in record.linked_request_ids or []:
- wf_service.trg_validate(uid, 'hr.holidays', request.id, 'refuse', cr)
+ self.signal_refuse(cr, uid, map(attrgetter('id'), record.linked_request_ids or []))
self._remove_resource_leave(cr, uid, ids, context=context)
return True
@@ -478,10 +476,9 @@ class hr_employee(osv.osv):
leave_id = holiday_obj.create(cr, uid, {'name': _('Leave Request for %s') % employee.name, 'employee_id': employee.id, 'holiday_status_id': status_id, 'type': 'remove', 'holiday_type': 'employee', 'number_of_days_temp': abs(diff)}, context=context)
else:
return False
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'confirm', cr)
- wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'validate', cr)
- wf_service.trg_validate(uid, 'hr.holidays', leave_id, 'second_validate', cr)
+ holidays_obj.signal_confirm(cr, uid, [leave_id])
+ holidays_obj.signal_validate(cr, uid, [leave_id])
+ holidays_obj.signal_second_validate(cr, uid, [leave_id])
return True
def _get_remaining_days(self, cr, uid, ids, name, args, context=None):
diff --git a/addons/hr_holidays/test/test_hr_holiday.yml b/addons/hr_holidays/test/test_hr_holiday.yml
index f0e85d552cb..e78c2fd08bc 100644
--- a/addons/hr_holidays/test/test_hr_holiday.yml
+++ b/addons/hr_holidays/test/test_hr_holiday.yml
@@ -19,9 +19,8 @@
-
!python {model: hr.holidays}: |
import netsvc
- wf_service = netsvc.LocalService("workflow")
self.set_to_draft(cr, uid, [ref('hr_holidays_employee1_cl')])
- wf_service.trg_validate(uid, 'hr.holidays', ref('hr_holidays_employee1_cl'), 'confirm', cr)
+ self.signal_confirm(cr, uid, [ref('hr_holidays_employee1_cl')])
-
I validate the holiday request by clicking on "To Approve" button.
-
From ca919bec2c979a70e615f5023b6241b36b2c0ba1 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 15:51:43 +0100
Subject: [PATCH 10/60] [IMP] account_voucher: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130128145143-w68s6z1kuulqk6ig
---
addons/account_voucher/account_voucher.py | 8 ++------
addons/account_voucher/test/case1_usd_usd.yml | 8 ++------
addons/account_voucher/test/case2_suppl_usd_eur.yml | 8 ++------
.../account_voucher/test/case2_usd_eur_debtor_in_eur.yml | 6 ++----
.../account_voucher/test/case2_usd_eur_debtor_in_usd.yml | 8 ++------
addons/account_voucher/test/case3_eur_eur.yml | 8 ++------
addons/account_voucher/test/case4_cad_chf.yml | 3 +--
addons/account_voucher/test/sales_payment.yml | 3 +--
addons/account_voucher/test/sales_receipt.yml | 3 +--
9 files changed, 15 insertions(+), 40 deletions(-)
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index de9cebdd09b..2046d787ef3 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -820,10 +820,7 @@ class account_voucher(osv.osv):
return vals
def button_proforma_voucher(self, cr, uid, ids, context=None):
- context = context or {}
- wf_service = netsvc.LocalService("workflow")
- for vid in ids:
- wf_service.trg_validate(uid, 'account.voucher', vid, 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, ids)
return {'type': 'ir.actions.act_window_close'}
def proforma_voucher(self, cr, uid, ids, context=None):
@@ -1506,7 +1503,6 @@ class account_bank_statement(osv.osv):
def create_move_from_st_line(self, cr, uid, st_line_id, company_currency_id, next_number, context=None):
voucher_obj = self.pool.get('account.voucher')
- wf_service = netsvc.LocalService("workflow")
move_line_obj = self.pool.get('account.move.line')
bank_st_line_obj = self.pool.get('account.bank.statement.line')
st_line = bank_st_line_obj.browse(cr, uid, st_line_id, context=context)
@@ -1514,7 +1510,7 @@ class account_bank_statement(osv.osv):
voucher_obj.write(cr, uid, [st_line.voucher_id.id], {'number': next_number}, context=context)
if st_line.voucher_id.state == 'cancel':
voucher_obj.action_cancel_draft(cr, uid, [st_line.voucher_id.id], context=context)
- wf_service.trg_validate(uid, 'account.voucher', st_line.voucher_id.id, 'proforma_voucher', cr)
+ voucher_obj.signal_proforma_voucher(cr, uid, [st_line.voucher_id.id])
v = voucher_obj.browse(cr, uid, st_line.voucher_id.id, context=context)
bank_st_line_obj.write(cr, uid, [st_line_id], {
diff --git a/addons/account_voucher/test/case1_usd_usd.yml b/addons/account_voucher/test/case1_usd_usd.yml
index 0f4c2058fc7..fd1945691ba 100644
--- a/addons/account_voucher/test/case1_usd_usd.yml
+++ b/addons/account_voucher/test/case1_usd_usd.yml
@@ -182,10 +182,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 1 USD/USD'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my first voucher is valid
-
@@ -279,10 +277,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment: Case 1'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my second voucher is valid
-
diff --git a/addons/account_voucher/test/case2_suppl_usd_eur.yml b/addons/account_voucher/test/case2_suppl_usd_eur.yml
index b32228032d3..91fb99f6360 100644
--- a/addons/account_voucher/test/case2_suppl_usd_eur.yml
+++ b/addons/account_voucher/test/case2_suppl_usd_eur.yml
@@ -161,10 +161,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 2 SUPPL USD/EUR'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my voucher is valid
-
@@ -266,10 +264,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment: Case 2 SUPPL USD/EUR'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that my voucher state is posted
-
diff --git a/addons/account_voucher/test/case2_usd_eur_debtor_in_eur.yml b/addons/account_voucher/test/case2_usd_eur_debtor_in_eur.yml
index 275e4c58835..2afdc8ad31b 100644
--- a/addons/account_voucher/test/case2_usd_eur_debtor_in_eur.yml
+++ b/addons/account_voucher/test/case2_usd_eur_debtor_in_eur.yml
@@ -181,8 +181,7 @@
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 2 USD/EUR DR EUR'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my voucher is valid
-
@@ -256,8 +255,7 @@
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment: Case 2 SUPPL USD/EUR DR EUR'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that my voucher state is posted
-
diff --git a/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml b/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
index 667882e3a32..b049fc7692e 100644
--- a/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
+++ b/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
@@ -179,10 +179,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 2 USD/EUR DR USD'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my voucher is valid
-
@@ -269,10 +267,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment: Case 2 SUPPL USD/EUR DR USD'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that my voucher state is posted
-
diff --git a/addons/account_voucher/test/case3_eur_eur.yml b/addons/account_voucher/test/case3_eur_eur.yml
index f2f9461c31e..d0b18a5231b 100644
--- a/addons/account_voucher/test/case3_eur_eur.yml
+++ b/addons/account_voucher/test/case3_eur_eur.yml
@@ -141,10 +141,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 3'),('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my first voucher is valid
-
@@ -231,10 +229,8 @@
I confirm the voucher
-
!python {model: account.voucher}: |
- import netsvc
voucher = self.search(cr, uid, [('name', '=', 'Second payment: Case 3'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my second voucher is valid
-
diff --git a/addons/account_voucher/test/case4_cad_chf.yml b/addons/account_voucher/test/case4_cad_chf.yml
index bc33e387a85..e8fe4c8cf9b 100644
--- a/addons/account_voucher/test/case4_cad_chf.yml
+++ b/addons/account_voucher/test/case4_cad_chf.yml
@@ -143,8 +143,7 @@
!python {model: account.voucher}: |
import netsvc
voucher = self.search(cr, uid, [('name', '=', 'First payment: Case 4'), ('partner_id', '=', ref('base.res_partner_19'))])
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher[0], 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, voucher)
-
I check that the move of my voucher is valid
-
diff --git a/addons/account_voucher/test/sales_payment.yml b/addons/account_voucher/test/sales_payment.yml
index b71e42add0b..e7ed61c2cb2 100644
--- a/addons/account_voucher/test/sales_payment.yml
+++ b/addons/account_voucher/test/sales_payment.yml
@@ -61,8 +61,7 @@
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher_id.id, 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, [voucher_id.id])
-
Finally i will Confirm the state of the invoice is paid
diff --git a/addons/account_voucher/test/sales_receipt.yml b/addons/account_voucher/test/sales_receipt.yml
index cf4bc5c46d3..af10777d98a 100644
--- a/addons/account_voucher/test/sales_receipt.yml
+++ b/addons/account_voucher/test/sales_receipt.yml
@@ -65,8 +65,7 @@
id = self.create(cr, uid, vals)
voucher_id = self.browse(cr, uid, id)
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.voucher', voucher_id.id, 'proforma_voucher', cr)
+ self.signal_proforma_voucher(cr, uid, [voucher_id.id])
-
I check that move lines are reconciled meaning voucher is paid
-
From 752649aa77a350b60e9cad39436f7c90b2b34652 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 16:29:16 +0100
Subject: [PATCH 11/60] [IMP] l10n_in_hr_payroll: use the new signal_xxx
methods instead of trg_validate.
bzr revid: vmt@openerp.com-20130128152916-kt23l68420hkg49y
---
addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py
index 76fc1247de6..da98bbe681a 100644
--- a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py
+++ b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py
@@ -198,8 +198,9 @@ class hr_payslip_run(osv.osv):
advice_id = advice_pool.create(cr, uid, advice_data, context=context)
slip_ids = []
for slip_id in run.slip_ids:
- wf_service.trg_validate(uid, 'hr.payslip', slip_id.id, 'hr_verify_sheet', cr)
- wf_service.trg_validate(uid, 'hr.payslip', slip_id.id, 'process_sheet', cr)
+ # TODO is it necessary to interleave the calls ?
+ payslip_pool.signal_hr_verify_sheet(cr, uid, [slip_id.id])
+ payslip_pool.signal_process_sheet(cr, uid, [slip_id.id])
slip_ids.append(slip_id.id)
for slip in payslip_pool.browse(cr, uid, slip_ids, context=context):
From 48a371d2b2b31544ed39b567b90c87a2da4ba9d1 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 16:29:29 +0100
Subject: [PATCH 12/60] [IMP] stock: use the new signal_xxx methods instead of
trg_validate.
bzr revid: vmt@openerp.com-20130128152929-6rpoaccy5huw8kdq
---
addons/stock/stock.py | 22 ++++++++-------------
addons/stock/wizard/stock_return_picking.py | 3 +--
2 files changed, 9 insertions(+), 16 deletions(-)
diff --git a/addons/stock/stock.py b/addons/stock/stock.py
index 7198c89e286..2d351d9302e 100644
--- a/addons/stock/stock.py
+++ b/addons/stock/stock.py
@@ -759,10 +759,9 @@ class stock_picking(osv.osv):
""" Changes state of picking to available if all moves are confirmed.
@return: True
"""
- wf_service = netsvc.LocalService("workflow")
for pick in self.browse(cr, uid, ids):
if pick.state == 'draft':
- wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_confirm', cr)
+ self.signal_button_confirm(cr, uid, [pick.id])
move_ids = [x.id for x in pick.move_lines if x.state == 'confirmed']
if not move_ids:
raise osv.except_osv(_('Warning!'),_('Not enough stock, unable to reserve the products.'))
@@ -784,12 +783,10 @@ class stock_picking(osv.osv):
""" Confirms picking directly from draft state.
@return: True
"""
- wf_service = netsvc.LocalService("workflow")
for pick in self.browse(cr, uid, ids):
if not pick.move_lines:
raise osv.except_osv(_('Error!'),_('You cannot process picking without stock moves.'))
- wf_service.trg_validate(uid, 'stock.picking', pick.id,
- 'button_confirm', cr)
+ self.signal_button_confirm(cr, uid, [pick.id])
return True
def draft_validate(self, cr, uid, ids, context=None):
@@ -1345,18 +1342,18 @@ class stock_picking(osv.osv):
# At first we confirm the new picking (if necessary)
if new_picking:
- wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr)
+ self.signal_button_confirm(cr, uid, [new_picking])
# Then we finish the good picking
self.write(cr, uid, [pick.id], {'backorder_id': new_picking})
self.action_move(cr, uid, [new_picking], context=context)
- wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_done', cr)
+ self.signal_button_done(cr, uid, [new_picking])
wf_service.trg_write(uid, 'stock.picking', pick.id, cr)
delivered_pack_id = new_picking
back_order_name = self.browse(cr, uid, delivered_pack_id, context=context).name
self.message_post(cr, uid, ids, body=_("Back order %s has been created.") % (back_order_name), context=context)
else:
self.action_move(cr, uid, [pick.id], context=context)
- wf_service.trg_validate(uid, 'stock.picking', pick.id, 'button_done', cr)
+ self.signal_button_done(cr, uid, [pick.id])
delivered_pack_id = pick.id
delivered_pack = self.browse(cr, uid, delivered_pack_id, context=context)
@@ -2037,7 +2034,6 @@ class stock_move(osv.osv):
res_obj = self.pool.get('res.company')
location_obj = self.pool.get('stock.location')
move_obj = self.pool.get('stock.move')
- wf_service = netsvc.LocalService("workflow")
new_moves = []
if context is None:
context = {}
@@ -2073,7 +2069,7 @@ class stock_move(osv.osv):
})
new_moves.append(self.browse(cr, uid, [new_id])[0])
if pickid:
- wf_service.trg_validate(uid, 'stock.picking', pickid, 'button_confirm', cr)
+ self.signal_button_confirm(cr, uid, [pickid])
if new_moves:
new_moves += self.create_chained_picking(cr, uid, new_moves, context)
return new_moves
@@ -2195,6 +2191,7 @@ class stock_move(osv.osv):
return True
if context is None:
context = {}
+ wf_service = netsvc.LocalService("workflow")
pickings = set()
for move in self.browse(cr, uid, ids, context=context):
if move.state in ('confirmed', 'waiting', 'assigned', 'draft'):
@@ -2203,7 +2200,6 @@ class stock_move(osv.osv):
if move.move_dest_id and move.move_dest_id.state == 'waiting':
self.write(cr, uid, [move.move_dest_id.id], {'state': 'assigned'})
if context.get('call_unlink',False) and move.move_dest_id.picking_id:
- wf_service = netsvc.LocalService("workflow")
wf_service.trg_write(uid, 'stock.picking', move.move_dest_id.picking_id.id, cr)
self.write(cr, uid, ids, {'state': 'cancel', 'move_dest_id': False})
if not context.get('call_unlink',False):
@@ -2211,7 +2207,6 @@ class stock_move(osv.osv):
if all(move.state == 'cancel' for move in pick.move_lines):
self.pool.get('stock.picking').write(cr, uid, [pick.id], {'state': 'cancel'})
- wf_service = netsvc.LocalService("workflow")
for id in ids:
wf_service.trg_trigger(uid, 'stock.move', id, cr)
return True
@@ -2633,7 +2628,6 @@ class stock_move(osv.osv):
product_obj = self.pool.get('product.product')
currency_obj = self.pool.get('res.currency')
uom_obj = self.pool.get('product.uom')
- wf_service = netsvc.LocalService("workflow")
if context is None:
context = {}
@@ -2734,7 +2728,7 @@ class stock_move(osv.osv):
res = cr.fetchall()
if len(res) == len(move.picking_id.move_lines):
picking_obj.action_move(cr, uid, [move.picking_id.id])
- wf_service.trg_validate(uid, 'stock.picking', move.picking_id.id, 'button_done', cr)
+ picking_obj.signal_button_done(cr, uid, [move.picking_id.id])
return [move.id for move in complete]
diff --git a/addons/stock/wizard/stock_return_picking.py b/addons/stock/wizard/stock_return_picking.py
index 7c6f0655e7a..bc149f86176 100644
--- a/addons/stock/wizard/stock_return_picking.py
+++ b/addons/stock/wizard/stock_return_picking.py
@@ -151,7 +151,6 @@ class stock_return_picking(osv.osv_memory):
data_obj = self.pool.get('stock.return.picking.memory')
act_obj = self.pool.get('ir.actions.act_window')
model_obj = self.pool.get('ir.model.data')
- wf_service = netsvc.LocalService("workflow")
pick = pick_obj.browse(cr, uid, record_id, context=context)
data = self.read(cr, uid, ids[0], context=context)
date_cur = time.strftime('%Y-%m-%d %H:%M:%S')
@@ -206,7 +205,7 @@ class stock_return_picking(osv.osv_memory):
if set_invoice_state_to_none:
pick_obj.write(cr, uid, [pick.id], {'invoice_state':'none'}, context=context)
- wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr)
+ pick_obj.signal_button_confirm(cr, uid, [new_picking])
pick_obj.force_assign(cr, uid, [new_picking], context)
# Update view id in context, lp:702939
model_list = {
From 45ba35783f556c851e1a6791ea79f309ff43d98c Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Mon, 28 Jan 2013 17:34:03 +0100
Subject: [PATCH 13/60] [IMP] mrp_operations: use the new signal_xxx methods
instead of trg_validate.
bzr revid: vmt@openerp.com-20130128163403-dmbb0a1y0ejbt66t
---
addons/mrp_operations/mrp_operations.py | 46 +++++++++----------
.../test/workcenter_operations.yml | 32 ++++---------
2 files changed, 30 insertions(+), 48 deletions(-)
diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py
index 1ce60946f6c..a60b348559c 100644
--- a/addons/mrp_operations/mrp_operations.py
+++ b/addons/mrp_operations/mrp_operations.py
@@ -118,16 +118,15 @@ class mrp_production_workcenter_line(osv.osv):
@param action: Action to perform.
@return: Nothing
"""
- wf_service = netsvc.LocalService("workflow")
prod_obj_pool = self.pool.get('mrp.production')
oper_obj = self.browse(cr, uid, ids)[0]
prod_obj = oper_obj.production_id
if action == 'start':
if prod_obj.state =='confirmed':
prod_obj_pool.force_production(cr, uid, [prod_obj.id])
- wf_service.trg_validate(uid, 'mrp.production', prod_obj.id, 'button_produce', cr)
+ prod_obj_pool.signal_button_produce(cr, uid, [prod_obj.id])
elif prod_obj.state =='ready':
- wf_service.trg_validate(uid, 'mrp.production', prod_obj.id, 'button_produce', cr)
+ prod_obj_pool.signal_button_produce(cr, uid, [prod_obj.id])
elif prod_obj.state =='in_production':
return
else:
@@ -143,7 +142,7 @@ class mrp_production_workcenter_line(osv.osv):
for production in prod_obj_pool.browse(cr, uid, [prod_obj.id], context= None):
if production.move_lines or production.move_created_ids:
prod_obj_pool.action_produce(cr,uid, production.id, production.product_qty, 'consume_produce', context = None)
- wf_service.trg_validate(uid, 'mrp.production', oper_obj.production_id.id, 'button_produce_done', cr)
+ prod_obj_pool.signal_button_produce_done(cr, uid, [oper_obj.production_id.id])
return
def write(self, cr, uid, ids, vals, context=None, update=True):
@@ -228,23 +227,21 @@ class mrp_production(osv.osv):
@return: Super method
"""
obj = self.browse(cr, uid, ids)[0]
- wf_service = netsvc.LocalService("workflow")
+ workcenter_pool = self.pool.get('mrp.production.workcenter.line')
for workcenter_line in obj.workcenter_lines:
if workcenter_line.state == 'draft':
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_start_working', cr)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_done', cr)
+ workcenter_pool.signal_button_start_working(cr, uid, [workcenter_line.id])
+ workcenter_pool.signal_button_done(cr, uid, [workcenter_line.id])
return super(mrp_production,self).action_production_end(cr, uid, ids)
def action_in_production(self, cr, uid, ids):
""" Changes state to In Production and writes starting date.
@return: True
"""
- obj = self.browse(cr, uid, ids)[0]
workcenter_pool = self.pool.get('mrp.production.workcenter.line')
- wf_service = netsvc.LocalService("workflow")
for prod in self.browse(cr, uid, ids):
if prod.workcenter_lines:
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', prod.workcenter_lines[0].id, 'button_start_working', cr)
+ workcenter_pool.signal_button_start_working(cr, uid, [prod.workcenter_lines[0].id])
return super(mrp_production,self).action_in_production(cr, uid, ids)
def action_cancel(self, cr, uid, ids, context=None):
@@ -252,9 +249,8 @@ class mrp_production(osv.osv):
@return: Super method
"""
obj = self.browse(cr, uid, ids,context=context)[0]
- wf_service = netsvc.LocalService("workflow")
for workcenter_line in obj.workcenter_lines:
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', workcenter_line.id, 'button_cancel', cr)
+ workcenter_pool.signal_button_cancel(cr, uid, [workcenter_line.id])
return super(mrp_production,self).action_cancel(cr,uid,ids,context=context)
def _compute_planned_workcenter(self, cr, uid, ids, context=None, mini=False):
@@ -503,35 +499,35 @@ class mrp_operations_operation(osv.osv):
return super(mrp_operations_operation, self).write(cr, uid, ids, vals, context=context)
def create(self, cr, uid, vals, context=None):
+ workcenter_pool = self.pool.get('mrp.production.workcenter.line')
wf_service = netsvc.LocalService('workflow')
code_ids=self.pool.get('mrp_operations.operation.code').search(cr,uid,[('id','=',vals['code_id'])])
code=self.pool.get('mrp_operations.operation.code').browse(cr, uid, code_ids, context=context)[0]
- wc_op_id=self.pool.get('mrp.production.workcenter.line').search(cr,uid,[('workcenter_id','=',vals['workcenter_id']),('production_id','=',vals['production_id'])])
+ wc_op_id=workcenter_pool.search(cr,uid,[('workcenter_id','=',vals['workcenter_id']),('production_id','=',vals['production_id'])])
if code.start_stop in ('start','done','pause','cancel','resume'):
if not wc_op_id:
production_obj=self.pool.get('mrp.production').browse(cr, uid, vals['production_id'], context=context)
- wc_op_id.append(self.pool.get('mrp.production.workcenter.line').create(cr,uid,{'production_id':vals['production_id'],'name':production_obj.product_id.name,'workcenter_id':vals['workcenter_id']}))
+ wc_op_id.append(workcenter_pool.create(cr,uid,{'production_id':vals['production_id'],'name':production_obj.product_id.name,'workcenter_id':vals['workcenter_id']}))
if code.start_stop=='start':
- self.pool.get('mrp.production.workcenter.line').action_start_working(cr,uid,wc_op_id)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_start_working', cr)
-
+ workcenter_pool.action_start_working(cr,uid,wc_op_id)
+ workcenter_pool.signal_button_start_working(cr, uid, [wc_op_id[0]])
if code.start_stop=='done':
- self.pool.get('mrp.production.workcenter.line').action_done(cr,uid,wc_op_id)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_done', cr)
+ workcenter_pool.action_done(cr,uid,wc_op_id)
+ workcenter_pool.signal_button_done(cr, uid, [wc_op_id[0]])
self.pool.get('mrp.production').write(cr,uid,vals['production_id'],{'date_finished':datetime.now().strftime('%Y-%m-%d %H:%M:%S')})
if code.start_stop=='pause':
- self.pool.get('mrp.production.workcenter.line').action_pause(cr,uid,wc_op_id)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_pause', cr)
+ workcenter_pool.action_pause(cr,uid,wc_op_id)
+ workcenter_pool.signal_button_pause(cr, uid, [wc_op_id[0]])
if code.start_stop=='resume':
- self.pool.get('mrp.production.workcenter.line').action_resume(cr,uid,wc_op_id)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_resume', cr)
+ workcenter_pool.action_resume(cr,uid,wc_op_id)
+ workcenter_pool.signal_button_resume(cr, uid, [wc_op_id[0]])
if code.start_stop=='cancel':
- self.pool.get('mrp.production.workcenter.line').action_cancel(cr,uid,wc_op_id)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', wc_op_id[0], 'button_cancel', cr)
+ workcenter_pool.action_cancel(cr,uid,wc_op_id)
+ workcenter_pool.signal_button_cancel(cr, uid, [wc_op_id[0]])
if not self.check_operation(cr, uid, vals):
return
diff --git a/addons/mrp_operations/test/workcenter_operations.yml b/addons/mrp_operations/test/workcenter_operations.yml
index c1449657967..4754bb463ff 100644
--- a/addons/mrp_operations/test/workcenter_operations.yml
+++ b/addons/mrp_operations/test/workcenter_operations.yml
@@ -39,62 +39,48 @@
Production start on first work center, so I start work operation on first work center.
-
!python {model: mrp.production}: |
- import netsvc
order = self.browse(cr, uid, ref("mrp.mrp_production_1"), context=context)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', order.workcenter_lines[0].id, 'button_start_working', cr)
+ self.pool.get('mrp.production.workcenter.line').signal_button_start_working(cr, uid, [order.workcenter_lines[0].id])
-
Now I pause first work operation due to technical fault of work center.
-
!python {model: mrp.production}: |
- import netsvc
order = self.browse(cr, uid, ref("mrp.mrp_production_1"), context=context)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', order.workcenter_lines[0].id, 'button_pause', cr)
+ self.pool.get('mrp.production.workcenter.line').signal_button_pause(cr, uid, [order.workcenter_lines[0].id])
-
I resume first work operation.
-
!python {model: mrp.production}: |
- import netsvc
order = self.browse(cr, uid, ref("mrp.mrp_production_1"), context=context)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', order.workcenter_lines[0].id, 'button_resume', cr)
+ self.pool.get('mrp.production.workcenter.line').signal_button_resume(cr, uid, [order.workcenter_lines[0].id])
-
I cancel first work operation.
-
!python {model: mrp.production}: |
- import netsvc
order = self.browse(cr, uid, ref("mrp.mrp_production_1"), context=context)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', order.workcenter_lines[0].id, 'button_cancel', cr)
+ self.pool.get('mrp.production.workcenter.line').signal_button_cancel(cr, uid, [order.workcenter_lines[0].id])
-
I reset first work operation and start after resolving techninal fault of work center.
-
!python {model: mrp.production}: |
- import netsvc
order = self.browse(cr, uid, ref("mrp.mrp_production_1"), context=context)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', order.workcenter_lines[0].id, 'button_draft', cr)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', order.workcenter_lines[0].id, 'button_start_working', cr)
+ self.pool.get('mrp.production.workcenter.line').signal_button_draft(cr, uid, [order.workcenter_lines[0].id])
+ self.pool.get('mrp.production.workcenter.line').signal_button_start_working(cr, uid, [order.workcenter_lines[0].id])
-
I close first work operation as this work center completed its process.
-
!python {model: mrp.production}: |
- import netsvc
order = self.browse(cr, uid, ref("mrp.mrp_production_1"), context=context)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', order.workcenter_lines[0].id, 'button_done', cr)
+ self.pool.get('mrp.production.workcenter.line').signal_button_done(cr, uid, [order.workcenter_lines[0].id])
-
Now I close other operations one by one which are in start state.
-
!python {model: mrp.production}: |
- import netsvc
order = self.browse(cr, uid, ref("mrp.mrp_production_1"), context=context)
- wf_service = netsvc.LocalService("workflow")
for work_line in order.workcenter_lines[1:]:
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', work_line.id, 'button_start_working', cr)
- wf_service.trg_validate(uid, 'mrp.production.workcenter.line', work_line.id, 'button_done', cr)
+ self.pool.get('mrp.production.workcenter.line').signal_button_start_working(cr, uid, [work_line.id])
+ self.pool.get('mrp.production.workcenter.line').signal_button_done(cr, uid, [work_line.id])
-
I check that the production order is now done.
From 830acb128d8451bebb48c7ab14367d7488a12d57 Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Tue, 29 Jan 2013 13:28:08 +0100
Subject: [PATCH 14/60] [IMP] purchase: use the new ORM methods
create_workflow, delete_workflow, redirect_workflow.
bzr revid: vmt@openerp.com-20130129122808-etp3ytphzn2cxnr1
---
addons/purchase/purchase.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index bf3686d5a34..a45da4a2d61 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -487,8 +487,8 @@ class purchase_order(osv.osv):
wf_service = netsvc.LocalService("workflow")
for p_id in ids:
# Deleting the existing instance of workflow for PO
- wf_service.trg_delete(uid, 'purchase.order', p_id, cr)
- wf_service.trg_create(uid, 'purchase.order', p_id, cr)
+ self.delete_workflow(cr, uid, [p_id]) # TODO is it necessary to interleave the calls?
+ self.create_workflow(cr, uid, [p_id])
return True
def action_invoice_create(self, cr, uid, ids, context=None):
@@ -797,7 +797,7 @@ class purchase_order(osv.osv):
# make triggers pointing to the old orders point to the new order
for old_id in old_ids:
- wf_service.trg_redirect(uid, 'purchase.order', old_id, neworder_id, cr)
+ self.redirect_workflow(cr, uid, [(old_id, neworder_id)])
self.signal_purchase_cancel(cr, uid, [old_id]) # TODO Is it necessary to interleave the calls?
return orders_info
From 02a2c8574d101354899ca139221327a36e54a4a1 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Wed, 30 Jan 2013 15:29:03 +0530
Subject: [PATCH 15/60] [IMP] hr_holidays:use the new ORM methods
create_workflow, delete_workflow, redirect_workflow.
bzr revid: cha@tinyerp.com-20130130095903-6exhtm6uruk0ek30
---
addons/hr_holidays/hr_holidays.py | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index 234897809e1..ce30951f7a9 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -304,10 +304,9 @@ class hr_holidays(osv.osv):
'manager_id': False,
'manager_id2': False,
})
- wf_service = netsvc.LocalService("workflow")
for id in ids:
- wf_service.trg_delete(uid, 'hr.holidays', id, cr)
- wf_service.trg_create(uid, 'hr.holidays', id, cr)
+ self.delete_workflow(cr, uid, [id])
+ self.create_workflow(cr, uid, [id])
to_unlink = []
for record in self.browse(cr, uid, ids, context=context):
for record2 in record.linked_request_ids:
From 19368fb65c24bf21852e50eeae5fb0767f1c1fce Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 10:16:08 +0530
Subject: [PATCH 16/60] [IMP] sale: use the new signal_xxx methods instead of
trg_validate.
bzr revid: cha@tinyerp.com-20130131044608-h5dj2xfqyo8ewm6k
---
addons/sale/sale.py | 19 ++++++-------------
addons/sale/wizard/sale_line_invoice.py | 3 +--
addons/sale/wizard/sale_make_invoice.py | 6 ++----
3 files changed, 9 insertions(+), 19 deletions(-)
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 66653c61849..93556a3e7d5 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -418,8 +418,7 @@ class sale_order(osv.osv):
This function prints the sales order and mark it as sent, so that we can see more easily the next step of the workflow
'''
assert len(ids) == 1, 'This option should only be used for a single id at a time'
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'sale.order', ids[0], 'quotation_sent', cr)
+ self.signal_quotation_sent(cr, uid, [ids[0]])
datas = {
'model': 'sale.order',
'ids': ids,
@@ -432,12 +431,10 @@ class sale_order(osv.osv):
view of one of the newly created invoices
"""
mod_obj = self.pool.get('ir.model.data')
- wf_service = netsvc.LocalService("workflow")
-
+
# create invoices through the sales orders' workflow
inv_ids0 = set(inv.id for sale in self.browse(cr, uid, ids, context) for inv in sale.invoice_ids)
- for id in ids:
- wf_service.trg_validate(uid, 'sale.order', id, 'manual_invoice', cr)
+ self.signal_manual_invoice(cr, uid, ids)
inv_ids1 = set(inv.id for sale in self.browse(cr, uid, ids, context) for inv in sale.invoice_ids)
# determine newly created invoices
new_inv_ids = list(inv_ids1 - inv_ids0)
@@ -555,7 +552,6 @@ class sale_order(osv.osv):
return True
def action_cancel(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
if context is None:
context = {}
sale_order_line_obj = self.pool.get('sale.order.line')
@@ -566,8 +562,7 @@ class sale_order(osv.osv):
_('Cannot cancel this sales order!'),
_('First cancel all invoices attached to this sales order.'))
for r in self.read(cr, uid, ids, ['invoice_ids']):
- for inv in r['invoice_ids']:
- wf_service.trg_validate(uid, 'account.invoice', inv, 'invoice_cancel', cr)
+ self.pool.get('account.invoice').signal_invoice_cancel(cr, uid, r['invoice_ids'])
sale_order_line_obj.write(cr, uid, [l.id for l in sale.order_line],
{'state': 'cancel'})
self.write(cr, uid, ids, {'state': 'cancel'})
@@ -575,8 +570,7 @@ class sale_order(osv.osv):
def action_button_confirm(self, cr, uid, ids, context=None):
assert len(ids) == 1, 'This option should only be used for a single id at a time.'
- wf_service = netsvc.LocalService('workflow')
- wf_service.trg_validate(uid, 'sale.order', ids[0], 'order_confirm', cr)
+ self.signal_order_confirm(cr, uid, ids)
# redisplay the record as a sales order
view_ref = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'sale', 'view_order_form')
@@ -992,8 +986,7 @@ class mail_compose_message(osv.Model):
context = context or {}
if context.get('default_model') == 'sale.order' and context.get('default_res_id') and context.get('mark_so_as_sent'):
context = dict(context, mail_post_autofollow=True)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'sale.order', context['default_res_id'], 'quotation_sent', cr)
+ self.pool.get('sale.order').signal_quotation_sent(cr, uid, context['default_res_id'])
return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/sale/wizard/sale_line_invoice.py b/addons/sale/wizard/sale_line_invoice.py
index 4aa58088129..4b18c9a4b39 100644
--- a/addons/sale/wizard/sale_line_invoice.py
+++ b/addons/sale/wizard/sale_line_invoice.py
@@ -80,7 +80,6 @@ class sale_order_line_make_invoice(osv.osv_memory):
sales_order_line_obj = self.pool.get('sale.order.line')
sales_order_obj = self.pool.get('sale.order')
- wf_service = netsvc.LocalService('workflow')
for line in sales_order_line_obj.browse(cr, uid, context.get('active_ids', []), context=context):
if (not line.invoiced) and (line.state not in ('draft', 'cancel')):
if not line.order_id.id in invoices:
@@ -103,7 +102,7 @@ class sale_order_line_make_invoice(osv.osv_memory):
flag = False
break
if flag:
- wf_service.trg_validate(uid, 'sale.order', line.order_id.id, 'manual_invoice', cr)
+ sales_order_obj.signal_manual_invoice(cr, uid, line.order_id.id)
sales_order_obj.write(cr, uid, [line.order_id.id], {'state': 'progress'})
if not invoices:
diff --git a/addons/sale/wizard/sale_make_invoice.py b/addons/sale/wizard/sale_make_invoice.py
index d60adbb7b25..608ae0493df 100644
--- a/addons/sale/wizard/sale_make_invoice.py
+++ b/addons/sale/wizard/sale_make_invoice.py
@@ -52,10 +52,8 @@ class sale_make_invoice(osv.osv_memory):
context = {}
data = self.read(cr, uid, ids)[0]
order_obj.action_invoice_create(cr, uid, context.get(('active_ids'), []), data['grouped'], date_inv = data['invoice_date'])
- wf_service = netsvc.LocalService("workflow")
- for id in context.get(('active_ids'), []):
- wf_service.trg_validate(uid, 'sale.order', id, 'manual_invoice', cr)
-
+ order_obj.signal_manual_invoice(cr, uid, context.get(('active_ids'), []))
+
for o in order_obj.browse(cr, uid, context.get(('active_ids'), []), context=context):
for i in o.invoice_ids:
newinv.append(i.id)
From 4fa593ade57fd184f70829d7b70c46ed80ae41be Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 10:42:29 +0530
Subject: [PATCH 17/60] [IMP] sale: for yml use the new signal_xxx methods
instead of trg_validate.
bzr revid: cha@tinyerp.com-20130131051229-r530h3eawm5bm62s
---
addons/sale/test/cancel_order.yml | 5 +----
addons/sale/test/manual_order_policy.yml | 5 +----
2 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/addons/sale/test/cancel_order.yml b/addons/sale/test/cancel_order.yml
index cde3a5b34f2..d9d76f19935 100644
--- a/addons/sale/test/cancel_order.yml
+++ b/addons/sale/test/cancel_order.yml
@@ -51,11 +51,8 @@
I cancel all the invoices.
-
!python {model: sale.order}: |
- import netsvc
invoice_ids = self.browse(cr, uid, ref("sale_order_8")).invoice_ids
- wf_service = netsvc.LocalService("workflow")
- for invoice in invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice', invoice.id, 'invoice_cancel', cr)
+ self.pool.get('account.invoice').signal_invoice_cancel(cr, uid, invoice_ids)
-
I check order status in "Invoice Exception" and related invoice is in cancel state.
-
diff --git a/addons/sale/test/manual_order_policy.yml b/addons/sale/test/manual_order_policy.yml
index 5fe29950176..905f04b01f5 100644
--- a/addons/sale/test/manual_order_policy.yml
+++ b/addons/sale/test/manual_order_policy.yml
@@ -41,11 +41,8 @@
I open the Invoice.
-
!python {model: sale.order}: |
- import netsvc
- wf_service = netsvc.LocalService("workflow")
so = self.browse(cr, uid, ref("sale_order_2"))
- for invoice in so.invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice', invoice.id, 'invoice_open', cr)
+ self.pool.get('account.invoice').signal_invoice_open(cr, uid, so.invoice_ids)
-
I pay the invoice.
-
From 2ac6d7876f813ece0e13d632b125119f96e035b7 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 11:13:37 +0530
Subject: [PATCH 18/60] [IMP] sale_stock: use the new signal_xxx methods
instead of trg_validate.
bzr revid: cha@tinyerp.com-20130131054337-iph87376e9bhoqpy
---
addons/sale_stock/sale_stock.py | 13 ++++---------
1 file changed, 4 insertions(+), 9 deletions(-)
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index 1b5ddefbe74..6f891a047a1 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -194,7 +194,6 @@ class sale_order(osv.osv):
return res
def action_cancel(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
if context is None:
context = {}
sale_order_line_obj = self.pool.get('sale.order.line')
@@ -209,11 +208,9 @@ class sale_order(osv.osv):
for mov in pick.move_lines:
proc_ids = proc_obj.search(cr, uid, [('move_id', '=', mov.id)])
if proc_ids:
- for proc in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order', proc, 'button_check', cr)
+ self.pool.get('procurement.order').signal_button_check(cr, uid, proc_ids)
for r in self.read(cr, uid, ids, ['picking_ids']):
- for pick in r['picking_ids']:
- wf_service.trg_validate(uid, 'stock.picking', pick, 'button_cancel', cr)
+ self.pool.get('stock.picking').signal_button_cancel(cr, uid, r['picking_ids'])
return super(sale_order, self).action_cancel(cr, uid, ids, context=context)
def action_wait(self, cr, uid, ids, context=None):
@@ -396,11 +393,9 @@ class sale_order(osv.osv):
line.write({'procurement_id': proc_id})
self.ship_recreate(cr, uid, order, line, move_id, proc_id)
- wf_service = netsvc.LocalService("workflow")
if picking_id:
- wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
- for proc_id in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
+ self.pool.get('stock.picking').signal_button_confirm(cr, uid, [picking_id])
+ self.pool.get('procurement.order').signal_button_confirm(cr, uid, proc_ids)
val = {}
if order.state == 'shipping_except':
From 3dfaff6bc3cbe4ad4f479ec6dfb549389126a9cd Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 11:45:33 +0530
Subject: [PATCH 19/60] [IMP] sale_stock: for yml use the new signal_xxx
methods instead of trg_validate.
bzr revid: cha@tinyerp.com-20130131061533-ivbzasitl9a2mi04
---
addons/sale_stock/sale_stock.py | 1 -
addons/sale_stock/test/cancel_order_sale_stock.yml | 8 ++------
addons/sale_stock/test/picking_order_policy.yml | 4 +---
3 files changed, 3 insertions(+), 10 deletions(-)
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index 6f891a047a1..f63282b7a16 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -23,7 +23,6 @@ from datetime import datetime, timedelta
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP, float_compare
from dateutil.relativedelta import relativedelta
from openerp.osv import fields, osv
-from openerp import netsvc
from openerp.tools.translate import _
class sale_shop(osv.osv):
diff --git a/addons/sale_stock/test/cancel_order_sale_stock.yml b/addons/sale_stock/test/cancel_order_sale_stock.yml
index 6805a90ca80..9081cac9fa3 100644
--- a/addons/sale_stock/test/cancel_order_sale_stock.yml
+++ b/addons/sale_stock/test/cancel_order_sale_stock.yml
@@ -17,11 +17,9 @@
Now I cancel latest shipment.
-
!python {model: stock.picking}: |
- import netsvc
delivery_orders = self.search(cr, uid, [('sale_id','=',ref("sale.sale_order_8"))])
last_delivery_order_id = delivery_orders[0]
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'stock.picking', last_delivery_order_id, 'button_cancel', cr)
+ self.pool.get('stock.picking').signal_button_cancel(cr, uid, [last_delivery_order_id])
-
I run the scheduler.
-
@@ -50,11 +48,9 @@
To cancel the sale order from Invoice Exception, I have to cancel the invoice of sale order.
-
!python {model: sale.order}: |
- import netsvc
invoice_ids = self.browse(cr, uid, ref("sale.sale_order_8")).invoice_ids
- wf_service = netsvc.LocalService("workflow")
first_invoice_id = invoice_ids[0]
- wf_service.trg_validate(uid, 'account.invoice', first_invoice_id.id, 'invoice_cancel', cr)
+ self.pool.get('account.invoice').signal_invoice_cancel(cr, uid, [first_invoice_id.id])
-
I check order status in "Invoice Exception" and related invoice is in cancel state.
-
diff --git a/addons/sale_stock/test/picking_order_policy.yml b/addons/sale_stock/test/picking_order_policy.yml
index 800c131e288..a28326598ac 100644
--- a/addons/sale_stock/test/picking_order_policy.yml
+++ b/addons/sale_stock/test/picking_order_policy.yml
@@ -132,11 +132,9 @@
I open the Invoice.
-
!python {model: sale.order}: |
- import netsvc
- wf_service = netsvc.LocalService("workflow")
so = self.browse(cr, uid, ref("sale.sale_order_6"))
for invoice in so.invoice_ids:
- wf_service.trg_validate(uid, 'account.invoice', invoice.id, 'invoice_open', cr)
+ self.pool.get('account.invoice').signal_invoice_open(cr, uid, [invoice.id])
-
I pay the invoice
-
From ba02e50efacdc621130aff19e02c6d0e69c07a7d Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 12:03:33 +0530
Subject: [PATCH 20/60] [IMP] hr_payroll: use the new signal_xxx methods
instead of trg_validate.
bzr revid: cha@tinyerp.com-20130131063333-jhcpvbingaqxroiq
---
addons/hr_payroll/hr_payroll.py | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/addons/hr_payroll/hr_payroll.py b/addons/hr_payroll/hr_payroll.py
index b711ed1a9c4..06af3054b68 100644
--- a/addons/hr_payroll/hr_payroll.py
+++ b/addons/hr_payroll/hr_payroll.py
@@ -26,7 +26,6 @@ from datetime import datetime
from datetime import timedelta
from dateutil import relativedelta
-from openerp import netsvc
from openerp.osv import fields, osv
from openerp import tools
from openerp.tools.translate import _
@@ -331,13 +330,12 @@ class hr_payslip(osv.osv):
def refund_sheet(self, cr, uid, ids, context=None):
mod_obj = self.pool.get('ir.model.data')
- wf_service = netsvc.LocalService("workflow")
for payslip in self.browse(cr, uid, ids, context=context):
id_copy = self.copy(cr, uid, payslip.id, {'credit_note': True, 'name': _('Refund: ')+payslip.name}, context=context)
self.compute_sheet(cr, uid, [id_copy], context=context)
- wf_service.trg_validate(uid, 'hr.payslip', id_copy, 'hr_verify_sheet', cr)
- wf_service.trg_validate(uid, 'hr.payslip', id_copy, 'process_sheet', cr)
-
+ self.signal_hr_verify_sheet(cr, uid, [id_copy])
+ self.signal_process_sheet(cr, uid, [id_copy])
+
form_id = mod_obj.get_object_reference(cr, uid, 'hr_payroll', 'view_hr_payslip_form')
form_res = form_id and form_id[1] or False
tree_id = mod_obj.get_object_reference(cr, uid, 'hr_payroll', 'view_hr_payslip_tree')
From da43da8f3b54be5c4e5392f567d51057d2b250c9 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 14:54:40 +0530
Subject: [PATCH 21/60] [IMP] hr_timesheet_sheet: use the new signal_xxx
methods instead of trg_validate.
bzr revid: cha@tinyerp.com-20130131092440-gxhz5y5rxkfuy9k3
---
addons/hr_timesheet_sheet/hr_timesheet_sheet.py | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
index c473670b014..d9b76dcfb89 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
@@ -93,8 +93,7 @@ class hr_timesheet_sheet(osv.osv):
self.check_employee_attendance_state(cr, uid, sheet.id, context=context)
di = sheet.user_id.company_id.timesheet_max_difference
if (abs(sheet.total_difference) < di) or not di:
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'hr_timesheet_sheet.sheet', sheet.id, 'confirm', cr)
+ self.signal_confirm(cr, uid, [sheet.id])
else:
raise osv.except_osv(_('Warning!'), _('Please verify that the total difference of the sheet is lower than %.2f.') %(di,))
return True
@@ -192,9 +191,8 @@ class hr_timesheet_sheet(osv.osv):
def action_set_to_draft(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {'state': 'draft'})
- wf_service = netsvc.LocalService('workflow')
for id in ids:
- wf_service.trg_create(uid, self._name, id, cr)
+ self.create_workflow(cr, uid, [id])
return True
def name_get(self, cr, uid, ids, context=None):
From 4b7ad7da5633f31b1b06237a8e1a4f5985f12555 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 14:59:50 +0530
Subject: [PATCH 22/60] [IMP] removed unused import
bzr revid: cha@tinyerp.com-20130131092950-mm2xjuv2j2t0gk7v
---
addons/hr_timesheet_sheet/hr_timesheet_sheet.py | 1 -
1 file changed, 1 deletion(-)
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
index d9b76dcfb89..5948c02bc5e 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
@@ -25,7 +25,6 @@ from dateutil.relativedelta import relativedelta
from openerp.osv import fields, osv
from openerp.tools.translate import _
-from openerp import netsvc
class hr_timesheet_sheet(osv.osv):
_name = "hr_timesheet_sheet.sheet"
From d43fa7273659c2600c74d6b8b6ac4a6c62c9f2f2 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 15:09:01 +0530
Subject: [PATCH 23/60] [FIX] l10n_in_hr_payroll: removed unused imports.
bzr revid: cha@tinyerp.com-20130131093901-423rr2g3h5ke0vpb
---
addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py
index da98bbe681a..6a7638d919a 100644
--- a/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py
+++ b/addons/l10n_in_hr_payroll/l10n_in_hr_payroll.py
@@ -26,7 +26,6 @@ from calendar import isleap
from openerp.tools.translate import _
from openerp.osv import fields, osv
-from openerp import netsvc
import openerp.addons.decimal_precision as dp
DATETIME_FORMAT = "%Y-%m-%d"
@@ -179,7 +178,6 @@ class hr_payslip_run(osv.osv):
return res
def create_advice(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
payslip_pool = self.pool.get('hr.payslip')
payslip_line_pool = self.pool.get('hr.payslip.line')
advice_pool = self.pool.get('hr.payroll.advice')
From 4ce0098aa72d05fbfa332c61b694228eb5bf95fd Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 15:17:28 +0530
Subject: [PATCH 24/60] [FIX] purchase: removed unused imports.
bzr revid: cha@tinyerp.com-20130131094728-944bmu3sa1dmbhzy
---
addons/purchase/purchase.py | 3 ---
1 file changed, 3 deletions(-)
diff --git a/addons/purchase/purchase.py b/addons/purchase/purchase.py
index a45da4a2d61..e76bf4a0358 100644
--- a/addons/purchase/purchase.py
+++ b/addons/purchase/purchase.py
@@ -25,7 +25,6 @@ from dateutil.relativedelta import relativedelta
from operator import attrgetter
from openerp.osv import fields, osv
-from openerp import netsvc
from openerp import pooler
from openerp.tools.translate import _
import openerp.addons.decimal_precision as dp
@@ -484,7 +483,6 @@ class purchase_order(osv.osv):
if not len(ids):
return False
self.write(cr, uid, ids, {'state':'draft','shipped':0})
- wf_service = netsvc.LocalService("workflow")
for p_id in ids:
# Deleting the existing instance of workflow for PO
self.delete_workflow(cr, uid, [p_id]) # TODO is it necessary to interleave the calls?
@@ -777,7 +775,6 @@ class purchase_order(osv.osv):
allorders = []
orders_info = {}
- wf_service = netsvc.LocalService("workflow")
for order_key, (order_data, old_ids) in new_orders.iteritems():
# skip merges with only one order
if len(old_ids) < 2:
From de90c600cdc9771494b17504ddc63024f5d18f6c Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 15:25:41 +0530
Subject: [PATCH 25/60] [FIX] purchase: removed unused imports from yml.
bzr revid: cha@tinyerp.com-20130131095541-2p4hocnztgrkvp98
---
addons/purchase/test/process/rfq2order2done.yml | 2 --
1 file changed, 2 deletions(-)
diff --git a/addons/purchase/test/process/rfq2order2done.yml b/addons/purchase/test/process/rfq2order2done.yml
index be68a8ca01e..ff9158b3c09 100644
--- a/addons/purchase/test/process/rfq2order2done.yml
+++ b/addons/purchase/test/process/rfq2order2done.yml
@@ -59,9 +59,7 @@
I Validate Invoice of Purchase Order.
-
!python {model: purchase.order}: |
- import netsvc
invoice_ids = [x.id for x in self.browse(cr, uid, ref("purchase_order_1")).invoice_ids]
- wf_service = netsvc.LocalService("workflow")
self.pool.get('account.invoice').signal_invoice_open(cr, uid, invoice_ids)
-
I check that purchase order is invoiced.
From 8045a7556d4fcef4a9640828e84fb799370d9a18 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 16:00:15 +0530
Subject: [PATCH 26/60] [IMP] purchase_requisition: use the new signal_xxx
methods instead of trg_validate.
bzr revid: cha@tinyerp.com-20130131103015-ooa3nr4j6qllpfgk
---
addons/purchase_requisition/purchase_requisition.py | 4 +---
addons/purchase_requisition/test/purchase_requisition.yml | 4 +---
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/addons/purchase_requisition/purchase_requisition.py b/addons/purchase_requisition/purchase_requisition.py
index f773bbd8505..79b8cce4bd5 100644
--- a/addons/purchase_requisition/purchase_requisition.py
+++ b/addons/purchase_requisition/purchase_requisition.py
@@ -22,7 +22,6 @@
from datetime import datetime
from dateutil.relativedelta import relativedelta
import time
-from openerp import netsvc
from openerp.osv import fields,osv
from openerp.tools.translate import _
@@ -211,8 +210,7 @@ class purchase_order(osv.osv):
proc_ids = proc_obj.search(cr, uid, [('purchase_id', '=', order.id)])
if proc_ids and po.state=='confirmed':
proc_obj.write(cr, uid, proc_ids, {'purchase_id': po.id})
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'purchase.order', order.id, 'purchase_cancel', cr)
+ self.signal_purchase_cancel(cr, uid, [order.id])
po.requisition_id.tender_done(context=context)
return res
diff --git a/addons/purchase_requisition/test/purchase_requisition.yml b/addons/purchase_requisition/test/purchase_requisition.yml
index 38e66788dcf..f23737d21b8 100644
--- a/addons/purchase_requisition/test/purchase_requisition.yml
+++ b/addons/purchase_requisition/test/purchase_requisition.yml
@@ -69,10 +69,8 @@
I confirmed RFQ which has best price.
-
!python {model: purchase.order}: |
- import netsvc
- wf_service = netsvc.LocalService("workflow")
purchase = self.browse(cr, uid, ref('rfq2'), context=context)
- wf_service.trg_validate(uid, 'purchase.order', purchase.id, 'purchase_confirm', cr)
+ self.signal_purchase_confirm(cr, uid, [purchase.id])
-
I check status of requisition after confirmed best RFQ.
From fc374647a9c0dad7411992d799132c0475fbaf38 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 16:49:52 +0530
Subject: [PATCH 27/60] [IMP] procurement: use the new signal_xxx methods
instead of trg_validate.
bzr revid: cha@tinyerp.com-20130131111952-tnq7iiwj9u5opyge
---
addons/procurement/procurement.py | 1 -
addons/procurement/schedulers.py | 3 ---
addons/procurement/wizard/make_procurement_product.py | 6 ++----
3 files changed, 2 insertions(+), 8 deletions(-)
diff --git a/addons/procurement/procurement.py b/addons/procurement/procurement.py
index 21c260b99cd..30d870647e2 100644
--- a/addons/procurement/procurement.py
+++ b/addons/procurement/procurement.py
@@ -456,7 +456,6 @@ class procurement_order(osv.osv):
class StockPicking(osv.osv):
_inherit = 'stock.picking'
def test_finished(self, cr, uid, ids):
- wf_service = netsvc.LocalService("workflow")
res = super(StockPicking, self).test_finished(cr, uid, ids)
for picking in self.browse(cr, uid, ids):
for move in picking.move_lines:
diff --git a/addons/procurement/schedulers.py b/addons/procurement/schedulers.py
index 76b31cc6da3..c09d9a22a16 100644
--- a/addons/procurement/schedulers.py
+++ b/addons/procurement/schedulers.py
@@ -57,7 +57,6 @@ class procurement_order(osv.osv):
try:
if use_new_cursor:
cr = pooler.get_db(use_new_cursor).cursor()
- wf_service = netsvc.LocalService("workflow")
procurement_obj = self.pool.get('procurement.order')
if not ids:
@@ -154,7 +153,6 @@ class procurement_order(osv.osv):
product_obj = self.pool.get('product.product')
proc_obj = self.pool.get('procurement.order')
warehouse_obj = self.pool.get('stock.warehouse')
- wf_service = netsvc.LocalService("workflow")
warehouse_ids = warehouse_obj.search(cr, uid, [], context=context)
products_ids = product_obj.search(cr, uid, [('purchase_ok', '=', True)], order='id', context=context)
@@ -224,7 +222,6 @@ class procurement_order(osv.osv):
orderpoint_obj = self.pool.get('stock.warehouse.orderpoint')
procurement_obj = self.pool.get('procurement.order')
- wf_service = netsvc.LocalService("workflow")
offset = 0
ids = [1]
if automatic:
diff --git a/addons/procurement/wizard/make_procurement_product.py b/addons/procurement/wizard/make_procurement_product.py
index 34a146289f6..fa159780af2 100644
--- a/addons/procurement/wizard/make_procurement_product.py
+++ b/addons/procurement/wizard/make_procurement_product.py
@@ -19,7 +19,6 @@
#
##############################################################################
-from openerp import netsvc
from openerp.osv import fields, osv
@@ -64,7 +63,6 @@ class make_procurement(osv.osv_memory):
user = self.pool.get('res.users').browse(cr, uid, uid, context=context).login
wh_obj = self.pool.get('stock.warehouse')
procurement_obj = self.pool.get('procurement.order')
- wf_service = netsvc.LocalService("workflow")
data_obj = self.pool.get('ir.model.data')
for proc in self.browse(cr, uid, ids, context=context):
@@ -78,8 +76,8 @@ class make_procurement(osv.osv_memory):
'location_id': wh.lot_stock_id.id,
'procure_method':'make_to_order',
})
-
- wf_service.trg_validate(uid, 'procurement.order', procure_id, 'button_confirm', cr)
+
+ self.pool.get('procurement.order').signal_button_confirm(cr, uid, [procure_id])
id2 = data_obj._get_id(cr, uid, 'procurement', 'procurement_tree_view')
From d4328ba8d57010a669efc1724264fba534f88b46 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 17:29:54 +0530
Subject: [PATCH 28/60] [IMP] account_voucher: : use the new ORM methods
create_workflow, delete_workflow, redirect_workflow.
bzr revid: cha@tinyerp.com-20130131115954-54u8z5ibntrs4sco
---
addons/account_voucher/account_voucher.py | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/addons/account_voucher/account_voucher.py b/addons/account_voucher/account_voucher.py
index 2046d787ef3..2e808e26b75 100644
--- a/addons/account_voucher/account_voucher.py
+++ b/addons/account_voucher/account_voucher.py
@@ -22,7 +22,6 @@
import time
from lxml import etree
-from openerp import netsvc
from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp
from openerp.tools.translate import _
@@ -828,9 +827,7 @@ class account_voucher(osv.osv):
return True
def action_cancel_draft(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
- for voucher_id in ids:
- wf_service.trg_create(uid, 'account.voucher', voucher_id, cr)
+ self.create_workflow(cr, uid, ids)
self.write(cr, uid, ids, {'state':'draft'})
return True
From eebaf0767ed79a70cc999ff32cae325bc81aa839 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Thu, 31 Jan 2013 17:30:47 +0530
Subject: [PATCH 29/60] [IMP] mrp_operation: use the new ORM methods
create_workflow, delete_workflow, redirect_workflow.
bzr revid: tta@openerp.com-20130131120047-9ehhi00keo0p6gjq
---
addons/mrp_operations/mrp_operations.py | 8 +++-----
1 file changed, 3 insertions(+), 5 deletions(-)
diff --git a/addons/mrp_operations/mrp_operations.py b/addons/mrp_operations/mrp_operations.py
index a60b348559c..cce27d3a6c2 100644
--- a/addons/mrp_operations/mrp_operations.py
+++ b/addons/mrp_operations/mrp_operations.py
@@ -500,7 +500,6 @@ class mrp_operations_operation(osv.osv):
def create(self, cr, uid, vals, context=None):
workcenter_pool = self.pool.get('mrp.production.workcenter.line')
- wf_service = netsvc.LocalService('workflow')
code_ids=self.pool.get('mrp_operations.operation.code').search(cr,uid,[('id','=',vals['code_id'])])
code=self.pool.get('mrp_operations.operation.code').browse(cr, uid, code_ids, context=context)[0]
wc_op_id=workcenter_pool.search(cr,uid,[('workcenter_id','=',vals['workcenter_id']),('production_id','=',vals['production_id'])])
@@ -545,10 +544,9 @@ class mrp_operations_operation(osv.osv):
return super(mrp_operations_operation, self).create(cr, uid, vals, context=context)
def initialize_workflow_instance(self, cr, uid, context=None):
- wf_service = netsvc.LocalService("workflow")
- line_ids = self.pool.get('mrp.production.workcenter.line').search(cr, uid, [], context=context)
- for line_id in line_ids:
- wf_service.trg_create(uid, 'mrp.production.workcenter.line', line_id, cr)
+ mrp_production_workcenter_line = self.pool.get('mrp.production.workcenter.line')
+ line_ids = mrp_production_workcenter_line.search(cr, uid, [], context=context)
+ mrp_production_workcenter_line.create_workflow(cr, uid, line_ids)
return True
_columns={
From 401b039e809598fc9e242f9dda1a34545430219d Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Thu, 31 Jan 2013 17:49:15 +0530
Subject: [PATCH 30/60] [IMP] mrp: use the new signal_xxx method instead of
trg_validate.
bzr revid: tta@openerp.com-20130131121915-gahj7t5ob6s2y0q8
---
addons/mrp/mrp.py | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index 44fbaafbcfe..b8081f461d6 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -27,7 +27,6 @@ from openerp.osv import fields, osv
from openerp.tools import DEFAULT_SERVER_DATETIME_FORMAT, DATETIME_FORMATS_MAP
from openerp.tools import float_compare
from openerp.tools.translate import _
-from openerp import netsvc
from openerp import tools
#----------------------------------------------------------
@@ -775,8 +774,7 @@ class mrp_production(osv.osv):
for new_parent_id in new_parent_ids:
stock_mov_obj.write(cr, uid, [raw_product.id], {'move_history_ids': [(4,new_parent_id)]})
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'mrp.production', production_id, 'button_produce_done', cr)
+ self.signal_button_produce_done(cr, uid, [production_id])
return True
def _costs_generate(self, cr, uid, production):
@@ -844,7 +842,6 @@ class mrp_production(osv.osv):
return True
def _make_production_line_procurement(self, cr, uid, production_line, shipment_move_id, context=None):
- wf_service = netsvc.LocalService("workflow")
procurement_order = self.pool.get('procurement.order')
production = production_line.production_id
location_id = production.location_src_id.id
@@ -864,7 +861,7 @@ class mrp_production(osv.osv):
'move_id': shipment_move_id,
'company_id': production.company_id.id,
})
- wf_service.trg_validate(uid, procurement_order._name, procurement_id, 'button_confirm', cr)
+ self.signal_button_confirm(cr, uid, [procurement_id])
return procurement_id
def _make_production_internal_shipment_line(self, cr, uid, production_line, shipment_id, parent_move_id, destination_location_id=False, context=None):
@@ -977,7 +974,6 @@ class mrp_production(osv.osv):
@return: Newly generated Shipment Id.
"""
shipment_id = False
- wf_service = netsvc.LocalService("workflow")
uncompute_ids = filter(lambda x:x, [not x.product_lines and x.id or False for x in self.browse(cr, uid, ids, context=context)])
self.action_compute(cr, uid, uncompute_ids, context=context)
for production in self.browse(cr, uid, ids, context=context):
@@ -995,7 +991,7 @@ class mrp_production(osv.osv):
destination_location_id=source_location_id, context=context)
self._make_production_line_procurement(cr, uid, line, shipment_move_id, context=context)
- wf_service.trg_validate(uid, 'stock.picking', shipment_id, 'button_confirm', cr)
+ self.registry('stock.picking').signal_button_confirm(cr, uid, [shipment_id])
production.write({'state':'confirmed'}, context=context)
return shipment_id
From 9a1d53ba2dbd3f5c7e42696f3aef8e4963754013 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Thu, 31 Jan 2013 18:01:22 +0530
Subject: [PATCH 31/60] [IMP] account_payment: : use the new ORM methods
create_workflow, delete_workflow, redirect_workflow.
bzr revid: cha@tinyerp.com-20130131123122-td7ebesygpa605y0
---
addons/account_payment/account_payment.py | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/addons/account_payment/account_payment.py b/addons/account_payment/account_payment.py
index c57c83aa765..bf0377111a8 100644
--- a/addons/account_payment/account_payment.py
+++ b/addons/account_payment/account_payment.py
@@ -23,7 +23,6 @@ import logging
import time
from openerp.osv import fields, osv
-from openerp import netsvc
_logger = logging.getLogger(__name__)
@@ -120,9 +119,7 @@ class payment_order(osv.osv):
def set_to_draft(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {'state': 'draft'})
- wf_service = netsvc.LocalService("workflow")
- for id in ids:
- wf_service.trg_create(uid, 'payment.order', id, cr)
+ self.create_workflow(cr, uid, ids)
return True
def action_open(self, cr, uid, ids, *args):
From c35416245f1932361e65fb7cfbe75a0aee3c1372 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Thu, 31 Jan 2013 18:18:41 +0530
Subject: [PATCH 32/60] [IMP] mrp_repain: use the new signal_xxx method instead
of trg_validate.
bzr revid: tta@openerp.com-20130131124841-ej81d0ethz8859r0
---
addons/mrp_repair/mrp_repair.py | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py
index 8c43158a876..7bb12b0402a 100644
--- a/addons/mrp_repair/mrp_repair.py
+++ b/addons/mrp_repair/mrp_repair.py
@@ -20,7 +20,6 @@
##############################################################################
from openerp.osv import fields,osv
-from openerp import netsvc
from datetime import datetime
from dateutil.relativedelta import relativedelta
from openerp.tools.translate import _
@@ -314,9 +313,7 @@ class mrp_repair(osv.osv):
for repair in self.browse(cr, uid, ids):
mrp_line_obj.write(cr, uid, [l.id for l in repair.operations], {'state': 'draft'})
self.write(cr, uid, ids, {'state':'draft'})
- wf_service = netsvc.LocalService("workflow")
- for id in ids:
- wf_service.trg_create(uid, 'mrp.repair', id, cr)
+ self.create_workflow(cr, uid, ids)
return True
def action_confirm(self, cr, uid, ids, *args):
@@ -505,7 +502,6 @@ class mrp_repair(osv.osv):
"""
res = {}
move_obj = self.pool.get('stock.move')
- wf_service = netsvc.LocalService("workflow")
repair_line_obj = self.pool.get('mrp.repair.line')
seq_obj = self.pool.get('ir.sequence')
pick_obj = self.pool.get('stock.picking')
@@ -548,7 +544,7 @@ class mrp_repair(osv.osv):
'tracking_id': False,
'state': 'assigned',
})
- wf_service.trg_validate(uid, 'stock.picking', picking, 'button_confirm', cr)
+ self.registry.signal_button_confirm(cr, uid, [picking])
self.write(cr, uid, [repair.id], {'state': 'done', 'picking_id': picking})
res[repair.id] = picking
else:
From f63497e12ff9c933706dec07ba13d6432bd7199a Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Thu, 31 Jan 2013 18:36:50 +0530
Subject: [PATCH 33/60] [IMP] hr_expense: cleanup the code for workflow
declaration.
bzr revid: tta@openerp.com-20130131130650-szwdnjyqiohdimio
---
addons/hr_expense/hr_expense.py | 2 --
1 file changed, 2 deletions(-)
diff --git a/addons/hr_expense/hr_expense.py b/addons/hr_expense/hr_expense.py
index f32479c2ae2..0b6ec48974b 100644
--- a/addons/hr_expense/hr_expense.py
+++ b/addons/hr_expense/hr_expense.py
@@ -21,7 +21,6 @@
import time
-from openerp import netsvc
from openerp.osv import fields, osv
from openerp.tools.translate import _
@@ -152,7 +151,6 @@ class hr_expense_expense(osv.osv):
account_journal = self.pool.get('account.journal')
voucher_obj = self.pool.get('account.voucher')
currency_obj = self.pool.get('res.currency')
- wkf_service = netsvc.LocalService("workflow")
if context is None:
context = {}
for exp in self.browse(cr, uid, ids, context=context):
From d80d06514474fc33a262b4e9a736b67e72cae029 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Thu, 31 Jan 2013 18:41:07 +0530
Subject: [PATCH 34/60] [IMP] hr_payroll_account: use the new signal_xxx method
instead of trg_validate.
bzr revid: tta@openerp.com-20130131131107-4h42x3g19blw6jzw
---
addons/hr_payroll_account/test/hr_payroll_account.yml | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/addons/hr_payroll_account/test/hr_payroll_account.yml b/addons/hr_payroll_account/test/hr_payroll_account.yml
index 5abf7d5dffa..ad0197c7905 100644
--- a/addons/hr_payroll_account/test/hr_payroll_account.yml
+++ b/addons/hr_payroll_account/test/hr_payroll_account.yml
@@ -104,10 +104,8 @@
I want to check cancel button. So I first cancel the sheet then make it set to draft.
-
!python {model: hr.payslip}: |
- import netsvc
- wf_service = netsvc.LocalService("workflow")
self.cancel_sheet(cr, uid, [ref("hr_payslip_0")], None)
- wf_service.trg_validate(uid, 'hr.payslip', ref("hr_payslip_0"), 'draft', cr)
+ self.signal_draft(cr, uid, [ref("hr_payslip_0")])
-
Then I click on the "Confirm" button.
-
From 0b7fe8278e8050faa6fbd568db2c704fc619254e Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 10:23:11 +0530
Subject: [PATCH 35/60] [IMP] mrp: use the new signal_xxx methods instead of
trg_validate.
bzr revid: tta@openerp.com-20130201045311-1njirm57d9cd5mff
---
addons/mrp/stock.py | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/addons/mrp/stock.py b/addons/mrp/stock.py
index ae7edf54750..1ff121c78bd 100644
--- a/addons/mrp/stock.py
+++ b/addons/mrp/stock.py
@@ -21,7 +21,6 @@
from openerp.osv import fields
from openerp.osv import osv
-from openerp import netsvc
class StockMove(osv.osv):
@@ -45,7 +44,6 @@ class StockMove(osv.osv):
move_obj = self.pool.get('stock.move')
procurement_obj = self.pool.get('procurement.order')
product_obj = self.pool.get('product.product')
- wf_service = netsvc.LocalService("workflow")
processed_ids = [move.id]
if move.product_id.supply_method == 'produce' and move.product_id.procure_method == 'make_to_order':
bis = bom_obj.search(cr, uid, [
@@ -90,16 +88,17 @@ class StockMove(osv.osv):
'procure_method': prodobj.procure_method,
'move_id': mid,
})
- wf_service.trg_validate(uid, 'procurement.order', proc_id, 'button_confirm', cr)
+ procurement_obj.signal_button_confirm(cr, uid, [proc_id])
+
move_obj.write(cr, uid, [move.id], {
'location_dest_id': move.location_id.id, # dummy move for the kit
'auto_validate': True,
'picking_id': False,
'state': 'confirmed'
})
- for m in procurement_obj.search(cr, uid, [('move_id','=',move.id)], context):
- wf_service.trg_validate(uid, 'procurement.order', m, 'button_confirm', cr)
- wf_service.trg_validate(uid, 'procurement.order', m, 'button_wait_done', cr)
+ procurement_ids = procurement_obj.search(cr, uid, [('move_id','=',move.id)], context)
+ procurement_obj.signal_button_confirm(cr, uid, procurement_ids)
+ procurement_obj.signal_button_wait_done(cr, uid, procurement_ids)
return processed_ids
def action_consume(self, cr, uid, ids, product_qty, location_id=False, context=None):
@@ -110,7 +109,6 @@ class StockMove(osv.osv):
"""
res = []
production_obj = self.pool.get('mrp.production')
- wf_service = netsvc.LocalService("workflow")
for move in self.browse(cr, uid, ids):
move.action_confirm(context)
new_moves = super(StockMove, self).action_consume(cr, uid, [move.id], product_qty, location_id, context=context)
@@ -118,7 +116,7 @@ class StockMove(osv.osv):
for prod in production_obj.browse(cr, uid, production_ids, context=context):
if prod.state == 'confirmed':
production_obj.force_production(cr, uid, [prod.id])
- wf_service.trg_validate(uid, 'mrp.production', prod.id, 'button_produce', cr)
+ production_obj.signal_button_produce(cr, uid, production_ids)
for new_move in new_moves:
if new_move == move.id:
#This move is already there in move lines of production order
@@ -135,14 +133,13 @@ class StockMove(osv.osv):
"""
res = []
production_obj = self.pool.get('mrp.production')
- wf_service = netsvc.LocalService("workflow")
for move in self.browse(cr, uid, ids, context=context):
new_moves = super(StockMove, self).action_scrap(cr, uid, [move.id], product_qty, location_id, context=context)
#If we are not scrapping our whole move, tracking and lot references must not be removed
#self.write(cr, uid, [move.id], {'prodlot_id': False, 'tracking_id': False})
production_ids = production_obj.search(cr, uid, [('move_lines', 'in', [move.id])])
for prod_id in production_ids:
- wf_service.trg_validate(uid, 'mrp.production', prod_id, 'button_produce', cr)
+ production_obj.signal_button_produce(cr, uid, [prod_id])
for new_move in new_moves:
production_obj.write(cr, uid, production_ids, {'move_lines': [(4, new_move)]})
res.append(new_move)
From 263e0cf4824324d9842cca0688350bee7c726643 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 10:35:51 +0530
Subject: [PATCH 36/60] [IMP] hr_timesheet_invoice: code cleanup unused
import.
bzr revid: tta@openerp.com-20130201050551-1v45eut2toek9g7x
---
addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml | 2 --
.../test/test_hr_timesheet_invoice_no_prod_tax.yml | 2 --
2 files changed, 4 deletions(-)
diff --git a/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml b/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml
index de19ea8fb3a..0896cf7d517 100644
--- a/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml
+++ b/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice.yml
@@ -115,6 +115,4 @@
I click on "Create Invoice" button to create Invoice and validate the invoice.
-
!python {model: hr.timesheet.invoice.create.final}: |
- import netsvc
- wkf_service = netsvc.LocalService("workflow")
res = self.do_create(cr, uid, [ref("hr_timesheet_invoice_create_final_0")], {"active_ids": [ref("account.analytic_agrolait")]})
diff --git a/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml b/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml
index 68e827e79f1..d00963073f0 100644
--- a/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml
+++ b/addons/hr_timesheet_invoice/test/test_hr_timesheet_invoice_no_prod_tax.yml
@@ -114,6 +114,4 @@
I click on "Create Invoice" button to create Invoice and validate the invoice.
-
!python {model: hr.timesheet.invoice.create.final}: |
- import netsvc
- wkf_service = netsvc.LocalService("workflow")
res = self.do_create(cr, uid, [ref("hr_timesheet_invoice_create_final_0")], {"active_ids": [ref("account.analytic_agrolait")]})
From ddf3057db54a72991bd06b4d577da3c5ab4a2ab8 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 10:42:33 +0530
Subject: [PATCH 37/60] [IMP] mrp: use the new signal_xxx methods instead of
trg_validate.
bzr revid: tta@openerp.com-20130201051233-tcegov6upxq1jsqo
---
addons/mrp/procurement.py | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/addons/mrp/procurement.py b/addons/mrp/procurement.py
index 8162c3178dc..1f94f0034ad 100644
--- a/addons/mrp/procurement.py
+++ b/addons/mrp/procurement.py
@@ -24,7 +24,6 @@ from dateutil.relativedelta import relativedelta
from openerp.osv import fields
from openerp.osv import osv
from openerp.tools.translate import _
-from openerp import netsvc
class procurement_order(osv.osv):
_inherit = 'procurement.order'
@@ -87,7 +86,6 @@ class procurement_order(osv.osv):
company = self.pool.get('res.users').browse(cr, uid, uid, context).company_id
production_obj = self.pool.get('mrp.production')
move_obj = self.pool.get('stock.move')
- wf_service = netsvc.LocalService("workflow")
procurement_obj = self.pool.get('procurement.order')
for procurement in procurement_obj.browse(cr, uid, ids, context=context):
res_id = procurement.move_id.id
@@ -112,7 +110,7 @@ class procurement_order(osv.osv):
self.write(cr, uid, [procurement.id], {'state': 'running', 'production_id': produce_id})
bom_result = production_obj.action_compute(cr, uid,
[produce_id], properties=[x.id for x in procurement.property_ids])
- wf_service.trg_validate(uid, 'mrp.production', produce_id, 'button_confirm', cr)
+ production_obj.signal_button_confirm(cr, uid, [produce_id])
if res_id:
move_obj.write(cr, uid, [res_id],
{'location_id': procurement.location_id.id})
From 191a095164482f7fe91a897a9ba812dd9c153f46 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 10:50:27 +0530
Subject: [PATCH 38/60] [IMP] membership: use the new signal_xxx methods
instead of trg_validate.
bzr revid: tta@openerp.com-20130201052027-2c0quhoqligc6ag2
---
addons/membership/test/test_membership.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/membership/test/test_membership.yml b/addons/membership/test/test_membership.yml
index 357fcbcfc3e..8e8e7887b44 100644
--- a/addons/membership/test/test_membership.yml
+++ b/addons/membership/test/test_membership.yml
@@ -42,8 +42,8 @@
membership_lines = membership_line_pool.browse(cr, uid, membership_line_ids)
assert membership_lines, _('Membership is not registrated.')
membership_line = membership_lines[0]
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.invoice', membership_line.account_invoice_id.id, 'invoice_open', cr)
+ invoice_pool.signal_invoice_open(cr, uid, [membership_line.account_invoice_id.id])
+
- |
I'm checking "Current membership state" of "Seagate". It is an "Invoiced Member" or not.
-
From 89d400f824ba89dc45bc6a982b7b74a64a5f29ed Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 11:11:20 +0530
Subject: [PATCH 39/60] [IMP] mrp_repair: use the new signal_xxx methods
instead of trg_validate.
bzr revid: tta@openerp.com-20130201054120-lzah0vb83w3ff53z
---
addons/mrp_repair/wizard/make_invoice.py | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/addons/mrp_repair/wizard/make_invoice.py b/addons/mrp_repair/wizard/make_invoice.py
index a6e93aca064..9442746d68e 100644
--- a/addons/mrp_repair/wizard/make_invoice.py
+++ b/addons/mrp_repair/wizard/make_invoice.py
@@ -19,7 +19,6 @@
#
##############################################################################
-from openerp import netsvc
from openerp.osv import fields, osv
class make_invoice(osv.osv_memory):
@@ -50,9 +49,7 @@ class make_invoice(osv.osv_memory):
# We have to trigger the workflow of the given repairs, otherwise they remain 'to be invoiced'.
# Note that the signal 'action_invoice_create' will trigger another call to the method 'action_invoice_create',
# but that second call will not do anything, since the repairs are already invoiced.
- wf_service = netsvc.LocalService("workflow")
- for repair_id in context['active_ids']:
- wf_service.trg_validate(uid, 'mrp.repair', repair_id, 'action_invoice_create', cr)
+ order_obj.signal_action_invoice_create(cr, uid, context['active_ids'])
form_res = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_form')
form_id = form_res and form_res[1] or False
From 048907a80f9f24986fdba0a0d462adb9dd1e94b1 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 11:38:37 +0530
Subject: [PATCH 40/60] [IMP] sale_mrp: use the new signal_xxx methods instead
of trg_validate.
bzr revid: tta@openerp.com-20130201060837-6uiv82cobhwjhimg
---
addons/sale_mrp/test/sale_mrp.yml | 5 +----
1 file changed, 1 insertion(+), 4 deletions(-)
diff --git a/addons/sale_mrp/test/sale_mrp.yml b/addons/sale_mrp/test/sale_mrp.yml
index 6fd64301af2..c2eff008943 100644
--- a/addons/sale_mrp/test/sale_mrp.yml
+++ b/addons/sale_mrp/test/sale_mrp.yml
@@ -103,11 +103,8 @@
!python {model: procurement.order}: |
sale_order_obj = self.pool.get('sale.order')
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
- import netsvc
- wf_service = netsvc.LocalService("workflow")
proc_ids = self.search(cr, uid, [('origin','=',so.name)])
- for proc in proc_ids:
- wf_service.trg_validate(uid, 'procurement.order',proc,'button_check', cr)
+ self.signal_button_check(cr, uid, proc_ids)
-
I verify that a procurement state is "running"
-
From 3589c008ad440ea18d8f382c590228977af7c70e Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 11:54:21 +0530
Subject: [PATCH 41/60] [IMP] POS: use the new signal_xxx methods instead of
trg_validate.
bzr revid: cha@tinyerp.com-20130201062421-luknla6wp3yqxhqm
---
addons/point_of_sale/point_of_sale.py | 20 ++++++++-----------
addons/point_of_sale/wizard/pos_confirm.py | 4 +---
addons/point_of_sale/wizard/pos_payment.py | 4 +---
addons/point_of_sale/wizard/pos_return.py | 10 +++-------
.../wizard/pos_session_opening.py | 4 +---
5 files changed, 14 insertions(+), 28 deletions(-)
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 970eb1fbed7..9b9e5b951b4 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -27,7 +27,7 @@ import pdb
import time
import openerp
-from openerp import netsvc, tools
+from openerp import tools
from openerp.osv import fields, osv
from openerp.tools.translate import _
@@ -442,8 +442,7 @@ class pos_session(osv.osv):
}
def _confirm_orders(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
-
+
for session in self.browse(cr, uid, ids, context=context):
order_ids = [order.id for order in session.order_ids if order.state == 'paid']
@@ -457,7 +456,7 @@ class pos_session(osv.osv):
_('Error!'),
_("You cannot confirm all orders of this session, because they have not the 'paid' status"))
else:
- wf_service.trg_validate(uid, 'pos.order', order.id, 'done', cr)
+ self.pool.get('pos.order').signal_done(cr, uid, [order.id])
return True
@@ -519,8 +518,7 @@ class pos_order(osv.osv):
'journal': cash_journal.id,
}, context=context)
order_ids.append(order_id)
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'pos.order', order_id, 'paid', cr)
+ self.signal_paid(cr, uid, [order_id])
return order_ids
def unlink(self, cr, uid, ids, context=None):
@@ -695,9 +693,8 @@ class pos_order(osv.osv):
}, context=context)
if line.qty < 0:
location_id, output_id = output_id, location_id
-
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'stock.picking', picking_id, 'button_confirm', cr)
+
+ self.pool.get('stock.picking').signal_button_confirm(cr, uid, [picking_id])
picking_obj.force_assign(cr, uid, [picking_id], context)
return True
@@ -707,7 +704,7 @@ class pos_order(osv.osv):
"""
stock_picking_obj = self.pool.get('stock.picking')
for order in self.browse(cr, uid, ids, context=context):
- wf_service.trg_validate(uid, 'stock.picking', order.picking_id.id, 'button_cancel', cr)
+ self.pool.get('stock.picking').signal_button_cancel(cr, uid, [order.picking_id.id])
if stock_picking_obj.browse(cr, uid, order.picking_id.id, context=context).state <> 'cancel':
raise osv.except_osv(_('Error!'), _('Unable to cancel the picking.'))
self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
@@ -803,7 +800,6 @@ class pos_order(osv.osv):
return self.write(cr, uid, ids, {'state':'invoiced'}, context=context)
def action_invoice(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
inv_ref = self.pool.get('account.invoice')
inv_line_ref = self.pool.get('account.invoice.line')
product_obj = self.pool.get('product.product')
@@ -857,7 +853,7 @@ class pos_order(osv.osv):
and [(6, 0, inv_line['invoice_line_tax_id'])] or []
inv_line_ref.create(cr, uid, inv_line, context=context)
inv_ref.button_reset_taxes(cr, uid, [inv_id], context=context)
- wf_service.trg_validate(uid, 'pos.order', order.id, 'invoice', cr)
+ self.signal_invoice(cr, uid, [order.id])
if not inv_ids: return {}
diff --git a/addons/point_of_sale/wizard/pos_confirm.py b/addons/point_of_sale/wizard/pos_confirm.py
index 4dec36685f0..ebc432a846f 100644
--- a/addons/point_of_sale/wizard/pos_confirm.py
+++ b/addons/point_of_sale/wizard/pos_confirm.py
@@ -19,7 +19,6 @@
#
##############################################################################
-from openerp import netsvc
from openerp.osv import osv
@@ -28,7 +27,6 @@ class pos_confirm(osv.osv_memory):
_description = 'Post POS Journal Entries'
def action_confirm(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
order_obj = self.pool.get('pos.order')
ids = order_obj.search(cr, uid, [('state','=','paid')], context=context)
for order in order_obj.browse(cr, uid, ids, context=context):
@@ -38,7 +36,7 @@ class pos_confirm(osv.osv_memory):
todo = False
break
if todo:
- wf_service.trg_validate(uid, 'pos.order', order.id, 'done', cr)
+ self.pool.get('pos.order').signal_done(cr, uid, [order.id])
# Check if there is orders to reconcile their invoices
ids = order_obj.search(cr, uid, [('state','=','invoiced'),('invoice_id.state','=','open')], context=context)
diff --git a/addons/point_of_sale/wizard/pos_payment.py b/addons/point_of_sale/wizard/pos_payment.py
index 0a1684ca9ca..5f90f267f7e 100644
--- a/addons/point_of_sale/wizard/pos_payment.py
+++ b/addons/point_of_sale/wizard/pos_payment.py
@@ -23,7 +23,6 @@ import time
import pos_box_entries
-from openerp import netsvc
from openerp.osv import osv, fields
from openerp.tools.translate import _
@@ -67,8 +66,7 @@ class pos_make_payment(osv.osv_memory):
order_obj.add_payment(cr, uid, active_id, data, context=context)
if order_obj.test_paid(cr, uid, [active_id]):
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'pos.order', active_id, 'paid', cr)
+ self.pool.get('pos.order').signal_paid(cr, uid, [active_id])
return {'type' : 'ir.actions.act_window_close' }
##self.print_report(cr, uid, ids, context=context)
diff --git a/addons/point_of_sale/wizard/pos_return.py b/addons/point_of_sale/wizard/pos_return.py
index d6dfdd1e183..f711a2e56ee 100644
--- a/addons/point_of_sale/wizard/pos_return.py
+++ b/addons/point_of_sale/wizard/pos_return.py
@@ -19,7 +19,6 @@
#
##############################################################################
-from openerp import netsvc
from openerp.osv import osv,fields
from openerp.tools.translate import _
import time
@@ -104,7 +103,6 @@ class pos_return(osv.osv_memory):
property_obj= self.pool.get("ir.property")
uom_obj =self. pool.get('product.uom')
statementl_obj = self.pool.get('account.bank.statement.line')
- wf_service = netsvc.LocalService("workflow")
#Todo :Need to clean the code
if active_id:
data = self.browse(cr, uid, ids, context=context)[0]
@@ -157,7 +155,7 @@ class pos_return(osv.osv_memory):
'amount': -amount,
})
order_obj.write(cr,uid, [active_id,new_order], {'state': 'done'})
- wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr)
+ self.pool.get('stock.picking').signal_button_confirm(cr, uid, [new_picking])
picking_obj.force_assign(cr, uid, [new_picking], context)
act = {
'domain': "[('id', 'in', ["+str(new_order)+"])]",
@@ -200,7 +198,6 @@ class add_product(osv.osv_memory):
date_cur=time.strftime('%Y-%m-%d')
uom_obj = self.pool.get('product.uom')
prod_obj=self.pool.get('product.product')
- wf_service = netsvc.LocalService("workflow")
order_obj.add_product(cr, uid, active_id, data['product_id'], data['quantity'], context=context)
for order_id in order_obj.browse(cr, uid, [active_id], context=context):
@@ -232,7 +229,7 @@ class add_product(osv.osv_memory):
'date':date_cur
})
- wf_service.trg_validate(uid, 'stock.picking', new_picking, 'button_confirm', cr)
+ self.pool.get('stock.picking').signal_button_confirm(cr, uid, [new_picking])
picking_obj.force_assign(cr, uid, [new_picking], context)
order_obj.write(cr,uid,active_id,{'picking_id':new_picking})
@@ -265,7 +262,6 @@ class add_product(osv.osv_memory):
if return_id:
data = return_boj.read(cr,uid,return_id,[])[0]
- wf_service = netsvc.LocalService("workflow")
self_data = self.browse(cr, uid, ids, context=context)[0]
order_obj.add_product(cr, uid, active_ids[0], self_data.product_id.id, self_data.quantity, context=context)
@@ -306,7 +302,7 @@ class add_product(osv.osv_memory):
'name':'%s (return)' % order_id.name,
'date':date_cur,
})
- wf_service.trg_validate(uid, 'stock.picking',new_picking,'button_confirm', cr)
+ self.poolget('stock.picking').signal_button_confirm(cr, uid, [new_picking])
picking_obj.force_assign(cr, uid, [new_picking], context)
obj=order_obj.browse(cr,uid, active_ids[0])
context.update({'return':'return'})
diff --git a/addons/point_of_sale/wizard/pos_session_opening.py b/addons/point_of_sale/wizard/pos_session_opening.py
index 1aa4cb702c4..e0135de0cdb 100644
--- a/addons/point_of_sale/wizard/pos_session_opening.py
+++ b/addons/point_of_sale/wizard/pos_session_opening.py
@@ -1,6 +1,5 @@
#!/usr/bin/env python
-from openerp import netsvc
from openerp.osv import osv, fields
from openerp.tools.translate import _
@@ -37,9 +36,8 @@ class pos_session_opening(osv.osv_memory):
}
def open_existing_session_cb_close(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService("workflow")
wizard = self.browse(cr, uid, ids[0], context=context)
- wf_service.trg_validate(uid, 'pos.session', wizard.pos_session_id.id, 'cashbox_control', cr)
+ self.pool.get('pos.session').signal_cashbox_control(cr, uid, [wizard.pos_session_id.id])
return self.open_session_cb(cr, uid, ids, context)
def open_session_cb(self, cr, uid, ids, context=None):
From b5a9ccbe11af41f0b11e4b07ea6e10eecce72d69 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 12:17:40 +0530
Subject: [PATCH 42/60] [IMP] account: use the new signal_xxx methods instead
of trg_validate and also update code with create_workflow and delete_workflow
feature.
bzr revid: tta@openerp.com-20130201064740-wxigbf179uf6dnnt
---
addons/account/account_invoice.py | 10 +++-------
addons/account/wizard/account_state_open.py | 3 +--
2 files changed, 4 insertions(+), 9 deletions(-)
diff --git a/addons/account/account_invoice.py b/addons/account/account_invoice.py
index 250a0446534..d7b2052305b 100644
--- a/addons/account/account_invoice.py
+++ b/addons/account/account_invoice.py
@@ -23,7 +23,6 @@ import time
from lxml import etree
import openerp.addons.decimal_precision as dp
-from openerp import netsvc
from openerp import pooler
from openerp.osv import fields, osv, orm
from openerp.tools.translate import _
@@ -80,11 +79,10 @@ class account_invoice(osv.osv):
def _reconciled(self, cr, uid, ids, name, args, context=None):
res = {}
- wf_service = netsvc.LocalService("workflow")
for inv in self.browse(cr, uid, ids, context=context):
res[inv.id] = self.test_paid(cr, uid, [inv.id])
if not res[inv.id] and inv.state == 'paid':
- wf_service.trg_validate(uid, 'account.invoice', inv.id, 'open_test', cr)
+ self.signal_open_test(cr, uid, [inv.id])
return res
def _get_reference_type(self, cr, uid, context=None):
@@ -638,10 +636,8 @@ class account_invoice(osv.osv):
# go from canceled state to draft state
def action_cancel_draft(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {'state':'draft'})
- wf_service = netsvc.LocalService("workflow")
- for inv_id in ids:
- wf_service.trg_delete(uid, 'account.invoice', inv_id, cr)
- wf_service.trg_create(uid, 'account.invoice', inv_id, cr)
+ self.delete_workflow(cr, uid, ids)
+ self.create_workflow(cr, uid, ids)
return True
# Workflow stuff
diff --git a/addons/account/wizard/account_state_open.py b/addons/account/wizard/account_state_open.py
index b2cbdc4961b..5d0ae6b66bd 100644
--- a/addons/account/wizard/account_state_open.py
+++ b/addons/account/wizard/account_state_open.py
@@ -35,8 +35,7 @@ class account_state_open(osv.osv_memory):
data_inv = obj_invoice.browse(cr, uid, context['active_ids'][0], context=context)
if data_inv.reconciled:
raise osv.except_osv(_('Warning!'), _('Invoice is already reconciled.'))
- wf_service = netsvc.LocalService("workflow")
- wf_service.trg_validate(uid, 'account.invoice', context['active_ids'][0], 'open_test', cr)
+ obj_invoice.signal_open_test(cr, uid, context['active_ids'][0])
return {'type': 'ir.actions.act_window_close'}
account_state_open()
From 27bd0dbfef0802bc621e5b80a82fcbbeea4a7ebe Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 12:29:48 +0530
Subject: [PATCH 43/60] [FIX] sale: did some changes
bzr revid: cha@tinyerp.com-20130201065948-oae060lc7f25z1b3
---
addons/sale/sale.py | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/sale/sale.py b/addons/sale/sale.py
index 93556a3e7d5..c8ccfed1cba 100644
--- a/addons/sale/sale.py
+++ b/addons/sale/sale.py
@@ -418,7 +418,7 @@ class sale_order(osv.osv):
This function prints the sales order and mark it as sent, so that we can see more easily the next step of the workflow
'''
assert len(ids) == 1, 'This option should only be used for a single id at a time'
- self.signal_quotation_sent(cr, uid, [ids[0]])
+ self.signal_quotation_sent(cr, uid, ids)
datas = {
'model': 'sale.order',
'ids': ids,
@@ -986,7 +986,7 @@ class mail_compose_message(osv.Model):
context = context or {}
if context.get('default_model') == 'sale.order' and context.get('default_res_id') and context.get('mark_so_as_sent'):
context = dict(context, mail_post_autofollow=True)
- self.pool.get('sale.order').signal_quotation_sent(cr, uid, context['default_res_id'])
+ self.pool.get('sale.order').signal_quotation_sent(cr, uid, [context['default_res_id']])
return super(mail_compose_message, self).send_mail(cr, uid, ids, context=context)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
From 0b2a72f0a8e2ef74f53683fddeb7eddfaf60b9d4 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 12:36:28 +0530
Subject: [PATCH 44/60] [FIX] sale: did some changes
bzr revid: cha@tinyerp.com-20130201070628-utvt502wrg5ynv44
---
addons/sale/wizard/sale_line_invoice.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/sale/wizard/sale_line_invoice.py b/addons/sale/wizard/sale_line_invoice.py
index 4b18c9a4b39..fe8432fc7db 100644
--- a/addons/sale/wizard/sale_line_invoice.py
+++ b/addons/sale/wizard/sale_line_invoice.py
@@ -102,7 +102,7 @@ class sale_order_line_make_invoice(osv.osv_memory):
flag = False
break
if flag:
- sales_order_obj.signal_manual_invoice(cr, uid, line.order_id.id)
+ sales_order_obj.signal_manual_invoice(cr, uid, [line.order_id.id])
sales_order_obj.write(cr, uid, [line.order_id.id], {'state': 'progress'})
if not invoices:
From 75ffe3c712a8aabb6f8c1d00ed6642ba45439c4b Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 12:48:33 +0530
Subject: [PATCH 45/60] [IMP] account: use the new signal_xxx methods instead
of trg_validate and also update code with create_workflow and delete_workflow
feature.
bzr revid: tta@openerp.com-20130201071833-x48y4zloat1diqa5
---
addons/account/wizard/account_invoice_refund.py | 5 +----
addons/account/wizard/account_invoice_state.py | 16 +++++++---------
2 files changed, 8 insertions(+), 13 deletions(-)
diff --git a/addons/account/wizard/account_invoice_refund.py b/addons/account/wizard/account_invoice_refund.py
index 54d6c38a353..68937004dbc 100644
--- a/addons/account/wizard/account_invoice_refund.py
+++ b/addons/account/wizard/account_invoice_refund.py
@@ -23,7 +23,6 @@ import time
from openerp.osv import fields, osv
from openerp.tools.translate import _
-from openerp import netsvc
class account_invoice_refund(osv.osv_memory):
@@ -90,7 +89,6 @@ class account_invoice_refund(osv.osv_memory):
account_m_line_obj = self.pool.get('account.move.line')
mod_obj = self.pool.get('ir.model.data')
act_obj = self.pool.get('ir.actions.act_window')
- wf_service = netsvc.LocalService('workflow')
inv_tax_obj = self.pool.get('account.invoice.tax')
inv_line_obj = self.pool.get('account.invoice.line')
res_users_obj = self.pool.get('res.users')
@@ -161,8 +159,7 @@ class account_invoice_refund(osv.osv_memory):
to_reconcile_ids[line.account_id.id] = [line.id]
if type(line.reconcile_id) != osv.orm.browse_null:
reconcile_obj.unlink(cr, uid, line.reconcile_id.id)
- wf_service.trg_validate(uid, 'account.invoice', \
- refund.id, 'invoice_open', cr)
+ inv_obj.signal_invoice_open(cr, uid, [refund.id])
refund = inv_obj.browse(cr, uid, refund_id[0], context=context)
for tmpline in refund.move_id.line_id:
if tmpline.account_id.id == inv.account_id.id:
diff --git a/addons/account/wizard/account_invoice_state.py b/addons/account/wizard/account_invoice_state.py
index f79b4c046e3..9fab19ff42c 100644
--- a/addons/account/wizard/account_invoice_state.py
+++ b/addons/account/wizard/account_invoice_state.py
@@ -21,7 +21,6 @@
from openerp.osv import osv
from openerp.tools.translate import _
-from openerp import netsvc
from openerp import pooler
class account_invoice_confirm(osv.osv_memory):
@@ -33,16 +32,16 @@ class account_invoice_confirm(osv.osv_memory):
_description = "Confirm the selected invoices"
def invoice_confirm(self, cr, uid, ids, context=None):
- wf_service = netsvc.LocalService('workflow')
if context is None:
context = {}
pool_obj = pooler.get_pool(cr.dbname)
- data_inv = pool_obj.get('account.invoice').read(cr, uid, context['active_ids'], ['state'], context=context)
-
+ account_invoice_obj = pool_obj.get('account.invoice')
+ data_inv = account_invoice_obj.read(cr, uid, context['active_ids'], ['state'], context=context)
for record in data_inv:
if record['state'] not in ('draft','proforma','proforma2'):
raise osv.except_osv(_('Warning!'), _("Selected invoice(s) cannot be confirmed as they are not in 'Draft' or 'Pro-Forma' state."))
- wf_service.trg_validate(uid, 'account.invoice', record['id'], 'invoice_open', cr)
+ account_invoice_obj.signal_invoice_open(cr, uid, [ record['id'] ])
+
return {'type': 'ir.actions.act_window_close'}
account_invoice_confirm()
@@ -59,14 +58,13 @@ class account_invoice_cancel(osv.osv_memory):
def invoice_cancel(self, cr, uid, ids, context=None):
if context is None:
context = {}
- wf_service = netsvc.LocalService('workflow')
pool_obj = pooler.get_pool(cr.dbname)
- data_inv = pool_obj.get('account.invoice').read(cr, uid, context['active_ids'], ['state'], context=context)
-
+ account_invoice_obj = pool_obj.get('account.invoice')
+ data_inv = account_invoice_obj.read(cr, uid, context['active_ids'], ['state'], context=context)
for record in data_inv:
if record['state'] in ('cancel','paid'):
raise osv.except_osv(_('Warning!'), _("Selected invoice(s) cannot be cancelled as they are already in 'Cancelled' or 'Done' state."))
- wf_service.trg_validate(uid, 'account.invoice', record['id'], 'invoice_cancel', cr)
+ account_invoice_obj.signal_invoice_cancel(cr , uid, [record['id']])
return {'type': 'ir.actions.act_window_close'}
account_invoice_cancel()
From f3c4e973cd74c3be9f47cd254cef69dbbb652c80 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 14:14:04 +0530
Subject: [PATCH 46/60] [FIX] hr_holidays: did some changes.
bzr revid: cha@tinyerp.com-20130201084404-uanxza6nx80l8pn9
---
addons/hr_holidays/hr_holidays.py | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/addons/hr_holidays/hr_holidays.py b/addons/hr_holidays/hr_holidays.py
index ce30951f7a9..c81c4062a73 100644
--- a/addons/hr_holidays/hr_holidays.py
+++ b/addons/hr_holidays/hr_holidays.py
@@ -27,7 +27,6 @@ from itertools import groupby
from operator import attrgetter, itemgetter
import math
-from openerp import netsvc
from openerp import tools
from openerp.osv import fields, osv
from openerp.tools.translate import _
@@ -304,9 +303,8 @@ class hr_holidays(osv.osv):
'manager_id': False,
'manager_id2': False,
})
- for id in ids:
- self.delete_workflow(cr, uid, [id])
- self.create_workflow(cr, uid, [id])
+ self.delete_workflow(cr, uid, ids)
+ self.create_workflow(cr, uid, ids)
to_unlink = []
for record in self.browse(cr, uid, ids, context=context):
for record2 in record.linked_request_ids:
From 19685c35a592408b223b8a6b1a7503c6ecb2cd26 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 14:36:21 +0530
Subject: [PATCH 47/60] [FIX] code corrected.
bzr revid: tta@openerp.com-20130201090621-sym8rxhgofk6wg9p
---
addons/mrp/mrp.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/mrp/mrp.py b/addons/mrp/mrp.py
index b8081f461d6..9f2d651d3d0 100644
--- a/addons/mrp/mrp.py
+++ b/addons/mrp/mrp.py
@@ -991,7 +991,7 @@ class mrp_production(osv.osv):
destination_location_id=source_location_id, context=context)
self._make_production_line_procurement(cr, uid, line, shipment_move_id, context=context)
- self.registry('stock.picking').signal_button_confirm(cr, uid, [shipment_id])
+ self.pool.get('stock.picking').signal_button_confirm(cr, uid, [shipment_id])
production.write({'state':'confirmed'}, context=context)
return shipment_id
From 95a8d5759e6b033978af444813d1436828e640ea Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 14:53:07 +0530
Subject: [PATCH 48/60] [FIX] hr_timesheet_sheet: did some changes.
bzr revid: cha@tinyerp.com-20130201092307-yajxn97wnhz3xofj
---
addons/hr_timesheet_sheet/hr_timesheet_sheet.py | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
index 5948c02bc5e..d4e71cedbf5 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet.py
@@ -190,8 +190,7 @@ class hr_timesheet_sheet(osv.osv):
def action_set_to_draft(self, cr, uid, ids, *args):
self.write(cr, uid, ids, {'state': 'draft'})
- for id in ids:
- self.create_workflow(cr, uid, [id])
+ self.create_workflow(cr, uid, ids)
return True
def name_get(self, cr, uid, ids, context=None):
From aded1b1840f3f98e68fcea07cdbc9cf99b4c57e1 Mon Sep 17 00:00:00 2001
From: Tejas Tank
Date: Fri, 1 Feb 2013 15:20:35 +0530
Subject: [PATCH 49/60] [FIX] code corrected for mrp.repair.
bzr revid: tta@openerp.com-20130201095035-2hbkwbc9npxf74kr
---
addons/mrp_repair/mrp_repair.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py
index 7bb12b0402a..6c3f0ce21e1 100644
--- a/addons/mrp_repair/mrp_repair.py
+++ b/addons/mrp_repair/mrp_repair.py
@@ -544,7 +544,7 @@ class mrp_repair(osv.osv):
'tracking_id': False,
'state': 'assigned',
})
- self.registry.signal_button_confirm(cr, uid, [picking])
+ pick_obj.signal_button_confirm(cr, uid, [picking])
self.write(cr, uid, [repair.id], {'state': 'done', 'picking_id': picking})
res[repair.id] = picking
else:
From c2ffb389a3d6125461e63f0c85193931a9bdb76f Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 17:36:10 +0530
Subject: [PATCH 50/60] [FIX] sale: Made some changes
bzr revid: cha@tinyerp.com-20130201120610-eotziutfkhsgd77o
---
addons/sale/test/manual_order_policy.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/addons/sale/test/manual_order_policy.yml b/addons/sale/test/manual_order_policy.yml
index 905f04b01f5..d138e917a4d 100644
--- a/addons/sale/test/manual_order_policy.yml
+++ b/addons/sale/test/manual_order_policy.yml
@@ -42,7 +42,9 @@
-
!python {model: sale.order}: |
so = self.browse(cr, uid, ref("sale_order_2"))
- self.pool.get('account.invoice').signal_invoice_open(cr, uid, so.invoice_ids)
+ account_invoice_obj = self.pool.get('account.invoice')
+ for invoice in so.invoice_ids:
+ account_invoice_obj.signal_invoice_open(cr, uid, [invoice.id])
-
I pay the invoice.
-
From a500b5d24942ee1bc4b1746793fef54f3d800dab Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 18:49:55 +0530
Subject: [PATCH 51/60] [FIX] sale: Made some changes
bzr revid: cha@tinyerp.com-20130201131955-nmcaji8bkblipxo3
---
addons/sale/test/cancel_order.yml | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/addons/sale/test/cancel_order.yml b/addons/sale/test/cancel_order.yml
index d9d76f19935..982452bc50e 100644
--- a/addons/sale/test/cancel_order.yml
+++ b/addons/sale/test/cancel_order.yml
@@ -52,7 +52,9 @@
-
!python {model: sale.order}: |
invoice_ids = self.browse(cr, uid, ref("sale_order_8")).invoice_ids
- self.pool.get('account.invoice').signal_invoice_cancel(cr, uid, invoice_ids)
+ account_invoice_obj = self.pool.get('account.invoice')
+ for invoice in invoice_ids:
+ account_invoice_obj.signal_invoice_cancel(cr, uid, [invoice.id])
-
I check order status in "Invoice Exception" and related invoice is in cancel state.
-
From df29fec0906661bf4cd58f8e2d631b088c8c6193 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Fri, 1 Feb 2013 19:04:40 +0530
Subject: [PATCH 52/60] [FIX] sale_stock: Made some changes
bzr revid: cha@tinyerp.com-20130201133440-fgo2lj4q22i4dpfb
---
addons/sale_stock/sale_stock.py | 3 ++-
addons/sale_stock/test/picking_order_policy.yml | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index f63282b7a16..b121bf425b6 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -208,8 +208,9 @@ class sale_order(osv.osv):
proc_ids = proc_obj.search(cr, uid, [('move_id', '=', mov.id)])
if proc_ids:
self.pool.get('procurement.order').signal_button_check(cr, uid, proc_ids)
+ stock_obj = self.pool.get('stock.picking')
for r in self.read(cr, uid, ids, ['picking_ids']):
- self.pool.get('stock.picking').signal_button_cancel(cr, uid, r['picking_ids'])
+ stock_obj.signal_button_cancel(cr, uid, r['picking_ids'])
return super(sale_order, self).action_cancel(cr, uid, ids, context=context)
def action_wait(self, cr, uid, ids, context=None):
diff --git a/addons/sale_stock/test/picking_order_policy.yml b/addons/sale_stock/test/picking_order_policy.yml
index a28326598ac..406aaf0bf8a 100644
--- a/addons/sale_stock/test/picking_order_policy.yml
+++ b/addons/sale_stock/test/picking_order_policy.yml
@@ -133,8 +133,9 @@
-
!python {model: sale.order}: |
so = self.browse(cr, uid, ref("sale.sale_order_6"))
+ account_invoice_obj = self.pool.get('account.invoice')
for invoice in so.invoice_ids:
- self.pool.get('account.invoice').signal_invoice_open(cr, uid, [invoice.id])
+ account_invoice_obj.signal_invoice_open(cr, uid, [invoice.id])
-
I pay the invoice
-
From 85f6cb82390714e86b7b82e81afc0fee798eb7b6 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Mon, 4 Feb 2013 12:11:42 +0530
Subject: [PATCH 53/60] [IMP] POS: made some changes in code
bzr revid: cha@tinyerp.com-20130204064142-xivaomscssibwsb8
---
addons/point_of_sale/point_of_sale.py | 4 ++--
addons/point_of_sale/wizard/pos_confirm.py | 2 +-
addons/point_of_sale/wizard/pos_payment.py | 2 +-
addons/point_of_sale/wizard/pos_return.py | 6 +++---
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 9b9e5b951b4..7687ee3aa4e 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -694,7 +694,7 @@ class pos_order(osv.osv):
if line.qty < 0:
location_id, output_id = output_id, location_id
- self.pool.get('stock.picking').signal_button_confirm(cr, uid, [picking_id])
+ picking_obj.signal_button_confirm(cr, uid, [picking_id])
picking_obj.force_assign(cr, uid, [picking_id], context)
return True
@@ -704,7 +704,7 @@ class pos_order(osv.osv):
"""
stock_picking_obj = self.pool.get('stock.picking')
for order in self.browse(cr, uid, ids, context=context):
- self.pool.get('stock.picking').signal_button_cancel(cr, uid, [order.picking_id.id])
+ stock_picking_obj.signal_button_cancel(cr, uid, [order.picking_id.id])
if stock_picking_obj.browse(cr, uid, order.picking_id.id, context=context).state <> 'cancel':
raise osv.except_osv(_('Error!'), _('Unable to cancel the picking.'))
self.write(cr, uid, ids, {'state': 'cancel'}, context=context)
diff --git a/addons/point_of_sale/wizard/pos_confirm.py b/addons/point_of_sale/wizard/pos_confirm.py
index ebc432a846f..f37bdd9f8b8 100644
--- a/addons/point_of_sale/wizard/pos_confirm.py
+++ b/addons/point_of_sale/wizard/pos_confirm.py
@@ -36,7 +36,7 @@ class pos_confirm(osv.osv_memory):
todo = False
break
if todo:
- self.pool.get('pos.order').signal_done(cr, uid, [order.id])
+ order_obj.signal_done(cr, uid, [order.id])
# Check if there is orders to reconcile their invoices
ids = order_obj.search(cr, uid, [('state','=','invoiced'),('invoice_id.state','=','open')], context=context)
diff --git a/addons/point_of_sale/wizard/pos_payment.py b/addons/point_of_sale/wizard/pos_payment.py
index 5f90f267f7e..47814761b20 100644
--- a/addons/point_of_sale/wizard/pos_payment.py
+++ b/addons/point_of_sale/wizard/pos_payment.py
@@ -66,7 +66,7 @@ class pos_make_payment(osv.osv_memory):
order_obj.add_payment(cr, uid, active_id, data, context=context)
if order_obj.test_paid(cr, uid, [active_id]):
- self.pool.get('pos.order').signal_paid(cr, uid, [active_id])
+ order_obj.signal_paid(cr, uid, [active_id])
return {'type' : 'ir.actions.act_window_close' }
##self.print_report(cr, uid, ids, context=context)
diff --git a/addons/point_of_sale/wizard/pos_return.py b/addons/point_of_sale/wizard/pos_return.py
index f711a2e56ee..b4e0e7b2041 100644
--- a/addons/point_of_sale/wizard/pos_return.py
+++ b/addons/point_of_sale/wizard/pos_return.py
@@ -155,7 +155,7 @@ class pos_return(osv.osv_memory):
'amount': -amount,
})
order_obj.write(cr,uid, [active_id,new_order], {'state': 'done'})
- self.pool.get('stock.picking').signal_button_confirm(cr, uid, [new_picking])
+ picking_obj.signal_button_confirm(cr, uid, [new_picking])
picking_obj.force_assign(cr, uid, [new_picking], context)
act = {
'domain': "[('id', 'in', ["+str(new_order)+"])]",
@@ -229,7 +229,7 @@ class add_product(osv.osv_memory):
'date':date_cur
})
- self.pool.get('stock.picking').signal_button_confirm(cr, uid, [new_picking])
+ picking_obj.signal_button_confirm(cr, uid, [new_picking])
picking_obj.force_assign(cr, uid, [new_picking], context)
order_obj.write(cr,uid,active_id,{'picking_id':new_picking})
@@ -302,7 +302,7 @@ class add_product(osv.osv_memory):
'name':'%s (return)' % order_id.name,
'date':date_cur,
})
- self.poolget('stock.picking').signal_button_confirm(cr, uid, [new_picking])
+ picking_obj.signal_button_confirm(cr, uid, [new_picking])
picking_obj.force_assign(cr, uid, [new_picking], context)
obj=order_obj.browse(cr,uid, active_ids[0])
context.update({'return':'return'})
From f33d11f0a46a15ed2b8c3e82f523b1dd2d641366 Mon Sep 17 00:00:00 2001
From: "Ajay Chauhan (OpenERP)"
Date: Mon, 4 Feb 2013 12:45:26 +0530
Subject: [PATCH 54/60] [IMP] sale_stock: made some changes in code
bzr revid: cha@tinyerp.com-20130204071526-6ey9lfunu4mbnjhn
---
addons/sale_stock/sale_stock.py | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/addons/sale_stock/sale_stock.py b/addons/sale_stock/sale_stock.py
index b121bf425b6..95404ec0a93 100644
--- a/addons/sale_stock/sale_stock.py
+++ b/addons/sale_stock/sale_stock.py
@@ -207,7 +207,7 @@ class sale_order(osv.osv):
for mov in pick.move_lines:
proc_ids = proc_obj.search(cr, uid, [('move_id', '=', mov.id)])
if proc_ids:
- self.pool.get('procurement.order').signal_button_check(cr, uid, proc_ids)
+ proc_obj.signal_button_check(cr, uid, proc_ids)
stock_obj = self.pool.get('stock.picking')
for r in self.read(cr, uid, ids, ['picking_ids']):
stock_obj.signal_button_cancel(cr, uid, r['picking_ids'])
@@ -394,8 +394,8 @@ class sale_order(osv.osv):
self.ship_recreate(cr, uid, order, line, move_id, proc_id)
if picking_id:
- self.pool.get('stock.picking').signal_button_confirm(cr, uid, [picking_id])
- self.pool.get('procurement.order').signal_button_confirm(cr, uid, proc_ids)
+ picking_obj.signal_button_confirm(cr, uid, [picking_id])
+ procurement_obj.signal_button_confirm(cr, uid, proc_ids)
val = {}
if order.state == 'shipping_except':
From 4f8081e1fd0f62d32a1bb8d217230c043aa54a2e Mon Sep 17 00:00:00 2001
From: Launchpad Translations on behalf of openerp <>
Date: Wed, 13 Feb 2013 04:36:44 +0000
Subject: [PATCH 55/60] Launchpad automatic translations update.
bzr revid: launchpad_translations_on_behalf_of_openerp-20130213043644-y36h7n26zs7lwifx
---
addons/base_import/i18n/hr.po | 211 ++-
addons/mail/i18n/hu.po | 219 +--
addons/product/i18n/lo.po | 2479 +++++++++++++++++++++++++++++++++
3 files changed, 2797 insertions(+), 112 deletions(-)
create mode 100644 addons/product/i18n/lo.po
diff --git a/addons/base_import/i18n/hr.po b/addons/base_import/i18n/hr.po
index 7a119f19aaf..bc644bdfad5 100644
--- a/addons/base_import/i18n/hr.po
+++ b/addons/base_import/i18n/hr.po
@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME \n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
-"PO-Revision-Date: 2012-12-14 22:33+0000\n"
-"Last-Translator: Goran Kliska \n"
+"PO-Revision-Date: 2013-02-12 22:11+0000\n"
+"Last-Translator: Davor Bojkić \n"
"Language-Team: Croatian
\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-12-22 06:07+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-02-13 04:36+0000\n"
+"X-Generator: Launchpad (build 16491)\n"
#. module: base_import
#. openerp-web
@@ -29,7 +29,7 @@ msgstr "Dohvati sve moguće vrijednosti"
#: code:addons/base_import/static/src/xml/import.xml:71
#, python-format
msgid "Need to import data from an other application?"
-msgstr ""
+msgstr "Potreban je uvoz podataka iz druge aplikacije?"
#. module: base_import
#. openerp-web
@@ -47,6 +47,15 @@ msgid ""
"give \n"
" you an example for Products and their Categories."
msgstr ""
+"Kada koristite vanjske ID-eve, možete uvesti csv datoteke \n"
+" sa kolonom \"External ID\" "
+"definirate vanjski ID svakog zapisa \n"
+" koji uvozite. Tada ćete biti "
+"u mogućnosti napraviti referencu \n"
+" na taj zapis sa kolonama tipa "
+"\"polje/External ID\". Sljedeća dvije \n"
+" csv datoteke daju primjer za "
+"proizvode i njihove kategorije."
#. module: base_import
#. openerp-web
@@ -56,13 +65,16 @@ msgid ""
"How to export/import different tables from an SQL \n"
" application to OpenERP?"
msgstr ""
+"Kako izvesti/uvesti različite tablice iz SQL \n"
+" "
+"programa u OpenERP"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/js/import.js:310
#, python-format
msgid "Relation Fields"
-msgstr ""
+msgstr "Relacijska polja"
#. module: base_import
#. openerp-web
@@ -72,6 +84,9 @@ msgid ""
"Country/Database ID: the unique OpenERP ID for a \n"
" record, defined by the ID postgresql column"
msgstr ""
+"Država/ID baze: jedinstveni OpenERP ID za \n"
+" "
+" zapis, definran kolonom postgres kolonom ID"
#. module: base_import
#. openerp-web
@@ -87,6 +102,16 @@ msgid ""
"\n"
" have a unique Database ID)"
msgstr ""
+"Korištenje \n"
+" Država/ID "
+"BAze : ovo bi trebali rijetko koristiti\n"
+" za "
+"označavanje. Ovo je većinom korišteno od strane programera\n"
+" jer je "
+"glavna prednost ovoga to što nikad nema konflikata \n"
+" (možete "
+"imati više zapisa istog naziva, ali uvjek sa jedinstvenim IDentifikatorom u "
+"Bazi)"
#. module: base_import
#. openerp-web
@@ -96,6 +121,9 @@ msgid ""
"For the country \n"
" Belgium, you can use one of these 3 ways to import:"
msgstr ""
+"Za državu \n"
+" "
+" Belgiju, možete koristiti jedan od ova 3 načina uza uvoz:"
#. module: base_import
#. openerp-web
@@ -121,13 +149,20 @@ msgid ""
"companies) TO \n"
" '/tmp/company.csv' with CSV HEADER;"
msgstr ""
+"kopirajte \n"
+" (select "
+"'company_'||id as \"External ID\",company_name\n"
+" as "
+"\"Name\",'True' as \"Is a Company\" from companies) TO\n"
+" "
+"'/tmp/company.csv' with CSV HEADER;"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:206
#, python-format
msgid "CSV file for Manufacturer, Retailer"
-msgstr ""
+msgstr "CSV datoteka za Proizvođače, Veletrgovce"
#. module: base_import
#. openerp-web
@@ -139,6 +174,11 @@ msgid ""
"\n"
" data from a third party application."
msgstr ""
+"Koristi \n"
+" Država/Vanjski ID. "
+"koristite vanjski ID kad uvozite \n"
+" podatke iz drugih "
+"aplikacija."
#. module: base_import
#. openerp-web
@@ -152,7 +192,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:80
#, python-format
msgid "XXX/External ID"
-msgstr ""
+msgstr "XXX/Vanjski ID"
#. module: base_import
#. openerp-web
@@ -181,6 +221,14 @@ msgid ""
"\n"
" See the following question."
msgstr ""
+"Primjetite da vaša csv datoteka \n"
+" ima tabulator za "
+"odvajanje, a OpenERP neće \n"
+" primjetiti ta odvajanja. "
+"Morate promjineiti format \n"
+" zapisa u vašem tabličnom "
+"kalkulatoru. \n"
+" Vidi sljedeće pitanje."
#. module: base_import
#. openerp-web
@@ -199,7 +247,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:239
#, python-format
msgid "Can I import several times the same record?"
-msgstr ""
+msgstr "Mogu li isti zapis uvesti nekoliko puta?"
#. module: base_import
#. openerp-web
@@ -213,7 +261,7 @@ msgstr "Potvrdi"
#: code:addons/base_import/static/src/xml/import.xml:55
#, python-format
msgid "Map your data to OpenERP"
-msgstr ""
+msgstr "Mapirajte vaše podatke na OpenERP"
#. module: base_import
#. openerp-web
@@ -224,6 +272,10 @@ msgid ""
" the easiest way when your data come from CSV files \n"
" that have been created manually."
msgstr ""
+"Korištenje Države: ovo je \n"
+" najlakši način kada vaši "
+"podaci dolaze iz csv datoteka\n"
+" koje su sastavljene ručno."
#. module: base_import
#. openerp-web
@@ -233,6 +285,8 @@ msgid ""
"What's the difference between Database ID and \n"
" External ID?"
msgstr ""
+"Koja je razlika izmeži ID Baze i \n"
+" vanjski ID?"
#. module: base_import
#. openerp-web
@@ -244,25 +298,30 @@ msgid ""
"\n"
" you 3 different fields to import:"
msgstr ""
+"Na primjer, \n"
+" referenciranje države "
+"kontakta, OpenERP predlaže \n"
+" 3 različita polja za "
+"uvoz :"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:175
#, python-format
msgid "What can I do if I have multiple matches for a field?"
-msgstr ""
+msgstr "Što da radim ako imam više istih zapisa za polje?"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:302
#, python-format
msgid "External ID,Name,Is a Company"
-msgstr ""
+msgstr "Vanjski ID , Naziv, Je Tvrtka"
#. module: base_import
#: field:base_import.tests.models.preview,somevalue:0
msgid "Some Value"
-msgstr ""
+msgstr "Neka vrijednost"
#. module: base_import
#. openerp-web
@@ -272,6 +331,9 @@ msgid ""
"The following CSV file shows how to import \n"
" suppliers and their respective contacts"
msgstr ""
+"Sljedeća csv datoteka pokazuje kako uvesti \n"
+" "
+" dobavljače i njihove pripadne kontakte"
#. module: base_import
#. openerp-web
@@ -281,6 +343,9 @@ msgid ""
"How can I change the CSV file format options when \n"
" saving in my spreadsheet application?"
msgstr ""
+"Kako da promijenim opcije csv formata \n"
+" "
+"kada spremam datoteku u tabličnom kalkulatoru?"
#. module: base_import
#. openerp-web
@@ -301,6 +366,21 @@ msgid ""
"orignial \n"
" database)."
msgstr ""
+"kako možete vidjeti iz ove datoteke, Fabien i Laurence \n"
+" "
+" rade za organizaciju Biggies (company_1), a \n"
+" "
+" Eric radi za Organi. Pozezivanje osoba i "
+"organizacija se radi \n"
+" "
+" korištenjem Vanjskog ID-a organizacije. Morali smo "
+"staviti prefix \n"
+" "
+" naziva tablice na Vanjski ID da izbjegnemo konflikt "
+"istog ID-a osobe \n"
+" "
+" i organizacije (osoba_1 i organizacija_1 koji dijele "
+"isti ID u originalnoj bazi)."
#. module: base_import
#. openerp-web
@@ -315,13 +395,20 @@ msgid ""
"\n"
" '/tmp/person.csv' with CSV"
msgstr ""
+"kopirajte \n"
+" (select'person_'||id as \"External ID\",person_name "
+"as\n"
+" \"Name\",'False' as \"Is a "
+"Company\",'company_'||company_id\n"
+" as \"Related Company/External ID\" from persons) TO\n"
+" '/tmp/person.csv' with CSV"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:148
#, python-format
msgid "Country: Belgium"
-msgstr ""
+msgstr "Država : Belgija"
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_char_stillreadonly
@@ -342,7 +429,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:233
#, python-format
msgid "Suppliers and their respective contacts"
-msgstr ""
+msgstr "Dobavljači i njihovi pripadni kontakti"
#. module: base_import
#. openerp-web
@@ -375,6 +462,11 @@ msgid ""
"\n"
" PSQL:"
msgstr ""
+"Za stvaranje csv datoteke za osobe povezane sa \n"
+" "
+" organizacijama, koristimo ljedeću SQL naredbu u \n"
+" "
+" PSQL:"
#. module: base_import
#. openerp-web
@@ -386,6 +478,13 @@ msgid ""
" (in 'Save As' dialog box > click 'Tools' dropdown \n"
" list > Encoding tab)."
msgstr ""
+"Microsoft Excell će vam omogućiti \n"
+" da promjenite kodnu stranu "
+"jedino kod snimanja \n"
+" (U 'Save as' dijalogu > "
+"kliknite na 'Tools' padajući izbornik > \n"
+" odaberite 'Encoding' "
+"karticu)"
#. module: base_import
#: field:base_import.tests.models.preview,othervalue:0
@@ -402,6 +501,13 @@ msgid ""
" later, it's thus good practice to specify it\n"
" whenever possible"
msgstr ""
+"će također biti korišteno za ažuriranje originalnog \n"
+" "
+"uvoza, ako kasnije trebate ponovo uvesti \n"
+" "
+"izmjenjene podatke, zato se smatra dobrom praksom \n"
+" "
+"koristiti kad god je moguće"
#. module: base_import
#. openerp-web
@@ -411,6 +517,9 @@ msgid ""
"file to import. If you need a sample importable file, you\n"
" can use the export tool to generate one."
msgstr ""
+"datoteka za uvoz. Ako trebate uzorak datoteke koja se može uvesti,\n"
+" možete koristiti "
+"alat za izvoz da napravite jednu."
#. module: base_import
#. openerp-web
@@ -419,7 +528,7 @@ msgstr ""
msgid ""
"Country/Database \n"
" ID: 21"
-msgstr ""
+msgstr "Država/Baza"
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_char
@@ -429,14 +538,14 @@ msgstr ""
#. module: base_import
#: help:base_import.import,file:0
msgid "File to check and/or import, raw binary (not base64)"
-msgstr ""
+msgstr "Datoteke za provjeru i/ili uvoz, raw binary ( ne base64)"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:230
#, python-format
msgid "Purchase orders with their respective purchase order lines"
-msgstr ""
+msgstr "Narudžbe i njihove pripadne stavke"
#. module: base_import
#. openerp-web
@@ -448,6 +557,14 @@ msgid ""
" field corresponding to the column. This makes imports\n"
" simpler especially when the file has many columns."
msgstr ""
+"Ako datoteka sadrži\n"
+" nazive kolona, OpenERP može "
+"pokušati \n"
+" automatski odrediti polja koja "
+"odgovaraju kolonama. \n"
+" Ovo čini uvoz jednostavnijim "
+"pogotovo ako datoteka ima \n"
+" mnogo kolona."
#. module: base_import
#. openerp-web
@@ -464,6 +581,8 @@ msgid ""
". The issue is\n"
" usually an incorrect file encoding."
msgstr ""
+". Problem je \n"
+" obično netočna kodna strana."
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required
@@ -519,7 +638,7 @@ msgstr "ID baze podataka"
#: code:addons/base_import/static/src/xml/import.xml:313
#, python-format
msgid "It will produce the following CSV file:"
-msgstr ""
+msgstr "Će napraviti sljedeću csv datoteku:"
#. module: base_import
#. openerp-web
@@ -548,7 +667,7 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:360
#, python-format
msgid "Import preview failed due to:"
-msgstr ""
+msgstr "Predpregled uvoza nije uspio zbog:"
#. module: base_import
#. openerp-web
@@ -643,7 +762,7 @@ msgstr "Uvezi CSV datoteku"
#: code:addons/base_import/static/src/js/import.js:74
#, python-format
msgid "Quoting:"
-msgstr ""
+msgstr "Navođenje:"
#. module: base_import
#: model:ir.model,name:base_import.model_base_import_tests_models_m2o_required_related
@@ -670,7 +789,7 @@ msgstr "Uvoz"
#: code:addons/base_import/static/src/js/import.js:407
#, python-format
msgid "Here are the possible values:"
-msgstr ""
+msgstr "Evo mogućih vrijednosti:"
#. module: base_import
#. openerp-web
@@ -687,13 +806,15 @@ msgid ""
"A single column was found in the file, this often means the file separator "
"is incorrect"
msgstr ""
+"U datoteci je nađena samo jedna kolona, to često znači da je format "
+"razdjelnika neispravan."
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/xml/import.xml:293
#, python-format
msgid "dump of such a PostgreSQL database"
-msgstr ""
+msgstr "dump takve PostgereSQL baze"
#. module: base_import
#. openerp-web
@@ -710,6 +831,9 @@ msgid ""
"The following CSV file shows how to import purchase \n"
" orders with their respective purchase order lines:"
msgstr ""
+"Sljedeća csv datoteka pokazuje kako uvesti \n"
+" naloge za nabavu sa "
+"njihovm pripadnim stavkama :"
#. module: base_import
#. openerp-web
@@ -719,6 +843,9 @@ msgid ""
"What can I do when the Import preview table isn't \n"
" displayed correctly?"
msgstr ""
+"Što mogu uraditi kada se tablice Predpregleda za uvoz\n"
+" "
+" ne prikazuju ispravno?"
#. module: base_import
#: field:base_import.tests.models.char,value:0
@@ -770,7 +897,7 @@ msgstr ""
#: code:addons/base_import/static/src/js/import.js:396
#, python-format
msgid "(%d more)"
-msgstr ""
+msgstr "(%d više)"
#. module: base_import
#. openerp-web
@@ -829,7 +956,7 @@ msgstr ""
#: code:addons/base_import/static/src/js/import.js:373
#, python-format
msgid "Everything seems valid."
-msgstr ""
+msgstr "Sve se čini u redu."
#. module: base_import
#. openerp-web
@@ -914,6 +1041,15 @@ msgid ""
" will set the EMPTY value in the field, instead of \n"
" assigning the default value."
msgstr ""
+"Ako ne postavite sva polja u vašoj csv datoteci, \n"
+" OpenERP će "
+"dodijeliti zadane vrijednosti za svako \n"
+" nedefinirano "
+"polje, ali ako postavite polja sa praznim virjenostima u csv-u \n"
+" OpenERP će "
+"postaviti vrijednost tih polja na \"PRAZNO\", umjesto da im \n"
+" dodijeli zadane "
+"vrijednosti"
#. module: base_import
#. openerp-web
@@ -930,6 +1066,9 @@ msgid ""
"What happens if I do not provide a value for a \n"
" specific field?"
msgstr ""
+"Što se dešava ako ne dajem vrijednost za \n"
+" "
+"pojedino polje?"
#. module: base_import
#. openerp-web
@@ -957,6 +1096,11 @@ msgid ""
"spreadsheet \n"
" application."
msgstr ""
+"Ovo vam \n"
+" omogućuje da "
+"koristite alat za Uvoz/Izvoz OpenERP-a \n"
+" za izmjenu serija "
+"zapisa u vašem omiljenom tabličnom kalkulatoru"
#. module: base_import
#. openerp-web
@@ -993,14 +1137,14 @@ msgstr ""
#: code:addons/base_import/static/src/xml/import.xml:169
#, python-format
msgid "CSV file for categories"
-msgstr ""
+msgstr "CSV datoteka za kategorije"
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/js/import.js:309
#, python-format
msgid "Normal Fields"
-msgstr ""
+msgstr "Normalna polja"
#. module: base_import
#. openerp-web
@@ -1012,6 +1156,11 @@ msgid ""
" identifier from the original application and\n"
" map it to the"
msgstr ""
+"kako bi ponovo napravili relacije između\n"
+" "
+"različitih zapisa, trebali bi koristiti jedinstveni\n"
+" "
+"identifikator iz originalnog zapisa i njega mapirati na"
#. module: base_import
#. openerp-web
@@ -1054,7 +1203,7 @@ msgstr "Naziv"
#: code:addons/base_import/static/src/xml/import.xml:80
#, python-format
msgid "to the original unique identifier."
-msgstr ""
+msgstr "originalni jedinstveni identifikator"
#. module: base_import
#. openerp-web
@@ -1131,14 +1280,14 @@ msgstr "Vanjski ID"
#: code:addons/base_import/static/src/xml/import.xml:39
#, python-format
msgid "File Format Options…"
-msgstr ""
+msgstr "Opcije Formata datoteka..."
#. module: base_import
#. openerp-web
#: code:addons/base_import/static/src/js/import.js:392
#, python-format
msgid "between rows %d and %d"
-msgstr ""
+msgstr "između reda %d i %d"
#. module: base_import
#. openerp-web
@@ -1163,4 +1312,4 @@ msgstr ""
#. module: base_import
#: field:base_import.import,file:0
msgid "File"
-msgstr ""
+msgstr "Datoteka"
diff --git a/addons/mail/i18n/hu.po b/addons/mail/i18n/hu.po
index 65385c23ef0..3d3117c1b51 100644
--- a/addons/mail/i18n/hu.po
+++ b/addons/mail/i18n/hu.po
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
-"PO-Revision-Date: 2012-12-21 10:09+0000\n"
-"Last-Translator: Herczeg Péter \n"
+"PO-Revision-Date: 2013-02-12 17:52+0000\n"
+"Last-Translator: krnkris \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"X-Launchpad-Export-Date: 2012-12-22 06:04+0000\n"
-"X-Generator: Launchpad (build 16378)\n"
+"X-Launchpad-Export-Date: 2013-02-13 04:36+0000\n"
+"X-Generator: Launchpad (build 16491)\n"
#. module: mail
#: view:mail.followers:0
msgid "Followers Form"
-msgstr ""
+msgstr "Követők űrlapjai"
#. module: mail
#: model:ir.model,name:mail.model_publisher_warranty_contract
@@ -45,7 +45,7 @@ msgstr "Üzenet címzettjei"
#. module: mail
#: help:mail.message.subtype,default:0
msgid "Activated by default when subscribing."
-msgstr ""
+msgstr "Alapértelmezetten aktiválva lesz a feliratkozásnál."
#. module: mail
#: view:mail.message:0
@@ -70,6 +70,8 @@ msgid ""
"The name of the email alias, e.g. 'jobs' if you want to catch emails for "
""
msgstr ""
+"Az e-mail álnáv neve, pl. 'állások' ha az "
+"helyről akarjuk az e-maileket megkapni"
#. module: mail
#: model:ir.actions.act_window,name:mail.action_email_compose_message_wizard
@@ -82,7 +84,7 @@ msgstr "Email írás"
#: code:addons/mail/static/src/xml/mail.xml:132
#, python-format
msgid "Add them into recipients and followers"
-msgstr ""
+msgstr "A címzettekhez és a követőkhőz adja hozzá"
#. module: mail
#: view:mail.group:0
@@ -111,6 +113,8 @@ msgid ""
"Email address of the sender. This field is set when no matching partner is "
"found for incoming emails."
msgstr ""
+"A küldő e-mail címei. Ez a mező lesz beállítva, ha nem talált egyező "
+"partnert a bejövő levelekhez."
#. module: mail
#: model:ir.model,name:mail.model_mail_compose_message
@@ -122,12 +126,12 @@ msgstr "Email varázsló"
#: code:addons/mail/static/src/xml/mail_followers.xml:23
#, python-format
msgid "Add others"
-msgstr ""
+msgstr "Hozzáadás"
#. module: mail
#: field:mail.message.subtype,parent_id:0
msgid "Parent"
-msgstr ""
+msgstr "Szülő"
#. module: mail
#: field:mail.group,message_unread:0
@@ -149,6 +153,9 @@ msgid ""
"Members of those groups will automatically added as followers. Note that "
"they will be able to manage their subscription manually if necessary."
msgstr ""
+"Ezeknek a csoportoknak a tagjai automatikusan hozzá lesznek adva a "
+"követőkhöz. Megjegyezve, hogy ha szükséges szerkeszteni tudják a "
+"feliratkozásukat."
#. module: mail
#. openerp-web
@@ -161,7 +168,7 @@ msgstr "Valóban törölni kívánja ezt az üzenetet?"
#: view:mail.message:0
#: field:mail.notification,read:0
msgid "Read"
-msgstr ""
+msgstr "Olvas"
#. module: mail
#: view:mail.group:0
@@ -173,7 +180,7 @@ msgstr "Csoportok keresése"
#: code:addons/mail/static/src/js/mail_followers.js:156
#, python-format
msgid "followers"
-msgstr "Követők"
+msgstr "követők"
#. module: mail
#: code:addons/mail/mail_message.py:726
@@ -188,18 +195,21 @@ msgid ""
"image, with aspect ratio preserved. Use this field in form views or some "
"kanban views."
msgstr ""
+"Közepes méretű fotó a csoportról. Automatikusa át lesz méretezve 128x128px "
+"képpé, az arányok megtartásával. Használja ezt a mezőt az osztályozott "
+"nézetban és egyes kanban nézetekben."
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:194
#, python-format
msgid "Uploading error"
-msgstr ""
+msgstr "Feltöltési hiba"
#. module: mail
#: model:mail.group,name:mail.group_support
msgid "Support"
-msgstr ""
+msgstr "Támogatás"
#. module: mail
#: code:addons/mail/mail_message.py:727
@@ -210,6 +220,10 @@ msgid ""
"\n"
"(Document type: %s, Operation: %s)"
msgstr ""
+"Az igényelt műveletet nem lehetett végrehajtani biztonsági korlátok miatt. "
+"Kérem vegye fel a kapcsolatot a rendszer adminisztrátorral.\n"
+"\n"
+"(Dokumentum típus: %s, Művelet: %s)"
#. module: mail
#: view:mail.mail:0
@@ -227,24 +241,24 @@ msgstr "Szál"
#: code:addons/mail/static/src/xml/mail.xml:37
#, python-format
msgid "Open the full mail composer"
-msgstr ""
+msgstr "Nyissa meg a taljes levél szerkesztőt"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:37
#, python-format
msgid "ò"
-msgstr ""
+msgstr "ò"
#. module: mail
#: field:base.config.settings,alias_domain:0
msgid "Alias Domain"
-msgstr ""
+msgstr "Domain álnév"
#. module: mail
#: field:mail.group,group_ids:0
msgid "Auto Subscription"
-msgstr ""
+msgstr "Auto feliratkozás"
#. module: mail
#: field:mail.mail,references:0
@@ -256,12 +270,12 @@ msgstr "Hivatkozások"
#: code:addons/mail/static/src/xml/mail.xml:188
#, python-format
msgid "No messages."
-msgstr ""
+msgstr "Nincs üzenet."
#. module: mail
#: model:ir.model,name:mail.model_mail_group
msgid "Discussion group"
-msgstr ""
+msgstr "Tárgyalási csoport"
#. module: mail
#. openerp-web
@@ -276,7 +290,7 @@ msgstr "feltöltés"
#: code:addons/mail/static/src/xml/mail_followers.xml:52
#, python-format
msgid "more."
-msgstr ""
+msgstr "több."
#. module: mail
#: help:mail.compose.message,type:0
@@ -285,6 +299,8 @@ msgid ""
"Message type: email for email message, notification for system message, "
"comment for other messages such as user replies"
msgstr ""
+"Üzenet típus: email az email üzenetre, figyelmeztetés egy rendszer üzenetre, "
+"hozzászólás egy másik üzenetre mint felhasználói válaszok"
#. module: mail
#: help:mail.message.subtype,relation_field:0
@@ -293,6 +309,8 @@ msgid ""
"automatic subscription on a related document. The field is used to compute "
"getattr(related_document.relation_field)."
msgstr ""
+"A mező az ide vonatkozó modell hivatkozására használt az altípus modellhez, "
+"ha automatikus feliratkozást használ az ide vonatkozó dokumentumhoz."
#. module: mail
#: selection:mail.mail,state:0
@@ -308,25 +326,25 @@ msgstr "Válaszcím"
#: code:addons/mail/wizard/invite.py:36
#, python-format
msgid "You have been invited to follow %s.
"
-msgstr ""
+msgstr "Önt meghívták, hogy kövesse: %s
"
#. module: mail
#: help:mail.group,message_unread:0
#: help:mail.thread,message_unread:0
#: help:res.partner,message_unread:0
msgid "If checked new messages require your attention."
-msgstr ""
+msgstr "Ha be van jelölve, akkor figyelje az új üzeneteket."
#. module: mail
#: field:mail.group,image_medium:0
msgid "Medium-sized photo"
-msgstr ""
+msgstr "Közepes méretű fotó"
#. module: mail
#: model:ir.actions.client,name:mail.action_mail_to_me_feeds
#: model:ir.ui.menu,name:mail.mail_tomefeeds
msgid "To: me"
-msgstr ""
+msgstr "Címzett: én"
#. module: mail
#: field:mail.message.subtype,name:0
@@ -344,28 +362,28 @@ msgstr "Automatikus törlés"
#: view:mail.group:0
#, python-format
msgid "Unfollow"
-msgstr "Követés leállításA"
+msgstr "Követés leállítása"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:261
#, python-format
msgid "show one more message"
-msgstr ""
+msgstr "mutass még egy üzenetet"
#. module: mail
#: code:addons/mail/mail_mail.py:71
#: code:addons/mail/res_users.py:79
#, python-format
msgid "Invalid Action!"
-msgstr ""
+msgstr "Érvénytelen lépés!"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:25
#, python-format
msgid "User img"
-msgstr ""
+msgstr "Felhasználói kép"
#. module: mail
#: model:ir.actions.act_window,name:mail.action_view_mail_mail
@@ -378,7 +396,7 @@ msgstr "E-mailek"
#. module: mail
#: field:mail.followers,partner_id:0
msgid "Related Partner"
-msgstr ""
+msgstr "Kapcsolódó partner"
#. module: mail
#: help:mail.group,message_summary:0
@@ -388,6 +406,8 @@ msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
+"A chettelés összegzést megállítja (üzenetek száma,...). Ez az összegzés "
+"direkt HTML formátumú ahhoz hogy beilleszthető legyen a kanban nézetekbe."
#. module: mail
#: help:mail.alias,alias_model_id:0
@@ -396,11 +416,14 @@ msgid ""
"incoming email that does not reply to an existing record will cause the "
"creation of a new record of this model (e.g. a Project Task)"
msgstr ""
+"A modell (OpenERP Documentum féle) amivel ez az álnév összhangban van. "
+"Bármely beérkező email ami nem válaszol a meglévő rekordra az egy, a "
+"modellhez tartozó új rekord létrehozást okozza (pl. a Projekt feladat)"
#. module: mail
#: field:mail.message.subtype,relation_field:0
msgid "Relation field"
-msgstr ""
+msgstr "Reléciós/összefüggés mező"
#. module: mail
#: selection:mail.compose.message,type:0
@@ -463,7 +486,7 @@ msgstr "Küldés"
#: code:addons/mail/static/src/js/mail_followers.js:152
#, python-format
msgid "No followers"
-msgstr ""
+msgstr "Nincs követő"
#. module: mail
#: view:mail.mail:0
@@ -481,7 +504,7 @@ msgstr "Sikertelen"
#: field:res.partner,message_follower_ids:0
#, python-format
msgid "Followers"
-msgstr ""
+msgstr "Követők"
#. module: mail
#: model:ir.actions.client,name:mail.action_mail_archives_feeds
@@ -495,7 +518,7 @@ msgstr "Archívum"
#: code:addons/mail/static/src/xml/mail.xml:94
#, python-format
msgid "Delete this attachment"
-msgstr ""
+msgstr "Törli ezt a mellékletet"
#. module: mail
#. openerp-web
@@ -510,41 +533,41 @@ msgstr "Válasz"
#: code:addons/mail/static/src/js/mail_followers.js:154
#, python-format
msgid "One follower"
-msgstr ""
+msgstr "Egy követő"
#. module: mail
#: field:mail.compose.message,type:0
#: field:mail.message,type:0
msgid "Type"
-msgstr ""
+msgstr "Típus"
#. module: mail
#: selection:mail.compose.message,type:0
#: view:mail.mail:0
#: selection:mail.message,type:0
msgid "Email"
-msgstr ""
+msgstr "E-mail"
#. module: mail
#: field:ir.ui.menu,mail_group_id:0
msgid "Mail Group"
-msgstr ""
+msgstr "Levelezési csoport"
#. module: mail
#: selection:res.partner,notification_email_send:0
msgid "Comments and Emails"
-msgstr ""
+msgstr "Megjegyzések és e-mailok"
#. module: mail
#: field:mail.alias,alias_defaults:0
msgid "Default Values"
-msgstr ""
+msgstr "Alapértelmezett értékek"
#. module: mail
#: code:addons/mail/res_users.py:100
#, python-format
msgid "%s has joined the %s network."
-msgstr ""
+msgstr "%s csatlakozott a %s hálózathoz."
#. module: mail
#: help:mail.group,image_small:0
@@ -553,6 +576,9 @@ msgid ""
"image, with aspect ratio preserved. Use this field anywhere a small image is "
"required."
msgstr ""
+"Kis mérető fotó a csoportról. Automatikusan át lesz méretezve 64x64px képpé, "
+"az arány megtartása mellett. Használja ezt a mezőt bárhol ahol kisméretű "
+"képet szeretne."
#. module: mail
#: view:mail.compose.message:0
@@ -565,41 +591,41 @@ msgstr "Címzettek"
#: code:addons/mail/static/src/xml/mail.xml:127
#, python-format
msgid "<<<"
-msgstr ""
+msgstr "<<<"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:43
#, python-format
msgid "Write to the followers of this document..."
-msgstr ""
+msgstr "Bejegyzés írás a dokumentum követőinek..."
#. module: mail
#: field:mail.group,group_public_id:0
msgid "Authorized Group"
-msgstr ""
+msgstr "Jogosult csoport"
#. module: mail
#: view:mail.group:0
msgid "Join Group"
-msgstr ""
+msgstr "Csatlakozás a csoporthoz"
#. module: mail
#: help:mail.mail,email_from:0
msgid "Message sender, taken from user preferences."
-msgstr ""
+msgstr "Üzenet küldő, a felhasználói meghatározásokból vett."
#. module: mail
#: code:addons/mail/wizard/invite.py:39
#, python-format
msgid "You have been invited to follow a new document.
"
-msgstr ""
+msgstr "Önt meghívták, hogy kövessen egy új dokumentumot.
"
#. module: mail
#: field:mail.compose.message,parent_id:0
#: field:mail.message,parent_id:0
msgid "Parent Message"
-msgstr ""
+msgstr "Szülő üzenet"
#. module: mail
#: field:mail.compose.message,res_id:0
@@ -607,7 +633,7 @@ msgstr ""
#: field:mail.message,res_id:0
#: field:mail.wizard.invite,res_id:0
msgid "Related Document ID"
-msgstr ""
+msgstr "Kapcsolódó dokument azonosító ID"
#. module: mail
#: model:ir.actions.client,help:mail.action_mail_to_me_feeds
@@ -619,23 +645,29 @@ msgid ""
"
\n"
" "
msgstr ""
+"\n"
+"Nincs privát üzenet.\n"
+"
\n"
+"Ez a lista az önnek küldött üzeneteket tartalmazza.\n"
+"
\n"
+" "
#. module: mail
#: model:mail.group,name:mail.group_rd
msgid "R&D"
-msgstr ""
+msgstr "R&D"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:61
#, python-format
msgid "/web/binary/upload_attachment"
-msgstr ""
+msgstr "/web/binary/upload_attachment"
#. module: mail
#: model:ir.model,name:mail.model_mail_thread
msgid "Email Thread"
-msgstr ""
+msgstr "E-mail összafűzés"
#. module: mail
#: view:mail.mail:0
@@ -647,19 +679,19 @@ msgstr "Speciális"
#: code:addons/mail/static/src/xml/mail.xml:226
#, python-format
msgid "Move to Inbox"
-msgstr ""
+msgstr "Bejövő üzenetekbe mozgatás"
#. module: mail
#: code:addons/mail/wizard/mail_compose_message.py:165
#, python-format
msgid "Re:"
-msgstr ""
+msgstr "Vissza:"
#. module: mail
#: field:mail.compose.message,to_read:0
#: field:mail.message,to_read:0
msgid "To read"
-msgstr ""
+msgstr "Elolvas"
#. module: mail
#: code:addons/mail/res_users.py:79
@@ -668,19 +700,21 @@ msgid ""
"You may not create a user. To create new users, you should use the "
"\"Settings > Users\" menu."
msgstr ""
+"Talán nem hozott létre felhasználót. Egy felhasználó létrehozásához, "
+"használja a \"Beállítások > Felhasználók\" menüt."
#. module: mail
#: help:mail.followers,res_model:0
#: help:mail.wizard.invite,res_model:0
msgid "Model of the followed resource"
-msgstr ""
+msgstr "A követett forrás modellje"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:286
#, python-format
msgid "like"
-msgstr ""
+msgstr "hasonló"
#. module: mail
#: view:mail.compose.message:0
@@ -694,12 +728,12 @@ msgstr "Mégsem"
#: code:addons/mail/static/src/xml/mail.xml:44
#, python-format
msgid "Share with my followers..."
-msgstr ""
+msgstr "Üzenet a követőimnek..."
#. module: mail
#: field:mail.notification,partner_id:0
msgid "Contact"
-msgstr ""
+msgstr "Kapcsolat"
#. module: mail
#: view:mail.group:0
@@ -707,21 +741,23 @@ msgid ""
"Only the invited followers can read the\n"
" discussions on this group."
msgstr ""
+"Csak a meghívott követők olvashatják ennek a\n"
+" csoportnak a beszélgetését."
#. module: mail
#: model:ir.model,name:mail.model_ir_ui_menu
msgid "ir.ui.menu"
-msgstr ""
+msgstr "ir.ui.menu"
#. module: mail
#: view:mail.message:0
msgid "Has attachments"
-msgstr ""
+msgstr "Vannak mellékletei"
#. module: mail
#: view:mail.mail:0
msgid "on"
-msgstr ""
+msgstr "ezen:"
#. module: mail
#: code:addons/mail/mail_message.py:916
@@ -730,6 +766,8 @@ msgid ""
"The following partners chosen as recipients for the email have no email "
"address linked :"
msgstr ""
+"A következő partnerek lettek kiválasztva mint címzettek, azokhoz az e-"
+"mailekhez amelyekhez nem lett kapcsolva e-mail cím :"
#. module: mail
#: help:mail.alias,alias_defaults:0
@@ -737,11 +775,13 @@ msgid ""
"A Python dictionary that will be evaluated to provide default values when "
"creating new records for this alias."
msgstr ""
+"Egy Python szótár aminak a kiértékelésével alapértékeket biztosít, ha ehhez "
+"az álnévhez új rekordokat hoz létre."
#. module: mail
#: model:ir.model,name:mail.model_mail_message_subtype
msgid "Message subtypes"
-msgstr ""
+msgstr "Üzenet altípusok"
#. module: mail
#: help:mail.compose.message,notified_partner_ids:0
@@ -749,13 +789,15 @@ msgstr ""
msgid ""
"Partners that have a notification pushing this message in their mailboxes"
msgstr ""
+"Partnerek akiknek van egy értesítésük ennek az üzenetnek a levelező "
+"ládájukba való mozgatására"
#. module: mail
#: selection:mail.compose.message,type:0
#: view:mail.mail:0
#: selection:mail.message,type:0
msgid "Comment"
-msgstr ""
+msgstr "Megjegyzés"
#. module: mail
#: model:ir.actions.client,help:mail.action_mail_inbox_feeds
@@ -771,18 +813,28 @@ msgid ""
" \n"
" "
msgstr ""
+"\n"
+" Szép munka! Az ön postafiókja üres.\n"
+"
\n"
+" A \"Beérkezett üzenetek\" az önnek küldött privát "
+"üzeneteket vagy email-eket,\n"
+" továbbá az ön által követett dokumentumokhoz vagy "
+"emberekhez kapcsolódó\n"
+" információkat tartalmaz.\n"
+"
\n"
+" "
#. module: mail
#: field:mail.mail,notification:0
msgid "Is Notification"
-msgstr ""
+msgstr "Ez egy üzenet"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:170
#, python-format
msgid "Compose a new message"
-msgstr ""
+msgstr "Új üzenet küldés"
#. module: mail
#: view:mail.mail:0
@@ -795,6 +847,7 @@ msgstr "Küldés most"
msgid ""
"Unable to send email, please configure the sender's email address or alias."
msgstr ""
+"Nem tud e-mailt küldeni, kérem állítsa be a küldő e-mail címét vagy álnevet"
#. module: mail
#: help:res.users,alias_id:0
@@ -802,11 +855,13 @@ msgid ""
"Email address internally associated with this user. Incoming emails will "
"appear in the user's notifications."
msgstr ""
+"E-mail cím belsőleg összekapcsolva ezzel a felhasználóval. Bejövő e-mail-ok "
+"megjelennek a felhasználó értesítéseinél."
#. module: mail
#: field:mail.group,image:0
msgid "Photo"
-msgstr ""
+msgstr "Fénykép"
#. module: mail
#. openerp-web
@@ -815,13 +870,13 @@ msgstr ""
#: view:mail.wizard.invite:0
#, python-format
msgid "or"
-msgstr ""
+msgstr "vagy"
#. module: mail
#: help:mail.compose.message,vote_user_ids:0
#: help:mail.message,vote_user_ids:0
msgid "Users that voted for this message"
-msgstr ""
+msgstr "Felhasználók akik szavaztak erre az üzenetre"
#. module: mail
#: help:mail.group,alias_id:0
@@ -829,6 +884,8 @@ msgid ""
"The email address associated with this group. New emails received will "
"automatically create new topics."
msgstr ""
+"Az ezzel a csoporttal társított e-mail cím. Új beérkezett e-mailek "
+"automatikusan új témákat hoznak létre."
#. module: mail
#: view:mail.mail:0
@@ -844,7 +901,7 @@ msgstr "E-mail keresésée"
#: field:mail.compose.message,child_ids:0
#: field:mail.message,child_ids:0
msgid "Child Messages"
-msgstr ""
+msgstr "Alcsoportba rakott üzenetek"
#. module: mail
#: field:mail.alias,alias_user_id:0
@@ -927,12 +984,12 @@ msgstr ""
#. module: mail
#: view:mail.wizard.invite:0
msgid "Add Followers"
-msgstr ""
+msgstr "Követők hozzáadása"
#. module: mail
#: view:mail.compose.message:0
msgid "Followers of selected items and"
-msgstr ""
+msgstr "A kijelölt elemek követői és"
#. module: mail
#: field:mail.alias,alias_force_thread_id:0
@@ -942,7 +999,7 @@ msgstr ""
#. module: mail
#: model:ir.ui.menu,name:mail.mail_group_root
msgid "My Groups"
-msgstr ""
+msgstr "Saját csoportok"
#. module: mail
#: model:ir.actions.client,help:mail.action_mail_archives_feeds
@@ -1063,7 +1120,7 @@ msgstr "Dátum"
#: code:addons/mail/static/src/xml/mail.xml:34
#, python-format
msgid "Post"
-msgstr ""
+msgstr "Elküld"
#. module: mail
#: view:mail.mail:0
@@ -1075,14 +1132,14 @@ msgstr "Kiterjesztett szűrők…"
#: code:addons/mail/static/src/xml/mail.xml:107
#, python-format
msgid "To:"
-msgstr ""
+msgstr "Címzett:"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail.xml:175
#, python-format
msgid "Write to my followers"
-msgstr ""
+msgstr "Bejegyzés írás a követőimnek"
#. module: mail
#: model:ir.model,name:mail.model_res_groups
@@ -1169,7 +1226,7 @@ msgstr ""
#: code:addons/mail/static/src/xml/mail_followers.xml:13
#, python-format
msgid "Following"
-msgstr ""
+msgstr "Követés"
#. module: mail
#: sql_constraint:mail.alias:0
@@ -1257,14 +1314,14 @@ msgstr ""
#. module: mail
#: model:mail.message.subtype,name:mail.mt_comment
msgid "Discussions"
-msgstr ""
+msgstr "Hozzászólások"
#. module: mail
#. openerp-web
#: code:addons/mail/static/src/xml/mail_followers.xml:11
#, python-format
msgid "Follow"
-msgstr ""
+msgstr "Követ"
#. module: mail
#: field:mail.group,name:0
@@ -1413,7 +1470,7 @@ msgstr ""
#: model:ir.actions.act_window,name:mail.action_view_groups
#: model:ir.ui.menu,name:mail.mail_allgroups
msgid "Join a group"
-msgstr ""
+msgstr "Csoporthoz csatlakozás"
#. module: mail
#: model:ir.actions.client,help:mail.action_mail_group_feeds
@@ -1492,7 +1549,7 @@ msgstr ""
#: model:ir.actions.client,name:mail.action_mail_star_feeds
#: model:ir.ui.menu,name:mail.mail_starfeeds
msgid "To-do"
-msgstr ""
+msgstr "Feladat"
#. module: mail
#: view:mail.alias:0
@@ -1598,7 +1655,7 @@ msgstr ""
#. module: mail
#: selection:mail.group,public:0
msgid "Private"
-msgstr ""
+msgstr "Privát"
#. module: mail
#: model:ir.actions.client,help:mail.action_mail_star_feeds
diff --git a/addons/product/i18n/lo.po b/addons/product/i18n/lo.po
new file mode 100644
index 00000000000..0f63a200e88
--- /dev/null
+++ b/addons/product/i18n/lo.po
@@ -0,0 +1,2479 @@
+# Lao translation for openobject-addons
+# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
+# This file is distributed under the same license as the openobject-addons package.
+# FIRST AUTHOR , 2013.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: openobject-addons\n"
+"Report-Msgid-Bugs-To: FULL NAME \n"
+"POT-Creation-Date: 2012-12-21 17:06+0000\n"
+"PO-Revision-Date: 2013-02-12 05:53+0000\n"
+"Last-Translator: FULL NAME \n"
+"Language-Team: Lao \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Launchpad-Export-Date: 2013-02-13 04:36+0000\n"
+"X-Generator: Launchpad (build 16491)\n"
+
+#. module: product
+#: field:product.packaging,rows:0
+msgid "Number of Layers"
+msgstr "ຈໍານວນຊັ້ນ"
+
+#. module: product
+#: help:product.pricelist.item,base:0
+msgid "Base price for computation."
+msgstr "ລາຄາພື້ນຖານໃນການຄິດໄລ່"
+
+#. module: product
+#: help:product.product,seller_qty:0
+msgid "This is minimum quantity to purchase from Main Supplier."
+msgstr "ນີ້ແມ່ນປະລິມານໜ້ອຍສຸດທີ່ຊື້ຈາກຜູ້ຈໍາໜ່າຍ"
+
+#. module: product
+#: model:product.template,name:product.product_product_34_product_template
+msgid "Webcam"
+msgstr "ກ້ອງຖ່າຍຮູບ"
+
+#. module: product
+#: field:product.product,incoming_qty:0
+msgid "Incoming"
+msgstr "ກໍາລັງມາຮອດ"
+
+#. module: product
+#: view:product.product:0
+msgid "Product Name"
+msgstr "ຊື່ຜະລິດຕະພັນ"
+
+#. module: product
+#: view:product.template:0
+msgid "Second Unit of Measure"
+msgstr "ຫົວໜ່ວຍສໍາຮອງ"
+
+#. module: product
+#: help:res.partner,property_product_pricelist:0
+msgid ""
+"This pricelist will be used, instead of the default one, for sales to the "
+"current partner"
+msgstr ""
+"ລາຍການລາຄານີ້ຈະຖຶກນໍາໃຊ້, ແທນທີ່ຈະຕັ້ງຄ່າເທົ່າກັບໜື່ງ "
+"ເພື່ອຂາຍໃຫ້ແກ່ລູກຄ້າໃນປະຈຸບັນ"
+
+#. module: product
+#: field:product.product,seller_qty:0
+msgid "Supplier Quantity"
+msgstr "ຈໍານວນຜູ້ສະໜອງ"
+
+#. module: product
+#: selection:product.template,mes_type:0
+msgid "Fixed"
+msgstr "ກໍານົດ"
+
+#. module: product
+#: model:product.template,name:product.product_product_10_product_template
+msgid "Mouse, Optical"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "Base Prices"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,name:0
+msgid "Rule Name"
+msgstr ""
+
+#. module: product
+#: help:product.template,list_price:0
+msgid ""
+"Base price to compute the customer price. Sometimes called the catalog price."
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_3_product_template
+msgid "PC Assemble SC234"
+msgstr ""
+
+#. module: product
+#: help:product.product,message_summary:0
+msgid ""
+"Holds the Chatter summary (number of messages, ...). This summary is "
+"directly in html format in order to be inserted in kanban views."
+msgstr ""
+
+#. module: product
+#: code:addons/product/pricelist.py:179
+#: code:addons/product/product.py:208
+#, python-format
+msgid "Warning!"
+msgstr ""
+
+#. module: product
+#: field:product.product,image_small:0
+msgid "Small-sized image"
+msgstr ""
+
+#. module: product
+#: code:addons/product/product.py:176
+#, python-format
+msgid ""
+"Conversion from Product UoM %s to Default UoM %s is not possible as they "
+"both belong to different Category!."
+msgstr ""
+
+#. module: product
+#: selection:product.template,cost_method:0
+msgid "Average Price"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,name:0
+msgid "Explicit rule name for this pricelist line."
+msgstr ""
+
+#. module: product
+#: field:product.template,uos_coeff:0
+msgid "Unit of Measure -> UOS Coeff"
+msgstr ""
+
+#. module: product
+#: field:product.price_list,price_list:0
+msgid "PriceList"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_4_product_template
+msgid "PC Assemble SC349"
+msgstr ""
+
+#. module: product
+#: help:product.product,seller_delay:0
+msgid ""
+"This is the average delay in days between the purchase order confirmation "
+"and the reception of goods for this product and for the default supplier. It "
+"is used by the scheduler to order requests based on reordering delays."
+msgstr ""
+
+#. module: product
+#: model:product.pricelist.version,name:product.ver0
+msgid "Default Public Pricelist Version"
+msgstr ""
+
+#. module: product
+#: selection:product.template,cost_method:0
+msgid "Standard Price"
+msgstr ""
+
+#. module: product
+#: model:product.pricelist.type,name:product.pricelist_type_sale
+#: field:res.partner,property_product_pricelist:0
+msgid "Sale Pricelist"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+#: field:product.template,type:0
+msgid "Product Type"
+msgstr ""
+
+#. module: product
+#: code:addons/product/product.py:412
+#, python-format
+msgid "Products: "
+msgstr ""
+
+#. module: product
+#: constraint:decimal.precision:0
+msgid ""
+"Error! You cannot define the decimal precision of 'Account' as greater than "
+"the rounding factor of the company's main currency"
+msgstr ""
+
+#. module: product
+#: field:product.category,parent_id:0
+msgid "Parent Category"
+msgstr "ໜວດຫຼັກ"
+
+#. module: product
+#: model:product.template,description:product.product_product_33_product_template
+msgid "Headset for laptop PC with USB connector."
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_all
+msgid "All products"
+msgstr "ຜະລິດຕະພັນທັງໝັດ"
+
+#. module: product
+#: model:process.node,note:product.process_node_supplier0
+msgid "Supplier name, price, product code, ..."
+msgstr "ຊື່ຜູ້ສະໜອງ, ລາຄາ, ລະຫັດຜະລິດຕະພັນ"
+
+#. module: product
+#: constraint:res.currency:0
+msgid ""
+"Error! You cannot define a rounding factor for the company's main currency "
+"that is smaller than the decimal precision of 'Account'."
+msgstr ""
+
+#. module: product
+#: help:product.product,outgoing_qty:0
+msgid ""
+"Quantity of products that are planned to leave.\n"
+"In a context with a single Stock Location, this includes goods leaving this "
+"Location, or any of its children.\n"
+"In a context with a single Warehouse, this includes goods leaving the Stock "
+"Location of this Warehouse, or any of its children.\n"
+"In a context with a single Shop, this includes goods leaving the Stock "
+"Location of the Warehouse of this Shop, or any of its children.\n"
+"Otherwise, this includes goods leaving any Stock Location with 'internal' "
+"type."
+msgstr ""
+
+#. module: product
+#: model:product.template,description_sale:product.product_product_42_product_template
+msgid ""
+"Office Editing Software with word processing, spreadsheets, presentations, "
+"graphics, and databases..."
+msgstr ""
+
+#. module: product
+#: field:product.product,seller_id:0
+msgid "Main Supplier"
+msgstr "ຜູ້ສະໜອງຫຼັກ"
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_ul_form_action
+#: model:ir.model,name:product.model_product_packaging
+#: model:ir.ui.menu,name:product.menu_product_ul_form_action
+#: view:product.packaging:0
+#: view:product.product:0
+#: view:product.ul:0
+msgid "Packaging"
+msgstr "ການຫຸ້ມຫໍ່"
+
+#. module: product
+#: help:product.product,active:0
+msgid ""
+"If unchecked, it will allow you to hide the product without removing it."
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: field:product.template,categ_id:0
+#: field:product.uom,category_id:0
+msgid "Category"
+msgstr "ໝວດ"
+
+#. module: product
+#: model:product.template,name:product.product_product_25_product_template
+msgid "Laptop E5023"
+msgstr ""
+
+#. module: product
+#: help:product.packaging,ul_qty:0
+msgid "The number of packages by layer"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_30_product_template
+msgid "Pen drive, SP-4"
+msgstr ""
+
+#. module: product
+#: field:product.packaging,qty:0
+msgid "Quantity by Package"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_29_product_template
+msgid "Pen drive, SP-2"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: view:product.template:0
+#: field:product.template,state:0
+msgid "Status"
+msgstr ""
+
+#. module: product
+#: help:product.template,categ_id:0
+msgid "Select category for the current product"
+msgstr ""
+
+#. module: product
+#: field:product.product,outgoing_qty:0
+msgid "Outgoing"
+msgstr ""
+
+#. module: product
+#: model:product.price.type,name:product.list_price
+#: field:product.product,lst_price:0
+msgid "Public Price"
+msgstr ""
+
+#. module: product
+#: field:product.price_list,qty5:0
+msgid "Quantity-5"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_ul_form_action
+msgid ""
+"\n"
+" Click to add a new packaging type.\n"
+"
\n"
+" The packaging type define the dimensions as well as the "
+"number\n"
+" of products per package. This will ensure salesperson sell "
+"the\n"
+" right number of products according to the package selected.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: field:product.template,product_manager:0
+msgid "Product Manager"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_7_product_template
+msgid "17” LCD Monitor"
+msgstr ""
+
+#. module: product
+#: field:product.supplierinfo,product_name:0
+msgid "Supplier Product Name"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist:0
+msgid "Products Price Search"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+#: field:product.template,description_sale:0
+msgid "Sale Description"
+msgstr ""
+
+#. module: product
+#: help:product.packaging,length:0
+msgid "The length of the package"
+msgstr ""
+
+#. module: product
+#: field:product.product,message_summary:0
+msgid "Summary"
+msgstr ""
+
+#. module: product
+#: help:product.template,weight_net:0
+msgid "The net weight in Kg."
+msgstr ""
+
+#. module: product
+#: field:pricelist.partnerinfo,min_quantity:0
+#: field:product.supplierinfo,qty:0
+msgid "Quantity"
+msgstr ""
+
+#. module: product
+#: view:product.price_list:0
+msgid "Calculate Product Price per Unit Based on Pricelist Version."
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,product_id:0
+msgid ""
+"Specify a product if this rule only applies to one product. Keep empty "
+"otherwise."
+msgstr ""
+
+#. module: product
+#: model:product.uom.categ,name:product.product_uom_categ_kgm
+msgid "Weight"
+msgstr ""
+
+#. module: product
+#: help:product.product,virtual_available:0
+msgid ""
+"Forecast quantity (computed as Quantity On Hand - Outgoing + Incoming)\n"
+"In a context with a single Stock Location, this includes goods stored in "
+"this location, or any of its children.\n"
+"In a context with a single Warehouse, this includes goods stored in the "
+"Stock Location of this Warehouse, or any of its children.\n"
+"In a context with a single Shop, this includes goods stored in the Stock "
+"Location of the Warehouse of this Shop, or any of its children.\n"
+"Otherwise, this includes goods stored in any Stock Location with 'internal' "
+"type."
+msgstr ""
+
+#. module: product
+#: field:product.packaging,height:0
+msgid "Height"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Procurements"
+msgstr ""
+
+#. module: product
+#: model:res.groups,name:product.group_mrp_properties
+msgid "Manage Properties of Product"
+msgstr ""
+
+#. module: product
+#: help:product.uom,factor:0
+msgid ""
+"How much bigger or smaller this unit is compared to the reference Unit of "
+"Measure for this category:\n"
+"1 * (reference unit) = ratio * (this unit)"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_pricelist_partnerinfo
+msgid "pricelist.partnerinfo"
+msgstr ""
+
+#. module: product
+#: field:product.price_list,qty2:0
+msgid "Quantity-2"
+msgstr ""
+
+#. module: product
+#: field:product.price_list,qty3:0
+msgid "Quantity-3"
+msgstr ""
+
+#. module: product
+#: field:product.price_list,qty1:0
+msgid "Quantity-1"
+msgstr ""
+
+#. module: product
+#: field:product.price_list,qty4:0
+msgid "Quantity-4"
+msgstr ""
+
+#. module: product
+#: view:res.partner:0
+msgid "Sales & Purchases"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_44_product_template
+msgid "GrapWorks Software"
+msgstr ""
+
+#. module: product
+#: model:product.uom.categ,name:product.uom_categ_wtime
+msgid "Working Time"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_42_product_template
+msgid "Office Suite"
+msgstr ""
+
+#. module: product
+#: field:product.template,mes_type:0
+msgid "Measure Type"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_32_product_template
+msgid "Headset standard"
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_day
+msgid "Day(s)"
+msgstr "ມື້"
+
+#. module: product
+#: help:product.product,incoming_qty:0
+msgid ""
+"Quantity of products that are planned to arrive.\n"
+"In a context with a single Stock Location, this includes goods arriving to "
+"this Location, or any of its children.\n"
+"In a context with a single Warehouse, this includes goods arriving to the "
+"Stock Location of this Warehouse, or any of its children.\n"
+"In a context with a single Shop, this includes goods arriving to the Stock "
+"Location of the Warehouse of this Shop, or any of its children.\n"
+"Otherwise, this includes goods arriving to any Stock Location with "
+"'internal' type."
+msgstr ""
+
+#. module: product
+#: constraint:product.template:0
+msgid ""
+"Error: The default Unit of Measure and the purchase Unit of Measure must be "
+"in the same category."
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_uom_categ
+msgid "Product uom categ"
+msgstr ""
+
+#. module: product
+#: model:product.ul,name:product.product_ul_box
+msgid "Box 20x20x40"
+msgstr ""
+
+#. module: product
+#: field:product.template,warranty:0
+msgid "Warranty"
+msgstr "ຮັບປະກັນ"
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "Price Computation"
+msgstr ""
+
+#. module: product
+#: constraint:product.product:0
+msgid ""
+"You provided an invalid \"EAN13 Barcode\" reference. You may use the "
+"\"Internal Reference\" field instead."
+msgstr ""
+
+#. module: product
+#: model:res.groups,name:product.group_purchase_pricelist
+msgid "Purchase Pricelists"
+msgstr "ລາຍການລາຄາຊື້"
+
+#. module: product
+#: model:product.template,name:product.product_product_5_product_template
+msgid "PC Assemble + Custom (PC on Demand)"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_27_product_template
+msgid "Custom Laptop based on customer's requirement."
+msgstr ""
+
+#. module: product
+#: help:product.packaging,width:0
+msgid "The width of the package"
+msgstr ""
+
+#. module: product
+#: code:addons/product/product.py:361
+#, python-format
+msgid "Unit of Measure categories Mismatch!"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_36_product_template
+msgid "Blank DVD-RW"
+msgstr ""
+
+#. module: product
+#: selection:product.category,type:0
+msgid "View"
+msgstr "ເບຶ່ງ"
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_template_action_tree
+msgid "Product Templates"
+msgstr ""
+
+#. module: product
+#: field:product.category,parent_left:0
+msgid "Left Parent"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,price_max_margin:0
+msgid "Specify the maximum amount of margin over the base price."
+msgstr ""
+
+#. module: product
+#: constraint:product.pricelist.item:0
+msgid ""
+"Error! You cannot assign the Main Pricelist as Other Pricelist in PriceList "
+"Item!"
+msgstr ""
+
+#. module: product
+#: view:product.price_list:0
+msgid "or"
+msgstr "ຫຼື"
+
+#. module: product
+#: constraint:product.packaging:0
+msgid "Error: Invalid ean code"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,min_quantity:0
+msgid "Min. Quantity"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_12_product_template
+msgid "Mouse, Wireless"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_22_product_template
+msgid "Processor Core i5 2.70 Ghz"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_price_type
+msgid "Price Type"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "Max. Margin"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "Base Price"
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,name:0
+msgid "Supplier of this product"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.version,active:0
+msgid ""
+"When a version is duplicated it is set to non active, so that the dates do "
+"not overlaps with original version. You should change the dates and "
+"reactivate the pricelist"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_18_product_template
+msgid "HDD SH-2"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_17_product_template
+msgid "HDD SH-1"
+msgstr ""
+
+#. module: product
+#: field:product.supplierinfo,name:0
+#: field:product.template,seller_ids:0
+msgid "Supplier"
+msgstr "ຜູ້ສະໜອງ"
+
+#. module: product
+#: help:product.template,cost_method:0
+msgid ""
+"Standard Price: The cost price is manually updated at the end of a specific "
+"period (usually every year). \n"
+"Average Price: The cost price is recomputed at each incoming shipment."
+msgstr ""
+
+#. module: product
+#: field:product.product,qty_available:0
+msgid "Quantity On Hand"
+msgstr ""
+
+#. module: product
+#: field:product.price.type,name:0
+msgid "Price Name"
+msgstr ""
+
+#. module: product
+#: help:product.product,message_unread:0
+msgid "If checked new messages require your attention."
+msgstr ""
+
+#. module: product
+#: field:product.product,ean13:0
+msgid "EAN13 Barcode"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.action_product_price_list
+#: model:ir.model,name:product.model_product_price_list
+#: view:product.price_list:0
+#: report:product.pricelist:0
+#: field:product.pricelist.version,pricelist_id:0
+msgid "Price List"
+msgstr "ລາຍການລາຄາ"
+
+#. module: product
+#: field:product.product,virtual_available:0
+msgid "Forecasted Quantity"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Purchase"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_33_product_template
+msgid "Headset USB"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "Suppliers"
+msgstr ""
+
+#. module: product
+#: model:res.groups,name:product.group_sale_pricelist
+msgid "Sales Pricelists"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "New Price ="
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_7
+msgid "Accessories"
+msgstr ""
+
+#. module: product
+#: model:process.transition,name:product.process_transition_supplierofproduct0
+msgid "Supplier of the product"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_28_product_template
+msgid "External Hard disk"
+msgstr ""
+
+#. module: product
+#: help:product.template,standard_price:0
+msgid ""
+"Cost price of the product used for standard stock valuation in accounting "
+"and used as a base price on purchase orders."
+msgstr ""
+
+#. module: product
+#: field:product.category,child_id:0
+msgid "Child Categories"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.version,date_end:0
+msgid "End Date"
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_litre
+msgid "Liter(s)"
+msgstr ""
+
+#. module: product
+#: view:product.price_list:0
+msgid "Print"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: field:product.ul,type:0
+#: field:product.uom,uom_type:0
+msgid "Type"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_pricelist_action2
+#: model:ir.actions.act_window,name:product.product_pricelist_action_for_purchase
+#: model:ir.ui.menu,name:product.menu_product_pricelist_action2
+#: model:ir.ui.menu,name:product.menu_product_pricelist_main
+msgid "Pricelists"
+msgstr ""
+
+#. module: product
+#: field:product.product,partner_ref:0
+msgid "Customer ref"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.type,key:0
+msgid "Key"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.report.xml,name:product.report_product_pricelist
+#: model:ir.model,name:product.model_product_pricelist
+#: field:product.product,pricelist_id:0
+#: view:product.supplierinfo:0
+msgid "Pricelist"
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_hour
+msgid "Hour(s)"
+msgstr ""
+
+#. module: product
+#: selection:product.template,state:0
+msgid "In Development"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_res_partner
+msgid "Partner"
+msgstr ""
+
+#. module: product
+#: model:process.transition,note:product.process_transition_supplierofproduct0
+msgid ""
+"1 or several supplier(s) can be linked to a product. All information stands "
+"in the product form."
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,price_round:0
+msgid "Price Rounding"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_1_product_template
+msgid "On Site Monitoring"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "days"
+msgstr ""
+
+#. module: product
+#: model:process.node,name:product.process_node_supplier0
+#: view:product.supplierinfo:0
+msgid "Supplier Information"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_res_currency
+#: field:product.price.type,currency_id:0
+#: report:product.pricelist:0
+#: field:product.pricelist,currency_id:0
+msgid "Currency"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_46_product_template
+msgid "Datacard"
+msgstr ""
+
+#. module: product
+#: help:product.template,uos_coeff:0
+msgid ""
+"Coefficient to convert default Unit of Measure to Unit of Sale\n"
+" uos = uom * coeff"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_category_action_form
+#: model:ir.ui.menu,name:product.menu_product_category_action_form
+#: view:product.category:0
+msgid "Product Categories"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "Procurement & Locations"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_20_product_template
+msgid "Motherboard I9P57"
+msgstr ""
+
+#. module: product
+#: field:product.packaging,weight:0
+msgid "Total Package Weight"
+msgstr ""
+
+#. module: product
+#: help:product.packaging,code:0
+msgid "The code of the transport unit."
+msgstr ""
+
+#. module: product
+#: view:product.price.type:0
+msgid "Products Price Type"
+msgstr ""
+
+#. module: product
+#: field:product.product,message_is_follower:0
+msgid "Is a Follower"
+msgstr ""
+
+#. module: product
+#: field:product.product,price_extra:0
+msgid "Variant Price Extra"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_supplierinfo
+msgid "Information about a product supplier"
+msgstr ""
+
+#. module: product
+#: help:product.uom,factor_inv:0
+msgid ""
+"How many times this Unit of Measure is bigger than the reference Unit of "
+"Measure in this category:\n"
+"1 * (this unit) = ratio * (reference unit)"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+#: field:product.template,description_purchase:0
+msgid "Purchase Description"
+msgstr ""
+
+#. module: product
+#: constraint:product.pricelist.version:0
+msgid "You cannot have 2 pricelist versions that overlap!"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,min_quantity:0
+msgid ""
+"Specify the minimum quantity that needs to be bought/sold for the rule to "
+"apply."
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.version,date_start:0
+msgid "First valid date for the version."
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,delay:0
+msgid ""
+"Lead time in days between the confirmation of the purchase order and the "
+"reception of the products in your warehouse. Used by the scheduler for "
+"automatic computation of the purchase order planning."
+msgstr ""
+
+#. module: product
+#: model:product.template,description_sale:product.product_product_3_product_template
+msgid ""
+"17\" LCD Monitor\n"
+"Processor AMD 8-Core\n"
+"512MB RAM\n"
+"HDD SH-1"
+msgstr ""
+
+#. module: product
+#: selection:product.template,type:0
+msgid "Stockable Product"
+msgstr ""
+
+#. module: product
+#: field:product.packaging,code:0
+msgid "Code"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_27_product_template
+msgid "Laptop Customized"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_ul
+msgid "Shipping Unit"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_35_product_template
+msgid "Blank CD"
+msgstr ""
+
+#. module: product
+#: field:pricelist.partnerinfo,suppinfo_id:0
+msgid "Partner Information"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_normal_action_sell
+msgid ""
+"\n"
+" Click to define a new product.\n"
+"
\n"
+" You must define a product for everything you sell, whether "
+"it's\n"
+" a physical product, a consumable or a service you offer to\n"
+" customers.\n"
+"
\n"
+" The product form contains information to simplify the sale\n"
+" process: price, notes in the quotation, accounting data,\n"
+" procurement methods, etc.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: view:product.price_list:0
+msgid "Cancel"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_37_product_template
+msgid "All in one hi-speed printer with fax and scanner."
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,min_qty:0
+msgid ""
+"The minimal quantity to purchase to this supplier, expressed in the supplier "
+"Product Unit of Measure if not empty, in the default unit of measure of the "
+"product otherwise."
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: view:product.template:0
+msgid "Information"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "Products Listprices Items"
+msgstr ""
+
+#. module: product
+#: view:product.packaging:0
+msgid "Other Info"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.version,items_id:0
+msgid "Price List Items"
+msgstr ""
+
+#. module: product
+#: field:pricelist.partnerinfo,price:0
+msgid "Unit Price"
+msgstr ""
+
+#. module: product
+#: field:product.category,parent_right:0
+msgid "Right Parent"
+msgstr ""
+
+#. module: product
+#: field:product.product,price:0
+msgid "Price"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,price_surcharge:0
+msgid "Price Surcharge"
+msgstr ""
+
+#. module: product
+#: field:product.product,code:0
+#: field:product.product,default_code:0
+msgid "Internal Reference"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_8_product_template
+msgid "USB Keyboard, QWERTY"
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_9
+msgid "Softwares"
+msgstr ""
+
+#. module: product
+#: field:product.product,packaging:0
+msgid "Logistical Units"
+msgstr ""
+
+#. module: product
+#: field:product.category,complete_name:0
+#: field:product.category,name:0
+#: field:product.pricelist.type,name:0
+#: field:product.pricelist.version,name:0
+#: field:product.product,name_template:0
+#: field:product.template,name:0
+#: field:product.ul,name:0
+#: field:product.uom.categ,name:0
+msgid "Name"
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_4
+msgid "Computers"
+msgstr ""
+
+#. module: product
+#: help:product.product,message_ids:0
+msgid "Messages and communication history"
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_kgm
+msgid "kg"
+msgstr ""
+
+#. module: product
+#: selection:product.template,state:0
+msgid "Obsolete"
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_km
+msgid "km"
+msgstr ""
+
+#. module: product
+#: field:product.template,standard_price:0
+msgid "Cost"
+msgstr ""
+
+#. module: product
+#: help:product.category,sequence:0
+msgid ""
+"Gives the sequence order when displaying a list of product categories."
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_dozen
+msgid "Dozen(s)"
+msgstr ""
+
+#. module: product
+#: field:product.uom,factor:0
+#: field:product.uom,factor_inv:0
+msgid "Ratio"
+msgstr ""
+
+#. module: product
+#: field:product.packaging,width:0
+msgid "Width"
+msgstr ""
+
+#. module: product
+#: help:product.price.type,field:0
+msgid "Associated field in the product form."
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: view:product.template:0
+#: field:product.template,uom_id:0
+#: field:product.uom,name:0
+msgid "Unit of Measure"
+msgstr ""
+
+#. module: product
+#: report:product.pricelist:0
+msgid "Printing Date"
+msgstr ""
+
+#. module: product
+#: field:product.template,uos_id:0
+msgid "Unit of Sale"
+msgstr ""
+
+#. module: product
+#: field:product.product,message_unread:0
+msgid "Unread Messages"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_uom_categ_form_action
+#: model:ir.ui.menu,name:product.menu_product_uom_categ_form_action
+msgid "Unit of Measure Categories"
+msgstr ""
+
+#. module: product
+#: help:product.product,seller_id:0
+msgid "Main Supplier who has highest priority in Supplier List."
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_5
+#: view:product.product:0
+msgid "Services"
+msgstr ""
+
+#. module: product
+#: help:product.product,ean13:0
+msgid "International Article Number used for product identification."
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_category_action
+msgid ""
+"\n"
+" Here is a list of all your products classified by category. "
+"You\n"
+" can click a category to get the list of all products linked "
+"to\n"
+" this category or to a child of this category.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: code:addons/product/product.py:361
+#, python-format
+msgid ""
+"New Unit of Measure '%s' must belong to same Unit of Measure category '%s' "
+"as of old Unit of Measure '%s'. If you need to change the unit of measure, "
+"you may deactivate this product from the 'Procurements' tab and create a new "
+"one."
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_normal_action
+#: model:ir.actions.act_window,name:product.product_normal_action_puchased
+#: model:ir.actions.act_window,name:product.product_normal_action_sell
+#: model:ir.actions.act_window,name:product.product_normal_action_tree
+#: model:ir.ui.menu,name:product.menu_products
+#: model:ir.ui.menu,name:product.prod_config_main
+#: view:product.product:0
+msgid "Products"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_32_product_template
+msgid ""
+"Hands free headset for laptop PC with in-line microphone and headphone plug."
+msgstr ""
+
+#. module: product
+#: help:product.packaging,rows:0
+msgid "The number of layers on a pallet or box"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,price_min_margin:0
+msgid "Specify the minimum amount of margin over the base price."
+msgstr ""
+
+#. module: product
+#: field:product.template,weight_net:0
+msgid "Net Weight"
+msgstr ""
+
+#. module: product
+#: view:product.packaging:0
+#: view:product.product:0
+msgid "Pallet Dimension"
+msgstr ""
+
+#. module: product
+#: help:product.product,image:0
+msgid ""
+"This field holds the image used as image for the product, limited to "
+"1024x1024px."
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,categ_id:0
+msgid ""
+"Specify a product category if this rule only applies to products belonging "
+"to this category or its children categories. Keep empty otherwise."
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Inventory"
+msgstr ""
+
+#. module: product
+#: field:product.product,seller_info_id:0
+msgid "Supplier Info"
+msgstr ""
+
+#. module: product
+#: code:addons/product/product.py:729
+#, python-format
+msgid "%s (copy)"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_2_product_template
+msgid "On Site Assistance"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_39_product_template
+msgid "Toner Cartridge"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_uom_form_action
+#: model:ir.ui.menu,name:product.menu_product_uom_form_action
+#: model:ir.ui.menu,name:product.next_id_16
+#: view:product.uom:0
+msgid "Units of Measure"
+msgstr ""
+
+#. module: product
+#: field:product.supplierinfo,min_qty:0
+msgid "Minimal Quantity"
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,product_code:0
+msgid ""
+"This supplier's product code will be used when printing a request for "
+"quotation. Keep empty to use the internal one."
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_43_product_template
+msgid "Zed+ Antivirus"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,price_version_id:0
+msgid "Price List Version"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,sequence:0
+msgid ""
+"Gives the order in which the pricelist items will be checked. The evaluation "
+"gives highest priority to lowest sequence and stops as soon as a matching "
+"item is found."
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: selection:product.template,type:0
+msgid "Consumable"
+msgstr ""
+
+#. module: product
+#: help:product.price.type,currency_id:0
+msgid "The currency the field is expressed in."
+msgstr ""
+
+#. module: product
+#: help:product.template,weight:0
+msgid "The gross weight in Kg."
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_37_product_template
+msgid "Printer, All-in-one"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "Procurement"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_23_product_template
+msgid "Processor AMD 8-Core"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: view:product.template:0
+msgid "Weights"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Description for Quotations"
+msgstr ""
+
+#. module: product
+#: help:pricelist.partnerinfo,price:0
+msgid ""
+"This price will be considered as a price for the supplier Unit of Measure if "
+"any or the default Unit of Measure of the product otherwise"
+msgstr ""
+
+#. module: product
+#: field:product.template,uom_po_id:0
+msgid "Purchase Unit of Measure"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Group by..."
+msgstr ""
+
+#. module: product
+#: field:product.product,image_medium:0
+msgid "Medium-sized image"
+msgstr ""
+
+#. module: product
+#: selection:product.ul,type:0
+#: model:product.uom.categ,name:product.product_uom_categ_unit
+msgid "Unit"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.version,date_start:0
+msgid "Start Date"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_38_product_template
+msgid "Ink Cartridge"
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_cm
+msgid "cm"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_uom
+msgid "Product Unit of Measure"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_pricelist_action
+msgid ""
+"\n"
+" Click to add a pricelist version.\n"
+"
\n"
+" There can be more than one version of a pricelist, each of\n"
+" these must be valid during a certain period of time. Some\n"
+" examples of versions: Main Prices, 2010, 2011, Summer "
+"Sales,\n"
+" etc.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: help:product.template,uom_po_id:0
+msgid ""
+"Default Unit of Measure used for purchase orders. It must be in the same "
+"category than the default unit of measure."
+msgstr ""
+
+#. module: product
+#: view:product.pricelist:0
+msgid "Products Price"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_26_product_template
+msgid ""
+"17\" Monitor\n"
+"6GB RAM\n"
+"Hi-Speed 234Q Processor\n"
+"QWERTY keyboard"
+msgstr ""
+
+#. module: product
+#: field:product.uom,rounding:0
+msgid "Rounding Precision"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Consumable products"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_21_product_template
+msgid "Motherboard A20Z7"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_1_product_template
+#: model:product.template,description_sale:product.product_product_1_product_template
+msgid "This type of service include basic monitoring of products."
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.version,date_end:0
+msgid "Last valid date for the version."
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_19_product_template
+msgid "HDD on Demand"
+msgstr ""
+
+#. module: product
+#: field:product.price.type,active:0
+#: field:product.pricelist,active:0
+#: field:product.pricelist.version,active:0
+#: field:product.product,active:0
+#: field:product.uom,active:0
+msgid "Active"
+msgstr ""
+
+#. module: product
+#: field:product.product,price_margin:0
+msgid "Variant Price Margin"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist,name:0
+msgid "Pricelist Name"
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_1
+msgid "Saleable"
+msgstr ""
+
+#. module: product
+#: sql_constraint:product.uom:0
+msgid "The conversion ratio for a unit of measure cannot be 0!"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_24_product_template
+msgid "Graphics Card"
+msgstr ""
+
+#. module: product
+#: help:product.packaging,ean:0
+msgid "The EAN code of the package unit."
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,product_uom:0
+msgid "This comes from the product form."
+msgstr ""
+
+#. module: product
+#: field:product.packaging,weight_ul:0
+msgid "Empty Package Weight"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_41_product_template
+msgid "Windows Home Server 2011"
+msgstr ""
+
+#. module: product
+#: field:product.price.type,field:0
+msgid "Product Field"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_5_product_template
+msgid "Custom computer assembled on order based on customer's requirement."
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_price_type_action
+#: model:ir.ui.menu,name:product.menu_product_price_type
+msgid "Price Types"
+msgstr ""
+
+#. module: product
+#: help:product.template,uom_id:0
+msgid "Default Unit of Measure used for all stock operation."
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Sales"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_uom_categ_form_action
+msgid ""
+"\n"
+" Click to add a new unit of measure category.\n"
+"
\n"
+" Units of measure belonging to the same category can be\n"
+" converted between each others. For example, in the category\n"
+" 'Time', you will have the following units of "
+"measure:\n"
+" Hours, Days.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: help:pricelist.partnerinfo,min_quantity:0
+msgid ""
+"The minimal quantity to trigger this rule, expressed in the supplier Unit of "
+"Measure if any or in the default Unit of Measure of the product otherrwise."
+msgstr ""
+
+#. module: product
+#: selection:product.uom,uom_type:0
+msgid "Smaller than the reference Unit of Measure"
+msgstr ""
+
+#. module: product
+#: model:product.pricelist,name:product.list0
+msgid "Public Pricelist"
+msgstr ""
+
+#. module: product
+#: field:product.supplierinfo,product_code:0
+msgid "Supplier Product Code"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist,active:0
+msgid ""
+"If unchecked, it will allow you to hide the pricelist without removing it."
+msgstr ""
+
+#. module: product
+#: selection:product.ul,type:0
+msgid "Pallet"
+msgstr ""
+
+#. module: product
+#: field:product.packaging,ul_qty:0
+msgid "Package by layer"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_product
+#: model:process.node,name:product.process_node_product0
+#: model:process.process,name:product.process_process_productprocess0
+#: field:product.packaging,product_id:0
+#: field:product.pricelist.item,product_id:0
+#: view:product.product:0
+#: field:product.supplierinfo,product_id:0
+#: model:res.request.link,name:product.req_link_product
+msgid "Product"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Price:"
+msgstr ""
+
+#. module: product
+#: field:product.template,weight:0
+msgid "Gross Weight"
+msgstr ""
+
+#. module: product
+#: help:product.packaging,qty:0
+msgid "The total number of products you can put by pallet or box."
+msgstr ""
+
+#. module: product
+#: field:product.product,variants:0
+msgid "Variants"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_category_action
+#: model:ir.ui.menu,name:product.menu_products_category
+msgid "Products by Category"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_16_product_template
+msgid "Computer Case"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_9_product_template
+msgid "USB Keyboard, AZERTY"
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,sequence:0
+msgid "Assigns the priority to the list of product supplier."
+msgstr ""
+
+#. module: product
+#: constraint:product.pricelist.item:0
+msgid "Error! The minimum margin should be lower than the maximum margin."
+msgstr ""
+
+#. module: product
+#: model:res.groups,name:product.group_uos
+msgid "Manage Secondary Unit of Measure"
+msgstr ""
+
+#. module: product
+#: help:product.uom,rounding:0
+msgid ""
+"The computed quantity will be a multiple of this value. Use 1.0 for a Unit "
+"of Measure that cannot be further split, such as a piece."
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "Rounding Method"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.report.xml,name:product.report_product_label
+msgid "Products Labels"
+msgstr ""
+
+#. module: product
+#: model:product.ul,name:product.product_ul_big_box
+msgid "Box 30x40x60"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_47_product_template
+msgid "Switch, 24 ports"
+msgstr ""
+
+#. module: product
+#: selection:product.uom,uom_type:0
+msgid "Bigger than the reference Unit of Measure"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_consultant_product_template
+#: selection:product.template,type:0
+msgid "Service"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "Internal Description"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_48_product_template
+msgid "USB Adapter"
+msgstr ""
+
+#. module: product
+#: help:product.template,uos_id:0
+msgid ""
+"Sepcify a unit of measure here if invoicing is made in another unit of "
+"measure than inventory. Keep empty to use the default unit of measure."
+msgstr ""
+
+#. module: product
+#: code:addons/product/product.py:208
+#, python-format
+msgid "Cannot change the category of existing Unit of Measure '%s'."
+msgstr ""
+
+#. module: product
+#: help:product.packaging,height:0
+msgid "The height of the package"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist:0
+msgid "Products Price List"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist,company_id:0
+#: field:product.pricelist.item,company_id:0
+#: field:product.pricelist.version,company_id:0
+#: view:product.product:0
+#: field:product.supplierinfo,company_id:0
+#: field:product.template,company_id:0
+msgid "Company"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_26_product_template
+msgid "Laptop S3450"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Default Unit of Measure"
+msgstr ""
+
+#. module: product
+#: code:addons/product/pricelist.py:377
+#, python-format
+msgid "Partner section of the product form"
+msgstr ""
+
+#. module: product
+#: help:product.price.type,name:0
+msgid "Name of this kind of price."
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_3
+msgid "Other Products"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_9_product_template
+msgid "This product is configured with example of push/pull flows"
+msgstr ""
+
+#. module: product
+#: field:product.product,message_ids:0
+msgid "Messages"
+msgstr ""
+
+#. module: product
+#: model:product.uom,name:product.product_uom_unit
+msgid "Unit(s)"
+msgstr ""
+
+#. module: product
+#: code:addons/product/product.py:176
+#, python-format
+msgid "Error!"
+msgstr ""
+
+#. module: product
+#: field:product.packaging,length:0
+msgid "Length"
+msgstr ""
+
+#. module: product
+#: model:product.uom.categ,name:product.uom_categ_length
+msgid "Length / Distance"
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_8
+msgid "Components"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_pricelist_type
+#: field:product.pricelist,type:0
+msgid "Pricelist Type"
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_6
+msgid "External Devices"
+msgstr ""
+
+#. module: product
+#: field:product.product,color:0
+msgid "Color Index"
+msgstr ""
+
+#. module: product
+#: help:product.template,sale_ok:0
+msgid "Specify if the product can be selected in a sales order line."
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: field:product.template,sale_ok:0
+msgid "Can be Sold"
+msgstr ""
+
+#. module: product
+#: field:product.template,produce_delay:0
+msgid "Manufacturing Lead Time"
+msgstr ""
+
+#. module: product
+#: field:product.supplierinfo,pricelist_ids:0
+msgid "Supplier Pricelist"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,base:0
+msgid "Based on"
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_10
+msgid "Raw Materials"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_13_product_template
+msgid "RAM SR5"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_14_product_template
+msgid "RAM SR2"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_normal_action_puchased
+msgid ""
+"\n"
+" Click to define a new product.\n"
+"
\n"
+" You must define a product for everything you purchase, "
+"whether\n"
+" it's a physical product, a consumable or services you buy "
+"to\n"
+" subcontractants.\n"
+"
\n"
+" The product form contains detailed information to improve "
+"the\n"
+" purchase process: prices, procurement logistics, accounting "
+"data,\n"
+" available suppliers, etc.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: model:product.template,description_sale:product.product_product_44_product_template
+msgid "Full featured image editing software."
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_pricelist_version
+#: view:product.pricelist:0
+#: view:product.pricelist.version:0
+msgid "Pricelist Version"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "* ( 1 + "
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_31_product_template
+msgid "Multimedia Speakers"
+msgstr ""
+
+#. module: product
+#: field:product.product,message_follower_ids:0
+msgid "Followers"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Sale Conditions"
+msgstr ""
+
+#. module: product
+#: view:product.packaging:0
+#: view:product.product:0
+msgid "Palletization"
+msgstr ""
+
+#. module: product
+#: report:product.pricelist:0
+msgid "Price List Name"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Description for Suppliers"
+msgstr ""
+
+#. module: product
+#: field:product.supplierinfo,delay:0
+msgid "Delivery Lead Time"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "months"
+msgstr ""
+
+#. module: product
+#: help:product.uom,active:0
+msgid ""
+"By unchecking the active field you can disable a unit of measure without "
+"deleting it."
+msgstr ""
+
+#. module: product
+#: field:product.product,seller_delay:0
+msgid "Supplier Lead Time"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_decimal_precision
+msgid "decimal.precision"
+msgstr ""
+
+#. module: product
+#: selection:product.ul,type:0
+msgid "Box"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,price_surcharge:0
+msgid ""
+"Specify the fixed amount to add or substract(if negative) to the amount "
+"calculated with the discount."
+msgstr ""
+
+#. module: product
+#: help:product.product,qty_available:0
+msgid ""
+"Current quantity of products.\n"
+"In a context with a single Stock Location, this includes goods stored at "
+"this Location, or any of its children.\n"
+"In a context with a single Warehouse, this includes goods stored in the "
+"Stock Location of this Warehouse, or any of its children.\n"
+"In a context with a single Shop, this includes goods stored in the Stock "
+"Location of the Warehouse of this Shop, or any of its children.\n"
+"Otherwise, this includes goods stored in any Stock Location with 'internal' "
+"type."
+msgstr ""
+
+#. module: product
+#: help:product.template,type:0
+msgid ""
+"Consumable: Will not imply stock management for this product. \n"
+"Stockable product: Will imply stock management for this product."
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.type,key:0
+msgid ""
+"Used in the code to select specific prices based on the context. Keep "
+"unchanged."
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_normal_action
+msgid ""
+"\n"
+" Click to define a new product.\n"
+"
\n"
+" You must define a product for everything you buy or sell,\n"
+" whether it's a physical product, a consumable or service.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+msgid "Context..."
+msgstr ""
+
+#. module: product
+#: field:product.packaging,ul:0
+msgid "Type of Package"
+msgstr ""
+
+#. module: product
+#: help:product.category,type:0
+msgid ""
+"A category of the view type is a virtual category that can be used as the "
+"parent of another category to create a hierarchical structure."
+msgstr ""
+
+#. module: product
+#: selection:product.ul,type:0
+msgid "Pack"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,product_tmpl_id:0
+msgid ""
+"Specify a template if this rule only applies to one product template. Keep "
+"empty otherwise."
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_2_product_template
+msgid ""
+"This type of service include assistance for security questions, system "
+"configuration requirements, implementation or special needs."
+msgstr ""
+
+#. module: product
+#: field:product.product,image:0
+msgid "Image"
+msgstr ""
+
+#. module: product
+#: view:product.uom.categ:0
+msgid "Units of Measure categories"
+msgstr ""
+
+#. module: product
+#: model:product.template,description_sale:product.product_product_4_product_template
+msgid ""
+"19\" LCD Monitor\n"
+"Processor Core i5 2.70 Ghz\n"
+"2GB RAM\n"
+"HDD SH-1"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "Descriptions"
+msgstr ""
+
+#. module: product
+#: model:res.groups,name:product.group_stock_packaging
+msgid "Manage Product Packaging"
+msgstr ""
+
+#. module: product
+#: model:product.category,name:product.product_category_2
+msgid "Internal"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_45_product_template
+msgid "Router R430"
+msgstr ""
+
+#. module: product
+#: help:product.packaging,sequence:0
+msgid "Gives the sequence order when displaying a list of packaging."
+msgstr ""
+
+#. module: product
+#: selection:product.category,type:0
+#: selection:product.template,state:0
+msgid "Normal"
+msgstr ""
+
+#. module: product
+#: code:addons/product/pricelist.py:179
+#, python-format
+msgid ""
+"At least one pricelist has no active version !\n"
+"Please create or activate one."
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,price_max_margin:0
+msgid "Max. Price Margin"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid "Min. Margin"
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,product_name:0
+msgid ""
+"This supplier's product name will be used when printing a request for "
+"quotation. Keep empty to use the internal one."
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_pricelist_action_for_purchase
+msgid ""
+"\n"
+" Click to create a pricelist.\n"
+"
\n"
+" A price list contains rules to be evaluated in order to "
+"compute\n"
+" the purchase price. The default price list has only one "
+"rule; use\n"
+" the cost price defined on the product form, so that you do "
+"not have to\n"
+" worry about supplier pricelists if you have very simple "
+"needs.\n"
+"
\n"
+" But you can also import complex price lists form your "
+"supplier\n"
+" that may depends on the quantities ordered or the current\n"
+" promotions.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: selection:product.template,mes_type:0
+msgid "Variable"
+msgstr ""
+
+#. module: product
+#: field:product.template,rental:0
+msgid "Can be Rent"
+msgstr ""
+
+#. module: product
+#: model:product.price.type,name:product.standard_price
+msgid "Cost Price"
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,price_min_margin:0
+msgid "Min. Price Margin"
+msgstr ""
+
+#. module: product
+#: model:res.groups,name:product.group_uom
+msgid "Manage Multiple Units of Measure"
+msgstr ""
+
+#. module: product
+#: help:product.packaging,weight:0
+msgid "The weight of a full package, pallet or box."
+msgstr ""
+
+#. module: product
+#: view:product.uom:0
+msgid "e.g: 1 * (this unit) = ratio * (reference unit)"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_25_product_template
+msgid ""
+"17\" Monitor\n"
+"4GB RAM\n"
+"Standard-1294P Processor\n"
+"QWERTY keyboard"
+msgstr ""
+
+#. module: product
+#: field:product.category,sequence:0
+#: field:product.packaging,sequence:0
+#: field:product.pricelist.item,sequence:0
+#: field:product.supplierinfo,sequence:0
+msgid "Sequence"
+msgstr ""
+
+#. module: product
+#: help:product.template,produce_delay:0
+msgid ""
+"Average delay in days to produce this product. In the case of multi-level "
+"BOM, the manufacturing lead times of the components will be added."
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_assembly_product_template
+msgid "Assembly Service Cost"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_pricelist_item
+msgid "Pricelist item"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_uom_form_action
+msgid ""
+"\n"
+" Click to add a new unit of measure.\n"
+"
\n"
+" You must define a conversion rate between several Units of\n"
+" Measure within the same category.\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_11_product_template
+msgid "Mouse, Laser"
+msgstr ""
+
+#. module: product
+#: view:product.template:0
+msgid "Delays"
+msgstr ""
+
+#. module: product
+#: field:product.category,type:0
+msgid "Category Type"
+msgstr ""
+
+#. module: product
+#: model:process.node,note:product.process_node_product0
+msgid "Creation of the product"
+msgstr ""
+
+#. module: product
+#: field:pricelist.partnerinfo,name:0
+#: field:product.packaging,name:0
+#: report:product.pricelist:0
+#: view:product.product:0
+#: field:product.template,description:0
+msgid "Description"
+msgstr ""
+
+#. module: product
+#: field:product.packaging,ean:0
+msgid "EAN"
+msgstr ""
+
+#. module: product
+#: view:product.pricelist.item:0
+msgid " ) + "
+msgstr ""
+
+#. module: product
+#: field:product.template,volume:0
+#: model:product.uom.categ,name:product.product_uom_categ_vol
+msgid "Volume"
+msgstr ""
+
+#. module: product
+#: help:product.product,image_small:0
+msgid ""
+"Small-sized image of the product. It is automatically resized as a 64x64px "
+"image, with aspect ratio preserved. Use this field anywhere a small image is "
+"required."
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_40_product_template
+msgid "Windows 7 Professional"
+msgstr ""
+
+#. module: product
+#: selection:product.uom,uom_type:0
+msgid "Reference Unit of Measure for this category"
+msgstr ""
+
+#. module: product
+#: field:product.supplierinfo,product_uom:0
+msgid "Supplier Unit of Measure"
+msgstr ""
+
+#. module: product
+#: view:product.product:0
+#: model:res.groups,name:product.group_product_variant
+msgid "Product Variant"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_6_product_template
+msgid "15” LCD Monitor"
+msgstr ""
+
+#. module: product
+#: code:addons/product/pricelist.py:376
+#: field:product.pricelist.item,base_pricelist_id:0
+#, python-format
+msgid "Other Pricelist"
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,help:product.product_pricelist_action2
+msgid ""
+"\n"
+" Click to create a pricelist.\n"
+"
\n"
+" A price list contains rules to be evaluated in order to "
+"compute\n"
+" the sales price of the products.\n"
+"
\n"
+" Price lists may have several versions (2010, 2011, Promotion "
+"of\n"
+" February 2010, etc.) and each version may have several "
+"rules.\n"
+" (e.g. the customer price of a product category will be based "
+"on\n"
+" the supplier price multiplied by 1.80).\n"
+"
\n"
+" "
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_template
+#: field:product.pricelist.item,product_tmpl_id:0
+#: field:product.product,product_tmpl_id:0
+#: view:product.template:0
+msgid "Product Template"
+msgstr ""
+
+#. module: product
+#: field:product.template,cost_method:0
+#: model:res.groups,name:product.group_costing_method
+msgid "Costing Method"
+msgstr ""
+
+#. module: product
+#: model:ir.model,name:product.model_product_category
+#: field:product.pricelist.item,categ_id:0
+msgid "Product Category"
+msgstr ""
+
+#. module: product
+#: model:product.template,description:product.product_product_19_product_template
+msgid "On demand hard-disk having capacity based on requirement."
+msgstr ""
+
+#. module: product
+#: selection:product.template,state:0
+msgid "End of Lifecycle"
+msgstr ""
+
+#. module: product
+#: model:product.template,name:product.product_product_15_product_template
+msgid "RAM SR3"
+msgstr ""
+
+#. module: product
+#: help:product.product,packaging:0
+msgid ""
+"Gives the different ways to package the same product. This has no impact on "
+"the picking order and is mainly used if you use the EDI module."
+msgstr ""
+
+#. module: product
+#: model:ir.actions.act_window,name:product.product_pricelist_action
+#: model:ir.ui.menu,name:product.menu_product_pricelist_action
+#: field:product.pricelist,version_id:0
+msgid "Pricelist Versions"
+msgstr ""
+
+#. module: product
+#: help:product.pricelist.item,price_round:0
+msgid ""
+"Sets the price so that it is a multiple of this value.\n"
+"Rounding is applied after the discount and before the surcharge.\n"
+"To have prices that end in 9.99, set rounding 10, surcharge -0.01"
+msgstr ""
+
+#. module: product
+#: field:product.template,list_price:0
+msgid "Sale Price"
+msgstr ""
+
+#. module: product
+#: help:product.uom,category_id:0
+msgid ""
+"Conversion between Units of Measure can only occur if they belong to the "
+"same category. The conversion will be made based on the ratios."
+msgstr ""
+
+#. module: product
+#: constraint:product.category:0
+msgid "Error ! You cannot create recursive categories."
+msgstr ""
+
+#. module: product
+#: help:product.product,image_medium:0
+msgid ""
+"Medium-sized image of the product. It is automatically resized as a "
+"128x128px image, with aspect ratio preserved, only when the image exceeds "
+"one of those sizes. Use this field in form views or some kanban views."
+msgstr ""
+
+#. module: product
+#: view:product.uom:0
+msgid "e.g: 1 * (reference unit) = ratio * (this unit)"
+msgstr ""
+
+#. module: product
+#: help:product.supplierinfo,qty:0
+msgid "This is a quantity which is converted into Default Unit of Measure."
+msgstr ""
+
+#. module: product
+#: help:product.template,volume:0
+msgid "The volume in m3."
+msgstr ""
+
+#. module: product
+#: field:product.pricelist.item,price_discount:0
+msgid "Price Discount"
+msgstr ""
From 11051d4a08de2db72d76a9d715c6cd9c4229c9b6 Mon Sep 17 00:00:00 2001
From: Raphael Collet
Date: Wed, 13 Feb 2013 09:20:35 +0100
Subject: [PATCH 56/60] [FIX] web: rewrite reference to removed module
openerp.service.web_services
bzr revid: rco@openerp.com-20130213082035-9ajx7jlzim1qunv4
---
addons/web/controllers/main.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py
index e1a3c476a32..e23246d7288 100644
--- a/addons/web/controllers/main.py
+++ b/addons/web/controllers/main.py
@@ -683,7 +683,7 @@ class WebClient(openerpweb.Controller):
@openerpweb.jsonrequest
def version_info(self, req):
- return openerp.service.web_services.RPC_VERSION_1
+ return openerp.service.common.exp_version()
class Proxy(openerpweb.Controller):
_cp_path = '/web/proxy'
From 55625f52db111c75563a72a04dd3d5e992fadaf9 Mon Sep 17 00:00:00 2001
From: Raphael Collet
Date: Wed, 13 Feb 2013 11:18:03 +0100
Subject: [PATCH 57/60] [FIX] fix import statements in yml files
bzr revid: rco@openerp.com-20130213101803-4y1ponocx6oai2mz
---
addons/account_voucher/test/case1_usd_usd.yml | 2 --
addons/account_voucher/test/case2_suppl_usd_eur.yml | 2 --
.../account_voucher/test/case2_usd_eur_debtor_in_usd.yml | 2 --
addons/account_voucher/test/case3_eur_eur.yml | 2 --
addons/hr_holidays/test/test_hr_holiday.yml | 1 -
addons/hr_payroll_account/test/hr_payroll_account.yml | 4 ++--
addons/membership/test/test_membership.yml | 1 -
addons/purchase_requisition/test/purchase_requisition.yml | 3 ++-
addons/sale_mrp/test/sale_mrp.yml | 2 +-
addons/sale_stock/test/picking_order_policy.yml | 7 ++++---
10 files changed, 9 insertions(+), 17 deletions(-)
diff --git a/addons/account_voucher/test/case1_usd_usd.yml b/addons/account_voucher/test/case1_usd_usd.yml
index fd1945691ba..44269104370 100644
--- a/addons/account_voucher/test/case1_usd_usd.yml
+++ b/addons/account_voucher/test/case1_usd_usd.yml
@@ -159,7 +159,6 @@
I fill amounts 180 for the invoice of 200$ and 70 for the invoice of 100$>
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_1_case1'))
data = []
@@ -254,7 +253,6 @@
I fill amounts 20 for the invoice of 200$ and 30 for the invoice of 100$
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_2_case1'))
data = []
diff --git a/addons/account_voucher/test/case2_suppl_usd_eur.yml b/addons/account_voucher/test/case2_suppl_usd_eur.yml
index 91fb99f6360..c13bfcbd5d4 100644
--- a/addons/account_voucher/test/case2_suppl_usd_eur.yml
+++ b/addons/account_voucher/test/case2_suppl_usd_eur.yml
@@ -131,7 +131,6 @@
I fill amounts 180 for the invoice of 200$ and 70 for the invoice of 100$
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_1_case2_suppl'))
data = []
@@ -234,7 +233,6 @@
I fill amounts 20 for the invoice of 200$ and 30 for the invoice of 100$>
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_2_case2_suppl'))
data = []
diff --git a/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml b/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
index b049fc7692e..52c416e06cc 100644
--- a/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
+++ b/addons/account_voucher/test/case2_usd_eur_debtor_in_usd.yml
@@ -163,7 +163,6 @@
I fill amounts 130 for the invoice of 200$ and 70 for the invoice of 100$>
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_1_case2b'))
data = []
@@ -244,7 +243,6 @@
and I fully reconcil the 2 previous invoices
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_2_case2b'))
data = []
diff --git a/addons/account_voucher/test/case3_eur_eur.yml b/addons/account_voucher/test/case3_eur_eur.yml
index d0b18a5231b..99153ceeca4 100644
--- a/addons/account_voucher/test/case3_eur_eur.yml
+++ b/addons/account_voucher/test/case3_eur_eur.yml
@@ -118,7 +118,6 @@
I fill amounts 100 for the invoice of 150€ and 20 for the invoice of 80€
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_1_case3'))
data = []
@@ -206,7 +205,6 @@
I fill amounts 50 for the invoice of 150€ and 70 for the invoice of 80€
-
!python {model: account.voucher}: |
- import netsvc, time
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_2_case3'))
data = []
diff --git a/addons/hr_holidays/test/test_hr_holiday.yml b/addons/hr_holidays/test/test_hr_holiday.yml
index e78c2fd08bc..2bb60300cff 100644
--- a/addons/hr_holidays/test/test_hr_holiday.yml
+++ b/addons/hr_holidays/test/test_hr_holiday.yml
@@ -18,7 +18,6 @@
I again set to draft and then confirm.
-
!python {model: hr.holidays}: |
- import netsvc
self.set_to_draft(cr, uid, [ref('hr_holidays_employee1_cl')])
self.signal_confirm(cr, uid, [ref('hr_holidays_employee1_cl')])
-
diff --git a/addons/hr_payroll_account/test/hr_payroll_account.yml b/addons/hr_payroll_account/test/hr_payroll_account.yml
index ad0197c7905..c8b6bf42fdd 100644
--- a/addons/hr_payroll_account/test/hr_payroll_account.yml
+++ b/addons/hr_payroll_account/test/hr_payroll_account.yml
@@ -89,7 +89,7 @@
I verify the payslip is in draft state.
-
!python {model: hr.payslip}: |
- from tools.translate import _
+ from openerp.tools.translate import _
payslip_brw=self.browse(cr, uid, ref("hr_payslip_0"))
assert(payslip_brw.state == 'draft'), _('State not changed!')
-
@@ -120,7 +120,7 @@
I verify that the payslip is in done state.
-
!python {model: hr.payslip}: |
- from tools.translate import _
+ from openerp.tools.translate import _
payslip_brw=self.browse(cr, uid, ref("hr_payslip_0"))
assert(payslip_brw.state == 'done'), _('State not changed!')
diff --git a/addons/membership/test/test_membership.yml b/addons/membership/test/test_membership.yml
index 8e8e7887b44..6fb392670e9 100644
--- a/addons/membership/test/test_membership.yml
+++ b/addons/membership/test/test_membership.yml
@@ -31,7 +31,6 @@
I'm Opening that Invoice which is created for "Seagate".
-
!python {model: res.partner}: |
- import netsvc
from tools.translate import _
invoice_pool = self.pool.get('account.invoice')
partner_pool = self.pool.get('res.partner')
diff --git a/addons/purchase_requisition/test/purchase_requisition.yml b/addons/purchase_requisition/test/purchase_requisition.yml
index f23737d21b8..8fd36e07d71 100644
--- a/addons/purchase_requisition/test/purchase_requisition.yml
+++ b/addons/purchase_requisition/test/purchase_requisition.yml
@@ -82,7 +82,8 @@
I print a Requisition report
-
!python {model: purchase.requisition}: |
- import netsvc, tools, os
+ import os
+ from openerp import netsvc, tools
(data, format) = netsvc.LocalService('report.purchase.requisition').create(cr, uid, [ref('purchase_requisition.requisition1')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'purchase_requisition-purchase_requisition_report.'+format), 'wb+').write(data)
diff --git a/addons/sale_mrp/test/sale_mrp.yml b/addons/sale_mrp/test/sale_mrp.yml
index c2eff008943..9b70e052854 100644
--- a/addons/sale_mrp/test/sale_mrp.yml
+++ b/addons/sale_mrp/test/sale_mrp.yml
@@ -92,7 +92,7 @@
I verify that a procurement has been generated for sale order
-
!python {model: procurement.order}: |
- from tools.translate import _
+ from openerp.tools.translate import _
sale_order_obj = self.pool.get('sale.order')
so = sale_order_obj.browse(cr, uid, ref("sale_order_so0"))
proc_ids = self.search(cr, uid, [('origin','=',so.name)])
diff --git a/addons/sale_stock/test/picking_order_policy.yml b/addons/sale_stock/test/picking_order_policy.yml
index 406aaf0bf8a..f761dfb65db 100644
--- a/addons/sale_stock/test/picking_order_policy.yml
+++ b/addons/sale_stock/test/picking_order_policy.yml
@@ -22,7 +22,7 @@
!python {model: sale.order}: |
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
- from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+ from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
order = self.browse(cr, uid, ref("sale.sale_order_6"))
for order_line in order.order_line:
procurement = order_line.procurement_id
@@ -44,7 +44,7 @@
!python {model: sale.order}: |
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
- from tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
+ from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
sale_order = self.browse(cr, uid, ref("sale.sale_order_6"))
assert sale_order.picking_ids, "Delivery order is not created."
for picking in sale_order.picking_ids:
@@ -161,7 +161,8 @@
I print a sale order report.
-
!python {model: sale.order}: |
- import netsvc, tools, os
+ import os
+ from openerp import netsvc, tools
(data, format) = netsvc.LocalService('report.sale.order').create(cr, uid, [ref('sale.sale_order_6')], {}, {})
if tools.config['test_report_directory']:
file(os.path.join(tools.config['test_report_directory'], 'sale-sale_order.'+format), 'wb+').write(data)
From 9e05f4d291845c642da3ba018c0b16e42ac744e8 Mon Sep 17 00:00:00 2001
From: Raphael Collet
Date: Wed, 13 Feb 2013 11:32:39 +0100
Subject: [PATCH 58/60] [FIX] membership: fix import statements in yml file
bzr revid: rco@openerp.com-20130213103239-5tq1ib4xcbykgjzk
---
addons/membership/test/test_membership.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/addons/membership/test/test_membership.yml b/addons/membership/test/test_membership.yml
index 6fb392670e9..40d1785c29a 100644
--- a/addons/membership/test/test_membership.yml
+++ b/addons/membership/test/test_membership.yml
@@ -31,7 +31,7 @@
I'm Opening that Invoice which is created for "Seagate".
-
!python {model: res.partner}: |
- from tools.translate import _
+ from openerp.tools.translate import _
invoice_pool = self.pool.get('account.invoice')
partner_pool = self.pool.get('res.partner')
membership_line_pool = self.pool.get('membership.membership_line')
@@ -105,7 +105,7 @@
I'm doing to make credit note of invoice which is paid by "Seagate" to cancel membership.
-
!python {model: account.invoice}: |
- from tools.translate import _
+ from openerp.tools.translate import _
invoice_pool = self.pool.get('account.invoice')
partner_pool = self.pool.get('res.partner')
membership_line_pool = self.pool.get('membership.membership_line')
From 729107b73ce6c1a8c98598b6ac7e068061b2d69e Mon Sep 17 00:00:00 2001
From: Raphael Collet
Date: Wed, 13 Feb 2013 12:05:06 +0100
Subject: [PATCH 59/60] [IMP] openerp.osv.orm: add optional context in method
that handles workflow signal
bzr revid: rco@openerp.com-20130213110506-kzhgtczvauy6nkhc
---
openerp/osv/orm.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py
index 2168c443696..a3c588b2cfc 100644
--- a/openerp/osv/orm.py
+++ b/openerp/osv/orm.py
@@ -5276,7 +5276,7 @@ class BaseModel(object):
if name.startswith('signal_'):
signal_name = name[len('signal_'):]
assert signal_name
- def handle_workflow_signal(cr, uid, ids):
+ def handle_workflow_signal(cr, uid, ids, context=None):
workflow_service = netsvc.LocalService("workflow")
res = {}
for id in ids:
From cf99d6af905649ff300886228de7b814f438e9fc Mon Sep 17 00:00:00 2001
From: Vo Minh Thu
Date: Wed, 13 Feb 2013 14:47:07 +0100
Subject: [PATCH 60/60] [DOC] Updated changelog.
bzr revid: vmt@openerp.com-20130213134707-moo136efomhfm8dy
---
doc/changelog.rst | 2 ++
doc/routing.rst | 2 ++
2 files changed, 4 insertions(+)
diff --git a/doc/changelog.rst b/doc/changelog.rst
index 464237543d5..d340b281225 100644
--- a/doc/changelog.rst
+++ b/doc/changelog.rst
@@ -6,6 +6,8 @@ Changelog
`trunk`
-------
+- Added :ref:`orm-workflows` to the ORM.
+- Added :ref:`routing-decorators` to the RPC and WSGI stack.
- Removed support for `__terp__.py` descriptor files.
- Removed support for `` root element in XML files.
- Removed support for the non-openerp namespace (e.g. importing `tools` instead
diff --git a/doc/routing.rst b/doc/routing.rst
index 6a4af3374a9..76ef859c48b 100644
--- a/doc/routing.rst
+++ b/doc/routing.rst
@@ -19,6 +19,8 @@ Starting with OpenERP 7.1, exposing a new arbitrary WSGI handler is done with
the :py:func:`openerp.http.handler` decorator while adding an RPC endpoint is
done with the :py:func:`openerp.http.rpc` decorator.
+.. _routing-decorators:
+
Routing decorators
------------------