|
|
|
|
@ -44,14 +44,10 @@ import com.axelor.apps.stock.db.StockConfig;
|
|
|
|
|
import com.axelor.apps.stock.db.StockLocation;
|
|
|
|
|
import com.axelor.apps.stock.db.StockMove;
|
|
|
|
|
import com.axelor.apps.stock.db.StockMoveLine;
|
|
|
|
|
import com.axelor.apps.stock.db.StockMoveLineLocation;
|
|
|
|
|
import com.axelor.apps.stock.db.StockMoveLineLocationLine;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.InternalTrackingNumberRepository;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.InventoryLineRepository;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.InventoryRepository;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.StockConfigRepository;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.StockLocationRepository;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.StockMoveLineRepository;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.StockMoveRepository;
|
|
|
|
|
import com.axelor.apps.stock.db.StockMoveLineStockMoveLineLocation;
|
|
|
|
|
import com.axelor.apps.stock.db.repo.*;
|
|
|
|
|
import com.axelor.apps.stock.exception.IExceptionMessage;
|
|
|
|
|
import com.axelor.apps.stock.report.IReport;
|
|
|
|
|
import com.axelor.common.ObjectUtils;
|
|
|
|
|
@ -70,14 +66,7 @@ import java.lang.invoke.MethodHandles;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDate;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.HashMap;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Map;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
import java.util.Optional;
|
|
|
|
|
import java.util.*;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
import javax.persistence.Query;
|
|
|
|
|
@ -403,6 +392,71 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
|
return realize(stockMove, true);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
|
public StockMoveLineLocationLine createStockMoveLineLocationLine(StockMoveLine line,BigDecimal qty){
|
|
|
|
|
System.out.println("************************* Start createStockMoveLineLocationLine *************************");
|
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = new StockMoveLineLocationLine();
|
|
|
|
|
stockMoveLineLocationLine.setProduct(line.getProduct());
|
|
|
|
|
System.out.println("- Product : "+stockMoveLineLocationLine.getProduct());
|
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().add(qty));
|
|
|
|
|
System.out.println("- RealQty : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
|
System.out.println("- StockMoveLineLocation : "+stockMoveLineLocationLine.getStockMoveLineLocation());
|
|
|
|
|
stockMoveLineLocationLine.setTrackingNumber(line.getTrackingNumber());
|
|
|
|
|
System.out.println("- TrackingNumber"+stockMoveLineLocationLine.getTrackingNumber());
|
|
|
|
|
stockMoveLineLocationLine.setInternalTrackingNumber(line.getInternalTrackingNumber());
|
|
|
|
|
System.out.println("- InternalTrackingNumber"+stockMoveLineLocationLine.getInternalTrackingNumber());
|
|
|
|
|
System.out.println("************************* End createStockMoveLineLocationLine *************************\n");
|
|
|
|
|
return stockMoveLineLocationLine;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
|
public StockMoveLineLocationLine updateStockMoveLineLocationLine(StockMoveLine line,StockMoveLineLocationLine stockMoveLineLocationLine,Integer typeSelect,BigDecimal qty) throws AxelorException {
|
|
|
|
|
System.out.println("\n********************** updateStockMoveLineLocationLine **********************");
|
|
|
|
|
|
|
|
|
|
stockMoveLineLocationLine.setProduct(line.getProduct());
|
|
|
|
|
System.out.println("- Product : "+stockMoveLineLocationLine.getProduct());
|
|
|
|
|
|
|
|
|
|
System.out.println("- Before RealQty : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
|
if(typeSelect == StockMoveRepository.TYPE_INCOMING) {
|
|
|
|
|
System.out.println("TYPE_INCOMING");
|
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().add(qty));
|
|
|
|
|
}
|
|
|
|
|
if (typeSelect == StockMoveRepository.TYPE_OUTGOING) {
|
|
|
|
|
System.out.println("TYPE_OUTGOING");
|
|
|
|
|
System.out.println("stockMoveLineLocationLine.getRealQty() : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
|
System.out.println("qty : "+qty);
|
|
|
|
|
System.out.println(stockMoveLineLocationLine.getRealQty().compareTo(qty));
|
|
|
|
|
if(stockMoveLineLocationLine.getRealQty().compareTo(qty) >= 0){
|
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().subtract(qty));
|
|
|
|
|
}else{
|
|
|
|
|
throw new AxelorException(
|
|
|
|
|
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
|
|
|
|
I18n.get("Insufficient quantity")
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
System.out.println("- After RealQty : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
|
System.out.println("- StockMoveLineLocation : "+stockMoveLineLocationLine.getStockMoveLineLocation());
|
|
|
|
|
stockMoveLineLocationLine.setTrackingNumber(line.getTrackingNumber());
|
|
|
|
|
System.out.println("- TrackingNumber"+stockMoveLineLocationLine.getTrackingNumber());
|
|
|
|
|
stockMoveLineLocationLine.setInternalTrackingNumber(line.getInternalTrackingNumber());
|
|
|
|
|
System.out.println("- InternalTrackingNumber"+stockMoveLineLocationLine.getInternalTrackingNumber());
|
|
|
|
|
System.out.println("********************** End updateStockMoveLineLocationLine *********************\n");
|
|
|
|
|
return stockMoveLineLocationLine;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public boolean checkQuantity(StockMoveLine line,List<StockMoveLineStockMoveLineLocation> links ){
|
|
|
|
|
BigDecimal count = BigDecimal.valueOf(0);
|
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : links) {
|
|
|
|
|
count = count.add(link.getQty());
|
|
|
|
|
}
|
|
|
|
|
System.out.println("count : "+count);
|
|
|
|
|
System.out.println("line.getRealQty() : "+line.getRealQty());
|
|
|
|
|
if (count.compareTo(line.getRealQty()) != 0){
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
@Override
|
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
|
public String realize(StockMove stockMove, boolean checkOngoingInventoryFlag)
|
|
|
|
|
@ -437,23 +491,79 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
|
checkExpirationDates(stockMove);
|
|
|
|
|
|
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_INCOMING) {
|
|
|
|
|
System.out.println("************************ TYPE_INCOMING ***********************");
|
|
|
|
|
partnerProductQualityRatingService.calculate(stockMove);
|
|
|
|
|
|
|
|
|
|
stockMove
|
|
|
|
|
.getStockMoveLineList()
|
|
|
|
|
.forEach(
|
|
|
|
|
line -> {
|
|
|
|
|
line.getStockMoveLineLocationSet()
|
|
|
|
|
.forEach(
|
|
|
|
|
st -> {
|
|
|
|
|
st.setBusy(true);
|
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine =
|
|
|
|
|
new StockMoveLineLocationLine();
|
|
|
|
|
stockMoveLineLocationLine.setProduct(line.getProduct());
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
|
if (checkQuantity(line,stockMoveLineLocationLineListTest)) {
|
|
|
|
|
if (stockMoveLineLocationLineListTest.size() > 0) {
|
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = " + line.getProduct() + " AND self.trackingNumber = " + line.getTrackingNumber() + " AND self.stockMoveLineLocation IN (" + link.getStockMoveLineLocation() + ")");
|
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
if (line.getTrackingNumber() == null) {
|
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
}
|
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
|
.filter(query)
|
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
|
.bind("stockMoveLineLocation", link.getStockMoveLineLocation())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList : " + stockMoveLineLocationLineList);
|
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
|
|
|
|
|
|
if (stockMoveLineLocationLineList.size() == 0) {
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()==0 ---> createStockMoveLineLocationLine");
|
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = createStockMoveLineLocationLine(line, link.getQty());
|
|
|
|
|
stockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
stockMoveLineLocationLine.setTrackingNumber(line.getTrackingNumber());
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(stockMoveLineLocationLine);
|
|
|
|
|
});
|
|
|
|
|
} else {
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()==" + stockMoveLineLocationLineList.size() + " ---> updateStockMoveLineLocationLine");
|
|
|
|
|
System.out.println("updateStockMoveLineLocationLine");
|
|
|
|
|
try {
|
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0), stockMove.getTypeSelect(), link.getQty());
|
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
|
}
|
|
|
|
|
System.out.println("-----------------------------\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}else{
|
|
|
|
|
System.out.println("Insuffisant qty");
|
|
|
|
|
try {
|
|
|
|
|
throw new AxelorException(
|
|
|
|
|
TraceBackRepository.CATEGORY_INCONSISTENCY,
|
|
|
|
|
I18n.get(IExceptionMessage.STOCK_MOVE_QTY),
|
|
|
|
|
line.getProduct().getName());
|
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* End Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
Long partnerId = stockMove.getPartner().getId();
|
|
|
|
|
Long familleId = line.getProduct().getFamilleProduit().getId();
|
|
|
|
|
BigDecimal realQty = line.getRealQty();
|
|
|
|
|
@ -492,9 +602,11 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
|
System.out.println("***********************************internal noy null**********************");
|
|
|
|
|
|
|
|
|
|
if (createdDate.equals(estimatedDate)) {
|
|
|
|
|
System.out.println("if (createdDate.equals(estimatedDate))");
|
|
|
|
|
line.setInternalTrackingNumber(internalTrackingNumber);
|
|
|
|
|
stockMoveLineRepo.save(line);
|
|
|
|
|
}else{
|
|
|
|
|
System.out.println("else");
|
|
|
|
|
InternalTrackingNumber internal = internalTrackingNumberService.createInternalTrackingNumber(
|
|
|
|
|
line.getProduct(),
|
|
|
|
|
line.getStockMove().getCompany(),
|
|
|
|
|
@ -507,12 +619,76 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
|
e.printStackTrace(); // Consider logging this instead of printing.
|
|
|
|
|
e.printStackTrace();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING){
|
|
|
|
|
System.out.println("************************ TYPE_OUTGOING ***********************");
|
|
|
|
|
stockMove
|
|
|
|
|
.getStockMoveLineList()
|
|
|
|
|
.forEach(
|
|
|
|
|
line -> {
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
|
if(stockMoveLineLocationLineListTest.size()>0){
|
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = "+line.getProduct()+" AND self.trackingNumber = "+line.getTrackingNumber()+" AND self.stockMoveLineLocation IN ("+link.getStockMoveLineLocation()+")");
|
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
}
|
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
|
.filter(query)
|
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
|
.bind("stockMoveLineLocation", link.getStockMoveLineLocation())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList : "+stockMoveLineLocationLineList);
|
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
|
if(stockMoveLineLocationLineList.size()==0){
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()==0 ---> createStockMoveLineLocationLine");
|
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = createStockMoveLineLocationLine(line,link.getQty());
|
|
|
|
|
stockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(stockMoveLineLocationLine);
|
|
|
|
|
}else{
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()=="+stockMoveLineLocationLineList.size()+" ---> updateStockMoveLineLocationLine");
|
|
|
|
|
System.out.println("updateStockMoveLineLocationLine");
|
|
|
|
|
try {
|
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0),stockMove.getTypeSelect(),link.getQty());
|
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
|
}
|
|
|
|
|
System.out.println("-----------------------------\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
setRealizedStatus(stockMove);
|
|
|
|
|
stockMoveLineService.updateLocations(
|
|
|
|
|
@ -960,6 +1136,7 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
|
stockMove.getEstimatedDate(),
|
|
|
|
|
false);
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
|
|
stockMoveLineService.updateLocations(
|
|
|
|
|
stockMove.getFromStockLocation(),
|
|
|
|
|
stockMove.getToStockLocation(),
|
|
|
|
|
@ -972,6 +1149,131 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
|
stockMove.setRealDate(LocalDateTime.now());
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_INCOMING){
|
|
|
|
|
stockMove
|
|
|
|
|
.getStockMoveLineList()
|
|
|
|
|
.forEach(
|
|
|
|
|
line -> {
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
|
if(stockMoveLineLocationLineListTest.size()>0){
|
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = "+line.getProduct()+" AND self.trackingNumber = "+line.getTrackingNumber()+" AND self.stockMoveLineLocation IN ("+link.getStockMoveLineLocation()+")");
|
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
}
|
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
|
.filter(query)
|
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
|
.bind("stockMoveLineLocation", link.getStockMoveLineLocation())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList : "+stockMoveLineLocationLineList);
|
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
|
if(stockMoveLineLocationLineList.size()==0){
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()==0 ---> createStockMoveLineLocationLine");
|
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = createStockMoveLineLocationLine(line,link.getQty());
|
|
|
|
|
stockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(stockMoveLineLocationLine);
|
|
|
|
|
}else{
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()=="+stockMoveLineLocationLineList.size()+" ---> updateStockMoveLineLocationLine");
|
|
|
|
|
System.out.println("updateStockMoveLineLocationLine");
|
|
|
|
|
try {
|
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0),StockMoveRepository.TYPE_OUTGOING,link.getQty());
|
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
|
}
|
|
|
|
|
System.out.println("-----------------------------\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING){
|
|
|
|
|
stockMove
|
|
|
|
|
.getStockMoveLineList()
|
|
|
|
|
.forEach(
|
|
|
|
|
line -> {
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
|
if(stockMoveLineLocationLineListTest.size()>0){
|
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
|
|
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = "+line.getProduct()+" AND self.trackingNumber = "+line.getTrackingNumber()+" AND self.stockMoveLineLocation IN ("+link.getStockMoveLineLocation()+")");
|
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
|
}
|
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
|
.filter(query)
|
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
|
.bind("stockMoveLineLocation", link.getStockMoveLineLocation())
|
|
|
|
|
.fetch();
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList : "+stockMoveLineLocationLineList);
|
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
|
if(stockMoveLineLocationLineList.size()==0){
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()==0 ---> createStockMoveLineLocationLine");
|
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = createStockMoveLineLocationLine(line,link.getQty());
|
|
|
|
|
stockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(stockMoveLineLocationLine);
|
|
|
|
|
}else{
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()=="+stockMoveLineLocationLineList.size()+" ---> updateStockMoveLineLocationLine");
|
|
|
|
|
System.out.println("updateStockMoveLineLocationLine");
|
|
|
|
|
try {
|
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0),StockMoveRepository.TYPE_INCOMING,link.getQty());
|
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
}
|
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
|
}
|
|
|
|
|
System.out.println("-----------------------------\n");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
stockMove.clearPlannedStockMoveLineList();
|
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_INCOMING
|
|
|
|
|
&& initialStatus == StockMoveRepository.STATUS_REALIZED) {
|
|
|
|
|
|