mirror of https://github.com/jeecgboot/jeecg-boot
Merge pull request #136 from LQYBill/hotfix/fixUSD
hotfix: invoice excel and pdf for USD complete invoicepull/8040/head
commit
e6e9db6cf9
|
@ -1262,7 +1262,7 @@ public class InvoiceController {
|
|||
} catch (IOException e) {
|
||||
log.error(e.getMessage());
|
||||
return Result.error("Sorry, server error, please try later");
|
||||
} catch (URISyntaxException e) {
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -195,11 +195,13 @@ public abstract class AbstractInvoice<E, F, G, H, I> {
|
|||
}
|
||||
}
|
||||
else {// on dépasse forcément le format A4 d'un PDF
|
||||
if(((TOTAL_ROW - 44) % 63) < 13) {
|
||||
if(((TOTAL_ROW - 44) % 63) < 16) {
|
||||
int dataSizeAfterFirstPage = data.size() - 44;
|
||||
int shift = (int) Math.ceil((double) (dataSizeAfterFirstPage) / 63) * 63; // we shift the footer to the next page
|
||||
// Not enough space for footer
|
||||
sheet.shiftRows(startRow, fileLastRow, TOTAL_ROW - LAST_ROW + ((TOTAL_ROW-44)%63), true, false);
|
||||
imgShift = TOTAL_ROW-44 + ((TOTAL_ROW-44)%63) -1;
|
||||
TOTAL_ROW += ((TOTAL_ROW-44)%63) + 1;
|
||||
sheet.shiftRows(startRow, fileLastRow, shift + 20, true, false); // why 20 ? no idea, it just works
|
||||
imgShift = shift + 16; // 16 is the number of lines of footer
|
||||
TOTAL_ROW = 63 + shift; // we just yeet the total row to next page
|
||||
footerRow = TOTAL_ROW+1;
|
||||
situation = 4;
|
||||
}
|
||||
|
@ -256,7 +258,7 @@ public abstract class AbstractInvoice<E, F, G, H, I> {
|
|||
for (int i = 0; i < data.size(); i++) {
|
||||
lineNum = i + FIRST_ROW;
|
||||
rowValue = data.get(i);
|
||||
log.info("Writing line {} with data {}", lineNum, rowValue);
|
||||
// log.info("Writing line {} with data {}", lineNum, rowValue);
|
||||
configCell("C", lineNum, String.format("%06d", i + 1), factory.leftSideStyle());
|
||||
configCell("D", lineNum, rowValue.getCol1(), factory.leftSideStyle());
|
||||
configCell("E", lineNum, rowValue.getCol2(), factory.rightSideDecimalStyle());
|
||||
|
@ -342,15 +344,8 @@ public abstract class AbstractInvoice<E, F, G, H, I> {
|
|||
|
||||
if (targetClient.getCurrency().equals("USD")) {
|
||||
org.apache.poi.ss.usermodel.Row dollarRow;
|
||||
String formula;
|
||||
if ((((LAST_ROW + additionalRowNum - 44) % 63) < 13) && ((LAST_ROW + additionalRowNum - 44) % 63) > 0) {
|
||||
dollarRow = sheet.getRow(TOTAL_ROW + 2);
|
||||
formula = "H"+ (TOTAL_ROW + 2) +" *" + exchangeRate;
|
||||
}
|
||||
else {
|
||||
dollarRow = sheet.getRow(data.size() >= 44 ? TOTAL_ROW + 3 : TOTAL_ROW + 2);
|
||||
formula = "H" + (data.size() >= 44 ? TOTAL_ROW + 3 : TOTAL_ROW + 2) + " *" + exchangeRate;
|
||||
}
|
||||
dollarRow = sheet.getRow(TOTAL_ROW + 2);
|
||||
String formula = "H"+ (TOTAL_ROW + 2) +" *" + exchangeRate;
|
||||
Cell dollarCell = dollarRow.createCell(7); // column H
|
||||
CellStyle cellStyle = factory.getWorkbook().createCellStyle();
|
||||
DataFormat format = factory.getWorkbook().createDataFormat();
|
||||
|
|
|
@ -107,7 +107,7 @@ public interface IPurchaseOrderService extends IService<PurchaseOrder> {
|
|||
* @throws IOException IO error while reading the file.
|
||||
*/
|
||||
InvoiceMetaData makeInvoice(String purchaseID) throws IOException, URISyntaxException, UserException;
|
||||
InvoiceMetaData makeInvoiceTest(int nbOfLines) throws IOException, URISyntaxException, UserException;
|
||||
InvoiceMetaData makeInvoiceTest(int nbOfLines) throws Exception;
|
||||
|
||||
byte[] getInvoiceByte(String invoiceCode) throws IOException;
|
||||
|
||||
|
|
|
@ -988,6 +988,7 @@ public class PlatformOrderShippingInvoiceService {
|
|||
public InvoiceMetaData makeCompleteInvoiceTest(int nbOfLines) throws Exception {
|
||||
// Creates invoice by factory
|
||||
Client client = clientService.getClientBySku("TEST");
|
||||
client.setCurrency("USD");
|
||||
Map<PlatformOrder, List<PlatformOrderContent>> ordersToContent = new HashMap<>();
|
||||
List<SavRefundWithDetail> savRefunds = new ArrayList<>();
|
||||
List<ExtraFeeResult> extraFees = new ArrayList<>();
|
||||
|
@ -1025,8 +1026,11 @@ public class PlatformOrderShippingInvoiceService {
|
|||
|
||||
CompleteInvoice invoice = new CompleteInvoice(client, invoiceCode, "Test subject", ordersToContent, savRefunds, extraFees, purchaseInvoiceEntries, promotionDetails, exchangeRate);
|
||||
Path src;
|
||||
// src = Paths.get(COMPLETE_INVOICE_TEMPLATE_US);
|
||||
src = Paths.get(COMPLETE_INVOICE_TEMPLATE_EU);
|
||||
if(client.getCurrency().equals("USD")) {
|
||||
src = Paths.get(COMPLETE_INVOICE_TEMPLATE_US);
|
||||
} else {
|
||||
src = Paths.get(COMPLETE_INVOICE_TEMPLATE_EU);
|
||||
}
|
||||
|
||||
// Writes invoice content to a new excel file
|
||||
String filename = "Complete invoice N°" + invoice.code() + " (" + invoice.client().getInvoiceEntity() + ") _" + nbOfLines + ".xlsx";
|
||||
|
@ -1060,6 +1064,7 @@ public class PlatformOrderShippingInvoiceService {
|
|||
int maxRow = cells.getMaxDataRow();
|
||||
PageSetup pageSetup = sheet.getPageSetup();
|
||||
// Setting the number of pages to which the length of the worksheet will
|
||||
System.out.println("maxRow : " + maxRow);
|
||||
if(maxRow < 63) {
|
||||
// be spanned
|
||||
pageSetup.setFitToPagesTall(1);
|
||||
|
@ -1067,6 +1072,10 @@ public class PlatformOrderShippingInvoiceService {
|
|||
// Setting the number of pages to which the width of the worksheet will be spanned
|
||||
pageSetup.setFitToPagesWide(1);
|
||||
}
|
||||
else {
|
||||
pageSetup.setFitToPagesTall((int) Math.ceil((double) maxRow /63));
|
||||
pageSetup.setFitToPagesWide(1);
|
||||
}
|
||||
// On enregistre le document au format PDF
|
||||
workbook.save(pdfFilePath, saveOptions);
|
||||
}
|
||||
|
|
|
@ -60,9 +60,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
|
|||
@Autowired
|
||||
private PlatformOrderMapper platformOrderMapper;
|
||||
@Autowired
|
||||
private IPlatformOrderContentService platformOrderContentService;
|
||||
@Autowired
|
||||
private IShippingInvoiceService shippingInvoiceService;
|
||||
private PlatformOrderShippingInvoiceService platformOrderShippingInvoiceService;
|
||||
@Autowired
|
||||
private ISkuService skuService;
|
||||
@Autowired
|
||||
|
@ -559,7 +557,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
|
|||
return new InvoiceMetaData(filename,invoiceCode, pv.client().getInternalCode(), pv.client().getInvoiceEntity(), "");
|
||||
}
|
||||
@Override
|
||||
public InvoiceMetaData makeInvoiceTest(int nbOfLines) throws IOException, UserException {
|
||||
public InvoiceMetaData makeInvoiceTest(int nbOfLines) throws Exception {
|
||||
Client client = clientService.getClientBySku("test");
|
||||
List<PurchaseInvoiceEntry> purchaseOrderSkuList = new ArrayList<>();
|
||||
// -5 because we have at least 5 lines of promotions
|
||||
|
@ -570,7 +568,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
|
|||
for(int i = 0; i < 5; i++) {
|
||||
promotionDetails.add(new PromotionDetail(1, BigDecimal.valueOf(0.5), "Test Promotion " + i));
|
||||
}
|
||||
String invoiceCode = "P-TEST-CODE-" + nbOfLines;
|
||||
String invoiceCode = "PI-TEST-1" + nbOfLines;
|
||||
BigDecimal eurToUsd = exchangeRatesMapper.getLatestExchangeRate("EUR", "USD");
|
||||
|
||||
String filename = "Invoice N°" + invoiceCode + " (" + client.getInvoiceEntity() + ")_" + nbOfLines + ".xlsx";
|
||||
|
@ -579,6 +577,7 @@ public class PurchaseOrderServiceImpl extends ServiceImpl<PurchaseOrderMapper, P
|
|||
Files.copy(template, newInvoice, StandardCopyOption.REPLACE_EXISTING);
|
||||
PurchaseInvoice pv = new PurchaseInvoice(client, invoiceCode, "Purchase Invoice", purchaseOrderSkuList, promotionDetails, eurToUsd);
|
||||
pv.toExcelFile(newInvoice);
|
||||
platformOrderShippingInvoiceService.convertToPdfTest(invoiceCode, "invoice");
|
||||
return new InvoiceMetaData(filename,invoiceCode, pv.client().getInternalCode(), pv.client().getInvoiceEntity(), "");
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue