bzr revid: uco@tinyerp.co.in-20100209092945-euho9ej5gypwckrh
This commit is contained in:
uco (OpenERP)
2010-02-09 14:59:45 +05:30
49 changed files with 1567 additions and 878 deletions
+2 -2
View File
@@ -798,8 +798,8 @@
<field name="arch" type="xml">
<search string="Search Entry Lines">
<group col='10' colspan='4'>
<filter icon="terp-account" string="Draft" domain="[('state','=','draft')]" help="Draft Move Lines"/>
<filter icon="terp-account" string="Posted" domain="[('state','=','valid')]" help="Posted Move Lines"/>
<filter icon="terp-account" string="Draft" domain="[('state','=','draft')]" help="Draft Entry Lines"/>
<filter icon="terp-account" string="Posted" domain="[('state','=','valid')]" help="Posted Entry Lines"/>
<separator orientation="vertical"/>
<field name="date" select='1'/>
<field name="account_id" select='1'/>
+4 -4
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-01-02 04:23+0000\n"
"Last-Translator: Federico Vera <Unknown>\n"
"PO-Revision-Date: 2010-02-08 18:04+0000\n"
"Last-Translator: Hilario J. Montoliu (hjmf) <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-01-03 04:45+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:11+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -435,7 +435,7 @@ msgstr "Negativo"
#. module: account
#: rml:account.partner.balance:0
msgid "(Account/Partner) Name"
msgstr "(Cuenta/Socio) Nombre"
msgstr "Nombre de Cuenta/Empresa"
#. module: account
#: selection:account.move,type:0
+14 -14
View File
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-23 08:57+0000\n"
"Last-Translator: Normunds <Unknown>\n"
"PO-Revision-Date: 2010-02-08 18:27+0000\n"
"Last-Translator: sraps (KN dati) <Unknown>\n"
"Language-Team: Latvian <lv@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: 2009-12-24 04:40+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:11+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account
@@ -470,7 +470,7 @@ msgstr ""
#: model:ir.actions.wizard,name:account.action_account_bank_reconcile_tree
#: model:ir.ui.menu,name:account.menu_action_account_bank_reconcile_check_tree
msgid "Bank reconciliation"
msgstr "Bankas sasaiste"
msgstr "Kontējumu sasaiste"
#. module: account
#: rml:account.invoice:0
@@ -844,7 +844,7 @@ msgstr "6"
#. module: account
#: model:ir.ui.menu,name:account.next_id_30
msgid "Bank Reconciliation"
msgstr "Bankas Sasaiste"
msgstr "Kontējumu sasaiste"
#. module: account
#: model:ir.model,name:account.model_account_account_template
@@ -1195,7 +1195,7 @@ msgstr ""
#. module: account
#: view:res.partner:0
msgid "Bank account"
msgstr ""
msgstr "Bankas konts"
#. module: account
#: field:account.chart.template,tax_template_ids:0
@@ -1542,7 +1542,7 @@ msgstr ""
#. module: account
#: field:account.invoice,move_id:0
msgid "Invoice Movement"
msgstr ""
msgstr "Rēķina Grāmatojums"
#. module: account
#: model:ir.actions.act_window,name:account.action_wizard_multi_chart
@@ -2473,7 +2473,7 @@ msgstr ""
#: model:process.node,name:account.process_node_bankstatement0
#: model:process.node,name:account.process_node_supplierbankstatement0
msgid "Bank Statement"
msgstr ""
msgstr "Bankas konta izraksts"
#. module: account
#: wizard_view:account.invoice.pay,addendum:0
@@ -3384,7 +3384,7 @@ msgstr ""
#. module: account
#: model:ir.actions.act_window,name:account.act_account_journal_2_account_bank_statement
msgid "Bank statements"
msgstr ""
msgstr "Bankas konta izraksts"
#. module: account
#: model:ir.ui.menu,name:account.next_id_22
@@ -3838,7 +3838,7 @@ msgstr ""
#. module: account
#: selection:account.general.ledger.report,checktype,sortbydate:0
msgid "Movement"
msgstr ""
msgstr "Grāmatojums"
#. module: account
#: help:account.period,special:0
@@ -4321,7 +4321,7 @@ msgstr ""
#. module: account
#: selection:account.move,type:0
msgid "Bank Payment"
msgstr ""
msgstr "Bankas maksājums"
#. module: account
#: selection:account.move,state:0
@@ -4766,7 +4766,7 @@ msgstr ""
#: field:account.bank.statement.reconcile,statement_line:0
#: model:ir.model,name:account.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""
msgstr "Konta izraksta rinda"
#. module: account
#: wizard_button:account.automatic.reconcile,reconcile,end:0
@@ -5458,7 +5458,7 @@ msgstr "account.tax.template"
#. module: account
#: field:wizard.multi.charts.accounts,bank_accounts_id:0
msgid "Bank Accounts"
msgstr ""
msgstr "Bankas Konti"
#. module: account
#: constraint:account.period:0
@@ -5735,7 +5735,7 @@ msgstr ""
#: field:account.chart.template,bank_account_view_id:0
#: field:account.invoice,partner_bank:0
msgid "Bank Account"
msgstr ""
msgstr "Bankas Konts"
#. module: account
#: model:ir.actions.act_window,name:account.action_model_form
+5 -5
View File
@@ -193,7 +193,7 @@ class account_invoice(osv.osv):
temp_lines = map(lambda x: x.id, m.reconcile_partial_id.line_partial_ids)
lines += [x for x in temp_lines if x not in lines]
src.append(m.id)
lines = filter(lambda x: x not in src, lines)
result[invoice.id] = lines
return result
@@ -230,7 +230,7 @@ class account_invoice(osv.osv):
_order = "number"
_columns = {
'name': fields.char('Description', size=64, select=True,readonly=True, states={'draft':[('readonly',False)]}),
'origin': fields.char('Origin', size=64, help="Reference of the document that produced this invoice."),
'origin': fields.char('Source Document', size=64, help="Reference of the document that produced this invoice."),
'type': fields.selection([
('out_invoice','Customer Invoice'),
('in_invoice','Supplier Invoice'),
@@ -1000,7 +1000,7 @@ class account_invoice(osv.osv):
if invoice.type in ('in_invoice', 'in_refund'):
ref = invoice.reference
else:
ref = self._convert_ref(cr, uid, invoice.number)
ref = self._convert_ref(cr, uid, invoice.number)
# Pay attention to the sign for both debit/credit AND amount_currency
l1 = {
'debit': direction * pay_amount>0 and direction * pay_amount,
@@ -1240,11 +1240,11 @@ class account_invoice_line(osv.osv):
company = self.pool.get('res.company').browse(cr, uid, company_id)
currency = self.pool.get('res.currency').browse(cr, uid, currency_id)
if not currency.company_id.id == company.id:
raise osv.except_osv(_('Configration Error !'),
_('Can not select currency that is not related to any company.\nPlease select accordingly !.'))
if company.currency_id.id != currency.id:
new_price = res_final['value']['price_unit'] * currency.rate
res_final['value']['price_unit'] = new_price
+12 -12
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-01 15:54+0000\n"
"PO-Revision-Date: 2010-02-08 06:26+0000\n"
"Last-Translator: Wei \"oldrev\" Li <oldrev@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2009-12-16 05:04+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:10+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: account_report
@@ -154,12 +154,12 @@ msgstr ""
#: wizard_button:print.indicators,next,print:0
#: wizard_button:print.indicators.pdf,init,print:0
msgid "Print"
msgstr ""
msgstr "打印"
#. module: account_report
#: field:account.report.report,type:0
msgid "Type"
msgstr ""
msgstr "类型"
#. module: account_report
#: model:ir.actions.report.xml,name:account_report.report_indicator_pdf
@@ -175,27 +175,27 @@ msgstr ""
#: view:account.report.report:0
#: selection:account.report.report,status:0
msgid "Good"
msgstr ""
msgstr "良好"
#. module: account_report
#: view:account.report.history:0
msgid "Account Report History"
msgstr ""
msgstr "科目报表历史记录"
#. module: account_report
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
msgstr "无效的XML视图结构!"
#. module: account_report
#: help:account.report.report,badness_limit:0
msgid "This Value sets the limit of badness."
msgstr ""
msgstr "此值设置好坏评估标准的限制"
#. module: account_report
#: wizard_field:print.indicators,init,select_base:0
msgid "Choose Criteria"
msgstr ""
msgstr "选择标准"
#. module: account_report
#: view:account.report.report:0
@@ -221,18 +221,18 @@ msgstr ""
#: view:account.report.report:0
#: selection:account.report.report,status:0
msgid "Very Good"
msgstr ""
msgstr "非常好"
#. module: account_report
#: field:account.report.report,note:0
msgid "Note"
msgstr ""
msgstr "备注"
#. module: account_report
#: rml:accounting.report:0
#: rml:print.indicators:0
msgid "Currency:"
msgstr ""
msgstr "货币:"
#. module: account_report
#: field:account.report.report,status:0
+11 -1
View File
@@ -421,6 +421,16 @@ class basic_calendar_line(osv.osv):
'domain': lambda *a: '[]',
}
def create(self, cr, uid, vals, context={}):
cr.execute("Select count(id) from basic_calendar_lines \
where name='%s' and calendar_id=%s" % (vals.get('name'), vals.get('calendar_id')))
res = cr.fetchone()
if res:
if res[0] > 0:
raise osv.except_osv(_('Warning !'), _('Can not create \
line "%s" more than once' % (vals.get('name'))))
return super(basic_calendar_line, self).create(cr, uid, vals, context=context)
basic_calendar_line()
class basic_calendar_attribute(osv.osv):
@@ -482,7 +492,7 @@ class basic_calendar_fields(osv.osv):
res = cr.fetchone()
if res:
if res[0] > 0:
raise osv.except_osv(_('Warning !'), _('Can not map same field more than once'))
raise osv.except_osv(_('Warning !'), _('Can not map the field more than once'))
return super(basic_calendar_fields, self).create(cr, uid, vals, context=context)
def write(self, cr, uid, ids, vals, context=None):
+3 -3
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,7 +15,7 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -27,7 +27,7 @@
'description': """
This module creates a dashboards for Manufaturing that includes:
* List of next production orders
* List of deliveries (out packing)
* List of deliveries (out picking)
* Graph of work center load
* List of procurement in exception
""",
+12 -2
View File
@@ -190,7 +190,7 @@ class invite_attendee_wizard(osv.osv_memory):
to send an Email to Invited Person')
}
def do_invite(self, cr, uid, ids, context={}):
def do_invite(self, cr, uid, ids, context={}):
datas = self.read(cr, uid, ids)[0]
model = False
model_field = False
@@ -386,7 +386,7 @@ request was delegated to"),
'language': fields.function(_compute_data, method=True, string='Language', type="selection", selection=_lang_get, multi='language', store=True, help="To specify the language for text values in a property or property parameter."),
'user_id': fields.many2one('res.users', 'User'),
'partner_address_id': fields.many2one('res.partner.address', 'Contact'),
'partner_id':fields.related('partner_address_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),
'partner_id': fields.related('partner_address_id', 'partner_id', type='many2one', relation='res.partner', string='Partner'),
'email': fields.char('Email', size=124, required=True),
'event_date': fields.function(_compute_data, method=True, string='Event Date', type="datetime", multi='event_date'),
'event_end_date': fields.function(_compute_data, method=True, string='Event End Date', type="datetime", multi='event_end_date'),
@@ -753,6 +753,16 @@ rule or repeating pattern for anexception to a recurrence set"),
'class': lambda *a: 'public',
'show_as': lambda *a: 'busy',
}
def onchange_user_id(self, cr, uid, ids, user_id, *args, **argv):
if not user_id:
return {'value': {'vtimezone': ''}}
value = {}
cr.execute('select context_tz from res_users where id=%s' % (user_id))
timezone = cr.fetchone()
if timezone:
value.update({'vtimezone': timezone[0].lower()})
return {'value': value}
def export_cal(self, cr, uid, ids, context={}):
ids = map(lambda x: caldav_id2real_id(x), ids)
+41 -31
View File
@@ -156,37 +156,47 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Leads">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Leads"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Leads during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select="1"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]" help="My Leads"
default="1"
/>
</field>
<field name="state" select="1">
<filter icon="gtk-new" domain="[('state','in',('draft', 'open'))]" help="Current Leads" default="1"/>
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Leads"/>
</field>
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"
/>
</field>
</group>
<group colspan="4">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Leads"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Leads during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select="1"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]" help="My Leads"
default="1"
/>
</field>
<field name="state" select="1">
<filter icon="gtk-new" domain="[('state','in',('draft', 'open'))]" help="Current Leads" default="1"/>
<filter icon="gtk-yes" domain="[('state','=','open')]" help="Open Leads"/>
</field>
<field name="section_id" select="1" default="context.get('section_id', False)" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"
/>
</field>
</group>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="4" col="20">
<filter string="By Status" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="By Lead Source" icon="terp-crm" domain="[]" context="{'group_by':'categ_id'}"/>
<filter string="By Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="By Create Date" icon="terp-crm" domain="[]" context="{'group_by':'date'}"/>
</group>
</search>
</field>
</record>
+1 -1
View File
@@ -87,7 +87,7 @@
<field name="priority"/>
<field name="show_as"/>
<field name="class"/>
<field name="user_id"/>
<field name="user_id" on_change="onchange_user_id(user_id)"/>
<field name="section_id" widget="selection"
/>
<field name="vtimezone"/>
+44 -33
View File
@@ -71,7 +71,7 @@
<field name="type_id" select="1" string="Campaign"/>
<field name="section_id" colspan="1" widget="selection"/>
<field name="priority" string="Priority"/>
<field name="date" string="Create Date"/>
</group>
@@ -156,8 +156,9 @@
<field name="name" string="Opportunities"/>
<field name="stage_id" string="Sales Stage"/>
<field name="partner_id" string="Partner"/>
<field name="planned_revenue"/>
<field name="probability"/>
<field name="planned_revenue" sum="Total of Planned Revenue"/>
<field name="probability" avg="Avg. of Probability"/>
<field name="date" string="Create Date"/>
<field name="date_deadline" string="Excepted Close Date"/>
<field name="user_id"/>
<field name="state"/>
@@ -187,36 +188,46 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Opportunities">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Opportunities"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Opportunities during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select="1" string="Opportunity"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]"
help="My Opportunities" default="1"
/>
</field>
<field name="partner_id" select="1"/>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft'))]" help="Current " default="1"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
</group>
<group colspan="4">
<group col="3" colspan="1">
<filter icon="gtk-home" string=" Today "
separator="1"
domain="[('date::date','=',time.strftime('%%Y-%%m-%%d'))]"
help="Todays's Opportunities"
/>
<filter icon="gtk-media-rewind" string=" 7 Days "
separator="1" help="Opportunities during last 7 days"
domain="[('date','&lt;', time.strftime('%%Y-%%m-%%d')), ('date','&gt;=',(datetime.date.today()-datetime.timedelta(days=7)).strftime('%%Y-%%m-%%d'))]"
/>
</group>
<separator orientation="vertical"/>
<group col="6" colspan="2">
<field name="name" select="1" string="Opportunity"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-partner"
domain="[('user_id','=',uid)]"
help="My Opportunities" default="1"
/>
</field>
<field name="partner_id" select="1"/>
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft'))]" help="Current " default="1"/>
</field>
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
</group>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="4">
<filter string="By Stage" icon="terp-crm" domain="[]" context="{'group_by':'stage_id'}"/>
<filter string="By Partner" icon="terp-crm" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="By Responsible" icon="terp-crm" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="By Create Date" icon="terp-crm" domain="[]" context="{'group_by':'date'}"/>
</group>
</search>
</field>
</record>
+66 -53
View File
@@ -7,19 +7,19 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.0\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2010-01-05 05:59+0000\n"
"PO-Revision-Date: 2010-01-06 06:23+0000\n"
"Last-Translator: mra (Open ERP) <mra@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-08 23:58+0000\n"
"Last-Translator: Sebastien LANGE - http://www.Syleam.fr <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-01-07 04:49+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:11+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: crm
#: field:crm.email.add.cc,name:0
msgid "Send to"
msgstr ""
msgstr "Envoyer à :"
#. module: crm
#: help:crm.meeting,exdate:0
@@ -27,22 +27,26 @@ msgid ""
"This property defines the list of date/time exceptions for "
"arecurring calendar component."
msgstr ""
"Cette propriété définit la liste des exceptions de dates / temps pour les "
"composant de calendrier récurent."
#. module: crm
#: help:crm.case.rule,act_mail_to_user:0
msgid ""
"Check this if you want the rule to send an email to the responsible person."
msgstr ""
"Cochez cette case si vous voulez que la règle envoie un email à la personne "
"responsable."
#. module: crm
#: view:crm.meeting:0
msgid "Title"
msgstr ""
msgstr "Titre"
#. module: crm
#: model:ir.model,name:crm.model_report_crm_case_section_categ2
msgid "Cases by section and category2"
msgstr ""
msgstr "Cas par section et catégorie2"
#. module: crm
#: wizard_field:crm.lead.partner_create,init,close:0
@@ -55,17 +59,17 @@ msgstr "Cloture une affaire"
#: view:crm.opportunity:0
#: view:crm.phonecall:0
msgid " 7 Days "
msgstr ""
msgstr " 7 Jours "
#. module: crm
#: help:crm.menu.config_wizard,helpdesk:0
msgid "Manages an Helpdesk service."
msgstr ""
msgstr "Gérer un service de support"
#. module: crm
#: view:crm.job:0
msgid "Pending Jobs"
msgstr ""
msgstr "Travaux en attente."
#. module: crm
#: field:crm.case.rule,trg_state_to:0
@@ -80,12 +84,12 @@ msgstr "Coûts planifiés"
#. module: crm
#: wizard_field:crm.job.partner_create,init,close:0
msgid "Close job request"
msgstr ""
msgstr "Fermer la demande d’emploi."
#. module: crm
#: field:crm.case.stage,name:0
msgid "Stage Name"
msgstr ""
msgstr "Nom de l'étape"
#. module: crm
#: view:crm.case:0
@@ -109,12 +113,12 @@ msgstr ""
#. module: crm
#: model:ir.ui.menu,name:crm.menu_hr
msgid "Human Resources"
msgstr ""
msgstr "Ressources humaines"
#. module: crm
#: model:ir.ui.menu,name:crm.menu_action_report_crm_case_oppor_categ_categ2
msgid "Cases by Opportunities, Category and Type"
msgstr ""
msgstr "Cas par opportunités, catégorie et type"
#. module: crm
#: help:crm.menu.config_wizard,claims:0
@@ -122,22 +126,24 @@ msgid ""
"Manages the supplier and customers claims, including your corrective or "
"preventive actions."
msgstr ""
"Gérér les réclamations fournisseurs et clients, incluant vos actions "
"correctives ou préventives."
#. module: crm
#: view:crm.fundraising:0
msgid "Amount"
msgstr ""
msgstr "Montant"
#. module: crm
#: model:process.transition,note:crm.process_transition_opportunitymeeting0
msgid "Normal or phone meeting for opportunity"
msgstr ""
msgstr "Rendez-vous ou conférence téléphonique pour l'opportunité"
#. module: crm
#: model:crm.case.stage,name:crm.stage_claim2
#: model:crm.case.stage,name:crm.stage_meet1
msgid "Fixed"
msgstr ""
msgstr "Fixé"
#. module: crm
#: code:addons/crm/crm.py:0
@@ -153,33 +159,35 @@ msgstr "Avertissement !"
#, python-format
msgid "Please specify user's email address !"
msgstr ""
"S'il vous plaît indiquez l'adresse de messagerie électronique de "
"l'utilisateur !"
#. module: crm
#: model:crm.case.categ,name:crm.categ_oppor5
msgid "Campaign"
msgstr ""
msgstr "Campagne"
#. module: crm
#: view:crm.opportunity:0
msgid "Search Opportunities"
msgstr ""
msgstr "Recherche d’opportunité"
#. module: crm
#: model:ir.ui.menu,name:crm.menu_crm_case_section_stage_tree
#: view:report.crm.case.section.stage:0
msgid "Cases by Section and Stage"
msgstr ""
msgstr "Cas par section et étape"
#. module: crm
#: wizard_field:crm.job.meeting_set,init,duration:0
#: wizard_field:crm.phonecall.meeting_set,init,duration:0
msgid "Duration (Hours)"
msgstr ""
msgstr "Durée (heures)"
#. module: crm
#: selection:crm.meeting,transparent:0
msgid "TRANSPARENT"
msgstr ""
msgstr "TRANSPARENT"
#. module: crm
#: help:crm.case.rule,server_action_id:0
@@ -187,6 +195,8 @@ msgid ""
"Describes the action name.eg:on which object which ation to be taken on "
"basis of which condition"
msgstr ""
"Décrit le nom de l'action. par exemple : sur quel objet quel action de base "
"doit prendre quel condition"
#. module: crm
#: help:crm.case,section_id:0
@@ -194,6 +204,8 @@ msgid ""
"Section to which Case belongs to. Define Responsible user and Email account "
"for mail gateway."
msgstr ""
"Section à laquelle l'affaire appartient. Préciser l'utilisateur responsable "
"et le compte de messagerie pour la passerelle de messagerie."
#. module: crm
#: view:crm.case:0
@@ -227,12 +239,13 @@ msgstr "Section du cas"
#. module: crm
#: view:crm.job:0
msgid "Proposed Salary"
msgstr ""
msgstr "Salaire proposé"
#. module: crm
#: help:crm.case.section,sequence:0
msgid "Gives the sequence order when displaying a list of case sections."
msgstr ""
"Donne l'ordre de séquence lors de l'affichage d'une liste de cas.de sections"
#. module: crm
#: code:addons/crm/wizard/crm_job_wizard.py:0
@@ -240,12 +253,12 @@ msgstr ""
#: model:crm.case.categ,name:crm.categ_meet3
#, python-format
msgid "Phone Call"
msgstr ""
msgstr "Appel téléphonique"
#. module: crm
#: model:ir.model,name:crm.model_report_crm_case_section_stage
msgid "Cases by section and stage"
msgstr ""
msgstr "Cas par section et étape"
#. module: crm
#: field:crm.case.rule,act_mail_to_email:0
@@ -260,7 +273,7 @@ msgstr "Aucune"
#. module: crm
#: view:crm.case.rule:0
msgid "Special Keywords to Be Used in The Body"
msgstr "Des mots clés spéciaux peuvent être utiliser dans le corps"
msgstr "Des mots clés spéciaux peuvent être utilisés dans le corps"
#. module: crm
#: view:crm.case:0
@@ -270,7 +283,7 @@ msgstr "Des mots clés spéciaux peuvent être utiliser dans le corps"
#: view:crm.lead:0
#: view:crm.opportunity:0
msgid "Send New Email"
msgstr ""
msgstr "Envoyez un nouveau courriel."
#. module: crm
#: view:crm.case.history:0
@@ -291,12 +304,12 @@ msgstr "Sections"
#. module: crm
#: help:crm.menu.config_wizard,opportunity:0
msgid "Tracks identified business opportunities for your sales pipeline."
msgstr ""
msgstr "Suivi des occasions identifiées d'affaires pour vos canaux de vente."
#. module: crm
#: view:crm.meeting:0
msgid "Exception Dates"
msgstr ""
msgstr "Exceptions de date"
#. module: crm
#: selection:crm.case.rule,trg_date_type:0
@@ -306,12 +319,12 @@ msgstr "Date de la dernière action"
#. module: crm
#: view:crm.job:0
msgid "Appreciation"
msgstr ""
msgstr "Appréciation"
#. module: crm
#: model:crm.case.stage,name:crm.stage_job3
msgid "Second Interview"
msgstr ""
msgstr "Second entretien"
#. module: crm
#: model:ir.actions.wizard,name:crm.wizard_crm_cal_subscribe
@@ -328,7 +341,7 @@ msgstr "Catégories"
#: code:addons/crm/wizard/wizard_crm_new_send_email.py:0
#, python-format
msgid "Warning!"
msgstr ""
msgstr "Avertissement !"
#. module: crm
#: view:crm.case:0
@@ -354,12 +367,12 @@ msgstr ""
#: view:crm.fundraising:0
#: view:crm.opportunity:0
msgid "Description Information"
msgstr ""
msgstr "Description de l'information"
#. module: crm
#: view:crm.lead:0
msgid "Contact Name"
msgstr ""
msgstr "Nom du contact"
#. module: crm
#: selection:crm.lead.opportunity_set,create_partner,action:0
@@ -380,12 +393,12 @@ msgstr "Après délai"
#: view:crm.opportunity:0
#: view:crm.phonecall:0
msgid "Contact"
msgstr ""
msgstr "Contact"
#. module: crm
#: view:crm.job:0
msgid "Next Interview"
msgstr ""
msgstr "Prochain entretien"
#. module: crm
#: field:crm.case.rule,regex_history:0
@@ -448,23 +461,23 @@ msgstr "%(email_from)s = Email partenaire"
#. module: crm
#: model:crm.case.stage,name:crm.stage_lead6
msgid "Dead"
msgstr ""
msgstr "Perdu"
#. module: crm
#: view:crm.meeting:0
msgid "Confirm Meeting"
msgstr ""
msgstr "Confirmer le rendez-vous"
#. module: crm
#: model:crm.case.categ,name:crm.categ_lead1
#: model:crm.case.categ,name:crm.categ_oppor1
msgid "Existing Customer"
msgstr ""
msgstr "Client existant"
#. module: crm
#: model:crm.case.category2,name:crm.category_meet2
msgid "Home"
msgstr ""
msgstr "Accueil"
#. module: crm
#: field:crm.case,categ_id:0
@@ -483,7 +496,7 @@ msgstr "Catégorie"
#: model:ir.ui.menu,name:crm.menu_crm_case_section_categ_stage_tree
#: view:report.crm.case.section.categ.stage:0
msgid "Cases by Section, Category and Stage"
msgstr ""
msgstr "Cas par section catégorie et étape"
#. module: crm
#: help:crm.case.rule,act_mail_to_watchers:0
@@ -495,7 +508,7 @@ msgstr ""
#. module: crm
#: field:crm.meeting,class:0
msgid "Privacy"
msgstr ""
msgstr "Privé"
#. module: crm
#: view:crm.case.rule:0
@@ -528,7 +541,7 @@ msgstr ""
#. module: crm
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Nom de modèle invalide pour la définition de l'action"
#. module: crm
#: view:crm.case.rule:0
@@ -555,7 +568,7 @@ msgstr "État"
#: model:ir.actions.wizard,name:crm.wizard_partner_create_opportunity
#: model:ir.actions.wizard,name:crm.wizard_partner_create_opportunity1
msgid "Create Opportunity"
msgstr ""
msgstr "Créer une opportunité"
#. module: crm
#: selection:report.crm.case.section.categ.categ2,month:0
@@ -563,12 +576,12 @@ msgstr ""
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "August"
msgstr ""
msgstr "Août"
#. module: crm
#: view:crm.meeting:0
msgid "Meetings Tree"
msgstr ""
msgstr "Liste des rendez vous"
#. module: crm
#: code:addons/crm/crm.py:0
@@ -585,12 +598,12 @@ msgstr "Escalader"
#. module: crm
#: model:ir.ui.menu,name:crm.menu_crm_case_categ_meet
msgid "All Meetings"
msgstr ""
msgstr "Tous les rendez-vous"
#. module: crm
#: model:ir.module.module,shortdesc:crm.module_meta_information
msgid "Customer & Supplier Relationship Management"
msgstr ""
msgstr "Gestion de la relation Client & Fournisseur"
#. module: crm
#: view:crm.email.add.cc:0
@@ -604,7 +617,7 @@ msgstr ""
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "June"
msgstr ""
msgstr "Juin"
#. module: crm
#: field:crm.segmentation,som_interval_default:0
@@ -614,7 +627,7 @@ msgstr "Facteur par défaut"
#. module: crm
#: model:crm.case.stage,name:crm.stage_job7
msgid "Refused by Company"
msgstr ""
msgstr "Refusé par la société"
#. module: crm
#: field:crm.case,planned_revenue:0
@@ -624,7 +637,7 @@ msgstr "Revenus prévus"
#. module: crm
#: field:crm.case.section,allow_unlink:0
msgid "Allow Delete"
msgstr ""
msgstr "Autoriser la suppression"
#. module: crm
#: selection:report.crm.case.section.categ.categ2,month:0
@@ -632,12 +645,12 @@ msgstr ""
#: selection:report.crm.case.section.categ2,month:0
#: selection:report.crm.case.section.stage,month:0
msgid "October"
msgstr ""
msgstr "Octobre"
#. module: crm
#: model:crm.case.stage,name:crm.stage_oppor3
msgid "Value Proposition"
msgstr ""
msgstr "Nouvelle proposition"
#. module: crm
#: view:crm.case.rule:0
@@ -647,7 +660,7 @@ msgstr "%(case_id)s = ID du cas"
#. module: crm
#: model:crm.case.category2,name:crm.category_oppor2
msgid "New Business"
msgstr ""
msgstr "Nouveau marché"
#. module: crm
#: help:crm.case,email_from:0
+416 -209
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,7 +15,7 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -24,7 +24,7 @@
'name': 'Carriers and deliveries',
'version': '1.0',
'category': 'Generic Modules/Sales & Purchases',
'description': """Allows you to add delivery methods in sales orders and packing. You can define your own carrier and delivery grids for prices. When creating invoices from picking, Open ERP is able to add and compute the shipping line.""",
'description': """Allows you to add delivery methods in sales orders and picking. You can define your own carrier and delivery grids for prices. When creating invoices from picking, Open ERP is able to add and compute the shipping line.""",
'author': 'Tiny',
'depends': ['sale', 'purchase', 'stock'],
'init_xml': ['delivery_data.xml'],
+27 -27
View File
@@ -2,28 +2,28 @@
<openerp>
<data>
<record id="survey_2" model="survey">
<field name="title">EMPLOYEE EVALUATION</field>
<field name="title">Employee Evaluation</field>
<field name="max_response_limit">20</field>
<field eval="[(6,0,[])]" name="users"/>
</record>
</data>
<data>
<record id="survey_3" model="survey">
<field name="title">EMPLOYEE OPINION</field>
<field name="title">Employee Opinion</field>
<field name="max_response_limit">20</field>
<field eval="[(6,0,[])]" name="users"/>
</record>
</data>
<data>
<record id="survey_page_1" model="survey.page">
<field name="title">EMPLOYEE EVALUATION FORM</field>
<field name="title">Employee Evaluation Form</field>
<field name="survey_id" ref="survey_2"/>
<field eval="1" name="sequence"/>
</record>
</data>
<data>
<record id="survey_page_2" model="survey.page">
<field name="title">PROCESS</field>
<field name="title">Process</field>
<field name="survey_id" ref="survey_3"/>
<field eval="1" name="sequence"/>
</record>
@@ -31,14 +31,14 @@
<data>
<record id="survey_page_5" model="survey.page">
<field name="title">WORK PLAN</field>
<field name="title">Work Plan</field>
<field name="survey_id" ref="survey_2"/>
<field eval="2" name="sequence"/>
</record>
</data>
<data>
<record id="survey_page_6" model="survey.page">
<field name="title">EMPLOYEE PERFORMANCE IN KEY AREAS</field>
<field name="title">Employee Performance In Key Areas</field>
<field name="survey_id" ref="survey_2"/>
<field eval="3" name="sequence"/>
<field name="note">The appraiser should rate the employee’s major work accomplishments and performance according to the metric provided below :
@@ -52,7 +52,7 @@
<data>
<record id="survey_page_16" model="survey.page">
<field name="title">PROFESSIONAL DEVELOPMENT AND PERFORMANCE PLAN (optional)</field>
<field name="title">Professional Development And Performance Plan (optional)</field>
<field name="survey_id" ref="survey_2"/>
<field eval="4" name="sequence"/>
<field name="note">Identify professional, performance, or project objectives you recommend for employee’s continued career development over the coming year. </field>
@@ -61,7 +61,7 @@
<data>
<record id="survey_page_26" model="survey.page">
<field name="title">EMPLOYEE COMMENTS</field>
<field name="title">Employee Comments</field>
<field name="survey_id" ref="survey_2"/>
<field eval="5" name="sequence"/>
</record>
@@ -69,7 +69,7 @@
<data>
<record id="survey_page_10" model="survey.page">
<field name="title">SURVEY</field>
<field name="title">Survey</field>
<field name="survey_id" ref="survey_3"/>
<field eval="5" name="sequence"/>
</record>
@@ -138,7 +138,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">ENGAGEMENT</field>
<field name="question">Engagement</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -162,10 +162,10 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">SUBJECT</field>
<field name="question">Subject</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="column_name">RECOMMENDATIONS / EVALUATIONS</field>
<field name="column_name">Recommendations / Evaluations</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
@@ -188,7 +188,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">LEADERSHIP</field>
<field name="question">Leadership</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field eval="0" name="in_visible_menu_choice"/>
@@ -209,7 +209,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">PROCESS</field>
<field name="question">Process</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -236,7 +236,7 @@
<field name="question">Supervisors only : </field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="column_name">RECOMMENDATIONS / EVALUATIONS </field>
<field name="column_name">Recommendations / Evaluations</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
<field eval="0" name="make_comment_field"/>
<field eval="0" name="in_visible_menu_choice"/>
@@ -259,7 +259,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="1" name="sequence"/>
<field name="question">WORK PLAN</field>
<field name="question">Work Plan</field>
<field eval="0" name="is_require_answer"/>
<field name="type">table</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -269,7 +269,7 @@
<field name="comment_label">Other</field>
<field eval="0" name="in_visible_rating_weight"/>
<field eval="0" name="allow_comment"/>
<field eval="5" name="no_of_rows"/>
<field eval="10" name="no_of_rows"/>
</record>
</data>
@@ -285,7 +285,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">EFFECTIVENESS</field>
<field name="question">Effectiveness</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -312,7 +312,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="4" name="sequence"/>
<field name="question">CONTINUOUS IMPROVEMENT</field>
<field name="question">Continuous Improvement</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -362,7 +362,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="5" name="sequence"/>
<field name="question">OPENNESS</field>
<field name="question">Openness</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -389,7 +389,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">OVERALL PERFORMANCE SUMMARY RATING</field>
<field name="question">Overall Performance Summary Rating</field>
<field eval="0" name="is_require_answer"/>
<field name="type">descriptive_text</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -415,7 +415,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">OVERALL PURPOSE OF EMPLOYEE APPRAISAL</field>
<field name="question">Overall Purpose Of Employee Appraisal</field>
<field eval="0" name="is_require_answer"/>
<field name="type">descriptive_text</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -442,7 +442,7 @@
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="6" name="sequence"/>
<field name="question">MISCELLANEOUS</field>
<field name="question">Miscellaneous</field>
<field eval="0" name="is_require_answer"/>
<field name="type">matrix_of_choices_only_one_ans</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -590,7 +590,7 @@ Once the form had been filled, the employee send it to his supervisor.
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="3" name="sequence"/>
<field name="question">EVALUATION PROCESS</field>
<field name="question">Evaluation Process</field>
<field eval="0" name="is_require_answer"/>
<field name="type">descriptive_text</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -634,7 +634,7 @@ Once the form had been filled, the employee send it to his supervisor.
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">PROFESSIONAL DEVELOPMENT OBJECTIVES </field>
<field name="question">Professional Development Objectives </field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -659,7 +659,7 @@ Once the form had been filled, the employee send it to his supervisor.
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="2" name="sequence"/>
<field name="question">PERSONAL PERFORMANCE OBJECTIVES</field>
<field name="question">Personal Performance Objectives</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
@@ -684,7 +684,7 @@ Once the form had been filled, the employee send it to his supervisor.
<field eval="0" name="rating_allow_one_column_require"/>
<field name="req_error_msg">This question requires an answer.</field>
<field eval="4" name="sequence"/>
<field name="question">PROJECT OBJECTIVES</field>
<field name="question">Project Objectives</field>
<field eval="0" name="is_require_answer"/>
<field name="type">comment</field>
<field name="comment_valid_err_msg">The comment you entered is in an invalid format.</field>
+15 -15
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-07 22:30+0000\n"
"PO-Revision-Date: 2010-02-08 18:31+0000\n"
"Last-Translator: Selma <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-02-08 04:45+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:10+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: membership
@@ -61,7 +61,7 @@ msgstr "Definiraj članski proizvod"
#. module: membership
#: field:product.product,membership_date_to:0
msgid "Date to"
msgstr "Datum do"
msgstr "Do datuma:"
#. module: membership
#: model:process.transition,name:membership.process_transition_waitingtoinvoice0
@@ -101,7 +101,7 @@ msgstr ""
#. module: membership
#: field:product.product,membership_date_from:0
msgid "Date from"
msgstr "Datum od"
msgstr "Od datuma:"
#. module: membership
#: field:membership.membership_line,partner:0
@@ -132,7 +132,7 @@ msgstr "Od"
#. module: membership
#: constraint:membership.membership_line:0
msgid "Error, this membership product is out of date"
msgstr ""
msgstr "Greška: ovom članskom proizvodu je istekao rok."
#. module: membership
#: wizard_button:wizard_invoice_membership,init,ok:0
@@ -142,7 +142,7 @@ msgstr "Potvrdi"
#. module: membership
#: model:process.transition.action,name:membership.process_transition_action_create0
msgid "Create"
msgstr "Kreiraj"
msgstr "Napravi"
#. module: membership
#: constraint:ir.ui.view:0
@@ -195,12 +195,12 @@ msgstr "Nije član"
#. module: membership
#: model:process.node,note:membership.process_node_invoicedmember0
msgid "Open invoice."
msgstr "Otvorena faktira."
msgstr "Otvorena faktura"
#. module: membership
#: model:ir.ui.menu,name:membership.menu_conf
msgid "Configuration"
msgstr "Konfiguracija"
msgstr "Podešavanje"
#. module: membership
#: model:process.transition,note:membership.process_transition_producttomember0
@@ -210,7 +210,7 @@ msgstr "Definiraj proizvod za članstvo"
#. module: membership
#: model:process.transition,note:membership.process_transition_invoicetoassociate0
msgid "Invoiced member may be Associated member."
msgstr ""
msgstr "Fakturisani član može biti udruženi član."
#. module: membership
#: constraint:product.template:0
@@ -221,7 +221,7 @@ msgstr ""
#: model:ir.ui.menu,name:membership.menu_membership_products
#: view:product.product:0
msgid "Membership products"
msgstr ""
msgstr "Članski proizvodi"
#. module: membership
#: model:ir.ui.menu,name:membership.menu_members_waiting
@@ -236,12 +236,12 @@ msgstr ""
#. module: membership
#: model:product.template,name:membership.member_product_1_product_template
msgid "Membership Product - 2"
msgstr ""
msgstr "Članski proizvod - 2"
#. module: membership
#: model:product.template,name:membership.member_product_0_product_template
msgid "Membership Product - 1"
msgstr ""
msgstr "Članski proizvod - 1"
#. module: membership
#: field:report.partner_member.year,canceled_amount:0
@@ -338,7 +338,7 @@ msgstr "Članstvo"
#. module: membership
#: help:product.product,membership:0
msgid "Specify if this product is a membership product"
msgstr ""
msgstr "Naznačite da li je ovaj proizvod članski proizvod"
#. module: membership
#: selection:membership.membership_line,state:0
@@ -456,7 +456,7 @@ msgstr "Otkazani član"
#: model:product.price.type,name:membership.product_price_type_memberprice
#: field:product.template,member_price:0
msgid "Member Price"
msgstr ""
msgstr "Cijena člana"
#. module: membership
#: field:res.partner,free_member:0
@@ -505,7 +505,7 @@ msgstr ""
#: model:process.node,name:membership.process_node_membershipproduct0
#: wizard_field:wizard_invoice_membership,init,product:0
msgid "Membership product"
msgstr "Proizvod članstva"
msgstr "Članski proizvod"
#. module: membership
#: constraint:product.product:0
+7 -7
View File
@@ -394,7 +394,7 @@ class mrp_production(osv.osv):
_columns = {
'name': fields.char('Reference', size=64, required=True),
'origin': fields.char('Origin', size=64, help="Reference of the document that generated this production order request."),
'origin': fields.char('Source Document', size=64, help="Reference of the document that generated this production order request."),
'priority': fields.selection([('0','Not urgent'),('1','Normal'),('2','Urgent'),('3','Very Urgent')], 'Priority'),
'product_id': fields.many2one('product.product', 'Product', required=True, domain=[('type','<>','service')]),
@@ -426,7 +426,7 @@ class mrp_production(osv.osv):
'product_lines': fields.one2many('mrp.production.product.line', 'production_id', 'Scheduled goods'),
'workcenter_lines': fields.one2many('mrp.production.workcenter.line', 'production_id', 'Work Centers Utilisation'),
'state': fields.selection([('draft','Draft'),('picking_except', 'Picking Exception'),('confirmed','Waiting Goods'),('ready','Ready to Produce'),('in_production','In Production'),('cancel','Cancelled'),('done','Done')],'State', readonly=True,
help='When the production order is created the state is set to \'Draft\'.\n If the order is confirmed the state is set to \'Waiting Goods\'.\n If any exceptions are there, the state is set to \'Packing Exception\'.\
help='When the production order is created the state is set to \'Draft\'.\n If the order is confirmed the state is set to \'Waiting Goods\'.\n If any exceptions are there, the state is set to \'Picking Exception\'.\
\nIf the stock is available then the state is set to \'Ready to Produce\'.\n When the production get started then the state is set to \'In Production\'.\n When the production is over, the state is set to \'Done\'.'),
'hour_total': fields.function(_production_calc, method=True, type='float', string='Total Hours', multi='workorder'),
'cycle_total': fields.function(_production_calc, method=True, type='float', string='Total Cycles', multi='workorder'),
@@ -784,7 +784,7 @@ class mrp_procurement(osv.osv):
_order = 'priority,date_planned'
_columns = {
'name': fields.char('Name', size=64, required=True, help='Requisition name.'),
'origin': fields.char('Origin', size=64,
'origin': fields.char('Source Document', size=64,
help="Reference of the document that created this Requisition.\n"
"This is automatically completed by Open ERP."),
'priority': fields.selection([('0','Not urgent'),('1','Normal'),('2','Urgent'),('3','Very Urgent')], 'Priority', required=True),
@@ -801,8 +801,8 @@ class mrp_procurement(osv.osv):
'close_move': fields.boolean('Close Move at end', required=True),
'location_id': fields.many2one('stock.location', 'Location', required=True, states={'draft':[('readonly',False)]}, readonly=True),
'procure_method': fields.selection([('make_to_stock','from stock'),('make_to_order','on order')], 'Requisition Method', states={'draft':[('readonly',False)], 'confirmed':[('readonly',False)]},
readonly=True, required=True, help="If you encode manually a Requisition, you probably want to use" \
'procure_method': fields.selection([('make_to_stock','from stock'),('make_to_order','on order')], 'Procurement Method', states={'draft':[('readonly',False)], 'confirmed':[('readonly',False)]},
readonly=True, required=True, help="If you encode manually a Procurement, you probably want to use" \
" a make to order method."),
'purchase_id': fields.many2one('purchase.order', 'Purchase Order'),
@@ -810,7 +810,7 @@ class mrp_procurement(osv.osv):
'property_ids': fields.many2many('mrp.property', 'mrp_procurement_property_rel', 'procurement_id','property_id', 'Properties'),
'message': fields.char('Latest error', size=64),
'message': fields.char('Latest error', size=64, help="Exception occurred while computing procurement orders."),
'state': fields.selection([
('draft','Draft'),
('confirmed','Confirmed'),
@@ -1087,7 +1087,7 @@ class mrp_procurement(osv.osv):
#Passing partner_id to context for purchase order line integrity of Line name
context.update({'lang':partner.lang, 'partner_id':partner_id})
product=self.pool.get('product.product').browse(cr,uid,procurement.product_id.id,context=context)
line = {
+18 -15
View File
@@ -675,15 +675,13 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Procurement Lines" colors="red:state=='draft';black:state=='running';green:state=='confirmed';gray:state in ['done','cancel']">
<field name="name"/>
<field name="origin"/>
<field name="date_planned" widget="date"/>
<field name="product_id"/>
<field name="product_qty"/>
<field name="product_uom" string="UOM"/>
<field name="date_planned"/>
<field name="procure_method"/>
<field name="origin"/>
<field name="state"/>
<field name="message"/>
</tree>
</field>
</record>
@@ -701,7 +699,7 @@
</group>
<group col="2" colspan="2">
<separator colspan="2" string="Planification"/>
<field name="date_planned" select="1"/>
<field name="date_planned" select="1" widget="date"/>
<field name="procure_method" select="2"/>
<field name="priority" groups="base.group_extended"/>
</group>
@@ -733,8 +731,10 @@
<field name="date_close" select="2"/>
<field name="close_move" groups="base.group_extended"/>
<field name="purchase_id"/>
<separator colspan="4" string="Properties"/>
<field colspan="4" name="property_ids" nolabel="1" groups="base.group_extended"/>
<group colspan="4" groups="base.group_extended">
<separator colspan="4" string="Properties" />
<field colspan="4" name="property_ids" nolabel="1"/>
</group>
</page>
<page string="Notes">
<separator colspan="4" string="Note" />
@@ -750,18 +750,20 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Procurement">
<group col='8' colspan='4'>
<group col='10' colspan='4'>
<filter icon="terp-mrp" string="Current" domain="[('state','in',('draft','confirmed'))]" default="1" help="Procurement Orders in draft or open state."/>
<filter icon="terp-mrp" string="Exceptions" domain="[('state','=','exception')]" help="Procurement Orders with exceptions"/>
<separator orientation="vertical"/>
<field name="name" select='1'/>
<field name="product_id" select='1'/>
<field name="date_planned" select='1'/>
<field name="state" select='1'/>
<field name="name"/>
<field name="origin"/>
<field name="product_id" />
<field name="date_planned" widget="date"/>
<field name="state" />
</group>
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
<group expand="1" string="Group By..." colspan="4" col="8">
<filter string="By Product" icon="terp-mrp" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="By State" icon="terp-mrp" domain="[]" context="{'group_by':'state'}"/>
<filter string="Scheduled Date" icon="terp-mrp" domain="[]" context="{'group_by':'date_planned'}"/>
<filter string="By Procurement Reason" icon="terp-mrp" domain="[]" context="{'group_by':'name'}"/>
<filter string="By Scheduled Date" icon="terp-mrp" domain="[]" context="{'group_by':'date_planned'}"/>
</group>
</search>
</field>
@@ -783,6 +785,7 @@
<field name="res_model">mrp.procurement</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_mrp_procurement_filter"/>
<field name="domain">[]</field>
<field name="context">{}</field>
</record>
+1 -1
View File
@@ -89,7 +89,7 @@
<field name="model_id" ref="mrp.model_mrp_procurement"/>
<field eval="&quot;&quot;&quot;subflow&quot;&quot;&quot;" name="kind"/>
<field eval="&quot;&quot;&quot;Product type is service&quot;&quot;&quot;" name="note"/>
<field eval="&quot;&quot;&quot;Service Product&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Service&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="process_process_serviceproductprocess0"/>
<field name="process_id" ref="process_process_procurementprocess0"/>
<field eval="&quot;&quot;&quot;object.state in ('draft', 'confirmed', 'cancel', 'exception', 'running', 'done', 'waiting')&quot;&quot;&quot;" name="model_states"/>
+22 -20
View File
@@ -8,13 +8,13 @@ msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-12-08 11:46+0000\n"
"PO-Revision-Date: 2010-01-26 11:01+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"PO-Revision-Date: 2010-02-08 20:23+0000\n"
"Last-Translator: Nikolay Chesnokov <chesnokov_n@msn.com>\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: 2010-01-29 04:53+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:11+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: multi_company
@@ -27,6 +27,8 @@ msgstr ""
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
"Название объекта должно начинаться с x_ и не должно содержать специальных "
"символов !"
#. module: multi_company
#: constraint:product.template:0
@@ -37,12 +39,12 @@ msgstr ""
#. module: multi_company
#: constraint:res.partner:0
msgid "The VAT doesn't seem to be correct."
msgstr ""
msgstr "НДС выглядит неправильно"
#. module: multi_company
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
msgstr "Недопустимое имя модели в определении действия"
#. module: multi_company
#: model:res.company,overdue_msg:multi_company.res_company_odoo
@@ -64,13 +66,13 @@ msgstr ""
#. module: multi_company
#: field:multi_company.default,object_id:0
msgid "Object"
msgstr ""
msgstr "Объект"
#. module: multi_company
#: model:ir.module.module,shortdesc:multi_company.module_meta_information
#: view:multi_company.default:0
msgid "Multi Company"
msgstr ""
msgstr "Концерн"
#. module: multi_company
#: model:ir.module.module,description:multi_company.module_meta_information
@@ -83,12 +85,12 @@ msgstr ""
#. module: multi_company
#: field:multi_company.default,company_id:0
msgid "Main Company"
msgstr ""
msgstr "Головная компания"
#. module: multi_company
#: view:multi_company.default:0
msgid "Condition"
msgstr ""
msgstr "Условие"
#. module: multi_company
#: help:multi_company.default,company_dest_id:0
@@ -98,17 +100,17 @@ msgstr ""
#. module: multi_company
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
msgstr "Некорректный формат XML структуры для просмотра."
#. module: multi_company
#: field:multi_company.default,name:0
msgid "Name"
msgstr ""
msgstr "Имя"
#. module: multi_company
#: constraint:product.template:0
msgid "Error: UOS must be in a different category than the UOM"
msgstr ""
msgstr "Ошибка. UOS и UOM должны принадлежать к разным категориям."
#. module: multi_company
#: model:product.category,name:multi_company.Odoo1
@@ -118,7 +120,7 @@ msgstr ""
#. module: multi_company
#: constraint:res.company:0
msgid "Error! You can not create recursive companies."
msgstr ""
msgstr "Ошибка! Невозможно создать рекурсивную компанию."
#. module: multi_company
#: help:multi_company.default,name:0
@@ -128,7 +130,7 @@ msgstr ""
#. module: multi_company
#: model:ir.ui.menu,name:multi_company.menu_custom_multicompany
msgid "Multi company"
msgstr ""
msgstr "Концерн"
#. module: multi_company
#: model:ir.model,name:multi_company.model_multi_company_default
@@ -148,7 +150,7 @@ msgstr ""
#. module: multi_company
#: field:multi_company.default,expression:0
msgid "Expression"
msgstr ""
msgstr "Выражение"
#. module: multi_company
#: model:product.template,name:multi_company.product_product_odoo1_product_template
@@ -158,17 +160,17 @@ msgstr ""
#. module: multi_company
#: field:multi_company.default,sequence:0
msgid "Sequence"
msgstr ""
msgstr "Последовательность"
#. module: multi_company
#: constraint:product.category:0
msgid "Error ! You can not create recursive categories."
msgstr ""
msgstr "Ошибка ! Невозможно создать рекурсивную категорию."
#. module: multi_company
#: constraint:product.product:0
msgid "Error: Invalid ean code"
msgstr ""
msgstr "Ошибка: Неправильный штрих-код"
#. module: multi_company
#: help:multi_company.default,expression:0
@@ -184,9 +186,9 @@ msgstr ""
#: code:addons/multi_company/multi_company.py:0
#, python-format
msgid " (copy)"
msgstr ""
msgstr " (копия)"
#. module: multi_company
#: view:multi_company.default:0
msgid "Matching"
msgstr ""
msgstr "Сопоставление"
+1 -1
View File
@@ -77,7 +77,7 @@
-->
<button name="set_to_draft" string="Set to draft" states="paid" icon="gtk-execute" type="object" />
<button name="%(pos_return_picking)d" string="Return Packing" type="action" icon="gtk-ok" states="paid"
<button name="%(pos_return_picking)d" string="Return Picking" type="action" icon="gtk-ok" states="paid"
attrs="{'invisible':[('state','!=','paid'),('state','!=','invoiced')]}"/>
</group>
+1 -1
View File
@@ -250,7 +250,7 @@
<record id="ir_model_access_accountmove0" model="ir.model.access">
<field name="model_id" ref="account.model_account_move"/>
<field eval="1" name="perm_read"/>
<field eval="&quot;&quot;&quot;Account Move&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Ledger Posting&quot;&quot;&quot;" name="name"/>
<field eval="0" name="perm_unlink"/>
<field eval="1" name="perm_write"/>
<field eval="1" name="perm_create"/>
+1 -1
View File
@@ -253,7 +253,7 @@
<record id="ir_model_access_accountmove0" model="ir.model.access">
<field name="model_id" ref="account.model_account_move"/>
<field eval="1" name="perm_read"/>
<field eval="&quot;&quot;&quot;Account Move&quot;&quot;&quot;" name="name"/>
<field eval="&quot;&quot;&quot;Ledger Posting&quot;&quot;&quot;" name="name"/>
<field eval="0" name="perm_unlink"/>
<field eval="1" name="perm_write"/>
<field eval="1" name="perm_create"/>
+304
View File
@@ -0,0 +1,304 @@
# Serbian translation for openobject-addons
# Copyright (c) 2010 Rosetta Contributors and Canonical Ltd 2010
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2010.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-08 10:39+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Serbian <sr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-02-09 05:11+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: process
#: view:process.node:0
#: view:process.process:0
msgid "Process Node"
msgstr ""
#. module: process
#: constraint:ir.model:0
msgid ""
"The Object name must start with x_ and not contain any special character !"
msgstr ""
#. module: process
#: constraint:ir.actions.act_window:0
msgid "Invalid model name in the action definition."
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
#: view:process.transition:0
msgid "Roles from Workflow"
msgstr ""
#. module: process
#: field:process.node,menu_id:0
msgid "Related Menu"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
#: field:process.transition,action_ids:0
msgid "Buttons"
msgstr ""
#. module: process
#: selection:process.node,kind:0
msgid "State"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
#: view:process.transition:0
msgid "Details"
msgstr ""
#. module: process
#: field:process.node,help_url:0
msgid "Help URL"
msgstr ""
#. module: process
#: model:ir.actions.act_window,name:process.action_process_node_form
#: model:ir.model,name:process.model_process_node
#: model:ir.ui.menu,name:process.menu_process_node_form
#: view:process.node:0
#: view:process.process:0
msgid "Process Nodes"
msgstr ""
#. module: process
#: view:process.process:0
#: field:process.process,node_ids:0
msgid "Nodes"
msgstr ""
#. module: process
#: view:process.node:0
#: field:process.node,condition_ids:0
#: view:process.process:0
msgid "Conditions"
msgstr ""
#. module: process
#: field:process.condition,node_id:0
msgid "Node"
msgstr ""
#. module: process
#: selection:process.transition.action,state:0
msgid "Workflow Trigger"
msgstr ""
#. module: process
#: field:process.transition,note:0
msgid "Description"
msgstr ""
#. module: process
#: model:ir.model,name:process.model_process_transition_action
msgid "Process Transitions Actions"
msgstr ""
#. module: process
#: field:process.condition,model_id:0
#: field:process.node,model_id:0
#: field:process.process,model_id:0
msgid "Object"
msgstr ""
#. module: process
#: field:process.transition,source_node_id:0
msgid "Source Node"
msgstr ""
#. module: process
#: field:process.transition,transition_ids:0
msgid "Workflow Transitions"
msgstr ""
#. module: process
#: field:process.transition.action,action:0
msgid "Action ID"
msgstr ""
#. module: process
#: view:process.transition:0
msgid "Process Transition"
msgstr ""
#. module: process
#: model:ir.model,name:process.model_process_condition
#: view:process.node:0
#: view:process.process:0
msgid "Condition"
msgstr ""
#. module: process
#: selection:process.transition.action,state:0
msgid "Dummy"
msgstr ""
#. module: process
#: constraint:ir.ui.view:0
msgid "Invalid XML for View Architecture!"
msgstr ""
#. module: process
#: field:process.condition,name:0
#: field:process.node,name:0
#: field:process.process,name:0
#: field:process.transition,name:0
#: field:process.transition.action,name:0
msgid "Name"
msgstr ""
#. module: process
#: field:process.transition,role_ids:0
msgid "Roles"
msgstr ""
#. module: process
#: field:process.node,transition_in:0
msgid "Starting Transitions"
msgstr ""
#. module: process
#: field:process.node,note:0
#: field:process.process,note:0
#: view:process.transition:0
msgid "Notes"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
#: field:process.transition.action,transition_id:0
msgid "Transition"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
#: view:process.transition:0
msgid "Roles Required"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
msgid "Extra Information"
msgstr ""
#. module: process
#: selection:process.node,kind:0
#: field:process.node,subflow_id:0
msgid "Subflow"
msgstr ""
#. module: process
#: field:process.process,active:0
msgid "Active"
msgstr ""
#. module: process
#: selection:process.transition.action,state:0
msgid "Action"
msgstr ""
#. module: process
#: field:process.node,flow_start:0
msgid "Starting Flow"
msgstr ""
#. module: process
#: field:process.condition,model_states:0
msgid "Expression"
msgstr ""
#. module: process
#: field:process.transition.action,state:0
msgid "Type"
msgstr ""
#. module: process
#: field:process.node,transition_out:0
msgid "Ending Transitions"
msgstr ""
#. module: process
#: model:ir.actions.act_window,name:process.action_process_form
#: model:ir.model,name:process.model_process_process
#: model:ir.ui.menu,name:process.menu_process_form
#: field:process.node,process_id:0
#: view:process.process:0
msgid "Process"
msgstr ""
#. module: process
#: model:ir.module.module,shortdesc:process.module_meta_information
msgid "Enterprise Process"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
#: view:process.transition:0
msgid "Actions"
msgstr ""
#. module: process
#: field:process.node,model_states:0
msgid "States Expression"
msgstr ""
#. module: process
#: model:ir.actions.act_window,name:process.action_process_transition_form
#: model:ir.model,name:process.model_process_transition
#: model:ir.ui.menu,name:process.menu_process_transition_form
msgid "Process Transitions"
msgstr ""
#. module: process
#: field:process.transition,target_node_id:0
msgid "Target Node"
msgstr ""
#. module: process
#: field:process.node,kind:0
msgid "Kind of Node"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
msgid "Outgoing Transitions"
msgstr ""
#. module: process
#: model:ir.ui.menu,name:process.menu_process
msgid "Enterprise Processes"
msgstr ""
#. module: process
#: view:process.node:0
#: view:process.process:0
msgid "Transitions"
msgstr ""
#. module: process
#: selection:process.transition.action,state:0
msgid "Object Method"
msgstr ""
+9 -9
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2010-02-08 01:47+0000\n"
"PO-Revision-Date: 2010-02-08 21:27+0000\n"
"Last-Translator: Oktay Altunergil <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-02-08 04:45+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:10+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: project
@@ -375,7 +375,7 @@ msgstr "Bütün Projeler"
#. module: project
#: model:process.transition,note:project.process_transition_draftopentask0
msgid "From draft state, it will come into the open state."
msgstr ""
msgstr "Taslak durumundan Faal duruma geçecektir."
#. module: project
#: wizard_view:project.task.delegate,init:0
@@ -611,7 +611,7 @@ msgstr "Proje'nin Üyeleri"
#. module: project
#: model:process.transition,note:project.process_transition_taskinvoice0
msgid "After task is completed, Create its invoice."
msgstr ""
msgstr "Görev tamamlandıktan sonra Faturasını Oluştur."
#. module: project
#: help:project.task,progress:0
@@ -667,7 +667,7 @@ msgstr "E-Postalar"
#. module: project
#: model:process.node,note:project.process_node_triggerinvoice0
msgid "Trigger invoices from sale order lines"
msgstr ""
msgstr "Satış Emri satırlarından fatura tetikle."
#. module: project
#: model:process.transition.action,name:project.process_transition_action_opendrafttask0
@@ -775,7 +775,7 @@ msgstr "Ay"
#. module: project
#: model:process.transition,note:project.process_transition_opendonetask0
msgid "When task is completed, it will come into the done state."
msgstr ""
msgstr "Görev sona erince tamamlanmış duruma geçecektir."
#. module: project
#: field:project.task.work,date:0
@@ -1010,7 +1010,7 @@ msgstr "Onaylama Görevi"
#. module: project
#: field:project.task,work_ids:0
msgid "Work done"
msgstr ""
msgstr "Tamamlanmış İş"
#. module: project
#: selection:project.project,state:0
@@ -1049,7 +1049,7 @@ msgstr "Yeni Özellik"
#. module: project
#: model:process.node,note:project.process_node_opentask0
msgid "Encode your working hours."
msgstr ""
msgstr "Mesai saatlerinizi giriniz."
#. module: project
#: wizard_field:project.task.delegate,init,prefix:0
@@ -1108,7 +1108,7 @@ msgstr "Onay Durumu"
#. module: project
#: constraint:project.project:0
msgid "Error ! You can not create recursive projects."
msgstr ""
msgstr "Hata. İç içe projeler oluşturamazsınız."
#. module: project
#: field:project.task,date_deadline:0
+124 -92
View File
@@ -24,6 +24,8 @@ import pooler
from tools.translate import _
import datetime
from resource.faces import *
from new import classobj
import operator
compute_form = """<?xml version="1.0" ?>
<form string="Compute Scheduling of Tasks">
@@ -32,7 +34,7 @@ compute_form = """<?xml version="1.0" ?>
success_msg = """<?xml version="1.0" ?>
<form string="Compute Scheduling of Tasks">
<label string="Task Scheduling completed scccessfully."/>
<label string="Task Scheduling completed successfully."/>
</form>"""
compute_fields = {
@@ -40,18 +42,18 @@ compute_fields = {
}
def timeformat_convert(cr, uid, time_string, context={}):
# Function to convert input time string:: 8.5 to output time string 8:30
strg = str(time_string)[-2:]
last_strg = str(time_string)[0:-2]
if strg != '.0':
if '.' not in strg:
strg = '.' + strg
last_strg = str(time_string)[:-3]
new_strg = round(float(strg) / 0.016666667)
converted_strg = last_strg + ':' + str(new_strg)[:-2]
else:
converted_strg = last_strg + ':00'
return converted_strg
class wizard_compute_tasks(wizard.interface):
@@ -63,115 +65,145 @@ class wizard_compute_tasks(wizard.interface):
resource_pool = pool.get('resource.resource')
resource_leaves_pool = pool.get('resource.calendar.leaves')
resource_week_pool = pool.get('resource.calendar.week')
user_pool = pool.get('res.users')
project_id = data['form']['project_id']
project = project_pool.browse(cr,uid,project_id)
task_ids = task_pool.search(cr,uid,[('project_id','=',project_id)])
if task_ids:
wktime_cal = []
leaves = []
task_ids.sort()
task_obj = task_pool.browse(cr,uid,task_ids)
task_1 = task_obj[0]
if task_1.date_start:
date_dt = datetime.datetime.strptime(task_1.date_start,"%Y-%m-%d %H:%M:%S")
else:
date_dt = datetime.datetime.strptime(project.date_start,"%Y-%m-%d")
dt = datetime.datetime.strftime(date_dt,"%Y-%m-%d %H:%M")
dt_start = datetime.datetime.strftime(datetime.datetime.strptime(project.date_start,"%Y-%m-%d"),"%Y-%m-%d %H:%M")
calendar_id = project.resource_calendar_id.id
for i in range(len(task_obj)):
final_lst = []
leaves = []
if task_obj[i].user_id.id:
resource_id = resource_pool.search(cr,uid,[('user_id','=',task_obj[i].user_id.id)])
if resource_id :
resource_obj = resource_pool.browse(cr,uid,resource_id)[0]
if resource_obj.calendar_id:
calendar_id = resource_obj.calendar_id.id
resource_leave_ids = resource_leaves_pool.search(cr,uid,[('resource_id','=',resource_id)])
else:
calendar_id = project.resource_calendar_id.id
resource_leave_ids = resource_leaves_pool.search(cr,uid,[('calendar_id','=',project.resource_calendar_id.id)])
# If project has a working calendar then that would be used otherwise
# the default faces calendar would be used
if calendar_id:
resource_leave_ids = resource_leaves_pool.search(cr,uid,[('calendar_id','=',project.resource_calendar_id.id)])
time_range = "8:00-8:00"
non_working = ""
wk = {"0":"mon","1":"tue","2":"wed","3":"thu","4":"fri","5":"sat","6":"sun"}
wk_days = {}
wk_time = {}
wktime_list = []
week_ids = resource_week_pool.search(cr,uid,[('calendar_id','=',calendar_id)])
week_obj = resource_week_pool.read(cr,uid,week_ids,['dayofweek','hour_from','hour_to'])
time_range = "8:00-8:00"
non_working = ""
wk = {"0":"mon","1":"tue","2":"wed","3":"thu","4":"fri","5":"sat","6":"sun"}
wk_days = {}
wk_time = {}
tlist = []
week_ids = resource_week_pool.search(cr,uid,[('calendar_id','=',calendar_id)])
week_obj = resource_week_pool.read(cr,uid,week_ids,['dayofweek','hour_from','hour_to'])
# Converting time formats into appropriate format required
# and creating a list like [('mon', '8:00-12:00'), ('mon', '13:00-18:00')]
for week in week_obj:
res_str = ""
if wk.has_key(week['dayofweek']):
day = wk[week['dayofweek']]
wk_days[week['dayofweek']] = wk[week['dayofweek']]
for week in week_obj:
res_str = ""
if wk.has_key(week['dayofweek']):
day = wk[week['dayofweek']]
wk_days[week['dayofweek']] = wk[week['dayofweek']]
hour_from_str = timeformat_convert(cr,uid,week['hour_from'])
hour_to_str = timeformat_convert(cr,uid,week['hour_to'])
res_str = hour_from_str + '-' + hour_to_str
wktime_list.append((day,res_str))
hour_from_str = timeformat_convert(cr,uid,week['hour_from'])
hour_to_str = timeformat_convert(cr,uid,week['hour_to'])
res_str = hour_from_str + '-' + hour_to_str
tlist.append((day,res_str))
# Converting it to format like [('mon', '8:00-12:00', '13:00-18:00')]
for item in wktime_list:
if wk_time.has_key(item[0]):
wk_time[item[0]].append(item[1])
else:
wk_time[item[0]] = [item[0]]
wk_time[item[0]].append(item[1])
for item in tlist:
if wk_time.has_key(item[0]):
wk_time[item[0]].append(item[1])
else:
wk_time[item[0]] = [item[0]]
wk_time[item[0]].append(item[1])
for k,v in wk_time.items():
wktime_cal.append(tuple(v))
for k,v in wk_time.items():
final_lst.append(tuple(v))
# For non working days adding [('tue,wed,fri,sat,sun', '8:00-8:00')]
for k,v in wk_days.items():
if wk.has_key(k):
wk.pop(k)
for v in wk.itervalues():
non_working += v + ','
if non_working:
wktime_cal.append((non_working[:-1],time_range))
for k,v in wk_days.items():
if wk.has_key(k):
wk.pop(k)
for v in wk.itervalues():
non_working += v + ','
if non_working:
final_lst.append((non_working[:-1],time_range))
# If project working calendar has any leaves
if resource_leave_ids:
res_leaves = resource_leaves_pool.read(cr,uid,resource_leave_ids,['date_from','date_to'])
for leave in range(len(res_leaves)):
dt_start = datetime.datetime.strptime(res_leaves[leave]['date_from'],'%Y-%m-%d %H:%M:%S')
dt_end = datetime.datetime.strptime(res_leaves[leave]['date_to'],'%Y-%m-%d %H:%M:%S')
no = dt_end - dt_start
leave_days = no.days + 1
[leaves.append((dt_start + datetime.timedelta(days=x)).strftime('%Y-%m-%d')) for x in range(int(leave_days))]
leaves.sort()
if resource_leave_ids:
res_leaves = resource_leaves_pool.read(cr,uid,resource_leave_ids,['date_from','date_to'])
for leave in range(len(res_leaves)):
dt_start = datetime.datetime.strptime(res_leaves[leave]['date_from'],'%Y-%m-%d %H:%M:%S')
dt_end = datetime.datetime.strptime(res_leaves[leave]['date_to'],'%Y-%m-%d %H:%M:%S')
no = dt_end - dt_start
leave_days = no.days + 1
[leaves.append((dt_start + datetime.timedelta(days=x)).strftime('%Y-%m-%d')) for x in range(int(leave_days))]
leaves.sort()
# To create resources which are the Project Members
resource = project.members
resource_objs = []
for no in range(len(resource)):
resource_id = resource_pool.search(cr,uid,[('user_id','=',resource[no].id)])
resource_objs.append(classobj(str(resource[no].name),(Resource,),{'__doc__':resource[no].name,'__name__':resource[no].name}))
# To create dynamic no of tasks
def tasks(j,eff):
def task():
"""
task is a dynamic method!
"""
effort = eff
task.__doc__ = "TaskNO%d" %j
task.__name__ = "task%d" %j
return task
hours = task_obj[i].remaining_hours / task_obj[i].occupation_rate
hours = str(hours)[:-2] + 'H'
# To create dynamic no of tasks with the resource specified
def tasks_resource(j,eff,obj):
def task():
"""
task is a dynamic method!
"""
effort = eff
resource = obj
task.__doc__ = "TaskNO%d" %j
task.__name__ = "task%d" %j
return task
class user(Resource):
pass
# Creating the project with all the tasks and resources
def Project():
resource = reduce(operator.or_,resource_objs)
title = project.name
start = dt_start
if i == 0:
new_dt = dt
else:
data = task_pool.read(cr,uid,[task_obj[i-1].id],['date_end'])[0]
new_dt = data['date_end'][0:16]
def Project_1():
resource = user
title = project.name
start = new_dt
effort = hours
if final_lst or leaves:
working_days = final_lst
# If project has calendar
if wktime_cal or leaves:
working_days = wktime_cal
vacation = tuple(leaves)
def task1():
start = new_dt
effort = hours
title = task_obj[i].name
project_1 = BalancedProject(Project_1)
s_date = project_1.calendar.WorkingDate(project_1.task1.start).to_datetime()
e_date = project_1.calendar.WorkingDate(project_1.task1.end).to_datetime()
task_pool.write(cr,uid,[task_obj[i].id],{'date_start':s_date,'date_end':e_date})
# Dynamic Creation of tasks
for i in range(len(task_obj)):
hours = str(task_obj[i].planned_hours / task_obj[i].occupation_rate)[:-2] + 'H'
if task_obj[i].user_id:
for resource_object in resource_objs:
if resource_object.__name__ == task_obj[i].user_id.name:
task = tasks_resource(i,hours,resource_object)
else:
task = tasks(i,hours)
project = BalancedProject(Project)
task_no = len(task_obj)
loop_no = 0
for t in project:
no2 = loop_no
while loop_no <= task_no:
s_date = t.start.to_datetime()
e_date = t.end.to_datetime()
print 'Start Date And End Date:::',s_date,e_date,t.name,t.booked_resource
if loop_no != 0:
user_id = user_pool.search(cr,uid,[('name','=',t.booked_resource[0].__name__)])
task_pool.write(cr,uid,[task_obj[loop_no - 1].id],{'date_start':s_date,'date_end':e_date,'user_id':user_id[0]})
loop_no = task_no + 1
loop_no = no2
loop_no +=1
return {}
states = {
'init': {
'actions': [],
@@ -180,7 +212,8 @@ class wizard_compute_tasks(wizard.interface):
('compute', 'Compute')
]},
},
'compute': {
'actions': [_compute_date],
'result': {'type':'form','arch':success_msg,'fields':{}, 'state':[('end', 'Ok')]},
@@ -190,4 +223,3 @@ wizard_compute_tasks('wizard.compute.tasks')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+14 -12
View File
@@ -7,13 +7,13 @@ msgstr ""
"Project-Id-Version: OpenERP Server 5.0.4\n"
"Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
"PO-Revision-Date: 2009-12-24 09:00+0000\n"
"Last-Translator: adnan <adnankraljic@yahoo.com>\n"
"PO-Revision-Date: 2010-02-08 18:46+0000\n"
"Last-Translator: Selma <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: 2009-12-25 04:40+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:10+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: purchase
@@ -39,7 +39,7 @@ msgstr ""
#. module: purchase
#: rml:purchase.order:0
msgid "Validated By"
msgstr ""
msgstr "Potvrđeno od"
#. module: purchase
#: constraint:ir.actions.act_window:0
@@ -64,7 +64,7 @@ msgstr "Količina"
#. module: purchase
#: selection:purchase.order,invoice_method:0
msgid "From Order"
msgstr ""
msgstr "Iz naloga"
#. module: purchase
#: model:process.node,name:purchase.process_node_confirmpurchaseorder0
@@ -111,6 +111,8 @@ msgid ""
"The pricelist sets the currency used for this purchase order. It also "
"computes the supplier price for the selected products/quantities."
msgstr ""
"Cjenovnik postavlja valutu koja se koristi u nabavnom nalogu. Također, isti "
"izračunava nabavnu cijenu za odabrane proizvode i količinu."
#. module: purchase
#: model:process.process,name:purchase.process_process_purchaseprocess0
@@ -280,7 +282,7 @@ msgstr "Red naloga"
#. module: purchase
#: selection:purchase.order,state:0
msgid "Confirmed"
msgstr ""
msgstr "Potvrđeno"
#. module: purchase
#: model:process.node,name:purchase.process_node_productrecept0
@@ -775,13 +777,13 @@ msgstr ""
#. module: purchase
#: rml:purchase.quotation:0
msgid "Expected Delivery address:"
msgstr ""
msgstr "Adresa očekivane isporuke:"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.purchase_form_action3
#: model:ir.ui.menu,name:purchase.menu_purchase_form_action3
msgid "Purchase Order Waiting Approval"
msgstr ""
msgstr "Nabavni nalog - potrebno odobrenje"
#. module: purchase
#: model:process.transition,name:purchase.process_transition_confirmingpurchaseorder0
@@ -796,7 +798,7 @@ msgstr "Proizvod UOM"
#. module: purchase
#: field:purchase.order.line,move_ids:0
msgid "Reservation"
msgstr ""
msgstr "Rezervacija"
#. module: purchase
#: model:process.node,note:purchase.process_node_confirmpurchaseorder0
@@ -816,7 +818,7 @@ msgstr ""
#. module: purchase
#: rml:purchase.order:0
msgid "Purchase Order Confirmation N°"
msgstr ""
msgstr "Broj potvrde nabavnog naloga"
#. module: purchase
#: view:purchase.order:0
@@ -826,12 +828,12 @@ msgstr "Ukupni iznos"
#. module: purchase
#: rml:purchase.order:0
msgid "Date Ordered"
msgstr ""
msgstr "Datum naruđbe"
#. module: purchase
#: view:purchase.order:0
msgid "Purchase Control"
msgstr ""
msgstr "Kontrola nabavke"
#. module: purchase
#: model:ir.actions.act_window,name:purchase.purchase_form_action2
+3 -3
View File
@@ -144,7 +144,7 @@ class purchase_order(osv.osv):
_columns = {
'name': fields.char('Order Reference', size=64, required=True, select=True),
'origin': fields.char('Origin', size=64,
'origin': fields.char('Source Document', size=64,
help="Reference of the document that generated this purchase order request."
),
'partner_ref': fields.char('Supplier Reference', size=64),
@@ -471,7 +471,7 @@ class purchase_order_line(osv.osv):
return super(purchase_order_line, self).copy_data(cr, uid, id, default, context)
def product_id_change(self, cr, uid, ids, pricelist, product, qty, uom,
partner_id, date_order=False, fiscal_position=False, date_planned=False,
partner_id, date_order=False, fiscal_position=False, date_planned=False,
name=False, price_unit=False, notes=False):
if not pricelist:
raise osv.except_osv(_('No Pricelist !'), _('You have to select a pricelist in the purchase form !\nPlease set one before choosing a product.'))
@@ -513,7 +513,7 @@ class purchase_order_line(osv.osv):
prod_name = self.pool.get('product.product').name_get(cr, uid, [prod.id])[0][1]
res = {'value': {'price_unit': price, 'name': name or prod_name,
res = {'value': {'price_unit': price, 'name': name or prod_name,
'taxes_id':map(lambda x: x.id, prod.supplier_taxes_id),
'date_planned': date_planned or dt,'notes': notes or prod.description_purchase,
'product_qty': qty,
+17 -16
View File
@@ -153,17 +153,16 @@
<separator orientation="vertical"/>
<filter icon="terp-purchase" string="To Invoice" domain="[('invoiced','=',1)]" separator="1"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="name" select="1" string="Reference"/>
<field name="partner_id" select="1"/>
<field name="product_id" select="1"/>
<field name="create_uid" select="1" widget="selection">
<filter icon="terp-purchase" domain="[('create_uid','=',uid)]" help="My Purchase Orders"/>
<filter icon="terp-purchase" domain="[('create_uid','child_of',[uid])]" help="My Departments Purchase Orders"/>
<filter icon="terp-partner" domain="[('create_uid','=',uid)]" help="My Purchase Orders"/>
</field>
</group>
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="10">
<filter string="By Supplier" icon="terp-purchase" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="By State" icon="terp-purchase" domain="[]" context="{'group_by':'state'}"/>
<group expand="1" string="Group By..." colspan="4" col="10">
<filter string="By Supplier" icon="terp-purchase" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
<filter string="By Order Date" icon="terp-purchase" domain="[]" context="{'group_by':'date_order'}"/>
</group>
</search>
@@ -176,10 +175,11 @@
<field name="res_model">purchase.order</field>
<field name="view_type">form</field>
<field name="domain">[('state','=','draft')]</field>
<field name="view_mode">tree,form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_purchase_order_filter"/>
</record>
<menuitem action="purchase_rfq" id="menu_purchase_rfq" parent="menu_procurement_management"
name="Request for Quotations" sequence="6" />
<menuitem action="purchase_rfq" id="menu_purchase_rfq" parent="menu_procurement_management"
name="Request for Quotations" sequence="6"/>
<record id="purchase_form_action" model="ir.actions.act_window">
<field name="name">Purchase Orders</field>
@@ -207,15 +207,16 @@
<field name="arch" type="xml">
<tree string="Purchase Order">
<field name="name" string="Reference"/>
<field name="date_order"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="minimum_planned_date"/>
<field name="origin"/>
<field name="date_order" string="Order Date"/>
<field name="partner_id"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="location_id"/>
<field name="minimum_planned_date"/>
<field name="invoiced_rate" widget="progressbar"/>
<field name="shipped_rate" widget="progressbar"/>
<field name="amount_untaxed"/>
<field name="origin"/>
<field name="amount_untaxed" sum="Total Untaxed amount"/>
<field name="amount_total" sum="Total amount"/>
<field name="state"/>
</tree>
</field>
@@ -233,7 +234,7 @@
<field context="partner_id=parent.partner_id,quantity=product_qty,pricelist=parent.pricelist_id,uom=product_uom,warehouse=parent.warehouse_id" name="product_qty" on_change="product_id_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id,parent.date_order,parent.fiscal_position,date_planned,name,price_unit,notes)"/>
<field name="product_uom" on_change="product_uom_change(parent.pricelist_id,product_id,product_qty,product_uom,parent.partner_id, parent.date_order)"/>
<field colspan="4" name="name"/>
<field name="date_planned"/>
<field name="date_planned" widget="date"/>
<field name="price_unit"/>
<field name="company_id" groups="base.group_multi_company" widget="selection"/>
<field name="price_subtotal" readonly="1"/>
@@ -263,7 +264,7 @@
<tree colors="red:date_planned&lt;=current_date;black:date_planned&gt;current_date" string="Purchase Order Lines">
<field name="order_id"/>
<field name="name"/>
<field name="date_planned"/>
<field name="date_planned" widget="date"/>
<field name="product_id"/>
<field name="product_qty"/>
<field name="product_uom"/>
+1 -1
View File
@@ -178,7 +178,7 @@ class report_invoice_created(osv.osv):
('paid','Done'),
('cancel','Cancelled')
],'State', readonly=True),
'origin': fields.char('Origin', size=64, readonly=True, help="Reference of the document that generated this invoice report."),
'origin': fields.char('Source Document', size=64, readonly=True, help="Reference of the document that generated this invoice report."),
'create_date' : fields.datetime('Create Date', readonly=True)
}
_order = 'create_date'
+1 -1
View File
@@ -65,7 +65,7 @@ class report_intrastat(osv.osv):
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
'supply_units':fields.float('Supply Units', readonly=True),
'ref':fields.char('Origin',size=64, readonly=True),
'ref':fields.char('Source document',size=64, readonly=True),
'code': fields.char('Country code', size="2", readonly=True),
'intrastat_id': fields.many2one('report.intrastat.code', 'Intrastat code', readonly=True),
'weight': fields.float('Weight', readonly=True),
+1 -1
View File
@@ -13,7 +13,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2010-02-08 04:45+0000\n"
"X-Launchpad-Export-Date: 2010-02-09 05:11+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: report_mrp
+1 -1
View File
@@ -1941,7 +1941,7 @@ class Task(object):
func.task_func = instrumented # will be used in the gui
self._function = instrumented
self.name = name
self.name = func.func_name
self.up = parent
self.children = []
self._sources = {} # all tasks, I am linked to
+6 -6
View File
@@ -7,10 +7,11 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Sale Orders">
<field name="partner_id" invisible="True"/>
<field name="name"/>
<field name="partner_id"/>
<field name="date_order"/>
<field name="invoiced_rate"/>
<field name="picked_rate"/>
<field name="invoiced_rate" widget="progressbar"/>
<field name="picked_rate" widget="progressbar"/>
<field name="amount_untaxed"/>
<field name="amount_tax"/>
<field name="amount_total" sum="Total Amount"/>
@@ -20,7 +21,7 @@
</record>
<record id="action_sale_order_report_all" model="ir.actions.act_window">
<field name="name">Sale Orders By Customer </field>
<field name="name">Sale Orders By Partner </field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,graph</field>
@@ -49,8 +50,7 @@
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Sale Orders by Product">
<field name="name"/>
<field name="order_id" invisible="True"/>
<field name="order_id"/>
<field name="product_uom_qty" />
<field name="product_uos_qty"/>
<field name="product_uos"/>
+9 -9
View File
@@ -183,7 +183,7 @@ class sale_order(osv.osv):
_columns = {
'name': fields.char('Order Reference', size=64, required=True, select=True),
'shop_id': fields.many2one('sale.shop', 'Shop', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'origin': fields.char('Origin', size=64, help="Reference of the document that generated this sale order request."),
'origin': fields.char('Source document', size=64, help="Reference of the document that generated this sale order request."),
'client_order_ref': fields.char('Customer Reference', size=64),
'state': fields.selection([
@@ -214,10 +214,10 @@ class sale_order(osv.osv):
('picking', 'Invoice from Picking'),
], 'Shipping Policy', required=True, readonly=True, states={'draft': [('readonly', False)]},
help="""The Shipping Policy is used to synchronise invoice and delivery operations.
- The 'Pay before delivery' choice will first generate the invoice and then generate the packing order after the payment of this invoice.
- The 'Shipping & Manual Invoice' will create the packing order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice.
- The 'Pay before delivery' choice will first generate the invoice and then generate the picking order after the payment of this invoice.
- The 'Shipping & Manual Invoice' will create the picking order directly and wait for the user to manually click on the 'Invoice' button to generate the draft invoice.
- The 'Invoice on Order After Delivery' choice will generate the draft invoice based on sale order after all picking lists have been finished.
- The 'Invoice from the picking' choice is used to create an invoice during the packing process."""),
- The 'Invoice from the picking' choice is used to create an invoice during the picking process."""),
'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, readonly=True, states={'draft': [('readonly', False)]}),
'project_id': fields.many2one('account.analytic.account', 'Analytic Account', readonly=True, states={'draft': [('readonly', False)]}),
@@ -452,13 +452,13 @@ class sale_order(osv.osv):
self.pool.get('sale.order.line').write(cr, uid, [line.id], {'invoiced': invoiced})
self.write(cr, uid, ids, {'state': 'invoice_except', 'invoice_ids': False})
return True
def action_invoice_end(self, cr, uid, ids, context={}):
for order in self.browse(cr, uid, ids):
val = {'invoiced': True}
if order.state == 'invoice_except':
val['state'] = 'progress'
for line in order.order_line:
towrite = []
if line.state == 'exception':
@@ -466,9 +466,9 @@ class sale_order(osv.osv):
if towrite:
self.pool.get('sale.order.line').write(cr, uid, towrite, {'state': 'confirmed'}, context=context)
self.write(cr, uid, [order.id], val)
return True
def action_cancel(self, cr, uid, ids, context={}):
ok = True
sale_order_line_obj = self.pool.get('sale.order.line')
@@ -477,7 +477,7 @@ class sale_order(osv.osv):
if pick.state not in ('draft', 'cancel'):
raise osv.except_osv(
_('Could not cancel sale order !'),
_('You must first cancel all packing attached to this sale order.'))
_('You must first cancel all picking attached to this sale order.'))
for r in self.read(cr, uid, ids, ['picking_ids']):
for pick in r['picking_ids']:
wf_service = netsvc.LocalService("workflow")
+7 -7
View File
@@ -82,7 +82,8 @@
<field name="partner_shipping_id"/>
<field name="picked_rate" widget="progressbar"/>
<field name="invoiced_rate" widget="progressbar"/>
<field name="amount_untaxed"/>
<field name="amount_untaxed" sum="Total Untaxed amount"/>
<field name="amount_total" sum="Total amount"/>
<field name="state"/>
</tree>
</field>
@@ -231,20 +232,19 @@
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Search Sales Order">
<group col='8' colspan='4'>
<group col='10' colspan='4'>
<filter icon="terp-sale" string="Quotation" domain="[('state','=','draft')]"/>
<filter icon="terp-sale" string="Running" domain="[('state','in',('manual','progress'))]"/>
<separator orientation="vertical"/>
<field name="name" select="1"/>
<field name="partner_id" select="1"/>
<field name="user_id" select="1" widget="selection">
<filter icon="terp-sale" domain="[('user_id','=',uid)]" help="My Sale Orders"/>
<filter icon="terp-sale" domain="[('user_id','child_of',[uid])]" help="My Departments Sale Orders"/>
<filter icon="terp-partner" domain="[('user_id','=',uid)]" help="My Sale Orders"/>
</field>
<field name="date_order" select="1"/>
</group>
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
<filter string="By Customer" icon="terp-sale" domain="[]" default="1" context="{'group_by':'partner_id'}"/>
<group expand="1" string="Group By..." colspan="4" col="8">
<filter string="By Customer" icon="terp-sale" domain="[]" context="{'group_by':'partner_id'}"/>
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
<filter string="By Order Date" icon="terp-sale" domain="[]" context="{'group_by':'date_order'}"/>
</group>
@@ -414,7 +414,7 @@
<group expand="context.get('report',False)" string="Group By..." colspan="4" col="8">
<filter string="By Product" icon="terp-sale" default="1" domain="[]" context="{'group_by':'product_id'}"/>
<filter string="By Order" icon="terp-sale" domain="[]" context="{'group_by':'order_id'}"/>
<filter string="By Scheduled" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
<filter string="By State" icon="terp-sale" domain="[]" context="{'group_by':'state'}"/>
</group>
</group>
+15
View File
@@ -26,6 +26,21 @@
</field>
</record>
<record id="view_sales_order_filter_inherit" model="ir.ui.view">
<field name="name">sale.order.list.select</field>
<field name="model">sale.order</field>
<field name="type">search</field>
<field name="inherit_id" ref="sale.view_sales_order_filter"/>
<field name="arch" type="xml">
<field name="date_order" position="after">
<field name="section_id" default="context.get('section_id', False)" select="1" widget="selection" string="Section">
<filter icon="terp-crm"
domain="[('section_id','=',context.get('section_id',False))]"
help="My section"/>
</field>
</field>
</field>
</record>
</data>
</openerp>
+3 -3
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,7 +15,7 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -26,7 +26,7 @@
'category': 'Generic Modules/Sales & Purchases',
'description': """
The sale journal modules allows you to categorise your
sales and deliveries (packing lists) between different journals.
sales and deliveries (picking lists) between different journals.
This module is very helpful for bigger companies that
works by departments.
+1 -1
View File
@@ -25,7 +25,7 @@
</group>
</page>
<page string="Picking">
<button string="Cancel Packing" name="button_picking_cancel" states="draft,open" type="object" icon="gtk-cancel"/>
<button string="Cancel Picking" name="button_picking_cancel" states="draft,open" type="object" icon="gtk-cancel"/>
<newline/>
<field name="picking_stats_ids" colspan="4" nolabel="1"/>
</page><page string="Notes">
@@ -28,7 +28,7 @@
<field name="model">sale_journal.invoice.type.stats</field>
<field name="type">tree</field>
<field name="arch" type="xml">
<tree string="Packing by invoice method">
<tree string="Picking by invoice method">
<field name="name"/>
<field name="month"/>
<field name="invoice_state"/>
+3 -3
View File
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
##############################################################################
#
#
# OpenERP, Open Source Management Solution
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
#
@@ -15,7 +15,7 @@
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
@@ -33,7 +33,7 @@ class res_partner(osv.osv):
method=True,
view_load=True,
group_name="Accounting Properties",
help="The type of journal used for sales and packing."),
help="The type of journal used for sales and picking."),
}
res_partner()
@@ -24,7 +24,7 @@ import tools
class report_sale_journal_invoice_type_stats(osv.osv):
_name = "sale_journal.invoice.type.stats"
_description = "Stats on packing by invoice method"
_description = "Stats on picking by invoice method"
_auto = False
_columns = {
'name': fields.char('Year',size=64,required=False, readonly=True),
@@ -96,7 +96,7 @@ class report_sale_journal_picking(osv.osv):
'count': fields.integer('# of Lines', readonly=True),
'month':fields.selection([('01','January'), ('02','February'), ('03','March'), ('04','April'), ('05','May'), ('06','June'),
('07','July'), ('08','August'), ('09','September'), ('10','October'), ('11','November'), ('12','December')],'Month',readonly=True),
}
_order = 'journal_id,name desc,price_total desc'
def init(self, cr):
+3 -3
View File
@@ -437,7 +437,7 @@ class stock_picking(osv.osv):
_columns = {
'name': fields.char('Reference', size=64, select=True),
'origin': fields.char('Origin', size=64, help="Reference of the document that produced this picking."),
'origin': fields.char('Source document', size=64, help="Reference of the document that produced this picking."),
'backorder_id': fields.many2one('stock.picking', 'Back Order', help="If the picking is splitted then the picking id in available state of move for this picking is stored in Backorder."),
'type': fields.selection([('out', 'Sending Goods'), ('in', 'Getting Goods'), ('internal', 'Internal'), ('delivery', 'Delivery')], 'Shipping Type', required=True, select=True, help="Shipping type specify, goods coming in or going out."),
'active': fields.boolean('Active', help="If the active field is set to true, it will allow you to hide the picking without removing it."),
@@ -1065,14 +1065,14 @@ class stock_move(osv.osv):
'note': fields.text('Notes'),
'state': fields.selection([('draft', 'Draft'), ('waiting', 'Waiting'), ('confirmed', 'Confirmed'), ('assigned', 'Available'), ('done', 'Done'), ('cancel', 'Cancelled')], 'State', readonly=True, select=True,
help='When the stock move is created it is in the \'Draft\' state.\n After that it is set to \'Confirmed\' state.\n If stock is available state is set to \'Avaiable\'.\n When the packing it done the state is \'Done\'.\
help='When the stock move is created it is in the \'Draft\' state.\n After that it is set to \'Confirmed\' state.\n If stock is available state is set to \'Avaiable\'.\n When the picking it done the state is \'Done\'.\
\nThe state is \'Waiting\' if the move is waiting for another one.'),
'price_unit': fields.float('Unit Price',
digits=(16, int(config['price_accuracy']))),
'company_id': fields.many2one('res.company', 'Company', required=True,select=1),
'partner_id': fields.related('picking_id','address_id','partner_id',type='many2one', relation="res.partner", string="Partner"),
'backorder_id': fields.related('picking_id','backorder_id',type='many2one', relation="stock.picking", string="Back Orders"),
'origin': fields.related('picking_id','origin',type='char', size=64, relation="stock.picking", string="Origin"),
'origin': fields.related('picking_id','origin',type='char', size=64, relation="stock.picking", string="Source document"),
'move_stock_return_history': fields.many2many('stock.move', 'stock_move_return_history', 'move_id', 'return_move_id', 'Move Return History',readonly=True),
}
_constraints = [
+6 -6
View File
@@ -612,7 +612,7 @@
<button name="action_cancel" states="assigned" string="Cancel" type="object" icon="gtk-cancel"/>
</group>
</page>
<page string="Return Packing History">
<page string="Return Picking History">
<field name="move_stock_return_history" nolabel="1"/>
</page>
</notebook>
@@ -740,7 +740,7 @@
<button name="action_cancel" states="assigned" string="Cancel" type="object" icon="gtk-cancel"/>
</group>
</page>
<page string="Return Packing History">
<page string="Return Picking History">
<field name="move_stock_return_history" nolabel="1"/>
</page>
</notebook>
@@ -899,7 +899,7 @@
<button name="action_cancel" states="assigned" string="Cancel" type="object" icon="gtk-cancel"/>
</group>
</page>
<page string="Return Packing History">
<page string="Return Picking History">
<field name="move_stock_return_history" nolabel="1"/>
</page>
</notebook>
@@ -1067,7 +1067,7 @@
<button name="action_cancel" states="assigned" string="Cancel" type="object" icon=""/>
</group>
</page>
<page string="Return Packing History">
<page string="Return Picking History">
<field name="move_stock_return_history" nolabel="1"/>
</page>
</notebook>
@@ -1256,7 +1256,7 @@
<button name="action_done" states="assigned" string="Make Parcel" type="object" icon="gtk-jump-to"/>
</group>
</page>
<page string="Return Packing History">
<page string="Return Picking History">
<field name="move_stock_return_history" nolabel="1"/>
</page>
</notebook>
@@ -1381,7 +1381,7 @@
<button name="action_done" states="assigned" string="Done" type="object" icon="gtk-jump-to"/>
</group>
</page>
<page string="Return Packing History">
<page string="Return Picking History">
<field name="move_stock_return_history" nolabel="1"/>
</page>
</notebook>
+11 -11
View File
@@ -40,11 +40,11 @@ def _get_returns(self, cr, uid, data, context):
pool = pooler.get_pool(cr.dbname)
pick_obj = pool.get('stock.picking')
pick = pick_obj.browse(cr, uid, [data['id']])[0]
if pick.state != 'done':
raise wizard.except_wizard(_('Warning !'), _("The Packing is not completed yet!\nYou cannot return packing which is not in 'Done' state!"))
raise wizard.except_wizard(_('Warning !'), _("The Picking is not completed yet!\nYou cannot return picking which is not in 'Done' state!"))
res = {}
return_history = {}
for m_line in pick.move_lines:
return_history[m_line.id] = 0
@@ -59,10 +59,10 @@ def _get_returns(self, cr, uid, data, context):
arch_lst.append('<field name="return%s"/>\n<newline/>' % (m.id,))
fields['return%s' % m.id]={'string':m.name, 'type':'float', 'required':True, 'default':make_default(quantity - return_history[m.id])}
res.setdefault('returns', []).append(m.id)
if not res.get('returns',False):
raise wizard.except_wizard(_('Warning!'),_('There is no product to return!'))
arch_lst.append('<field name="invoice_state"/>\n<newline/>')
if pick.invoice_state=='invoiced':
new_invoice_state='2binvoiced'
@@ -96,16 +96,16 @@ def _create_returns(self, cr, uid, data, context):
'move_lines':[], 'state':'draft', 'type':new_type,
'date':date_cur, 'invoice_state':data['form']['invoice_state'],})
new_location=move.location_dest_id.id
new_qty = data['form']['return%s' % move.id]
returned_qty = move.product_qty
for rec in move.move_stock_return_history:
returned_qty -= rec.product_qty
if returned_qty != new_qty:
set_invoice_state_to_none = False
new_move=move_obj.copy(cr, uid, move.id, {
'product_qty': new_qty,
'product_uos_qty': uom_obj._compute_qty(cr, uid, move.product_uom.id,
@@ -114,10 +114,10 @@ def _create_returns(self, cr, uid, data, context):
'location_id':new_location, 'location_dest_id':move.location_id.id,
'date':date_cur, 'date_planned':date_cur,})
move_obj.write(cr, uid, [move.id], {'move_stock_return_history':[(4,new_move)]})
if set_invoice_state_to_none:
pick_obj.write(cr, uid, [pick.id], {'invoice_state':'none'})
if new_picking:
wf_service = netsvc.LocalService("workflow")
if new_picking:
+242 -202
View File
@@ -28,13 +28,61 @@ import time
class survey_browse_response(report_rml):
def create(self, cr, uid, ids, datas, context):
rml ="""<document filename="Survey Analysis Report.pdf">
<template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
_divide_columns_for_matrix = 0.7
_display_ans_in_rows = 5
_pageSize = ('29.7cm','21.1cm')
if datas.has_key('form') and datas['form']['orientation']=='vertical':
if datas['form']['paper_size']=='letter':
_pageSize = ('21.6cm','27.9cm')
elif datas['form']['paper_size']=='legal':
_pageSize = ('21.6cm','35.6cm')
elif datas['form']['paper_size']=='a4':
_pageSize = ('21.1cm','29.7cm')
elif datas.has_key('form') and datas['form']['orientation']=='horizontal':
if datas['form']['paper_size']=='letter':
_pageSize = ('27.9cm','21.6cm')
elif datas['form']['paper_size']=='legal':
_pageSize = ('35.6cm','21.6cm')
elif datas['form']['paper_size']=='a4':
_pageSize = ('29.7cm','21.1cm')
_frame_width = tools.ustr(_pageSize[0])
_frame_height = tools.ustr(float(_pageSize[1].replace('cm','')) - float(1.90))+'cm'
_tbl_widths = tools.ustr(float(_pageSize[0].replace('cm','')) - float(2.10))+'cm'
rml ="""<document filename="Survey Response Report.pdf">
<template pageSize="("""+_pageSize[0]+""","""+_pageSize[1]+""")" title='Survey Response.pdf' author="Martin Simon" allowSplitting="20" >
<pageTemplate id="first">
<frame id="first" x1="57.0" y1="57.0" width="481" height="728"/>
</pageTemplate>
</template>
<frame id="first" x1="0.0cm" y1="1.0cm" width='"""+_frame_width+"""' height='"""+_frame_height+"""'/>
<pageGraphics>
<lineMode width="1.0"/>
<lines>1.0cm """+tools.ustr(float(_pageSize[1].replace('cm','')) - float(1.00))+'cm'+""" """+tools.ustr(float(_pageSize[0].replace('cm','')) - float(1.00))+'cm'+""" """+tools.ustr(float(_pageSize[1].replace('cm','')) - float(1.00))+'cm'+"""</lines>
<lines>1.0cm """+tools.ustr(float(_pageSize[1].replace('cm','')) - float(1.00))+'cm'+""" 1.0cm 1.00cm</lines>
<lines>"""+tools.ustr(float(_pageSize[0].replace('cm','')) - float(1.00))+'cm'+""" """+tools.ustr(float(_pageSize[1].replace('cm','')) - float(1.00))+'cm'+""" """+tools.ustr(float(_pageSize[0].replace('cm','')) - float(1.00))+'cm'+""" 1.00cm</lines>
<lines>1.0cm 1.00cm """+tools.ustr(float(_pageSize[0].replace('cm','')) - float(1.00))+'cm'+""" 1.00cm</lines>"""
if datas.has_key('form') and datas['form']['page_number']:
rml +="""
<fill color="gray"/>
<setFont name="Helvetica" size="10"/>
<drawRightString x='"""+tools.ustr(float(_pageSize[0].replace('cm','')) - float(1.00))+'cm'+"""' y="0.6cm">Page : <pageNumber/> </drawRightString>"""
rml +="""</pageGraphics>
</pageTemplate>
</template>
<stylesheet>
<blockTableStyle id="tbl_white">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="tbl_gainsboro">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
<blockBackground colorName="gainsboro" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="ans_tbl_white">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
@@ -46,7 +94,7 @@ class survey_browse_response(report_rml):
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<blockBackground colorName="gainsboro" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table1">
<blockTableStyle id="simple_table">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6"/>
@@ -91,22 +139,25 @@ class survey_browse_response(report_rml):
<blockTableStyle id="Table_heading">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table_head_2">
<blockTableStyle id="title_tbl">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBEFORE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEABOVE" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="1,-1"/>
<blockBackground colorName="black" start="0,0" stop="-1,-1"/>
<blockTextColor colorName="white" start="0,0" stop="0,0"/>
</blockTableStyle>
<blockTableStyle id="page_tbl">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,-1" stop="1,-1"/>
<blockBackground colorName="gray" start="0,0" stop="-1,-1"/>
<blockTextColor colorName="white" start="0,0" stop="0,0"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
<paraStyle name="title" fontName="helvetica-bold" fontSize="18.0" leftIndent="0.0" textColor="white"/>
<paraStyle name="answer_right" alignment="RIGHT" fontName="helvetica" fontSize="09.0" leftIndent="2.0"/>
<paraStyle name="Standard1" fontName="helvetica-bold" alignment="RIGHT" fontSize="09.0"/>
<paraStyle name="Standard" alignment="LEFT" fontName="Helvetica-Bold" fontSize="11.0"/>
@@ -123,107 +174,96 @@ class survey_browse_response(report_rml):
<paraStyle name="P1" fontName="Helvetica" fontSize="9.0" leading="12" spaceBefore="0.0" spaceAfter="1.0"/>
<paraStyle name="terp_tblheader_Details" fontName="Helvetica-Bold" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_9" fontName="Helvetica" fontSize="9.0" leading="11" alignment="LEFT" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="9.0" leading="10" alignment="CENTER" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_default_Centre_8" fontName="Helvetica" fontSize="9.0" leading="10" alignment="CENTER" spaceBefore="0.0" spaceAfter="0.0"/>
<paraStyle name="terp_tblheader_General_Centre_simple" fontName="Helvetica" fontSize="10.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_Centre" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="LEFT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_right_simple" fontName="Helvetica" fontSize="10.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="terp_tblheader_General_right" fontName="Helvetica-Bold" fontSize="10.0" leading="10" alignment="RIGHT" spaceBefore="6.0" spaceAfter="6.0"/>
<paraStyle name="descriptive_text" fontName="helvetica-bold" fontSize="18.0" leftIndent="0.0" textColor="white"/>
<paraStyle name="descriptive_text_heading" fontName="helvetica-bold" fontSize="18.0" alignment="RIGHT" leftIndent="0.0" textColor="white"/>
</stylesheet>
<images/>
<story>
<para style="Title"><u>Browse Responses </u></para>
<para style="Standard"><font></font></para>
<para style="P2">
<font color="white"> </font>
</para>
"""
<story>"""
surv_resp_obj = pooler.get_pool(cr.dbname).get('survey.response')
if datas.has_key('form') and datas['form'].has_key('response_ids'):
response_id = datas['form']['response_ids'][0][2]
elif context.has_key('response_id'):
response_id = [int(context['response_id'])]
else:
response_id = surv_resp_obj.search(cr, uid, [('survey_id','in',ids)])
response_id = surv_resp_obj.search(cr, uid, [('survey_id', 'in', ids)])
surv_resp_line_obj = pooler.get_pool(cr.dbname).get('survey.response.line')
surv_obj = pooler.get_pool(cr.dbname).get('survey')
surv_ans_obj = pooler.get_pool(cr.dbname).get('survey.answer')
for response in surv_resp_obj.browse(cr,uid, response_id):
for response in surv_resp_obj.browse(cr, uid, response_id):
for survey in surv_obj.browse(cr, uid, [response.survey_id.id]):
tbl_width = float(_tbl_widths.replace('cm', ''))
colwidth = "4.6cm,5cm," + str(tbl_width - 16.4) +"cm,4cm,3cm"
rml += """<blockTable colWidths='""" + colwidth + """' style="Table_heading">
<tr>
<td><para style="terp_tblheader_General_Centre">Response Create Date:- </para></td>
<td><para style="terp_tblheader_General_Centre_simple">""" + to_xml(time.strftime('%d-%m-%Y %I:%M:%S %p', time.strptime(response.date_create.split('.')[0], '%Y-%m-%d %H:%M:%S'))) + """</para></td>
<td><para style="terp_tblheader_General_Centre"></para></td>
<td><para style="terp_tblheader_General_right">Response By:- </para></td>
<td><para style="terp_tblheader_General_right_simple">""" + to_xml(response.user_id.name) + """</para></td>
</tr>
</blockTable><para style="P2"></para>"""
status = "Not Finished"
if response.state == "done":
status = "Finished"
rml += """<blockTable colWidths="210.0,120.0,100.0,70" style="Table_heading">
<tr>
<td>
<para style="terp_tblheader_General_Centre">Survey Title </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Response Create Date </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Response By </para>
</td>
<td>
<para style="terp_tblheader_General_Centre">Status</para>
</td>
</tr>
</blockTable>
<blockTable colWidths="210.0,120.0,100.0,70" style="Table_head_2">
<tr>
<td>
<para style="terp_default_Centre_8">""" + to_xml(tools.ustr(survey.title)) + """</para>
</td>
<td>
<para style="terp_default_Centre_8">""" + to_xml(time.strftime('%d-%m-%Y %I:%M:%S %p', time.strptime(response.date_create.split('.')[0], '%Y-%m-%d %H:%M:%S'))) + """</para>
</td>
<td>
<para style="terp_default_Centre_8">""" + to_xml(response.user_id.name) + """</para>
</td>
<td>
<para style="terp_default_Centre_8">""" + status + """</para>
</td>
</tr>
if response.state == "done": status = "Finished"
colwidth = str(tbl_width - 7) + "cm,"
colwidth += "7cm"
rml += """<blockTable colWidths='""" + str(colwidth) + """' style="title_tbl">
<tr>
<td><para style="title">""" + to_xml(tools.ustr(survey.title)) + """</para><para style="P2"><font></font></para></td>
<td><para style="descriptive_text_heading">Status :- """ + to_xml(tools.ustr(status)) + """</para><para style="P2"><font></font></para></td>
</tr>
</blockTable>"""
if survey.note:
rml += """<blockTable colWidths='""" + _tbl_widths + """' style="note_table">
<tr><td><para style="descriptive_text">""" + to_xml(tools.ustr(survey.note)) + """</para><para style="P2"><font></font></para></td></tr>
</blockTable>"""
for page in survey.page_ids:
rml += """<para style="P2"></para>
<blockTable colWidths="500" style="Table4">
<tr>
<td><para style="page">Page :- """ + to_xml(tools.ustr(page.title)) + """</para></td>
</tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="page_tbl">
<tr><td><para style="page">Page :- """ + to_xml(tools.ustr(page.title)) + """</para></td></tr>
</blockTable>"""
if page.note:
rml += """<para style="P2"></para>
<blockTable colWidths="500" style="note_table">
<tr>
<td><para style="response">""" + to_xml(tools.ustr(page.note)) + """</para></td>
</tr>
</blockTable>"""
<blockTable colWidths='""" + str(_tbl_widths) + """' style="note_table">
<tr><td><para style="response">""" + to_xml(tools.ustr(page.note)) + """</para></td></tr>
</blockTable>"""
for que in page.question_ids:
rml += """<para style="P2"></para>
<blockTable colWidths="500" style="Table5">
<tr>
<td><para style="question">Que : """ + to_xml(to_xml(que.question)) + """</para></td>
</tr>
</blockTable>"""
answer = surv_resp_line_obj.browse(cr,uid, surv_resp_line_obj.search(cr, uid, [('question_id','=',que.id),('response_id','=',response.id)]))
<blockTable colWidths='""" + str(_tbl_widths) + """' style="Table5">
<tr><td><para style="question">Que : """ + to_xml(to_xml(que.question)) + """</para></td></tr>
</blockTable>"""
answer = surv_resp_line_obj.browse(cr ,uid, surv_resp_line_obj.search(cr, uid, [('question_id', '=', que.id),('response_id', '=', response.id)]))
if que.type in ['descriptive_text']:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(que.descriptive_text)) + """</para></td> </tr>
</blockTable>"""
rml +="""<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr><td> <para style="response">""" + to_xml(tools.ustr(que.descriptive_text)) + """</para></td> </tr>
</blockTable>"""
elif que.type in ['table']:
if len(answer) and answer[0].state == "done":
col_heading = pooler.get_pool(cr.dbname).get('survey.tbl.column.heading')
cols_widhts = []
for col in range(0, len(que.column_heading_ids)):
cols_widhts.append(float(500 / (len(que.column_heading_ids))))
colWidths = ",".join(map(tools.ustr, cols_widhts))
tbl_width = float(_tbl_widths.replace('cm', ''))
for i in range(0, len(que.column_heading_ids)):
cols_widhts.append(tbl_width / float(len(que.column_heading_ids)))
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
colWidths = colWidths + 'cm'
matrix_ans = []
rml +="""<para style="P2"></para><blockTable colWidths=" """ + str(colWidths) + """ " style="Table41"><tr>"""
for col in que.column_heading_ids:
if col.title not in matrix_ans:
matrix_ans.append(col.title)
rml +="""<td> <para style="terp_tblheader_Details">""" + to_xml(tools.ustr(col.title)) +"""</para></td>"""
rml += """<td> <para style="terp_tblheader_Details">""" + to_xml(tools.ustr(col.title)) +"""</para></td>"""
rml += """</tr></blockTable>"""
i = 0
for row in range(0, que.no_of_rows):
rml +="""<blockTable colWidths=" """ + str(colWidths) + """ " style="Table51"><tr>"""
table_data = col_heading.browse(cr, uid, col_heading.search(cr, uid, [('response_table_id', '=', answer[0].id),('name','=',row)]))
if i%2!=0:
style='tbl_white'
else:
style='tbl_gainsboro'
i+=1
rml += """<blockTable colWidths=" """ + str(colWidths) + """ " style='"""+style+"""'><tr>"""
table_data = col_heading.browse(cr, uid, col_heading.search(cr, uid, [('response_table_id', '=', answer[0].id), ('name', '=', row)]))
for column in matrix_ans:
value = False
for col in table_data:
@@ -235,19 +275,15 @@ class survey_browse_response(report_rml):
rml += """<td><para style="terp_default_9"><font color ="white"> </font></para></td>"""
rml += """</tr></blockTable>"""
else:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
rml +="""<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr><td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
elif que.type in ['multiple_choice_only_one_ans','multiple_choice_multiple_ans']:
if len(answer) and answer[0].state == "done":
ans_list = []
for ans in answer[0].response_answer_ids:
ans_list.append(to_xml(tools.ustr(ans.answer_id.answer)))
answer_choice=[]
_divide_columns_for_matrix = 20
_display_ans_in_rows = 5
_tbl_widths = 500
for ans in que['answer_choice_ids']:
answer_choice.append(to_xml(tools.ustr((ans.answer))))
@@ -257,38 +293,35 @@ class survey_browse_response(report_rml):
divide_list = divide_list(answer_choice,_display_ans_in_rows)
for lst in divide_list:
if que.type == 'multiple_choice_multiple_ans':
if len(lst)<>0 and len(lst)<>int(round(float(len(answer_choice))/_display_ans_in_rows,0)):
if len(lst) <> 0 and len(lst) <> int(round(float(len(answer_choice)) / _display_ans_in_rows, 0)):
lst.append('')
if not lst:
del divide_list[divide_list.index(lst):]
for divide in divide_list:
a = _divide_columns_for_matrix*len(divide)
b = float(_tbl_widths) - float(a)
cols_widhts=[]
for div in range(0,len(divide)):
cols_widhts.append(float(a/len(divide)))
cols_widhts.append(float(b/len(divide)))
colWidths = ",".join(map(tools.ustr, cols_widhts))
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1">
<tr>"""
for div in range(0,len(divide)):
if divide[div]!='':
a = _divide_columns_for_matrix * len(divide)
b = float(_tbl_widths.replace('cm', '')) - float(a)
cols_widhts = []
for div in range(0, len(divide)):
cols_widhts.append(float(a / len(divide)))
cols_widhts.append(float(b / len(divide)))
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
colWidths = colWidths +'cm'
rml += """<blockTable colWidths=" """ + colWidths + """ " style="simple_table"><tr>"""
for div in range(0, len(divide)):
if divide[div] != '':
if que.type == 'multiple_choice_multiple_ans':
if divide[div] in ans_list:
rml += """<td><illustration><fill color="white"/>
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
<fill color="gray"/>
<rect x="0.2cm" y="-0.35cm" width="0.3 cm" height="0.3cm" fill="yes" stroke="no" round="0.1cm"/>
</illustration></td>
<td><para style="answer">""" + divide[div] + """</para></td>"""
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
<fill color="gray"/>
<rect x="0.2cm" y="-0.35cm" width="0.3 cm" height="0.3cm" fill="yes" stroke="no" round="0.1cm"/>
</illustration></td>
<td><para style="answer">""" + divide[div] + """</para></td>"""
else:
rml+="""
<td>
<illustration>
rml+="""<td><illustration>
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="no" stroke="yes" round="0.1cm"/>
</illustration>
</td>
<td><para style="answer">""" + divide[div] + """</para></td>"""
</illustration></td>
<td><para style="answer">""" + divide[div] + """</para></td>"""
else:
if divide[div] in ans_list:
rml += """<td><illustration><fill color="white"/>
@@ -298,154 +331,162 @@ class survey_browse_response(report_rml):
</illustration></td>
<td><para style="answer">""" + divide[div] + """</para></td>"""
else:
rml+="""
<td>
<illustration>
<circle x="0.3cm" y="-0.18cm" radius="0.23 cm" fill="no" stroke="yes" round="0.1cm"/>
</illustration>
</td>
<td><para style="answer">""" + divide[div] + """</para></td>"""
rml += """<td>
<illustration>
<circle x="0.3cm" y="-0.18cm" radius="0.23 cm" fill="no" stroke="yes" round="0.1cm"/>
</illustration>
</td>
<td><para style="answer">""" + divide[div] + """</para></td>"""
else:
rml+="""
<td></td>
<td></td>"""
rml+="""</tr></blockTable>"""
rml += """<td></td><td></td>"""
rml += """</tr></blockTable>"""
if que.is_comment_require and answer[0].comment:
rml+="""<blockTable colWidths="500" style="Table1"><tr>
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table"><tr>
<td><para style="answer">""" + to_xml(tools.ustr(answer[0].comment)) + """</para></td></tr></blockTable>"""
else:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr><td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
elif que.type in ['multiple_textboxes_diff_type','multiple_textboxes','date','date_and_time','numerical_textboxes','multiple_textboxes_diff_type']:
if len(answer) and answer[0].state == "done":
cols_widhts = []
cols_widhts.append(float(_tbl_widths.replace('cm',''))/2)
cols_widhts.append(float(_tbl_widths.replace('cm',''))/2)
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
colWidths = tools.ustr(colWidths) + 'cm'
answer_list = {}
for ans in answer[0].response_answer_ids:
answer_list[ans.answer_id.answer] = ans.answer
for que_ans in que['answer_choice_ids']:
if que_ans.answer in answer_list:
rml +="""<blockTable colWidths="200,300" style="Table1">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(que_ans.answer)) + """</para></td>
<td> <para style="response">""" + to_xml(tools.ustr(answer_list[que_ans.answer])) + """</para></td></tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(colWidths) + """' style="simple_table">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(que_ans.answer)) + """</para></td>
<td> <para style="response">""" + to_xml(tools.ustr(answer_list[que_ans.answer])) + """</para></td></tr>
</blockTable>"""
else:
rml +="""<blockTable colWidths="200,300" style="Table1">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(que_ans.answer)) + """</para></td>
<td> <para style="response"></para></td></tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(colWidths) + """' style="simple_table">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(que_ans.answer)) + """</para></td>
<td> <para style="response"></para></td></tr>
</blockTable>"""
else:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
elif que.type in ['single_textbox']:
if len(answer) and answer[0].state == "done":
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(answer[0].single_text)) + """</para></td></tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(answer[0].single_text)) + """</para></td></tr>
</blockTable>"""
else:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
elif que.type in ['comment']:
if len(answer) and answer[0].state == "done":
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(answer[0].comment)) + """</para></td></tr>
</blockTable>"""
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr> <td> <para style="response">""" + to_xml(tools.ustr(answer[0].comment)) + """</para></td></tr>
</blockTable>"""
else:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
elif que.type in ['matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans','rating_scale','matrix_of_drop_down_menus']:
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
elif que.type in ['matrix_of_choices_only_one_ans','matrix_of_choices_only_multi_ans', 'rating_scale', 'matrix_of_drop_down_menus']:
if len(answer) and answer[0].state == "done":
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
if que.type in ['matrix_of_choices_only_one_ans', 'rating_scale'] and que.comment_column:
pass
cols_widhts = []
cols_widhts.append(200)
len_col_heading = len(que.column_heading_ids)
for col in range(0, len_col_heading):
cols_widhts.append(float(300 / len_col_heading))
tmp=0.0
sum = 0.0
if len(que.column_heading_ids):
cols_widhts.append(float(_tbl_widths.replace('cm','')) / float(2.0))
for col in que.column_heading_ids:
cols_widhts.append(float((float(_tbl_widths.replace('cm','')) / float(2.0)) / len(que.column_heading_ids)))
else:
cols_widhts.append(float(_tbl_widths.replace('cm','')))
tmp = 0.0
sum = 0.0
i = 0
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
for col in cols_widhts:
if i==0:
cols_widhts[i] = cols_widhts[i]/2.0
if i == 0:
cols_widhts[i] = cols_widhts[i] / 2.0
tmp = cols_widhts[i]
sum += col
i+=1
cols_widhts.append(round(tmp,2))
colWidths = ",".join(map(tools.ustr, cols_widhts))
matrix_ans = [(0,''),]
i += 1
cols_widhts.append(round(tmp, 2))
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
colWidths = colWidths + 'cm'
matrix_ans = [(0, ''),]
for col in que.column_heading_ids:
if col.title not in matrix_ans:
matrix_ans.append((col.id,col.title))
matrix_ans.append((col.id, col.title))
len_matrix = len(matrix_ans)
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
if que.type in ['matrix_of_choices_only_one_ans', 'rating_scale'] and que.comment_column:
matrix_ans.append(que.column_name)
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table1"><tr>"""
rml += """<blockTable colWidths=" """ + colWidths + """ " style="simple_table"><tr>"""
for mat_col in range(0, len(matrix_ans)):
rml+="""<td><para style="response">""" + to_xml(tools.ustr(matrix_ans[mat_col][1])) + """</para></td>"""
rml +="""</tr>"""
rml+="""</blockTable>"""
i=0
for ans in que.answer_choice_ids:
if i%2!=0:
style='ans_tbl_white'
if i%2 != 0:
style = 'ans_tbl_white'
else:
style='ans_tbl_gainsboro'
i+=1
rml+="""<blockTable colWidths=" """ + colWidths + """ " style='"""+style+"""'>
<tr><td><para style="response">""" + to_xml(tools.ustr(ans.answer)) + """</para></td>"""
style = 'ans_tbl_gainsboro'
i += 1
rml += """<blockTable colWidths=" """ + colWidths + """ " style='"""+style+"""'>
<tr><td><para style="response">""" + to_xml(tools.ustr(ans.answer)) + """</para></td>"""
comment_value = ""
for mat_col in range(1, len_matrix):
value = """"""
for res_ans in answer[0].response_answer_ids:
if res_ans.answer_id.id == ans.id and res_ans.column_id.id == matrix_ans[mat_col][0]:
comment_value = to_xml(tools.ustr(res_ans.comment_field))
comment_value = to_xml(tools.ustr(res_ans.comment_field))
if que.type in ['matrix_of_drop_down_menus']:
value = """<para style="response">""" + to_xml(tools.ustr(res_ans.value_choice)) + """</para>"""
elif que.type in ['matrix_of_choices_only_one_ans','rating_scale']:
elif que.type in ['matrix_of_choices_only_one_ans', 'rating_scale']:
value = """<illustration><fill color="white"/>
<circle x="0.3cm" y="-0.18cm" radius="0.22 cm" fill="yes" stroke="yes"/>
<fill color="gray"/>
<circle x="0.3cm" y="-0.18cm" radius="0.10 cm" fill="yes" stroke="no"/>
</illustration>"""
<circle x="0.3cm" y="-0.18cm" radius="0.22 cm" fill="yes" stroke="yes"/>
<fill color="gray"/>
<circle x="0.3cm" y="-0.18cm" radius="0.10 cm" fill="yes" stroke="no"/>
</illustration>"""
elif que.type in ['matrix_of_choices_only_multi_ans']:
value = """<illustration>
<fill color="white"/>
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
<fill color="gray"/>
<rect x="0.2cm" y="-0.35cm" width="0.3 cm" height="0.3cm" fill="yes" stroke="no" round="0.1cm"/>
</illustration>"""
<fill color="white"/>
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
<fill color="gray"/>
<rect x="0.2cm" y="-0.35cm" width="0.3 cm" height="0.3cm" fill="yes" stroke="no" round="0.1cm"/>
</illustration>"""
break
else:
if que.type in ['matrix_of_drop_down_menus']:
value = """"""
elif que.type in ['matrix_of_choices_only_one_ans','rating_scale']:
value = """<illustration><fill color="white"/>
<circle x="0.3cm" y="-0.18cm" radius="0.22 cm" fill="yes" stroke="yes" round="0.1cm"/>
</illustration>"""
<circle x="0.3cm" y="-0.18cm" radius="0.22 cm" fill="yes" stroke="yes" round="0.1cm"/>
</illustration>"""
elif que.type in ['matrix_of_choices_only_multi_ans']:
value = """<illustration><fill color="white"/>
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
</illustration>"""
<rect x="0.1cm" y="-0.45cm" width="0.5 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>
</illustration>"""
rml+= """<td>""" + value + """</td>"""
if que.type in ['matrix_of_choices_only_one_ans','rating_scale'] and que.comment_column:
if comment_value=='False':
if comment_value == 'False':
comment_value = ''
rml+= """<td><para style="response">"""+ to_xml(tools.ustr(comment_value)) + """</para></td>"""
rml+=""" </tr></blockTable>"""
rml += """<td><para style="response">""" + to_xml(tools.ustr(comment_value)) + """</para></td>"""
rml += """</tr></blockTable>"""
if que.is_comment_require:
rml+="""<blockTable colWidths="500" style="Table1"><tr>
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table"><tr>
<td><para style="answer">""" + to_xml(tools.ustr(answer[0].comment or '')) + """</para></td></tr></blockTable>"""
else:
rml +="""<blockTable colWidths="500" style="Table1">
<tr> <td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
rml += """<pageBreak/>"""
rml += """<blockTable colWidths='""" + str(_tbl_widths) + """' style="simple_table">
<tr><td> <para style="response">No Response</para></td> </tr>
</blockTable>"""
if datas.has_key('form') and not datas['form']['without_pagebreak']:
rml += """<pageBreak/>"""
elif not datas.has_key('form'):
rml += """<pageBreak/>"""
else:
rml += """<para style="P2"><font></font></para>"""
rml += """</story></document>"""
report_type = datas.get('report_type', 'pdf')
create_doc = self.generators[report_type]
@@ -455,4 +496,3 @@ class survey_browse_response(report_rml):
survey_browse_response('report.survey.browse.response', 'survey','','')
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+32 -15
View File
@@ -72,6 +72,21 @@ class survey_form(report_rml):
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="tbl_white">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="tbl_gainsboro">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
<blockBackground colorName="gainsboro" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="ans_tbl_white">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
@@ -106,20 +121,13 @@ class survey_form(report_rml):
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
</blockTableStyle>
<blockTableStyle id="Table4">
<blockTableStyle id="tbl">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#000000" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<blockTableStyle id="Table5">
<blockAlignment value="LEFT"/>
<blockValign value="TOP"/>
<lineStyle kind="LINEBELOW" colorName="#e6e6e6" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEBEFORE" colorName="#777777" start="0,0" stop="-1,-1"/>
<lineStyle kind="LINEAFTER" colorName="#777777" start="0,0" stop="-1,-1"/>
</blockTableStyle>
<initialize>
<paraStyle name="all" alignment="justify"/>
</initialize>
@@ -144,6 +152,12 @@ class survey_form(report_rml):
<blockTable colWidths='"""+_tbl_widths+"""' style="title_tbl">
<tr><td><para style="title">""" + to_xml(tools.ustr(survey.title)) + """</para><para style="P2"><font></font></para></td></tr>
</blockTable>"""
if survey.note:
rml += """
<para style="P2"></para>
<blockTable colWidths='"""+_tbl_widths+"""' style="note_table">
<tr><td><para style="descriptive_text">""" + to_xml(tools.ustr(survey.note)) + """</para><para style="P2"><font></font></para></td></tr>
</blockTable>"""
seq = 0
for page in survey.page_ids:
seq+=1
@@ -273,7 +287,6 @@ class survey_form(report_rml):
<rect x="-0.1cm" y="-0.45cm" width='""" + tools.ustr(cols_widhts[-1] - 0.5) +"cm" + """' height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/>"""
elif que.type in ['matrix_of_choices_only_one_ans','rating_scale']:
value = """ <fill color="white"/>
<!--rect x="0.25cm" y="-0.5cm" width="0.8 cm" height="0.5cm" fill="yes" stroke="yes" round="0.1cm"/-->
<circle x="0.35cm" y="-0.18cm" radius="0.25 cm" fill="yes" stroke="yes"/>"""
else:
value = """ <fill color="white"/>
@@ -336,18 +349,22 @@ class survey_form(report_rml):
cols_widhts.append(tbl_width/float(len(que.column_heading_ids)))
colWidths = "cm,".join(map(tools.ustr, cols_widhts))
colWidths = colWidths+'cm'
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="Table4"><tr>"""
rml+="""<blockTable colWidths=" """ + colWidths + """ " style="tbl"><tr>"""
for col in que.column_heading_ids:
rml+="""<td><para style="terp_tblheader_Details">""" + to_xml(tools.ustr(col.title)) + """</para></td>"""
rml+="""</tr></blockTable>
<blockTable colWidths=" """ + colWidths + """ " style="Table5">"""
rml+="""</tr></blockTable>"""
i=0
for r in range(0,que.no_of_rows):
rml+="""<tr>"""
if i%2!=0:
style='tbl_white'
else:
style='tbl_gainsboro'
i+=1
rml+="""<blockTable colWidths=" """ + colWidths + """ " style='"""+style+"""'><tr>"""
for c in que.column_heading_ids:
rml+="""
<td><para style="terp_default_9"><font color="white"> </font></para></td>"""
rml+="""</tr>"""
rml+="""</blockTable>"""
rml+="""</tr></blockTable>"""
if datas.has_key('form') and not datas['form']['without_pagebreak']:
rml+="""<pageBreak/>"""
elif not datas.has_key('form'):
+1 -10
View File
@@ -2137,6 +2137,7 @@
<data noupdate="1">
<record id="survey_0_Community" model="survey">
<field name="title">Community Survey</field>
<field name="note">Please take a few minutes to complete this survey on the quality of service we provide. We welcome your feedback and appreciate your honesty. With your help, we hope to strengthen the bond between our clients.</field>
<field eval="1" name="response_user"/>
<field name="state">draft</field>
<field name="responsible_id" ref="base.user_root"/>
@@ -2146,7 +2147,6 @@
</data>
<data>
<record id="survey_page_0_Community" model="survey.page">
<field name="note">Please take a few minutes to complete this survey on the quality of service we provide. We welcome your feedback and appreciate your honesty. With your help, we hope to strengthen the bond between our clients.</field>
<field name="title">Service Characteristics</field>
<field name="survey_id" ref="survey_0_Community"/>
<field eval="1" name="sequence"/>
@@ -2805,13 +2805,4 @@
<field eval="8" name="sequence"/>
</record>
</data>
</openerp>
+23 -2
View File
@@ -30,11 +30,32 @@ from tools.translate import _
_survey_form = '''<?xml version="1.0"?>
<form string="Browse Answer">
<field name="response_ids" colspan="4" nolabel="1"/>
<separator string="Responses" colspan="4"/>
<field name="response_ids" colspan="4" nolabel="1"/>
<separator string="Print Option" colspan="4"/>
<field name="orientation" colspan="4"/>
<field name="paper_size" colspan="4"/>
<field name="page_number" colspan="4"/>
<field name="without_pagebreak" colspan="4"/>
</form>'''
_survey_fields = {
'response_ids': {'string': 'Survey', 'type': 'many2many', 'relation': 'survey.response'},
'response_ids': {'string': 'Survey', 'type': 'many2many', 'relation': 'survey.response','required':'1'},
'orientation':{
'string':"Orientation",
'type':'selection',
'selection':[('vertical','Portrait(Vertical)'),
('horizontal','Landscape(Horizontal)')],
'default': lambda *a:'vertical'},
'paper_size':{
'string':"Paper Size",
'type':'selection',
'selection':[('letter','Letter (8.5" x 11")'),
('legal','Legal (8.5" x 14")'),
('a4','A4 (210mm x 297mm)')],
'default': lambda *a:'letter'},
'page_number': {'string':'Include Page Numbers', 'type':'boolean', 'default':lambda *a: 0},
'without_pagebreak': {'string':'Print Without Page Breaks', 'type':'boolean', 'default':lambda *a: 0},
}
class browse_answer_wizard(wizard.interface):