This is an automated email from the git hooks/post-receive script. New commit to branch feature/6116 in repository tutti. See http://git.codelutin.com/tutti.git commit ef240adc1b1e0d9d3931f0aa675b09ab5af160f3 Author: Kevin Morin <morin@codelutin.com> Date: Wed Jan 13 10:38:26 2016 +0100 ajout de test + création des lots manquants avec des poids nuls (fixes #6116) --- .../service/pupitri/PupitriImportService.java | 2 +- .../pupitri/PupitriImportServiceEvo6116Test.java | 293 +++++++++++++++++++++ .../src/test/resources/pupitri/evo-6116.car | 7 + .../src/test/resources/pupitri/evo-6116.tnk | 32 +++ .../test/resources/pupitri/evo-6116.tuttiProtocol | 198 ++++++++++++++ 5 files changed, 531 insertions(+), 1 deletion(-) diff --git a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java index c4afb4c..c37edf6 100644 --- a/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java +++ b/tutti-service/src/main/java/fr/ifremer/tutti/service/pupitri/PupitriImportService.java @@ -559,7 +559,7 @@ public class PupitriImportService extends AbstractTuttiService { SpeciesBatch childBatch = createSpeciesBatch( operation, species, - catchWeight, + Weights.isNullOrZero(catchWeight) ? null : catchWeight, categoryId, splitCqv); diff --git a/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6116Test.java b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6116Test.java new file mode 100644 index 0000000..9fcb52a --- /dev/null +++ b/tutti-service/src/test/java/fr/ifremer/tutti/service/pupitri/PupitriImportServiceEvo6116Test.java @@ -0,0 +1,293 @@ +package fr.ifremer.tutti.service.pupitri; + +/* + * #%L + * Tutti :: Service + * $Id:$ + * $HeadURL:$ + * %% + * Copyright (C) 2012 - 2014 Ifremer + * %% + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program. If not, see + * <http://www.gnu.org/licenses/gpl-3.0.html>. + * #L% + */ + +import com.google.common.base.Predicate; +import com.google.common.collect.Sets; +import fr.ifremer.adagio.core.dao.referential.pmfm.PmfmId; +import fr.ifremer.adagio.core.dao.referential.pmfm.QualitativeValueId; +import fr.ifremer.tutti.persistence.entities.data.BatchContainer; +import fr.ifremer.tutti.persistence.entities.data.CatchBatch; +import fr.ifremer.tutti.persistence.entities.data.FishingOperation; +import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatch; +import fr.ifremer.tutti.persistence.entities.data.SpeciesAbleBatchs; +import fr.ifremer.tutti.persistence.entities.data.SpeciesBatch; +import fr.ifremer.tutti.persistence.entities.referential.Species; +import org.apache.commons.io.FileUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.Assert; +import org.junit.Test; +import org.nuiton.decorator.Decorator; + +import java.io.File; +import java.io.IOException; +import java.util.Set; + +/** + * Created on 11/21/14. + * + * @author Tony Chemit - chemit@codelutin.com + * @since 3.10 + */ +public class PupitriImportServiceEvo6116Test extends PupitryImportServiceTestSupport { + + /** Logger. */ + private static final Log log = LogFactory.getLog(PupitriImportServiceEvo6116Test.class); + + @Test + public void importPupitri() throws IOException { + + File trunk = dbResource.copyClassPathResource("pupitri/evo-6116.tnk", "pupitri.tnk"); + File carroussel = dbResource.copyClassPathResource("pupitri/evo-6116.car", "pupitri.car"); + dbResource.loadInternalProtocolFile("pupitri/", "evo-6116"); + + FishingOperation operation = dataContext.operations.get(1); + CatchBatch catchBatch = persistenceService.getCatchBatchFromFishingOperation(operation.getId()); + catchBatch.setFishingOperation(operation); + + BatchContainer<SpeciesBatch> rootSpeciesBatch = persistenceService.getRootSpeciesBatch(operation.getId(), false); + Assert.assertEquals(0, rootSpeciesBatch.sizeChildren()); + + PupitriImportResult pupitriImportResult = service.importPupitri(trunk, carroussel, operation, catchBatch, true); + Assert.assertTrue(pupitriImportResult.isFishingOperationFound()); + int nbNotAdded = pupitriImportResult.getNbCarrousselNotImported(); + Assert.assertEquals(0, nbNotAdded); + + // copy result file into temp directory to check it after the test ends + String reportAttachmentId = pupitriImportResult.getReportAttachmentId(); + File attachmentFile = persistenceService.getAttachmentFile(reportAttachmentId); + File destFile = new File(FileUtils.getTempDirectory(), pupitriImportResult.getReportAttachmentFilename()); + FileUtils.copyFile(attachmentFile, destFile); + log.info("Generated report copied to " + destFile.getPath()); + + BatchContainer<SpeciesBatch> rootSpeciesBatchAfter = persistenceService.getRootSpeciesBatch(operation.getId(), false); + Assert.assertEquals(7, rootSpeciesBatchAfter.sizeChildren()); + + /* + MERL-MCC un lot VRAC 0 (100Kg) + TRAC-TRU un lot VRAC 0 (25kg) + ACANPAL un lot VRAC 0 (25Kg) + ENGR-ENC un lot HV 0 75Kg + MERL-MCC un lot HV 2 (100Kg) + TRAC-TRU un lot HV G (25kg) + ACANPAL un lot HV 1 (25Kg) + */ + Set<Integer> expectedSpecies = Sets.newHashSet( + + 16994, // MERL-MCC + 17116, // TRAC-TRU + 16816, // ENGR-ENC + 17186 // ACANPAL + ); + + + Predicate<SpeciesAbleBatch> batchVracPredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SORTED_UNSORTED.getValue(), + QualitativeValueId.SORTED_VRAC.getValue()); + + Predicate<SpeciesAbleBatch> batchHorsVracPredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SORTED_UNSORTED.getValue(), + QualitativeValueId.SORTED_HORS_VRAC.getValue()); + + + Predicate<SpeciesAbleBatch> bigPredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SIZE_CATEGORY.getValue(), + QualitativeValueId.SIZE_BIG.getValue()); + + Predicate<SpeciesAbleBatch> smallPredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SIZE_CATEGORY.getValue(), + QualitativeValueId.SIZE_SMALL.getValue()); + + Predicate<SpeciesAbleBatch> malePredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SEX.getValue(), + QualitativeValueId.SEX_MALE.getValue()); + + Predicate<SpeciesAbleBatch> femalePredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SEX.getValue(), + QualitativeValueId.SEX_FEMALE.getValue()); + + Predicate<SpeciesAbleBatch> undefinedPredicate = SpeciesAbleBatchs.newSpeciesAbleBatchCategoryPredicate( + PmfmId.SEX.getValue(), + QualitativeValueId.SEX_UNDEFINED.getValue()); + + Decorator<Species> speciesDecorator = decoratorService.getDecoratorByType(Species.class); + + for (SpeciesBatch speciesBatch : rootSpeciesBatchAfter.getChildren()) { + + Species species = speciesBatch.getSpecies(); + Integer speciesId = species.getIdAsInt(); + + Assert.assertTrue("l'espece " + speciesId + " ne doit pas etre importe", expectedSpecies.contains(speciesId)); + + if (log.isInfoEnabled()) { + log.info("Species : " + speciesId + " : " + speciesDecorator.toString(species)); + } + + if (16816 == speciesId) { + + // un lot HV 75Kg + Assert.assertTrue(batchHorsVracPredicate.apply(speciesBatch)); + Assert.assertTrue(speciesBatch.isChildBatchsEmpty()); + Assert.assertEquals(75, speciesBatch.getSampleCategoryWeight(), 0.001); + continue; + + } + if (16994 == speciesId) { + + // un lot VRAC (100kg) sans fils + // un lot HV (sans poids) avec 3 fils + // un M (sans poids) + // un F (100Kg) + // un 0 (sans poids) + + if (batchVracPredicate.apply(speciesBatch)) { + Assert.assertTrue(speciesBatch.isChildBatchsEmpty()); + Assert.assertEquals(100, speciesBatch.getSampleCategoryWeight(), 0.001); + + } else { + Assert.assertEquals(3, speciesBatch.sizeChildBatchs()); + Assert.assertNull(speciesBatch.getSampleCategoryWeight()); + + { + SpeciesBatch child = speciesBatch.getChildBatchs(0); + Assert.assertTrue(malePredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(1); + Assert.assertTrue(femalePredicate.apply(child)); + Assert.assertEquals(100, child.getSampleCategoryWeight(), 0.001); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(2); + Assert.assertTrue(undefinedPredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + } + + continue; + } + + if (17116 == speciesId) { + + // un lot VRAC (25kg) avec 2 fils + // un P (sans poids) + // un G (sans poids) + // un lot HV (sans poids) avec 2 fils + // un P (sans poids) + // un G (25Kg) + + if (batchVracPredicate.apply(speciesBatch)) { + Assert.assertEquals(2, speciesBatch.sizeChildBatchs()); + Assert.assertEquals(25, speciesBatch.getSampleCategoryWeight(), 0.001); + + { + SpeciesBatch child = speciesBatch.getChildBatchs(0); + Assert.assertTrue(smallPredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(1); + Assert.assertTrue(bigPredicate.apply(child)); + Assert.assertEquals(25, child.getSampleCategoryWeight(), 0.001); + } + + } else { + Assert.assertEquals(2, speciesBatch.sizeChildBatchs()); + Assert.assertNull(speciesBatch.getSampleCategoryWeight()); + + { + SpeciesBatch child = speciesBatch.getChildBatchs(0); + Assert.assertTrue(smallPredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(1); + Assert.assertTrue(bigPredicate.apply(child)); + Assert.assertEquals(25, child.getSampleCategoryWeight(), 0.001); + } + } + + continue; + } + + if (17186 == speciesId) { + + // un lot VRAC (25kg) avec 3 fils + // un M (sans poids) + // un F (sans poids) + // un 0 (sans poids) + // un lot HV (sans poids) avec 3 fils + // un M (25Kg) + // un F (sans poids) + // un 0 (sans poids) + + if (batchVracPredicate.apply(speciesBatch)) { + Assert.assertEquals(3, speciesBatch.sizeChildBatchs()); + Assert.assertEquals(25, speciesBatch.getSampleCategoryWeight(), 0.001); + + { + SpeciesBatch child = speciesBatch.getChildBatchs(0); + Assert.assertTrue(malePredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(1); + Assert.assertTrue(femalePredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(2); + Assert.assertTrue(undefinedPredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + + } else { + Assert.assertEquals(3, speciesBatch.sizeChildBatchs()); + Assert.assertNull(speciesBatch.getSampleCategoryWeight()); + + { + SpeciesBatch child = speciesBatch.getChildBatchs(0); + Assert.assertTrue(malePredicate.apply(child)); + Assert.assertEquals(25, child.getSampleCategoryWeight(), 0.001); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(1); + Assert.assertTrue(femalePredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + { + SpeciesBatch child = speciesBatch.getChildBatchs(2); + Assert.assertTrue(undefinedPredicate.apply(child)); + Assert.assertNull(child.getSampleCategoryWeight()); + } + } + } + + } + + } +} \ No newline at end of file diff --git a/tutti-service/src/test/resources/pupitri/evo-6116.car b/tutti-service/src/test/resources/pupitri/evo-6116.car new file mode 100644 index 0000000..be8a678 --- /dev/null +++ b/tutti-service/src/test/resources/pupitri/evo-6116.car @@ -0,0 +1,7 @@ +$TSMES,27/11/13,13:28:27.717,BLCAR, 0,A,1,002,MERL-MCC,0,VAT,0100.0, +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,TRAC-TRU,0,VAT,0025.0, +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,ACANPAL,0,VAT,0025.0, +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,ENGR-ENC,0,HOV,0075.0, +$TSMES,27/11/13,13:28:27.717,BLCAR, 0,A,1,002,MERL-MCC,2,HOV,0100.0, +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,TRAC-TRU,G,HOV,0025.0, +$TSMES,27/11/13,13:31:17.004,BLCAR, 0,A,1,001,ACANPAL,1,HOV,0025.0, diff --git a/tutti-service/src/test/resources/pupitri/evo-6116.tnk b/tutti-service/src/test/resources/pupitri/evo-6116.tnk new file mode 100644 index 0000000..bdb8624 --- /dev/null +++ b/tutti-service/src/test/resources/pupitri/evo-6116.tnk @@ -0,0 +1,32 @@ +$TSMES,27/11/13,09:08:45.130,BLTNK, 0,A,1,VAT,0045.4, +$TSMES,27/11/13,09:10:10.522,BLTNK, 0,A,1,VAT,0045.0, +$TSMES,27/11/13,09:12:14.730,BLTNK, 0,A,1,VAT,0043.9, +$TSMES,27/11/13,09:14:06.033,BLTNK, 0,A,1,VAT,0044.0, +$TSMES,27/11/13,09:16:08.907,BLTNK, 0,A,1,VAT,0042.4, +$TSMES,27/11/13,09:17:47.515,BLTNK, 0,A,1,VAT,0044.3, +$TSMES,27/11/13,09:19:44.039,BLTNK, 0,A,1,VAT,0043.6, +$TSMES,27/11/13,09:21:49.166,BLTNK, 0,A,1,VAT,0044.2, +$TSMES,27/11/13,09:26:57.681,BLTNK, 0,A,1,VAT,0045.9, +$TSMES,27/11/13,09:29:20.020,BLTNK, 0,A,1,VAT,0045.8, +$TSMES,27/11/13,09:30:37.535,BLTNK, 0,A,1,VAT,0047.0, +$TSMES,27/11/13,09:32:16.153,BLTNK, 0,A,1,VAT,0046.6, +$TSMES,27/11/13,09:33:30.882,BLTNK, 0,A,1,VAT,0044.4, +$TSMES,27/11/13,09:34:50.649,BLTNK, 0,A,1,VAT,0044.5, +$TSMES,27/11/13,09:36:36.933,BLTNK, 0,A,1,VAT,0043.7, +$TSMES,27/11/13,09:37:53.424,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:41:40.944,BLTNK, 0,A,1,VAT,0048.6, +$TSMES,27/11/13,09:43:33.377,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:44:46.487,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:46:12.192,BLTNK, 0,A,1,VAT,0045.2, +$TSMES,27/11/13,09:47:34.846,BLTNK, 0,A,1,VAT,0045.4, +$TSMES,27/11/13,09:48:55.920,BLTNK, 0,A,1,VAT,0048.4, +$TSMES,27/11/13,09:51:12.724,BLTNK, 0,A,1,VAT,0046.4, +$TSMES,27/11/13,09:54:14.063,BLTNK, 0,A,1,VAT,0040.4, +$TSMES,27/11/13,09:56:11.000,BLTNK, 0,A,1,VAT,0044.2, +$TSMES,27/11/13,09:57:38.344,BLTNK, 0,A,1,VAT,0047.3, +$TSMES,27/11/13,09:59:23.603,BLTNK, 0,A,1,VAT,0047.6, +$TSMES,27/11/13,10:00:51.868,BLTNK, 0,A,1,VAT,0047.9, +$TSMES,27/11/13,10:02:29.655,BLTNK, 0,A,1,VAT,0044.2, +$TSMES,27/11/13,10:04:14.101,BLTNK, 0,A,1,VAT,0045.9, +$TSMES,27/11/13,10:06:08.886,BLTNK, 0,A,1,VAT,0043.2, +$TSMES,27/11/13,10:08:35.000,BLTNK, 0,A,1,VAT,0007.5, diff --git a/tutti-service/src/test/resources/pupitri/evo-6116.tuttiProtocol b/tutti-service/src/test/resources/pupitri/evo-6116.tuttiProtocol new file mode 100644 index 0000000..23e67f6 --- /dev/null +++ b/tutti-service/src/test/resources/pupitri/evo-6116.tuttiProtocol @@ -0,0 +1,198 @@ +id: b7f7f354-8a94-4760-9a3d-d0ae3b6e84c9 +name: Protocole pupitri 6592 +caracteristicMapping: +- !CaracteristicMappingRow + pmfmId: 194 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 173 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 131 + tab: GEAR_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 230 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 850 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 851 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 857 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 858 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 859 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 782 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 881 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 882 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 861 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 883 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 884 + tab: GEAR_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 862 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 863 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 843 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 965 + tab: GEAR_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 844 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 846 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 847 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 848 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 849 + tab: VESSEL_USE_FEATURE +- !CaracteristicMappingRow + pmfmId: 828 + tab: GEAR_USE_FEATURE +comment: Protocole pour les tests 2013 avec Jean Jacques Rivoalen +lengthClassesPmfmId: +- 306 +- 622 +- 307 +- 302 +- 299 +- 1394 +- 1417 +- 1425 +- 1426 +- 1427 +- 283 +- 284 +- 285 +- 294 +- 295 +- 300 +- 301 +- 304 +- 318 +- 319 +- 322 +- 323 +- 661 +- 662 +species: +- !SpeciesProtocol + id: 58a92026-9b41-4379-bbfc-62c0bd778873 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + speciesReferenceTaxonId: 2786 + speciesSurveyCode: EUPH-AUX + weightEnabled: true +- !SpeciesProtocol + id: 1a318ee8-9bb0-4ed0-a8b7-9ad6616d05a2 + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + - 196 + speciesReferenceTaxonId: 1540 + speciesSurveyCode: MERL-MCC + weightEnabled: true +- !SpeciesProtocol + id: 01f69643-6fe1-443c-8d6c-29b5a52cf732 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + speciesReferenceTaxonId: 1662 + speciesSurveyCode: TRAC-TRU + weightEnabled: true +- !SpeciesProtocol + id: 97929e1d-199c-48de-8d83-9a874c627849 + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 307 + speciesReferenceTaxonId: 1362 + speciesSurveyCode: ENGR-ENC + weightEnabled: true +- !SpeciesProtocol + id: d90952f1-4cf3-4841-93e9-6c22ba7b567d + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + speciesReferenceTaxonId: 1920 + speciesSurveyCode: EUTR-GUR + weightEnabled: true +- !SpeciesProtocol + id: 8d4d89bd-368e-4824-8cb5-24f23c0559d2 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + speciesReferenceTaxonId: 1772 + speciesSurveyCode: SCOM-SCO + weightEnabled: true +- !SpeciesProtocol + id: 59b76771-7ba4-452a-be7f-77497b7427e3 + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 198 + - 196 + speciesReferenceTaxonId: 1553 + speciesSurveyCode: MICR-POU + weightEnabled: true +- !SpeciesProtocol + id: fa297381-8022-4cb7-93a1-466bba873bb5 + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + speciesReferenceTaxonId: 1415 + speciesSurveyCode: MYCT-PUN + weightEnabled: true +- !SpeciesProtocol + id: 2aa7221d-084f-4b1a-b231-73d16d4ac95d + calcifySampleEnabled: true + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + speciesReferenceTaxonId: 1551 + speciesSurveyCode: MELA-NGE + weightEnabled: true +- !SpeciesProtocol + id: c62b549b-c9cf-4119-b0e0-4d6ada3ca157 + countIfNoFrequencyEnabled: true + speciesReferenceTaxonId: 872 + speciesSurveyCode: ACAN-PEL + weightEnabled: true +- !SpeciesProtocol + id: 1b55b9fb-e17c-4248-840e-c5163963409f + countIfNoFrequencyEnabled: true + lengthStepPmfmId: 306 + mandatorySampleCategoryId: + - 196 + speciesReferenceTaxonId: 1732 + speciesSurveyCode: ACANPAL + weightEnabled: true +version: 3 -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.