← Back to team overview

openerp-community-reviewer team mailing list archive

[Merge] lp:~savoirfairelinux-openerp/openerp-sage-50/7.0-exportsage50 into lp:openerp-sage-50

 

You have been requested to review the proposed merge of lp:~savoirfairelinux-openerp/openerp-sage-50/7.0-exportsage50 into lp:openerp-sage-50.

For more details, see:
https://code.launchpad.net/~savoirfairelinux-openerp/openerp-sage-50/7.0-exportsage50/+merge/191893

[UPG] Upgrade to version 7.0

-- 
https://code.launchpad.net/~savoirfairelinux-openerp/openerp-sage-50/7.0-exportsage50/+merge/191893
Your team OpenERP Community Reviewer/Maintainer is requested to review the proposed merge of lp:~savoirfairelinux-openerp/openerp-sage-50/7.0-exportsage50 into lp:openerp-sage-50.
=== added directory 'exportsage50'
=== added directory 'exportsage50/exportsage50'
=== added file 'exportsage50/exportsage50/AUTHORS.txt'
--- exportsage50/exportsage50/AUTHORS.txt	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/AUTHORS.txt	2013-11-15 16:29:49 +0000
@@ -0,0 +1,2 @@
+EL HADJI DEM <elhadji.dem@xxxxxxxxxxxxxxxxxxxx>
+Savoir-faire Linux <contact@xxxxxxxxxxxxxxxxxxxx>
\ No newline at end of file

=== added file 'exportsage50/exportsage50/__init__.py'
--- exportsage50/exportsage50/__init__.py	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/__init__.py	2013-11-15 16:29:49 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2013 Gestion-Ressources (<http://www.gestion-ressources.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+import wizard
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'exportsage50/exportsage50/__init__.pyc'
Binary files exportsage50/exportsage50/__init__.pyc	1970-01-01 00:00:00 +0000 and exportsage50/exportsage50/__init__.pyc	2013-11-15 16:29:49 +0000 differ
=== added file 'exportsage50/exportsage50/__openerp__.py'
--- exportsage50/exportsage50/__openerp__.py	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/__openerp__.py	2013-11-15 16:29:49 +0000
@@ -0,0 +1,125 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2013 Gestion-Ressources (<http://www.gestion-ressources.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+{
+    'name': 'Export to Sage50',
+    'version': '1.0',
+    "category": 'Accounting & Finance',
+    'complexity': "easy",
+    'description': """
+French version below
+
+Export accounting data from OpenErp to Sage50.
+====================================
+ Export accounting data from OpenErp to Sage50. The exportation generates the imp file to import in Sage50.
+
+
+Documentation : layout of the import file (.IMP)
+====================================
+A PDF document (in the /doc repository) gives more details about the .IMP file layout that can be imported
+into Sage 50.This document is part of the Sage 50 SDK (Software Development Kit) available for download at
+the following address : http://na.sage.com/sage-simply-accounting/lp/partners/sdk/?isnow=ssa.
+
+
+Sage 50: After creating .IMP file
+====================================
+Solution:
+Importing purchase invoices, purchase quotes, sales invoices and sales orders into Sage 50
+How to import purchase invoices, purchase quotes, sales invoices and sales orders?
+You can import purchase invoices, purchase quotes, sales invoices and sales orders into Sage 50.
+The transaction(s) details should be in a text file with extension .IMP.
+
+After you have created the .IMP file, you can import the transaction(s) into Sage 50 by following these steps:
+(Account information is not included in the .IMP format because when importing the file, you will receive
+a pop-up screen to ask you "Select an Account to match".)
+
+From the Home Window, go to File, Import/Export
+Click on Import Transactions (the Import Transactions Wizard appears)
+Select on 'Import purchase invoices, purchase quotes, sales invoices, sales orders or time slips' and click Next
+You can now create a backup of your file
+Click Next
+Click on Browse and select the .IMP file previously created
+If the customer (or vendor) in the transaction(s) you are trying to import does not exist in the Sage 50 company,
+you will get a new window asking you if you want to add this customer (or vendor), or if you want to select
+another customer (or vendor) from the existing ones
+You will also get a similar window if the import file uses an inventory item which does not exist in Sage 50.
+You will see a summary of the imported transactions, click OK and then Finish.
+If you got any errors importing the data, open the .IMP file in Notepad and use the attached .PDF document
+to verify the file format. Once the errors have been corrected, you can try the import again.
+Note: View KB25664 for information about some possible errors when importing .IMP file.
+Sage Business Care plan does NOT include support for SDK. Please, contact one of our partners website
+for further assistance.
+
+Possible errors when importing purchase invoices, purchase quotes, sales invoices and/or sales orders
+====================================
+Questions and Answers
+Import started... Errors occurred while importing.
+Line x does not contain compatible tax information.
+Invalid date. The date must be between <date1> and <date2>.
+
+
+A: These are the possible reasons for getting any of these error messages when importing transactions
+into Simply Accounting:
+
+- The import file (extension .IMP) you are using does not have the proper format.
+  Refer to the KB article 25659 for more information about the format of the import file.
+
+- The transaction type is not enabled in the Simply Accounting company. To enable the feature, from the Home Window
+in Simply Accounting, go to Setup, Settings, Company, Features, make sure the type of transaction you want to import
+is checked
+
+- The dates in the import file do not match the fiscal year dates in Simply Accounting.
+  Open the import file in Notepad and make the necessary changes
+
+
+Exportation des données comptables de OpenERP vers Sage50.
+==============================================
+Ce module exporte des données comptables de OpenERP vers Sage50. Le module génére un fichier imp file qui peut
+être importé dans Sage50.
+
+Documentation : Format du fichier à importer (.IMP)
+====================================
+Un document .PDF (dans le répertoire /doc) donne plus de détails sur le format du fichier .IMP qui peut être
+importé dans Sage 50. Ce document fait parti du Kit de développement - SDK de Sage 50  qui peut-être téléchargé
+à l'adresse suivante : http://na.sage.com/sage-simply-accounting/lp/partners/sdk/?isnow=ssa.
+
+Guide d'utilisation export Sage 50
+========================================
+Comment exporter les données comptables à partir d'OpenERP?
+Un manuel d'utilisation est disponible dans le répertoire /doc du module.
+
+    """,
+    'author': 'Gestion-Ressources',
+    'website': 'http://www.gestion-ressources.com',
+    "license": "AGPL-3",
+    'images': [],
+    'depends': ['account'],
+    'data': [
+        'security/ir.model.access.csv',
+        'wizard/exportsage50_view.xml'
+    ],
+    'demo': [],
+    'test': [],
+    'installable': True,
+    'auto_install': False,
+    'application': True,
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added directory 'exportsage50/exportsage50/docs'
=== added file 'exportsage50/exportsage50/docs/Guide_Export_Sage_50_OpenERP_FR.pdf'
Binary files exportsage50/exportsage50/docs/Guide_Export_Sage_50_OpenERP_FR.pdf	1970-01-01 00:00:00 +0000 and exportsage50/exportsage50/docs/Guide_Export_Sage_50_OpenERP_FR.pdf	2013-11-15 16:29:49 +0000 differ
=== added file 'exportsage50/exportsage50/docs/dev-import.pdf'
Binary files exportsage50/exportsage50/docs/dev-import.pdf	1970-01-01 00:00:00 +0000 and exportsage50/exportsage50/docs/dev-import.pdf	2013-11-15 16:29:49 +0000 differ
=== added directory 'exportsage50/exportsage50/i18n'
=== added file 'exportsage50/exportsage50/i18n/exportsage50.pot'
--- exportsage50/exportsage50/i18n/exportsage50.pot	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/i18n/exportsage50.pot	2013-11-15 16:29:49 +0000
@@ -0,0 +1,140 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* exportsage50
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 7.0\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2013-11-15 16:22+0000\n"
+"PO-Revision-Date: 2013-11-15 16:22+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: exportsage50
+#: field:exportsage,name:0
+msgid "Filename"
+msgstr ""
+
+#. module: exportsage50
+#: field:exportsage,format:0
+msgid "File Format"
+msgstr ""
+
+#. module: exportsage50
+#: field:exportsage,state:0
+msgid "unknown"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Here is the exported  file:"
+msgstr ""
+
+#. module: exportsage50
+#: model:ir.model,name:exportsage50.model_exportsage
+msgid "Create imp file  to export  in sage50"
+msgstr ""
+
+#. module: exportsage50
+#: selection:exportsage,state:0
+msgid "choose"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Unicode/UTF-8"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "file encoding, please be sure to view and edit using the same encoding."
+msgstr ""
+
+#. module: exportsage50
+#: selection:exportsage,state:0
+msgid "get"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "This file was generated using the universal"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Cancel"
+msgstr ""
+
+#. module: exportsage50
+#: code:addons/exportsage50/wizard/exportsage50.py:68
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Export Complete"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Export Settings"
+msgstr ""
+
+#. module: exportsage50
+#: help:exportsage,invoice_ids:0
+msgid "This is the list of invoices that have been generated for this sales order. The same sales order may have been invoiced in several times (by line for example)."
+msgstr ""
+
+#. module: exportsage50
+#: model:ir.actions.act_window,name:exportsage50.action_account_invoice_generate_export_view
+#: model:ir.ui.menu,name:exportsage50.menu_account_invoice_generate_export_view
+msgid "Export accounting data to Sage50"
+msgstr ""
+
+#. module: exportsage50
+#: field:exportsage,invoice_ids:0
+msgid "Invoices"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "or"
+msgstr ""
+
+#. module: exportsage50
+#: code:addons/exportsage50/wizard/exportsage50.py:68
+#, python-format
+msgid "You have to select at least 1 Invoice. And try again"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "This action allows you to export accounting data from OpenErp           to Simply account.You should have the same configuration about the tax information"
+msgstr ""
+
+#. module: exportsage50
+#: field:exportsage,data:0
+msgid "File"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Export to Sage50"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Close"
+msgstr ""
+
+#. module: exportsage50
+#: view:exportsage:0
+msgid "Export"
+msgstr ""
+

=== added directory 'exportsage50/exportsage50/security'
=== added file 'exportsage50/exportsage50/security/ir.model.access.csv'
--- exportsage50/exportsage50/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/security/ir.model.access.csv	2013-11-15 16:29:49 +0000
@@ -0,0 +1,2 @@
+id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
+access_exportsage,exportsage,model_exportsage,account.group_account_user,1,0,0,0

=== added directory 'exportsage50/exportsage50/static'
=== added directory 'exportsage50/exportsage50/static/src'
=== added directory 'exportsage50/exportsage50/static/src/img'
=== added file 'exportsage50/exportsage50/static/src/img/icon.png'
Binary files exportsage50/exportsage50/static/src/img/icon.png	1970-01-01 00:00:00 +0000 and exportsage50/exportsage50/static/src/img/icon.png	2013-11-15 16:29:49 +0000 differ
=== added directory 'exportsage50/exportsage50/wizard'
=== added file 'exportsage50/exportsage50/wizard/__init__.py'
--- exportsage50/exportsage50/wizard/__init__.py	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/wizard/__init__.py	2013-11-15 16:29:49 +0000
@@ -0,0 +1,23 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2013 Gestion-Ressources (<http://www.gestion-ressources.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+import exportsage50
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'exportsage50/exportsage50/wizard/exportsage50.py'
--- exportsage50/exportsage50/wizard/exportsage50.py	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/wizard/exportsage50.py	2013-11-15 16:29:49 +0000
@@ -0,0 +1,197 @@
+# -*- encoding: utf-8 -*-
+###############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2013 Gestion-Ressources (<http://www.gestion-ressources.com>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+###############################################################################
+
+from openerp.osv import fields, orm
+import web
+import base64
+import openerp.tools
+from openerp.tools.translate import _
+from openerp.tools.misc import get_iso_codes
+import pooler
+from datetime import datetime
+import openerp.addons.decimal_precision as dp
+
+class exportsage(orm.Model):
+    """
+    Wizard 
+    """
+    _name = "exportsage"
+    _description = "Create imp file  to export  in sage50"
+    #_inherit = "ir.wizard.screen"
+    _columns = {
+        'data': fields.binary('File', readonly=True),
+        'name': fields.char('Filename', 20, readonly=True),
+        'format': fields.char('File Format', 10),
+        'state': fields.selection([('choose', 'choose'), # choose date
+                                   ('get', 'get')]),
+        'invoice_ids': fields.many2many('account.invoice', 'sale_order_invoice_export_rel', 'order_id', 'invoice_id',
+                                        'Invoices', required=True,
+                                        help="This is the list of invoices that have been generated for this sales order. The same sales order may have been invoiced in several times (by line for example)."),
+    }
+
+    _defaults = {
+        'state': lambda *a: 'choose',
+    }
+
+    def act_cancel(self, cr, uid, ids, context=None):
+        #self.unlink(cr, uid, ids, context)
+        return {'type': 'ir.actions.act_window_close'}
+
+    def act_destroy(self, *args):
+        return {'type': 'ir.actions.act_window_close'}
+
+    def create_report(self, cr, uid, ids, context=None):
+        if context == None:
+            context = {}
+        this = self.browse(cr, uid, ids)[0]
+        data = self.read(cr, uid, ids, [], context=context)[0]
+
+        if not data['invoice_ids']:
+            raise osv.except_osv(_('Error'), _('You have to select at least 1 Invoice. And try again'))
+
+        output = '<Version>''\n' + '"12001"' + ',' + '"1"''\n' + '</Version>\n\n'
+        #Faire le traitement des autres lignes dans les lignes de factures
+        pool = pooler.get_pool(cr.dbname)
+        line_obj = pool.get('account.invoice')
+
+        for line in line_obj.browse(cr, uid, data['invoice_ids'], context):
+            # tag de debut pour les lignes de factures
+            output += '<SalInvoice>''\n'
+            #informations sur le client
+            costumer_name = line.partner_id.name
+            oneTimefield = ""
+            contact_name = line.partner_id.name or ""
+            street1 = line.partner_id.street or ""
+            street2 = line.partner_id.street2 or ""
+            city = line.partner_id.city or ""
+            province_state = line.partner_id.state_id.name or ""
+            zip_code = line.partner_id.zip or ""
+            country = line.partner_id.country_id.name or ""
+            phone1 = line.partner_id.phone or ""
+            mobile = line.partner_id.mobile or ""
+            fax = line.partner_id.fax or ""
+            email = line.partner_id.email or ""
+            # ligne de client
+            fields = [costumer_name, oneTimefield, contact_name, street1, street2,
+                      city, province_state, zip_code, country, phone1, mobile, fax, email
+                      ]
+            costumer = ','.join(['"%s"' % field for field in fields])
+            #print costumer
+            #exit(0)
+            output += costumer.encode('UTF-8') + '\n'
+            #informations sur la facture
+            no_of_details = str(len(line.invoice_line))
+            order_no = ""
+            # Invoice number (Max 20 chars)
+            invoice_no = str(line.number)
+            # date de la facture
+            if line.date_invoice:
+                entry_date = datetime.strptime(line.date_invoice, "%Y-%m-%d").strftime('%m-%d-%Y')  # date format : mm-dd-yyyy
+            else:
+                entry_date = ""
+            # Informations sur le type de paiement (between 0 and 3)
+            # 0 = pay later , 1 = cash , 2 = cheque , 3 = credit card
+            # Selectionner le dernier paiement
+            list_id = []
+            # Paid by source (20 Chars) : Blank- pay later and cash Cheque number or credit card
+            paid_by_source = ""
+            if line.payment_ids:
+                for oneId in line.payment_ids:
+                    list_id.append(oneId.id)
+                lastId = max(list_id)
+                # acceder à partir du dernier paiement à l'objet account_move_line
+                account_move_line_obj = self.pool.get('account.move.line')
+                account_move_line = account_move_line_obj.browse(cr, uid, lastId, context=context)
+                paiement_type = account_move_line.journal_id.type
+                if paiement_type == 'cash':
+                    paid_by_type = str(1)
+                    paid_by_source = account_move_line.ref
+                elif paiement_type == 'bank':
+                    paid_by_type = str(2)
+                else:
+                    paid_by_type = str(0) # default value 0 = pay later
+            else:
+                paid_by_type = str(0) # default value 0 = pay later
+            total_amount = str(line.amount_total) or ""
+            freight_amount = "0.0"
+            fields_sale_invoice = [no_of_details, order_no, invoice_no, entry_date, paid_by_type,
+                                  paid_by_source, total_amount, freight_amount,
+                                  ]
+            sale_invoice = ','.join(['"%s"' % field_sale_invoice for field_sale_invoice in fields_sale_invoice])
+            #sale_invoice = '"' + no_of_details + '"' + ',"' + order_no + '"' + ',"' + invoice_no + '"' + ',"' + entry_date + '"' + ',"' + paid_by_type + '"' + ',"' + paid_by_source + '"' + ',"' + total_amount + '"' + ',"' + freight_amount + '"'
+            output += sale_invoice.encode('UTF-8') + '\n'
+            product_line_invoice_with_taxe = ""
+            #Sale invoice detail lines
+            account_invoice_line_obj =self.pool.get('account.invoice.line')
+            product_ids = account_invoice_line_obj.search(cr, uid, [('invoice_id','=',line.id)])
+
+            if product_ids:
+                for product in account_invoice_line_obj.browse(cr, uid, product_ids):
+                    item_number = str(product.name)
+                    quantity = str(product.quantity)
+                    price = str(product.price_unit)
+                    amount = product.quantity * product.price_unit
+                    amount = str(round(amount, self.pool.get('decimal.precision').precision_get(cr, uid, 'Account')))
+                    fields_one_product_invoice = [item_number, quantity, price, amount]
+                    one_product_invoice = ','.join(['"%s"' % field_one_product_invoice for field_one_product_invoice in fields_one_product_invoice])
+                    #one_product_invoice = '"' + item_number + '"' + ',"' + quantity + '"' + ',"' + price + '"' + ',"' + amount + '"'
+                    one_product_invoice = one_product_invoice.encode('UTF-8')
+                    tax_product_line = ""
+                    # tax information pour chaque produit
+                    if product.invoice_line_tax_id:
+                        for one_taxe in product.invoice_line_tax_id:
+                            tax_name = one_taxe.description # or one_taxe.description or one_taxe.name
+                            if one_taxe.price_include:
+                                tax_included = str(1) # 1=yes,0=No
+                            else:
+                                tax_included = str(0) # 1=yes,0=No
+                            tax_refundable = str(1) # 1=yes,0=No
+                            tax_rate = str(one_taxe.amount)
+                            tax_amount = str(one_taxe.amount)
+                            fields_tax_product_line = [tax_name, tax_included, tax_refundable, tax_rate, tax_amount,
+                                                       ]
+                            tax_product_line = ',' + ','.join(['"%s"' % field_tax_product_line for field_tax_product_line in fields_tax_product_line])
+                            #tax_product_line += ',"' + tax_name + '"' + ',"' + tax_included + '"' + ',"' + tax_refundable + '"' + ',"' + tax_rate + '"' + ',"' + tax_amount + '"'
+                        #tax_product_line = tax_product_line[:-1]
+                        tax_product_line = tax_product_line.encode('UTF-8')
+                    product_line_invoice_with_taxe += one_product_invoice + tax_product_line + '\n'
+                #print product_line_invoice_with_taxe , exit(0)
+                output += product_line_invoice_with_taxe
+            # tag de fin  pour les lignes de factures
+            #output += '</SalInvoice>\n'
+            output += '</SalInvoice>\n\n\n'
+        #output += '\n' + this.start_date + ',' + this.end_date
+        this.format = 'imp'
+        filename = 'export_to_sage50'
+        this.name = "%s.%s" % (filename, this.format)
+        out = base64.encodestring(output)
+        self.write(cr, uid, ids, {'state':'get', 'data':out, 'name':this.name, 'format' : this.format}, context=context)
+
+        return {
+            'type': 'ir.actions.act_window',
+            'res_model': 'exportsage',
+            'view_mode': 'form',
+            'view_type': 'form',
+            'res_id': this.id,
+            'views': [(False, 'form')],
+            'target': 'new',
+        }
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== added file 'exportsage50/exportsage50/wizard/exportsage50_view.xml'
--- exportsage50/exportsage50/wizard/exportsage50_view.xml	1970-01-01 00:00:00 +0000
+++ exportsage50/exportsage50/wizard/exportsage50_view.xml	2013-11-15 16:29:49 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+  <data>
+    <record id="account_invoice_generate_export_view" model="ir.ui.view">
+      <field name="name">Export to Sage50</field>
+      <field name="model">exportsage</field>
+      <field name="arch" type="xml">
+      <form string="Export to Sage50" version="7.0">
+        <field invisible="1" name="state"/>
+        <field invisible="1" name="format"/>
+        <label string="This action allows you to export accounting data from OpenErp
+          to Simply account.You should have the same configuration about the tax information"/>
+        <group states="choose" string="Export Settings">
+          <field name="invoice_ids" colspan="4" nolabel="1"/>
+        </group>
+        <div states="get">
+          <h2>Export Complete</h2>
+          <p>Here is the exported  file: <field name="data" readonly="1" filename="name"/></p>
+          <p>This file was generated using the universal
+            <strong>Unicode/UTF-8</strong>
+            file encoding, please be sure to view and edit using the same encoding.
+          </p>
+        </div>
+        <footer states="choose">
+          <button name="create_report" string="Export" type="object" class="oe_highlight"/>
+          or
+          <button special="cancel" string="Cancel" type="object" class="oe_link"/>
+        </footer>
+        <footer states="get">
+          <button special="cancel" string="Close" type="object"/>
+        </footer>
+      </form>
+      </field>
+    </record>
+    <record id="action_account_invoice_generate_export_view" model="ir.actions.act_window">
+      <field name="name">Export accounting data to Sage50</field>
+      <field name="type">ir.actions.act_window</field>
+      <field name="res_model">exportsage</field>
+      <field name="view_type">form</field>
+      <field name="view_mode">form</field>
+      <field name="target">new</field>
+    </record>
+    <menuitem action="action_account_invoice_generate_export_view"
+              id="menu_account_invoice_generate_export_view"
+              parent="account.menu_finance_legal_statement"/>
+  </data>
+</openerp>
\ No newline at end of file