@@ -0,0 +1,58 @@
+.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg
+ :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
+ :alt: License: AGPL-3
+
+==============
+Merge invoices
+This module adds an action in the invoices list to merge invoices. Here are
+the conditions to allow merging:
+* Type should be the same (customer Invoice, supplier invoice, Customer or
+ Supplier Refund)
+* Partner should be the same
+* Currency should be the same
+* Account receivable account should be the same
+Usage
+=====
+.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas
+ :alt: Try me on Runbot
+ :target: https://runbot.odoo-community.org/runbot/95/8,0
+Bug Tracker
+===========
+Bugs are tracked on `GitHub Issues
+<https://github.com/OCA/account-invoicing/issues>`_. In case of trouble, please
+check there if your issue has already been reported. If you spotted it first,
+help us smashing it by providing a detailed and welcomed feedback.
+Credits
+=======
+Contributors
+------------
+* Ian Li <ian.li@elico-corp.com>
+* Cédric Pigeon <cedric.pigeon@acsone.eu>
+* Pedro M. Baeza <pedro.baeza@tecnativa.com>
+* Luc De Meyer <luc.demeyer@noviat.com>
+Maintainer
+----------
+.. image:: http://odoo-community.org/logo.png
+ :alt: Odoo Community Association
+ :target: https://odoo-community.org
+This module is maintained by the OCA.
+OCA, or the Odoo Community Association, is a nonprofit organization whose
+mission is to support the collaborative development of Odoo features and
+promote its widespread use.
+To contribute to this module, please visit https://odoo-community.org.
@@ -0,0 +1,5 @@
+# -*- coding: utf-8 -*-
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
+from . import models
+from . import wizard
@@ -0,0 +1,23 @@
+# © 2010-2011 Ian Li <ian.li@elico-corp.com>
+# © 2015 Cédric Pigeon <cedric.pigeon@acsone.eu>
+# © 2016 Pedro M. Baeza <pedro.baeza@tecnativa.com>
+{
+ 'name': 'Account Invoice Merge Wizard',
+ 'version': '8.0.2.0.1',
+ 'category': 'Finance',
+ 'author': "Elico Corp, "
+ "ACSONE A/V, "
+ "Tecnativa, "
+ "Noviat, "
+ "Odoo Community Association (OCA)",
+ 'website': 'http://www.openerp.net.cn',
+ 'license': 'AGPL-3',
+ 'depends': ['account'],
+ 'data': [
+ 'wizard/invoice_merge_view.xml',
+ ],
+ 'installable': True,
+}
@@ -0,0 +1,181 @@
+# Translation of Odoo Server.
+# This file contains the translation of the following modules:
+# * account_invoice_merge
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Odoo Server 8.0\n"
+"Report-Msgid-Bugs-To: \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: account_invoice_merge
+#: view:invoice.merge:account_invoice_merge.view_invoice_merge
+msgid "* Invoice lines are exactly the same except for the product,quantity and unit"
+msgid "* Invoices are have same company, partner, address, currency, journal, salesman, account, type"
+msgid "* Invoices are in draft"
+msgid "* Invoices belong to the same partner"
+msgid "Are you sure you want to merge these invoices ?"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:29
+#, python-format
+msgid "At least one of the selected invoices is %s!"
+msgid "Cancel"
+#: field:invoice.merge,create_uid:0
+msgid "Created by"
+#: field:invoice.merge,create_date:0
+msgid "Created on"
+#: field:invoice.merge,display_name:0
+msgid "Display Name"
+#: field:invoice.merge,id:0
+msgid "ID"
+#: model:ir.model,name:account_invoice_merge.model_account_invoice
+msgid "Invoice"
+#: field:invoice.merge,date_invoice:0
+msgid "Invoice Date"
+msgid "Invoices will only be merged if:"
+#: field:invoice.merge,keep_references:0
+msgid "Keep references from original invoices"
+#: field:invoice.merge,__last_update:0
+msgid "Last Modified on"
+#: field:invoice.merge,write_uid:0
+msgid "Last Updated by"
+#: field:invoice.merge,write_date:0
+msgid "Last Updated on"
+msgid "Lines will only be merged if:"
+msgid "Merge Invoices"
+#: model:ir.actions.act_window,name:account_invoice_merge.action_view_invoice_merge
+#: model:ir.model,name:account_invoice_merge.model_invoice_merge
+msgid "Merge Partner Invoice"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:37
+msgid "Not all invoices are at the same company!"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:46
+msgid "Not all invoices are at the same currency!"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:49
+msgid "Not all invoices are at the same journal!"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:40
+msgid "Not all invoices are for the same partner!"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:43
+msgid "Not all invoices are of the same type!"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:52
+msgid "Not all invoices have the same Partner Bank Account!"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:34
+msgid "Not all invoices use the same account!"
+msgid "Please note that:"
+#: code:addons/account_invoice_merge/wizard/invoice_merge.py:23
+msgid "Please select multiple invoice to merge in the list view."
+msgid "or"
@@ -0,0 +1,188 @@
+# Translators:
+"Project-Id-Version: account-invoicing (8.0)\n"
+"POT-Creation-Date: 2016-11-17 03:48+0000\n"
+"PO-Revision-Date: 2016-11-25 14:57+0000\n"
+"Last-Translator: OCA Transbot <transbot@odoo-community.org>\n"
+"Language-Team: Amharic (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/am/)\n"
+"Language: am\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"* Invoice lines are exactly the same except for the product,quantity and unit"
+"* Invoices are have same company, partner, address, currency, journal, "
+"salesman, account, type"
+msgstr "Cancelar"
+msgstr "Creado por"
+msgstr "Creado en"
+msgstr "ID"
+msgstr "Última actualización por"
+msgstr "Última actualización en"
+msgstr "o"
@@ -0,0 +1,189 @@
+"POT-Creation-Date: 2017-03-18 00:23+0000\n"
+"PO-Revision-Date: 2017-03-23 20:09+0000\n"
+"Language-Team: Arabic (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/ar/)\n"
+"Language: ar\n"
+"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
+"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
+msgstr "إلغاء"
+msgstr "أنشئ بواسطة"
+msgstr "أنشئ في"
+msgstr "اسم العرض"
+msgstr "المعرف"
+msgstr "فاتورة"
+msgstr "تاريخ الفاتورة"
+msgstr "آخر تعديل في"
+msgstr "آخر تحديث بواسطة"
+msgstr "آخر تحديث في"
+msgstr "أو"
+"Language-Team: Bulgarian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/bg/)\n"
+"Language: bg\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgstr "Откажи"
+msgstr "Създадено от"
+msgstr "Създадено на"
+msgstr "Име за Показване"
+msgstr "Фактура"
+msgstr "Дата на фактура"
+msgstr "Последно обновено на"
+msgstr "Последно обновено от"
+msgstr "или"
+"Language-Team: Bosnian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/bs/)\n"
+"Language: bs\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+msgstr "Otkaži"
+msgstr "Kreirao"
+msgstr "Kreirano"
+msgstr "Prikaži naziv"
+msgstr "Faktura"
+msgstr "Datum Fakture"
+msgstr "Zadnje mijenjano"
+msgstr "Zadnji ažurirao"
+msgstr "Zadnje ažurirano"
+msgstr "ili"
+"PO-Revision-Date: 2017-03-24 09:00+0000\n"
+"Language-Team: Catalan (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/ca/)\n"
+"Language: ca\n"
+msgstr "Cancel·la"
+msgstr "Creat per"
+msgstr "Creat el"
+msgstr "Veure el nom"
+msgstr "Factura"
+msgstr "Data factura"
+msgstr "Darrera modificació el"
+msgstr "Darrera Actualització per"
+msgstr "Darrera Actualització el"
+"POT-Creation-Date: 2018-01-18 01:42+0000\n"
+"PO-Revision-Date: 2018-02-02 14:11+0000\n"
+"Language-Team: Catalan (Spain) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/ca_ES/)\n"
+"Language: ca_ES\n"
+msgstr "Creat a"
+msgstr "Nom visible"
+msgstr "Darrera modificació en"
+msgstr "Darrera actualització per"
+msgstr "Darrera actualització el"
+"Language-Team: Czech (http://www.transifex.com/oca/OCA-account-invoicing-8-0/"
+"language/cs/)\n"
+"Language: cs\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+msgstr "Zrušit"
+msgstr "Vytvořil(a)"
+msgstr "Vytvořeno"
+msgstr "Zobrazovaný název"
+msgstr "Datum vystavení faktury"
+msgstr "Naposled upraveno"
+msgstr "nebo"
+"PO-Revision-Date: 2017-03-23 20:10+0000\n"
+"Language-Team: Danish (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/da/)\n"
+"Language: da\n"
+msgstr "Annuller"
+msgstr "Oprettet af"
+msgstr "Oprettet den"
+msgstr "Vist navn"
+msgstr "Id"
+msgstr "Faktura dato"
+msgstr "Sidst ændret den"
+msgstr "Sidst opdateret af"
+msgstr "Sidst opdateret den"
+msgstr "eller"
@@ -0,0 +1,195 @@
+# Rudolf Schnapka <rs@techno-flex.de>, 2015
+"POT-Creation-Date: 2017-10-21 02:57+0000\n"
+"PO-Revision-Date: 2017-09-22 09:43+0000\n"
+"Language-Team: German (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/de/)\n"
+"Language: de\n"
+"* Rechnungspositionen sind genau gleich, mit Ausnahme von Produkt, Menge und "
+"Einheit"
+"* Rechnungen haben gleiches Unternehmen, Partner, Anschrift, Währung, "
+"Journal, Verkäufer, Konto und Art"
+msgstr "* Rechnung liegen im Entwurf vor"
+msgstr "* Rechnung gehören zum gleichen Partner"
+msgstr "Sind Sie sicher, dass Sie diese Rechnungen zusammenführen möchten?"
+msgstr "Mindestens eine der gewählten Rechnungen ist %s."
+msgstr "Abbrechen"
+msgstr "Angelegt durch"
+msgstr "Angelegt am"
+msgstr "Anzeigename"
+msgstr "Rechnung"
+msgstr "Rechnungsdatum"
+msgstr "Rechnungen werden nur zusammegeführt, wenn:"
+msgstr "Erhalte Bezüge auf Ursprungsrechnungen"
+msgstr "Zuletzt geändert am"
+msgstr "Zuletzt aktualisiert durch"
+msgstr "Zuletzt aktualisiert am"
+msgstr "Positionen werden nur zusammengeführt, wenn:"
+msgstr "Rechnungen zusammenführen"
+msgstr "Partner-Rechnungen zusammenführen"
+msgstr "Nicht alle Rechnungen gehören zum gleichen Unternehmen."
+msgstr "Nicht alle Rechnungen haben die gleiche Währung."
+msgstr "Nicht alle Rechnungen sind im gleichen Journal gebucht."
+msgstr "Nicht alle Rechnungen sind an den gleichen Partner gerichtet."
+msgstr "Nicht alle Rechnungen sind von gleicher Art."
+msgstr "Nicht alle Rechnungen sind gleich kontiert."
+msgstr "Nehmen Sie zur Kenntnis:"
+"Bitte wählen Sie mehrere, zusammenzuführende Rechnungen aus der "
+"Listenansicht."
+msgstr "oder"
+"PO-Revision-Date: 2016-11-25 14:56+0000\n"
+"Language-Team: Greek (Greece) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/el_GR/)\n"
+"Language: el_GR\n"
+msgstr "Άκυρο"
+msgstr "Δημιουργήθηκε από "
+msgstr "Δημιουργήθηκε στις"
+msgstr "Κωδικός"
+msgstr "Τιμολόγιο"
+msgstr "Τελευταία ενημέρωση από"
+msgstr "Τελευταία ενημέρωση στις"
+"POT-Creation-Date: 2016-12-28 09:48+0000\n"
+"PO-Revision-Date: 2016-12-27 08:23+0000\n"
+"Language-Team: English (Australia) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/en_AU/)\n"
+"Language: en_AU\n"
+msgstr "Cancel"
+"Language-Team: English (United Kingdom) (http://www.transifex.com/oca/OCA-"
+"account-invoicing-8-0/language/en_GB/)\n"
+"Language: en_GB\n"
+msgstr "Created by"
+msgstr "Created on"
+msgstr "Display Name"
+msgstr "Invoice"
+msgstr "Invoice Date"
+msgstr "Last Modified on"
+msgstr "Last Updated by"
+msgstr "Last Updated on"
+msgstr "or"
+# FIRST AUTHOR <EMAIL@ADDRESS>, 2014
+"Language-Team: Spanish (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es/)\n"
+"Language: es\n"
+"* Son exactamente iguales a excepción de la cantidad del producto y/o la "
+"unidad"
+"* Tienen la misma compañía, empresa, dirección, moneda, diario, comercial, "
+"cuenta y tipo"
+msgstr "* Están en borrador."
+msgstr "* Pertenecen al mismo cliente/proveedor."
+msgstr "¿Está seguro de que quiere fusionar las facturas?"
+msgstr "¡Al menos una de las facturas seleccionadas está %s!"
+msgstr "Nombre mostrado"
+msgstr "Fecha de la factura"
+msgstr "Las facturas sólo se fusionarán si:"
+msgstr "Guardar referencias a las facturas originales"
+msgstr "Última modificación el"
+msgstr "Las líneas se fusionarán si:"
+msgstr "Fusionar facturas"
+msgstr "Fusionar factura de empresa"
+msgstr "¡No todas las facturas son de la misma compañía!"
+msgstr "¡No todas las facturas son de la misma moneda!"
+msgstr "¡No todas las facturas tienen el mismo diario!"
+msgstr "¡No todas las facturas tienen la misma empresa!"
+msgstr "¡No todas las facturas son del mismo tipo!"
+msgstr "¡No todas las facturas usan la misma cuenta!"
+msgstr "Tenga en cuenta que:"
+"Seleccione por favor múltiples facturas a ser fusionadas en la vista de "
+"listado"
+"Language-Team: Spanish (Argentina) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_AR/)\n"
+"Language: es_AR\n"
+msgstr "Mostrar Nombre"
+msgstr "Fecha de factura"
+msgstr "Última modificación en"
+msgstr "Última actualización realizada por"
+msgstr "Última actualización el"
+"Language-Team: Spanish (Bolivia) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_BO/)\n"
+"Language: es_BO\n"
+msgstr "Fecha factura"
+"Language-Team: Spanish (Chile) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_CL/)\n"
+"Language: es_CL\n"
+msgstr "ID (identificación)"
+msgstr "Última actualización de"
+"Language-Team: Spanish (Colombia) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_CO/)\n"
+"Language: es_CO\n"
+msgstr "Creado"
+msgstr "Nombre Público"
+msgstr "Fecha Factura"
+msgstr "Última Modificación el"
+msgstr "Actualizado por"
+msgstr "Actualizado"
+"Language-Team: Spanish (Costa Rica) (http://www.transifex.com/oca/OCA-"
+"account-invoicing-8-0/language/es_CR/)\n"
+"Language: es_CR\n"
+msgstr "Ultima actualización por"
+msgstr "Ultima actualización en"
+"Language-Team: Spanish (Dominican Republic) (http://www.transifex.com/oca/"
+"OCA-account-invoicing-8-0/language/es_DO/)\n"
+"Language: es_DO\n"
+"Language-Team: Spanish (Ecuador) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_EC/)\n"
+"Language: es_EC\n"
+msgstr "Fecha Emisión"
+"POT-Creation-Date: 2018-04-21 00:05+0000\n"
+"PO-Revision-Date: 2018-05-24 09:48+0000\n"
+"Language-Team: Spanish (Spain) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_ES/)\n"
+"Language: es_ES\n"
+msgstr "Nombre para mostrar"
+"Language-Team: Spanish (Mexico) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_MX/)\n"
+"Language: es_MX\n"
+msgstr "Nombre desplegado"
+msgstr "Ultima modificacion realizada"
+msgstr "Ultima actualizacion por"
+msgstr "Ultima actualización realizada"
+msgstr "ó"
+"POT-Creation-Date: 2018-02-03 01:28+0000\n"
+"PO-Revision-Date: 2018-03-02 21:12+0000\n"
+"Language-Team: Spanish (Peru) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_PE/)\n"
+"Language: es_PE\n"
+msgstr "Nombre a Mostrar"
+msgstr "Ultima Modificación en"
+msgstr "Actualizado última vez por"
+msgstr "Ultima Actualización"
+"Language-Team: Spanish (Paraguay) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_PY/)\n"
+"Language: es_PY\n"
+msgstr "Fecha de Factura"
+"Language-Team: Spanish (Venezuela) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/es_VE/)\n"
+"Language: es_VE\n"
+msgstr "Mostrar nombre"
+msgstr "Modificada por última vez"
+msgstr "Ultima actualizacion en"
+"Language-Team: Estonian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/et/)\n"
+"Language: et\n"
+msgstr "Loobu"
+msgstr "Loonud"
+msgstr "Loodud"
+msgstr "Näidatav nimi"
+msgstr "Arve"
+msgstr "Arve kuupäev"
+msgstr "Viimati muudetud"
+msgstr "Viimati uuendatud"
+msgstr "või"
+"Language-Team: Basque (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/eu/)\n"
+"Language: eu\n"
+msgstr "Ezeztatu"
+msgstr "Nork sortua"
+msgstr "Izena erakutsi"
+msgstr "Faktura data"
+"Language-Team: Persian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/fa/)\n"
+"Language: fa\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+msgstr "لغو"
+msgstr "ایجاد شده توسط"
+msgstr "ایجاد شده در"
+msgstr "نام نمایشی"
+msgstr "شناسه"
+msgstr "تاریخ فاکتور"
+msgstr "تاریخ آخرین بهروزرسانی"
+msgstr "آخرین به روز رسانی توسط"
+msgstr "آخرین به روز رسانی در"
+msgstr "یا"
+"Last-Translator: Jarmo Kortetjärvi <jarmo.kortetjarvi@gmail.com>\n"
+"Language-Team: Finnish (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/fi/)\n"
+"Language: fi\n"
+msgstr "Peruuta"
+msgstr "Luonut"
+msgstr "Luotu"
+msgstr "Nimi"
+msgstr "Lasku"
+msgstr "Laskun päiväys"
+msgstr "Viimeksi muokattu"
+msgstr "Viimeksi päivittänyt"
+msgstr "Viimeksi päivitetty"
+msgstr "tai"
+"Language-Team: French (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/fr/)\n"
+"Language: fr\n"
+msgstr "Êtes-vous certain de vouloir fusionner ces factures ?"
+msgstr "Au moins une des factures sélectionnées est %s !"
+msgstr "Annuler"
+msgstr "Créé par"
+msgstr "Date"
+msgstr "Nom à afficher"
+msgstr "Facture"
+msgstr "Date de facturation"
+msgstr "Dernière modification le"
+msgstr "Dernière mise à jour par"
+msgstr "Dernière mise à jour le"
+msgstr "Fusion de factures"
+msgstr "Toutes les factures n'appartiennent pas à la même société !"
+msgstr "Toutes les factures ne sont pas dans la même devise !"
+msgstr "Toutes les factures ne sont pas dans le même journal !"
+msgstr "Toutes les factures ne sont pas du même partenaire !"
+msgstr "Toutes les factures ne sont pas du même type !"
+msgstr "Toutes les factures n'utilisent pas le même compte !"
+msgstr "Veuillez choisir plusieurs factures à fusionner dans la vue liste"
+msgstr "ou"
+"PO-Revision-Date: 2016-12-27 08:25+0000\n"
+"Language-Team: French (Canada) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/fr_CA/)\n"
+"Language: fr_CA\n"
+msgstr "Créé le"
+msgstr "Afficher le nom"
+msgstr "Identifiant"
+"PO-Revision-Date: 2016-12-27 08:24+0000\n"
+"Language-Team: French (Switzerland) (http://www.transifex.com/oca/OCA-"
+"account-invoicing-8-0/language/fr_CH/)\n"
+"Language: fr_CH\n"
+msgstr "Nom affiché"
+msgstr "Modifié par"
+msgstr "Modifié le"
+"PO-Revision-Date: 2016-12-27 08:20+0000\n"
+"Language-Team: French (France) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/fr_FR/)\n"
+"Language: fr_FR\n"
+"Language-Team: Galician (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/gl/)\n"
+"Language: gl\n"
+msgstr "Data da factura"
+msgstr "Última modificación"
+msgstr "ültima actualización por"
+"PO-Revision-Date: 2016-11-22 16:25+0000\n"
+"Language-Team: Galician (Spain) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/gl_ES/)\n"
+"Language: gl_ES\n"
+"Language-Team: Hebrew (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/he/)\n"
+"Language: he\n"
+msgstr "בטל"
+msgstr "נוצר על ידי"
+msgstr "נוצר ב-"
+msgstr "השם המוצג"
+msgstr "מזהה"
+msgstr "תאריך חשבונית"
+msgstr "תאריך שינוי אחרון"
+msgstr "עודכן לאחרונה על ידי"
+msgstr "עודכן לאחרונה על"
+msgstr "או"
+"Language-Team: Hindi (http://www.transifex.com/oca/OCA-account-invoicing-8-0/"
+"language/hi/)\n"
+"Language: hi\n"
+msgstr "रद्द"
+"Language-Team: Croatian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/hr/)\n"
+"Language: hr\n"
+"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
+msgstr "Odustani"
+msgstr "Naziv "
+msgstr "Račun"
+msgstr "Datum fakture"
+msgstr "Zadnje modificirano"
+msgstr "Zadnje ažuriranje"
+"Language-Team: Croatian (Croatia) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/hr_HR/)\n"
+"Language: hr_HR\n"
+msgstr "Naziv"
+"Language-Team: Hungarian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/hu/)\n"
+"Language: hu\n"
+msgstr "Mégsem"
+msgstr "Készítette"
+msgstr "Létrehozás dátuma"
+msgstr "Név megjelenítése"
+msgstr "Számla"
+msgstr "Számla kelte"
+msgstr "Utolsó frissítés dátuma"
+msgstr "Utoljára frissítve, által"
+msgstr "Utoljára frissítve "
+msgstr "vagy"
+"Language-Team: Indonesian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/id/)\n"
+"Language: id\n"
+msgstr "Batalkan"
+msgstr "Dibuat oleh"
+msgstr "Dibuat pada"
+msgstr "Nama Tampilan"
+msgstr "Faktur"
+msgstr "Tanggal Invoice"
+msgstr "Terakhir Dimodifikasi pada"
+msgstr "Diperbaharui oleh"
+msgstr "Diperbaharui pada"
+msgstr "atau"
@@ -0,0 +1,194 @@
+# Andrea Cometa <a.cometa@apuliasoftware.it>, 2016
+# Massimiliano Casa <mcasa@cantiericasa.com>, 2015
+"PO-Revision-Date: 2017-10-16 11:28+0000\n"
+"Language-Team: Italian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/it/)\n"
+"Language: it\n"
+"Le righe della fattura sono esattamente le stesse tranne per prodotto, "
+"quantità ed unità di misura"
+"Le fatture hanno stessa azienda, partner, indirizzo, valuta, sezionale, "
+"commerciale, conto, tipo"
+msgstr "* Le fatture sono in bozza"
+msgstr "* fatture appartengono allo stesso partner"
+msgstr "Sei sicuro che vuoi unire queste fatture? "
+msgstr "Almeno una delle fatture selezionate è %s!"
+msgstr "Annulla"
+msgstr "Creato da"
+msgstr "Nome da visualizzare"
+msgstr "Fattura"
+msgstr "Data fattura"
+msgstr "Le fatture saranno unite se:"
+msgstr "Mantieni referenze delle fatture originali"
+msgstr "Ultima modifica il"
+msgstr "Ultimo aggiornamento di"
+msgstr "Ultimo aggiornamento il"
+msgstr "Le linee saranno unite solo se:"
+msgstr "Unisci fatture"
+msgstr "Non tutte le fatture sono alla stessa azienda!"
+msgstr "Non tutte le fatture sono della stessa valuta!"
+msgstr "Non tutte le fatture hanno lo stesso sezionale!"
+msgstr "Non tutte le fatture sono allo stesso partner!"
+msgstr "Non tutte le fatture sono dello stesso tipo!"
+msgstr "Non tutte le fatture usano lo stesso conto!"
+msgstr "Prego notare che:"
+msgstr "Selezionare più fatture da unire in una vista a lista."
+"Language-Team: Japanese (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/ja/)\n"
+"Language: ja\n"
+msgstr "キャンセル"
+msgstr "作成者"
+msgstr "作成日"
+msgstr "表示名"
+msgstr "請求書"
+msgstr "請求日"
+msgstr "最終更新日"
+msgstr "最終更新者"
+msgstr "または"
+"Language-Team: Korean (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/ko/)\n"
+"Language: ko\n"
+msgstr "취소"
+msgstr "작성자"
+msgstr "작성일"
+msgstr "표시 이름"
+msgstr "송장 발행일"
+msgstr "최근 수정"
+msgstr "최근 갱신한 사람"
+msgstr "최근 갱신 날짜"
+msgstr "또는"
+"PO-Revision-Date: 2016-12-27 08:22+0000\n"
+"Language-Team: Lao (http://www.transifex.com/oca/OCA-account-invoicing-8-0/"
+"language/lo/)\n"
+"Language: lo\n"
+msgstr "ຍົກເລີອກ"
+"Language-Team: Lithuanian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/lt/)\n"
+"Language: lt\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
+"%100<10 || n%100>=20) ? 1 : 2);\n"
+msgstr "Atšaukti"
+msgstr "Sukūrė"
+msgstr "Sukurta"
+msgstr "Vaizduojamas pavadinimas"
+msgstr "Sąskaita faktūra"
+msgstr "Sąskaitos data"
+msgstr "Paskutinį kartą keista"
+msgstr "Paskutinį kartą atnaujino"
+msgstr "Paskutinį kartą atnaujinta"
+msgstr "arba"
+"Language-Team: Lithuanian (Lithuania) (http://www.transifex.com/oca/OCA-"
+"account-invoicing-8-0/language/lt_LT/)\n"
+"Language: lt_LT\n"
+"Language-Team: Latvian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/lv/)\n"
+"Language: lv\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+msgstr "Atcelt"
+msgstr "Izveidoja"
+msgstr "Izveidots"
+msgstr "Rēķina datums"
+msgstr "Pēdējo reizi atjaunoja"
+msgstr "Pēdējās izmaiņas"
+msgstr "vai"
+"Language-Team: Macedonian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/mk/)\n"
+"Language: mk\n"
+"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
+msgstr "Креирано од"
+msgstr "Креирано на"
+msgstr "Прикажи име"
+msgstr "Датум на фактура"
+msgstr "Последна промена на"
+msgstr "Последно ажурирање од"
+msgstr "Последно ажурирање на"
+"Language-Team: Mongolian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/mn/)\n"
+"Language: mn\n"
+msgstr "Цуцлах"
+msgstr "Үүсгэгч"
+msgstr "Үүсгэсэн"
+msgstr "Дэлгэцийн Нэр"
+msgstr "Нэхэмжлэл"
+msgstr "Нэхэмжлэх огноо"
+msgstr "Сүүлийн засвар хийсэн огноо"
+msgstr "Сүүлийн засвар хийсэн"
+msgstr "эсвэл"
+"Language-Team: Norwegian Bokmål (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/nb/)\n"
+"Language: nb\n"
+msgstr "Avbryt"
+msgstr "Opprettet av"
+msgstr "Opprettet den"
+msgstr "Visnings navn"
+msgstr "Fakturadato"
+msgstr "Sist oppdatert "
+msgstr "Sist oppdatert av"
+msgstr "Sist oppdatert"
+"PO-Revision-Date: 2016-12-27 08:26+0000\n"
+"Language-Team: Norwegian Bokmål (Norway) (http://www.transifex.com/oca/OCA-"
+"account-invoicing-8-0/language/nb_NO/)\n"
+"Language: nb_NO\n"
+msgstr "Lukk"
+msgstr "Laget av"
+msgstr "Laget den"
+msgstr "Vis navn"
+msgstr "Innmelding"
+msgstr "Sist endret den"
+msgstr "Sist oppdatert den"
@@ -0,0 +1,193 @@
+# Stefan Rijnhart <stefan@therp.nl>, 2015
+"PO-Revision-Date: 2017-10-02 16:43+0000\n"
+"Language-Team: Dutch (http://www.transifex.com/oca/OCA-account-invoicing-8-0/"
+"language/nl/)\n"
+"Language: nl\n"
+msgstr "* deze exact gelijk zijn behalve de hoeveelheid en de maateenheid"
+"* het bedrijf, de relatie, het adres, de valuta, het dagboek, de verkoper, "
+"de grootboekrekening en het type factuur gelijk zijn"
+msgstr "* zij in conceptstatus staan"
+msgstr "* zij dezelfde relatie betreffen"
+msgstr "Weet u zeker dat u deze facturen wilt samenvoegen?"
+"Er is in ieder geval één factuur in status %s. Deze kan niet samengevoegd "
+"worden."
+msgstr "Annuleer"
+msgstr "Aangemaakt door"
+msgstr "Aangemaakt op"
+msgstr "Te tonen naam"
+msgstr "Factuur"
+msgstr "Factuurdatum"
+msgstr "Facturen worden alleen samengevoegd als:"
+msgstr "Referenties van samengevoegde facturen behouden"
+msgstr "Laatst bijgewerkt op"
+msgstr "Laatst bijgewerkt door"
+msgstr "Regels worden alleen samengevoegd als:"
+msgstr "Facturen samenvoegen"
+msgstr "Facturen samenvoegen per relatie"
+msgstr "Niet alle facturen behoren tot hetzelfde bedrijf!"
+msgstr "Niet alle facturen staan in dezelfde valuta!"
+msgstr "Niet alle facturen staan in hetzelfde dagboek!"
+msgstr "Niet alle facturen zijn voor dezelfde relatie!"
+msgstr "Niet alle facturen hebben hetzelfde type!"
+msgstr "Niet alle facturen staan op dezelfde grootboekrekening!"
+msgstr "Let op:"
+msgstr "Selecteer de facturen die samengevoegd moeten worden."
+msgstr "of"
+"PO-Revision-Date: 2017-03-23 20:14+0000\n"
+"Language-Team: Dutch (Belgium) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/nl_BE/)\n"
+"Language: nl_BE\n"
+msgstr "Annuleren"
+msgstr "Gemaakt door"
+msgstr "Gemaakt op"
+msgstr "Schermnaam"
+msgstr "Laatst Aangepast op"
+"Language-Team: Dutch (Netherlands) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/nl_NL/)\n"
+"Language: nl_NL\n"
+msgstr "Verwijderen"
+msgstr "Weergavenaam"
+msgstr "Laatst gewijzigd op"
+msgstr "Voeg Facturen samen"
+msgstr "Niet alle facturen zijn van het zelfde bedrijf!"
+msgstr "Niet alle facturen hebben de zelfde valuta!"
@@ -0,0 +1,190 @@
+"Language-Team: Polish (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/pl/)\n"
+"Language: pl\n"
+"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n"
+"%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n"
+"%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
+msgstr "Anuluj"
+msgstr "Utworzone przez"
+msgstr "Utworzono"
+msgstr "Wyświetlana nazwa "
+msgstr "Data faktury"
+msgstr "Ostatnio modyfikowano"
+msgstr "Ostatnio modyfikowane przez"
+msgstr "Ostatnia zmiana"
+msgstr "lub"
+"Language-Team: Portuguese (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/pt/)\n"
+"Language: pt\n"
+msgstr "Criado por"
+msgstr "Criado em"
+msgstr "Nome"
+msgstr "Fatura"
+msgstr "Data da Fatura"
+msgstr "Modificado a última vez por"
+msgstr "Atualizado pela última vez por"
+msgstr "Atualizado pela última vez em"
@@ -0,0 +1,192 @@
+# danimaribeiro <danimaribeiro@gmail.com>, 2015
+"Language-Team: Portuguese (Brazil) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/pt_BR/)\n"
+"Language: pt_BR\n"
+"* Linhas da fatura são exatamente as mesmas, exceto para o produto, "
+"quantidade e unidade"
+msgstr "* Faturas são provisórias"
+msgstr "* Faturas devem pertencer ao mesmo parceiro"
+msgstr "Você tem certeza que quer juntar estas faturas ?"
+msgstr "Pelo menos uma das faturas selecionadas é %s"
+msgstr "Nome para Mostrar"
+msgstr "Data fatura"
+msgstr "Linhas da fatura apenas serão vinculadas se:"
+msgstr "Última atualização em"
+msgstr "Última atualização por"
+"POT-Creation-Date: 2016-12-10 00:31+0000\n"
+"PO-Revision-Date: 2016-12-15 10:08+0000\n"
+"Language-Team: Portuguese (Portugal) (http://www.transifex.com/oca/OCA-"
+"account-invoicing-8-0/language/pt_PT/)\n"
+"Language: pt_PT\n"
+msgstr "Nome a Apresentar"
+msgstr "Última Modificação Em"
+"Language-Team: Romanian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/ro/)\n"
+"Language: ro\n"
+"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
+"2:1));\n"
+msgstr "Anuleaza"
+msgstr "Creat de"
+msgstr "Creat la"
+msgstr "Nume Afişat"
+msgstr "Data facturii"
+msgstr "Ultima actualizare în"
+msgstr "Ultima actualizare făcută de"
+msgstr "Ultima actualizare la"
+msgstr "sau"
+"Language-Team: Russian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/ru/)\n"
+"Language: ru\n"
+"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n"
+"%100>=11 && n%100<=14)? 2 : 3);\n"
+msgstr "Отменена"
+msgstr "Создано"
+msgstr "Создан"
+msgstr "Счет"
+msgstr "Дата счёта"
+msgstr "Последний раз обновлено"
+"Language-Team: Slovak (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/sk/)\n"
+"Language: sk\n"
+msgstr "Zrušiť"
+msgstr "Vytvoril"
+msgstr "Vytvorené"
+msgstr "Zobraziť meno"
+msgstr "Dátum faktúry"
+msgstr "Posledná modifikácia"
+msgstr "Naposledy upravoval"
+msgstr "Naposledy upravované"
+msgstr "alebo"
+"Language-Team: Slovak (Slovakia) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/sk_SK/)\n"
+"Language: sk_SK\n"
+msgstr "Faktúra"
+# Matjaž Mozetič <m.mozetic@matmoz.si>, 2015-2017
+"PO-Revision-Date: 2017-10-23 10:54+0000\n"
+"Last-Translator: Matjaž Mozetič <m.mozetic@matmoz.si>\n"
+"Language-Team: Slovenian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/sl/)\n"
+"Language: sl\n"
+"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
+"%100==4 ? 2 : 3);\n"
+"* Postavke računa so popolnoma enake razen glede proizvoda, količine in enote"
+"* Računi imajo isto družbo, partnerja, naslov, valuto, dnevnik, prodajalca, "
+"konto in tip"
+msgstr "* Računi so v stanju 'osnutek'"
+msgstr "* Računi pripadajo istemu partnerju"
+msgstr "Ali res želite spojiti te račune?"
+msgstr "Vsaj eden izmed izbranih računov je %s!"
+msgstr "Preklic"
+msgstr "Ustvaril"
+msgstr "Ustvarjeno"
+msgstr "Prikazni naziv"
+msgstr "Datum računa"
+msgstr "Računi bodo spojeni le, če:"
+msgstr "Obdrži sklice originalnih računov"
+msgstr "Zadnjič spremenjeno"
+msgstr "Zadnjič posodobil"
+msgstr "Zadnjič posodobljeno"
+msgstr "Postavke bodo spojene le, če:"
+msgstr "Spoji račune"
+msgstr "Spoji partnerjev račun"
+msgstr "Nekateri računi niso od iste družbe!"
+msgstr "Nekateri računi niso v isti valuti!"
+msgstr "Nekateri računi niso iz istega dnevnika!"
+msgstr "Nekateri računi niso od istega partnerja!"
+msgstr "Nekateri računi niso istega tipa!"
+msgstr "Nekateri računi nimajo istega partnerjevega bančnega računa!"
+msgstr "Nekateri računi niso iz istega konta!"
+msgstr "Upoštevajte, da:"
+msgstr "Izberite več računov za spajanje v seznamskem pogledu."
+msgstr "ali"
+"Language-Team: Serbian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/sr/)\n"
+"Language: sr\n"
+msgstr "Kreiran"
+"Language-Team: Serbian (Latin) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/sr@latin/)\n"
+"Language: sr@latin\n"
+msgstr "Ime za prikaz"
+msgstr "Zadnja izmjena"
+"Language-Team: Swedish (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/sv/)\n"
+"Language: sv\n"
+msgstr "Skapad av"
+msgstr "Skapad den"
+msgstr "Visa namn"
+msgstr "Fakturadatum"
+msgstr "Senast redigerad"
+msgstr "Senast uppdaterad av"
+msgstr "Senast uppdaterad"
+"Language-Team: Thai (http://www.transifex.com/oca/OCA-account-invoicing-8-0/"
+"language/th/)\n"
+"Language: th\n"
+msgstr "ยกเลิก"
+msgstr "สร้างโดย"
+msgstr "สร้างเมื่อ"
+msgstr "ชื่อที่ใช้แสดง"
+msgstr "รหัส"
+msgstr "ใบแจ้งหนี้"
+msgstr "วันที่ออกใบแจ้งหนี้"
+msgstr "แก้ไขครั้งสุดท้ายเมื่อ"
+msgstr "อัพเดทครั้งสุดท้ายโดย"
+msgstr "อัพเดทครั้งสุดท้ายเมื่อ"
+msgstr "หรือ"
@@ -0,0 +1,191 @@
+# Ivan BARAYEV <ivanbarayev@hotmail.com>, 2017
+"Language-Team: Turkish (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/tr/)\n"
+"Language: tr\n"
+msgstr "* Fatura hatları, ürün, miktar ve birim haricinde tamamen aynıdır."
+"* Faturaların aynı şirketi, ortağı, adresini, para birimini, günlüğü, satış "
+"elemanı, hesabı, türü var"
+msgstr "* Faturalar taslak halinde"
+msgstr "* Faturalar aynı ortağa aittir"
+msgstr "Bu faturaları birleştirmek istediğinizden emin misiniz?"
+msgstr "Seçilen faturalardan en az bir tanesi %s!"
+msgstr "Vazgeç"
+msgstr "Oluşturan"
+msgstr "Oluşturuldu"
+msgstr "Görünen İsim"
+msgstr "Fatura Tarihi"
+msgstr "Faturalar yalnızca şu durumlarda birleşecektir:"
+msgstr "Orijinal faturalarından referans tutun"
+msgstr "Son değişiklik"
+msgstr "Son güncelleyen"
+msgstr "Son güncelleme"
+msgstr "Hatlar yalnızca şu durumlarda birleşecektir:"
+msgstr "Faturaları Birleştir"
+msgstr "İş Ortağı Fatura Birleştirme"
+msgstr "Tüm faturalar aynı şirkette değil!"
+msgstr "Tüm faturalar aynı para biriminde değil!"
+msgstr "Tüm faturalar aynı yevmiye defterinde değil!"
+msgstr "Tüm faturalar aynı ortağa ait değil!"
+msgstr "Tüm faturalar aynı türde değil!"
+msgstr "Tüm faturalar aynı hesabı kullanmaz!"
+msgstr "Lütfen bunu not alın:"
+msgstr "Lütfen liste görünümünde birleştirilecek birden fazla fatura seçin."
+msgstr "ya da"
+"POT-Creation-Date: 2016-12-31 00:28+0000\n"
+"PO-Revision-Date: 2017-01-04 14:44+0000\n"
+"Language-Team: Turkish (Turkey) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/tr_TR/)\n"
+"Language: tr_TR\n"
+msgstr "İptal et"
+msgstr "Oluşturulma tarihi"
+msgstr "Görünen ad"
+msgstr "Kimlik"
+msgstr "En son güncelleme tarihi"
+msgstr "En son güncelleyen "
+msgstr "ya da "
+"Language-Team: Ukrainian (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/uk/)\n"
+"Language: uk\n"
+msgstr "Скасувати"
+msgstr "Створив"
+msgstr "Дата створення"
+msgstr "Назва для відображення"
+msgstr "Дата рахунку"
+msgstr "Остання модифікація"
+msgstr "Востаннє оновив"
+msgstr "Останнє оновлення"
+msgstr "або"
+"Language-Team: Vietnamese (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/vi/)\n"
+"Language: vi\n"
+msgstr "Hủy bỏ"
+msgstr "Được tạo bởi"
+msgstr "Được tạo vào"
+msgstr "Tên hiển thị"
+msgstr "Ngày hóa đơn"
+msgstr "Sửa lần cuối vào"
+msgstr "Cập nhật lần cuối vào"
+msgstr "hoặc"
+"POT-Creation-Date: 2017-11-04 00:41+0000\n"
+"PO-Revision-Date: 2017-11-23 23:27+0000\n"
+"Language-Team: Vietnamese (Viet Nam) (http://www.transifex.com/oca/OCA-"
+"account-invoicing-8-0/language/vi_VN/)\n"
+"Language: vi_VN\n"
+msgstr "Hủy"
+msgstr "Tạo bởi"
+msgstr "Tạo vào"
+msgstr "Cập nhật lần cuối bởi"
+"Language-Team: Chinese (China) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/zh_CN/)\n"
+"Language: zh_CN\n"
+msgstr "您确认合并这些发票?"
+msgstr "取消"
+msgstr "创建者"
+msgstr "创建时间"
+msgstr "显示名称"
+msgstr "发票"
+msgstr "开票日期"
+msgstr "最后修改时间"
+msgstr "最后更新者"
+msgstr "上次更新日期"
+msgstr "合并发票"
+msgstr "合并合作伙伴发票"
+msgstr "请在列表里选择多个发票来合并。"
+msgstr "或"
+"Language-Team: Chinese (Taiwan) (http://www.transifex.com/oca/OCA-account-"
+"invoicing-8-0/language/zh_TW/)\n"
+"Language: zh_TW\n"
+msgstr "刪除"
+msgstr "建立者"
+msgstr "建立於"
+msgstr "顯示名稱"
+msgstr "編號"
+msgstr "發票"
+msgstr "發票日期"
+msgstr "最後修改:"
+msgstr "最後更新:"
+msgstr "最後更新於"
@@ -0,0 +1,4 @@
+from . import account_invoice
@@ -0,0 +1,230 @@
+# © 2016 Pedro M. Baeza <pedro.baeza@serviciosbaeza.com>
+# © 2016 Luc De Meyer <luc.demeyer@noviat.com>
+from openerp import models, api
+from openerp import workflow
+from openerp.osv.orm import browse_record, browse_null
+class AccountInvoice(models.Model):
+ _inherit = "account.invoice"
+ @api.multi
+ def _get_invoice_key_cols(self):
+ return [
+ 'partner_id', 'user_id', 'type', 'account_id', 'currency_id',
+ 'journal_id', 'company_id', 'partner_bank_id',
+ ]
+ def _get_invoice_line_key_cols(self):
+ fields = [
+ 'name', 'origin', 'discount', 'invoice_line_tax_id', 'price_unit',
+ 'product_id', 'account_id', 'account_analytic_id',
+ for field in ['analytics_id']:
+ if field in self.env['account.invoice.line']._fields:
+ fields.append(field)
+ return fields
+ def _get_first_invoice_fields(self, invoice):
+ return {
+ 'origin': '%s' % (invoice.origin or '',),
+ 'partner_id': invoice.partner_id.id,
+ 'journal_id': invoice.journal_id.id,
+ 'user_id': invoice.user_id.id,
+ 'currency_id': invoice.currency_id.id,
+ 'company_id': invoice.company_id.id,
+ 'type': invoice.type,
+ 'account_id': invoice.account_id.id,
+ 'state': 'draft',
+ 'reference': '%s' % (invoice.reference or '',),
+ 'name': '%s' % (invoice.name or '',),
+ 'fiscal_position': invoice.fiscal_position.id,
+ 'payment_term': invoice.payment_term.id,
+ 'period_id': invoice.period_id.id,
+ 'invoice_line': {},
+ 'partner_bank_id': invoice.partner_bank_id.id,
+ }
+ def _merge_invoice_line_values(self, vals, new_invoice_line):
+ """This method merges an invoice line with the existing values from
+ previous line(s) that matches the merging key.
+ :param vals: Dictionary of values of the previous invoice line(s)
+ :param new_invoice_line: Recordset of the new line to merge.
+ :return: None
+ """
+ uom = self.env['product.uom'].browse(vals.get('uos_id', False))
+ uom_factor = uom.factor if uom.exists() else 1.0
+ uos_factor = new_invoice_line.uos_id.factor or 1.0
+ # merge the line with an existing line
+ vals['quantity'] += (new_invoice_line.quantity *
+ uos_factor / uom_factor)
+ def _get_draft_invoices(self):
+ """Overridable function to return draft invoices in selection"""
+ return self.filtered(lambda x: x.state == 'draft')
+ def do_merge(self, keep_references=True, date_invoice=False):
+ To merge similar type of account invoices.
+ Invoices will only be merged if:
+ * Account invoices are in draft
+ * Account invoices belong to the same partner
+ * Account invoices are have same company, partner, address, currency,
+ journal, currency, salesman, account, type
+ Lines will only be merged if:
+ * Invoice lines are exactly the same except for the quantity and unit
+ @param self: The object pointer.
+ @param keep_references: If True, keep reference of original invoices
+ @return: new account invoice id
+ def make_key(br, fields):
+ list_key = []
+ for field in fields:
+ field_val = getattr(br, field)
+ if field in ('product_id', 'account_id'):
+ if not field_val:
+ field_val = False
+ if (isinstance(field_val, browse_record) and
+ field != 'invoice_line_tax_id'):
+ field_val = field_val.id
+ elif isinstance(field_val, browse_null):
+ elif (isinstance(field_val, list) or
+ field == 'invoice_line_tax_id'):
+ field_val = ((6, 0, tuple([v.id for v in field_val])),)
+ list_key.append((field, field_val))
+ list_key.sort()
+ return tuple(list_key)
+ # compute what the new invoices should contain
+ new_invoices = {}
+ seen_origins = {}
+ seen_client_refs = {}
+ line_sequence = 1
+ for account_invoice in self._get_draft_invoices():
+ invoice_key = make_key(
+ account_invoice, self._get_invoice_key_cols())
+ new_invoice = new_invoices.setdefault(invoice_key, ({}, []))
+ origins = seen_origins.setdefault(invoice_key, set())
+ client_refs = seen_client_refs.setdefault(invoice_key, set())
+ new_invoice[1].append(account_invoice.id)
+ invoice_infos = new_invoice[0]
+ if not invoice_infos:
+ invoice_infos.update(
+ self._get_first_invoice_fields(account_invoice))
+ origins.add(account_invoice.origin)
+ client_refs.add(account_invoice.reference)
+ if not keep_references:
+ invoice_infos.pop('name')
+ else:
+ if account_invoice.name and keep_references:
+ invoice_infos['name'] = \
+ (invoice_infos['name'] or '') + \
+ (' %s' % (account_invoice.name,))
+ if account_invoice.origin and \
+ account_invoice.origin not in origins:
+ invoice_infos['origin'] = \
+ (invoice_infos['origin'] or '') + ' ' + \
+ account_invoice.origin
+ if account_invoice.reference \
+ and account_invoice.reference not in client_refs:
+ invoice_infos['reference'] = \
+ (invoice_infos['reference'] or '') + \
+ (' %s' % (account_invoice.reference,))
+ for invoice_line in account_invoice.invoice_line:
+ line_key = make_key(
+ invoice_line, self._get_invoice_line_key_cols())
+ o_line = invoice_infos['invoice_line'].setdefault(line_key, {})
+ if o_line:
+ self._merge_invoice_line_values(o_line, invoice_line)
+ o_line['o_line_ids'].append(invoice_line.id)
+ # append a new "standalone" line
+ o_line.update(
+ invoice_line._convert_to_write(invoice_line._cache))
+ if 'invoice_id' in o_line:
+ del o_line['invoice_id']
+ o_line['o_line_ids'] = [invoice_line.id]
+ o_line['sequence'] = line_sequence
+ line_sequence += 1
+ invoices_info = {}
+ invoice_lines_info = {}
+ for invoice_key, (invoice_data, old_ids) in new_invoices.iteritems():
+ # skip merges with only one invoice
+ if len(old_ids) < 2:
+ continue
+ if date_invoice:
+ invoice_data['date_invoice'] = date_invoice
+ # create the new invoice
+ invoice_line_data = invoice_data['invoice_line']
+ del invoice_data['invoice_line']
+ newinvoice = self.with_context(is_merge=True).create(invoice_data)
+ invoice_lines_info[newinvoice.id] = {}
+ for entry in invoice_line_data.values():
+ o_line_ids = entry['o_line_ids']
+ del entry['o_line_ids']
+ entry['invoice_id'] = newinvoice.id
+ inv_line = self.env['account.invoice.line'].create(entry)
+ for o_line_id in o_line_ids:
+ invoice_lines_info[newinvoice.id][o_line_id] = inv_line.id
+ newinvoice.button_reset_taxes()
+ invoices_info.update({newinvoice.id: old_ids})
+ # make triggers pointing to the old invoices point to the new
+ # invoice
+ for old_id in old_ids:
+ workflow.trg_redirect(
+ self.env.uid, 'account.invoice', old_id, newinvoice.id,
+ self.env.cr)
+ workflow.trg_validate(
+ self.env.uid, 'account.invoice', old_id, 'invoice_cancel',
+ # make link between original sale order if sale is not installed
+ # None if purchase is not installed
+ if 'sale.order' in self.env.registry:
+ so_obj = self.env['sale.order']
+ for new_invoice_id in invoices_info:
+ todos = so_obj.search(
+ [('invoice_ids', 'in', invoices_info[new_invoice_id])])
+ todos.write({'invoice_ids': [(4, new_invoice_id)]})
+ for org_so in todos:
+ for so_line in org_so.order_line:
+ org_ilines = so_line.mapped('invoice_lines')
+ invoice_line_ids = []
+ for org_iline in org_ilines:
+ # the sale.order, _prepare_invoice method
+ # allows to remove created invoice lines
+ # from the final sale order invoice.
+ # We need as a consequence to add a check.
+ if org_iline.id \
+ in invoice_lines_info[new_invoice_id]:
+ invoice_line_ids.append(
+ invoice_lines_info[
+ new_invoice_id][org_iline.id])
+ so_line.write(
+ {'invoice_lines': [(6, 0, invoice_line_ids)]})
+ # recreate link (if any) between original analytic account line
+ # (invoice time sheet for example) and this new invoice
+ anal_line_obj = self.env['account.analytic.line']
+ if 'invoice_id' in anal_line_obj._columns:
+ todos = anal_line_obj.search(
+ [('invoice_id', 'in', invoices_info[new_invoice_id])])
+ todos.write({'invoice_id': new_invoice_id})
+ return invoices_info, invoice_lines_info
@@ -0,0 +1,2 @@
+from . import test_account_invoice_merge
@@ -0,0 +1,71 @@
+# Copyright 2009-2017 Noviat.
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+from openerp.tests.common import TransactionCase
+from openerp.exceptions import Warning as UserError
+class TestAccountInvoiceMerge(TransactionCase):
+ def setUp(self):
+ super(TestAccountInvoiceMerge, self).setUp()
+ self.wiz_model = self.env['invoice.merge']
+ self.wiz_context = {'active_model': 'account.invoice'}
+ self.invoice_model = self.env['account.invoice']
+ self.account_payable = self.env.ref('account.a_pay')
+ self.partner_1 = self.env.ref('base.res_partner_1')
+ self.partner_2 = self.env.ref('base.res_partner_2')
+ self.supplier_invoice_1 = self.invoice_model.create(
+ {'journal_id': self.env.ref('account.expenses_journal').id,
+ 'type': 'in_invoice',
+ 'partner_id': self.partner_1.id,
+ 'account_id': self.account_payable.id,
+ 'invoice_line': [(0, 0, {'name': 'Inv 1 - Line 1',
+ 'price_unit': 100.0})],
+ })
+ self.supplier_invoice_2 = self.invoice_model.create(
+ 'invoice_line': [(0, 0, {'name': 'Inv 2 - Line 1',
+ 'price_unit': 150.0})],
+ self.supplier_invoice_3 = self.invoice_model.create(
+ 'partner_id': self.partner_2.id,
+ 'invoice_line': [(0, 0, {'name': 'Inv 3 - Line 1',
+ 'price_unit': 50.0})],
+ def test_invoice_merge(self):
+ invoices = self.supplier_invoice_1 + self.supplier_invoice_2
+ invoices_info, invoice_lines_info = invoices.do_merge()
+ for k in invoices_info:
+ new_inv = self.invoice_model.browse(k)
+ self.assertEqual(new_inv.amount_total, 250.0)
+ new_inv_line_ids = invoice_lines_info[k].values()
+ self.assertEqual(
+ len(new_inv_line_ids), len(new_inv.invoice_line._ids),
+ "Incorrect Invoice Line Mapping")
+ def test_invoice_merge_wizard(self):
+ ctx = dict(self.wiz_context, active_ids=invoices._ids)
+ wiz = self.wiz_model.with_context(ctx).create({})
+ act = wiz.merge_invoices()
+ len(act['domain'][0][2]), 3, "Error in invoice.merge wizard")
+ def test_dirty_check(self):
+ invoices = self.supplier_invoice_1 + self.supplier_invoice_3
+ with self.assertRaises(UserError):
+ wiz._dirty_check()
+from . import invoice_merge
@@ -0,0 +1,100 @@
+from openerp import api, fields, models, _
+class InvoiceMerge(models.TransientModel):
+ _name = "invoice.merge"
+ _description = "Merge Partner Invoice"
+ keep_references = fields.Boolean(
+ string='Keep references from original invoices', default=True)
+ date_invoice = fields.Date('Invoice Date')
+ @api.model
+ def _dirty_check(self):
+ if self._context.get('active_model') == 'account.invoice':
+ ids = self._context['active_ids']
+ if len(ids) < 2:
+ raise UserError(
+ _('Please select multiple invoice to merge in the list '
+ 'view.'))
+ invs = self.env['account.invoice'].browse(ids)
+ for i, inv in enumerate(invs):
+ if not inv._get_draft_invoices():
+ _('At least one of the selected invoices is %s!') %
+ inv.state)
+ if i > 0:
+ if inv.account_id != invs[0].account_id:
+ _('Not all invoices use the same account!'))
+ if inv.company_id != invs[0].company_id:
+ _('Not all invoices are at the same company!'))
+ if inv.partner_id != invs[0].partner_id:
+ _('Not all invoices are for the same partner!'))
+ if inv.type != invs[0].type:
+ _('Not all invoices are of the same type!'))
+ if inv.currency_id != invs[0].currency_id:
+ _('Not all invoices are at the same currency!'))
+ if inv.journal_id != invs[0].journal_id:
+ _('Not all invoices are at the same journal!'))
+ if inv.partner_bank_id != invs[0].partner_bank_id:
+ _('Not all invoices have the same '
+ 'Partner Bank Account!'))
+ return {}
+ def fields_view_get(self, view_id=None, view_type='form', toolbar=False,
+ submenu=False):
+ """Changes the view dynamically
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param context: A standard dictionary
+ @return: New arch of view.
+ res = super(InvoiceMerge, self).fields_view_get(
+ view_id=view_id, view_type=view_type, toolbar=toolbar,
+ submenu=False)
+ self._dirty_check()
+ return res
+ def merge_invoices(self):
+ """To merge similar type of account invoices.
+ @param ids: the ID or list of IDs
+ @return: account invoice action
+ aw_obj = self.env['ir.actions.act_window']
+ ids = self._context.get('active_ids', [])
+ invoices = self.env['account.invoice'].browse(ids)
+ allinvoices = invoices.do_merge(keep_references=self.keep_references,
+ date_invoice=self.date_invoice)[0]
+ xid = {
+ 'out_invoice': 'action_invoice_tree1',
+ 'out_refund': 'action_invoice_tree3',
+ 'in_invoice': 'action_invoice_tree2',
+ 'in_refund': 'action_invoice_tree4',
+ }[invoices[0].type]
+ action = aw_obj.for_xml_id('account', xid)
+ action.update({
+ 'domain': [('id', 'in', list(ids) + allinvoices.keys())],
+ return action
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+ <data>
+ <record id="view_invoice_merge" model="ir.ui.view">
+ <field name="name">Merger Partner Invoice</field>
+ <field name="model">invoice.merge</field>
+ <field name="arch" type="xml">
+ <form string="Merge Partner Invoice" version="7.0">
+ <group>
+ <separator
+ string="Are you sure you want to merge these invoices ?"
+ colspan="4" />
+ <p>
+Please note that:<br/><br/>
+Invoices will only be merged if:<br/>
+* Invoices are in draft<br/>
+* Invoices belong to the same partner<br/>
+* Invoices are have same company, partner, address, currency, journal, salesman, account, type<br/><br/>
+Lines will only be merged if:<br/>
+* Invoice lines are exactly the same except for the product,quantity and unit<br/>
+ </p>
+ </group>
+ <group name="options">
+ <field name="keep_references"/>
+ <field name="date_invoice"/>
+ <footer>
+ <button name="merge_invoices" string="Merge Invoices"
+ type="object" class="oe_highlight" />
+ or
+ <button string="Cancel" class="oe_link"
+ special="cancel" />
+ </footer>
+ </form>
+ </field>
+ </record>
+ <act_window name="Merge Partner Invoice" res_model="invoice.merge"
+ src_model="account.invoice" view_mode="form" target="new"
+ multi="True" key2="client_action_multi" id="action_view_invoice_merge" />
+ </data>
+</openerp>