diff options
| author | Rohan Patel <rop@odoo.com> | 2016-05-30 14:15:27 +0530 |
|---|---|---|
| committer | Yannick Tivisse <yti@odoo.com> | 2016-07-07 15:27:25 +0200 |
| commit | 320ff7250b3dfa7f1efb924c9a88bd1f5d1f7f53 (patch) | |
| tree | 677c117db3a6e8e61ed719dfdd18e8999b6a823e /addons | |
| parent | c85732dd576cb25c921b127dde7ae671b950edbb (diff) | |
[MIG] l10n_be_intrastat : Migrated to new API.
Diffstat (limited to 'addons')
12 files changed, 154 insertions, 228 deletions
diff --git a/addons/l10n_be_intrastat/__init__.py b/addons/l10n_be_intrastat/__init__.py index 129c5113061..11529f98733 100644 --- a/addons/l10n_be_intrastat/__init__.py +++ b/addons/l10n_be_intrastat/__init__.py @@ -1,6 +1,5 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. - import models import wizard diff --git a/addons/l10n_be_intrastat/__openerp__.py b/addons/l10n_be_intrastat/__openerp__.py index 5196c9e53ad..2cf0fa6f087 100644 --- a/addons/l10n_be_intrastat/__openerp__.py +++ b/addons/l10n_be_intrastat/__openerp__.py @@ -1,9 +1,8 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. { 'name': 'Belgian Intrastat Declaration', - 'version': '1.0', 'category': 'Localization', 'description': """ Generates Intrastat XML report for declaration @@ -20,5 +19,4 @@ Based on invoices. 'views/l10n_be_intrastat_view.xml', 'wizard/l10n_be_intrastat_declaration_view.xml', ], - 'installable': True, } diff --git a/addons/l10n_be_intrastat/data/l10n_be_intrastat_chart_data.xml b/addons/l10n_be_intrastat/data/l10n_be_intrastat_chart_data.xml index e016fdc07a4..5f55d7fc976 100644 --- a/addons/l10n_be_intrastat/data/l10n_be_intrastat_chart_data.xml +++ b/addons/l10n_be_intrastat/data/l10n_be_intrastat_chart_data.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<openerp> +<odoo> <data noupdate="1"> <record id="l10n_be_intrastat.intrastat_region_1" model="l10n_be_intrastat.region"> <field name="code">1</field> @@ -20,4 +20,4 @@ <field name="description">Includes 19 districts</field> </record> </data> -</openerp> +</odoo> diff --git a/addons/l10n_be_intrastat/data/l10n_be_intrastat_transaction_codes_data.xml b/addons/l10n_be_intrastat/data/l10n_be_intrastat_transaction_codes_data.xml index b44813a61dc..3909023eee0 100644 --- a/addons/l10n_be_intrastat/data/l10n_be_intrastat_transaction_codes_data.xml +++ b/addons/l10n_be_intrastat/data/l10n_be_intrastat_transaction_codes_data.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<openerp> +<odoo> <data noupdate="1"> <record id="l10n_be_intrastat.intrastat_transaction_1" model="l10n_be_intrastat.transaction"> <field name="code">1</field> @@ -38,4 +38,4 @@ <field name="description">Other transactions which cannot be classified under other codes</field> </record> </data> -</openerp> +</odoo> diff --git a/addons/l10n_be_intrastat/data/l10n_be_intrastat_transport_modes_data.xml b/addons/l10n_be_intrastat/data/l10n_be_intrastat_transport_modes_data.xml index 0b227625486..7011953c698 100644 --- a/addons/l10n_be_intrastat/data/l10n_be_intrastat_transport_modes_data.xml +++ b/addons/l10n_be_intrastat/data/l10n_be_intrastat_transport_modes_data.xml @@ -1,5 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<openerp> +<odoo> <data noupdate="1"> <record id="l10n_be_intrastat.intrastat_trmode_1" model="l10n_be_intrastat.transport_mode"> <field name="code">1</field> @@ -34,4 +34,4 @@ <field name="name">Own propulsion (imported or exported means of transport crossing the border under their own power, e.g. aircraft, lorries, boats, etc.)</field> </record> </data> -</openerp> +</odoo> diff --git a/addons/l10n_be_intrastat/models/__init__.py b/addons/l10n_be_intrastat/models/__init__.py index 192cd6b538b..cbf02bc724a 100644 --- a/addons/l10n_be_intrastat/models/__init__.py +++ b/addons/l10n_be_intrastat/models/__init__.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. import l10n_be_intrastat diff --git a/addons/l10n_be_intrastat/models/l10n_be_intrastat.py b/addons/l10n_be_intrastat/models/l10n_be_intrastat.py index b4974e799ec..beff3b4f698 100644 --- a/addons/l10n_be_intrastat/models/l10n_be_intrastat.py +++ b/addons/l10n_be_intrastat/models/l10n_be_intrastat.py @@ -1,144 +1,139 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. -from openerp import fields, models, api +from odoo import api, fields, models -class account_invoice_line(models.Model): +class AccountInvoiceLine(models.Model): _inherit = "account.invoice.line" - intrastat_transaction_id = fields.Many2one('l10n_be_intrastat.transaction', 'Intrastat Transaction Type', + intrastat_transaction_id = fields.Many2one('l10n_be_intrastat.transaction', string='Intrastat Transaction Type', help="Intrastat nature of transaction") -class account_invoice(models.Model): +class AccountInvoice(models.Model): _inherit = "account.invoice" - incoterm_id = fields.Many2one('stock.incoterms', 'Incoterm', + incoterm_id = fields.Many2one('stock.incoterms', string='Incoterm', help="International Commercial Terms are a series of predefined commercial terms " "used in international transactions.") - transport_mode_id = fields.Many2one('l10n_be_intrastat.transport_mode', 'Intrastat Transport Mode') - intrastat_country_id = fields.Many2one('res.country', 'Intrastat Country', + transport_mode_id = fields.Many2one('l10n_be_intrastat.transport_mode', string='Intrastat Transport Mode') + intrastat_country_id = fields.Many2one('res.country', string='Intrastat Country', help='Intrastat country, delivery for sales, origin for purchases', domain=[('intrastat', '=', True)]) -class intrastat_region(models.Model): +class IntrastatRegion(models.Model): _name = 'l10n_be_intrastat.region' - code = fields.Char('Code', required=True) - country_id = fields.Many2one('res.country', 'Country') - name = fields.Char('Name', translate=True) - description = fields.Char('Description') + code = fields.Char(required=True) + country_id = fields.Many2one('res.country', string='Country') + name = fields.Char(translate=True) + description = fields.Char() _sql_constraints = [ ('l10n_be_intrastat_regioncodeunique', 'UNIQUE (code)', 'Code must be unique.'), ] -class intrastat_transaction(models.Model): +class IntrastatTransaction(models.Model): _name = 'l10n_be_intrastat.transaction' _rec_name = 'code' - code = fields.Char('Code', required=True, readonly=True) - description = fields.Text('Description', readonly=True) + code = fields.Char(required=True, readonly=True) + description = fields.Text(readonly=True) _sql_constraints = [ ('l10n_be_intrastat_trcodeunique', 'UNIQUE (code)', 'Code must be unique.'), ] -class intrastat_transport_mode(models.Model): +class IntrastatTransportMode(models.Model): _name = 'l10n_be_intrastat.transport_mode' - code = fields.Char('Code', required=True, readonly=True) - name = fields.Char('Description', readonly=True) + code = fields.Char(required=True, readonly=True) + name = fields.Char(string='Description', readonly=True) _sql_constraints = [ ('l10n_be_intrastat_trmodecodeunique', 'UNIQUE (code)', 'Code must be unique.'), ] -class product_category(models.Model): - _name = "product.category" +class ProductCategory(models.Model): _inherit = "product.category" - intrastat_id = fields.Many2one('report.intrastat.code', 'Intrastat Code') + intrastat_id = fields.Many2one('report.intrastat.code', string='Intrastat Code') @api.multi def get_intrastat_recursively(self): """ Recursively search in categories to find an intrastat code id """ + res = None if self.intrastat_id: res = self.intrastat_id.id elif self.parent_id: res = self.parent_id.get_intrastat_recursively() - else: - res = None return res -class product_product(models.Model): - _name = "product.product" +class ProductProduct(models.Model): _inherit = "product.product" @api.multi def get_intrastat_recursively(self): """ Recursively search in categories to find an intrastat code id """ + res = None if self.intrastat_id: res = self.intrastat_id.id elif self.categ_id: res = self.categ_id.get_intrastat_recursively() - else: - res = None return res -class purchase_order(models.Model): +class PurchaseOrder(models.Model): _inherit = "purchase.order" def _prepare_invoice(self): """ copy incoterm from purchase order to invoice """ - invoice = super(purchase_order, self)._prepare_invoice() + invoice = super(PurchaseOrder, self)._prepare_invoice() if self.incoterm_id: invoice['incoterm_id'] = self.incoterm_id.id #Try to determine products origin if self.partner_id.country_id: #It comes from vendor invoice['intrastat_country_id'] = self.partner_id.country_id.id - return invoice -class report_intrastat_code(models.Model): +class ReportIntrastatCode(models.Model): _inherit = "report.intrastat.code" - description = fields.Text('Description', translate=True) + description = fields.Text(string='Description', translate=True) -class res_company(models.Model): +class ResCompany(models.Model): _inherit = "res.company" - region_id = fields.Many2one('l10n_be_intrastat.region', 'Intrastat region') + region_id = fields.Many2one('l10n_be_intrastat.region', string='Intrastat region') transport_mode_id = fields.Many2one('l10n_be_intrastat.transport_mode', - 'Default transport mode') - incoterm_id = fields.Many2one('stock.incoterms', 'Default incoterm for Intrastat', + string='Default transport mode') + incoterm_id = fields.Many2one('stock.incoterms', string='Default incoterm for Intrastat', help="International Commercial Terms are a series of " "predefined commercial terms used in international " "transactions.") -class sale_order(models.Model): +class SaleOrder(models.Model): _inherit = "sale.order" def _prepare_invoice(self): """ copy incoterm from sale order to invoice """ - invoice = super(sale_order, self)._prepare_invoice() + invoice = super(SaleOrder, self)._prepare_invoice() if self.incoterm: invoice['incoterm_id'] = self.incoterm.id # Guess products destination @@ -151,14 +146,14 @@ class sale_order(models.Model): return invoice -class stock_warehouse(models.Model): +class StockWarehouse(models.Model): _inherit = "stock.warehouse" - region_id = fields.Many2one('l10n_be_intrastat.region', 'Intrastat region') + region_id = fields.Many2one('l10n_be_intrastat.region', string='Intrastat region') def get_regionid_from_locationid(self, location): location_ids = location.search([('parent_left', '<=', location.parent_left), ('parent_right', '>=', location.parent_right)]) - warehouses = self.search([('lot_stock_id', 'in', location_ids.ids), ('region_id', '!=', False)]) - if warehouses and warehouses[0]: - return warehouses[0].region_id.id + warehouses = self.search([('lot_stock_id', 'in', location_ids.ids), ('region_id', '!=', False)], limit=1) + if warehouses: + return warehouses.region_id.id return None diff --git a/addons/l10n_be_intrastat/security/l10n_be_intrastat_security.xml b/addons/l10n_be_intrastat/security/l10n_be_intrastat_security.xml index 61909b359d8..3394a1545e7 100644 --- a/addons/l10n_be_intrastat/security/l10n_be_intrastat_security.xml +++ b/addons/l10n_be_intrastat/security/l10n_be_intrastat_security.xml @@ -1,8 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> +<odoo> <record id="intrastat_extended" model="res.groups"> <field name="name">Intrastat extended</field> </record> - </data> -</openerp> +</odoo> diff --git a/addons/l10n_be_intrastat/views/l10n_be_intrastat_view.xml b/addons/l10n_be_intrastat/views/l10n_be_intrastat_view.xml index 437e7ec81ca..e61c859f098 100644 --- a/addons/l10n_be_intrastat/views/l10n_be_intrastat_view.xml +++ b/addons/l10n_be_intrastat/views/l10n_be_intrastat_view.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> +<odoo> <!-- Customer Invoice Form --> <record id="l10n_be_intrastat_xml_decl_cust_invoice_view" model="ir.ui.view"> <field name="name">l10n_be_intrastat_xml.custinvoice_form</field> @@ -140,6 +139,4 @@ </field> </record> - - </data> -</openerp> +</odoo> diff --git a/addons/l10n_be_intrastat/wizard/__init__.py b/addons/l10n_be_intrastat/wizard/__init__.py index d3e72540ba5..059fca43e9d 100644 --- a/addons/l10n_be_intrastat/wizard/__init__.py +++ b/addons/l10n_be_intrastat/wizard/__init__.py @@ -1,4 +1,4 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. import xml_decl diff --git a/addons/l10n_be_intrastat/wizard/l10n_be_intrastat_declaration_view.xml b/addons/l10n_be_intrastat/wizard/l10n_be_intrastat_declaration_view.xml index f79ee2401ff..ad3e1dfe39e 100644 --- a/addons/l10n_be_intrastat/wizard/l10n_be_intrastat_declaration_view.xml +++ b/addons/l10n_be_intrastat/wizard/l10n_be_intrastat_declaration_view.xml @@ -1,7 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> -<openerp> - <data> - +<odoo> <record id="view_intrastat_declaration_xml" model="ir.ui.view"> <field name="name">Intrastat XML Declaration</field> <field name="model">l10n_be_intrastat_xml.xml_decl</field> @@ -54,6 +52,4 @@ action="action_intrastat_xml_declaration" id="l10n_be_intrastat_xml_declaration" groups="account.group_account_manager"/> - </data> - -</openerp> +</odoo> diff --git a/addons/l10n_be_intrastat/wizard/xml_decl.py b/addons/l10n_be_intrastat/wizard/xml_decl.py index 2771e8b63cd..ae8bff402e1 100644 --- a/addons/l10n_be_intrastat/wizard/xml_decl.py +++ b/addons/l10n_be_intrastat/wizard/xml_decl.py @@ -1,97 +1,68 @@ -# -*- encoding: utf-8 -*- +# -*- coding: utf-8 -*- # Part of Odoo. See LICENSE file for full copyright and licensing details. import base64 import xml.etree.ElementTree as ET from collections import namedtuple -from datetime import datetime -from openerp import exceptions, SUPERUSER_ID, tools -from openerp.osv import fields, osv -from openerp.tools.translate import _ +from odoo import api, exceptions, fields, models, _ INTRASTAT_XMLNS = 'http://www.onegate.eu/2010-01-01' -class xml_decl(osv.TransientModel): + +class XmlDeclaration(models.TransientModel): """ Intrastat XML Declaration """ _name = "l10n_be_intrastat_xml.xml_decl" _description = 'Intrastat XML Declaration' - def _get_company_id(self, cr, uid, context=None): - return self.pool.get('res.users').browse(cr, uid, uid, context=context).company_id.id - - def _get_def_monthyear(self, cr, uid, context=None): - td = datetime.strptime(fields.date.context_today(self, cr, uid, context=context), - tools.DEFAULT_SERVER_DATE_FORMAT).date() - return td.strftime('%Y'), td.strftime('%m') - - def _get_def_month(self, cr, uid, context=None): - return self._get_def_monthyear(cr, uid, context=context)[1] - - def _get_def_year(self, cr, uid, context=None): - return self._get_def_monthyear(cr, uid, context=context)[0] + def _default_get_month(self): + return fields.Date.from_string(fields.Date.context_today(self)).strftime('%m') - _columns = { - 'name': fields.char('File Name'), - 'month': fields.selection([('01','January'), ('02','February'), ('03','March'), - ('04','April'), ('05','May'), ('06','June'), ('07','July'), - ('08','August'), ('09','September'), ('10','October'), - ('11','November'), ('12','December')], 'Month', required=True), - 'year': fields.char('Year', size=4, required=True), - 'company_id': fields.many2one('res.company', 'Company', required=True), - 'arrivals': fields.selection([('be-exempt', 'Exempt'), - ('be-standard', 'Standard'), - ('be-extended', 'Extended')], - 'Arrivals', required=True), - 'dispatches': fields.selection([('be-exempt', 'Exempt'), - ('be-standard', 'Standard'), - ('be-extended', 'Extended')], - 'Dispatches', required=True), - 'file_save': fields.binary('Intrastat Report File', readonly=True), - 'state': fields.selection([('draft', 'Draft'), ('download', 'Download')], string="State"), - } + def _default_get_year(self): + return fields.Date.from_string(fields.Date.context_today(self)).strftime('%Y') - _defaults = { - 'arrivals': 'be-standard', - 'dispatches': 'be-standard', - 'name': 'intrastat.xml', - 'company_id': _get_company_id, - 'month': _get_def_month, - 'year': _get_def_year, - 'state': 'draft', - } + name = fields.Char(string='File Name', default='intrastat.xml') + month = fields.Selection([('01', 'January'), ('02', 'February'), ('03', 'March'), + ('04', 'April'), ('05', 'May'), ('06', 'June'), ('07', 'July'), + ('08', 'August'), ('09', 'September'), ('10', 'October'), + ('11', 'November'), ('12', 'December')], string='Month', required=True, default=_default_get_month) + year = fields.Char(size=4, required=True, default=_default_get_year) + company_id = fields.Many2one('res.company', string='Company', required=True, default=lambda self: self.env.user.company_id) + arrivals = fields.Selection([('be-exempt', 'Exempt'), + ('be-standard', 'Standard'), + ('be-extended', 'Extended')], + required=True, default='be-standard') + dispatches = fields.Selection([('be-exempt', 'Exempt'), + ('be-standard', 'Standard'), + ('be-extended', 'Extended')], + required=True, default='be-standard') + file_save = fields.Binary(string='Intrastat Report File', readonly=True) + state = fields.Selection([('draft', 'Draft'), ('download', 'Download')], default='draft') - def _company_warning(self, cr, uid, translated_msg, context=None): + @api.model + def _company_warning(self, translated_msg): """ Raise a error with custom message, asking user to configure company settings """ - xmlid_mod = self.pool['ir.model.data'] - action_id = xmlid_mod.xmlid_to_res_id(cr, uid, 'base.action_res_company_form') raise exceptions.RedirectWarning( - translated_msg, action_id, _('Go to company configuration screen')) + translated_msg, self.env.ref('base.action_res_company_form').id, _('Go to company configuration screen')) - def create_xml(self, cr, uid, ids, context=None): + @api.multi + def create_xml(self): """Creates xml that is to be exported and sent to estate for partner vat intra. :return: Value for next action. :rtype: dict """ - decl_datas = self.browse(cr, uid, ids[0]) - company = decl_datas.company_id + self.ensure_one() + company = self.company_id if not (company.partner_id and company.partner_id.country_id and company.partner_id.country_id.id): - self._company_warning( - cr, uid, - _('The country of your company is not set, ' - 'please make sure to configure it first.'), - context=context) - kbo = company.company_registry - if not kbo: - self._company_warning( - cr, uid, - _('The registry number of your company is not set, ' - 'please make sure to configure it first.'), - context=context) - if len(decl_datas.year) != 4: + self._company_warning(_('The country of your company is not set, ' + 'please make sure to configure it first.')) + if not company.company_registry: + self._company_warning(_('The registry number of your company is not set, ' + 'please make sure to configure it first.')) + if len(self.year) != 4: raise exceptions.Warning(_('Year must be 4 digits number (YYYY)')) #Create root declaration @@ -101,51 +72,40 @@ class xml_decl(osv.TransientModel): #Add Administration elements admin = ET.SubElement(decl, 'Administration') fromtag = ET.SubElement(admin, 'From') - fromtag.text = kbo + fromtag.text = company.company_registry fromtag.set('declarerType', 'KBO') ET.SubElement(admin, 'To').text = "NBB" ET.SubElement(admin, 'Domain').text = "SXX" - if decl_datas.arrivals == 'be-standard': - decl.append(self._get_lines(cr, SUPERUSER_ID, ids, decl_datas, company, - dispatchmode=False, extendedmode=False, context=context)) - elif decl_datas.arrivals == 'be-extended': - decl.append(self._get_lines(cr, SUPERUSER_ID, ids, decl_datas, company, - dispatchmode=False, extendedmode=True, context=context)) - if decl_datas.dispatches == 'be-standard': - decl.append(self._get_lines(cr, SUPERUSER_ID, ids, decl_datas, company, - dispatchmode=True, extendedmode=False, context=context)) - elif decl_datas.dispatches == 'be-extended': - decl.append(self._get_lines(cr, SUPERUSER_ID, ids, decl_datas, company, - dispatchmode=True, extendedmode=True, context=context)) + if self.arrivals == 'be-standard': + decl.append(self.sudo()._get_lines(dispatchmode=False, extendedmode=False)) + elif self.arrivals == 'be-extended': + decl.append(self.sudo()._get_lines(dispatchmode=False, extendedmode=True)) + if self.dispatches == 'be-standard': + decl.append(self.sudo()._get_lines(dispatchmode=True, extendedmode=False)) + elif self.dispatches == 'be-extended': + decl.append(self.sudo()._get_lines(dispatchmode=True, extendedmode=True)) #Get xml string with declaration data_file = ET.tostring(decl, encoding='UTF-8', method='xml') #change state of the wizard - self.write(cr, uid, ids, - {'name': 'intrastat_%s%s.xml' % (decl_datas.year, decl_datas.month), + self.write({'name': 'intrastat_%s%s.xml' % (self.year, self.month), 'file_save': base64.encodestring(data_file), - 'state': 'download'}, - context=context) + 'state': 'download'}) return { 'name': _('Save'), - 'context': context, 'view_type': 'form', 'view_mode': 'form', 'res_model': 'l10n_be_intrastat_xml.xml_decl', 'type': 'ir.actions.act_window', 'target': 'new', - 'res_id': ids[0], + 'res_id': self.id, } - def _get_lines(self, cr, uid, ids, decl_datas, company, dispatchmode=False, - extendedmode=False, context=None): - intrastatcode_mod = self.pool['report.intrastat.code'] - invoiceline_mod = self.pool['account.invoice.line'] - product_mod = self.pool['product.product'] - region_mod = self.pool['l10n_be_intrastat.region'] - warehouse_mod = self.pool['stock.warehouse'].browse(cr, uid, [], context=context) - location_mod = warehouse_mod.env['stock.location'] + @api.multi + def _get_lines(self, dispatchmode=False, extendedmode=False): + company = self.company_id + IntrastatRegion = self.env['l10n_be_intrastat.region'] if dispatchmode: mode1 = 'out_invoice' @@ -161,7 +121,7 @@ class xml_decl(osv.TransientModel): decl.set('code', 'EX%sS' % declcode) else: decl.set('code', 'EX%sE' % declcode) - decl.set('date', '%s-%s' % (decl_datas.year, decl_datas.month)) + decl.set('date', '%s-%s' % (self.year, self.month)) datas = ET.SubElement(decl, 'Data') if not extendedmode: datas.set('form', 'EXF%sS' % declcode) @@ -173,37 +133,37 @@ class xml_decl(osv.TransientModel): 'EXGO', 'EXTPC', 'EXDELTRM']) entries = {} - sqlreq = """ - select + query = """ + SELECT inv_line.id - from + FROM account_invoice_line inv_line - join account_invoice inv on inv_line.invoice_id=inv.id - left join res_country on res_country.id = inv.intrastat_country_id - left join res_partner on res_partner.id = inv.partner_id - left join res_country countrypartner on countrypartner.id = res_partner.country_id - join product_product on inv_line.product_id=product_product.id - join product_template on product_product.product_tmpl_id=product_template.id - where - inv.state in ('open','paid') - and inv.company_id=%s - and not product_template.type='service' - and (res_country.intrastat=true or (inv.intrastat_country_id is null - and countrypartner.intrastat=true)) - and ((res_country.code is not null and not res_country.code=%s) - or (res_country.code is null and countrypartner.code is not null - and not countrypartner.code=%s)) - and inv.type in (%s, %s) - and to_char(inv.date_invoice, 'YYYY')=%s - and to_char(inv.date_invoice, 'MM')=%s + JOIN account_invoice inv ON inv_line.invoice_id=inv.id + LEFT JOIN res_country ON res_country.id = inv.intrastat_country_id + LEFT JOIN res_partner ON res_partner.id = inv.partner_id + LEFT JOIN res_country countrypartner ON countrypartner.id = res_partner.country_id + JOIN product_product ON inv_line.product_id=product_product.id + JOIN product_template ON product_product.product_tmpl_id=product_template.id + WHERE + inv.state IN ('open','paid') + AND inv.company_id=%s + AND not product_template.type='service' + AND (res_country.intrastat=true OR (inv.intrastat_country_id is NULL + AND countrypartner.intrastat=true)) + AND ((res_country.code IS NOT NULL AND not res_country.code=%s) + OR (res_country.code is NULL AND countrypartner.code IS NOT NULL + AND not countrypartner.code=%s)) + AND inv.type IN (%s, %s) + AND to_char(inv.date_invoice, 'YYYY')=%s + AND to_char(inv.date_invoice, 'MM')=%s """ - cr.execute(sqlreq, (company.id, company.partner_id.country_id.code, + self.env.cr.execute(query, (company.id, company.partner_id.country_id.code, company.partner_id.country_id.code, mode1, mode2, - decl_datas.year, decl_datas.month)) - lines = cr.fetchall() + self.year, self.month)) + lines = self.env.cr.fetchall() invoicelines_ids = [rec[0] for rec in lines] - invoicelines = invoiceline_mod.browse(cr, uid, invoicelines_ids, context=context) + invoicelines = self.env['account.invoice.line'].browse(invoicelines_ids) for inv_line in invoicelines: #Check type of transaction @@ -227,45 +187,34 @@ class xml_decl(osv.TransientModel): exreg = None if inv_line.invoice_id.type in ('in_invoice', 'in_refund'): #comes from purchase - POL = self.pool['purchase.order.line'] - poline_ids = POL.search( - cr, uid, [('invoice_lines', 'in', inv_line.id)], context=context) - if poline_ids: - purchaseorder = POL.browse(cr, uid, poline_ids[0], context=context).order_id - location = location_mod.browse(purchaseorder._get_destination_location()) - region_id = warehouse_mod.get_regionid_from_locationid(location) + po_lines = self.env['purchase.order.line'].search([('invoice_lines', 'in', inv_line.id)], limit=1) + if po_lines: + location = self.env['stock.location'].browse(po_lines.order_id._get_destination_location()) + region_id = self.env['stock.warehouse'].get_regionid_from_locationid(location) if region_id: - exreg = region_mod.browse(cr, uid, region_id).code + exreg = IntrastatRegion.browse(region_id).code elif inv_line.invoice_id.type in ('out_invoice', 'out_refund'): #comes from sales - soline_ids = self.pool['sale.order.line'].search( - cr, uid, [('invoice_lines', 'in', inv_line.id)], context=context) - if soline_ids: - saleorder = self.pool['sale.order.line'].browse( - cr, uid, soline_ids[0], context=context).order_id + so_lines = self.env['sale.order.line'].search([('invoice_lines', 'in', inv_line.id)], limit=1) + if so_lines: + saleorder = so_lines.order_id if saleorder and saleorder.warehouse_id and saleorder.warehouse_id.region_id: - exreg = region_mod.browse( - cr, uid, saleorder.warehouse_id.region_id.id, context=context).code + exreg = IntrastatRegion.browse(saleorder.warehouse_id.region_id.id).code if not exreg: if company.region_id: exreg = company.region_id.code else: - self._company_warning( - cr, uid, - _('The Intrastat Region of the selected company is not set, ' - 'please make sure to configure it first.'), - context=context) + self._company_warning(_('The Intrastat Region of the selected company is not set, ' + 'please make sure to configure it first.')) #Check commodity codes - intrastat_id = product_mod.get_intrastat_recursively( - cr, uid, inv_line.product_id.id, context=context) + intrastat_id = inv_line.product_id.get_intrastat_recursively() if intrastat_id: - exgo = intrastatcode_mod.browse(cr, uid, intrastat_id, context=context).name + exgo = self.env['report.intrastat.code'].browse(intrastat_id).name else: raise exceptions.Warning( - _('Product "%s" has no intrastat code, please configure it') % - inv_line.product_id.display_name) + _('Product "%s" has no intrastat code, please configure it') % inv_line.product_id.display_name) #In extended mode, 2 more fields required if extendedmode: @@ -275,11 +224,8 @@ class xml_decl(osv.TransientModel): elif company.transport_mode_id: extpc = company.transport_mode_id.code else: - self._company_warning( - cr, uid, - _('The default Intrastat transport mode of your company ' - 'is not set, please make sure to configure it first.'), - context=context) + self._company_warning(_('The default Intrastat transport mode of your company ' + 'is not set, please make sure to configure it first.')) #Check incoterm if inv_line.invoice_id.incoterm_id: @@ -287,11 +233,8 @@ class xml_decl(osv.TransientModel): elif company.incoterm_id: exdeltrm = company.incoterm_id.code else: - self._company_warning( - cr, uid, - _('The default Incoterm of your company is not set, ' - 'please make sure to configure it first.'), - context=context) + self._company_warning(_('The default Incoterm of your company is not set, ' + 'please make sure to configure it first.')) else: extpc = "" exdeltrm = "" @@ -305,7 +248,7 @@ class xml_decl(osv.TransientModel): else: amount = 0 weight = (inv_line.product_id.weight or 0.0) * \ - self.pool.get('product.uom')._compute_qty(cr, uid, inv_line.uom_id.id, inv_line.quantity, inv_line.product_id.uom_id.id) + self.env['product.uom']._compute_qty(inv_line.uom_id.id, inv_line.quantity, inv_line.product_id.uom_id.id) if not inv_line.product_id.uom_id.category_id: supply_units = inv_line.quantity else: |
