Add cron to deactivate variants with stock 0 | #046284

This commit is contained in:
jared-nan 2022-01-25 10:29:14 +01:00 committed by Jared Esparza
parent f1de3ee6e0
commit 0b3999e996
7 changed files with 136 additions and 77 deletions

View File

@ -27,6 +27,8 @@ def register():
product.Certification, product.Certification,
product.Container, product.Container,
product.Product, product.Product,
product.ProductConfiguration,
product.Cron,
product.ProductCrop, product.ProductCrop,
product.ProductDO, product.ProductDO,
product.ProductEcological, product.ProductEcological,

View File

@ -226,18 +226,10 @@ msgctxt "field:agronomics.weighing,denomination_origin:"
msgid "Denomination of Origin" msgid "Denomination of Origin"
msgstr "Denominació d'origen" msgstr "Denominació d'origen"
msgctxt "field:agronomics.weighing,do:"
msgid "Denomination Origin"
msgstr "Denominació d'origen"
msgctxt "field:agronomics.weighing,ecological:" msgctxt "field:agronomics.weighing,ecological:"
msgid "Ecological" msgid "Ecological"
msgstr "Ecològic" msgstr "Ecològic"
msgctxt "field:agronomics.weighing,net_weight:"
msgid "Net Weight"
msgstr "Pes net"
msgctxt "field:agronomics.weighing,netweight:" msgctxt "field:agronomics.weighing,netweight:"
msgid "Net Weight" msgid "Net Weight"
msgstr "Pes net" msgstr "Pes net"
@ -302,10 +294,6 @@ msgctxt "field:agronomics.weighing-agronomics.do,weighing:"
msgid "Weighing" msgid "Weighing"
msgstr "Pesada" msgstr "Pesada"
msgctxt "field:agronomics.weighing-agronomics.plantation,Plantation:"
msgid "Plantation"
msgstr "Plantacións"
msgctxt "field:agronomics.weighing-agronomics.plantation,plantation:" msgctxt "field:agronomics.weighing-agronomics.plantation,plantation:"
msgid "Plantation" msgid "Plantation"
msgstr "Plantacións" msgstr "Plantacións"
@ -314,14 +302,6 @@ msgctxt "field:agronomics.weighing-agronomics.plantation,weighing:"
msgid "Weighing" msgid "Weighing"
msgstr "Pesada" msgstr "Pesada"
msgctxt "field:agronomics.weighing-agronomics.plantations,Plantation:"
msgid "Plantation"
msgstr "Plantacións"
msgctxt "field:agronomics.weighing-agronomics.plantations,weighing:"
msgid "Weighing"
msgstr "Pesada"
msgctxt "field:agronomics.weighing.center,name:" msgctxt "field:agronomics.weighing.center,name:"
msgid "Name" msgid "Name"
msgstr "Nom" msgstr "Nom"
@ -336,7 +316,11 @@ msgstr "Parceles"
msgctxt "field:party.party,plantations:" msgctxt "field:party.party,plantations:"
msgid "Plantation" msgid "Plantation"
msgstr "Plantacións" msgstr "Plantació"
msgctxt "field:product.configuration,variant_deactivation_time:"
msgid "Variant Deactivation Time"
msgstr "Temps per desactivar variants"
msgctxt "field:product.product,agronomic_type:" msgctxt "field:product.product,agronomic_type:"
msgid "Agronomic Type" msgid "Agronomic Type"
@ -390,6 +374,10 @@ msgctxt "field:product.product,shipment_out_quality_template:"
msgid "Shipment Out Quality Template" msgid "Shipment Out Quality Template"
msgstr "Plantilla qualitat albarà sortida" msgstr "Plantilla qualitat albarà sortida"
msgctxt "field:product.product,variant_deactivate_stock_zero:"
msgid "Variant Deactivate Stock 0"
msgstr "Desactivar variant amb estoc a 0"
msgctxt "field:product.product,varieties:" msgctxt "field:product.product,varieties:"
msgid "Varieties" msgid "Varieties"
msgstr "Varietats" msgstr "Varietats"
@ -792,15 +780,7 @@ msgstr "Ecològic"
msgctxt "field:product.product-agronomics.ecological,product:" msgctxt "field:product.product-agronomics.ecological,product:"
msgid "Product" msgid "Product"
msgstr "Productes" msgstr "Producte"
msgctxt "field:product.product-product.taxon,product:"
msgid "Product"
msgstr "Productes"
msgctxt "field:product.product-product.taxon,variety:"
msgid "Variety"
msgstr "Varietat"
msgctxt "field:product.template,agronomic_type:" msgctxt "field:product.template,agronomic_type:"
msgid "Agronomic Type" msgid "Agronomic Type"
@ -818,6 +798,10 @@ msgctxt "field:product.template,quality_weighing:"
msgid "Quality Weighing" msgid "Quality Weighing"
msgstr "Qualitat pesada" msgstr "Qualitat pesada"
msgctxt "field:product.template,variant_deactivate_stock_zero:"
msgid "Variant Deactivate Stock 0"
msgstr "Desactivar variant amb estoc 0"
msgctxt "field:product.variety,percent:" msgctxt "field:product.variety,percent:"
msgid "Percent" msgid "Percent"
msgstr "Percentatge" msgstr "Percentatge"
@ -1135,10 +1119,6 @@ msgctxt "model:agronomics.weighing-agronomics.plantation,name:"
msgid "Weighing - Plantations" msgid "Weighing - Plantations"
msgstr "Pesada - Plantacions" msgstr "Pesada - Plantacions"
msgctxt "model:agronomics.weighing-agronomics.plantations,name:"
msgid "Weighing - Plantations"
msgstr "Pesada - Plantacions"
msgctxt "model:agronomics.weighing.center,name:" msgctxt "model:agronomics.weighing.center,name:"
msgid "Weighing Center" msgid "Weighing Center"
msgstr "Centre de pesada" msgstr "Centre de pesada"
@ -1445,10 +1425,6 @@ msgctxt "model:product.product-agronomics.ecological,name:"
msgid "Product - Ecological" msgid "Product - Ecological"
msgstr "Producte - Ecològic" msgstr "Producte - Ecològic"
msgctxt "model:product.product-product.taxon,name:"
msgid "Product - Variety"
msgstr "Producte - Varietat"
msgctxt "model:product.variety,name:" msgctxt "model:product.variety,name:"
msgid "Product Variety" msgid "Product Variety"
msgstr "Varietat" msgstr "Varietat"
@ -1714,6 +1690,10 @@ msgctxt "selection:agronomics.weighing,state:"
msgid "Processing" msgid "Processing"
msgstr "Processos" msgstr "Processos"
msgctxt "selection:ir.cron,method:"
msgid "Deactivate Variants"
msgstr "Desactivar variants"
msgctxt "selection:product.product,agronomic_type:" msgctxt "selection:product.product,agronomic_type:"
msgid "Bottled Wine" msgid "Bottled Wine"
msgstr "Vi embotellat" msgstr "Vi embotellat"
@ -1818,6 +1798,22 @@ msgctxt "view:product.product:"
msgid "Agronomics" msgid "Agronomics"
msgstr "Agronomics" msgstr "Agronomics"
msgctxt "view:product.product:"
msgid "Quality"
msgstr ""
msgctxt "view:production.cost_price.distribution:"
msgid "%"
msgstr "%"
msgctxt "view:production:"
msgid "Cost Distribution"
msgstr "Distribució de costos"
msgctxt "view:production:"
msgid "Total"
msgstr "Total"
msgctxt "" msgctxt ""
"wizard_button:production.cost_price.distribution.template.from.production.template,ask,create_cost_distributions:" "wizard_button:production.cost_price.distribution.template.from.production.template,ask,create_cost_distributions:"
msgid "Create" msgid "Create"

View File

@ -226,18 +226,10 @@ msgctxt "field:agronomics.weighing,denomination_origin:"
msgid "Denomination of Origin" msgid "Denomination of Origin"
msgstr "Denominación de origen" msgstr "Denominación de origen"
msgctxt "field:agronomics.weighing,do:"
msgid "Denomination Origin"
msgstr "Denominación de origen"
msgctxt "field:agronomics.weighing,ecological:" msgctxt "field:agronomics.weighing,ecological:"
msgid "Ecological" msgid "Ecological"
msgstr "Ecológico" msgstr "Ecológico"
msgctxt "field:agronomics.weighing,net_weight:"
msgid "Net Weight"
msgstr "Peso neto"
msgctxt "field:agronomics.weighing,netweight:" msgctxt "field:agronomics.weighing,netweight:"
msgid "Net Weight" msgid "Net Weight"
msgstr "Peso neto" msgstr "Peso neto"
@ -302,10 +294,6 @@ msgctxt "field:agronomics.weighing-agronomics.do,weighing:"
msgid "Weighing" msgid "Weighing"
msgstr "Pesada" msgstr "Pesada"
msgctxt "field:agronomics.weighing-agronomics.plantation,Plantation:"
msgid "Plantation"
msgstr "Plantaciónes"
msgctxt "field:agronomics.weighing-agronomics.plantation,plantation:" msgctxt "field:agronomics.weighing-agronomics.plantation,plantation:"
msgid "Plantation" msgid "Plantation"
msgstr "Plantaciónes" msgstr "Plantaciónes"
@ -314,14 +302,6 @@ msgctxt "field:agronomics.weighing-agronomics.plantation,weighing:"
msgid "Weighing" msgid "Weighing"
msgstr "Pesada" msgstr "Pesada"
msgctxt "field:agronomics.weighing-agronomics.plantations,Plantation:"
msgid "Plantation"
msgstr "Plantaciónes"
msgctxt "field:agronomics.weighing-agronomics.plantations,weighing:"
msgid "Weighing"
msgstr "Pesada"
msgctxt "field:agronomics.weighing.center,name:" msgctxt "field:agronomics.weighing.center,name:"
msgid "Name" msgid "Name"
msgstr "Nombre" msgstr "Nombre"
@ -338,6 +318,10 @@ msgctxt "field:party.party,plantations:"
msgid "Plantation" msgid "Plantation"
msgstr "Plantaciónes" msgstr "Plantaciónes"
msgctxt "field:product.configuration,variant_deactivation_time:"
msgid "Variant Deactivation Time"
msgstr "Tiempo para desactivar variantes"
msgctxt "field:product.product,agronomic_type:" msgctxt "field:product.product,agronomic_type:"
msgid "Agronomic Type" msgid "Agronomic Type"
msgstr "Tipo Agronómico" msgstr "Tipo Agronómico"
@ -390,6 +374,10 @@ msgctxt "field:product.product,shipment_out_quality_template:"
msgid "Shipment Out Quality Template" msgid "Shipment Out Quality Template"
msgstr "Plantilla calidad albarán de salida" msgstr "Plantilla calidad albarán de salida"
msgctxt "field:product.product,variant_deactivate_stock_zero:"
msgid "Variant Deactivate Stock 0"
msgstr "Desactivar variante con stock a 0"
msgctxt "field:product.product,varieties:" msgctxt "field:product.product,varieties:"
msgid "Varieties" msgid "Varieties"
msgstr "Variedades" msgstr "Variedades"
@ -794,14 +782,6 @@ msgctxt "field:product.product-agronomics.ecological,product:"
msgid "Product" msgid "Product"
msgstr "Productos" msgstr "Productos"
msgctxt "field:product.product-product.taxon,product:"
msgid "Product"
msgstr "Productos"
msgctxt "field:product.product-product.taxon,variety:"
msgid "Variety"
msgstr "Variedad"
msgctxt "field:product.template,agronomic_type:" msgctxt "field:product.template,agronomic_type:"
msgid "Agronomic Type" msgid "Agronomic Type"
msgstr "Tipo Agronómico" msgstr "Tipo Agronómico"
@ -818,6 +798,10 @@ msgctxt "field:product.template,quality_weighing:"
msgid "Quality Weighing" msgid "Quality Weighing"
msgstr "Calidad pesada" msgstr "Calidad pesada"
msgctxt "field:product.template,variant_deactivate_stock_zero:"
msgid "Variant Deactivate Stock 0"
msgstr "Desactivar variante con estoc 0"
msgctxt "field:product.variety,percent:" msgctxt "field:product.variety,percent:"
msgid "Percent" msgid "Percent"
msgstr "Porcentaje" msgstr "Porcentaje"
@ -966,7 +950,7 @@ msgid "Uom"
msgstr "UdM" msgstr "UdM"
msgctxt "field:production.template,cost_distribution_template:" msgctxt "field:production.template,cost_distribution_template:"
msgid "Default cost distribution templatea" msgid "Default cost distribution template"
msgstr "Plantilla de distribución de costos predeterminada" msgstr "Plantilla de distribución de costos predeterminada"
msgctxt "field:production.template,cost_distribution_templates:" msgctxt "field:production.template,cost_distribution_templates:"
@ -1135,10 +1119,6 @@ msgctxt "model:agronomics.weighing-agronomics.plantation,name:"
msgid "Weighing - Plantations" msgid "Weighing - Plantations"
msgstr "Pesada - Plantación" msgstr "Pesada - Plantación"
msgctxt "model:agronomics.weighing-agronomics.plantations,name:"
msgid "Weighing - Plantations"
msgstr "Pesada - Plantación"
msgctxt "model:agronomics.weighing.center,name:" msgctxt "model:agronomics.weighing.center,name:"
msgid "Weighing Center" msgid "Weighing Center"
msgstr "Centro de pesada" msgstr "Centro de pesada"
@ -1195,9 +1175,10 @@ msgctxt "model:ir.action,name:act_product_quantitative_test_lines"
msgid "Quantitative Lines" msgid "Quantitative Lines"
msgstr "Líneas cuantitativas" msgstr "Líneas cuantitativas"
#, fuzzy
msgctxt "model:ir.action,name:act_production_cost_distribution_template_tree" msgctxt "model:ir.action,name:act_production_cost_distribution_template_tree"
msgid "Templates Cost Price Distribution" msgid "Templates Cost Price Distribution"
msgstr "" msgstr "Distribución de precios de costes de plantillas"
msgctxt "model:ir.action,name:act_production_cost_price_distribution_tree" msgctxt "model:ir.action,name:act_production_cost_price_distribution_tree"
msgid "Cost Price Distribution" msgid "Cost Price Distribution"
@ -1446,10 +1427,6 @@ msgctxt "model:product.product-agronomics.ecological,name:"
msgid "Product - Ecological" msgid "Product - Ecological"
msgstr "Producto - Ecológico" msgstr "Producto - Ecológico"
msgctxt "model:product.product-product.taxon,name:"
msgid "Product - Variety"
msgstr "Producto - Variedad"
msgctxt "model:product.variety,name:" msgctxt "model:product.variety,name:"
msgid "Product Variety" msgid "Product Variety"
msgstr "Variedad de producto" msgstr "Variedad de producto"
@ -1715,6 +1692,10 @@ msgctxt "selection:agronomics.weighing,state:"
msgid "Processing" msgid "Processing"
msgstr "Procesos" msgstr "Procesos"
msgctxt "selection:ir.cron,method:"
msgid "Deactivate Variants"
msgstr "Desactivar Variantes"
msgctxt "selection:product.product,agronomic_type:" msgctxt "selection:product.product,agronomic_type:"
msgid "Bottled Wine" msgid "Bottled Wine"
msgstr "Vino embotellado" msgstr "Vino embotellado"
@ -1823,6 +1804,18 @@ msgctxt "view:product.product:"
msgid "Quality" msgid "Quality"
msgstr "Calidad" msgstr "Calidad"
msgctxt "view:production.cost_price.distribution:"
msgid "%"
msgstr "%"
msgctxt "view:production:"
msgid "Cost Distribution"
msgstr "Distribución de costes"
msgctxt "view:production:"
msgid "Total"
msgstr "Total"
msgctxt "" msgctxt ""
"wizard_button:production.cost_price.distribution.template.from.production.template,ask,create_cost_distributions:" "wizard_button:production.cost_price.distribution.template.from.production.template,ask,create_cost_distributions:"
msgid "Create" msgid "Create"

View File

@ -1,12 +1,14 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of # This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms. # this repository contains the full copyright notices and license terms.
from decimal import Decimal from decimal import Decimal
from datetime import datetime
from trytond.model import ModelSQL, ModelView, fields from trytond.model import ModelSQL, ModelView, fields
from trytond.pool import PoolMeta from trytond.pool import Pool, PoolMeta
from trytond.pyson import Eval from trytond.pyson import Eval
from trytond.exceptions import UserError from trytond.exceptions import UserError
from trytond.i18n import gettext from trytond.i18n import gettext
from trytond.modules.agronomics.wine import WineMixin from trytond.modules.agronomics.wine import WineMixin
from trytond.transaction import Transaction
class Certification(ModelSQL, ModelView): class Certification(ModelSQL, ModelView):
@ -29,6 +31,12 @@ class Container(ModelSQL, ModelView):
capacity = fields.Numeric('Capacity', digits=(16, 2)) capacity = fields.Numeric('Capacity', digits=(16, 2))
class ProductConfiguration(metaclass=PoolMeta):
__name__ = 'product.configuration'
variant_deactivation_time = fields.TimeDelta("Variant Deactivation Time")
class Template(metaclass=PoolMeta): class Template(metaclass=PoolMeta):
__name__ = 'product.template' __name__ = 'product.template'
@ -56,6 +64,8 @@ class Template(metaclass=PoolMeta):
quality_weighing = fields.Many2One('quality.template', 'Quality Weighing') quality_weighing = fields.Many2One('quality.template', 'Quality Weighing')
variant_deactivate_stock_zero = fields.Boolean("Variant Deactivate Stock 0")
def get_capacity(self, name): def get_capacity(self, name):
if self.container: if self.container:
return self.container.capacity return self.container.capacity
@ -106,6 +116,27 @@ class Product(WineMixin, metaclass=PoolMeta):
quality_samples = fields.Many2Many('product.product-quality.sample', quality_samples = fields.Many2Many('product.product-quality.sample',
'product', 'sample', 'Quality Samples') 'product', 'sample', 'Quality Samples')
@classmethod
def deactivate_no_stock_variants_cron(cls):
pool = Pool()
Location = pool.get('stock.location')
ProductConfiguration = pool.get('product.configuration')
config = ProductConfiguration(1)
locations = Location.search(['type', '=', 'warehouse'])
locations = [location.id for location in locations]
with Transaction().set_context(locations=locations, with_childs=True):
if config.variant_deactivation_time:
products = cls.search(
[
('quantity', '=', 0),
('template.variant_deactivate_stock_zero', '=', True),
('create_date', '<',
(datetime.now() - config.variant_deactivation_time))
])
for product in products:
product.active = False
cls.save(products)
@classmethod @classmethod
def validate(cls, products): def validate(cls, products):
for product in products: for product in products:
@ -127,6 +158,18 @@ class Product(WineMixin, metaclass=PoolMeta):
Decimal(str(10 ** -self.__class__.alcohol_volume.digits[1]))) Decimal(str(10 ** -self.__class__.alcohol_volume.digits[1])))
class Cron(metaclass=PoolMeta):
__name__ = 'ir.cron'
@classmethod
def __setup__(cls):
super(Cron, cls).__setup__()
cls.method.selection.append(
('product.product|deactivate_no_stock_variants_cron',
"Deactivate Variants"),
)
class ProductCrop(ModelSQL): class ProductCrop(ModelSQL):
"Product - Crop" "Product - Crop"
__name__ = 'product.product-agronomics.crop' __name__ = 'product.product-agronomics.crop'

View File

@ -79,6 +79,20 @@
<field name="action" ref="act_product_qualitative_test_lines"/> <field name="action" ref="act_product_qualitative_test_lines"/>
</record> </record>
<record model="ir.cron" id="cron_variant_deactivation">
<field name="active" eval="True" />
<field name="interval_number" eval="24" />
<field name="interval_type">hours</field>
<field name="method">product.product|deactivate_no_stock_variants_cron</field>
</record>
<!-- Product Configuration-->
<record model="ir.ui.view" id="product_configuration_view_form">
<field name="model">product.configuration</field>
<field name="name">product_configuration_form</field>
<field name="inherit" ref="product.product_configuration_view_form"/>
</record>
<!-- Certification --> <!-- Certification -->
<record model="ir.ui.view" id="certification_view_form"> <record model="ir.ui.view" id="certification_view_form">
<field name="model">agronomics.certification</field> <field name="model">agronomics.certification</field>

View File

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- 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" position="inside">
<label name="variant_deactivation_time"/>
<field name="variant_deactivation_time"/>
</xpath>
</data>

View File

@ -11,6 +11,8 @@ this repository contains the full copyright notices and license terms. -->
<field name="capacity"/> <field name="capacity"/>
<label name="quality_weighing"/> <label name="quality_weighing"/>
<field name="quality_weighing"/> <field name="quality_weighing"/>
<label name="variant_deactivate_stock_zero"/>
<field name="variant_deactivate_stock_zero"/>
</xpath> </xpath>
</data> </data>