Upgrade to 6.x

This commit is contained in:
Raimon Esteve 2021-10-15 12:48:34 +02:00
parent 1a9e9f57f8
commit 31bb31d7de
8 changed files with 79 additions and 206 deletions

View File

@ -9,7 +9,7 @@ from . import sale
def register():
Pool.register(
configuration.Configuration,
configuration.ConfigurationCompany,
configuration.ConfigurationSequence,
sale.SaleInvoiceGroup,
sale.Sale,
sale.SaleLine,

View File

@ -1,72 +1,59 @@
#The COPYRIGHT file at the top level of
#this repository contains the full copyright notices and license terms.
from trytond.model import Model, ModelSQL, fields
from trytond.model import fields
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
from trytond.transaction import Transaction
from trytond.pyson import Eval, Id
__all__ = ['Configuration', 'ConfigurationCompany']
__all__ = ['Configuration', 'ConfigurationSequence']
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(metaclass=PoolMeta):
__name__ = 'sale.configuration'
invoice_group_sequence = fields.Function(fields.Many2One(
'ir.sequence', 'Invoice group sequence', required=True,
invoice_group_sequence = fields.MultiValue(fields.Many2One(
'ir.sequence', "Invoice Group Sequence", required=True,
domain=[
('company', 'in',
[Eval('context', {}).get('company', -1), None]),
('code', '=', 'sale.invoice.group'),
]), 'get_company_config', 'set_company_config')
('sequence_type', '=', Id('sale_invoice_complete_line_grouping',
'sequence_type_invoice_group')),
]))
@classmethod
def get_company_config(self, configs, names):
def multivalue_model(cls, field):
pool = Pool()
CompanyConfig = pool.get('sale.configuration.company')
if field == 'invoice_group_sequence':
return pool.get('sale.configuration.sequence')
return super(Configuration, cls).multivalue_model(field)
company_id = Transaction().context.get('company')
company_configs = CompanyConfig.search([
('company', '=', company_id),
])
default_invoice_group_sequence = default_func('invoice_group_sequence')
res = {}
for fname in names:
res[fname] = {
configs[0].id: None,
}
if company_configs:
val = getattr(company_configs[0], fname)
if isinstance(val, Model):
val = val.id
res[fname][configs[0].id] = val
return res
class ConfigurationSequence(metaclass=PoolMeta):
__name__ = 'sale.configuration.sequence'
invoice_group_sequence = fields.Many2One(
'ir.sequence', "Invoice Group Sequence", required=True,
domain=[
('company', 'in', [Eval('company', -1), None]),
('sequence_type', '=', Id('sale_invoice_complete_line_grouping',
'sequence_type_invoice_group')),
],
depends=['company'])
@classmethod
def set_company_config(self, configs, name, value):
def default_invoice_group_sequence(cls):
pool = Pool()
CompanyConfig = pool.get('sale.configuration.company')
company_id = Transaction().context.get('company')
company_configs = CompanyConfig.search([
('company', '=', company_id),
])
if company_configs:
company_config = company_configs[0]
else:
company_config = CompanyConfig(company=company_id)
setattr(company_config, name, value)
company_config.save()
class ConfigurationCompany(ModelSQL):
'Sale Configuration by Company'
__name__ = 'sale.configuration.company'
company = fields.Many2One('company.company', 'Company', required=True,
ondelete='CASCADE', select=True)
invoice_group_sequence = fields.Many2One('ir.sequence',
'Invoice group sequence', domain=[
('company', 'in',
[Eval('context', {}).get('company', -1), None]),
('code', '=', 'sale.invoice.group'),
])
ModelData = pool.get('ir.model.data')
try:
return ModelData.get_id('sale_invoice_complete_line_grouping',
'sequence_invoice_group')
except KeyError:
return None

View File

@ -5,12 +5,15 @@
<data>
<record model="ir.sequence.type" id="sequence_type_invoice_group">
<field name="name">Sale Invoice Group</field>
<field name="code">sale.invoice.group</field>
</record>
<record model="ir.sequence.type-res.group" id="sequence_type_invoice_group_group_admin">
<field name="sequence_type" ref="sequence_type_invoice_group"/>
<field name="group" ref="res.group_admin"/>
</record>
<record model="ir.sequence" id="sequence_invoice_group">
<field name="name">Sale Invoice Group</field>
<field name="code">sale.invoice.group</field>
<field name="sequence_type" ref="sequence_type_invoice_group"/>
</record>
<record model="ir.ui.view" id="sale_configuration_view_form">

View File

@ -3,73 +3,21 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,invoice_group_sequence:"
msgid "Invoice group sequence"
msgstr "Seqüencia de grups de facturació"
msgid "Invoice Group Sequence"
msgstr "Seqüència agrupació factures"
msgctxt "field:sale.configuration.company,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:sale.configuration.company,create_date:"
msgid "Create Date"
msgstr "Data de creació"
msgctxt "field:sale.configuration.company,create_uid:"
msgid "Create User"
msgstr "Usuari de creació"
msgctxt "field:sale.configuration.company,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:sale.configuration.company,invoice_group_sequence:"
msgid "Invoice group sequence"
msgstr "Seqüencia de grups de facturació"
msgctxt "field:sale.configuration.company,rec_name:"
msgid "Record Name"
msgstr "Nom registre"
msgctxt "field:sale.configuration.company,write_date:"
msgid "Write Date"
msgstr "Usuari de creació"
msgctxt "field:sale.configuration.company,write_uid:"
msgid "Write User"
msgstr "Usuari de modificació"
msgctxt "field:sale.configuration.sequence,invoice_group_sequence:"
msgid "Invoice Group Sequence"
msgstr "Seqüència agrupació factures"
msgctxt "field:sale.invoice.group,code:"
msgid "Code"
msgstr "Codi"
msgctxt "field:sale.invoice.group,create_date:"
msgid "Create Date"
msgstr "Data de creació"
msgctxt "field:sale.invoice.group,create_uid:"
msgid "Create User"
msgstr "Usuari de creació"
msgctxt "field:sale.invoice.group,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:sale.invoice.group,name:"
msgid "Name"
msgstr "Nom"
msgctxt "field:sale.invoice.group,rec_name:"
msgid "Record Name"
msgstr "Nom"
msgctxt "field:sale.invoice.group,write_date:"
msgid "Write Date"
msgstr "Data modificació"
msgctxt "field:sale.invoice.group,write_uid:"
msgid "Write User"
msgstr "Usuari modificació"
msgctxt "field:sale.line,invoice_group:"
msgid "Invoice Grouping"
msgstr "Agrupació de facturació"
@ -86,10 +34,6 @@ msgctxt "model:ir.sequence.type,name:sequence_type_invoice_group"
msgid "Sale Invoice Group"
msgstr "Grup de facturació per a vendes"
msgctxt "model:sale.configuration.company,name:"
msgid "Sale Configuration by Company"
msgstr "Configuració de la venda per empresa"
msgctxt "model:sale.invoice.group,name:"
msgid "Sale Invoice Group"
msgstr "Grup de facturació per a vendes"

View File

@ -3,73 +3,21 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:sale.configuration,invoice_group_sequence:"
msgid "Invoice group sequence"
msgstr "Sequencia de grupos de facturación"
msgid "Invoice Group Sequence"
msgstr "Secuencia agrupación facturas"
msgctxt "field:sale.configuration.company,company:"
msgid "Company"
msgstr "Empresa"
msgctxt "field:sale.configuration.company,create_date:"
msgid "Create Date"
msgstr "Fecha de creación"
msgctxt "field:sale.configuration.company,create_uid:"
msgid "Create User"
msgstr "Usuario de creación"
msgctxt "field:sale.configuration.company,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:sale.configuration.company,invoice_group_sequence:"
msgid "Invoice group sequence"
msgstr "Sequencia de grupos de facturación"
msgctxt "field:sale.configuration.company,rec_name:"
msgid "Record Name"
msgstr "Nombre registro"
msgctxt "field:sale.configuration.company,write_date:"
msgid "Write Date"
msgstr "Fecha de modificación"
msgctxt "field:sale.configuration.company,write_uid:"
msgid "Write User"
msgstr "Usuario de modificación"
msgctxt "field:sale.configuration.sequence,invoice_group_sequence:"
msgid "Invoice Group Sequence"
msgstr "Secuencia agrupación facturas"
msgctxt "field:sale.invoice.group,code:"
msgid "Code"
msgstr "Código"
msgctxt "field:sale.invoice.group,create_date:"
msgid "Create Date"
msgstr "Fecha de creación"
msgctxt "field:sale.invoice.group,create_uid:"
msgid "Create User"
msgstr "Usuario de creación"
msgctxt "field:sale.invoice.group,id:"
msgid "ID"
msgstr "ID"
msgctxt "field:sale.invoice.group,name:"
msgid "Name"
msgstr "Nombre"
msgctxt "field:sale.invoice.group,rec_name:"
msgid "Record Name"
msgstr "Nombre"
msgctxt "field:sale.invoice.group,write_date:"
msgid "Write Date"
msgstr "Fecha modificación"
msgctxt "field:sale.invoice.group,write_uid:"
msgid "Write User"
msgstr "Usuario modificación"
msgctxt "field:sale.line,invoice_group:"
msgid "Invoice Grouping"
msgstr "Agrupación de facturación"
@ -86,10 +34,6 @@ msgctxt "model:ir.sequence.type,name:sequence_type_invoice_group"
msgid "Sale Invoice Group"
msgstr "Grupo de facturación para ventas"
msgctxt "model:sale.configuration.company,name:"
msgid "Sale Configuration by Company"
msgstr "Configuración de la venta por empresa"
msgctxt "model:sale.invoice.group,name:"
msgid "Sale Invoice Group"
msgstr "Grupo de facturación para ventas"

12
sale.py
View File

@ -3,28 +3,29 @@
from trytond.model import ModelView, ModelSQL, fields
from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval
from trytond.transaction import Transaction
__all__ = ['SaleInvoiceGroup', 'Sale', 'SaleLine']
class SaleInvoiceGroup(ModelSQL, ModelView, metaclass=PoolMeta):
class SaleInvoiceGroup(ModelSQL, ModelView):
'Sale Invoice Group'
__name__ = 'sale.invoice.group'
code = fields.Char('Code', required=True, readonly=True)
name = fields.Char('Name')
@classmethod
def create(cls, vlist):
pool = Pool()
Sequence = pool.get('ir.sequence')
Config = pool.get('sale.configuration')
company_id = Transaction().context.get('company')
config = Config(1)
for value in vlist:
if not 'code' in value:
value['code'] = Sequence.get_id(
config.invoice_group_sequence.id)
value['code'] = config.get_multivalue(
'invoice_group_sequence', company=company_id).get()
return super(SaleInvoiceGroup, cls).create(vlist)
def get_rec_name(self, name):
@ -72,7 +73,6 @@ class Sale(metaclass=PoolMeta):
class SaleLine(metaclass=PoolMeta):
__name__ = 'sale.line'
invoice_group = fields.Many2One('sale.invoice.group', 'Invoice Grouping',
ondelete='RESTRICT', depends=['type'], states={
'invisible': Eval('type') != 'line',

View File

@ -56,7 +56,6 @@ Create account user::
>>> account_user.groups.append(account_group)
>>> account_user.save()
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
@ -82,9 +81,6 @@ Configure sale::
>>> sale_config = SaleConfig(1)
>>> sale_config.sale_shipment_method = 'order'
>>> sale_config.sale_invoice_method = 'shipment'
>>> invoice_group_sequence, = Sequence.find([
... ('code', '=', 'sale.invoice.group')])
>>> sale_config.invoice_group_sequence = invoice_group_sequence
>>> sale_config.save()
Create parties::
@ -211,11 +207,11 @@ Validate Shipments::
>>> shipment, = sale.shipments
>>> config.user = stock_user.id
>>> ShipmentOut = Model.get('stock.shipment.out')
>>> ShipmentOut.assign_try([shipment.id], config.context)
>>> shipment.click('assign_try')
True
>>> ShipmentOut.pack([shipment.id], config.context)
>>> ShipmentOut.done([shipment.id], config.context)
>>> shipment.click('pick')
>>> shipment.click('pack')
>>> shipment.click('done')
>>> config.user = sale_user.id
>>> sale.reload()
>>> len(sale.shipments), len(sale.shipment_returns), len(sale.invoices)
@ -266,10 +262,11 @@ Validate Shipments::
... move.quantity = 2.0
... move.save()
>>> shipment.save()
>>> ShipmentOut.assign_try([shipment.id], config.context)
>>> shipment.click('assign_try')
True
>>> ShipmentOut.pack([shipment.id], config.context)
>>> ShipmentOut.done([shipment.id], config.context)
>>> shipment.click('pick')
>>> shipment.click('pack')
>>> shipment.click('done')
>>> config.user = sale_user.id
>>> sale.reload()
>>> len(sale.shipments), len(sale.shipment_returns), len(sale.invoices)
@ -284,29 +281,27 @@ Validate Shipments::
>>> for move in moves_to_remove:
... shipment2.moves.remove(move)
>>> shipment2.save()
>>> ShipmentOut.assign_try([shipment2.id], config.context)
>>> shipment2.click('assign_try')
True
>>> ShipmentOut.pack([shipment2.id], config.context)
>>> ShipmentOut.done([shipment2.id], config.context)
>>> shipment2.click('pick')
>>> shipment2.click('pack')
>>> shipment2.click('done')
>>> config.user = sale_user.id
>>> sale.reload()
>>> len(sale.shipments), len(sale.shipment_returns), len(sale.invoices)
(3, 0, 1)
>>> invoice, = sale.invoices
>>> len(invoice.lines) == 1
True
>>> shipment3, = sale.shipments.find([('state', '=', 'waiting')])
>>> config.user = stock_user.id
>>> ShipmentOut.assign_try([shipment3.id], config.context)
>>> shipment3.click('assign_try')
True
>>> ShipmentOut.pack([shipment3.id], config.context)
>>> ShipmentOut.done([shipment3.id], config.context)
>>> shipment3.click('pick')
>>> shipment3.click('pack')
>>> shipment3.click('done')
>>> config.user = sale_user.id
>>> sale.reload()
>>> len(sale.shipments), len(sale.shipment_returns), len(sale.invoices)

View File

@ -1,5 +1,5 @@
[tryton]
version=5.5.0
version=6.0.0
depends:
sale_invoice_complete
xml: