set QR code for purchaseOrderSeq and PartnerSeq

This commit is contained in:
walid seghier
2022-10-20 11:28:53 +01:00
parent 043cf6d151
commit 12d656c88c
10 changed files with 110 additions and 0 deletions

View File

@@ -62,6 +62,7 @@ public class PartnerBaseRepository extends PartnerRepository {
copy.setPartnerSeq(null); copy.setPartnerSeq(null);
copy.setEmailAddress(null); copy.setEmailAddress(null);
copy.setBarCodeSeq(null);
PartnerAddressRepository partnerAddressRepository = Beans.get(PartnerAddressRepository.class); PartnerAddressRepository partnerAddressRepository = Beans.get(PartnerAddressRepository.class);

View File

@@ -142,4 +142,6 @@ public interface PartnerService {
String computeCompanyStr(Partner partner); String computeCompanyStr(Partner partner);
String getPartnerDomain(Partner partner); String getPartnerDomain(Partner partner);
void setPartnerBarCodeSeq(Partner partner);
} }

View File

@@ -33,6 +33,7 @@ import com.axelor.apps.base.db.repo.SequenceRepository;
import com.axelor.apps.base.exceptions.IExceptionMessage; import com.axelor.apps.base.exceptions.IExceptionMessage;
import com.axelor.apps.base.service.administration.SequenceService; import com.axelor.apps.base.service.administration.SequenceService;
import com.axelor.apps.base.service.app.AppBaseService; 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.apps.message.db.EmailAddress;
import com.axelor.common.StringUtils; import com.axelor.common.StringUtils;
import com.axelor.db.JPA; import com.axelor.db.JPA;
@@ -45,6 +46,11 @@ import com.google.common.base.Preconditions;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.persist.Transactional; 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.lang.invoke.MethodHandles;
import java.time.LocalDate; import java.time.LocalDate;
import java.util.ArrayList; import java.util.ArrayList;
@@ -66,6 +72,9 @@ public class PartnerServiceImpl implements PartnerService {
protected PartnerRepository partnerRepo; protected PartnerRepository partnerRepo;
protected AppBaseService appBaseService; protected AppBaseService appBaseService;
@Inject protected BarcodeGeneratorService barcodeGeneratorService;
@Inject private MetaFiles metaFiles;
@Inject @Inject
public PartnerServiceImpl(PartnerRepository partnerRepo, AppBaseService appBaseService) { public PartnerServiceImpl(PartnerRepository partnerRepo, AppBaseService appBaseService) {
this.partnerRepo = partnerRepo; this.partnerRepo = partnerRepo;
@@ -162,6 +171,7 @@ public class PartnerServiceImpl implements PartnerService {
this.setPartnerFullName(partner); this.setPartnerFullName(partner);
this.setCompanyStr(partner); this.setCompanyStr(partner);
this.setPartnerBarCodeSeq(partner);
} }
/** /**
@@ -699,4 +709,30 @@ public class PartnerServiceImpl implements PartnerService {
} }
return partnerQuery.fetchOne(); 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());
}
}
}
} }

View File

@@ -54,6 +54,9 @@
<many-to-one name="barcodeTypeConfig" title="Barcode Type" ref="com.axelor.apps.base.db.BarcodeTypeConfig" default="EAN_13"/> <many-to-one name="barcodeTypeConfig" title="Barcode Type" ref="com.axelor.apps.base.db.BarcodeTypeConfig" default="EAN_13"/>
<boolean name="generateProductSequence" title="Generate sequence for products" default="false"/> <boolean name="generateProductSequence" title="Generate sequence for products" default="false"/>
<many-to-one name="barcodeTypeConfigPurchaseOrderSeq" title="Barcode Type for Purchase Order Seq" ref="com.axelor.apps.base.db.BarcodeTypeConfig"/>
<many-to-one name="barcodeTypeConfigPartnerSeq" title="Barcode Type for Partner Seq" ref="com.axelor.apps.base.db.BarcodeTypeConfig"/>
<boolean name="generatePartnerSequence" title="Generate sequence for partners" default="true"/> <boolean name="generatePartnerSequence" title="Generate sequence for partners" default="true"/>
<boolean name="manageMultiBanks" title="Manage multi banks"/> <boolean name="manageMultiBanks" title="Manage multi banks"/>

View File

@@ -97,6 +97,8 @@
<string name="proformaComments" title="Comment to display on proforma" large="true"/> <string name="proformaComments" title="Comment to display on proforma" large="true"/>
<many-to-one name="barCodeSeq" title="Barcode" ref="com.axelor.meta.db.MetaFile" />
<finder-method name="findByUser" using="user"/> <finder-method name="findByUser" using="user"/>
<extra-code> <extra-code>

View File

@@ -36,6 +36,7 @@ public class PurchaseOrderManagementRepository extends PurchaseOrderRepository {
copy.setDeliveryDate(null); copy.setDeliveryDate(null);
copy.setValidatedByUser(null); copy.setValidatedByUser(null);
copy.setValidationDate(null); copy.setValidationDate(null);
copy.setBarCodeSeq(null);
for (PurchaseOrderLine purchaseOrderLine : copy.getPurchaseOrderLineList()) { for (PurchaseOrderLine purchaseOrderLine : copy.getPurchaseOrderLineList()) {
purchaseOrderLine.setDesiredDelivDate(null); purchaseOrderLine.setDesiredDelivDate(null);
purchaseOrderLine.setEstimatedDelivDate(null); purchaseOrderLine.setEstimatedDelivDate(null);
@@ -49,6 +50,7 @@ public class PurchaseOrderManagementRepository extends PurchaseOrderRepository {
try { try {
purchaseOrder = super.save(purchaseOrder); purchaseOrder = super.save(purchaseOrder);
Beans.get(PurchaseOrderService.class).setDraftSequence(purchaseOrder); Beans.get(PurchaseOrderService.class).setDraftSequence(purchaseOrder);
Beans.get(PurchaseOrderService.class).setPurchaseOrderBarCodeSeq(purchaseOrder);
return purchaseOrder; return purchaseOrder;
} catch (Exception e) { } catch (Exception e) {
throw new PersistenceException(e.getLocalizedMessage()); throw new PersistenceException(e.getLocalizedMessage());

View File

@@ -117,4 +117,8 @@ public interface PurchaseOrderService {
public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr); public void cancelReasonPurchaseOrder(PurchaseOrder purchaseOrder, CancelReason cancelReason, String cancelReasonStr);
public void calculateSum(List<PurchaseOrder> purchaseOrders,ImportationFolder importationFolder) throws AxelorException; public void calculateSum(List<PurchaseOrder> purchaseOrders,ImportationFolder importationFolder) throws AxelorException;
void setPurchaseOrderBarCodeSeq(PurchaseOrder purchaseOrder) throws AxelorException;
void createPurchaseOrderBarCodeSeq(PurchaseOrder purchaseOrder) throws AxelorException;
} }

View File

@@ -38,6 +38,7 @@ import com.axelor.apps.base.service.ShippingCoefService;
import com.axelor.apps.base.service.TradingNameService; import com.axelor.apps.base.service.TradingNameService;
import com.axelor.apps.base.service.UnitConversionService; import com.axelor.apps.base.service.UnitConversionService;
import com.axelor.apps.base.service.administration.SequenceService; 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.ImportationFolder;
import com.axelor.apps.purchase.db.PurchaseOrder; import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.apps.purchase.db.PurchaseOrderLine; 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.exception.IExceptionMessage;
import com.axelor.apps.purchase.report.IReport; import com.axelor.apps.purchase.report.IReport;
import com.axelor.apps.purchase.service.app.AppPurchaseService; 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.apps.report.engine.ReportSettings;
import com.axelor.auth.AuthUtils; import com.axelor.auth.AuthUtils;
import com.axelor.auth.db.User; 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.exception.db.repo.TraceBackRepository;
import com.axelor.i18n.I18n; import com.axelor.i18n.I18n;
import com.axelor.inject.Beans; 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.common.base.Strings;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.persist.Transactional; import com.google.inject.persist.Transactional;
@@ -69,6 +73,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.io.InputStream;
import java.io.IOException;
import javax.validation.ValidationException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@@ -87,6 +94,10 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
@Inject protected PurchaseOrderRepository purchaseOrderRepo; @Inject protected PurchaseOrderRepository purchaseOrderRepo;
@Inject protected ImportationFolderRepository importationFolderRepo; @Inject protected ImportationFolderRepository importationFolderRepo;
@Inject protected BarcodeGeneratorService barcodeGeneratorService;
@Inject protected AppBaseService appBaseService;
@Inject private MetaFiles metaFiles;
@Override @Override
public PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder) public PurchaseOrder _computePurchaseOrderLines(PurchaseOrder purchaseOrder)
throws AxelorException { throws AxelorException {
@@ -650,4 +661,40 @@ public class PurchaseOrderServiceImpl implements PurchaseOrderService {
return importationFolder; 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);
}
} }

View File

@@ -622,4 +622,15 @@ 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);
}
}
} }

View File

@@ -83,6 +83,8 @@
<decimal name="stamp" title="stamp" scale="2" precision="20" /> <decimal name="stamp" title="stamp" scale="2" precision="20" />
<decimal name="fixTax" title="fix Tax" scale="2" precision="20" /> <decimal name="fixTax" title="fix Tax" scale="2" precision="20" />
<many-to-one name="barCodeSeq" title="Barcode" ref="com.axelor.meta.db.MetaFile" />
<unique-constraint columns="purchaseOrderSeq,company"/> <unique-constraint columns="purchaseOrderSeq,company"/>
<extra-code> <extra-code>