diff --git a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/db/repo/PartnerBaseRepository.java b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/db/repo/PartnerBaseRepository.java
index e2aeef6..b20d39a 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/db/repo/PartnerBaseRepository.java
+++ b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/db/repo/PartnerBaseRepository.java
@@ -62,6 +62,7 @@ public class PartnerBaseRepository extends PartnerRepository {
copy.setPartnerSeq(null);
copy.setEmailAddress(null);
+ copy.setBarCodeSeq(null);
PartnerAddressRepository partnerAddressRepository = Beans.get(PartnerAddressRepository.class);
diff --git a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerService.java b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerService.java
index 14591ec..dd556ba 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerService.java
+++ b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerService.java
@@ -142,4 +142,6 @@ public interface PartnerService {
String computeCompanyStr(Partner partner);
String getPartnerDomain(Partner partner);
+
+ void setPartnerBarCodeSeq(Partner partner);
}
diff --git a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerServiceImpl.java b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerServiceImpl.java
index c19878a..352e6a3 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerServiceImpl.java
+++ b/modules/axelor-open-suite/axelor-base/src/main/java/com/axelor/apps/base/service/PartnerServiceImpl.java
@@ -33,6 +33,7 @@ import com.axelor.apps.base.db.repo.SequenceRepository;
import com.axelor.apps.base.exceptions.IExceptionMessage;
import com.axelor.apps.base.service.administration.SequenceService;
import com.axelor.apps.base.service.app.AppBaseService;
+import com.axelor.apps.base.service.BarcodeGeneratorService;
import com.axelor.apps.message.db.EmailAddress;
import com.axelor.common.StringUtils;
import com.axelor.db.JPA;
@@ -45,6 +46,11 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.inject.Inject;
import com.google.inject.persist.Transactional;
+import com.axelor.meta.MetaFiles;
+import com.axelor.meta.db.MetaFile;
+import java.io.IOException;
+import java.io.InputStream;
+import javax.validation.ValidationException;
import java.lang.invoke.MethodHandles;
import java.time.LocalDate;
import java.util.ArrayList;
@@ -65,6 +71,9 @@ public class PartnerServiceImpl implements PartnerService {
protected PartnerRepository partnerRepo;
protected AppBaseService appBaseService;
+
+ @Inject protected BarcodeGeneratorService barcodeGeneratorService;
+ @Inject private MetaFiles metaFiles;
@Inject
public PartnerServiceImpl(PartnerRepository partnerRepo, AppBaseService appBaseService) {
@@ -162,6 +171,7 @@ public class PartnerServiceImpl implements PartnerService {
this.setPartnerFullName(partner);
this.setCompanyStr(partner);
+ this.setPartnerBarCodeSeq(partner);
}
/**
@@ -699,4 +709,30 @@ public class PartnerServiceImpl implements PartnerService {
}
return partnerQuery.fetchOne();
}
+
+
+ public void setPartnerBarCodeSeq(Partner partner) {
+ if (partner.getBarCodeSeq() == null) {
+ try {
+ boolean addPadding = false;
+ InputStream inStream = null;
+
+ inStream =
+ barcodeGeneratorService.createBarCode(
+ partner.getPartnerSeq(),
+ appBaseService.getAppBase().getBarcodeTypeConfigPartnerSeq(),
+ addPadding);
+
+ if (inStream != null) {
+ MetaFile barcodeFile =
+ metaFiles.upload(inStream, String.format("PartnerBarCodeSeq%d.png",partner.getId()));
+ partner.setBarCodeSeq(barcodeFile);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (AxelorException e) {
+ throw new ValidationException(e.getMessage());
+ }
+ }
+ }
}
diff --git a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml
index 877ade9..9e928ab 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml
+++ b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/AppBase.xml
@@ -54,6 +54,9 @@
+
+
+
diff --git a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/Partner.xml b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/Partner.xml
index 2d61d66..a7bb366 100644
--- a/modules/axelor-open-suite/axelor-base/src/main/resources/domains/Partner.xml
+++ b/modules/axelor-open-suite/axelor-base/src/main/resources/domains/Partner.xml
@@ -96,6 +96,8 @@
+
+
diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/db/repo/PurchaseOrderManagementRepository.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/db/repo/PurchaseOrderManagementRepository.java
index e3f7d2c..98bcfc1 100644
--- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/db/repo/PurchaseOrderManagementRepository.java
+++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/db/repo/PurchaseOrderManagementRepository.java
@@ -36,6 +36,7 @@ public class PurchaseOrderManagementRepository extends PurchaseOrderRepository {
copy.setDeliveryDate(null);
copy.setValidatedByUser(null);
copy.setValidationDate(null);
+ copy.setBarCodeSeq(null);
for (PurchaseOrderLine purchaseOrderLine : copy.getPurchaseOrderLineList()) {
purchaseOrderLine.setDesiredDelivDate(null);
purchaseOrderLine.setEstimatedDelivDate(null);
@@ -49,6 +50,7 @@ public class PurchaseOrderManagementRepository extends PurchaseOrderRepository {
try {
purchaseOrder = super.save(purchaseOrder);
Beans.get(PurchaseOrderService.class).setDraftSequence(purchaseOrder);
+ Beans.get(PurchaseOrderService.class).setPurchaseOrderBarCodeSeq(purchaseOrder);
return purchaseOrder;
} catch (Exception e) {
throw new PersistenceException(e.getLocalizedMessage());
diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java
index 97497d6..952d63d 100644
--- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java
+++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderService.java
@@ -117,4 +117,8 @@ public interface PurchaseOrderService {
public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr);
public void calculateSum(List purchaseOrders,ImportationFolder importationFolder) throws AxelorException;
+
+ void setPurchaseOrderBarCodeSeq(PurchaseOrder purchaseOrder) throws AxelorException;
+
+ void createPurchaseOrderBarCodeSeq(PurchaseOrder purchaseOrder) throws AxelorException;
}
diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java
index e886fe9..1f4c25b 100644
--- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java
+++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/service/PurchaseOrderServiceImpl.java
@@ -38,6 +38,7 @@ import com.axelor.apps.base.service.ShippingCoefService;
import com.axelor.apps.base.service.TradingNameService;
import com.axelor.apps.base.service.UnitConversionService;
import com.axelor.apps.base.service.administration.SequenceService;
+import com.axelor.apps.base.service.BarcodeGeneratorService;
import com.axelor.apps.purchase.db.ImportationFolder;
import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.apps.purchase.db.PurchaseOrderLine;
@@ -48,6 +49,7 @@ import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
import com.axelor.apps.purchase.exception.IExceptionMessage;
import com.axelor.apps.purchase.report.IReport;
import com.axelor.apps.purchase.service.app.AppPurchaseService;
+import com.axelor.apps.base.service.app.AppBaseService;
import com.axelor.apps.report.engine.ReportSettings;
import com.axelor.auth.AuthUtils;
import com.axelor.auth.db.User;
@@ -55,6 +57,8 @@ import com.axelor.exception.AxelorException;
import com.axelor.exception.db.repo.TraceBackRepository;
import com.axelor.i18n.I18n;
import com.axelor.inject.Beans;
+import com.axelor.meta.MetaFiles;
+import com.axelor.meta.db.MetaFile;
import com.google.common.base.Strings;
import com.google.inject.Inject;
import com.google.inject.persist.Transactional;
@@ -69,6 +73,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
+import java.io.InputStream;
+import java.io.IOException;
+import javax.validation.ValidationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -86,6 +93,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Inject protected PurchaseOrderRepository purchaseOrderRepo;
@Inject protected ImportationFolderRepository importationFolderRepo;
+
+ @Inject protected BarcodeGeneratorService barcodeGeneratorService;
+ @Inject protected AppBaseService appBaseService;
+ @Inject private MetaFiles metaFiles;
@Override
public PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder)
@@ -649,5 +660,41 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
return importationFolder;
}
+
+ @Transactional
+ public void setPurchaseOrderBarCodeSeq(PurchaseOrder purchaseOrder) throws AxelorException{
+
+ if (purchaseOrder.getBarCodeSeq() == null
+ && purchaseOrder.getStatusSelect() != PurchaseOrderRepository.STATUS_DRAFT) {
+ try {
+ boolean addPadding = false;
+ InputStream inStream = null;
+
+ inStream =
+ barcodeGeneratorService.createBarCode(
+ purchaseOrder.getPurchaseOrderSeq(),
+ appBaseService.getAppBase().getBarcodeTypeConfigPurchaseOrderSeq(),
+ addPadding);
+
+ if (inStream != null) {
+ MetaFile barcodeFile =
+ metaFiles.upload(inStream, String.format("PurchaseOrderSeqBarCode%d.png",purchaseOrder.getId()));
+ purchaseOrder.setBarCodeSeq(barcodeFile);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ } catch (AxelorException e) {
+ throw new ValidationException(e.getMessage());
+ }
+ }
+
+ }
+
+ @Transactional
+ public void createPurchaseOrderBarCodeSeq(PurchaseOrder purchaseOrder) throws AxelorException{
+ this.setPurchaseOrderBarCodeSeq(purchaseOrder);
+ purchaseOrderRepo.save(purchaseOrder);
+ }
+
}
diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java
index e571175..9b99b75 100644
--- a/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java
+++ b/modules/axelor-open-suite/axelor-purchase/src/main/java/com/axelor/apps/purchase/web/PurchaseOrderController.java
@@ -621,5 +621,16 @@ public class PurchaseOrderController {
}
}
+
+ public void createPurchaseOrderBarCodeSeq(ActionRequest request, ActionResponse response){
+ try {
+ PurchaseOrder purchaseOrder = request.getContext().asType(PurchaseOrder.class);
+ purchaseOrder = Beans.get(PurchaseOrderRepository.class).find(purchaseOrder.getId());
+ Beans.get(PurchaseOrderService.class).createPurchaseOrderBarCodeSeq(purchaseOrder);
+ response.setReload(true);
+ } catch (Exception e) {
+ TraceBackService.trace(response, e);
+ }
+ }
}
diff --git a/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml b/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml
index c59886e..c107b88 100644
--- a/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml
+++ b/modules/axelor-open-suite/axelor-purchase/src/main/resources/domains/PurchaseOrder.xml
@@ -82,6 +82,8 @@
+
+