bzr revid: nch@tinyerp.com-20100211044922-c18gbxx6vzyph9z4
This commit is contained in:
nch@tinyerp.com
2010-02-11 10:19:22 +05:30
55 changed files with 1883 additions and 1211 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
+4 -4
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-02-04 00:48+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-09 17:31+0000\n"
"Last-Translator: Antoni Górski <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-16 05:25+0000\n"
"X-Launchpad-Export-Date: 2010-02-10 04:43+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: board_document
@@ -76,7 +76,7 @@ msgstr ""
#. module: board_document
#: model:ir.ui.menu,name:board_document.menu_board_document
msgid "Document"
msgstr ""
msgstr "Dokument"
#. module: board_document
#: view:board.board:0
+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 -13
View File
@@ -241,8 +241,7 @@ class invite_attendee_wizard(osv.osv_memory):
})
att_id = att_obj.create(cr, uid, vals)
if model_field:
obj.write(cr, uid, res_obj.id, {model_field: [(4, att_id)],
'state': 'delegated'})
obj.write(cr, uid, res_obj.id, {model_field: [(4, att_id)]})
if datas.get('send_mail'):
att_obj._send_mail(cr, uid, [att_id], mail_to, \
@@ -665,13 +664,13 @@ or contains the text to be used for display"""),
mail_to = [alarm.user_id.address_id.email]
for att in alarm.attendee_ids:
mail_to.append(att.user_id.address_id.email)
tools.email_send(
tools.config.get('email_from', False),
mail_to,
sub,
body
)
if mail_to:
tools.email_send(
tools.config.get('email_from', False),
mail_to,
sub,
body
)
self.write(cr, uid, [alarm.id], {'state':'done'})
return True
@@ -756,12 +755,12 @@ rule or repeating pattern for anexception to a recurrence set"),
def onchange_user_id(self, cr, uid, ids, user_id, *args, **argv):
if not user_id:
return {'value': {'vtimezone': ''}}
value = {}
return {'value': {'vtimezone': None}}
value = {'vtimezone': None}
cr.execute('select context_tz from res_users where id=%s' % (user_id))
timezone = cr.fetchone()
timezone = cr.fetchone()[0]
if timezone:
value.update({'vtimezone': timezone[0].lower()})
value.update({'vtimezone': timezone.lower()})
return {'value': value}
def export_cal(self, cr, uid, ids, context={}):
+1 -1
View File
@@ -904,7 +904,7 @@ class users(osv.osv):
_inherit = 'res.users'
_description = "Users"
_columns = {
'context_section_id': fields.selection(_section_get, 'Sales Section'),
'context_section_id': fields.many2one('crm.case.section', 'Sales Section'),
}
users()
+11 -11
View File
@@ -9,9 +9,9 @@
<field name="name">Helpdesk Categories</field>
<field name="res_model">crm.case.categ</field>
<field name="view_type">form</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.helpdesk')]</field>
<field name="context">{'object_id':'crm.helpdesk'}</field>
<field name="view_id" ref="crm.crm_case_categ_tree-view"/>
<field name="domain">[('object_id.model', '=', 'crm.helpdesk')]</field>
<field name="context">{'object_id':'crm.helpdesk'}</field>
</record>
<menuitem action="crm_helpdesk_categ_action" id="menu_crm_case_helpdesk-act" parent="crm.menu_crm_case_categ"/>
# ------------------------------------------------------
@@ -26,9 +26,9 @@
<field name="arch" type="xml">
<form string="Helpdesk Support">
<group colspan="4" col="4">
<field colspan="4" name="name" select="1"/>
<field colspan="4" name="name" select="1"/>
<field name="date" select="1"/>
<field name="date_deadline" select="2"/>
<field name="date_deadline" select="2"/>
</group>
<notebook colspan="4">
<page string="General">
@@ -36,10 +36,10 @@
<group col="7" colspan="4">
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)" select="1"/>
<field name="partner_address_id" on_change="onchange_partner_address_id(partner_address_id, email_from)" select="2"/>
<field name="email_from" select="2"/>
<button name="remind_partner" states="open,pending" string="Send Reminder" type="object" icon="gtk-go-forward"/>
</group>
<separator colspan="4" string="Categarization"/>
<group col="7" colspan="4">
@@ -158,7 +158,7 @@
</calendar>
</field>
</record>
<record id="view_crm_case_helpdesk_filter" model="ir.ui.view">
<field name="name">CRM - Helpdesk Search</field>
<field name="model">crm.helpdesk</field>
@@ -186,11 +186,11 @@
<field name="state" select="1">
<filter icon="gtk-index" domain="[('state','in',('open','draft' ))]" help="Current " default="1"/>
</field>
<field name="section_id" select="1" widget="selection" string="Section">
<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>
help="My section"/>
</field>
</group>
</search>
</field>
+2 -2
View File
@@ -638,7 +638,7 @@
<field name="type">form</field>
<field name="arch" type="xml">
<page string="Current Activity" position="inside">
<field name="context_section_id" completion="1"/>
<field name="context_section_id" completion="1" widget="selection" context="{'user_prefence':True}"/>
</page>
</field>
</record>
@@ -651,7 +651,7 @@
<field eval="18" name="priority"/>
<field name="arch" type="xml">
<field name="password" position="after">
<field name="context_section_id" completion="1"/>
<field name="context_section_id" completion="1" widget="selection"/>
</field>
</field>
</record>
+552 -478
View File
File diff suppressed because it is too large Load Diff
+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'],
+17 -17
View File
@@ -43,11 +43,11 @@
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
</record>
<!-- <menuitem
<menuitem
name="Storage Media"
action="action_document_storage_form"
id="menu_document_storage_media"
parent="menu_document_configuration"/>-->
parent="menu_document_management_configuration"/>
<record model="ir.ui.view" id="view_document_directory_form">
<field name="name">document.directory</field>
@@ -173,14 +173,13 @@
<field name="priority" eval="1"/>
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Files">
<form string="Documents">
<group colspan="4" col="6">
<field name="name" select="1" />
<field name="title" select="1"/>
<field name="partner_id"/>
<field name="user_id"/>
<field name="create_uid" select="2"/>
<field name="create_date" select="2"/>
<field name="parent_id" select="2"/>
</group>
<notebook colspan="4">
<page string="Attachment">
@@ -208,17 +207,18 @@
<field name="index_content" nolabel="1" colspan="4" select="1"/>
</page><page string="Security">
<field name="group_ids" colspan="4" nolabel="1"/>
</page><page string="Others Info">
<group colspan="2" col="2">
<separator string="History" colspan="2"/>
<field name="write_date"/>
</page><page string="Others Info">
<group colspan="4" col="4">
<separator string="File Information" colspan="4"/>
<field name="file_size" readonly="1"/>
<newline/>
<separator string="History" colspan="4"/>
<field name="create_uid"/>
<field name="create_date"/>
<field name="write_uid"/>
</group>
<group colspan="2" col="2">
<separator string="File Information" colspan="2"/>
<field name="file_size" readonly="1"/>
<field name="parent_id" select="2"/>
</group>
<field name="write_date"/>
</group>
</page><page string="Notes">
<field colspan="4" name="description" nolabel="1"/>
</page>
@@ -232,7 +232,7 @@
<field name="type">tree</field>
<field name="priority" eval="1"/>
<field name="arch" type="xml">
<tree string="Files">
<tree string="Documents">
<field name="name"/>
<field name="title" />
<field name="partner_id"/>
@@ -251,7 +251,7 @@
</record>
<menuitem name="Documents" id="menu_document_doc" parent="base.menu_document" sequence="5"/>
<menuitem
name="Search a File"
name="Documents"
action="action_document_file_form"
id="menu_document_files"
parent="menu_document_doc"/>
+10 -1
View File
@@ -598,7 +598,8 @@ class node_file(node_class):
if fil.parent_id:
self.storage_id = fil.parent_id.storage_id.id
else:
self.storage_id = None
self.storage_id = None
def get_data(self, cr, fil_obj = None):
""" Retrieve the data for some file.
@@ -607,12 +608,20 @@ class node_file(node_class):
the browse object. """
# this is where storage kicks in..
stor = self.storage_id
if not stor:
data_obj = self.context._dirobj.pool.get('ir.model.data')
data_id = data_obj._get_id(cr, self.context.uid, 'document', 'storage_db')
if data_id:
stor = data_obj.browse(cr, self.context.uid, data_id, context=self.context.context).res_id
assert stor
stobj = self.context._dirobj.pool.get('document.storage')
return stobj.get_data(cr,self.context.uid,stor, self,self.context.context, fil_obj)
def get_data_len(self, cr, fil_obj = None):
# TODO: verify with the storage object!
bin_size = self.context.context.get('bin_size', False)
if bin_size and not self.content_length:
self.content_length = fil_obj.db_datas
return self.content_length
def set_data(self, cr, data, fil_obj = None):
+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 "Сопоставление"
+2 -2
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>
@@ -167,7 +167,7 @@
</record>
<menuitem name="Point of Sale" id="menu_point_root" sequence="10"/>
<menuitem name="Point of Sale" id="menu_point_of_sale" parent="menu_point_root" sequence="1" />
<menuitem name="New Sale" parent="menu_point_of_sale" id="menu_point_ofsale" action="action_pos_pos_form" sequence="1"/>
<menuitem name="Sales Order" parent="menu_point_of_sale" id="menu_point_ofsale" action="action_pos_pos_form" sequence="1"/>
<menuitem action="product.product_normal_action" id="menu_pos_products" parent="menu_point_of_sale" sequence="2" name="Products"/>
<!-- POS Order view (date_payment) -->
+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
+17 -2
View File
@@ -46,6 +46,21 @@ class project(osv.osv):
_name = "project.project"
_description = "Project"
_inherits = {'account.analytic.account':"category_id"}
def search(self, cr, user, args, offset=0, limit=None, order=None,
context=None, count=False):
if user==1:
return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order,
context=context, count=count)
if context and context.has_key('user_prefence') and context['user_prefence']:
cr.execute("""SELECT project.id FROM project_project project
LEFT JOIN account_analytic_account account ON account.id = project.category_id
WHERE (account.user_id = %s)"""%(user))
res = cr.fetchall()
return [(r[0]) for r in res]
return super(project, self).search(cr, user, args, offset=offset, limit=limit, order=order,
context=context, count=count)
def _complete_name(self, cr, uid, ids, name, args, context):
res = {}
for m in self.browse(cr, uid, ids, context=context):
@@ -557,8 +572,8 @@ class users(osv.osv):
_inherit = 'res.users'
_description = "Users"
_columns = {
'context_project_id': fields.selection(_project_get, 'Project'),
}
'context_project_id': fields.many2one('project.project', 'Project')
}
users()
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+12 -41
View File
@@ -121,6 +121,7 @@
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree string="Projects">
<field name="sequence" invisible="1"/>
<field name="name" string="Project Name"/>
<field name="user_id" string="Project Manager"/>
<field name="partner_id" string="Partner"/>
@@ -183,37 +184,6 @@
</field>
</record>
<record id="view_my_project" model="ir.ui.view">
<field name="name">project.project.tree</field>
<field name="model">project.project</field>
<field name="type">tree</field>
<field name="field_parent">child_ids</field>
<field name="arch" type="xml">
<tree string="My projects">
<field name="name" string="Project Name"/>
<field name="partner_id" string="Partner"/>
<field name="planned_hours" widget="float_time"/>
<field name="effective_hours" widget="float_time"/>
<field name="progress_rate" widget="progressbar"/>
<field name="state"/>
</tree>
</field>
</record>
<record id="open_view_my_project_open" model="ir.actions.act_window">
<field name="name">Projects Structure</field>
<field name="res_model">project.project</field>
<field name="view_type">tree</field>
<field name="domain">[('parent_id','=',False)]</field>
<field name="view_id" ref="view_my_project"/>
</record>
<!--<menuitem
action="open_view_my_project_open"
id="menu_open_view_my_project_open"
parent="project.menu_all_project"/>-->
<!-- Wizard for compute remaining hours -->
<record id="view_config_compute_remaining" model="ir.ui.view">
<field name="name">Compute Remaining Hours </field>
<field name="model">config.compute.remaining</field>
@@ -349,6 +319,7 @@
<field name="name"/>
<field name="project_id" icon="gtk-indent"/>
<field name="user_id"/>
<field name="delegated_user_id" invisible="context.get('show_delegated', True)"/>
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" invisible="context.get('set_visible',False)"/>
<field name="date_deadline" invisible="context.get('set_visible',False)"/>
<field name="type" groups="base.group_extended" invisible="context.get('set_visible',False)"/>
@@ -364,7 +335,7 @@
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
<field name="state" invisible="context.get('set_visible',False)"/>
<button name="do_open" states="pending,draft" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-execute" help="For changing to delegate state" invisible="context.get('show_delegated',True)" />
<button groups="base.group_extended" name="%(wizard_delegate_task)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-execute" help="For changing to delegate state"/>
<button name="%(wizard_close_task)d" states="pending,open" string="Done" type="action" icon="gtk-jump-to" help="For changing to done state"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
</tree>
@@ -570,7 +541,7 @@
<field eval="18" name="priority"/>
<field name="arch" type="xml">
<field name="password" position="after">
<field name="context_project_id" completion="1"/>
<field name="context_project_id" completion="1" widget="selection"/>
</field>
</field>
</record>
@@ -583,7 +554,7 @@
<field eval="18" name="priority"/>
<field name="arch" type="xml">
<page string="Current Activity" position="inside">
<field name="context_project_id" completion="1" />
<field name="context_project_id" completion="1" widget="selection" context="{'user_prefence':True}"/>
</page>
</field>
</record>
@@ -595,15 +566,15 @@
<field name="type">form</field>
<field name="arch" type="xml">
<form string="Messages">
<group colspan="6">
<group colspan="6">
<field name="subject" select="1" string="Title"/>
<field name="project_id"/>
<field name="user_id" select="1"/>
<field name="date" select="2"/>
</group>
<separator string="Description" colspan="4"/>
<field name="description" nolabel="1" colspan="4"/>
</form>
<field name="user_id" select="1"/>
<field name="date" select="2"/>
</group>
<separator string="Description" colspan="4"/>
<field name="description" nolabel="1" colspan="4"/>
</form>
</field>
</record>
+1 -1
View File
@@ -89,6 +89,7 @@ class wizard_compute_tasks(wizard.interface):
task_ids.sort()
task_obj = task_pool.browse(cr,uid,task_ids)
task_1 = task_obj[0]
date_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
@@ -210,7 +211,6 @@ class wizard_compute_tasks(wizard.interface):
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]})
@@ -34,11 +34,11 @@
<field eval="&quot;&quot;&quot;Trigger Invoice&quot;&quot;&quot;" name="name"/>
<field name="subflow_id" ref="account.process_process_invoiceprocess0"/>
<field eval="&quot;&quot;&quot;Trigger invoices from sale order lines&quot;&quot;&quot;" name="note"/>
<field name="process_id" ref="process_process_tasksprocess0"/>
<field name="process_id" ref="project.process_process_tasksprocess0"/>
<field eval="&quot;&quot;&quot;object.state=='paid'&quot;&quot;&quot;" name="model_states"/>
<field eval="0" name="flow_start"/>
</record>
<!--
Process Transition
@@ -70,8 +70,8 @@
<field model="process.node" name="target_node_id" ref="process_node_triggerinvoice0"/>
<field model="process.node" name="source_node_id" ref="project.process_node_donetask0"/>
</record>
</data>
</openerp>
+29 -23
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"
"PO-Revision-Date: 2010-02-09 23:39+0000\n"
"Last-Translator: adnan <adnankraljic@yahoo.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-25 04:40+0000\n"
"X-Launchpad-Export-Date: 2010-02-10 04:43+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
@@ -463,6 +465,8 @@ msgid ""
"customer.In this case, it will remove the warehouse link and set the "
"customer location."
msgstr ""
"Postavi adresu ukoliko želite predati direktno od dobavljača kupac. U ovom "
"slučaju, to će se maknuti link skladišta i postaviti lokaciju kupca."
#. module: purchase
#: rml:purchase.quotation:0
@@ -616,7 +620,7 @@ msgstr "Nije moguće imati dva cjenovnika koja se preklapaju!"
#. module: purchase
#: view:purchase.order:0
msgid "Cancel Purchase Order"
msgstr ""
msgstr "Otkaži nabavni nalog"
#. module: purchase
#: model:process.transition,name:purchase.process_transition_createpackinglist0
@@ -636,7 +640,7 @@ msgstr ""
#. module: purchase
#: view:purchase.order.line:0
msgid "History"
msgstr "Historija"
msgstr "Historijat"
#. module: purchase
#: field:purchase.order,state:0
@@ -736,17 +740,17 @@ msgstr ""
#. module: purchase
#: model:process.node,note:purchase.process_node_productrecept0
msgid "Control invoices on receptions"
msgstr ""
msgstr "Kontrolisati račun prilikom primke"
#. module: purchase
#: rml:purchase.order:0
msgid "Date Req."
msgstr ""
msgstr "Datum upita"
#. module: purchase
#: field:purchase.order,date_approve:0
msgid "Date Approved"
msgstr ""
msgstr "Datum odobrenja"
#. module: purchase
#: model:ir.module.module,description:purchase.module_meta_information
@@ -754,6 +758,8 @@ msgid ""
"Module for purchase management\n"
" Request for quotation, Create Supplier Invoice, Print Order..."
msgstr ""
"Modul za upravljanje nabavkom \n"
"Zahtjev za ponudu, kreiranje računa dobavljača, printanje naloga..."
#. module: purchase
#: field:purchase.order.line,product_id:0
@@ -775,18 +781,18 @@ 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
msgid "Confirming Purchase Order"
msgstr ""
msgstr "Potvrdite nabavni nalog"
#. module: purchase
#: field:purchase.order.line,product_uom:0
@@ -796,12 +802,12 @@ 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
msgid "Purchase order is confirmed by the user."
msgstr ""
msgstr "Nabavni nalog je potvrđen od strane korisnika."
#. module: purchase
#: model:process.transition,name:purchase.process_transition_purchaseinvoice0
@@ -811,12 +817,12 @@ msgstr ""
#. module: purchase
#: rml:purchase.order:0
msgid "Your Order Reference"
msgstr ""
msgstr "Referenca vašeg naloga"
#. 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 +832,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
@@ -842,7 +848,7 @@ msgstr "Zahtjevi za ponudu"
#. module: purchase
#: field:purchase.order,invoice_method:0
msgid "Invoicing Control"
msgstr ""
msgstr "Kontrola fakturisanja"
#. module: purchase
#: model:process.transition.action,name:purchase.process_transition_action_approvingpurchaseorder0
@@ -867,17 +873,17 @@ msgstr "Ukupno"
#. module: purchase
#: wizard_view:purchase.order.merge,init:0
msgid "Are you sure you want to merge these orders ?"
msgstr ""
msgstr "Da li ste sigurni da želite sastaviti ove naruđbe?"
#. module: purchase
#: model:process.transition,name:purchase.process_transition_approvingpurchaseorder0
msgid "Approving Purchase Order"
msgstr ""
msgstr "Odobriti nabavni nalog"
#. module: purchase
#: model:process.transition,note:purchase.process_transition_invoicefrompurchase0
msgid "After approved purchase order , it comes into the supplier invoice"
msgstr ""
msgstr "Nakon što je nabavni nalog odobren prelazi u račun dobavljača."
#. module: purchase
#: view:purchase.order.line:0
+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: 2009-11-17 10:17+0000\n"
"Last-Translator: Fabien (Open ERP) <fp@tinyerp.com>\n"
"PO-Revision-Date: 2010-02-09 17:33+0000\n"
"Last-Translator: Antoni Górski <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-16 05:06+0000\n"
"X-Launchpad-Export-Date: 2010-02-10 04:43+0000\n"
"X-Generator: Launchpad (build Unknown)\n"
#. module: purchase
@@ -575,7 +575,7 @@ msgstr "Tworzy fakturę z listy przesunięć (przyjęć)"
#. module: purchase
#: help:purchase.order,date_order:0
msgid "Date on which this document has been created."
msgstr ""
msgstr "Data utworzenia dokumentu."
#. module: purchase
#: view:purchase.order:0
+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
@@ -68,7 +68,7 @@
<field name="view_mode">tree</field>
<field name="search_view_id" ref="view_task_project_user_search"/>
</record>
<menuitem action="action_project_task_user_tree" id="menu_project_task_user_tree" parent="report_task.next_id_57"/>
<menuitem action="action_project_task_user_tree" id="menu_project_task_user_tree" parent="base.menu_project_report"/>
<!-- Tasks by projects -->
@@ -133,7 +133,7 @@
<field name="view_mode">tree</field>
<field name="search_view_id" ref="view_task_project_search"/>
</record>
<menuitem action="action_project_task_tree" id="menu_project_task_tree" parent="report_task.next_id_57"/>
<menuitem action="action_project_task_tree" id="menu_project_task_tree" parent="base.menu_project_report"/>
</data>
</openerp>
+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="response">""" + to_xml(tools.ustr(survey.note or '')) + """</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 or '')) + """</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 or '')) + """</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:
+5 -2
View File
@@ -31,6 +31,7 @@ from tools import to_xml
import tools
from mx.DateTime import *
import netsvc
import os
class survey_type(osv.osv):
_name = 'survey.type'
@@ -902,7 +903,7 @@ class survey_question_wiz(osv.osv_memory):
context.update({'response_id':response_id})
report = self.create_report(cr, uid, [int(survey_id)], 'report.survey.browse.response', survey_data.title,context)
attachments = []
file = open("/tmp/" + survey_data.title + ".pdf")
file = open(tools.config['addons_path'] + '/survey/report/' + survey_data.title + ".pdf")
file_data = ""
while 1:
line = file.readline()
@@ -910,6 +911,8 @@ class survey_question_wiz(osv.osv_memory):
if not line:
break
attachments.append((survey_data.title + ".pdf",file_data))
file.close()
os.remove(tools.config['addons_path'] + '/survey/report/' + survey_data.title + ".pdf")
user_email = False
resp_email = False
if user_obj.browse(cr, uid, uid).address_id.id:
@@ -938,7 +941,7 @@ class survey_question_wiz(osv.osv_memory):
if not report_name or not res_ids:
return (False, Exception('Report name and Resources ids are required !!!'))
try:
ret_file_name = '/tmp/'+file_name+'.pdf'
ret_file_name = tools.config['addons_path'] + '/survey/report/' + file_name + '.pdf'
service = netsvc.LocalService(report_name);
(result, format) = service.create(cr, uid, res_ids, {}, context)
fp = open(ret_file_name, 'wb+');
+1 -1
View File
@@ -3,7 +3,7 @@
<data>
<!-- <menuitem name="Survey Management" id="main_menu_survey" icon="terp-crm" sequence="1" groups="group_survey_manager,group_survey_user"/>-->
<menuitem icon="STOCK_PREFERENCES" id="base.menu_tools" name="Tools"/>
<menuitem icon="STOCK_PREFERENCES" id="base.menu_tools" name="Tools" sequence="15"/>
<menuitem name="Survey" id="main_menu_survey"
sequence="3" groups="group_survey_manager,group_survey_user"
parent="base.menu_tools" />
+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):
+4 -2
View File
@@ -114,7 +114,7 @@ def send_mail(self, cr, uid, data, context):
attachments = []
for id in survey_ref.browse(cr, uid, data['ids']):
report = create_report(cr, uid, [id.id], 'report.survey.form', id.title)
file = open("/tmp/" + id.title +".pdf")
file = open(tools.config['addons_path'] + '/survey/report/' + id.title +".pdf")
file_data = ""
while 1:
line = file.readline()
@@ -122,6 +122,8 @@ def send_mail(self, cr, uid, data, context):
if not line:
break
attachments.append((id.title +".pdf",file_data))
file.close()
os.remove(tools.config['addons_path'] + '/survey/report/' + id.title + ".pdf")
for partner in pool.get('res.partner').browse(cr, uid, partner_ids):
for addr in partner.address:
@@ -191,7 +193,7 @@ def create_report(cr, uid, res_ids, report_name=False, file_name=False):
if not report_name or not res_ids:
return (False, Exception('Report name and Resources ids are required !!!'))
try:
ret_file_name = '/tmp/'+file_name+'.pdf'
ret_file_name = tools.config['addons_path'] + '/survey/report/' + file_name + '.pdf'
service = netsvc.LocalService(report_name);
(result, format) = service.create(cr, uid, res_ids, {}, {})
fp = open(ret_file_name, 'wb+');