diff --git a/modules/axelor-open-suite/axelor-qvm/src/main/java/com.axelor/apps.qvm/exception/IExceptionMessage.java b/modules/axelor-open-suite/axelor-qvm/src/main/java/com.axelor/apps.qvm/exception/IExceptionMessage.java new file mode 100644 index 0000000..7102f7a --- /dev/null +++ b/modules/axelor-open-suite/axelor-qvm/src/main/java/com.axelor/apps.qvm/exception/IExceptionMessage.java @@ -0,0 +1,26 @@ +/* + * Axelor Business Solutions + * + * Copyright (C) 2019 Axelor (). + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * 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 Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ +package com.axelor.apps.qvm.exception; + +/** Interface of Exceptions. Enum all exception of axelor-human-resource. */ +public interface IExceptionMessage { + + static final String ORIGIN_ALREDY_USED = /*$$(*/ + "origin alredy used : %s" /*)*/; + +} \ No newline at end of file diff --git a/modules/axelor-open-suite/axelor-qvm/src/main/java/com.axelor/apps.qvm/service/QvmOperationServiceImpl.java b/modules/axelor-open-suite/axelor-qvm/src/main/java/com.axelor/apps.qvm/service/QvmOperationServiceImpl.java index b8efb86..5d5439f 100644 --- a/modules/axelor-open-suite/axelor-qvm/src/main/java/com.axelor/apps.qvm/service/QvmOperationServiceImpl.java +++ b/modules/axelor-open-suite/axelor-qvm/src/main/java/com.axelor/apps.qvm/service/QvmOperationServiceImpl.java @@ -28,11 +28,18 @@ import com.axelor.i18n.I18n; import com.axelor.inject.Beans; import com.google.inject.Inject; import com.google.inject.persist.Transactional; +import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import com.axelor.apps.qvm.exception.IExceptionMessage; public class QvmOperationServiceImpl implements QvmOperationService { + private final Logger log = LoggerFactory.getLogger(QvmOperationServiceImpl.class); @Inject protected SequenceService sequenceService; + @Inject + private QvmOperationRepository qvmOperationRepo; @Transactional public QvmOperation createCalibrationSeq(Company company) throws AxelorException { @@ -103,36 +110,46 @@ public class QvmOperationServiceImpl implements QvmOperationService { return calibration; } - public QvmOperation createNextOperation(QvmOperation operation, Long userId) { + public QvmOperation createNextOperation(QvmOperation operation, Long userId) throws AxelorException{ QvmOperation nextOperation = Beans.get(QvmOperationRepository.class).copy(operation, true); if (operation != null) { - try { - nextOperation.setStatusSelect(1); - nextOperation.setOperationOrigin(operation.getSerialNumber()); - nextOperation.setCreationType(2); - nextOperation.setPastOperationDate(operation.getOperationDate()); - nextOperation.setOperationDate(operation.getOperationDueDate()); - if (operation.getOperationFrequency() == 1) { - nextOperation.setOperationDueDate(operation.getOperationDueDate().plusYears(1)); - nextOperation.setCountdown(364); + List operations = qvmOperationRepo.all() + .filter("self.operationOrigin = :serialNumber") + .bind("serialNumber", operation.getSerialNumber()) + .fetch(); + int size = operations.size(); + if (size == 0){ + log.debug("Creating next operation"); + try{ + nextOperation.setStatusSelect(1); + nextOperation.setOperationOrigin(operation.getSerialNumber()); + nextOperation.setCreationType(2); + nextOperation.setPastOperationDate(operation.getOperationDate()); + nextOperation.setOperationDate(operation.getOperationDueDate()); + if (operation.getOperationFrequency() == 1){ + nextOperation.setOperationDueDate(operation.getOperationDueDate().plusYears(1)); + nextOperation.setCountdown(364);} + if (operation.getOperationFrequency() == 2){ + nextOperation.setOperationDueDate(operation.getOperationDueDate().plusMonths(1)); + nextOperation.setCountdown(31);} + if (operation.getOperationFrequency() == 3){ + nextOperation.setOperationDueDate(operation.getOperationDueDate().plusMonths(6)); + nextOperation.setCountdown(183);} + nextOperation.setSerialNumber(null); + nextOperation.setCreationType(2); } - if (operation.getOperationFrequency() == 2) { - nextOperation.setOperationDueDate(operation.getOperationDueDate().plusMonths(1)); - nextOperation.setCountdown(31); - } - if (operation.getOperationFrequency() == 3) { - nextOperation.setOperationDueDate(operation.getOperationDueDate().plusMonths(6)); - nextOperation.setCountdown(183); - } - System.out.println( - "operation.getOperationFrequency : " + operation.getOperationFrequency()); - nextOperation.setSerialNumber(null); - nextOperation.setCreationType(2); - } catch (Exception exception) { - System.out.println(exception); + catch (Exception exception){ + log.error("Error while creating next operation"); + System.out.println(exception); + }}else{ + log.debug("Origin alredy used"); + throw new AxelorException( + TraceBackRepository.CATEGORY_NO_UNIQUE_KEY, + I18n.get(IExceptionMessage.ORIGIN_ALREDY_USED), + operation.getSerialNumber()); } } - // Beans.get(QvmOperationRepository.class).save(nextOperation); + System.out.println("Create next operation : "+nextOperation); return nextOperation; } }