Search in sources :

Example 16 with HeaderAlignment

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);
        }
    }
}
Also used : Entity(com.qcadoo.model.api.Entity) PdfPTable(com.lowagie.text.pdf.PdfPTable) HeaderAlignment(com.qcadoo.report.api.pdf.HeaderAlignment)

Example 17 with HeaderAlignment

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);
        }
    }
}
Also used : Entity(com.qcadoo.model.api.Entity) PdfPCell(com.lowagie.text.pdf.PdfPCell) PdfPTable(com.lowagie.text.pdf.PdfPTable) HeaderAlignment(com.qcadoo.report.api.pdf.HeaderAlignment)

Example 18 with HeaderAlignment

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);
}
Also used : DataDefinitionService(com.qcadoo.model.api.DataDefinitionService) Date(java.util.Date) Autowired(org.springframework.beans.factory.annotation.Autowired) OrderFields(com.qcadoo.mes.orders.constants.OrderFields) StringUtils(org.apache.commons.lang3.StringUtils) PdfPTable(com.lowagie.text.pdf.PdfPTable) DateUtils(com.qcadoo.localization.api.utils.DateUtils) PdfDocumentService(com.qcadoo.report.api.pdf.PdfDocumentService) BigDecimal(java.math.BigDecimal) Element(com.lowagie.text.Element) Lists(com.google.common.collect.Lists) Phrase(com.lowagie.text.Phrase) MrpAlgorithm(com.qcadoo.mes.technologies.constants.MrpAlgorithm) PdfHelper(com.qcadoo.report.api.pdf.PdfHelper) Locale(java.util.Locale) Service(org.springframework.stereotype.Service) BasicConstants(com.qcadoo.mes.basic.constants.BasicConstants) Map(java.util.Map) BasicProductionCountingService(com.qcadoo.mes.basicProductionCounting.BasicProductionCountingService) MaterialFlowResourcesService(com.qcadoo.mes.materialFlowResources.MaterialFlowResourcesService) SearchRestrictions(com.qcadoo.model.api.search.SearchRestrictions) FontUtils(com.qcadoo.report.api.FontUtils) Paragraph(com.lowagie.text.Paragraph) WarehouseDateKey(com.qcadoo.mes.materialRequirements.print.WarehouseDateKey) DocumentException(com.lowagie.text.DocumentException) TranslationService(com.qcadoo.localization.api.TranslationService) Maps(com.google.common.collect.Maps) Document(com.lowagie.text.Document) Objects(java.util.Objects) List(java.util.List) Entity(com.qcadoo.model.api.Entity) MaterialRequirementFields(com.qcadoo.mes.materialRequirements.constants.MaterialRequirementFields) MaterialRequirementEntry(com.qcadoo.mes.materialRequirements.print.MaterialRequirementEntry) NumberService(com.qcadoo.model.api.NumberService) ProductFields(com.qcadoo.mes.basic.constants.ProductFields) PdfCell(com.lowagie.text.pdf.PdfCell) MaterialRequirementDataService(com.qcadoo.mes.materialRequirements.print.MaterialRequirementDataService) Comparator(java.util.Comparator) Collections(java.util.Collections) EntityOrderNumberComparator(com.qcadoo.mes.materialRequirements.util.EntityOrderNumberComparator) HeaderAlignment(com.qcadoo.report.api.pdf.HeaderAlignment) Entity(com.qcadoo.model.api.Entity) PdfPTable(com.lowagie.text.pdf.PdfPTable) Phrase(com.lowagie.text.Phrase) MrpAlgorithm(com.qcadoo.mes.technologies.constants.MrpAlgorithm) BigDecimal(java.math.BigDecimal)

Example 19 with HeaderAlignment

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);
}
Also used : PdfPTable(com.lowagie.text.pdf.PdfPTable) HeaderAlignment(com.qcadoo.report.api.pdf.HeaderAlignment)

Example 20 with HeaderAlignment

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;
}
Also used : Entity(com.qcadoo.model.api.Entity) HeaderAlignment(com.qcadoo.report.api.pdf.HeaderAlignment)

Aggregations

HeaderAlignment (com.qcadoo.report.api.pdf.HeaderAlignment)23 PdfPTable (com.lowagie.text.pdf.PdfPTable)16 Entity (com.qcadoo.model.api.Entity)16 Map (java.util.Map)7 PdfPCell (com.lowagie.text.pdf.PdfPCell)5 ArrayList (java.util.ArrayList)5 Phrase (com.lowagie.text.Phrase)4 Date (java.util.Date)4 Paragraph (com.lowagie.text.Paragraph)3 ColumnAlignment (com.qcadoo.mes.columnExtension.constants.ColumnAlignment)3 HashMap (java.util.HashMap)3 List (java.util.List)3 Lists (com.google.common.collect.Lists)2 Maps (com.google.common.collect.Maps)2 Document (com.lowagie.text.Document)2 DocumentException (com.lowagie.text.DocumentException)2 Element (com.lowagie.text.Element)2 TranslationService (com.qcadoo.localization.api.TranslationService)2 ProductFields (com.qcadoo.mes.basic.constants.ProductFields)2 DataDefinitionService (com.qcadoo.model.api.DataDefinitionService)2