[MERGE] forward port branch 9.0 up to 51fe54dd8d

This commit is contained in:
Christophe Simonis
2017-04-07 17:34:51 +02:00
36 changed files with 2440 additions and 67 deletions
+2 -2
View File
@@ -1383,9 +1383,9 @@ class AccountPartialReconcile(models.Model):
for rec in self: for rec in self:
if not rec.company_id.currency_exchange_journal_id: if not rec.company_id.currency_exchange_journal_id:
raise UserError(_("You should configure the 'Exchange Rate Journal' in the accounting settings, to manage automatically the booking of accounting entries related to differences between exchange rates.")) raise UserError(_("You should configure the 'Exchange Rate Journal' in the accounting settings, to manage automatically the booking of accounting entries related to differences between exchange rates."))
if not self.company_id.income_currency_exchange_account_id.id: if not rec.company_id.income_currency_exchange_account_id.id:
raise UserError(_("You should configure the 'Gain Exchange Rate Account' in the accounting settings, to manage automatically the booking of accounting entries related to differences between exchange rates.")) raise UserError(_("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."))
if not self.company_id.expense_currency_exchange_account_id.id: if not rec.company_id.expense_currency_exchange_account_id.id:
raise UserError(_("You should configure the 'Loss Exchange Rate Account' in the accounting settings, to manage automatically the booking of accounting entries related to differences between exchange rates.")) raise UserError(_("You should configure the 'Loss Exchange Rate Account' in the accounting settings, to manage automatically the booking of accounting entries related to differences between exchange rates."))
move_vals = {'journal_id': rec.company_id.currency_exchange_journal_id.id} move_vals = {'journal_id': rec.company_id.currency_exchange_journal_id.id}
@@ -11,6 +11,7 @@ class ReportPartnerLedger(models.AbstractModel):
def _lines(self, data, partner): def _lines(self, data, partner):
full_account = [] full_account = []
currency = self.env['res.currency']
query_get_data = self.env['account.move.line'].with_context(data['form'].get('used_context', {}))._query_get() query_get_data = self.env['account.move.line'].with_context(data['form'].get('used_context', {}))._query_get()
reconcile_clause = "" if data['form']['reconciled'] else ' AND "account_move_line".reconciled = false ' reconcile_clause = "" if data['form']['reconciled'] else ' AND "account_move_line".reconciled = false '
params = [partner.id, tuple(data['computed']['move_state']), tuple(data['computed']['account_ids'])] + query_get_data[2] params = [partner.id, tuple(data['computed']['move_state']), tuple(data['computed']['account_ids'])] + query_get_data[2]
@@ -40,6 +41,7 @@ class ReportPartnerLedger(models.AbstractModel):
) )
sum += r['debit'] - r['credit'] sum += r['debit'] - r['credit']
r['progress'] = sum r['progress'] = sum
r['currency_id'] = currency.browse(r.get('currency_id'))
full_account.append(r) full_account.append(r)
return full_account return full_account
+1 -1
View File
@@ -654,7 +654,7 @@
<field name="act_window_id" ref="action_bank_statement_tree"/> <field name="act_window_id" ref="action_bank_statement_tree"/>
</record> </record>
<record model="ir.actions.act_window.view" id="action_bank_statement_form_bank"> <record model="ir.actions.act_window.view" id="action_bank_statement_form_bank">
<field name="sequence" eval="1"/> <field name="sequence" eval="2"/>
<field name="view_mode">form</field> <field name="view_mode">form</field>
<field name="view_id" ref="view_bank_statement_form"/> <field name="view_id" ref="view_bank_statement_form"/>
<field name="act_window_id" ref="action_bank_statement_tree"/> <field name="act_window_id" ref="action_bank_statement_tree"/>
@@ -36,7 +36,7 @@
<th>Debit</th> <th>Debit</th>
<th>Credit</th> <th>Credit</th>
<th>Balance</th> <th>Balance</th>
<th t-if="amount_currency">Currency</th> <th t-if="data['form']['amount_currency']">Currency</th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
@@ -77,8 +77,10 @@
<td class="text-right"> <td class="text-right">
<span t-esc="line['progress']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/> <span t-esc="line['progress']" t-esc-options='{"widget": "monetary", "display_currency": "res_company.currency_id"}'/>
</td> </td>
<td t-if="amount_currency"> <td class="text-right" t-if="data['form']['amount_currency']">
<span t-esc="line['amount_currency']" t-esc-options='{"widget": "monetary", "display_currency": "line[\"currency_id\"]"}'/> <t t-if="line['currency_id']">
<span t-esc="line['amount_currency']" t-esc-options='{"widget": "monetary", "display_currency": "line[\"currency_id\"]"}'/>
</t>
</td> </td>
</tr> </tr>
</tbody> </tbody>
+3 -4
View File
@@ -454,15 +454,14 @@ class AccountAssetDepreciationLine(models.Model):
@api.multi @api.multi
def create_move(self, post_move=True): def create_move(self, post_move=True):
created_moves = self.env['account.move'] created_moves = self.env['account.move']
prec = self.env['decimal.precision'].precision_get('Account')
for line in self: for line in self:
category_id = line.asset_id.category_id category_id = line.asset_id.category_id
depreciation_date = self.env.context.get('depreciation_date') or line.depreciation_date or fields.Date.context_today(self) depreciation_date = self.env.context.get('depreciation_date') or line.depreciation_date or fields.Date.context_today(self)
company_currency = line.asset_id.company_id.currency_id company_currency = line.asset_id.company_id.currency_id
current_currency = line.asset_id.currency_id current_currency = line.asset_id.currency_id
amount = current_currency.compute(line.amount, company_currency) amount = current_currency.compute(line.amount, company_currency)
sign = (category_id.journal_id.type == 'purchase' or category_id.journal_id.type == 'sale' and 1) or -1
asset_name = line.asset_id.name + ' (%s/%s)' % (line.sequence, len(line.asset_id.depreciation_line_ids)) asset_name = line.asset_id.name + ' (%s/%s)' % (line.sequence, len(line.asset_id.depreciation_line_ids))
prec = self.env['decimal.precision'].precision_get('Account')
move_line_1 = { move_line_1 = {
'name': asset_name, 'name': asset_name,
'account_id': category_id.account_depreciation_id.id, 'account_id': category_id.account_depreciation_id.id,
@@ -472,7 +471,7 @@ class AccountAssetDepreciationLine(models.Model):
'partner_id': line.asset_id.partner_id.id, 'partner_id': line.asset_id.partner_id.id,
'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'sale' else False, 'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'sale' else False,
'currency_id': company_currency != current_currency and current_currency.id or False, 'currency_id': company_currency != current_currency and current_currency.id or False,
'amount_currency': company_currency != current_currency and - sign * line.amount or 0.0, 'amount_currency': company_currency != current_currency and - 1.0 * line.amount or 0.0,
} }
move_line_2 = { move_line_2 = {
'name': asset_name, 'name': asset_name,
@@ -483,7 +482,7 @@ class AccountAssetDepreciationLine(models.Model):
'partner_id': line.asset_id.partner_id.id, 'partner_id': line.asset_id.partner_id.id,
'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'purchase' else False, 'analytic_account_id': category_id.account_analytic_id.id if category_id.type == 'purchase' else False,
'currency_id': company_currency != current_currency and current_currency.id or False, 'currency_id': company_currency != current_currency and current_currency.id or False,
'amount_currency': company_currency != current_currency and sign * line.amount or 0.0, 'amount_currency': company_currency != current_currency and line.amount or 0.0,
} }
move_vals = { move_vals = {
'ref': line.asset_id.code, 'ref': line.asset_id.code,
@@ -116,6 +116,9 @@ widgets.SidebarFilter.include({
}, },
initialize_m2o: function() { initialize_m2o: function() {
var self = this; var self = this;
if (!this.view.useContacts) {
return;
}
this.dfm = new form_common.DefaultFieldManager(self); this.dfm = new form_common.DefaultFieldManager(self);
this.dfm.extend_field_desc({ this.dfm.extend_field_desc({
partner_id: { partner_id: {
+1 -1
View File
@@ -56,7 +56,7 @@ class event_event(models.Model):
'interval_unit': 'now', 'interval_unit': 'now',
'interval_type': 'after_sub', 'interval_type': 'after_sub',
'template_id': self.env.ref('event.event_subscription') 'template_id': self.env.ref('event.event_subscription')
})] })] if self.user_has_groups('event.group_email_scheduling') else []
# Seats and computation # Seats and computation
seats_max = fields.Integer( seats_max = fields.Integer(
+1 -1
View File
@@ -49,7 +49,7 @@ class EventMailScheduler(models.Model):
if self.interval_type in ['before_event', 'after_event']: if self.interval_type in ['before_event', 'after_event']:
self.done = self.mail_sent self.done = self.mail_sent
else: else:
self.done = len(self.mail_registration_ids) == len(self.event_id.registration_ids) and all(filter(lambda line: line.mail_sent, self.mail_registration_ids)) self.done = len(self.mail_registration_ids) == len(self.event_id.registration_ids) and all(line.mail_sent for line in self.mail_registration_ids)
@api.one @api.one
@api.depends('event_id.state', 'event_id.date_begin', 'interval_type', 'interval_unit', 'interval_nbr') @api.depends('event_id.state', 'event_id.date_begin', 'interval_type', 'interval_unit', 'interval_nbr')
+1 -1
View File
@@ -779,7 +779,7 @@
<record id="chart2500" model="account.account.template"> <record id="chart2500" model="account.account.template">
<field name="code">2500</field> <field name="code">2500</field>
<field name="reconcile" eval="True"/> <field name="reconcile" eval="True"/>
<field name="user_type_id" ref="account.data_account_type_receivable"/> <field name="user_type_id" ref="account.data_account_type_non_current_assets"/>
<field name="name">Vorsteuer</field> <field name="name">Vorsteuer</field>
<field name="chart_template_id" ref="austria_chart_template"/> <field name="chart_template_id" ref="austria_chart_template"/>
</record> </record>
+2
View File
@@ -0,0 +1,2 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
+31
View File
@@ -0,0 +1,31 @@
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
{
'name': 'Indian - Schedule VI Accounting',
'version': '2.0',
'description': """
Indian Accounting: Chart of Account.
====================================
Indian accounting chart and localization.
Schedule VI chart of account for indian accounting.
Note: The Schedule VI has been revised by MCA and is applicable for all Balance Sheet made after
31st March, 2011. The Format has done away with earlier two options of format of Balance
Sheet, now only Vertical format has been permitted Which is Supported By OpenERP.
""",
'category': 'Localization',
'depends': [
'account',
],
'demo': [],
'data': [
'l10n_in_schedule6_chart.xml',
'l10n_in_schedule6_tax_template.xml',
'account_chart_template.yml',
],
'auto_install': False,
'installable': True,
}
@@ -0,0 +1,3 @@
-
!python {model: account.chart.template, id: indian_chart_template_schedule6}: |
self[0].try_loading_for_current_company()
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,842 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<!-- Account Tags -->
<record id="st_tag_in_01" model="account.account.tag">
<field name="name">Tax to Pay</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_02" model="account.account.tag">
<field name="name">C Forms</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_03" model="account.account.tag">
<field name="name">C Forms Tax Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_04" model="account.account.tag">
<field name="name">C Forms Tax Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_05" model="account.account.tag">
<field name="name">Excise Duty</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_06" model="account.account.tag">
<field name="name">Excise Duty 12.36%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_07" model="account.account.tag">
<field name="name">Excise Duty Collected on Sales</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_08" model="account.account.tag">
<field name="name">Education Cess 2% Excise Duty Collected on Sales</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_09" model="account.account.tag">
<field name="name">Higher Education Cess 1% Excise Duty Collected on Sales</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_10" model="account.account.tag">
<field name="name">Excise Duty Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_11" model="account.account.tag">
<field name="name">Education Cess 2% Excise Duty Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_12" model="account.account.tag">
<field name="name">Higher Education Cess 1% Excise Duty Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_13" model="account.account.tag">
<field name="name">Sales Tax</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_14" model="account.account.tag">
<field name="name">Sales Tax 4%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_15" model="account.account.tag">
<field name="name">Sales Tax 4% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_16" model="account.account.tag">
<field name="name">Sales Tax 4% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_17" model="account.account.tag">
<field name="name">Sales Tax 12%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_18" model="account.account.tag">
<field name="name">Sales Tax 12% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_19" model="account.account.tag">
<field name="name">Sales Tax 12% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_20" model="account.account.tag">
<field name="name">Sales Tax 15%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_21" model="account.account.tag">
<field name="name">Sales Tax 15% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_22" model="account.account.tag">
<field name="name">Sales Tax 15% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_23" model="account.account.tag">
<field name="name">Service Tax</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_24" model="account.account.tag">
<field name="name">Service Tax 12.36%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_25" model="account.account.tag">
<field name="name">Service Tax Collected on Sales of Services</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_26" model="account.account.tag">
<field name="name">Education Cess 2% Service Tax Collected on Sales of Services</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_27" model="account.account.tag">
<field name="name">Higher Education Cess 1% Service Tax Collected on Sales of Services</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_28" model="account.account.tag">
<field name="name">Service Tax Paid on Purchase of Services</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_29" model="account.account.tag">
<field name="name">Education Cess 2% Service Tax Paid on Purchase of Services</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_30" model="account.account.tag">
<field name="name">Higher Education Cess 1% Service Tax Paid on Purchase of Services</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_31" model="account.account.tag">
<field name="name">VAT</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_32" model="account.account.tag">
<field name="name">VAT 4%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_33" model="account.account.tag">
<field name="name">VAT 4% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_34" model="account.account.tag">
<field name="name">VAT 4% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_35" model="account.account.tag">
<field name="name">VAT 8%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_36" model="account.account.tag">
<field name="name">VAT 8% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_37" model="account.account.tag">
<field name="name">VAT 8% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_38" model="account.account.tag">
<field name="name">VAT 10%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_39" model="account.account.tag">
<field name="name">VAT 10% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_40" model="account.account.tag">
<field name="name">VAT 10% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_41" model="account.account.tag">
<field name="name">VAT 12.5%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_42" model="account.account.tag">
<field name="name">VAT 12.5% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_43" model="account.account.tag">
<field name="name">VAT 12.5% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_44" model="account.account.tag">
<field name="name">Additional VAT 1%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_45" model="account.account.tag">
<field name="name">Additional VAT 1% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_46" model="account.account.tag">
<field name="name">Additional VAT 1% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_47" model="account.account.tag">
<field name="name">Additional VAT 2.5%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_48" model="account.account.tag">
<field name="name">Additional VAT 2.5% Collected on Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_49" model="account.account.tag">
<field name="name">Additional VAT 2.5% Paid on Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_50" model="account.account.tag">
<field name="name">Tax Bases</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_51" model="account.account.tag">
<field name="name">Base C Forms</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_52" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_53" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_54" model="account.account.tag">
<field name="name">Base Excise Duty</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_55" model="account.account.tag">
<field name="name">Base Excise Duty 12.36%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_56" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_57" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_58" model="account.account.tag">
<field name="name">Base Sales Tax</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_59" model="account.account.tag">
<field name="name">Base Sales Tax 4%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_60" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_61" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_62" model="account.account.tag">
<field name="name">Base Sales Tax 12%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_63" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_64" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_65" model="account.account.tag">
<field name="name">Base Sales Tax 15%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_66" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_67" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_68" model="account.account.tag">
<field name="name">Base Service Tax</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_69" model="account.account.tag">
<field name="name">Base Service Tax 12.36%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_70" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_71" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_72" model="account.account.tag">
<field name="name">Base VAT</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_73" model="account.account.tag">
<field name="name">Base VAT 4%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_74" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_75" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_76" model="account.account.tag">
<field name="name">Base VAT 8%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_77" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_78" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_79" model="account.account.tag">
<field name="name">Base VAT 10%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_80" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_81" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_82" model="account.account.tag">
<field name="name">Base VAT 12.5%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_83" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_84" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_85" model="account.account.tag">
<field name="name">Base Additional VAT 1%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_86" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_87" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_88" model="account.account.tag">
<field name="name">Base Additional VAT 2.5%</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_89" model="account.account.tag">
<field name="name">Base of Sale</field>
<field name="applicability">taxes</field>
</record>
<record id="st_tag_in_90" model="account.account.tag">
<field name="name">Base of Purchase</field>
<field name="applicability">taxes</field>
</record>
<!-- Account Tax Templates -->
<record id="input_tax_15" model="account.tax.template">
<field name="name">(schedule6)Input Sales Tax @ 15%</field>
<field name="description">(schedule6)Input Sales Tax @ 15%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">15</field>
<field name="sequence">10</field>
<field name="account_id" ref="c114214"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6, 0, [ref('st_tag_in_21'), ref('st_tag_in_66')])]"/>
</record>
<record id="input_tax_12" model="account.tax.template">
<field name="name">(schedule6)Input Sales Tax @ 12%</field>
<field name="description">(schedule6)Input Sales Tax @ 12%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">12</field>
<field name="sequence">10</field>
<field name="account_id" ref="c114214"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6, 0, [ref('st_tag_in_18'), ref('st_tag_in_63')])]"/>
</record>
<record id="input_tax_4" model="account.tax.template">
<field name="name">(schedule6)Input Sales Tax @ 4%</field>
<field name="description">(schedule6)Input Sales Tax @ 4%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">4</field>
<field name="sequence">10</field>
<field name="account_id" ref="c114214"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6, 0, [ref('st_tag_in_15'), ref('st_tag_in_60')])]"/>
</record>
<record id="add_input_vat_1" model="account.tax.template">
<field name="name">(schedule6)Additional Input VAT @ 1%</field>
<field name="description">(schedule6)Additional Input VAT @ 1%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">1</field>
<field name="sequence">15</field>
<field name="account_id" ref="c114215"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_86'), ref('st_tag_in_45')])]"/>
</record>
<record id="input_vat_12" model="account.tax.template">
<field name="name">(schedule6)Input VAT @ 12.5%</field>
<field name="description">(schedule6)Input VAT @ 12.5%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">12.5</field>
<field name="sequence">10</field>
<field name="account_id" ref="c114215"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_83'), ref('st_tag_in_42')])]"/>
</record>
<record id="add_input_vat_2" model="account.tax.template">
<field name="name">(schedule6)Additional Input VAT @ 2.5%</field>
<field name="description">(schedule6)Additional Input VAT @ 2.5%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">2.5</field>
<field name="sequence">15</field>
<field name="account_id" ref="c114215"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_89'), ref('st_tag_in_48')])]"/>
</record>
<record id="sale_vat_8" model="account.tax.template">
<field name="name">(schedule6)Input VAT @ 8%</field>
<field name="description">(schedule6)Input VAT @ 8%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">8</field>
<field name="sequence">10</field>
<field name="account_id" ref="c114215"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_77'), ref('st_tag_in_36')])]"/>
</record>
<record id="sale_vat_10" model="account.tax.template">
<field name="name">(schedule6)Input VAT @ 10%</field>
<field name="description">(schedule6)Input VAT @ 10%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">10</field>
<field name="sequence">10</field>
<field name="account_id" ref="c114215"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_39'), ref('st_tag_in_80')])]"/>
</record>
<record id="sale_tax_12" model="account.tax.template">
<field name="name">(schedule6)Input Tax 12%</field>
<field name="description">(schedule6)Input Tax 12%</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">12</field>
<field name="sequence">1</field>
<field name="account_id" ref="c1142111"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_07')])]"/>
</record>
<record id="sale_edu_cess_Excise_Duty_2" model="account.tax.template">
<field name="name">(schedule6)Input Education Cess @ 2% On Excise Duty</field>
<field name="description">(schedule6)Input Education Cess @ 2% On Excise Duty</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.24</field>
<field name="sequence">2</field>
<field name="account_id" ref="c1142112"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_08')])]"/>
</record>
<record id="sale_hedu_cess_Excise_Duty_1" model="account.tax.template">
<field name="name">(schedule6)Input Higher Education Cess @ 1% On Excise Duty</field>
<field name="description">(schedule6)Input Higher Education Cess @ 1% On Excise Duty</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.1224</field>
<field name="sequence">3</field>
<field name="account_id" ref="c1142113"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_09')])]"/>
</record>
<record id="sale_Excise_Duty_12" model="account.tax.template">
<field name="name">(schedule6)Input Excise Duty @ 12.36%</field>
<field name="description">(schedule6)Input Excise Duty @ 12.36%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">group</field>
<field name="amount">0</field>
<field name="sequence">1</field>
<field name="account_id" ref="c1142111"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('sale_tax_12'),ref('sale_edu_cess_Excise_Duty_2'),ref('sale_hedu_cess_Excise_Duty_1')])]"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_56')])]"/>
</record>
<record id="sale_service_tax12" model="account.tax.template">
<field name="name">(schedule6)Input Service Tax 12%</field>
<field name="description">(schedule6)Input Service Tax 12%</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">12</field>
<field name="sequence">13</field>
<field name="account_id" ref="c1142121"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6, 0, [ref('st_tag_in_25')])]"/>
</record>
<record id="sale_edu_cess_service_tax_2" model="account.tax.template">
<field name="name">(schedule6)Input Education Cess @ 2% On Service Tax</field>
<field name="description">(schedule6)Input Education Cess @ 2% On Service Tax</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.24</field>
<field name="sequence">14</field>
<field name="account_id" ref="c1142122"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_26')])]"/>
</record>
<record id="sale_high_edu_service_tax_1" model="account.tax.template">
<field name="name">(schedule6)Input Higher Education Cess @ 1% On Service Tax</field>
<field name="description">(schedule6)Input Higher Education Cess @ 1% On Service Tax</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.1224</field>
<field name="sequence">15</field>
<field name="account_id" ref="c1142123"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_27')])]"/>
</record>
<record id="sale_service_tax_12" model="account.tax.template">
<field name="name">(schedule6)Input Service Tax @ 12.36%</field>
<field name="description">(schedule6)Input Service Tax @ 12.36%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">group</field>
<field name="amount">12</field>
<field name="include_base_amount">True</field>
<field name="sequence">8</field>
<field name="account_id" ref="c1142121"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('sale_service_tax12'),ref('sale_edu_cess_service_tax_2'),ref('sale_high_edu_service_tax_1')])]"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_70')])]"/>
</record>
<record id="input_vat_4" model="account.tax.template">
<field name="name">(schedule6)Input VAT @ 4%</field>
<field name="description">(schedule6)Input VAT @ 4%</field>
<field name="type_tax_use">sale</field>
<field name="amount_type">percent</field>
<field name="amount">4</field>
<field name="sequence">10</field>
<field name="account_id" ref="c114215"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6, 0, [ref('st_tag_in_33'), ref('st_tag_in_74')])]"/>
</record>
<!--output purchase tax-->
<record id="output_tax_15" model="account.tax.template">
<field name="name">(schedule6)Output Purchase Tax @ 15%</field>
<field name="description">(schedule6)Output Purchase Tax @ 15%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">15</field>
<field name="sequence">10</field>
<field name="account_id" ref="c121610"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6, 0, [ref('st_tag_in_22'), ref('st_tag_in_67')])]"/>
</record>
<record id="output_tax_12" model="account.tax.template">
<field name="name">(schedule6)Output Purchase Tax @ 12%</field>
<field name="description">(schedule6)Output Purchase Tax @ 12%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">12</field>
<field name="sequence">10</field>
<field name="account_id" ref="c121610"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6, 0, [ref('st_tag_in_19'), ref('st_tag_in_64')])]"/>
</record>
<record id="output_tax_4" model="account.tax.template">
<field name="name">(schedule6)Output Purchase Tax @ 4%</field>
<field name="description">(schedule6)Output Purchase Tax @ 4%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">4</field>
<field name="sequence">10</field>
<field name="account_id" ref="c121610"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_61'), ref('st_tag_in_16')])]"/>
</record>
<record id="add_output_vat_1" model="account.tax.template">
<field name="name">(schedule6)Additional Output VAT @ 1%</field>
<field name="description">(schedule6)Additional Output VAT @ 1%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">1</field>
<field name="sequence">15</field>
<field name="account_id" ref="c121611"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_87'), ref('st_tag_in_46')])]"/>
</record>
<record id="output_vat_12" model="account.tax.template">
<field name="name">(schedule6)Output VAT @ 12.5%</field>
<field name="description">(schedule6)Output VAT @ 12.5%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">12.5</field>
<field name="sequence">10</field>
<field name="account_id" ref="c121611"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_43'), ref('st_tag_in_84')])]"/>
</record>
<record id="add_output_vat_2" model="account.tax.template">
<field name="name">(schedule6)Additional Output VAT @ 2.5%</field>
<field name="description">(schedule6)Additional Output VAT @ 2.5%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">2.5</field>
<field name="sequence">15</field>
<field name="account_id" ref="c121611"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_90'), ref('st_tag_in_49')])]"/>
</record>
<record id="purchase_vat_8" model="account.tax.template">
<field name="name">(schedule6)Output VAT @ 8%</field>
<field name="description">(schedule6)Output VAT @ 8%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">8</field>
<field name="sequence">10</field>
<field name="account_id" ref="c121611"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_78'), ref('st_tag_in_37')])]"/>
</record>
<record id="purchase_vat_10" model="account.tax.template">
<field name="name">(schedule6)Output VAT @ 10%</field>
<field name="description">(schedule6)Output VAT @ 10%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">10</field>
<field name="sequence">10</field>
<field name="account_id" ref="c121611"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_81'), ref('st_tag_in_40')])]"/>
</record>
<record id="purchase_edu_cess_12" model="account.tax.template">
<field name="name">(schedule6)Output Tax 12%</field>
<field name="description">(schedule6)Output Tax 12%</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">12</field>
<field name="sequence">2</field>
<field name="account_id" ref="c1216121"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_10')])]"/>
</record>
<record id="purchase_edu_cess_Excise_Duty_2" model="account.tax.template">
<field name="name">(schedule6)Output Education Cess @ 2% Excise Duty</field>
<field name="description">(schedule6)Output Education Cess @ 2% Excise Duty</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.24</field>
<field name="sequence">3</field>
<field name="account_id" ref="c1216122"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_11')])]"/>
</record>
<record id="purchase_hedu_cess_Excise_Duty_1" model="account.tax.template">
<field name="name">(schedule6)Output Higher Education Cess @ 1% Excise Duty</field>
<field name="description">(schedule6)Output Higher Education Cess @ 1% Excise Duty</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.1224</field>
<field name="sequence">4</field>
<field name="account_id" ref="c1216123"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_12')])]"/>
</record>
<record id="purchase_Excise_Duty_12" model="account.tax.template">
<field name="name">(schedule6)Output Excise Duty @ 12.36%</field>
<field name="description">(schedule6)Output Excise Duty @ 12.36%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">group</field>
<field name="amount">12</field>
<field name="include_base_amount">True</field>
<field name="sequence">1</field>
<field name="account_id" ref="c1216121"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('purchase_edu_cess_12'),ref('purchase_edu_cess_Excise_Duty_2'),ref('purchase_hedu_cess_Excise_Duty_1')])]"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_57')])]"/>
</record>
<record id="purchase_edu_service_tax12" model="account.tax.template">
<field name="name">(schedule6)Output Service Tax 12%</field>
<field name="description">(schedule6)Output Service Tax 12%</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">12</field>
<field name="sequence">9</field>
<field name="account_id" ref="c1216131"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_28')])]"/>
</record>
<record id="purchase_edu_cess_service_tax_2" model="account.tax.template">
<field name="name">(schedule6)Output Education Cess @ 2% On Service Tax</field>
<field name="description">(schedule6)Output Education Cess @ 2% On Service Tax</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.24</field>
<field name="sequence">10</field>
<field name="account_id" ref="c1216132"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_29')])]"/>
</record>
<record id="purchase_high_edu_service_tax_1" model="account.tax.template">
<field name="name">(schedule6)Output Higher Education Cess @ 1% On Service Tax</field>
<field name="description">(schedule6)Output Higher Education Cess @ 1% On Service Tax</field>
<field name="type_tax_use">none</field>
<field name="amount_type">percent</field>
<field name="amount">0.1224</field>
<field name="sequence">11</field>
<field name="account_id" ref="c1216133"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_30')])]"/>
</record>
<record id="st_purchase_service_tax_12" model="account.tax.template">
<field name="name">(schedule6)Output Service Tax @ 12.36%</field>
<field name="description">(schedule6)Output Service Tax @ 12.36%</field>
<field name="type_tax_use">purchase</field>
<field name="include_base_amount">True</field>
<field name="amount_type">group</field>
<field name="amount">12</field>
<field name="sequence">8</field>
<field name="account_id" ref="c1216131"/>
<field name="children_tax_ids" eval="[(6, 0, [ref('purchase_edu_service_tax12'),ref('purchase_edu_cess_service_tax_2'),ref('purchase_high_edu_service_tax_1')])]"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_71')])]"/>
</record>
<record id="output_vat_4" model="account.tax.template">
<field name="name">(schedule6)Output VAT @ 4%</field>
<field name="description">(schedule6)Output VAT @ 4%</field>
<field name="type_tax_use">purchase</field>
<field name="amount_type">percent</field>
<field name="amount">4</field>
<field name="sequence">10</field>
<field name="account_id" ref="c121611"/>
<field name="chart_template_id" ref="indian_chart_template_schedule6"/>
<field name="tag_ids" eval="[(6,0,[ref('st_tag_in_34'), ref('st_tag_in_75')])]"/>
</record>
</data>
</openerp>
Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

+1 -2
View File
@@ -9,8 +9,7 @@ from openerp import tools
from openerp import SUPERUSER_ID from openerp import SUPERUSER_ID
from openerp.osv import osv, fields from openerp.osv import osv, fields
from openerp.addons.link_tracker.models.link_tracker import URL_REGEX
URL_REGEX = r'(\bhref=[\'"]([^\'"]+)[\'"])'
class MailMail(osv.Model): class MailMail(osv.Model):
+2 -2
View File
@@ -500,11 +500,11 @@ class ProductChangeMixin(object):
if product: if product:
product_obj = self.pool.get('product.product').browse(cr, uid, product, context=ctx) product_obj = self.pool.get('product.product').browse(cr, uid, product, context=ctx)
partner = self.pool.get('res.partner').browse(cr, uid, partner_id)
if partner_id: if partner_id:
partner = self.pool.get('res.partner').browse(cr, uid, partner_id)
result['tax_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, partner.property_account_position_id, product_obj.taxes_id, context=ctx) result['tax_id'] = self.pool.get('account.fiscal.position').map_tax(cr, uid, partner.property_account_position_id, product_obj.taxes_id, context=ctx)
result['name'] = product_obj.display_name result['name'] = product_obj.with_context(lang=partner.lang).display_name
result['product_uom'] = product_obj.uom_id and product_obj.uom_id.id or False result['product_uom'] = product_obj.uom_id and product_obj.uom_id.id or False
if not pricelist: if not pricelist:
warning = { warning = {
+1 -1
View File
@@ -5,7 +5,7 @@
string="Quotation / Order" string="Quotation / Order"
id="action_report_mrp_repair_order" id="action_report_mrp_repair_order"
model="mrp.repair" model="mrp.repair"
name="mrp_repair.report_mrprepairorder" name="mrp_repair.report_mrprepairorder2"
file="mrp_repair.report_mrprepairorder" file="mrp_repair.report_mrprepairorder"
report_type="qweb-pdf" report_type="qweb-pdf"
/> />
@@ -2,9 +2,9 @@
<openerp> <openerp>
<data> <data>
<template id="report_mrprepairorder"> <template id="report_mrprepairorder">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="o"> <t t-foreach="docs" t-as="o">
<t t-call="report.external_layout"> <t t-call="report.external_layout">
<t t-set="o" t-value="o.with_context({'lang': o.partner_id.lang})" />
<div class="page"> <div class="page">
<div class="oe_structure"/> <div class="oe_structure"/>
@@ -153,6 +153,13 @@
</div> </div>
</t> </t>
</t> </t>
</template>
<template id="report_mrprepairorder2">
<t t-call="report.html_container">
<t t-foreach="docs" t-as="doc">
<t t-call="mrp_repair.report_mrprepairorder" t-lang="doc.partner_id.lang"/>
</t>
</t> </t>
</template> </template>
</data> </data>
+3 -3
View File
@@ -598,8 +598,8 @@ class PosOrder(models.Model):
# when the pos.config has no picking_type_id set only the moves will be created # when the pos.config has no picking_type_id set only the moves will be created
if moves and not return_picking and not order_picking: if moves and not return_picking and not order_picking:
moves.action_confirm() moves.action_assign()
moves.force_assign() moves.filtered(lambda m: m.state in ['confirmed', 'waiting']).force_assign()
moves.filtered(lambda m: m.product_id.tracking == 'none').action_done() moves.filtered(lambda m: m.product_id.tracking == 'none').action_done()
return True return True
@@ -607,7 +607,7 @@ class PosOrder(models.Model):
def _force_picking_done(self, picking): def _force_picking_done(self, picking):
"""Force picking in order to be set as done.""" """Force picking in order to be set as done."""
for order in self: for order in self:
picking.action_confirm() picking.action_assign()
picking.force_assign() picking.force_assign()
# Mark pack operations as done # Mark pack operations as done
for pack in picking.pack_operation_ids.filtered(lambda x: x.product_id.tracking == 'none'): for pack in picking.pack_operation_ids.filtered(lambda x: x.product_id.tracking == 'none'):
+3 -1
View File
@@ -1274,7 +1274,9 @@ exports.Orderline = Backbone.Model.extend({
this.trigger('change',this); this.trigger('change',this);
}, },
get_unit_price: function(){ get_unit_price: function(){
return round_di(this.price || 0, this.pos.dp['Product Price']) var digits = this.pos.dp['Product Price'];
// round and truncate to mimic _sybmbol_set behavior
return parseFloat(round_di(this.price || 0, digits).toFixed(digits));
}, },
get_unit_display_price: function(){ get_unit_display_price: function(){
if (this.pos.config.iface_tax_included) { if (this.pos.config.iface_tax_included) {
@@ -1329,6 +1329,16 @@ var ClientListScreenWidget = ScreenWidget.extend({
contents.append($(QWeb.render('ClientDetailsEdit',{widget:this,partner:partner}))); contents.append($(QWeb.render('ClientDetailsEdit',{widget:this,partner:partner})));
this.toggle_save_button(); this.toggle_save_button();
// Browsers attempt to scroll invisible input elements
// into view (eg. when hidden behind keyboard). They don't
// seem to take into account that some elements are not
// scrollable.
contents.find('input').blur(function() {
setTimeout(function() {
self.$('.window').scrollTop(0);
}, 0);
});
contents.find('.image-uploader').on('change',function(event){ contents.find('.image-uploader').on('change',function(event){
self.load_image_file(event.target.files[0],function(res){ self.load_image_file(event.target.files[0],function(res){
if (res) { if (res) {
+4 -1
View File
@@ -512,7 +512,10 @@
<filter name="groupby_supplier" string="Vendor" domain="[]" context="{'group_by' : 'partner_id'}" /> <filter name="groupby_supplier" string="Vendor" domain="[]" context="{'group_by' : 'partner_id'}" />
<filter name="groupby_product" string="Product" domain="[]" context="{'group_by' : 'product_id'}" /> <filter name="groupby_product" string="Product" domain="[]" context="{'group_by' : 'product_id'}" />
<filter string="Order Reference" domain="[]" context="{'group_by' :'order_id'}"/> <filter string="Order Reference" domain="[]" context="{'group_by' :'order_id'}"/>
<filter string="Status" domain="[]" context="{'group_by' : 'state'}" /> <!-- Commented out because of the 'state' field's attribute typo "stored=True"
that can't be fixed in 9.0 as it would change the schema. Hence the only
option is to disable this filter. Not to be forward ported to 10.0 !
<filter string="Status" domain="[]" context="{'group_by' : 'state'}" /> -->
</group> </group>
</search> </search>
</field> </field>
-1
View File
@@ -308,7 +308,6 @@ class Report(osv.Model):
'report_name': report.report_name, 'report_name': report.report_name,
'report_type': report.report_type, 'report_type': report.report_type,
'report_file': report.report_file, 'report_file': report.report_file,
'context': context,
} }
@api.v8 @api.v8
+14 -13
View File
@@ -280,23 +280,26 @@ class ProcurementOrder(models.Model):
@api.model @api.model
def _procure_orderpoint_confirm(self, use_new_cursor=False, company_id=False): def _procure_orderpoint_confirm(self, use_new_cursor=False, company_id=False):
""" Create procurements based on orderpoints. """ Create procurements based on orderpoints.
:param bool use_new_cursor: if set, use a dedicated cursor and auto-commit after processing each procurement. :param bool use_new_cursor: if set, use a dedicated cursor and auto-commit after processing
1000 orderpoints.
This is appropriate for batch jobs only. This is appropriate for batch jobs only.
""" """
if use_new_cursor:
cr = registry(self._cr.dbname).cursor()
self = self.with_env(self.env(cr=cr))
OrderPoint = self.env['stock.warehouse.orderpoint'] OrderPoint = self.env['stock.warehouse.orderpoint']
Procurement = self.env['procurement.order']
ProcurementAutorundefer = Procurement.with_context(procurement_autorun_defer=True)
procurement_list = []
orderpoints_noprefetch = OrderPoint.with_context(prefetch_fields=False).search( orderpoints_noprefetch = OrderPoint.with_context(prefetch_fields=False).search(
company_id and [('company_id', '=', company_id)] or [], company_id and [('company_id', '=', company_id)] or [],
order=self._procurement_from_orderpoint_get_order()) order=self._procurement_from_orderpoint_get_order()).ids
while orderpoints_noprefetch: while orderpoints_noprefetch:
orderpoints = OrderPoint.browse(orderpoints_noprefetch[:1000].ids) if use_new_cursor:
cr = registry(self._cr.dbname).cursor()
self = self.with_env(self.env(cr=cr))
OrderPoint = self.env['stock.warehouse.orderpoint']
Procurement = self.env['procurement.order']
ProcurementAutorundefer = Procurement.with_context(procurement_autorun_defer=True)
procurement_list = []
orderpoints = OrderPoint.browse(orderpoints_noprefetch[:1000])
orderpoints_noprefetch = orderpoints_noprefetch[1000:] orderpoints_noprefetch = orderpoints_noprefetch[1000:]
# Calculate groups that can be executed together # Calculate groups that can be executed together
@@ -343,7 +346,7 @@ class ProcurementOrder(models.Model):
except OperationalError: except OperationalError:
if use_new_cursor: if use_new_cursor:
orderpoints_noprefetch += orderpoint.id orderpoints_noprefetch += [orderpoint.id]
cr.rollback() cr.rollback()
continue continue
else: else:
@@ -367,8 +370,6 @@ class ProcurementOrder(models.Model):
if use_new_cursor: if use_new_cursor:
cr.commit() cr.commit()
cr.close()
if use_new_cursor:
cr.commit()
cr.close()
return {} return {}
+4 -1
View File
@@ -11,10 +11,13 @@
<div> <div>
<span><strong>Customer Address:</strong></span> <span><strong>Customer Address:</strong></span>
</div> </div>
<div t-if="o.partner_id" name="partner_header"> <div t-if="o.move_lines and o.move_lines[0].partner_id" name="partner_header">
<div t-field="o.move_lines[0].partner_id" <div t-field="o.move_lines[0].partner_id"
t-field-options='{"widget": "contact", "fields": ["address", "name", "phone", "fax"], "no_marker": true}'/> t-field-options='{"widget": "contact", "fields": ["address", "name", "phone", "fax"], "no_marker": true}'/>
</div> </div>
<div t-if="not (o.move_lines and o.move_lines[0].partner_id) and o.partner_id" name="partner_header">
t-field-options='{"widget": "contact", "fields": ["address", "name", "phone", "fax"], "no_marker": true}'/>
</div>
</div> </div>
</div> </div>
<h2> <h2>
+4
View File
@@ -636,6 +636,8 @@ class Database(http.Controller):
@http.route('/web/database/create', type='http', auth="none", methods=['POST'], csrf=False) @http.route('/web/database/create', type='http', auth="none", methods=['POST'], csrf=False)
def create(self, master_pwd, name, lang, password, **post): def create(self, master_pwd, name, lang, password, **post):
try: try:
if not re.match('^[a-zA-Z][a-zA-Z0-9_]+$', name):
raise Exception(_('Invalid database name. Only alphanumerical characters and underscore are allowed.'))
# country code could be = "False" which is actually True in python # country code could be = "False" which is actually True in python
country_code = post.get('country_code') or False country_code = post.get('country_code') or False
request.session.proxy("db").create_database(master_pwd, name, bool(post.get('demo')), lang, password, post['login'], country_code) request.session.proxy("db").create_database(master_pwd, name, bool(post.get('demo')), lang, password, post['login'], country_code)
@@ -648,6 +650,8 @@ class Database(http.Controller):
@http.route('/web/database/duplicate', type='http', auth="none", methods=['POST'], csrf=False) @http.route('/web/database/duplicate', type='http', auth="none", methods=['POST'], csrf=False)
def duplicate(self, master_pwd, name, new_name): def duplicate(self, master_pwd, name, new_name):
try: try:
if not re.match('^[a-zA-Z][a-zA-Z0-9_]+$', new_name):
raise Exception(_('Invalid database name. Only alphanumerical characters and underscore are allowed.'))
request.session.proxy("db").duplicate_database(master_pwd, name, new_name) request.session.proxy("db").duplicate_database(master_pwd, name, new_name)
return http.local_redirect('/web/database/manager') return http.local_redirect('/web/database/manager')
except Exception, e: except Exception, e:
+3 -3
View File
@@ -61,7 +61,7 @@
<div class="row"> <div class="row">
<div class="col-md-12"> <div class="col-md-12">
<label for="name" class="control-label">Database Name</label> <label for="name" class="control-label">Database Name</label>
<input id="name" type="text" name="name" class="form-control" required="required" autocomplete="off"/> <input id="name" type="text" name="name" class="form-control" required="required" autocomplete="off" pattern="^[a-zA-Z][a-zA-Z0-9_]+$" title="Only alphanumerical characters and underscore are allowed"/>
</div> </div>
</div> </div>
</div> </div>
@@ -208,7 +208,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="name" class="control-label">Database Name</label> <label for="name" class="control-label">Database Name</label>
<input id="name" type="text" name="name" class="form-control" required="required"/> <input id="name" type="text" name="name" class="form-control" required="required" pattern="^[a-zA-Z][a-zA-Z0-9_]+$" title="Only alphanumerical characters and underscore are allowed"/>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="copy">This database might have been moved or copied.</label> <label for="copy">This database might have been moved or copied.</label>
@@ -281,7 +281,7 @@
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="new_name" class="control-label">New Name</label> <label for="new_name" class="control-label">New Name</label>
<input id="new_name" type="text" name="new_name" class="form-control" required="required"/> <input id="new_name" type="text" name="new_name" class="form-control" required="required" pattern="^[a-zA-Z][a-zA-Z0-9_]+$" title="Only alphanumerical characters and underscore are allowed"/>
</div> </div>
</div> </div>
<div class="modal-footer"> <div class="modal-footer">
@@ -321,7 +321,15 @@ eventHandler.modules.popover.update = function ($popover, oStyle, isAirMode) {
$imagePopover.find('.o_image_alt').text( (alt || "").replace(/&quot;/g, '"') ).parent().toggle(oStyle.image.tagName === "IMG"); $imagePopover.find('.o_image_alt').text( (alt || "").replace(/&quot;/g, '"') ).parent().toggle(oStyle.image.tagName === "IMG");
$imagePopover.show(); $imagePopover.show();
range.createFromNode(dom.firstChild(oStyle.image)).select(); // for video tag (non-void) we select the range over the tag,
// for other media types we get the first descendant leaf element
var target_node = oStyle.image;
if (!oStyle.image.className.match(/(^|\s)media_iframe_video(\s|$)/i)) {
target_node = dom.firstChild(target_node);
}
range.createFromNode(target_node).select();
// save range on the editor so it is not lost if restored
eventHandler.modules.editor.saveRange(dom.makeLayoutInfo(target_node).editable());
} else { } else {
$(".note-control-selection").hide(); $(".note-control-selection").hide();
} }
@@ -289,8 +289,10 @@ $('.oe_website_sale').each(function () {
var $ul = $(ev.target).closest('.js_add_cart_variants'); var $ul = $(ev.target).closest('.js_add_cart_variants');
var $parent = $ul.closest('.js_product'); var $parent = $ul.closest('.js_product');
var $product_id = $parent.find('input.product_id').first(); var $product_id = $parent.find('input.product_id').first();
var $price = $parent.find(".oe_price:first .oe_currency_value"); var $price = $parent.find(".oe_price:first .oe_currency_value")
var $default_price = $parent.find(".oe_default_price:first .oe_currency_value"); .add($('#product_confirmation').find(".oe_price"));
var $default_price = $parent.find(".oe_default_price:first .oe_currency_value")
.add($('#product_confirmation').find(".oe_default_price:first .oe_currency_value"));
var $optional_price = $parent.find(".oe_optional:first .oe_currency_value"); var $optional_price = $parent.find(".oe_optional:first .oe_currency_value");
var variant_ids = $ul.data("attribute_value_ids"); var variant_ids = $ul.data("attribute_value_ids");
var values = []; var values = [];
@@ -55,7 +55,7 @@
</div> </div>
</td> </td>
<td> <td>
<span t-attf-class="text-danger oe_default_price" t-att-style="'' if (compute_currency(product.lst_price) - product.price) &gt; 0.1 else 'display: none;'" style="text-decoration: line-through; white-space: nowrap;" <span t-attf-class="text-danger oe_default_price" style="text-decoration: line-through; white-space: nowrap;"
t-field="product.lst_price" t-field="product.lst_price"
t-field-options='{ t-field-options='{
"widget": "monetary", "widget": "monetary",
+15
View File
@@ -0,0 +1,15 @@
Canada, 2017-4-4
Métal Sartigan agrees to the terms of the Odoo Corporate Contributor License
Agreement v1.0.
I declare that I am authorized and able to make this agreement and sign this
declaration.
Signed,
Jérôme Thériault jerther@gmail.com https://github.com/jerther
List of contributors:
Jérôme Thériault jerther@gmail.com https://github.com/jerther
+1 -1
View File
@@ -736,7 +736,7 @@ class GroupsView(models.Model):
xml = E.field(E.group(*(xml1), col="2"), E.group(*(xml2), col="4"), name="groups_id", position="replace") xml = E.field(E.group(*(xml1), col="2"), E.group(*(xml2), col="4"), name="groups_id", position="replace")
xml.addprevious(etree.Comment("GENERATED AUTOMATICALLY BY GROUPS")) xml.addprevious(etree.Comment("GENERATED AUTOMATICALLY BY GROUPS"))
xml_content = etree.tostring(xml, pretty_print=True, xml_declaration=True, encoding="utf-8") xml_content = etree.tostring(xml, pretty_print=True, xml_declaration=True, encoding="utf-8")
view.with_context(lang=None).write({'arch': xml_content}) view.with_context(lang=None).write({'arch': xml_content, 'arch_fs': False})
def get_application_groups(self, domain): def get_application_groups(self, domain):
""" Return the non-share groups that satisfy ``domain``. """ """ Return the non-share groups that satisfy ``domain``. """
+9 -9
View File
@@ -211,8 +211,8 @@ class test_expression(common.TransactionCase):
self.assertEqual(set(partner_ids), set([p_aa]), self.assertEqual(set(partner_ids), set([p_aa]),
"_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..'): incorrect result") "_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..'): incorrect result")
# Test produced queries # Test produced queries
self.assertEqual(len(self.query_list), 3, self.assertEqual(len(self.query_list), 2,
"_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') should produce 3 queries (1 in res_partner_bank, 2 on res_partner)") "_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') should produce 2 queries (1 in res_partner_bank, 1 on res_partner)")
sql_query = self.query_list[0].get_sql() sql_query = self.query_list[0].get_sql()
self.assertIn('res_partner_bank', sql_query[0], self.assertIn('res_partner_bank', sql_query[0],
"_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') first query incorrect main table") "_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') first query incorrect main table")
@@ -223,13 +223,13 @@ class test_expression(common.TransactionCase):
self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]), self.assertEqual(set(['%' + name_test + '%']), set(sql_query[2]),
"_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') first query incorrect parameter") "_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') first query incorrect parameter")
sql_query = self.query_list[2].get_sql() sql_query = self.query_list[1].get_sql()
self.assertIn('res_partner', sql_query[0], self.assertIn('res_partner', sql_query[0],
"_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') third query incorrect main table") "_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') second query incorrect main table")
self.assertIn('"res_partner"."id" in (%s)', sql_query[1], self.assertIn('"res_partner"."id" in (%s)', sql_query[1],
"_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') third query incorrect where condition") "_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') second query incorrect where condition")
self.assertEqual(set([p_aa]), set(sql_query[2]), self.assertEqual(set([p_aa]), set(sql_query[2]),
"_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') third query incorrect parameter") "_auto_join off: ('bank_ids.sanitized_acc_number', 'like', '..') second query incorrect parameter")
# Do: cascaded one2many without _auto_join # Do: cascaded one2many without _auto_join
self._reinit_mock() self._reinit_mock()
@@ -238,8 +238,8 @@ class test_expression(common.TransactionCase):
self.assertEqual(set(partner_ids), set([p_a, p_b]), self.assertEqual(set(partner_ids), set([p_a, p_b]),
"_auto_join off: ('child_ids.bank_ids.id', 'in', [..]): incorrect result") "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]): incorrect result")
# Test produced queries # Test produced queries
self.assertEqual(len(self.query_list), 5, self.assertEqual(len(self.query_list), 3,
"_auto_join off: ('child_ids.bank_ids.id', 'in', [..]) should produce 5 queries (1 in res_partner_bank, 4 on res_partner)") "_auto_join off: ('child_ids.bank_ids.id', 'in', [..]) should produce 3 queries (1 in res_partner_bank, 2 on res_partner)")
# Do: one2many with _auto_join # Do: one2many with _auto_join
partner_bank_ids_col._auto_join = True partner_bank_ids_col._auto_join = True
@@ -470,7 +470,7 @@ class test_expression(common.TransactionCase):
self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)), self.assertTrue(set([p_a, p_b]).issubset(set(partner_ids)),
"_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result") "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') incorrect result")
# Test produced queries # Test produced queries
self.assertEqual(len(self.query_list), 5, self.assertEqual(len(self.query_list), 4,
"_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect") "_auto_join off: ('child_ids.state_id.country_id.code', 'like', '..') number of queries incorrect")
# Do: ('child_ids.state_id.country_id.code', 'like', '..') with _auto_join # Do: ('child_ids.state_id.country_id.code', 'like', '..') with _auto_join
+1 -1
View File
@@ -850,7 +850,7 @@ class BaseModel(object):
field = cls._fields.get(name) field = cls._fields.get(name)
if not field: if not field:
_logger.warning("method %s.%s: @constrains parameter %r is not a field name", cls._name, attr, name) _logger.warning("method %s.%s: @constrains parameter %r is not a field name", cls._name, attr, name)
if not (field.store or field.column and field.column._fnct_inv): elif not (field.store or field.column and field.column._fnct_inv):
_logger.warning("method %s.%s: @constrains parameter %r is not writeable", cls._name, attr, name) _logger.warning("method %s.%s: @constrains parameter %r is not writeable", cls._name, attr, name)
methods.append(func) methods.append(func)
+13 -10
View File
@@ -883,8 +883,7 @@ class expression(object):
# Making search easier when there is a left operand as column.o2m or column.m2m # Making search easier when there is a left operand as column.o2m or column.m2m
elif len(path) > 1 and column and column._type in ['many2many', 'one2many']: elif len(path) > 1 and column and column._type in ['many2many', 'one2many']:
right_ids = comodel.search(cr, uid, [(path[1], operator, right)], context=context) right_ids = comodel.search(cr, uid, [(path[1], operator, right)], context=context)
table_ids = model.search(cr, uid, [(path[0], 'in', right_ids)], context=dict(context, active_test=False)) leaf.leaf = (path[0], 'in', right_ids)
leaf.leaf = ('id', 'in', table_ids)
push(leaf) push(leaf)
elif not column: elif not column:
@@ -1012,15 +1011,16 @@ class expression(object):
rel_table, rel_id1, rel_id2 = column._sql_names(model) rel_table, rel_id1, rel_id2 = column._sql_names(model)
if operator in HIERARCHY_FUNCS: if operator in HIERARCHY_FUNCS:
def _rec_convert(ids):
if comodel == model:
return ids
return select_from_where(cr, rel_id1, rel_table, rel_id2, ids, operator)
ids2 = to_ids(right, comodel, context) ids2 = to_ids(right, comodel, context)
dom = HIERARCHY_FUNCS[operator]('id', ids2, comodel, context=context) dom = HIERARCHY_FUNCS[operator]('id', ids2, comodel, context=context)
ids2 = comodel.search(cr, uid, dom, context=context) ids2 = comodel.search(cr, uid, dom, context=context)
push(create_substitution_leaf(leaf, ('id', 'in', _rec_convert(ids2)), model)) if comodel == model:
push(create_substitution_leaf(leaf, ('id', 'in', ids2), model))
else:
subquery = 'SELECT "%s" FROM "%s" WHERE "%s" IN %%s' % (rel_id1, rel_table, rel_id2)
# avoid flattening of argument in to_sql()
subquery = cr.mogrify(subquery, [tuple(ids2)])
push(create_substitution_leaf(leaf, ('id', 'inselect', (subquery, [])), internal=True))
else: else:
call_null_m2m = True call_null_m2m = True
if right is not False: if right is not False:
@@ -1046,8 +1046,11 @@ class expression(object):
operator = 'in' # operator changed because ids are directly related to main object operator = 'in' # operator changed because ids are directly related to main object
else: else:
call_null_m2m = False call_null_m2m = False
m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' subop = 'not inselect' if operator in NEGATIVE_TERM_OPERATORS else 'inselect'
push(create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), model)) subquery = 'SELECT "%s" FROM "%s" WHERE "%s" IN %%s' % (rel_id1, rel_table, rel_id2)
# avoid flattening of argument in to_sql()
subquery = cr.mogrify(subquery, [tuple(filter(None, res_ids))])
push(create_substitution_leaf(leaf, ('id', subop, (subquery, [])), internal=True))
if call_null_m2m: if call_null_m2m:
m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in' m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in'