Rifakat (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/6.0-opw-17871-rha into lp:openobject-addons/6.0.
Requested reviews: Raphael Collet (OpenERP) (rco-openerp) Related bugs: Bug #862449 in OpenERP Addons: "[6.0] Picking validation has rounding errors with digital precisions" https://bugs.launchpad.net/openobject-addons/+bug/862449 For more details, see: https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-17871-rha/+merge/77687 Hello Raphael, Fixed rounding problem in error messages in picking as well as point of sale due to used %d formatter instead of %s Kindly review this. Regards. -- https://code.launchpad.net/~openerp-dev/openobject-addons/6.0-opw-17871-rha/+merge/77687 Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/6.0-opw-17871-rha.
=== modified file 'point_of_sale/i18n/ar.po' --- point_of_sale/i18n/ar.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/ar.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/bg.po' --- point_of_sale/i18n/bg.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/bg.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/bs.po' --- point_of_sale/i18n/bs.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/bs.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/ca.po' --- point_of_sale/i18n/ca.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/ca.po 2011-09-30 11:05:30 +0000 @@ -2305,10 +2305,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "El valor mà xim que podeu rebaixar s'ha excedit.\n" -"El valor restant és igual a %d " +"El valor restant és igual a %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/cs.po' --- point_of_sale/i18n/cs.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/cs.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/da.po' --- point_of_sale/i18n/da.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/da.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/de.po' --- point_of_sale/i18n/de.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/de.po 2011-09-30 11:05:30 +0000 @@ -2309,10 +2309,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "Der Maximalbetrag für eine Einzahlung wurde überschritten.\n" -"Der Restbetrag ist gleich %d " +"Der Restbetrag ist gleich %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/el.po' --- point_of_sale/i18n/el.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/el.po 2011-09-30 11:05:30 +0000 @@ -2279,7 +2279,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/es.po' --- point_of_sale/i18n/es.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/es.po 2011-09-30 11:05:30 +0000 @@ -2305,10 +2305,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "El valor máximo que puede rebajar se ha excedido.\n" -" El valor restante es igual a %d " +" El valor restante es igual a %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/es_AR.po' --- point_of_sale/i18n/es_AR.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/es_AR.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/es_EC.po' --- point_of_sale/i18n/es_EC.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/es_EC.po 2011-09-30 11:05:30 +0000 @@ -2304,10 +2304,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/et.po' --- point_of_sale/i18n/et.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/et.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/fi.po' --- point_of_sale/i18n/fi.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/fi.po 2011-09-30 11:05:30 +0000 @@ -2284,10 +2284,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "Maksimimäärä jonka voit nostaa on ylitetty \n" -" Jäljelläoleva arvo on %d " +" Jäljelläoleva arvo on %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/fr.po' --- point_of_sale/i18n/fr.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/fr.po 2011-09-30 11:05:30 +0000 @@ -2310,10 +2310,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "La valeur maximale que vous pouvez encore retirer est dépassée. \n" -" La valeur restante est égale à %d " +" La valeur restante est égale à %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/hi.po' --- point_of_sale/i18n/hi.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/hi.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/hr.po' --- point_of_sale/i18n/hr.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/hr.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/hu.po' --- point_of_sale/i18n/hu.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/hu.po 2011-09-30 11:05:30 +0000 @@ -2279,7 +2279,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/id.po' --- point_of_sale/i18n/id.po 2011-09-10 05:17:29 +0000 +++ point_of_sale/i18n/id.po 2011-09-30 11:05:30 +0000 @@ -2296,7 +2296,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/it.po' --- point_of_sale/i18n/it.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/it.po 2011-09-30 11:05:30 +0000 @@ -2289,7 +2289,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/ko.po' --- point_of_sale/i18n/ko.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/ko.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/lt.po' --- point_of_sale/i18n/lt.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/lt.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/mn.po' --- point_of_sale/i18n/mn.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/mn.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/nl.po' --- point_of_sale/i18n/nl.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/nl.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/nl_BE.po' --- point_of_sale/i18n/nl_BE.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/nl_BE.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/pl.po' --- point_of_sale/i18n/pl.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/pl.po 2011-09-30 11:05:30 +0000 @@ -2281,7 +2281,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/point_of_sale.pot' --- point_of_sale/i18n/point_of_sale.pot 2011-05-09 13:13:19 +0000 +++ point_of_sale/i18n/point_of_sale.pot 2011-09-30 11:05:30 +0000 @@ -2262,7 +2262,7 @@ #: code:addons/point_of_sale/wizard/pos_box_out.py:95 #, python-format msgid "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/pt.po' --- point_of_sale/i18n/pt.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/pt.po 2011-09-30 11:05:30 +0000 @@ -2302,10 +2302,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "O valor máximo que ainda pode levantar foi excedido. \n" -" Montante remanescente é igual a %d " +" Montante remanescente é igual a %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/pt_BR.po' --- point_of_sale/i18n/pt_BR.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/pt_BR.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/ro.po' --- point_of_sale/i18n/ro.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/ro.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/ru.po' --- point_of_sale/i18n/ru.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/ru.po 2011-09-30 11:05:30 +0000 @@ -2281,7 +2281,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/sl.po' --- point_of_sale/i18n/sl.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/sl.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/sq.po' --- point_of_sale/i18n/sq.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/sq.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/sr.po' --- point_of_sale/i18n/sr.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/sr.po 2011-09-30 11:05:30 +0000 @@ -2278,10 +2278,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "Maksimalna vrednost koju i dalje mozete povuci je prekoracena.\n" -" Preostala vrednost jednaka je %d " +" Preostala vrednost jednaka je %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/[email protected]' --- point_of_sale/i18n/[email protected] 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/[email protected] 2011-09-30 11:05:30 +0000 @@ -2278,10 +2278,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "Maksimalna vrednost koju i dalje mozete povuci je prekoracena.\n" -" Preostala vrednost jednaka je %d " +" Preostala vrednost jednaka je %s " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/sv.po' --- point_of_sale/i18n/sv.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/sv.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/tlh.po' --- point_of_sale/i18n/tlh.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/tlh.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/tr.po' --- point_of_sale/i18n/tr.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/tr.po 2011-09-30 11:05:30 +0000 @@ -2282,7 +2282,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/uk.po' --- point_of_sale/i18n/uk.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/uk.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/vi.po' --- point_of_sale/i18n/vi.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/vi.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/zh_CN.po' --- point_of_sale/i18n/zh_CN.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/zh_CN.po 2011-09-30 11:05:30 +0000 @@ -2293,10 +2293,10 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" "è¶ åºä½ è½æåçæå¤§éé¢ã\n" -"å½åä½é¢æ¯%dã " +"å½åä½é¢æ¯%sã " #. module: point_of_sale #: field:pos.order,remboursed:0 === modified file 'point_of_sale/i18n/zh_HK.po' --- point_of_sale/i18n/zh_HK.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/zh_HK.po 2011-09-30 11:05:30 +0000 @@ -2278,7 +2278,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/i18n/zh_TW.po' --- point_of_sale/i18n/zh_TW.po 2011-08-30 06:05:04 +0000 +++ point_of_sale/i18n/zh_TW.po 2011-09-30 11:05:30 +0000 @@ -2277,7 +2277,7 @@ #, python-format msgid "" "The maximum value you can still withdraw is exceeded. \n" -" Remaining value is equal to %d " +" Remaining value is equal to %s " msgstr "" #. module: point_of_sale === modified file 'point_of_sale/wizard/pos_box_out.py' --- point_of_sale/wizard/pos_box_out.py 2011-01-14 00:11:01 +0000 +++ point_of_sale/wizard/pos_box_out.py 2011-09-30 11:05:30 +0000 @@ -92,7 +92,7 @@ am += s.amount if (-data['amount'] or 0.0) + am < -(res_obj.browse(cr, uid, uid, context=context).company_id.max_diff or 0.0) and amount_check: val = (res_obj.browse(cr, uid, uid).company_id.max_diff or 0.0) + am - raise osv.except_osv(_('Error !'), _('The maximum value you can still withdraw is exceeded. \n Remaining value is equal to %d ')%(val)) + raise osv.except_osv(_('Error !'), _('The maximum value you can still withdraw is exceeded. \n Remaining value is equal to %s ')%(val)) acc_id = product_obj.browse(cr, uid, data['product_id'], context=context).property_account_income if not acc_id: === modified file 'stock/wizard/stock_move.py' --- stock/wizard/stock_move.py 2011-07-20 05:43:46 +0000 +++ stock/wizard/stock_move.py 2011-09-30 11:05:30 +0000 @@ -257,7 +257,7 @@ quantity = line.quantity total_move_qty += quantity if total_move_qty > move_qty: - raise osv.except_osv(_('Processing Error'), _('Processing quantity %d for %s is larger than the available quantity %d!')\ + raise osv.except_osv(_('Processing Error'), _('Processing quantity %s for %s is larger than the available quantity %s!')\ %(total_move_qty, move.product_id.name, move_qty)) if quantity <= 0 or move_qty == 0: continue === modified file 'stock/wizard/stock_partial_picking.py' --- stock/wizard/stock_partial_picking.py 2011-09-01 16:55:42 +0000 +++ stock/wizard/stock_partial_picking.py 2011-09-30 11:05:30 +0000 @@ -167,14 +167,14 @@ #Adding a check whether any move line contains exceeding qty to original moveline if calc_qty > move.move_id.product_qty: raise osv.except_osv(_('Processing Error'), - _('Processing quantity %d %s for %s is larger than the available quantity %d %s !')\ + _('Processing quantity %s %s for %s is larger than the available quantity %s %s !')\ %(move.quantity, move.product_uom.name, move.product_id.name,\ move.move_id.product_qty, move.move_id.product_uom.name)) #Adding a check whether any move line contains qty less than zero if calc_qty < 0: raise osv.except_osv(_('Processing Error'), \ - _('Can not process quantity %d for Product %s !') \ + _('Can not process quantity %s for Product %s !') \ %(move.quantity, move.product_id.name)) partial_datas['move%s' % (move.move_id.id)] = {
_______________________________________________ Mailing list: https://launchpad.net/~openerp-dev-gtk Post to : [email protected] Unsubscribe : https://launchpad.net/~openerp-dev-gtk More help : https://help.launchpad.net/ListHelp

