From 12d656c88cdd8ca90b219f886f74b44cfc467382 Mon Sep 17 00:00:00 2001 From: walid seghier Date: Thu, 20 Oct 2022 11:28:53 +0100 Subject: [PATCH] set QR code for purchaseOrderSeq and PartnerSeq --- .../base/db/repo/PartnerBaseRepository.java | 1 + .../apps/base/service/PartnerService.java | 2 + .../apps/base/service/PartnerServiceImpl.java | 36 ++++++++++++++ .../src/main/resources/domains/AppBase.xml | 3 ++ .../src/main/resources/domains/Partner.xml | 2 + .../PurchaseOrderManagementRepository.java | 2 + .../service/PurchaseOrderService.java | 4 ++ .../service/PurchaseOrderServiceImpl.java | 47 +++++++++++++++++++ .../purchase/web/PurchaseOrderController.java | 11 +++++ .../main/resources/domains/PurchaseOrder.xml | 2 + 10 files changed, 110 insertions(+) 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 e2aeef63..b20d39ac 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 14591ec4..dd556baf 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 c19878ac..352e6a38 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 877ade93..9e928ab4 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 2d61d664..a7bb366e 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 e3f7d2ce..98bcfc15 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 97497d6e..952d63d5 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 e886fe99..1f4c25b5 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 e571175f..9b99b757 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 c59886ec..c107b883 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 @@ + +