use of com.qcadoo.report.api.pdf.HeaderAlignment in project mes by qcadoo.
the class DeliveryReportPdf method createProductsTable.
private void createProductsTable(final Document document, final Entity delivery, final Locale locale) throws DocumentException {
List<Entity> columnsForDeliveries = deliveriesService.getColumnsForDeliveries();
if (!columnsForDeliveries.isEmpty()) {
List<DeliveryProduct> deliveryProducts = deliveryColumnFetcher.getDeliveryProducts(delivery);
Map<DeliveryProduct, Map<String, String>> deliveryProductsColumnValues = deliveryColumnFetcher.getDeliveryProductsColumnValues(deliveryProducts);
List<Entity> filteredColumnsForDeliveries = getDeliveryReportColumns(columnsForDeliveries, deliveryProducts, deliveryProductsColumnValues);
if (!filteredColumnsForDeliveries.isEmpty()) {
List<String> columnsName = Lists.newArrayList();
for (Entity entity : filteredColumnsForDeliveries) {
columnsName.add(entity.getStringField(ColumnForDeliveriesFields.IDENTIFIER));
}
Map<String, HeaderAlignment> alignments = prepareHeaderAlignment(filteredColumnsForDeliveries, locale);
PdfPTable productsTable = pdfHelper.createTableWithHeader(filteredColumnsForDeliveries.size(), prepareProductsTableHeader(document, filteredColumnsForDeliveries, locale), false, pdfHelper.getReportColumnWidths(REPORT_WIDTH, parameterService.getReportColumnWidths(), columnsName), alignments);
for (DeliveryProduct deliveryProduct : deliveryProducts) {
for (Entity columnForDeliveries : filteredColumnsForDeliveries) {
String identifier = columnForDeliveries.getStringField(ColumnForDeliveriesFields.IDENTIFIER);
String alignment = columnForDeliveries.getStringField(ColumnForDeliveriesFields.ALIGNMENT);
String value = deliveryProductsColumnValues.get(deliveryProduct).get(identifier);
prepareProductColumnAlignment(productsTable.getDefaultCell(), ColumnAlignment.parseString(alignment));
productsTable.addCell(new Phrase(value, FontUtils.getDejavuRegular7Dark()));
}
}
addTotalRow(productsTable, locale, columnsName, delivery);
document.add(productsTable);
document.add(Chunk.NEWLINE);
}
}
}
use of com.qcadoo.report.api.pdf.HeaderAlignment in project mes by qcadoo.
the class OrderReportPdf method createProductsTable.
private void createProductsTable(final Document document, final Entity delivery, final Locale locale) throws DocumentException {
List<Entity> columnsForOrders = deliveriesService.getColumnsForOrders();
if (!columnsForOrders.isEmpty()) {
List<Entity> orderedProducts = delivery.getHasManyField(DeliveryFields.ORDERED_PRODUCTS);
Map<Entity, Map<String, String>> orderedProductsColumnValues = orderColumnFetcher.getOrderedProductsColumnValues(orderedProducts);
List<Entity> filteredColumnsForOrders = getOrderReportColumns(columnsForOrders, orderedProducts, orderedProductsColumnValues);
if (!filteredColumnsForOrders.isEmpty()) {
List<String> columnsName = Lists.newArrayList();
for (Entity entity : filteredColumnsForOrders) {
columnsName.add(entity.getStringField(ColumnForOrdersFields.IDENTIFIER));
}
Map<String, HeaderAlignment> alignments = prepareHeaderAlignment(filteredColumnsForOrders, locale);
PdfPTable productsTable = pdfHelper.createTableWithHeader(filteredColumnsForOrders.size(), prepareProductsTableHeader(document, filteredColumnsForOrders, locale), false, pdfHelper.getReportColumnWidths(REPORT_WIDTH, parameterService.getReportColumnWidths(), columnsName), alignments);
boolean showDrawingNumber = checkIfAnyDrawingNumberIsFill(orderedProducts);
for (Entity orderedProduct : orderedProducts) {
for (Entity columnForOrders : filteredColumnsForOrders) {
String identifier = columnForOrders.getStringField(ColumnForOrdersFields.IDENTIFIER);
String alignment = columnForOrders.getStringField(ColumnForOrdersFields.ALIGNMENT);
String value = orderedProductsColumnValues.get(orderedProduct).get(identifier);
if (showDrawingNumber && L_IDENTIFIER_PRODUCT_NAME.equals(identifier)) {
PdfPCell cell = productsTable.getRow(0).getCells()[((int) columnForOrders.getField(ColumnForDeliveriesFields.SUCCESSION)) - 1];
cell.setPhrase(new Phrase(translationService.translate("deliveries.order.report.columnHeader.number", locale) + "\n" + translationService.translate("deliveries.order.report.columnHeader.drawingNumber", locale), FontUtils.getDejavuBold7Dark()));
value += "\n" + Strings.nullToEmpty(orderedProduct.getBelongsToField(OrderedProductFields.PRODUCT).getStringField("drawingNumber"));
}
prepareProductColumnAlignment(productsTable.getDefaultCell(), ColumnAlignment.parseString(alignment));
productsTable.addCell(new Phrase(value, FontUtils.getDejavuRegular7Dark()));
}
}
addTotalRow(productsTable, locale, columnsName, delivery);
document.add(productsTable);
}
}
}
use of com.qcadoo.report.api.pdf.HeaderAlignment in project mes by qcadoo.
the class MaterialRequirementPdfService method addDataSeries.
private void addDataSeries(final Document document, final Entity materialRequirement, final Map<String, HeaderAlignment> headersWithAlignments) throws DocumentException {
List<Entity> orders = materialRequirement.getManyToManyField(MaterialRequirementFields.ORDERS);
MrpAlgorithm algorithm = MrpAlgorithm.parseString(materialRequirement.getStringField(MaterialRequirementFields.MRP_ALGORITHM));
Map<Long, BigDecimal> neededProductQuantities = basicProductionCountingService.getNeededProductQuantities(orders, algorithm);
List<String> headers = Lists.newLinkedList(headersWithAlignments.keySet());
PdfPTable table = pdfHelper.createTableWithHeader(headersWithAlignments.size(), headers, true, defaultOrderHeaderColumnWidth, headersWithAlignments);
List<Entity> products = dataDefinitionService.get(BasicConstants.PLUGIN_IDENTIFIER, BasicConstants.MODEL_PRODUCT).find().add(SearchRestrictions.in("id", neededProductQuantities.keySet())).list().getEntities();
products.sort(Comparator.comparing(p -> p.getStringField(ProductFields.NUMBER)));
for (Entity product : products) {
table.addCell(new Phrase(product.getStringField(ProductFields.NUMBER), FontUtils.getDejavuRegular7Dark()));
table.addCell(new Phrase(product.getStringField(ProductFields.NAME), FontUtils.getDejavuRegular7Dark()));
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
table.addCell(new Phrase(numberService.format(neededProductQuantities.get(product.getId())), FontUtils.getDejavuBold7Dark()));
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_LEFT);
String unit = product.getStringField(ProductFields.UNIT);
if (Objects.isNull(unit)) {
table.addCell(new Phrase("", FontUtils.getDejavuRegular7Dark()));
} else {
table.addCell(new Phrase(unit, FontUtils.getDejavuRegular7Dark()));
}
}
document.add(table);
}
use of com.qcadoo.report.api.pdf.HeaderAlignment in project mes by qcadoo.
the class OrderReportPdf method addTableToDocument.
private void addTableToDocument(final Document document, final Locale locale, final String headerKey, final Map<String, String> values) throws DocumentException {
document.add(new Paragraph(translationService.translate(headerKey, locale), FontUtils.getDejavuBold10Dark()));
Map<String, HeaderAlignment> headerValues = Maps.newLinkedHashMap();
for (String key : values.keySet()) {
headerValues.put(translationService.translate(String.format(L_TRANSLATION_PATH, key), locale), HeaderAlignment.LEFT);
}
PdfPTable table = pdfHelper.createTableWithHeader(values.size(), Lists.newArrayList(headerValues.keySet()), false, headerValues);
table.getDefaultCell().disableBorderSide(PdfPCell.RIGHT);
table.getDefaultCell().disableBorderSide(PdfPCell.LEFT);
table.setHeaderRows(1);
for (String value : values.values()) {
table.addCell(createCell(value, Element.ALIGN_LEFT));
}
table.setSpacingAfter(20);
document.add(table);
}
use of com.qcadoo.report.api.pdf.HeaderAlignment in project mes by qcadoo.
the class OfferReportPdf method prepareHeaderAlignment.
private Map<String, HeaderAlignment> prepareHeaderAlignment(List<Entity> filteredColumnsForDeliveries, Locale locale) {
Map<String, HeaderAlignment> alignments = Maps.newHashMap();
for (Entity column : filteredColumnsForDeliveries) {
String alignment = column.getStringField(ColumnForDeliveriesFields.ALIGNMENT);
HeaderAlignment headerAlignment = HeaderAlignment.RIGHT;
if (ColumnAlignment.LEFT.equals(ColumnAlignment.parseString(alignment))) {
headerAlignment = HeaderAlignment.LEFT;
} else if (ColumnAlignment.RIGHT.equals(ColumnAlignment.parseString(alignment))) {
headerAlignment = HeaderAlignment.RIGHT;
}
alignments.put(prepareHeaderTranslation(column.getStringField(ColumnForDeliveriesFields.NAME), locale), headerAlignment);
}
return alignments;
}
Aggregations