Add new button "Done" to end individually each distribution. (#7)

Task #047777
This commit is contained in:
juanjo-nan 2022-01-13 14:42:05 +01:00 committed by Juanjo Garcia
parent a14f712dee
commit a2328604f8
6 changed files with 109 additions and 18 deletions

View File

@ -921,6 +921,10 @@ msgctxt "field:production.enology.product,uom:"
msgid "Uom"
msgstr "UdM"
msgctxt "field:production.output.distribution,distribution_state:"
msgid "Distribution State"
msgstr "Estat Distribució"
msgctxt "field:production.output.distribution,final_quantity:"
msgid "Final Quantity"
msgstr "Quantitat Final"
@ -939,7 +943,7 @@ msgstr "Ubicació"
msgctxt "field:production.output.distribution,produced_quantity:"
msgid "Produced Quantity"
msgstr "Quantitat produia"
msgstr "Quantitat produïda"
msgctxt "field:production.output.distribution,product:"
msgid "Template"
@ -1284,6 +1288,11 @@ msgstr ""
"El producte \"%(product)s\" no pot tenir més d'una collita degut al seu "
"tipus agronòmic"
msgctxt ""
"model:ir.model.button,string:production_output_distribution_done_button"
msgid "Done"
msgstr "Realitzar"
msgctxt "model:ir.model.button,string:weighing_analysis_button"
msgid "Analysis"
msgstr "Anàlisi"
@ -1717,6 +1726,14 @@ msgctxt "selection:product.template,agronomic_type:"
msgid "Wine"
msgstr "Vi"
msgctxt "selection:production.output.distribution,distribution_state:"
msgid "Done"
msgstr "Realitzat"
msgctxt "selection:production.output.distribution,distribution_state:"
msgid "Draft"
msgstr "Esborrany"
msgctxt "selection:production.output.distribution,production_state:"
msgid "Assigned"
msgstr "Reservat"

View File

@ -921,6 +921,10 @@ msgctxt "field:production.enology.product,uom:"
msgid "Uom"
msgstr "UdM"
msgctxt "field:production.output.distribution,distribution_state:"
msgid "Distribution State"
msgstr "Estado Distribución"
msgctxt "field:production.output.distribution,final_quantity:"
msgid "Final Quantity"
msgstr "Cantidad Final"
@ -1284,6 +1288,11 @@ msgstr ""
"El producto \"%(product)s\" no puede tener más de una cosecha debido a su "
"Tipo Agronómico"
msgctxt ""
"model:ir.model.button,string:production_output_distribution_done_button"
msgid "Done"
msgstr "Realizar"
msgctxt "model:ir.model.button,string:weighing_analysis_button"
msgid "Analysis"
msgstr "Análisis"
@ -1717,6 +1726,14 @@ msgctxt "selection:product.template,agronomic_type:"
msgid "Wine"
msgstr "Vino"
msgctxt "selection:production.output.distribution,distribution_state:"
msgid "Done"
msgstr "Realizado"
msgctxt "selection:production.output.distribution,distribution_state:"
msgid "Draft"
msgstr "Borrador"
msgctxt "selection:production.output.distribution,production_state:"
msgid "Assigned"
msgstr "Reservado"
@ -1731,7 +1748,7 @@ msgstr "Realizado"
msgctxt "selection:production.output.distribution,production_state:"
msgid "Draft"
msgstr "Esborany"
msgstr "Borrador"
msgctxt "selection:production.output.distribution,production_state:"
msgid "Request"

View File

@ -438,20 +438,21 @@ class Production(metaclass=PoolMeta):
moves = []
for production in productions:
for distrib in production.output_distribution:
product = production.create_variant(distrib.product,
production.production_template.pass_feature)
product = production.pass_feature(product)
product = production.copy_certification(product)
move = production._move(
production.location,
distrib.location,
production.company,
product,
distrib.uom,
distrib.produced_quantity)
move.production_output = production
move.unit_price = Decimal(0)
moves.append(move)
if distrib.distribution_state == 'draft':
product = production.create_variant(distrib.product,
production.production_template.pass_feature)
product = production.pass_feature(product)
product = production.copy_certification(product)
move = production._move(
production.location,
distrib.location,
production.company,
product,
distrib.uom,
distrib.produced_quantity)
move.production_output = production
move.unit_price = Decimal(0)
moves.append(move)
Move.save(moves)
super().done(productions)
@ -533,6 +534,23 @@ class OutputDistribution(ModelSQL, ModelView):
('assigned', 'Assigned'), ('running', 'Running'), ('done', 'Done'),
('cancelled', 'Cancelled')], 'State'),
'on_change_with_production_state')
distribution_state = fields.Selection([
('draft', 'Draft'), ('done', 'Done')], 'Distribution State',
readonly=True)
@classmethod
def __setup__(cls):
super().__setup__()
cls._buttons.update({
'done': {
'readonly': Eval('distribution_state') != 'draft',
'depends': ['distribution_state']
}
})
@classmethod
def default_distribution_state(cls):
return 'draft'
@fields.depends('production', '_parent_production.state')
def on_change_with_production_state(self, name=None):
@ -591,6 +609,34 @@ class OutputDistribution(ModelSQL, ModelView):
return ((self.final_quantity or 0) -
(self.initial_quantity or 0))
@classmethod
@ModelView.button
def done(cls, distributions):
pool = Pool()
Move = pool.get('stock.move')
moves = []
for distribution in distributions:
product = distribution.production.create_variant(
distribution.product,
distribution.production.production_template.pass_feature)
product = distribution.production.pass_feature(product)
move = distribution.production._move(
distribution.production.location,
distribution.location,
distribution.production.company,
product,
distribution.uom,
distribution.produced_quantity)
move.production_output = distribution.production
move.unit_price = Decimal(0)
moves.append(move)
distribution.distribution_state = 'done'
Move.save(moves)
Move.do(moves)
cls.save(distributions)
class ProductionEnologyProduct(ModelSQL, ModelView):
'Production Enology Product'

View File

@ -79,6 +79,12 @@
<field name="res_model">production.output.distribution</field>
</record>
<record model="ir.model.button" id="production_output_distribution_done_button">
<field name="name">done</field>
<field name="string">Done</field>
<field name="model" search="[('model', '=', 'production.output.distribution')]"/>
</record>
<!-- Production Enology -->
<record model="ir.ui.view" id="production_enology_product_view_form">
<field name="model">production.enology.product</field>

View File

@ -14,6 +14,10 @@ this repository contains the full copyright notices and license terms. -->
<field name="final_quantity"/>
<label name="produced_quantity"/>
<field name="produced_quantity"/>
<label name="distribution_state"/>
<field name="distribution_state"/>
<field name="production_state" invisible="1"/>
<field name="initial_quantity" invisible="1"/>
<newline/>
<button colspan="2" name="done"/>
</form>

View File

@ -4,10 +4,11 @@ this repository contains the full copyright notices and license terms. -->
<tree editable="1">
<field name="product"/>
<field name="location"/>
<field name="uom"/>
<field name="initial_quantity_readonly"/>
<field name="final_quantity"/>
<field name="initial_quantity_readonly"/>
<field name="produced_quantity"/>
<field name="production_state"/>
<field name="distribution_state"/>
<field name="initial_quantity" tree_invisible="1"/>
<button name="done"/>
</tree>