lims_sale_industry: task trigger refactoring
This commit is contained in:
parent
d17bab06b1
commit
256eac5b01
|
@ -7,6 +7,7 @@ from . import configuration
|
|||
from . import sale
|
||||
from . import analysis
|
||||
from . import product
|
||||
from . import task
|
||||
|
||||
|
||||
def register():
|
||||
|
@ -27,6 +28,8 @@ def register():
|
|||
sale.SaleSearchLabelStart,
|
||||
analysis.Analysis,
|
||||
product.Template,
|
||||
task.AdministrativeTaskTemplate,
|
||||
task.AdministrativeTask,
|
||||
module='lims_sale_industry', type_='model')
|
||||
Pool.register(
|
||||
sale.SaleAddProductKit,
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims_sale module for Tryton.
|
||||
# This file is part of lims_sale_industry module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims_sale module for Tryton.
|
||||
# This file is part of lims_sale_industry module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
||||
|
|
|
@ -342,6 +342,14 @@ msgctxt "model:ir.action,name:wiz_sale_search_label"
|
|||
msgid "Search label"
|
||||
msgstr "Buscar etiqueta"
|
||||
|
||||
msgctxt "model:ir.message,text:lbl_product_quotation"
|
||||
msgid "Product sold"
|
||||
msgstr "Producto vendido"
|
||||
|
||||
msgctxt "model:ir.message,text:lbl_sale_purchase_order_required"
|
||||
msgid "Purchase Order Required"
|
||||
msgstr "Orden de compra requerida"
|
||||
|
||||
msgctxt "model:ir.message,text:msg_no_sample_label_sequence"
|
||||
msgid "There is no label sequence configured"
|
||||
msgstr "No hay una secuencia de etiqueta configurada"
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
<?xml version="1.0"?>
|
||||
<tryton>
|
||||
<data group="1">
|
||||
<record model="ir.message" id="lbl_product_quotation">
|
||||
<field name="text">Product sold</field>
|
||||
</record>
|
||||
<record model="ir.message" id="lbl_sale_purchase_order_required">
|
||||
<field name="text">Purchase Order Required</field>
|
||||
</record>
|
||||
<record model="ir.message" id="msg_no_sample_label_sequence">
|
||||
<field name="text">There is no label sequence configured</field>
|
||||
</record>
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims_sale module for Tryton.
|
||||
# This file is part of lims_sale_industry module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# This file is part of lims_sale_industry module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
@ -73,6 +72,34 @@ class Sale(metaclass=PoolMeta):
|
|||
contacts = Contact.search([('party', '=', self.party)])
|
||||
return [c.id for c in contacts]
|
||||
|
||||
@classmethod
|
||||
def confirm(cls, sales):
|
||||
pool = Pool()
|
||||
TaskTemplate = pool.get('lims.administrative.task.template')
|
||||
SaleLine = pool.get('sale.line')
|
||||
super(Sale, cls).confirm(sales)
|
||||
TaskTemplate.create_tasks('sale_purchase_order_required',
|
||||
cls._for_task_purchase_order_required(sales))
|
||||
lines = [l for s in sales for l in s.lines]
|
||||
SaleLine._confirm_lines(lines)
|
||||
|
||||
@classmethod
|
||||
def _for_task_purchase_order_required(cls, sales):
|
||||
AdministrativeTask = Pool().get('lims.administrative.task')
|
||||
res = []
|
||||
for sale in sales:
|
||||
if not (sale.invoice_party.purchase_order_required and
|
||||
not sale.purchase_order):
|
||||
continue
|
||||
if AdministrativeTask.search([
|
||||
('type', '=', 'sale_purchase_order_required'),
|
||||
('origin', '=', '%s,%s' % (cls.__name__, sale.id)),
|
||||
('state', 'not in', ('done', 'discarded')),
|
||||
]):
|
||||
continue
|
||||
res.append(sale)
|
||||
return res
|
||||
|
||||
|
||||
class SalePlant(ModelSQL):
|
||||
'Sale - Plant'
|
||||
|
@ -182,6 +209,28 @@ class SaleLine(metaclass=PoolMeta):
|
|||
Bool(Eval('analysis')))}
|
||||
cls.expiration_date.depends.extend(['_parent_sale', 'analysis'])
|
||||
|
||||
@classmethod
|
||||
def _confirm_lines(cls, lines):
|
||||
TaskTemplate = Pool().get('lims.administrative.task.template')
|
||||
TaskTemplate.create_tasks('product_quotation',
|
||||
cls._for_task_product_quotation(lines))
|
||||
|
||||
@classmethod
|
||||
def _for_task_product_quotation(cls, lines):
|
||||
AdministrativeTask = Pool().get('lims.administrative.task')
|
||||
res = []
|
||||
for line in lines:
|
||||
if not line.product or not line.product.create_task_quotation:
|
||||
continue
|
||||
if AdministrativeTask.search([
|
||||
('type', '=', 'product_quotation'),
|
||||
('origin', '=', '%s,%s' % (cls.__name__, line.id)),
|
||||
('state', 'not in', ('done', 'discarded')),
|
||||
]):
|
||||
continue
|
||||
res.append(line)
|
||||
return res
|
||||
|
||||
|
||||
class SaleLinePlant(ModelSQL):
|
||||
'Sale Line - Plant'
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
# This file is part of lims_sale_industry module for Tryton.
|
||||
# The COPYRIGHT file at the top level of this repository contains
|
||||
# the full copyright notices and license terms.
|
||||
|
||||
from trytond.pool import PoolMeta
|
||||
from trytond.i18n import gettext
|
||||
|
||||
__all__ = ['AdministrativeTaskTemplate', 'AdministrativeTask']
|
||||
|
||||
|
||||
class AdministrativeTaskTemplate(metaclass=PoolMeta):
|
||||
__name__ = 'lims.administrative.task.template'
|
||||
|
||||
@classmethod
|
||||
def get_types(cls):
|
||||
types = super(AdministrativeTaskTemplate, cls).get_types()
|
||||
types.append(('sale_purchase_order_required',
|
||||
gettext('lims_sale_industry.lbl_sale_purchase_order_required')))
|
||||
types.append(('product_quotation',
|
||||
gettext('lims_sale_industry.lbl_product_quotation')))
|
||||
return types
|
||||
|
||||
|
||||
class AdministrativeTask(metaclass=PoolMeta):
|
||||
__name__ = 'lims.administrative.task'
|
||||
|
||||
@classmethod
|
||||
def _get_origin(cls):
|
||||
origins = super(AdministrativeTask, cls)._get_origin()
|
||||
origins.extend([
|
||||
'sale.sale',
|
||||
'sale.line',
|
||||
])
|
||||
return origins
|
|
@ -3,6 +3,7 @@ version=5.2.0
|
|||
depends:
|
||||
lims_sale
|
||||
lims_industry
|
||||
lims_administrative_task
|
||||
xml:
|
||||
configuration.xml
|
||||
sale.xml
|
||||
|
|
Loading…
Reference in New Issue