[MERGE] branch merged with lp:~openerp-dev/openobject-addons/trunk-dev-addons3
bzr revid: mtr@mtr-20100715050046-zfhrlcavbr0c58oh
This commit is contained in:
@@ -1746,7 +1746,12 @@ class account_tax(osv.osv):
|
||||
tin = self.compute_inv(cr, uid, tin, price_unit, quantity, address_id=address_id, product=product, partner=partner)
|
||||
for r in tin:
|
||||
totalex -= r['amount']
|
||||
tex = self._compute(cr, uid, tex, totalex/quantity, quantity, address_id=address_id, product=product, partner=partner)
|
||||
totlex_qty=0.0
|
||||
try:
|
||||
totlex_qty=totalex/quantity
|
||||
except:
|
||||
pass
|
||||
tex = self._compute(cr, uid, tex, totlex_qty, quantity, address_id=address_id, product=product, partner=partner)
|
||||
for r in tex:
|
||||
totalin += r['amount']
|
||||
return {
|
||||
|
||||
@@ -183,7 +183,7 @@ class account_cash_statement(osv.osv):
|
||||
('open','Open')], 'State', required=True, states={'confirm': [('readonly', True)]}, readonly="1"),
|
||||
'total_entry_encoding':fields.function(_get_sum_entry_encoding, method=True, store=True, string="Cash Transaction", help="Total cash transactions"),
|
||||
'closing_date':fields.datetime("Closed On"),
|
||||
'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance', help="Closing balance based on Opening Balance and Transactions"),
|
||||
'balance_end': fields.function(_end_balance, method=True, store=True, string='Balance', help="Closing balance based on Starting Balance and Cash Transactions"),
|
||||
'balance_end_cash': fields.function(_balance_end_cash, method=True, store=True, string='Balance', help="Closing balance based on cashBox"),
|
||||
'starting_details_ids': fields.one2many('account.cashbox.line', 'starting_id', string='Opening Cashbox'),
|
||||
'ending_details_ids': fields.one2many('account.cashbox.line', 'ending_id', string='Closing Cashbox'),
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
<field name="number" readonly="1"/>
|
||||
<field name="type" invisible="1"/>
|
||||
<field name="currency_id" domain="[('company_id','=', company_id)]" on_change="onchange_currency_id(currency_id, company_id)" width="50"/>
|
||||
<button name="%(action_account_change_currency)d" type="action" icon="gtk-apply" string="Change"/>
|
||||
<button name="%(action_account_change_currency)d" type="action" icon="terp-stock_effects-object-colorize" string="Change"/>
|
||||
<newline/>
|
||||
<field name="partner_id" domain="[('supplier','=', 1)]" on_change="onchange_partner_id(type,partner_id,date_invoice,payment_term, partner_bank,company_id)" context="{'default_customer': 0}"/>
|
||||
<field domain="[('partner_id','=',partner_id)]" name="address_invoice_id"/>
|
||||
@@ -202,7 +202,7 @@
|
||||
<field name="state"/>
|
||||
<field name="residual"/>
|
||||
<group col="3" colspan="4">
|
||||
<button name="invoice_open" states="draft,proforma2" string="Validate" icon="terp-camera_test"/>
|
||||
<button name="invoice_open" states="draft,proforma2" string="Approve" icon="terp-camera_test"/>
|
||||
<button name="%(action_account_invoice_pay)d" type='action' string='Pay Invoice' states='open' icon="gtk-ok"/>
|
||||
<button name="invoice_cancel" states="draft,proforma2,sale,open" string="Cancel" icon="terp-gtk-stop"/>
|
||||
<button name="action_cancel_draft" states="cancel" string="Set to Draft" type="object" icon="terp-stock_effects-object-colorize"/>
|
||||
|
||||
@@ -42,7 +42,7 @@ write({'state':'open'})</field>
|
||||
</record>
|
||||
<record model="workflow.activity" id="act_open_test">
|
||||
<field name="wkf_id" ref="wkf"/>
|
||||
<field name="name">open</field>
|
||||
<field name="name">re-open</field>
|
||||
<field name="action">write({'state':'open'})</field>
|
||||
<field name="kind">function</field>
|
||||
</record>
|
||||
@@ -124,7 +124,15 @@ write({'state':'cancel'})</field>
|
||||
<field name="act_to" ref="act_cancel"/>
|
||||
<field name="signal">invoice_cancel</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="open_test_to_paid" model="workflow.transition">
|
||||
<field name="act_from" ref="act_open_test"/>
|
||||
<field name="act_to" ref="act_paid"/>
|
||||
<field name="trigger_model">account.move.line</field>
|
||||
<field name="trigger_expr_id">move_line_id_payment_get()</field>
|
||||
<field name="condition">test_paid()</field>
|
||||
</record>
|
||||
|
||||
<record id="draft_to_pro2" model="workflow.transition">
|
||||
<field name="act_from" ref="account.act_draft"/>
|
||||
<field name="act_to" ref="act_proforma2"/>
|
||||
|
||||
@@ -482,7 +482,6 @@ class account_move_line(osv.osv):
|
||||
cr.execute('SELECT indexname FROM pg_indexes WHERE indexname = \'account_move_line_journal_id_period_id_index\'')
|
||||
if not cr.fetchone():
|
||||
cr.execute('CREATE INDEX account_move_line_journal_id_period_id_index ON account_move_line (journal_id, period_id)')
|
||||
cr.commit()
|
||||
|
||||
def _check_no_view(self, cr, uid, ids):
|
||||
lines = self.browse(cr, uid, ids)
|
||||
@@ -675,6 +674,7 @@ class account_move_line(osv.osv):
|
||||
account_id = line['account_id']['id']
|
||||
partner_id = (line['partner_id'] and line['partner_id']['id']) or False
|
||||
writeoff = debit - credit
|
||||
|
||||
# Ifdate_p in context => take this date
|
||||
if context.has_key('date_p') and context['date_p']:
|
||||
date=context['date_p']
|
||||
@@ -797,7 +797,7 @@ class account_move_line(osv.osv):
|
||||
title = self.view_header_get(cr, uid, view_id, view_type, context)
|
||||
xml = '''<?xml version="1.0"?>\n<tree string="%s" editable="top" refresh="5" on_write="on_create_write">\n\t''' % (title)
|
||||
journal_pool = self.pool.get('account.journal')
|
||||
|
||||
|
||||
ids = journal_pool.search(cr, uid, [])
|
||||
journals = journal_pool.browse(cr, uid, ids)
|
||||
all_journal = [None]
|
||||
@@ -814,14 +814,14 @@ class account_move_line(osv.osv):
|
||||
else:
|
||||
fields.get(field.field).append(journal.id)
|
||||
common_fields[field.field] = common_fields[field.field] + 1
|
||||
|
||||
|
||||
fld.append(('period_id', 3))
|
||||
fld.append(('journal_id', 10))
|
||||
flds.append('period_id')
|
||||
flds.append('journal_id')
|
||||
fields['period_id'] = all_journal
|
||||
fields['journal_id'] = all_journal
|
||||
|
||||
|
||||
from operator import itemgetter
|
||||
fld = sorted(fld, key=itemgetter(1))
|
||||
|
||||
@@ -835,13 +835,13 @@ class account_move_line(osv.osv):
|
||||
|
||||
for field_it in fld:
|
||||
field = field_it[0]
|
||||
|
||||
|
||||
if common_fields.get(field) == total:
|
||||
fields.get(field).append(None)
|
||||
|
||||
|
||||
if field=='state':
|
||||
state = 'colors="red:state==\'draft\'"'
|
||||
|
||||
|
||||
attrs = []
|
||||
if field == 'debit':
|
||||
attrs.append('sum="Total debit"')
|
||||
@@ -864,7 +864,7 @@ class account_move_line(osv.osv):
|
||||
|
||||
if field in widths:
|
||||
attrs.append('width="'+str(widths[field])+'"')
|
||||
|
||||
|
||||
attrs.append("invisible=\"context.get('visible_id') not in %s\"" % (fields.get(field)))
|
||||
xml += '''<field name="%s" %s/>\n''' % (field,' '.join(attrs))
|
||||
|
||||
@@ -914,7 +914,7 @@ class account_move_line(osv.osv):
|
||||
journal = self.pool.get('account.journal').browse(cr, uid, [journal_id])[0]
|
||||
if journal.allow_date and period_id:
|
||||
period = self.pool.get('account.period').browse(cr, uid, [period_id])[0]
|
||||
if not time.strptime(vals['date'],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') or not time.strptime(vals['date'],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
|
||||
if not time.strptime(vals['date'][:10],'%Y-%m-%d')>=time.strptime(period.date_start,'%Y-%m-%d') or not time.strptime(vals['date'][:10],'%Y-%m-%d')<=time.strptime(period.date_stop,'%Y-%m-%d'):
|
||||
raise osv.except_osv(_('Error'),_('The date of your Ledger Posting is not in the defined period !'))
|
||||
else:
|
||||
return True
|
||||
|
||||
@@ -52,6 +52,8 @@
|
||||
<!-- writeoff_acc_id = --> <value eval="ref('cash')"/>
|
||||
<!-- writeoff_period_id = --> <value eval="ref('account.period_' + str(int(time.strftime('%m'))))"/>
|
||||
<!-- writeoff_journal_id = --> <value eval="ref('bank_journal')"/>
|
||||
<!-- context = --> <value eval="{}"/>
|
||||
<!-- name = --> <value eval="str('Payment from ASUStek')"/>
|
||||
</function>
|
||||
|
||||
<assert id="test_invoice_1" model="account.invoice" string="Test invoice 1 is now paid">
|
||||
|
||||
@@ -196,13 +196,33 @@
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record id="view_account_list" model="ir.ui.view">
|
||||
<field name="name">account.account.list</field>
|
||||
<field name="model">account.account</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="field_parent">child_id</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Chart of accounts" toolbar="1" colors="blue:type in ('view');black:type not in ('view')">
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="user_type" invisible="1"/>
|
||||
<field name="debit"/>
|
||||
<field name="credit"/>
|
||||
<field name="balance"/>
|
||||
<field name="type"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="company_currency_id"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
<record id="action_account_form" model="ir.actions.act_window">
|
||||
<field name="name">Accounts</field>
|
||||
<field name="res_model">account.account</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form,graph</field>
|
||||
<field name="search_view_id" ref="view_account_search"/>
|
||||
<field name="view_id" ref="view_account_list"/>
|
||||
</record>
|
||||
<menuitem id="account_account_menu" name="Accounts" parent="menu_finance_accounting"/>
|
||||
<menuitem action="action_account_form" id="menu_action_account_form" parent="account_account_menu"/>
|
||||
@@ -216,14 +236,12 @@
|
||||
<tree string="Chart of accounts" toolbar="1" colors="blue:type in ('view');black:type not in ('view')">
|
||||
<field name="code"/>
|
||||
<field name="name"/>
|
||||
<field name="parent_id" invisible="1"/>
|
||||
<field name="user_type" invisible="1"/>
|
||||
<field name="debit"/>
|
||||
<field name="credit"/>
|
||||
<field name="balance"/>
|
||||
<field name="company_id" groups="base.group_multi_company"/>
|
||||
<field name="company_currency_id"/>
|
||||
<field name="type" invisible="1"/>
|
||||
<field name="type"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -237,10 +255,10 @@
|
||||
<!-- <menuitem action="action_account_tree" id="menu_action_account_tree" parent="account.account_account_menu"/>-->
|
||||
|
||||
<!--
|
||||
Journal
|
||||
Journal
|
||||
|
||||
Account Journal Columns
|
||||
-->
|
||||
Account Journal Columns
|
||||
-->
|
||||
|
||||
<record id="view_journal_column_form" model="ir.ui.view">
|
||||
<field name="name">account.journal.column.form</field>
|
||||
@@ -1041,7 +1059,7 @@
|
||||
<field name="to_check" groups="base.group_extended"/>
|
||||
<field name="amount"/>
|
||||
<field name="state"/>
|
||||
<button name="button_validate" states="draft" string="Validate" type="object" icon="terp-camera_test"/>
|
||||
<button name="button_validate" states="draft" string="Approve" type="object" icon="terp-camera_test"/>
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
@@ -1109,7 +1127,7 @@
|
||||
<field name="narration" colspan="4" nolabel="1"/>
|
||||
<field name="state" select="1"/>
|
||||
<group col="2" colspan="2">
|
||||
<button name="button_validate" states="draft" string="Validate" type="object" icon="terp-camera_test"/>
|
||||
<button name="button_validate" states="draft" string="Approve" type="object" icon="terp-camera_test"/>
|
||||
<button name="button_cancel" states="posted" string="Cancel" type="object" icon="terp-gtk-stop"/>
|
||||
</group>
|
||||
</page>
|
||||
@@ -2300,7 +2318,6 @@
|
||||
<field name="journal_id" on_change="onchange_journal_id(journal_id)" domain="[('type','=','cash')]" select="1" />
|
||||
<field name="user_id" select="1" readonly="1"/>
|
||||
<field name="period_id" select="1"/>
|
||||
<!-- <field name="balance_end_real"/>-->
|
||||
</group>
|
||||
|
||||
<notebook colspan="4">
|
||||
|
||||
@@ -62,92 +62,235 @@
|
||||
<!--
|
||||
Chart of Account
|
||||
-->
|
||||
<record id="minimal_0" model="account.account">
|
||||
<field name="code">x 0</field>
|
||||
|
||||
<record id="chart0" model="account.account">
|
||||
<field name="code">X0</field>
|
||||
<field name="name">Chart For Automated Tests</field>
|
||||
<field eval="False" name="parent_id"/>
|
||||
<field eval="0" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="note">
|
||||
This chart of account is used for automated testing purpose. It is installed
|
||||
only if you selected demo data during your database creation. Modules can
|
||||
do black box testing on entries on this chart of account, without modifying
|
||||
your own accounts.
|
||||
</field>
|
||||
<field name="user_type" ref="account_type_root"/>
|
||||
</record>
|
||||
<record id="a_recv" model="account.account">
|
||||
<field name="name">Main Receivable</field>
|
||||
<field name="code">x 40000</field>
|
||||
<field name="type">receivable</field>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field eval="True" name="reconcile"/>
|
||||
<field name="user_type" ref="account_type_receivable"/>
|
||||
<field name="note">
|
||||
This chart of account is used for automated testing purpose. It is installed
|
||||
only if you selected demo data during your database creation. Modules can
|
||||
do black box testing on entries on this chart of account, without modifying
|
||||
your own chart of account.
|
||||
</field>
|
||||
|
||||
<!-- Balance Sheet -->
|
||||
|
||||
<record id="bal" model="account.account">
|
||||
<field name="code">X1</field>
|
||||
<field name="name">Balance Sheet - (test)</field>
|
||||
<field ref="chart0" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_root"/>
|
||||
</record>
|
||||
<record id="a_pay" model="account.account">
|
||||
<field name="name">Main Payable</field>
|
||||
<field name="code">x 44000</field>
|
||||
<field name="type">payable</field>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field eval="True" name="reconcile"/>
|
||||
<field name="user_type" ref="account_type_payable"/>
|
||||
<field name="note">
|
||||
This chart of account is used for automated testing purpose. It is installed
|
||||
only if you selected demo data during your database creation. Modules can
|
||||
do black box testing on entries on this chart of account, without modifying
|
||||
your own chart of account.
|
||||
</field>
|
||||
|
||||
<record model="account.account" id="assets_view">
|
||||
<field name="name">Assets - (test)</field>
|
||||
<field name="code">X10</field>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
<field name="reconcile" eval="False"/>
|
||||
<field name="parent_id" ref="bal"/>
|
||||
</record>
|
||||
<record id="cash" model="account.account">
|
||||
<field name="name">Petty Cash</field>
|
||||
<field name="code">x 57000</field>
|
||||
<field name="type">other</field>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="user_type" ref="account_type_cash_moves"/>
|
||||
<field name="note">
|
||||
This chart of account is used for automated testing purpose. It is installed
|
||||
only if you selected demo data during your database creation. Modules can
|
||||
do black box testing on entries on this chart of account, without modifying
|
||||
your own chart of account.
|
||||
</field>
|
||||
|
||||
<record model="account.account" id="liabilities_view">
|
||||
<field name="name">Liabilities - (test)</field>
|
||||
<field name="code">X11</field>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_liability"/>
|
||||
<field name="reconcile" eval="False"/>
|
||||
<field name="parent_id" ref="bal"/>
|
||||
</record>
|
||||
<record id="a_expense" model="account.account">
|
||||
<field name="name">Products Purchase</field>
|
||||
<field name="code">x 60000</field>
|
||||
<field name="type">other</field>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="user_type" ref="account_type_expense"/>
|
||||
<field name="note">
|
||||
This chart of account is used for automated testing purpose. It is installed
|
||||
only if you selected demo data during your database creation. Modules can
|
||||
do black box testing on entries on this chart of account, without modifying
|
||||
your own chart of account.
|
||||
</field>
|
||||
</record>
|
||||
<record id="a_sale" model="account.account">
|
||||
<field name="name">Products Sales</field>
|
||||
<field name="code">x 70000</field>
|
||||
<field name="type">other</field>
|
||||
<field eval="ref('minimal_0')" name="parent_id"/>
|
||||
<field name="company_id" ref="base.main_company"/>
|
||||
<field name="user_type" ref="account_type_income"/>
|
||||
<field name="note">
|
||||
This chart of account is used for automated testing purpose. It is installed
|
||||
only if you selected demo data during your database creation. Modules can
|
||||
do black box testing on entries on this chart of account, without modifying
|
||||
your own chart of account.
|
||||
</field>
|
||||
|
||||
<record id="fas" model="account.account">
|
||||
<field name="code">X100</field>
|
||||
<field name="name">Fixed Assets - (test)</field>
|
||||
<field ref="assets_view" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
</record>
|
||||
|
||||
<record id="xfa" model="account.account">
|
||||
<field name="code">X1000</field>
|
||||
<field name="name">Fixed Asset Account - (test)</field>
|
||||
<field ref="fas" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
</record>
|
||||
|
||||
<record id="nca" model="account.account">
|
||||
<field name="code">X101</field>
|
||||
<field name="name">Net Current Assets - (test)</field>
|
||||
<field ref="assets_view" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
</record>
|
||||
|
||||
<record id="cas" model="account.account">
|
||||
<field name="code">X1100</field>
|
||||
<field name="name">Current Assets - (test)</field>
|
||||
<field ref="nca" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
</record>
|
||||
|
||||
<record id="stk" model="account.account">
|
||||
<field name="code">X11001</field>
|
||||
<field name="name">Purchased Stocks - (test)</field>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
</record>
|
||||
|
||||
<record id="a_recv" model="account.account">
|
||||
<field name="code">X11002</field>
|
||||
<field name="name">Debtors - (test)</field>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
<field name="type">receivable</field>
|
||||
<field eval="True" name="reconcile"/>
|
||||
<field name="user_type" ref="account_type_receivable"/>
|
||||
</record>
|
||||
|
||||
<record id="ova" model="account.account">
|
||||
<field name="code">X11003</field>
|
||||
<field name="name">Output VAT - (test)</field>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_receivable"/>
|
||||
</record>
|
||||
|
||||
<record id="bnk" model="account.account">
|
||||
<field name="code">X11004</field>
|
||||
<field name="name">Bank Current Account - (test)</field>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
</record>
|
||||
|
||||
<record id="cash" model="account.account">
|
||||
<field name="code">X11005</field>
|
||||
<field name="name">Cash - (test)</field>
|
||||
<field ref="cas" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_asset"/>
|
||||
</record>
|
||||
|
||||
<record id="cli" model="account.account">
|
||||
<field name="code">X110</field>
|
||||
<field name="name">Current Liabilities - (test)</field>
|
||||
<field ref="liabilities_view" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_liability"/>
|
||||
</record>
|
||||
|
||||
<record id="a_pay" model="account.account">
|
||||
<field name="code">X1111</field>
|
||||
<field name="name">Creditors - (test)</field>
|
||||
<field ref="cli" name="parent_id"/>
|
||||
<field name="type">payable</field>
|
||||
<field eval="True" name="reconcile"/>
|
||||
<field name="user_type" ref="account_type_payable"/>
|
||||
</record>
|
||||
|
||||
<record id="iva" model="account.account">
|
||||
<field name="code">X1112</field>
|
||||
<field name="name">Input VAT - (test)</field>
|
||||
<field ref="cli" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_payable"/>
|
||||
</record>
|
||||
|
||||
<!-- Profit and Loss -->
|
||||
|
||||
<record id="gpf" model="account.account">
|
||||
<field name="code">X2</field>
|
||||
<field name="name">Profit and Loss - (test)</field>
|
||||
<field ref="chart0" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_root"/>
|
||||
</record>
|
||||
|
||||
<record model="account.account" id="income_view">
|
||||
<field name="name">Income - (test)</field>
|
||||
<field name="code">X20</field>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_income"/>
|
||||
<field name="reconcile" eval="False"/>
|
||||
<field name="parent_id" ref="gpf"/>
|
||||
</record>
|
||||
|
||||
<record model="account.account" id="income_fx_income">
|
||||
<field name="name">Foreign Exchange Gain - (test)</field>
|
||||
<field name="code">X201</field>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_income"/>
|
||||
<field name="reconcile" eval="False"/>
|
||||
<field name="parent_id" ref="income_view"/>
|
||||
</record>
|
||||
|
||||
<record model="account.account" id="expense_view">
|
||||
<field name="name">Expense - (test)</field>
|
||||
<field name="code">X21</field>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_expense"/>
|
||||
<field name="reconcile" eval="False"/>
|
||||
<field name="parent_id" ref="gpf"/>
|
||||
</record>
|
||||
|
||||
<record id="rev" model="account.account">
|
||||
<field name="code">X200</field>
|
||||
<field name="name">Revenue - (test)</field>
|
||||
<field ref="income_view" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_income"/>
|
||||
</record>
|
||||
|
||||
<record id="a_sale" model="account.account">
|
||||
<field name="code">X2001</field>
|
||||
<field name="name">Product Sales - (test)</field>
|
||||
<field ref="rev" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_income"/>
|
||||
</record>
|
||||
|
||||
<record id="cos" model="account.account">
|
||||
<field name="code">X210</field>
|
||||
<field name="name">Cost of Sales - (test)</field>
|
||||
<field ref="expense_view" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_expense"/>
|
||||
</record>
|
||||
|
||||
<record id="cog" model="account.account">
|
||||
<field name="code">X2100</field>
|
||||
<field name="name">Cost of Goods Sold - (test)</field>
|
||||
<field ref="cos" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_expense"/>
|
||||
</record>
|
||||
|
||||
<record id="ovr" model="account.account">
|
||||
<field name="code">X211</field>
|
||||
<field name="name">Overheads - (test)</field>
|
||||
<field ref="expense_view" name="parent_id"/>
|
||||
<field name="type">view</field>
|
||||
<field name="user_type" ref="account_type_expense"/>
|
||||
</record>
|
||||
|
||||
<record id="a_expense" model="account.account">
|
||||
<field name="code">X2110</field>
|
||||
<field name="name">Expenses - (test)</field>
|
||||
<field ref="ovr" name="parent_id"/>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_expense"/>
|
||||
</record>
|
||||
|
||||
<record model="account.account" id="income_fx_expense">
|
||||
<field name="name">Foreign Exchange Loss - (test)</field>
|
||||
<field name="code">X2111</field>
|
||||
<field name="type">other</field>
|
||||
<field name="user_type" ref="account_type_expense"/>
|
||||
<field name="reconcile" eval="False"/>
|
||||
<field name="parent_id" ref="ovr"/>
|
||||
</record>
|
||||
|
||||
<!-- Properties -->
|
||||
<record forcecreate="True" id="property_account_receivable" model="ir.property">
|
||||
<field name="name">property_account_receivable</field>
|
||||
@@ -174,7 +317,7 @@ your own chart of account.
|
||||
-->
|
||||
|
||||
<record id="sales_journal" model="account.journal">
|
||||
<field name="name">x Sales Journal</field>
|
||||
<field name="name">Sales Journal - (test)</field>
|
||||
<field name="code">SAJ</field>
|
||||
<field name="type">sale</field>
|
||||
<field name="view_id" ref="account_sp_journal_view"/>
|
||||
@@ -185,7 +328,7 @@ your own chart of account.
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
<record id="refund_sales_journal" model="account.journal">
|
||||
<field name="name">x Sales Credit Note Journal</field>
|
||||
<field name="name">Sales Credit Note Journal - (test)</field>
|
||||
<field name="code">SCNJ</field>
|
||||
<field name="type">sale_refund</field>
|
||||
<field name="view_id" ref="account_sp_refund_journal_view"/>
|
||||
@@ -196,7 +339,7 @@ your own chart of account.
|
||||
</record>
|
||||
|
||||
<record id="expenses_journal" model="account.journal">
|
||||
<field name="name">x Expenses Journal</field>
|
||||
<field name="name">Expenses Journal - (test)</field>
|
||||
<field name="code">EXJ</field>
|
||||
<field name="type">purchase</field>
|
||||
<field name="view_id" ref="account_sp_journal_view"/>
|
||||
@@ -207,7 +350,7 @@ your own chart of account.
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
<record id="refund_expenses_journal" model="account.journal">
|
||||
<field name="name">x Expenses Credit Notes Journal</field>
|
||||
<field name="name">Expenses Credit Notes Journal - (test)</field>
|
||||
<field name="code">ECNJ</field>
|
||||
<field name="type">purchase_refund</field>
|
||||
<field name="view_id" ref="account_sp_refund_journal_view"/>
|
||||
@@ -218,7 +361,7 @@ your own chart of account.
|
||||
</record>
|
||||
|
||||
<record id="bank_journal" model="account.journal">
|
||||
<field name="name">x Bank Journal</field>
|
||||
<field name="name">Bank Journal - (test)</field>
|
||||
<field name="code">BNK</field>
|
||||
<field name="type">cash</field>
|
||||
<field name="view_id" ref="account_journal_bank_view"/>
|
||||
@@ -228,7 +371,7 @@ your own chart of account.
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
</record>
|
||||
<record id="check_journal" model="account.journal">
|
||||
<field name="name">x Checks Journal</field>
|
||||
<field name="name">Checks Journal - (test)</field>
|
||||
<field name="code">CHK</field>
|
||||
<field name="type">cash</field>
|
||||
<field name="view_id" ref="account_journal_bank_view"/>
|
||||
|
||||
+496
-249
File diff suppressed because it is too large
Load Diff
+359
-219
File diff suppressed because it is too large
Load Diff
@@ -892,6 +892,7 @@ class account_invoice(osv.osv):
|
||||
self.write(cr, uid, [inv.id], {'move_id': move_id,'period_id':period_id, 'move_name':new_move_name})
|
||||
self.pool.get('account.move').post(cr, uid, [move_id])
|
||||
self._log_event(cr, uid, ids)
|
||||
|
||||
return True
|
||||
|
||||
def line_get_convert(self, cr, uid, x, part, date, context=None):
|
||||
@@ -916,12 +917,12 @@ class account_invoice(osv.osv):
|
||||
}
|
||||
|
||||
def action_number(self, cr, uid, ids, *args):
|
||||
cr.execute('SELECT id, type, number, move_id, reference ' \
|
||||
'FROM account_invoice ' \
|
||||
'WHERE id IN %s',
|
||||
(tuple(ids),))
|
||||
obj_inv = self.browse(cr, uid, ids)[0]
|
||||
for (id, invtype, number, move_id, reference) in cr.fetchall():
|
||||
for obj_inv in self.browse(cr, uid, ids):
|
||||
id = obj_inv.id
|
||||
invtype = obj_inv.type
|
||||
number = obj_inv.number
|
||||
move_id = obj_inv.move_id and obj_inv.move_id.id or False
|
||||
reference = obj_inv.reference
|
||||
if not number:
|
||||
if obj_inv.journal_id.invoice_sequence_id:
|
||||
sid = obj_inv.journal_id.invoice_sequence_id.id
|
||||
@@ -946,6 +947,8 @@ class account_invoice(osv.osv):
|
||||
'WHERE account_move_line.move_id = %s ' \
|
||||
'AND account_analytic_line.move_id = account_move_line.id',
|
||||
(ref, move_id))
|
||||
message = _('Invoice ') + " '" + number + "' "+ _("is confirm")
|
||||
self.log(cr, uid, id, message)
|
||||
return True
|
||||
|
||||
def action_cancel(self, cr, uid, ids, *args):
|
||||
|
||||
@@ -46,7 +46,6 @@ class journal_print(report_sxw.rml_parse):
|
||||
ids_journal_period = obj_jperiod.search(self.cr, self.uid, [('journal_id','=',journal), ('period_id','=',period)])
|
||||
if ids_journal_period:
|
||||
self.cr.execute('update account_journal_period set state=%s where journal_id=%s and period_id=%s and state=%s', ('printed',journal,period,'draft'))
|
||||
self.cr.commit()
|
||||
self.cr.execute('select id from account_move_line where period_id=%s and journal_id=%s and state<>\'draft\' order by ('+ sort_selection +'),id', (period, journal))
|
||||
ids = map(lambda x: x[0], self.cr.fetchall())
|
||||
ids_final.append(ids)
|
||||
@@ -56,7 +55,6 @@ class journal_print(report_sxw.rml_parse):
|
||||
line_ids.append(a)
|
||||
return line_ids
|
||||
self.cr.execute('update account_journal_period set state=%s where journal_id=%s and period_id=%s and state=%s', ('printed',journal_id,period_id,'draft'))
|
||||
self.cr.commit()
|
||||
self.cr.execute('select id from account_move_line where period_id=%s and journal_id=%s and state<>\'draft\' order by date,id', (period_id, journal_id))
|
||||
ids = map(lambda x: x[0], self.cr.fetchall())
|
||||
return obj_mline.browse(self.cr, self.uid, ids)
|
||||
|
||||
@@ -402,7 +402,7 @@
|
||||
<blockTable colWidths="62.0,62.0,22.0" style="Table_eclu_Taxes_Total">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_Bold_9">Net Total:</para>
|
||||
<para style="terp_default_9">Net Total:</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(o.amount_untaxed) ]]</para>
|
||||
@@ -418,7 +418,7 @@
|
||||
<blockTable colWidths="63.0,61.0,23.0" style="Table_Taxes_Total">
|
||||
<tr>
|
||||
<td>
|
||||
<para style="terp_default_Bold_9">Taxes:</para>
|
||||
<para style="terp_default_9">Taxes:</para>
|
||||
</td>
|
||||
<td>
|
||||
<para style="terp_default_Right_9">[[ formatLang(o.amount_tax) ]]</para>
|
||||
|
||||
@@ -33,7 +33,7 @@ class account_chart(osv.osv_memory):
|
||||
help = 'Keep empty for all open fiscal years'),
|
||||
'target_move': fields.selection([('all', 'All Entries'),
|
||||
('posted', 'All Posted Entries')], 'Target Moves', required = True),
|
||||
}
|
||||
}
|
||||
|
||||
def _get_fiscalyear(self, cr, uid, context=None):
|
||||
"""Return default Fiscalyear value"""
|
||||
|
||||
@@ -1,36 +1,34 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<record id="view_account_chart" model="ir.ui.view">
|
||||
<record id="view_account_chart" model="ir.ui.view">
|
||||
<field name="name">account.chart.form</field>
|
||||
<field name="model">account.chart</field>
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="Account charts">
|
||||
<group colspan="4" >
|
||||
<field name="fiscalyear"/>
|
||||
<label align="0.7" colspan="6" string="(If you do not select Fiscal year it will take all open fiscal years)"/>
|
||||
<field name="target_move"/>
|
||||
<field name="fiscalyear"/>
|
||||
<label align="0.7" colspan="6" string="(If you do not select Fiscal year it will take all open fiscal years)"/>
|
||||
<field name="target_move"/>
|
||||
</group>
|
||||
<separator string="" colspan="4" />
|
||||
<separator string="" colspan="4" />
|
||||
<group colspan="4" col="6">
|
||||
<label string ="" colspan="2"/>
|
||||
<button icon="gtk-cancel" special="cancel" string="Cancel" />
|
||||
<button icon="terp-gtk-go-back-rtl" string="Open Charts"
|
||||
name="account_chart_open_window" type="object" />
|
||||
<label string ="" colspan="2"/>
|
||||
<button icon="gtk-cancel" special="cancel" string="Cancel" />
|
||||
<button icon="terp-gtk-go-back-rtl" string="Open Charts" name="account_chart_open_window" type="object" />
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
<record id="action_account_chart" model="ir.actions.act_window">
|
||||
<field name="name">Chart of Accounts</field>
|
||||
<field name="res_model">account.chart</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="view_account_chart"/>
|
||||
<field name="target">new</field>
|
||||
<field name="view_id" ref="view_account_chart"/>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
|
||||
<menuitem icon="STOCK_INDENT" action="action_account_chart"
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<field name="period_id"/>
|
||||
<group colspan="4" col="6">
|
||||
<button icon="gtk-cancel" special="cancel" string="Cancel"/>
|
||||
<button icon="terp-camera_test" string="Validate" name="validate_move" type="object"/>
|
||||
<button icon="terp-camera_test" string="Approve" name="validate_move" type="object"/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
@@ -47,7 +47,7 @@
|
||||
<form string="Validate Moves">
|
||||
<separator string="Validate Ledger Postings" colspan="4"/>
|
||||
<button special="cancel" string="Cancel" icon="gtk-cancel"/>
|
||||
<button name="validate_move_lines" string="Validate" type="object" icon="gtk-go-forward" default_focus="1"/>
|
||||
<button name="validate_move_lines" string="Approve" type="object" icon="gtk-go-forward" default_focus="1"/>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-04-10 04:39+0000\n"
|
||||
"Last-Translator: digitalsatori <Unknown>\n"
|
||||
"PO-Revision-Date: 2010-07-13 04:28+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:10+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
@@ -36,7 +36,7 @@ msgstr "最近开票日期"
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,remaining_ca:0
|
||||
msgid "Computed using the formula: Max Invoice Price - Invoiced Amount."
|
||||
msgstr "计算公式为:最高发票价格 - 发票金额"
|
||||
msgstr "计算公式为:最高发票价格 - 已开票金额"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,remaining_hours:0
|
||||
@@ -44,25 +44,26 @@ msgid "Computed using the formula: Maximum Quantity - Hours Tot."
|
||||
msgstr "计算公式为:最大数量 - 小时合计"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all
|
||||
msgid "All Analytic Accounts"
|
||||
msgstr "所有辅助核算项目"
|
||||
msgstr "所有辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_managed_open
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_analytic_account_to_valid_open
|
||||
msgid "My Current Accounts"
|
||||
msgstr "我的当前科目"
|
||||
msgstr "我的当前项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "描述视图结构的XML文件无效"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_invoice_date:0
|
||||
msgid "Date of the last invoice created for this analytic account."
|
||||
msgstr "这辅助核算项目的最近开票日期"
|
||||
msgstr "这辅助核算项的最近开票日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_theorical:0
|
||||
@@ -83,13 +84,13 @@ msgstr "计算公式:理论收入 - 总费用"
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_new
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_new
|
||||
msgid "New Analytic Account"
|
||||
msgstr "新的分析科目"
|
||||
msgstr "新辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,theorical_margin:0
|
||||
@@ -105,29 +106,29 @@ msgstr "实际利润(%)"
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all_open
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all_open
|
||||
msgid "Current Analytic Accounts"
|
||||
msgstr "当前分析科目"
|
||||
msgstr "当前辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_worked_date:0
|
||||
msgid "Date of the latest work done on this account."
|
||||
msgstr "这科目的最近的工作完成日期"
|
||||
msgstr "这项的最近的工作完成日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,last_worked_invoiced_date:0
|
||||
msgid ""
|
||||
"If invoice from the costs, this is the date of the latest work or cost that "
|
||||
"have been invoiced."
|
||||
msgstr "如果是成本发票,最近工作或成本的时间已开出的发票"
|
||||
msgstr "如果发票来自费用, 这是最近工作日期或已开票的费用"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_invoicing
|
||||
msgid "Invoicing"
|
||||
msgstr "计价折扣"
|
||||
msgstr "开发票"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,last_worked_date:0
|
||||
msgid "Date of Last Cost/Work"
|
||||
msgstr "最近的成本/工作 日期"
|
||||
msgstr "费用或工作的最近日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,total_cost:0
|
||||
@@ -139,7 +140,7 @@ msgstr "总成本"
|
||||
msgid ""
|
||||
"Number of hours you spent on the analytic account (from timesheet). It "
|
||||
"computes on all journal of type 'general'."
|
||||
msgstr "你的小时数在辅助核算项目(根据时间表).它计算所有普通分类帐."
|
||||
msgstr "在辅助核算项你花费的小时数(根据时间表). 它在所有类型为普通的记录集合里计算."
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,remaining_hours:0
|
||||
@@ -190,8 +191,8 @@ msgid ""
|
||||
"important data for project manager of services companies.\n"
|
||||
"Add menu to show relevant information for each manager."
|
||||
msgstr ""
|
||||
"修改核算到显示服务公司的项目管理主要时间\n"
|
||||
"添加菜单显示每个管理的有关信息"
|
||||
"修改辅助核算项到显示视图, 服务公司项目经理的重要数据\n"
|
||||
"添加菜单显示每个管理者的相关信息"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_qtt_non_invoiced:0
|
||||
@@ -206,12 +207,12 @@ msgstr "总小时"
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_account
|
||||
msgid "Analytic Accounts"
|
||||
msgstr "核算项目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.module.module,shortdesc:account_analytic_analysis.module_meta_information
|
||||
msgid "report_account_analytic"
|
||||
msgstr "核算项目报表"
|
||||
msgstr "辅助核算项报表"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_invoiced:0
|
||||
@@ -226,7 +227,7 @@ msgstr "财务项目管理"
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,last_worked_invoiced_date:0
|
||||
msgid "Date of Last Invoiced Cost"
|
||||
msgstr "最近的发票成本日期"
|
||||
msgstr "最近的已发票日期"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,ca_to_invoice:0
|
||||
@@ -237,7 +238,7 @@ msgstr "未开票金额"
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_all_pending
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_all_pending
|
||||
msgid "Pending Analytic Accounts"
|
||||
msgstr "未决的辅助核算项目"
|
||||
msgstr "未决的辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,hours_qtt_invoiced:0
|
||||
@@ -269,12 +270,12 @@ msgstr "计算公式为:(实际利润/总成本×100)"
|
||||
msgid ""
|
||||
"Number of hours (from journal of type 'general') that can be invoiced if you "
|
||||
"invoice based on analytic account."
|
||||
msgstr "如果你的发票基于这辅助核算项目"
|
||||
msgstr "如果你的发票基于这辅助核算项, 小时数(从记录集合类型是\"普通\")可以开发票"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: view:account.analytic.account:0
|
||||
msgid "Analytic accounts"
|
||||
msgstr "辅助核算项目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: field:account.analytic.account,remaining_ca:0
|
||||
@@ -286,7 +287,7 @@ msgstr "剩余的收入"
|
||||
msgid ""
|
||||
"If invoice from analytic account, the remaining amount you can invoice to "
|
||||
"the customer based on the total costs."
|
||||
msgstr "如果是辅助核算项目的发票,剩余金额你能给客户开基于总成本的发票"
|
||||
msgstr "如果是辅助核算项的发票, 剩余金额你能给客户开基于总成本的发票"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,revenue_per_hour:0
|
||||
@@ -314,23 +315,23 @@ msgstr "月"
|
||||
#: field:account_analytic_analysis.summary.month,account_id:0
|
||||
#: field:account_analytic_analysis.summary.user,account_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr "辅助核算项目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_account_analytic_managed_overpassed
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_account_analytic_managed_overpassed
|
||||
msgid "Overpassed Accounts"
|
||||
msgstr "已废弃项目"
|
||||
msgstr "已废弃项"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: model:ir.actions.act_window,name:account_analytic_analysis.action_hr_tree_invoiced_all
|
||||
#: model:ir.ui.menu,name:account_analytic_analysis.menu_action_hr_tree_invoiced_all
|
||||
msgid "All Uninvoiced Entries"
|
||||
msgstr "所有未开发票凭证"
|
||||
msgstr "所有未开发票"
|
||||
|
||||
#. module: account_analytic_analysis
|
||||
#: help:account.analytic.account,total_cost:0
|
||||
msgid ""
|
||||
"Total of costs for this account. It includes real costs (from invoices) and "
|
||||
"indirect costs, like time spent on timesheets."
|
||||
msgstr "这科目的成本合计,它包括实际成本(发票)和间接成本,如花费的时间表"
|
||||
msgstr "这项的成本合计,它包括实际成本(发票)和间接成本,如花费的时间表"
|
||||
|
||||
@@ -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-03-29 00:37+0000\n"
|
||||
"Last-Translator: digitalsatori <Unknown>\n"
|
||||
"PO-Revision-Date: 2010-07-13 04:32+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:12+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_analytic_default
|
||||
@@ -21,7 +21,7 @@ msgstr ""
|
||||
#: model:ir.actions.act_window,name:account_analytic_default.action_analytic_default_form
|
||||
#: model:ir.ui.menu,name:account_analytic_default.menu_analytic_defaul_form
|
||||
msgid "Analytic Defaults"
|
||||
msgstr "默认辅助核算科目"
|
||||
msgstr "默认辅助核算项"
|
||||
|
||||
#. module: account_analytic_default
|
||||
#: model:ir.module.module,shortdesc:account_analytic_default.module_meta_information
|
||||
@@ -31,13 +31,13 @@ msgstr "默认科目辅助核算"
|
||||
#. module: account_analytic_default
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "无效的视图结构xml文件"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_analytic_default
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "这对象名必须以x_开头并且不能包含特殊的字符!"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_analytic_default
|
||||
#: view:account.analytic.default:0
|
||||
@@ -67,7 +67,7 @@ msgstr "产品"
|
||||
#. module: account_analytic_default
|
||||
#: field:account.analytic.default,analytic_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr "辅助核算科目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_analytic_default
|
||||
#: model:ir.model,name:account_analytic_default.model_account_analytic_default
|
||||
@@ -82,12 +82,12 @@ msgstr "用户"
|
||||
#. module: account_analytic_default
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "动作定义里模块名无效"
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_analytic_default
|
||||
#: model:ir.actions.act_window,name:account_analytic_default.act_account_acount_move_line_open
|
||||
msgid "Entries"
|
||||
msgstr "条目"
|
||||
msgstr "记录"
|
||||
|
||||
#. module: account_analytic_default
|
||||
#: field:account.analytic.default,partner_id:0
|
||||
@@ -102,7 +102,7 @@ msgstr "开始日期"
|
||||
#. module: account_analytic_default
|
||||
#: view:account.analytic.default:0
|
||||
msgid "Conditions"
|
||||
msgstr "情况"
|
||||
msgstr "条件"
|
||||
|
||||
#. module: account_analytic_default
|
||||
#: model:ir.actions.act_window,name:account_analytic_default.analytic_rule_action_partner
|
||||
|
||||
@@ -7,19 +7,19 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 06:54+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 08:33+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:10+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,account4_ids:0
|
||||
msgid "Account4 Id"
|
||||
msgstr "科目4ID"
|
||||
msgstr "项4ID"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: constraint:ir.model:0
|
||||
@@ -36,7 +36,7 @@ msgstr "交叉辅助核算"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,account5_ids:0
|
||||
msgid "Account5 Id"
|
||||
msgstr "科目5ID"
|
||||
msgstr "项5ID"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: wizard_field:wizard.crossovered.analytic,init,date2:0
|
||||
@@ -75,7 +75,7 @@ msgstr "打印"
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
msgid "To Date"
|
||||
msgstr "至今为止"
|
||||
msgstr "日期到"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance.line,plan_id:0
|
||||
@@ -90,7 +90,7 @@ msgstr "辅助核算分配模型"
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
msgid "Account Name"
|
||||
msgstr "科目名称"
|
||||
msgstr "项名称"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: view:account.analytic.plan.instance.line:0
|
||||
@@ -135,13 +135,13 @@ msgstr "选择信息"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,account3_ids:0
|
||||
msgid "Account3 Id"
|
||||
msgstr "科目3ID"
|
||||
msgstr "项3ID"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,journal_id:0
|
||||
#: wizard_field:wizard.crossovered.analytic,init,journal_ids:0
|
||||
msgid "Analytic Journal"
|
||||
msgstr "辅助核算分类帐"
|
||||
msgstr "辅助核算记录集合"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
@@ -151,12 +151,12 @@ msgstr "100.00%"
|
||||
#. module: account_analytic_plans
|
||||
#: wizard_field:wizard.crossovered.analytic,init,ref:0
|
||||
msgid "Analytic Account Ref."
|
||||
msgstr "辅助核算项目参考"
|
||||
msgstr "辅助核算项参考"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
msgid "Analytic Account :"
|
||||
msgstr "辅助核算项目:"
|
||||
msgstr "辅助核算项:"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: view:account.analytic.plan.line:0
|
||||
@@ -166,7 +166,7 @@ msgstr "辅助核算方案明细"
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
msgid "Analytic Account Reference:"
|
||||
msgstr "辅助核算项目参考:"
|
||||
msgstr "辅助核算项参考:"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: model:ir.actions.wizard,name:account_analytic_plans.create_model
|
||||
@@ -176,7 +176,7 @@ msgstr "创建模型"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan,default_instance_id:0
|
||||
msgid "Default Entries"
|
||||
msgstr "默认凭证"
|
||||
msgstr "默认记录"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: view:account.analytic.plan:0
|
||||
@@ -194,7 +194,7 @@ msgstr "最小允许(%)"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,account1_ids:0
|
||||
msgid "Account1 Id"
|
||||
msgstr "科目1ID"
|
||||
msgstr "项1ID"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.line,max_required:0
|
||||
@@ -209,7 +209,7 @@ msgstr "分配模型保存"
|
||||
#. module: account_analytic_plans
|
||||
#: model:ir.model,name:account_analytic_plans.model_account_analytic_plan_instance
|
||||
msgid "Analytic Plan Instance"
|
||||
msgstr "核算方案实例"
|
||||
msgstr "辅助核算方案实例"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: constraint:ir.ui.view:0
|
||||
@@ -255,8 +255,8 @@ msgid ""
|
||||
"for one account entry.\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"这模块允许使用几个辅助核算方案并根据他们生成分类帐\n"
|
||||
"\t所以当开发票或确认凭证时\n"
|
||||
"这模块允许使用几个辅助核算方案并根据他们生成记录集合\n"
|
||||
"\t所以当开发票或确认记录时\n"
|
||||
"建立多个辅助核算明细\n"
|
||||
"\t\n"
|
||||
"\t例子:你可以定义以下辅助核算结构:\n"
|
||||
@@ -307,7 +307,7 @@ msgstr "模型方案"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,account2_ids:0
|
||||
msgid "Account2 Id"
|
||||
msgstr "科目2ID"
|
||||
msgstr "项2ID"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
@@ -317,12 +317,12 @@ msgstr "金额"
|
||||
#. module: account_analytic_plans
|
||||
#: help:account.analytic.plan.line,root_analytic_id:0
|
||||
msgid "Root account of this plan."
|
||||
msgstr "这方案的根辅助核算项目"
|
||||
msgstr "这方案的根辅助核算项"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,account6_ids:0
|
||||
msgid "Account6 Id"
|
||||
msgstr "科目6ID"
|
||||
msgstr "项6ID"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
@@ -332,7 +332,7 @@ msgstr "数量"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance,account_ids:0
|
||||
msgid "Account Id"
|
||||
msgstr "科目ID"
|
||||
msgstr "项ID"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
@@ -347,7 +347,7 @@ msgstr "确定"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.line,root_analytic_id:0
|
||||
msgid "Root Account"
|
||||
msgstr "根辅助核算项目"
|
||||
msgstr "根项"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: wizard_view:create.model,info:0
|
||||
@@ -363,7 +363,7 @@ msgstr "序列"
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.plan.instance.line,analytic_account_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr "辅助核算项目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_analytic_plans
|
||||
#: field:account.analytic.default,analytics_id:0
|
||||
@@ -397,4 +397,4 @@ msgstr "在"
|
||||
#. module: account_analytic_plans
|
||||
#: rml:account.analytic.account.crossovered.analytic:0
|
||||
msgid "From Date"
|
||||
msgstr "根据日期"
|
||||
msgstr "日期从"
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
# Chinese (Simplified) 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-11-24 12:50+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 08:42+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@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-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: view:product.category:0
|
||||
msgid " Accounting Property"
|
||||
msgstr " 会计属性"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.module.module,description:account_anglo_saxon.module_meta_information
|
||||
msgid ""
|
||||
"This module will support the Anglo-Saxons accounting methodology by \n"
|
||||
" changing the accounting logic with stock transactions. The difference "
|
||||
"between the Anglo-Saxon accounting countries \n"
|
||||
" and the Rhine or also called Continental accounting countries is the "
|
||||
"moment of taking the Cost of Goods Sold versus Cost of Sales. \n"
|
||||
" Anglo-Saxons accounting does take the cost when sales invoice is "
|
||||
"created, Continental accounting will take the cost at he moment the goods "
|
||||
"are shipped.\n"
|
||||
" This module will add this functionality by using a interim account, to "
|
||||
"store the value of shipped goods and will contra book this interim account \n"
|
||||
" when the invoice is created to transfer this amount to the debtor or "
|
||||
"creditor account."
|
||||
msgstr ""
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: model:ir.module.module,shortdesc:account_anglo_saxon.module_meta_information
|
||||
msgid "Stock Account"
|
||||
msgstr "库存科目"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: field:product.category,property_account_creditor_price_difference_categ:0
|
||||
#: field:product.template,property_account_creditor_price_difference:0
|
||||
msgid "Price Difference Account"
|
||||
msgstr "价格差异科目"
|
||||
|
||||
#. module: account_anglo_saxon
|
||||
#: help:product.category,property_account_creditor_price_difference_categ:0
|
||||
#: help:product.template,property_account_creditor_price_difference:0
|
||||
msgid ""
|
||||
"This account will be used to value price difference between purchase price "
|
||||
"and cost price."
|
||||
msgstr "这科目将用于在采购价格和销售价格之间的价格差异"
|
||||
@@ -148,7 +148,7 @@
|
||||
<field name="state" select="1"/>
|
||||
<group col="4" colspan="2">
|
||||
<button string="Confirm" name="confirm" states="draft" type="workflow" icon="gtk-apply" />
|
||||
<button string="Validate" name="validate" states="confirm" type="workflow" icon="gtk-ok"/>
|
||||
<button string="Approve" name="validate" states="confirm" type="workflow" icon="gtk-ok"/>
|
||||
<button string="Done" name="done" states="validate" type="workflow" icon="gtk-jump-to" />
|
||||
<button string="Cancel" name="cancel" states="confirm,validate" type="workflow" icon="gtk-cancel"/>
|
||||
<!--<button string="Set to Draft" name="action_set_to_draft" states="cancel" type="object"/>-->
|
||||
@@ -181,7 +181,7 @@
|
||||
<search string="Budget">
|
||||
<group col="20" colspan="4">
|
||||
<filter string="Draft" icon="terp-document-new" domain="[('state','=','draft')]" help="Draft Budgets" default="1"/>
|
||||
<filter string="To Validate" icon="terp-gtk-go-back-rtl" domain="[('state','=','validate')]" help="To Validate Budgets" />
|
||||
<filter string="To Approve" icon="terp-gtk-go-back-rtl" domain="[('state','=','validate')]" help="To Approve Budgets" />
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name" select="1"/>
|
||||
<field name="code" select="1" />
|
||||
|
||||
@@ -7,19 +7,19 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 06:58+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 08:55+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:18+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_budget
|
||||
#: field:crossovered.budget,creating_user_id:0
|
||||
msgid "Responsible User"
|
||||
msgstr "责任用户"
|
||||
msgstr "负责用户"
|
||||
|
||||
#. module: account_budget
|
||||
#: rml:account.budget:0
|
||||
@@ -30,7 +30,7 @@ msgstr "% 执行%"
|
||||
#: model:ir.actions.act_window,name:account_budget.open_budget_post_form
|
||||
#: model:ir.ui.menu,name:account_budget.menu_budget_post_form
|
||||
msgid "Budgetary Positions"
|
||||
msgstr "预算位于"
|
||||
msgstr "预算状况"
|
||||
|
||||
#. module: account_budget
|
||||
#: constraint:ir.actions.act_window:0
|
||||
@@ -75,7 +75,7 @@ msgstr "会计期间"
|
||||
#: wizard_field:wizard.crossovered.budget,init,date_to:0
|
||||
#: wizard_field:wizard.crossovered.budget.summary,init,date_to:0
|
||||
msgid "End of period"
|
||||
msgstr "会计期间结束"
|
||||
msgstr "结束会计期间"
|
||||
|
||||
#. module: account_budget
|
||||
#: rml:account.budget:0
|
||||
@@ -183,7 +183,7 @@ msgstr ""
|
||||
#: rml:account.budget:0
|
||||
#: rml:crossovered.budget.report:0
|
||||
msgid "%"
|
||||
msgstr ""
|
||||
msgstr "%"
|
||||
|
||||
#. module: account_budget
|
||||
#: rml:account.analytic.account.budget:0
|
||||
@@ -194,7 +194,7 @@ msgstr "说明"
|
||||
#. module: account_budget
|
||||
#: rml:account.analytic.account.budget:0
|
||||
msgid "Analytic Account :"
|
||||
msgstr "辅助核算项目:"
|
||||
msgstr "辅助核算项:"
|
||||
|
||||
#. module: account_budget
|
||||
#: wizard_button:account.budget.report,init,report:0
|
||||
@@ -207,7 +207,7 @@ msgstr "打印"
|
||||
#. module: account_budget
|
||||
#: rml:account.budget:0
|
||||
msgid "A/c No."
|
||||
msgstr ""
|
||||
msgstr "A/c No."
|
||||
|
||||
#. module: account_budget
|
||||
#: rml:account.analytic.account.budget:0
|
||||
@@ -369,7 +369,7 @@ msgstr "预算项详情"
|
||||
#: field:crossovered.budget.lines,general_budget_id:0
|
||||
#: model:ir.model,name:account_budget.model_account_budget_post
|
||||
msgid "Budgetary Position"
|
||||
msgstr "预算位于"
|
||||
msgstr "预算状况"
|
||||
|
||||
#. module: account_budget
|
||||
#: wizard_field:account.budget.report,init,date1:0
|
||||
@@ -377,7 +377,7 @@ msgstr "预算位于"
|
||||
#: wizard_field:wizard.crossovered.budget,init,date_from:0
|
||||
#: wizard_field:wizard.crossovered.budget.summary,init,date_from:0
|
||||
msgid "Start of period"
|
||||
msgstr "期初日期"
|
||||
msgstr "开始会计期间"
|
||||
|
||||
#. module: account_budget
|
||||
#: model:ir.actions.report.xml,name:account_budget.account_analytic_account_budget
|
||||
@@ -422,7 +422,7 @@ msgstr "会计年度"
|
||||
#. module: account_budget
|
||||
#: field:crossovered.budget.lines,analytic_account_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr "辅助核算项目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_budget
|
||||
#: rml:crossovered.budget.report:0
|
||||
@@ -441,7 +441,7 @@ msgstr "延伸"
|
||||
#: view:account.budget.post:0
|
||||
#: field:account.budget.post,account_ids:0
|
||||
msgid "Accounts"
|
||||
msgstr "科目"
|
||||
msgstr "项"
|
||||
|
||||
#. module: account_budget
|
||||
#: model:ir.actions.report.xml,name:account_budget.account_budget
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
# Chinese (Simplified) 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-11-24 13:11+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 09:17+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@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-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,journal_id:0
|
||||
#: wizard_field:account.coda_import,init,journal_id:0
|
||||
msgid "Bank Journal"
|
||||
msgstr "银行记录集合"
|
||||
|
||||
#. module: account_coda
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_field:account.coda_import,extraction,note:0
|
||||
msgid "Log"
|
||||
msgstr "日志"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_button:account.coda_import,extraction,open:0
|
||||
msgid "_Open Statement"
|
||||
msgstr "打开对帐单"
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.module.module,shortdesc:account_coda.module_meta_information
|
||||
msgid "Account CODA"
|
||||
msgstr "帐号 CODA"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,name:0
|
||||
msgid "Coda file"
|
||||
msgstr "Coda文件"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_view:account.coda_import,init:0
|
||||
msgid "Clic on 'New' to select your file :"
|
||||
msgstr "点击\"新\"去选择你的文件:"
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.actions.wizard,name:account_coda.wizard_account_coda_import
|
||||
msgid "Import Coda File"
|
||||
msgstr "导入CODA文件"
|
||||
|
||||
#. module: account_coda
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,note:0
|
||||
msgid "Import log"
|
||||
msgstr "导入日志"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_field:account.coda_import,init,def_receivable:0
|
||||
msgid "Default receivable Account"
|
||||
msgstr "默认应收帐款科目"
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.module.module,description:account_coda.module_meta_information
|
||||
msgid ""
|
||||
"Module provides functionality to import\n"
|
||||
" bank statements from .csv file.\n"
|
||||
" Import coda file wizard is used to import bank statements."
|
||||
msgstr ""
|
||||
"模块提供导入功能\n"
|
||||
" 银行对帐单从 .csv文件\n"
|
||||
" 导入CODA文件向导用于导入银行对帐单"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_button:account.coda_import,extraction,end:0
|
||||
msgid "_Close"
|
||||
msgstr "关闭"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,statement_id:0
|
||||
msgid "Generated Bank Statement"
|
||||
msgstr "生成银行对帐单"
|
||||
|
||||
#. module: account_coda
|
||||
#: view:account.coda:0
|
||||
#: model:ir.actions.act_window,name:account_coda.act_account_payment_account_bank_statement
|
||||
#: model:ir.actions.act_window,name:account_coda.action_account_coda
|
||||
msgid "Coda import"
|
||||
msgstr "coda导入"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,user_id:0
|
||||
msgid "User"
|
||||
msgstr "用户"
|
||||
|
||||
#. module: account_coda
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.model,name:account_coda.model_account_coda
|
||||
msgid "coda for an Account"
|
||||
msgstr "帐号的CODA"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_field:account.coda_import,init,def_payable:0
|
||||
msgid "Default Payable Account"
|
||||
msgstr "默认应付帐款科目"
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.ui.menu,name:account_coda.menu_account_coda
|
||||
msgid "Coda Statements"
|
||||
msgstr "CODA"
|
||||
|
||||
#. module: account_coda
|
||||
#: model:ir.ui.menu,name:account_coda.menu_account_coda_wizard
|
||||
msgid "Import Coda Statements"
|
||||
msgstr "导入CODA"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_button:account.coda_import,init,extraction:0
|
||||
msgid "_Ok"
|
||||
msgstr "确定"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_view:account.coda_import,extraction:0
|
||||
#: wizard_view:account.coda_import,init:0
|
||||
msgid "Import Coda Statement"
|
||||
msgstr "导入CODA"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.bank.statement,coda_id:0
|
||||
msgid "Coda"
|
||||
msgstr "CODA"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_view:account.coda_import,extraction:0
|
||||
msgid "Results :"
|
||||
msgstr "结果:"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_field:account.coda_import,init,coda:0
|
||||
msgid "Coda File"
|
||||
msgstr "CODA文件"
|
||||
|
||||
#. module: account_coda
|
||||
#: field:account.coda,date:0
|
||||
msgid "Import Date"
|
||||
msgstr "导入日期"
|
||||
|
||||
#. module: account_coda
|
||||
#: wizard_view:account.coda_import,init:0
|
||||
msgid "Select your bank journal :"
|
||||
msgstr "选择你银行记录集合:"
|
||||
@@ -53,6 +53,7 @@
|
||||
'account_followup_data.xml'
|
||||
],
|
||||
'demo_xml': ['account_followup_demo.xml'],
|
||||
'test': ['test/account_followup.yml'],
|
||||
'installable': True,
|
||||
'active': False,
|
||||
'certificate': '0072481076453',
|
||||
|
||||
@@ -7,19 +7,19 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 07:04+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 09:42+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:03+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_followup
|
||||
#: rml:account_followup.followup.print:0
|
||||
msgid "Date :"
|
||||
msgstr "打印日期:"
|
||||
msgstr "日期:"
|
||||
|
||||
#. module: account_followup
|
||||
#: wizard_field:account_followup.followup.print.all,next,partner_ids:0
|
||||
@@ -35,12 +35,12 @@ msgstr "客户参考:"
|
||||
#: model:ir.actions.act_window,name:account_followup.act_account_partner_account_move_payable_all
|
||||
#: model:ir.ui.menu,name:account_followup.menu_account_move_open_unreconcile_payable
|
||||
msgid "All payable entries"
|
||||
msgstr "所有应付款凭证"
|
||||
msgstr "所有应付款"
|
||||
|
||||
#. module: account_followup
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "在这动作定义中有无效的模块名"
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_followup
|
||||
#: field:account_followup.followup.line,description:0
|
||||
@@ -66,7 +66,7 @@ msgstr "借方合计"
|
||||
#: view:account_followup.followup.line:0
|
||||
#: wizard_view:account_followup.followup.print.all,next:0
|
||||
msgid "%(user_signature)s: User name"
|
||||
msgstr "%(user_signature)s:用户名 %(user_signature)"
|
||||
msgstr "%(user_signature)s:用户名"
|
||||
|
||||
#. module: account_followup
|
||||
#: wizard_view:account_followup.followup.print.all,next:0
|
||||
@@ -176,7 +176,7 @@ msgstr "最近跟进"
|
||||
#. module: account_followup
|
||||
#: view:account.move.line:0
|
||||
msgid "Partner entries"
|
||||
msgstr "业务伙伴凭证"
|
||||
msgstr "业务伙伴记录"
|
||||
|
||||
#. module: account_followup
|
||||
#: model:ir.model,name:account_followup.model_account_followup_followup_line
|
||||
@@ -191,7 +191,7 @@ msgstr "业务伙伴选择"
|
||||
#. module: account_followup
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "无效的视图结构XML文件!"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_followup
|
||||
#: field:account_followup.followup.line,start:0
|
||||
@@ -211,7 +211,7 @@ msgstr "给业务伙伴一个提醒电子邮件"
|
||||
#. module: account_followup
|
||||
#: rml:account_followup.followup.print:0
|
||||
msgid "Li."
|
||||
msgstr ""
|
||||
msgstr "Li."
|
||||
|
||||
#. module: account_followup
|
||||
#: model:account_followup.followup.line,description:account_followup.demo_followup_line1
|
||||
@@ -242,7 +242,7 @@ msgstr ""
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_followup
|
||||
#: wizard_button:account_followup.followup.print.all,summary,end:0
|
||||
@@ -269,7 +269,7 @@ msgstr "月末"
|
||||
#: view:account_followup.followup.line:0
|
||||
#: wizard_view:account_followup.followup.print.all,next:0
|
||||
msgid "%(company_name)s: User's Company name"
|
||||
msgstr "公司名称:%(company_currency)s"
|
||||
msgstr "用户公司名称:%(company_currency)s"
|
||||
|
||||
#. module: account_followup
|
||||
#: model:ir.actions.act_window,name:account_followup.act_account_partner_account_move_all
|
||||
@@ -291,7 +291,7 @@ msgstr "发送跟进"
|
||||
#. module: account_followup
|
||||
#: field:account.move.line,followup_line_id:0
|
||||
msgid "Follow-up Level"
|
||||
msgstr "跟进期限"
|
||||
msgstr "跟进等级"
|
||||
|
||||
#. module: account_followup
|
||||
#: field:account_followup.stat,credit:0
|
||||
@@ -327,7 +327,7 @@ msgstr "跟进明细"
|
||||
#. module: account_followup
|
||||
#: rml:account_followup.followup.print:0
|
||||
msgid "Document : Customer account statement"
|
||||
msgstr "客户科目报表"
|
||||
msgstr "文档: 客户科目对帐单"
|
||||
|
||||
#. module: account_followup
|
||||
#: view:account_followup.stat:0
|
||||
@@ -337,7 +337,7 @@ msgstr "跟进明细"
|
||||
#. module: account_followup
|
||||
#: wizard_view:account_followup.followup.print.all,next:0
|
||||
msgid "%(company_currency)s: User's Company Currency"
|
||||
msgstr "当前公司:%(company_currency)s"
|
||||
msgstr "当前用户公司:%(company_currency)s"
|
||||
|
||||
#. module: account_followup
|
||||
#: field:account_followup.stat,balance:0
|
||||
@@ -379,6 +379,17 @@ msgid ""
|
||||
"Best Regards,\n"
|
||||
"\t\t\t"
|
||||
msgstr ""
|
||||
"\n"
|
||||
"尊敬的%(partner_name)s,\n"
|
||||
"\n"
|
||||
"我们不得不发这个通知, 你的帐户已经严重逾期\n"
|
||||
"请立即支付, 否则我们不得不停止你的帐户, 并停止一切业务.\n"
|
||||
"\n"
|
||||
"请采取措施确保在8天内支付.\n"
|
||||
"如有疑问请立即联系我们.\n"
|
||||
" "
|
||||
" 商祺\n"
|
||||
"\t\t\t"
|
||||
|
||||
#. module: account_followup
|
||||
#: rml:account_followup.followup.print:0
|
||||
@@ -413,7 +424,7 @@ msgstr "最后"
|
||||
#. module: account_followup
|
||||
#: rml:account_followup.followup.print:0
|
||||
msgid "Maturity"
|
||||
msgstr "到期"
|
||||
msgstr "到期日期"
|
||||
|
||||
#. module: account_followup
|
||||
#: model:ir.actions.report.xml,name:account_followup.account_followup_followup_report
|
||||
@@ -459,7 +470,7 @@ msgstr "到期日期"
|
||||
#: view:account_followup.followup.line:0
|
||||
#: wizard_view:account_followup.followup.print.all,next:0
|
||||
msgid "Legend"
|
||||
msgstr "说明"
|
||||
msgstr "图表"
|
||||
|
||||
#. module: account_followup
|
||||
#: field:account_followup.followup.line,sequence:0
|
||||
@@ -508,9 +519,6 @@ msgstr "拖延天数"
|
||||
msgid "Print Follow Ups & Send Mails"
|
||||
msgstr "打印跟进&发送电子邮件"
|
||||
|
||||
#~ msgid "Follow-up Message"
|
||||
#~ msgstr "跟进消息"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ " Modules to automate letters for unpaid invoices, with multi-level "
|
||||
@@ -551,11 +559,3 @@ msgstr "打印跟进&发送电子邮件"
|
||||
#~ "注意:如果你想要变更一业务伙伴/凭证的跟进级别,你可以在菜单:\n"
|
||||
#~ " 财务管理/报表/跟进/所有应收账款凭证\n"
|
||||
#~ "\n"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Do not change message text, if you want to send email in partner language, "
|
||||
#~ "or configre from company"
|
||||
#~ msgstr "如果你想在发送的电子邮件中用业务伙伴的语言,请不要改变着消息的文本"
|
||||
|
||||
#~ msgid "Send Email in Partner Language"
|
||||
#~ msgstr "发送到业务伙伴Email的语言"
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 07:11+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 10:00+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:11+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
@@ -30,12 +30,12 @@ msgstr "发票日期:"
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid "Cancelled Invoice"
|
||||
msgstr "取消发票"
|
||||
msgstr "被取消的发票"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: selection:account.invoice.line,state:0
|
||||
@@ -82,7 +82,7 @@ msgstr "单价"
|
||||
#. module: account_invoice_layout
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "在这动作定义中有无效的模块名"
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: model:ir.model,name:account_invoice_layout.model_notify_message
|
||||
@@ -102,7 +102,7 @@ msgstr "发票明细"
|
||||
#. module: account_invoice_layout
|
||||
#: view:account.invoice.line:0
|
||||
msgid "Seq."
|
||||
msgstr "序号"
|
||||
msgstr "序列"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: model:ir.ui.menu,name:account_invoice_layout.menu_finan_config_notify_message
|
||||
@@ -117,7 +117,7 @@ msgstr "客户参考"
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid ")"
|
||||
msgstr ""
|
||||
msgstr ")"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: field:account.invoice.line,state:0
|
||||
@@ -132,7 +132,7 @@ msgstr "价格"
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid "/ ("
|
||||
msgstr ""
|
||||
msgstr "/ ("
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
@@ -187,12 +187,12 @@ msgstr "分页符"
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid "Document:"
|
||||
msgstr "票据:"
|
||||
msgstr "文档:"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: wizard_view:wizard.notify_message,init:0
|
||||
msgid "Select Message"
|
||||
msgstr "选择消息"
|
||||
msgstr "选择信息"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: view:notify.message:0
|
||||
@@ -242,7 +242,7 @@ msgstr "数量"
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid "Refund"
|
||||
msgstr "退货"
|
||||
msgstr "退还"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
@@ -252,7 +252,7 @@ msgstr "增值税"
|
||||
#. module: account_invoice_layout
|
||||
#: selection:account.invoice.line,state:0
|
||||
msgid "Separator Line"
|
||||
msgstr "分割线"
|
||||
msgstr "分隔线"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
@@ -267,17 +267,17 @@ msgstr "备注:"
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid "Tax"
|
||||
msgstr "税金"
|
||||
msgstr "税"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: model:ir.module.module,shortdesc:account_invoice_layout.module_meta_information
|
||||
msgid "account_invoice_layout"
|
||||
msgstr ""
|
||||
msgstr "发票式样"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid "Total (Excl. taxes):"
|
||||
msgstr "(不含税):"
|
||||
msgstr "合计(不含税):"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
@@ -292,7 +292,7 @@ msgstr "取消"
|
||||
#. module: account_invoice_layout
|
||||
#: rml:account.invoice.layout:0
|
||||
msgid "Supplier Refund"
|
||||
msgstr "供应商退货"
|
||||
msgstr "供应商退还"
|
||||
|
||||
#. module: account_invoice_layout
|
||||
#: wizard_field:wizard.notify_message,init,message:0
|
||||
|
||||
@@ -207,7 +207,7 @@
|
||||
</record>
|
||||
|
||||
<record id="action_payment_order_open" model="ir.actions.act_window">
|
||||
<field name="name">Payment Orders to Validate</field>
|
||||
<field name="name">Payment Orders to Approve</field>
|
||||
<field name="res_model">payment.order</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
|
||||
@@ -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-04-07 22:24+0000\n"
|
||||
"Last-Translator: mitev.dmitry <Unknown>\n"
|
||||
"PO-Revision-Date: 2010-07-13 10:09+0000\n"
|
||||
"Last-Translator: Kuvaly [LCT] <kuvaly@seznam.cz>\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-06-22 04:10+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_payment
|
||||
@@ -29,7 +29,7 @@ msgstr ""
|
||||
#. module: account_payment
|
||||
#: view:payment.order:0
|
||||
msgid "Set to draft"
|
||||
msgstr ""
|
||||
msgstr "Uložit jako návrh"
|
||||
|
||||
#. module: account_payment
|
||||
#: help:payment.order,mode:0
|
||||
@@ -39,7 +39,7 @@ msgstr ""
|
||||
#. module: account_payment
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr ""
|
||||
msgstr "Špatný název modelu v definici akce"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.line:0
|
||||
@@ -85,7 +85,7 @@ msgstr ""
|
||||
#. module: account_payment
|
||||
#: view:account.move.line:0
|
||||
msgid "Account Entry Line"
|
||||
msgstr ""
|
||||
msgstr "Účet příchozí linky"
|
||||
|
||||
#. module: account_payment
|
||||
#: wizard_button:populate_payment,search,create:0
|
||||
@@ -358,6 +358,7 @@ msgstr ""
|
||||
|
||||
#. module: account_payment
|
||||
#: rml:payment.order:0
|
||||
#: wizard_field:populate_statement,init,d_date:0
|
||||
msgid "Date"
|
||||
msgstr ""
|
||||
|
||||
@@ -385,6 +386,7 @@ msgstr ""
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,ml_maturity_date:0
|
||||
#: selection:populate_statement,init,date_select:0
|
||||
msgid "Maturity Date"
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -7,19 +7,19 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-06-04 13:32+0000\n"
|
||||
"Last-Translator: Eleanor Chen <chenyueg@gmail.com>\n"
|
||||
"PO-Revision-Date: 2010-07-13 11:02+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:10+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.order,date_planned:0
|
||||
msgid "Scheduled date if fixed"
|
||||
msgstr "预定日期如果是固定"
|
||||
msgstr "指定日期(如果是固定)"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,currency:0
|
||||
@@ -39,21 +39,23 @@ msgstr "选择使用的付款方式"
|
||||
#. module: account_payment
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "在这动作定义中有无效的模块名"
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.line:0
|
||||
#: field:payment.line,info_owner:0
|
||||
#: view:payment.order:0
|
||||
msgid "Owner Account"
|
||||
msgstr "自己的账号"
|
||||
msgstr "所有者科目"
|
||||
|
||||
#. module: account_payment
|
||||
#: help:account.invoice,amount_to_pay:0
|
||||
msgid ""
|
||||
"The amount which should be paid at the current date\n"
|
||||
"minus the amount which is already in payment order"
|
||||
msgstr "该金额应在当前日期支付扣减付款单"
|
||||
msgstr ""
|
||||
"在当前日期应支付的金额\n"
|
||||
"减去的金额在付款单中"
|
||||
|
||||
#. module: account_payment
|
||||
#: help:payment.line,date:0
|
||||
@@ -75,7 +77,7 @@ msgstr "自由"
|
||||
#. module: account_payment
|
||||
#: wizard_field:populate_payment,search,entries:0
|
||||
msgid "Entries"
|
||||
msgstr "凭证"
|
||||
msgstr "记录"
|
||||
|
||||
#. module: account_payment
|
||||
#: wizard_field:populate_payment,init,duedate:0
|
||||
@@ -85,7 +87,7 @@ msgstr "到期日期"
|
||||
#. module: account_payment
|
||||
#: view:account.move.line:0
|
||||
msgid "Account Entry Line"
|
||||
msgstr "凭证明细"
|
||||
msgstr "分录明细"
|
||||
|
||||
#. module: account_payment
|
||||
#: wizard_button:populate_payment,search,create:0
|
||||
@@ -111,7 +113,7 @@ msgstr "公司货币的合计"
|
||||
#. module: account_payment
|
||||
#: selection:payment.order,state:0
|
||||
msgid "Cancelled"
|
||||
msgstr "取消"
|
||||
msgstr "已取消"
|
||||
|
||||
#. module: account_payment
|
||||
#: model:ir.actions.act_window,name:account_payment.action_payment_order_tree_new
|
||||
@@ -172,12 +174,12 @@ msgstr "付款明细"
|
||||
#. module: account_payment
|
||||
#: help:payment.order,date_planned:0
|
||||
msgid "Select a date if you have chosen Preferred Date to be fixed."
|
||||
msgstr "如果你选择的优先日期是固定的选择一个日期"
|
||||
msgstr "如果你选择的优先日期是固定的, 选择一个日期"
|
||||
|
||||
#. module: account_payment
|
||||
#: selection:payment.line,state:0
|
||||
msgid "Structured"
|
||||
msgstr "规范"
|
||||
msgstr "已安排"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.order,state:0
|
||||
@@ -213,7 +215,7 @@ msgid ""
|
||||
"Choose an option for the Payment Order:'Fixed' stands for a date specified "
|
||||
"by you.'Directly' stands for the direct execution.'Due date' stands for the "
|
||||
"scheduled date of execution."
|
||||
msgstr "选择付款单选项‘固定’由你指定一个指定的日期.‘直接’直接执行.‘预定日期’指定一个时间表的日期执行."
|
||||
msgstr "选择付款单选项‘固定’由你指定一个指定的日期. ‘直接’表示直接执行. ‘到期日期’指定一个时间表的日期执行."
|
||||
|
||||
#. module: account_payment
|
||||
#: view:account.move.line:0
|
||||
@@ -239,7 +241,7 @@ msgstr "目标科目"
|
||||
#: view:payment.line:0
|
||||
#: view:payment.order:0
|
||||
msgid "Desitination Account"
|
||||
msgstr "目标账号"
|
||||
msgstr "目标科目"
|
||||
|
||||
#. module: account_payment
|
||||
#: constraint:ir.ui.view:0
|
||||
@@ -266,7 +268,7 @@ msgstr "当前金额合计"
|
||||
#. module: account_payment
|
||||
#: view:payment.order:0
|
||||
msgid "Make Payments"
|
||||
msgstr "付款"
|
||||
msgstr "建立付款"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,state:0
|
||||
@@ -343,7 +345,7 @@ msgstr "贷方合计"
|
||||
#. module: account_payment
|
||||
#: model:ir.actions.wizard,name:account_payment.wizard_populate_payment
|
||||
msgid "Populate payment"
|
||||
msgstr "填写付款"
|
||||
msgstr "填入付款"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.order,user_id:0
|
||||
@@ -358,6 +360,7 @@ msgstr "付款明细"
|
||||
|
||||
#. module: account_payment
|
||||
#: rml:payment.order:0
|
||||
#: wizard_field:populate_statement,init,d_date:0
|
||||
msgid "Date"
|
||||
msgstr "日期"
|
||||
|
||||
@@ -385,8 +388,9 @@ msgstr "创建日期"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,ml_maturity_date:0
|
||||
#: selection:populate_statement,init,date_select:0
|
||||
msgid "Maturity Date"
|
||||
msgstr "到期日期"
|
||||
msgstr "付款到期日期"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:account.bank.statement:0
|
||||
@@ -459,7 +463,7 @@ msgstr "信息"
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_payment
|
||||
#: model:ir.actions.wizard,name:account_payment.wizard_pay_payment
|
||||
@@ -486,7 +490,7 @@ msgstr "在公司货币的付款金额"
|
||||
#. module: account_payment
|
||||
#: wizard_view:populate_payment,init:0
|
||||
msgid "Search Payment lines"
|
||||
msgstr "付款明细"
|
||||
msgstr "查询付款明细"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,amount_currency:0
|
||||
@@ -501,18 +505,18 @@ msgstr "沟通2"
|
||||
#. module: account_payment
|
||||
#: field:payment.line,bank_id:0
|
||||
msgid "Destination Bank account"
|
||||
msgstr "银行账号"
|
||||
msgstr "目标银行帐号"
|
||||
|
||||
#. module: account_payment
|
||||
#: help:payment.mode,journal:0
|
||||
msgid "Cash Journal for the Payment Mode"
|
||||
msgstr "付款方式的现金分类帐"
|
||||
msgstr "付款方式的现金记录集合"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.mode,bank_id:0
|
||||
#: rml:payment.order:0
|
||||
msgid "Bank account"
|
||||
msgstr "银行账号"
|
||||
msgstr "银行帐号"
|
||||
|
||||
#. module: account_payment
|
||||
#: view:payment.order:0
|
||||
@@ -535,7 +539,7 @@ msgstr "付款"
|
||||
#. module: account_payment
|
||||
#: field:payment.line,move_line_id:0
|
||||
msgid "Entry line"
|
||||
msgstr ""
|
||||
msgstr "明细"
|
||||
|
||||
#. module: account_payment
|
||||
#: help:payment.line,communication:0
|
||||
@@ -559,12 +563,12 @@ msgstr "查找"
|
||||
#: view:payment.line:0
|
||||
#: view:payment.order:0
|
||||
msgid "Entry Information"
|
||||
msgstr "凭证信息"
|
||||
msgstr "信息"
|
||||
|
||||
#. module: account_payment
|
||||
#: model:ir.actions.wizard,name:account_payment.wizard_populate_statement
|
||||
msgid "Populate Statement with Payment lines"
|
||||
msgstr "填写付款明细"
|
||||
msgstr "填入付款明细"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.line,order_id:0
|
||||
@@ -607,12 +611,12 @@ msgstr "付款方式"
|
||||
#. module: account_payment
|
||||
#: help:payment.mode,bank_id:0
|
||||
msgid "Bank Account for the Payment Mode"
|
||||
msgstr "银行账号付款方式"
|
||||
msgstr "这付款方式的银行帐号"
|
||||
|
||||
#. module: account_payment
|
||||
#: field:payment.mode,journal:0
|
||||
msgid "Journal"
|
||||
msgstr "分类帐"
|
||||
msgstr "记录集合"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
-
|
||||
In order to test account_payment in OpenERP I create a new record Type
|
||||
-
|
||||
-
|
||||
Creating a payment.type record
|
||||
In order to test account_payment in OpenERP I create a new record Type.
|
||||
-
|
||||
!record {model: payment.type, id: payment_type_t0}:
|
||||
code: T0
|
||||
@@ -127,19 +124,3 @@
|
||||
- state == 'done'
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 07:14+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 16:27+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 03:55+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_report
|
||||
@@ -31,7 +31,7 @@ msgstr "选择一个PDF文件"
|
||||
#. module: account_report
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "在这动作定义中有无效的模块名"
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
@@ -61,12 +61,12 @@ msgstr "其它"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "balance(['ACCOUNT_CODE',],fiscalyear)"
|
||||
msgstr ""
|
||||
msgstr "余额(['ACCOUNT_CODE',],fiscalyear)"
|
||||
|
||||
#. module: account_report
|
||||
#: rml:print.indicators:0
|
||||
msgid "Tabular Summary"
|
||||
msgstr "一览表"
|
||||
msgstr "表格摘要"
|
||||
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
@@ -128,7 +128,7 @@ msgstr "指标过去的记录"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "credit(['ACCOUNT_CODE',],fiscalyear)"
|
||||
msgstr ""
|
||||
msgstr "贷方(['ACCOUNT_CODE',],fiscalyear)"
|
||||
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
@@ -200,7 +200,7 @@ msgstr "选择标准"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "debit(['ACCOUNT_CODE',],fiscalyear)"
|
||||
msgstr ""
|
||||
msgstr "借方(['ACCOUNT_CODE',],fiscalyear)"
|
||||
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
@@ -254,7 +254,7 @@ msgstr "正常"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "Example: (balance(['6','45'],-1) - credit(['7'])) / report('RPT1')"
|
||||
msgstr ""
|
||||
msgstr "例子: (balance(['6','45'],-1) - credit(['7'])) / report('RPT1')"
|
||||
|
||||
#. module: account_report
|
||||
#: field:account.report.report,active:0
|
||||
@@ -289,7 +289,7 @@ msgstr "表达式:"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "report('REPORT_CODE')"
|
||||
msgstr ""
|
||||
msgstr "报表('REPORT_CODE')"
|
||||
|
||||
#. module: account_report
|
||||
#: field:account.report.report,expression:0
|
||||
@@ -316,7 +316,7 @@ msgstr "代码"
|
||||
#. module: account_report
|
||||
#: field:account.report.history,tmp:0
|
||||
msgid "temp"
|
||||
msgstr ""
|
||||
msgstr "temp"
|
||||
|
||||
#. module: account_report
|
||||
#: field:account.report.history,period_id:0
|
||||
@@ -331,7 +331,7 @@ msgstr "普通"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "Legend of operators"
|
||||
msgstr "操作说明"
|
||||
msgstr "操作员说明"
|
||||
|
||||
#. module: account_report
|
||||
#: wizard_button:print.indicators,init,end:0
|
||||
@@ -349,7 +349,7 @@ msgstr "子项"
|
||||
#: constraint:ir.model:0
|
||||
msgid ""
|
||||
"The Object name must start with x_ and not contain any special character !"
|
||||
msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
|
||||
msgstr "对象名称必须以“x_”开头且不能包含任何特殊字符!"
|
||||
|
||||
#. module: account_report
|
||||
#: help:account.report.report,goodness_limit:0
|
||||
@@ -367,7 +367,7 @@ msgstr "打印指标"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "+ - * / ( )"
|
||||
msgstr ""
|
||||
msgstr "+ - * / ( )"
|
||||
|
||||
#. module: account_report
|
||||
#: rml:accounting.report:0
|
||||
@@ -407,12 +407,12 @@ msgstr "其它报表"
|
||||
msgid ""
|
||||
"Note: The second arguement 'fiscalyear' and 'period' are optional "
|
||||
"arguements.If the value is -1,previous fiscalyear or period is considered."
|
||||
msgstr "备注:第二参数‘会计年度’和‘会计期间’是可选参数.如果值为-1会计年度或会计期间是以前的."
|
||||
msgstr "备注:第二参数‘会计年度’和‘会计期间’是可选参数. 如果值为-1会计年度或会计期间是以前的."
|
||||
|
||||
#. module: account_report
|
||||
#: rml:print.indicators:0
|
||||
msgid ")"
|
||||
msgstr ""
|
||||
msgstr ")"
|
||||
|
||||
#. module: account_report
|
||||
#: model:ir.actions.act_window,name:account_report.action_account_report_tree_view_fiscal
|
||||
@@ -423,7 +423,7 @@ msgstr "财务报表"
|
||||
#. module: account_report
|
||||
#: selection:print.indicators,init,select_base:0
|
||||
msgid "Based on Fiscal Periods"
|
||||
msgstr "基于会计会计期间"
|
||||
msgstr "基于会计期间"
|
||||
|
||||
#. module: account_report
|
||||
#: model:ir.actions.report.xml,name:account_report.report_print_indicators
|
||||
@@ -457,7 +457,7 @@ msgstr "选择标准"
|
||||
#. module: account_report
|
||||
#: view:account.report.report:0
|
||||
msgid "tax_code(['ACCOUNT_TAX_CODE',],period)"
|
||||
msgstr ""
|
||||
msgstr "税号(['ACCOUNT_TAX_CODE',],period)"
|
||||
|
||||
#. module: account_report
|
||||
#: field:account.report.history,fiscalyear_id:0
|
||||
@@ -512,7 +512,7 @@ msgstr "金额"
|
||||
#. module: account_report
|
||||
#: rml:print.indicators:0
|
||||
msgid "1cm 27.7cm 20cm 27.7cm"
|
||||
msgstr ""
|
||||
msgstr "1cm 27.7cm 20cm 27.7cm"
|
||||
|
||||
#. module: account_report
|
||||
#: model:ir.module.module,description:account_report.module_meta_information
|
||||
|
||||
@@ -7,13 +7,13 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 07:15+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 16:33+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:15+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_reporting
|
||||
@@ -30,12 +30,12 @@ msgstr "对象名必须要以X_开头并且不能含有特殊字符!"
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Helvetica-Bold"
|
||||
msgstr ""
|
||||
msgstr "Helvetica-Bold"
|
||||
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Helvetica"
|
||||
msgstr ""
|
||||
msgstr "Helvetica"
|
||||
|
||||
#. module: account_reporting
|
||||
#: field:account.report.bs,note:0
|
||||
@@ -56,17 +56,17 @@ msgstr "科目余额表"
|
||||
#. module: account_reporting
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "在这动作定义中有无效的模块名"
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Courier"
|
||||
msgstr ""
|
||||
msgstr "Courier"
|
||||
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Courier-BoldOblique"
|
||||
msgstr ""
|
||||
msgstr "Courier-BoldOblique"
|
||||
|
||||
#. module: account_reporting
|
||||
#: wizard_button:account.account.balancesheet.report,init,report:0
|
||||
@@ -93,7 +93,9 @@ msgstr "科目和子科目报表对象"
|
||||
msgid ""
|
||||
"Financial and accounting reporting\n"
|
||||
" Balance Sheet Report"
|
||||
msgstr "财务和会计报表 资产负债表"
|
||||
msgstr ""
|
||||
"财务和会计报表 \n"
|
||||
"资产负债表"
|
||||
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,report_type:0
|
||||
@@ -103,7 +105,7 @@ msgstr "科目报表对象"
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Courier-Oblique"
|
||||
msgstr ""
|
||||
msgstr "Courier-Oblique"
|
||||
|
||||
#. module: account_reporting
|
||||
#: constraint:ir.ui.view:0
|
||||
@@ -134,7 +136,7 @@ msgstr "备注"
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Times-BoldItalic"
|
||||
msgstr ""
|
||||
msgstr "Times-BoldItalic"
|
||||
|
||||
#. module: account_reporting
|
||||
#: model:ir.model,name:account_reporting.model_account_report_bs
|
||||
@@ -144,12 +146,12 @@ msgstr "会计报表资产负债表"
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Courier-Bold"
|
||||
msgstr ""
|
||||
msgstr "Courier-Bold"
|
||||
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Times-Italic"
|
||||
msgstr ""
|
||||
msgstr "Times-Italic"
|
||||
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,report_type:0
|
||||
@@ -184,7 +186,7 @@ msgstr "序列"
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Times-Bold"
|
||||
msgstr ""
|
||||
msgstr "Times-Bold"
|
||||
|
||||
#. module: account_reporting
|
||||
#: view:account.report.bs:0
|
||||
@@ -225,12 +227,12 @@ msgstr "取消"
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Times-Roman"
|
||||
msgstr ""
|
||||
msgstr "Times-Roman"
|
||||
|
||||
#. module: account_reporting
|
||||
#: selection:account.report.bs,font_style:0
|
||||
msgid "Helvetica-Oblique"
|
||||
msgstr ""
|
||||
msgstr "Helvetica-Oblique"
|
||||
|
||||
#. module: account_reporting
|
||||
#: field:account.report.bs,font_style:0
|
||||
|
||||
@@ -7,19 +7,19 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 07:29+0000\n"
|
||||
"PO-Revision-Date: 2010-07-13 16:34+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:03+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:36+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_tax_include
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "无效的视图结构XML文件!"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_tax_include
|
||||
#: field:account.invoice,price_type:0
|
||||
|
||||
@@ -7,19 +7,19 @@ msgstr ""
|
||||
"Project-Id-Version: OpenERP Server 5.0.6\n"
|
||||
"Report-Msgid-Bugs-To: support@openerp.com\n"
|
||||
"POT-Creation-Date: 2009-08-28 16:01+0000\n"
|
||||
"PO-Revision-Date: 2010-03-20 07:30+0000\n"
|
||||
"PO-Revision-Date: 2010-07-14 03:20+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: \n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2010-06-22 04:17+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.actions.act_window,name:account_voucher.act_account_acount_move_line_open1
|
||||
msgid "Opening Balance Entry"
|
||||
msgstr "期初余额凭证"
|
||||
msgstr "期初余额"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_receipt_bakreceipt_voucher_list
|
||||
@@ -41,7 +41,7 @@ msgstr "状态:"
|
||||
#. module: account_voucher
|
||||
#: constraint:ir.actions.act_window:0
|
||||
msgid "Invalid model name in the action definition."
|
||||
msgstr "在这动作定义中有无效的模块名"
|
||||
msgstr "在动作定义使用了无效的模块名。"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
@@ -69,12 +69,12 @@ msgstr "公司"
|
||||
#: model:ir.actions.act_window,name:account_voucher.action_view_jour_voucher_form
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_view_jour_voucher_form
|
||||
msgid "Journal Voucher"
|
||||
msgstr "原始凭证分类帐"
|
||||
msgstr "原始凭证"
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid ","
|
||||
msgstr ""
|
||||
msgstr ","
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
@@ -105,7 +105,7 @@ msgstr "科目"
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
msgid "D"
|
||||
msgstr ""
|
||||
msgstr "D"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.account,level:0
|
||||
@@ -115,7 +115,7 @@ msgstr "级"
|
||||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
msgid "Account Entry Line"
|
||||
msgstr "凭证明细"
|
||||
msgstr "明细"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
@@ -139,18 +139,18 @@ msgstr "收款人签字"
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "No."
|
||||
msgstr ""
|
||||
msgstr "No."
|
||||
|
||||
#. module: account_voucher
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Amount (in words) :"
|
||||
msgstr "金额:"
|
||||
msgstr "金额(口头上):"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher.line,account_analytic_id:0
|
||||
msgid "Analytic Account"
|
||||
msgstr "辅助核算项目"
|
||||
msgstr "辅助核算项"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.move,voucher_type:0
|
||||
@@ -159,7 +159,7 @@ msgstr "辅助核算项目"
|
||||
#: model:ir.actions.act_window,name:account_voucher.action_view_jour_sale_voucher_form
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_view_jour_sale_voucher_form
|
||||
msgid "Journal Sale Voucher"
|
||||
msgstr "销售原始凭证分类帐"
|
||||
msgstr "销售原始凭证"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.actions.act_window,name:account_voucher.action_receipt_vou_voucher_list
|
||||
@@ -346,12 +346,12 @@ msgstr "新的现金付款"
|
||||
#. module: account_voucher
|
||||
#: view:account.move:0
|
||||
msgid "Optional Information"
|
||||
msgstr "其它信息"
|
||||
msgstr "可选择信息"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
msgid "General Entries"
|
||||
msgstr "一般凭证"
|
||||
msgstr "一般记录"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,date:0
|
||||
@@ -362,7 +362,7 @@ msgstr "日期"
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid ":"
|
||||
msgstr ""
|
||||
msgstr ":"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.account,type1:0
|
||||
@@ -476,7 +476,7 @@ msgstr "说明"
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Canceled"
|
||||
msgstr "取消"
|
||||
msgstr "已取消"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.move,voucher_type:0
|
||||
@@ -497,7 +497,7 @@ msgstr "银行收入"
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "-"
|
||||
msgstr ""
|
||||
msgstr "-"
|
||||
|
||||
#. module: account_voucher
|
||||
#: selection:account.move,voucher_type:0
|
||||
@@ -506,12 +506,12 @@ msgstr ""
|
||||
#: model:ir.actions.act_window,name:account_voucher.action_view_jour_pur_voucher_form
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_view_jour_pur_voucher_form
|
||||
msgid "Journal Purchase Voucher"
|
||||
msgstr "采购原始凭证分类帐"
|
||||
msgstr "采购原始凭证"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.account:0
|
||||
msgid "Closing Balance"
|
||||
msgstr "期末结余"
|
||||
msgstr "期末余额"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher.line,ref:0
|
||||
@@ -524,7 +524,7 @@ msgstr "参考"
|
||||
#: rml:voucher.cash_amount:0
|
||||
#: rml:voucher.cash_receipt.drcr:0
|
||||
msgid "Posted"
|
||||
msgstr "已审核"
|
||||
msgstr "已登帐"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,name:0
|
||||
@@ -534,22 +534,22 @@ msgstr "名称"
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,move_ids:0
|
||||
msgid "Real Entry"
|
||||
msgstr "实际凭证"
|
||||
msgstr "实际记录"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.actions.wizard,name:account_voucher.wizard_account_voucher_open
|
||||
msgid "Open a Voucher Entry"
|
||||
msgstr "打开一原始凭证记录"
|
||||
msgstr "打开一原始凭证"
|
||||
|
||||
#. module: account_voucher
|
||||
#: field:account.voucher,move_id:0
|
||||
msgid "Account Entry"
|
||||
msgstr "凭证"
|
||||
msgstr "分录"
|
||||
|
||||
#. module: account_voucher
|
||||
#: view:account.voucher:0
|
||||
msgid "Entry Lines"
|
||||
msgstr "凭证明细"
|
||||
msgstr "明细"
|
||||
|
||||
#. module: account_voucher
|
||||
#: model:ir.ui.menu,name:account_voucher.menu_action_view_bank_rec_voucher_form
|
||||
@@ -595,4 +595,4 @@ msgstr "银行收入原始凭证"
|
||||
#: field:account.account,journal_id:0
|
||||
#: field:account.voucher,journal_id:0
|
||||
msgid "Journal"
|
||||
msgstr "分类帐"
|
||||
msgstr "记录集合"
|
||||
|
||||
@@ -116,10 +116,10 @@ class account_voucher(osv.osv):
|
||||
('journal_pur_voucher','Journal Purchase'),
|
||||
('journal_voucher','Journal Voucher'),
|
||||
],'Entry Type', select=True , size=128, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'date':fields.date('Date', readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'date':fields.date('Date', readonly=True, states={'draft':[('readonly',False)]}, help="Effective date for accounting entries"),
|
||||
'journal_id':fields.many2one('account.journal', 'Journal', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'account_id':fields.many2one('account.account', 'Account', required=True, readonly=True, states={'draft':[('readonly',False)]}, domain=[('type','<>','view')]),
|
||||
'payment_ids':fields.one2many('account.voucher.line','voucher_id','Voucher Lines', readonly=False, states={'proforma':[('readonly',True)]}),
|
||||
'payment_ids':fields.one2many('account.voucher.line','voucher_id','Voucher Lines', readonly=False, states={'draft':[('readonly',True)]}),
|
||||
'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True, states={'posted':[('readonly',True)]}),
|
||||
'narration':fields.text('Narration', readonly=True, states={'draft':[('readonly',False)]}, required=False),
|
||||
'currency_id': fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
@@ -137,9 +137,8 @@ class account_voucher(osv.osv):
|
||||
\n* The \'Posted\' state is used when user create voucher,a voucher number is generated and voucher entries are created in account \
|
||||
\n* The \'Cancelled\' state is used when user cancel voucher.'),
|
||||
'amount':fields.float('Amount', readonly=True),
|
||||
'reference': fields.char('Voucher Reference', size=64),
|
||||
'reference_type': fields.selection(_get_reference_type, 'Reference Type',
|
||||
required=True),
|
||||
'reference': fields.char('Reference', size=64, readonly=True, states={'draft':[('readonly',False)]}, help="Bank cheque number or payorder number"),
|
||||
'reference_type': fields.selection(_get_reference_type, 'Reference Type', required=True),
|
||||
'number': fields.related('move_id', 'name', type="char", readonly=True, string='Number'),
|
||||
'move_id':fields.many2one('account.move', 'Account Entry'),
|
||||
'move_ids':fields.many2many('account.move.line', 'voucher_id', 'account_id', 'rel_account_move', 'Real Entry'),
|
||||
@@ -280,7 +279,8 @@ class account_voucher(osv.osv):
|
||||
'journal_id': journal.id,
|
||||
'type' : inv.type,
|
||||
'narration' : inv.narration and inv.narration or inv.name,
|
||||
'date':inv.date
|
||||
'date':inv.date,
|
||||
'ref':inv.reference
|
||||
}
|
||||
|
||||
if inv.period_id:
|
||||
@@ -366,6 +366,10 @@ class account_voucher(osv.osv):
|
||||
'move_id': move_id,
|
||||
'move_ids':[(6, 0,line_ids)]
|
||||
}
|
||||
|
||||
message = _('Voucher ') + " '" + inv.name + "' "+ _("is confirm")
|
||||
self.log(cr, uid, inv.id, message)
|
||||
|
||||
self.write(cr, uid, [inv.id], rec)
|
||||
|
||||
return True
|
||||
@@ -428,15 +432,17 @@ class account_voucher_line(osv.osv):
|
||||
'type': lambda *a: 'cr'
|
||||
}
|
||||
|
||||
def onchange_partner(self, cr, uid, ids, partner_id, ttype ,type1):
|
||||
vals = {}
|
||||
def onchange_partner(self, cr, uid, ids, partner_id, ttype ,type1, currency):
|
||||
currency_pool = self.pool.get('res.currency')
|
||||
company = self.pool.get('res.users').browse(cr, uid, uid).company_id
|
||||
|
||||
vals = {
|
||||
'account_id': False,
|
||||
'type': False ,
|
||||
'amount': False
|
||||
}
|
||||
|
||||
if not partner_id:
|
||||
vals.update({
|
||||
'account_id': False,
|
||||
'type': False ,
|
||||
'amount': False
|
||||
})
|
||||
return {
|
||||
'value' : vals
|
||||
}
|
||||
@@ -466,6 +472,9 @@ class account_voucher_line(osv.osv):
|
||||
balance = partner.debit
|
||||
ttype = 'cr'
|
||||
|
||||
if company.currency_id != currency:
|
||||
balance = currency_pool.compute(cr, uid, company.currency_id.id, currency, balance)
|
||||
|
||||
vals.update({
|
||||
'account_id': account_id,
|
||||
'type': ttype,
|
||||
|
||||
@@ -35,9 +35,9 @@
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Journal Entries">
|
||||
<field name="payment_ids" colspan="4" nolabel="1" height="250">
|
||||
<field name="payment_ids" colspan="4" nolabel="1" height="200">
|
||||
<tree string="Voucher Lines" editable="top">
|
||||
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type)"/>
|
||||
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type, parent.currency_id)"/>
|
||||
<field name="account_id"/>
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
@@ -46,14 +46,21 @@
|
||||
<field name="ref"/>
|
||||
</tree>
|
||||
</field>
|
||||
<separator string="Narration" colspan="4"/>
|
||||
<field name="narration" colspan="4" nolabel="1" height="50"/>
|
||||
<group col="2" colspan="3">
|
||||
<separator string="Narration" colspan="2"/>
|
||||
<field name="narration" colspan="2" nolabel="1"/>
|
||||
</group>
|
||||
<group col="2" colspan="1">
|
||||
<separator string="Other Informtion" colspan="2"/>
|
||||
<field name="reference" select="1"/>
|
||||
<field name="date" select="1"/>
|
||||
<field name="currency_id" select="1"/>
|
||||
|
||||
</group>
|
||||
</page>
|
||||
<page string="Other Info">
|
||||
<page string="Accounting Entries">
|
||||
<field name="company_id" select="1" widget="selection" groups="base.group_multi_company"/>
|
||||
<field name="currency_id" select="1" />
|
||||
<field name="period_id"/>
|
||||
<field name="date" select="1"/>
|
||||
<separator string="General Entries" colspan="4"/>
|
||||
<field name="move_ids" colspan="4" nolabel="1" readonly="1"/>
|
||||
</page>
|
||||
@@ -62,7 +69,7 @@
|
||||
<field name="state"/>
|
||||
<button name="open_voucher" string="Pro-forma" states="draft" icon="terp-check"/>
|
||||
<button name="proforma_voucher" string="Create" states="proforma" icon="terp-document-new"/>
|
||||
<button name="recheck_voucher" string="Validate" states="recheck" icon="terp-check"/>
|
||||
<button name="recheck_voucher" string="Approve" states="recheck" icon="terp-check"/>
|
||||
<button name="audit_complete" string="Audit Pass" states="posted" icon="terp-check"/>
|
||||
<button name="cancel_voucher" string="Cancel" states="proforma,recheck,posted" icon="gtk-cancel"/>
|
||||
<button name="cancel_to_draft" states="cancel" string="Set to Draft" icon="terp-stock_effects-object-colorize"/>
|
||||
|
||||
@@ -63,7 +63,8 @@ class account_voucher(osv.osv):
|
||||
'journal_id': journal.id,
|
||||
'type' : inv.type,
|
||||
'narration' : inv.narration and inv.narration or inv.name,
|
||||
'date':inv.date
|
||||
'date':inv.date,
|
||||
'ref':inv.reference
|
||||
}
|
||||
|
||||
if inv.period_id:
|
||||
@@ -101,6 +102,7 @@ class account_voucher(osv.osv):
|
||||
|
||||
line_ids = []
|
||||
line_ids += [move_line_pool.create(cr, uid, move_line)]
|
||||
rec_ids = []
|
||||
for line in inv.payment_ids:
|
||||
amount=0.0
|
||||
move_line = {
|
||||
@@ -146,16 +148,23 @@ class account_voucher(osv.osv):
|
||||
line_ids += [move_line_id]
|
||||
|
||||
if line.invoice_id:
|
||||
rec_ids = [move_line_id]
|
||||
rec_ids += [move_line_id]
|
||||
for move_line in line.invoice_id.move_id.line_id:
|
||||
if line.account_id.id == move_line.account_id.id:
|
||||
rec_ids += [move_line.id]
|
||||
move_line_pool.reconcile_partial(cr, uid, rec_ids)
|
||||
#move_line_pool.reconcile_partial(cr, uid, rec_ids)
|
||||
|
||||
if rec_ids:
|
||||
move_line_pool.reconcile_partial(cr, uid, rec_ids)
|
||||
|
||||
rec = {
|
||||
'move_id': move_id,
|
||||
'move_ids':[(6, 0,line_ids)]
|
||||
}
|
||||
|
||||
message = _('Voucher ') + " '" + inv.name + "' "+ _("is confirm")
|
||||
self.log(cr, uid, inv.id, message)
|
||||
|
||||
self.write(cr, uid, [inv.id], rec)
|
||||
|
||||
return True
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
<field name="payment_ids" position="replace">
|
||||
<field name="voucher_line_ids" default_get="{'lines': voucher_line_ids}" colspan="4" nolabel="1" height="275">
|
||||
<tree string="Voucher Lines" editable="top">
|
||||
<field name="partner_id" on_change="onchange_partner(partner_id, type, parent.type)"/>
|
||||
<field name="partner_id" on_change="onchange_partner(partner_id,type,parent.type, parent.currency_id)"/>
|
||||
<field name="account_id" on_change="onchange_line_account(account_id, type, parent.type)"/>
|
||||
<field name="name"/>
|
||||
<field name="invoice_id" on_change="onchange_invoice_id(invoice_id, parent.currency_id)" domain="[('partner_id','=',partner_id),('state','=','open'),('residual','>',0.0)]"/>
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
# Chinese (Simplified) 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-05-13 20:11+0000\n"
|
||||
"PO-Revision-Date: 2010-07-14 03:27+0000\n"
|
||||
"Last-Translator: Black Jack <onetimespeed@hotmail.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@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-07-14 03:37+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: constraint:ir.ui.view:0
|
||||
msgid "Invalid XML for View Architecture!"
|
||||
msgstr "无效XML视图结构!"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: wizard_view:account.voucher.unreconcile,init:0
|
||||
msgid "Unreconciliation transactions"
|
||||
msgstr "取消对账"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: model:ir.module.module,description:account_voucher_payment.module_name_translation
|
||||
msgid ""
|
||||
"This module includes :\n"
|
||||
" * It reconcile the invoice (supplier, customer) while paying through \n"
|
||||
" Accounting Vouchers\n"
|
||||
" "
|
||||
msgstr ""
|
||||
"这模块包括:\n"
|
||||
" *在支付时核销发票(供应商, 客户) \n"
|
||||
" 原始凭证\n"
|
||||
" "
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: wizard_view:account.voucher.unreconcile,init:0
|
||||
msgid ""
|
||||
"If you unreconciliate transactions, you must also verify all the actions "
|
||||
"that are linked to those transactions because they will not be disable"
|
||||
msgstr "如果取消交易的核销, 你必须检验链接该交易的所有操作. 因为他们不会被禁止."
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: view:account.voucher:0
|
||||
#: field:account.voucher,voucher_line_ids:0
|
||||
msgid "Voucher Lines"
|
||||
msgstr "原始凭证明细"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: model:ir.module.module,shortdesc:account_voucher_payment.module_name_translation
|
||||
msgid "Invoice Payment/Receipt by Vouchers."
|
||||
msgstr "发票付款/ 收入的原始凭证"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: model:ir.actions.wizard,name:account_voucher_payment.wizard_unreconcile_voucher
|
||||
msgid "Unreconcile entries"
|
||||
msgstr "取消核销"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: field:account.move.line,voucher_invoice:0
|
||||
#: field:account.voucher.line,invoice_id:0
|
||||
msgid "Invoice"
|
||||
msgstr "发票"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: wizard_button:account.voucher.unreconcile,init,end:0
|
||||
msgid "Cancel"
|
||||
msgstr "取消"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: field:account.voucher,partner_id:0
|
||||
msgid "Partner"
|
||||
msgstr "业务伙伴"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: wizard_button:account.voucher.unreconcile,init,unrec:0
|
||||
msgid "Unreconcile"
|
||||
msgstr "取消核销"
|
||||
|
||||
#. module: account_voucher_payment
|
||||
#: wizard_view:account.voucher.unreconcile,init:0
|
||||
msgid "Unreconciliation"
|
||||
msgstr "取消对账"
|
||||
@@ -29,7 +29,7 @@ class profile_association_config_install_modules_wizard(osv.osv_memory):
|
||||
_columns = {
|
||||
'hr_expense':fields.boolean('Expenses Tracking', help="Tracks the personal expenses process, from the employee expense encoding, to the reimbursement of the employee up to the reinvoicing to the final customer."),
|
||||
'project':fields.boolean('Project Management'),
|
||||
'event_project':fields.boolean('Organization and management of events', help="This module allows you to create retro planning for managing your events."),
|
||||
'event_project':fields.boolean('Organization and management of Events', help="This module allows you to create retro planning for managing your events."),
|
||||
'project_gtd':fields.boolean('Getting Things Done',
|
||||
help="GTD is a methodology to efficiently organise yourself and your tasks. This module fully integrates GTD principle with OpenERP's project management."),
|
||||
'wiki': fields.boolean('Wiki',
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
position="attributes">
|
||||
<attribute name="string">Install more modules. A few modules are proposed according to the Association Profile you selected. You will be able to install them based on our requirements.</attribute>
|
||||
</xpath>
|
||||
<xpath expr="//button[@string='Install Modules']" position="attributes">
|
||||
<attribute name="string">Configure</attribute>
|
||||
</xpath>
|
||||
<separator string="title" position="replace"/>
|
||||
<group colspan="8">
|
||||
<separator string="Project Management" colspan="4"/>
|
||||
|
||||
@@ -90,7 +90,6 @@ class wiz_auc_lots_buyer_map(osv.osv_memory):
|
||||
for rec in recs:
|
||||
if rec.ach_login==datas['ach_login']:
|
||||
lots_obj.write(cr, uid, [rec.id], {'ach_uid': datas['ach_uid']}, context=context)
|
||||
cr.commit()
|
||||
return {}
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form',
|
||||
|
||||
@@ -73,7 +73,6 @@ class auction_lots_make_invoice(osv.osv_memory):
|
||||
result = mod_obj._get_id(cr, uid, 'account', 'view_account_invoice_filter')
|
||||
id = mod_obj.read(cr, uid, result, ['res_id'])
|
||||
lots_ids = order_obj.seller_trans_create(cr, uid, context['active_ids'], context)
|
||||
cr.commit()
|
||||
return {
|
||||
'domain': "[('id','in', ["+','.join(map(str, lots_ids))+"])]",
|
||||
'name': 'Seller invoices',
|
||||
|
||||
@@ -73,7 +73,6 @@ class auction_lots_make_invoice_buyer(osv.osv_memory):
|
||||
for lot in lots:
|
||||
up_auction = order_obj.write(cr, uid, [lot.id], {'ach_uid': data['buyer_id']})
|
||||
lots_ids = order_obj.lots_invoice(cr, uid, context['active_ids'], context, data['number'])
|
||||
cr.commit()
|
||||
return {
|
||||
'domain': "[('id','in', ["+','.join(map(str, lots_ids))+"])]",
|
||||
'name': 'Buyer invoices',
|
||||
|
||||
@@ -105,8 +105,8 @@ the rule to mark CC(mail to any other person defined in actions)."),
|
||||
'act_mail_to_email': fields.char('Mail to these Emails', size=128, \
|
||||
help="Email-id of the persons whom mail is to be sent"),
|
||||
'act_mail_body': fields.text('Mail body', help="Content of mail"),
|
||||
'regex_name': fields.char('Regex on Resource Name', size=128, help="Regular expression for mathching name of the resource\
|
||||
\ne.g.: urgent.* will search for records having name starting with urgent\
|
||||
'regex_name': fields.char('Regex on Resource Name', size=128, help="Regular expression for matching name of the resource\
|
||||
\ne.g.: 'urgent.*' will search for records having name starting with the string 'urgent'\
|
||||
\nNote: This is case sensitive search."),
|
||||
'server_action_id': fields.many2one('ir.actions.server', 'Server Action', help="Describes the action name.\neg:on which object which action to be taken on basis of which condition"),
|
||||
'filter_id':fields.many2one('ir.filters', 'Filter', required=False),
|
||||
|
||||
@@ -383,7 +383,7 @@ property or property parameter."),
|
||||
'rsvp': True,
|
||||
'cutype': 'individual',
|
||||
}
|
||||
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
raise osv.except_osv(_('Warning!'), _('Can not Duplicate'))
|
||||
|
||||
@@ -419,10 +419,14 @@ property or property parameter."),
|
||||
event.add('location').value = event_obj.location
|
||||
if event_obj.rrule:
|
||||
event.add('rrule').value = event_obj.rrule
|
||||
if event_obj.user_id:
|
||||
if event_obj.user_id or event_obj.organizer_id:
|
||||
event_org = event.add('organizer')
|
||||
event_org.params['CN'] = [event_obj.user_id.name]
|
||||
event_org.value = 'MAILTO:' + (event_obj.user_id.user_email or event_obj.user_id.name)
|
||||
organizer = event_obj.organizer_id
|
||||
if not organizer:
|
||||
organizer = event_obj.user_id
|
||||
event_org.params['CN'] = [organizer.name]
|
||||
event_org.value = 'MAILTO:' + (organizer.user_email or organizer.name)
|
||||
|
||||
if event_obj.alarm_id:
|
||||
# computes alarm data
|
||||
valarm = event.add('valarm')
|
||||
@@ -455,14 +459,14 @@ property or property parameter."),
|
||||
attendee_add.value = 'MAILTO:' + (attendee.email or '')
|
||||
res = cal.serialize()
|
||||
return res
|
||||
|
||||
|
||||
def _send_mail(self, cr, uid, ids, mail_to, email_from=tools.config.get('email_from', False), context=None):
|
||||
"""
|
||||
Send mail for event invitation to event attendees.
|
||||
Send mail for event invitation to event attendees.
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of attendee’s IDs.
|
||||
@param email_from: Email address for user sending the mail
|
||||
@param email_from: Email address for user sending the mail
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: True
|
||||
"""
|
||||
@@ -474,7 +478,7 @@ property or property parameter."),
|
||||
sign = att.sent_by_uid and att.sent_by_uid.signature or ''
|
||||
sign = '<br>'.join(sign and sign.split('\n') or [])
|
||||
res_obj = att.ref
|
||||
sub = '[%s Invitation][%d] %s' % (company, att.id, res_obj.name)
|
||||
sub = res_obj.name
|
||||
att_infos = []
|
||||
other_invitaion_ids = self.search(cr, uid, [('ref', '=', res_obj._name + ',' + str(res_obj.id))])
|
||||
for att2 in self.browse(cr, uid, other_invitaion_ids):
|
||||
@@ -495,12 +499,12 @@ property or property parameter."),
|
||||
if mail_to and email_from:
|
||||
attach = self.get_ics_file(cr, uid, res_obj, context=context)
|
||||
tools.email_send(
|
||||
email_from,
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
attach=attach and [('invitation.ics', attach)] or None,
|
||||
subtype='html',
|
||||
email_from,
|
||||
mail_to,
|
||||
sub,
|
||||
body,
|
||||
attach=attach and [('invitation.ics', attach)] or None,
|
||||
subtype='html',
|
||||
reply_to=email_from
|
||||
)
|
||||
return True
|
||||
@@ -528,31 +532,28 @@ property or property parameter."),
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of calendar attendee’s IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'tentative'}, context)
|
||||
|
||||
def do_accept(self, cr, uid, ids, context=None, *args):
|
||||
"""
|
||||
Update state of invitation as Accepted and
|
||||
Update state of invitation as Accepted and
|
||||
if the invited user is other then event user it will make a copy of this event for invited user
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of calendar attendee’s IDs.
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: True
|
||||
"""
|
||||
if not context:
|
||||
context = {}
|
||||
|
||||
for vals in self.browse(cr, uid, ids, context=context):
|
||||
#user = vals.user_id
|
||||
#if user:
|
||||
# mod_obj = self.pool.get(vals.ref._name)
|
||||
# if vals.ref:
|
||||
# if vals.ref.user_id.id != user.id:
|
||||
# defaults = {'user_id': user.id}
|
||||
# new_event = mod_obj.copy(cr, uid, vals.ref.id, default=defaults, context=context)
|
||||
if vals.ref and vals.ref.user_id:
|
||||
mod_obj = self.pool.get(vals.ref._name)
|
||||
defaults = {'user_id': vals.user_id.id, 'organizer_id': vals.ref.user_id.id}
|
||||
new_event = mod_obj.copy(cr, uid, vals.ref.id, default=defaults, context=context)
|
||||
self.write(cr, uid, vals.id, {'state': 'accepted'}, context)
|
||||
|
||||
return True
|
||||
@@ -565,7 +566,8 @@ property or property parameter."),
|
||||
@param ids: List of calendar attendee’s IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values """
|
||||
|
||||
if not context:
|
||||
context = {}
|
||||
return self.write(cr, uid, ids, {'state': 'declined'}, context)
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
@@ -585,7 +587,6 @@ property or property parameter."),
|
||||
vals['cn'] = vals.get("cn")
|
||||
res = super(calendar_attendee, self).create(cr, uid, vals, context)
|
||||
return res
|
||||
|
||||
calendar_attendee()
|
||||
|
||||
class res_alarm(osv.osv):
|
||||
@@ -654,9 +655,9 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
alarm_ids = res_alarm_obj.search(cr, uid, domain, context=context)
|
||||
if not alarm_ids:
|
||||
val = {
|
||||
'trigger_duration': duration,
|
||||
'trigger_interval': interval,
|
||||
'trigger_occurs': occurs,
|
||||
'trigger_duration': duration,
|
||||
'trigger_interval': interval,
|
||||
'trigger_occurs': occurs,
|
||||
'trigger_related': related,
|
||||
'name': str(duration) + ' ' + str(interval) + ' ' + str(occurs)
|
||||
}
|
||||
@@ -690,7 +691,6 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
cr.execute('Update %s set base_calendar_alarm_id=%s, alarm_id=%s \
|
||||
where id=%s' % (model_obj._table, \
|
||||
alarm_id, basic_alarm.id, data.id))
|
||||
cr.commit()
|
||||
return True
|
||||
|
||||
def do_alarm_unlink(self, cr, uid, ids, model, context=None):
|
||||
@@ -714,7 +714,6 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
alarm_obj.unlink(cr, uid, alarm_ids)
|
||||
cr.execute('Update %s set base_calendar_alarm_id=NULL, alarm_id=NULL\
|
||||
where id=%s' % (model_obj._table, datas.id))
|
||||
cr.commit()
|
||||
return True
|
||||
|
||||
res_alarm()
|
||||
@@ -726,35 +725,35 @@ class calendar_alarm(osv.osv):
|
||||
__attribute__ = {}
|
||||
|
||||
_columns = {
|
||||
'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
|
||||
'alarm_id': fields.many2one('res.alarm', 'Basic Alarm', ondelete='cascade'),
|
||||
'name': fields.char('Summary', size=124, help="""Contains the text to be \
|
||||
used as the message subject for email \
|
||||
or contains the text to be used for display"""),
|
||||
or contains the text to be used for display"""),
|
||||
'action': fields.selection([('audio', 'Audio'), ('display', 'Display'), \
|
||||
('procedure', 'Procedure'), ('email', 'Email') ], 'Action', \
|
||||
required=True, help="Defines the action to be invoked when an alarm is triggered"),
|
||||
required=True, help="Defines the action to be invoked when an alarm is triggered"),
|
||||
'description': fields.text('Description', help='Provides a more complete \
|
||||
description of the calendar component, than that \
|
||||
provided by the "SUMMARY" property'),
|
||||
provided by the "SUMMARY" property'),
|
||||
'attendee_ids': fields.many2many('calendar.attendee', 'alarm_attendee_rel', \
|
||||
'alarm_id', 'attendee_id', 'Attendees', readonly=True),
|
||||
'alarm_id', 'attendee_id', 'Attendees', readonly=True),
|
||||
'attach': fields.binary('Attachment', help="""* Points to a sound resource,\
|
||||
which is rendered when the alarm is triggered for audio,
|
||||
* File which is intended to be sent as message attachments for email,
|
||||
* Points to a procedure resource, which is invoked when\
|
||||
the alarm is triggered for procedure."""),
|
||||
'res_id': fields.integer('Resource ID'),
|
||||
'model_id': fields.many2one('ir.model', 'Model'),
|
||||
'user_id': fields.many2one('res.users', 'Owner'),
|
||||
'event_date': fields.datetime('Event Date'),
|
||||
'event_end_date': fields.datetime('Event End Date'),
|
||||
'trigger_date': fields.datetime('Trigger Date', readonly="True"),
|
||||
the alarm is triggered for procedure."""),
|
||||
'res_id': fields.integer('Resource ID'),
|
||||
'model_id': fields.many2one('ir.model', 'Model'),
|
||||
'user_id': fields.many2one('res.users', 'Owner'),
|
||||
'event_date': fields.datetime('Event Date'),
|
||||
'event_end_date': fields.datetime('Event End Date'),
|
||||
'trigger_date': fields.datetime('Trigger Date', readonly="True"),
|
||||
'state':fields.selection([
|
||||
('draft', 'Draft'),
|
||||
('run', 'Run'),
|
||||
('stop', 'Stop'),
|
||||
('done', 'Done'),
|
||||
], 'State', select=True, readonly=True),
|
||||
('draft', 'Draft'),
|
||||
('run', 'Run'),
|
||||
('stop', 'Stop'),
|
||||
('done', 'Done'),
|
||||
], 'State', select=True, readonly=True),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
@@ -803,7 +802,7 @@ class calendar_alarm(osv.osv):
|
||||
current_datetime = datetime.now()
|
||||
request_obj = self.pool.get('res.request')
|
||||
alarm_ids = self.search(cr, uid, [('state', '!=', 'done')], context=context)
|
||||
|
||||
|
||||
mail_to = []
|
||||
|
||||
for alarm in self.browse(cr, uid, alarm_ids, context=context):
|
||||
@@ -918,10 +917,10 @@ class calendar_event(osv.osv):
|
||||
return {}
|
||||
event = self.browse(cr, uid, ids, context=context)[0]
|
||||
value = {
|
||||
'duration': 24
|
||||
'duration': 24
|
||||
}
|
||||
return {'value': value}
|
||||
|
||||
|
||||
def onchange_dates(self, cr, uid, ids, start_date, duration=False, end_date=False, allday=False, context=None):
|
||||
"""Returns duration and/or end date based on values passed
|
||||
@param self: The object pointer
|
||||
@@ -1084,11 +1083,11 @@ class calendar_event(osv.osv):
|
||||
'duration': fields.float('Duration', states={'done': [('readonly', True)]}),
|
||||
'description': fields.text('Description', states={'done': [('readonly', True)]}),
|
||||
'class': fields.selection([('public', 'Public'), ('private', 'Private'), \
|
||||
('confidential', 'Confidential')], 'Mark as', states={'done': [('readonly', True)]}),
|
||||
'location': fields.char('Location', size=264, help="Location of Event", states={'done': [('readonly', True)]}),
|
||||
('confidential', 'Confidential')], 'Mark as', states={'done': [('readonly', True)]}),
|
||||
'location': fields.char('Location', size=264, help="Location of Event", states={'done': [('readonly', True)]}),
|
||||
'show_as': fields.selection([('free', 'Free'), ('busy', 'Busy')], \
|
||||
'Show as', states={'done': [('readonly', True)]}),
|
||||
'base_calendar_url': fields.char('Caldav URL', size=264),
|
||||
'base_calendar_url': fields.char('Caldav URL', size=264),
|
||||
'state': fields.selection([('tentative', 'Tentative'),
|
||||
('confirmed', 'Confirmed'),
|
||||
('cancelled', 'Cancelled')], 'State', readonly=True),
|
||||
@@ -1112,6 +1111,7 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
|
||||
'vtimezone': fields.related('user_id', 'context_tz', type='char', size=24, \
|
||||
string='Timezone', store=True),
|
||||
'user_id': fields.many2one('res.users', 'Responsible', states={'done': [('readonly', True)]}),
|
||||
'organizer_id': fields.many2one('res.users', 'Organizer', states={'done': [('readonly', True)]}),
|
||||
'freq': fields.selection([('None', 'No Repeat'), \
|
||||
('secondly', 'Secondly'), \
|
||||
('minutely', 'Minutely'), \
|
||||
@@ -1138,25 +1138,27 @@ e.g.: Every other month on the last Sunday of the month for 10 occurrences:\
|
||||
('SU', 'Sunday')], 'Weekday'),
|
||||
'byday': fields.selection([('1', 'First'), ('2', 'Second'), \
|
||||
('3', 'Third'), ('4', 'Fourth'), \
|
||||
('5', 'Fifth'), ('-1', 'Last')], 'By day'),
|
||||
'month_list': fields.selection(months.items(), 'Month'),
|
||||
'end_date': fields.date('Repeat Until'),
|
||||
('5', 'Fifth'), ('-1', 'Last')], 'By day'),
|
||||
'month_list': fields.selection(months.items(), 'Month'),
|
||||
'end_date': fields.date('Repeat Until'),
|
||||
'attendee_ids': fields.many2many('calendar.attendee', 'event_attendee_rel', \
|
||||
'event_id', 'attendee_id', 'Attendees'),
|
||||
'allday': fields.boolean('All Day', states={'done': [('readonly', True)]}),
|
||||
'event_id', 'attendee_id', 'Attendees'),
|
||||
'allday': fields.boolean('All Day', states={'done': [('readonly', True)]}),
|
||||
'active': fields.boolean('Active', help="If the active field is set to \
|
||||
true, it will allow you to hide the event alarm information without removing it.")
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
'state': 'tentative',
|
||||
'state': 'tentative',
|
||||
'class': 'public',
|
||||
'show_as': 'busy',
|
||||
'freq': 'None',
|
||||
'select1': 'date',
|
||||
'interval': 1,
|
||||
'active': 1,
|
||||
}
|
||||
'user_id': lambda self, cr, uid, ctx: uid,
|
||||
'organizer_id': lambda self, cr, uid, ctx: uid,
|
||||
}
|
||||
|
||||
def open_event(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
@@ -1185,26 +1187,26 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
id4 = data_obj.browse(cr, uid, id4, context=context).res_id
|
||||
for id in ids:
|
||||
value = {
|
||||
'name': _('Event'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form,tree',
|
||||
'res_model': 'calendar.event',
|
||||
'view_id': False,
|
||||
'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_id': base_calendar_id2real_id(id),
|
||||
'name': _('Event'),
|
||||
'view_type': 'form',
|
||||
'view_mode': 'form,tree',
|
||||
'res_model': 'calendar.event',
|
||||
'view_id': False,
|
||||
'views': [(id2, 'form'), (id3, 'tree'), (id4, 'calendar')],
|
||||
'type': 'ir.actions.act_window',
|
||||
'res_id': base_calendar_id2real_id(id),
|
||||
'nodestroy': True
|
||||
}
|
||||
|
||||
return value
|
||||
|
||||
def modify_this(self, cr, uid, event_id, defaults, real_date, context=None, *args):
|
||||
"""Modifies only one event record out of virtual recurrent events
|
||||
"""Modifies only one event record out of virtual recurrent events
|
||||
and creates new event as a specific instance of a Recurring Event",
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param event_id: Id of Recurring Event
|
||||
@param event_id: Id of Recurring Event
|
||||
@param real_date: Date of event recurrence that is being modified
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param *args: Get Tupple Value
|
||||
@@ -1227,7 +1229,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
|
||||
def modify_all(self, cr, uid, event_ids, defaults, context=None, *args):
|
||||
"""
|
||||
Modifies the recurring event
|
||||
Modifies the recurring event
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param event_ids: List of crm meeting’s IDs.
|
||||
@@ -1254,7 +1256,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
|
||||
def get_recurrent_ids(self, cr, uid, select, base_start_date, base_until_date, limit=100):
|
||||
"""Gives virtual event ids for recurring events based on value of Recurrence Rule
|
||||
This method gives ids of dates that comes between start date and end date of calendar views
|
||||
This method gives ids of dates that comes between start date and end date of calendar views
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@@ -1420,8 +1422,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
until_date = arg[2]
|
||||
res = super(calendar_event, self).search(cr, uid, args_without_date, \
|
||||
offset, limit, order, context, count)
|
||||
#Search Event ID which are invitted
|
||||
|
||||
|
||||
return self.get_recurrent_ids(cr, uid, res, start_date, until_date, limit)
|
||||
|
||||
|
||||
@@ -1560,7 +1561,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
event_id = [int(event_id)]
|
||||
for record in self.read(cr, uid, event_id, ['date', 'rrule', 'exdate']):
|
||||
if record['rrule']:
|
||||
# Remove one of the recurrent event
|
||||
# Remove one of the recurrent event
|
||||
date_new = time.strftime("%Y-%m-%d %H:%M:%S", \
|
||||
time.strptime(date_new, "%Y%m%d%H%M%S"))
|
||||
exdate = (record['exdate'] and (record['exdate'] + ',') or '') + ''.join((re.compile('\d')).findall(date_new)) + 'Z'
|
||||
@@ -1586,7 +1587,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
alarm_obj = self.pool.get('res.alarm')
|
||||
alarm_obj.do_alarm_create(cr, uid, [res], self._name, 'date', context=context)
|
||||
return res
|
||||
|
||||
|
||||
def do_tentative(self, cr, uid, ids, context=None, *args):
|
||||
""" Makes event invitation as Tentative
|
||||
@param self: The object pointer
|
||||
@@ -1594,10 +1595,10 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'tentative'}, context)
|
||||
|
||||
|
||||
def do_cancel(self, cr, uid, ids, context=None, *args):
|
||||
""" Makes event invitation as Tentative
|
||||
@param self: The object pointer
|
||||
@@ -1605,7 +1606,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'cancelled'}, context)
|
||||
|
||||
@@ -1616,7 +1617,7 @@ true, it will allow you to hide the event alarm information without removing it.
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param *args: Get Tupple value
|
||||
@param context: A standard dictionary for contextual values
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
return self.write(cr, uid, ids, {'state': 'confirmed'}, context)
|
||||
|
||||
@@ -1760,9 +1761,9 @@ class ir_model(osv.osv):
|
||||
|
||||
_inherit = 'ir.model'
|
||||
|
||||
def read(self, cr, uid, ids, fields=None, context=None,
|
||||
def read(self, cr, uid, ids, fields=None, context=None,
|
||||
load='_classic_read'):
|
||||
"""
|
||||
"""
|
||||
Overrides orm read method.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@@ -1809,7 +1810,7 @@ class res_users(osv.osv):
|
||||
_inherit = 'res.users'
|
||||
|
||||
def _get_user_avail(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
"""
|
||||
Get User Availability
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@@ -1840,7 +1841,7 @@ class res_users(osv.osv):
|
||||
return res
|
||||
|
||||
def _get_user_avail_fun(self, cr, uid, ids, name, args, context=None):
|
||||
"""
|
||||
"""
|
||||
Get User Availability Function
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
'update_xml': [
|
||||
'security/ir.model.access.csv',
|
||||
'base_contact_view.xml',
|
||||
'base_contact_installer_view.xml',
|
||||
# 'base_contact_installer_view.xml',
|
||||
'process/base_contact_process.xml'
|
||||
],
|
||||
'demo_xml': ['base_contact_demo.xml'],
|
||||
|
||||
@@ -72,8 +72,8 @@
|
||||
<tree string="Functions and Addresses">
|
||||
<field name="sequence_contact" string="Seq."/>
|
||||
<field name="function"/>
|
||||
<field name="name"/>
|
||||
<field name="address_id"/>
|
||||
<field name="name" on_change="onchange_partner(name)"/>
|
||||
<field name="address_id" attrs="{'required': [('name', '!=', False)]}" on_change="onchange_address(address_id)"/>
|
||||
<field name="phone"/>
|
||||
<field name="fax"/>
|
||||
<field name="extension"/>
|
||||
@@ -180,7 +180,6 @@
|
||||
<form string="Contacts">
|
||||
<group colspan="4" col="4">
|
||||
<field name="sequence_partner"/>
|
||||
<field name="name"/>
|
||||
<field name="contact_id"/>
|
||||
<field name="function"/>
|
||||
</group>
|
||||
|
||||
@@ -25,11 +25,11 @@
|
||||
'version': '0.1',
|
||||
'category': 'Generic Modules/Base',
|
||||
'description': """
|
||||
This module is used along with openerp OpenOffice plugin.
|
||||
This module is used along with OpenERP OpenOffice plugin.
|
||||
You have to first install the plugin which is available at
|
||||
http://www.openerp.com
|
||||
|
||||
This module adds wizards to import/export .SXW report that
|
||||
This module adds wizards to Import/Export .sxw report that
|
||||
you can modify in OpenOffice.Once you have modified it you can
|
||||
upload the report using the same wizard.
|
||||
""",
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
<field eval="[(6,0,[ref('base.user_root')])]" name="users"/>
|
||||
<field eval=""""OpenOfficeReportDesigner"""" name="name"/>
|
||||
</record>
|
||||
|
||||
<record id="ir_model_access_openofficereportdesigner0" model="ir.model.access">
|
||||
<field name="model_id" ref="base.model_ir_actions_report_xml"/>
|
||||
<field eval="1" name="perm_read"/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
@@ -15,11 +15,11 @@
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
from osv import fields,osv
|
||||
from osv import osv
|
||||
from wizard.tiny_sxw2rml import sxw2rml
|
||||
from StringIO import StringIO
|
||||
from report import interface
|
||||
@@ -27,49 +27,53 @@ import base64
|
||||
import pooler
|
||||
import tools
|
||||
|
||||
|
||||
class report_xml(osv.osv):
|
||||
_inherit = 'ir.actions.report.xml'
|
||||
|
||||
def sxwtorml(self,cr, uid, file_sxw,file_type):
|
||||
def sxwtorml(self, cr, uid, file_sxw, file_type):
|
||||
'''
|
||||
The use of this function is to get rml file from sxw file.
|
||||
'''
|
||||
sxwval = StringIO(base64.decodestring(file_sxw))
|
||||
if file_type=='sxw':
|
||||
fp = tools.file_open('normalized_oo2rml.xsl',
|
||||
fp = tools.file_open('normalized_oo2rml.xsl',
|
||||
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
|
||||
if file_type=='odt':
|
||||
fp = tools.file_open('normalized_odt2rml.xsl',
|
||||
fp = tools.file_open('normalized_odt2rml.xsl',
|
||||
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
|
||||
|
||||
|
||||
return {'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read()))}
|
||||
|
||||
def upload_report(self, cr, uid, report_id, file_sxw,file_type, context):
|
||||
def upload_report(self, cr, uid, report_id, file_sxw, file_type, context):
|
||||
'''
|
||||
Untested function
|
||||
'''
|
||||
pool = pooler.get_pool(cr.dbname)
|
||||
sxwval = StringIO(base64.decodestring(file_sxw))
|
||||
if file_type=='sxw':
|
||||
fp = tools.file_open('normalized_oo2rml.xsl',
|
||||
fp = tools.file_open('normalized_oo2rml.xsl',
|
||||
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
|
||||
if file_type=='odt':
|
||||
fp = tools.file_open('normalized_odt2rml.xsl',
|
||||
fp = tools.file_open('normalized_odt2rml.xsl',
|
||||
subdir='addons/base_report_designer/wizard/tiny_sxw2rml')
|
||||
report = pool.get('ir.actions.report.xml').write(cr, uid, [report_id], {
|
||||
'report_sxw_content': base64.decodestring(file_sxw),
|
||||
'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read())),
|
||||
'report_sxw_content': base64.decodestring(file_sxw),
|
||||
'report_rml_content': str(sxw2rml(sxwval, xsl=fp.read())),
|
||||
})
|
||||
db = pooler.get_db_only(cr.dbname)
|
||||
interface.register_all(db)
|
||||
return True
|
||||
|
||||
def report_get(self, cr, uid, report_id, context={}):
|
||||
report = self.browse(cr, uid, report_id, context)
|
||||
return {
|
||||
'file_type' : report.report_type,
|
||||
'report_sxw_content': report.report_sxw_content and base64.encodestring(report.report_sxw_content) or False,
|
||||
'file_type' : report.report_type,
|
||||
'report_sxw_content': report.report_sxw_content and base64.encodestring(report.report_sxw_content) or False,
|
||||
'report_rml_content': report.report_rml_content and base64.encodestring(report.report_rml_content) or False
|
||||
}
|
||||
|
||||
report_xml()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
|
||||
@@ -1,31 +1,22 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<data>
|
||||
|
||||
<wizard
|
||||
string="Modify an existing report"
|
||||
model="ir.actions.report.xml"
|
||||
name="base_report_designer.modify"
|
||||
id="wizard_report_designer_modify"/>
|
||||
<wizard string="Modify an existing report"
|
||||
model="ir.actions.report.xml" name="base_report_designer.modify"
|
||||
id="wizard_report_designer_modify" />
|
||||
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu" name="Reporting" sequence="30"/>
|
||||
<menuitem
|
||||
id="base.next_id_50"
|
||||
name="Configuration"
|
||||
parent="base.reporting_menu"
|
||||
groups="base.group_system"
|
||||
sequence="3"/>
|
||||
<menuitem
|
||||
parent="base.next_id_50"
|
||||
name="Report Designer"
|
||||
action="wizard_report_designer_modify"
|
||||
type="wizard"
|
||||
id="menu_wizard_report_designer_modify"
|
||||
sequence="70"/>
|
||||
<menuitem icon="terp-graph" id="base.reporting_menu"
|
||||
name="Reporting" sequence="30" />
|
||||
|
||||
<menuitem id="base.next_id_50" name="Configuration"
|
||||
parent="base.reporting_menu" groups="base.group_system" sequence="3" />
|
||||
|
||||
<menuitem parent="base.next_id_50" name="Report Designer"
|
||||
action="wizard_report_designer_modify" type="wizard"
|
||||
id="menu_wizard_report_designer_modify" sequence="70" />
|
||||
|
||||
</data>
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@ class base_setup_config_choice(osv.osv_memory):
|
||||
user_ids = user_obj.search(cr, uid, [])
|
||||
users = user_obj.browse(cr, uid, user_ids)
|
||||
user_str = '\n'.join(map(lambda x: ' - %s: %s / %s' % (x.name, x.login, x.password), users))
|
||||
return _('The following users have been installed on your database: \n')+ user_str
|
||||
return _('The following users have been installed : \n')+ user_str
|
||||
|
||||
_columns = {
|
||||
'installed_users':fields.text('Installed Users', readonly=True),
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
<separator string="" position="vertical" colspan="1" rowspan="8"/>
|
||||
<group colspan="4" width="400">
|
||||
<separator string="Installation Done" colspan="4"/>
|
||||
<label align="0.0" string="Your new database is now fully installed." colspan="4"/>
|
||||
<label align="0.0" string="Your database is now created." colspan="4"/>
|
||||
<field name="installed_users" nolabel= "1" colspan="4"/>
|
||||
</group>
|
||||
</group>
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<attribute name="string">Main Company Setup</attribute>
|
||||
</form>
|
||||
<xpath expr="//label[@string='description']" position="attributes">
|
||||
<attribute name="string">Information of your company will be used to custiomise your documents like Invoices, Sale Orders,...</attribute>
|
||||
<attribute name="string">Information of your company will be used to custiomise your documents like Invoices, Sale Orders and many more.</attribute>
|
||||
</xpath>
|
||||
<xpath expr='//separator[@string="title"]' position='attributes'>
|
||||
<attribute name='string'>Configure Your Company</attribute>
|
||||
@@ -24,23 +24,23 @@
|
||||
<group colspan="5">
|
||||
<group colspan="2">
|
||||
<field name="company_id" invisible="1"/>
|
||||
<field name="name" required="True"/><field name="account_no"/>
|
||||
<field name="currency" widget="selection"/><field name="street"/>
|
||||
<field name="street2"/>
|
||||
<field name="country_id"/>
|
||||
<field name="name" required="True"/><field name="website"/>
|
||||
<field name="street"/><field name="street2"/>
|
||||
<field name="zip"/>
|
||||
<field name="state_id"/>
|
||||
<field name="city"/>
|
||||
<field name="email"/>
|
||||
<field name="country_id"/>
|
||||
<field name="state_id"/>
|
||||
<field name="phone"/>
|
||||
<field name="website"/>
|
||||
<field name="email"/>
|
||||
<field name="account_no"/>
|
||||
<field name="currency" widget="selection"/>
|
||||
</group>
|
||||
<newline/>
|
||||
<group colspan="2" groups="base.group_extended">
|
||||
<separator string="Report Information" colspan="4"/>
|
||||
<field name="rml_header1" colspan="5"/>
|
||||
<field name="rml_footer1" colspan="5"/>
|
||||
<field name="rml_footer2" colspan="5"/>
|
||||
<group colspan="2" groups="base.group_extended" >
|
||||
<!-- <separator string="Report Information" colspan="4" />-->
|
||||
<field name="rml_header1" colspan="5" invisible="1"/>
|
||||
<field name="rml_footer1" colspan="5" invisible="1"/>
|
||||
<field name="rml_footer2" colspan="5" invisible="1"/>
|
||||
|
||||
<separator colspan="4"
|
||||
string="Your Logo - Use a size of about 450x150 pixels."/>
|
||||
|
||||
@@ -88,7 +88,7 @@ class base_setup_company(osv.osv_memory):
|
||||
'city':fields.char('City', size=128),
|
||||
'state_id':fields.selection(_get_all_states, 'State'),
|
||||
'country_id':fields.selection(_get_all_countries, 'Country'),
|
||||
'email':fields.char('E-mail', size=64),
|
||||
'email':fields.char('E-mail', size=64, required=True),
|
||||
'phone':fields.char('Phone', size=64),
|
||||
'currency':fields.many2one('res.currency', 'Currency', required=True),
|
||||
'rml_header1':fields.char('Report Header', size=200,
|
||||
@@ -154,7 +154,7 @@ base_setup_company()
|
||||
|
||||
class res_currency(osv.osv):
|
||||
_inherit = 'res.currency'
|
||||
|
||||
|
||||
def name_get(self, cr, uid, ids, context=None):
|
||||
if context is None:
|
||||
context = {}
|
||||
@@ -168,7 +168,7 @@ class res_currency(osv.osv):
|
||||
ids = [ids]
|
||||
reads = self.read(cr, uid, ids, ['name','code'], context, load='_classic_write')
|
||||
return [(x['id'], tools.ustr(x['name']) + ' (' + tools.ustr(x['code']) + ')') for x in reads]
|
||||
|
||||
|
||||
res_currency()
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
|
||||
|
||||
<record model="document.directory" id="document.dir_calendars">
|
||||
<field name="name">Calendars</field>
|
||||
<field name="calendar_collection">True</field>
|
||||
@@ -14,6 +14,11 @@
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_organizer">
|
||||
<field name="name">organizer</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_uid">
|
||||
<field name="name">uid</field>
|
||||
<field name="type">vevent</field>
|
||||
@@ -58,12 +63,12 @@
|
||||
<field name="name">valarm</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_vtimezone">
|
||||
<field name="name">vtimezone</field>
|
||||
<field name="type">vevent</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_event_priority">
|
||||
<field name="name">priority</field>
|
||||
<field name="type">vevent</field>
|
||||
@@ -181,12 +186,12 @@
|
||||
<field name="name">seq</field>
|
||||
<field name="type">vtodo</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_todo_vtimezone">
|
||||
<field name="name">vtimezone</field>
|
||||
<field name="type">vtodo</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.attributes" id="field_todo_url">
|
||||
<field name="name">url</field>
|
||||
<field name="type">vtodo</field>
|
||||
|
||||
+33
-20
@@ -228,6 +228,8 @@ class CalDAV(object):
|
||||
|
||||
att_data = []
|
||||
for cal_data in child.getChildren():
|
||||
if cal_data.name.lower() == 'organizer':
|
||||
self.ical_set(cal_data.name.lower(), {'name':cal_data.params['CN']}, 'value')
|
||||
if cal_data.name.lower() == 'attendee':
|
||||
ctx = context.copy()
|
||||
if cal_children:
|
||||
@@ -266,7 +268,7 @@ class CalDAV(object):
|
||||
if not datas:
|
||||
return
|
||||
timezones = []
|
||||
for data in datas:
|
||||
for data in datas:
|
||||
tzval = None
|
||||
vevent = ical.add(name)
|
||||
for field in self.__attribute__.keys():
|
||||
@@ -307,6 +309,13 @@ class CalDAV(object):
|
||||
ical = tz_obj.export_cal(cr, uid, None, \
|
||||
data[map_field], ical, context=context)
|
||||
timezones.append(data[map_field])
|
||||
elif field == 'organizer' and data[map_field]:
|
||||
event_org = vevent.add('organizer')
|
||||
organizer_id = data[map_field][0]
|
||||
user_obj = self.pool.get('res.users')
|
||||
organizer = user_obj.browse(cr, uid, organizer_id, context=context)
|
||||
event_org.params['CN'] = [organizer.name]
|
||||
event_org.value = 'MAILTO:' + (organizer.user_email or organizer.name)
|
||||
elif data[map_field]:
|
||||
if map_type in ("char", "text"):
|
||||
if field in ('exdate'):
|
||||
@@ -414,7 +423,7 @@ class CalDAV(object):
|
||||
return res
|
||||
|
||||
class Calendar(CalDAV, osv.osv):
|
||||
_name = 'basic.calendar'
|
||||
_name = 'basic.calendar'
|
||||
_calname = 'calendar'
|
||||
|
||||
__attribute__ = {
|
||||
@@ -431,13 +440,13 @@ class Calendar(CalDAV, osv.osv):
|
||||
'vtimezone': None, # Use: O-n, Type: Collection of Timezone class
|
||||
}
|
||||
_columns = {
|
||||
'name': fields.char("Name", size=64),
|
||||
'name': fields.char("Name", size=64),
|
||||
'user_id': fields.many2one('res.users', 'Owner'),
|
||||
'collection_id': fields.many2one('document.directory', 'Collection', \
|
||||
required=True),
|
||||
'type': fields.selection([('vevent', 'Event'), ('vtodo', 'TODO')], \
|
||||
string="Type", size=64),
|
||||
'line_ids': fields.one2many('basic.calendar.lines', 'calendar_id', 'Calendar Lines'),
|
||||
'line_ids': fields.one2many('basic.calendar.lines', 'calendar_id', 'Calendar Lines'),
|
||||
'create_date': fields.datetime('Created Date'),
|
||||
'write_date': fields.datetime('Modifided Date'),
|
||||
}
|
||||
@@ -448,8 +457,8 @@ class Calendar(CalDAV, osv.osv):
|
||||
if not domain:
|
||||
domain = []
|
||||
res = []
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ctx_model = context.get('model', None)
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ctx_model = context.get('model', None)
|
||||
for cal in self.browse(cr, uid, ids):
|
||||
for line in cal.line_ids:
|
||||
if ctx_model and ctx_model != line.object_id.model:
|
||||
@@ -458,13 +467,13 @@ class Calendar(CalDAV, osv.osv):
|
||||
continue
|
||||
line_domain = eval(line.domain)
|
||||
line_domain += domain
|
||||
if ctx_res_id:
|
||||
if ctx_res_id:
|
||||
line_domain += [('id','=',ctx_res_id)]
|
||||
mod_obj = self.pool.get(line.object_id.model)
|
||||
data_ids = mod_obj.search(cr, uid, line_domain, context=context)
|
||||
data_ids = mod_obj.search(cr, uid, line_domain, context=context)
|
||||
for data in mod_obj.browse(cr, uid, data_ids, context):
|
||||
ctx = parent and parent.context or None
|
||||
node = res_node_calendar('%s' %data.id, parent, ctx, data, line.object_id.model, data.id)
|
||||
node = res_node_calendar('%s' %data.id, parent, ctx, data, line.object_id.model, data.id)
|
||||
res.append(node)
|
||||
return res
|
||||
|
||||
@@ -478,8 +487,8 @@ class Calendar(CalDAV, osv.osv):
|
||||
"""
|
||||
if not context:
|
||||
context = {}
|
||||
ctx_model = context.get('model', None)
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ctx_model = context.get('model', None)
|
||||
ctx_res_id = context.get('res_id', None)
|
||||
ical = vobject.iCalendar()
|
||||
for cal in self.browse(cr, uid, ids):
|
||||
for line in cal.line_ids:
|
||||
@@ -488,7 +497,7 @@ class Calendar(CalDAV, osv.osv):
|
||||
if line.name in ('valarm', 'attendee'):
|
||||
continue
|
||||
domain = eval(line.domain)
|
||||
if ctx_res_id:
|
||||
if ctx_res_id:
|
||||
domain += [('id','=',ctx_res_id)]
|
||||
mod_obj = self.pool.get(line.object_id.model)
|
||||
data_ids = mod_obj.search(cr, uid, domain, context=context)
|
||||
@@ -496,7 +505,7 @@ class Calendar(CalDAV, osv.osv):
|
||||
context.update({'model': line.object_id.model,
|
||||
'calendar_id': cal.id
|
||||
})
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, line.name, context)
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, line.name, context)
|
||||
self.create_ics(cr, uid, datas, line.name, ical, context=context)
|
||||
return ical.serialize()
|
||||
|
||||
@@ -511,16 +520,18 @@ class Calendar(CalDAV, osv.osv):
|
||||
|
||||
if not context:
|
||||
context = {}
|
||||
vals = []
|
||||
vals = []
|
||||
ical_data = base64.decodestring(content)
|
||||
parsedCal = vobject.readOne(ical_data)
|
||||
if not data_id:
|
||||
data_id = self.search(cr, uid, [])[0]
|
||||
data_id = self.search(cr, uid, [])[0]
|
||||
cal = self.browse(cr, uid, data_id, context=context)
|
||||
cal_children = {}
|
||||
count = 0
|
||||
for line in cal.line_ids:
|
||||
cal_children[line.name] = line.object_id.model
|
||||
objs = []
|
||||
checked = True
|
||||
for child in parsedCal.getChildren():
|
||||
if child.name.lower() in cal_children:
|
||||
context.update({'model': cal_children[child.name.lower()],
|
||||
@@ -528,12 +539,14 @@ class Calendar(CalDAV, osv.osv):
|
||||
})
|
||||
self.__attribute__ = get_attribute_mapping(cr, uid, child.name.lower(), context=context)
|
||||
val = self.parse_ics(cr, uid, child, cal_children=cal_children, context=context)
|
||||
val.update({'user_id': uid})
|
||||
vals.append(val)
|
||||
obj = self.pool.get(cal_children[child.name.lower()])
|
||||
if hasattr(obj, 'check_import'):
|
||||
obj.check_import(cr, uid, vals, context=context)
|
||||
else:
|
||||
objs.append(cal_children[child.name.lower()])
|
||||
for obj_name in list(set(objs)):
|
||||
obj = self.pool.get(obj_name)
|
||||
if hasattr(obj, 'check_import'):
|
||||
obj.check_import(cr, uid, vals, context=context)
|
||||
checked = True
|
||||
if not checked:
|
||||
self.check_import(cr, uid, vals, context=context)
|
||||
return {}
|
||||
Calendar()
|
||||
|
||||
@@ -29,21 +29,69 @@
|
||||
</graph>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="crm_case_my_open_oppor">
|
||||
<field name="name">My Open Opportunities</field>
|
||||
<field name="model">crm.lead</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="Opportunities" colors="blue:state=='pending';grey:state in ('cancel', 'done');red:date_deadline and (date_deadline < current_date)">
|
||||
<field name="name" string="Opportunity"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="stage_id"/>
|
||||
<button name="stage_previous" string="Previous Stage"
|
||||
states="open,pending" type="object" icon="gtk-go-back" />
|
||||
<button name="stage_next" string="Next Stage"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
<field name="planned_revenue" sum="Total of Planned Revenue"/>
|
||||
<field name="probability" widget="progressbar" avg="Avg. of Probability"/>
|
||||
<field name="date_deadline" invisible="1"/>
|
||||
<field name="state"/>
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
<button name="case_pending" string="Pending"
|
||||
states="open,draft" type="object"
|
||||
icon="gtk-media-pause" />
|
||||
<button name="case_mark_lost" string="Lost"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
<button name="case_close" string="Won"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-apply" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="act_my_oppor">
|
||||
<field name="name">My Open Opportunities</field>
|
||||
<field name="res_model">crm.lead</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm.crm_case_tree_view_oppor"/>
|
||||
<field name="domain">[('user_id','=',uid),('state','=','open'), ('type', '=', 'opportunity')]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window.view" id="act_my_oppor_tree_view">
|
||||
<field name="sequence" eval="1"/>
|
||||
<field name="view_mode">tree</field>
|
||||
<field name="view_id" ref="crm_case_my_open_oppor"/>
|
||||
<field name="act_window_id" ref="act_my_oppor"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window.view" id="act_my_oppor_form_view">
|
||||
<field name="sequence" eval="2"/>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="view_id" ref="crm_case_form_view_oppor"/>
|
||||
<field name="act_window_id" ref="act_my_oppor"/>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="act_my_meetings">
|
||||
<field name="res_model">crm.meeting</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="view_id" ref="crm.crm_case_tree_view_meet"/>
|
||||
<field name="domain">[('user_id','=',uid),('state','!=','cancel'),('date','ilike',time.strftime("%Y-%m"))]</field>
|
||||
<field name="domain">[('user_id','=',uid),('state','not in',('cancel','done'))]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.actions.act_window" id="act_my_oppor_stage">
|
||||
@@ -59,7 +107,7 @@
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">graph,tree,form</field>
|
||||
<field name="view_id" ref="view_crm_opportunity_user_graph1"/>
|
||||
<field name="domain">['&', ('state', '=', 'done') , '&', ('create_date','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%Y-%m-%d')), ('type', '=', 'opportunity')]</field>
|
||||
<field name="domain">['&', ('user_id', '=', uid),'&', ('state', '=', 'done') , '&', ('create_date','>',(datetime.date.today()-datetime.timedelta(days=365)).strftime('%Y-%m-%d')), ('type', '=', 'opportunity')]</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="board_crm_form">
|
||||
@@ -84,11 +132,11 @@
|
||||
</child1>
|
||||
<child2>
|
||||
<action
|
||||
string="Planned Revenues by Stage"
|
||||
string="My Planned Revenues by Stage"
|
||||
name="%(act_my_oppor_stage)d"
|
||||
colspan="4"/>
|
||||
<action
|
||||
string="Win/Lost Ratio for the Last Year"
|
||||
string="My Win/Lost Ratio for the Last Year"
|
||||
name="%(act_sales_pipeline)d"
|
||||
colspan="4"/>
|
||||
</child2>
|
||||
|
||||
+9
-5
@@ -124,7 +124,7 @@ class crm_case(object):
|
||||
stage_pool = self.pool.get('crm.case.stage')
|
||||
for case in self.browse(cr, uid, ids, context):
|
||||
if section in s:
|
||||
st = case.stage_id.id or False
|
||||
st = not context.get('force_domain', False) and case.stage_id.id or False
|
||||
if st in s[section]:
|
||||
data = {'stage_id': s[section][st]}
|
||||
stage = s[section][st]
|
||||
@@ -141,8 +141,12 @@ class crm_case(object):
|
||||
if not context:
|
||||
context = {}
|
||||
stage_obj = self.pool.get('crm.case.stage')
|
||||
sid = stage_obj.search(cr, uid, \
|
||||
[('object_id.model', '=', self._name)], context=context)
|
||||
tmp = self.read(cr, uid, ids, ['section_id'], context)[0]['section_id']
|
||||
section_id = tmp and tmp[0] or False
|
||||
domain = [('object_id.model', '=', self._name), ('section_id', '=', section_id)]
|
||||
if 'force_domain' in context and context['force_domain']:
|
||||
domain += context['force_domain']
|
||||
sid = stage_obj.search(cr, uid, domain, context=context)
|
||||
s = {}
|
||||
previous = {}
|
||||
section = self._name
|
||||
@@ -168,7 +172,7 @@ class crm_case(object):
|
||||
stage_pool = self.pool.get('crm.case.stage')
|
||||
for case in self.browse(cr, uid, ids, context):
|
||||
if section in s:
|
||||
st = case.stage_id.id or False
|
||||
st = not context.get('force_domain', False) and case.stage_id.id or False
|
||||
s[section] = dict([(v, k) for (k, v) in s[section].iteritems()])
|
||||
if st in s[section]:
|
||||
data = {'stage_id': s[section][st]}
|
||||
@@ -440,7 +444,7 @@ class crm_case_section(osv.osv):
|
||||
'active': fields.boolean('Active', help="If the active field is set to \
|
||||
true, it will allow you to hide the sales team without removing it."),
|
||||
'allow_unlink': fields.boolean('Allow Delete', help="Allows to delete non draft cases"),
|
||||
'change_responsible': fields.boolean('Change Responsible', help="Set responsible of this Sales team on escalation to this team"),
|
||||
'change_responsible': fields.boolean('Change Responsible', help="Thick this box if you want that on escalation, the responsible of this sale team automatically becomes responsible of the lead/opportunity escaladed"),
|
||||
'user_id': fields.many2one('res.users', 'Responsible User'),
|
||||
'member_ids':fields.many2many('res.users', 'sale_member_rel', 'section_id', 'member_id', 'Team Members'),
|
||||
'reply_to': fields.char('Reply-To', size=64, help="The email address put \
|
||||
|
||||
+10
-10
@@ -30,19 +30,19 @@ import tools
|
||||
class crm_installer(osv.osv_memory):
|
||||
_name = 'crm.installer'
|
||||
_inherit = 'res.config.installer'
|
||||
|
||||
|
||||
_columns = {
|
||||
'name': fields.char('Name', size=64),
|
||||
'crm_helpdesk': fields.boolean('Helpdesk', help="Manages an Helpdesk service."),
|
||||
'crm_fundraising': fields.boolean('Fundraising', help="This may help associations in their fund raising process and tracking."),
|
||||
'crm_claim': fields.boolean('Claims', help="Manages the supplier and customers claims, including your corrective or preventive actions."),
|
||||
'crm_caldav': fields.boolean('Calendar Synchronizing', help="Help you to synchronize the meetings with other calender clients(e.g.: Sunbird)."),
|
||||
'sale_crm': fields.boolean('Create Quotation from Opportunity', help="This module relates sale to opportunity cases in the CRM."),
|
||||
'name': fields.char('Name', size=64),
|
||||
'crm_helpdesk': fields.boolean('Helpdesk', help="Manages an Helpdesk service."),
|
||||
'crm_fundraising': fields.boolean('Fundraising', help="This may help associations in their fund raising process and tracking."),
|
||||
'crm_claim': fields.boolean('Claims', help="Manages the supplier and customers claims, including your corrective or preventive actions."),
|
||||
'crm_caldav': fields.boolean('Calendar Synchronizing', help="Help you to synchronize the meetings with other calender clients(e.g.: Sunbird)."),
|
||||
'sale_crm': fields.boolean('Opportunity to Quotation', help="This module relates sale to opportunity cases in the CRM."),
|
||||
'fetchmail': fields.boolean('Fetch Emails', help="Fetchmail Server."),
|
||||
'thunderbird': fields.boolean('Thunderbird', help="Thunderbird Interface."),
|
||||
'wiki_sale_faq': fields.boolean('Sale FAQ', help="Sale FAQ."),
|
||||
'thunderbird': fields.boolean('Thunderbird', help="Thunderbird Interface."),
|
||||
'wiki_sale_faq': fields.boolean('Sale FAQ', help="Sale FAQ."),
|
||||
}
|
||||
|
||||
|
||||
def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
|
||||
res = super(crm_installer, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
|
||||
#Checking sale module is installed or not
|
||||
|
||||
+30
-8
@@ -139,9 +139,7 @@ and users"),
|
||||
],'Type', help="Type is used to separate Leads and Opportunities"),
|
||||
'priority': fields.selection(crm.AVAILABLE_PRIORITIES, 'Priority'),
|
||||
'date_closed': fields.datetime('Closed', readonly=True),
|
||||
'stage_id': fields.many2one('crm.case.stage', 'Stage', \
|
||||
domain="[('section_id','=',section_id),\
|
||||
('object_id.model', '=', 'crm.lead')]"),
|
||||
'stage_id': fields.many2one('crm.case.stage', 'Stage'),
|
||||
'user_id': fields.many2one('res.users', 'Salesman',help='By Default Salesman is Administrator when create New User'),
|
||||
'referred': fields.char('Referred By', size=64),
|
||||
'date_open': fields.datetime('Opened', readonly=True),
|
||||
@@ -154,8 +152,10 @@ and users"),
|
||||
\nIf the case is in progress the state is set to \'Open\'.\
|
||||
\nWhen the case is over, the state is set to \'Done\'.\
|
||||
\nIf the case needs to be reviewed then the state is set to \'Pending\'.'),
|
||||
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('history', '=', True),('model','=',_name)]),
|
||||
'log_ids': fields.one2many('mailgate.message', 'res_id', 'Logs', domain=[('history', '=', False),('model','=',_name)]),
|
||||
'message_ids': fields.one2many('mailgate.message', 'res_id', 'Messages', domain=[('history', '=', True),('model','=',_name)], readonly=True),
|
||||
'log_ids': fields.one2many('mailgate.message', 'res_id', 'Logs', domain=[('history', '=', False),('model','=',_name)], readonly=True),
|
||||
'partner_assigned_id': fields.many2one('res.partner', 'Assigned Partner', help="Partner this case has been forwarded/assigned to.", select=True),
|
||||
'date_assign': fields.date('Assignation Date', help="Last date this case was forwarded/assigned to a partner"),
|
||||
}
|
||||
|
||||
_defaults = {
|
||||
@@ -169,6 +169,20 @@ and users"),
|
||||
'priority': lambda *a: crm.AVAILABLE_PRIORITIES[2][0],
|
||||
}
|
||||
|
||||
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
|
||||
"""This function returns value of partner email based on Partner Address
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case IDs
|
||||
@param add: Id of Partner's address
|
||||
@email: Partner's email ID
|
||||
"""
|
||||
if not add:
|
||||
return {'value': {'email_from': False, 'country_id': False}}
|
||||
address = self.pool.get('res.partner.address').browse(cr, uid, add)
|
||||
return {'value': {'email_from': address.email, 'phone': address.phone, 'country_id': address.country_id.id}}
|
||||
|
||||
def case_open(self, cr, uid, ids, *args):
|
||||
"""Overrides cancel for crm_case for setting Open Date
|
||||
@param self: The object pointer
|
||||
@@ -177,10 +191,18 @@ and users"),
|
||||
@param ids: List of case's Ids
|
||||
@param *args: Give Tuple Value
|
||||
"""
|
||||
old_state = self.read(cr, uid, ids, ['state'])[0]['state']
|
||||
res = super(crm_lead, self).case_open(cr, uid, ids, *args)
|
||||
self.write(cr, uid, ids, {'date_open': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
if old_state == 'draft':
|
||||
stage_id = super(crm_lead, self).stage_next(cr, uid, ids, *args)
|
||||
if not stage_id:
|
||||
raise osv.except_osv(_('Warning !'), _('There is no stage defined for this Sale Team.'))
|
||||
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
|
||||
value.update({'date_open': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
|
||||
self.write(cr, uid, ids, value)
|
||||
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Lead ') + " '" + name + "' "+ _("is Open.")
|
||||
message = _('The Lead') + " '" + name + "' "+ _("has been written as Open.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
@@ -195,7 +217,7 @@ and users"),
|
||||
res = super(crm_lead, self).case_close(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Lead ') + " '" + name + "' "+ _("is Closed.")
|
||||
message = _('The Lead') + " '" + name + "' "+ _("has been written as Closed.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
|
||||
@@ -53,8 +53,8 @@
|
||||
<newline />
|
||||
<field name="section_id" widget="selection" />
|
||||
<field name="user_id" />
|
||||
<field name="stage_id" widget="selection"
|
||||
domain="[('object_id.model', '=', 'crm.lead')]" />
|
||||
<field name="stage_id"
|
||||
domain="[('section_id','=',section_id), ('object_id.model', '=', 'crm.lead')]" />
|
||||
<group col="2" colspan="1">
|
||||
<button name="stage_previous" string="Previous"
|
||||
states="open,pending" type="object"
|
||||
@@ -91,7 +91,7 @@
|
||||
<field name="mobile"/>
|
||||
<newline/>
|
||||
<separator string="Links" colspan="4" col="3"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="partner_id" on_change="onchange_partner_id(partner_id, email_from)"/>
|
||||
<button
|
||||
name="%(action_crm_lead2partner)d"
|
||||
icon="gtk-index" type="action"
|
||||
@@ -193,11 +193,10 @@
|
||||
name="%(crm.action_crm_send_mail)d"
|
||||
context="{'mail':'new', 'model': 'crm.lead'}"
|
||||
icon="gtk-go-forward" type="action" />
|
||||
<button colspan="2" string="Forward to Partner"
|
||||
<button colspan="2" string="Forward"
|
||||
name="%(crm_lead_forward_to_partner_act)d"
|
||||
icon="gtk-go-forward" type="action" />
|
||||
</page>
|
||||
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
@@ -223,7 +222,7 @@
|
||||
<field name="type_id" invisible="1"/>
|
||||
<field name="referred" invisible="1"/>
|
||||
|
||||
<field name="stage_id"/>
|
||||
<field name="stage_id" />
|
||||
<button name="stage_previous" string="Previous Stage"
|
||||
states="open,pending" type="object" icon="gtk-go-back" />
|
||||
<button name="stage_next" string="Next Stage"
|
||||
|
||||
@@ -107,6 +107,7 @@
|
||||
<group col="2" colspan="2">
|
||||
<separator colspan="2" string="Assignment"/>
|
||||
<field name="user_id" />
|
||||
<field name="organizer_id" groups="base.group_extended"/>
|
||||
<field name="section_id" widget="selection"
|
||||
groups="base.group_extended"/>
|
||||
</group><group col="2" colspan="2">
|
||||
@@ -154,7 +155,9 @@
|
||||
<field name="attendee_ids" colspan="4"
|
||||
nolabel="1" widget="one2many" mode="tree,form">
|
||||
<tree string="Invitation details" editable="top">
|
||||
<field name="email" />
|
||||
<field name="sent_by_uid" string="From"/>
|
||||
<field name="user_id" string="To"/>
|
||||
<field name="email" string="Mail TO"/>
|
||||
<field name="role" select="1" />
|
||||
<field name="state" />
|
||||
</tree>
|
||||
@@ -342,7 +345,7 @@
|
||||
</field>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -46,7 +46,7 @@ class crm_opportunity(osv.osv):
|
||||
domain="[('partner_id','=',partner_id)]"),
|
||||
|
||||
# Opportunity fields
|
||||
'probability': fields.float('Probability (%)'),
|
||||
'probability': fields.float('Probability (%)',group_operator="avg"),
|
||||
'planned_revenue': fields.float('Expected Revenue'),
|
||||
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
|
||||
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
|
||||
@@ -64,9 +64,15 @@ class crm_opportunity(osv.osv):
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_opportunity, self).case_close(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'probability' : 100.0, 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 100)]})
|
||||
if not stage_id:
|
||||
raise osv.except_osv(_('Warning !'), _('There is no stage for won oppportunities defined for this Sale Team.'))
|
||||
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
|
||||
value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
|
||||
|
||||
self.write(cr, uid, ids, value)
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Opportunity ') + " '" + name + "' "+ _("is Won.")
|
||||
message = _('The Opportunity') + " '" + name + "' "+ _("has been written as Won.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
@@ -78,9 +84,16 @@ class crm_opportunity(osv.osv):
|
||||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = self.write(cr, uid, ids, {'probability' : 0.0, 'state': 'done'})
|
||||
res = super(crm_opportunity, self).case_close(cr, uid, ids, args)
|
||||
stage_id = super(crm_opportunity, self).stage_next(cr, uid, ids, context={'force_domain': [('probability', '=', 0)]})
|
||||
if not stage_id:
|
||||
raise osv.except_osv(_('Warning !'), _('There is no stage for lost oppportunities defined for this Sale Team.'))
|
||||
value = self.onchange_stage_id(cr, uid, ids, stage_id, context={})['value']
|
||||
value.update({'date_closed': time.strftime('%Y-%m-%d %H:%M:%S'), 'stage_id': stage_id})
|
||||
|
||||
res = self.write(cr, uid, ids, value)
|
||||
for (id, name) in self.name_get(cr, uid, ids):
|
||||
message = _('Opportunity ') + " '" + name + "' "+ _("is Lost.")
|
||||
message = _('The Opportunity') + " '" + name + "' "+ _("has been written as Lost.")
|
||||
self.log(cr, uid, id, message)
|
||||
return res
|
||||
|
||||
@@ -95,9 +108,22 @@ class crm_opportunity(osv.osv):
|
||||
res = super(crm_opportunity, self).case_cancel(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'probability' : 0.0})
|
||||
return res
|
||||
|
||||
|
||||
def case_reset(self, cr, uid, ids, *args):
|
||||
"""Overrides reset as draft in order to set the stage field as empty
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_opportunity, self).case_reset(cr, uid, ids, *args)
|
||||
self.write(cr, uid, ids, {'stage_id': False})
|
||||
return True
|
||||
|
||||
|
||||
def case_open(self, cr, uid, ids, *args):
|
||||
"""Overrides cancel for crm_case for setting Open Date
|
||||
"""Overrides open for crm_case for setting Open Date
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
|
||||
@@ -14,8 +14,7 @@
|
||||
<group colspan="1" col="4">
|
||||
<field name="stage_id" nolabel="1"
|
||||
on_change="onchange_stage_id(stage_id)"
|
||||
widget="selection"
|
||||
domain="[('object_id.model', '=', 'crm.lead')]" />
|
||||
domain="[('section_id','=',section_id), ('object_id.model', '=', 'crm.lead')]" />
|
||||
<button name="stage_previous"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-go-back" string="" />
|
||||
@@ -191,6 +190,21 @@
|
||||
</form>
|
||||
</field>
|
||||
</page>
|
||||
<page string="Assignation" groups="base.group_extended">
|
||||
<group name="partner_assign_group" col="5" colspan="4">
|
||||
<separator string="Partner Assignation" colspan="5"/>
|
||||
<field name="partner_assigned_id"/>
|
||||
<field name="date_assign"/>
|
||||
<group colspan="1" col="1">
|
||||
<button string="Forward"
|
||||
attrs="{'invisible':[('partner_assigned_id','=',False)]}"
|
||||
name="%(crm_lead_forward_to_partner_act)d"
|
||||
icon="gtk-go-forward" type="action"
|
||||
context="{'default_name': 'partner', 'default_partner_id': partner_assigned_id}"
|
||||
/>
|
||||
</group>
|
||||
</group>
|
||||
</page>
|
||||
</notebook>
|
||||
</form>
|
||||
</field>
|
||||
|
||||
@@ -24,6 +24,7 @@ from osv import fields, osv
|
||||
from tools.translate import _
|
||||
import crm
|
||||
import time
|
||||
from datetime import datetime, timedelta
|
||||
|
||||
class crm_phonecall(osv.osv, crm_case):
|
||||
""" Phonecall Cases """
|
||||
@@ -65,7 +66,7 @@ class crm_phonecall(osv.osv, crm_case):
|
||||
('object_id.model', '=', 'crm.phonecall')]"),
|
||||
'date_open': fields.datetime('Opened', readonly=True),
|
||||
# phonecall fields
|
||||
'duration': fields.float('Duration'),
|
||||
'duration': fields.float('Duration', help="Duration in Minutes"),
|
||||
'categ_id': fields.many2one('crm.case.categ', 'Category', \
|
||||
domain="[('section_id','=',section_id),\
|
||||
('object_id.model', '=', 'crm.phonecall')]"),
|
||||
@@ -113,10 +114,29 @@ class crm_phonecall(osv.osv, crm_case):
|
||||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_phonecall, self).case_close(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
for phone in self.browse(cr, uid, ids):
|
||||
phone_id= phone.id
|
||||
data = {'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')}
|
||||
if phone.duration <=0:
|
||||
duration = datetime.now() - datetime.strptime(phone.date, '%Y-%m-%d %H:%M:%S')
|
||||
data.update({'duration': duration.seconds/float(60)})
|
||||
res = super(crm_phonecall, self).case_close(cr, uid, [phone_id], args)
|
||||
self.write(cr, uid, ids, data)
|
||||
return res
|
||||
|
||||
def case_reset(self, cr, uid, ids, *args):
|
||||
"""Resets case as draft
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of case Ids
|
||||
@param *args: Tuple Value for additional Params
|
||||
"""
|
||||
res = super(crm_phonecall, self).case_reset(cr, uid, ids, args)
|
||||
self.write(cr, uid, ids, {'duration': 0.0})
|
||||
return res
|
||||
|
||||
|
||||
def case_open(self, cr, uid, ids, *args):
|
||||
"""Overrides cancel for crm_case for setting Open Date
|
||||
@param self: The object pointer
|
||||
|
||||
@@ -374,7 +374,8 @@
|
||||
<page string="Current Activity" position="inside">
|
||||
<field name="context_section_id" completion="1"
|
||||
widget="selection"
|
||||
context="{'user_prefence':True}" />
|
||||
context="{'user_prefence':True}"
|
||||
readonly="0"/>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -76,6 +76,7 @@ class crm_lead_report(osv.osv):
|
||||
_columns = {
|
||||
'name': fields.char('Year', size=64, required=False, readonly=True),
|
||||
'user_id':fields.many2one('res.users', 'User', readonly=True),
|
||||
'country_id':fields.many2one('res.country', 'Country', readonly=True),
|
||||
'section_id':fields.many2one('crm.case.section', 'Section', readonly=True),
|
||||
'state': fields.selection(AVAILABLE_STATES, 'State', size=16, readonly=True),
|
||||
'avg_answers': fields.function(_get_data, string='Avg. Answers', method=True, type="integer"),
|
||||
@@ -141,6 +142,7 @@ class crm_lead_report(osv.osv):
|
||||
c.section_id,
|
||||
c.categ_id,
|
||||
c.partner_id,
|
||||
c.country_id,
|
||||
c.planned_revenue,
|
||||
1 as nbr,
|
||||
0 as avg_answers,
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
<filter string="User" name="user" icon="terp-personal"
|
||||
domain="[]" context="{'group_by':'user_id'}" />
|
||||
<filter string="Partner" icon="terp-personal" context="{'group_by':'partner_id'}" />
|
||||
<filter string="Country" icon="terp-go-home" context="{'group_by':'country_id'}" />
|
||||
<separator orientation="vertical" />
|
||||
<filter string="Section" icon="terp-personal+"
|
||||
domain="[]"
|
||||
@@ -133,7 +134,7 @@
|
||||
<group expand="0" string="Extended options..." groups="base.group_extended">
|
||||
<field name="partner_id"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
|
||||
<field name="stage_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]" />
|
||||
<field name="categ_id" widget="selection" domain="[('object_id.model', '=', 'crm.lead')]"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="company_id" widget="selection" groups="base.group_multi_company"/>
|
||||
@@ -159,6 +160,7 @@
|
||||
<field name="section_id" invisible="1" groups="base.group_extended"/>
|
||||
<field name="user_id" invisible="1"/>
|
||||
<field name="partner_id" invisible="1"/>
|
||||
<field name="country_id" invisible="1"/>
|
||||
<field name="day" invisible="1"/>
|
||||
<field name="state" invisible="1"/>
|
||||
<field name="stage_id" invisible="1"/>
|
||||
|
||||
@@ -26,11 +26,13 @@ class res_partner(osv.osv):
|
||||
_inherit = 'res.partner'
|
||||
_columns = {
|
||||
'opportunity_ids': fields.one2many('crm.lead', 'partner_id',\
|
||||
'Leads and Opportunities'),
|
||||
'Leads and Opportunities'),
|
||||
'meeting_ids': fields.one2many('crm.meeting', 'partner_id',\
|
||||
'Meetings'),
|
||||
'Meetings'),
|
||||
'phonecall_ids': fields.one2many('crm.phonecall', 'partner_id',\
|
||||
'Phonecalls'),
|
||||
'Phonecalls'),
|
||||
'opportunity_assigned_ids': fields.one2many('crm.lead', 'partner_assigned_id',\
|
||||
'Assigned Opportunities'),
|
||||
}
|
||||
res_partner()
|
||||
|
||||
|
||||
@@ -44,6 +44,39 @@
|
||||
icon="gtk-cancel" />
|
||||
</tree>
|
||||
</field>
|
||||
<field name="opportunity_assigned_ids" colspan="4" nolabel="1">
|
||||
<tree string="Assigned Opportunities" colors="blue:state=='pending';grey:state=='cancel')">
|
||||
<field name="create_date"/>
|
||||
<field name="name"/>
|
||||
<field name="type"/>
|
||||
<field name="stage_id"/>
|
||||
<button name="stage_previous" string="Previous"
|
||||
states="open,pending" type="object" icon="gtk-go-back" />
|
||||
<button name="stage_next" string="Next"
|
||||
states="open,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
<field name="section_id"
|
||||
invisible="context.get('invisible_section', True)" />
|
||||
<field name="user_id" />
|
||||
<field name="state" />
|
||||
<button name="case_open" string="Open"
|
||||
states="draft,pending" type="object"
|
||||
icon="gtk-go-forward" />
|
||||
<button name="case_close" string="Close"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-close" />
|
||||
<button string="Convert to Opportunity"
|
||||
name="convert_opportunity"
|
||||
states="draft,open,pending" icon="gtk-index"
|
||||
type="object" />
|
||||
<button name="case_escalate" string="Escalate"
|
||||
states="open,draft,pending" type="object"
|
||||
icon="gtk-go-up" />
|
||||
<button name="case_cancel" string="Cancel"
|
||||
states="draft,open,pending" type="object"
|
||||
icon="gtk-cancel" />
|
||||
</tree>
|
||||
</field>
|
||||
<field name="meeting_ids" colspan="4" nolabel="1" >
|
||||
<tree string="Meetings" colors="gray:state in ('draft', 'cancel','done','pending')">
|
||||
<field name="user_id" string="Responsible"/>
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
import base64
|
||||
import itertools
|
||||
import time
|
||||
|
||||
from osv import osv, fields
|
||||
import tools
|
||||
@@ -218,6 +219,10 @@ class crm_lead_forward_to_partner(osv.osv_memory):
|
||||
|
||||
if result:
|
||||
case_pool.history(cr, uid, [case], _('Forward'), history=True, email=this.email_to, subject=this.subject, details=body, email_from=email_from, attach=attach)
|
||||
to_write = {'date_assign': time.strftime('%Y-%m-%d')}
|
||||
if (this.name == 'partner' and this.partner_id):
|
||||
to_write['partner_assigned_id'] = this.partner_id.id
|
||||
case_pool.write(cr, uid, case.id, to_write)
|
||||
else:
|
||||
raise osv.except_osv(_('Error!'), _('Unable to send mail. Please check SMTP is configured properly.'))
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
<form string="Create a Partner">
|
||||
<field name="action"/>
|
||||
<group attrs="{'invisible':[('action','!=','exist')]}">
|
||||
<field name="partner_id"/>
|
||||
<field name="partner_id" attrs="{'required':[('action','=','exist')]}" />
|
||||
</group>
|
||||
<separator string="" colspan="4" />
|
||||
<group col="4" colspan="4">
|
||||
|
||||
@@ -26,25 +26,18 @@ import base64
|
||||
import tools
|
||||
from crm import crm
|
||||
|
||||
class crm_send_new_email(osv.osv_memory):
|
||||
""" Sends new email for the case"""
|
||||
_name = "crm.send.mail"
|
||||
|
||||
crm_send_new_email()
|
||||
|
||||
class crm_send_new_email_attachment(osv.osv_memory):
|
||||
_name = 'crm.send.mail.attachment'
|
||||
|
||||
_columns = {
|
||||
'binary' : fields.binary('Attachment', required=True),
|
||||
'name' : fields.char('Name', size=128, required=True),
|
||||
|
||||
'wizard_id' : fields.many2one('crm.send.mail', 'Wizard', required=True),
|
||||
}
|
||||
|
||||
crm_send_new_email_attachment()
|
||||
|
||||
class crm_send_new_email2(osv.osv_memory):
|
||||
class crm_send_new_email(osv.osv_memory):
|
||||
""" Sends new email for the case"""
|
||||
_name = "crm.send.mail"
|
||||
_description = "Send new email"
|
||||
@@ -52,12 +45,12 @@ class crm_send_new_email2(osv.osv_memory):
|
||||
_columns = {
|
||||
'email_to' : fields.char('To', size=512, required=True),
|
||||
'email_from' : fields.char('From', size=128, required=True),
|
||||
'reply_to' : fields.char('Reply To', size=128, required=True, help="Reply-to of the Sales team defined on this case"),
|
||||
'email_cc' : fields.char('CC', size=512, help="Carbon Copy: list of recipients that will receive"\
|
||||
" a copy of this mail, and future communication related to this case"),
|
||||
'subject': fields.char('Subject', size=512, required=True),
|
||||
'text': fields.text('Message', required=True),
|
||||
'state': fields.selection(crm.AVAILABLE_STATES, string='Set New State To', required=True),
|
||||
|
||||
'attachment_ids' : fields.one2many('crm.send.mail.attachment', 'wizard_id'),
|
||||
}
|
||||
|
||||
@@ -120,29 +113,28 @@ class crm_send_new_email2(osv.osv_memory):
|
||||
body,
|
||||
email_cc=email_cc,
|
||||
attach=attach,
|
||||
reply_to=case.section_id and case.section_id.reply_to,
|
||||
reply_to=obj.reply_to,
|
||||
openobject_id=str(case.id),
|
||||
x_headers=x_headers
|
||||
)
|
||||
|
||||
if not flag:
|
||||
raise osv.except_osv(_('Error!'), _('Unable to send mail. Please check SMTP is configured properly.'))
|
||||
if flag:
|
||||
case_pool.history(cr, uid, [case], _('Send'), history=True, \
|
||||
email=obj.email_to, details=body, \
|
||||
subject=obj.subject, email_from=email_from, \
|
||||
email_cc=email_cc, message_id=message_id, \
|
||||
references=ref_id or message_id, attach=attach)
|
||||
if obj.state == 'unchanged':
|
||||
pass
|
||||
elif obj.state == 'done':
|
||||
case_pool.case_close(cr, uid, [case.id])
|
||||
elif obj.state == 'draft':
|
||||
case_pool.case_reset(cr, uid, [case.id])
|
||||
elif obj.state in ['cancel', 'open', 'pending']:
|
||||
act = 'case_' + obj.state
|
||||
getattr(case_pool, act)(cr, uid, [case.id])
|
||||
cr.commit()
|
||||
|
||||
case_pool.history(cr, uid, [case], _('Send'), history=True, \
|
||||
email=obj.email_to, details=body, \
|
||||
subject=obj.subject, email_from=email_from, \
|
||||
email_cc=email_cc, message_id=message_id, \
|
||||
references=ref_id or message_id, attach=attach)
|
||||
if obj.state == 'unchanged':
|
||||
pass
|
||||
elif obj.state == 'done':
|
||||
case_pool.case_close(cr, uid, [case.id])
|
||||
elif obj.state == 'draft':
|
||||
case_pool.case_reset(cr, uid, [case.id])
|
||||
elif obj.state in ['cancel', 'open', 'pending']:
|
||||
act = 'case_' + obj.state
|
||||
getattr(case_pool, act)(cr, uid, [case.id])
|
||||
|
||||
return {}
|
||||
|
||||
@@ -156,7 +148,7 @@ class crm_send_new_email2(osv.osv_memory):
|
||||
if not context.get('model'):
|
||||
raise osv.except_osv(_('Error'), _('Can not send mail!'))
|
||||
|
||||
res = super(crm_send_new_email2, self).default_get(cr, uid, fields, context=context)
|
||||
res = super(crm_send_new_email, self).default_get(cr, uid, fields, context=context)
|
||||
|
||||
if context.get('mail') == 'reply':
|
||||
res.update(self.get_reply_defaults(cr, uid, fields, context=context))
|
||||
@@ -171,9 +163,11 @@ class crm_send_new_email2(osv.osv_memory):
|
||||
|
||||
for case in mod_obj.browse(cr, uid, res_id):
|
||||
if 'email_to' in fields:
|
||||
res.update({'email_to': tools.ustr(case.email_from)})
|
||||
res.update({'email_to': case.email_from and tools.ustr(case.email_from) or ''})
|
||||
if 'email_from' in fields:
|
||||
res.update({'email_from': tools.ustr(user_mail_from)})
|
||||
res.update({'email_from': user_mail_from and tools.ustr(user_mail_from) or ''})
|
||||
if 'reply_to' in fields:
|
||||
res.update({'reply_to': case.section_id.reply_to})
|
||||
if 'subject' in fields:
|
||||
res.update({'subject': tools.ustr(context.get('subject', case.name) or '')})
|
||||
if 'email_cc' in fields:
|
||||
@@ -249,5 +243,5 @@ class crm_send_new_email2(osv.osv_memory):
|
||||
raise osv.except_osv(_('Error'), _('Can not send mail!'))
|
||||
return True
|
||||
|
||||
crm_send_new_email2()
|
||||
crm_send_new_email()
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
<form string="Send New Mail" col="4">
|
||||
<group colspan="4" col="2">
|
||||
<field name="email_from"/>
|
||||
<field name="reply_to"/>
|
||||
<field name="email_to" />
|
||||
<field name="email_cc"/>
|
||||
<field name="subject"/>
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<?xml version="1.0"?>
|
||||
<openerp>
|
||||
<data noupdate="1">
|
||||
<data noupdate="1">
|
||||
|
||||
<!-- Event Attribute mapping for Calendar-->
|
||||
|
||||
@@ -22,13 +22,20 @@
|
||||
<field name="calendar_id" ref="caldav.basic_calendar1" />
|
||||
<field name="object_id" search="[('model','=','calendar.alarm')]" />
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.lines" id="base_calendar.calendar_lines_attendee">
|
||||
<field name="name">attendee</field>
|
||||
<field name="calendar_id" ref="caldav.basic_calendar1" />
|
||||
<field name="object_id" search="[('model','=','calendar.attendee')]" />
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_0">
|
||||
<field name="name" ref="caldav.field_event_organizer"/>
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
<field name="field_id" search="[('name','=','organizer_id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_1">
|
||||
<field name="name" ref="caldav.field_event_uid"/>
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
@@ -42,7 +49,7 @@
|
||||
<field name="field_id" search="[('name','=','recurrent_id'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_3">
|
||||
<field name="name" ref="caldav.field_event_vtimezone"/>
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
@@ -55,7 +62,7 @@
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
<field name="field_id" search="[('name','=','attendee_ids'),('model_id.model','=','crm.meeting')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
<record model="basic.calendar.fields" id="map_event_5">
|
||||
<field name="name" ref="caldav.field_event_rrule"/>
|
||||
@@ -154,7 +161,7 @@
|
||||
<field name="type_id" ref="base_calendar.calendar_lines_event" />
|
||||
<field name="field_id" search="[('name','=','name'),('model_id.model','=','calendar.event')]" />
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
@@ -313,7 +320,7 @@
|
||||
<field name="fn">field</field>
|
||||
</record>
|
||||
|
||||
|
||||
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -79,9 +79,7 @@ class crm_claim(osv.osv, crm.crm_case):
|
||||
'partner_name': fields.char("Employee's Name", size=64),
|
||||
'partner_mobile': fields.char('Mobile', size=32),
|
||||
'partner_phone': fields.char('Phone', size=32),
|
||||
'stage_id': fields.many2one ('crm.case.stage', 'Stage', \
|
||||
domain="[('section_id','=',section_id),\
|
||||
('object_id.model', '=', 'crm.claim')]"),
|
||||
'stage_id': fields.many2one ('crm.case.stage', 'Stage'),
|
||||
'probability': fields.float('Probability (%)'),
|
||||
'state': fields.selection(crm.AVAILABLE_STATES, 'State', size=16, readonly=True,
|
||||
help='The state is set to \'Draft\', when a case is created.\
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
</record>
|
||||
|
||||
<menuitem action="crm_claim_resource_act" name="Resource Type"
|
||||
id="menu_crm_claim_stage_act"
|
||||
id="menu_crm_claim_type_act"
|
||||
parent="menu_config_claim" />
|
||||
|
||||
<!-- Claims -->
|
||||
@@ -125,7 +125,9 @@
|
||||
<field name="section_id" widget="selection"/>
|
||||
<label string="Stage: " align="1.0"/>
|
||||
<group colspan="1" col="3">
|
||||
<field name="stage_id" select="1" nolabel="1"/>
|
||||
<field name="stage_id" nolabel="1"
|
||||
on_change="onchange_stage_id(stage_id)"
|
||||
domain="[('section_id','=',section_id), ('object_id.model', '=', 'crm.claim')]" />
|
||||
<button name="stage_previous" string="" type="object" icon="gtk-go-back" />
|
||||
<button icon="gtk-go-forward" string="" name="stage_next" type="object"/>
|
||||
</group>
|
||||
|
||||
@@ -211,7 +211,7 @@
|
||||
<field name="act_window_id" ref="action_report_crm_claim"/>
|
||||
</record>
|
||||
|
||||
<menuitem name="Claims" id="menu_report_crm_claim_tree"
|
||||
<menuitem name="Claims Analysis" id="menu_report_crm_claim_tree"
|
||||
groups="base.group_extended"
|
||||
action="action_report_crm_claim" parent="base.next_id_64" sequence="6"/>
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@
|
||||
<field name="act_window_id" ref="action_report_crm_fundraising"/>
|
||||
</record>
|
||||
|
||||
<menuitem name="Fundraising"
|
||||
<menuitem name="Fundraising Analysis"
|
||||
action="action_report_crm_fundraising"
|
||||
groups="base.group_extended"
|
||||
id="menu_report_crm_fundraising_tree" parent="base.next_id_64" sequence="20"/>
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
<field name="act_window_id" ref="action_report_crm_helpdesk"/>
|
||||
</record>
|
||||
|
||||
<menuitem name="Helpdesk" action="action_report_crm_helpdesk"
|
||||
<menuitem name="Helpdesk Analysis" action="action_report_crm_helpdesk"
|
||||
groups="base.group_extended"
|
||||
id="menu_report_crm_helpdesks_tree" parent="base.next_id_64" sequence="7"/>
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@
|
||||
'security/document_security.xml',
|
||||
'document_view.xml',
|
||||
'document_data.xml',
|
||||
'wizard/document_configuration_view.xml',
|
||||
# 'wizard/document_configuration_view.xml',
|
||||
'security/ir.model.access.csv',
|
||||
'report/document_report_view.xml',
|
||||
'board_document_view.xml',
|
||||
|
||||
@@ -45,8 +45,9 @@
|
||||
-
|
||||
Attach a pdf file in "My document"
|
||||
-
|
||||
!python {model: ir.attachment}: |
|
||||
!python {model: 'ir.attachment'}: |
|
||||
import tools
|
||||
import base64
|
||||
file = open(tools.config['addons_path'] + '/document/test/partner.pdf')
|
||||
id = self.write(cr, uid, [ref("document_1")], {'datas' : base64.encodestring(file.read())}, context)
|
||||
pdf_file = open(tools.config['addons_path'] + '/document/test/partner.pdf')
|
||||
self.write(cr, uid, [ref("document_1")], {'datas_fname': 'partner.pdf', 'datas' : base64.encodestring(pdf_file.read())}, context)
|
||||
|
||||
|
||||
@@ -62,6 +62,7 @@ import email_template_engines
|
||||
import tools
|
||||
import report
|
||||
import pooler
|
||||
import logging
|
||||
|
||||
def get_value(cursor, user, recid, message=None, template=None, context=None):
|
||||
"""
|
||||
@@ -99,6 +100,7 @@ def get_value(cursor, user, recid, message=None, template=None, context=None):
|
||||
reply = templ.render(Context(env))
|
||||
return reply or False
|
||||
except Exception:
|
||||
logging.exception("can't render %r", message)
|
||||
return u""
|
||||
else:
|
||||
return message
|
||||
@@ -543,7 +545,7 @@ class email_template(osv.osv):
|
||||
if lang:
|
||||
ctx = context.copy()
|
||||
ctx.update({'lang':lang})
|
||||
template = self.browse(cursor, user, template_id, context=ctx)
|
||||
template = self.browse(cursor, user, template.id, context=ctx)
|
||||
mailbox_values = {
|
||||
'email_from': tools.ustr(from_account['name']) + \
|
||||
"<" + tools.ustr(from_account['email_id']) + ">",
|
||||
@@ -641,7 +643,7 @@ class email_template(osv.osv):
|
||||
context=context
|
||||
)
|
||||
if template.report_template:
|
||||
self._generate_attach_reports(
|
||||
self.generate_attach_reports(
|
||||
cursor,
|
||||
user,
|
||||
template,
|
||||
|
||||
@@ -118,8 +118,8 @@ class email_template_send_wizard(osv.osv_memory):
|
||||
'full_success': lambda *a: False
|
||||
}
|
||||
|
||||
def fields_get(self, cr, uid, fields=None, context=None, read_access=True):
|
||||
result = super(email_template_send_wizard, self).fields_get(cr, uid, fields, context, read_access)
|
||||
def fields_get(self, cr, uid, fields=None, context=None, write_access=True):
|
||||
result = super(email_template_send_wizard, self).fields_get(cr, uid, fields, context, write_access)
|
||||
if 'attachment_ids' in result and 'src_model' in context:
|
||||
result['attachment_ids']['domain'] = [('res_model','=',context['src_model']),('res_id','=',context['active_id'])]
|
||||
return result
|
||||
|
||||
+105
-39
@@ -53,7 +53,7 @@ class event_event(osv.osv):
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
""" Copy record of Given id
|
||||
@param id: Id of Event Registration type record.
|
||||
@param id: Id of Event record.
|
||||
@param context: A standard dictionary for contextual values
|
||||
"""
|
||||
if not default:
|
||||
@@ -65,7 +65,13 @@ class event_event(osv.osv):
|
||||
return super(event_event, self).copy(cr, uid, id, default=default, context=context)
|
||||
|
||||
def onchange_product(self, cr, uid, ids, product_id):
|
||||
|
||||
"""This function returns value of product's unit price based on product id.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param product_id: Product's id
|
||||
"""
|
||||
if not product_id:
|
||||
return {'value': {'unit_price': False}}
|
||||
else:
|
||||
@@ -82,6 +88,13 @@ class event_event(osv.osv):
|
||||
return self.write(cr, uid, ids, {'state': 'done'}, context=context)
|
||||
|
||||
def button_confirm(self, cr, uid, ids, context=None):
|
||||
"""This Funtion send reminder who had already confirmed their event registration.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Event IDs
|
||||
@param return: True
|
||||
"""
|
||||
register_pool = self.pool.get('event.registration')
|
||||
for event in self.browse(cr, uid, ids, context=context):
|
||||
if event.mail_auto_confirm:
|
||||
@@ -95,14 +108,12 @@ class event_event(osv.osv):
|
||||
|
||||
|
||||
def _get_register(self, cr, uid, ids, fields, args, context=None):
|
||||
"""
|
||||
Get Confirm or uncofirm register value.
|
||||
"""Get Confirm or uncofirm register value.
|
||||
@param ids: List of Event registration type's id
|
||||
@param fields: List of function fields(register_current and register_prospect).
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: Dictionary of function fields value.
|
||||
"""
|
||||
|
||||
register_pool = self.pool.get('event.registration')
|
||||
res = {}
|
||||
for event in self.browse(cr, uid, ids, context):
|
||||
@@ -116,7 +127,7 @@ class event_event(osv.osv):
|
||||
state.append('draft')
|
||||
|
||||
reg_ids = register_pool.search(cr, uid, [
|
||||
('event_id', '=', event.id),
|
||||
('event_id', '=', event.id),
|
||||
('state', 'in', state)])
|
||||
|
||||
if 'register_current' in fields:
|
||||
@@ -157,7 +168,6 @@ class event_event(osv.osv):
|
||||
register_pool.write(cr, uid, reg_ids, register_values)
|
||||
return res
|
||||
|
||||
|
||||
_columns = {
|
||||
'type': fields.many2one('event.type', 'Type', help="Type of Event like Seminar, Exhibition, Conference, Training."),
|
||||
'register_max': fields.integer('Maximum Registrations', help="Provide Maximun Number of Registrations"),
|
||||
@@ -183,7 +193,6 @@ class event_event(osv.osv):
|
||||
'country_id': fields.related('address_id', 'country_id',
|
||||
type='many2one', relation='res.country', string='Country'),
|
||||
'language': fields.char('Language',size=64),
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -218,7 +227,7 @@ and users by email"),
|
||||
"badge_partner": fields.char('Badge Partner', size=128),
|
||||
"event_product": fields.char("Product Name", size=128, required=True),
|
||||
"tobe_invoiced": fields.boolean("To be Invoiced"),
|
||||
"invoice_id": fields.many2one("account.invoice", "Invoice"),
|
||||
"invoice_id": fields.many2one("account.invoice", "Invoice", readonly=True),
|
||||
'date_closed': fields.datetime('Closed', readonly=True),
|
||||
'ref': fields.reference('Reference', selection=crm._links_get, size=128),
|
||||
'ref2': fields.reference('Reference 2', selection=crm._links_get, size=128),
|
||||
@@ -235,8 +244,8 @@ and users by email"),
|
||||
|
||||
def _make_invoice(self, cr, uid, reg, lines, context=None):
|
||||
""" Create Invoice from Invoice lines
|
||||
@param reg : Object of event.registration
|
||||
@param lines: ids of Invoice lines
|
||||
@param reg : Model of Event Registration
|
||||
@param lines: Ids of Invoice lines
|
||||
"""
|
||||
if context is None:
|
||||
context = {}
|
||||
@@ -325,11 +334,10 @@ and users by email"),
|
||||
return new_invoice_ids
|
||||
|
||||
def check_confirm(self, cr, uid, ids, context=None):
|
||||
"""
|
||||
Check confirm event register on given id.
|
||||
"""This Function Open Event Registration and send email to user.
|
||||
@param ids: List of Event registration's IDs
|
||||
@param context: A standard dictionary for contextual values
|
||||
@return: Dictionary value which open Confirm registration form.
|
||||
@return: True
|
||||
"""
|
||||
data_pool = self.pool.get('ir.model.data')
|
||||
unconfirmed_ids = []
|
||||
@@ -360,13 +368,17 @@ and users by email"),
|
||||
}
|
||||
return True
|
||||
|
||||
def button_reg_close(self, cr, uid, ids, *args):
|
||||
def button_reg_close(self, cr, uid, ids, *args):
|
||||
"""This Function Close Event Registration.
|
||||
"""
|
||||
registrations = self.browse(cr, uid, ids)
|
||||
self._history(cr, uid, registrations, _('Done'))
|
||||
self.write(cr, uid, ids, {'state': 'done', 'date_closed': time.strftime('%Y-%m-%d %H:%M:%S')})
|
||||
return True
|
||||
|
||||
def button_reg_cancel(self, cr, uid, ids, *args):
|
||||
def button_reg_cancel(self, cr, uid, ids, *args):
|
||||
"""This Function Cancel Event Registration.
|
||||
"""
|
||||
registrations = self.browse(cr, uid, ids)
|
||||
self._history(cr, uid, registrations, _('Cancel'))
|
||||
self.write(cr, uid, ids, {'state': 'cancel'})
|
||||
@@ -375,8 +387,8 @@ and users by email"),
|
||||
def create(self, cr, uid, values, context=None):
|
||||
""" Overrides orm create method.
|
||||
"""
|
||||
event = self.pool.get('event.event').browse(cr, uid, values['event_id'], context=context)
|
||||
|
||||
event_obj = self.pool.get('event.event')
|
||||
event = event_obj.browse(cr, uid, values['event_id'], context=context)
|
||||
values['date_deadline']= event.date_begin
|
||||
values['description']= event.mail_confirm
|
||||
values['currency_id'] = event.currency_id.id
|
||||
@@ -385,9 +397,12 @@ and users by email"),
|
||||
self._history(cr, uid, registrations, _('Created'))
|
||||
return res
|
||||
|
||||
def write(self, cr, uid, ids, values, context=None):
|
||||
def write(self, cr, uid, ids, values, context=None):
|
||||
""" Overrides orm write method.
|
||||
"""
|
||||
event_obj = self.pool.get('event.event')
|
||||
if 'event_id' in values:
|
||||
event = self.pool.get('event.event').browse(cr, uid, values['event_id'], context=context)
|
||||
event = event_obj.browse(cr, uid, values['event_id'], context=context)
|
||||
values['date_deadline']= event.date_begin
|
||||
values['description']= event.mail_confirm
|
||||
return super(event_registration, self).write(cr, uid, ids, values, context=context)
|
||||
@@ -439,6 +454,13 @@ and users by email"),
|
||||
return self.pool.get('account.invoice.line').create(cr, uid, vals)
|
||||
|
||||
def onchange_badge_name(self, cr, uid, ids, badge_name):
|
||||
"""This function returns value of Registration Name based on Partner Badge Name.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param badge_name: Badge Name
|
||||
"""
|
||||
|
||||
data ={}
|
||||
if not badge_name:
|
||||
@@ -448,44 +470,77 @@ and users by email"),
|
||||
|
||||
def onchange_contact_id(self, cr, uid, ids, contact, partner):
|
||||
|
||||
"""This function returns value of Badge Name , Badge Title based on Partner contact.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param contact: Patner Contact IDS
|
||||
@param partner: Partner IDS
|
||||
"""
|
||||
data ={}
|
||||
if not contact:
|
||||
return data
|
||||
|
||||
contact_id = self.pool.get('res.partner.contact').browse(cr, uid, contact)
|
||||
contact_obj = self.pool.get('res.partner.contact')
|
||||
addr_obj = self.pool.get('res.partner.address')
|
||||
job_obj = self.pool.get('res.partner.job')
|
||||
|
||||
contact_id = contact_obj.browse(cr, uid, contact)
|
||||
data['badge_name'] = contact_id.name
|
||||
data['badge_title'] = contact_id.title.name
|
||||
if partner:
|
||||
partner_addresses = self.pool.get('res.partner.address').search(cr, uid, [('partner_id', '=', partner)])
|
||||
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('contact_id', '=', contact), ('address_id', 'in', partner_addresses)])
|
||||
partner_addresses = addr_obj.search(cr, uid, [('partner_id', '=', partner)])
|
||||
job_ids = job_obj.search(cr, uid, [('contact_id', '=', contact), ('address_id', 'in', partner_addresses)])
|
||||
if job_ids:
|
||||
data['email_from'] = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0]).email
|
||||
data['email_from'] = job_obj.browse(cr, uid, job_ids[0]).email
|
||||
d = self.onchange_badge_name(cr, uid, ids, data['badge_name'])
|
||||
data.update(d['value'])
|
||||
return {'value': data}
|
||||
|
||||
def onchange_event(self, cr, uid, ids, event_id, partner_invoice_id):
|
||||
"""This function returns value of Product Name, Unit Price based on Event.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param event_id: Event ID
|
||||
@param partner_invoice_id: Partner Invoice ID
|
||||
"""
|
||||
context={}
|
||||
if not event_id:
|
||||
return {'value': {'unit_price': False, 'event_product': False}}
|
||||
data_event = self.pool.get('event.event').browse(cr, uid, event_id)
|
||||
|
||||
event_obj = self.pool.get('event.event')
|
||||
prod_obj = self.pool.get('product.product')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
|
||||
data_event = event_obj.browse(cr, uid, event_id)
|
||||
context['currency_id'] = data_event.currency_id.id
|
||||
if data_event.user_id.id:
|
||||
return {'value': {'user_id':data_event.user_id.id}}
|
||||
|
||||
if data_event.product_id:
|
||||
if not partner_invoice_id:
|
||||
unit_price=self.pool.get('product.product').price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
unit_price=prod_obj.price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
return {'value': {'unit_price': unit_price, 'event_product': data_event.product_id.name, 'currency_id': data_event.currency_id.id}}
|
||||
data_partner = self.pool.get('res.partner').browse(cr, uid, partner_invoice_id)
|
||||
data_partner = res_obj.browse(cr, uid, partner_invoice_id)
|
||||
context.update({'partner_id': data_partner})
|
||||
unit_price = self.pool.get('product.product')._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
unit_price = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
return {'value': {'unit_price': unit_price, 'event_product': data_event.product_id.name, 'currency_id': data_event.currency_id.id}}
|
||||
|
||||
return {'value': {'unit_price': False, 'event_product': False}}
|
||||
|
||||
def onchange_partner_id(self, cr, uid, ids, part, event_id, email=False):
|
||||
"""This function returns value of Patner Invoice id, Unit Price, badget title based on partner and Event.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param event_id: Event ID
|
||||
@param partner_invoice_id: Partner Invoice ID
|
||||
"""
|
||||
job_obj = self.pool.get('res.partner.job')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
|
||||
data={}
|
||||
data['badge_partner'] = data['contact_id'] = data['partner_invoice_id'] = data['email_from'] = data['badge_title'] = data['badge_name'] = False
|
||||
@@ -496,35 +551,46 @@ and users by email"),
|
||||
d = self.onchange_partner_invoice_id(cr, uid, ids, event_id, part)
|
||||
# this updates the dictionary
|
||||
data.update(d['value'])
|
||||
addr = self.pool.get('res.partner').address_get(cr, uid, [part])
|
||||
addr = res_obj.address_get(cr, uid, [part])
|
||||
if addr:
|
||||
if addr.has_key('default'):
|
||||
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
job_ids = job_obj.search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
if job_ids:
|
||||
data['contact_id'] = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0]).contact_id.id
|
||||
data['contact_id'] = job_obj.browse(cr, uid, job_ids[0]).contact_id.id
|
||||
d = self.onchange_contact_id(cr, uid, ids, data['contact_id'], part)
|
||||
data.update(d['value'])
|
||||
partner_data = self.pool.get('res.partner').browse(cr, uid, part)
|
||||
partner_data = res_obj.browse(cr, uid, part)
|
||||
data['badge_partner'] = partner_data.name
|
||||
|
||||
return {'value': data}
|
||||
|
||||
def onchange_partner_invoice_id(self, cr, uid, ids, event_id, partner_invoice_id):
|
||||
|
||||
"""This function returns value of Product unit Price based on Invoiced partner.
|
||||
@param self: The object pointer
|
||||
@param cr: the current row, from the database cursor,
|
||||
@param uid: the current user’s ID for security checks,
|
||||
@param ids: List of Registration IDs
|
||||
@param event_id: Event ID
|
||||
@param partner_invoice_id: Partner Invoice ID
|
||||
"""
|
||||
data={}
|
||||
context={}
|
||||
event_obj = self.pool.get('event.event')
|
||||
prod_obj = self.pool.get('product.product')
|
||||
res_obj = self.pool.get('res.partner')
|
||||
|
||||
data['unit_price']=False
|
||||
if not event_id:
|
||||
return {'value': data}
|
||||
data_event = self.pool.get('event.event').browse(cr, uid, event_id)
|
||||
|
||||
data_event = event_obj.browse(cr, uid, event_id)
|
||||
if data_event.product_id:
|
||||
data['event_product']=data_event.product_id.name
|
||||
if not partner_invoice_id:
|
||||
data['unit_price']=self.pool.get('product.product').price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
data['unit_price']=prod_obj.price_get(cr, uid, [data_event.product_id.id], context=context)[data_event.product_id.id]
|
||||
return {'value': data}
|
||||
data_partner = self.pool.get('res.partner').browse(cr, uid, partner_invoice_id)
|
||||
data_partner = res_obj.browse(cr, uid, partner_invoice_id)
|
||||
context.update({'partner_id': data_partner})
|
||||
data['unit_price'] = self.pool.get('product.product')._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
data['unit_price'] = prod_obj._product_price(cr, uid, [data_event.product_id.id], False, False, {'pricelist': data_partner.property_product_pricelist.id})[data_event.product_id.id]
|
||||
return {'value': data}
|
||||
return {'value': data}
|
||||
|
||||
|
||||
+30
-25
@@ -3,8 +3,8 @@
|
||||
<data>
|
||||
<menuitem name="Marketing" id="menu_marketing_event_main" icon="terp-calendar" sequence="9"/>
|
||||
<menuitem name="Events Organisation" id="menu_event_main" parent="menu_marketing_event_main" />
|
||||
|
||||
<!-- EVENTS -->
|
||||
<!--<menuitem name="Events Organisation" id="menu_event_main" icon="terp-calendar" />-->
|
||||
|
||||
<!-- EVENTS/CONFIGURATION/TYPE OF EVENTS -->
|
||||
<record model="ir.ui.view" id="view_event_type_form">
|
||||
@@ -36,7 +36,6 @@
|
||||
<menuitem name="Configuration" id="menu_event_config" parent="menu_marketing_event_main" sequence="30" groups="base.group_extended"/>
|
||||
<menuitem name="Types of Events" id="menu_event_type" action="action_event_type" parent="menu_event_config" groups="base.group_extended,crm.group_crm_manager"/>
|
||||
|
||||
|
||||
<!-- Events Organisation/CONFIGURATION/EVENTS -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_form">
|
||||
@@ -54,23 +53,23 @@
|
||||
<field name="product_id" on_change="onchange_product(product_id)"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="General">
|
||||
<page string="Event Information">
|
||||
<separator string="Description" colspan="4"/>
|
||||
<field name="unit_price"/>
|
||||
<field name="currency_id"/>
|
||||
<separator string="Speaker Information" colspan="4"/>
|
||||
<field name="main_speaker_id" domain="[('speaker','=',True)]"/>
|
||||
<field name="address_id"/>
|
||||
<field name="speaker_ids" domain="[('speaker','=',True)]" colspan="4"/>
|
||||
<field name="country_id" />
|
||||
<field name="speaker_confirmed"/>
|
||||
<field name="language"/>
|
||||
<separator string="Event description" colspan="4"/>
|
||||
<field name="parent_id" domain="[('parent_id','child_of','Event')]"/>
|
||||
<field name="active"/>
|
||||
<field name="register_min"/>
|
||||
<field name="register_max"/>
|
||||
<separator string="Notes" colspan="4"/>
|
||||
<!--field name="note" colspan="4" nolabel="1"/-->
|
||||
<field name="parent_id" domain="[('parent_id','child_of','Event')]"/>
|
||||
<field name="active"/>
|
||||
<separator string="Location" colspan="4"/>
|
||||
<field name="country_id" />
|
||||
<field name="language"/>
|
||||
<field name="address_id"/>
|
||||
<separator string="Speaker Information" colspan="4"/>
|
||||
<field name="main_speaker_id" domain="[('speaker','=',True)]"/>
|
||||
<field name="speaker_confirmed"/>
|
||||
<field name="speaker_ids" domain="[('speaker','=',True)]" colspan="4"/>
|
||||
<newline/>
|
||||
<field name="state" select="1"/>
|
||||
<group col="4" colspan="2">
|
||||
<button string="Confirm Event" name="button_confirm" states="draft" type="object" icon="gtk-apply"/>
|
||||
@@ -113,7 +112,7 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- event.event tree view -->
|
||||
<!-- Event tree view -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_tree">
|
||||
<field name="name">event.event.tree</field>
|
||||
@@ -134,6 +133,8 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Events Calendar View -->
|
||||
|
||||
<record id="view_event_calendar" model="ir.ui.view">
|
||||
<field name="name">event.event.calendar</field>
|
||||
<field name="model">event.event</field>
|
||||
@@ -142,12 +143,12 @@
|
||||
<field name="arch" type="xml">
|
||||
<calendar color="user_id" date_start="date_begin" string="Event Organization">
|
||||
<field name="name"/>
|
||||
<field name="partner_id"/>
|
||||
<field name="type" widget="selection"/>
|
||||
</calendar>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Event Graph view -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_graph">
|
||||
<field name="name">Event Graph</field>
|
||||
@@ -162,6 +163,8 @@
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Event Search View -->
|
||||
|
||||
<record model="ir.ui.view" id="view_event_search">
|
||||
<field name="name">Events</field>
|
||||
<field name="model">event.event</field>
|
||||
@@ -169,8 +172,8 @@
|
||||
<field name="arch" type="xml">
|
||||
<search string="Events">
|
||||
<group col="10" colspan="4">
|
||||
<filter icon="terp-document-new" string="Draft" name="draft" domain="[('state','=','draft')]" help="Draft Events"/>
|
||||
<filter icon="terp-camera_test" string="Confirmed" domain="[('state','=','confirm')]" help="Confirmed Events"/>
|
||||
<filter icon="terp-check" string="Current" name="draft" domain="[('state','in',('draft', 'confirm'))]" help="Current Events"/>
|
||||
<filter icon="terp-camera_test" string="Open" domain="[('state','=','confirm')]" help="Open Events"/>
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name" string="Event" select="1"/>
|
||||
<field name="state" select="1"/>
|
||||
@@ -294,15 +297,17 @@
|
||||
</page>
|
||||
<page string="Emails" groups="base.group_extended">
|
||||
<group colspan="4">
|
||||
<field colspan="4" name="email_cc" string="CC"/>
|
||||
<field colspan="4" name="email_cc" string="CC" widget="char" size="512"/>
|
||||
</group>
|
||||
<field name="message_ids" colspan="4" nolabel="1" mode="form,tree">
|
||||
<form string="Communication history">
|
||||
<group col="6" colspan="4">
|
||||
<field name="date"/>
|
||||
<field name="email_to"/>
|
||||
<field name="email_from"/>
|
||||
</group>
|
||||
<group col="4" colspan="4">
|
||||
<field name="email_from"/>
|
||||
<field name="date"/>
|
||||
<field name="email_to" widget="char" size="512"/>
|
||||
<field name="email_cc" widget="char" size="512"/>
|
||||
<field name="name" colspan="4" widget="char" size="512"/>
|
||||
</group>
|
||||
<notebook colspan="4">
|
||||
<page string="Details">
|
||||
<field name="description" colspan="4" nolabel="1"/>
|
||||
|
||||
@@ -51,7 +51,7 @@
|
||||
property_account_receivable: account.a_recv
|
||||
|
||||
- |
|
||||
we create it with a "Conference on OpenERP Offshore Business" event and provide "Beginning date", "Ending Date", "Product" as Concert Ticket.
|
||||
we create it with a "Conference on OpenERP Offshore Business" event and provide "Beginning date", "Ending Date" and "Product" as Concert Ticket.
|
||||
-
|
||||
!record {model: event.event, id: event_event_conference0}:
|
||||
code: C/004
|
||||
@@ -64,9 +64,9 @@
|
||||
state: draft
|
||||
type: 'event_type_conference0'
|
||||
reply_to: 'info@customer.com'
|
||||
|
||||
|
||||
- |
|
||||
we set the limit of registrations to this event using "Minimum Registrations" 2 and "Maximum Registrations" 10
|
||||
we set the limit of registrations to this event using "Minimum Registrations" 2 and "Maximum Registrations" 10.
|
||||
-
|
||||
!python {model: event.event}: |
|
||||
self.write(cr, uid, [ref('event_event_conference0')], {'register_max': 10, 'register_min': 2})
|
||||
@@ -96,7 +96,6 @@
|
||||
!record {model: event.registration, id: event_registration_registrationjacot0}:
|
||||
badge_name: Jacot
|
||||
badge_partner: Mark Johnson
|
||||
badge_title: M.
|
||||
contact_id: base_contact.res_partner_contact_jacot0
|
||||
date_deadline: '2010-06-07 13:39:00'
|
||||
event_id: event.event_event_conference0
|
||||
@@ -110,11 +109,13 @@
|
||||
if not then confirmation will fail because its greater then the Maximum registration.
|
||||
-
|
||||
!python {model: event.event}: |
|
||||
from tools.translate import _
|
||||
obj_register = self.pool.get('event.registration')
|
||||
event_id1 = self.browse(cr, uid, [ref('event_event_conference0')])[0]
|
||||
event_id1 = self.browse(cr, uid, ref('event_event_conference0'))
|
||||
register_ids = obj_register.search(cr, uid, [('event_id', '=', event_id1.id)])
|
||||
register_id = obj_register.browse(cr, uid, register_ids)[0]
|
||||
assert register_id.nb_register <= event_id1.register_max
|
||||
assert register_id.nb_register <= event_id1.register_max, _('NO. of Registration for this event is More than Maximum Registration Defined !')
|
||||
|
||||
|
||||
- |
|
||||
And Confirm that Registration by click on "Confirm Registration" button of Registraion form.
|
||||
@@ -150,7 +151,6 @@
|
||||
!record {model: event.registration, id: event_registration_registrationpassot0}:
|
||||
badge_name: Passot
|
||||
badge_partner: Mediapole SPRL
|
||||
badge_title: M.
|
||||
contact_id: base_contact.res_partner_contact_passot0
|
||||
date_deadline: '2010-06-07 13:39:00'
|
||||
email_from: info@mediapole.net
|
||||
@@ -170,10 +170,10 @@
|
||||
I Check that the total number of confirmed is 2 and unconfirmed registrations 1.
|
||||
-
|
||||
!python {model: event.event}: |
|
||||
obj_event = self.browse(cr, uid, [ref('event_event_conference0')])[0]
|
||||
assert obj_event.register_current == '2'
|
||||
assert obj_event.register_prospect == '1'
|
||||
|
||||
from tools.translate import _
|
||||
obj_event = self.browse(cr, uid, ref('event_event_conference0'))
|
||||
assert obj_event.register_current == 2, "Number of Confirmed Registration for this event is %s"%(obj_event.register_current)
|
||||
assert obj_event.register_prospect == 1, "Number of Unconfirmed Registration for this event is %s" %(obj_event.register_prospect)
|
||||
- |
|
||||
This event is finished by click on "Event Done" button of this event form.
|
||||
-
|
||||
@@ -186,8 +186,7 @@
|
||||
!assert {model: event.registration, id: event_registration_registrationjacot0}:
|
||||
- state == 'open'
|
||||
- |
|
||||
Now, I will invoice the participant who have address using "Make Invoices". This wizard will also give the number of invoices are created and rejected.
|
||||
Create invoice will be linked to Invoice Field available on Payments tab of registrations
|
||||
Now, I will invoice the participant who have address using "Make Invoices".Create invoice will be linked to Invoice Field available on Payments tab of registrations.
|
||||
|
||||
-
|
||||
!record {model: event.make.invoice, id: event_make_invoice_0}:
|
||||
@@ -198,19 +197,9 @@
|
||||
!python {model: event.make.invoice}: |
|
||||
self.make_invoice(cr, uid, [ref("event_make_invoice_0")], {"active_ids": [ref("event_registration_registrationzen0")]})
|
||||
- |
|
||||
I check that Invoice for this partner is create or not.
|
||||
I check that Invoice for this partner is created or not.
|
||||
-
|
||||
!python {model: event.registration}: |
|
||||
obj_event_reg = self.pool.get('event.registration')
|
||||
obj_lines = self.pool.get('account.invoice.line')
|
||||
inv_obj = self.pool.get('account.invoice')
|
||||
data_event_reg = obj_event_reg.browse(cr, uid, [ref('event_registration_registrationzen0')], context=context)[0]
|
||||
invoice_ids = inv_obj.search(cr, uid, [('partner_id', '=', data_event_reg.partner_invoice_id.id)])
|
||||
|
||||
if invoice_ids:
|
||||
invoice_id = inv_obj.browse(cr, uid, invoice_ids)[0]
|
||||
line_ids = obj_lines.search(cr, uid, [('product_id', '=', data_event_reg.event_id.product_id.id), ('invoice_id', '=', invoice_id.id), ('price_unit', '=', data_event_reg.unit_price)])
|
||||
line_id = obj_lines.browse(cr, uid, line_ids)[0]
|
||||
assert line_id.product_id == data_event_reg.event_id.product_id
|
||||
assert data_event_reg.partner_id == invoice_id.partner_id
|
||||
assert invoice_id.address_invoice_id == data_event_reg.partner_address_id
|
||||
from tools.translate import _
|
||||
data_event_reg = self.browse(cr, uid, ref('event_registration_registrationzen0'), context=context)
|
||||
assert data_event_reg.invoice_id, _("Invoices has not been generated for this partner")
|
||||
|
||||
@@ -47,23 +47,29 @@ class partner_event_registration(osv.osv_memory):
|
||||
}
|
||||
|
||||
def open_registration(self, cr, uid, ids, context=None):
|
||||
"""This Function Open Registration For Given Event id and Partner.
|
||||
|
||||
"""
|
||||
|
||||
value = {}
|
||||
res_obj = self.pool.get('res.partner')
|
||||
job_obj = self.pool.get('res.partner.job')
|
||||
event_obj = self.pool.get('event.event')
|
||||
reg_obj = self.pool.get('event.registration')
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
|
||||
record_ids = context and context.get('active_ids', []) or []
|
||||
addr = res_obj.address_get(cr, uid, record_ids)
|
||||
contact_id = False
|
||||
email = False
|
||||
if addr.has_key('default'):
|
||||
job_ids = self.pool.get('res.partner.job').search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
job_ids = job_obj.search(cr, uid, [('address_id', '=', addr['default'])])
|
||||
if job_ids:
|
||||
contact = self.pool.get('res.partner.job').browse(cr, uid, job_ids[0])
|
||||
contact = job_obj.browse(cr, uid, job_ids[0])
|
||||
if contact:
|
||||
contact_id = contact.contact_id.id
|
||||
email = contact.email
|
||||
|
||||
event_obj = self.pool.get('event.event')
|
||||
reg_obj = self.pool.get('event.registration')
|
||||
mod_obj = self.pool.get('ir.model.data')
|
||||
|
||||
result = mod_obj._get_id(cr, uid, 'event', 'view_registration_search')
|
||||
res = mod_obj.read(cr, uid, result, ['res_id'])
|
||||
|
||||
@@ -123,10 +129,11 @@ class partner_event_registration(osv.osv_memory):
|
||||
return res
|
||||
|
||||
def onchange_event_id(self, cr, uid, ids, event_id, context={}):
|
||||
res = {}
|
||||
res = {}
|
||||
event_obj = self.pool.get('event.event')
|
||||
|
||||
if event_id:
|
||||
obj_event = self.pool.get('event.event')
|
||||
event = obj_event.browse(cr, uid, event_id)
|
||||
event = event_obj.browse(cr, uid, event_id)
|
||||
res['value'] = {
|
||||
'event_type': event.type and event.type.id or False,
|
||||
'start_date': event.date_begin,
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
name="Human Resources"
|
||||
parent="base.dashboard"/>
|
||||
|
||||
|
||||
<!-- This board view will be complete by other hr_* modules-->
|
||||
<record id="board_hr_form" model="ir.ui.view">
|
||||
<field name="name">board.hr.form</field>
|
||||
<field name="model">board.board</field>
|
||||
|
||||
@@ -2,6 +2,43 @@
|
||||
<openerp>
|
||||
<data>
|
||||
|
||||
<!-- Employee Category -->
|
||||
|
||||
<record id="category1" model="hr.employee.category">
|
||||
<field name="name">CEO</field>
|
||||
</record>
|
||||
|
||||
<record id="category2" model="hr.employee.category">
|
||||
<field name="name">CTO</field>
|
||||
<field name="parent_id" ref="category1"/>
|
||||
</record>
|
||||
|
||||
<record id="category3" model="hr.employee.category">
|
||||
<field name="name">Managers(Tech. Heads)</field>
|
||||
<field name="parent_id" ref="category2"/>
|
||||
</record>
|
||||
|
||||
<record id="category4" model="hr.employee.category">
|
||||
<field name="name">Project Managers</field>
|
||||
<field name="parent_id" ref="category3"/>
|
||||
</record>
|
||||
|
||||
<record id="category5" model="hr.employee.category">
|
||||
<field name="name">Sr. Executives(Team Leads)</field>
|
||||
<field name="parent_id" ref="category4"/>
|
||||
</record>
|
||||
|
||||
<record id="category6" model="hr.employee.category">
|
||||
<field name="name">Jr. Executives(Developers)</field>
|
||||
<field name="parent_id" ref="category5"/>
|
||||
</record>
|
||||
|
||||
<record id="category7" model="hr.employee.category">
|
||||
<field name="name">Trainee(Intership)</field>
|
||||
<field name="parent_id" ref="category6"/>
|
||||
</record>
|
||||
|
||||
|
||||
<!-- Example employee -->
|
||||
|
||||
<record id="employee1" model="hr.employee">
|
||||
@@ -9,6 +46,7 @@
|
||||
<field name="calendar_id" ref="resource.timesheet_group1"/>
|
||||
<!--<field name="regime">45</field>-->
|
||||
<field name="user_id" ref="base.user_root"/>
|
||||
<field name="category_id" ref="hr.category1"/>
|
||||
<!--<field name="holiday_max">25</field>-->
|
||||
</record>
|
||||
|
||||
|
||||
@@ -101,7 +101,7 @@
|
||||
<field name="type">form</field>
|
||||
<field name="arch" type="xml">
|
||||
<page string="Current Activity" position="inside">
|
||||
<field name="context_department_id" widget="selection" />
|
||||
<field name="context_department_id" widget="selection" readonly="0"/>
|
||||
</page>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
@@ -62,7 +62,7 @@
|
||||
<separator string="Position" colspan="2"/>
|
||||
<field name="job_id" widget="selection"/>
|
||||
<field name="department_id" widget="selection"/>
|
||||
<field name="category_id" />
|
||||
<field name="category_id" widget="selection"/>
|
||||
<!--<separator string="Managers" colspan="2"/>
|
||||
<field name="parent_id" />
|
||||
<field name="coach_id" />-->
|
||||
@@ -88,6 +88,7 @@
|
||||
<field name="work_email"/>
|
||||
<field name="department_id"/>
|
||||
<field name="job_id"/>
|
||||
<field name="category_id"/>
|
||||
<field name="parent_id"/>
|
||||
<field name="coach_id" invisible="1" />
|
||||
</tree>
|
||||
@@ -102,7 +103,9 @@
|
||||
<search string="Employees">
|
||||
<filter icon="terp-personal-" domain="[('active','=',False)]" string="Unactive" groups="base.group_extended"/>
|
||||
<field name="name"/>
|
||||
<field name="department_id" widget="selection"/>
|
||||
<field name="department_id" widget="selection">
|
||||
<filter icon="terp-personal+" domain="[('department_id','=',context.get('department_id',False))]" help="My Departments Employee"/>
|
||||
</field>
|
||||
<field name="job_id" widget="selection"/>
|
||||
<field name="parent_id"/>
|
||||
<newline />
|
||||
|
||||
@@ -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-05-10 13:18+0000\n"
|
||||
"Last-Translator: Angel Spy <melissadilara@yahoo.com>\n"
|
||||
"PO-Revision-Date: 2010-07-12 11:46+0000\n"
|
||||
"Last-Translator: adsiz_1029@hotmail.com <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-06-22 04:15+0000\n"
|
||||
"X-Launchpad-Export-Date: 2010-07-13 03:49+0000\n"
|
||||
"X-Generator: Launchpad (build Unknown)\n"
|
||||
|
||||
#. module: hr
|
||||
|
||||
@@ -60,7 +60,7 @@ class hr_attendance(osv.osv):
|
||||
'day': fields.function(_day_compute, method=True, type='char', string='Day', store=True, select=1, size=32),
|
||||
}
|
||||
_defaults = {
|
||||
'name': time.strftime('%Y-%m-%d %H:%M:%S'),
|
||||
'name': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'), #Don't remove the lambda, if you remove it then the current time will not change
|
||||
'employee_id': _employee_get,
|
||||
}
|
||||
|
||||
@@ -119,6 +119,7 @@ class hr_employee(osv.osv):
|
||||
def attendance_action_change(self, cr, uid, ids, type='action', context=None, dt=False, *args):
|
||||
id = False
|
||||
warning_sign = 'sign'
|
||||
res = {}
|
||||
|
||||
#Special case when button calls this method :type=context
|
||||
if isinstance(type, dict):
|
||||
@@ -127,7 +128,6 @@ class hr_employee(osv.osv):
|
||||
warning_sign = "Sign In"
|
||||
elif type == 'sign_out':
|
||||
warning_sign = "Sign Out"
|
||||
|
||||
for emp in self.read(cr, uid, ids, ['id'], context=context):
|
||||
if not self._action_check(cr, uid, emp['id'], dt, context):
|
||||
raise osv.except_osv(_('Warning'), _('You tried to %s with a date anterior to another event !\nTry to contact the administrator to correct attendances.')%(warning_sign,))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
# Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
|
||||
#
|
||||
@@ -15,12 +15,12 @@
|
||||
# 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/>.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
import attendance_errors
|
||||
import bymonth
|
||||
import attendance_by_month
|
||||
import timesheet
|
||||
|
||||
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
|
||||
|
||||
+2
-1
@@ -40,12 +40,13 @@ def hour2str(h):
|
||||
class report_custom(report_rml):
|
||||
|
||||
def create_xml(self, cr, uid, ids, datas, context=None):
|
||||
obj_emp = pooler.get_pool(cr.dbname).get('hr.employee')
|
||||
if context is None:
|
||||
context = {}
|
||||
month = DateTime.DateTime(datas['form']['year'], datas['form']['month'], 1)
|
||||
user_xml = ['<month>%s</month>' % month2name[month.month], '<year>%s</year>' % month.year]
|
||||
for employee_id in ids:
|
||||
emp = pooler.get_pool(cr.dbname).get('hr.employee').read(cr, uid, [employee_id], ['name'])[0]
|
||||
emp = obj_emp.read(cr, uid, [employee_id], ['name'])[0]
|
||||
stop, days_xml = False, []
|
||||
user_repr = '''
|
||||
<user>
|
||||
@@ -37,6 +37,7 @@ def to_hour(h):
|
||||
class report_custom(report_rml):
|
||||
|
||||
def create_xml(self, cr, uid, ids, datas, context=None):
|
||||
obj_emp = pooler.get_pool(cr.dbname).get('hr.employee')
|
||||
start_date = DateTime.strptime(datas['form']['init_date'], '%Y-%m-%d')
|
||||
end_date = DateTime.strptime(datas['form']['end_date'], '%Y-%m-%d')
|
||||
first_monday = start_date - DateTime.RelativeDateTime(days=start_date.day_of_week)
|
||||
@@ -47,7 +48,7 @@ class report_custom(report_rml):
|
||||
user_xml = []
|
||||
|
||||
for employee_id in ids:
|
||||
emp = pooler.get_pool(cr.dbname).get('hr.employee').read(cr, uid, [employee_id], ['id', 'name'])[0]
|
||||
emp = obj_emp.read(cr, uid, [employee_id], ['id', 'name'])[0]
|
||||
monday, n_monday = first_monday, first_monday + one_week
|
||||
stop, week_xml = False, []
|
||||
user_repr = '''
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
</record>
|
||||
|
||||
<record id="action_hr_attendance_month" model="ir.actions.act_window">
|
||||
<field name="name">Print Timesheet by month</field>
|
||||
<field name="name">Print Attendance by month</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">hr.attendance.month</field>
|
||||
<field name="view_type">form</field>
|
||||
@@ -34,7 +34,7 @@
|
||||
<record model="ir.values" id="hr_attendance_month_values">
|
||||
<field name="model_id" ref="hr.model_hr_employee" />
|
||||
<field name="object" eval="1" />
|
||||
<field name="name">Print Timesheet by month</field>
|
||||
<field name="name">Print Attendance by month</field>
|
||||
<field name="key2">client_print_multi</field>
|
||||
<field name="value" eval="'ir.actions.act_window,' + str(ref('action_hr_attendance_month'))" />
|
||||
<field name="key">action</field>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user