[MERGE] Sync with trunk
bzr revid: tde@openerp.com-20130522103305-yi5ql1chdx9qxxlx bzr revid: tde@openerp.com-20130522114236-qi2s3i2dl2lemdvh
This commit is contained in:
commit
cd278d83ab
|
@ -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',
|
||||
'account_end_fy.xml',
|
||||
'account_invoice_view.xml',
|
||||
'partner_view.xml',
|
||||
'data/account_data.xml',
|
||||
'data/data_account_type.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_cost_ledger_for_journal_report_view.xml',
|
||||
'project/wizard/account_analytic_chart_view.xml',
|
||||
'partner_view.xml',
|
||||
'product_view.xml',
|
||||
'account_assert_test.xml',
|
||||
'process/statement_process.xml',
|
||||
|
|
|
@ -1670,7 +1670,7 @@ class account_move_reconcile(osv.osv):
|
|||
elif reconcile.line_partial_ids:
|
||||
first_partner = reconcile.line_partial_ids[0].partner_id.id
|
||||
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 True
|
||||
|
||||
|
|
|
@ -6,16 +6,19 @@
|
|||
-->
|
||||
<record id="account_financial_report_profitandloss0" model="account.financial.report">
|
||||
<field name="name">Profit and Loss</field>
|
||||
<field name="sign" eval="-1" />
|
||||
<field name="type">sum</field>
|
||||
</record>
|
||||
<record id="account_financial_report_income0" model="account.financial.report">
|
||||
<field name="name">Income</field>
|
||||
<field name="sign" eval="-1" />
|
||||
<field name="parent_id" ref="account_financial_report_profitandloss0"/>
|
||||
<field name="display_detail">detail_with_hierarchy</field>
|
||||
<field name="type">account_type</field>
|
||||
</record>
|
||||
<record id="account_financial_report_expense0" model="account.financial.report">
|
||||
<field name="name">Expense</field>
|
||||
<field name="sign" eval="-1" />
|
||||
<field name="parent_id" ref="account_financial_report_profitandloss0"/>
|
||||
<field name="display_detail">detail_with_hierarchy</field>
|
||||
<field name="type">account_type</field>
|
||||
|
|
|
@ -20,10 +20,11 @@
|
|||
</p>
|
||||
<group>
|
||||
<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 string="Configure your Fiscal Year" groups="account.group_account_user">
|
||||
<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"/>
|
||||
<div>
|
||||
<field name="date_start" on_change="on_change_start_date(date_start)" class="oe_inline"/> -
|
||||
|
|
|
@ -742,7 +742,7 @@ class account_invoice(osv.osv):
|
|||
inv = self.browse(cr, uid, id)
|
||||
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'):
|
||||
sign = 1
|
||||
else:
|
||||
|
@ -789,6 +789,7 @@ class account_invoice(osv.osv):
|
|||
return move_lines
|
||||
|
||||
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:
|
||||
for tax in compute_taxes.values():
|
||||
ait_obj.create(cr, uid, tax)
|
||||
|
@ -802,7 +803,7 @@ class account_invoice(osv.osv):
|
|||
if not key in compute_taxes:
|
||||
raise osv.except_osv(_('Warning!'), _('Global taxes defined, but they are not in invoice lines !'))
|
||||
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.'))
|
||||
for key in compute_taxes:
|
||||
if not key in tax_key:
|
||||
|
@ -889,7 +890,7 @@ class account_invoice(osv.osv):
|
|||
ctx.update({'lang': inv.partner_id.lang})
|
||||
if not inv.date_invoice:
|
||||
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
|
||||
# one move line per invoice line
|
||||
iml = self._get_analytic_lines(cr, uid, inv.id, context=ctx)
|
||||
|
@ -1005,7 +1006,8 @@ class account_invoice(osv.osv):
|
|||
'line_id': line,
|
||||
'journal_id': journal_id,
|
||||
'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
|
||||
ctx.update(company_id=inv.company_id.id)
|
||||
|
@ -1537,8 +1539,7 @@ class account_invoice_line(osv.osv):
|
|||
if context is None:
|
||||
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:
|
||||
mres = self.move_line_get_item(cr, uid, line, context)
|
||||
if not mres:
|
||||
|
@ -1682,8 +1683,7 @@ class account_invoice_tax(osv.osv):
|
|||
cur_obj = self.pool.get('res.currency')
|
||||
inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id, context=context)
|
||||
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 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={}
|
||||
|
|
|
@ -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_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_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']),
|
||||
]
|
||||
|
||||
|
|
|
@ -2111,10 +2111,8 @@
|
|||
<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)]"/>
|
||||
</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>
|
||||
<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="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)]}"/>
|
||||
|
|
|
@ -50,11 +50,12 @@
|
|||
</field>
|
||||
</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="name">Contracts/Analytic Accounts</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 model="ir.ui.view" id="partner_view_buttons">
|
||||
<field name="name">partner.view.buttons</field>
|
||||
|
@ -67,7 +68,7 @@
|
|||
name="%(account.action_invoice_tree)d"
|
||||
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="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"/>
|
||||
</xpath>
|
||||
</field>
|
||||
|
|
|
@ -77,6 +77,7 @@
|
|||
<field name="name">Analytic Accounts</field>
|
||||
<field name="type">ir.actions.act_window</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_mode">tree,form</field>
|
||||
<field name="view_id" ref="view_account_analytic_account_tree"/>
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# 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
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -99,12 +99,13 @@ class account_invoice_report(osv.osv):
|
|||
'partner_bank_id': fields.many2one('res.partner.bank', 'Bank Account',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"),
|
||||
'country_id': fields.many2one('res.country', 'Country of the Partner Company'),
|
||||
}
|
||||
_order = 'date desc'
|
||||
|
||||
def _select(self):
|
||||
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.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,
|
||||
|
@ -172,7 +173,8 @@ class account_invoice_report(osv.osv):
|
|||
WHERE a.id = ai.id)
|
||||
ELSE 1::bigint
|
||||
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
|
||||
|
||||
|
@ -180,6 +182,7 @@ class account_invoice_report(osv.osv):
|
|||
from_str = """
|
||||
FROM account_invoice_line ail
|
||||
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_template pt ON pt.id = pr.product_tmpl_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.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.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
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
<field name="company_id" invisible="1"/>
|
||||
<field name="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="uom_name" invisible="not context.get('set_visible',False)"/>
|
||||
<field name="categ_id" invisible="1"/>
|
||||
|
@ -68,6 +69,7 @@
|
|||
<group expand="1" string="Group By...">
|
||||
<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'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="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"/>
|
||||
|
|
|
@ -25,6 +25,7 @@ from dateutil.relativedelta import relativedelta
|
|||
from operator import itemgetter
|
||||
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.osv import fields, osv
|
||||
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)
|
||||
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 = {
|
||||
'company_id': _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):
|
||||
|
@ -161,6 +193,7 @@ class account_config_settings(osv.osv_memory):
|
|||
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')),
|
||||
('company_id', '=', company_id)])
|
||||
date_start, date_stop, period = self._get_default_fiscalyear_data(cr, uid, company_id, context=context)
|
||||
values = {
|
||||
'expects_chart_of_accounts': company.expects_chart_of_accounts,
|
||||
'currency_id': company.currency_id.id,
|
||||
|
@ -170,6 +203,9 @@ class account_config_settings(osv.osv_memory):
|
|||
'has_fiscal_year': bool(fiscalyear_count),
|
||||
'chart_template_id': False,
|
||||
'tax_calculation_rounding_method': company.tax_calculation_rounding_method,
|
||||
'date_start': date_start,
|
||||
'date_stop': date_stop,
|
||||
'period': period,
|
||||
}
|
||||
# update journals and sequences
|
||||
for journal_type in ('sale', 'sale_refund', 'purchase', 'purchase_refund'):
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
from openerp.osv import fields, osv
|
||||
import openerp.addons.decimal_precision as dp
|
||||
from openerp.tools.translate import _
|
||||
|
|
|
@ -259,17 +259,14 @@ class account_analytic_account(osv.osv):
|
|||
return res
|
||||
|
||||
if child_ids:
|
||||
cr.execute("SELECT account_analytic_line.account_id, COALESCE(SUM(amount), 0.0) \
|
||||
FROM account_analytic_line \
|
||||
JOIN account_analytic_journal \
|
||||
ON account_analytic_line.journal_id = account_analytic_journal.id \
|
||||
WHERE account_analytic_line.account_id IN %s \
|
||||
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)
|
||||
#Search all invoice lines not in cancelled state that refer to this analytic account
|
||||
inv_line_obj = self.pool.get("account.invoice.line")
|
||||
inv_lines = inv_line_obj.search(cr, uid, ['&', ('account_analytic_id', 'in', child_ids), ('invoice_id.state', '!=', 'cancel')], context=context)
|
||||
for line in inv_line_obj.browse(cr, uid, inv_lines, context=context):
|
||||
res[line.account_analytic_id.id] += line.price_subtotal
|
||||
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_final = res
|
||||
return res_final
|
||||
|
||||
|
@ -633,6 +630,21 @@ class account_analytic_account(osv.osv):
|
|||
pass
|
||||
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):
|
||||
context = context or {}
|
||||
|
||||
|
|
|
@ -98,8 +98,8 @@
|
|||
<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')]}">
|
||||
<span attrs="{'invisible': [('ca_to_invoice','=',0.0)]}" class="oe_grey">
|
||||
<button name="%(hr_timesheet_invoice.action_hr_timesheet_invoice_create_final)d"
|
||||
type="action"
|
||||
<button name="hr_to_invoice_timesheets"
|
||||
type="object"
|
||||
class="oe_link"
|
||||
string="⇒ Invoice"/>
|
||||
or view
|
||||
|
|
|
@ -165,9 +165,8 @@ class res_partner(osv.osv):
|
|||
else:
|
||||
action_text = partner.latest_followup_level_id_without_lit.manual_action_note or ''
|
||||
|
||||
#Check date: put the minimum date if it existed already
|
||||
action_date = (partner.payment_next_action_date and min(partner.payment_next_action_date, fields.date.context_today(self, cr, uid, context=context))
|
||||
) or fields.date.context_today(self, cr, uid, context=context)
|
||||
#Check date: only change when it did not exist already
|
||||
action_date = partner.payment_next_action_date or fields.date.context_today(self, cr, uid, context=context)
|
||||
|
||||
# Check responsible: if partner has not got a responsible already, take from follow-up
|
||||
responsible_id = False
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# 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
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -67,6 +67,7 @@ This module manages:
|
|||
'test/sales_payment.yml',
|
||||
'test/account_voucher_report.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_usd.yml',
|
||||
'test/case3_eur_eur.yml',
|
||||
|
|
|
@ -26,6 +26,19 @@ from openerp.osv import fields, osv
|
|||
import openerp.addons.decimal_precision as dp
|
||||
from openerp.tools.translate import _
|
||||
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):
|
||||
_inherit = "res.company"
|
||||
|
@ -153,7 +166,7 @@ class account_voucher(osv.osv):
|
|||
journal = journal_pool.browse(cr, uid, journal_id, context=context)
|
||||
if journal.currency:
|
||||
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):
|
||||
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):
|
||||
context = context or {}
|
||||
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_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)
|
||||
|
||||
#compute the field is_multi_currency that is used to hide/display options linked to secondary currency on the voucher
|
||||
is_multi_currency = False
|
||||
if voucher_currency:
|
||||
# if the voucher currency is not False, it means it is different than the company currency and we need to display the options
|
||||
is_multi_currency = True
|
||||
else:
|
||||
#loop on the voucher lines to see if one of these has a secondary currency. If yes, we need to define the options
|
||||
for voucher_line in line_dr_ids+line_cr_ids:
|
||||
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
|
||||
#loop on the voucher lines to see if one of these has a secondary currency. If yes, we need to see the options
|
||||
for voucher_line in line_dr_ids+line_cr_ids:
|
||||
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')
|
||||
if line_id and self.pool.get('account.move.line').browse(cr, uid, line_id, context=context).currency_id:
|
||||
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}}
|
||||
|
||||
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):
|
||||
if not ids: return {}
|
||||
currency_obj = self.pool.get('res.currency')
|
||||
|
@ -258,20 +271,48 @@ class account_voucher(osv.osv):
|
|||
return res
|
||||
|
||||
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 = {}
|
||||
rate = 1.0
|
||||
for voucher in self.browse(cr, uid, ids, context=context):
|
||||
if voucher.currency_id:
|
||||
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
|
||||
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)
|
||||
return res
|
||||
|
||||
_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)]}),
|
||||
'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)]}),
|
||||
# 'currency_id':fields.many2one('res.currency', 'Currency', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'currency_id': fields.related('journal_id','currency', type='many2one', relation='res.currency', string='Currency', readonly=True),
|
||||
'currency_id': fields.function(_get_journal_currency, type='many2one', relation='res.currency', string='Currency', readonly=True, required=True),
|
||||
'company_id': fields.many2one('res.company', 'Company', required=True, readonly=True, states={'draft':[('readonly',False)]}),
|
||||
'state':fields.selection(
|
||||
[('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.'),
|
||||
'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'),
|
||||
'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 = {
|
||||
'active': True,
|
||||
|
@ -422,6 +463,8 @@ class account_voucher(osv.osv):
|
|||
partner_pool = self.pool.get('res.partner')
|
||||
position_pool = self.pool.get('account.fiscal.position')
|
||||
line_pool = self.pool.get('account.voucher.line')
|
||||
if not line_ids:
|
||||
line_ids = []
|
||||
res = {
|
||||
'tax_amount': False,
|
||||
'amount': False,
|
||||
|
@ -516,23 +559,26 @@ class account_voucher(osv.osv):
|
|||
return default
|
||||
|
||||
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}}
|
||||
company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id
|
||||
if rate and amount and currency_id:# and currency_id == payment_rate_currency_id:
|
||||
voucher_rate = self.pool.get('res.currency').browse(cr, uid, currency_id, context).rate
|
||||
if company_currency.id == payment_rate_currency_id:
|
||||
company_rate = rate
|
||||
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
|
||||
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)}}
|
||||
if rate and amount and currency_id:
|
||||
company_currency = self.pool.get('res.company').browse(cr, uid, company_id, context=context).currency_id
|
||||
#context should contain the date, the payment currency and the payment rate specified on the voucher
|
||||
amount_in_company_currency = self.pool.get('res.currency').compute(cr, uid, currency_id, company_currency.id, amount, context=context)
|
||||
res['value']['paid_amount_in_company_currency'] = amount_in_company_currency
|
||||
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):
|
||||
if context is None:
|
||||
context = {}
|
||||
res = self.recompute_voucher_lines(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=context)
|
||||
ctx = context.copy()
|
||||
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)
|
||||
for key in vals.keys():
|
||||
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)
|
||||
company_id = journal.company_id.id
|
||||
payment_rate = 1.0
|
||||
currency_id = currency_id or journal.company_id.currency_id.id
|
||||
payment_rate_currency_id = currency_id
|
||||
ctx = context.copy()
|
||||
ctx.update({'date': date})
|
||||
|
@ -561,24 +608,62 @@ class account_voucher(osv.osv):
|
|||
# is not in the voucher currency
|
||||
payment_rate_currency_id = voucher_line['currency_id']
|
||||
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, voucher_currency_id, context=ctx).rate
|
||||
payment_rate = tmp / currency_obj.browse(cr, uid, currency_id, context=ctx).rate
|
||||
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)
|
||||
for key in res.keys():
|
||||
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
|
||||
|
||||
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):
|
||||
if not journal_id:
|
||||
return {}
|
||||
res = self.recompute_voucher_lines(cr, uid, ids, partner_id, journal_id, amount, currency_id, ttype, date, context=context)
|
||||
vals = self.recompute_payment_rate(cr, uid, ids, res, currency_id, date, ttype, journal_id, amount, context=context)
|
||||
if context is None:
|
||||
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():
|
||||
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
|
||||
# [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
|
||||
|
@ -621,8 +706,6 @@ class account_voucher(osv.osv):
|
|||
if context is None:
|
||||
context = {}
|
||||
context_multi_currency = context.copy()
|
||||
if date:
|
||||
context_multi_currency.update({'date': date})
|
||||
|
||||
currency_pool = self.pool.get('res.currency')
|
||||
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)
|
||||
partner = partner_pool.browse(cr, uid, partner_id, context=context)
|
||||
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_debit = 0.0
|
||||
|
@ -715,12 +786,13 @@ class account_voucher(osv.osv):
|
|||
if _remove_noise_in_o2m():
|
||||
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_unreconciled = abs(line.amount_residual_currency)
|
||||
else:
|
||||
amount_original = currency_pool.compute(cr, uid, company_currency, currency_id, line.credit or line.debit or 0.0)
|
||||
amount_unreconciled = currency_pool.compute(cr, uid, company_currency, currency_id, abs(line.amount_residual))
|
||||
#always use the amount booked in the company currency as the basis of the conversion into the voucher currency
|
||||
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
|
||||
rs = {
|
||||
'name':line.move_id.name,
|
||||
|
@ -766,10 +838,15 @@ class account_voucher(osv.osv):
|
|||
if context is None:
|
||||
context = {}
|
||||
res = {'value': {}}
|
||||
#set the default payment rate of the voucher and compute the paid amount in company currency
|
||||
if currency_id and currency_id == payment_rate_currency_id:
|
||||
if currency_id:
|
||||
#set the default payment rate of the voucher and compute the paid amount in company currency
|
||||
ctx = context.copy()
|
||||
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)
|
||||
for key in vals.keys():
|
||||
res[key].update(vals[key])
|
||||
|
@ -789,7 +866,8 @@ class account_voucher(osv.osv):
|
|||
period_pool = self.pool.get('account.period')
|
||||
currency_obj = self.pool.get('res.currency')
|
||||
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)
|
||||
if pids:
|
||||
res['value'].update({'period_id':pids[0]})
|
||||
|
@ -798,9 +876,8 @@ class account_voucher(osv.osv):
|
|||
payment_rate = 1.0
|
||||
if payment_rate_currency_id != currency_id:
|
||||
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
|
||||
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})
|
||||
for key in vals.keys():
|
||||
res[key].update(vals[key])
|
||||
|
@ -823,7 +900,15 @@ class account_voucher(osv.osv):
|
|||
currency_id = False
|
||||
if journal.currency:
|
||||
currency_id = journal.currency.id
|
||||
else:
|
||||
currency_id = journal.company_id.currency_id.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)
|
||||
for key in res.keys():
|
||||
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)
|
||||
if current_currency <> company_currency:
|
||||
context_multi_currency = context.copy()
|
||||
voucher_brw = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context)
|
||||
context_multi_currency.update({'date': voucher_brw.date})
|
||||
voucher = self.pool.get('account.voucher').browse(cr, uid, voucher_id, context)
|
||||
context_multi_currency.update({'date': voucher.date})
|
||||
return context_multi_currency
|
||||
return context
|
||||
|
||||
|
@ -921,33 +1006,33 @@ class account_voucher(osv.osv):
|
|||
:return: mapping between fieldname and value of account move line to create
|
||||
: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
|
||||
# TODO: is there any other alternative then the voucher type ??
|
||||
# ANSWER: We can have payment and receipt "In Advance".
|
||||
# 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
|
||||
if voucher_brw.type in ('purchase', 'payment'):
|
||||
credit = voucher_brw.paid_amount_in_company_currency
|
||||
elif voucher_brw.type in ('sale', 'receipt'):
|
||||
debit = voucher_brw.paid_amount_in_company_currency
|
||||
if voucher.type in ('purchase', 'payment'):
|
||||
credit = voucher.paid_amount_in_company_currency
|
||||
elif voucher.type in ('sale', 'receipt'):
|
||||
debit = voucher.paid_amount_in_company_currency
|
||||
if debit < 0: credit = -debit; debit = 0.0
|
||||
if credit < 0: debit = -credit; credit = 0.0
|
||||
sign = debit - credit < 0 and -1 or 1
|
||||
#set the first line of the voucher
|
||||
move_line = {
|
||||
'name': voucher_brw.name or '/',
|
||||
'name': voucher.name or '/',
|
||||
'debit': debit,
|
||||
'credit': credit,
|
||||
'account_id': voucher_brw.account_id.id,
|
||||
'account_id': voucher.account_id.id,
|
||||
'move_id': move_id,
|
||||
'journal_id': voucher_brw.journal_id.id,
|
||||
'period_id': voucher_brw.period_id.id,
|
||||
'partner_id': voucher_brw.partner_id.id,
|
||||
'journal_id': voucher.journal_id.id,
|
||||
'period_id': voucher.period_id.id,
|
||||
'partner_id': voucher.partner_id.id,
|
||||
'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,
|
||||
'date': voucher_brw.date,
|
||||
'date_maturity': voucher_brw.date_due
|
||||
'amount_currency': company_currency <> current_currency and sign * voucher.amount or 0.0,
|
||||
'date': voucher.date,
|
||||
'date_maturity': voucher.date_due
|
||||
}
|
||||
return move_line
|
||||
|
||||
|
@ -960,31 +1045,31 @@ class account_voucher(osv.osv):
|
|||
:rtype: dict
|
||||
'''
|
||||
seq_obj = self.pool.get('ir.sequence')
|
||||
voucher_brw = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
|
||||
if voucher_brw.number:
|
||||
name = voucher_brw.number
|
||||
elif voucher_brw.journal_id.sequence_id:
|
||||
if not voucher_brw.journal_id.sequence_id.active:
|
||||
voucher = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
|
||||
if voucher.number:
|
||||
name = voucher.number
|
||||
elif voucher.journal_id.sequence_id:
|
||||
if not voucher.journal_id.sequence_id.active:
|
||||
raise osv.except_osv(_('Configuration Error !'),
|
||||
_('Please activate the sequence of selected journal !'))
|
||||
c = dict(context)
|
||||
c.update({'fiscalyear_id': voucher_brw.period_id.fiscalyear_id.id})
|
||||
name = seq_obj.next_by_id(cr, uid, voucher_brw.journal_id.sequence_id.id, context=c)
|
||||
c.update({'fiscalyear_id': voucher.period_id.fiscalyear_id.id})
|
||||
name = seq_obj.next_by_id(cr, uid, voucher.journal_id.sequence_id.id, context=c)
|
||||
else:
|
||||
raise osv.except_osv(_('Error!'),
|
||||
_('Please define a sequence on the journal.'))
|
||||
if not voucher_brw.reference:
|
||||
if not voucher.reference:
|
||||
ref = name.replace('/','')
|
||||
else:
|
||||
ref = voucher_brw.reference
|
||||
ref = voucher.reference
|
||||
|
||||
move = {
|
||||
'name': name,
|
||||
'journal_id': voucher_brw.journal_id.id,
|
||||
'narration': voucher_brw.narration,
|
||||
'date': voucher_brw.date,
|
||||
'journal_id': voucher.journal_id.id,
|
||||
'narration': voucher.narration,
|
||||
'date': voucher.date,
|
||||
'ref': ref,
|
||||
'period_id': voucher_brw.period_id.id,
|
||||
'period_id': voucher.period_id.id,
|
||||
}
|
||||
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."))
|
||||
# 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
|
||||
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 = {
|
||||
'journal_id': line.voucher_id.journal_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
|
||||
:rtype: float
|
||||
'''
|
||||
if context is None:
|
||||
context = {}
|
||||
currency_obj = self.pool.get('res.currency')
|
||||
voucher = self.browse(cr, uid, voucher_id, context=context)
|
||||
res = amount
|
||||
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
|
||||
return currency_obj.compute(cr, uid, voucher.currency_id.id, voucher.company_id.currency_id.id, amount, context=context)
|
||||
|
||||
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
|
||||
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.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')
|
||||
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
|
||||
# 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)):
|
||||
continue
|
||||
# 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
|
||||
# currency rate difference
|
||||
if line.amount == line.amount_unreconciled:
|
||||
if not line.move_line_id:
|
||||
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)
|
||||
else:
|
||||
currency_rate_difference = 0.0
|
||||
move_line = {
|
||||
'journal_id': voucher_brw.journal_id.id,
|
||||
'period_id': voucher_brw.period_id.id,
|
||||
'journal_id': voucher.journal_id.id,
|
||||
'period_id': voucher.period_id.id,
|
||||
'name': line.name or '/',
|
||||
'account_id': line.account_id.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,
|
||||
'analytic_account_id': line.account_analytic_id and line.account_analytic_id.id or False,
|
||||
'quantity': 1,
|
||||
'credit': 0.0,
|
||||
'debit': 0.0,
|
||||
'date': voucher_brw.date
|
||||
'date': voucher.date
|
||||
}
|
||||
if amount < 0:
|
||||
amount = -amount
|
||||
|
@ -1135,9 +1224,9 @@ class account_voucher(osv.osv):
|
|||
tot_line -= 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({
|
||||
'account_tax_id': voucher_brw.tax_id.id,
|
||||
'account_tax_id': voucher.tax_id.id,
|
||||
})
|
||||
|
||||
if move_line.get('account_tax_id', False):
|
||||
|
@ -1149,7 +1238,6 @@ class account_voucher(osv.osv):
|
|||
foreign_currency_diff = 0.0
|
||||
amount_currency = False
|
||||
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
|
||||
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.
|
||||
|
@ -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
|
||||
sign = (move_line['debit'] - move_line['credit']) < 0 and -1 or 1
|
||||
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:
|
||||
# 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)
|
||||
if line.amount == line.amount_unreconciled and line.move_line_id.currency_id.id == voucher_currency:
|
||||
sign = voucher_brw.type in ('payment', 'purchase') and -1 or 1
|
||||
if line.amount == line.amount_unreconciled:
|
||||
sign = voucher.type in ('payment', 'purchase') and -1 or 1
|
||||
foreign_currency_diff = sign * line.move_line_id.amount_residual_currency + amount_currency
|
||||
|
||||
move_line['amount_currency'] = amount_currency
|
||||
voucher_line = move_line_obj.create(cr, uid, move_line)
|
||||
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
|
||||
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)
|
||||
|
@ -1219,32 +1304,32 @@ class account_voucher(osv.osv):
|
|||
currency_obj = self.pool.get('res.currency')
|
||||
move_line = {}
|
||||
|
||||
voucher_brw = 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
|
||||
voucher = self.pool.get('account.voucher').browse(cr,uid,voucher_id,context)
|
||||
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):
|
||||
diff = line_total
|
||||
account_id = False
|
||||
write_off_name = ''
|
||||
if voucher_brw.payment_option == 'with_writeoff':
|
||||
account_id = voucher_brw.writeoff_acc_id.id
|
||||
write_off_name = voucher_brw.comment
|
||||
elif voucher_brw.type in ('sale', 'receipt'):
|
||||
account_id = voucher_brw.partner_id.property_account_receivable.id
|
||||
if voucher.payment_option == 'with_writeoff':
|
||||
account_id = voucher.writeoff_acc_id.id
|
||||
write_off_name = voucher.comment
|
||||
elif voucher.type in ('sale', 'receipt'):
|
||||
account_id = voucher.partner_id.property_account_receivable.id
|
||||
else:
|
||||
account_id = voucher_brw.partner_id.property_account_payable.id
|
||||
sign = voucher_brw.type == 'payment' and -1 or 1
|
||||
account_id = voucher.partner_id.property_account_payable.id
|
||||
sign = voucher.type == 'payment' and -1 or 1
|
||||
move_line = {
|
||||
'name': write_off_name or name,
|
||||
'account_id': account_id,
|
||||
'move_id': move_id,
|
||||
'partner_id': voucher_brw.partner_id.id,
|
||||
'date': voucher_brw.date,
|
||||
'partner_id': voucher.partner_id.id,
|
||||
'date': voucher.date,
|
||||
'credit': 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,
|
||||
'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
|
||||
|
@ -1345,13 +1430,17 @@ class account_voucher_line(osv.osv):
|
|||
_order = "move_line_id"
|
||||
|
||||
# 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):
|
||||
currency_pool = self.pool.get('res.currency')
|
||||
rs_data = {}
|
||||
for line in self.browse(cr, uid, ids, context=context):
|
||||
ctx = context.copy()
|
||||
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 = {}
|
||||
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
|
||||
|
@ -1361,13 +1450,11 @@ class account_voucher_line(osv.osv):
|
|||
res['amount_original'] = 0.0
|
||||
res['amount_unreconciled'] = 0.0
|
||||
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_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)
|
||||
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)
|
||||
res['amount_original'] = abs(move_line.amount_currency)
|
||||
res['amount_unreconciled'] = abs(move_line.amount_residual_currency)
|
||||
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)
|
||||
|
||||
rs_data[line.id] = res
|
||||
|
|
|
@ -41,6 +41,7 @@ class invoice(osv.osv):
|
|||
'target': 'new',
|
||||
'domain': '[]',
|
||||
'context': {
|
||||
'payment_expected_currency': inv.currency_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_reference': inv.name,
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
account_id: account.cash
|
||||
amount: 1000.0
|
||||
company_id: base.main_company
|
||||
journal_id: account.bank_journal
|
||||
journal_id: account.sales_journal
|
||||
name: Voucher for Axelor
|
||||
narration: Basic Pc
|
||||
line_cr_ids:
|
||||
|
|
|
@ -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"
|
|
@ -201,7 +201,7 @@
|
|||
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_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
|
||||
-
|
||||
|
|
|
@ -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 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
|
||||
-
|
||||
|
@ -176,7 +176,8 @@
|
|||
elif move_line.amount_currency == -298.78:
|
||||
assert move_line.credit == 149.39, "Debtor account has wrong entry."
|
||||
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:
|
||||
assert move_line.amount_currency == -13.26, "Writeoff amount is wrong."
|
||||
else:
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
currency: base.USD
|
||||
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}:
|
||||
account_id: account.a_recv
|
||||
|
@ -79,7 +79,7 @@
|
|||
!context
|
||||
'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}:
|
||||
account_id: account.cash
|
||||
|
|
|
@ -46,6 +46,9 @@
|
|||
</search>
|
||||
</field>
|
||||
</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">
|
||||
<field name="name">account.voucher.payment.low.priority.form</field>
|
||||
<field name="model">account.voucher</field>
|
||||
|
@ -107,7 +110,7 @@
|
|||
</group>
|
||||
<group string="Other Information" col="4">
|
||||
<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="paid_amount_in_company_currency" colspan="4" invisible="1"/>
|
||||
<field name="number" colspan="4"/>
|
||||
|
@ -119,6 +122,7 @@
|
|||
</field>
|
||||
</record>
|
||||
|
||||
<!-- Supplier Payment -->
|
||||
<record model="ir.ui.view" id="view_vendor_payment_form">
|
||||
<field name="name">account.voucher.payment.form</field>
|
||||
<field name="model">account.voucher</field>
|
||||
|
@ -157,7 +161,7 @@
|
|||
<notebook>
|
||||
<page string="Payment Information">
|
||||
<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">
|
||||
<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)"
|
||||
|
@ -173,7 +177,7 @@
|
|||
</tree>
|
||||
</field>
|
||||
<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">
|
||||
<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)"
|
||||
|
@ -193,12 +197,16 @@
|
|||
<field name="narration" colspan="2" nolabel="1"/>
|
||||
</group>
|
||||
<group>
|
||||
<group col="4" attrs="{'invisible':[('currency_id','=',False),('is_multi_currency','=',False)]}">
|
||||
<separator string="Currency Options" colspan="4"/>
|
||||
<group col="2" attrs="{'invisible':[('is_multi_currency','=',False)]}">
|
||||
<separator string="Currency Options" colspan="2"/>
|
||||
<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_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"/>
|
||||
<label for="payment_rate" colspan="1"/>
|
||||
<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="2" invisible="1"/>
|
||||
</group>
|
||||
<group col="2">
|
||||
<separator string="Payment Options" colspan="2"/>
|
||||
|
@ -282,6 +290,7 @@
|
|||
<menuitem action="action_vendor_payment" icon="STOCK_JUSTIFY_FILL" sequence="12"
|
||||
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">
|
||||
<field name="name">account.voucher.receipt.dialog.form</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)"
|
||||
string="Payment Method"/>
|
||||
</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="period_id"/>
|
||||
|
@ -319,6 +329,21 @@
|
|||
<field name="type" invisible="True"/>
|
||||
</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">
|
||||
<page string="Payment Information" groups="base.group_user">
|
||||
<label for="line_cr_ids"/>
|
||||
|
@ -358,23 +383,12 @@
|
|||
<group>
|
||||
<field name="narration" colspan="2" nolabel="1"/>
|
||||
</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="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="paid_amount_in_company_currency" colspan="4" invisible="1"/>
|
||||
</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>
|
||||
</page>
|
||||
</notebook>
|
||||
|
@ -387,6 +401,7 @@
|
|||
</record>
|
||||
|
||||
|
||||
<!-- Customer Payment -->
|
||||
<record model="ir.ui.view" id="view_vendor_receipt_form">
|
||||
<field name="name">account.voucher.receipt.form</field>
|
||||
<field name="model">account.voucher</field>
|
||||
|
@ -467,10 +482,14 @@
|
|||
<group>
|
||||
<field name="narration" colspan="2" nolabel="1"/>
|
||||
</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="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_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"/>
|
||||
<label for="payment_rate" colspan="1"/>
|
||||
<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"/>
|
||||
</group>
|
||||
<group>
|
||||
|
|
|
@ -145,6 +145,13 @@
|
|||
</field>
|
||||
</page>
|
||||
</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>
|
||||
<div class="oe_chatter">
|
||||
<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)"
|
||||
groups="account.group_account_user"/>
|
||||
<field name="paid_amount_in_company_currency" invisible="1"/>
|
||||
<field name="currency_help_label" invisible="1"/>
|
||||
</group>
|
||||
</group>
|
||||
<notebook>
|
||||
|
|
|
@ -543,6 +543,7 @@ class ir_model_fields_anonymize_wizard(osv.osv_memory):
|
|||
fixes = group(fixes, ('model_name', 'field_name'))
|
||||
|
||||
for line in data:
|
||||
queries = []
|
||||
table_name = self.pool[line['model_id']]._table if line['model_id'] in self.pool else None
|
||||
|
||||
# check if custom sql exists:
|
||||
|
|
Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 76 KiB |
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
##############################################################################
|
||||
#
|
||||
# OpenERP, Open Source Management Solution
|
||||
|
|
|
@ -57,14 +57,14 @@ openerp.auth_signup = function(instance) {
|
|||
self.signup_enabled = result.signup;
|
||||
self.reset_password_enabled = result.reset_password;
|
||||
if (!self.signup_enabled || self.$("form input[name=login]").val()){
|
||||
self.set('login_mode', 'default');
|
||||
self.set('login_mode', self.params.type || 'default');
|
||||
} else {
|
||||
self.set('login_mode', 'signup');
|
||||
}
|
||||
});
|
||||
} else {
|
||||
// TODO: support multiple database mode
|
||||
self.set('login_mode', 'default');
|
||||
self.set('login_mode', self.params.type || 'default');
|
||||
}
|
||||
});
|
||||
},
|
||||
|
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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
|
||||
from com.sun.star.task import XJobExecutor
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 uno
|
||||
import unohelper
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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 string
|
||||
import unohelper
|
||||
|
@ -72,7 +49,7 @@ class Change( unohelper.Base, XJobExecutor ):
|
|||
'XML-RPC': 'http://',
|
||||
'XML-RPC secure': 'https://',
|
||||
'NET-RPC': 'socket://',
|
||||
}
|
||||
}
|
||||
host=port=protocol=''
|
||||
if docinfo.getUserFieldValue(0):
|
||||
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)
|
||||
protocol = m.group(1)
|
||||
if protocol:
|
||||
for (key, value) in self.protocol.iteritems():
|
||||
for (key, value) in self.protocol.iteritems():
|
||||
if value==protocol:
|
||||
protocol=key
|
||||
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( 'btnCancel', -2 - 30 - 5 ,-5, 30, 15, 'Cancel', actionListenerProc = self.btnCancel_clicked )
|
||||
|
||||
|
||||
for i in self.protocol.keys():
|
||||
self.lstProtocol.addItem(i,self.lstProtocol.getItemCount() )
|
||||
self.win.doModalDialog( "lstProtocol", protocol)
|
||||
|
@ -110,27 +87,27 @@ class Change( unohelper.Base, XJobExecutor ):
|
|||
def btnNext_clicked(self, oActionEvent):
|
||||
global url
|
||||
aVal=''
|
||||
#aVal= Fetature used
|
||||
#aVal= Fetature used
|
||||
try:
|
||||
url = self.protocol[self.win.getListBoxSelectedItem("lstProtocol")]+self.win.getEditText("txtHost")+":"+self.win.getEditText("txtPort")
|
||||
self.sock=RPCSession(url)
|
||||
desktop=getDesktop()
|
||||
doc = desktop.getCurrentComponent()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
docinfo=doc.getDocumentInfo()
|
||||
docinfo.setUserFieldValue(0,url)
|
||||
res=self.sock.listdb()
|
||||
self.win.endExecute()
|
||||
ServerParameter(aVal,url)
|
||||
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))
|
||||
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!")
|
||||
self.win.endExecute()
|
||||
|
||||
|
||||
def btnCancel_clicked(self,oActionEvent):
|
||||
self.win.endExecute()
|
||||
|
||||
|
||||
|
||||
if __name__<>"package" and __name__=="__main__":
|
||||
Change(None)
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 unohelper
|
||||
import string
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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 unohelper
|
||||
|
@ -81,7 +57,7 @@ class ConvertFieldsToBraces( unohelper.Base, XJobExecutor ):
|
|||
if __name__<>"package":
|
||||
ConvertFieldsToBraces(None)
|
||||
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:
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 uno
|
||||
import unohelper
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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 string
|
||||
import unohelper
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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 string
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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":
|
||||
from ServerParameter import *
|
||||
from lib.gui import *
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 string
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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 string
|
||||
import unohelper
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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 string
|
||||
import unohelper
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 string
|
||||
|
@ -201,7 +177,7 @@ class SendtoServer(unohelper.Base, XJobExecutor):
|
|||
if self.win.getListBoxSelectedItem("lstResourceType")=='OpenOffice':
|
||||
params['report_type']=file_type
|
||||
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
|
||||
# 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,{})
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 string
|
||||
import unohelper
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 string
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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 lib
|
||||
import Fields
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# and other portions are under the following copyright and license:
|
||||
# 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., 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
|
||||
|
||||
compileall.compile_dir('package')
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# 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/>.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# 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/>.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# 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/>.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.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.
|
||||
#
|
||||
# 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
|
||||
# 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.
|
||||
#
|
||||
#
|
||||
# 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/>.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -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
|
||||
# d29583@groovegarden.com
|
||||
# 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.
|
||||
#
|
||||
# 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.
|
||||
# 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
#
|
||||
# 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.
|
||||
# See: http://www.gnu.org/licenses/lgpl.html
|
||||
#
|
||||
# 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 uno
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
<group>
|
||||
<label for="id" string="Email"/>
|
||||
<div name="email">
|
||||
<div>
|
||||
<div name="email.outgoing_server">
|
||||
<button type="action"
|
||||
name="%(base.action_ir_mail_server_list)d"
|
||||
string="Configure outgoing email servers" class="oe_link"/>
|
||||
|
|
|
@ -43,8 +43,7 @@
|
|||
<field name="search_view_id" ref="crm.view_crm_case_opportunities_filter"/>
|
||||
<field name="context">{
|
||||
'search_default_section_id': [active_id],
|
||||
'search_default_new': 1,
|
||||
'search_default_open': 1,
|
||||
'search_default_assigned_to_me': 1,
|
||||
'default_section_id': active_id,
|
||||
'stage_type': 'opportunity',
|
||||
'default_type': 'opportunity',
|
||||
|
|
|
@ -23,8 +23,9 @@ from openerp.addons.base_status.base_stage import base_stage
|
|||
import crm
|
||||
from datetime import datetime
|
||||
from operator import itemgetter
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.osv import fields, osv, orm
|
||||
import time
|
||||
from openerp import SUPERUSER_ID
|
||||
from openerp import tools
|
||||
from openerp.tools.translate import _
|
||||
from openerp.tools import html2plaintext
|
||||
|
@ -980,7 +981,7 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
def message_get_reply_to(self, cr, uid, ids, context=None):
|
||||
""" Override to get the reply_to of the parent project. """
|
||||
return [lead.section_id.message_get_reply_to()[0] if lead.section_id else False
|
||||
for lead in self.browse(cr, uid, ids, context=context)]
|
||||
for lead in self.browse(cr, SUPERUSER_ID, ids, context=context)]
|
||||
|
||||
def _get_formview_action(self, cr, uid, id, context=None):
|
||||
action = super(crm_lead, self)._get_formview_action(cr, uid, id, context=context)
|
||||
|
@ -994,11 +995,14 @@ class crm_lead(base_stage, format_address, osv.osv):
|
|||
|
||||
def message_get_suggested_recipients(self, cr, uid, ids, context=None):
|
||||
recipients = super(crm_lead, self).message_get_suggested_recipients(cr, uid, ids, context=context)
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
if lead.partner_id:
|
||||
self._message_add_suggested_recipient(cr, uid, recipients, lead, partner=lead.partner_id, reason=_('Customer'))
|
||||
elif lead.email_from:
|
||||
self._message_add_suggested_recipient(cr, uid, recipients, lead, email=lead.email_from, reason=_('Customer Email'))
|
||||
try:
|
||||
for lead in self.browse(cr, uid, ids, context=context):
|
||||
if lead.partner_id:
|
||||
self._message_add_suggested_recipient(cr, uid, recipients, lead, partner=lead.partner_id, reason=_('Customer'))
|
||||
elif lead.email_from:
|
||||
self._message_add_suggested_recipient(cr, uid, recipients, lead, email=lead.email_from, reason=_('Customer Email'))
|
||||
except (osv.except_osv, orm.except_orm): # no read access rights -> just ignore suggested recipients because this imply modifying followers
|
||||
pass
|
||||
return recipients
|
||||
|
||||
def message_new(self, cr, uid, msg, custom_values=None, context=None):
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
<field name="context">{
|
||||
'default_type':'lead',
|
||||
'stage_type':'lead',
|
||||
'needaction_menu_ref': 'crm.menu_crm_opportunities',
|
||||
'search_default_unassigned':1,
|
||||
}
|
||||
</field>
|
||||
|
|
|
@ -556,7 +556,7 @@
|
|||
<filter string="Lost" name="lost" domain="[('state','=','cancel')]"/>
|
||||
<filter string="Unassigned" name="unassigned" domain="[('user_id','=', False)]" help="No salesperson"/>
|
||||
<filter string="Unread Messages" name="message_unread" domain="[('message_unread','=',True)]" help="Unread messages"/>
|
||||
<filter string="Assigned to Me"
|
||||
<filter string="Mine" name="assigned_to_me"
|
||||
domain="[('user_id','=',uid)]" context="{'invisible_section': False}"
|
||||
help="Opportunities that are assigned to me"/>
|
||||
<filter string="Assigned to My Team(s)"
|
||||
|
|
|
@ -105,10 +105,17 @@ class crm_lead_forward_to_partner(osv.TransientModel):
|
|||
""" Forward the lead to a partner """
|
||||
if context is None:
|
||||
context = {}
|
||||
# TDE FIX in 7.0: force mass_mailing mode; this way, the message will be
|
||||
# send only to partners; default subtype of mass_mailing is indeed False
|
||||
# Chatter will show 'logged a note', but partner_ids (aka, the assigned partner)
|
||||
# will effectively receive the message if present in the composition window
|
||||
self.write(cr, uid, ids, {'composition_mode': 'mass_mail'}, context=context)
|
||||
res = {'type': 'ir.actions.act_window_close'}
|
||||
wizard = self.browse(cr, uid, ids[0], context=context)
|
||||
if wizard.model not in ('crm.lead'):
|
||||
return res
|
||||
if context.get('active_ids') is None:
|
||||
context['active_ids'] = [wizard.res_id]
|
||||
|
||||
lead = self.pool[wizard.model]
|
||||
lead_ids = wizard.res_id and [wizard.res_id] or []
|
||||
|
@ -116,6 +123,7 @@ class crm_lead_forward_to_partner(osv.TransientModel):
|
|||
if wizard.composition_mode == 'mass_mail':
|
||||
lead_ids = context and context.get('active_ids', []) or []
|
||||
value = self.default_get(cr, uid, ['body', 'email_to', 'email_cc', 'subject', 'history_mode'], context=context)
|
||||
value.pop('composition_mode')
|
||||
self.write(cr, uid, ids, value, context=context)
|
||||
|
||||
return self.send_mail(cr, uid, ids, context=context)
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# 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
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
# -*- encoding: utf-8 -*-
|
||||
#
|
||||
# Copyright P. Christeas <p_christ@hol.gr> 2008,2009
|
||||
|
@ -24,7 +23,7 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# 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
|
||||
###############################################################################
|
||||
|
||||
""" A trivial HTTP/WebDAV client, used for testing the server
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# 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
|
||||
###############################################################################
|
||||
|
||||
|
||||
|
|
|
@ -382,6 +382,7 @@ class email_template(osv.osv):
|
|||
attachment_ids = values.pop('attachment_ids', [])
|
||||
attachments = values.pop('attachments', [])
|
||||
msg_id = mail_mail.create(cr, uid, values, context=context)
|
||||
mail = mail_mail.browse(cr, uid, msg_id, context=context)
|
||||
|
||||
# manage attachments
|
||||
for attachment in attachments:
|
||||
|
@ -390,7 +391,7 @@ class email_template(osv.osv):
|
|||
'datas_fname': attachment[0],
|
||||
'datas': attachment[1],
|
||||
'res_model': 'mail.message',
|
||||
'res_id': msg_id,
|
||||
'res_id': mail.mail_message_id.id,
|
||||
}
|
||||
context.pop('default_type', None)
|
||||
attachment_ids.append(ir_attachment.create(cr, uid, attachment_data, context=context))
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<div>Use template
|
||||
<!--FIX: To avoid css issue of many2one field in footer temporary used oe_form (BUG:1152464)-->
|
||||
<field name="template_id" nolabel="1" class='oe_inline'
|
||||
on_change="onchange_template_id(template_id, composition_mode, model, res_id, context)" domain="[('model_id','=',context.get('default_model'))]"/>
|
||||
on_change="onchange_template_id(template_id, composition_mode, model, res_id, context)" domain="[('model_id.model','=',model)]"/>
|
||||
</div>
|
||||
<button icon="/email_template/static/src/img/email_template_save.png"
|
||||
type="object" name="save_as_template" string="Save as new template" class="oe_link"
|
||||
|
|
|
@ -97,15 +97,17 @@
|
|||
<record id="inherit_view_general_configuration" model="ir.ui.view">
|
||||
<field name="name">General Settings</field>
|
||||
<field name="model">base.config.settings</field>
|
||||
<field name="inherit_id" ref="base_setup.view_general_configuration"/>
|
||||
<field name="arch" type="xml">
|
||||
<div name="email" position="inside">
|
||||
<button type="action"
|
||||
name="%(action_email_server_tree)d"
|
||||
string="Configure the incoming email gateway" class="oe_link"/>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
<field name="inherit_id" ref="base_setup.view_general_configuration"/>
|
||||
<field name="arch" type="xml">
|
||||
<div name="email.outgoing_server" position="after">
|
||||
<div name="email.incoming_server">
|
||||
<button type="action"
|
||||
name="%(action_email_server_tree)d"
|
||||
string="Configure the incoming email gateway" class="oe_link"/>
|
||||
</div>
|
||||
</div>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<menuitem
|
||||
|
|
|
@ -23,6 +23,7 @@ import logging
|
|||
|
||||
from openerp.modules.module import get_module_resource
|
||||
from openerp.osv import fields, osv
|
||||
from openerp.tools.translate import _
|
||||
from openerp import tools
|
||||
|
||||
_logger = logging.getLogger(__name__)
|
||||
|
@ -221,7 +222,7 @@ class hr_employee(osv.osv):
|
|||
(model, mail_group_id) = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'mail', 'group_all_employees')
|
||||
employee = self.browse(cr, uid, employee_id, context=context)
|
||||
self.pool.get('mail.group').message_post(cr, uid, [mail_group_id],
|
||||
body='Welcome to %s! Please help him/her take the first steps with OpenERP!' % (employee.name),
|
||||
body=_('Welcome to %s! Please help him/her take the first steps with OpenERP!') % (employee.name),
|
||||
subtype='mail.mt_comment', context=context)
|
||||
except:
|
||||
pass # group deleted: do not push a message
|
||||
|
|
|
@ -50,6 +50,7 @@ class hr_payroll_structure(osv.osv):
|
|||
'note': fields.text('Description'),
|
||||
'parent_id':fields.many2one('hr.payroll.structure', 'Parent'),
|
||||
'children_ids':fields.one2many('hr.payroll.structure', 'parent_id', 'Children'),
|
||||
'rule_ids':fields.many2many('hr.salary.rule', 'hr_structure_salary_rule_rel', 'struct_id', 'rule_id', 'Salary Rules'),
|
||||
}
|
||||
|
||||
def _get_parent(self, cr, uid, context=None):
|
||||
|
@ -67,6 +68,10 @@ class hr_payroll_structure(osv.osv):
|
|||
'parent_id': _get_parent,
|
||||
}
|
||||
|
||||
_constraints = [
|
||||
(osv.osv._check_recursion, 'Error ! You cannot create a recursive Salary Structure.', ['parent_id'])
|
||||
]
|
||||
|
||||
def copy(self, cr, uid, id, default=None, context=None):
|
||||
"""
|
||||
Create a new record in hr_payroll_structure model from existing one
|
||||
|
@ -938,13 +943,6 @@ class hr_payslip_line(osv.osv):
|
|||
}
|
||||
|
||||
|
||||
class hr_payroll_structure(osv.osv):
|
||||
|
||||
_inherit = 'hr.payroll.structure'
|
||||
_columns = {
|
||||
'rule_ids':fields.many2many('hr.salary.rule', 'hr_structure_salary_rule_rel', 'struct_id', 'rule_id', 'Salary Rules'),
|
||||
}
|
||||
|
||||
|
||||
class hr_employee(osv.osv):
|
||||
'''
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
#!/usr/bin/env python
|
||||
#-*- coding:utf-8 -*-
|
||||
|
||||
##############################################################################
|
||||
|
|
|
@ -510,8 +510,11 @@ class hr_job(osv.osv):
|
|||
|
||||
def _auto_init(self, cr, context=None):
|
||||
"""Installation hook to create aliases for all jobs and avoid constraint errors."""
|
||||
res = self.pool.get('mail.alias').migrate_to_alias(cr, self._name, self._table, super(hr_job,self)._auto_init,
|
||||
self._columns['alias_id'], 'name', alias_prefix='job+', alias_defaults={'job_id': 'id'}, context=context)
|
||||
if context is None:
|
||||
context = {}
|
||||
alias_context = dict(context, alias_model_name='hr.applicant')
|
||||
res = self.pool.get('mail.alias').migrate_to_alias(cr, self._name, self._table, super(hr_job, self)._auto_init,
|
||||
self._columns['alias_id'], 'name', alias_prefix='job+', alias_defaults={'job_id': 'id'}, context=alias_context)
|
||||
return res
|
||||
|
||||
def create(self, cr, uid, vals, context=None):
|
||||
|
|
|
@ -37,8 +37,11 @@ class hr_employee(osv.osv):
|
|||
def _getAnalyticJournal(self, cr, uid, context=None):
|
||||
md = self.pool.get('ir.model.data')
|
||||
try:
|
||||
result = md.get_object_reference(cr, uid, 'hr_timesheet', 'analytic_journal')
|
||||
return result[1]
|
||||
dummy, res_id = md.get_object_reference(cr, uid, 'hr_timesheet', 'analytic_journal')
|
||||
#search on id found in result to check if current user has read access right
|
||||
check_right = self.pool.get('account.analytic.journal').search(cr, uid, [('id', '=', res_id)], context=context)
|
||||
if check_right:
|
||||
return res_id
|
||||
except ValueError:
|
||||
pass
|
||||
return False
|
||||
|
@ -46,8 +49,11 @@ class hr_employee(osv.osv):
|
|||
def _getEmployeeProduct(self, cr, uid, context=None):
|
||||
md = self.pool.get('ir.model.data')
|
||||
try:
|
||||
result = md.get_object_reference(cr, uid, 'product', 'product_product_consultant')
|
||||
return result[1]
|
||||
dummy, res_id = md.get_object_reference(cr, uid, 'product', 'product_product_consultant')
|
||||
#search on id found in result to check if current user has read access right
|
||||
check_right = self.pool.get('product.template').search(cr, uid, [('id', '=', res_id)], context=context)
|
||||
if check_right:
|
||||
return res_id
|
||||
except ValueError:
|
||||
pass
|
||||
return False
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
<tree editable="top" string="Timesheet Activities">
|
||||
<field name="date" on_change="on_change_date(date)"/>
|
||||
<field name="user_id" on_change="on_change_user_id(user_id)" required="1" options='{"no_open": True}'
|
||||
context="{'default_groups_ref': [base.group_user']}"/>
|
||||
context="{'default_groups_ref': ['base.group_user']}"/>
|
||||
<field name="name"/>
|
||||
<field domain="[('type','=','normal'),('use_timesheets','=',1)]" name="account_id" context="{'default_use_timesheets': 1, 'default_type': 'contract'}"/>
|
||||
<field name="unit_amount" string="Duration" on_change="on_change_unit_amount(product_id, unit_amount, False, product_uom_id,journal_id)" sum="Total time" widget="float_time"/>
|
||||
|
@ -31,7 +31,7 @@
|
|||
<group>
|
||||
<field name="name"/>
|
||||
<field name="user_id" on_change="on_change_user_id(user_id)" required="1"
|
||||
context="{'default_groups_ref': [base.group_user']}"/>
|
||||
context="{'default_groups_ref': ['base.group_user']}"/>
|
||||
</group>
|
||||
<group>
|
||||
<field name="date" on_change="on_change_date(date)"/>
|
||||
|
|
|
@ -102,17 +102,4 @@
|
|||
assert aline.invoice_id, "Invoice created, but analytic line wasn't updated."
|
||||
assert aline.invoice_id == invoice_id, "Invoice doesn't match the one at analytic line"
|
||||
assert invoice_id.amount_untaxed == 187.5, "Invoice amount mismatch: %s" % invoice_id.amount_untaxed
|
||||
assert invoice_id.amount_tax == 50, "Invoice tax mismatch: %s" % invoice_id.amount_tax
|
||||
-
|
||||
I create final invoice for this analytic account.
|
||||
-
|
||||
!record {model: hr.timesheet.invoice.create.final, id: hr_timesheet_invoice_create_final_0}:
|
||||
date: 1
|
||||
name: 1
|
||||
price: 1
|
||||
time: 1
|
||||
-
|
||||
I click on "Create Invoice" button to create Invoice and validate the invoice.
|
||||
-
|
||||
!python {model: hr.timesheet.invoice.create.final}: |
|
||||
res = self.do_create(cr, uid, [ref("hr_timesheet_invoice_create_final_0")], {"active_ids": [ref("account.analytic_agrolait")]})
|
||||
assert invoice_id.amount_tax == 50, "Invoice tax mismatch: %s" % invoice_id.amount_tax
|
|
@ -101,17 +101,4 @@
|
|||
assert aline.invoice_id, "Invoice created, but analytic line wasn't updated."
|
||||
assert aline.invoice_id == invoice_id, "Invoice doesn't match the one at analytic line"
|
||||
assert invoice_id.amount_untaxed == 187.5, "Invoice amount mismatch: %s" % invoice_id.amount_untaxed
|
||||
assert invoice_id.amount_tax == 40, "Invoice tax mismatch: %s" % invoice_id.amount_tax
|
||||
-
|
||||
I create final invoice for this analytic account.
|
||||
-
|
||||
!record {model: hr.timesheet.invoice.create.final, id: hr_timesheet_invoice_create_final_0}:
|
||||
date: 1
|
||||
name: 1
|
||||
price: 1
|
||||
time: 1
|
||||
-
|
||||
I click on "Create Invoice" button to create Invoice and validate the invoice.
|
||||
-
|
||||
!python {model: hr.timesheet.invoice.create.final}: |
|
||||
res = self.do_create(cr, uid, [ref("hr_timesheet_invoice_create_final_0")], {"active_ids": [ref("account.analytic_agrolait")]})
|
||||
assert invoice_id.amount_tax == 40, "Invoice tax mismatch: %s" % invoice_id.amount_tax
|
|
@ -289,7 +289,7 @@ class hr_timesheet_line(osv.osv):
|
|||
return ts_line_ids
|
||||
|
||||
_columns = {
|
||||
'sheet_id': fields.function(_sheet, string='Sheet',
|
||||
'sheet_id': fields.function(_sheet, string='Sheet', select="1",
|
||||
type='many2one', relation='hr_timesheet_sheet.sheet', ondelete="cascade",
|
||||
store={
|
||||
'hr_timesheet_sheet.sheet': (_get_hr_timesheet_sheet, ['employee_id', 'date_from', 'date_to'], 10),
|
||||
|
@ -473,12 +473,8 @@ class hr_timesheet_sheet_sheet_day(osv.osv):
|
|||
0.0 as total_attendance
|
||||
from
|
||||
hr_analytic_timesheet hrt
|
||||
left join (account_analytic_line l
|
||||
LEFT JOIN hr_timesheet_sheet_sheet s
|
||||
ON (s.date_to >= l.date
|
||||
AND s.date_from <= l.date
|
||||
AND s.user_id = l.user_id))
|
||||
on (l.id = hrt.line_id)
|
||||
JOIN account_analytic_line l ON l.id = hrt.line_id
|
||||
LEFT JOIN hr_timesheet_sheet_sheet s ON s.id = hrt.sheet_id
|
||||
group by l.date::date, s.id
|
||||
) union (
|
||||
select
|
||||
|
@ -489,14 +485,8 @@ class hr_timesheet_sheet_sheet_day(osv.osv):
|
|||
SUM(((EXTRACT(hour FROM a.name) * 60) + EXTRACT(minute FROM a.name)) * (CASE WHEN a.action = 'sign_in' THEN -1 ELSE 1 END)) as total_attendance
|
||||
from
|
||||
hr_attendance a
|
||||
LEFT JOIN (hr_timesheet_sheet_sheet s
|
||||
LEFT JOIN resource_resource r
|
||||
LEFT JOIN hr_employee e
|
||||
ON (e.resource_id = r.id)
|
||||
ON (s.user_id = r.user_id))
|
||||
ON (a.employee_id = e.id
|
||||
AND s.date_to >= date_trunc('day',a.name)
|
||||
AND s.date_from <= a.name)
|
||||
LEFT JOIN hr_timesheet_sheet_sheet s
|
||||
ON s.id = a.sheet_id
|
||||
WHERE action in ('sign_in', 'sign_out')
|
||||
group by a.name::date, s.id
|
||||
)) AS foo
|
||||
|
|
|
@ -13,11 +13,11 @@
|
|||
product_id: product.product_product_consultant
|
||||
journal_id: hr_timesheet.analytic_journal
|
||||
-
|
||||
I create a timesheet for employee "Quentin Paolinon".
|
||||
I create a timesheet for employee "Quentin Paolino".
|
||||
-
|
||||
!record {model: hr_timesheet_sheet.sheet, id: hr_timesheet_sheet_sheet_deddk0}:
|
||||
date_from: !eval time.strftime('%Y-%m-01')
|
||||
name: Quentin Paolinon
|
||||
name: Quentin Paolino
|
||||
state: new
|
||||
user_id: base.user_demo
|
||||
employee_id: 'hr.employee_qdp'
|
||||
|
@ -60,10 +60,12 @@
|
|||
-
|
||||
!python {model: hr_timesheet_sheet.sheet}: |
|
||||
uid = ref('base.user_root')
|
||||
from openerp import netsvc
|
||||
try:
|
||||
self.button_confirm(cr, uid, [ref('hr_timesheet_sheet_sheet_deddk0')], {"active_ids":
|
||||
[ref("hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form")],"active_id": ref("hr_timesheet_sheet.menu_act_hr_timesheet_sheet_form"),
|
||||
})
|
||||
assert True, "The validation of the timesheet was unexpectedly accepted despite the 2:30 hours of difference"
|
||||
except:
|
||||
pass
|
||||
-
|
||||
|
@ -86,7 +88,7 @@
|
|||
!record {model: res.company, id: base.main_company}:
|
||||
timesheet_max_difference: 1.00
|
||||
-
|
||||
I tried again to confirm the timesheet after modification.
|
||||
I try again to confirm the timesheet after modification.
|
||||
-
|
||||
!python {model: hr_timesheet_sheet.sheet}: |
|
||||
uid = ref('base.user_root')
|
||||
|
|
|
@ -6,6 +6,12 @@
|
|||
border-left: 1px solid #AEB9BD;
|
||||
}
|
||||
|
||||
@media print {
|
||||
.openerp .oe_im, .openerp .oe_im_chatview {
|
||||
visibility: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
/* button */
|
||||
|
||||
.openerp .oe_topbar_imbutton {
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# 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
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@
|
|||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# 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
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Nicolas Bessi. Copyright Camptocamp SA
|
||||
# Donors: Hasa Sàrl, Open Net Sàrl and Prisme Solutions Informatique SA
|
||||
# Financial contributors: Hasa SA, Open Net SA,
|
||||
# Prisme Solutions Informatique SA, Quod SA
|
||||
#
|
||||
# Translation contributors: brain-tec AG, Agile Business Group
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Nicolas Bessi. Copyright Camptocamp SA
|
||||
# Donors: Hasa SA, Open Net SA and Prisme Solutions Informatique SA
|
||||
# Financial contributors: Hasa SA, Open Net SA,
|
||||
# Prisme Solutions Informatique SA, Quod SA
|
||||
#
|
||||
# Translation contributors: brain-tec AG, Agile Business Group
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
|
@ -21,29 +24,29 @@
|
|||
|
||||
{'name': 'Switzerland - Accounting',
|
||||
'description': """
|
||||
Swiss localization :
|
||||
====================
|
||||
**Multilang swiss STERCHI account chart and taxes**
|
||||
**Author:** Camptocamp SA
|
||||
Swiss localization :
|
||||
====================
|
||||
**Multilang swiss STERCHI account chart and taxes**
|
||||
**Author:** Camptocamp SA
|
||||
|
||||
**Donors:** Hasa Sàrl, Open Net Sàrl and Prisme Solutions Informatique SA
|
||||
**Financial contributors:** Prisme Solutions Informatique SA, Quod SA
|
||||
|
||||
**Translators:** brain-tec AG, Agile Business Group
|
||||
**Translation contributors:** brain-tec AG, Agile Business Group
|
||||
|
||||
**This release will introduce major changes to l10n_ch.**
|
||||
**This release will introduce major changes to l10n_ch.**
|
||||
|
||||
Due to important refactoring needs and the Switzerland adoption of new international payment standard during 2013-2014. We have reorganised the swiss localization addons this way:
|
||||
Due to important refactoring needs and the Switzerland adoption of new international payment standard during 2013-2014. We have reorganised the swiss localization addons this way:
|
||||
|
||||
- **l10n_ch**: Multilang swiss STERCHI account chart and taxes (official addon)
|
||||
- **l10n_ch_base_bank**: Technical module that introduces a new and simplified version of bank type management
|
||||
- **l10n_ch_bank**: List of swiss banks
|
||||
- **l10n_ch_zip**: List of swiss postal zip
|
||||
- **l10n_ch_dta**: Support of dta payment protocol (will be deprecated end 2014)
|
||||
- **l10n_ch_payment_slip**: Support of ESR/BVR payment slip report and reconciliation. Report refactored with easy element positioning.
|
||||
- **l10n_ch_sepa**: Alpha implementation of PostFinance SEPA/PAIN support will be completed during 2013/2014
|
||||
- **l10n_ch**: Multilang swiss STERCHI account chart and taxes (official addon)
|
||||
- **l10n_ch_base_bank**: Technical module that introduces a new and simplified version of bank type management
|
||||
- **l10n_ch_bank**: List of swiss banks
|
||||
- **l10n_ch_zip**: List of swiss postal zip
|
||||
- **l10n_ch_dta**: Support of dta payment protocol (will be deprecated end 2014)
|
||||
- **l10n_ch_payment_slip**: Support of ESR/BVR payment slip report and reconciliation. Report refactored with easy element positioning.
|
||||
- **l10n_ch_sepa**: Alpha implementation of PostFinance SEPA/PAIN support will be completed during 2013/2014
|
||||
|
||||
The modules will be soon available on OpenERP swiss localization on launchpad:
|
||||
https://launchpad.net/openerp-swiss-localization
|
||||
The modules will be soon available on OpenERP swiss localization on launchpad:
|
||||
https://launchpad.net/openerp-swiss-localization
|
||||
""",
|
||||
'version': '7.0',
|
||||
'author': 'Camptocamp',
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
# -*- encoding: utf-8 -*-
|
||||
# -*- coding: utf-8 -*-
|
||||
##############################################################################
|
||||
#
|
||||
# Author: Nicolas Bessi. Copyright Camptocamp SA
|
||||
# Donors: Hasa Sàrl, Open Net Sàrl and Prisme Solutions Informatique SA
|
||||
# Financial contributors: Hasa SA, Open Net SA,
|
||||
# Prisme Solutions Informatique SA, Quod SA
|
||||
#
|
||||
# Translation contributors: brain-tec AG, Agile Business Group
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Affero General Public License as
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue