temporary branch

This commit is contained in:
BACHIR SOULDI
2024-10-17 11:30:20 +01:00
parent cd115a234b
commit 742ec3e75e
212 changed files with 18396 additions and 1899 deletions

View File

@@ -21,46 +21,47 @@ import com.axelor.apps.base.db.Company;
import com.axelor.apps.base.db.Partner;
import com.axelor.apps.base.db.repo.BlockingRepository;
import com.axelor.apps.base.service.BlockingService;
import com.axelor.apps.base.service.PriceListService;
import com.axelor.apps.base.service.app.AppBaseService;
import com.axelor.apps.message.service.MailAccountService;
import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.apps.purchase.db.PurchaseOrderLine;
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
import com.axelor.apps.purchase.exception.IExceptionMessage;
import com.axelor.apps.purchase.service.PurchaseOrderLineService;
import com.axelor.apps.purchase.service.PurchaseOrderLineServiceImpl;
import com.axelor.apps.purchase.service.app.AppPurchaseService;
import com.axelor.apps.purchase.web.EmailUtil;
import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine;
import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository;
import com.axelor.auth.AuthUtils;
import com.axelor.exception.AxelorException;
import com.axelor.exception.db.repo.TraceBackRepository;
import com.axelor.exception.service.TraceBackService;
import com.axelor.i18n.I18n;
import com.axelor.inject.Beans;
import com.axelor.rpc.Context;
import com.google.inject.Inject;
import com.google.inject.persist.Transactional;
import com.itextpdf.text.pdf.PdfStructTreeController.returnType;
import java.math.BigDecimal;
import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
import com.axelor.apps.purchase.service.PurchaseOrderLineService;
import java.math.RoundingMode;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.math.RoundingMode;
import com.axelor.apps.base.service.app.AppBaseService;
public class PurchaseOrderSupplierLineService {
@Inject PurchaseOrderSupplierLineRepository poSupplierLineRepo;
@Inject protected AppPurchaseService appPurchaseService;
@Inject private PurchaseOrderLineRepository purchaseOrderLineRepo;
@Inject private PurchaseOrderLineService purchaseOrderLineService;
@Inject protected AppBaseService appBaseService;
@Inject private MailAccountService mailAccountService;
@Transactional(rollbackOn = {Exception.class})
public void accept(PurchaseOrderSupplierLine purchaseOrderSupplierLine) throws AxelorException {
@@ -80,30 +81,146 @@ public class PurchaseOrderSupplierLineService {
}
purchaseOrderLine.setSupplierPartner(supplierPartner);
// set tax from tco
BigDecimal priceDiscounted = this.computeDiscount(purchaseOrderSupplierLine);
purchaseOrderLine.setTaxLine(purchaseOrderSupplierLine.getTaxLine());
purchaseOrderLine.setPrice(purchaseOrderSupplierLine.getPrice());
purchaseOrderLine.setExTaxTotal(
PurchaseOrderLineServiceImpl.computeAmount(
purchaseOrderLine.getQty(), purchaseOrderLine.getPrice()));
purchaseOrderLine.setPriceDiscounted(purchaseOrderSupplierLine.getPrice()); // sophal
PurchaseOrderLineServiceImpl.computeAmount(purchaseOrderLine.getQty(), priceDiscounted));
purchaseOrderLine.setDiscountTypeSelect(
purchaseOrderSupplierLine.getDiscountTypeSelect()); // sophal
purchaseOrderLine.setDiscountAmount(purchaseOrderSupplierLine.getDiscountAmount()); // sophal
purchaseOrderLine.setPriceDiscounted(purchaseOrderSupplierLine.getPriceDiscounted()); // sophal
purchaseOrderSupplierLine.setStateSelect(PurchaseOrderSupplierLineRepository.STATE_ACCEPTED);
// sophal add acceptedOn and By TCO
purchaseOrderSupplierLine.setAcceptanceDate(appPurchaseService.getTodayDate());
purchaseOrderSupplierLine.setAcceptedByUser(AuthUtils.getUser());;
purchaseOrderSupplierLine.setAcceptedByUser(AuthUtils.getUser());
;
poSupplierLineRepo.save(purchaseOrderSupplierLine);
}
@Transactional(rollbackOn = {Exception.class})
public void refuse(PurchaseOrderSupplierLine purchaseOrderSupplierLine) throws AxelorException {
purchaseOrderSupplierLine.setStateSelect(PurchaseOrderSupplierLineRepository.STATE_NOT_ACCEPTED);
purchaseOrderSupplierLine.setStateSelect(
PurchaseOrderSupplierLineRepository.STATE_NOT_ACCEPTED);
// sophal add acceptedOn and By TCO
purchaseOrderSupplierLine.setRefusalDate(appPurchaseService.getTodayDate());
purchaseOrderSupplierLine.setRefusedByUser(AuthUtils.getUser());;
purchaseOrderSupplierLine.setRefusedByUser(AuthUtils.getUser());
;
poSupplierLineRepo.save(purchaseOrderSupplierLine);
}
@Transactional(rollbackOn = {Exception.class})
public void approve(PurchaseOrderSupplierLine purchaseOrderSupplierLine) throws AxelorException {
purchaseOrderSupplierLine.setStateSelect(PurchaseOrderSupplierLineRepository.STATE_APPROVED);
purchaseOrderSupplierLine.setApprovalDate(appPurchaseService.getTodayDate());
purchaseOrderSupplierLine.setApprovedByUser(AuthUtils.getUser());
;
poSupplierLineRepo.save(purchaseOrderSupplierLine);
}
@Transactional(rollbackOn = {Exception.class})
public void putStandBy(PurchaseOrderSupplierLine purchaseOrderSupplierLine, String raison)
throws AxelorException {
purchaseOrderSupplierLine.setStateSelect(PurchaseOrderSupplierLineRepository.STATE_STANDBY);
purchaseOrderSupplierLine.setStandbyDate(appPurchaseService.getTodayDate());
purchaseOrderSupplierLine.setStandbyByUser(AuthUtils.getUser());
purchaseOrderSupplierLine.setStandbyRaison(raison);
poSupplierLineRepo.save(purchaseOrderSupplierLine);
}
@Transactional(rollbackOn = {Exception.class})
public void massPutStandBy(List<Long> requestIds, String raison) throws AxelorException {
if (requestIds == null || requestIds.isEmpty()) {
throw new AxelorException(
TraceBackRepository.CATEGORY_MISSING_FIELD,
"Please Select at least one PurchaseOrderSupplierLine");
}
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLines =
Beans.get(PurchaseOrderSupplierLineRepository.class)
.all()
.filter("self.id in (?1)", requestIds)
.fetch();
if (requestIds != null || !requestIds.isEmpty()) {
for (PurchaseOrderSupplierLine line : purchaseOrderSupplierLines) {
this.putStandBy(line, raison);
}
}
PurchaseOrder po = purchaseOrderSupplierLines.get(0).getPurchaseOrderLine().getPurchaseOrder();
String email = purchaseOrderSupplierLines.get(0).getPurchaseOrderLine().getCreatedBy().getPartner().getEmailAddress().getAddress();
String raisonTmp = raison != null ? raison : "";
if(email != null){
EmailUtil.sendEmail(mailAccountService, email, "TCO En Attente "+po.getPurchaseOrderSeq(),po.getPurchaseOrderSeq()+ " a été mis en anttente avec le motif suivant <br><b>"+raisonTmp+"</b>");
}
}
@Transactional(rollbackOn = {Exception.class})
public void massAccept(List<Long> requestIds) throws AxelorException {
if (requestIds == null || requestIds.isEmpty()) {
throw new AxelorException(
TraceBackRepository.CATEGORY_MISSING_FIELD,
"Please Select at least one PurchaseOrderSupplierLine");
}
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLines =
Beans.get(PurchaseOrderSupplierLineRepository.class)
.all()
.filter("self.id in (?1)", requestIds)
.fetch();
if (requestIds != null || !requestIds.isEmpty()) {
for (PurchaseOrderSupplierLine line : purchaseOrderSupplierLines) {
this.accept(line);
}
}
}
@Transactional(rollbackOn = {Exception.class})
public void massRefuse(List<Long> requestIds) throws AxelorException {
if (requestIds == null || requestIds.isEmpty()) {
throw new AxelorException(
TraceBackRepository.CATEGORY_MISSING_FIELD,
"Please Select at least one PurchaseOrderSupplierLine");
}
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLines =
Beans.get(PurchaseOrderSupplierLineRepository.class)
.all()
.filter("self.id in (?1)", requestIds)
.fetch();
if (requestIds != null || !requestIds.isEmpty()) {
for (PurchaseOrderSupplierLine line : purchaseOrderSupplierLines) {
this.refuse(line);
}
}
}
@Transactional(rollbackOn = {Exception.class})
public void massApprove(List<Long> requestIds) throws AxelorException {
if (requestIds == null || requestIds.isEmpty()) {
throw new AxelorException(
TraceBackRepository.CATEGORY_MISSING_FIELD,
"Please Select at least one PurchaseOrderSupplierLine");
}
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLines =
Beans.get(PurchaseOrderSupplierLineRepository.class)
.all()
.filter("self.id in (?1)", requestIds)
.fetch();
if (requestIds != null || !requestIds.isEmpty()) {
for (PurchaseOrderSupplierLine line : purchaseOrderSupplierLines) {
this.approve(line);
}
}
}
public PurchaseOrderSupplierLine create(Partner supplierPartner, BigDecimal price) {
return new PurchaseOrderSupplierLine(
@@ -111,96 +228,123 @@ public class PurchaseOrderSupplierLineService {
}
@Transactional(rollbackOn = {Exception.class})
public void savePurchaseSupplierLine(PurchaseOrderSupplierLine purchaseOrderSupplierLine){
public void savePurchaseSupplierLine(PurchaseOrderSupplierLine purchaseOrderSupplierLine) {
poSupplierLineRepo.save(purchaseOrderSupplierLine);
}
@Transactional
public void calculateAmountsTco(PurchaseOrderSupplierLine purchaseOrderSupplierLine) throws AxelorException{
@Transactional
public void calculateAmountsTco(PurchaseOrderSupplierLine purchaseOrderSupplierLine)
throws AxelorException {
BigDecimal ExTaxTotal = BigDecimal.ZERO;
BigDecimal taxTotal = BigDecimal.ZERO;
BigDecimal inTaxTotal = BigDecimal.ZERO;
ExTaxTotal = purchaseOrderSupplierLine.getPrice().multiply(purchaseOrderSupplierLine.getAvailableQty())
.setScale(AppBaseService.DEFAULT_NB_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);
ExTaxTotal =
purchaseOrderSupplierLine
.getPrice()
.multiply(purchaseOrderSupplierLine.getAvailableQty())
.setScale(AppBaseService.DEFAULT_NB_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);
purchaseOrderSupplierLine.setExTaxTotal(ExTaxTotal);
if(purchaseOrderSupplierLine.getTaxLine().getValue() != null){
taxTotal = ExTaxTotal.multiply(purchaseOrderSupplierLine.getTaxLine().getValue())
.setScale(AppBaseService.DEFAULT_NB_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);
if (purchaseOrderSupplierLine.getTaxLine().getValue() != null) {
taxTotal =
ExTaxTotal.multiply(purchaseOrderSupplierLine.getTaxLine().getValue())
.setScale(AppBaseService.DEFAULT_NB_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);
purchaseOrderSupplierLine.setTaxTotal(taxTotal);
}
inTaxTotal = ExTaxTotal.add(taxTotal).setScale(AppBaseService.DEFAULT_NB_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);;
inTaxTotal =
ExTaxTotal.add(taxTotal)
.setScale(AppBaseService.DEFAULT_NB_DECIMAL_DIGITS, RoundingMode.HALF_EVEN);
;
purchaseOrderSupplierLine.setInTaxTotal(inTaxTotal);
poSupplierLineRepo.save(purchaseOrderSupplierLine);
}
public BigDecimal computeDiscount(PurchaseOrderSupplierLine purchaseOrderSupplierLine) {
BigDecimal price = purchaseOrderSupplierLine.getPrice();
return Beans.get(PriceListService.class)
.computeDiscount(
price,
purchaseOrderSupplierLine.getDiscountTypeSelect(),
purchaseOrderSupplierLine.getDiscountAmount());
}
@Transactional
public void splitPurchaseOrderLinesSpecialInto2(
PurchaseOrder purchaseOrder, PurchaseOrderLine purchaseOrderLine, BigDecimal splitQty) throws AxelorException{
BigDecimal totalQty = purchaseOrderLine.getQty();
totalQty = totalQty.subtract(splitQty);
PurchaseOrder purchaseOrder, PurchaseOrderLine purchaseOrderLine, BigDecimal splitQty)
throws AxelorException {
if(totalQty.compareTo(BigDecimal.ZERO) > 0){
PurchaseOrderLine newLine = purchaseOrderLineRepo.copy(purchaseOrderLine, true);
newLine.setQty(splitQty);
purchaseOrderLineService.compute(newLine, purchaseOrder);
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLineList;
purchaseOrderSupplierLineList = newLine.getPurchaseOrderSupplierLineList();
if (purchaseOrderSupplierLineList != null) {
for (PurchaseOrderSupplierLine purchaseOrderSupplierLine : purchaseOrderSupplierLineList) {
purchaseOrderSupplierLine.setAvailableQty(splitQty);
this.calculateAmountsTco(purchaseOrderSupplierLine);
}
BigDecimal totalQty = purchaseOrderLine.getQty();
totalQty = totalQty.subtract(splitQty);
if (totalQty.compareTo(BigDecimal.ZERO) > 0) {
PurchaseOrderLine newLine = purchaseOrderLineRepo.copy(purchaseOrderLine, true);
newLine.setQty(splitQty);
purchaseOrderLineService.compute(newLine, purchaseOrder);
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLineList;
purchaseOrderSupplierLineList = newLine.getPurchaseOrderSupplierLineList();
if (purchaseOrderSupplierLineList != null) {
for (PurchaseOrderSupplierLine purchaseOrderSupplierLine : purchaseOrderSupplierLineList) {
purchaseOrderSupplierLine.setAvailableQty(splitQty);
this.calculateAmountsTco(purchaseOrderSupplierLine);
}
purchaseOrder.addPurchaseOrderLineListItem(newLine);
PurchaseOrderLine newLine2 = purchaseOrderLineRepo.copy(purchaseOrderLine, true);
newLine2.setQty(totalQty);
purchaseOrderLineService.compute(newLine2, purchaseOrder);
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLineList2;
purchaseOrderSupplierLineList2 = newLine2.getPurchaseOrderSupplierLineList();
if (purchaseOrderSupplierLineList2 != null) {
for (PurchaseOrderSupplierLine purchaseOrderSupplierLine2 : purchaseOrderSupplierLineList2) {
purchaseOrderSupplierLine2.setAvailableQty(totalQty);
this.calculateAmountsTco(purchaseOrderSupplierLine2);
}
}
purchaseOrder.addPurchaseOrderLineListItem(newLine2);
purchaseOrder.removePurchaseOrderLineListItem(purchaseOrderLine);
}
}
public Map<String, BigDecimal> compute(PurchaseOrderSupplierLine line) {
HashMap<String, BigDecimal> map = new HashMap<>();
if (line == null
|| line.getPrice() == null
|| line.getTaxLine() == null) {
return map;
}
purchaseOrder.addPurchaseOrderLineListItem(newLine);
PurchaseOrderLine newLine2 = purchaseOrderLineRepo.copy(purchaseOrderLine, true);
newLine2.setQty(totalQty);
purchaseOrderLineService.compute(newLine2, purchaseOrder);
List<PurchaseOrderSupplierLine> purchaseOrderSupplierLineList2;
purchaseOrderSupplierLineList2 = newLine2.getPurchaseOrderSupplierLineList();
if (purchaseOrderSupplierLineList2 != null) {
for (PurchaseOrderSupplierLine purchaseOrderSupplierLine2 :
purchaseOrderSupplierLineList2) {
purchaseOrderSupplierLine2.setAvailableQty(totalQty);
this.calculateAmountsTco(purchaseOrderSupplierLine2);
}
}
purchaseOrder.addPurchaseOrderLineListItem(newLine2);
BigDecimal exTaxTotal = line.getPrice().multiply(line.getAvailableQty()) ;
BigDecimal taxRate = line.getTaxLine().getValue();
BigDecimal taxTotal = exTaxTotal.multiply(taxRate);
BigDecimal inTaxTotal = exTaxTotal.add(taxTotal);
map.put("exTaxTotal", exTaxTotal);
map.put("taxTotal", taxTotal);
map.put("inTaxTotal", inTaxTotal);
return map;
purchaseOrder.removePurchaseOrderLineListItem(purchaseOrderLine);
}
}
public Map<String, BigDecimal> compute(PurchaseOrderSupplierLine line) {
HashMap<String, BigDecimal> map = new HashMap<>();
if (line == null || line.getPrice() == null || line.getTaxLine() == null) {
return map;
}
BigDecimal priceDiscounted = this.computeDiscount(line).setScale(5,RoundingMode.HALF_EVEN);
BigDecimal taxRate = line.getTaxLine().getValue();
BigDecimal exTaxTotal = PurchaseOrderLineServiceImpl.computeAmount(line.getAvailableQty(), priceDiscounted);
BigDecimal taxTotal = exTaxTotal.multiply(taxRate);
BigDecimal inTaxTotal = exTaxTotal.add(exTaxTotal.multiply(taxRate));
map.put("exTaxTotal", exTaxTotal);
map.put("taxTotal", taxTotal);
map.put("inTaxTotal", inTaxTotal);
map.put("priceDiscounted", priceDiscounted);
return map;
}
@Transactional
public void setPurchaseOrderLinesPartner(
List<PurchaseOrderLine> purchaseOrderLines, Partner partner) {
for (PurchaseOrderLine purchaseOrderLine : purchaseOrderLines) {
purchaseOrderLine.setSupplierPartner(partner);
Beans.get(PurchaseOrderLineRepository.class).save(purchaseOrderLine);
}
}
}

View File

@@ -36,12 +36,11 @@ import com.axelor.apps.purchase.db.repo.PurchaseRequestRepository;
import com.axelor.apps.purchase.service.PurchaseOrderLineService;
import com.axelor.apps.purchase.service.app.AppPurchaseService;
import com.axelor.apps.stock.service.StockLocationService;
import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine;
import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository;
import com.axelor.apps.supplychain.exception.IExceptionMessage;
import com.axelor.apps.supplychain.service.PurchaseOrderServiceSupplychainImpl;
import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository;
import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine;
import com.axelor.auth.AuthUtils;
import com.axelor.db.JPA;
import com.axelor.dms.db.DMSFile;
import com.axelor.dms.db.repo.DMSFileRepository;
import com.axelor.exception.AxelorException;
@@ -49,22 +48,19 @@ import com.axelor.exception.db.repo.TraceBackRepository;
import com.axelor.i18n.I18n;
import com.axelor.inject.Beans;
import com.axelor.meta.db.MetaAttachment;
import com.axelor.meta.db.MetaFile;
import com.axelor.meta.db.repo.MetaAttachmentRepository;
import com.google.inject.Inject;
import com.google.inject.persist.Transactional;
import java.lang.invoke.MethodHandles;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.HashSet;
import java.util.Set;
import java.util.stream.Collector;
import java.util.stream.Collectors;
import javax.persistence.Query;
public class PurchaseOrderSupplierService {
@@ -147,72 +143,101 @@ public class PurchaseOrderSupplierService {
Map<Partner, List<PurchaseOrderLine>> purchaseOrderLinesBySupplierPartner =
this.splitBySupplierPartner(purchaseOrder.getPurchaseOrderLineList());
// remove link purchase order purchase request
PurchaseRequest purchaseRequest = Beans.get(PurchaseRequestRepository.class).find(purchaseOrder.getPurchaseRequestOrigin().getId());
// remove link purchase order purchase request
PurchaseRequest purchaseRequest =
Beans.get(PurchaseRequestRepository.class)
.find(purchaseOrder.getPurchaseRequestOrigin().getId());
Set<PurchaseOrder> po = purchaseRequest.getPurchaseOrderSet().stream().filter((t) -> t.getId() != purchaseOrder.getId()).collect(Collectors.toSet());
Set<PurchaseOrder> po =
purchaseRequest
.getPurchaseOrderSet()
.stream()
.filter((t) -> t.getId() != purchaseOrder.getId())
.collect(Collectors.toSet());
purchaseRequest.getPurchaseOrderSet().removeIf((t) -> t.getId() == purchaseOrder.getId());
Set<PurchaseOrder> hash_Set = new HashSet<PurchaseOrder>();
hash_Set.addAll(po);
purchaseRequest.getPurchaseOrderSet().removeIf((t) -> t.getId() == purchaseOrder.getId());
Set<PurchaseOrder> hash_Set = new HashSet<PurchaseOrder>();
hash_Set.addAll(po);
for (Partner supplierPartner : purchaseOrderLinesBySupplierPartner.keySet()) {
PurchaseOrder PurchaseOrderNew = this.createPurchaseOrderSophal(
supplierPartner, purchaseOrderLinesBySupplierPartner.get(supplierPartner), purchaseOrder);
// sophal
hash_Set.add(PurchaseOrderNew);
PurchaseOrder PurchaseOrderNew =
this.createPurchaseOrderSophal(
supplierPartner,
purchaseOrderLinesBySupplierPartner.get(supplierPartner),
purchaseOrder);
// sophal
hash_Set.add(PurchaseOrderNew);
// start attachement heritage
List<MetaAttachment> metaAttachments = metaAttachmentRepository.all().filter("self.objectId = ?1",purchaseOrder.getId()).fetch();
List<DMSFile> dmsFiles = dmsFileRepository.all().filter("self.relatedId = ?1",purchaseOrder.getId()).fetch();
Long idRoot = dmsFileRepository.all().filter("self.relatedId = ?1 and relatedModel = ?2",(long) 0,purchaseOrder.getClass().getCanonicalName()).fetchOne().getId();
// start attachement heritage
List<MetaAttachment> metaAttachments =
metaAttachmentRepository
.all()
.filter("self.objectId = ?1", purchaseOrder.getId())
.fetch();
List<DMSFile> dmsFiles =
dmsFileRepository.all().filter("self.relatedId = ?1", purchaseOrder.getId()).fetch();
for (MetaAttachment metaAttach : metaAttachments) {
MetaAttachment metaAttachment = new MetaAttachment();
metaAttachment.setObjectId(PurchaseOrderNew.getId());
metaAttachment.setObjectName(purchaseOrder.getClass().getCanonicalName());
metaAttachment.setMetaFile(metaAttach.getMetaFile());
metaAttachmentRepository.save(metaAttachment);
}
Long idRoot =
dmsFileRepository
.all()
.filter(
"self.relatedId = ?1 and relatedModel = ?2",
(long) 0,
purchaseOrder.getClass().getCanonicalName())
.fetchOne()
.getId();
for (MetaAttachment metaAttach : metaAttachments) {
MetaAttachment metaAttachment = new MetaAttachment();
metaAttachment.setObjectId(PurchaseOrderNew.getId());
metaAttachment.setObjectName(purchaseOrder.getClass().getCanonicalName());
metaAttachment.setMetaFile(metaAttach.getMetaFile());
metaAttachmentRepository.save(metaAttachment);
}
for (DMSFile dmsFile : dmsFiles) {
if(dmsFile.getIsDirectory() == true){
DMSFile dms = new DMSFile();
dms.setFileName(dmsFile.getFileName());
dms.setRelatedId(PurchaseOrderNew.getId());
dms.setFileName(dmsFile.getFileName());
dms.setIsDirectory(dmsFile.getIsDirectory());
dms.setParent(dmsFileRepository.find(idRoot));
dms.setRelatedModel(purchaseOrder.getClass().getCanonicalName());
dmsFileRepository.save(dms);
}
}
for (DMSFile dmsFile : dmsFiles) {
if (dmsFile.getIsDirectory() == true) {
DMSFile dms = new DMSFile();
dms.setFileName(dmsFile.getFileName());
dms.setRelatedId(PurchaseOrderNew.getId());
dms.setFileName(dmsFile.getFileName());
dms.setIsDirectory(dmsFile.getIsDirectory());
dms.setParent(dmsFileRepository.find(idRoot));
dms.setRelatedModel(purchaseOrder.getClass().getCanonicalName());
dmsFileRepository.save(dms);
}
}
for (DMSFile dmsFile : dmsFiles) {
if(dmsFile.getIsDirectory() != true){
DMSFile dmsParent = dmsFileRepository.all().filter("self.relatedId = ?1 and self.isDirectory = true",PurchaseOrderNew.getId()).fetchOne();
DMSFile dms = new DMSFile();
dms.setFileName(dmsFile.getFileName());
dms.setRelatedId(PurchaseOrderNew.getId());
dms.setFileName(dmsFile.getFileName());
dms.setMetaFile(dmsFile.getMetaFile());
dms.setIsDirectory(dmsFile.getIsDirectory());
dms.setRelatedModel(purchaseOrder.getClass().getCanonicalName());
dms.setParent(dmsParent);
for (DMSFile dmsFile : dmsFiles) {
if (dmsFile.getIsDirectory() != true) {
DMSFile dmsParent =
dmsFileRepository
.all()
.filter(
"self.relatedId = ?1 and self.isDirectory = true", PurchaseOrderNew.getId())
.fetchOne();
DMSFile dms = new DMSFile();
dms.setFileName(dmsFile.getFileName());
dms.setRelatedId(PurchaseOrderNew.getId());
dms.setFileName(dmsFile.getFileName());
dms.setMetaFile(dmsFile.getMetaFile());
dms.setIsDirectory(dmsFile.getIsDirectory());
dms.setRelatedModel(purchaseOrder.getClass().getCanonicalName());
dms.setParent(dmsParent);
dmsFileRepository.save(dms);
}
}
//PurchaseOrderNew.setStatusSelect(0);//Approuve
createPurchaseOrderSupplierLineTCO(PurchaseOrderNew.getPurchaseOrderLineList() ,purchaseOrderLinesBySupplierPartner.get(supplierPartner));
dmsFileRepository.save(dms);
}
}
// PurchaseOrderNew.setStatusSelect(0);//Approuve
createPurchaseOrderSupplierLineTCO(
PurchaseOrderNew.getPurchaseOrderLineList(),
purchaseOrderLinesBySupplierPartner.get(supplierPartner));
}
purchaseRequest.setPurchaseOrderSet(hash_Set);
purchaseRequestRepo.save(purchaseRequest);
purchaseOrder.setArchived(true);
purchaseOrder.setArchived(true);
poRepo.save(purchaseOrder);
}
@@ -265,6 +290,7 @@ public class PurchaseOrderSupplierService {
null,
parentPurchaseOrder.getPurchaseOrderSeq(),
parentPurchaseOrder.getExternalReference(),
"",
Beans.get(StockLocationService.class)
.getDefaultReceiptStockLocation(parentPurchaseOrder.getCompany()),
Beans.get(AppBaseService.class).getTodayDate(),
@@ -304,8 +330,7 @@ public class PurchaseOrderSupplierService {
purchaseOrderLine.getQty(),
purchaseOrderLine.getUnit());
}
@Transactional(rollbackOn = {Exception.class})
public PurchaseOrder createPurchaseOrderSophal(
Partner supplierPartner,
@@ -327,6 +352,7 @@ public class PurchaseOrderSupplierService {
null,
parentPurchaseOrder.getPurchaseOrderSeq(),
parentPurchaseOrder.getExternalReference(),
"",
Beans.get(StockLocationService.class)
.getDefaultReceiptStockLocation(parentPurchaseOrder.getCompany()),
Beans.get(AppBaseService.class).getTodayDate(),
@@ -339,17 +365,16 @@ public class PurchaseOrderSupplierService {
for (PurchaseOrderLine purchaseOrderLine : purchaseOrderLineList) {
// purchaseOrder.addPurchaseOrderLineListItem(
// this.createPurchaseOrderLine(purchaseOrder, purchaseOrderLine));
// purchaseOrder.addPurchaseOrderLineListItem(
// this.createPurchaseOrderLine(purchaseOrder, purchaseOrderLine));
purchaseOrder.addPurchaseOrderLineListItem(
this.createPurchaseOrderLineSophal(purchaseOrder, purchaseOrderLine));
this.createPurchaseOrderLineSophal(purchaseOrder, purchaseOrderLine));
}
purchaseOrderServiceSupplychainImpl.computePurchaseOrder(purchaseOrder);
//purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED);
purchaseOrder.setStatusSelect(parentPurchaseOrder.getStatusSelect());
// purchaseOrder.setStatusSelect(PurchaseOrderRepository.STATUS_REQUESTED);
purchaseOrder.setStatusSelect(parentPurchaseOrder.getStatusSelect());
purchaseOrder.setReceiptState(PurchaseOrderRepository.STATE_NOT_RECEIVED);
purchaseOrder.setPurchaseRequestOrigin(parentPurchaseOrder.getPurchaseRequestOrigin());
purchaseOrder.setPurchaseType(parentPurchaseOrder.getPurchaseType());
@@ -358,83 +383,82 @@ public class PurchaseOrderSupplierService {
purchaseOrder.setDeliveryPartner(parentPurchaseOrder.getSupplierPartner());
purchaseOrder.setPayerPartner(parentPurchaseOrder.getSupplierPartner());
// copy description from parent po
purchaseOrder.setNotes(parentPurchaseOrder.getNotes());;
purchaseOrder.setNotes(parentPurchaseOrder.getNotes());
;
poRepo.save(purchaseOrder);
return purchaseOrder;
}
public PurchaseOrderLine createPurchaseOrderLineSophal(
PurchaseOrder purchaseOrder, PurchaseOrderLine purchaseOrderLine) throws AxelorException {
LOG.debug(
"SOPHAL Création d'une ligne de commande fournisseur pour le produit : {}",
new Object[] {purchaseOrderLine.getProductName()});
PurchaseOrderLine PurchaseOrderLineNew = purchaseOrderLineService.createPurchaseOrderLine(
purchaseOrder,
purchaseOrderLine.getProduct(),
purchaseOrderLine.getProductName(),
purchaseOrderLine.getDescription(),
purchaseOrderLine.getQty(),
purchaseOrderLine.getUnit());
PurchaseOrderLine PurchaseOrderLineNew =
purchaseOrderLineService.createPurchaseOrderLine(
purchaseOrder,
purchaseOrderLine.getProduct(),
purchaseOrderLine.getProductName(),
purchaseOrderLine.getDescription(),
purchaseOrderLine.getQty(),
purchaseOrderLine.getUnit());
PurchaseOrderLineNew.setPrice(purchaseOrderLine.getPrice());
PurchaseOrderLineNew.setInTaxPrice(purchaseOrderLine.getInTaxPrice());
PurchaseOrderLineNew.setPriceDiscounted(purchaseOrderLine.getPriceDiscounted());
PurchaseOrderLineNew.setExTaxTotal(purchaseOrderLine.getExTaxTotal());
PurchaseOrderLineNew.setInTaxTotal(purchaseOrderLine.getInTaxTotal());
PurchaseOrderLineNew.setDiscountAmount(purchaseOrderLine.getDiscountAmount());
PurchaseOrderLineNew.setDiscountTypeSelect(purchaseOrderLine.getDiscountTypeSelect());
PurchaseOrderLineNew.setSupplierPartner(purchaseOrderLine.getSupplierPartner());
// set taxline to children
PurchaseOrderLineNew.setTaxLine(purchaseOrderLine.getTaxLine());
PurchaseOrderLineNew.setPrice(purchaseOrderLine.getPrice());
PurchaseOrderLineNew.setInTaxPrice(purchaseOrderLine.getInTaxPrice());
PurchaseOrderLineNew.setPriceDiscounted(purchaseOrderLine.getPriceDiscounted());
PurchaseOrderLineNew.setExTaxTotal(purchaseOrderLine.getExTaxTotal());
PurchaseOrderLineNew.setInTaxTotal(purchaseOrderLine.getInTaxTotal());
PurchaseOrderLineNew.setDiscountAmount(purchaseOrderLine.getDiscountAmount());
PurchaseOrderLineNew.setDiscountTypeSelect(purchaseOrderLine.getDiscountTypeSelect());
PurchaseOrderLineNew.setSupplierPartner(purchaseOrderLine.getSupplierPartner());
// set taxline to children
PurchaseOrderLineNew.setTaxLine(purchaseOrderLine.getTaxLine());
return PurchaseOrderLineNew ;
return PurchaseOrderLineNew;
}
public void createPurchaseOrderSupplierLineTCO(
List<PurchaseOrderLine> purchaseOrderLN, List<PurchaseOrderLine> purchaseOrderLP) throws AxelorException {
int index=0;
List<PurchaseOrderLine> purchaseOrderLineNew = purchaseOrderLN;
for (PurchaseOrderLine purchaseOrderLineParnet : purchaseOrderLP) {
List<PurchaseOrderSupplierLine> PurchaseOrderSupplierLineParnetList =
List<PurchaseOrderLine> purchaseOrderLN, List<PurchaseOrderLine> purchaseOrderLP)
throws AxelorException {
int index = 0;
List<PurchaseOrderLine> purchaseOrderLineNew = purchaseOrderLN;
for (PurchaseOrderLine purchaseOrderLineParnet : purchaseOrderLP) {
List<PurchaseOrderSupplierLine> PurchaseOrderSupplierLineParnetList =
Beans.get(PurchaseOrderSupplierLineRepository.class)
.all()
.filter("self.purchaseOrderLine =?1 ", purchaseOrderLineParnet.getId())
.fetch();
for (PurchaseOrderSupplierLine poLineSupplierParnet : PurchaseOrderSupplierLineParnetList) {
PurchaseOrderSupplierLine po = new PurchaseOrderSupplierLine();
po.setPrice(poLineSupplierParnet.getPrice());
po.setExTaxTotal(poLineSupplierParnet.getExTaxTotal());
po.setInTaxTotal(poLineSupplierParnet.getInTaxTotal());
po.setTaxTotal(poLineSupplierParnet.getTaxTotal());
po.setAvailableQty(poLineSupplierParnet.getAvailableQty());
po.setPurchaseOrderLine(purchaseOrderLineNew.get(index));
po.setStateSelect(poLineSupplierParnet.getStateSelect());
po.setTaxLine(poLineSupplierParnet.getTaxLine());
po.setSupplierPartner(poLineSupplierParnet.getSupplierPartner());
po.setComments(poLineSupplierParnet.getComments());
po.setArchived(poLineSupplierParnet.getArchived());
po.setEstimatedDelivDate(poLineSupplierParnet.getEstimatedDelivDate());
po.setAcceptanceDate(poLineSupplierParnet.getAcceptanceDate());
po.setAcceptedByUser(poLineSupplierParnet.getAcceptedByUser());
po.setRefusalDate(poLineSupplierParnet.getRefusalDate());
po.setRefusedByUser(poLineSupplierParnet.getRefusedByUser());
po.setAttrs(poLineSupplierParnet.getAttrs());
po.setCurrency(poLineSupplierParnet.getCurrency());
//LOG.debug("purchaseOrderLineNew.getId(): {}",purchaseOrderLineNew.get(index).getId());
Beans.get(PurchaseOrderSupplierLineRepository.class).save(po);
}
index++;
for (PurchaseOrderSupplierLine poLineSupplierParnet : PurchaseOrderSupplierLineParnetList) {
PurchaseOrderSupplierLine po = new PurchaseOrderSupplierLine();
po.setPrice(poLineSupplierParnet.getPrice());
po.setExTaxTotal(poLineSupplierParnet.getExTaxTotal());
po.setInTaxTotal(poLineSupplierParnet.getInTaxTotal());
po.setTaxTotal(poLineSupplierParnet.getTaxTotal());
po.setAvailableQty(poLineSupplierParnet.getAvailableQty());
po.setPurchaseOrderLine(purchaseOrderLineNew.get(index));
po.setStateSelect(poLineSupplierParnet.getStateSelect());
po.setTaxLine(poLineSupplierParnet.getTaxLine());
po.setSupplierPartner(poLineSupplierParnet.getSupplierPartner());
po.setComments(poLineSupplierParnet.getComments());
po.setArchived(poLineSupplierParnet.getArchived());
po.setEstimatedDelivDate(poLineSupplierParnet.getEstimatedDelivDate());
po.setAcceptanceDate(poLineSupplierParnet.getAcceptanceDate());
po.setAcceptedByUser(poLineSupplierParnet.getAcceptedByUser());
po.setRefusalDate(poLineSupplierParnet.getRefusalDate());
po.setRefusedByUser(poLineSupplierParnet.getRefusedByUser());
po.setAttrs(poLineSupplierParnet.getAttrs());
po.setCurrency(poLineSupplierParnet.getCurrency());
// LOG.debug("purchaseOrderLineNew.getId(): {}",purchaseOrderLineNew.get(index).getId());
Beans.get(PurchaseOrderSupplierLineRepository.class).save(po);
}
index++;
}
}
}

View File

@@ -17,16 +17,25 @@
*/
package com.axelor.apps.suppliermanagement.web;
import com.axelor.apps.base.db.Partner;
import com.axelor.apps.base.db.repo.PartnerRepository;
import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.apps.purchase.db.PurchaseOrderLine;
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
import com.axelor.apps.purchase.db.repo.PurchaseOrderRepository;
import com.axelor.apps.suppliermanagement.exceptions.IExceptionMessage;
import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierLineService;
import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierService;
import com.axelor.db.mapper.Mapper;
import com.axelor.exception.service.TraceBackService;
import com.axelor.i18n.I18n;
import com.axelor.inject.Beans;
import com.axelor.rpc.ActionRequest;
import com.axelor.rpc.ActionResponse;
import com.google.inject.Singleton;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
@Singleton
@@ -35,24 +44,26 @@ public class PurchaseOrderController {
public void generateSuppliersPurchaseOrder(ActionRequest request, ActionResponse response) {
PurchaseOrder purchaseOrder = request.getContext().asType(PurchaseOrder.class);
List<PurchaseOrder> purchaseOrders = Beans.get(PurchaseOrderRepository.class).all()
.filter("self.parentPurchaseOrder = ?1 ", purchaseOrder.getId())
.fetch();
if(purchaseOrders.size() < 1){
try {
Beans.get(PurchaseOrderSupplierService.class)
.generateSuppliersPurchaseOrder(
Beans.get(PurchaseOrderRepository.class).find(purchaseOrder.getId()));
response.setFlash(I18n.get(IExceptionMessage.PURCHASE_ORDER_1));
response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
List<PurchaseOrder> purchaseOrders =
Beans.get(PurchaseOrderRepository.class)
.all()
.filter("self.parentPurchaseOrder = ?1 ", purchaseOrder.getId())
.fetch();
if (purchaseOrders.size() < 1) {
try {
Beans.get(PurchaseOrderSupplierService.class)
.generateSuppliersPurchaseOrder(
Beans.get(PurchaseOrderRepository.class).find(purchaseOrder.getId()));
response.setFlash(I18n.get(IExceptionMessage.PURCHASE_ORDER_1));
response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
} else {
response.setFlash("Vous avez deja genere les commandes fournisseurs associees");
}
}else{
response.setFlash("Vous avez deja genere les commandes fournisseurs associees");
}
}
public void generateSuppliersRequests(ActionRequest request, ActionResponse response) {
@@ -68,4 +79,50 @@ public class PurchaseOrderController {
TraceBackService.trace(response, e);
}
}
// sophal
@SuppressWarnings({"unchecked", "rawtypes"})
public void setPurchaseOrderLinesPartner(ActionRequest request, ActionResponse response) {
try {
List<HashMap> selectedPurchaseOrderLineMapList =
(List<HashMap>) request.getContext().get("purchaseOrderLineList");
if (selectedPurchaseOrderLineMapList == null) {
response.setFlash(I18n.get(IExceptionMessage.PURCHASE_ORDER_1));
return;
}
List<PurchaseOrderLine> purchaseOrderLineList = new ArrayList<>();
PurchaseOrderLineRepository purchaseOrderLineRepo =
Beans.get(PurchaseOrderLineRepository.class);
for (HashMap map : selectedPurchaseOrderLineMapList) {
PurchaseOrderLine purchaseOrderLine =
(PurchaseOrderLine) Mapper.toBean(PurchaseOrderLine.class, map);
purchaseOrderLineList.add(purchaseOrderLineRepo.find(purchaseOrderLine.getId()));
}
if (purchaseOrderLineList.isEmpty()) {
response.setFlash(I18n.get(IExceptionMessage.PURCHASE_ORDER_2));
return;
}
Long partnerId = 0L;
LinkedHashMap<String, Object> partnerHashMap =
(LinkedHashMap<String, Object>) request.getContext().get("partner");
if (partnerHashMap != null) {
partnerId = Long.valueOf(partnerHashMap.get("id").toString());
}
Partner partner = Beans.get(PartnerRepository.class).find(partnerId);
if (partner == null) {
response.setFlash("No partners");
return;
}
Beans.get(PurchaseOrderSupplierLineService.class)
.setPurchaseOrderLinesPartner(purchaseOrderLineList, partner);
response.setCanClose(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
}

View File

@@ -23,35 +23,33 @@ import com.axelor.apps.base.service.BlockingService;
import com.axelor.apps.purchase.db.PurchaseOrder;
import com.axelor.apps.purchase.db.PurchaseOrderLine;
import com.axelor.apps.purchase.db.repo.PurchaseOrderLineRepository;
import com.axelor.apps.purchase.service.PurchaseOrderService;
import com.axelor.apps.purchase.service.app.AppPurchaseService;
import com.axelor.apps.suppliermanagement.db.PurchaseOrderSupplierLine;
import com.axelor.apps.suppliermanagement.db.repo.PurchaseOrderSupplierLineRepository;
import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierLineService;
import com.axelor.apps.suppliermanagement.service.PurchaseOrderSupplierService;
import com.axelor.apps.purchase.service.PurchaseOrderService;
import com.axelor.exception.service.TraceBackService;
import com.axelor.inject.Beans;
import com.axelor.meta.schema.actions.ActionView;
import com.axelor.rpc.ActionRequest;
import com.axelor.rpc.ActionResponse;
import com.axelor.rpc.Context;
import com.google.common.base.Strings;
import com.google.inject.Singleton;
import java.util.HashMap;
import java.math.BigDecimal;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.axelor.meta.schema.actions.ActionView;
import java.math.BigDecimal;
import com.axelor.exception.AxelorException;
@Singleton
public class PurchaseOrderSupplierLineController {
public void showPurchaseOrder(ActionRequest request, ActionResponse response) {
PurchaseOrderSupplierLine purchaseOrderSupplierLine = Beans.get(PurchaseOrderSupplierLineRepository.class)
.find(request.getContext().asType(PurchaseOrderSupplierLine.class).getId());
PurchaseOrder purchaseOrder = purchaseOrderSupplierLine.getPurchaseOrderLine().getPurchaseOrder();
PurchaseOrderSupplierLine purchaseOrderSupplierLine =
Beans.get(PurchaseOrderSupplierLineRepository.class)
.find(request.getContext().asType(PurchaseOrderSupplierLine.class).getId());
PurchaseOrder purchaseOrder =
purchaseOrderSupplierLine.getPurchaseOrderLine().getPurchaseOrder();
response.setView(
ActionView.define("Devis fournisseur")
.model(PurchaseOrder.class.getName())
@@ -59,7 +57,7 @@ public class PurchaseOrderSupplierLineController {
.param("show-toolbar", "false")
.param("show-confirm", "false")
.param("popup-save", "false")
.param("show-toolbar","true")
.param("show-toolbar", "true")
.param("popup", "true")
.context("_showRecord", String.valueOf(purchaseOrder.getId()))
.map());
@@ -78,14 +76,14 @@ public class PurchaseOrderSupplierLineController {
.find(request.getContext().getParent().asType(PurchaseOrderLine.class).getId()));
}
// sophal refresh purchase order price
PurchaseOrder order = purchaseOrderSupplierLine.getPurchaseOrderLine().getPurchaseOrder();
// sophal refresh purchase order price
PurchaseOrder order = purchaseOrderSupplierLine.getPurchaseOrderLine().getPurchaseOrder();
try {
Beans.get(PurchaseOrderSupplierLineService.class).accept(purchaseOrderSupplierLine);
// sophal refresh purchase order price
Beans.get(PurchaseOrderService.class).computePurchaseOrder(order);
Beans.get(PurchaseOrderService.class).updateCostPrice(order);
// sophal refresh purchase order price
Beans.get(PurchaseOrderService.class).computePurchaseOrder(order);
Beans.get(PurchaseOrderService.class).updateCostPrice(order);
// response.setReload(true);
} catch (Exception e) {
TraceBackService.trace(response, e);
@@ -93,7 +91,7 @@ public class PurchaseOrderSupplierLineController {
}
public void refuse(ActionRequest request, ActionResponse response) {
PurchaseOrderSupplierLine purchaseOrderSupplierLine =
Beans.get(PurchaseOrderSupplierLineRepository.class)
.find(request.getContext().asType(PurchaseOrderSupplierLine.class).getId());
@@ -103,7 +101,108 @@ public class PurchaseOrderSupplierLineController {
TraceBackService.trace(response, e);
}
}
public void massPutStandBy(ActionRequest request, ActionResponse response) {
List<Long> requestIds = (List<Long>) request.getContext().get("_ids");
System.out.println("****************");
System.out.println(requestIds);
System.out.println("****************");
String raison = (String) request.getContext().get("standbyRaison");
if (requestIds == null || requestIds.isEmpty()) {
return;
}
try {
if (!requestIds.isEmpty()) {
Beans.get(PurchaseOrderSupplierLineService.class).massPutStandBy(requestIds, raison);
response.setReload(true);
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
public void putStandBy(ActionRequest request, ActionResponse response) {
System.out.println(String.valueOf(request.getContext().get("_id")));
Long id = new Long(String.valueOf(request.getContext().get("_id")));
String raison = (String) request.getContext().get("standbyRaison");
try {
PurchaseOrderSupplierLine purchaseOrderSupplierLine =
Beans.get(PurchaseOrderSupplierLineRepository.class).find(id);
Beans.get(PurchaseOrderSupplierLineService.class)
.putStandBy(purchaseOrderSupplierLine, raison);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
public void massAccept(ActionRequest request, ActionResponse response) {
List<Long> requestIds = (List<Long>) request.getContext().get("_ids");
System.out.println("*************************");
System.out.println(requestIds);
System.out.println("*************************");
if (requestIds == null || requestIds.isEmpty()) {
return;
}
try {
if (!requestIds.isEmpty()) {
Beans.get(PurchaseOrderSupplierLineService.class).massAccept(requestIds);
response.setReload(true);
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
public void massApprove(ActionRequest request, ActionResponse response) {
List<Long> requestIds = (List<Long>) request.getContext().get("_ids");
System.out.println("*************************");
System.out.println(requestIds);
System.out.println("*************************");
if (requestIds == null || requestIds.isEmpty()) {
return;
}
try {
if (!requestIds.isEmpty()) {
Beans.get(PurchaseOrderSupplierLineService.class).massApprove(requestIds);
response.setReload(true);
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
public void massRefuse(ActionRequest request, ActionResponse response) {
List<Long> requestIds = (List<Long>) request.getContext().get("_ids");
System.out.println("*************************");
System.out.println(requestIds);
System.out.println("*************************");
if (requestIds == null || requestIds.isEmpty()) {
return;
}
try {
if (!requestIds.isEmpty()) {
Beans.get(PurchaseOrderSupplierLineService.class).massRefuse(requestIds);
response.setReload(true);
}
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
/**
* Called on supplier partner select. Set the domain for the field supplierPartner
*
@@ -158,39 +257,34 @@ public class PurchaseOrderSupplierLineController {
response.setAttr("supplierPartner", "domain", domain);
}
public void splitPurchaseOrderLinesInto2(ActionRequest request, ActionResponse response){
public void splitPurchaseOrderLinesInto2(ActionRequest request, ActionResponse response) {
try {
Long Id = (Long) request.getContext().get("id");
PurchaseOrderLineRepository purchaseOrderLineRepository = Beans.get(PurchaseOrderLineRepository.class);
PurchaseOrderLine purchaseOrderLine = purchaseOrderLineRepository.find(Id);
PurchaseOrder purchaseOrder = purchaseOrderLine.getPurchaseOrder();
BigDecimal splitQty = new BigDecimal(request.getContext().get("splitQty").toString());
Beans.get(PurchaseOrderSupplierLineService.class)
.splitPurchaseOrderLinesSpecialInto2(purchaseOrder, purchaseOrderLine, splitQty);
Long Id = (Long) request.getContext().get("id");
PurchaseOrderLineRepository purchaseOrderLineRepository =
Beans.get(PurchaseOrderLineRepository.class);
PurchaseOrderLine purchaseOrderLine = purchaseOrderLineRepository.find(Id);
PurchaseOrder purchaseOrder = purchaseOrderLine.getPurchaseOrder();
BigDecimal splitQty = new BigDecimal(request.getContext().get("splitQty").toString());
Beans.get(PurchaseOrderSupplierLineService.class)
.splitPurchaseOrderLinesSpecialInto2(purchaseOrder, purchaseOrderLine, splitQty);
} catch (Exception e) {
TraceBackService.trace(response, e);
TraceBackService.trace(response, e);
}
}
}
public void compute(ActionRequest request, ActionResponse response) {
try {
Context context = request.getContext();
PurchaseOrderSupplierLine line = context.asType(PurchaseOrderSupplierLine.class);
Map<String, BigDecimal> map = Beans.get(PurchaseOrderSupplierLineService.class).compute(line);
response.setValues(map);
response.setValues(map);
} catch (Exception e) {
TraceBackService.trace(response, e);
}
}
}

View File

@@ -37,7 +37,19 @@
<many-to-one name="refusedByUser" ref="com.axelor.auth.db.User" readonly="true" title="Refused by"/>
<date name="refusalDate" title="refusal date" readonly="true"/>
<many-to-one name="standbyByUser" ref="com.axelor.auth.db.User" readonly="true" title="Standby by"/>
<date name="standbyDate" title="Standby date" readonly="true"/>
<many-to-one name="approvedByUser" ref="com.axelor.auth.db.User" readonly="true" title="Approved by"/>
<date name="approvalDate" title="Approval date" readonly="true"/>
<decimal name="discountAmount" title="Discount amount" precision="20" scale="10"/>
<integer name="discountTypeSelect" title="Discount Type" selection="base.price.list.line.amount.type.select" default="0" />
<decimal name="priceDiscounted" title="Unit price discounted" precision="20" scale="10"/>
<!-- sophal -->
<string name="rejectionRaison" title="Rejection Raison" large="true"/>
<string name="standbyRaison" title="Standby Raison" large="true"/>
<extra-code><![CDATA[
@@ -47,6 +59,8 @@
public static final int STATE_ACCEPTED = 3;
public static final int STATE_NOT_ACCEPTED = 4;
public static final int STATE_CANCELED = 5;
public static final int STATE_STANDBY = 6;
public static final int STATE_APPROVED = 7;
]]>
</extra-code>