diff --git a/addons/account/models/account_move.py b/addons/account/models/account_move.py index 365095cfc5e..a3a27f05540 100644 --- a/addons/account/models/account_move.py +++ b/addons/account/models/account_move.py @@ -1383,9 +1383,9 @@ class AccountPartialReconcile(models.Model): for rec in self: 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.")) - 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.")) - 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.")) move_vals = {'journal_id': rec.company_id.currency_exchange_journal_id.id} diff --git a/addons/account/report/account_partner_ledger.py b/addons/account/report/account_partner_ledger.py index 7ee6a496f3c..dfe10d6d13f 100644 --- a/addons/account/report/account_partner_ledger.py +++ b/addons/account/report/account_partner_ledger.py @@ -11,6 +11,7 @@ class ReportPartnerLedger(models.AbstractModel): def _lines(self, data, partner): full_account = [] + currency = self.env['res.currency'] 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 ' 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'] r['progress'] = sum + r['currency_id'] = currency.browse(r.get('currency_id')) full_account.append(r) return full_account diff --git a/addons/account/views/account_view.xml b/addons/account/views/account_view.xml index 0f748b89371..2ebc57d2173 100644 --- a/addons/account/views/account_view.xml +++ b/addons/account/views/account_view.xml @@ -654,7 +654,7 @@ - + form diff --git a/addons/account/views/report_partnerledger.xml b/addons/account/views/report_partnerledger.xml index e8cb8c3e263..e200d0f08a8 100644 --- a/addons/account/views/report_partnerledger.xml +++ b/addons/account/views/report_partnerledger.xml @@ -36,7 +36,7 @@ Debit Credit Balance - Currency + Currency @@ -77,8 +77,10 @@ - - + + + + diff --git a/addons/account_asset/account_asset.py b/addons/account_asset/account_asset.py index ab18ab437ab..a0f19fb2788 100644 --- a/addons/account_asset/account_asset.py +++ b/addons/account_asset/account_asset.py @@ -454,15 +454,14 @@ class AccountAssetDepreciationLine(models.Model): @api.multi def create_move(self, post_move=True): created_moves = self.env['account.move'] + prec = self.env['decimal.precision'].precision_get('Account') for line in self: 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) company_currency = line.asset_id.company_id.currency_id current_currency = line.asset_id.currency_id 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)) - prec = self.env['decimal.precision'].precision_get('Account') move_line_1 = { 'name': asset_name, 'account_id': category_id.account_depreciation_id.id, @@ -472,7 +471,7 @@ class AccountAssetDepreciationLine(models.Model): 'partner_id': line.asset_id.partner_id.id, '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, - '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 = { 'name': asset_name, @@ -483,7 +482,7 @@ class AccountAssetDepreciationLine(models.Model): 'partner_id': line.asset_id.partner_id.id, '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, - '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 = { 'ref': line.asset_id.code, diff --git a/addons/calendar/static/src/js/base_calendar.js b/addons/calendar/static/src/js/base_calendar.js index e6dad933f81..3533ef9b5a4 100644 --- a/addons/calendar/static/src/js/base_calendar.js +++ b/addons/calendar/static/src/js/base_calendar.js @@ -116,6 +116,9 @@ widgets.SidebarFilter.include({ }, initialize_m2o: function() { var self = this; + if (!this.view.useContacts) { + return; + } this.dfm = new form_common.DefaultFieldManager(self); this.dfm.extend_field_desc({ partner_id: { diff --git a/addons/event/models/event.py b/addons/event/models/event.py index a94ba4da712..73bcf4c6ca6 100644 --- a/addons/event/models/event.py +++ b/addons/event/models/event.py @@ -56,7 +56,7 @@ class event_event(models.Model): 'interval_unit': 'now', 'interval_type': 'after_sub', 'template_id': self.env.ref('event.event_subscription') - })] + })] if self.user_has_groups('event.group_email_scheduling') else [] # Seats and computation seats_max = fields.Integer( diff --git a/addons/event/models/event_mail.py b/addons/event/models/event_mail.py index 84689fe7e2e..c2e585ac0c6 100644 --- a/addons/event/models/event_mail.py +++ b/addons/event/models/event_mail.py @@ -49,7 +49,7 @@ class EventMailScheduler(models.Model): if self.interval_type in ['before_event', 'after_event']: self.done = self.mail_sent 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.depends('event_id.state', 'event_id.date_begin', 'interval_type', 'interval_unit', 'interval_nbr') diff --git a/addons/l10n_at/account_chart.xml b/addons/l10n_at/account_chart.xml index 8bc33d795cf..b280c11c0e3 100644 --- a/addons/l10n_at/account_chart.xml +++ b/addons/l10n_at/account_chart.xml @@ -779,7 +779,7 @@ 2500 - + Vorsteuer diff --git a/addons/l10n_in_schedule6/__init__.py b/addons/l10n_in_schedule6/__init__.py new file mode 100644 index 00000000000..67dee8c60db --- /dev/null +++ b/addons/l10n_in_schedule6/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. diff --git a/addons/l10n_in_schedule6/__openerp__.py b/addons/l10n_in_schedule6/__openerp__.py new file mode 100644 index 00000000000..20b803525d1 --- /dev/null +++ b/addons/l10n_in_schedule6/__openerp__.py @@ -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, +} diff --git a/addons/l10n_in_schedule6/account_chart_template.yml b/addons/l10n_in_schedule6/account_chart_template.yml new file mode 100644 index 00000000000..e536be4873d --- /dev/null +++ b/addons/l10n_in_schedule6/account_chart_template.yml @@ -0,0 +1,3 @@ +- + !python {model: account.chart.template, id: indian_chart_template_schedule6}: | + self[0].try_loading_for_current_company() diff --git a/addons/l10n_in_schedule6/l10n_in_schedule6_chart.xml b/addons/l10n_in_schedule6/l10n_in_schedule6_chart.xml new file mode 100644 index 00000000000..5552803bd7a --- /dev/null +++ b/addons/l10n_in_schedule6/l10n_in_schedule6_chart.xml @@ -0,0 +1,1433 @@ + + + + + + 1206 + Transfer Account + + + + + Indian Chart of Accounts - Schedule VI + 12142 + 12141 + 6 + + + + + + + + + + + Authorised Share Capital + 11101 + + + + + + Issued, Subscribed And Paid Up Capital + 11102 + + + + + + Capital Reserve + 11110 + + + + + + Capital Redemption Reserve + 11111 + + + + + + Securities Premium Reserve + 11112 + + + + + + Debenture Redeemption Reserve + 11113 + + + + + + Revaluation Reserve + 11114 + + + + + + Shares Option Outstanding Account + 11115 + + + + + + Other Reserve + 11116 + + + + + + Surplus (Profit and Loss Account) + 11117 + + + + + + Money Received Against Share Warrants + 1112 + + + + + + + + Share Application Money Pending Allotment + 1121 + + + + + + + Bank Loan (Long Term) + 113011 + + + + + + From Others + 113021 + + + + + + Deferred Tax Liabilities (Net) + 1131 + + + + + + Other Long Term Liabilities + 1132 + + + + + + Long Term Provisions + 1133 + + + + + + + + Bank Loan (Short Term) + 114011 + + + + + + Loans And Advances From Related Parties + 11402 + + + + + + Depsoits + 11403 + + + + + + Others + 11404 + + + + + + + Sundry Creditors For Material/Supplies + 11411 + + + + + + Sundry Creditors For Services + 11412 + + + + + + + Excise Duty Payable + 1142111 + + + + + + Education Cess Payable On Excise Duty + 1142112 + + + + + + Higher Education Cess Payable On Excise Duty + 1142113 + + + + + + Service Tax Payable + 1142121 + + + + + + Education Cess Payable On Service Tax + 1142122 + + + + + + Higher Education Cess Payable On Service Tax + 1142123 + + + + + + TDS Paybale + 114213 + + + + + + Central Sales Tax Payable + 114214 + + + + + + VAT Payable + 114215 + + + + + + Out Standing Cheques for Clearance + 11422 + + + + + + Advance From Customers + 11423 + + + + + + + EPF Payable + 114301 + + + + + + Unpaid Remuneration + 114302 + + + + + + Electricity And Power Charges Payable + 114311 + + + + + + Employee Providend Fund Payable + 114312 + + + + + + Internet Expenses Payable + 114313 + + + + + + Mobile Expenses Payable + 114314 + + + + + + Secueity Expenses Payable + 114315 + + + + + + Telephone Expenses Payable + 114316 + + + + + + Wages Payable + 114317 + + + + + + Provision For Taxation + 114318 + + + + + + Provision For Expenses + 114319 + + + + + + + + + Land + 120101 + + + + + + Buildings + 120102 + + + + + + Plant And Equipments + 120103 + + + + + + Furnitures And Fixtures + 120104 + + + + + + Vehicles + 120105 + + + + + + Computer/Laptops + 120106 + + + + + + Office Equipments + 120107 + + + + + + + Goodwill + 120111 + + + + + + + Building Under Construction + 120120 + + + + + + + Intangible Assets Under Development + 12013 + + + + + + + Investment In Property + 12020 + + + + + + Investment In Equity Instrument + 12021 + + + + + + Investment In Preference Shares + 12022 + + + + + + Investment In Government Or Trust Securities + 12023 + + + + + + Investment In Debentures And Bonds + 12024 + + + + + + Investment In Mutual Fund + 12025 + + + + + + Investment In Partnership Firm + 12026 + + + + + + Gold + 120270 + + + + + + Fixed Deposit With Banks-Earmarked + 120271 + + + + + + + Deferred Tax Assets (Net) + 1203 + + + + + + + Secured, Considered Good + 120411 + + + + + + Unsecured, Considered Good + 120412 + + + + + + Doubtful + 120413 + + + + + + Earnest Money Deposit + 1204211 + + + + + + Other Deposit + 1204212 + + + + + + Unsecured, Considered Good + 120422 + + + + + + Doubtful + 120423 + + + + + + Loans And Advances To Related Parties + 12043 + + + + + + Other Loans And Advances + 12044 + + + + + + + Secured, Considered Good + 120511 + + + + + + Unsecured, Considered Good + 120512 + + + + + + Doubtful + 120513 + + + + + + Preliminery Expense + 120521 + + + + + + Software + 120522 + + + + + + Others + 12053 + + + + + + + + Investment In Equity + 12110 + + + + + + Investment In Preference Shares + 12111 + + + + + + Investment In Government Securities + 12112 + + + + + + Investment In Debentures And Bonds + 12113 + + + + + + Investment In Mutual Fund + 12114 + + + + + + Investment In Partnership Firm + 12115 + + + + + + In Short Term Fixed Deposits + 12116 + + + + + + + Raw Material + 12120 + + + + + + Work-In-Progress + 12121 + + + + + + Finished Goods + 12122 + + + + + + Stock-In-Trade + 12123 + + + + + + Stores And Spares + 12124 + + + + + + Loose Tools + 12125 + + + + + + Other With Job Worker + 12126 + + + + + + Goods-In-Transit + 12127 + + + + + + + Secured, Considered Good + 121311 + + + + + + Unsecured, Considered Good + 121312 + + + + + + Doubtful + 121313 + + + + + + Secured, Considered Good + 121321 + + + + + + Unsecured, Considered Good + 121322 + + + + + + Doubtful + 121323 + + + + + + Sundry Debtors + 12133 + + + + + + + + Advance To Associate Concerns + 1215111 + + + + + + Unsecured Recoverable in Cash or in Kind or for Value to be Received + 1215121 + + + + + + Doubtful + 121513 + + + + + + Advance To Suppliers + 121521 + + + + + + Advance Income Tax/Refund Due + 121522 + + + + + + Balance With Revenue Authorities (Indirect Taxes) + 121523 + + + + + + Prepaid Expenses + 121524 + + + + + + + Sales Tax Receivable + 121610 + + + + + + VAT Receivable + 121611 + + + + + + Excise Duty Receivable + 1216121 + + + + + + Education Cess Receivable On Excise Duty + 1216122 + + + + + + Higher Education Cess Receivable On Excise Duty + 1216123 + + + + + + Service Tax Receivable + 1216131 + + + + + + Education Cess Receivable On Service Tax + 1216132 + + + + + + Higher Education Cess Receivable On Service Tax + 1216133 + + + + + + TDS Receivable + 121614 + + + + + + Preliminary Expense + 121621 + + + + + + + + Central Sales(Exclusive of Excise Duty) + 2011 + + + + + + Export Sales + 2012 + + + + + + Sales of Services + 2013 + + + + + + Job Work Receipts + 2014 + + + + + + Product Sales + 2015 + + + + + + Other Operating Income + 2016 + + + + + + + Interest + 2021 + + + + + + Other Financial Services + 2022 + + + + + + Other Non Operating Income + 2023 + + + + + + + Opening Stock + 2101 + + + + + + Raw Material + 21021 + + + + + + Stores And Consumables + 21022 + + + + + + Closing Stock + 2103 + + + + + + + Purchase of Stock-In-Trade + 2111 + + + + + + + Changes In Inventories of Finished Goods, Work-In-Progress And Stock-In-Trade + 212 + + + + + + + Salaries, Bonus, PF And ESIC + 2131 + + + + + + Directors Remuneration + 2132 + + + + + + Directors Setting Fees + 2133 + + + + + + Staff Welfare Expense + 2134 + + + + + + Commision To M.D + 2135 + + + + + + Commision To Joint M.D + 2136 + + + + + + + Interest On Cash Credit Facality + 2141 + + + + + + Interest On Car Loan + 2142 + + + + + + Interest On Other Loans + 2143 + + + + + + Bank Charges + 2144 + + + + + + Bank Gurantee Charges + 2145 + + + + + + + Depreciation + 2151 + + + + + + Preliminary Expenses + 2152 + + + + + + + Jobwork Charges + 21601 + + + + + + Stores and Spares + 21602 + + + + + + Workshop Expense + 21603 + + + + + + Centeral Sales Tax + 21604 + + + + + + Machinery Repair and Maintenance + 21605 + + + + + + Freight Forwarding and Octroi Expenses (Local) + 21606 + + + + + + Electrical Repairing Expense + 21607 + + + + + + Material Testing Expense + 21608 + + + + + + Power and Fuel Charges + 21609 + + + + + + Packing Material Expense + 216091 + + + + + + Measuring Expense + 216092 + + + + + + Processing Labour Charges + 216093 + + + + + + Car Expenses (Including Insurance) + 21611 + + + + + + Travelling Expenses (Including Foreign Travelling) + 21612 + + + + + + Repair And Maintenance Building + 21613 + + + + + + Computer Maintenace + 21614 + + + + + + General Expenses + 21615 + + + + + + Internet And Website Expenses + 21616 + + + + + + Insurance Expenses + 21617 + + + + + + Telephone Expense + 21618 + + + + + + Labour Welfare Expenses + 21619 + + + + + + Legal Expenses + 216191 + + + + + + Postage And Telegram + 216192 + + + + + + Professional Charges + 216193 + + + + + + Security Expesnes + 216194 + + + + + + Stationery Expenses + 216195 + + + + + + Auditors Remuneration + 216196 + + + + + + Rent Rates And Taxes + 216197 + + + + + + Tender Fee And Testing Charges + 216198 + + + + + + Interest On Delayed Payment of Taxes + 216199 + + + + + + Excise/ Service Tax Expenses + 2161991 + + + + + + Advertisement And Publicity + 2161992 + + + + + + Donation + 2161993 + + + + + + Export Expenses + 2161994 + + + + + + Internal Audit Fee + 2161995 + + + + + + Conveyance Expense + 2161996 + + + + + + Packing and Forwarding Expense + 2161997 + + + + + + Annual Service Fees + 2161998 + + + + + + Loan Processing Fees + 2161999 + + + + + + Office Cleaning Expense + 21619991 + + + + + + Prelimenary Expense W/Off + 21619992 + + + + + + Software Expense W/Off + 21619993 + + + + + + Custom Duty + 21619994 + + + + + + Stamping Charge + 21619995 + + + + + + Post and Courrier Charges + 21619996 + + + + + + + + + Foreign Exchange Profit + 2017 + + + + + + Foreign Exchange Loss + 2170 + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/addons/l10n_in_schedule6/l10n_in_schedule6_tax_template.xml b/addons/l10n_in_schedule6/l10n_in_schedule6_tax_template.xml new file mode 100644 index 00000000000..4b98a7efafa --- /dev/null +++ b/addons/l10n_in_schedule6/l10n_in_schedule6_tax_template.xml @@ -0,0 +1,842 @@ + + + + + + + Tax to Pay + taxes + + + + C Forms + taxes + + + + C Forms Tax Collected on Sale + taxes + + + + C Forms Tax Paid on Purchase + taxes + + + + Excise Duty + taxes + + + + Excise Duty 12.36% + taxes + + + + Excise Duty Collected on Sales + taxes + + + + Education Cess 2% Excise Duty Collected on Sales + taxes + + + + Higher Education Cess 1% Excise Duty Collected on Sales + taxes + + + + Excise Duty Paid on Purchase + taxes + + + + Education Cess 2% Excise Duty Paid on Purchase + taxes + + + + Higher Education Cess 1% Excise Duty Paid on Purchase + taxes + + + + Sales Tax + taxes + + + + Sales Tax 4% + taxes + + + + Sales Tax 4% Collected on Sale + taxes + + + + Sales Tax 4% Paid on Purchase + taxes + + + + Sales Tax 12% + taxes + + + + Sales Tax 12% Collected on Sale + taxes + + + + Sales Tax 12% Paid on Purchase + taxes + + + + Sales Tax 15% + taxes + + + + Sales Tax 15% Collected on Sale + taxes + + + + Sales Tax 15% Paid on Purchase + taxes + + + + Service Tax + taxes + + + + Service Tax 12.36% + taxes + + + + Service Tax Collected on Sales of Services + taxes + + + + Education Cess 2% Service Tax Collected on Sales of Services + taxes + + + + Higher Education Cess 1% Service Tax Collected on Sales of Services + taxes + + + + Service Tax Paid on Purchase of Services + taxes + + + + Education Cess 2% Service Tax Paid on Purchase of Services + taxes + + + + Higher Education Cess 1% Service Tax Paid on Purchase of Services + taxes + + + + VAT + taxes + + + + VAT 4% + taxes + + + + VAT 4% Collected on Sale + taxes + + + + VAT 4% Paid on Purchase + taxes + + + + VAT 8% + taxes + + + + VAT 8% Collected on Sale + taxes + + + + VAT 8% Paid on Purchase + taxes + + + + VAT 10% + taxes + + + + VAT 10% Collected on Sale + taxes + + + + VAT 10% Paid on Purchase + taxes + + + + VAT 12.5% + taxes + + + + VAT 12.5% Collected on Sale + taxes + + + + VAT 12.5% Paid on Purchase + taxes + + + + Additional VAT 1% + taxes + + + + Additional VAT 1% Collected on Sale + taxes + + + + Additional VAT 1% Paid on Purchase + taxes + + + + Additional VAT 2.5% + taxes + + + + Additional VAT 2.5% Collected on Sale + taxes + + + + Additional VAT 2.5% Paid on Purchase + taxes + + + + Tax Bases + taxes + + + + Base C Forms + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base Excise Duty + taxes + + + + Base Excise Duty 12.36% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base Sales Tax + taxes + + + + Base Sales Tax 4% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base Sales Tax 12% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base Sales Tax 15% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base Service Tax + taxes + + + + Base Service Tax 12.36% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base VAT + taxes + + + + Base VAT 4% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base VAT 8% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base VAT 10% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base VAT 12.5% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base Additional VAT 1% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + Base Additional VAT 2.5% + taxes + + + + Base of Sale + taxes + + + + Base of Purchase + taxes + + + + + (schedule6)Input Sales Tax @ 15% + (schedule6)Input Sales Tax @ 15% + sale + percent + 15 + 10 + + + + + + (schedule6)Input Sales Tax @ 12% + (schedule6)Input Sales Tax @ 12% + sale + percent + 12 + 10 + + + + + + (schedule6)Input Sales Tax @ 4% + (schedule6)Input Sales Tax @ 4% + sale + percent + 4 + 10 + + + + + + (schedule6)Additional Input VAT @ 1% + (schedule6)Additional Input VAT @ 1% + sale + percent + 1 + 15 + + + + + + (schedule6)Input VAT @ 12.5% + (schedule6)Input VAT @ 12.5% + sale + percent + 12.5 + 10 + + + + + + (schedule6)Additional Input VAT @ 2.5% + (schedule6)Additional Input VAT @ 2.5% + sale + percent + 2.5 + 15 + + + + + + (schedule6)Input VAT @ 8% + (schedule6)Input VAT @ 8% + sale + percent + 8 + 10 + + + + + + (schedule6)Input VAT @ 10% + (schedule6)Input VAT @ 10% + sale + percent + 10 + 10 + + + + + + (schedule6)Input Tax 12% + (schedule6)Input Tax 12% + none + percent + 12 + 1 + + + + + + (schedule6)Input Education Cess @ 2% On Excise Duty + (schedule6)Input Education Cess @ 2% On Excise Duty + none + percent + 0.24 + 2 + + + + + + (schedule6)Input Higher Education Cess @ 1% On Excise Duty + (schedule6)Input Higher Education Cess @ 1% On Excise Duty + none + percent + 0.1224 + 3 + + + + + + (schedule6)Input Excise Duty @ 12.36% + (schedule6)Input Excise Duty @ 12.36% + sale + group + 0 + 1 + + + + + + + (schedule6)Input Service Tax 12% + (schedule6)Input Service Tax 12% + none + percent + 12 + 13 + + + + + + (schedule6)Input Education Cess @ 2% On Service Tax + (schedule6)Input Education Cess @ 2% On Service Tax + none + percent + 0.24 + 14 + + + + + + (schedule6)Input Higher Education Cess @ 1% On Service Tax + (schedule6)Input Higher Education Cess @ 1% On Service Tax + none + percent + 0.1224 + 15 + + + + + + (schedule6)Input Service Tax @ 12.36% + (schedule6)Input Service Tax @ 12.36% + sale + group + 12 + True + 8 + + + + + + + (schedule6)Input VAT @ 4% + (schedule6)Input VAT @ 4% + sale + percent + 4 + 10 + + + + + + + + (schedule6)Output Purchase Tax @ 15% + (schedule6)Output Purchase Tax @ 15% + purchase + percent + 15 + 10 + + + + + + (schedule6)Output Purchase Tax @ 12% + (schedule6)Output Purchase Tax @ 12% + purchase + percent + 12 + 10 + + + + + + (schedule6)Output Purchase Tax @ 4% + (schedule6)Output Purchase Tax @ 4% + purchase + percent + 4 + 10 + + + + + + (schedule6)Additional Output VAT @ 1% + (schedule6)Additional Output VAT @ 1% + purchase + percent + 1 + 15 + + + + + + (schedule6)Output VAT @ 12.5% + (schedule6)Output VAT @ 12.5% + purchase + percent + 12.5 + 10 + + + + + + (schedule6)Additional Output VAT @ 2.5% + (schedule6)Additional Output VAT @ 2.5% + purchase + percent + 2.5 + 15 + + + + + + (schedule6)Output VAT @ 8% + (schedule6)Output VAT @ 8% + purchase + percent + 8 + 10 + + + + + + (schedule6)Output VAT @ 10% + (schedule6)Output VAT @ 10% + purchase + percent + 10 + 10 + + + + + + (schedule6)Output Tax 12% + (schedule6)Output Tax 12% + none + percent + 12 + 2 + + + + + + (schedule6)Output Education Cess @ 2% Excise Duty + (schedule6)Output Education Cess @ 2% Excise Duty + none + percent + 0.24 + 3 + + + + + + (schedule6)Output Higher Education Cess @ 1% Excise Duty + (schedule6)Output Higher Education Cess @ 1% Excise Duty + none + percent + 0.1224 + 4 + + + + + + (schedule6)Output Excise Duty @ 12.36% + (schedule6)Output Excise Duty @ 12.36% + purchase + group + 12 + True + 1 + + + + + + + (schedule6)Output Service Tax 12% + (schedule6)Output Service Tax 12% + none + percent + 12 + 9 + + + + + + (schedule6)Output Education Cess @ 2% On Service Tax + (schedule6)Output Education Cess @ 2% On Service Tax + none + percent + 0.24 + 10 + + + + + + (schedule6)Output Higher Education Cess @ 1% On Service Tax + (schedule6)Output Higher Education Cess @ 1% On Service Tax + none + percent + 0.1224 + 11 + + + + + + (schedule6)Output Service Tax @ 12.36% + (schedule6)Output Service Tax @ 12.36% + purchase + True + group + 12 + 8 + + + + + + + (schedule6)Output VAT @ 4% + (schedule6)Output VAT @ 4% + purchase + percent + 4 + 10 + + + + + + + diff --git a/addons/l10n_in_schedule6/static/description/icon.png b/addons/l10n_in_schedule6/static/description/icon.png new file mode 100644 index 00000000000..ddaf38f8b6d Binary files /dev/null and b/addons/l10n_in_schedule6/static/description/icon.png differ diff --git a/addons/mass_mailing/models/mail_mail.py b/addons/mass_mailing/models/mail_mail.py index e9edd3a9824..29837c02040 100644 --- a/addons/mass_mailing/models/mail_mail.py +++ b/addons/mass_mailing/models/mail_mail.py @@ -9,8 +9,7 @@ from openerp import tools from openerp import SUPERUSER_ID from openerp.osv import osv, fields - -URL_REGEX = r'(\bhref=[\'"]([^\'"]+)[\'"])' +from openerp.addons.link_tracker.models.link_tracker import URL_REGEX class MailMail(osv.Model): diff --git a/addons/mrp_repair/mrp_repair.py b/addons/mrp_repair/mrp_repair.py index efbf4593a56..28377fe2822 100644 --- a/addons/mrp_repair/mrp_repair.py +++ b/addons/mrp_repair/mrp_repair.py @@ -500,11 +500,11 @@ class ProductChangeMixin(object): if product: 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: - 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['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 if not pricelist: warning = { diff --git a/addons/mrp_repair/mrp_repair_report.xml b/addons/mrp_repair/mrp_repair_report.xml index 3fd607ead90..54da5095a99 100644 --- a/addons/mrp_repair/mrp_repair_report.xml +++ b/addons/mrp_repair/mrp_repair_report.xml @@ -5,7 +5,7 @@ string="Quotation / Order" id="action_report_mrp_repair_order" model="mrp.repair" - name="mrp_repair.report_mrprepairorder" + name="mrp_repair.report_mrprepairorder2" file="mrp_repair.report_mrprepairorder" report_type="qweb-pdf" /> diff --git a/addons/mrp_repair/views/report_mrprepairorder.xml b/addons/mrp_repair/views/report_mrprepairorder.xml index 0e66cba9ebc..2a1c9baa9e7 100644 --- a/addons/mrp_repair/views/report_mrprepairorder.xml +++ b/addons/mrp_repair/views/report_mrprepairorder.xml @@ -2,9 +2,9 @@ + + diff --git a/addons/point_of_sale/models/pos_order.py b/addons/point_of_sale/models/pos_order.py index 54f14046e17..6db76a52243 100644 --- a/addons/point_of_sale/models/pos_order.py +++ b/addons/point_of_sale/models/pos_order.py @@ -598,8 +598,8 @@ class PosOrder(models.Model): # 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: - moves.action_confirm() - moves.force_assign() + moves.action_assign() + moves.filtered(lambda m: m.state in ['confirmed', 'waiting']).force_assign() moves.filtered(lambda m: m.product_id.tracking == 'none').action_done() return True @@ -607,7 +607,7 @@ class PosOrder(models.Model): def _force_picking_done(self, picking): """Force picking in order to be set as done.""" for order in self: - picking.action_confirm() + picking.action_assign() picking.force_assign() # Mark pack operations as done for pack in picking.pack_operation_ids.filtered(lambda x: x.product_id.tracking == 'none'): diff --git a/addons/point_of_sale/static/src/js/models.js b/addons/point_of_sale/static/src/js/models.js index a645c265d65..349fef31031 100644 --- a/addons/point_of_sale/static/src/js/models.js +++ b/addons/point_of_sale/static/src/js/models.js @@ -1274,7 +1274,9 @@ exports.Orderline = Backbone.Model.extend({ this.trigger('change',this); }, 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(){ if (this.pos.config.iface_tax_included) { diff --git a/addons/point_of_sale/static/src/js/screens.js b/addons/point_of_sale/static/src/js/screens.js index b28e5642121..30af41aba5c 100644 --- a/addons/point_of_sale/static/src/js/screens.js +++ b/addons/point_of_sale/static/src/js/screens.js @@ -1329,6 +1329,16 @@ var ClientListScreenWidget = ScreenWidget.extend({ contents.append($(QWeb.render('ClientDetailsEdit',{widget:this,partner:partner}))); 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){ self.load_image_file(event.target.files[0],function(res){ if (res) { diff --git a/addons/purchase/purchase_view.xml b/addons/purchase/purchase_view.xml index 1ab644cf73c..6a962c80b05 100644 --- a/addons/purchase/purchase_view.xml +++ b/addons/purchase/purchase_view.xml @@ -512,7 +512,10 @@ - + diff --git a/addons/report/models/report.py b/addons/report/models/report.py index f3508872202..88ee8c55351 100644 --- a/addons/report/models/report.py +++ b/addons/report/models/report.py @@ -308,7 +308,6 @@ class Report(osv.Model): 'report_name': report.report_name, 'report_type': report.report_type, 'report_file': report.report_file, - 'context': context, } @api.v8 diff --git a/addons/stock/models/procurement.py b/addons/stock/models/procurement.py index ec37425a819..47fdcbcde6a 100644 --- a/addons/stock/models/procurement.py +++ b/addons/stock/models/procurement.py @@ -280,23 +280,26 @@ class ProcurementOrder(models.Model): @api.model def _procure_orderpoint_confirm(self, use_new_cursor=False, company_id=False): """ 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. """ - 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_noprefetch = OrderPoint.with_context(prefetch_fields=False).search( 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: - 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:] # Calculate groups that can be executed together @@ -343,7 +346,7 @@ class ProcurementOrder(models.Model): except OperationalError: if use_new_cursor: - orderpoints_noprefetch += orderpoint.id + orderpoints_noprefetch += [orderpoint.id] cr.rollback() continue else: @@ -367,8 +370,6 @@ class ProcurementOrder(models.Model): if use_new_cursor: cr.commit() + cr.close() - if use_new_cursor: - cr.commit() - cr.close() return {} diff --git a/addons/stock/report/report_deliveryslip.xml b/addons/stock/report/report_deliveryslip.xml index d3a8fb54464..1d180adca70 100644 --- a/addons/stock/report/report_deliveryslip.xml +++ b/addons/stock/report/report_deliveryslip.xml @@ -11,10 +11,13 @@
Customer Address:
-
+
+
+ t-field-options='{"widget": "contact", "fields": ["address", "name", "phone", "fax"], "no_marker": true}'/> +

diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index c209cdfdff9..5ff1cae6e8e 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -636,6 +636,8 @@ class Database(http.Controller): @http.route('/web/database/create', type='http', auth="none", methods=['POST'], csrf=False) def create(self, master_pwd, name, lang, password, **post): 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 = 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) @@ -648,6 +650,8 @@ class Database(http.Controller): @http.route('/web/database/duplicate', type='http', auth="none", methods=['POST'], csrf=False) def duplicate(self, master_pwd, name, new_name): 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) return http.local_redirect('/web/database/manager') except Exception, e: diff --git a/addons/web/views/database_manager.html b/addons/web/views/database_manager.html index 7cef4678e8d..ff78eddd6e3 100644 --- a/addons/web/views/database_manager.html +++ b/addons/web/views/database_manager.html @@ -61,7 +61,7 @@
- +
@@ -208,7 +208,7 @@
- +
@@ -281,7 +281,7 @@
- +
- 1 and column and column._type in ['many2many', 'one2many']: 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 = ('id', 'in', table_ids) + leaf.leaf = (path[0], 'in', right_ids) push(leaf) elif not column: @@ -1012,15 +1011,16 @@ class expression(object): rel_table, rel_id1, rel_id2 = column._sql_names(model) 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) dom = HIERARCHY_FUNCS[operator]('id', ids2, comodel, 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: call_null_m2m = True if right is not False: @@ -1046,8 +1046,11 @@ class expression(object): operator = 'in' # operator changed because ids are directly related to main object else: call_null_m2m = False - m2m_op = 'not in' if operator in NEGATIVE_TERM_OPERATORS else 'in' - push(create_substitution_leaf(leaf, ('id', m2m_op, select_from_where(cr, rel_id1, rel_table, rel_id2, res_ids, operator) or [0]), model)) + subop = 'not inselect' if operator in NEGATIVE_TERM_OPERATORS else 'inselect' + 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: m2m_op = 'in' if operator in NEGATIVE_TERM_OPERATORS else 'not in'