|
|
|
@ -44,7 +44,9 @@ import com.axelor.apps.stock.db.StockConfig;
|
|
|
|
import com.axelor.apps.stock.db.StockLocation;
|
|
|
|
import com.axelor.apps.stock.db.StockLocation;
|
|
|
|
import com.axelor.apps.stock.db.StockMove;
|
|
|
|
import com.axelor.apps.stock.db.StockMove;
|
|
|
|
import com.axelor.apps.stock.db.StockMoveLine;
|
|
|
|
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.StockMoveLineLocationLine;
|
|
|
|
|
|
|
|
import com.axelor.apps.stock.db.StockMoveLineStockMoveLineLocation;
|
|
|
|
import com.axelor.apps.stock.db.repo.*;
|
|
|
|
import com.axelor.apps.stock.db.repo.*;
|
|
|
|
import com.axelor.apps.stock.exception.IExceptionMessage;
|
|
|
|
import com.axelor.apps.stock.exception.IExceptionMessage;
|
|
|
|
import com.axelor.apps.stock.report.IReport;
|
|
|
|
import com.axelor.apps.stock.report.IReport;
|
|
|
|
@ -64,14 +66,7 @@ import java.lang.invoke.MethodHandles;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDate;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.*;
|
|
|
|
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.stream.Collectors;
|
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
|
|
|
|
import javax.persistence.Query;
|
|
|
|
import javax.persistence.Query;
|
|
|
|
@ -398,12 +393,12 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
public StockMoveLineLocationLine createStockMoveLineLocationLine(StockMoveLine line){
|
|
|
|
public StockMoveLineLocationLine createStockMoveLineLocationLine(StockMoveLine line,BigDecimal qty){
|
|
|
|
System.out.println("************************* Start createStockMoveLineLocationLine *************************");
|
|
|
|
System.out.println("************************* Start createStockMoveLineLocationLine *************************");
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = new StockMoveLineLocationLine();
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = new StockMoveLineLocationLine();
|
|
|
|
stockMoveLineLocationLine.setProduct(line.getProduct());
|
|
|
|
stockMoveLineLocationLine.setProduct(line.getProduct());
|
|
|
|
System.out.println("- Product : "+stockMoveLineLocationLine.getProduct());
|
|
|
|
System.out.println("- Product : "+stockMoveLineLocationLine.getProduct());
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().add(line.getRealQty()));
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().add(qty));
|
|
|
|
System.out.println("- RealQty : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
System.out.println("- RealQty : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
System.out.println("- StockMoveLineLocation : "+stockMoveLineLocationLine.getStockMoveLineLocation());
|
|
|
|
System.out.println("- StockMoveLineLocation : "+stockMoveLineLocationLine.getStockMoveLineLocation());
|
|
|
|
stockMoveLineLocationLine.setTrackingNumber(line.getTrackingNumber());
|
|
|
|
stockMoveLineLocationLine.setTrackingNumber(line.getTrackingNumber());
|
|
|
|
@ -415,7 +410,7 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
public StockMoveLineLocationLine updateStockMoveLineLocationLine(StockMoveLine line,StockMoveLineLocationLine stockMoveLineLocationLine,Integer typeSelect) throws AxelorException {
|
|
|
|
public StockMoveLineLocationLine updateStockMoveLineLocationLine(StockMoveLine line,StockMoveLineLocationLine stockMoveLineLocationLine,Integer typeSelect,BigDecimal qty) throws AxelorException {
|
|
|
|
System.out.println("\n********************** updateStockMoveLineLocationLine **********************");
|
|
|
|
System.out.println("\n********************** updateStockMoveLineLocationLine **********************");
|
|
|
|
|
|
|
|
|
|
|
|
stockMoveLineLocationLine.setProduct(line.getProduct());
|
|
|
|
stockMoveLineLocationLine.setProduct(line.getProduct());
|
|
|
|
@ -424,12 +419,15 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
System.out.println("- Before RealQty : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
System.out.println("- Before RealQty : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
if(typeSelect == StockMoveRepository.TYPE_INCOMING) {
|
|
|
|
if(typeSelect == StockMoveRepository.TYPE_INCOMING) {
|
|
|
|
System.out.println("TYPE_INCOMING");
|
|
|
|
System.out.println("TYPE_INCOMING");
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().add(line.getRealQty()));
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().add(qty));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (typeSelect == StockMoveRepository.TYPE_OUTGOING) {
|
|
|
|
if (typeSelect == StockMoveRepository.TYPE_OUTGOING) {
|
|
|
|
System.out.println("TYPE_OUTGOING");
|
|
|
|
System.out.println("TYPE_OUTGOING");
|
|
|
|
if(stockMoveLineLocationLine.getRealQty().compareTo(line.getRealQty()) >= 0){
|
|
|
|
System.out.println("stockMoveLineLocationLine.getRealQty() : "+stockMoveLineLocationLine.getRealQty());
|
|
|
|
stockMoveLineLocationLine.setRealQty(stockMoveLineLocationLine.getRealQty().subtract(line.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{
|
|
|
|
}else{
|
|
|
|
throw new AxelorException(
|
|
|
|
throw new AxelorException(
|
|
|
|
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
|
|
|
TraceBackRepository.CATEGORY_CONFIGURATION_ERROR,
|
|
|
|
@ -446,6 +444,19 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
System.out.println("********************** End updateStockMoveLineLocationLine *********************\n");
|
|
|
|
System.out.println("********************** End updateStockMoveLineLocationLine *********************\n");
|
|
|
|
return stockMoveLineLocationLine;
|
|
|
|
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
|
|
|
|
@Override
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
@Transactional(rollbackOn = {Exception.class})
|
|
|
|
public String realize(StockMove stockMove, boolean checkOngoingInventoryFlag)
|
|
|
|
public String realize(StockMove stockMove, boolean checkOngoingInventoryFlag)
|
|
|
|
@ -488,43 +499,70 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
line -> {
|
|
|
|
line -> {
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
line.getStockMoveLineLocationSet()
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
.forEach(
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
st -> {
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = "+line.getProduct()+" AND self.trackingNumber = "+line.getTrackingNumber()+" AND self.stockMoveLineLocation IN ("+line.getStockMoveLineLocationSet()+")");
|
|
|
|
.fetch();
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
}
|
|
|
|
if (checkQuantity(line,stockMoveLineLocationLineListTest)) {
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
if (stockMoveLineLocationLineListTest.size() > 0) {
|
|
|
|
.filter(query)
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
.bind("stockMoveLineLocation", line.getStockMoveLineLocationSet())
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
.fetch();
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
int stockMoveLineLocationLineListSize = stockMoveLineLocationLineList.size();
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
System.out.println("stockMoveLineLocationLineList : "+stockMoveLineLocationLineList);
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
for (StockMoveLineLocationLine stockMoveLineLocationLine : stockMoveLineLocationLineList){
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
System.out.println("\nstockMoveLineLocationLine : "+stockMoveLineLocationLine);
|
|
|
|
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 (stockMoveLineLocationLineListSize < 1){
|
|
|
|
if (line.getTrackingNumber() == null) {
|
|
|
|
StockMoveLineLocationLine stockMoveLineLocationLine = createStockMoveLineLocationLine(line);
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
stockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
}
|
|
|
|
st.addStockMoveLineLocationLineSetItem(stockMoveLineLocationLine);
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
System.out.println("stockMoveLineLocationLine : "+stockMoveLineLocationLine);
|
|
|
|
.filter(query)
|
|
|
|
}else {
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
if (stockMoveLineLocationLineListSize == 1){
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
.bind("stockMoveLineLocation", link.getStockMoveLineLocation())
|
|
|
|
try {
|
|
|
|
.fetch();
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0),stockMove.getTypeSelect());
|
|
|
|
System.out.println("stockMoveLineLocationLineList : " + stockMoveLineLocationLineList);
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
|
|
|
|
}
|
|
|
|
if (stockMoveLineLocationLineList.size() == 0) {
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
System.out.println("stockMoveLineLocationLineList.size()==0 ---> createStockMoveLineLocationLine");
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
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");
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}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 *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* End Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
Long partnerId = stockMove.getPartner().getId();
|
|
|
|
Long partnerId = stockMove.getPartner().getId();
|
|
|
|
Long familleId = line.getProduct().getFamilleProduit().getId();
|
|
|
|
Long familleId = line.getProduct().getFamilleProduit().getId();
|
|
|
|
@ -581,49 +619,73 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
e.printStackTrace(); // Consider logging this instead of printing.
|
|
|
|
e.printStackTrace();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING){
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING){
|
|
|
|
|
|
|
|
System.out.println("************************ TYPE_OUTGOING ***********************");
|
|
|
|
stockMove
|
|
|
|
stockMove
|
|
|
|
.getStockMoveLineList()
|
|
|
|
.getStockMoveLineList()
|
|
|
|
.forEach(
|
|
|
|
.forEach(
|
|
|
|
line -> {
|
|
|
|
line -> {
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
line.getStockMoveLineLocationSet()
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
.forEach(
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
st -> {
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
.fetch();
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
}
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = "+line.getProduct()+" AND self.trackingNumber = "+line.getTrackingNumber()+" AND self.stockMoveLineLocation IN ("+line.getStockMoveLineLocationSet()+")");
|
|
|
|
if(stockMoveLineLocationLineListTest.size()>0){
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
.filter(query)
|
|
|
|
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
.bind("stockMoveLineLocation", line.getStockMoveLineLocationSet())
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
.fetch();
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
int stockMoveLineLocationLineListSize = stockMoveLineLocationLineList.size();
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
System.out.println("stockMoveLineLocationLineList : "+stockMoveLineLocationLineList);
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
for (StockMoveLineLocationLine stockMoveLineLocationLine : stockMoveLineLocationLineList){
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
System.out.println("\nstockMoveLineLocationLine : "+stockMoveLineLocationLine);
|
|
|
|
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 (stockMoveLineLocationLineListSize == 1){
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
try {
|
|
|
|
}
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0),stockMove.getTypeSelect());
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
.filter(query)
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
}
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
.bind("stockMoveLineLocation", link.getStockMoveLineLocation())
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
.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("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
@ -1093,39 +1155,60 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
.forEach(
|
|
|
|
.forEach(
|
|
|
|
line -> {
|
|
|
|
line -> {
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : " + line.getStockMoveLineLocationSet());
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
line.getStockMoveLineLocationSet()
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
.forEach(
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
st -> {
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
.fetch();
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
}
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = "+line.getProduct()+" AND self.trackingNumber = "+line.getTrackingNumber()+" AND self.stockMoveLineLocation IN ("+line.getStockMoveLineLocationSet()+")");
|
|
|
|
if(stockMoveLineLocationLineListTest.size()>0){
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
.filter(query)
|
|
|
|
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
|
|
|
|
.bind("stockMoveLineLocation", line.getStockMoveLineLocationSet())
|
|
|
|
|
|
|
|
.fetch();
|
|
|
|
|
|
|
|
int stockMoveLineLocationLineListSize = stockMoveLineLocationLineList.size();
|
|
|
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList : " + stockMoveLineLocationLineList);
|
|
|
|
|
|
|
|
for (StockMoveLineLocationLine stockMoveLineLocationLine : stockMoveLineLocationLineList) {
|
|
|
|
|
|
|
|
System.out.println("\nstockMoveLineLocationLine : " + stockMoveLineLocationLine);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (stockMoveLineLocationLineListSize == 1) {
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
try {
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0), StockMoveRepository.TYPE_OUTGOING);
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
}
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
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()+")");
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
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)";
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* End Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
}
|
|
|
|
|
|
|
|
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){
|
|
|
|
if (stockMove.getTypeSelect() == StockMoveRepository.TYPE_OUTGOING){
|
|
|
|
@ -1134,39 +1217,60 @@ public class StockMoveServiceImpl implements StockMoveService {
|
|
|
|
.forEach(
|
|
|
|
.forEach(
|
|
|
|
line -> {
|
|
|
|
line -> {
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* Start Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : " + line.getStockMoveLineLocationSet());
|
|
|
|
System.out.println("line.getStockMoveLineLocationSet() : "+line.getStockMoveLineLocationSet());
|
|
|
|
line.getStockMoveLineLocationSet()
|
|
|
|
List<StockMoveLineStockMoveLineLocation> stockMoveLineLocationLineListTest = Beans.get(StockMoveLineStockMoveLineLocationRepository.class).all()
|
|
|
|
.forEach(
|
|
|
|
.filter("self.stockMoveLine = :stockMoveLine ")
|
|
|
|
st -> {
|
|
|
|
.bind("stockMoveLine", line.getId())
|
|
|
|
String query = "self.product = :product AND self.trackingNumber = :trackingNumber AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
.fetch();
|
|
|
|
if (line.getTrackingNumber() == null){
|
|
|
|
System.out.println("***********************************************************************");
|
|
|
|
query = "self.product = :product AND (self.trackingNumber = :trackingNumber OR self.trackingNumber IS NULL) AND self.stockMoveLineLocation IN (:stockMoveLineLocation)";
|
|
|
|
System.out.println("\n\n\n");
|
|
|
|
}
|
|
|
|
System.out.println("stockMoveLineLocationLineListTest : "+stockMoveLineLocationLineListTest);
|
|
|
|
System.out.println("SELECT * FROM Stock_Move_Line_Location_Line WHERE product = "+line.getProduct()+" AND self.trackingNumber = "+line.getTrackingNumber()+" AND self.stockMoveLineLocation IN ("+line.getStockMoveLineLocationSet()+")");
|
|
|
|
if(stockMoveLineLocationLineListTest.size()>0){
|
|
|
|
List<StockMoveLineLocationLine> stockMoveLineLocationLineList = Beans.get(StockMoveLineLocationLineRepository.class).all()
|
|
|
|
List<StockMoveLineLocation> stockMoveLineLocations = new ArrayList<>();
|
|
|
|
.filter(query)
|
|
|
|
|
|
|
|
.bind("product", line.getProduct())
|
|
|
|
|
|
|
|
.bind("trackingNumber", line.getTrackingNumber())
|
|
|
|
|
|
|
|
.bind("stockMoveLineLocation", line.getStockMoveLineLocationSet())
|
|
|
|
|
|
|
|
.fetch();
|
|
|
|
|
|
|
|
int stockMoveLineLocationLineListSize = stockMoveLineLocationLineList.size();
|
|
|
|
|
|
|
|
System.out.println("stockMoveLineLocationLineList : " + stockMoveLineLocationLineList);
|
|
|
|
|
|
|
|
for (StockMoveLineLocationLine stockMoveLineLocationLine : stockMoveLineLocationLineList) {
|
|
|
|
|
|
|
|
System.out.println("\nstockMoveLineLocationLine : " + stockMoveLineLocationLine);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (stockMoveLineLocationLineListSize == 1) {
|
|
|
|
System.out.println("-----------------------------");
|
|
|
|
StockMoveLineLocationLine newStockMoveLineLocationLine = null;
|
|
|
|
for (StockMoveLineStockMoveLineLocation link : stockMoveLineLocationLineListTest) {
|
|
|
|
try {
|
|
|
|
System.out.println("ID: " + link.getId());
|
|
|
|
newStockMoveLineLocationLine = updateStockMoveLineLocationLine(line, stockMoveLineLocationLineList.get(0), StockMoveRepository.TYPE_INCOMING);
|
|
|
|
System.out.println("StockMoveLine ID: " + (link.getStockMoveLine() != null ? link.getStockMoveLine().getId() : "null"));
|
|
|
|
} catch (AxelorException e) {
|
|
|
|
System.out.println("StockMoveLineLocation ID: " + (link.getStockMoveLineLocation() != null ? link.getStockMoveLineLocation().getId() : "null"));
|
|
|
|
throw new RuntimeException(e);
|
|
|
|
StockMoveLineLocation st = link.getStockMoveLineLocation();
|
|
|
|
}
|
|
|
|
System.out.println("Quantity: " + link.getQty());
|
|
|
|
newStockMoveLineLocationLine.setStockMoveLineLocation(st);
|
|
|
|
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()+")");
|
|
|
|
st.addStockMoveLineLocationLineSetItem(newStockMoveLineLocationLine);
|
|
|
|
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)";
|
|
|
|
System.out.println("*-*-*-*-*-*-*-*-*-*-*-*-*-* End Mapping StockMoveLineLocationSet *-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
}
|
|
|
|
|
|
|
|
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("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|