[MERGE] merge with latest trunk

bzr revid: bde@tinyerp.com-20130522095432-1sl1b6uu6ewod4md
bzr revid: amb@tinyerp.com-20130528091941-wak8fnembuvewwjf
This commit is contained in:
Amit Bhavsar (Open ERP) 2013-05-28 14:49:41 +05:30
commit 24848a8dcc
424 changed files with 46177 additions and 4097 deletions

View File

@ -99,7 +99,6 @@ for a particular financial year and for preparation of vouchers there is a modul
'project/wizard/project_account_analytic_line_view.xml', 'project/wizard/project_account_analytic_line_view.xml',
'account_end_fy.xml', 'account_end_fy.xml',
'account_invoice_view.xml', 'account_invoice_view.xml',
'partner_view.xml',
'data/account_data.xml', 'data/account_data.xml',
'data/data_account_type.xml', 'data/data_account_type.xml',
'data/configurable_account_chart.xml', 'data/configurable_account_chart.xml',
@ -112,6 +111,7 @@ for a particular financial year and for preparation of vouchers there is a modul
'project/wizard/account_analytic_journal_report_view.xml', 'project/wizard/account_analytic_journal_report_view.xml',
'project/wizard/account_analytic_cost_ledger_for_journal_report_view.xml', 'project/wizard/account_analytic_cost_ledger_for_journal_report_view.xml',
'project/wizard/account_analytic_chart_view.xml', 'project/wizard/account_analytic_chart_view.xml',
'partner_view.xml',
'product_view.xml', 'product_view.xml',
'account_assert_test.xml', 'account_assert_test.xml',
'process/statement_process.xml', 'process/statement_process.xml',

View File

@ -1670,7 +1670,7 @@ class account_move_reconcile(osv.osv):
elif reconcile.line_partial_ids: elif reconcile.line_partial_ids:
first_partner = reconcile.line_partial_ids[0].partner_id.id first_partner = reconcile.line_partial_ids[0].partner_id.id
move_lines = reconcile.line_partial_ids move_lines = reconcile.line_partial_ids
if any([line.partner_id.id != first_partner for line in move_lines]): if any([(line.account_id.type in ('receivable', 'payable') and line.partner_id.id != first_partner) for line in move_lines]):
return False return False
return True return True

View File

@ -6,16 +6,19 @@
--> -->
<record id="account_financial_report_profitandloss0" model="account.financial.report"> <record id="account_financial_report_profitandloss0" model="account.financial.report">
<field name="name">Profit and Loss</field> <field name="name">Profit and Loss</field>
<field name="sign" eval="-1" />
<field name="type">sum</field> <field name="type">sum</field>
</record> </record>
<record id="account_financial_report_income0" model="account.financial.report"> <record id="account_financial_report_income0" model="account.financial.report">
<field name="name">Income</field> <field name="name">Income</field>
<field name="sign" eval="-1" />
<field name="parent_id" ref="account_financial_report_profitandloss0"/> <field name="parent_id" ref="account_financial_report_profitandloss0"/>
<field name="display_detail">detail_with_hierarchy</field> <field name="display_detail">detail_with_hierarchy</field>
<field name="type">account_type</field> <field name="type">account_type</field>
</record> </record>
<record id="account_financial_report_expense0" model="account.financial.report"> <record id="account_financial_report_expense0" model="account.financial.report">
<field name="name">Expense</field> <field name="name">Expense</field>
<field name="sign" eval="-1" />
<field name="parent_id" ref="account_financial_report_profitandloss0"/> <field name="parent_id" ref="account_financial_report_profitandloss0"/>
<field name="display_detail">detail_with_hierarchy</field> <field name="display_detail">detail_with_hierarchy</field>
<field name="type">account_type</field> <field name="type">account_type</field>

View File

@ -20,10 +20,11 @@
</p> </p>
<group> <group>
<field name="charts" class="oe_inline"/> <field name="charts" class="oe_inline"/>
<field name="company_id" widget="selection"/><!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it -->
</group> </group>
<group string="Configure your Fiscal Year" groups="account.group_account_user"> <group string="Configure your Fiscal Year" groups="account.group_account_user">
<field name="has_default_company" invisible="1" /> <field name="has_default_company" invisible="1" />
<field name="company_id" colspan="4" widget="selection" attrs="{'invisible' : [('has_default_company', '=', True)]}"/><!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it -->
<label for="date_start" string="Date Range"/> <label for="date_start" string="Date Range"/>
<div> <div>
<field name="date_start" on_change="on_change_start_date(date_start)" class="oe_inline"/> - <field name="date_start" on_change="on_change_start_date(date_start)" class="oe_inline"/> -

View File

@ -635,6 +635,26 @@ class account_invoice(osv.osv):
self.create_workflow(cr, uid, ids) self.create_workflow(cr, uid, ids)
return True return True
# ----------------------------------------
# Mail related methods
# ----------------------------------------
def _get_formview_action(self, cr, uid, id, context=None):
""" Update form view id of action to open the invoice """
action = super(account_invoice, self)._get_formview_action(cr, uid, id, context=context)
obj = self.browse(cr, uid, id, context=context)
if obj.type == 'in_invoice':
model, view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'invoice_supplier_form')
action.update({
'views': [(view_id, 'form')],
})
else:
model, view_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'account', 'invoice_form')
action.update({
'views': [(view_id, 'form')],
})
return action
# Workflow stuff # Workflow stuff
################# #################
@ -722,7 +742,7 @@ class account_invoice(osv.osv):
inv = self.browse(cr, uid, id) inv = self.browse(cr, uid, id)
cur_obj = self.pool.get('res.currency') cur_obj = self.pool.get('res.currency')
company_currency = inv.company_id.currency_id.id company_currency = self.pool['res.company'].browse(cr, uid, inv.company_id.id).currency_id.id
if inv.type in ('out_invoice', 'in_refund'): if inv.type in ('out_invoice', 'in_refund'):
sign = 1 sign = 1
else: else:
@ -769,6 +789,7 @@ class account_invoice(osv.osv):
return move_lines return move_lines
def check_tax_lines(self, cr, uid, inv, compute_taxes, ait_obj): def check_tax_lines(self, cr, uid, inv, compute_taxes, ait_obj):
company_currency = self.pool['res.company'].browse(cr, uid, inv.company_id.id).currency_id
if not inv.tax_line: if not inv.tax_line:
for tax in compute_taxes.values(): for tax in compute_taxes.values():
ait_obj.create(cr, uid, tax) ait_obj.create(cr, uid, tax)
@ -782,7 +803,7 @@ class account_invoice(osv.osv):
if not key in compute_taxes: if not key in compute_taxes:
raise osv.except_osv(_('Warning!'), _('Global taxes defined, but they are not in invoice lines !')) raise osv.except_osv(_('Warning!'), _('Global taxes defined, but they are not in invoice lines !'))
base = compute_taxes[key]['base'] base = compute_taxes[key]['base']
if abs(base - tax.base) > inv.company_id.currency_id.rounding: if abs(base - tax.base) > company_currency.rounding:
raise osv.except_osv(_('Warning!'), _('Tax base different!\nClick on compute to update the tax base.')) raise osv.except_osv(_('Warning!'), _('Tax base different!\nClick on compute to update the tax base.'))
for key in compute_taxes: for key in compute_taxes:
if not key in tax_key: if not key in tax_key:
@ -869,7 +890,7 @@ class account_invoice(osv.osv):
ctx.update({'lang': inv.partner_id.lang}) ctx.update({'lang': inv.partner_id.lang})
if not inv.date_invoice: if not inv.date_invoice:
self.write(cr, uid, [inv.id], {'date_invoice': fields.date.context_today(self,cr,uid,context=context)}, context=ctx) self.write(cr, uid, [inv.id], {'date_invoice': fields.date.context_today(self,cr,uid,context=context)}, context=ctx)
company_currency = inv.company_id.currency_id.id company_currency = self.pool['res.company'].browse(cr, uid, inv.company_id.id).currency_id.id
# create the analytical lines # create the analytical lines
# one move line per invoice line # one move line per invoice line
iml = self._get_analytic_lines(cr, uid, inv.id, context=ctx) iml = self._get_analytic_lines(cr, uid, inv.id, context=ctx)
@ -985,7 +1006,8 @@ class account_invoice(osv.osv):
'line_id': line, 'line_id': line,
'journal_id': journal_id, 'journal_id': journal_id,
'date': date, 'date': date,
'narration':inv.comment 'narration': inv.comment,
'company_id': inv.company_id.id,
} }
period_id = inv.period_id and inv.period_id.id or False period_id = inv.period_id and inv.period_id.id or False
ctx.update(company_id=inv.company_id.id) ctx.update(company_id=inv.company_id.id)
@ -1517,8 +1539,7 @@ class account_invoice_line(osv.osv):
if context is None: if context is None:
context = {} context = {}
inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context=context) inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context=context)
company_currency = inv.company_id.currency_id.id company_currency = self.pool['res.company'].browse(cr, uid, inv.company_id.id).currency_id.id
for line in inv.invoice_line: for line in inv.invoice_line:
mres = self.move_line_get_item(cr, uid, line, context) mres = self.move_line_get_item(cr, uid, line, context)
if not mres: if not mres:
@ -1662,8 +1683,7 @@ class account_invoice_tax(osv.osv):
cur_obj = self.pool.get('res.currency') cur_obj = self.pool.get('res.currency')
inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context=context) inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context=context)
cur = inv.currency_id cur = inv.currency_id
company_currency = inv.company_id.currency_id.id company_currency = self.pool['res.company'].browse(cr, uid, inv.company_id.id).currency_id.id
for line in inv.invoice_line: for line in inv.invoice_line:
for tax in tax_obj.compute_all(cr, uid, line.invoice_line_tax_id, (line.price_unit* (1-(line.discount or 0.0)/100.0)), line.quantity, line.product_id, inv.partner_id)['taxes']: for tax in tax_obj.compute_all(cr, uid, line.invoice_line_tax_id, (line.price_unit* (1-(line.discount or 0.0)/100.0)), line.quantity, line.product_id, inv.partner_id)['taxes']:
val={} val={}

View File

@ -626,7 +626,7 @@ class account_move_line(osv.osv):
(_check_date, 'The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal.', ['date']), (_check_date, 'The date of your Journal Entry is not in the defined period! You should change the date or remove this constraint from the journal.', ['date']),
(_check_currency, 'The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal.', ['currency_id']), (_check_currency, 'The selected account of your Journal Entry forces to provide a secondary currency. You should remove the secondary currency on the account or select a multi-currency view on the journal.', ['currency_id']),
(_check_currency_and_amount, "You cannot create journal items with a secondary currency without recording both 'currency' and 'amount currency' field.", ['currency_id','amount_currency']), (_check_currency_and_amount, "You cannot create journal items with a secondary currency without recording both 'currency' and 'amount currency' field.", ['currency_id','amount_currency']),
(_check_currency_amount, 'The amount expressed in the secondary currency must be positif when journal item are debit and negatif when journal item are credit.', ['amount_currency']), (_check_currency_amount, 'The amount expressed in the secondary currency must be positive when the journal item is a debit and negative when if it is a credit.', ['amount_currency']),
(_check_currency_company, "You cannot provide a secondary currency if it is the same than the company one." , ['currency_id']), (_check_currency_company, "You cannot provide a secondary currency if it is the same than the company one." , ['currency_id']),
] ]

View File

@ -2111,10 +2111,8 @@
<group attrs="{'invisible': [('only_one_chart_template','=',True)]}"> <group attrs="{'invisible': [('only_one_chart_template','=',True)]}">
<field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)" domain="[('visible','=', True)]"/> <field name="chart_template_id" widget="selection" on_change="onchange_chart_template_id(chart_template_id)" domain="[('visible','=', True)]"/>
</group> </group>
<group groups="base.group_multi_company">
<field name="company_id" widget="selection" on_change="onchange_company_id(company_id)"/> <!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it -->
</group>
<group> <group>
<field name="company_id" widget="selection" on_change="onchange_company_id(company_id)"/> <!-- we assume that this wizard will be run only by administrators and as this field may cause problem if hidden (because of the default company of the user removed from the selection because already configured), we simply choosed to remove the group "multi company" of it -->
<field name="currency_id" class="oe_inline"/> <field name="currency_id" class="oe_inline"/>
<field name="sale_tax" attrs="{'invisible': [('complete_tax_set', '!=', True)]}" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/> <field name="sale_tax" attrs="{'invisible': [('complete_tax_set', '!=', True)]}" domain="[('chart_template_id', '=', chart_template_id),('parent_id','=',False),('type_tax_use','in',('sale','all'))]"/>
<label for="sale_tax_rate" string="Sale Tax" attrs="{'invisible': [('complete_tax_set', '=', True)]}"/> <label for="sale_tax_rate" string="Sale Tax" attrs="{'invisible': [('complete_tax_set', '=', True)]}"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

View File

@ -0,0 +1,206 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Accounting Made Easy</h2>
<h3 class="oe_slogan">Beautiful, easy, full featured</h3>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=account">
<img src="account_sc_00.png" alt="Online Demo">
</a>
<span class="oe_demo_play">&nbsp;</span>
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
</div>
</div>
<div class="oe_span6">
<p class='oe_mt32'>
By far the most beautiful and full featured accounting software. OpenERP Accounting allows a better way to collaborate with your accountants, your customers and control your suppliers.</p>
<p>
Activate features on demand, from integrated analytic accounting to budget, assets and multiple companies consolidation.
</p>
<div class="oe_centeralign oe_websiteonly">
<a href="http://www.openerp.com/start" class="oe_button oe_big oe_tacky">Start your <span class="oe_emph">free</span> trial</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">A Smart User Interface</h2>
<div class="oe_span6">
<p class='oe_mt32'>
Record transactions in a few clicks and easily manage all financial activities
in one place. OpenERP's user interface is designed with productivity in mind.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_01.png">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row">
<h2 class="oe_slogan">A Better Way To Work Together</h2>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_02.png">
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Share access to your latest business numbers with your team and your accountant so everyone is up to speed. From work, home or on the go.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">Connect Your Bank Accounts</h2>
<div class="oe_span6">
<p class='oe_mt32'>
Import your bank statements and reconcile them in just a few clicks. Prepare payment orders based on your supplier invoices and payment terms.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture" src="account_illu_01.png">
</div>
</div>
</section>
<section class="oe_container">
<h2 class="oe_slogan">Get Paid Faster</h2>
<h3 class="oe_slogan">Electronic invoicing and automated follow-ups</h3>
<div class="oe_row">
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_03.png">
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Create and send professional invoices &amp; get paid online. Get rid of the stress of having to constantly remind your debtors. Simply set-up and automate follow-ups to get paid quickly.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">Sales Integration</h2>
<div class="oe_span6">
<p class='oe_mt32'>
Automatically create invoices from sales orders, delivery orders or base them on time and material. Re-invoice expenses on projects to your customer in just a few clicks.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_04.png">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row">
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_05.png">
</div>
<div class="oe_span6">
<h2 class="oe_slogan">Purchase Integration</h2>
<p class='oe_mt32'>
Control supplier invocies based on purchase orders. Get real-time inventory valuation reports automatically posted in your accounts.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">Multi-Level Analytic Accounting</h2>
<div class="oe_span6">
<p class='oe_mt32'>
Integrate your analytic accounting operations with timesheets, projects, invoices, expenses, etc. No need to record transactions, all analytic entries are posted automatically following your business rules.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_06.png">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row">
<h2 class="oe_slogan">Everything you need to grow</h2>
<div class="oe_span6">
<img src="account_illu_02.png">
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Manage your assets, track expenses, control budgets, multi-level analytic accounting; OpenERP has all the features you need to sustain all your business activities.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">Scale With Your Organization</h2>
<h3 class="oe_slogan">Used by very small to very large organizations</h3>
<div class="oe_span6">
<p class='oe_mt32'>
OpenERP supports multiple currencies, multiple users with different access rights, multiple companies with real time consolidation and unlimited analytic plans.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_illu_03.png">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row">
<h2 class="oe_slogan">Dashboard & KPIs</h2>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_06.png">
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Get direct access to key information with dynamic and customizable dashboards. Analyse your financial activities with the drill-up, drill-down, drill-across and filter features.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<div class="oe_span12">
<h2 class="oe_slogan">Many companies already enjoy it</h2>
<h3 class="oe_slogan">Hear what they have to say !</h3>
</div>
<div class="oe_span6">
<div class="oe_quote">
<q>
OpenERP Accounting is a great way to record all business transactions
right when they happen. Awesome and cost-effective!
</q>
<cite class="oe_cite oe_clearfix oe_ml64">
<div class="oe_author">Wolfgang Taferner</div>
<div class="oe_job"><a href="http://tapo-it.at/en/" target="_blank">Tapo</a>, Austria.</div>
</cite>
</div>
</div>
<div class="oe_span6">
<div class="oe_quote">
<q>
We have found accounting module of OpenERP to be user
friendly and highly customizable. It proved to be an accounting gem.
</q>
<cite class="oe_cite oe_clearfix">
<img class="oe_photo" src="testimonial_sunil.jpg">
<div class="oe_author">Col. Sunil Prem.</div>
<div class="oe_job">Director of <a href="http://www.navyuginfo.com" target="_blank">Navyug Infosolutions Pvt. Ltd</a>.</div>
</cite>
</div>
</div>
</div>
</section>

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -50,11 +50,12 @@
</field> </field>
</record> </record>
<record id="action_account_analytic_account_form" model="ir.actions.act_window"> <record id="action_open_partner_analytic_accounts" model="ir.actions.act_window">
<field name="context">{'search_default_partner_id': [active_id], 'default_partner_id': active_id}</field> <field name="context">{'search_default_partner_id': [active_id], 'default_partner_id': active_id}</field>
<field name="name">Contracts/Analytic Accounts</field> <field name="name">Contracts/Analytic Accounts</field>
<field name="res_model">account.analytic.account</field> <field name="res_model">account.analytic.account</field>
<field name="view_mode">tree,form</field> <field name="view_id" ref="view_account_analytic_account_tree"/>
<field name="search_view_id" ref="view_account_analytic_account_search"/>
</record> </record>
<record model="ir.ui.view" id="partner_view_buttons"> <record model="ir.ui.view" id="partner_view_buttons">
<field name="name">partner.view.buttons</field> <field name="name">partner.view.buttons</field>
@ -67,7 +68,7 @@
name="%(account.action_invoice_tree)d" name="%(account.action_invoice_tree)d"
context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" groups="account.group_account_invoice"/> context="{'search_default_partner_id': active_id,'default_partner_id': active_id}" groups="account.group_account_invoice"/>
<button type="action" string="Journal Items" name="%(account.action_account_moves_all_tree)d" groups="account.group_account_user"/> <button type="action" string="Journal Items" name="%(account.action_account_moves_all_tree)d" groups="account.group_account_user"/>
<button type="action" string="Contracts/Analytic Accounts" name="%(account.action_account_analytic_account_form)d" <button type="action" string="Contracts/Analytic Accounts" name="%(account.action_open_partner_analytic_accounts)d"
groups="analytic.group_analytic_accounting"/> groups="analytic.group_analytic_accounting"/>
</xpath> </xpath>
</field> </field>

View File

@ -77,6 +77,7 @@
<field name="name">Analytic Accounts</field> <field name="name">Analytic Accounts</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">account.analytic.account</field> <field name="res_model">account.analytic.account</field>
<field name="context">{}</field> <!-- repair invalid context by setting empty one -->
<field name="view_type">form</field> <field name="view_type">form</field>
<field name="view_mode">tree,form</field> <field name="view_mode">tree,form</field>
<field name="view_id" ref="view_account_analytic_account_tree"/> <field name="view_id" ref="view_account_analytic_account_tree"/>

View File

@ -23,7 +23,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
############################################################################## ##############################################################################

View File

@ -99,12 +99,13 @@ class account_invoice_report(osv.osv):
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',readonly=True), 'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',readonly=True),
'residual': fields.float('Total Residual', readonly=True), 'residual': fields.float('Total Residual', readonly=True),
'user_currency_residual': fields.function(_compute_amounts_in_user_currency, string="Total Residual", type='float', digits_compute=dp.get_precision('Account'), multi="_compute_amounts"), 'user_currency_residual': fields.function(_compute_amounts_in_user_currency, string="Total Residual", type='float', digits_compute=dp.get_precision('Account'), multi="_compute_amounts"),
'country_id': fields.many2one('res.country', 'Country of the Partner Company'),
} }
_order = 'date desc' _order = 'date desc'
def _select(self): def _select(self):
select_str = """ select_str = """
SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id, SELECT sub.id, sub.date, sub.year, sub.month, sub.day, sub.product_id, sub.partner_id, sub.country_id,
sub.payment_term, sub.period_id, sub.uom_name, sub.currency_id, sub.journal_id, sub.payment_term, sub.period_id, sub.uom_name, sub.currency_id, sub.journal_id,
sub.fiscal_position, sub.user_id, sub.company_id, sub.nbr, sub.type, sub.state, sub.fiscal_position, sub.user_id, sub.company_id, sub.nbr, sub.type, sub.state,
sub.categ_id, sub.date_due, sub.account_id, sub.account_line_id, sub.partner_bank_id, sub.categ_id, sub.date_due, sub.account_id, sub.account_line_id, sub.partner_bank_id,
@ -172,7 +173,8 @@ class account_invoice_report(osv.osv):
WHERE a.id = ai.id) WHERE a.id = ai.id)
ELSE 1::bigint ELSE 1::bigint
END::numeric AS residual, END::numeric AS residual,
ai.commercial_partner_id as commercial_partner_id ai.commercial_partner_id as commercial_partner_id,
partner.country_id
""" """
return select_str return select_str
@ -180,6 +182,7 @@ class account_invoice_report(osv.osv):
from_str = """ from_str = """
FROM account_invoice_line ail FROM account_invoice_line ail
JOIN account_invoice ai ON ai.id = ail.invoice_id JOIN account_invoice ai ON ai.id = ail.invoice_id
JOIN res_partner partner ON ai.commercial_partner_id = partner.id
LEFT JOIN product_product pr ON pr.id = ail.product_id LEFT JOIN product_product pr ON pr.id = ail.product_id
left JOIN product_template pt ON pt.id = pr.product_tmpl_id left JOIN product_template pt ON pt.id = pr.product_tmpl_id
LEFT JOIN product_uom u ON u.id = ail.uos_id LEFT JOIN product_uom u ON u.id = ail.uos_id
@ -195,7 +198,7 @@ class account_invoice_report(osv.osv):
ai.partner_id, ai.payment_term, ai.period_id, u.name, ai.currency_id, ai.journal_id, ai.partner_id, ai.payment_term, ai.period_id, u.name, ai.currency_id, ai.journal_id,
ai.fiscal_position, ai.user_id, ai.company_id, ai.type, ai.state, pt.categ_id, ai.fiscal_position, ai.user_id, ai.company_id, ai.type, ai.state, pt.categ_id,
ai.date_due, ai.account_id, ail.account_id, ai.partner_bank_id, ai.residual, ai.date_due, ai.account_id, ail.account_id, ai.partner_bank_id, ai.residual,
ai.amount_total, u.uom_type, u.category_id, ai.commercial_partner_id ai.amount_total, u.uom_type, u.category_id, ai.commercial_partner_id, partner.country_id
""" """
return group_by_str return group_by_str

View File

@ -15,6 +15,7 @@
<field name="company_id" invisible="1"/> <field name="company_id" invisible="1"/>
<field name="partner_id" invisible="1"/> <field name="partner_id" invisible="1"/>
<field name="commercial_partner_id" invisible="1"/> <field name="commercial_partner_id" invisible="1"/>
<field name="country_id" invisible="1"/>
<field name="product_id" invisible="1"/> <field name="product_id" invisible="1"/>
<field name="uom_name" invisible="not context.get('set_visible',False)"/> <field name="uom_name" invisible="not context.get('set_visible',False)"/>
<field name="categ_id" invisible="1"/> <field name="categ_id" invisible="1"/>
@ -68,6 +69,7 @@
<group expand="1" string="Group By..."> <group expand="1" string="Group By...">
<filter string="Partner" name="partner_id" context="{'group_by':'partner_id','residual_visible':True}"/> <filter string="Partner" name="partner_id" context="{'group_by':'partner_id','residual_visible':True}"/>
<filter string="Commercial Partner" name="commercial_partner_id" context="{'group_by':'commercial_partner_id','residual_visible':True}"/> <filter string="Commercial Partner" name="commercial_partner_id" context="{'group_by':'commercial_partner_id','residual_visible':True}"/>
<filter string="Commercial Partner's Country" name="country_id" context="{'group_by':'country_id'}"/>
<filter string="Salesperson" name='user' icon="terp-personal" context="{'group_by':'user_id'}"/> <filter string="Salesperson" name='user' icon="terp-personal" context="{'group_by':'user_id'}"/>
<filter string="Due Date" icon="terp-go-today" context="{'group_by':'date_due'}"/> <filter string="Due Date" icon="terp-go-today" context="{'group_by':'date_due'}"/>
<filter string="Period" icon="terp-go-month" context="{'group_by':'period_id'}" name="period"/> <filter string="Period" icon="terp-go-month" context="{'group_by':'period_id'}" name="period"/>

View File

@ -25,6 +25,7 @@ from dateutil.relativedelta import relativedelta
from operator import itemgetter from operator import itemgetter
from os.path import join as opj from os.path import join as opj
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT as DF
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.osv import fields, osv from openerp.osv import fields, osv
from openerp import tools from openerp import tools
@ -132,12 +133,43 @@ class account_config_settings(osv.osv_memory):
count = self.pool.get('res.company').search_count(cr, uid, [], context=context) count = self.pool.get('res.company').search_count(cr, uid, [], context=context)
return bool(count == 1) return bool(count == 1)
def _get_default_fiscalyear_data(self, cr, uid, company_id, context=None):
"""Compute default period, starting and ending date for fiscalyear
- if in a fiscal year, use its period, starting and ending date
- if past fiscal year, use its period, and new dates [ending date of the latest +1 day ; ending date of the latest +1 year]
- if no fiscal year, use monthly, 1st jan, 31th dec of this year
:return: (date_start, date_stop, period) at format DEFAULT_SERVER_DATETIME_FORMAT
"""
fiscalyear_ids = self.pool.get('account.fiscalyear').search(cr, uid,
[('date_start', '<=', time.strftime(DF)), ('date_stop', '>=', time.strftime(DF)),
('company_id', '=', company_id)])
if fiscalyear_ids:
# is in a current fiscal year, use this one
fiscalyear = self.pool.get('account.fiscalyear').browse(cr, uid, fiscalyear_ids[0], context=context)
if len(fiscalyear.period_ids) == 5: # 4 periods of 3 months + opening period
period = '3months'
else:
period = 'month'
return (fiscalyear.date_start, fiscalyear.date_stop, period)
else:
past_fiscalyear_ids = self.pool.get('account.fiscalyear').search(cr, uid,
[('date_stop', '<=', time.strftime(DF)), ('company_id', '=', company_id)])
if past_fiscalyear_ids:
# use the latest fiscal, sorted by (start_date, id)
latest_year = self.pool.get('account.fiscalyear').browse(cr, uid, past_fiscalyear_ids[-1], context=context)
latest_stop = datetime.datetime.strptime(latest_year.date_stop, DF)
if len(latest_year.period_ids) == 5:
period = '3months'
else:
period = 'month'
return ((latest_stop+datetime.timedelta(days=1)).strftime(DF), latest_stop.replace(year=latest_stop.year+1).strftime(DF), period)
else:
return (time.strftime('%Y-01-01'), time.strftime('%Y-12-31'), 'month')
_defaults = { _defaults = {
'company_id': _default_company, 'company_id': _default_company,
'has_default_company': _default_has_default_company, 'has_default_company': _default_has_default_company,
'date_start': lambda *a: time.strftime('%Y-01-01'),
'date_stop': lambda *a: time.strftime('%Y-12-31'),
'period': 'month',
} }
def create(self, cr, uid, values, context=None): def create(self, cr, uid, values, context=None):
@ -161,6 +193,7 @@ class account_config_settings(osv.osv_memory):
fiscalyear_count = self.pool.get('account.fiscalyear').search_count(cr, uid, fiscalyear_count = self.pool.get('account.fiscalyear').search_count(cr, uid,
[('date_start', '<=', time.strftime('%Y-%m-%d')), ('date_stop', '>=', time.strftime('%Y-%m-%d')), [('date_start', '<=', time.strftime('%Y-%m-%d')), ('date_stop', '>=', time.strftime('%Y-%m-%d')),
('company_id', '=', company_id)]) ('company_id', '=', company_id)])
date_start, date_stop, period = self._get_default_fiscalyear_data(cr, uid, company_id, context=context)
values = { values = {
'expects_chart_of_accounts': company.expects_chart_of_accounts, 'expects_chart_of_accounts': company.expects_chart_of_accounts,
'currency_id': company.currency_id.id, 'currency_id': company.currency_id.id,
@ -170,6 +203,9 @@ class account_config_settings(osv.osv_memory):
'has_fiscal_year': bool(fiscalyear_count), 'has_fiscal_year': bool(fiscalyear_count),
'chart_template_id': False, 'chart_template_id': False,
'tax_calculation_rounding_method': company.tax_calculation_rounding_method, 'tax_calculation_rounding_method': company.tax_calculation_rounding_method,
'date_start': date_start,
'date_stop': date_stop,
'period': period,
} }
# update journals and sequences # update journals and sequences
for journal_type in ('sale', 'sale_refund', 'purchase', 'purchase_refund'): for journal_type in ('sale', 'sale_refund', 'purchase', 'purchase_refund'):

View File

@ -1,4 +1,3 @@
#!/usr/bin/env python
from openerp.osv import fields, osv from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp import openerp.addons.decimal_precision as dp
from openerp.tools.translate import _ from openerp.tools.translate import _

View File

@ -259,17 +259,14 @@ class account_analytic_account(osv.osv):
return res return res
if child_ids: if child_ids:
cr.execute("SELECT account_analytic_line.account_id, COALESCE(SUM(amount), 0.0) \ #Search all invoice lines not in cancelled state that refer to this analytic account
FROM account_analytic_line \ inv_line_obj = self.pool.get("account.invoice.line")
JOIN account_analytic_journal \ inv_lines = inv_line_obj.search(cr, uid, ['&', ('account_analytic_id', 'in', child_ids), ('invoice_id.state', '!=', 'cancel')], context=context)
ON account_analytic_line.journal_id = account_analytic_journal.id \ for line in inv_line_obj.browse(cr, uid, inv_lines, context=context):
WHERE account_analytic_line.account_id IN %s \ res[line.account_analytic_id.id] += line.price_subtotal
AND account_analytic_journal.type = 'sale' \
GROUP BY account_analytic_line.account_id", (child_ids,))
for account_id, sum in cr.fetchall():
res[account_id] = round(sum,2)
for acc in self.browse(cr, uid, res.keys(), context=context): for acc in self.browse(cr, uid, res.keys(), context=context):
res[acc.id] = res[acc.id] - (acc.timesheet_ca_invoiced or 0.0) res[acc.id] = res[acc.id] - (acc.timesheet_ca_invoiced or 0.0)
res_final = res res_final = res
return res_final return res_final
@ -633,6 +630,21 @@ class account_analytic_account(osv.osv):
pass pass
return result return result
def hr_to_invoice_timesheets(self, cr, uid, ids, context=None):
domain = [('invoice_id','=',False),('to_invoice','!=',False), ('journal_id.type', '=', 'general'), ('account_id', 'in', ids)]
names = [record.name for record in self.browse(cr, uid, ids, context=context)]
name = _('Timesheets to Invoice of %s') % ','.join(names)
return {
'type': 'ir.actions.act_window',
'name': name,
'view_type': 'form',
'view_mode': 'tree,form',
'domain' : domain,
'res_model': 'account.analytic.line',
'nodestroy': True,
}
def _prepare_invoice(self, cr, uid, contract, context=None): def _prepare_invoice(self, cr, uid, contract, context=None):
context = context or {} context = context or {}

View File

@ -98,8 +98,8 @@
<field class="oe_inline" name="ca_to_invoice" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/> <field class="oe_inline" name="ca_to_invoice" attrs="{'invisible': [('invoice_on_timesheets','=',False)]}"/>
</td><td class="oe_timesheet_action" attrs="{'invisible': ['|',('invoice_on_timesheets','=',False),('type','=','template')]}"> </td><td class="oe_timesheet_action" attrs="{'invisible': ['|',('invoice_on_timesheets','=',False),('type','=','template')]}">
<span attrs="{'invisible': [('ca_to_invoice','=',0.0)]}" class="oe_grey"> <span attrs="{'invisible': [('ca_to_invoice','=',0.0)]}" class="oe_grey">
<button name="%(hr_timesheet_invoice.action_hr_timesheet_invoice_create_final)d" <button name="hr_to_invoice_timesheets"
type="action" type="object"
class="oe_link" class="oe_link"
string="⇒ Invoice"/> string="⇒ Invoice"/>
or view or view

View File

@ -0,0 +1,741 @@
# Thai translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:04+0000\n"
"PO-Revision-Date: 2013-05-15 10:09+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Thai <th@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: 2013-05-16 05:12+0000\n"
"X-Generator: Launchpad (build 16626)\n"
#. module: account_asset
#: view:account.asset.asset:0
msgid "Assets in draft and open states"
msgstr ""
#. module: account_asset
#: field:account.asset.category,method_end:0
#: field:account.asset.history,method_end:0
#: field:asset.modify,method_end:0
msgid "Ending date"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,value_residual:0
msgid "Residual Value"
msgstr ""
#. module: account_asset
#: field:account.asset.category,account_expense_depreciation_id:0
msgid "Depr. Expense Account"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Group By..."
msgstr ""
#. module: account_asset
#: field:asset.asset.report,gross_value:0
msgid "Gross Amount"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.depreciation.line,asset_id:0
#: field:account.asset.history,asset_id:0
#: field:account.move.line,asset_id:0
#: view:asset.asset.report:0
#: field:asset.asset.report,asset_id:0
#: model:ir.model,name:account_asset.model_account_asset_asset
msgid "Asset"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,prorata:0
#: help:account.asset.category,prorata:0
msgid ""
"Indicates that the first depreciation entry for this asset have to be done "
"from the purchase date instead of the first January"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Linear"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,company_id:0
#: field:account.asset.category,company_id:0
#: view:asset.asset.report:0
#: field:asset.asset.report,company_id:0
msgid "Company"
msgstr ""
#. module: account_asset
#: view:asset.modify:0
msgid "Modify"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
#: view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Running"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Set to Draft"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
#: model:ir.actions.act_window,name:account_asset.action_asset_asset_report
#: model:ir.model,name:account_asset.model_asset_asset_report
#: model:ir.ui.menu,name:account_asset.menu_action_asset_asset_report
msgid "Assets Analysis"
msgstr ""
#. module: account_asset
#: field:asset.modify,name:0
msgid "Reason"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_progress_factor:0
#: field:account.asset.category,method_progress_factor:0
msgid "Degressive Factor"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_list_normal
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_list_normal
msgid "Asset Categories"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,account_move_line_ids:0
#: field:account.move.line,entry_ids:0
#: model:ir.actions.act_window,name:account_asset.act_entries_open
msgid "Entries"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,depreciation_line_ids:0
msgid "Depreciation Lines"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,salvage_value:0
msgid "It is the amount you plan to have that you cannot depreciate."
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method_period:0
msgid "The amount of time between two depreciations, in months"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,depreciation_date:0
#: view:asset.asset.report:0
#: field:asset.asset.report,depreciation_date:0
msgid "Depreciation Date"
msgstr ""
#. module: account_asset
#: constraint:account.asset.asset:0
msgid "Error ! You cannot create recursive assets."
msgstr ""
#. module: account_asset
#: field:asset.asset.report,posted_value:0
msgid "Posted Amount"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: view:asset.asset.report:0
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_form
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_form
#: model:ir.ui.menu,name:account_asset.menu_finance_assets
#: model:ir.ui.menu,name:account_asset.menu_finance_config_assets
msgid "Assets"
msgstr ""
#. module: account_asset
#: field:account.asset.category,account_depreciation_id:0
msgid "Depreciation Account"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: view:account.asset.category:0
#: view:account.asset.history:0
#: view:asset.modify:0
#: field:asset.modify,note:0
msgid "Notes"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,move_id:0
msgid "Depreciation Entry"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
#: field:asset.asset.report,nbr:0
msgid "# of Depreciation Lines"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_period:0
msgid "Number of Months in a Period"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets in draft state"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_end:0
#: selection:account.asset.asset,method_time:0
#: selection:account.asset.category,method_time:0
#: selection:account.asset.history,method_time:0
msgid "Ending Date"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,code:0
msgid "Reference"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Account Asset"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_asset_depreciation_confirmation_wizard
#: model:ir.ui.menu,name:account_asset.menu_asset_depreciation_confirmation_wizard
msgid "Compute Assets"
msgstr ""
#. module: account_asset
#: field:account.asset.category,method_period:0
#: field:account.asset.history,method_period:0
#: field:asset.modify,method_period:0
msgid "Period Length"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
#: view:asset.asset.report:0
#: selection:asset.asset.report,state:0
msgid "Draft"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Date of asset purchase"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Change Duration"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method_number:0
#: help:account.asset.category,method_number:0
#: help:account.asset.history,method_number:0
msgid "The number of depreciations needed to depreciate your asset"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Analytic Information"
msgstr ""
#. module: account_asset
#: field:account.asset.category,account_analytic_id:0
msgid "Analytic account"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method:0
#: field:account.asset.category,method:0
msgid "Computation Method"
msgstr ""
#. module: account_asset
#: constraint:account.asset.asset:0
msgid ""
"Prorata temporis can be applied only for time method \"number of "
"depreciations\"."
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,remaining_value:0
msgid "Next Period Depreciation"
msgstr ""
#. module: account_asset
#: help:account.asset.history,method_period:0
msgid "Time in month between two depreciations"
msgstr ""
#. module: account_asset
#: view:asset.modify:0
#: model:ir.actions.act_window,name:account_asset.action_asset_modify
#: model:ir.model,name:account_asset.model_asset_modify
msgid "Modify Asset"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,salvage_value:0
msgid "Salvage Value"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,category_id:0
#: view:account.asset.category:0
#: field:account.invoice.line,asset_category_id:0
#: view:asset.asset.report:0
msgid "Asset Category"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Assets in closed state"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,parent_id:0
msgid "Parent Asset"
msgstr ""
#. module: account_asset
#: view:account.asset.history:0
#: model:ir.model,name:account_asset.model_account_asset_history
msgid "Asset history"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Search Asset Category"
msgstr ""
#. module: account_asset
#: view:asset.modify:0
msgid "months"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice_line
msgid "Invoice Line"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Depreciation Board"
msgstr ""
#. module: account_asset
#: field:asset.asset.report,unposted_value:0
msgid "Unposted Amount"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_time:0
#: field:account.asset.category,method_time:0
#: field:account.asset.history,method_time:0
msgid "Time Method"
msgstr ""
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
#: view:asset.modify:0
msgid "or"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,note:0
#: field:account.asset.category,note:0
#: field:account.asset.history,note:0
msgid "Note"
msgstr ""
#. module: account_asset
#: help:account.asset.history,method_time:0
msgid ""
"The method to use to compute the dates and number of depreciation lines.\n"
"Number of Depreciations: Fix the number of depreciation lines and the time "
"between 2 depreciations.\n"
"Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method_time:0
#: help:account.asset.category,method_time:0
msgid ""
"Choose the method to use to compute the dates and number of depreciation "
"lines.\n"
" * Number of Depreciations: Fix the number of depreciation lines and the "
"time between 2 depreciations.\n"
" * Ending Date: Choose the time between 2 depreciations and the date the "
"depreciations won't go beyond."
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Assets in running state"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Closed"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,state:0
msgid ""
"When an asset is created, the status is 'Draft'.\n"
"If the asset is confirmed, the status goes in 'Running' and the depreciation "
"lines can be posted in the accounting.\n"
"You can manually close an asset when the depreciation is over. If the last "
"line of depreciation is posted, the asset automatically goes in that status."
msgstr ""
#. module: account_asset
#: field:account.asset.asset,state:0
#: field:asset.asset.report,state:0
msgid "Status"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,partner_id:0
#: field:asset.asset.report,partner_id:0
msgid "Partner"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Posted depreciation lines"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,child_ids:0
msgid "Children Assets"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Date of depreciation"
msgstr ""
#. module: account_asset
#: field:account.asset.history,user_id:0
msgid "User"
msgstr ""
#. module: account_asset
#: field:account.asset.category,account_asset_id:0
msgid "Asset Account"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
msgid "Extended Filters..."
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: view:asset.depreciation.confirmation.wizard:0
msgid "Compute"
msgstr ""
#. module: account_asset
#: view:account.asset.history:0
msgid "Asset History"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_asset_depreciation_confirmation_wizard
msgid "asset.depreciation.confirmation.wizard"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,active:0
msgid "Active"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,parent_state:0
msgid "State of Asset"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,name:0
msgid "Depreciation Name"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
#: field:account.asset.asset,history_ids:0
msgid "History"
msgstr ""
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
msgid "Compute Asset"
msgstr ""
#. module: account_asset
#: field:asset.depreciation.confirmation.wizard,period_id:0
msgid "Period"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "General"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,prorata:0
#: field:account.asset.category,prorata:0
msgid "Prorata Temporis"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_invoice
msgid "Invoice"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Set to Close"
msgstr ""
#. module: account_asset
#: view:asset.depreciation.confirmation.wizard:0
#: view:asset.modify:0
msgid "Cancel"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,state:0
#: selection:asset.asset.report,state:0
msgid "Close"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_move_line
msgid "Journal Items"
msgstr ""
#. module: account_asset
#: view:asset.modify:0
msgid "Asset Durations to Modify"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,purchase_date:0
#: view:asset.asset.report:0
#: field:asset.asset.report,purchase_date:0
msgid "Purchase Date"
msgstr ""
#. module: account_asset
#: selection:account.asset.asset,method:0
#: selection:account.asset.category,method:0
msgid "Degressive"
msgstr ""
#. module: account_asset
#: help:asset.depreciation.confirmation.wizard,period_id:0
msgid ""
"Choose the period for which you want to automatically post the depreciation "
"lines of running assets"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Current"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Depreciation Method"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,amount:0
msgid "Current Depreciation"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,name:0
msgid "Asset Name"
msgstr ""
#. module: account_asset
#: field:account.asset.category,open_asset:0
msgid "Skip Draft State"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
msgid "Depreciation Dates"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,currency_id:0
msgid "Currency"
msgstr ""
#. module: account_asset
#: field:account.asset.category,journal_id:0
msgid "Journal"
msgstr ""
#. module: account_asset
#: field:account.asset.history,name:0
msgid "History name"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,depreciated_value:0
msgid "Amount Already Depreciated"
msgstr ""
#. module: account_asset
#: help:account.asset.asset,method:0
#: help:account.asset.category,method:0
msgid ""
"Choose the method to use to compute the amount of depreciation lines.\n"
" * Linear: Calculated on basis of: Gross Value / Number of Depreciations\n"
" * Degressive: Calculated on basis of: Residual Value * Degressive Factor"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,move_check:0
#: view:asset.asset.report:0
#: field:asset.asset.report,move_check:0
msgid "Posted"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,help:account_asset.action_asset_asset_report
msgid ""
"<p>\n"
" From this report, you can have an overview on all depreciation. "
"The\n"
" tool search can also be used to personalise your Assets reports "
"and\n"
" so, match this analysis to your needs;\n"
" </p>\n"
" "
msgstr ""
#. module: account_asset
#: field:account.asset.asset,purchase_value:0
msgid "Gross Value"
msgstr ""
#. module: account_asset
#: field:account.asset.category,name:0
msgid "Name"
msgstr ""
#. module: account_asset
#: help:account.asset.category,open_asset:0
msgid ""
"Check this if you want to automatically confirm the assets of this category "
"when created by invoices."
msgstr ""
#. module: account_asset
#: field:asset.asset.report,name:0
msgid "Year"
msgstr ""
#. module: account_asset
#: model:ir.model,name:account_asset.model_account_asset_depreciation_line
msgid "Asset depreciation line"
msgstr ""
#. module: account_asset
#: view:account.asset.category:0
#: field:asset.asset.report,asset_category_id:0
#: model:ir.model,name:account_asset.model_account_asset_category
msgid "Asset category"
msgstr ""
#. module: account_asset
#: view:asset.asset.report:0
#: field:asset.asset.report,depreciation_value:0
msgid "Amount of Depreciation Lines"
msgstr ""
#. module: account_asset
#: code:addons/account_asset/wizard/wizard_asset_compute.py:49
#, python-format
msgid "Created Asset Moves"
msgstr ""
#. module: account_asset
#: field:account.asset.depreciation.line,sequence:0
msgid "Sequence"
msgstr ""
#. module: account_asset
#: help:account.asset.category,method_period:0
msgid "State here the time between 2 depreciations, in months"
msgstr ""
#. module: account_asset
#: field:account.asset.history,date:0
msgid "Date"
msgstr ""
#. module: account_asset
#: field:account.asset.asset,method_number:0
#: selection:account.asset.asset,method_time:0
#: field:account.asset.category,method_number:0
#: selection:account.asset.category,method_time:0
#: field:account.asset.history,method_number:0
#: selection:account.asset.history,method_time:0
#: field:asset.modify,method_number:0
msgid "Number of Depreciations"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Create Move"
msgstr ""
#. module: account_asset
#: view:account.asset.asset:0
msgid "Confirm Asset"
msgstr ""
#. module: account_asset
#: model:ir.actions.act_window,name:account_asset.action_account_asset_asset_tree
#: model:ir.ui.menu,name:account_asset.menu_action_account_asset_asset_tree
msgid "Asset Hierarchy"
msgstr ""

0
addons/account_asset/security/ir.model.access.csv Executable file → Normal file
View File

0
addons/account_asset/wizard/__init__.py Executable file → Normal file
View File

View File

0
addons/account_asset/wizard/wizard_asset_compute.py Executable file → Normal file
View File

View File

@ -0,0 +1,362 @@
# Hungarian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-05-05 23:08+0000\n"
"Last-Translator: krnkris <Unknown>\n"
"Language-Team: Hungarian <hu@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: 2013-05-06 05:40+0000\n"
"X-Generator: Launchpad (build 16598)\n"
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line.global,name:0
msgid "Originator to Beneficiary Information"
msgstr "Kezdeményezőtől a kedvezményezetthez intézett információ"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Confirmed"
msgstr "Jóváhagyott"
#. module: account_bank_statement_extensions
#: view:account.bank.statement:0
#: view:account.bank.statement.line:0
msgid "Glob. Id"
msgstr "Globális ID azonosító"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "CODA"
msgstr "CODA"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,parent_id:0
msgid "Parent Code"
msgstr "Szülő kód"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit"
msgstr "Tartozik"
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_cancel_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_cancel_statement_line
msgid "Cancel selected statement lines"
msgstr "Kiválasztott számlakivonat sorok visszavonása"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,val_date:0
msgid "Value Date"
msgstr "Értéknap"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Group By..."
msgstr "Csoportosítás ezzel..."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: selection:account.bank.statement.line,state:0
msgid "Draft"
msgstr "Tervezet"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement"
msgstr "Kivonat"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_confirm_statement_line
#: model:ir.model,name:account_bank_statement_extensions.model_confirm_statement_line
msgid "Confirm selected statement lines"
msgstr "Kiválasztott bankszámla kivonat sorok jóváhagyása"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
#: model:ir.actions.report.xml,name:account_bank_statement_extensions.bank_statement_balance_report
msgid "Bank Statement Balances Report"
msgstr "Bank kivonat egyenleg kimutatás"
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Cancel Lines"
msgstr "Sorok elvetése"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line_global
msgid "Batch Payment Info"
msgstr "Köptegelt fizetés információ"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,state:0
msgid "Status"
msgstr "Állapot"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid ""
"Delete operation not allowed. Please go to the associated bank "
"statement in order to delete and/or modify bank statement line."
msgstr ""
"A törlés végrehajtás nem engedélyezett. Kérem menjen az ide vonatkozó banki "
"kivonathoz, hogy azt törölhesse és/vagy módosíthassa."
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "or"
msgstr "vagy"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirm Lines"
msgstr "Jóváhagyott sorok5"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Transactions"
msgstr "Tranzakciók"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,type:0
msgid "Type"
msgstr "Típus"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: report:bank.statement.balance.report:0
msgid "Journal"
msgstr "Napló"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Confirmed Statement Lines."
msgstr "Jóváhagyott kivonat sorok"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit Transactions."
msgstr "Jóváírási tranzakció"
#. module: account_bank_statement_extensions
#: model:ir.actions.act_window,help:account_bank_statement_extensions.action_cancel_statement_line
msgid "cancel selected statement lines."
msgstr "kiválasztott kivonat sorok visszavonása"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_number:0
msgid "Counterparty Number"
msgstr "Ellanoldali szám"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Closing Balance"
msgstr "Záró egyenleg"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Date"
msgstr "Dátum"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
#: field:account.bank.statement.line,globalisation_amount:0
msgid "Glob. Amount"
msgstr "Globális összeg"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Debit Transactions."
msgstr "Terhelés tranzakciók"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Extended Filters..."
msgstr "Kiterjesztett szűrők…"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Confirmed lines cannot be changed anymore."
msgstr "Jóváhagyott sorokat enm lehet többé megváltoztatni."
#. module: account_bank_statement_extensions
#: view:cancel.statement.line:0
msgid "Are you sure you want to cancel the selected Bank Statement lines ?"
msgstr ""
"Biztos benne, hogy vissza akarja vonni a kijelölt banki kivonat sorokat?"
#. module: account_bank_statement_extensions
#: report:bank.statement.balance.report:0
msgid "Name"
msgstr "Név"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,name:0
msgid "OBI"
msgstr "OBI"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "ISO 20022"
msgstr "ISO 20022"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Notes"
msgstr "Jegyzetek"
#. module: account_bank_statement_extensions
#: selection:account.bank.statement.line.global,type:0
msgid "Manual"
msgstr "Kézi"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Bank Transaction"
msgstr "Banki tranzakciók"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Credit"
msgstr "Jóváírás"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,amount:0
msgid "Amount"
msgstr "Összeg"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Fin.Account"
msgstr "Főkönyvi számla"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_currency:0
msgid "Counterparty Currency"
msgstr "Ellenoldal pénzneme"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_bic:0
msgid "Counterparty BIC"
msgstr "Ellenoldali BIC"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,child_ids:0
msgid "Child Codes"
msgstr "Alárendelt kódok"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Search Bank Transactions"
msgstr "Banki tranzakciók keresése"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Are you sure you want to confirm the selected Bank Statement lines ?"
msgstr "Biztos, hogy jóvá akarja hagyni a kiválasztott banki kivonat sorait?"
#. module: account_bank_statement_extensions
#: help:account.bank.statement.line,globalisation_id:0
msgid ""
"Code to identify transactions belonging to the same globalisation level "
"within a batch payment"
msgstr ""
"Ugynahhoz, a kötegelt utaláson belüli, globalizált szinthez tartozó "
"tranzakció azonosító kód"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Draft Statement Lines."
msgstr "Tervezet kivonat sorok."
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Glob. Am."
msgstr ""
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Bankkivonat sor"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,code:0
msgid "Code"
msgstr "Kód"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,counterparty_name:0
msgid "Counterparty Name"
msgstr "Ellenoldal megnevezése"
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_res_partner_bank
msgid "Bank Accounts"
msgstr "Bankszámlák"
#. module: account_bank_statement_extensions
#: model:ir.model,name:account_bank_statement_extensions.model_account_bank_statement
msgid "Bank Statement"
msgstr "Bankszámlakivonat"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Line"
msgstr "Kivonat sor"
#. module: account_bank_statement_extensions
#: sql_constraint:account.bank.statement.line.global:0
msgid "The code must be unique !"
msgstr "A kódnak egyedinek kell lennie !"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line.global,bank_statement_line_ids:0
#: model:ir.actions.act_window,name:account_bank_statement_extensions.action_bank_statement_line
#: model:ir.ui.menu,name:account_bank_statement_extensions.bank_statement_line
msgid "Bank Statement Lines"
msgstr "Bankkivonat sorai"
#. module: account_bank_statement_extensions
#: code:addons/account_bank_statement_extensions/account_bank_statement.py:129
#, python-format
msgid "Warning!"
msgstr "Figyelem!"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line.global:0
msgid "Child Batch Payments"
msgstr "Alárendelt kötegelt utalások"
#. module: account_bank_statement_extensions
#: view:confirm.statement.line:0
msgid "Cancel"
msgstr "Mégse"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Statement Lines"
msgstr "Kivonat sorai"
#. module: account_bank_statement_extensions
#: view:account.bank.statement.line:0
msgid "Total Amount"
msgstr "Teljes érték"
#. module: account_bank_statement_extensions
#: field:account.bank.statement.line,globalisation_id:0
msgid "Globalisation ID"
msgstr "Globalizált ID azonosító"

View File

@ -0,0 +1,23 @@
# Thai translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-05-15 07:04+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Thai <th@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: 2013-05-16 05:12+0000\n"
"X-Generator: Launchpad (build 16626)\n"
#. module: account_cancel
#: view:account.invoice:0
msgid "Cancel"
msgstr ""

View File

@ -165,9 +165,8 @@ class res_partner(osv.osv):
else: else:
action_text = partner.latest_followup_level_id_without_lit.manual_action_note or '' action_text = partner.latest_followup_level_id_without_lit.manual_action_note or ''
#Check date: put the minimum date if it existed already #Check date: only change when it did not exist already
action_date = (partner.payment_next_action_date and min(partner.payment_next_action_date, fields.date.context_today(self, cr, uid, context=context)) action_date = partner.payment_next_action_date or fields.date.context_today(self, cr, uid, context=context)
) or fields.date.context_today(self, cr, uid, context=context)
# Check responsible: if partner has not got a responsible already, take from follow-up # Check responsible: if partner has not got a responsible already, take from follow-up
responsible_id = False responsible_id = False

View File

@ -24,7 +24,7 @@
# #
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software # along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
############################################################################## ##############################################################################

View File

@ -67,6 +67,7 @@ This module manages:
'test/sales_payment.yml', 'test/sales_payment.yml',
'test/account_voucher_report.yml', 'test/account_voucher_report.yml',
'test/case1_usd_usd.yml', 'test/case1_usd_usd.yml',
'test/case1_usd_usd_payment_rate.yml',
'test/case2_usd_eur_debtor_in_eur.yml', 'test/case2_usd_eur_debtor_in_eur.yml',
'test/case2_usd_eur_debtor_in_usd.yml', 'test/case2_usd_eur_debtor_in_usd.yml',
'test/case3_eur_eur.yml', 'test/case3_eur_eur.yml',

View File

@ -26,6 +26,19 @@ from openerp.osv import fields, osv
import openerp.addons.decimal_precision as dp import openerp.addons.decimal_precision as dp
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools import float_compare from openerp.tools import float_compare
from openerp.report import report_sxw
class res_currency(osv.osv):
_inherit = "res.currency"
def _get_current_rate(self, cr, uid, ids, name, arg, context=None):
if context is None:
context = {}
res = super(res_currency, self)._get_current_rate(cr, uid, ids, name, arg, context=context)
if context.get('voucher_special_currency') in ids and context.get('voucher_special_currency_rate'):
res[context.get('voucher_special_currency')] = context.get('voucher_special_currency_rate')
return res
class res_company(osv.osv): class res_company(osv.osv):
_inherit = "res.company" _inherit = "res.company"
@ -153,7 +166,7 @@ class account_voucher(osv.osv):
journal = journal_pool.browse(cr, uid, journal_id, context=context) journal = journal_pool.browse(cr, uid, journal_id, context=context)
if journal.currency: if journal.currency:
return journal.currency.id return journal.currency.id
return False return self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.currency_id.id
def _get_partner(self, cr, uid, context=None): def _get_partner(self, cr, uid, context=None):
if context is None: context = {} if context is None: context = {}
@ -222,26 +235,26 @@ class account_voucher(osv.osv):
def onchange_line_ids(self, cr, uid, ids, line_dr_ids, line_cr_ids, amount, voucher_currency, type, context=None): def onchange_line_ids(self, cr, uid, ids, line_dr_ids, line_cr_ids, amount, voucher_currency, type, context=None):
context = context or {} context = context or {}
if not line_dr_ids and not line_cr_ids: if not line_dr_ids and not line_cr_ids:
return {'value':{}} return {'value':{'writeoff_amount': 0.0}}
line_osv = self.pool.get("account.voucher.line") line_osv = self.pool.get("account.voucher.line")
line_dr_ids = resolve_o2m_operations(cr, uid, line_osv, line_dr_ids, ['amount'], context) line_dr_ids = resolve_o2m_operations(cr, uid, line_osv, line_dr_ids, ['amount'], context)
line_cr_ids = resolve_o2m_operations(cr, uid, line_osv, line_cr_ids, ['amount'], context) line_cr_ids = resolve_o2m_operations(cr, uid, line_osv, line_cr_ids, ['amount'], context)
#compute the field is_multi_currency that is used to hide/display options linked to secondary currency on the voucher #compute the field is_multi_currency that is used to hide/display options linked to secondary currency on the voucher
is_multi_currency = False is_multi_currency = False
if voucher_currency: #loop on the voucher lines to see if one of these has a secondary currency. If yes, we need to see the options
# if the voucher currency is not False, it means it is different than the company currency and we need to display the options for voucher_line in line_dr_ids+line_cr_ids:
is_multi_currency = True line_id = voucher_line.get('id') and self.pool.get('account.voucher.line').browse(cr, uid, voucher_line['id'], context=context).move_line_id.id or voucher_line.get('move_line_id')
else: if line_id and self.pool.get('account.move.line').browse(cr, uid, line_id, context=context).currency_id:
#loop on the voucher lines to see if one of these has a secondary currency. If yes, we need to define the options is_multi_currency = True
for voucher_line in line_dr_ids+line_cr_ids: break
company_currency = False
company_currency = voucher_line.get('move_line_id', False) and self.pool.get('account.move.line').browse(cr, uid, voucher_line.get('move_line_id'), context=context).company_id.currency_id.id
if voucher_line.get('currency_id', company_currency) != company_currency:
is_multi_currency = True
break
return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount, type), 'is_multi_currency': is_multi_currency}} return {'value': {'writeoff_amount': self._compute_writeoff_amount(cr, uid, line_dr_ids, line_cr_ids, amount, type), 'is_multi_currency': is_multi_currency}}
def _get_journal_currency(self, cr, uid, ids, name, args, context=None):
res = {}
for voucher in self.browse(cr, uid, ids, context=context):
res[voucher.id] = voucher.journal_id.currency and voucher.journal_id.currency.id or voucher.company_id.currency_id.id
return res
def _get_writeoff_amount(self, cr, uid, ids, name, args, context=None): def _get_writeoff_amount(self, cr, uid, ids, name, args, context=None):
if not ids: return {} if not ids: return {}
currency_obj = self.pool.get('res.currency') currency_obj = self.pool.get('res.currency')
@ -258,20 +271,48 @@ class account_voucher(osv.osv):
return res return res
def _paid_amount_in_company_currency(self, cr, uid, ids, name, args, context=None): def _paid_amount_in_company_currency(self, cr, uid, ids, name, args, context=None):
if not ids: return {} if context is None:
context = {}
res = {}
ctx = context.copy()
for v in self.browse(cr, uid, ids, context=context):
ctx.update({'date': v.date})
#make a new call to browse in order to have the right date in the context, to get the right currency rate
voucher = self.browse(cr, uid, v.id, context=ctx)
ctx.update({
'voucher_special_currency': voucher.payment_rate_currency_id and voucher.payment_rate_currency_id.id or False,
'voucher_special_currency_rate': voucher.currency_id.rate * voucher.payment_rate,})
res[voucher.id] = self.pool.get('res.currency').compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, voucher.amount, context=ctx)
return res
def _get_currency_help_label(self, cr, uid, currency_id, payment_rate, payment_rate_currency_id, context=None):
"""
This function builds a string to help the users to understand the behavior of the payment rate fields they can specify on the voucher.
This string is only used to improve the usability in the voucher form view and has no other effect.
:param currency_id: the voucher currency
:type currency_id: integer
:param payment_rate: the value of the payment_rate field of the voucher
:type payment_rate: float
:param payment_rate_currency_id: the value of the payment_rate_currency_id field of the voucher
:type payment_rate_currency_id: integer
:return: translated string giving a tip on what's the effect of the current payment rate specified
:rtype: str
"""
rml_parser = report_sxw.rml_parse(cr, uid, 'currency_help_label', context=context)
currency_pool = self.pool.get('res.currency')
currency_str = payment_rate_str = ''
if currency_id:
currency_str = rml_parser.formatLang(1, currency_obj=currency_pool.browse(cr, uid, currency_id, context=context))
if payment_rate_currency_id:
payment_rate_str = rml_parser.formatLang(payment_rate, currency_obj=currency_pool.browse(cr, uid, payment_rate_currency_id, context=context))
currency_help_label = _('At the operation date, the exchange rate was\n%s = %s') % (currency_str, payment_rate_str)
return currency_help_label
def _fnct_currency_help_label(self, cr, uid, ids, name, args, context=None):
res = {} res = {}
rate = 1.0
for voucher in self.browse(cr, uid, ids, context=context): for voucher in self.browse(cr, uid, ids, context=context):
if voucher.currency_id: res[voucher.id] = self._get_currency_help_label(cr, uid, voucher.currency_id.id, voucher.payment_rate, voucher.payment_rate_currency_id.id, context=context)
if voucher.company_id.currency_id.id == voucher.payment_rate_currency_id.id:
rate = 1 / voucher.payment_rate
else:
ctx = context.copy()
ctx.update({'date': voucher.date})
voucher_rate = self.browse(cr, uid, voucher.id, context=ctx).currency_id.rate
company_currency_rate = voucher.company_id.currency_id.rate
rate = voucher_rate * company_currency_rate
res[voucher.id] = voucher.amount / rate
return res return res
_name = 'account.voucher' _name = 'account.voucher'
@ -304,8 +345,7 @@ class account_voucher(osv.osv):
domain=[('type','=','dr')], context={'default_type':'dr'}, readonly=True, states={'draft':[('readonly',False)]}), domain=[('type','=','dr')], context={'default_type':'dr'}, readonly=True, states={'draft':[('readonly',False)]}),
'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'period_id': fields.many2one('account.period', 'Period', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'narration':fields.text('Notes', readonly=True, states={'draft':[('readonly',False)]}), 'narration':fields.text('Notes', readonly=True, states={'draft':[('readonly',False)]}),
# 'currency_id':fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'currency_id': fields.function(_get_journal_currency, type='many2one', relation='res.currency', string='Currency', readonly=True, required=True),
'currency_id': fields.related('journal_id','currency', type='many2one', relation='res.currency', string='Currency', readonly=True),
'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}), 'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}),
'state':fields.selection( 'state':fields.selection(
[('draft','Draft'), [('draft','Draft'),
@ -346,6 +386,7 @@ class account_voucher(osv.osv):
help='The specific rate that will be used, in this voucher, between the selected currency (in \'Payment Rate Currency\' field) and the voucher currency.'), help='The specific rate that will be used, in this voucher, between the selected currency (in \'Payment Rate Currency\' field) and the voucher currency.'),
'paid_amount_in_company_currency': fields.function(_paid_amount_in_company_currency, string='Paid Amount in Company Currency', type='float', readonly=True), 'paid_amount_in_company_currency': fields.function(_paid_amount_in_company_currency, string='Paid Amount in Company Currency', type='float', readonly=True),
'is_multi_currency': fields.boolean('Multi Currency Voucher', help='Fields with internal purpose only that depicts if the voucher is a multi currency one or not'), 'is_multi_currency': fields.boolean('Multi Currency Voucher', help='Fields with internal purpose only that depicts if the voucher is a multi currency one or not'),
'currency_help_label': fields.function(_fnct_currency_help_label, type='text', string="Helping Sentence", help="This sentence helps you to know how to specify the payment rate by giving you the direct effect it has"),
} }
_defaults = { _defaults = {
'active': True, 'active': True,
@ -422,6 +463,8 @@ class account_voucher(osv.osv):
partner_pool = self.pool.get('res.partner') partner_pool = self.pool.get('res.partner')
position_pool = self.pool.get('account.fiscal.position') position_pool = self.pool.get('account.fiscal.position')
line_pool = self.pool.get('account.voucher.line') line_pool = self.pool.get('account.voucher.line')
if not line_ids:
line_ids = []
res = { res = {
'tax_amount': False, 'tax_amount': False,
'amount': False, 'amount': False,
@ -516,23 +559,26 @@ class account_voucher(osv.osv):
return default return default
def onchange_rate(self, cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=None): def onchange_rate(self, cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=None):
res = {'value': {'paid_amount_in_company_currency': amount}} res = {'value': {'paid_amount_in_company_currency': amount, 'currency_help_label': self._get_currency_help_label(cr, uid, currency_id, rate, payment_rate_currency_id, context=context)}}
company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id if rate and amount and currency_id:
if rate and amount and currency_id:# and currency_id == payment_rate_currency_id: company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id
voucher_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context).rate #context should contain the date, the payment currency and the payment rate specified on the voucher
if company_currency.id == payment_rate_currency_id: amount_in_company_currency = self.pool.get('res.currency').compute(cr, uid, currency_id, company_currency.id, amount, context=context)
company_rate = rate res['value']['paid_amount_in_company_currency'] = amount_in_company_currency
else:
company_rate = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id.rate
res['value']['paid_amount_in_company_currency'] = amount / voucher_rate * company_rate
return res return res
def onchange_amount(self, cr, uid, ids, amount, rate, partner_id, journal_id, currency_id, ttype, date, payment_rate_currency_id, company_id, context=None): def onchange_amount(self, cr, uid, ids, amount, rate, partner_id, journal_id, currency_id, ttype, date, payment_rate_currency_id, company_id, context=None):
if context is None: if context is None:
context = {} context = {}
res = self.recompute_voucher_lines(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=context)
ctx = context.copy() ctx = context.copy()
ctx.update({'date': date}) ctx.update({'date': date})
#read the voucher rate with the right date in the context
currency_id = currency_id or self.pool.get('res.company').browse(cr, uid, company_id, context=ctx).currency_id.id
voucher_rate = self.pool.get('res.currency').read(cr, uid, currency_id, ['rate'], context=ctx)['rate']
ctx.update({
'voucher_special_currency': payment_rate_currency_id,
'voucher_special_currency_rate': rate * voucher_rate})
res = self.recompute_voucher_lines(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=ctx)
vals = self.onchange_rate(cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx) vals = self.onchange_rate(cr, uid, ids, rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx)
for key in vals.keys(): for key in vals.keys():
res[key].update(vals[key]) res[key].update(vals[key])
@ -546,6 +592,7 @@ class account_voucher(osv.osv):
journal = self.pool.get('account.journal').browse(cr, uid, journal_id, context=context) journal = self.pool.get('account.journal').browse(cr, uid, journal_id, context=context)
company_id = journal.company_id.id company_id = journal.company_id.id
payment_rate = 1.0 payment_rate = 1.0
currency_id = currency_id or journal.company_id.currency_id.id
payment_rate_currency_id = currency_id payment_rate_currency_id = currency_id
ctx = context.copy() ctx = context.copy()
ctx.update({'date': date}) ctx.update({'date': date})
@ -561,24 +608,62 @@ class account_voucher(osv.osv):
# is not in the voucher currency # is not in the voucher currency
payment_rate_currency_id = voucher_line['currency_id'] payment_rate_currency_id = voucher_line['currency_id']
tmp = currency_obj.browse(cr, uid, payment_rate_currency_id, context=ctx).rate tmp = currency_obj.browse(cr, uid, payment_rate_currency_id, context=ctx).rate
voucher_currency_id = currency_id or journal.company_id.currency_id.id payment_rate = tmp / currency_obj.browse(cr, uid, currency_id, context=ctx).rate
payment_rate = tmp / currency_obj.browse(cr, uid, voucher_currency_id, context=ctx).rate
break break
vals['value'].update({
'payment_rate': payment_rate,
'currency_id': currency_id,
'payment_rate_currency_id': payment_rate_currency_id
})
#read the voucher rate with the right date in the context
voucher_rate = self.pool.get('res.currency').read(cr, uid, currency_id, ['rate'], context=ctx)['rate']
ctx.update({
'voucher_special_currency_rate': payment_rate * voucher_rate,
'voucher_special_currency': payment_rate_currency_id})
res = self.onchange_rate(cr, uid, ids, payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx) res = self.onchange_rate(cr, uid, ids, payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx)
for key in res.keys(): for key in res.keys():
vals[key].update(res[key]) vals[key].update(res[key])
vals['value'].update({'payment_rate': payment_rate})
if payment_rate_currency_id:
vals['value'].update({'payment_rate_currency_id': payment_rate_currency_id})
return vals return vals
def basic_onchange_partner(self, cr, uid, ids, partner_id, journal_id, ttype, context=None):
partner_pool = self.pool.get('res.partner')
journal_pool = self.pool.get('account.journal')
res = {'value': {'account_id': False}}
if not partner_id or not journal_id:
return res
journal = journal_pool.browse(cr, uid, journal_id, context=context)
partner = partner_pool.browse(cr, uid, partner_id, context=context)
account_id = False
if journal.type in ('sale','sale_refund'):
account_id = partner.property_account_receivable.id
elif journal.type in ('purchase', 'purchase_refund','expense'):
account_id = partner.property_account_payable.id
else:
account_id = journal.default_credit_account_id.id or journal.default_debit_account_id.id
res['value']['account_id'] = account_id
return res
def onchange_partner_id(self, cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=None): def onchange_partner_id(self, cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=None):
if not journal_id: if not journal_id:
return {} return {}
res = self.recompute_voucher_lines(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=context) if context is None:
vals = self.recompute_payment_rate(cr, uid, ids, res, currency_id, date, ttype, journal_id, amount, context=context) context = {}
#TODO: comment me and use me directly in the sales/purchases views
res = self.basic_onchange_partner(cr, uid, ids, partner_id, journal_id, ttype, context=context)
if ttype in ['sale', 'purchase']:
return res
ctx = context.copy()
# not passing the payment_rate currency and the payment_rate in the context but it's ok because they are reset in recompute_payment_rate
ctx.update({'date': date})
vals = self.recompute_voucher_lines(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=ctx)
vals2 = self.recompute_payment_rate(cr, uid, ids, vals, currency_id, date, ttype, journal_id, amount, context=context)
for key in vals.keys(): for key in vals.keys():
res[key].update(vals[key]) res[key].update(vals[key])
for key in vals2.keys():
res[key].update(vals2[key])
#TODO: can probably be removed now
#TODO: onchange_partner_id() should not returns [pre_line, line_dr_ids, payment_rate...] for type sale, and not #TODO: onchange_partner_id() should not returns [pre_line, line_dr_ids, payment_rate...] for type sale, and not
# [pre_line, line_cr_ids, payment_rate...] for type purchase. # [pre_line, line_cr_ids, payment_rate...] for type purchase.
# We should definitively split account.voucher object in two and make distinct on_change functions. In the # We should definitively split account.voucher object in two and make distinct on_change functions. In the
@ -621,8 +706,6 @@ class account_voucher(osv.osv):
if context is None: if context is None:
context = {} context = {}
context_multi_currency = context.copy() context_multi_currency = context.copy()
if date:
context_multi_currency.update({'date': date})
currency_pool = self.pool.get('res.currency') currency_pool = self.pool.get('res.currency')
move_line_pool = self.pool.get('account.move.line') move_line_pool = self.pool.get('account.move.line')
@ -646,18 +729,6 @@ class account_voucher(osv.osv):
journal = journal_pool.browse(cr, uid, journal_id, context=context) journal = journal_pool.browse(cr, uid, journal_id, context=context)
partner = partner_pool.browse(cr, uid, partner_id, context=context) partner = partner_pool.browse(cr, uid, partner_id, context=context)
currency_id = currency_id or journal.company_id.currency_id.id currency_id = currency_id or journal.company_id.currency_id.id
account_id = False
if journal.type in ('sale','sale_refund'):
account_id = partner.property_account_receivable.id
elif journal.type in ('purchase', 'purchase_refund','expense'):
account_id = partner.property_account_payable.id
else:
account_id = journal.default_credit_account_id.id or journal.default_debit_account_id.id
default['value']['account_id'] = account_id
if journal.type not in ('cash', 'bank'):
return default
total_credit = 0.0 total_credit = 0.0
total_debit = 0.0 total_debit = 0.0
@ -715,12 +786,13 @@ class account_voucher(osv.osv):
if _remove_noise_in_o2m(): if _remove_noise_in_o2m():
continue continue
if line.currency_id and currency_id==line.currency_id.id: if line.currency_id and currency_id == line.currency_id.id:
amount_original = abs(line.amount_currency) amount_original = abs(line.amount_currency)
amount_unreconciled = abs(line.amount_residual_currency) amount_unreconciled = abs(line.amount_residual_currency)
else: else:
amount_original = currency_pool.compute(cr, uid, company_currency, currency_id, line.credit or line.debit or 0.0) #always use the amount booked in the company currency as the basis of the conversion into the voucher currency
amount_unreconciled = currency_pool.compute(cr, uid, company_currency, currency_id, abs(line.amount_residual)) amount_original = currency_pool.compute(cr, uid, company_currency, currency_id, line.credit or line.debit or 0.0, context=context_multi_currency)
amount_unreconciled = currency_pool.compute(cr, uid, company_currency, currency_id, abs(line.amount_residual), context=context_multi_currency)
line_currency_id = line.currency_id and line.currency_id.id or company_currency line_currency_id = line.currency_id and line.currency_id.id or company_currency
rs = { rs = {
'name':line.move_id.name, 'name':line.move_id.name,
@ -766,10 +838,15 @@ class account_voucher(osv.osv):
if context is None: if context is None:
context = {} context = {}
res = {'value': {}} res = {'value': {}}
#set the default payment rate of the voucher and compute the paid amount in company currency if currency_id:
if currency_id and currency_id == payment_rate_currency_id: #set the default payment rate of the voucher and compute the paid amount in company currency
ctx = context.copy() ctx = context.copy()
ctx.update({'date': date}) ctx.update({'date': date})
#read the voucher rate with the right date in the context
voucher_rate = self.pool.get('res.currency').read(cr, uid, currency_id, ['rate'], context=ctx)['rate']
ctx.update({
'voucher_special_currency_rate': payment_rate * voucher_rate,
'voucher_special_currency': payment_rate_currency_id})
vals = self.onchange_rate(cr, uid, ids, payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx) vals = self.onchange_rate(cr, uid, ids, payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context=ctx)
for key in vals.keys(): for key in vals.keys():
res[key].update(vals[key]) res[key].update(vals[key])
@ -789,7 +866,8 @@ class account_voucher(osv.osv):
period_pool = self.pool.get('account.period') period_pool = self.pool.get('account.period')
currency_obj = self.pool.get('res.currency') currency_obj = self.pool.get('res.currency')
ctx = context.copy() ctx = context.copy()
ctx.update({'company_id': company_id}) ctx.update({'company_id': company_id, 'account_period_prefer_normal': True})
voucher_currency_id = currency_id or self.pool.get('res.company').browse(cr, uid, company_id, context=ctx).currency_id.id
pids = period_pool.find(cr, uid, date, context=ctx) pids = period_pool.find(cr, uid, date, context=ctx)
if pids: if pids:
res['value'].update({'period_id':pids[0]}) res['value'].update({'period_id':pids[0]})
@ -798,9 +876,8 @@ class account_voucher(osv.osv):
payment_rate = 1.0 payment_rate = 1.0
if payment_rate_currency_id != currency_id: if payment_rate_currency_id != currency_id:
tmp = currency_obj.browse(cr, uid, payment_rate_currency_id, context=ctx).rate tmp = currency_obj.browse(cr, uid, payment_rate_currency_id, context=ctx).rate
voucher_currency_id = currency_id or self.pool.get('res.company').browse(cr, uid, company_id, context=ctx).currency_id.id
payment_rate = tmp / currency_obj.browse(cr, uid, voucher_currency_id, context=ctx).rate payment_rate = tmp / currency_obj.browse(cr, uid, voucher_currency_id, context=ctx).rate
vals = self.onchange_payment_rate_currency(cr, uid, ids, currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context=context) vals = self.onchange_payment_rate_currency(cr, uid, ids, voucher_currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context=context)
vals['value'].update({'payment_rate': payment_rate}) vals['value'].update({'payment_rate': payment_rate})
for key in vals.keys(): for key in vals.keys():
res[key].update(vals[key]) res[key].update(vals[key])
@ -823,7 +900,15 @@ class account_voucher(osv.osv):
currency_id = False currency_id = False
if journal.currency: if journal.currency:
currency_id = journal.currency.id currency_id = journal.currency.id
else:
currency_id = journal.company_id.currency_id.id
vals['value'].update({'currency_id': currency_id}) vals['value'].update({'currency_id': currency_id})
#in case we want to register the payment directly from an invoice, it's confusing to allow to switch the journal
#without seeing that the amount is expressed in the journal currency, and not in the invoice currency. So to avoid
#this common mistake, we simply reset the amount to 0 if the currency is not the invoice currency.
if context.get('payment_expected_currency') and currency_id != context.get('payment_expected_currency'):
vals['value']['amount'] = 0
amount = 0
res = self.onchange_partner_id(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context) res = self.onchange_partner_id(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context)
for key in res.keys(): for key in res.keys():
vals[key].update(res[key]) vals[key].update(res[key])
@ -905,8 +990,8 @@ class account_voucher(osv.osv):
current_currency = self._get_current_currency(cr, uid, voucher_id, context) current_currency = self._get_current_currency(cr, uid, voucher_id, context)
if current_currency <> company_currency: if current_currency <> company_currency:
context_multi_currency = context.copy() context_multi_currency = context.copy()
voucher_brw = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context) voucher = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context)
context_multi_currency.update({'date': voucher_brw.date}) context_multi_currency.update({'date': voucher.date})
return context_multi_currency return context_multi_currency
return context return context
@ -921,33 +1006,33 @@ class account_voucher(osv.osv):
:return: mapping between fieldname and value of account move line to create :return: mapping between fieldname and value of account move line to create
:rtype: dict :rtype: dict
''' '''
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context) voucher = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
debit = credit = 0.0 debit = credit = 0.0
# TODO: is there any other alternative then the voucher type ?? # TODO: is there any other alternative then the voucher type ??
# ANSWER: We can have payment and receipt "In Advance". # ANSWER: We can have payment and receipt "In Advance".
# TODO: Make this logic available. # TODO: Make this logic available.
# -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt # -for sale, purchase we have but for the payment and receipt we do not have as based on the bank/cash journal we can not know its payment or receipt
if voucher_brw.type in ('purchase', 'payment'): if voucher.type in ('purchase', 'payment'):
credit = voucher_brw.paid_amount_in_company_currency credit = voucher.paid_amount_in_company_currency
elif voucher_brw.type in ('sale', 'receipt'): elif voucher.type in ('sale', 'receipt'):
debit = voucher_brw.paid_amount_in_company_currency debit = voucher.paid_amount_in_company_currency
if debit < 0: credit = -debit; debit = 0.0 if debit < 0: credit = -debit; debit = 0.0
if credit < 0: debit = -credit; credit = 0.0 if credit < 0: debit = -credit; credit = 0.0
sign = debit - credit < 0 and -1 or 1 sign = debit - credit < 0 and -1 or 1
#set the first line of the voucher #set the first line of the voucher
move_line = { move_line = {
'name': voucher_brw.name or '/', 'name': voucher.name or '/',
'debit': debit, 'debit': debit,
'credit': credit, 'credit': credit,
'account_id': voucher_brw.account_id.id, 'account_id': voucher.account_id.id,
'move_id': move_id, 'move_id': move_id,
'journal_id': voucher_brw.journal_id.id, 'journal_id': voucher.journal_id.id,
'period_id': voucher_brw.period_id.id, 'period_id': voucher.period_id.id,
'partner_id': voucher_brw.partner_id.id, 'partner_id': voucher.partner_id.id,
'currency_id': company_currency <> current_currency and current_currency or False, 'currency_id': company_currency <> current_currency and current_currency or False,
'amount_currency': company_currency <> current_currency and sign * voucher_brw.amount or 0.0, 'amount_currency': company_currency <> current_currency and sign * voucher.amount or 0.0,
'date': voucher_brw.date, 'date': voucher.date,
'date_maturity': voucher_brw.date_due 'date_maturity': voucher.date_due
} }
return move_line return move_line
@ -960,31 +1045,31 @@ class account_voucher(osv.osv):
:rtype: dict :rtype: dict
''' '''
seq_obj = self.pool.get('ir.sequence') seq_obj = self.pool.get('ir.sequence')
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context) voucher = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
if voucher_brw.number: if voucher.number:
name = voucher_brw.number name = voucher.number
elif voucher_brw.journal_id.sequence_id: elif voucher.journal_id.sequence_id:
if not voucher_brw.journal_id.sequence_id.active: if not voucher.journal_id.sequence_id.active:
raise osv.except_osv(_('Configuration Error!'), raise osv.except_osv(_('Configuration Error !'),
_('Please activate the sequence of selected journal !')) _('Please activate the sequence of selected journal !'))
c = dict(context) c = dict(context)
c.update({'fiscalyear_id': voucher_brw.period_id.fiscalyear_id.id}) c.update({'fiscalyear_id': voucher.period_id.fiscalyear_id.id})
name = seq_obj.next_by_id(cr, uid, voucher_brw.journal_id.sequence_id.id, context=c) name = seq_obj.next_by_id(cr, uid, voucher.journal_id.sequence_id.id, context=c)
else: else:
raise osv.except_osv(_('Error!'), raise osv.except_osv(_('Error!'),
_('Please define a sequence on the journal.')) _('Please define a sequence on the journal.'))
if not voucher_brw.reference: if not voucher.reference:
ref = name.replace('/','') ref = name.replace('/','')
else: else:
ref = voucher_brw.reference ref = voucher.reference
move = { move = {
'name': name, 'name': name,
'journal_id': voucher_brw.journal_id.id, 'journal_id': voucher.journal_id.id,
'narration': voucher_brw.narration, 'narration': voucher.narration,
'date': voucher_brw.date, 'date': voucher.date,
'ref': ref, 'ref': ref,
'period_id': voucher_brw.period_id.id, 'period_id': voucher.period_id.id,
} }
return move return move
@ -1011,7 +1096,10 @@ class account_voucher(osv.osv):
raise osv.except_osv(_('Insufficient Configuration!'),_("You should configure the 'Gain Exchange Rate Account' in the accounting settings, to manage automatically the booking of accounting entries related to differences between exchange rates.")) raise osv.except_osv(_('Insufficient Configuration!'),_("You should configure the 'Gain Exchange Rate Account' in the accounting settings, to manage automatically the booking of accounting entries related to differences between exchange rates."))
# Even if the amount_currency is never filled, we need to pass the foreign currency because otherwise # Even if the amount_currency is never filled, we need to pass the foreign currency because otherwise
# the receivable/payable account may have a secondary currency, which render this field mandatory # the receivable/payable account may have a secondary currency, which render this field mandatory
account_currency_id = company_currency <> current_currency and current_currency or False if line.account_id.currency_id:
account_currency_id = line.account_id.currency_id.id
else:
account_currency_id = company_currency <> current_currency and current_currency or False
move_line = { move_line = {
'journal_id': line.voucher_id.journal_id.id, 'journal_id': line.voucher_id.journal_id.id,
'period_id': line.voucher_id.period_id.id, 'period_id': line.voucher_id.period_id.id,
@ -1054,16 +1142,11 @@ class account_voucher(osv.osv):
:return: the amount in the currency of the voucher's company :return: the amount in the currency of the voucher's company
:rtype: float :rtype: float
''' '''
if context is None:
context = {}
currency_obj = self.pool.get('res.currency') currency_obj = self.pool.get('res.currency')
voucher = self.browse(cr, uid, voucher_id, context=context) voucher = self.browse(cr, uid, voucher_id, context=context)
res = amount return currency_obj.compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, amount, context=context)
if voucher.payment_rate_currency_id.id == voucher.company_id.currency_id.id:
# the rate specified on the voucher is for the company currency
res = currency_obj.round(cr, uid, voucher.company_id.currency_id, (amount * voucher.payment_rate))
else:
# the rate specified on the voucher is not relevant, we use all the rates in the system
res = currency_obj.compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, amount, context=context)
return res
def voucher_move_line_create(self, cr, uid, voucher_id, line_total, move_id, company_currency, current_currency, context=None): def voucher_move_line_create(self, cr, uid, voucher_id, line_total, move_id, company_currency, current_currency, context=None):
''' '''
@ -1087,39 +1170,45 @@ class account_voucher(osv.osv):
tot_line = line_total tot_line = line_total
rec_lst_ids = [] rec_lst_ids = []
voucher_brw = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context) date = self.read(cr, uid, voucher_id, ['date'], context=context)['date']
ctx = context.copy() ctx = context.copy()
ctx.update({'date': voucher_brw.date}) ctx.update({'date': date})
voucher = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context=ctx)
voucher_currency = voucher.journal_id.currency or voucher.company_id.currency_id
ctx.update({
'voucher_special_currency_rate': voucher_currency.rate * voucher.payment_rate ,
'voucher_special_currency': voucher.payment_rate_currency_id and voucher.payment_rate_currency_id.id or False,})
prec = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account') prec = self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')
for line in voucher_brw.line_ids: for line in voucher.line_ids:
#create one move line per voucher line where amount is not 0.0 #create one move line per voucher line where amount is not 0.0
# AND (second part of the clause) only if the original move line was not having debit = credit = 0 (which is a legal value) # AND (second part of the clause) only if the original move line was not having debit = credit = 0 (which is a legal value)
if not line.amount and not (line.move_line_id and not float_compare(line.move_line_id.debit, line.move_line_id.credit, precision_rounding=prec) and not float_compare(line.move_line_id.debit, 0.0, precision_rounding=prec)): if not line.amount and not (line.move_line_id and not float_compare(line.move_line_id.debit, line.move_line_id.credit, precision_rounding=prec) and not float_compare(line.move_line_id.debit, 0.0, precision_rounding=prec)):
continue continue
# convert the amount set on the voucher line into the currency of the voucher's company # convert the amount set on the voucher line into the currency of the voucher's company
amount = self._convert_amount(cr, uid, line.untax_amount or line.amount, voucher_brw.id, context=ctx) # this calls res_curreny.compute() with the right context, so that it will take either the rate on the voucher if it is relevant or will use the default behaviour
amount = self._convert_amount(cr, uid, line.untax_amount or line.amount, voucher.id, context=ctx)
# if the amount encoded in voucher is equal to the amount unreconciled, we need to compute the # if the amount encoded in voucher is equal to the amount unreconciled, we need to compute the
# currency rate difference # currency rate difference
if line.amount == line.amount_unreconciled: if line.amount == line.amount_unreconciled:
if not line.move_line_id: if not line.move_line_id:
raise osv.except_osv(_('Wrong voucher line'),_("The invoice you are willing to pay is not valid anymore.")) raise osv.except_osv(_('Wrong voucher line'),_("The invoice you are willing to pay is not valid anymore."))
sign = voucher_brw.type in ('payment', 'purchase') and -1 or 1 sign = voucher.type in ('payment', 'purchase') and -1 or 1
currency_rate_difference = sign * (line.move_line_id.amount_residual - amount) currency_rate_difference = sign * (line.move_line_id.amount_residual - amount)
else: else:
currency_rate_difference = 0.0 currency_rate_difference = 0.0
move_line = { move_line = {
'journal_id': voucher_brw.journal_id.id, 'journal_id': voucher.journal_id.id,
'period_id': voucher_brw.period_id.id, 'period_id': voucher.period_id.id,
'name': line.name or '/', 'name': line.name or '/',
'account_id': line.account_id.id, 'account_id': line.account_id.id,
'move_id': move_id, 'move_id': move_id,
'partner_id': voucher_brw.partner_id.id, 'partner_id': voucher.partner_id.id,
'currency_id': line.move_line_id and (company_currency <> line.move_line_id.currency_id.id and line.move_line_id.currency_id.id) or False, 'currency_id': line.move_line_id and (company_currency <> line.move_line_id.currency_id.id and line.move_line_id.currency_id.id) or False,
'analytic_account_id': line.account_analytic_id and line.account_analytic_id.id or False, 'analytic_account_id': line.account_analytic_id and line.account_analytic_id.id or False,
'quantity': 1, 'quantity': 1,
'credit': 0.0, 'credit': 0.0,
'debit': 0.0, 'debit': 0.0,
'date': voucher_brw.date 'date': voucher.date
} }
if amount < 0: if amount < 0:
amount = -amount amount = -amount
@ -1135,9 +1224,9 @@ class account_voucher(osv.osv):
tot_line -= amount tot_line -= amount
move_line['credit'] = amount move_line['credit'] = amount
if voucher_brw.tax_id and voucher_brw.type in ('sale', 'purchase'): if voucher.tax_id and voucher.type in ('sale', 'purchase'):
move_line.update({ move_line.update({
'account_tax_id': voucher_brw.tax_id.id, 'account_tax_id': voucher.tax_id.id,
}) })
if move_line.get('account_tax_id', False): if move_line.get('account_tax_id', False):
@ -1149,7 +1238,6 @@ class account_voucher(osv.osv):
foreign_currency_diff = 0.0 foreign_currency_diff = 0.0
amount_currency = False amount_currency = False
if line.move_line_id: if line.move_line_id:
voucher_currency = voucher_brw.currency_id and voucher_brw.currency_id.id or voucher_brw.journal_id.company_id.currency_id.id
# We want to set it on the account move line as soon as the original line had a foreign currency # We want to set it on the account move line as soon as the original line had a foreign currency
if line.move_line_id.currency_id and line.move_line_id.currency_id.id != company_currency: if line.move_line_id.currency_id and line.move_line_id.currency_id.id != company_currency:
# we compute the amount in that foreign currency. # we compute the amount in that foreign currency.
@ -1157,22 +1245,19 @@ class account_voucher(osv.osv):
# if the voucher and the voucher line share the same currency, there is no computation to do # if the voucher and the voucher line share the same currency, there is no computation to do
sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1 sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1
amount_currency = sign * (line.amount) amount_currency = sign * (line.amount)
elif line.move_line_id.currency_id.id == voucher_brw.payment_rate_currency_id.id:
# if the rate is specified on the voucher, we must use it
voucher_rate = currency_obj.browse(cr, uid, voucher_currency, context=ctx).rate
amount_currency = (move_line['debit'] - move_line['credit']) * voucher_brw.payment_rate * voucher_rate
else: else:
# otherwise we use the rates of the system (giving the voucher date in the context) # if the rate is specified on the voucher, it will be used thanks to the special keys in the context
# otherwise we use the rates of the system
amount_currency = currency_obj.compute(cr, uid, company_currency, line.move_line_id.currency_id.id, move_line['debit']-move_line['credit'], context=ctx) amount_currency = currency_obj.compute(cr, uid, company_currency, line.move_line_id.currency_id.id, move_line['debit']-move_line['credit'], context=ctx)
if line.amount == line.amount_unreconciled and line.move_line_id.currency_id.id == voucher_currency: if line.amount == line.amount_unreconciled:
sign = voucher_brw.type in ('payment', 'purchase') and -1 or 1 sign = voucher.type in ('payment', 'purchase') and -1 or 1
foreign_currency_diff = sign * line.move_line_id.amount_residual_currency + amount_currency foreign_currency_diff = sign * line.move_line_id.amount_residual_currency + amount_currency
move_line['amount_currency'] = amount_currency move_line['amount_currency'] = amount_currency
voucher_line = move_line_obj.create(cr, uid, move_line) voucher_line = move_line_obj.create(cr, uid, move_line)
rec_ids = [voucher_line, line.move_line_id.id] rec_ids = [voucher_line, line.move_line_id.id]
if not currency_obj.is_zero(cr, uid, voucher_brw.company_id.currency_id, currency_rate_difference): if not currency_obj.is_zero(cr, uid, voucher.company_id.currency_id, currency_rate_difference):
# Change difference entry in company currency # Change difference entry in company currency
exch_lines = self._get_exchange_lines(cr, uid, line, move_id, currency_rate_difference, company_currency, current_currency, context=context) exch_lines = self._get_exchange_lines(cr, uid, line, move_id, currency_rate_difference, company_currency, current_currency, context=context)
new_id = move_line_obj.create(cr, uid, exch_lines[0],context) new_id = move_line_obj.create(cr, uid, exch_lines[0],context)
@ -1219,32 +1304,32 @@ class account_voucher(osv.osv):
currency_obj = self.pool.get('res.currency') currency_obj = self.pool.get('res.currency')
move_line = {} move_line = {}
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context) voucher = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
current_currency_obj = voucher_brw.currency_id or voucher_brw.journal_id.company_id.currency_id current_currency_obj = voucher.currency_id or voucher.journal_id.company_id.currency_id
if not currency_obj.is_zero(cr, uid, current_currency_obj, line_total): if not currency_obj.is_zero(cr, uid, current_currency_obj, line_total):
diff = line_total diff = line_total
account_id = False account_id = False
write_off_name = '' write_off_name = ''
if voucher_brw.payment_option == 'with_writeoff': if voucher.payment_option == 'with_writeoff':
account_id = voucher_brw.writeoff_acc_id.id account_id = voucher.writeoff_acc_id.id
write_off_name = voucher_brw.comment write_off_name = voucher.comment
elif voucher_brw.type in ('sale', 'receipt'): elif voucher.type in ('sale', 'receipt'):
account_id = voucher_brw.partner_id.property_account_receivable.id account_id = voucher.partner_id.property_account_receivable.id
else: else:
account_id = voucher_brw.partner_id.property_account_payable.id account_id = voucher.partner_id.property_account_payable.id
sign = voucher_brw.type == 'payment' and -1 or 1 sign = voucher.type == 'payment' and -1 or 1
move_line = { move_line = {
'name': write_off_name or name, 'name': write_off_name or name,
'account_id': account_id, 'account_id': account_id,
'move_id': move_id, 'move_id': move_id,
'partner_id': voucher_brw.partner_id.id, 'partner_id': voucher.partner_id.id,
'date': voucher_brw.date, 'date': voucher.date,
'credit': diff > 0 and diff or 0.0, 'credit': diff > 0 and diff or 0.0,
'debit': diff < 0 and -diff or 0.0, 'debit': diff < 0 and -diff or 0.0,
'amount_currency': company_currency <> current_currency and (sign * -1 * voucher_brw.writeoff_amount) or False, 'amount_currency': company_currency <> current_currency and (sign * -1 * voucher.writeoff_amount) or False,
'currency_id': company_currency <> current_currency and current_currency or False, 'currency_id': company_currency <> current_currency and current_currency or False,
'analytic_account_id': voucher_brw.analytic_id and voucher_brw.analytic_id.id or False, 'analytic_account_id': voucher.analytic_id and voucher.analytic_id.id or False,
} }
return move_line return move_line
@ -1345,13 +1430,17 @@ class account_voucher_line(osv.osv):
_order = "move_line_id" _order = "move_line_id"
# If the payment is in the same currency than the invoice, we keep the same amount # If the payment is in the same currency than the invoice, we keep the same amount
# Otherwise, we compute from company currency to payment currency # Otherwise, we compute from invoice currency to payment currency
def _compute_balance(self, cr, uid, ids, name, args, context=None): def _compute_balance(self, cr, uid, ids, name, args, context=None):
currency_pool = self.pool.get('res.currency') currency_pool = self.pool.get('res.currency')
rs_data = {} rs_data = {}
for line in self.browse(cr, uid, ids, context=context): for line in self.browse(cr, uid, ids, context=context):
ctx = context.copy() ctx = context.copy()
ctx.update({'date': line.voucher_id.date}) ctx.update({'date': line.voucher_id.date})
voucher_rate = self.pool.get('res.currency').read(cr, uid, line.voucher_id.currency_id.id, ['rate'], context=ctx)['rate']
ctx.update({
'voucher_special_currency': line.voucher_id.payment_rate_currency_id and line.voucher_id.payment_rate_currency_id.id or False,
'voucher_special_currency_rate': line.voucher_id.payment_rate * voucher_rate})
res = {} res = {}
company_currency = line.voucher_id.journal_id.company_id.currency_id.id company_currency = line.voucher_id.journal_id.company_id.currency_id.id
voucher_currency = line.voucher_id.currency_id and line.voucher_id.currency_id.id or company_currency voucher_currency = line.voucher_id.currency_id and line.voucher_id.currency_id.id or company_currency
@ -1361,13 +1450,11 @@ class account_voucher_line(osv.osv):
res['amount_original'] = 0.0 res['amount_original'] = 0.0
res['amount_unreconciled'] = 0.0 res['amount_unreconciled'] = 0.0
elif move_line.currency_id and voucher_currency==move_line.currency_id.id: elif move_line.currency_id and voucher_currency==move_line.currency_id.id:
res['amount_original'] = currency_pool.compute(cr, uid, move_line.currency_id.id, voucher_currency, abs(move_line.amount_currency), context=ctx) res['amount_original'] = abs(move_line.amount_currency)
res['amount_unreconciled'] = currency_pool.compute(cr, uid, move_line.currency_id and move_line.currency_id.id or company_currency, voucher_currency, abs(move_line.amount_residual_currency), context=ctx) res['amount_unreconciled'] = abs(move_line.amount_residual_currency)
elif move_line and move_line.credit > 0:
res['amount_original'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, move_line.credit, context=ctx)
res['amount_unreconciled'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, abs(move_line.amount_residual), context=ctx)
else: else:
res['amount_original'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, move_line.debit, context=ctx) #always use the amount booked in the company currency as the basis of the conversion into the voucher currency
res['amount_original'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, move_line.credit or move_line.debit or 0.0, context=ctx)
res['amount_unreconciled'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, abs(move_line.amount_residual), context=ctx) res['amount_unreconciled'] = currency_pool.compute(cr, uid, company_currency, voucher_currency, abs(move_line.amount_residual), context=ctx)
rs_data[line.id] = res rs_data[line.id] = res

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 74 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -0,0 +1,140 @@
<section class="oe_container">
<div class="oe_row oe_spaced">
<h2 class="oe_slogan">Invoicing Made Easy</h2>
<h3 class="oe_slogan">Send professional invoices &amp; get paid online</h3>
<div class="oe_span6">
<div class="oe_demo oe_picture oe_screenshot">
<a href="https://www.openerp.com/saas_master/demo?lang=en_US&module=account">
<img src="account_sc_00.png" alt="Online Demo">
</a>
<span class="oe_demo_play">&nbsp;</span>
<div class="oe_demo_footer oe_centeralign">Online Demo</div>
</div>
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Create and send professional looking invoices &amp; get paid
online. It automatically integrates with other apps to bill
automatically based on your activities.
</p>
<div class="oe_centeralign oe_websiteonly">
<a href="http://www.openerp.com/start" class="oe_button oe_big oe_tacky">Start your <span class="oe_emph">free</span> trial</a>
</div>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<h2 class="oe_slogan">Send Invoices With No Effort</h2>
<div class="oe_row">
<div class="oe_span6">
<p class='oe_mt32'>
Send invoices directly to your clients in just a click. The
invoice is automatically attached to the email as a PDF file.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_03.png">
</div>
</div>
</section>
<section class="oe_container">
<h2 class="oe_slogan">Get Paid Faster</h2>
<h3 class="oe_slogan">Electronic invoicing and automated follow-ups</h3>
<div class="oe_row">
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_02.png">
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Get paid online with paypal or other payment processing service. Get rid of
the stress of having to constantly remind your debtors. Simply set-up and
automate follow-ups to get paid quickly.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">Connect Your Bank Accounts</h2>
<div class="oe_span6">
<p class='oe_mt32'>
Import your bank statements and reconcile them in just a few clicks. Prepare
payment orders based on your supplier invoices and payment terms.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture" src="account_illu_01.png">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row">
<h2 class="oe_slogan">Analyse Your Sales &amp; Costs</h2>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_06.png">
</div>
<div class="oe_span6">
<p class='oe_mt32'>
Get direct access to key information with dynamic and customizable dashboards.
Analyse your invoicing by product, customer, salesperson, etc.
</p>
</div>
</div>
</section>
<section class="oe_container oe_dark">
<div class="oe_row">
<h2 class="oe_slogan">Integration With Other Apps</h2>
<div class="oe_span6">
<p class='oe_mt32'>
Bill automatically based on sales orders, delivery orders, contracts or on time and
material. Define recurrencies to produce recurring invoice automatically.
</p>
</div>
<div class="oe_span6">
<img class="oe_picture oe_screenshot" src="account_sc_04.png">
</div>
</div>
</section>
<section class="oe_container">
<div class="oe_row">
<div class="oe_span12">
<h2 class="oe_slogan">Many companies already enjoy it</h2>
<h3 class="oe_slogan">Hear what they have to say !</h3>
</div>
<div class="oe_span6">
<div class="oe_quote">
<q>
OpenERP allowed us to automate sending 10.000 invoices per month.
</q>
<cite class="oe_cite oe_clearfix">
<img class="oe_photo" src="bazile.png">
<div class="oe_author">Yves Morel</div>
<div class="oe_job">Director of <a href="http://www.bazile.fr" target="_blank">Bazile Telecom</a>.</div>
</cite>
</div>
</div>
<div class="oe_span6">
<div class="oe_quote">
<q>
We have found invoicing module of OpenERP to be user
friendly and highly customizable.
</q>
<cite class="oe_cite oe_clearfix">
<img class="oe_photo" src="testimonial_sunil.jpg">
<div class="oe_author">Col. Sunil Prem.</div>
<div class="oe_job">Director of <a href="http://www.navyuginfo.com" target="_blank">Navyug Infosolutions Pvt. Ltd</a>.</div>
</cite>
</div>
</div>
</div>
</section>
<section class="oe_container oe_separator"/>

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -41,6 +41,7 @@ class invoice(osv.osv):
'target': 'new', 'target': 'new',
'domain': '[]', 'domain': '[]',
'context': { 'context': {
'payment_expected_currency': inv.currency_id.id,
'default_partner_id': self.pool.get('res.partner')._find_accounting_partner(inv.partner_id).id, 'default_partner_id': self.pool.get('res.partner')._find_accounting_partner(inv.partner_id).id,
'default_amount': inv.type in ('out_refund', 'in_refund') and -inv.residual or inv.residual, 'default_amount': inv.type in ('out_refund', 'in_refund') and -inv.residual or inv.residual,
'default_reference': inv.name, 'default_reference': inv.name,

View File

@ -6,7 +6,7 @@
account_id: account.cash account_id: account.cash
amount: 1000.0 amount: 1000.0
company_id: base.main_company company_id: base.main_company
journal_id: account.bank_journal journal_id: account.sales_journal
name: Voucher for Axelor name: Voucher for Axelor
narration: Basic Pc narration: Basic Pc
line_cr_ids: line_cr_ids:

View File

@ -0,0 +1,247 @@
-
In order to check the Account_voucher module with multi-currency in OpenERP,
I create 2 Invoices in USD and make 1 Payment in USD based on the currency rating given by the bank which is slightly different that the one encoded in OpenERP
-
I set the income and expense currency accounts on the main company
-
!python {model: res.company}: |
from datetime import datetime
vals = {
'income_currency_exchange_account_id': ref('account.o_expense'),
'expense_currency_exchange_account_id': ref('account.o_expense')}
self.write(cr, uid, ref('base.main_company'), vals)
-
I create currency USD in OpenERP for January of 1.333333 Rate
-
!python {model: res.currency.rate}: |
from datetime import datetime
curr_id = self.pool.get('res.currency').search(cr, uid, [('name', '=', 'USD')])[0]
date = '%s-01-01' %(datetime.now().year)
ids = self.search(cr, uid, [('currency_id','=',curr_id), ('name', '=', date)])
self.write(cr, uid, ids, {'rate': 1.333333})
-
I create currency USD in OpenERP for February of 1.250000 Rate
-
!record {model: res.currency.rate, id: feb_usd}:
currency_id: base.USD
name: !eval "'%s-02-01' %(datetime.now().year)"
rate: 1.250000
-
I create currency USD in OpenERP for March of 1.111111 Rate
-
!record {model: res.currency.rate, id: mar_usd}:
currency_id: base.USD
name: !eval "'%s-03-01' %(datetime.now().year)"
rate: 1.111111
-
I create currency USD in OpenERP for April of 1.052632 Rate
-
!record {model: res.currency.rate, id: apr_usd}:
currency_id: base.USD
name: !eval "'%s-04-01' %(datetime.now().year)"
rate: 1.052632
-
I create a cash account with currency USD
-
!record {model: account.account, id: account_cash_usd_id}:
currency_id: base.USD
name: "cash account in usd"
code: "Xcash usd"
type: 'liquidity'
user_type: "account.data_account_type_cash"
-
I create a bank journal with USD as currency
-
!record {model: account.journal, id: bank_journal_USD}:
name: Bank Journal(USD)
code: BUSD
type: bank
analytic_journal_id: account.sit
sequence_id: account.sequence_bank_journal
default_debit_account_id: account_cash_usd_id
default_credit_account_id: account_cash_usd_id
currency: base.USD
company_id: base.main_company
-
I create a new partner Kate Mc Kay
-
!record {model: res.partner, id: res_partner_mc_kay}:
name: "Mc Kay Kate"
property_account_receivable: account.a_recv
property_account_payable: account.a_pay
-
I create the first invoice on 1st January for 200 USD
-
!record {model: account.invoice, id: account_invoice_jan_payment_rate}:
account_id: account.a_recv
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-01-01' %(datetime.now().year)"
period_id: account.period_1
invoice_line:
- account_id: account.a_sale
name: '[PCSC234] PC Assemble SC234'
price_unit: 200.0
quantity: 1.0
product_id: product.product_product_3
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_mc_kay
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_invoice_jan_payment_rate}
-
I check that first invoice move is correct for debtor account (debit - credit == 150.0)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_jan_payment_rate"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 150.0), "Invoice move is not correct for debtors account"
-
I create the second invoice on 1st February for 100 USD
-
!record {model: account.invoice, id: account_invoice_feb_payment_rate}:
account_id: account.a_recv
company_id: base.main_company
currency_id: base.USD
date_invoice: !eval "'%s-02-01' %(datetime.now().year)"
period_id: account.period_2
invoice_line:
- account_id: account.a_sale
name: '[PCSC234] PC Assemble SC234'
price_unit: 100.0
quantity: 1.0
product_id: product.product_product_3
uos_id: product.product_uom_unit
journal_id: account.sales_journal
partner_id: res_partner_mc_kay
reference_type: none
-
I Validate invoice by clicking on Validate button
-
!workflow {model: account.invoice, action: invoice_open, ref: account_invoice_feb_payment_rate}
-
I check that second invoice move is correct for debtor account (debit - credit == 80)
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_feb_payment_rate"))
assert invoice_id.move_id, "Move not created for open invoice"
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.debit - move_line.credit == 80), "Invoice move is not correct for debtors account"
-
I set the context that will be used for the encoding of all the vouchers of this file
-
!context
'type': 'receipt'
-
On the first March, I create the first voucher of payment with values 240 USD, journal USD, and specifying that $1 = 0.8€
-
!record {model: account.voucher, id: account_voucher_1_case1_payment_rate, view: view_vendor_receipt_form}:
account_id: account.cash
amount: 240.0
company_id: base.main_company
journal_id: bank_journal_USD
name: 'Payment: Case 1 USD/USD payment rate'
partner_id: res_partner_mc_kay
period_id: account.period_3
date: !eval time.strftime("%Y-03-01")
payment_option: 'with_writeoff'
writeoff_acc_id: account.a_expense
comment: 'Write Off'
payment_rate: 0.8
payment_rate_currency_id: base.EUR
-
I fill amounts 180 for the invoice of 200$ and 70 for the invoice of 100$>
-
!python {model: account.voucher}: |
vals = {}
voucher_id = self.browse(cr, uid, ref('account_voucher_1_case1_payment_rate'))
data = []
for item in voucher_id.line_cr_ids:
if item.amount_unreconciled == 200.00:
data += [(item.id, 180.0)]
else:
data += [(item.id, 70.0)]
for line_id, amount in data:
self.pool.get('account.voucher.line').write(cr, uid, [line_id], {'amount': amount})
assert (voucher_id.state=='draft'), "Voucher is not in draft state"
-
I check that writeoff amount computed is -10.0
-
!python {model: account.voucher}: |
voucher = ref('account_voucher_1_case1_payment_rate')
voucher_id = self.browse(cr, uid, voucher)
assert (voucher_id.writeoff_amount == -10.0), "Writeoff amount is not -10.0"
-
I confirm the voucher
-
!python {model: account.voucher}: |
voucher = ref('account_voucher_1_case1_payment_rate')
self.signal_proforma_voucher(cr, uid, [voucher])
-
I check that the move of my first voucher is valid
-
!python {model: account.voucher}: |
voucher = ref('account_voucher_1_case1_payment_rate')
voucher_id = self.browse(cr, uid, voucher)
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
assert move_line.state == 'valid', "Voucher move is not valid"
-
I check that my debtor account is correct
-
I check that the debtor account has 2 new lines with -180 and -70 as amount_currency columns and that their credit columns are respectively 144 and 56
-
I check that my write-off is correct. 8 debit and 10 amount_currency
-
!python {model: account.voucher}: |
voucher = ref('account_voucher_1_case1_payment_rate')
voucher_id = self.browse(cr, uid, voucher)
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', voucher_id.move_id.id)])
for move_line in move_line_obj.browse(cr, uid, move_lines):
if move_line.amount_currency == -180.00:
assert move_line.credit == 144.00, "Debtor account has wrong entry."
elif move_line.amount_currency == -70.00:
assert move_line.credit == 56.00, "Debtor account has wrong entry."
elif move_line.amount_currency == 10.00:
assert move_line.debit == 8.00, "Writeoff amount is wrong: Got a debit of %s (expected 8,00€)" % (move_line.debit)
elif move_line.amount_currency == 240.00:
assert move_line.debit == 192.00, "Bank entry is wrong."
else:
assert False, "Unrecognized journal entry"
-
I check the residual amount of Invoice1, should be 20 in amount_currency and 6 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_jan_payment_rate"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual == 6.0) , "Residual amount is not correct for first Invoice"
assert (move_line.amount_residual_currency == 20.0) , "Residual amount in currency is not correct for first Invoice"
-
I check the residual amuont of Invoice2, should be 30 in residual currency and 24 in amount_residual
-
!python {model: account.invoice}: |
invoice_id = self.browse(cr, uid, ref("account_invoice_feb_payment_rate"))
move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual == 24.0) , "Residual amount is not correct for second Invoice"
assert (move_line.amount_residual_currency == 30.0) , "Residual amount in currency is not correct for second Invoice"

View File

@ -201,7 +201,7 @@
move_line_obj = self.pool.get('account.move.line') move_line_obj = self.pool.get('account.move.line')
move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)]) move_lines = move_line_obj.search(cr, uid, [('move_id', '=', invoice_id.move_id.id), ('invoice', '=', invoice_id.id), ('account_id', '=', invoice_id.account_id.id)])
move_line = move_line_obj.browse(cr, uid, move_lines[0]) move_line = move_line_obj.browse(cr, uid, move_lines[0])
assert (move_line.amount_residual_currency == 55.56 and move_line.amount_residual == 20) , "Residual amount is not correct for first Invoice" assert (move_line.amount_residual_currency == 55.56 and move_line.amount_residual == 20) , "Residual amount is not correct for first Invoice. Got %s USD (%s EUR)" %(move_line.amount_residual_currency, move_line.amount_residual)
- -
I check the residual amuont of Invoice2, should be 22.22 in residual currency and 10 in amount_residual I check the residual amuont of Invoice2, should be 22.22 in residual currency and 10 in amount_residual
- -

View File

@ -161,7 +161,7 @@
- -
I check that the debtor account has 1 new line with -298.78 as amount_currency columns and 149.39 of credit and currency is CAD. I check that the debtor account has 1 new line with -298.78 as amount_currency columns and 149.39 of credit and currency is CAD.
- -
I check that my currency rate difference is correct. 0 in debit with no amount_currency I check that my currency rate difference is correct. 0 in debit with 98.78 CAD as amount_currency
- -
I check that my writeoff is correct. 11.05 credit and -13.26 amount_currency I check that my writeoff is correct. 11.05 credit and -13.26 amount_currency
- -
@ -176,7 +176,8 @@
elif move_line.amount_currency == -298.78: elif move_line.amount_currency == -298.78:
assert move_line.credit == 149.39, "Debtor account has wrong entry." assert move_line.credit == 149.39, "Debtor account has wrong entry."
elif move_line.debit == 0.00 and move_line.credit == 0.00: elif move_line.debit == 0.00 and move_line.credit == 0.00:
assert move_line.amount_currency == 0.00, "Incorrect Currency Difference." assert move_line.amount_currency == 98.78, "Incorrect Currency Difference, got %s as amount_currency (expected 98.78)." % (move_line.amount_currency)
assert move_line.currency_id.id == ref('base.CAD'), "Incorrect Currency Difference, got %s (expected 'CAD')" % (move_line.currency_id.name)
elif move_line.credit == 10.61: elif move_line.credit == 10.61:
assert move_line.amount_currency == -13.26, "Writeoff amount is wrong." assert move_line.amount_currency == -13.26, "Writeoff amount is wrong."
else: else:

View File

@ -41,7 +41,7 @@
currency: base.USD currency: base.USD
company_id: base.main_company company_id: base.main_company
- -
I create an invoice On the first of January, I create an invoice of 1000€
- -
!record {model: account.invoice, id: account_invoice_eur_usd}: !record {model: account.invoice, id: account_invoice_eur_usd}:
account_id: account.a_recv account_id: account.a_recv
@ -79,7 +79,7 @@
!context !context
'type': 'receipt' 'type': 'receipt'
- -
I create the voucher of payment with values 1350 USD, journal USD, On the first of February, I create the voucher of payment with values 1350 USD, journal USD,
- -
!record {model: account.voucher, id: account_voucher_eur_usd_case, view: view_vendor_receipt_form}: !record {model: account.voucher, id: account_voucher_eur_usd_case, view: view_vendor_receipt_form}:
account_id: account.cash account_id: account.cash

View File

@ -46,6 +46,9 @@
</search> </search>
</field> </field>
</record> </record>
<!-- TODO: merge the 3 voucher form views of this file into a single view -->
<!-- Low priority view... If we open a voucher from a m2o, for example. -->
<record model="ir.ui.view" id="view_low_priority_payment_form"> <record model="ir.ui.view" id="view_low_priority_payment_form">
<field name="name">account.voucher.payment.low.priority.form</field> <field name="name">account.voucher.payment.low.priority.form</field>
<field name="model">account.voucher</field> <field name="model">account.voucher</field>
@ -107,7 +110,7 @@
</group> </group>
<group string="Other Information" col="4"> <group string="Other Information" col="4">
<field name="currency_id" colspan="4" groups="base.group_multi_currency"/> <field name="currency_id" colspan="4" groups="base.group_multi_currency"/>
<field name="payment_rate" required="1" on_change="onchange_rate(payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context)" colspan="3"/> <field name="payment_rate" required="1" colspan="3" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/> <field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/> <field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
<field name="number" colspan="4"/> <field name="number" colspan="4"/>
@ -119,6 +122,7 @@
</field> </field>
</record> </record>
<!-- Supplier Payment -->
<record model="ir.ui.view" id="view_vendor_payment_form"> <record model="ir.ui.view" id="view_vendor_payment_form">
<field name="name">account.voucher.payment.form</field> <field name="name">account.voucher.payment.form</field>
<field name="model">account.voucher</field> <field name="model">account.voucher</field>
@ -157,7 +161,7 @@
<notebook> <notebook>
<page string="Payment Information"> <page string="Payment Information">
<label for="line_dr_ids"/> <label for="line_dr_ids"/>
<field name="line_dr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}"> <field name="line_dr_ids" context="{'journal_id':journal_id, 'type':type, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
<tree string="Supplier Invoices and Outstanding transactions" editable="bottom" colors="gray:amount==0"> <tree string="Supplier Invoices and Outstanding transactions" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}" <field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)" on_change="onchange_move_line_id(move_line_id)"
@ -173,7 +177,7 @@
</tree> </tree>
</field> </field>
<label for="line_cr_ids" attrs="{'invisible': [('pre_line','=',False)]}"/> <label for="line_cr_ids" attrs="{'invisible': [('pre_line','=',False)]}"/>
<field name="line_cr_ids" attrs="{'invisible': [('pre_line','=',False)]}" context="{'journal_id':journal_id, 'partner_id':partner_id}"> <field name="line_cr_ids" attrs="{'invisible': [('pre_line','=',False)]}" context="{'journal_id':journal_id, 'partner_id':partner_id}" on_change="onchange_line_ids(line_dr_ids, line_cr_ids, amount, currency_id, type, context)">
<tree string="Credits" editable="bottom" colors="gray:amount==0"> <tree string="Credits" editable="bottom" colors="gray:amount==0">
<field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}" <field name="move_line_id" context="{'journal_id':parent.journal_id, 'partner_id':parent.partner_id}"
on_change="onchange_move_line_id(move_line_id)" on_change="onchange_move_line_id(move_line_id)"
@ -193,12 +197,16 @@
<field name="narration" colspan="2" nolabel="1"/> <field name="narration" colspan="2" nolabel="1"/>
</group> </group>
<group> <group>
<group col="4" attrs="{'invisible':[('currency_id','=',False),('is_multi_currency','=',False)]}"> <group col="2" attrs="{'invisible':[('is_multi_currency','=',False)]}">
<separator string="Currency Options" colspan="4"/> <separator string="Currency Options" colspan="2"/>
<field name="is_multi_currency" invisible="1"/> <field name="is_multi_currency" invisible="1"/>
<field name="payment_rate" required="1" on_change="onchange_rate(payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context)" colspan="3"/> <label for="payment_rate" colspan="1"/>
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/> <div>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/> <field name="payment_rate" required="1" class="oe_inline" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" class="oe_inline" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
</div>
<field name="currency_help_label" colspan="2" nolabel="1" class="oe_grey"/>
<field name="paid_amount_in_company_currency" colspan="2" invisible="1"/>
</group> </group>
<group col="2"> <group col="2">
<separator string="Payment Options" colspan="2"/> <separator string="Payment Options" colspan="2"/>
@ -282,6 +290,7 @@
<menuitem action="action_vendor_payment" icon="STOCK_JUSTIFY_FILL" sequence="12" <menuitem action="action_vendor_payment" icon="STOCK_JUSTIFY_FILL" sequence="12"
id="menu_action_vendor_payment" parent="account.menu_finance_payables"/> id="menu_action_vendor_payment" parent="account.menu_finance_payables"/>
<!-- Register Payment Form (old Pay Invoice wizard) -->
<record model="ir.ui.view" id="view_vendor_receipt_dialog_form"> <record model="ir.ui.view" id="view_vendor_receipt_dialog_form">
<field name="name">account.voucher.receipt.dialog.form</field> <field name="name">account.voucher.receipt.dialog.form</field>
<field name="model">account.voucher</field> <field name="model">account.voucher</field>
@ -305,6 +314,7 @@
on_change="onchange_journal(journal_id, line_cr_ids, False, partner_id, date, amount, type, company_id, context)" on_change="onchange_journal(journal_id, line_cr_ids, False, partner_id, date, amount, type, company_id, context)"
string="Payment Method"/> string="Payment Method"/>
</group> </group>
<group> <group>
<field name="date" invisible="context.get('line_type', False)" on_change="onchange_date(date, currency_id, payment_rate_currency_id, amount, company_id, context)"/> <field name="date" invisible="context.get('line_type', False)" on_change="onchange_date(date, currency_id, payment_rate_currency_id, amount, company_id, context)"/>
<field name="period_id"/> <field name="period_id"/>
@ -319,6 +329,21 @@
<field name="type" invisible="True"/> <field name="type" invisible="True"/>
</group> </group>
</group> </group>
<group>
<group>
<field name="writeoff_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
<field name="payment_option" required="1"/>
<field name="writeoff_acc_id"
attrs="{'invisible':[('payment_option','!=','with_writeoff')], 'required':[('payment_option','=','with_writeoff')]}"
domain="[('type','=','other')]"/>
<field name="comment"
attrs="{'invisible':[('payment_option','!=','with_writeoff')]}"/>
<field name="analytic_id"
groups="analytic.group_analytic_accounting"/>
</group>
<group>
</group>
</group>
<notebook invisible="1"> <notebook invisible="1">
<page string="Payment Information" groups="base.group_user"> <page string="Payment Information" groups="base.group_user">
<label for="line_cr_ids"/> <label for="line_cr_ids"/>
@ -358,23 +383,12 @@
<group> <group>
<field name="narration" colspan="2" nolabel="1"/> <field name="narration" colspan="2" nolabel="1"/>
</group> </group>
<group col="4" attrs="{'invisible':[('currency_id','=',False),('is_multi_currency','=',False)]}"> <group col="4" attrs="{'invisible':[('is_multi_currency','=',False)]}">
<field name="is_multi_currency" invisible="1"/> <field name="is_multi_currency" invisible="1"/>
<field name="payment_rate" required="1" on_change="onchange_rate(payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context)" colspan="3"/> <field name="payment_rate" required="1" colspan="3" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/> <field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/> <field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
</group> </group>
<group>
<field name="writeoff_amount" widget="monetary" options="{'currency_field': 'currency_id'}"/>
<field name="payment_option" required="1"/>
<field name="writeoff_acc_id"
attrs="{'invisible':[('payment_option','!=','with_writeoff')], 'required':[('payment_option','=','with_writeoff')]}"
domain="[('type','=','other')]"/>
<field name="comment"
attrs="{'invisible':[('payment_option','!=','with_writeoff')]}"/>
<field name="analytic_id"
groups="analytic.group_analytic_accounting"/>
</group>
</group> </group>
</page> </page>
</notebook> </notebook>
@ -387,6 +401,7 @@
</record> </record>
<!-- Customer Payment -->
<record model="ir.ui.view" id="view_vendor_receipt_form"> <record model="ir.ui.view" id="view_vendor_receipt_form">
<field name="name">account.voucher.receipt.form</field> <field name="name">account.voucher.receipt.form</field>
<field name="model">account.voucher</field> <field name="model">account.voucher</field>
@ -467,10 +482,14 @@
<group> <group>
<field name="narration" colspan="2" nolabel="1"/> <field name="narration" colspan="2" nolabel="1"/>
</group> </group>
<group col="4" attrs="{'invisible':[('currency_id','=',False),('is_multi_currency','=',False)]}"> <group col="4" attrs="{'invisible':[('is_multi_currency','=',False)]}">
<field name="is_multi_currency" invisible="1"/> <field name="is_multi_currency" invisible="1"/>
<field name="payment_rate" required="1" on_change="onchange_rate(payment_rate, amount, currency_id, payment_rate_currency_id, company_id, context)" colspan="3"/> <label for="payment_rate" colspan="1"/>
<field name="payment_rate_currency_id" colspan="1" nolabel="1" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/> <div>
<field name="payment_rate" required="1" class="oe_inline" on_change="onchange_amount(amount, payment_rate, partner_id, journal_id, currency_id, type, date, payment_rate_currency_id, company_id, context)"/>
<field name="payment_rate_currency_id" class="oe_inline" on_change="onchange_payment_rate_currency(currency_id, payment_rate, payment_rate_currency_id, date, amount, company_id, context)" groups="base.group_multi_currency"/>
</div>
<field name="currency_help_label" colspan="2" nolabel="1" class="oe_grey"/>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/> <field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
</group> </group>
<group> <group>

View File

@ -145,6 +145,13 @@
</field> </field>
</page> </page>
</notebook> </notebook>
<group col="4" invisible="1">
<field name="is_multi_currency" invisible="1"/>
<field name="currency_help_label" invisible="1"/>
<field name="payment_rate" invisible="1"/>
<field name="payment_rate_currency_id" invisible="1"/>
<field name="paid_amount_in_company_currency" colspan="4" invisible="1"/>
</group>
</sheet> </sheet>
<div class="oe_chatter"> <div class="oe_chatter">
<field name="message_follower_ids" widget="mail_followers"/> <field name="message_follower_ids" widget="mail_followers"/>
@ -237,6 +244,7 @@
on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id, date, amount, type, company_id, context)" on_change="onchange_journal(journal_id, line_dr_ids, tax_id, partner_id, date, amount, type, company_id, context)"
groups="account.group_account_user"/> groups="account.group_account_user"/>
<field name="paid_amount_in_company_currency" invisible="1"/> <field name="paid_amount_in_company_currency" invisible="1"/>
<field name="currency_help_label" invisible="1"/>
</group> </group>
</group> </group>
<notebook> <notebook>

388
addons/analytic/i18n/lt.po Normal file
View File

@ -0,0 +1,388 @@
# Lithuanian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-04-29 15:10+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Lithuanian <lt@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: 2013-04-30 05:29+0000\n"
"X-Generator: Launchpad (build 16580)\n"
#. module: analytic
#: field:account.analytic.account,child_ids:0
msgid "Child Accounts"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "In Progress"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:229
#, python-format
msgid "Contract: "
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Template"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "End Date"
msgstr ""
#. module: analytic
#: help:account.analytic.line,unit_amount:0
msgid "Specifies the amount of quantity to count."
msgstr ""
#. module: analytic
#: field:account.analytic.account,debit:0
msgid "Debit"
msgstr ""
#. module: analytic
#: help:account.analytic.account,type:0
msgid ""
"If you select the View Type, it means you won't allow to create journal "
"entries using that account.\n"
"The type 'Analytic account' stands for usual accounts that you only want to "
"use in accounting.\n"
"If you select Contract or Project, it offers you the possibility to manage "
"the validity and the invoicing options for this account.\n"
"The special type 'Template of Contract' allows you to define a template with "
"default data that you can reuse easily."
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid ""
"Once the end date of the contract is\n"
" passed or the maximum number of "
"service\n"
" units (e.g. support contract) is\n"
" reached, the account manager is "
"notified \n"
" by email to renew the contract with "
"the\n"
" customer."
msgstr ""
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Contract or Project"
msgstr ""
#. module: analytic
#: field:account.analytic.account,name:0
msgid "Account/Contract Name"
msgstr ""
#. module: analytic
#: field:account.analytic.account,manager_id:0
msgid "Account Manager"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_follower_ids:0
msgid "Followers"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Closed"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_pending
msgid "Contract to Renew"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "New"
msgstr ""
#. module: analytic
#: field:account.analytic.account,user_id:0
msgid "Project Manager"
msgstr ""
#. module: analytic
#: field:account.analytic.account,state:0
msgid "Status"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:271
#, python-format
msgid "%s (copy)"
msgstr ""
#. module: analytic
#: model:ir.model,name:analytic.model_account_analytic_line
msgid "Analytic Line"
msgstr ""
#. module: analytic
#: field:account.analytic.account,description:0
#: field:account.analytic.line,name:0
msgid "Description"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_unread:0
msgid "Unread Messages"
msgstr ""
#. module: analytic
#: constraint:account.analytic.account:0
msgid "Error! You cannot create recursive analytic accounts."
msgstr ""
#. module: analytic
#: field:account.analytic.account,company_id:0
#: field:account.analytic.line,company_id:0
msgid "Company"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Renewal"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_ids:0
msgid "Messages and communication history"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_opened
msgid "Stage <b>opened</b>"
msgstr ""
#. module: analytic
#: help:account.analytic.account,quantity_max:0
msgid ""
"Sets the higher limit of time to work on the contract, based on the "
"timesheet. (for instance, number of hours in a limited support contract.)"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:160
#, python-format
msgid ""
"If you set a company, the currency selected has to be the same as it's "
"currency. \n"
"You can remove the company belonging, and thus change the currency, only on "
"analytic account of type 'view'. This can be really usefull for "
"consolidation purposes of several companies charts with different "
"currencies, for example."
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_is_follower:0
msgid "Is a Follower"
msgstr ""
#. module: analytic
#: field:account.analytic.line,user_id:0
msgid "User"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_pending
msgid "Contract <b>pending</b>"
msgstr ""
#. module: analytic
#: field:account.analytic.line,date:0
msgid "Date"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_closed
msgid "Contract Finished"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Terms and Conditions"
msgstr ""
#. module: analytic
#: help:account.analytic.line,amount:0
msgid ""
"Calculated by multiplying the quantity and the price given in the Product's "
"cost price. Always expressed in the company main currency."
msgstr ""
#. module: analytic
#: field:account.analytic.account,partner_id:0
msgid "Customer"
msgstr ""
#. module: analytic
#: field:account.analytic.account,child_complete_ids:0
msgid "Account Hierarchy"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_ids:0
msgid "Messages"
msgstr ""
#. module: analytic
#: field:account.analytic.account,parent_id:0
msgid "Parent Analytic Account"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
msgid "Contract Information"
msgstr ""
#. module: analytic
#: field:account.analytic.account,template_id:0
#: selection:account.analytic.account,type:0
msgid "Template of Contract"
msgstr ""
#. module: analytic
#: field:account.analytic.account,message_summary:0
msgid "Summary"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity_max:0
msgid "Prepaid Service Units"
msgstr ""
#. module: analytic
#: field:account.analytic.account,credit:0
msgid "Credit"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,name:analytic.mt_account_opened
msgid "Contract Opened"
msgstr ""
#. module: analytic
#: model:mail.message.subtype,description:analytic.mt_account_closed
msgid "Contract <b>closed</b>"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "Cancelled"
msgstr ""
#. module: analytic
#: selection:account.analytic.account,type:0
msgid "Analytic View"
msgstr ""
#. module: analytic
#: field:account.analytic.account,balance:0
msgid "Balance"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_unread:0
msgid "If checked new messages require your attention."
msgstr ""
#. module: analytic
#: selection:account.analytic.account,state:0
msgid "To Renew"
msgstr ""
#. module: analytic
#: field:account.analytic.account,quantity:0
#: field:account.analytic.line,unit_amount:0
msgid "Quantity"
msgstr ""
#. module: analytic
#: field:account.analytic.account,date:0
msgid "Date End"
msgstr ""
#. module: analytic
#: field:account.analytic.account,code:0
msgid "Reference"
msgstr ""
#. module: analytic
#: code:addons/analytic/analytic.py:160
#, python-format
msgid "Error!"
msgstr ""
#. module: analytic
#: model:res.groups,name:analytic.group_analytic_accounting
msgid "Analytic Accounting"
msgstr ""
#. module: analytic
#: field:account.analytic.line,amount:0
msgid "Amount"
msgstr ""
#. module: analytic
#: field:account.analytic.account,complete_name:0
msgid "Full Account Name"
msgstr ""
#. module: analytic
#: view:account.analytic.account:0
#: selection:account.analytic.account,type:0
#: field:account.analytic.line,account_id:0
#: model:ir.model,name:analytic.model_account_analytic_account
msgid "Analytic Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,currency_id:0
msgid "Currency"
msgstr ""
#. module: analytic
#: help:account.analytic.account,message_summary:0
msgid ""
"Holds the Chatter summary (number of messages, ...). This summary is "
"directly in html format in order to be inserted in kanban views."
msgstr ""
#. module: analytic
#: field:account.analytic.account,type:0
msgid "Type of Account"
msgstr ""
#. module: analytic
#: field:account.analytic.account,date_start:0
msgid "Start Date"
msgstr ""
#. module: analytic
#: constraint:account.analytic.line:0
msgid "You cannot create analytic line on view account."
msgstr ""
#. module: analytic
#: field:account.analytic.account,line_ids:0
msgid "Analytic Entries"
msgstr ""

View File

@ -543,6 +543,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
fixes = group(fixes, ('model_name', 'field_name')) fixes = group(fixes, ('model_name', 'field_name'))
for line in data: for line in data:
queries = []
table_name = self.pool[line['model_id']]._table if line['model_id'] in self.pool else None table_name = self.pool[line['model_id']]._table if line['model_id'] in self.pool else None
# check if custom sql exists: # check if custom sql exists:

View File

View File

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 76 KiB

View File

View File

View File

@ -8,21 +8,21 @@ msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-03-23 11:37+0000\n" "PO-Revision-Date: 2013-05-27 12:13+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Глория Хрусталёва <gloriya@hushmail.com>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-24 04:45+0000\n" "X-Launchpad-Export-Date: 2013-05-28 05:17+0000\n"
"X-Generator: Launchpad (build 16540)\n" "X-Generator: Launchpad (build 16640)\n"
#. module: auth_openid #. module: auth_openid
#. openerp-web #. openerp-web
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:24 #: code:addons/auth_openid/static/src/xml/auth_openid.xml:24
#, python-format #, python-format
msgid "Username" msgid "Username"
msgstr "" msgstr "Имя пользователя"
#. module: auth_openid #. module: auth_openid
#. openerp-web #. openerp-web
@ -30,7 +30,7 @@ msgstr ""
#: view:res.users:0 #: view:res.users:0
#, python-format #, python-format
msgid "OpenID" msgid "OpenID"
msgstr "" msgstr "OpenID"
#. module: auth_openid #. module: auth_openid
#. openerp-web #. openerp-web
@ -53,7 +53,7 @@ msgstr ""
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:11 #: code:addons/auth_openid/static/src/xml/auth_openid.xml:11
#, python-format #, python-format
msgid "Launchpad" msgid "Launchpad"
msgstr "" msgstr "Launchpad"
#. module: auth_openid #. module: auth_openid
#: help:res.users,openid_email:0 #: help:res.users,openid_email:0
@ -82,7 +82,7 @@ msgstr ""
#: code:addons/auth_openid/static/src/xml/auth_openid.xml:8 #: code:addons/auth_openid/static/src/xml/auth_openid.xml:8
#, python-format #, python-format
msgid "Password" msgid "Password"
msgstr "" msgstr "Пароль"
#. module: auth_openid #. module: auth_openid
#. openerp-web #. openerp-web
@ -94,4 +94,4 @@ msgstr ""
#. module: auth_openid #. module: auth_openid
#: model:ir.model,name:auth_openid.model_res_users #: model:ir.model,name:auth_openid.model_res_users
msgid "Users" msgid "Users"
msgstr "" msgstr "Пользователи"

View File

@ -1,4 +1,3 @@
#!/usr/bin/env python
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution

View File

@ -1,4 +1,3 @@
#!/usr/bin/env python
############################################################################## ##############################################################################
# #
# OpenERP, Open Source Management Solution # OpenERP, Open Source Management Solution

View File

@ -0,0 +1,279 @@
# Lithuanian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-04-29 15:13+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Lithuanian <lt@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: 2013-04-30 05:29+0000\n"
"X-Generator: Launchpad (build 16580)\n"
#. module: auth_signup
#: field:res.partner,signup_type:0
msgid "Signup Token Type"
msgstr ""
#. module: auth_signup
#: field:base.config.settings,auth_signup_uninvited:0
msgid "Allow external users to sign up"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16
#, python-format
msgid "Confirm Password"
msgstr ""
#. module: auth_signup
#: help:base.config.settings,auth_signup_uninvited:0
msgid "If unchecked, only invited users may sign up."
msgstr ""
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_base_config_settings
msgid "base.config.settings"
msgstr ""
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:265
#, python-format
msgid "Cannot send email: user has no email address."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:24
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:28
#, python-format
msgid "Reset password"
msgstr ""
#. module: auth_signup
#: field:base.config.settings,auth_signup_template_user_id:0
msgid "Template user for new users created through signup"
msgstr ""
#. module: auth_signup
#: model:email.template,subject:auth_signup.reset_password_email
msgid "Password reset"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
#, python-format
msgid "Please enter a password and confirm it."
msgstr ""
#. module: auth_signup
#: view:res.users:0
msgid "Send an email to the user to (re)set their password."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:23
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:26
#, python-format
msgid "Sign Up"
msgstr ""
#. module: auth_signup
#: selection:res.users,state:0
msgid "New"
msgstr ""
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:258
#, python-format
msgid "Mail sent to:"
msgstr ""
#. module: auth_signup
#: field:res.users,state:0
msgid "Status"
msgstr ""
#. module: auth_signup
#: model:email.template,body_html:auth_signup.reset_password_email
msgid ""
"\n"
"<p>A password reset was requested for the OpenERP account linked to this "
"email.</p>\n"
"\n"
"<p>You may change your password by following <a "
"href=\"${object.signup_url}\">this link</a>.</p>\n"
"\n"
"<p>Note: If you do not expect this, you can safely ignore this email.</p>"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
#, python-format
msgid "Please enter a name."
msgstr ""
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_users
msgid "Users"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_url:0
msgid "Signup URL"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
#, python-format
msgid "Please enter a username."
msgstr ""
#. module: auth_signup
#: selection:res.users,state:0
msgid "Active"
msgstr ""
#. module: auth_signup
#: code:addons/auth_signup/res_users.py:269
#, python-format
msgid ""
"Cannot send email: no outgoing email server configured.\n"
"You can configure it under Settings/General Settings."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12
#, python-format
msgid "Username"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8
#, python-format
msgid "Name"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
#, python-format
msgid "Please enter a username or email address."
msgstr ""
#. module: auth_signup
#: selection:res.users,state:0
msgid "Resetting Password"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13
#, python-format
msgid "Username (Email)"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_expiration:0
msgid "Signup Expiration"
msgstr ""
#. module: auth_signup
#: help:base.config.settings,auth_signup_reset_password:0
msgid "This allows users to trigger a password reset from the Login page."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#, python-format
msgid "Log in"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_valid:0
msgid "Signup Token is Valid"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:108
#: code:addons/auth_signup/static/src/js/auth_signup.js:111
#: code:addons/auth_signup/static/src/js/auth_signup.js:114
#: code:addons/auth_signup/static/src/js/auth_signup.js:117
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
#: code:addons/auth_signup/static/src/js/auth_signup.js:167
#: code:addons/auth_signup/static/src/js/auth_signup.js:170
#, python-format
msgid "Login"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:94
#, python-format
msgid "Invalid signup token"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:120
#, python-format
msgid "Passwords do not match; please retype them."
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:108
#: code:addons/auth_signup/static/src/js/auth_signup.js:167
#, python-format
msgid "No database selected !"
msgstr ""
#. module: auth_signup
#: view:res.users:0
msgid "Reset Password"
msgstr ""
#. module: auth_signup
#: field:base.config.settings,auth_signup_reset_password:0
msgid "Enable password reset from Login page"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27
#, python-format
msgid "Back to Login"
msgstr ""
#. module: auth_signup
#. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#, python-format
msgid "Sign up"
msgstr ""
#. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_partner
msgid "Partner"
msgstr ""
#. module: auth_signup
#: field:res.partner,signup_token:0
msgid "Signup Token"
msgstr ""

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-11 06:59+0000\n" "PO-Revision-Date: 2013-05-27 12:12+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: Глория Хрусталёва <gloriya@hushmail.com>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:52+0000\n" "X-Launchpad-Export-Date: 2013-05-28 05:17+0000\n"
"X-Generator: Launchpad (build 16532)\n" "X-Generator: Launchpad (build 16640)\n"
#. module: auth_signup #. module: auth_signup
#: field:res.partner,signup_type:0 #: field:res.partner,signup_type:0
@ -25,25 +25,25 @@ msgstr ""
#. module: auth_signup #. module: auth_signup
#: field:base.config.settings,auth_signup_uninvited:0 #: field:base.config.settings,auth_signup_uninvited:0
msgid "Allow external users to sign up" msgid "Allow external users to sign up"
msgstr "" msgstr "Разрешить регистрацию внешним пользователям"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:16 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:16
#, python-format #, python-format
msgid "Confirm Password" msgid "Confirm Password"
msgstr "" msgstr "Подтвердите пароль"
#. module: auth_signup #. module: auth_signup
#: help:base.config.settings,auth_signup_uninvited:0 #: help:base.config.settings,auth_signup_uninvited:0
msgid "If unchecked, only invited users may sign up." msgid "If unchecked, only invited users may sign up."
msgstr "" msgstr ""
"Если отмечено, только приглашенные пользователи могут зарегистрироваться" "Если не отмечено, только приглашенные пользователи могут зарегистрироваться"
#. module: auth_signup #. module: auth_signup
#: model:ir.model,name:auth_signup.model_base_config_settings #: model:ir.model,name:auth_signup.model_base_config_settings
msgid "base.config.settings" msgid "base.config.settings"
msgstr "" msgstr "base.config.settings"
#. module: auth_signup #. module: auth_signup
#: code:addons/auth_signup/res_users.py:265 #: code:addons/auth_signup/res_users.py:265
@ -57,17 +57,17 @@ msgstr "Невозможно отправить письмо: у пользов
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:28 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:28
#, python-format #, python-format
msgid "Reset password" msgid "Reset password"
msgstr "" msgstr "Сброс пароля"
#. module: auth_signup #. module: auth_signup
#: field:base.config.settings,auth_signup_template_user_id:0 #: field:base.config.settings,auth_signup_template_user_id:0
msgid "Template user for new users created through signup" msgid "Template user for new users created through signup"
msgstr "" msgstr "Шаблон новых пользователей, созданных в процессе регистрации"
#. module: auth_signup #. module: auth_signup
#: model:email.template,subject:auth_signup.reset_password_email #: model:email.template,subject:auth_signup.reset_password_email
msgid "Password reset" msgid "Password reset"
msgstr "" msgstr "Сброс пароля"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
@ -88,12 +88,12 @@ msgstr ""
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:26 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:26
#, python-format #, python-format
msgid "Sign Up" msgid "Sign Up"
msgstr "" msgstr "Регистрация"
#. module: auth_signup #. module: auth_signup
#: selection:res.users,state:0 #: selection:res.users,state:0
msgid "New" msgid "New"
msgstr "" msgstr "Новый"
#. module: auth_signup #. module: auth_signup
#: code:addons/auth_signup/res_users.py:258 #: code:addons/auth_signup/res_users.py:258
@ -104,7 +104,7 @@ msgstr ""
#. module: auth_signup #. module: auth_signup
#: field:res.users,state:0 #: field:res.users,state:0
msgid "Status" msgid "Status"
msgstr "" msgstr "Статус"
#. module: auth_signup #. module: auth_signup
#: model:email.template,body_html:auth_signup.reset_password_email #: model:email.template,body_html:auth_signup.reset_password_email
@ -118,18 +118,27 @@ msgid ""
"\n" "\n"
"<p>Note: If you do not expect this, you can safely ignore this email.</p>" "<p>Note: If you do not expect this, you can safely ignore this email.</p>"
msgstr "" msgstr ""
"\n"
"<p>Был запрошен сброс пароля для аккаунта OpenERP связанного с этим адресом "
"эл.почты</p>\n"
"\n"
"<p>Вы можете сменить пароль, проследовав по <a "
"href=\"${object.signup_url}\">ссылке</a>.</p>\n"
"\n"
"<p>Примечание: если вы не запрашивали сброс пароля, просто проигнорируйте "
"данное письмо</p>"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:111 #: code:addons/auth_signup/static/src/js/auth_signup.js:111
#, python-format #, python-format
msgid "Please enter a name." msgid "Please enter a name."
msgstr "" msgstr "Пожалуйста, введите имя"
#. module: auth_signup #. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_users #: model:ir.model,name:auth_signup.model_res_users
msgid "Users" msgid "Users"
msgstr "" msgstr "Пользователи"
#. module: auth_signup #. module: auth_signup
#: field:res.partner,signup_url:0 #: field:res.partner,signup_url:0
@ -146,7 +155,7 @@ msgstr "Пожалуйста, введите имя пользователя."
#. module: auth_signup #. module: auth_signup
#: selection:res.users,state:0 #: selection:res.users,state:0
msgid "Active" msgid "Active"
msgstr "" msgstr "Активен"
#. module: auth_signup #. module: auth_signup
#: code:addons/auth_signup/res_users.py:269 #: code:addons/auth_signup/res_users.py:269
@ -155,39 +164,41 @@ msgid ""
"Cannot send email: no outgoing email server configured.\n" "Cannot send email: no outgoing email server configured.\n"
"You can configure it under Settings/General Settings." "You can configure it under Settings/General Settings."
msgstr "" msgstr ""
"Невозможно отправить email: не настроены сервера исходящей почты.\n"
"Вы можете настроить их в меню Настройки/Общие настройки"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:12 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:12
#, python-format #, python-format
msgid "Username" msgid "Username"
msgstr "" msgstr "Имя пользователя"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:8 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:8
#, python-format #, python-format
msgid "Name" msgid "Name"
msgstr "" msgstr "Имя"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/js/auth_signup.js:170 #: code:addons/auth_signup/static/src/js/auth_signup.js:170
#, python-format #, python-format
msgid "Please enter a username or email address." msgid "Please enter a username or email address."
msgstr "" msgstr "Пожалуйста, введите имя пользователя или адрес эл. почты."
#. module: auth_signup #. module: auth_signup
#: selection:res.users,state:0 #: selection:res.users,state:0
msgid "Resetting Password" msgid "Resetting Password"
msgstr "" msgstr "Переустановка пароля"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:13 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:13
#, python-format #, python-format
msgid "Username (Email)" msgid "Username (Email)"
msgstr "" msgstr "Имя пользователя (Email)"
#. module: auth_signup #. module: auth_signup
#: field:res.partner,signup_expiration:0 #: field:res.partner,signup_expiration:0
@ -198,13 +209,15 @@ msgstr ""
#: help:base.config.settings,auth_signup_reset_password:0 #: help:base.config.settings,auth_signup_reset_password:0
msgid "This allows users to trigger a password reset from the Login page." msgid "This allows users to trigger a password reset from the Login page."
msgstr "" msgstr ""
"Это позволяет пользователям запросить сброс пароля со страницы входа в "
"систему."
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:22 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:22
#, python-format #, python-format
msgid "Log in" msgid "Log in"
msgstr "" msgstr "Вход"
#. module: auth_signup #. module: auth_signup
#: field:res.partner,signup_valid:0 #: field:res.partner,signup_valid:0
@ -222,7 +235,7 @@ msgstr ""
#: code:addons/auth_signup/static/src/js/auth_signup.js:170 #: code:addons/auth_signup/static/src/js/auth_signup.js:170
#, python-format #, python-format
msgid "Login" msgid "Login"
msgstr "" msgstr "Вход"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
@ -236,7 +249,7 @@ msgstr ""
#: code:addons/auth_signup/static/src/js/auth_signup.js:120 #: code:addons/auth_signup/static/src/js/auth_signup.js:120
#, python-format #, python-format
msgid "Passwords do not match; please retype them." msgid "Passwords do not match; please retype them."
msgstr "" msgstr "Пароли не совпадают; пожалуйста, введите их заново."
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
@ -244,7 +257,7 @@ msgstr ""
#: code:addons/auth_signup/static/src/js/auth_signup.js:167 #: code:addons/auth_signup/static/src/js/auth_signup.js:167
#, python-format #, python-format
msgid "No database selected !" msgid "No database selected !"
msgstr "" msgstr "Не выбрана база данных!"
#. module: auth_signup #. module: auth_signup
#: view:res.users:0 #: view:res.users:0
@ -254,14 +267,14 @@ msgstr ""
#. module: auth_signup #. module: auth_signup
#: field:base.config.settings,auth_signup_reset_password:0 #: field:base.config.settings,auth_signup_reset_password:0
msgid "Enable password reset from Login page" msgid "Enable password reset from Login page"
msgstr "" msgstr "Включить сброс пароля со страницы входа"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
#: code:addons/auth_signup/static/src/xml/auth_signup.xml:27 #: code:addons/auth_signup/static/src/xml/auth_signup.xml:27
#, python-format #, python-format
msgid "Back to Login" msgid "Back to Login"
msgstr "" msgstr "Вернуться к странице входа"
#. module: auth_signup #. module: auth_signup
#. openerp-web #. openerp-web
@ -273,7 +286,7 @@ msgstr ""
#. module: auth_signup #. module: auth_signup
#: model:ir.model,name:auth_signup.model_res_partner #: model:ir.model,name:auth_signup.model_res_partner
msgid "Partner" msgid "Partner"
msgstr "" msgstr "Партнер"
#. module: auth_signup #. module: auth_signup
#: field:res.partner,signup_token:0 #: field:res.partner,signup_token:0

View File

@ -57,14 +57,14 @@ openerp.auth_signup = function(instance) {
self.signup_enabled = result.signup; self.signup_enabled = result.signup;
self.reset_password_enabled = result.reset_password; self.reset_password_enabled = result.reset_password;
if (!self.signup_enabled || self.$("form input[name=login]").val()){ if (!self.signup_enabled || self.$("form input[name=login]").val()){
self.set('login_mode', 'default'); self.set('login_mode', self.params.type || 'default');
} else { } else {
self.set('login_mode', 'signup'); self.set('login_mode', 'signup');
} }
}); });
} else { } else {
// TODO: support multiple database mode // TODO: support multiple database mode
self.set('login_mode', 'default'); self.set('login_mode', self.params.type || 'default');
} }
}); });
}, },

0
addons/base_import/static/lib/select2/README.md Executable file → Normal file
View File

0
addons/base_import/static/lib/select2/select2.css vendored Executable file → Normal file
View File

0
addons/base_import/static/lib/select2/select2.js vendored Executable file → Normal file
View File

0
addons/base_import/static/lib/select2/spinner.gif Executable file → Normal file
View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

View File

@ -1,49 +1,25 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
from com.sun.star.task import XJobExecutor from com.sun.star.task import XJobExecutor

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import os import os
import uno import uno
import unohelper import unohelper

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string
import unohelper import unohelper
@ -72,7 +49,7 @@ class Change( unohelper.Base, XJobExecutor ):
'XML-RPC': 'http://', 'XML-RPC': 'http://',
'XML-RPC secure': 'https://', 'XML-RPC secure': 'https://',
'NET-RPC': 'socket://', 'NET-RPC': 'socket://',
} }
host=port=protocol='' host=port=protocol=''
if docinfo.getUserFieldValue(0): if docinfo.getUserFieldValue(0):
m = re.match('^(http[s]?://|socket://)([\w.\-]+):(\d{1,5})$', docinfo.getUserFieldValue(0) or '') m = re.match('^(http[s]?://|socket://)([\w.\-]+):(\d{1,5})$', docinfo.getUserFieldValue(0) or '')
@ -80,7 +57,7 @@ class Change( unohelper.Base, XJobExecutor ):
port = m.group(3) port = m.group(3)
protocol = m.group(1) protocol = m.group(1)
if protocol: if protocol:
for (key, value) in self.protocol.iteritems(): for (key, value) in self.protocol.iteritems():
if value==protocol: if value==protocol:
protocol=key protocol=key
break break
@ -102,7 +79,7 @@ class Change( unohelper.Base, XJobExecutor ):
self.win.addButton( 'btnNext', -2, -5, 30, 15, 'Next', actionListenerProc = self.btnNext_clicked ) self.win.addButton( 'btnNext', -2, -5, 30, 15, 'Next', actionListenerProc = self.btnNext_clicked )
self.win.addButton( 'btnCancel', -2 - 30 - 5 ,-5, 30, 15, 'Cancel', actionListenerProc = self.btnCancel_clicked ) self.win.addButton( 'btnCancel', -2 - 30 - 5 ,-5, 30, 15, 'Cancel', actionListenerProc = self.btnCancel_clicked )
for i in self.protocol.keys(): for i in self.protocol.keys():
self.lstProtocol.addItem(i,self.lstProtocol.getItemCount() ) self.lstProtocol.addItem(i,self.lstProtocol.getItemCount() )
self.win.doModalDialog( "lstProtocol", protocol) self.win.doModalDialog( "lstProtocol", protocol)
@ -110,27 +87,27 @@ class Change( unohelper.Base, XJobExecutor ):
def btnNext_clicked(self, oActionEvent): def btnNext_clicked(self, oActionEvent):
global url global url
aVal='' aVal=''
#aVal= Fetature used #aVal= Fetature used
try: try:
url = self.protocol[self.win.getListBoxSelectedItem("lstProtocol")]+self.win.getEditText("txtHost")+":"+self.win.getEditText("txtPort") url = self.protocol[self.win.getListBoxSelectedItem("lstProtocol")]+self.win.getEditText("txtHost")+":"+self.win.getEditText("txtPort")
self.sock=RPCSession(url) self.sock=RPCSession(url)
desktop=getDesktop() desktop=getDesktop()
doc = desktop.getCurrentComponent() doc = desktop.getCurrentComponent()
docinfo=doc.getDocumentInfo() docinfo=doc.getDocumentInfo()
docinfo.setUserFieldValue(0,url) docinfo.setUserFieldValue(0,url)
res=self.sock.listdb() res=self.sock.listdb()
self.win.endExecute() self.win.endExecute()
ServerParameter(aVal,url) ServerParameter(aVal,url)
except : except :
import traceback,sys import traceback,sys
info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback)) info = reduce(lambda x, y: x+y, traceback.format_exception(sys.exc_type, sys.exc_value, sys.exc_traceback))
self.logobj.log_write('ServerParameter', LOG_ERROR, info) self.logobj.log_write('ServerParameter', LOG_ERROR, info)
ErrorDialog("Connection to server is fail. Please check your Server Parameter.", "", "Error!") ErrorDialog("Connection to server is fail. Please check your Server Parameter.", "", "Error!")
self.win.endExecute() self.win.endExecute()
def btnCancel_clicked(self,oActionEvent): def btnCancel_clicked(self,oActionEvent):
self.win.endExecute() self.win.endExecute()
if __name__<>"package" and __name__=="__main__": if __name__<>"package" and __name__=="__main__":
Change(None) Change(None)

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import unohelper import unohelper
import string import string

View File

@ -1,49 +1,25 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import unohelper import unohelper
@ -81,7 +57,7 @@ class ConvertFieldsToBraces( unohelper.Base, XJobExecutor ):
if __name__<>"package": if __name__<>"package":
ConvertFieldsToBraces(None) ConvertFieldsToBraces(None)
else: else:
g_ImplementationHelper.addImplementation( ConvertFieldsToBraces, "org.openoffice.openerp.report.convertFB", ("com.sun.star.task.Job",),) g_ImplementationHelper.addImplementation( ConvertFieldsToBraces, "org.openoffice.openerp.report.convertFB", ("com.sun.star.task.Job",),)
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import os import os
import uno import uno
import unohelper import unohelper

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string
import unohelper import unohelper

View File

@ -1,50 +1,25 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
if __name__<>"package": if __name__<>"package":
from ServerParameter import * from ServerParameter import *
from lib.gui import * from lib.gui import *

View File

@ -1,49 +1,25 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string
import unohelper import unohelper

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string
import unohelper import unohelper

View File

@ -1,49 +1,25 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string
@ -201,7 +177,7 @@ class SendtoServer(unohelper.Base, XJobExecutor):
if self.win.getListBoxSelectedItem("lstResourceType")=='OpenOffice': if self.win.getListBoxSelectedItem("lstResourceType")=='OpenOffice':
params['report_type']=file_type params['report_type']=file_type
self.sock.execute(database, uid, self.password, 'ir.actions.report.xml', 'write', int(docinfo.getUserFieldValue(2)), params) self.sock.execute(database, uid, self.password, 'ir.actions.report.xml', 'write', int(docinfo.getUserFieldValue(2)), params)
# Call upload_report as the *last* step, as it will call register_all() and cause the report service # Call upload_report as the *last* step, as it will call register_all() and cause the report service
# to be loaded - which requires all the data to be correct in the database # to be loaded - which requires all the data to be correct in the database
self.sock.execute(database, uid, self.password, 'ir.actions.report.xml', 'upload_report', int(docinfo.getUserFieldValue(2)),base64.encodestring(data),file_type,{}) self.sock.execute(database, uid, self.password, 'ir.actions.report.xml', 'upload_report', int(docinfo.getUserFieldValue(2)),base64.encodestring(data),file_type,{})

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string
import unohelper import unohelper

View File

@ -1,49 +1,25 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import uno import uno
import string import string

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import Expression import Expression
import lib import lib
import Fields import Fields

View File

@ -1,49 +1,26 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
# OpenERP, Open Source Management Solution>.. #############################################################################
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import compileall import compileall
compileall.compile_dir('package') compileall.compile_dir('package')

View File

@ -1,47 +1,23 @@
########################################################################## ##########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
############################################################################## ##############################################################################

View File

@ -1,47 +1,23 @@
########################################################################## ##########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
############################################################################## ##############################################################################

View File

@ -1,47 +1,23 @@
########################################################################## ##########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
############################################################################## ##############################################################################

View File

@ -1,47 +1,23 @@
########################################################################## ##########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# This library is free software; you can redistribute it and/or # Lesser General Public License for more details.
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
# #
# # You should have received a copy of the GNU Lesser General Public
# and other portions are under the following copyright and license: # License along with this library; if not, write to the Free Software
# # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
# #
# See: http://www.gnu.org/licenses/lgpl.html
# #
############################################################################## ##############################################################################

View File

@ -1,49 +1,25 @@
########################################################################## #########################################################################
# #
# Portions of this file are under the following copyright and license: # Copyright (c) 2003-2004 Danny Brewer d29583@groovegarden.com
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
# #
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2.1 of the License, or (at your option) any later version.
# #
# Copyright (c) 2003-2004 Danny Brewer # This library is distributed in the hope that it will be useful,
# d29583@groovegarden.com # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# This library is free software; you can redistribute it and/or # You should have received a copy of the GNU Lesser General Public
# modify it under the terms of the GNU Lesser General Public # License along with this library; if not, write to the Free Software
# License as published by the Free Software Foundation; either # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
# version 2.1 of the License, or (at your option) any later version.
# #
# This library is distributed in the hope that it will be useful, # See: http://www.gnu.org/licenses/lgpl.html
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Lesser General Public License for more details.
# #
# You should have received a copy of the GNU Lesser General Public #############################################################################
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# See: http://www.gnu.org/licenses/lgpl.html
#
#
# and other portions are under the following copyright and license:
#
#
# OpenERP, Open Source Management Solution>..
# Copyright (C) 2004-2010 OpenERP SA (<http://openerp.com>).
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# 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/>.
#
#
##############################################################################
import re import re
import uno import uno

View File

@ -7,14 +7,14 @@ msgstr ""
"Project-Id-Version: OpenERP Server 6.0dev\n" "Project-Id-Version: OpenERP Server 6.0dev\n"
"Report-Msgid-Bugs-To: support@openerp.com\n" "Report-Msgid-Bugs-To: support@openerp.com\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2012-12-28 10:09+0000\n" "PO-Revision-Date: 2013-05-27 12:19+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n" "Last-Translator: leksei <lirgus@gmail.com>\n"
"Language-Team: \n" "Language-Team: \n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:12+0000\n" "X-Launchpad-Export-Date: 2013-05-28 05:17+0000\n"
"X-Generator: Launchpad (build 16532)\n" "X-Generator: Launchpad (build 16640)\n"
#. module: base_setup #. module: base_setup
#: view:sale.config.settings:0 #: view:sale.config.settings:0
@ -41,6 +41,8 @@ msgstr "base.config.settings"
msgid "" msgid ""
"Use external authentication providers, sign in with google, facebook, ..." "Use external authentication providers, sign in with google, facebook, ..."
msgstr "" msgstr ""
"Использовать внешние сервисы аутентификации, например, вход через google, "
"facebook, ..."
#. module: base_setup #. module: base_setup
#: view:sale.config.settings:0 #: view:sale.config.settings:0
@ -68,7 +70,7 @@ msgstr "Участник"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
msgid "Portal access" msgid "Portal access"
msgstr "" msgstr "Доступ к порталу"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
@ -192,6 +194,9 @@ msgid ""
"When you create a new contact (person or company), you will be able to load " "When you create a new contact (person or company), you will be able to load "
"all the data from LinkedIn (photos, address, etc)." "all the data from LinkedIn (photos, address, etc)."
msgstr "" msgstr ""
"Когда вы создаете новый контакт (человека или компанию), у вас есть "
"возможность загрузить из LinkedIn всю информацию о нем (адреса, фотографии и "
"т.д.)"
#. module: base_setup #. module: base_setup
#: help:base.config.settings,module_multi_company:0 #: help:base.config.settings,module_multi_company:0
@ -200,6 +205,9 @@ msgid ""
"companies.\n" "companies.\n"
" This installs the module multi_company." " This installs the module multi_company."
msgstr "" msgstr ""
"Работать в режиме Мульти-компании, с соответствующими правами доступа между "
"компаниями.\n"
" Будет установлен модуль multi_company."
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
@ -208,6 +216,9 @@ msgid ""
"You can\n" "You can\n"
" launch the OpenERP Server with the option" " launch the OpenERP Server with the option"
msgstr "" msgstr ""
"Публичный портал доступен только при использовании одной базы данных. Вы "
"можете\n"
" запустить сервер OpenERP с этой опцией"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
@ -215,6 +226,8 @@ msgid ""
"You will find more options in your company details: address for the header " "You will find more options in your company details: address for the header "
"and footer, overdue payments texts, etc." "and footer, overdue payments texts, etc."
msgstr "" msgstr ""
"Больше опций вы можете найти в настройках компании: адреса для "
"верхнего/нижнего колонтитула, тексты для просроченных платежей и т.д."
#. module: base_setup #. module: base_setup
#: model:ir.model,name:base_setup.model_sale_config_settings #: model:ir.model,name:base_setup.model_sale_config_settings
@ -238,6 +251,14 @@ msgid ""
"projects,\n" "projects,\n"
" etc." " etc."
msgstr "" msgstr ""
"Когда вы отправляете заказчику документы\n"
" (прайсы, счета), для их получения он "
"сможет\n"
" войти на портал, где так же сможет "
"прочитать\n"
" новости вашей компании, узнать "
"обновления по\n"
" его проектам и т.д."
#. module: base_setup #. module: base_setup
#: model:ir.model,name:base_setup.model_base_setup_terminology #: model:ir.model,name:base_setup.model_base_setup_terminology
@ -252,7 +273,7 @@ msgstr "Клиент"
#. module: base_setup #. module: base_setup
#: help:base.config.settings,module_portal_anonymous:0 #: help:base.config.settings,module_portal_anonymous:0
msgid "Enable the public part of openerp, openerp becomes a public website." msgid "Enable the public part of openerp, openerp becomes a public website."
msgstr "" msgstr "Включая публичную часть, openerp становится общедоступным сайтом."
#. module: base_setup #. module: base_setup
#: help:sale.config.settings,module_plugin_thunderbird:0 #: help:sale.config.settings,module_plugin_thunderbird:0
@ -274,13 +295,13 @@ msgstr "Контрагент"
#. module: base_setup #. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_partner_terminology_config_form #: model:ir.actions.act_window,name:base_setup.action_partner_terminology_config_form
msgid "Use another word to say \"Customer\"" msgid "Use another word to say \"Customer\""
msgstr "" msgstr "Использовать другое слово вместо \"Заказчик\""
#. module: base_setup #. module: base_setup
#: model:ir.actions.act_window,name:base_setup.action_sale_config #: model:ir.actions.act_window,name:base_setup.action_sale_config
#: view:sale.config.settings:0 #: view:sale.config.settings:0
msgid "Configure Sales" msgid "Configure Sales"
msgstr "" msgstr "Настройки продаж"
#. module: base_setup #. module: base_setup
#: help:sale.config.settings,module_plugin_outlook:0 #: help:sale.config.settings,module_plugin_outlook:0
@ -297,12 +318,12 @@ msgstr ""
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
msgid "Options" msgid "Options"
msgstr "" msgstr "Настройки"
#. module: base_setup #. module: base_setup
#: field:base.config.settings,module_portal:0 #: field:base.config.settings,module_portal:0
msgid "Activate the customer portal" msgid "Activate the customer portal"
msgstr "" msgstr "Включить клиентский портал"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
@ -315,32 +336,32 @@ msgstr ""
#. module: base_setup #. module: base_setup
#: field:base.config.settings,module_share:0 #: field:base.config.settings,module_share:0
msgid "Allow documents sharing" msgid "Allow documents sharing"
msgstr "" msgstr "Разрешить совместный доступ к документам"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
msgid "(company news, jobs, contact form, etc.)" msgid "(company news, jobs, contact form, etc.)"
msgstr "" msgstr "(новости компании, вакансии, форма обратной связи т.д.)"
#. module: base_setup #. module: base_setup
#: field:base.config.settings,module_portal_anonymous:0 #: field:base.config.settings,module_portal_anonymous:0
msgid "Activate the public portal" msgid "Activate the public portal"
msgstr "" msgstr "Включить публичный портал"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
msgid "Configure outgoing email servers" msgid "Configure outgoing email servers"
msgstr "" msgstr "Настроить сервер(а) исходящей почты"
#. module: base_setup #. module: base_setup
#: view:sale.config.settings:0 #: view:sale.config.settings:0
msgid "Social Network Integration" msgid "Social Network Integration"
msgstr "" msgstr "Интеграция с социальными сетями"
#. module: base_setup #. module: base_setup
#: help:base.config.settings,module_portal:0 #: help:base.config.settings,module_portal:0
msgid "Give your customers access to their documents." msgid "Give your customers access to their documents."
msgstr "" msgstr "Разрешить заказчикам доступ к своим документам"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
@ -352,23 +373,23 @@ msgstr "Отмена"
#: view:base.config.settings:0 #: view:base.config.settings:0
#: view:sale.config.settings:0 #: view:sale.config.settings:0
msgid "Apply" msgid "Apply"
msgstr "" msgstr "Применить"
#. module: base_setup #. module: base_setup
#: view:base.setup.terminology:0 #: view:base.setup.terminology:0
msgid "Specify Your Terminology" msgid "Specify Your Terminology"
msgstr "" msgstr "Определить терминологию"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
#: view:sale.config.settings:0 #: view:sale.config.settings:0
msgid "or" msgid "or"
msgstr "" msgstr "или"
#. module: base_setup #. module: base_setup
#: view:base.config.settings:0 #: view:base.config.settings:0
msgid "Configure your company data" msgid "Configure your company data"
msgstr "" msgstr "Настроить информацию о компании"
#~ msgid "City" #~ msgid "City"
#~ msgstr "Город" #~ msgstr "Город"

View File

@ -31,7 +31,7 @@
<group> <group>
<label for="id" string="Email"/> <label for="id" string="Email"/>
<div name="email"> <div name="email">
<div> <div name="email.outgoing_server">
<button type="action" <button type="action"
name="%(base.action_ir_mail_server_list)d" name="%(base.action_ir_mail_server_list)d"
string="Configure outgoing email servers" class="oe_link"/> string="Configure outgoing email servers" class="oe_link"/>

View File

@ -0,0 +1,76 @@
# Lithuanian translation for openobject-addons
# Copyright (c) 2013 Rosetta Contributors and Canonical Ltd 2013
# This file is distributed under the same license as the openobject-addons package.
# FIRST AUTHOR <EMAIL@ADDRESS>, 2013.
#
msgid ""
msgstr ""
"Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2013-04-29 15:17+0000\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: Lithuanian <lt@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: 2013-04-30 05:29+0000\n"
"X-Generator: Launchpad (build 16580)\n"
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid "Error !"
msgstr ""
#. module: base_status
#: code:addons/base_status/base_state.py:166
#, python-format
msgid "%s has been <b>opened</b>."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_state.py:199
#, python-format
msgid "%s has been <b>renewed</b>."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_stage.py:210
#, python-format
msgid "Error!"
msgstr ""
#. module: base_status
#: code:addons/base_status/base_state.py:107
#, python-format
msgid ""
"You can not escalate, you are already at the top level regarding your sales-"
"team category."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_state.py:193
#, python-format
msgid "%s is now <b>pending</b>."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_state.py:187
#, python-format
msgid "%s has been <b>canceled</b>."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_stage.py:210
#, python-format
msgid ""
"You are already at the top level of your sales-team category.\n"
"Therefore you cannot escalate furthermore."
msgstr ""
#. module: base_status
#: code:addons/base_status/base_state.py:181
#, python-format
msgid "%s has been <b>closed</b>."
msgstr ""

View File

@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: openobject-addons\n" "Project-Id-Version: openobject-addons\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n" "Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-12-21 17:05+0000\n" "POT-Creation-Date: 2012-12-21 17:05+0000\n"
"PO-Revision-Date: 2010-09-30 06:47+0000\n" "PO-Revision-Date: 2013-05-27 12:19+0000\n"
"Last-Translator: Chertykov Denis <chertykov@gmail.com>\n" "Last-Translator: Chertykov Denis <chertykov@gmail.com>\n"
"Language-Team: Russian <ru@li.org>\n" "Language-Team: Russian <ru@li.org>\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2013-03-16 05:41+0000\n" "X-Launchpad-Export-Date: 2013-05-28 05:17+0000\n"
"X-Generator: Launchpad (build 16532)\n" "X-Generator: Launchpad (build 16640)\n"
#. module: claim_from_delivery #. module: claim_from_delivery
#: view:stock.picking.out:0 #: view:stock.picking.out:0
@ -25,7 +25,7 @@ msgstr ""
#. module: claim_from_delivery #. module: claim_from_delivery
#: model:res.request.link,name:claim_from_delivery.request_link_claim_from_delivery #: model:res.request.link,name:claim_from_delivery.request_link_claim_from_delivery
msgid "Delivery Order" msgid "Delivery Order"
msgstr "" msgstr "Заказ доставки"
#. module: claim_from_delivery #. module: claim_from_delivery
#: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery #: model:ir.actions.act_window,name:claim_from_delivery.action_claim_from_delivery

Some files were not shown because too many files have changed in this diff Show More