diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/invoice/AbstractInvoice.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/invoice/AbstractInvoice.java index 4a137384e..50deecae8 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/invoice/AbstractInvoice.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/invoice/AbstractInvoice.java @@ -11,7 +11,6 @@ import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.math.BigDecimal; -import java.nio.file.Files; import java.nio.file.Path; import java.util.Date; import java.util.HashMap; @@ -171,6 +170,7 @@ public abstract class AbstractInvoice { // si le nombre de lignes de data rentre dans 1 page A4 if(data.size() < 44) { + // Fit in A4 page" if(TOTAL_ROW > LAST_ROW + 3) { // s'il ne reste pas assez de place pour le footer // on shift le footer à la page suivante (total + signature etc..) sheet.shiftRows(startRow, fileLastRow, PAGE_ROW_MAX - LAST_ROW - 1, true, false); @@ -186,12 +186,14 @@ public abstract class AbstractInvoice { } else {// on dépasse forcément le format A4 d'un PDF if(((TOTAL_ROW - 44) % 63) < 13) { + // Not enough space for footer sheet.shiftRows(startRow, fileLastRow, TOTAL_ROW - LAST_ROW + ((TOTAL_ROW-44)%63), true, false); footerRow = additionalRowNum + ((TOTAL_ROW-44)%63) + 1; imgShift = TOTAL_ROW-44 + ((TOTAL_ROW-44)%63) -1; TOTAL_ROW += ((TOTAL_ROW-44)%63) + 1; } else { + // Enough space for footer sheet.shiftRows(startRow, fileLastRow, TOTAL_ROW - LAST_ROW, true, false); footerRow = TOTAL_ROW - LAST_ROW +1; } @@ -254,6 +256,7 @@ public abstract class AbstractInvoice { if(data.size() > dataRowNumber) { org.apache.poi.ss.usermodel.Row totalRow; + // Si ça pète c'est surement ici if(additionalRowNum%PAGE_ROW_MAX <= 13) totalRow = sheet.getRow(TOTAL_ROW-1); else @@ -322,18 +325,11 @@ public abstract class AbstractInvoice { totalDueCellStyle.setBorderTop(BorderStyle.THIN); totalDueCellStyle.setFont(arialBold); - if(((LAST_ROW+additionalRowNum - 44) % 63) < 13 && ((LAST_ROW+additionalRowNum - 44) % 63) > 0) { - totalDueRow = sheet.getRow( data.size() < 44 ? PAGE_ROW_MAX + 1 : TOTAL_ROW + 1); - Cell totalDueCell = totalDueRow.createCell(7); - totalDueCell.setCellFormula("H" + (TOTAL_ROW) + "-G" + (TOTAL_ROW)); - totalDueCell.setCellStyle(totalDueCellStyle); - } - else { - totalDueRow = sheet.getRow(data.size() < 44 ? TOTAL_ROW + 1 : TOTAL_ROW + 2); - Cell totalDueCell = totalDueRow.createCell(7); - totalDueCell.setCellFormula("H" + (data.size() < 44 ? TOTAL_ROW : TOTAL_ROW + 1) + "-G" + (data.size() < 44 ? TOTAL_ROW : TOTAL_ROW + 1)); - totalDueCell.setCellStyle(totalDueCellStyle); - } + // Si ça pète c'est pas là + totalDueRow = sheet.getRow( totalRow.getRowNum() + 2); + Cell totalDueCell = totalDueRow.createCell(7); + totalDueCell.setCellFormula("H" + (totalRow.getRowNum() + 1) + "-G" + (totalRow.getRowNum()) + 1); + totalDueCell.setCellStyle(totalDueCellStyle); } if (targetClient.getCurrency().equals("USD")) { diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/logistic/CostTrialCalculation.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/logistic/CostTrialCalculation.java index 9a5cdc5bf..0e6a3f34f 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/logistic/CostTrialCalculation.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/domain/logistic/CostTrialCalculation.java @@ -24,6 +24,9 @@ public class CostTrialCalculation { @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") private final Date effectiveDate; + @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd") + private final Date previousEffectiveDate; + private final BigDecimal unitPrice; private final BigDecimal shippingCost; @@ -44,7 +47,7 @@ public class CostTrialCalculation { private CostTrialCalculation(String countryCode, String logisticsChannelName, String logisticChannelCode, BigDecimal unitPrice, BigDecimal shippingCost, BigDecimal registrationCost, BigDecimal additionalCost, Date effectiveDate, - BigDecimal previousUnitPrice,BigDecimal previousShippingCost, BigDecimal previousRegistrationCost, BigDecimal previousAdditionalCost) { + BigDecimal previousUnitPrice,BigDecimal previousShippingCost, BigDecimal previousRegistrationCost, BigDecimal previousAdditionalCost, Date previousEffectiveDate) { this.countryCode = countryCode; this.logisticsChannelName = logisticsChannelName; this.logisticChannelCode = logisticChannelCode; @@ -57,12 +60,13 @@ public class CostTrialCalculation { this.previousShippingCost = previousShippingCost; this.previousRegistrationCost = previousRegistrationCost; this.previousAdditionalCost = previousAdditionalCost; + this.previousEffectiveDate = previousEffectiveDate; } public CostTrialCalculation(LogisticChannelPrice price, LogisticChannelPrice previousPrice,int weight, String logisticsChannelName, String code) { this(price.getEffectiveCountry(), logisticsChannelName, code, price.getCalUnitPrice(), price.calculateShippingPrice(BigDecimal.valueOf(weight)), price.getRegistrationFee(), price.getAdditionalCost(), price.getEffectiveDate(), - previousPrice.getCalUnitPrice(), previousPrice.calculateShippingPrice(BigDecimal.valueOf(weight)), previousPrice.getRegistrationFee(), previousPrice.getAdditionalCost() + previousPrice.getCalUnitPrice(), previousPrice.calculateShippingPrice(BigDecimal.valueOf(weight)), previousPrice.getRegistrationFee(), previousPrice.getAdditionalCost(), previousPrice.getEffectiveDate() ); } diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/LogisticChannelPriceMapper.java b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/LogisticChannelPriceMapper.java index 955969d8f..72e63e9ac 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/LogisticChannelPriceMapper.java +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/LogisticChannelPriceMapper.java @@ -39,6 +39,11 @@ public interface LogisticChannelPriceMapper extends BaseMapper countryList); + LogisticChannelPrice findPrevious( + @Param("channelName") String channelName, + @Param("date") Date shippingTime, + @Param("trueWeight") BigDecimal weight, + @Param("countryList") List countryList); /** * Find logistic channel price by indicating platform order's shipping time diff --git a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/LogisticChannelPriceMapper.xml b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/LogisticChannelPriceMapper.xml index a36890c23..83cc06ce9 100644 --- a/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/LogisticChannelPriceMapper.xml +++ b/jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/business/mapper/xml/LogisticChannelPriceMapper.xml @@ -33,8 +33,71 @@ AND effective_date <= #{date} AND active = 1 ORDER BY effective_date DESC - LIMIT 2 - + LIMIT 2 + +