[MERGE] merged latest fixes from 6.0 up to r.4556
Rev 4556 = revision-id: jvo@tinyerp.com-20110502133745-s1zyed65h6ojwkvk. bzr revid: odo@openerp.com-20110502184643-d3qzosqdurscd51i
This commit is contained in:
commit
560915cb68
|
@ -1258,7 +1258,7 @@ class account_invoice_line(osv.osv):
|
|||
t = t - (p * l[2].get('quantity'))
|
||||
taxes = l[2].get('invoice_line_tax_id')
|
||||
if len(taxes[0]) >= 3 and taxes[0][2]:
|
||||
taxes = tax_obj.browse(cr, uid, taxes[0][2])
|
||||
taxes = tax_obj.browse(cr, uid, list(taxes[0][2]))
|
||||
for tax in tax_obj.compute_all(cr, uid, taxes, p,l[2].get('quantity'), context.get('address_invoice_id', False), l[2].get('product_id', False), context.get('partner_id', False))['taxes']:
|
||||
t = t - tax['amount']
|
||||
return t
|
||||
|
|
|
@ -89,7 +89,7 @@ class account_invoice_report(osv.osv):
|
|||
ai.payment_term as payment_term,
|
||||
ai.period_id as period_id,
|
||||
(case when u.uom_type not in ('reference') then
|
||||
(select name from product_uom where uom_type='reference' and category_id=u.category_id)
|
||||
(select name from product_uom where uom_type='reference' and active and category_id=u.category_id LIMIT 1)
|
||||
else
|
||||
u.name
|
||||
end) as uom_name,
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- encoding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
|
|
|
@ -190,7 +190,7 @@ class crossovered_budget_lines(osv.osv):
|
|||
_description = "Budget Line"
|
||||
_columns = {
|
||||
'crossovered_budget_id': fields.many2one('crossovered.budget', 'Budget', ondelete='cascade', select=True, required=True),
|
||||
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account',required=False),
|
||||
'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account',required=True),
|
||||
'general_budget_id': fields.many2one('account.budget.post', 'Budgetary Position',required=True),
|
||||
'date_from': fields.date('Start Date', required=True),
|
||||
'date_to': fields.date('End Date', required=True),
|
||||
|
|
|
@ -162,6 +162,7 @@
|
|||
<field name="date" select="1" invisible="context.get('line_type', False)" on_change="onchange_date(partner_id, journal_id, amount, currency_id, type, date)"/>
|
||||
<field name="reference" select="1" invisible="context.get('line_type', False)" string="Payment Ref"/>
|
||||
<field name="name" colspan="2" invisible="context.get('line_type', False)"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="account_id"
|
||||
widget="selection"
|
||||
invisible="True"/>
|
||||
|
@ -221,7 +222,6 @@
|
|||
</page>
|
||||
<page string="Journal Items" groups="base.group_extended" attrs="{'invisible': [('state','!=','posted')]}">
|
||||
<group col="6" colspan="4">
|
||||
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="period_id"/>
|
||||
<field name="audit"/>
|
||||
</group>
|
||||
|
@ -303,6 +303,7 @@
|
|||
<field name="date" select="1" invisible="context.get('line_type', False)" on_change="onchange_date(partner_id, journal_id, amount, currency_id, type, date)"/>
|
||||
<field name="reference" select="1" invisible="context.get('line_type', False)" string="Payment Ref"/>
|
||||
<field name="name" colspan="2" invisible="context.get('line_type', False)"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="account_id"
|
||||
widget="selection"
|
||||
invisible="True"/>
|
||||
|
@ -362,7 +363,6 @@
|
|||
</page>
|
||||
<page string="Journal Items" groups="base.group_extended" attrs="{'invisible': [('state','!=','posted')]}">
|
||||
<group col="6" colspan="4">
|
||||
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="period_id"/>
|
||||
<field name="audit"/>
|
||||
</group>
|
||||
|
|
|
@ -100,7 +100,8 @@
|
|||
<field name="date" on_change="onchange_date(partner_id, journal_id, amount, currency_id, type, date)"/>
|
||||
<field name="journal_id" domain="[('type','in',['sale','sale_refund'])]" widget="selection" on_change="onchange_journal(journal_id, line_cr_ids, tax_id, partner_id)"/>
|
||||
<field name="number"/>
|
||||
<field name="name" colspan="4"/>
|
||||
<field name="name" colspan="2"/>
|
||||
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="type" invisible="True"/>
|
||||
<field name="currency_id"/>
|
||||
</group>
|
||||
|
@ -140,7 +141,6 @@
|
|||
</page>
|
||||
<page string="Journal Items" groups="base.group_extended" attrs="{'invisible': [('state','!=','posted')]}">
|
||||
<group col="6" colspan="4">
|
||||
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="period_id"/>
|
||||
<field name="audit"/>
|
||||
</group>
|
||||
|
@ -228,6 +228,7 @@
|
|||
<field name="number"/>
|
||||
<field name="name" colspan="2"/>
|
||||
<field name="reference" select="1"/>
|
||||
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="account_id" domain="[('type','=','other')]" invisible="True"/>
|
||||
<field name="type" invisible="True"/>
|
||||
<field name="currency_id"/>
|
||||
|
@ -260,7 +261,6 @@
|
|||
</page>
|
||||
<page string="Journal Items" groups="base.group_extended" attrs="{'invisible': [('state','!=','posted')]}">
|
||||
<group col="6" colspan="4">
|
||||
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="period_id"/>
|
||||
<field name="audit"/>
|
||||
</group>
|
||||
|
|
|
@ -295,9 +295,8 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
|
|||
|
||||
eview = etree.fromstring(res['arch'])
|
||||
placeholder = eview.xpath("group[@name='placeholder1']")
|
||||
placeholder = len(placeholder) and placeholder[0] or None
|
||||
|
||||
if placeholder:
|
||||
if len(placeholder):
|
||||
placeholder = placeholder[0]
|
||||
if step == 'new_window' and state == 'clear':
|
||||
# clicked in the menu and the fields are not anonymized: warn the admin that backuping the db is very important
|
||||
placeholder.addnext(etree.Element('field', {'name': 'msg', 'colspan': '4', 'nolabel': '1'}))
|
||||
|
|
|
@ -406,6 +406,9 @@ class audittrail_objects_proxy(object_proxy):
|
|||
cr.close()
|
||||
return res
|
||||
else:
|
||||
res_ids = []
|
||||
res = True
|
||||
if args:
|
||||
res_ids = args[0]
|
||||
old_values = {}
|
||||
fields = []
|
||||
|
|
|
@ -41,6 +41,7 @@ from string import ascii_letters, digits
|
|||
from osv import fields,osv
|
||||
import pooler
|
||||
from tools.translate import _
|
||||
from service import security
|
||||
|
||||
magic_md5 = '$1$'
|
||||
|
||||
|
@ -184,7 +185,7 @@ class users(osv.osv):
|
|||
cr.close()
|
||||
|
||||
def _login(self, cr, db, login, password):
|
||||
cr.execute( 'SELECT password, id FROM res_users WHERE login=%s',
|
||||
cr.execute( 'SELECT password, id FROM res_users WHERE login=%s AND active',
|
||||
(login.encode('utf-8'),))
|
||||
|
||||
if cr.rowcount:
|
||||
|
@ -220,6 +221,10 @@ class users(osv.osv):
|
|||
return False
|
||||
|
||||
def check(self, db, uid, passwd):
|
||||
if not passwd:
|
||||
# empty passwords disallowed for obvious security reasons
|
||||
raise security.ExceptionNoTb('AccessDenied')
|
||||
|
||||
# Get a chance to hash all passwords in db before using the uid_cache.
|
||||
obj = pooler.get_pool(db).get('res.users')
|
||||
if not hasattr(obj, "_salt_cache"):
|
||||
|
@ -245,7 +250,7 @@ class users(osv.osv):
|
|||
raise security.ExceptionNoTb('AccessDenied')
|
||||
else:
|
||||
salt = self._salt_cache[db][uid]
|
||||
cr.execute('SELECT COUNT(*) FROM res_users WHERE id=%s AND password=%s',
|
||||
cr.execute('SELECT COUNT(*) FROM res_users WHERE id=%s AND password=%s AND active',
|
||||
(int(uid), encrypt_md5(passwd, salt)))
|
||||
res = cr.fetchone()[0]
|
||||
finally:
|
||||
|
|
|
@ -6,21 +6,62 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-01-28 00:58+0000\n"
|
||||
"PO-Revision-Date: 2010-01-26 11:45+0000\n"
|
||||
"Last-Translator: Boris <boris.t.ivanov@gmail.com>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-04-03 13:20+0000\n"
|
||||
"Last-Translator: Vasil Bojilov Bovilov <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-24 04:03+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Launchpad-Export-Date: 2011-04-04 05:53+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: view:ir.module.module:0
|
||||
msgid "You can save this image as .png file"
|
||||
msgstr "Можете да запишете това изображение като .png файл"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Technical Guide in rst format"
|
||||
msgstr "Техническо ръководство във формат rst"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:create.relation.graph,init,end:0
|
||||
msgid "Ok"
|
||||
msgstr "Ok"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
msgid "(Relationship Graphs generated)"
|
||||
msgstr "(Генерирана е графика с релациите)"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Изберете фйл в който Техническото ръководство ще бъде написано."
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,description:base_module_doc_rst.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" * This module generates the Technical Guides of selected modules in "
|
||||
"Restructured Text format (RST)\n"
|
||||
" * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST\n"
|
||||
" * It creates a tarball (.tgz file suffix) containing an index file and "
|
||||
"one file per module\n"
|
||||
" * Generates Relationship Graph\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" * В този модул се генерират технически ръководства на избрани модули в "
|
||||
"преструктуриран текстов формат(RST)\n"
|
||||
"* При него се използва сфинкс (http://sphinx.pocoo.org) прилагане на RST\n"
|
||||
"* Това създава tarball (. наставка tgz файл), съдържащ индекс файл и файл на "
|
||||
"модул\n"
|
||||
"* Генерира Връзка Graph\n"
|
||||
" "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
|
@ -32,9 +73,21 @@ msgid "Create RST Technical Guide"
|
|||
msgstr "Създай ръководство във формат rst"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Изберете фйл в който Техническото ръководство ще бъде написано."
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_gen_graph
|
||||
msgid "Generate Relationship Graph"
|
||||
msgstr "Генериране на графика за релациите"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,file_graph:0
|
||||
msgid "Relationship Graph"
|
||||
msgstr "Диаграма на връзките"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.model,name:base_module_doc_rst.model_ir_module_module
|
||||
msgid "Module"
|
||||
msgstr "Модул"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,rst_file:0
|
||||
|
@ -51,6 +104,11 @@ msgstr "Затвори"
|
|||
msgid "Module Technical Guide in Restructured Text "
|
||||
msgstr "Модул Техническо ръководство като преструктуриран текст "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.report.xml,name:base_module_doc_rst.report_proximity_graph
|
||||
msgid "Proximity graph"
|
||||
msgstr "Графика на сближаване"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Create Technical Guide in rst format"
|
||||
|
|
|
@ -6,22 +6,63 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-01-28 00:58+0000\n"
|
||||
"PO-Revision-Date: 2010-01-26 11:45+0000\n"
|
||||
"Last-Translator: Jordi Esteve - http://www.zikzakmedia.com "
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-03-26 18:22+0000\n"
|
||||
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
|
||||
"<jesteve@zikzakmedia.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-24 04:03+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-27 06:28+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: view:ir.module.module:0
|
||||
msgid "You can save this image as .png file"
|
||||
msgstr "Podeu desar aquesta imatge com un fitxer. png"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Technical Guide in rst format"
|
||||
msgstr "Guia tècnica en format RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:create.relation.graph,init,end:0
|
||||
msgid "Ok"
|
||||
msgstr "D'acord"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
msgid "(Relationship Graphs generated)"
|
||||
msgstr "(Gràfics de relacions generats)"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Seleccioneu un fitxer on la guia tècnica serà escrita."
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,description:base_module_doc_rst.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" * This module generates the Technical Guides of selected modules in "
|
||||
"Restructured Text format (RST)\n"
|
||||
" * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST\n"
|
||||
" * It creates a tarball (.tgz file suffix) containing an index file and "
|
||||
"one file per module\n"
|
||||
" * Generates Relationship Graph\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" * Aquest mòdul genera les guies tècniques dels mòduls seleccionats en "
|
||||
"RST (Restructured Text format).\n"
|
||||
" * Utilitza la implementació Sphinx d'RST (http://sphinx.pocoo.org).\n"
|
||||
" * Crea un arxiu comprimit (amb extensió .tgz) que conté un fitxer índex "
|
||||
"i un fitxer per mòdul.\n"
|
||||
" * Genera un gràfic de relacions.\n"
|
||||
" "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
|
@ -33,9 +74,21 @@ msgid "Create RST Technical Guide"
|
|||
msgstr "Crea guia tècnica RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Seleccioneu un fitxer on la guia tècnica serà escrita."
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_gen_graph
|
||||
msgid "Generate Relationship Graph"
|
||||
msgstr "Genera gràfic de relacions"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,file_graph:0
|
||||
msgid "Relationship Graph"
|
||||
msgstr "Gràfic de relacions"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.model,name:base_module_doc_rst.model_ir_module_module
|
||||
msgid "Module"
|
||||
msgstr "Mòdul"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,rst_file:0
|
||||
|
@ -52,6 +105,11 @@ msgstr "Tanca"
|
|||
msgid "Module Technical Guide in Restructured Text "
|
||||
msgstr "Guia tècnica d'un mòdul en text reestructurat (RST) "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.report.xml,name:base_module_doc_rst.report_proximity_graph
|
||||
msgid "Proximity graph"
|
||||
msgstr "Gràfic de proximitat"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Create Technical Guide in rst format"
|
||||
|
|
|
@ -6,22 +6,63 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-01-28 00:58+0000\n"
|
||||
"PO-Revision-Date: 2010-01-26 11:45+0000\n"
|
||||
"Last-Translator: Jordi Esteve - http://www.zikzakmedia.com "
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-03-26 18:22+0000\n"
|
||||
"Last-Translator: Jordi Esteve (www.zikzakmedia.com) "
|
||||
"<jesteve@zikzakmedia.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-24 04:03+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-27 06:28+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: view:ir.module.module:0
|
||||
msgid "You can save this image as .png file"
|
||||
msgstr "Puede guardar esta imagen como un archivo .png"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Technical Guide in rst format"
|
||||
msgstr "Guía técnica en formato RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:create.relation.graph,init,end:0
|
||||
msgid "Ok"
|
||||
msgstr "Aceptar"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
msgid "(Relationship Graphs generated)"
|
||||
msgstr "(Gráficos de relaciones generados)"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Por favor, seleccione un archivo donde la guía técnica será escrita."
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,description:base_module_doc_rst.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" * This module generates the Technical Guides of selected modules in "
|
||||
"Restructured Text format (RST)\n"
|
||||
" * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST\n"
|
||||
" * It creates a tarball (.tgz file suffix) containing an index file and "
|
||||
"one file per module\n"
|
||||
" * Generates Relationship Graph\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" * Este módulo genera las guías técnicas de los módulos seleccionados en "
|
||||
"RST (Restructured Text format).\n"
|
||||
" * Utiliza la implementación Sphinx de RST (http://sphinx.pocoo.org).\n"
|
||||
" * Crea un archivo comprimido (con extensión .tgz) que contiene un "
|
||||
"archivo índice y un archivo por módulo.\n"
|
||||
" * Genera un gráfico de relaciones.\n"
|
||||
" "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
|
@ -33,9 +74,21 @@ msgid "Create RST Technical Guide"
|
|||
msgstr "Crear guía técnica RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Por favor, seleccione un archivo donde la guía técnica será escrita."
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_gen_graph
|
||||
msgid "Generate Relationship Graph"
|
||||
msgstr "Genera gráfico de relaciones"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,file_graph:0
|
||||
msgid "Relationship Graph"
|
||||
msgstr "Gráfico de relaciones"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.model,name:base_module_doc_rst.model_ir_module_module
|
||||
msgid "Module"
|
||||
msgstr "Módulo"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,rst_file:0
|
||||
|
@ -52,6 +105,11 @@ msgstr "Cerrar"
|
|||
msgid "Module Technical Guide in Restructured Text "
|
||||
msgstr "Guía técnica de un módulo en texto reestructurado (RST) "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.report.xml,name:base_module_doc_rst.report_proximity_graph
|
||||
msgid "Proximity graph"
|
||||
msgstr "Gráfico de proximidad"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Create Technical Guide in rst format"
|
||||
|
|
|
@ -0,0 +1,116 @@
|
|||
# Spanish (Paraguay) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-03-08 17:38+0000\n"
|
||||
"Last-Translator: fadel <Unknown>\n"
|
||||
"Language-Team: Spanish (Paraguay) <es_PY@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-09 06:12+0000\n"
|
||||
"X-Generator: Launchpad (build 12351)\n"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: view:ir.module.module:0
|
||||
msgid "You can save this image as .png file"
|
||||
msgstr "Puede guardar esta image como un archivo .png"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Technical Guide in rst format"
|
||||
msgstr "Guía técnica en formato RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:create.relation.graph,init,end:0
|
||||
msgid "Ok"
|
||||
msgstr "Aceptar"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
msgid "(Relationship Graphs generated)"
|
||||
msgstr "(Generado gráfico de relaciones)"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Por favor, seleccione un archivo donde la guía técnica será escrita."
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,description:base_module_doc_rst.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" * This module generates the Technical Guides of selected modules in "
|
||||
"Restructured Text format (RST)\n"
|
||||
" * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST\n"
|
||||
" * It creates a tarball (.tgz file suffix) containing an index file and "
|
||||
"one file per module\n"
|
||||
" * Generates Relationship Graph\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" Este módulo genera las guías técnicas de los módulos seleccionados en "
|
||||
"RST\n"
|
||||
"Utiliza la implementación Sphinx de RST (http://sphinx.pocoo.org) \n"
|
||||
"Crea un archivo comprimido (con extensión .tgz) que contiene un archivo "
|
||||
"índice y un archivo por módulo\n"
|
||||
"Genera un gráfico de relaciones\n"
|
||||
" "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
msgstr "Nombre de Archivo"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_tech_guide_rst
|
||||
msgid "Create RST Technical Guide"
|
||||
msgstr "Crear guía técnica RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_gen_graph
|
||||
msgid "Generate Relationship Graph"
|
||||
msgstr "Genera gráfico de relaciones"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,file_graph:0
|
||||
msgid "Relationship Graph"
|
||||
msgstr "Gráfico de Relaciones"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.model,name:base_module_doc_rst.model_ir_module_module
|
||||
msgid "Module"
|
||||
msgstr "Módulo"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,rst_file:0
|
||||
msgid "file"
|
||||
msgstr "Archivo"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:tech.guide.rst,init,end:0
|
||||
msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,shortdesc:base_module_doc_rst.module_meta_information
|
||||
msgid "Module Technical Guide in Restructured Text "
|
||||
msgstr "Guía técnica de un módulo en texto reestructurado (RST) "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.report.xml,name:base_module_doc_rst.report_proximity_graph
|
||||
msgid "Proximity graph"
|
||||
msgstr "Gráfico de proximidad"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Create Technical Guide in rst format"
|
||||
msgstr "Crear guía técnica en formato RST"
|
|
@ -6,21 +6,62 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-01-28 00:58+0000\n"
|
||||
"PO-Revision-Date: 2010-01-26 12:00+0000\n"
|
||||
"Last-Translator: Freerk Kalsbeek (Mindswitch BV) <f.kalsbeek@mindswitch.nl>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-03-10 20:02+0000\n"
|
||||
"Last-Translator: Wouter Schrijvers <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-24 04:03+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-11 06:00+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: view:ir.module.module:0
|
||||
msgid "You can save this image as .png file"
|
||||
msgstr "Deze weergave kan als .png bestand opgeslagen worden"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Technical Guide in rst format"
|
||||
msgstr "Techische handleiding in rst formaat"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:create.relation.graph,init,end:0
|
||||
msgid "Ok"
|
||||
msgstr "Ok"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
msgid "(Relationship Graphs generated)"
|
||||
msgstr "(Relatiegrafiek wordt gegenereerd)"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Kies een bestand waar de Technische handleiding wordt opgeslagen"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,description:base_module_doc_rst.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" * This module generates the Technical Guides of selected modules in "
|
||||
"Restructured Text format (RST)\n"
|
||||
" * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST\n"
|
||||
" * It creates a tarball (.tgz file suffix) containing an index file and "
|
||||
"one file per module\n"
|
||||
" * Generates Relationship Graph\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" * Deze module genereert de Technische Gids voor de geselecteerde modules "
|
||||
"in Restructured Text format (RST)\n"
|
||||
" * De Sphinx (http://sphinx.pocoo.org) RST-implementatie wordt gebruikt\n"
|
||||
" * De gecreëerde tarball (.tgz bestandsextensie) bevat een index-bestand "
|
||||
"en één bestand per module\n"
|
||||
" * Genereert Relatiegrafiek\n"
|
||||
" "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
|
@ -32,9 +73,21 @@ msgid "Create RST Technical Guide"
|
|||
msgstr "RST Technische handleiding aanmaken"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr "Kies een bestand waar de Technische handleiding wordt opgeslagen"
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_gen_graph
|
||||
msgid "Generate Relationship Graph"
|
||||
msgstr "Genereer Relatiegrafiek"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,file_graph:0
|
||||
msgid "Relationship Graph"
|
||||
msgstr "Relatiegrafiek"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.model,name:base_module_doc_rst.model_ir_module_module
|
||||
msgid "Module"
|
||||
msgstr "Module"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,rst_file:0
|
||||
|
@ -51,6 +104,11 @@ msgstr "Sluiten"
|
|||
msgid "Module Technical Guide in Restructured Text "
|
||||
msgstr "Module Technische Handleiding in Restructured Text (rst) "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.report.xml,name:base_module_doc_rst.report_proximity_graph
|
||||
msgid "Proximity graph"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Create Technical Guide in rst format"
|
||||
|
|
|
@ -6,52 +6,111 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 6.0dev\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-01-28 00:58+0000\n"
|
||||
"PO-Revision-Date: 2010-01-26 10:55+0000\n"
|
||||
"Last-Translator: <>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-04-25 14:11+0000\n"
|
||||
"Last-Translator: Stanislav Hanzhin <Unknown>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-04-24 04:03+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
"X-Launchpad-Export-Date: 2011-04-30 06:07+0000\n"
|
||||
"X-Generator: Launchpad (build 12758)\n"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: view:ir.module.module:0
|
||||
msgid "You can save this image as .png file"
|
||||
msgstr "Вы можете сохранить это изображение как PNG-файл"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Technical Guide in rst format"
|
||||
msgstr ""
|
||||
msgstr "Техническое руководство в формате RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
msgstr ""
|
||||
#: wizard_button:create.relation.graph,init,end:0
|
||||
msgid "Ok"
|
||||
msgstr "OK"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_tech_guide_rst
|
||||
msgid "Create RST Technical Guide"
|
||||
msgstr ""
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
msgid "(Relationship Graphs generated)"
|
||||
msgstr "(Графы отношений сгенерированны)"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr ""
|
||||
"Пожалуйста, выберите файл, куда будет записано Техническое руководство"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,description:base_module_doc_rst.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" * This module generates the Technical Guides of selected modules in "
|
||||
"Restructured Text format (RST)\n"
|
||||
" * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST\n"
|
||||
" * It creates a tarball (.tgz file suffix) containing an index file and "
|
||||
"one file per module\n"
|
||||
" * Generates Relationship Graph\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"\n"
|
||||
" * Этот модуль генерирует Техническое Руководство для выбранных модулей в "
|
||||
"формате Restructured Text format (RST)\n"
|
||||
" * Он использует реализацию RST из Sphinx (http://sphinx.pocoo.org)\n"
|
||||
" * Это создает архив (с расширением .tgz), содержащий файл индекса и один "
|
||||
"файл на каждый модуль\n"
|
||||
" * Создает граф отношений\n"
|
||||
" "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
msgstr "имя файла"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_tech_guide_rst
|
||||
msgid "Create RST Technical Guide"
|
||||
msgstr "Создать Техническое Руководство в формате RST"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_gen_graph
|
||||
msgid "Generate Relationship Graph"
|
||||
msgstr "Сгенерировать граф отношений"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,file_graph:0
|
||||
msgid "Relationship Graph"
|
||||
msgstr "Граф отношений"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.model,name:base_module_doc_rst.model_ir_module_module
|
||||
msgid "Module"
|
||||
msgstr "Модуль"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,rst_file:0
|
||||
msgid "file"
|
||||
msgstr ""
|
||||
msgstr "файл"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:tech.guide.rst,init,end:0
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
msgstr "Закрыть"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,shortdesc:base_module_doc_rst.module_meta_information
|
||||
msgid "Module Technical Guide in Restructured Text "
|
||||
msgstr ""
|
||||
msgstr "Техническая документация модуля хранится в формате RST "
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.report.xml,name:base_module_doc_rst.report_proximity_graph
|
||||
msgid "Proximity graph"
|
||||
msgstr "Граф доступности"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Create Technical Guide in rst format"
|
||||
msgstr ""
|
||||
msgstr "Создать Техническое Руководство в формате rst"
|
||||
|
|
|
@ -0,0 +1,108 @@
|
|||
# Albanian translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2011-01-11 11:14+0000\n"
|
||||
"PO-Revision-Date: 2011-03-28 15:34+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: Albanian <sq@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-29 06:21+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: view:ir.module.module:0
|
||||
msgid "You can save this image as .png file"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Technical Guide in rst format"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:create.relation.graph,init,end:0
|
||||
msgid "Ok"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
msgid "(Relationship Graphs generated)"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Please choose a file where the Technical Guide will be written."
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,description:base_module_doc_rst.module_meta_information
|
||||
msgid ""
|
||||
"\n"
|
||||
" * This module generates the Technical Guides of selected modules in "
|
||||
"Restructured Text format (RST)\n"
|
||||
" * It uses the Sphinx (http://sphinx.pocoo.org) implementation of RST\n"
|
||||
" * It creates a tarball (.tgz file suffix) containing an index file and "
|
||||
"one file per module\n"
|
||||
" * Generates Relationship Graph\n"
|
||||
" "
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,name:0
|
||||
msgid "filename"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_tech_guide_rst
|
||||
msgid "Create RST Technical Guide"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.wizard,name:base_module_doc_rst.wiz_gen_graph
|
||||
msgid "Generate Relationship Graph"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:create.relation.graph,init:0
|
||||
#: view:ir.module.module:0
|
||||
#: field:ir.module.module,file_graph:0
|
||||
msgid "Relationship Graph"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.model,name:base_module_doc_rst.model_ir_module_module
|
||||
msgid "Module"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_field:tech.guide.rst,init,rst_file:0
|
||||
msgid "file"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_button:tech.guide.rst,init,end:0
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.module.module,shortdesc:base_module_doc_rst.module_meta_information
|
||||
msgid "Module Technical Guide in Restructured Text "
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: model:ir.actions.report.xml,name:base_module_doc_rst.report_proximity_graph
|
||||
msgid "Proximity graph"
|
||||
msgstr ""
|
||||
|
||||
#. module: base_module_doc_rst
|
||||
#: wizard_view:tech.guide.rst,init:0
|
||||
msgid "Create Technical Guide in rst format"
|
||||
msgstr ""
|
0
addons/base_report_designer/plugin/openerp_report_designer/bin/OOo_run.sh
Normal file → Executable file
0
addons/base_report_designer/plugin/openerp_report_designer/bin/OOo_run.sh
Normal file → Executable file
|
@ -24,7 +24,7 @@ from osv import fields, osv
|
|||
from tools.translate import _
|
||||
import crm
|
||||
import time
|
||||
from datetime import datetime, timedelta
|
||||
from datetime import datetime
|
||||
|
||||
class crm_phonecall(crm_case, osv.osv):
|
||||
""" Phonecall Cases """
|
||||
|
@ -110,14 +110,15 @@ class crm_phonecall(crm_case, osv.osv):
|
|||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = True
|
||||
for phone in self.browse(cr, uid, ids):
|
||||
phone_id= phone.id
|
||||
phone_id = phone.id
|
||||
data = {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}
|
||||
if phone.duration <=0:
|
||||
duration = datetime.now() - datetime.strptime(phone.date, '%Y-%m-%d %H:%M:%S')
|
||||
data.update({'duration': duration.seconds/float(60)})
|
||||
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], args)
|
||||
self.write(cr, uid, ids, data)
|
||||
self.write(cr, uid, [phone_id], data)
|
||||
return res
|
||||
|
||||
def case_reset(self, cr, uid, ids, *args):
|
||||
|
|
|
@ -61,7 +61,7 @@
|
|||
<group col="2" colspan="2">
|
||||
<separator colspan="4" string="Categorization"/>
|
||||
<field name="priority"/>
|
||||
<field name="categ_id"/>
|
||||
<field name="categ_id" context="{'object_id':'crm.helpdesk'}"/>
|
||||
<field name="canal_id"/>
|
||||
</group>
|
||||
|
||||
|
|
|
@ -49,6 +49,7 @@ class document_file(osv.osv):
|
|||
It also establishes the parent_id NOT NULL constraint that ir.attachment
|
||||
should have had (but would have failed if plain attachments contained null
|
||||
values).
|
||||
It also updates the File Size for the previously created attachments.
|
||||
"""
|
||||
|
||||
parent_id = self.pool.get('document.directory')._get_root_directory(cr,uid)
|
||||
|
@ -62,7 +63,11 @@ class document_file(osv.osv):
|
|||
cr.execute("UPDATE ir_attachment " \
|
||||
"SET parent_id = %s, db_datas = decode(encode(db_datas,'escape'), 'base64') " \
|
||||
"WHERE parent_id IS NULL", (parent_id,))
|
||||
|
||||
cr.execute("UPDATE ir_attachment SET file_size=length(db_datas) WHERE file_size = 0;")
|
||||
|
||||
cr.execute("ALTER TABLE ir_attachment ALTER parent_id SET NOT NULL")
|
||||
|
||||
return True
|
||||
|
||||
def _get_filestore(self, cr):
|
||||
|
|
|
@ -253,7 +253,7 @@ unless it is already specified in the From Email, e.g: John Doe <john@doe.com>",
|
|||
except Exception, error:
|
||||
raise osv.except_osv(
|
||||
_("Out going connection test failed"),
|
||||
_("Reason: %s") % error
|
||||
_("Reason: %s") % tools.ustr(error)
|
||||
)
|
||||
|
||||
def do_approval(self, cr, uid, ids, context=None):
|
||||
|
@ -272,7 +272,7 @@ unless it is already specified in the From Email, e.g: John Doe <john@doe.com>",
|
|||
try:
|
||||
serv = self.get_outgoing_server(cursor, user, id, context)
|
||||
except Exception, error:
|
||||
logger.notifyChannel(_("Email Template"), netsvc.LOG_ERROR, _("Mail from Account %s failed on login. Probable Reason:Could not login to server\nError: %s") % (id, error))
|
||||
logger.notifyChannel(_("Email Template"), netsvc.LOG_ERROR, _("Mail from Account %s failed on login. Probable Reason:Could not login to server\nError: %s") % (id, tools.ustr(error)))
|
||||
return False
|
||||
#Everything is complete, now return the connection
|
||||
return serv
|
||||
|
@ -359,13 +359,13 @@ unless it is already specified in the From Email, e.g: John Doe <john@doe.com>",
|
|||
Encoders.encode_base64(part)
|
||||
payload_part.attach(part)
|
||||
except Exception, error:
|
||||
logger.notifyChannel(_("Email Template"), netsvc.LOG_ERROR, _("Mail from Account %s failed. Probable Reason:MIME Error\nDescription: %s") % (id, error))
|
||||
logger.notifyChannel(_("Email Template"), netsvc.LOG_ERROR, _("Mail from Account %s failed. Probable Reason:MIME Error\nDescription: %s") % (id, tools.ustr(error)))
|
||||
return {'error_msg': _("Server Send Error\nDescription: %s")%error}
|
||||
try:
|
||||
serv.sendmail(payload_part['From'], addresses_l['all-recipients'], payload_part.as_string())
|
||||
except Exception, error:
|
||||
logging.getLogger('email_template').error(_("Mail from Account %s failed. Probable Reason: Server Send Error\n Description: %s"), id, error, exc_info=True)
|
||||
return {'error_msg': _("Server Send Error\nDescription: %s")%error}
|
||||
logging.getLogger('email_template').error(_("Mail from Account %s failed. Probable Reason: Server Send Error\n Description: %s"), id, tools.ustr(error), exc_info=True)
|
||||
return {'error_msg': _("Server Send Error\nDescription: %s") % tools.ustr(error)}
|
||||
#The mail sending is complete
|
||||
serv.close()
|
||||
logger.notifyChannel(_("Email Template"), netsvc.LOG_INFO, _("Mail from Account %s successfully Sent.") % (id))
|
||||
|
@ -427,7 +427,7 @@ unless it is already specified in the From Email, e.g: John Doe <john@doe.com>",
|
|||
"Datetime Extraction failed.Date:%s \
|
||||
\tError:%s") % (
|
||||
time_as_string,
|
||||
e)
|
||||
tools.ustr(e))
|
||||
)
|
||||
return date_as_date
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
|
|
|
@ -206,7 +206,6 @@ class hr_employee(osv.osv):
|
|||
_defaults = {
|
||||
'active': 1,
|
||||
'photo': _get_photo,
|
||||
'address_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).address_id.id
|
||||
}
|
||||
|
||||
def _check_recursion(self, cr, uid, ids, context=None):
|
||||
|
|
|
@ -21,7 +21,6 @@
|
|||
|
||||
import time
|
||||
|
||||
import netsvc
|
||||
from osv import fields, osv
|
||||
from tools.translate import _
|
||||
import decimal_precision as dp
|
||||
|
@ -216,7 +215,6 @@ class hr_expense_expense(osv.osv):
|
|||
account_journal.write(cr, uid, [journal.id],{'analytic_journal_id':analytic_journal_ids[0]})
|
||||
inv_id = invoice_obj.create(cr, uid, inv, {'type': 'in_invoice'})
|
||||
invoice_obj.button_compute(cr, uid, [inv_id], {'type': 'in_invoice'}, set_total=True)
|
||||
|
||||
self.write(cr, uid, [exp.id], {'invoice_id': inv_id, 'state': 'invoiced'})
|
||||
res = inv_id
|
||||
return res
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
@ -89,10 +88,3 @@ class salary_structure_report(report_sxw.rml_parse):
|
|||
report_sxw.report_sxw('report.salary.structure', 'hr.employee', 'hr_payroll/report/report_emp_salary_structure.rml', parser=salary_structure_report)
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
@ -249,4 +248,3 @@ class employees_salary_report(report_sxw.rml_parse):
|
|||
report_sxw.report_sxw('report.employees.salary', 'hr.payslip', 'hr_payroll/report/report_employees_detail.rml', parser=employees_salary_report,header='internal landscape')
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
@ -119,4 +118,3 @@ class year_salary_report(report_sxw.rml_parse):
|
|||
report_sxw.report_sxw('report.year.salary', 'hr.payslip', 'hr_payroll/report/report_year_report.rml', parser=year_salary_report,header='internal landscape')
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
|
|
@ -21,10 +21,9 @@
|
|||
##############################################################################
|
||||
import time
|
||||
import netsvc
|
||||
from datetime import date, datetime, timedelta
|
||||
from datetime import date, timedelta
|
||||
|
||||
from osv import fields, osv
|
||||
from tools import config
|
||||
from tools.translate import _
|
||||
|
||||
def prev_bounds(cdate=False):
|
||||
|
@ -107,8 +106,6 @@ class payroll_register(osv.osv):
|
|||
def compute_sheet(self, cr, uid, ids, context=None):
|
||||
emp_pool = self.pool.get('hr.employee')
|
||||
slip_pool = self.pool.get('hr.payslip')
|
||||
func_pool = self.pool.get('hr.payroll.structure')
|
||||
slip_line_pool = self.pool.get('hr.payslip.line')
|
||||
wf_service = netsvc.LocalService("workflow")
|
||||
vals = self.browse(cr, uid, ids, context=context)[0]
|
||||
emp_ids = emp_pool.search(cr, uid, [])
|
||||
|
@ -295,10 +292,8 @@ class hr_payslip(osv.osv):
|
|||
self.create_voucher(cr, uid, [slip.id], name, move_id)
|
||||
|
||||
name = "To %s account" % (slip.employee_id.name)
|
||||
|
||||
if not slip.employee_id.property_bank_account.id:
|
||||
raise osv.except_osv(_('Warning !'), _('Employee Bank Account is not defined for %s') % slip.employee_id.name)
|
||||
|
||||
ded_rec = {
|
||||
'move_id': move_id,
|
||||
'name': name,
|
||||
|
@ -430,10 +425,10 @@ class hr_payslip(osv.osv):
|
|||
partner_id = False
|
||||
|
||||
if not slip.employee_id.bank_account_id:
|
||||
raise osv.except_osv(_('Integrity Error !'), _('Please define bank account for %s !') % (slip.employee_id.name))
|
||||
raise osv.except_osv(_('Configuration Error !'), _('Please define bank account for %s !') % (slip.employee_id.name))
|
||||
|
||||
if not slip.employee_id.bank_account_id.partner_id:
|
||||
raise osv.except_osv(_('Integrity Error !'), _('Please define partner in bank account for %s !') % (slip.employee_id.name))
|
||||
raise osv.except_osv(_('Configuration Error !'), _('Please define partner in bank account for %s !') % (slip.employee_id.name))
|
||||
|
||||
partner = slip.employee_id.bank_account_id.partner_id
|
||||
partner_id = slip.employee_id.bank_account_id.partner_id.id
|
||||
|
@ -467,10 +462,8 @@ class hr_payslip(osv.osv):
|
|||
}
|
||||
move_id = move_pool.create(cr, uid, move, context=context)
|
||||
self.create_voucher(cr, uid, [slip.id], slip.name, move_id)
|
||||
|
||||
if not slip.employee_id.salary_account.id:
|
||||
raise osv.except_osv(_('Warning !'), _('Please define Salary Account for %s.') % slip.employee_id.name)
|
||||
|
||||
line = {
|
||||
'move_id':move_id,
|
||||
'name': "By Basic Salary / " + slip.employee_id.name,
|
||||
|
@ -484,7 +477,6 @@ class hr_payslip(osv.osv):
|
|||
'analytic_account_id': False,
|
||||
'ref':slip.number
|
||||
}
|
||||
|
||||
#Setting Analysis Account for Basic Salary
|
||||
if slip.employee_id.analytic_account:
|
||||
line['analytic_account_id'] = slip.employee_id.analytic_account.id
|
||||
|
@ -494,10 +486,9 @@ class hr_payslip(osv.osv):
|
|||
|
||||
if not slip.employee_id.employee_account.id:
|
||||
raise osv.except_osv(_('Warning !'), _('Please define Employee Payable Account for %s.') % slip.employee_id.name)
|
||||
|
||||
line = {
|
||||
'move_id':move_id,
|
||||
'name': "To Basic Payble Salary / " + slip.employee_id.name,
|
||||
'name': "To Basic Payable Salary / " + slip.employee_id.name,
|
||||
'partner_id': partner_id,
|
||||
'date': slip.date,
|
||||
'account_id': slip.employee_id.employee_account.id,
|
||||
|
@ -508,6 +499,7 @@ class hr_payslip(osv.osv):
|
|||
'period_id': period_id,
|
||||
'ref':slip.number
|
||||
}
|
||||
|
||||
line_ids += [movel_pool.create(cr, uid, line, context=context)]
|
||||
|
||||
for line in slip.line_ids:
|
||||
|
@ -540,7 +532,7 @@ class hr_payslip(osv.osv):
|
|||
if line.type == 'allowance' or line.type == 'otherpay':
|
||||
rec['debit'] = amount
|
||||
if not partner.property_account_payable:
|
||||
raise osv.except_osv(_('Integrity Error !'), _('Please Configure Partners Payable Account!!'))
|
||||
raise osv.except_osv(_('Configuration Error !'), _('Please Configure Partners Payable Account!!'))
|
||||
ded_rec = {
|
||||
'move_id': move_id,
|
||||
'name': name,
|
||||
|
@ -557,7 +549,7 @@ class hr_payslip(osv.osv):
|
|||
line_ids += [movel_pool.create(cr, uid, ded_rec, context=context)]
|
||||
elif line.type == 'deduction' or line.type == 'otherdeduct':
|
||||
if not partner.property_account_receivable:
|
||||
raise osv.except_osv(_('Integrity Error !'), _('Please Configure Partners Receivable Account!!'))
|
||||
raise osv.except_osv(_('Configuration Error !'), _('Please Configure Partners Receivable Account!!'))
|
||||
rec['credit'] = amount
|
||||
total_deduct += amount
|
||||
ded_rec = {
|
||||
|
|
|
@ -234,7 +234,6 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Adding Account Properties to the Employee form -->
|
||||
|
||||
<record id="hr_employee_payroll_property_form" model="ir.ui.view">
|
||||
|
|
|
@ -392,5 +392,12 @@
|
|||
<field name="view_id" ref="hr_recruitment_degree_tree"/>
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
id="menu_hr_recruitment_degree"
|
||||
name="Degrees"
|
||||
parent="menu_hr_recruitment_recruitment"
|
||||
action="hr_recruitment_degree_action"
|
||||
sequence="1"/>
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
|
|
@ -95,13 +95,8 @@ class final_invoice_create(osv.osv_memory):
|
|||
last_invoice = invoice_obj.create(cr, uid, curr_invoice, context=context)
|
||||
invoices.append(last_invoice)
|
||||
|
||||
context2=context.copy()
|
||||
context2 = context.copy()
|
||||
context2['lang'] = partner.lang
|
||||
cr.execute("SELECT product_id, to_invoice, sum(unit_amount) " \
|
||||
"FROM account_analytic_line as line " \
|
||||
"WHERE account_id = %s " \
|
||||
"AND to_invoice IS NOT NULL " \
|
||||
"GROUP BY product_id, to_invoice", (account.id,))
|
||||
|
||||
cr.execute("""SELECT
|
||||
line.product_id,
|
||||
|
|
|
@ -123,13 +123,13 @@ class hr_timesheet_invoice_create(osv.osv_memory):
|
|||
|
||||
context2 = context.copy()
|
||||
context2['lang'] = partner.lang
|
||||
cr.execute("SELECT product_id, to_invoice, sum(unit_amount) " \
|
||||
cr.execute("SELECT product_id, to_invoice, sum(unit_amount), product_uom_id " \
|
||||
"FROM account_analytic_line as line " \
|
||||
"WHERE account_id = %s " \
|
||||
"AND id IN %s AND to_invoice IS NOT NULL " \
|
||||
"GROUP BY product_id,to_invoice", (account.id, tuple(context['active_ids']),))
|
||||
"GROUP BY product_id,to_invoice,product_uom_id", (account.id, tuple(context['active_ids']),))
|
||||
|
||||
for product_id, factor_id, qty in cr.fetchall():
|
||||
for product_id, factor_id, qty, uom in cr.fetchall():
|
||||
product = product_obj.browse(cr, uid, product_id, context2)
|
||||
if not product:
|
||||
raise osv.except_osv(_('Error'), _('At least one line has no product !'))
|
||||
|
@ -144,9 +144,11 @@ class hr_timesheet_invoice_create(osv.osv_memory):
|
|||
data['product'] = data['product'][0]
|
||||
factor_name = product_obj.name_get(cr, uid, [data['product']], context=context)[0][1]
|
||||
|
||||
ctx = context.copy()
|
||||
ctx.update({'uom':uom})
|
||||
if account.pricelist_id:
|
||||
pl = account.pricelist_id.id
|
||||
price = pro_price_obj.price_get(cr,uid,[pl], data['product'] or product_id, qty or 1.0, account.partner_id.id)[pl]
|
||||
price = pro_price_obj.price_get(cr,uid,[pl], data['product'] or product_id, qty or 1.0, account.partner_id.id, context=ctx)[pl]
|
||||
else:
|
||||
price = 0.0
|
||||
|
||||
|
@ -162,7 +164,7 @@ class hr_timesheet_invoice_create(osv.osv_memory):
|
|||
'name': factor_name,
|
||||
'product_id': data['product'] or product_id,
|
||||
'invoice_line_tax_id': [(6,0,tax)],
|
||||
'uos_id': product.uom_id.id,
|
||||
'uos_id': uom,
|
||||
'account_id': account_id,
|
||||
'account_analytic_id': account.id,
|
||||
}
|
||||
|
|
|
@ -284,14 +284,14 @@ class Partner(osv.osv):
|
|||
'membership_cancel': False
|
||||
}
|
||||
if name == 'membership_start':
|
||||
line_id = member_line_obj.search(cr, uid, [('partner', '=', partner_id)],
|
||||
line_id = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
|
||||
limit=1, order='date_from', context=context)
|
||||
if line_id:
|
||||
res[partner.id]['membership_start'] = member_line_obj.read(cr, uid, line_id[0],
|
||||
['date_from'], context=context)['date_from']
|
||||
|
||||
if name == 'membership_stop':
|
||||
line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id)],
|
||||
line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)],
|
||||
limit=1, order='date_to desc', context=context)
|
||||
if line_id1:
|
||||
res[partner.id]['membership_stop'] = member_line_obj.read(cr, uid, line_id1[0],
|
||||
|
|
|
@ -269,6 +269,10 @@ class mrp_bom(osv.osv):
|
|||
@param product_id: Changed product_id
|
||||
@return: Dictionary of changed values
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
context['lang'] = self.pool.get('res.users').browse(cr,uid,uid).context_lang
|
||||
|
||||
if product_id:
|
||||
prod = self.pool.get('product.product').browse(cr, uid, product_id, context=context)
|
||||
v = {'product_uom': prod.uom_id.id}
|
||||
|
|
|
@ -252,13 +252,11 @@ class mrp_production(osv.osv):
|
|||
""" Cancels work order if production order is canceled.
|
||||
@return: Super method
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
obj = self.browse(cr, uid, ids)[0]
|
||||
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)
|
||||
return super(mrp_production,self).action_cancel(cr,uid,ids)
|
||||
return super(mrp_production,self).action_cancel(cr,uid,ids,context=context)
|
||||
|
||||
def _compute_planned_workcenter(self, cr, uid, ids, context=None, mini=False):
|
||||
""" Computes planned and finished dates for work order.
|
||||
|
|
|
@ -289,9 +289,15 @@ class procurement_order(osv.osv):
|
|||
return False
|
||||
partner = procurement.product_id.seller_id #Taken Main Supplier of Product of Procurement.
|
||||
|
||||
if not partner:
|
||||
cr.execute('update procurement_order set message=%s where id=%s',
|
||||
(_('No default supplier defined for this product'), procurement.id))
|
||||
return False
|
||||
|
||||
if user.company_id and user.company_id.partner_id:
|
||||
if partner.id == user.company_id.partner_id.id:
|
||||
return False
|
||||
|
||||
address_id = partner_obj.address_get(cr, uid, [partner.id], ['delivery'])['delivery']
|
||||
if not address_id:
|
||||
cr.execute('update procurement_order set message=%s where id=%s',
|
||||
|
|
|
@ -155,7 +155,7 @@ class product_pricelist(osv.osv):
|
|||
|
||||
currency_obj = self.pool.get('res.currency')
|
||||
product_obj = self.pool.get('product.product')
|
||||
product_temp_obj = self.pool.get('product.template')
|
||||
product_template_obj = self.pool.get('product.template')
|
||||
product_category_obj = self.pool.get('product.category')
|
||||
product_uom_obj = self.pool.get('product.uom')
|
||||
supplierinfo_obj = self.pool.get('product.supplierinfo')
|
||||
|
@ -245,7 +245,7 @@ class product_pricelist(osv.osv):
|
|||
price = 0.0
|
||||
if sinfo:
|
||||
qty_in_product_uom = qty
|
||||
product_default_uom = product_temp_obj.read(cr, uid, [tmpl_id], ['uom_id'])[0]['uom_id'][0]
|
||||
product_default_uom = product_template_obj.read(cr, uid, [tmpl_id], ['uom_id'])[0]['uom_id'][0]
|
||||
supplier = supplierinfo_obj.browse(cr, uid, sinfo, context=context)[0]
|
||||
seller_uom = supplier.product_uom and supplier.product_uom.id or False
|
||||
if seller_uom and product_default_uom and product_default_uom != seller_uom:
|
||||
|
@ -267,9 +267,8 @@ class product_pricelist(osv.osv):
|
|||
product_obj.price_get(cr, uid, [product_id],
|
||||
price_type.field, context=context)[product_id], round=False, context=context)
|
||||
|
||||
if price >= 0.0:
|
||||
if price is not False:
|
||||
price_limit = price
|
||||
|
||||
price = price * (1.0+(res['price_discount'] or 0.0))
|
||||
price = rounding(price, res['price_round'])
|
||||
price += (res['price_surcharge'] or 0.0)
|
||||
|
|
|
@ -183,14 +183,21 @@
|
|||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="product_price_type_action" model="ir.actions.act_window">
|
||||
<field name="name">Prices Types</field>
|
||||
<field name="name">Price Types</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.price.type</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
</record>
|
||||
<!--<record id="product_pricelist_type_view" model="ir.ui.view">
|
||||
|
||||
<menuitem
|
||||
action="product_price_type_action" id="menu_product_price_type"
|
||||
parent="product.menu_product_pricelist_main" sequence="4"/>
|
||||
|
||||
<!-- Moved to extra module 'sale_pricelist_type_menu':
|
||||
<record id="product_pricelist_type_view" model="ir.ui.view">
|
||||
<field name="name">product.pricelist.type.form</field>
|
||||
<field name="model">product.pricelist.type</field>
|
||||
<field name="type">form</field>
|
||||
|
|
|
@ -251,7 +251,9 @@ class product_template(osv.osv):
|
|||
result[product.id] = {field:False}
|
||||
result[product.id]['seller_delay'] = 1
|
||||
if product.seller_ids:
|
||||
partner_list = sorted([(partner_id.sequence, partner_id) for partner_id in product.seller_ids if partner_id and partner_id.sequence])
|
||||
partner_list = sorted([(partner_id.sequence, partner_id)
|
||||
for partner_id in product.seller_ids
|
||||
if partner_id and isinstance(partner_id.sequence, (int, long))])
|
||||
main_supplier = partner_list and partner_list[0] and partner_list[0][1] or False
|
||||
result[product.id]['seller_delay'] = main_supplier and main_supplier.delay or 1
|
||||
result[product.id]['seller_qty'] = main_supplier and main_supplier.qty or 0.0
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
<filter string="Stockable" icon="terp-accessories-archiver" domain="['|',('type','=','product'),('type','=','consu')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<filter string="To Sell" icon="terp-accessories-archiver-minus" domain="[('sale_ok','=',1)]"/>
|
||||
<filter string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]" />
|
||||
<filter name="filter_to_purchase" string="To Purchase" icon="terp-accessories-archiver+" domain="[('purchase_ok', '=', 1)]" />
|
||||
<separator orientation="vertical"/>
|
||||
<field name="default_code"/>
|
||||
<field name="name"/>
|
||||
|
@ -204,7 +204,7 @@
|
|||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">product.product</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="domain">[('purchase_ok','=',1)]</field>
|
||||
<field name="context">{"search_default_filter_to_purchase":1}</field>
|
||||
<field name="view_id" ref="product_product_tree_view"/>
|
||||
<field name="search_view_id" ref="product_search_form_view"/>
|
||||
<field name="help">Products can be purchased and/or sold. They can be raw materials, stockable products, consumables or services. The Product form contains detailed information about your products related to procurement logistics, sales price, product category, suppliers and so on.</field>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
<field name="name" >Product multi-company</field>
|
||||
<field name="model_id" ref="model_product_template"/>
|
||||
<field name="global" eval="True"/>
|
||||
<field name="domain_force">['|',('company_id','=',False),('company_id','child_of',[user.company_id.id])]</field>
|
||||
<field name="domain_force"> ['|','|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id]),('company_id','=',False)]</field>
|
||||
</record>
|
||||
|
||||
<record id="group_product_variant" model="res.groups" context="{'noadmin':True}">
|
||||
|
|
|
@ -35,6 +35,17 @@
|
|||
<field name="month"/>
|
||||
<field name="category_id"/>
|
||||
<field name="price_total"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="partner_id" invisible="1"/>
|
||||
<field name="product_id" invisible="1"/>
|
||||
<field name="product_uom" invisible="1"/>
|
||||
<field name="day" invisible="1"/>
|
||||
<field name="name" invisible="1"/>
|
||||
<field name="warehouse_id" invisible="1"/>
|
||||
<field name="validator" invisible="1"/>
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="location_id" invisible="1"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
|
|
@ -122,7 +122,7 @@ class purchase_order(osv.osv):
|
|||
}
|
||||
def wkf_confirm_order(self, cr, uid, ids, context=None):
|
||||
res = super(purchase_order, self).wkf_confirm_order(cr, uid, ids, context=context)
|
||||
proc_obj=self.pool.get('procurement.order')
|
||||
proc_obj = self.pool.get('procurement.order')
|
||||
for po in self.browse(cr, uid, ids, context=context):
|
||||
if po.requisition_id and (po.requisition_id.exclusive=='exclusive'):
|
||||
for order in po.requisition_id.purchase_ids:
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
<record id="ir_header_webkit_basesample0" model="ir.header_webkit">
|
||||
<field name="footer_html"><![CDATA[<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
|
||||
<script>
|
||||
function subst() {
|
||||
var vars={};
|
||||
|
@ -34,6 +35,7 @@
|
|||
<field eval=""""A4"""" name="format"/>
|
||||
<field name="html"><![CDATA[<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
|
||||
<script>
|
||||
function subst() {
|
||||
var vars={};
|
||||
|
@ -53,7 +55,7 @@
|
|||
<body style="border:0; margin: 0;" onload="subst()">
|
||||
<table class="header" style="border-bottom: 0px solid black; width: 100%">
|
||||
<tr>
|
||||
<td>${helper.embed_logo_by_name('camptocamp_logo')}</td>
|
||||
<td>${helper.embed_logo_by_name('camptocamp_logo')|n}</td>
|
||||
<td style="text-align:right"> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
|
@ -75,7 +77,7 @@
|
|||
<tr>
|
||||
<td>Mail: ${company.partner_id.address and company.partner_id.address[0].email or ''|entity}<br/></td>
|
||||
</tr>
|
||||
</table> ${_debug or ''} </body>
|
||||
</table> ${_debug or ''|n} </body>
|
||||
</html>]]>
|
||||
</field>
|
||||
<field eval="55.0" name="margin_top"/>
|
||||
|
|
|
@ -48,7 +48,7 @@ class WebKitHelper(object):
|
|||
else :
|
||||
width = ' '
|
||||
if height :
|
||||
height = 'width="%spx"'%(height)
|
||||
height = 'height="%spx"'%(height)
|
||||
else :
|
||||
height = ' '
|
||||
toreturn = '<img %s %s src="data:image/%s;base64,%s" />'%(
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
# All Right Reserved
|
||||
#
|
||||
# Author : Nicolas Bessi (Camptocamp)
|
||||
# Contributor(s) : Florent Xicluna (Wingo SA)
|
||||
#
|
||||
# WARNING: This program as such is intended to be used by professional
|
||||
# programmers who take the whole responsability of assessing all potential
|
||||
|
@ -41,9 +42,20 @@ import pooler
|
|||
from report_helper import WebKitHelper
|
||||
from report.report_sxw import *
|
||||
import addons
|
||||
import tools
|
||||
from tools.translate import _
|
||||
from osv.osv import except_osv
|
||||
|
||||
|
||||
def mako_template(text):
|
||||
"""Build a Mako template.
|
||||
|
||||
This template uses UTF-8 encoding
|
||||
"""
|
||||
# default_filters=['unicode', 'h'] can be used to set global filters
|
||||
return Template(text, input_encoding='utf-8', output_encoding='utf-8')
|
||||
|
||||
|
||||
class WebKitParser(report_sxw):
|
||||
"""Custom class that use webkit to render HTML reports
|
||||
Code partially taken from report openoffice. Thanks guys :)
|
||||
|
@ -67,7 +79,8 @@ class WebKitParser(report_sxw):
|
|||
_('Please install executable on your system'+
|
||||
' (sudo apt-get install wkhtmltopdf) or download it from here:'+
|
||||
' http://code.google.com/p/wkhtmltopdf/downloads/list and set the'+
|
||||
' path to the executable on the Company form.')
|
||||
' path to the executable on the Company form.'+
|
||||
'Minimal version is 0.9.9')
|
||||
)
|
||||
if os.path.isabs(path) :
|
||||
if (os.path.exists(path) and os.access(path, os.X_OK)\
|
||||
|
@ -98,7 +111,9 @@ class WebKitParser(report_sxw):
|
|||
else:
|
||||
command = ['wkhtmltopdf']
|
||||
|
||||
command.append('-q')
|
||||
command.append('--quiet')
|
||||
# default to UTF-8 encoding. Use <meta charset="latin-1"> to override.
|
||||
command.extend(['--encoding', 'utf-8'])
|
||||
if header :
|
||||
head_file = file( os.path.join(
|
||||
tmp_dir,
|
||||
|
@ -237,7 +252,7 @@ class WebKitParser(report_sxw):
|
|||
if not template and report_xml.report_webkit_data :
|
||||
template = report_xml.report_webkit_data
|
||||
if not template :
|
||||
raise except_osv(_('Webkit Report template not found !'), _(''))
|
||||
raise except_osv(_('Error!'), _('Webkit Report template not found !'))
|
||||
header = report_xml.webkit_header.html
|
||||
footer = report_xml.webkit_header.footer_html
|
||||
if not header and report_xml.header:
|
||||
|
@ -250,6 +265,7 @@ class WebKitParser(report_sxw):
|
|||
header = u"""
|
||||
<html>
|
||||
<head>
|
||||
<meta content="text/html; charset=UTF-8" http-equiv="content-type"/>
|
||||
<style type="text/css">
|
||||
${css}
|
||||
</style>
|
||||
|
@ -276,7 +292,7 @@ class WebKitParser(report_sxw):
|
|||
company= user.company_id
|
||||
|
||||
#default_filters=['unicode', 'entity'] can be used to set global filter
|
||||
body_mako_tpl = Template(template ,input_encoding='utf-8')
|
||||
body_mako_tpl = mako_template(template)
|
||||
helper = WebKitHelper(cursor, uid, report_xml.id, context)
|
||||
try :
|
||||
html = body_mako_tpl.render( helper=helper,
|
||||
|
@ -288,7 +304,7 @@ class WebKitParser(report_sxw):
|
|||
msg = exceptions.text_error_template().render()
|
||||
netsvc.Logger().notifyChannel('Webkit render', netsvc.LOG_ERROR, msg)
|
||||
raise except_osv(_('Webkit render'), msg)
|
||||
head_mako_tpl = Template(header, input_encoding='utf-8')
|
||||
head_mako_tpl = mako_template(header)
|
||||
try :
|
||||
head = head_mako_tpl.render(
|
||||
company=company,
|
||||
|
@ -305,7 +321,7 @@ class WebKitParser(report_sxw):
|
|||
exceptions.text_error_template().render())
|
||||
foot = False
|
||||
if footer :
|
||||
foot_mako_tpl = Template(footer ,input_encoding='utf-8')
|
||||
foot_mako_tpl = mako_template(footer)
|
||||
try :
|
||||
foot = foot_mako_tpl.render(
|
||||
company=company,
|
||||
|
@ -327,7 +343,7 @@ class WebKitParser(report_sxw):
|
|||
time=time,
|
||||
helper=helper,
|
||||
css=css,
|
||||
_debug=html,
|
||||
_debug=tools.ustr(html),
|
||||
formatLang=self.formatLang,
|
||||
setLang=self.setLang,
|
||||
_=self.translate_call,
|
||||
|
|
|
@ -84,8 +84,7 @@ class stock_picking(osv.osv):
|
|||
# need to carify with new requirement
|
||||
invoice_ids = []
|
||||
picking_obj = self.pool.get('stock.picking')
|
||||
res = super(stock_picking, self).action_invoice_create(cr, uid, ids, journal_id=False,
|
||||
group=False, type='out_invoice', context=None)
|
||||
res = super(stock_picking, self).action_invoice_create(cr, uid, ids, journal_id=journal_id, group=group, type=type, context=context)
|
||||
invoice_ids = res.values()
|
||||
picking_obj.write(cr, uid, ids, {'invoice_ids': [[6, 0, invoice_ids]]})
|
||||
return res
|
||||
|
|
|
@ -248,6 +248,7 @@ class product_product(osv.osv):
|
|||
date_str = "date<=%s"
|
||||
date_values = [to_date]
|
||||
|
||||
prodlot_id = context.get('prodlot_id', False)
|
||||
|
||||
# TODO: perhaps merge in one query.
|
||||
if date_values:
|
||||
|
@ -257,10 +258,11 @@ class product_product(osv.osv):
|
|||
cr.execute(
|
||||
'select sum(product_qty), product_id, product_uom '\
|
||||
'from stock_move '\
|
||||
'where location_id NOT IN %s'\
|
||||
'and location_dest_id IN %s'\
|
||||
'and product_id IN %s'\
|
||||
'and state IN %s' + (date_str and 'and '+date_str+' ' or '') +''\
|
||||
'where location_id NOT IN %s '\
|
||||
'and location_dest_id IN %s '\
|
||||
'and product_id IN %s '\
|
||||
'' + (prodlot_id and ('and prodlot_id = ' + str(prodlot_id)) or '') + ' '\
|
||||
'and state IN %s ' + (date_str and 'and '+date_str+' ' or '') +' '\
|
||||
'group by product_id,product_uom',tuple(where))
|
||||
results = cr.fetchall()
|
||||
if 'out' in what:
|
||||
|
@ -268,10 +270,11 @@ class product_product(osv.osv):
|
|||
cr.execute(
|
||||
'select sum(product_qty), product_id, product_uom '\
|
||||
'from stock_move '\
|
||||
'where location_id IN %s'\
|
||||
'where location_id IN %s '\
|
||||
'and location_dest_id NOT IN %s '\
|
||||
'and product_id IN %s'\
|
||||
'and state in %s' + (date_str and 'and '+date_str+' ' or '') + ''\
|
||||
'and product_id IN %s '\
|
||||
'' + (prodlot_id and ('and prodlot_id = ' + str(prodlot_id)) or '') + ' '\
|
||||
'and state in %s ' + (date_str and 'and '+date_str+' ' or '') + ' '\
|
||||
'group by product_id,product_uom',tuple(where))
|
||||
results2 = cr.fetchall()
|
||||
uom_obj = self.pool.get('product.uom')
|
||||
|
|
|
@ -1249,7 +1249,7 @@ class stock_picking(osv.osv):
|
|||
move_obj.write(cr, uid, [c.id for c in complete], {'picking_id': new_picking})
|
||||
for move in complete:
|
||||
if prodlot_ids.get(move.id):
|
||||
move_obj.write(cr, uid, move.id, {'prodlot_id': prodlot_ids[move.id]})
|
||||
move_obj.write(cr, uid, [move.id], {'prodlot_id': prodlot_ids[move.id]})
|
||||
for move in too_many:
|
||||
product_qty = move_product_qty[move.id]
|
||||
defaults = {
|
||||
|
@ -1825,7 +1825,7 @@ class stock_move(osv.osv):
|
|||
old_ptype = location_obj.picking_type_get(cr, uid, picking.move_lines[0].location_id, picking.move_lines[0].location_dest_id)
|
||||
if old_ptype != picking.type:
|
||||
old_pick_name = seq_obj.get(cr, uid, 'stock.picking.' + old_ptype)
|
||||
self.pool.get('stock.picking').write(cr, uid, picking.id, {'name': old_pick_name}, context=context)
|
||||
self.pool.get('stock.picking').write(cr, uid, [picking.id], {'name': old_pick_name}, context=context)
|
||||
else:
|
||||
pickid = False
|
||||
for move, (loc, dummy, delay, dummy, company_id, ptype) in todo:
|
||||
|
@ -2113,7 +2113,6 @@ class stock_move(osv.osv):
|
|||
|
||||
todo = []
|
||||
for move in self.browse(cr, uid, ids, context=context):
|
||||
#print 'DONE MOVE', move.id, move.product_id.name, move.move_dest_id.id, move.state, move.move_dest_id and move.move_dest_id.state
|
||||
if move.state=="draft":
|
||||
todo.append(move.id)
|
||||
if todo:
|
||||
|
@ -2141,7 +2140,7 @@ class stock_move(osv.osv):
|
|||
prodlot_id = partial_datas and partial_datas.get('move%s_prodlot_id' % (move.id), False)
|
||||
if prodlot_id:
|
||||
self.write(cr, uid, [move.id], {'prodlot_id': prodlot_id}, context=context)
|
||||
if move.state not in ('confirmed','done', 'assigned'):
|
||||
if move.state not in ('confirmed','done','assigned'):
|
||||
todo.append(move.id)
|
||||
|
||||
if todo:
|
||||
|
@ -2469,7 +2468,7 @@ class stock_move(osv.osv):
|
|||
defaults.update(prodlot_id=prodlot_id)
|
||||
new_move = self.copy(cr, uid, move.id, defaults)
|
||||
complete.append(self.browse(cr, uid, new_move))
|
||||
self.write(cr, uid, move.id,
|
||||
self.write(cr, uid, [move.id],
|
||||
{
|
||||
'product_qty' : move.product_qty - product_qty,
|
||||
'product_uos_qty':move.product_qty - product_qty,
|
||||
|
@ -2477,7 +2476,7 @@ class stock_move(osv.osv):
|
|||
|
||||
|
||||
for move in too_many:
|
||||
self.write(cr, uid, move.id,
|
||||
self.write(cr, uid, [move.id],
|
||||
{
|
||||
'product_qty': move.product_qty,
|
||||
'product_uos_qty': move.product_qty,
|
||||
|
@ -2558,7 +2557,7 @@ class stock_inventory(osv.osv):
|
|||
move_ids = []
|
||||
for line in inv.inventory_line_id:
|
||||
pid = line.product_id.id
|
||||
product_context.update(uom=line.product_uom.id,date=inv.date)
|
||||
product_context.update(uom=line.product_uom.id, date=inv.date, prodlot_id=line.prod_lot_id.id)
|
||||
amount = location_obj._product_get(cr, uid, line.location_id.id, [pid], product_context)[pid]
|
||||
|
||||
change = line.product_qty - amount
|
||||
|
@ -2643,10 +2642,9 @@ class stock_inventory_line(osv.osv):
|
|||
@return: Dictionary of changed values
|
||||
"""
|
||||
if not product:
|
||||
return {}
|
||||
if not uom:
|
||||
prod = self.pool.get('product.product').browse(cr, uid, [product], {'uom': uom})[0]
|
||||
uom = prod.uom_id.id
|
||||
return {'value': {'product_qty': 0.0, 'product_uom': False}}
|
||||
obj_product = self.pool.get('product.product').browse(cr, uid, product)
|
||||
uom = uom or obj_product.uom_id.id
|
||||
amount = self.pool.get('stock.location')._product_get(cr, uid, location_id, [product], {'uom': uom, 'to_date': to_date})[product]
|
||||
result = {'product_qty': amount, 'product_uom': uom}
|
||||
return {'value': result}
|
||||
|
|
|
@ -1670,7 +1670,7 @@
|
|||
<button name="action_cancel" states="assigned,confirmed" string="_Cancel" type="object" icon="gtk-cancel"/>
|
||||
<button name="action_confirm" states="draft" string="Process Later" type="object" icon="gtk-apply"/>
|
||||
<button name="force_assign" states="confirmed" string="Set Available" type="object" icon="gtk-yes"/>
|
||||
<button name="%(action_partial_move_server)d" states="assigned" string="Process" type="action" icon="gtk-go-forward"/>
|
||||
<button name="%(action_partial_move_server)d" string="Process" type="action" states="assigned" icon="gtk-go-forward"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
|
|
|
@ -39,14 +39,19 @@ class stock_fill_inventory(osv.osv_memory):
|
|||
@param context: A standard dictionary
|
||||
@return: New arch of view with new columns.
|
||||
"""
|
||||
if context==None:
|
||||
context={}
|
||||
res = super(stock_fill_inventory, self).view_init(cr, uid, fields_list, context=context)
|
||||
if context is None:
|
||||
context = {}
|
||||
super(stock_fill_inventory, self).view_init(cr, uid, fields_list, context=context)
|
||||
|
||||
if len(context.get('active_ids',[])) > 1:
|
||||
raise osv.except_osv(_('Error!'), _('You cannot perform this operation on more than one Stock Inventories.'))
|
||||
|
||||
if context.get('active_id', False):
|
||||
stock = self.pool.get('stock.inventory').browse(cr, uid, context.get('active_id', False))
|
||||
if stock.state=='done':
|
||||
raise osv.except_osv(_('Error!'), _('Stock Inventory is done'))
|
||||
True
|
||||
|
||||
if stock.state == 'done':
|
||||
raise osv.except_osv(_('Warning!'), _('Stock Inventory is already Validated.'))
|
||||
return True
|
||||
|
||||
def fill_inventory(self, cr, uid, ids, context=None):
|
||||
""" To Import stock inventory according to products available in the selected locations.
|
||||
|
@ -59,6 +64,7 @@ class stock_fill_inventory(osv.osv_memory):
|
|||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
|
||||
inventory_line_obj = self.pool.get('stock.inventory.line')
|
||||
location_obj = self.pool.get('stock.location')
|
||||
product_obj = self.pool.get('product.product')
|
||||
|
@ -71,14 +77,17 @@ class stock_fill_inventory(osv.osv_memory):
|
|||
fill_inventory = self.browse(cr, uid, ids, context=context)
|
||||
res = {}
|
||||
res_location = {}
|
||||
if fill_inventory.recursive :
|
||||
|
||||
if fill_inventory.recursive:
|
||||
location_ids = location_obj.search(cr, uid, [('location_id',
|
||||
'child_of', fill_inventory.location_id.id)], order="id")
|
||||
'child_of', [fill_inventory.location_id.id])], order="id",
|
||||
context=context)
|
||||
else:
|
||||
location_ids = [fill_inventory.location_id.id]
|
||||
|
||||
res = {}
|
||||
flag = False
|
||||
|
||||
for location in location_ids:
|
||||
datas = {}
|
||||
res[location] = {}
|
||||
|
@ -88,30 +97,34 @@ class stock_fill_inventory(osv.osv_memory):
|
|||
lot_id = move.prodlot_id.id
|
||||
prod_id = move.product_id.id
|
||||
qty = move.product_qty
|
||||
location_dest_id = move.location_dest_id.id
|
||||
|
||||
if datas.get((prod_id, lot_id)):
|
||||
qty = datas[(prod_id, lot_id)]['product_qty'] + qty
|
||||
datas[(prod_id, lot_id)] = {'product_id': prod_id, 'location_id': location_dest_id, 'product_qty': qty, 'product_uom': move.product_id.uom_id.id, 'prod_lot_id': lot_id}
|
||||
qty += datas[(prod_id, lot_id)]['product_qty']
|
||||
|
||||
datas[(prod_id, lot_id)] = {'product_id': prod_id, 'location_id': location, 'product_qty': qty, 'product_uom': move.product_id.uom_id.id, 'prod_lot_id': lot_id}
|
||||
|
||||
if datas:
|
||||
flag = True
|
||||
res[location] = datas
|
||||
|
||||
if not flag:
|
||||
raise osv.except_osv(_('Message !'), _('No product in this location.'))
|
||||
raise osv.except_osv(_('Warning !'), _('No product in this location.'))
|
||||
|
||||
for i in res.values():
|
||||
if i.values():
|
||||
for mydata in i.values():
|
||||
mydata.update({'inventory_id': context['active_ids'][0]})
|
||||
for stock_move in res.values():
|
||||
for stock_move_details in stock_move.values():
|
||||
stock_move_details.update({'inventory_id': context['active_ids'][0]})
|
||||
domain = []
|
||||
if fill_inventory.set_stock_zero:
|
||||
mydata.update({'product_qty': 0})
|
||||
for k, v in mydata.items():
|
||||
domain.append((k, '=', v))
|
||||
line_ids = inventory_line_obj.search(cr, uid, domain)
|
||||
|
||||
if not len(line_ids):
|
||||
inventory_line_obj.create(cr, uid, mydata)
|
||||
if fill_inventory.set_stock_zero:
|
||||
stock_move_details.update({'product_qty': 0})
|
||||
|
||||
for field, value in stock_move_details.items():
|
||||
domain.append((field, '=', value))
|
||||
|
||||
line_ids = inventory_line_obj.search(cr, uid, domain, context=context)
|
||||
|
||||
if not line_ids:
|
||||
inventory_line_obj.create(cr, uid, stock_move_details, context=context)
|
||||
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
|
|
|
@ -34,26 +34,30 @@ class stock_invoice_onshipping(osv.osv_memory):
|
|||
return []
|
||||
|
||||
model_pool = self.pool.get(model)
|
||||
acct_obj = self.pool.get('account.journal')
|
||||
journal_obj = self.pool.get('account.journal')
|
||||
res_ids = context and context.get('active_ids', [])
|
||||
vals=[]
|
||||
pick_types = list(set(map(lambda x: x.type, model_pool.browse(cr, uid, res_ids, context=context))))
|
||||
for type in pick_types:
|
||||
if type == 'out':
|
||||
value = acct_obj.search(cr, uid, [('type', 'in',('sale','purchase_refund') )])
|
||||
for jr_type in acct_obj.browse(cr, uid, value, context=context):
|
||||
t1 = jr_type.id,jr_type.name
|
||||
vals.append(t1)
|
||||
vals = []
|
||||
browse_picking = model_pool.browse(cr, uid, res_ids, context=context)
|
||||
|
||||
elif type == 'in':
|
||||
value = acct_obj.search(cr, uid, [('type', 'in',('purchase','sale_refund') )])
|
||||
for jr_type in acct_obj.browse(cr, uid, value, context=context):
|
||||
t1 = jr_type.id,jr_type.name
|
||||
vals.append(t1)
|
||||
for pick in browse_picking:
|
||||
src_usage = pick.move_lines[0].location_id.usage
|
||||
dest_usage = pick.move_lines[0].location_dest_id.usage
|
||||
type = pick.type
|
||||
if type == 'out' and dest_usage == 'supplier':
|
||||
journal_type = 'purchase_refund'
|
||||
elif type == 'out' and dest_usage == 'customer':
|
||||
journal_type = 'sale'
|
||||
elif type == 'in' and src_usage == 'supplier':
|
||||
journal_type = 'purchase'
|
||||
elif type == 'in' and src_usage == 'customer':
|
||||
journal_type = 'sale_refund'
|
||||
else:
|
||||
value = acct_obj.search(cr, uid, [('type', 'in',('cash','bank','general','situation') )])
|
||||
for jr_type in acct_obj.browse(cr, uid, value, context=context):
|
||||
journal_type = 'sale'
|
||||
|
||||
value = journal_obj.search(cr, uid, [('type', '=',journal_type )])
|
||||
for jr_type in journal_obj.browse(cr, uid, value, context=context):
|
||||
t1 = jr_type.id,jr_type.name
|
||||
if t1 not in vals:
|
||||
vals.append(t1)
|
||||
return vals
|
||||
|
||||
|
@ -61,14 +65,12 @@ class stock_invoice_onshipping(osv.osv_memory):
|
|||
_name = "stock.invoice.onshipping"
|
||||
_description = "Stock Invoice Onshipping"
|
||||
|
||||
|
||||
_columns = {
|
||||
'journal_id': fields.selection(_get_journal_id, 'Destination Journal',required=True),
|
||||
'group': fields.boolean("Group by partner"),
|
||||
'invoice_date': fields.date('Invoiced date'),
|
||||
}
|
||||
|
||||
|
||||
def view_init(self, cr, uid, fields_list, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
|
|
|
@ -304,7 +304,7 @@ class stock_move_split_lines_exist(osv.osv_memory):
|
|||
'prodlot_id': fields.many2one('stock.production.lot', 'Production Lot'),
|
||||
}
|
||||
_defaults = {
|
||||
'quantity': lambda *x: 1.0,
|
||||
'quantity': 1.0,
|
||||
}
|
||||
|
||||
stock_move_split_lines_exist()
|
||||
|
@ -320,7 +320,7 @@ class stock_move_split_lines(osv.osv_memory):
|
|||
'action': fields.selection([('split','Split'),('keepinone','Keep in one lot')],'Action'),
|
||||
}
|
||||
_defaults = {
|
||||
'quantity': lambda *x: 1.0,
|
||||
'action' : lambda *x: 'split',
|
||||
'quantity': 1.00,
|
||||
'action' : 'split',
|
||||
}
|
||||
stock_move_split_lines()
|
||||
|
|
|
@ -37,7 +37,10 @@ class invoice_directly(osv.osv_memory):
|
|||
context = {}
|
||||
result = super(invoice_directly, self).do_partial(cr, uid, ids, context)
|
||||
pick_obj = self.pool.get('stock.picking')
|
||||
context.update({'active_model':'stock.picking'})
|
||||
picking_ids = context.get('active_ids', False)
|
||||
if picking_ids:
|
||||
context.update({'active_id':picking_ids[0]})
|
||||
pick = pick_obj.browse(cr, uid, picking_ids, context=context)[0]
|
||||
if pick.invoice_state == '2binvoiced':
|
||||
return {
|
||||
|
@ -47,6 +50,7 @@ class invoice_directly(osv.osv_memory):
|
|||
'res_model': 'stock.invoice.onshipping',
|
||||
'type': 'ir.actions.act_window',
|
||||
'target': 'new',
|
||||
'context': context
|
||||
}
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
|
||||
|
|
0
addons/thunderbird/plugin/openerp_plugin/defaults/preferences/tiny.js
Executable file → Normal file
0
addons/thunderbird/plugin/openerp_plugin/defaults/preferences/tiny.js
Executable file → Normal file
|
@ -127,7 +127,7 @@ class users(osv.osv):
|
|||
cr.close()
|
||||
return res
|
||||
l.unbind()
|
||||
except Exception, e:
|
||||
except Exception:
|
||||
logger.warning("Cannot auth", exc_info=True)
|
||||
continue
|
||||
cr.close()
|
||||
|
@ -138,6 +138,11 @@ class users(osv.osv):
|
|||
return super(users,self).check(db, uid, passwd)
|
||||
except security.ExceptionNoTb: # AccessDenied
|
||||
pass
|
||||
|
||||
if not passwd:
|
||||
# empty passwords disallowed for obvious security reasons
|
||||
raise security.ExceptionNoTb('AccessDenied')
|
||||
|
||||
cr = pooler.get_db(db).cursor()
|
||||
user = self.browse(cr, 1, uid)
|
||||
logger = logging.getLogger('orm.ldap')
|
||||
|
@ -156,13 +161,15 @@ class users(osv.osv):
|
|||
result_type, result_data = l.result(result_id, timeout)
|
||||
if result_data and result_type == ldap.RES_SEARCH_RESULT and len(result_data) == 1:
|
||||
dn = result_data[0][0]
|
||||
# some LDAP servers allow anonymous binding with blank passwords,
|
||||
# but these have been rejected above, so we're safe to use bind()
|
||||
if l.bind_s(dn, passwd):
|
||||
l.unbind()
|
||||
self._uid_cache.setdefault(db, {})[uid] = passwd
|
||||
cr.close()
|
||||
return True
|
||||
l.unbind()
|
||||
except Exception, e:
|
||||
except Exception:
|
||||
logger.warning('cannot check', exc_info=True)
|
||||
pass
|
||||
cr.close()
|
||||
|
|
|
@ -8,15 +8,15 @@ msgstr ""
|
|||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-02 17:52+0530\n"
|
||||
"PO-Revision-Date: 2011-02-06 12:04+0000\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"PO-Revision-Date: 2011-03-12 20:33+0000\n"
|
||||
"Last-Translator: mgaja (GrupoIsep.com) <Unknown>\n"
|
||||
"Language-Team: Catalan <ca@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-02-07 06:24+0000\n"
|
||||
"X-Generator: Launchpad (build 12177)\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-13 06:16+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#: widgets/wikimarkup/__init__.py:1981
|
||||
msgid "Table of Contents"
|
||||
msgstr ""
|
||||
msgstr "Índex"
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
# Danish translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-02 17:52+0530\n"
|
||||
"PO-Revision-Date: 2011-04-29 12:05+0000\n"
|
||||
"Last-Translator: Hans Henrik Gabelgaard <Unknown>\n"
|
||||
"Language-Team: Danish <da@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-04-30 06:08+0000\n"
|
||||
"X-Generator: Launchpad (build 12758)\n"
|
||||
|
||||
#: widgets/wikimarkup/__init__.py:1981
|
||||
msgid "Table of Contents"
|
||||
msgstr "Indholdsfortegnelse"
|
|
@ -0,0 +1,22 @@
|
|||
# Spanish (Paraguay) translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-02 17:52+0530\n"
|
||||
"PO-Revision-Date: 2011-03-21 16:31+0000\n"
|
||||
"Last-Translator: fadel <Unknown>\n"
|
||||
"Language-Team: Spanish (Paraguay) <es_PY@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-22 06:23+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#: widgets/wikimarkup/__init__.py:1981
|
||||
msgid "Table of Contents"
|
||||
msgstr "Tabla de Contenido"
|
|
@ -0,0 +1,22 @@
|
|||
# Galician translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-02 17:52+0530\n"
|
||||
"PO-Revision-Date: 2011-03-02 23:19+0000\n"
|
||||
"Last-Translator: Santi (Pexego) <santiago@pexego.es>\n"
|
||||
"Language-Team: Galician <gl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-03 06:01+0000\n"
|
||||
"X-Generator: Launchpad (build 12351)\n"
|
||||
|
||||
#: widgets/wikimarkup/__init__.py:1981
|
||||
msgid "Table of Contents"
|
||||
msgstr "Índice"
|
|
@ -0,0 +1,22 @@
|
|||
# Russian translation for openobject-addons
|
||||
# Copyright (c) 2011 Rosetta Contributors and Canonical Ltd 2011
|
||||
# This file is distributed under the same license as the openobject-addons package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, 2011.
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: openobject-addons\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2010-08-02 17:52+0530\n"
|
||||
"PO-Revision-Date: 2011-03-16 00:17+0000\n"
|
||||
"Last-Translator: Stanislav Hanzhin <Unknown>\n"
|
||||
"Language-Team: Russian <ru@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2011-03-17 06:12+0000\n"
|
||||
"X-Generator: Launchpad (build 12559)\n"
|
||||
|
||||
#: widgets/wikimarkup/__init__.py:1981
|
||||
msgid "Table of Contents"
|
||||
msgstr "Содержание"
|
Loading…
Reference in New Issue