[tryton-debian-vcs] tryton-modules-sale branch debian updated. debian/4.2.0-1-3-g837170a

Mathias Behrle tryton-debian-vcs at alioth.debian.org
Wed Jun 7 13:35:13 UTC 2017


The following commit has been merged in the debian branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-sale.git;a=commitdiff;h=debian/4.2.0-1-3-g837170a

commit 837170a0993856be7bdd9a976f1c8aa3c58228f5
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Jun 7 15:27:34 2017 +0200

    Merging upstream version 4.4.1.

diff --git a/CHANGELOG b/CHANGELOG
index aabd87e..0d5605f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,6 @@
+Version 4.4.1 - 2017-06-06
+* Bug fixes (see mercurial logs for details)
+
 Version 4.4.0 - 2017-05-01
 * Bug fixes (see mercurial logs for details)
 * Add sale price on product view from line
diff --git a/PKG-INFO b/PKG-INFO
index 352fa45..4289a81 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond_sale
-Version: 4.4.0
+Version: 4.4.1
 Summary: Tryton module for sale
 Home-page: http://www.tryton.org/
 Author: Tryton
diff --git a/sale.py b/sale.py
index fdd0df9..fa895cf 100644
--- a/sale.py
+++ b/sale.py
@@ -1129,7 +1129,6 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
         if self.product.type == 'service':
             return
         skip_ids = set(x.id for x in self.moves_ignored)
-        skip_ids.update(x.id for x in self.moves_recreated)
         quantity = abs(self.quantity)
         for move in self.moves:
             if move.state == 'done' or move.id in skip_ids:
diff --git a/setup.cfg b/setup.cfg
index 861a9f5..8bfd5a1 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -1,5 +1,4 @@
 [egg_info]
 tag_build = 
 tag_date = 0
-tag_svn_revision = 0
 
diff --git a/tryton.cfg b/tryton.cfg
index 67d4318..640f395 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=4.4.0
+version=4.4.1
 depends:
     account
     account_invoice
diff --git a/trytond_sale.egg-info/PKG-INFO b/trytond_sale.egg-info/PKG-INFO
index aae1771..794ea26 100644
--- a/trytond_sale.egg-info/PKG-INFO
+++ b/trytond_sale.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 1.1
 Name: trytond-sale
-Version: 4.4.0
+Version: 4.4.1
 Summary: Tryton module for sale
 Home-page: http://www.tryton.org/
 Author: Tryton
commit f1cf75e70b91251c7605cdcb51152f9ab6f42e13
Author: Mathias Behrle <mathiasb at m9s.biz>
Date:   Wed Jun 7 15:26:55 2017 +0200

    Merging upstream version 4.4.0.

diff --git a/CHANGELOG b/CHANGELOG
index 25a9951..aabd87e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,8 @@
+Version 4.4.0 - 2017-05-01
+* Bug fixes (see mercurial logs for details)
+* Add sale price on product view from line
+* Allow no lead time on product
+
 Version 4.2.0 - 2016-11-28
 * Bug fixes (see mercurial logs for details)
 * Manage readonly state on Sale Line
diff --git a/COPYRIGHT b/COPYRIGHT
index 48f96af..dba4452 100644
--- a/COPYRIGHT
+++ b/COPYRIGHT
@@ -1,6 +1,6 @@
-Copyright (C) 2008-2016 Cédric Krier.
+Copyright (C) 2008-2017 Cédric Krier.
 Copyright (C) 2008-2013 Bertrand Chenal.
-Copyright (C) 2008-2016 B2CK SPRL.
+Copyright (C) 2008-2017 B2CK SPRL.
 Copyright (C) 2004-2008 Tiny SPRL.
 
 This program is free software: you can redistribute it and/or modify
diff --git a/PKG-INFO b/PKG-INFO
index 6c34169..352fa45 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond_sale
-Version: 4.2.0
+Version: 4.4.0
 Summary: Tryton module for sale
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.2/
+Download-URL: http://downloads.tryton.org/4.4/
 Description: trytond_sale
         ============
         
@@ -51,7 +51,7 @@ Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
 Classifier: Natural Language :: Bulgarian
 Classifier: Natural Language :: Catalan
 Classifier: Natural Language :: Chinese (Simplified)
diff --git a/__init__.py b/__init__.py
index 888febc..1e151f6 100644
--- a/__init__.py
+++ b/__init__.py
@@ -28,6 +28,8 @@ def register():
         HandleInvoiceExceptionAsk,
         ReturnSaleStart,
         Configuration,
+        ConfigurationSequence,
+        ConfigurationSaleMethod,
         Invoice,
         InvoiceLine,
         module='sale', type_='model')
diff --git a/configuration.py b/configuration.py
index 7a6bb46..dfd5c0b 100644
--- a/configuration.py
+++ b/configuration.py
@@ -1,31 +1,140 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
-from trytond.model import ModelView, ModelSQL, ModelSingleton, fields
-from trytond.pyson import Eval, Bool
+from trytond import backend
+from trytond.model import (ModelView, ModelSQL, ModelSingleton, ValueMixin,
+    fields)
+from trytond.pool import Pool
+from trytond.pyson import Eval
+from trytond.tools.multivalue import migrate_property
+from trytond.modules.company.model import (
+    CompanyMultiValueMixin, CompanyValueMixin)
 
-__all__ = ['Configuration']
+__all__ = ['Configuration',
+    'ConfigurationSequence', 'ConfigurationSaleMethod']
+sale_invoice_method = fields.Selection(
+    'get_sale_invoice_methods', "Sale Invoice Method")
+sale_shipment_method = fields.Selection(
+    'get_sale_shipment_methods', "Sale Shipment Method")
 
 
-class Configuration(ModelSingleton, ModelSQL, ModelView):
+def get_sale_methods(field_name):
+    @classmethod
+    def func(cls):
+        pool = Pool()
+        Sale = pool.get('sale.sale')
+        return Sale.fields_get([field_name])[field_name]['selection']
+    return func
+
+
+def default_func(field_name):
+    @classmethod
+    def default(cls, **pattern):
+        return getattr(
+            cls.multivalue_model(field_name),
+            'default_%s' % field_name, lambda: None)()
+    return default
+
+
+class Configuration(
+        ModelSingleton, ModelSQL, ModelView, CompanyMultiValueMixin):
     'Sale Configuration'
     __name__ = 'sale.configuration'
-    sale_sequence = fields.Property(fields.Many2One('ir.sequence',
-            'Sale Sequence', domain=[
+    sale_sequence = fields.MultiValue(fields.Many2One(
+            'ir.sequence', "Sale Sequence", required=True,
+            domain=[
                 ('company', 'in',
                     [Eval('context', {}).get('company', -1), None]),
                 ('code', '=', 'sale.sale'),
-                ], required=True))
-    sale_invoice_method = fields.Property(fields.Selection([
-                ('manual', 'Manual'),
-                ('order', 'On Order Processed'),
-                ('shipment', 'On Shipment Sent')
-                ], 'Sale Invoice Method', states={
-                'required': Bool(Eval('context', {}).get('company')),
-                }))
-    sale_shipment_method = fields.Property(fields.Selection([
-                ('manual', 'Manual'),
-                ('order', 'On Order Processed'),
-                ('invoice', 'On Invoice Paid'),
-                ], 'Sale Shipment Method', states={
-                'required': Bool(Eval('context', {}).get('company')),
-                }))
+                ]))
+    sale_invoice_method = fields.MultiValue(sale_invoice_method)
+    get_sale_invoice_methods = get_sale_methods('invoice_method')
+    sale_shipment_method = fields.MultiValue(sale_shipment_method)
+    get_sale_shipment_methods = get_sale_methods('shipment_method')
+
+    @classmethod
+    def multivalue_model(cls, field):
+        pool = Pool()
+        if field in {'sale_invoice_method', 'sale_shipment_method'}:
+            return pool.get('sale.configuration.sale_method')
+        if field == 'sale_sequence':
+            return pool.get('sale.configuration.sequence')
+        return super(Configuration, cls).multivalue_model(field)
+
+    default_sale_sequence = default_func('sale_sequence')
+    default_sale_invoice_method = default_func('sale_invoice_method')
+    default_sale_shipment_method = default_func('sale_shipment_method')
+
+
+class ConfigurationSequence(ModelSQL, CompanyValueMixin):
+    "Sale Configuration Sequence"
+    __name__ = 'sale.configuration.sequence'
+    sale_sequence = fields.Many2One(
+        'ir.sequence', "Sale Sequence", required=True,
+        domain=[
+            ('company', 'in', [Eval('company', -1), None]),
+            ('code', '=', 'sale.sale'),
+            ],
+        depends=['company'])
+
+    @classmethod
+    def __register__(cls, module_name):
+        TableHandler = backend.get('TableHandler')
+        exist = TableHandler.table_exist(cls._table)
+
+        super(ConfigurationSequence, cls).__register__(module_name)
+
+        if not exist:
+            cls._migrate_property([], [], [])
+
+    @classmethod
+    def _migrate_property(cls, field_names, value_names, fields):
+        field_names.append('sale_sequence')
+        value_names.append('sale_sequence')
+        fields.append('company')
+        migrate_property(
+            'sale.configuration', field_names, cls, value_names,
+            fields=fields)
+
+    @classmethod
+    def default_sale_sequence(cls):
+        pool = Pool()
+        ModelData = pool.get('ir.model.data')
+        try:
+            return ModelData.get_id('sale', 'sequence_sale')
+        except KeyError:
+            return None
+
+
+class ConfigurationSaleMethod(ModelSQL, ValueMixin):
+    "Sale Configuration Sale Method"
+    __name__ = 'sale.configuration.sale_method'
+    sale_invoice_method = sale_invoice_method
+    get_sale_invoice_methods = get_sale_methods('invoice_method')
+    sale_shipment_method = sale_shipment_method
+    get_sale_shipment_methods = get_sale_methods('shipment_method')
+
+    @classmethod
+    def __register__(cls, module_name):
+        TableHandler = backend.get('TableHandler')
+        exist = TableHandler.table_exist(cls._table)
+
+        super(ConfigurationSaleMethod, cls).__register__(module_name)
+
+        if not exist:
+            cls._migrate_property([], [], [])
+
+    @classmethod
+    def _migrate_property(cls, field_names, value_names, fields):
+        field_names.extend(['sale_invoice_method', 'sale_shipment_method'])
+        value_names.extend(['sale_invoice_method', 'sale_shipment_method'])
+        migrate_property(
+            'sale.configuration', field_names, cls, value_names,
+            fields=fields)
+
+    @classmethod
+    def default_sale_invoice_method(cls):
+        return 'order'
+
+    @classmethod
+    def default_sale_shipment_method(cls):
+        return 'order'
diff --git a/configuration.xml b/configuration.xml
index c54c6e8..0c165f6 100644
--- a/configuration.xml
+++ b/configuration.xml
@@ -30,21 +30,4 @@ this repository contains the full copyright notices and license terms. -->
             action="act_sale_configuration_form"
             id="menu_sale_configuration" icon="tryton-list"/>
     </data>
-    <data noupdate="1">
-        <record model="ir.property" id="property_sale_sequence">
-            <field name="field"
-                search="[('model.model', '=', 'sale.configuration'), ('name', '=', 'sale_sequence')]"/>
-            <field name="value" eval="'ir.sequence,' + str(ref('sequence_sale'))"/>
-        </record>
-        <record model="ir.property" id="property_sale_invoice_method">
-            <field name="field"
-                search="[('model.model', '=', 'sale.configuration'), ('name', '=', 'sale_invoice_method')]" />
-            <field name="value">,order</field>
-        </record>
-        <record model="ir.property" id="property_sale_shipment_method">
-            <field name="field"
-                search="[('model.model', '=', 'sale.configuration'), ('name', '=', 'sale_shipment_method')]" />
-            <field name="value">,order</field>
-        </record>
-    </data>
 </tryton>
diff --git a/invoice.py b/invoice.py
index 09f351c..0b185fa 100644
--- a/invoice.py
+++ b/invoice.py
@@ -1,5 +1,6 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
+from itertools import chain
 from functools import wraps
 from sql import Table
 
@@ -43,24 +44,17 @@ class Invoice:
                     'an invoice generated by a sale.'),
                 })
 
-    @classmethod
-    def get_sale_exception_state(cls, invoices, name):
-        Sale = Pool().get('sale.sale')
-        sales = Sale.search([
-                ('invoices', 'in', [i.id for i in invoices]),
-                ])
+    def get_sale_exception_state(self, name):
+        sales = self.sales
 
         recreated = tuple(i for p in sales for i in p.invoices_recreated)
         ignored = tuple(i for p in sales for i in p.invoices_ignored)
 
-        states = {}
-        for invoice in invoices:
-            states[invoice.id] = ''
-            if invoice in recreated:
-                states[invoice.id] = 'recreated'
-            elif invoice.id in ignored:
-                states[invoice.id] = 'ignored'
-        return states
+        if self in recreated:
+            return 'recreated'
+        elif self in ignored:
+            return 'ignored'
+        return ''
 
     def get_sales(self, name):
         pool = Pool()
@@ -106,10 +100,8 @@ class Invoice:
     @classmethod
     @Workflow.transition('draft')
     def draft(cls, invoices):
-        Sale = Pool().get('sale.sale')
-        sales = Sale.search([
-                ('invoices', 'in', [i.id for i in invoices]),
-                ])
+        sales = list(chain(*(i.sales for i in invoices)))
+
         if sales and any(i.state == 'cancel' for i in invoices):
             cls.raise_user_error('reset_invoice_sale')
 
@@ -148,7 +140,7 @@ class InvoiceLine:
         SaleLine = pool.get('sale.line')
         name = super(InvoiceLine, self).origin_name
         if isinstance(self.origin, SaleLine):
-            name = self.origin.sale.rec_name
+            name = self.origin.sale.reference or self.origin.sale.rec_name
         return name
 
     @classmethod
@@ -156,3 +148,16 @@ class InvoiceLine:
         models = super(InvoiceLine, cls)._get_origin()
         models.append('sale.line')
         return models
+
+    @classmethod
+    def delete(cls, lines):
+        pool = Pool()
+        Sale = pool.get('sale.sale')
+        with Transaction().set_context(_check_access=False):
+            lines = cls.browse(lines)
+            invoices = (l.invoice for l in lines
+                if l.type == 'line' and l.invoice)
+            sales = [s for i in invoices for s in i.sales]
+        super(InvoiceLine, cls).delete(lines)
+        with Transaction().set_context(_check_access=False):
+            Sale.process(sales)
diff --git a/locale/bg.po b/locale/bg.po
index 7c96bfb..34dab9b 100644
--- a/locale/bg.po
+++ b/locale/bg.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -65,6 +65,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Продажен"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
@@ -118,6 +122,85 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Променено от"
 
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Създаден от"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Име"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Начин на фактурине на продажба"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Начин на фактуриране на продажба"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Фирма"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Създаден от"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Име"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Фактури на домейн"
@@ -726,6 +809,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Конфигурация на продажба"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Обработване за грешка в фактура"
@@ -841,30 +932,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Създаден наново"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Ръчно"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "При обработена поръчка"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "При изпращане на пратка"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Ръчно"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "При плащане на фактура"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "При обработена поръчка"
-
 #, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
diff --git a/locale/ca.po b/locale/ca.po
index fabe690..46d84b6 100644
--- a/locale/ca.po
+++ b/locale/ca.po
@@ -19,10 +19,8 @@ msgstr ""
 "\"%(sale)s\"."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
-msgstr ""
-"Falta la propietat \"Compte d'ingressos\" per defecte de la venda "
-"\"%(sale)s\"."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
+msgstr "Falta el \"compte de d'ingressos\" per defecte de la venda \"%(sale)s\"."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -74,6 +72,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Vendible"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr "Preu de venda"
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr "UdM de venda"
@@ -126,6 +128,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Usuari de modificació"
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Data de creació"
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Usuari de creació"
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Mètode de facturació"
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Mètode d'enviament"
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Data de modificació"
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Usuari de modificació"
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Data de creació"
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Usuari de creació"
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr "Seqüència de venda"
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Data de modificació"
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Usuari de modificació"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Domini factures"
@@ -723,6 +789,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Configuració de les vendes"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr "Configuració del mètode de venda"
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr "Configuració de les seqüencies de venda"
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Gestiona excepció de factura"
@@ -835,30 +909,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Recreada"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Manual"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "Al processar la comanda"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "Al enviar-ho"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Manual"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "Al pagar la factura"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "Al processar la comanda"
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Cancel·lat"
diff --git a/locale/cs.po b/locale/cs.po
index 1cbea21..a9e02b9 100644
--- a/locale/cs.po
+++ b/locale/cs.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -64,6 +64,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -117,6 +121,72 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr ""
@@ -720,6 +790,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr ""
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr ""
@@ -833,30 +911,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr ""
diff --git a/locale/de.po b/locale/de.po
index eb8fcb0..d256723 100644
--- a/locale/de.po
+++ b/locale/de.po
@@ -21,10 +21,8 @@ msgstr ""
 "eingetragen."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
-msgstr ""
-"Für Verkauf \"%(sale)s\"  ist keine Standardeigenschaft für das Ertragskonto"
-" eingetragen."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
+msgstr "Für den Verkauf \"%(sale)s\" ist kein Standard-Ertragskonto eingetragen."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -82,6 +80,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Verkäuflich"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr "Verkaufspreis"
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr "Einheit Verkauf"
@@ -134,6 +136,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Letzte Änderung durch"
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Rechnungsstellung Verkauf"
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Liefermethode Verkauf"
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Unternehmen"
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr "Nummernkreis Verkauf"
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Wertebereich Rechnungen (Domain)"
@@ -732,6 +798,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Einstellungen Verkauf"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr "Einstellungen Verkauf Verkaufsmethode"
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr "Einstellungen Verkauf Nummernkreis"
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Nachfrage Rechnungsvorbehalt"
@@ -844,30 +918,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Neu erstellt"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Manuell"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "Bei Auftragsausführung"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "Bei Lieferung"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Manuell"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "Bei Bezahlung"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "Bei Auftragsausführung"
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Annulliert"
diff --git a/locale/es.po b/locale/es.po
index 0ab6d86..737f51d 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -19,10 +19,8 @@ msgstr ""
 "\"%(sale)s\"."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
-msgstr ""
-"Falta la propiedad \"Cuenta de ingresos\" por defecto en la venta "
-"\"%(sale)s\"."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
+msgstr "Falta la \"cuenta de ingresos\" por defecto de la venta \"%(sale)s\"."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -74,6 +72,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Vendible"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr "Precio de venta"
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr "UdM de venta"
@@ -126,6 +128,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Usuario de modificación"
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Fecha de creación"
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Usuario de creación"
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Método de facturación"
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Método de envío"
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Fecha de modificación"
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Usuario de modificación"
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Fecha de creación"
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Usuario de creación"
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr "Secuencia de venta"
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Fecha de modificación"
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Usuario de modificación"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Dominio de facturas"
@@ -723,6 +789,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Configuración ventas"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr "Configuración del método de venta."
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr "Configuración de las secuencias de venta"
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Gestionar excepción de factura"
@@ -835,30 +909,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Recreada"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Manual"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "Al procesar el pedido"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "Al enviar"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Manual"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "Al pagar la factura"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "Al procesar el pedido"
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Cancelada"
diff --git a/locale/es_419.po b/locale/es_419.po
index 3e097a3..c177f52 100644
--- a/locale/es_419.po
+++ b/locale/es_419.po
@@ -4,7 +4,7 @@ msgstr "Content-Type: text/plain; charset=utf-8\n"
 
 msgctxt "error:account.invoice:"
 msgid "You cannot reset to draft an invoice generated by a sale."
-msgstr "No puede restablecer a borrador una factura generada por una venta."
+msgstr ""
 
 msgctxt "error:sale.line:"
 msgid "Product \"%(product)s\" of sale %(sale)s misses a revenue account."
@@ -15,10 +15,8 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
-"Falta la propiedad por defecto \"Cuenta de ingresos\" en la venta "
-"\"%(sale)s\"."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -36,11 +34,11 @@ msgstr ""
 
 msgctxt "error:sale.sale:"
 msgid "It misses an \"Account Receivable\" on the party \"%s\"."
-msgstr "Falta definir la \"Cuenta por Cobrar\" del tercero \\\"%s\\\"."
+msgstr "Falta definir la \"Cuenta por Cobrar\" del tercero \"%s\"."
 
 msgctxt "error:sale.sale:"
 msgid "Sale \"%s\" must be cancelled before deletion."
-msgstr "La venta \"%s\" debe ser cancelada antes de ser eliminada."
+msgstr ""
 
 msgctxt "error:sale.sale:"
 msgid "Warehouse must be defined for the quotation of sale \"%s\"."
@@ -48,15 +46,15 @@ msgstr "Se debe definir la bodega para la cotización de la venta \"%s\"."
 
 msgctxt "error:stock.shipment.out.return:"
 msgid "You cannot reset to draft a move generated by a sale."
-msgstr "No puede restablecer a borrador un movimiento generado por una venta."
+msgstr ""
 
 msgctxt "error:stock.shipment.out:"
 msgid "You cannot reset to draft a move generated by a sale."
-msgstr "No puede restablecer a borrador un movimiento generado por una venta."
+msgstr ""
 
 msgctxt "field:account.invoice,sale_exception_state:"
 msgid "Exception State"
-msgstr ""
+msgstr "Estado excepción"
 
 msgctxt "field:account.invoice,sales:"
 msgid "Sales"
@@ -70,6 +68,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -92,7 +94,7 @@ msgstr ""
 
 msgctxt "field:sale.configuration,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.configuration,id:"
 msgid "ID"
@@ -120,7 +122,71 @@ msgstr ""
 
 msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr ""
 
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
@@ -156,7 +222,7 @@ msgstr ""
 
 msgctxt "field:sale.line,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.line,description:"
 msgid "Description"
@@ -214,10 +280,9 @@ msgctxt "field:sale.line,rec_name:"
 msgid "Name"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:sale.line,sale:"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "field:sale.line,sale_state:"
 msgid "Sale State"
@@ -253,11 +318,11 @@ msgstr ""
 
 msgctxt "field:sale.line,unit_price:"
 msgid "Unit Price"
-msgstr ""
+msgstr "Precio unitario"
 
 msgctxt "field:sale.line,warehouse:"
 msgid "Warehouse"
-msgstr ""
+msgstr "Bodega"
 
 msgctxt "field:sale.line,write_date:"
 msgid "Write Date"
@@ -265,7 +330,7 @@ msgstr ""
 
 msgctxt "field:sale.line,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
 
 msgctxt "field:sale.line-account.tax,create_date:"
 msgid "Create Date"
@@ -273,7 +338,7 @@ msgstr ""
 
 msgctxt "field:sale.line-account.tax,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.line-account.tax,id:"
 msgid "ID"
@@ -297,7 +362,7 @@ msgstr ""
 
 msgctxt "field:sale.line-account.tax,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
 
 msgctxt "field:sale.line-ignored-stock.move,create_date:"
 msgid "Create Date"
@@ -305,7 +370,7 @@ msgstr ""
 
 msgctxt "field:sale.line-ignored-stock.move,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.line-ignored-stock.move,id:"
 msgid "ID"
@@ -329,7 +394,7 @@ msgstr ""
 
 msgctxt "field:sale.line-ignored-stock.move,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
 
 msgctxt "field:sale.line-recreated-stock.move,create_date:"
 msgid "Create Date"
@@ -337,7 +402,7 @@ msgstr ""
 
 msgctxt "field:sale.line-recreated-stock.move,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.line-recreated-stock.move,id:"
 msgid "ID"
@@ -361,7 +426,7 @@ msgstr ""
 
 msgctxt "field:sale.line-recreated-stock.move,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
 
 msgctxt "field:sale.return_sale.start,id:"
 msgid "ID"
@@ -381,7 +446,7 @@ msgstr ""
 
 msgctxt "field:sale.sale,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.sale,currency:"
 msgid "Currency"
@@ -411,10 +476,9 @@ msgctxt "field:sale.sale,invoice_state:"
 msgid "Invoice State"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:sale.sale,invoices:"
 msgid "Invoices"
-msgstr "Invoices"
+msgstr ""
 
 msgctxt "field:sale.sale,invoices_ignored:"
 msgid "Ignored Invoices"
@@ -478,16 +542,15 @@ msgstr ""
 
 msgctxt "field:sale.sale,shipment_returns:"
 msgid "Shipment Returns"
-msgstr ""
+msgstr "Devolución"
 
 msgctxt "field:sale.sale,shipment_state:"
 msgid "Shipment State"
-msgstr ""
+msgstr "Estado de envío"
 
-#, fuzzy
 msgctxt "field:sale.sale,shipments:"
 msgid "Shipments"
-msgstr "Shipments"
+msgstr "Envíos"
 
 msgctxt "field:sale.sale,state:"
 msgid "State"
@@ -511,15 +574,15 @@ msgstr ""
 
 msgctxt "field:sale.sale,untaxed_amount:"
 msgid "Untaxed"
-msgstr ""
+msgstr "Base sin Impuesto"
 
 msgctxt "field:sale.sale,untaxed_amount_cache:"
 msgid "Untaxed Cache"
-msgstr ""
+msgstr "Base sin impuesto cache"
 
 msgctxt "field:sale.sale,warehouse:"
 msgid "Warehouse"
-msgstr ""
+msgstr "Bodega"
 
 msgctxt "field:sale.sale,write_date:"
 msgid "Write Date"
@@ -527,7 +590,7 @@ msgstr ""
 
 msgctxt "field:sale.sale,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
 
 msgctxt "field:sale.sale-ignored-account.invoice,create_date:"
 msgid "Create Date"
@@ -535,25 +598,23 @@ msgstr ""
 
 msgctxt "field:sale.sale-ignored-account.invoice,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.sale-ignored-account.invoice,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:sale.sale-ignored-account.invoice,invoice:"
 msgid "Invoice"
-msgstr "Invoices"
+msgstr ""
 
 msgctxt "field:sale.sale-ignored-account.invoice,rec_name:"
 msgid "Name"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:sale.sale-ignored-account.invoice,sale:"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "field:sale.sale-ignored-account.invoice,write_date:"
 msgid "Write Date"
@@ -561,7 +622,7 @@ msgstr ""
 
 msgctxt "field:sale.sale-ignored-account.invoice,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
 
 msgctxt "field:sale.sale-recreated-account.invoice,create_date:"
 msgid "Create Date"
@@ -569,25 +630,23 @@ msgstr ""
 
 msgctxt "field:sale.sale-recreated-account.invoice,create_uid:"
 msgid "Create User"
-msgstr "Creado por usuario"
+msgstr ""
 
 msgctxt "field:sale.sale-recreated-account.invoice,id:"
 msgid "ID"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:sale.sale-recreated-account.invoice,invoice:"
 msgid "Invoice"
-msgstr "Invoices"
+msgstr ""
 
 msgctxt "field:sale.sale-recreated-account.invoice,rec_name:"
 msgid "Name"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:sale.sale-recreated-account.invoice,sale:"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "field:sale.sale-recreated-account.invoice,write_date:"
 msgid "Write Date"
@@ -595,16 +654,15 @@ msgstr ""
 
 msgctxt "field:sale.sale-recreated-account.invoice,write_uid:"
 msgid "Write User"
-msgstr "Modificado por usuario"
+msgstr ""
 
-#, fuzzy
 msgctxt "field:stock.move,sale:"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "field:stock.move,sale_exception_state:"
 msgid "Exception State"
-msgstr ""
+msgstr "Estado de excepción"
 
 msgctxt "help:sale.handle.invoice.exception.ask,recreate_invoices:"
 msgid ""
@@ -613,129 +671,134 @@ msgstr ""
 
 msgctxt "model:ir.action,name:act_invoice_form"
 msgid "Invoices"
-msgstr "Invoices"
+msgstr ""
 
 msgctxt "model:ir.action,name:act_open_customer"
 msgid "Parties associated to Sales"
-msgstr "Parties associated to Sales"
+msgstr "Clientes"
 
 msgctxt "model:ir.action,name:act_return_form"
 msgid "Returns"
-msgstr "Returns"
+msgstr "Devolución"
 
 msgctxt "model:ir.action,name:act_sale_configuration_form"
 msgid "Sales Configuration"
-msgstr "Sales Configuration"
+msgstr ""
 
 msgctxt "model:ir.action,name:act_sale_form"
 msgid "Sales"
-msgstr "Sales"
+msgstr ""
 
 msgctxt "model:ir.action,name:act_sale_form2"
 msgid "Sales"
-msgstr "Sales"
+msgstr ""
 
 msgctxt "model:ir.action,name:act_sale_invoice_relate"
 msgid "Sales"
-msgstr "Sales"
+msgstr ""
 
 msgctxt "model:ir.action,name:act_sale_shipments_relate"
 msgid "Sales"
-msgstr "Sales"
+msgstr ""
 
 msgctxt "model:ir.action,name:act_shipment_form"
 msgid "Shipments"
-msgstr "Shipments"
+msgstr "Envíos"
 
 msgctxt "model:ir.action,name:report_sale"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "model:ir.action,name:wizard_invoice_handle_exception"
 msgid "Handle Invoice Exception"
-msgstr "Handle Invoice Exception"
+msgstr ""
 
 msgctxt "model:ir.action,name:wizard_return_sale"
 msgid "Return Sale"
-msgstr "Return Sale"
+msgstr "Devolución de venta"
 
 msgctxt "model:ir.action,name:wizard_shipment_handle_exception"
 msgid "Handle Shipment Exception"
-msgstr "Handle Shipment Exception"
+msgstr ""
 
 msgctxt "model:ir.action.act_window.domain,name:act_sale_form_domain_all"
 msgid "All"
-msgstr "All"
+msgstr ""
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_sale_form_domain_confirmed"
 msgid "Confirmed"
-msgstr "Confirmed"
+msgstr ""
 
 msgctxt "model:ir.action.act_window.domain,name:act_sale_form_domain_draft"
 msgid "Draft"
-msgstr "Draft"
+msgstr ""
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_sale_form_domain_processing"
 msgid "Processing"
-msgstr "Processing"
+msgstr ""
 
 msgctxt ""
 "model:ir.action.act_window.domain,name:act_sale_form_domain_quotation"
 msgid "Quotation"
-msgstr "Quotation"
+msgstr "Cotización"
 
 msgctxt "model:ir.sequence,name:sequence_sale"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "model:ir.sequence.type,name:sequence_type_sale"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_configuration"
 msgid "Configuration"
-msgstr "Configuration"
+msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_customer"
 msgid "Parties associated to Sales"
-msgstr "Parties associated to Sales"
+msgstr "Clientes"
 
 msgctxt "model:ir.ui.menu,name:menu_sale"
 msgid "Sales"
-msgstr "Sales"
+msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_sale_configuration"
 msgid "Sales Configuration"
-msgstr "Sales Configuration"
+msgstr ""
 
 msgctxt "model:ir.ui.menu,name:menu_sale_form"
 msgid "Sales"
-msgstr "Sales"
+msgstr ""
 
 msgctxt "model:res.group,name:group_sale"
 msgid "Sales"
-msgstr "Sales"
+msgstr ""
 
 msgctxt "model:res.group,name:group_sale_admin"
 msgid "Sales Administrator"
-msgstr "Sales Administrator"
+msgstr ""
 
-#, fuzzy
 msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
-msgstr "Sales Configuration"
+msgstr ""
+
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
 
-#, fuzzy
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
-msgstr "Handle Invoice Exception"
+msgstr ""
 
-#, fuzzy
 msgctxt "model:sale.handle.shipment.exception.ask,name:"
 msgid "Handle Shipment Exception"
-msgstr "Handle Shipment Exception"
+msgstr ""
 
 msgctxt "model:sale.line,name:"
 msgid "Sale Line"
@@ -753,15 +816,13 @@ msgctxt "model:sale.line-recreated-stock.move,name:"
 msgid "Sale Line - Recreated Move"
 msgstr ""
 
-#, fuzzy
 msgctxt "model:sale.return_sale.start,name:"
 msgid "Return Sale"
-msgstr "Return Sale"
+msgstr "Crear devolución de venta"
 
-#, fuzzy
 msgctxt "model:sale.sale,name:"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "model:sale.sale-ignored-account.invoice,name:"
 msgid "Sale - Ignored Invoice"
@@ -771,10 +832,9 @@ msgctxt "model:sale.sale-recreated-account.invoice,name:"
 msgid "Sale - Recreated Invoice"
 msgstr ""
 
-#, fuzzy
 msgctxt "report:sale.sale:"
 msgid ":"
-msgstr ":"
+msgstr ""
 
 msgctxt "report:sale.sale:"
 msgid "Amount"
@@ -794,7 +854,7 @@ msgstr ""
 
 msgctxt "report:sale.sale:"
 msgid "Draft Sale Order"
-msgstr ""
+msgstr "Pedido de venta en borrador"
 
 msgctxt "report:sale.sale:"
 msgid "Quantity"
@@ -802,7 +862,7 @@ msgstr ""
 
 msgctxt "report:sale.sale:"
 msgid "Quotation N°:"
-msgstr ""
+msgstr "Cotización Nº:"
 
 msgctxt "report:sale.sale:"
 msgid "Reference:"
@@ -810,7 +870,7 @@ msgstr ""
 
 msgctxt "report:sale.sale:"
 msgid "Sale Order N°:"
-msgstr ""
+msgstr "Pedido Nº:"
 
 msgctxt "report:sale.sale:"
 msgid "Taxes"
@@ -822,7 +882,7 @@ msgstr ""
 
 msgctxt "report:sale.sale:"
 msgid "Total (excl. taxes):"
-msgstr ""
+msgstr "Total (sin impuestos):"
 
 msgctxt "report:sale.sale:"
 msgid "Total:"
@@ -830,7 +890,7 @@ msgstr ""
 
 msgctxt "report:sale.sale:"
 msgid "Unit Price"
-msgstr ""
+msgstr "Precio unitario"
 
 msgctxt "selection:account.invoice,sale_exception_state:"
 msgid ""
@@ -844,57 +904,29 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Confirmed"
-msgstr "Confirmed"
+msgstr ""
 
 msgctxt "selection:sale.line,sale_state:"
 msgid "Done"
 msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Draft"
-msgstr "Draft"
+msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Processing"
-msgstr "Processing"
+msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Quotation"
-msgstr "Quotation"
+msgstr "Cotización"
 
 msgctxt "selection:sale.line,type:"
 msgid "Comment"
@@ -972,29 +1004,25 @@ msgctxt "selection:sale.sale,state:"
 msgid "Canceled"
 msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.sale,state:"
 msgid "Confirmed"
-msgstr "Confirmed"
+msgstr ""
 
 msgctxt "selection:sale.sale,state:"
 msgid "Done"
 msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.sale,state:"
 msgid "Draft"
-msgstr "Draft"
+msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.sale,state:"
 msgid "Processing"
-msgstr "Processing"
+msgstr ""
 
-#, fuzzy
 msgctxt "selection:sale.sale,state:"
 msgid "Quotation"
-msgstr "Quotation"
+msgstr "Cotización"
 
 msgctxt "selection:stock.move,sale_exception_state:"
 msgid ""
@@ -1008,10 +1036,9 @@ msgctxt "selection:stock.move,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-#, fuzzy
 msgctxt "view:party.party:"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "view:product.template:"
 msgid "Customers"
@@ -1039,31 +1066,27 @@ msgstr ""
 
 msgctxt "view:sale.return_sale.start:"
 msgid "Are you sure to return those/this sale(s)?"
-msgstr ""
+msgstr "Está seguro que desea devolver esta(s) venta(s)?"
 
 msgctxt "view:sale.sale:"
 msgid "Cancel"
 msgstr ""
 
-#, fuzzy
 msgctxt "view:sale.sale:"
 msgid "Confirm"
-msgstr "Confirmed"
+msgstr ""
 
-#, fuzzy
 msgctxt "view:sale.sale:"
 msgid "Draft"
-msgstr "Draft"
+msgstr ""
 
-#, fuzzy
 msgctxt "view:sale.sale:"
 msgid "Handle Invoice Exception"
-msgstr "Handle Invoice Exception"
+msgstr ""
 
-#, fuzzy
 msgctxt "view:sale.sale:"
 msgid "Handle Shipment Exception"
-msgstr "Handle Shipment Exception"
+msgstr ""
 
 msgctxt "view:sale.sale:"
 msgid "Other Info"
@@ -1075,12 +1098,11 @@ msgstr ""
 
 msgctxt "view:sale.sale:"
 msgid "Quote"
-msgstr ""
+msgstr "Cotizar"
 
-#, fuzzy
 msgctxt "view:sale.sale:"
 msgid "Sale"
-msgstr "Sale"
+msgstr ""
 
 msgctxt "view:stock.move:"
 msgid "Cancel"
@@ -1113,4 +1135,4 @@ msgstr ""
 #, fuzzy
 msgctxt "wizard_button:sale.return_sale,start,return_:"
 msgid "Return"
-msgstr "Returns"
+msgstr "Devolución"
diff --git a/locale/fr.po b/locale/fr.po
index 31095fc..0a47955 100644
--- a/locale/fr.po
+++ b/locale/fr.po
@@ -18,10 +18,8 @@ msgstr ""
 "%(sale)s »."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
-msgstr ""
-"La propriété par défaut « compte de produit » est absente de la vente « "
-"%(sale)s »."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
+msgstr "La vente « %(sale)s » manque un « compte de produits » par défaut."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -73,6 +71,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Vendable"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr "Prix de vente"
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr "UDM de vente"
@@ -125,6 +127,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Mis à jour par"
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Méthode de facturation de vente"
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Méthode d'expédition de vente"
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Société"
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr "Séquence de vente"
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Domaine des factures"
@@ -722,6 +788,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Configuration des ventes"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr "Configuration de vente Méthode de vente"
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr "Configuration de vente Séquence"
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Exception de facture - Demande"
@@ -834,30 +908,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Recréé"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Manuel"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "Sur traitement de l'ordre"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "À la livraison"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Manuel"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "Au paiement"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "Sur traitement de l'ordre"
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Annulée"
diff --git a/locale/hu_HU.po b/locale/hu_HU.po
index e9bccbe..35ec170 100644
--- a/locale/hu_HU.po
+++ b/locale/hu_HU.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -64,6 +64,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -80,7 +84,6 @@ msgctxt "field:product.template,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
 
-#, fuzzy
 msgctxt "field:sale.configuration,create_date:"
 msgid "Create Date"
 msgstr "Létrehozás détuma"
@@ -122,6 +125,83 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Által módosítva"
 
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Létrehozás détuma"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Által létrehozva "
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Név"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "utolsó módosítás dátuma"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Által módosítva"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Társaság"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Létrehozás détuma"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Által létrehozva "
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Név"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "utolsó módosítás dátuma"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Által módosítva"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr ""
@@ -788,6 +868,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr ""
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr ""
@@ -905,30 +993,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
 #, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
diff --git a/locale/it_IT.po b/locale/it_IT.po
index a83a785..52f40f3 100644
--- a/locale/it_IT.po
+++ b/locale/it_IT.po
@@ -16,10 +16,8 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr "Nell'ordine  \"%(sale)s\" manca l'indirizzo cliente nella riga  \"%(line)s\"."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
-"All'ordine  \"%(sale)s\" manca una proprieta predefinita nel conto di "
-"ricavo."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -71,6 +69,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "vendibile"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr "UdM di vendita"
@@ -123,6 +125,86 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "modificato da"
 
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "creato il"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "creato da"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Nome"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "metodo di fatturazione vendita"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "metodo di spedizione dell'ordine"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "modificato il"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "modificato da"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Azienda"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "creato il"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "creato da"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Nome"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr "sequenza ordine"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "modificato il"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "modificato da"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "dominio fatture"
@@ -722,6 +804,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Configurazione vendita"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "gestione dell'eccezione in fattura"
@@ -835,30 +925,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Ricreati"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Manuale"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "Processato su ordine"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "Su spedizione"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Manuale "
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "Su fattura pagata"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "su ordine elaborato "
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Annullato"
diff --git a/locale/ja_JP.po b/locale/ja_JP.po
index b947ceb..e44e993 100644
--- a/locale/ja_JP.po
+++ b/locale/ja_JP.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -65,6 +65,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -117,6 +121,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr ""
@@ -722,6 +790,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Sales Configuration"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 #, fuzzy
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
@@ -839,30 +915,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr ""
diff --git a/locale/lo.po b/locale/lo.po
index ce1bcf6..1d56526 100644
--- a/locale/lo.po
+++ b/locale/lo.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -66,6 +66,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -124,6 +128,83 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "ສ້າງຜູ້ໃຊ້"
 
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "ສ້າງວັນທີ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "ສ້າງຜູ້ໃຊ້ງານ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ເລດລຳດັບ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "ຊື່"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "ວັນທີບັນທຶກ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "ສ້າງຜູ້ໃຊ້"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "ຫ້ອງການ/ສຳນັກງານ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "ສ້າງວັນທີ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "ສ້າງຜູ້ໃຊ້ງານ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ເລດລຳດັບ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "ຊື່"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "ວັນທີບັນທຶກ"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "ສ້າງຜູ້ໃຊ້"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr ""
@@ -822,6 +903,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr ""
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr ""
@@ -950,32 +1039,6 @@ msgid "Recreated"
 msgstr "ສ້າງຂຶ້ນໃໝ່"
 
 #, fuzzy
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "ໃສ່ເອົາເອງ"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-#, fuzzy
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "ໃສ່ເອົາເອງ"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "ຍົກເລີກແລ້ວ"
diff --git a/locale/lt.po b/locale/lt.po
index 1cbea21..a9e02b9 100644
--- a/locale/lt.po
+++ b/locale/lt.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -64,6 +64,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -117,6 +121,72 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Namu"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr ""
@@ -720,6 +790,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr ""
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr ""
@@ -833,30 +911,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr ""
diff --git a/locale/nl.po b/locale/nl.po
index 48a8d76..736cb86 100644
--- a/locale/nl.po
+++ b/locale/nl.po
@@ -16,7 +16,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -70,6 +70,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Verkoopbaar"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
@@ -129,6 +133,84 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Gebruiker"
 
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Datum"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Gebruiker"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Levering afhandeling"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Schrijfdatum"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Gebruiker"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Bedrijf"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Datum"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Gebruiker"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Naam"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Schrijfdatum"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Gebruiker"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Domein facturen"
@@ -780,6 +862,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Verkoop instellingen"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 #, fuzzy
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
@@ -907,34 +997,6 @@ msgid "Recreated"
 msgstr "Opnieuw aangemaakt"
 
 #, fuzzy
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Handmatig"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-#, fuzzy
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "Na verzending"
-
-#, fuzzy
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Handmatig"
-
-#, fuzzy
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "Na factuur betaald"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Geannuleerd"
diff --git a/locale/pl.po b/locale/pl.po
index b947ceb..e44e993 100644
--- a/locale/pl.po
+++ b/locale/pl.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -65,6 +65,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -117,6 +121,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr ""
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr ""
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr ""
@@ -722,6 +790,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Sales Configuration"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 #, fuzzy
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
@@ -839,30 +915,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr ""
diff --git a/locale/pt_BR.po b/locale/pt_BR.po
index 325dfc1..287be8b 100644
--- a/locale/pt_BR.po
+++ b/locale/pt_BR.po
@@ -16,8 +16,8 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr "Falta a localização do cliente na linha \"%(line)s\" da venda \"%(sale)s\"."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
-msgstr "Falta a propriedade padrão \"conta de receitas\" na venda \"%(sale)s\"."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
+msgstr "Falta \"conta de receita\" padrão na Venda \"%(sale)s\"."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -30,8 +30,8 @@ msgid ""
 "Invoice and Shipment addresses must be defined for the quotation of sale "
 "\"%s\"."
 msgstr ""
-"A combinação de métodos de remessa e de faturamento na venda \"%s\" não é "
-"correta."
+"Os endereços da Fatura e da Remessa devem ser definidos na cotação da venda "
+"\"%s\"."
 
 msgctxt "error:sale.sale:"
 msgid "It misses an \"Account Receivable\" on the party \"%s\"."
@@ -43,7 +43,7 @@ msgstr "A venda \"%s\" deve ser cancelada antes de ser apagada."
 
 msgctxt "error:sale.sale:"
 msgid "Warehouse must be defined for the quotation of sale \"%s\"."
-msgstr "Deve ser definido um armazém para a cotação da venda \"%s\"."
+msgstr "Deve ser definido um almoxarifado para a cotação da venda \"%s\"."
 
 msgctxt "error:stock.shipment.out.return:"
 msgid "You cannot reset to draft a move generated by a sale."
@@ -63,21 +63,23 @@ msgstr "Vendas"
 
 msgctxt "field:product.product,lead_time:"
 msgid "Lead Time"
-msgstr ""
+msgstr "Tempo de Espera"
 
-#, fuzzy
 msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Vendável"
 
-#, fuzzy
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr "Preço de Venda"
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
-msgstr "UM para venda"
+msgstr "UDM para venda"
 
 msgctxt "field:product.template,lead_time:"
 msgid "Lead Time"
-msgstr ""
+msgstr "Tempo de Espera"
 
 msgctxt "field:product.template,salable:"
 msgid "Salable"
@@ -109,7 +111,7 @@ msgstr "Método da fatura da venda"
 
 msgctxt "field:sale.configuration,sale_sequence:"
 msgid "Sale Sequence"
-msgstr ""
+msgstr "Sequência de Venda"
 
 msgctxt "field:sale.configuration,sale_shipment_method:"
 msgid "Sale Shipment Method"
@@ -123,6 +125,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Gravado pelo usuário"
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Data de criação"
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Criado por"
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Nome"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Método da Fatura de Venda"
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Método da Remessa ao Cliente"
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Data de edição"
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Editado por"
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Empresa"
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Data de criação"
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Criado por"
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Nome"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr "Sequência de Venda"
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Data de edição"
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Editado por"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Faturas do domínio"
@@ -219,10 +285,9 @@ msgctxt "field:sale.line,sale:"
 msgid "Sale"
 msgstr "Venda"
 
-#, fuzzy
 msgctxt "field:sale.line,sale_state:"
 msgid "Sale State"
-msgstr "Data da venda"
+msgstr "Estado da Venda"
 
 msgctxt "field:sale.line,sequence:"
 msgid "Sequence"
@@ -230,7 +295,7 @@ msgstr "Sequência"
 
 msgctxt "field:sale.line,shipping_date:"
 msgid "Shipping Date"
-msgstr ""
+msgstr "Data da Remessa"
 
 msgctxt "field:sale.line,taxes:"
 msgid "Taxes"
@@ -258,7 +323,7 @@ msgstr "Preço unitário"
 
 msgctxt "field:sale.line,warehouse:"
 msgid "Warehouse"
-msgstr "Estoque/Almoxarifado"
+msgstr "Almoxarifado"
 
 msgctxt "field:sale.line,write_date:"
 msgid "Write Date"
@@ -432,7 +497,6 @@ msgctxt "field:sale.sale,moves:"
 msgid "Moves"
 msgstr "Movimentações"
 
-#, fuzzy
 msgctxt "field:sale.sale,number:"
 msgid "Number"
 msgstr "Número"
@@ -451,7 +515,7 @@ msgstr "Língua do parceiro"
 
 msgctxt "field:sale.sale,payment_term:"
 msgid "Payment Term"
-msgstr "Vencimento do pagamento"
+msgstr "Prazo de Pagamento"
 
 msgctxt "field:sale.sale,rec_name:"
 msgid "Name"
@@ -471,7 +535,7 @@ msgstr "Endereço de entrega"
 
 msgctxt "field:sale.sale,shipment_method:"
 msgid "Shipment Method"
-msgstr "Método da expedição"
+msgstr "Método da Remessa"
 
 msgctxt "field:sale.sale,shipment_party:"
 msgid "Shipment Party"
@@ -487,7 +551,7 @@ msgstr "Estado da expedição"
 
 msgctxt "field:sale.sale,shipments:"
 msgid "Shipments"
-msgstr "Expedições"
+msgstr "Remessas"
 
 msgctxt "field:sale.sale,state:"
 msgid "State"
@@ -519,7 +583,7 @@ msgstr "Isenção Pré-Calculada"
 
 msgctxt "field:sale.sale,warehouse:"
 msgid "Warehouse"
-msgstr "Estoque/Almoxarifado"
+msgstr "Almoxarifado"
 
 msgctxt "field:sale.sale,write_date:"
 msgid "Write Date"
@@ -641,7 +705,7 @@ msgstr "Vendas"
 
 msgctxt "model:ir.action,name:act_shipment_form"
 msgid "Shipments"
-msgstr "Expedições"
+msgstr "Remessas"
 
 msgctxt "model:ir.action,name:report_sale"
 msgid "Sale"
@@ -657,7 +721,7 @@ msgstr "Devolução de Venda"
 
 msgctxt "model:ir.action,name:wizard_shipment_handle_exception"
 msgid "Handle Shipment Exception"
-msgstr "Manejar exceção da expedição"
+msgstr "Manejar Exceção da Remessa"
 
 msgctxt "model:ir.action.act_window.domain,name:act_sale_form_domain_all"
 msgid "All"
@@ -722,13 +786,21 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Configuração de vendas"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr "Configuração de Venda Método de Venda"
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr "Configuração de Venda Sequência"
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Exceção da fatura do punho"
 
 msgctxt "model:sale.handle.shipment.exception.ask,name:"
 msgid "Handle Shipment Exception"
-msgstr "Exceção da expedição do punho"
+msgstr "Manejar Exceção da Remessa"
 
 msgctxt "model:sale.line,name:"
 msgid "Sale Line"
@@ -762,7 +834,6 @@ msgctxt "model:sale.sale-recreated-account.invoice,name:"
 msgid "Sale - Recreated Invoice"
 msgstr "Venda - Recriar fatura"
 
-#, fuzzy
 msgctxt "report:sale.sale:"
 msgid ":"
 msgstr ":"
@@ -795,10 +866,9 @@ msgctxt "report:sale.sale:"
 msgid "Quotation N°:"
 msgstr "Cotação n°:"
 
-#, fuzzy
 msgctxt "report:sale.sale:"
 msgid "Reference:"
-msgstr "Referência"
+msgstr "Referência:"
 
 msgctxt "report:sale.sale:"
 msgid "Sale Order N°:"
@@ -824,10 +894,9 @@ msgctxt "report:sale.sale:"
 msgid "Unit Price"
 msgstr "Preço unitário"
 
-#, fuzzy
 msgctxt "selection:account.invoice,sale_exception_state:"
 msgid ""
-msgstr "Português (Brasil)"
+msgstr ""
 
 msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Ignored"
@@ -837,56 +906,26 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Recriado"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Manual"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "Ao Processar a Ordem"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "No ato do envio"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Manual"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "No pagamento da fatura"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "Ao Processar a Ordem"
-
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Cancelado"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Confirmed"
 msgstr "Confirmado"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Done"
 msgstr "Feito"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Draft"
 msgstr "Rascunho"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Processing"
 msgstr "Processando"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Quotation"
 msgstr "Cotação"
@@ -917,7 +956,7 @@ msgstr "Ao Processar a Ordem"
 
 msgctxt "selection:sale.sale,invoice_method:"
 msgid "On Shipment Sent"
-msgstr "No ato do envio"
+msgstr "No Envio da Remessa"
 
 msgctxt "selection:sale.sale,invoice_state:"
 msgid "Exception"
@@ -987,10 +1026,9 @@ msgctxt "selection:sale.sale,state:"
 msgid "Quotation"
 msgstr "Cotação"
 
-#, fuzzy
 msgctxt "selection:stock.move,sale_exception_state:"
 msgid ""
-msgstr "Português (Brasil)"
+msgstr ""
 
 msgctxt "selection:stock.move,sale_exception_state:"
 msgid "Ignored"
@@ -1050,7 +1088,7 @@ msgstr "Manejar exceção da fatura"
 
 msgctxt "view:sale.sale:"
 msgid "Handle Shipment Exception"
-msgstr "Manejar exceção da expedição"
+msgstr "Manejar Exceção da Remessa"
 
 msgctxt "view:sale.sale:"
 msgid "Other Info"
@@ -1068,12 +1106,10 @@ msgctxt "view:sale.sale:"
 msgid "Sale"
 msgstr "Venda"
 
-#, fuzzy
 msgctxt "view:stock.move:"
 msgid "Cancel"
 msgstr "Cancelar"
 
-#, fuzzy
 msgctxt "view:stock.move:"
 msgid "Reset to Draft"
 msgstr "Voltar para Rascunho"
diff --git a/locale/ru.po b/locale/ru.po
index 99ebdc1..ea8c339 100644
--- a/locale/ru.po
+++ b/locale/ru.po
@@ -17,8 +17,8 @@ msgstr ""
 "\"%(line)s\"."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
-msgstr "У продажи \"%(sale)s\" не заполнено поле \"Счет доходов\"."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
+msgstr ""
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -71,6 +71,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Для продажи"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 #, fuzzy
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
@@ -124,6 +128,85 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Изменено пользователем"
 
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Наименование"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Метод инвойса продажи"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Способ доставки продажи"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Организация"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Наименование"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Домен инвойсов"
@@ -728,6 +811,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Конфигурация продаж"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Обработка особых ситуаций инвойса"
@@ -843,30 +934,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Создано заново"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Ручной"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "При обработке заказа"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "При отправке груза"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Ручной"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "При оплате инвойса"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "При обработке заказа"
-
 #, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
diff --git a/locale/sl.po b/locale/sl.po
index 1f3f260..ab344ba 100644
--- a/locale/sl.po
+++ b/locale/sl.po
@@ -21,10 +21,8 @@ msgstr ""
 "lokacija."
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
-msgstr ""
-"Prodajnemu nalogu \"%(sale)s\" manjka privzeta lastnost za prihodkovni "
-"konto."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
+msgstr "Na prodajnem nalogu \"%(sale)s\" manjka privzeti konto prihodkov."
 
 msgctxt "error:sale.sale:"
 msgid "Invalid combination of shipment and invoicing methods on sale \"%s\"."
@@ -78,6 +76,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr "Za prodajo"
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr "Prodajna cena"
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr "Prodajna ME"
@@ -130,6 +132,70 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "Zapisal"
 
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr "Način obračuna"
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr "Način odpreme"
+
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr "Družba"
+
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr "Štetje prodajnih nalogov"
+
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr "Vključeni računi"
@@ -228,7 +294,7 @@ msgstr "Prodajni nalog"
 
 msgctxt "field:sale.line,sale_state:"
 msgid "Sale State"
-msgstr ""
+msgstr "Stanje prodajnega naloga"
 
 msgctxt "field:sale.line,sequence:"
 msgid "Sequence"
@@ -726,6 +792,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr "Prodajna konfiguracija"
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr "Konfiguracija načina prodaje"
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr "Konfiguracija štetja prodaje"
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr "Obravnava pridržanih računov"
@@ -766,7 +840,6 @@ msgctxt "model:sale.sale-recreated-account.invoice,name:"
 msgid "Sale - Recreated Invoice"
 msgstr "Prodajni nalog - Ponovno izdelan račun"
 
-#, fuzzy
 msgctxt "report:sale.sale:"
 msgid ":"
 msgstr ":"
@@ -839,56 +912,26 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr "Ponovno izdelano"
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr "Ročno"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr "Po obdelavi naloga"
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr "Po izvršeni odpremi"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr "Ročno"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr "Po plačilu računa"
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr "Po obdelavi naloga"
-
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
 msgstr "Preklicano"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Confirmed"
 msgstr "Potrjeno"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Done"
 msgstr "Zaključeno"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Draft"
 msgstr "V pripravi"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Processing"
 msgstr "Obdelava"
 
-#, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Quotation"
 msgstr "Ponudba"
@@ -1069,12 +1112,10 @@ msgctxt "view:sale.sale:"
 msgid "Sale"
 msgstr "Prodaja"
 
-#, fuzzy
 msgctxt "view:stock.move:"
 msgid "Cancel"
 msgstr "Prekliči"
 
-#, fuzzy
 msgctxt "view:stock.move:"
 msgid "Reset to Draft"
 msgstr "Ponastavitev"
diff --git a/locale/zh_CN.po b/locale/zh_CN.po
index 6dc1ab1..bf66f4f 100644
--- a/locale/zh_CN.po
+++ b/locale/zh_CN.po
@@ -15,7 +15,7 @@ msgid "Sale \"%(sale)s\" is missing the customer location in line \"%(line)s\"."
 msgstr ""
 
 msgctxt "error:sale.line:"
-msgid "Sale \"%(sale)s\" misses an \"account revenue\" default property."
+msgid "Sale \"%(sale)s\" misses a default \"account revenue\"."
 msgstr ""
 
 msgctxt "error:sale.sale:"
@@ -64,6 +64,10 @@ msgctxt "field:product.product,salable:"
 msgid "Salable"
 msgstr ""
 
+msgctxt "field:product.product,sale_price_uom:"
+msgid "Sale Price"
+msgstr ""
+
 msgctxt "field:product.product,sale_uom:"
 msgid "Sale UOM"
 msgstr ""
@@ -122,6 +126,82 @@ msgctxt "field:sale.configuration,write_uid:"
 msgid "Write User"
 msgstr "写入帐号"
 
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_date:"
+msgid "Create Date"
+msgstr "创建日期:"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,create_uid:"
+msgid "Create User"
+msgstr "添加用户"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,id:"
+msgid "ID"
+msgstr "编号"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,rec_name:"
+msgid "Name"
+msgstr "纳木"
+
+msgctxt "field:sale.configuration.sale_method,sale_invoice_method:"
+msgid "Sale Invoice Method"
+msgstr ""
+
+msgctxt "field:sale.configuration.sale_method,sale_shipment_method:"
+msgid "Sale Shipment Method"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_date:"
+msgid "Write Date"
+msgstr "写入日期"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sale_method,write_uid:"
+msgid "Write User"
+msgstr "写入帐号"
+
+msgctxt "field:sale.configuration.sequence,company:"
+msgid "Company"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_date:"
+msgid "Create Date"
+msgstr "创建日期:"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,create_uid:"
+msgid "Create User"
+msgstr "添加用户"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,id:"
+msgid "ID"
+msgstr "编号"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,rec_name:"
+msgid "Name"
+msgstr "纳木"
+
+msgctxt "field:sale.configuration.sequence,sale_sequence:"
+msgid "Sale Sequence"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_date:"
+msgid "Write Date"
+msgstr "写入日期"
+
+#, fuzzy
+msgctxt "field:sale.configuration.sequence,write_uid:"
+msgid "Write User"
+msgstr "写入帐号"
+
 msgctxt "field:sale.handle.invoice.exception.ask,domain_invoices:"
 msgid "Domain Invoices"
 msgstr ""
@@ -771,6 +851,14 @@ msgctxt "model:sale.configuration,name:"
 msgid "Sale Configuration"
 msgstr ""
 
+msgctxt "model:sale.configuration.sale_method,name:"
+msgid "Sale Configuration Sale Method"
+msgstr ""
+
+msgctxt "model:sale.configuration.sequence,name:"
+msgid "Sale Configuration Sequence"
+msgstr ""
+
 msgctxt "model:sale.handle.invoice.exception.ask,name:"
 msgid "Handle Invoice Exception"
 msgstr ""
@@ -886,30 +974,6 @@ msgctxt "selection:account.invoice,sale_exception_state:"
 msgid "Recreated"
 msgstr ""
 
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Order Processed"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_invoice_method:"
-msgid "On Shipment Sent"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "Manual"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Invoice Paid"
-msgstr ""
-
-msgctxt "selection:sale.configuration,sale_shipment_method:"
-msgid "On Order Processed"
-msgstr ""
-
 #, fuzzy
 msgctxt "selection:sale.line,sale_state:"
 msgid "Canceled"
diff --git a/party.xml b/party.xml
index ffb8e70..6c953d9 100644
--- a/party.xml
+++ b/party.xml
@@ -7,7 +7,8 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Sales</field>
             <field name="res_model">sale.sale</field>
             <field name="domain"
-                eval="[('party', 'in', Eval('active_ids'))]" pyson="1"/>
+                eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('party', '=', Eval('active_id')), ('party', 'in', Eval('active_ids')))]"
+                pyson="1"/>
         </record>
         <record model="ir.action.keyword"
                 id="act_open_sale_keyword1">
diff --git a/product.py b/product.py
index 8072b60..3d1247a 100644
--- a/product.py
+++ b/product.py
@@ -7,6 +7,7 @@ from trytond.pyson import Eval
 from trytond.pool import Pool, PoolMeta
 from trytond.transaction import Transaction
 from trytond import backend
+from trytond.modules.product import price_digits
 
 __all__ = ['Template', 'Product']
 
@@ -29,7 +30,6 @@ class Template:
     lead_time = fields.TimeDelta('Lead Time', states={
             'readonly': ~Eval('active', True),
             'invisible': ~Eval('salable', False),
-            'required': Eval('salable', False),
             },
         depends=['active', 'salable'])
 
@@ -99,6 +99,14 @@ class Product:
     __metaclass__ = PoolMeta
     __name__ = 'product.product'
 
+    sale_price_uom = fields.Function(fields.Numeric(
+            "Sale Price", digits=price_digits), 'get_sale_price_uom')
+
+    @classmethod
+    def get_sale_price_uom(cls, products, name):
+        quantity = Transaction().context.get('quantity', 0)
+        return cls.get_sale_price(products, quantity=quantity)
+
     @staticmethod
     def get_sale_price(products, quantity=0):
         '''
@@ -128,7 +136,7 @@ class Product:
 
         for product in products:
             prices[product.id] = product.list_price
-            if uom:
+            if uom and product.default_uom.category == uom.category:
                 prices[product.id] = Uom.compute_price(
                     product.default_uom, prices[product.id], uom)
             if currency and user.company:
@@ -148,4 +156,6 @@ class Product:
 
         if not date:
             date = Date.today()
+        if self.lead_time is None:
+            return datetime.date.max
         return date + self.lead_time
diff --git a/sale.py b/sale.py
index 331b8aa..fdd0df9 100644
--- a/sale.py
+++ b/sale.py
@@ -1,5 +1,6 @@
 # This file is part of Tryton.  The COPYRIGHT file at the top level of
 # this repository contains the full copyright notices and license terms.
+import datetime
 from decimal import Decimal
 from itertools import groupby, chain
 from functools import partial
@@ -762,19 +763,17 @@ class Sale(Workflow, ModelSQL, ModelView, TaxableMixin):
             self.raise_user_error('missing_account_receivable',
                 (self.party.rec_name,))
 
-        invoice_lines = {}
+        invoice_lines = []
         for line in self.lines:
-            ilines = line.get_invoice_line()
-            if ilines:
-                invoice_lines[line.id] = ilines
+            invoice_lines.append(line.get_invoice_line())
+        invoice_lines = list(chain(*invoice_lines))
         if not invoice_lines:
             return
 
         invoice = self._get_invoice_sale()
-        invoice.lines = ((list(invoice.lines)
-                if hasattr(invoice, 'lines') else [])
-            + list(chain.from_iterable(invoice_lines[l.id] for l in self.lines
-                    if l.id in invoice_lines)))
+        if getattr(invoice, 'lines', None):
+            invoice_lines = list(invoice.lines) + invoice_lines
+        invoice.lines = invoice_lines
         invoice.save()
 
         Invoice.update_taxes([invoice])
@@ -790,7 +789,10 @@ class Sale(Workflow, ModelSQL, ModelView, TaxableMixin):
         line_id, move = move
         line = SaleLine(line_id)
 
-        planned_date = max(m.planned_date for m in moves)
+        if any(m.planned_date is None for m in moves):
+            planned_date = None
+        else:
+            planned_date = max(m.planned_date for m in moves)
         return (
             ('planned_date', planned_date),
             ('warehouse', line.warehouse.id),
@@ -1006,6 +1008,13 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
                 [Eval('_parent_sale', {}).get('warehouse', 0)], []),
             'stock_date_end': Eval('_parent_sale', {}).get('sale_date'),
             'stock_skip_warehouse': True,
+            # From _get_context_sale_price
+            'currency': Eval('_parent_sale', {}).get('currency'),
+            'customer': Eval('_parent_sale', {}).get('party'),
+            'sale_date': Eval('_parent_sale', {}).get('sale_date'),
+            'uom': Eval('unit'),
+            'taxes': Eval('taxes', []),
+            'quantity': Eval('quantity'),
             }, depends=['type', 'sale_state'])
     product_uom_category = fields.Function(
         fields.Many2One('product.uom.category', 'Product Uom Category'),
@@ -1074,8 +1083,8 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
                     'customer location in line "%(line)s".'),
                 'missing_account_revenue': ('Product "%(product)s" of sale '
                     '%(sale)s misses a revenue account.'),
-                'missing_account_revenue_property': ('Sale "%(sale)s" '
-                    'misses an "account revenue" default property.'),
+                'missing_default_account_revenue': ('Sale "%(sale)s" '
+                    'misses a default "account revenue".'),
                 })
 
     @classmethod
@@ -1110,26 +1119,29 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
             return self.unit.digits
         return 2
 
-    def get_move_done(self, name):
-        Uom = Pool().get('product.uom')
-        done = True
+    @property
+    def _move_remaining_quantity(self):
+        "Compute the remaining quantity to ship"
+        pool = Pool()
+        Uom = pool.get('product.uom')
         if self.type != 'line' or not self.product:
-            return True
+            return
         if self.product.type == 'service':
-            return True
+            return
         skip_ids = set(x.id for x in self.moves_ignored)
         skip_ids.update(x.id for x in self.moves_recreated)
-        quantity = self.quantity
+        quantity = abs(self.quantity)
         for move in self.moves:
-            if move.state != 'done' \
-                    and move.id not in skip_ids:
-                done = False
-                break
-            quantity -= Uom.compute_qty(move.uom, move.quantity, self.unit)
-        if done:
-            if self.unit.round(quantity) > 0.0:
-                done = False
-        return done
+            if move.state == 'done' or move.id in skip_ids:
+                quantity -= Uom.compute_qty(move.uom, move.quantity, self.unit)
+        return quantity
+
+    def get_move_done(self, name):
+        quantity = self._move_remaining_quantity
+        if quantity is None:
+            return True
+        else:
+            return self.unit.round(quantity) <= 0
 
     def get_move_exception(self, name):
         skip_ids = set(x.id for x in self.moves_ignored)
@@ -1279,11 +1291,13 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
             if self.warehouse:
                 return self.warehouse.output_location.id
         else:
-            return self.sale.party.customer_location.id
+            party = self.sale.shipment_party or self.sale.party
+            return party.customer_location.id
 
     def get_to_location(self, name):
         if (self.quantity or 0) >= 0:
-            return self.sale.party.customer_location.id
+            party = self.sale.shipment_party or self.sale.party
+            return party.customer_location.id
         else:
             if self.warehouse:
                 return self.warehouse.input_location.id
@@ -1299,7 +1313,10 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
                 return
         if self.product and self.quantity is not None and self.quantity > 0:
             date = self.sale.sale_date if self.sale else None
-            return self.product.compute_shipping_date(date=date)
+            shipping_date = self.product.compute_shipping_date(date=date)
+            if shipping_date == datetime.date.max:
+                return None
+            return shipping_date
 
     @fields.depends('sale', '_parent_sale.state')
     def on_change_with_sale_state(self, name=None):
@@ -1309,8 +1326,9 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
     def get_invoice_line(self):
         'Return a list of invoice lines for sale line'
         pool = Pool()
-        Property = pool.get('ir.property')
         InvoiceLine = pool.get('account.invoice.line')
+        AccountConfiguration = pool.get('account.configuration')
+        account_config = AccountConfiguration(1)
 
         invoice_line = InvoiceLine()
         invoice_line.type = self.type
@@ -1346,12 +1364,13 @@ class SaleLine(sequence_ordered(), ModelSQL, ModelView):
                         'product': self.product.rec_name,
                         })
         else:
-            for model in ('product.template', 'product.category'):
-                invoice_line.account = Property.get('account_revenue', model)
+            for name in ['default_product_account_revenue',
+                    'default_category_account_revenue']:
+                invoice_line.account = account_config.get_multivalue(name)
                 if invoice_line.account:
                     break
             if not invoice_line.account:
-                self.raise_user_error('missing_account_revenue_property', {
+                self.raise_user_error('missing_default_account_revenue', {
                         'sale': self.sale.rec_name,
                         })
         invoice_line.stock_moves = self._get_invoice_line_moves()
@@ -1701,13 +1720,9 @@ class HandleInvoiceException(Wizard):
 
         sale = Sale(Transaction().context['active_id'])
 
-        skips = set(sale.invoices_ignored)
-        skips.update(sale.invoices_recreated)
         invoices_ignored = []
         invoices_recreated = []
-        for invoice in sale.invoices:
-            if invoice not in self.ask.domain_invoices or invoice in skips:
-                continue
+        for invoice in self.ask.domain_invoices:
             if invoice in self.ask.recreate_invoices:
                 invoices_recreated.append(invoice.id)
             else:
diff --git a/sale.xml b/sale.xml
index 8ce0d02..8d7105f 100644
--- a/sale.xml
+++ b/sale.xml
@@ -72,7 +72,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Shipments</field>
             <field name="res_model">stock.shipment.out</field>
             <field name="domain"
-                eval="[('moves.sale', 'in', Eval('active_ids'))]"
+                eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('moves.sale', '=', Eval('active_id')), ('moves.sale', 'in', Eval('active_ids')))]"
                 pyson="1"/>
         </record>
         <record model="ir.action.keyword"
@@ -85,7 +85,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Returns</field>
             <field name="res_model">stock.shipment.out.return</field>
             <field name="domain"
-                eval="[('moves.sale', 'in', Eval('active_ids'))]"
+                eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('moves.sale', '=', Eval('active_id')), ('moves.sale', 'in', Eval('active_ids')))]"
                 pyson="1"/>
         </record>
         <record model="ir.action.keyword" id="act_open_shipment_return_keyword1">
@@ -97,7 +97,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Invoices</field>
             <field name="res_model">account.invoice</field>
             <field name="domain"
-                eval="[('lines.origin.sale.id', 'in', Eval('active_ids'), 'sale.line')]"
+                eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('lines.origin.sale.id', '=', Eval('active_id'), 'sale.line'), ('lines.origin.sale.id', 'in', Eval('active_ids'), 'sale.line'))]"
                 pyson="1"/>
         </record>
         <record model="ir.action.keyword"
@@ -176,7 +176,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Sales</field>
             <field name="res_model">sale.sale</field>
             <field name="domain"
-                eval="[('invoices', 'in', Eval('active_ids'))]"
+                eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('invoices', '=', Eval('active_id')), ('invoices', 'in', Eval('active_ids')))]"
                 pyson="1"/>
         </record>
         <record model="ir.action.act_window.view"
@@ -202,7 +202,7 @@ this repository contains the full copyright notices and license terms. -->
             <field name="name">Sales</field>
             <field name="res_model">sale.sale</field>
             <field name="domain"
-                eval="[('shipments', 'in', Eval('active_ids'))]"
+                eval="[If(Eval('active_ids', []) == [Eval('active_id')], ('shipments', '=', Eval('active_id')), ('shipments', 'in', Eval('active_ids')))]"
                 pyson="1"/>
         </record>
         <record model="ir.action.act_window.view"
diff --git a/setup.py b/setup.py
index 615dbab..4085f9d 100644
--- a/setup.py
+++ b/setup.py
@@ -85,7 +85,7 @@ setup(name=name,
         'Intended Audience :: Developers',
         'Intended Audience :: Financial and Insurance Industry',
         'Intended Audience :: Legal Industry',
-        'License :: OSI Approved :: GNU General Public License (GPL)',
+        'License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)',
         'Natural Language :: Bulgarian',
         'Natural Language :: Catalan',
         'Natural Language :: Chinese (Simplified)',
diff --git a/stock.py b/stock.py
index 83c67bf..ecd628e 100644
--- a/stock.py
+++ b/stock.py
@@ -183,7 +183,7 @@ class Move:
         SaleLine = pool.get('sale.line')
         name = super(Move, self).origin_name
         if isinstance(self.origin, SaleLine):
-            name = self.origin.sale.rec_name
+            name = self.origin.sale.reference or self.origin.sale.rec_name
         return name
 
     @classmethod
diff --git a/tests/scenario_sale.rst b/tests/scenario_sale.rst
index b24ee78..38747d2 100644
--- a/tests/scenario_sale.rst
+++ b/tests/scenario_sale.rst
@@ -184,6 +184,10 @@ Sale 5 products::
     (Decimal('50.00'), Decimal('5.00'), Decimal('55.00'))
     >>> sale.state
     u'processing'
+    >>> sale.shipment_state
+    u'waiting'
+    >>> sale.invoice_state
+    u'waiting'
     >>> len(sale.shipments), len(sale.shipment_returns), len(sale.invoices)
     (1, 0, 1)
     >>> invoice, = sale.invoices
@@ -255,6 +259,10 @@ Sale 5 products with an invoice method 'on shipment'::
     >>> sale.click('process')
     >>> sale.state
     u'processing'
+    >>> sale.shipment_state
+    u'waiting'
+    >>> sale.invoice_state
+    u'none'
     >>> sale.reload()
     >>> len(sale.shipments), len(sale.shipment_returns), len(sale.invoices)
     (1, 0, 0)
@@ -281,6 +289,8 @@ Open customer invoice::
 
     >>> config.user = sale_user.id
     >>> sale.reload()
+    >>> sale.invoice_state
+    u'waiting'
     >>> invoice, = sale.invoices
     >>> config.user = account_user.id
     >>> Invoice = Model.get('account.invoice')
@@ -325,6 +335,10 @@ Sale 5 products with shipment method 'on invoice'::
     >>> sale.click('process')
     >>> sale.state
     u'processing'
+    >>> sale.shipment_state
+    u'none'
+    >>> sale.invoice_state
+    u'waiting'
     >>> len(sale.shipments), len(sale.shipment_returns), len(sale.invoices)
     (0, 0, 1)
 
@@ -420,27 +434,41 @@ Create a Return::
     >>> return_.click('process')
     >>> return_.state
     u'processing'
-    >>> return_.reload()
+    >>> return_.shipment_state
+    u'waiting'
+    >>> return_.invoice_state
+    u'none'
     >>> (len(return_.shipments), len(return_.shipment_returns),
     ...     len(return_.invoices))
     (0, 1, 0)
 
-Check Return Shipments::
+Receive Return Shipment for 3 products::
 
     >>> config.user = sale_user.id
     >>> ship_return, = return_.shipment_returns
     >>> config.user = stock_user.id
-    >>> ship_return.click('receive')
     >>> move_return, = ship_return.incoming_moves
     >>> move_return.product.rec_name
     u'product'
     >>> move_return.quantity
     4.0
+    >>> move_return.quantity = 3
+    >>> ship_return.click('receive')
 
-Open customer credit note::
+Check Return::
 
     >>> config.user = sale_user.id
     >>> return_.reload()
+    >>> return_.shipment_state
+    u'waiting'
+    >>> return_.invoice_state
+    u'waiting'
+    >>> (len(return_.shipments), len(return_.shipment_returns),
+    ...     len(return_.invoices))
+    (0, 2, 1)
+
+Open customer credit note::
+
     >>> credit_note, = return_.invoices
     >>> config.user = account_user.id
     >>> credit_note = Invoice(credit_note.id)
@@ -449,9 +477,34 @@ Open customer credit note::
     >>> len(credit_note.lines)
     1
     >>> sum(l.quantity for l in credit_note.lines)
-    -4.0
+    -3.0
     >>> credit_note.click('post')
 
+Receive Remaining Return Shipment::
+
+    >>> config.user = sale_user.id
+    >>> return_.reload()
+    >>> _, ship_return = return_.shipment_returns
+    >>> config.user = stock_user.id
+    >>> move_return, = ship_return.incoming_moves
+    >>> move_return.product.rec_name
+    u'product'
+    >>> move_return.quantity
+    1.0
+    >>> ship_return.click('receive')
+
+Check Return::
+
+    >>> config.user = sale_user.id
+    >>> return_.reload()
+    >>> return_.shipment_state
+    u'sent'
+    >>> return_.invoice_state
+    u'waiting'
+    >>> (len(return_.shipments), len(return_.shipment_returns),
+    ...     len(return_.invoices))
+    (0, 2, 2)
+
 Mixing return and sale::
 
     >>> config.user = sale_user.id
@@ -476,7 +529,10 @@ Mixing return and sale::
     >>> mix.click('process')
     >>> mix.state
     u'processing'
-    >>> mix.reload()
+    >>> mix.shipment_state
+    u'waiting'
+    >>> mix.invoice_state
+    u'waiting'
     >>> len(mix.shipments), len(mix.shipment_returns), len(mix.invoices)
     (1, 1, 1)
 
@@ -541,6 +597,10 @@ Mixing stuff with an invoice method 'on shipment'::
     >>> mix.click('process')
     >>> mix.state
     u'processing'
+    >>> mix.shipment_state
+    u'waiting'
+    >>> mix.invoice_state
+    u'none'
     >>> len(mix.shipments), len(mix.shipment_returns), len(mix.invoices)
     (1, 1, 0)
 
@@ -580,6 +640,10 @@ Sale services::
     >>> service_sale.click('process')
     >>> service_sale.state
     u'processing'
+    >>> service_sale.shipment_state
+    u'none'
+    >>> service_sale.invoice_state
+    u'waiting'
     >>> service_invoice, = service_sale.invoices
 
 Pay the service invoice::
@@ -664,7 +728,7 @@ to invoices::
     >>> stock_move.state
     u'done'
 
-Create a sale to be sent on invoice partialy and check correctly linked to
+Create a sale to be sent on invoice partially and check correctly linked to
 invoices::
 
     >>> sale = Sale()
@@ -697,3 +761,25 @@ invoices::
     5.0
     >>> stock_move.state
     u'draft'
+
+Deleting a line from a invoice should recreate it::
+
+    >>> sale = Sale()
+    >>> sale.party = customer
+    >>> line = sale.lines.new()
+    >>> line.product = product
+    >>> line.quantity = 10.0
+    >>> sale.click('quote')
+    >>> sale.click('confirm')
+    >>> sale.click('process')
+    >>> invoice, = sale.invoices
+    >>> config.user = account_user.id
+    >>> invoice_line, = invoice.lines
+    >>> invoice.lines.remove(invoice_line)
+    >>> invoice.click('post')
+    >>> config.user = sale_user.id
+    >>> sale.reload()
+    >>> new_invoice, = sale.invoices
+    >>> new_invoice.number
+    >>> len(new_invoice.lines)
+    1
diff --git a/tryton.cfg b/tryton.cfg
index 329da9d..67d4318 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
 [tryton]
-version=4.2.0
+version=4.4.0
 depends:
     account
     account_invoice
diff --git a/trytond_sale.egg-info/PKG-INFO b/trytond_sale.egg-info/PKG-INFO
index 14c9dc6..aae1771 100644
--- a/trytond_sale.egg-info/PKG-INFO
+++ b/trytond_sale.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
 Metadata-Version: 1.1
 Name: trytond-sale
-Version: 4.2.0
+Version: 4.4.0
 Summary: Tryton module for sale
 Home-page: http://www.tryton.org/
 Author: Tryton
 Author-email: issue_tracker at tryton.org
 License: GPL-3
-Download-URL: http://downloads.tryton.org/4.2/
+Download-URL: http://downloads.tryton.org/4.4/
 Description: trytond_sale
         ============
         
@@ -51,7 +51,7 @@ Classifier: Framework :: Tryton
 Classifier: Intended Audience :: Developers
 Classifier: Intended Audience :: Financial and Insurance Industry
 Classifier: Intended Audience :: Legal Industry
-Classifier: License :: OSI Approved :: GNU General Public License (GPL)
+Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
 Classifier: Natural Language :: Bulgarian
 Classifier: Natural Language :: Catalan
 Classifier: Natural Language :: Chinese (Simplified)
diff --git a/trytond_sale.egg-info/requires.txt b/trytond_sale.egg-info/requires.txt
index 6007097..5cb2b44 100644
--- a/trytond_sale.egg-info/requires.txt
+++ b/trytond_sale.egg-info/requires.txt
@@ -1,11 +1,11 @@
 python-sql >= 0.4
-trytond_account >= 4.2, < 4.3
-trytond_account_invoice >= 4.2, < 4.3
-trytond_account_invoice_stock >= 4.2, < 4.3
-trytond_account_product >= 4.2, < 4.3
-trytond_company >= 4.2, < 4.3
-trytond_currency >= 4.2, < 4.3
-trytond_party >= 4.2, < 4.3
-trytond_product >= 4.2, < 4.3
-trytond_stock >= 4.2, < 4.3
-trytond >= 4.2, < 4.3
+trytond_account >= 4.4, < 4.5
+trytond_account_invoice >= 4.4, < 4.5
+trytond_account_invoice_stock >= 4.4, < 4.5
+trytond_account_product >= 4.4, < 4.5
+trytond_company >= 4.4, < 4.5
+trytond_currency >= 4.4, < 4.5
+trytond_party >= 4.4, < 4.5
+trytond_product >= 4.4, < 4.5
+trytond_stock >= 4.4, < 4.5
+trytond >= 4.4, < 4.5
diff --git a/view/product_list_sale_line.xml b/view/product_list_sale_line.xml
index f4af523..c3591e1 100644
--- a/view/product_list_sale_line.xml
+++ b/view/product_list_sale_line.xml
@@ -4,6 +4,7 @@ this repository contains the full copyright notices and license terms. -->
 <tree>
     <field name="code"/>
     <field name="name"/>
+    <field name="sale_price_uom"/>
     <field name="list_price_uom"/>
     <field name="cost_price_uom"/>
     <field name="quantity"/>
diff --git a/view/sale_form.xml b/view/sale_form.xml
index 50a2403..ab175bb 100644
--- a/view/sale_form.xml
+++ b/view/sale_form.xml
@@ -44,7 +44,7 @@ this repository contains the full copyright notices and license terms. -->
                 <field name="tax_amount" xalign="1.0" xexpand="0"/>
                 <label name="total_amount" xalign="1.0" xexpand="1"/>
                 <field name="total_amount" xalign="1.0" xexpand="0"/>
-                <group col="7" colspan="2" id="buttons">
+                <group col="-1" colspan="2" id="buttons">
                     <button name="cancel" string="Cancel"
                         icon="tryton-cancel"/>
                     <button name="draft" string="Draft"/>
diff --git a/view/template_form.xml b/view/template_form.xml
index 52814e8..dbb1094 100644
--- a/view/template_form.xml
+++ b/view/template_form.xml
@@ -2,10 +2,10 @@
 <!-- This file is part of Tryton.  The COPYRIGHT file at the top level of
 this repository contains the full copyright notices and license terms. -->
 <data>
-    <xpath expr="/form/notebook/page[@id='general']/field[@name='cost_price_method']"
-        position="after">
+    <xpath expr="/form/notebook/page[@id='general']/group[@id='checkboxes']"
+        position="inside">
         <label name="salable"/>
-        <field name="salable"/>
+        <field name="salable" xexpand="0" width="25"/>
     </xpath>
     <xpath expr="/form/notebook/page[@id='general']" position="after">
         <page string="Customers" id="customers">
-- 
tryton-modules-sale



More information about the tryton-debian-vcs mailing list