diff --git a/__init__.py b/__init__.py
index 2ca74d7..74db69d 100644
--- a/__init__.py
+++ b/__init__.py
@@ -56,6 +56,7 @@ def register():
quality.QualityTest,
quality.QuantitativeTestLine,
quality.QualitativeTestLine,
+ plot.CreateNewParcelsStart,
production.ProductionTemplate,
production.ProductionTemplateLine,
production.ProductionTemplateInputsProductTemplate,
@@ -74,6 +75,7 @@ def register():
module='agronomics', type_='model')
Pool.register(
production.ProductionCostPriceDistributionTemplateProductionTemplate,
+ plot.CreateNewParcels,
module='agronomics', type_='wizard')
Pool.register(
module='agronomics', type_='report')
diff --git a/contract.py b/contract.py
index e5e8a73..309ee3d 100644
--- a/contract.py
+++ b/contract.py
@@ -149,8 +149,8 @@ class AgronomicsContractLine(ModelSQL, ModelView):
"Agronomics Contract Line"
__name__ = 'agronomics.contract.line'
- contract = fields.Many2One('agronomics.contract', 'Contract', required=True,
- ondelete='CASCADE')
+ contract = fields.Many2One('agronomics.contract', 'Contract',
+ required=True, ondelete='CASCADE')
parcel = fields.Many2One('agronomics.parcel', "Parcel",
domain=[
('producer', '=', Eval('_parent_contract.party')),
diff --git a/invoice.py b/invoice.py
index e62b918..33083f0 100644
--- a/invoice.py
+++ b/invoice.py
@@ -1,9 +1,5 @@
-from trytond.report import Report
-from trytond.pool import PoolMeta, Pool
-from trytond.transaction import Transaction
+from trytond.pool import PoolMeta
from trytond.model import fields
-from trytond.pyson import Eval, Bool
-from decimal import Decimal
class InvoiceLine(metaclass=PoolMeta):
diff --git a/locale/ca.po b/locale/ca.po
index c8f6c6d..6ef04fb 100644
--- a/locale/ca.po
+++ b/locale/ca.po
@@ -544,6 +544,10 @@ msgctxt "field:product.product,needs_sample:"
msgid "Needs Samples"
msgstr "Necesita mostres"
+msgctxt "field:product.product,production_quality_template:"
+msgid "Production Quality Template"
+msgstr "Plantilla Qualitat de producció"
+
msgctxt "field:product.product,quality_samples:"
msgid "Quality Samples"
msgstr "Mostres de qualitat"
@@ -556,6 +560,14 @@ msgctxt "field:product.product,quality_weighing:"
msgid "Quality Weighing"
msgstr "Qualitat Pesada"
+msgctxt "field:product.product,shipment_in_quality_template:"
+msgid "Shipment In Quality Template"
+msgstr "Plantilla qualitat albarà entrada"
+
+msgctxt "field:product.product,shipment_out_quality_template:"
+msgid "Shipment Out Quality Template"
+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"
diff --git a/locale/es.po b/locale/es.po
index c63efdd..fe2c538 100644
--- a/locale/es.po
+++ b/locale/es.po
@@ -544,6 +544,10 @@ msgctxt "field:product.product,needs_sample:"
msgid "Needs Samples"
msgstr "Requiere muestras"
+msgctxt "field:product.product,production_quality_template:"
+msgid "Production Quality Template"
+msgstr "Plantilla calidad producción"
+
msgctxt "field:product.product,quality_samples:"
msgid "Quality Samples"
msgstr "Muestras de calidad"
diff --git a/plot.py b/plot.py
index 661fb6d..ccff15d 100644
--- a/plot.py
+++ b/plot.py
@@ -1,8 +1,9 @@
# 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 sql.aggregate import Min, Sum
+from sql.aggregate import Sum
from trytond.model import fields, ModelSQL, ModelView
from trytond.pool import Pool
+from trytond.wizard import (Wizard, StateView, Button, StateTransition)
class Enclosure(ModelSQL, ModelView):
@@ -29,6 +30,12 @@ class Crop(ModelSQL, ModelView):
start_date = fields.Date('Start Date', required=True)
end_date = fields.Date('End Date', required=True)
+ def copy_parcels(self, next_crop):
+ pool = Pool()
+ Parcel = pool.get('agronomics.parcel')
+ parcels = Parcel.search([('crop' ,'=', self.id)])
+ Parcel.copy(parcels, {'crop': next_crop})
+
class DenominationOrigin(ModelSQL, ModelView):
"Denomination of Origin"
@@ -133,13 +140,10 @@ class Plantation(ModelSQL, ModelView):
@classmethod
def search_remaining_quantity(cls, name, clause):
pool = Pool()
- DO = pool.get('agronomics.denomination_of_origin')
PARCEL_DO = pool.get('agronomics.parcel-agronomics.do')
Parcel = pool.get('agronomics.parcel')
Weighing = pool.get('agronomics.weighing-agronomics.parcel')
MaxProductionAllowed = pool.get('agronomics.max.production.allowed')
-
- do = DO.__table__()
parcel = Parcel.__table__()
parcel_do = PARCEL_DO.__table__()
weighing = Weighing.__table__()
@@ -164,6 +168,7 @@ class Plantation(ModelSQL, ModelView):
query.where = Operator(query2.remaining_quantity, value)
return [('id' , 'in', query)]
+
class Ecological(ModelSQL, ModelView):
"Ecological"
__name__ = 'agronomics.ecological'
@@ -203,9 +208,11 @@ class Parcel(ModelSQL, ModelView):
weighings = fields.One2Many('agronomics.weighing-agronomics.parcel',
'parcel', 'Weighings')
purchased_quantity = fields.Function(
- fields.Float("Bought Quantity", digits=(16, 2)), 'get_purchased_quantity')
+ fields.Float("Bought Quantity", digits=(16, 2)),
+ 'get_purchased_quantity')
remaining_quantity = fields.Function(
- fields.Float("Remainig Quantity", digits=(16, 2)), 'get_remaining_quantity')
+ fields.Float("Remainig Quantity", digits=(16, 2)),
+ 'get_remaining_quantity')
def get_rec_name(self, name):
if self.plantation and self.crop:
@@ -260,3 +267,30 @@ class Beneficiaries(ModelSQL, ModelView):
table.drop_column('percent')
super(Beneficiaries, cls).__register__(module_name)
+
+
+class CreateNewParcels(Wizard):
+ 'New Version'
+ __name__ = 'agronomics.create_new_parcels'
+
+ start = StateView('agronomics.create_new_parcels.start',
+ 'agronomics.create_new_parcels_start_form', [
+ Button('Cancel', 'end', 'tryton-cancel'),
+ Button('Create', 'copy_parcels', 'tryton-accept', default=True),
+ ])
+ copy_parcels = StateTransition()
+
+ def transition_copy_parcels(self):
+ crop = self.start.previous_crop
+ crop.copy_parcels(self.start.next_crop)
+ return 'end'
+
+
+class CreateNewParcelsStart(ModelView):
+ "Create New Parcels - Start"
+ __name__ = 'agronomics.create_new_parcels.start'
+
+ previous_crop = fields.Many2One('agronomics.crop', "Previous Crop",
+ required=True)
+ next_crop = fields.Many2One('agronomics.crop', "Next Crop",
+ required=True)
diff --git a/plot.xml b/plot.xml
index 60a2bc4..582c8ce 100644
--- a/plot.xml
+++ b/plot.xml
@@ -543,5 +543,21 @@