From f01bce79b84994d4a76fe69ae13b6ad71f68cdc1 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Wed, 16 Feb 2022 20:20:09 +0000 Subject: [PATCH] --- server/AyaNova/resource/de.json | 81 ------------------ server/AyaNova/resource/en.json | 83 +------------------ server/AyaNova/resource/es.json | 81 ------------------ server/AyaNova/resource/fr.json | 81 ------------------ ... Taxes LineTotals for each PM Expense.ayrt | 2 +- ...ts Taxes LineTotals for each PM Labor.ayrt | 2 +- ...ts Taxes LineTotals for each PM Loans.ayrt | 2 +- ...ets Taxes LineTotals for each PM Part.ayrt | 2 +- ...s Taxes LineTotals for each PM Travel.ayrt | 2 +- .../Outside Service via PMs.ayrt | 2 +- .../PM Item Tasks .ayrt | 2 +- .../PM Parts Summary .ayrt | 2 +- .../PM Scheduled Users.ayrt | 2 +- .../PM Units grouped by Customer.ayrt | 2 +- 14 files changed, 11 insertions(+), 335 deletions(-) diff --git a/server/AyaNova/resource/de.json b/server/AyaNova/resource/de.json index e52d71e6..eb551140 100644 --- a/server/AyaNova/resource/de.json +++ b/server/AyaNova/resource/de.json @@ -284,9 +284,7 @@ "NotifySubscriptionLinkText": "Benachrichtigungseinstellung ändern:", "Part": "Teil", "PartAssembly": "Teilebaugruppe", - "PartCategory": "Teilekategorie", "PartInventoryAdjustment": "Teilebestandberichtigung", - "PartInventoryAdjustmentItem": "Teilebestandberichtigungsposten", "PartSerial": "Serienteil", "PartWarehouse": "Teilelager", "PreventiveMaintenance": "Wartung/Inspektion", @@ -348,8 +346,6 @@ "WorkOrderStatus": "Arbeitsauftragsstatus", "ObjectCustomFieldCustomGrid": "Anpassbare Felder", "OutsideServiceList": "Fremdleistungen - Liste", - "PartMustTrackSerial": "Für das Verfolgen von Seriennummern kann nicht FALSCH festgelegt werden, weil für dieses Teil ein Verlauf mit Seriennummer bereits aufgezeichnet ist", - "PartTrackSerialHasInventory": "Track serial numbers can not be turned on as this part still has items in inventory", "PartAlternativeWholesalerID": "Alternativer Großhändler", "PartAlternativeWholesalerNumber": "Alternativer Großhändler - Nummer", "PartCustom1": "Angepasstes Feld 1", @@ -376,7 +372,6 @@ "PartDescription": "Teilebeschreibung", "PartRetail": "Einzelhandel", "PartCost": "Kosten", - "PartTrackSerialNumber": "Seriennummer verfolgen", "PartUPC": "EAN", "PartWholesalerID": "Großhändler", "PartWholesalerNumber": "Großhändlernummer", @@ -405,38 +400,9 @@ "PartInventoryBalance": "Vorrätig", "PartByWarehouseInventoryQuantityOnOrder": "Bestellt", "PartByWarehouseInventoryReorderQuantity": "Nachbestellungsmenge", - "PartCategoryList": "Teilekategorien", - "PartCategoryName": "Teilekategorie - Name", - "PartDisplayFormatsAssemblyNumberName": "Baugruppe - Nummer - Name", - "PartDisplayFormatsCategoryNumberName": "Kategorie - Nummer - Name", - "PartDisplayFormatsManufacturerName": "Hersteller - Name", - "PartDisplayFormatsManufacturerNumber": "Hersteller - Nummer", - "PartDisplayFormatsName": "Nur Name", - "PartDisplayFormatsNameCategoryNumberManufacturer": "Name - category - number - manufacturer", - "PartDisplayFormatsNameNumber": "Name - Nummer", - "PartDisplayFormatsNameNumberManufacturer": "Name - number - manufacturer", - "PartDisplayFormatsNameUPC": "Name - EAN", - "PartDisplayFormatsNumber": "Nur Nummer", - "PartDisplayFormatsNumberName": "Nummer - Name", - "PartDisplayFormatsNumberNameManufacturer": "Nummer - Name - Hersteller", - "PartDisplayFormatsUPC": "Nur EAN", - "PartInventoryAdjustmentAdjustmentNumber": "Nummer", - "PartInventoryAdjustmentDateAdjusted": "Berichtigt am", - "PartInventoryAdjustmentPartInventoryAdjustmentID": "Berichtigungs-ID", - "PartInventoryAdjustmentReasonForAdjustment": "Grund", - "PartInventoryAdjustmentItemNegativeQuantityInvalid": "Es sind nicht genügend oder keine Teile dieses Typs in diesem Lager, um sie aus dem Bestand zu entfernen", - "PartInventoryAdjustmentItemPartNotUnique": "Die gleiche Teil/Lager-Kombination kann bei einer einzelnen Berichtigung nur einmal verwendet werden", - "PartInventoryAdjustmentItemZeroQuantityInvalid": "Eine Menge ist erforderlich", - "PartInventoryAdjustmentItemQuantityAdjustment": "Mengenberichtigung", "PartRestockRequiredByVendorList": "Teileaufstockung durch Lieferant erforderlich", - "PartSerialAdjustmentID": "Berichtigung", - "PartSerialAvailable": "Verfügbar", - "PartSerialDateConsumed": "Verbraucht", - "PartSerialDateReceived": "Empfangen", - "PartSerialSerialNumberNotUnique": "Für dieses Teil wurde bereits eine Seriennummer eingegeben", "PartSerialWarehouseID": "Teilelager", "PartSerialNumbersAvailable": "Verfügbare Seriennummern", - "PartWarehouseDescription": "Beschreibung", "PartWarehouseList": "Teilelager", "PartWarehouseName": "Teilelager - Name", "PartWarehouseNotes": "Anmerkungen", @@ -732,7 +698,6 @@ "Duplicate": "Duplizieren", "OK": "OK", "Open": "Öffnen", - "Paste": "Einfügen", "RecordHistory": "Datensatzverlauf", "Save": "Speichern", "SaveClose": "Speichern und beenden", @@ -1285,16 +1250,9 @@ "WorkOrderItemTypeDescription": "Beschreibung", "WorkOrderItemTypeList": "Arbeitsauftragsposten - Typen", "WorkOrderItemTypeName": "Arbeitsauftragspostentyp - Name", - "PMDayOfTheWeek": "Gewünschter Wochentag", - "PMGenerateServiceWorkOrder": "Servicearbeitsauftrag manuell erstellen", - "PMGenerateSpan": "Zeitspanne generieren", - "PMGenerateSpanUnit": "Generieren", "PMList": "Wartung/Inspektion", "PMNextServiceDate": "Nächster Service am", "PMStopGeneratingDate": "Erstellung beenden am", - "PMThresholdSpan": "Schwellenwert für Zeitspanne", - "PMThresholdSpanUnit": "Schwellenwert", - "PMByUnitList": "Wartung/Inspektion nach Einheit", "QuoteDateApproved": "Genehmigt", "QuoteDateSubmitted": "Übermittelt", "QuoteGenerateServiceWorkOrder": "Servicearbeitsauftrag von diesem Angebot generieren", @@ -1524,45 +1482,6 @@ "Upload": "Hochladen", "Activity": "Aktivität", "PMItem": "PMItem", - "PMItemList": "PMItems", - "PMItemName": "Name", - "PMItemNotes": "Notizen", - "PMItemCustom1": "Angepasstes Feld 1", - "PMItemCustom2": "Angepasstes Feld 2", - "PMItemCustom3": "Angepasstes Feld 3", - "PMItemCustom4": "Angepasstes Feld 4", - "PMItemCustom5": "Angepasstes Feld 5", - "PMItemCustom6": "Angepasstes Feld 6", - "PMItemCustom7": "Angepasstes Feld 7", - "PMItemCustom8": "Angepasstes Feld 8", - "PMItemCustom9": "Angepasstes Feld 9", - "PMItemCustom10": "Angepasstes Feld 10", - "PMItemCustom11": "Angepasstes Feld 11", - "PMItemCustom12": "Angepasstes Feld 12", - "PMItemCustom13": "Angepasstes Feld 13", - "PMItemCustom14": "Angepasstes Feld 14", - "PMItemCustom15": "Angepasstes Feld 15", - "PMItemCustom16": "Angepasstes Feld 16", - "PMTemplateItem": "PMTemplateItem", - "PMTemplateItemList": "PMTemplateItems", - "PMTemplateItemName": "Name", - "PMTemplateItemNotes": "Notizen", - "PMTemplateItemCustom1": "Angepasstes Feld 1", - "PMTemplateItemCustom2": "Angepasstes Feld 2", - "PMTemplateItemCustom3": "Angepasstes Feld 3", - "PMTemplateItemCustom4": "Angepasstes Feld 4", - "PMTemplateItemCustom5": "Angepasstes Feld 5", - "PMTemplateItemCustom6": "Angepasstes Feld 6", - "PMTemplateItemCustom7": "Angepasstes Feld 7", - "PMTemplateItemCustom8": "Angepasstes Feld 8", - "PMTemplateItemCustom9": "Angepasstes Feld 9", - "PMTemplateItemCustom10": "Angepasstes Feld 10", - "PMTemplateItemCustom11": "Angepasstes Feld 11", - "PMTemplateItemCustom12": "Angepasstes Feld 12", - "PMTemplateItemCustom13": "Angepasstes Feld 13", - "PMTemplateItemCustom14": "Angepasstes Feld 14", - "PMTemplateItemCustom15": "Angepasstes Feld 15", - "PMTemplateItemCustom16": "Angepasstes Feld 16", "QuoteItem": "QuoteItem", "QuoteItemList": "QuoteItems", "QuoteItemName": "Name", diff --git a/server/AyaNova/resource/en.json b/server/AyaNova/resource/en.json index ed2bb354..e32565f3 100644 --- a/server/AyaNova/resource/en.json +++ b/server/AyaNova/resource/en.json @@ -284,9 +284,7 @@ "NotifySubscriptionLinkText": "Change notification setting:", "Part": "Part", "PartAssembly": "Part Assembly", - "PartCategory": "Part category", "PartInventoryAdjustment": "Part inventory adjustment", - "PartInventoryAdjustmentItem": "Part inventory adjustment item", "PartSerial": "Serialized part", "PartWarehouse": "Part Warehouse", "PreventiveMaintenance": "Preventive Maintenance", @@ -348,8 +346,6 @@ "WorkOrderStatus": "Work order status", "ObjectCustomFieldCustomGrid": "Custom Fields", "OutsideServiceList": "Outside services", - "PartMustTrackSerial": "Track serial numbers can not be set to false as this part has a history with serial numbers already recorded", - "PartTrackSerialHasInventory": "Track serial numbers can not be turned on as this part still has items in inventory", "PartAlternativeWholesalerID": "Alternative Wholesaler", "PartAlternativeWholesalerNumber": "Alternative Wholesaler Number", "PartCustom1": "Custom1", @@ -376,7 +372,6 @@ "PartDescription": "Part description", "PartRetail": "Retail", "PartCost": "Cost", - "PartTrackSerialNumber": "Track Serial Number", "PartUPC": "UPC", "PartWholesalerID": "Wholesaler", "PartWholesalerNumber": "Wholesaler Number", @@ -405,38 +400,9 @@ "PartInventoryBalance": "On Hand", "PartByWarehouseInventoryQuantityOnOrder": "On Order", "PartByWarehouseInventoryReorderQuantity": "Reorder quantity", - "PartCategoryList": "Part Categories", - "PartCategoryName": "Part Category Name", - "PartDisplayFormatsAssemblyNumberName": "Assembly - number - name", - "PartDisplayFormatsCategoryNumberName": "Category - number - name", - "PartDisplayFormatsManufacturerName": "Manufacturer - name", - "PartDisplayFormatsManufacturerNumber": "Manufacturer - number", - "PartDisplayFormatsName": "Name only", - "PartDisplayFormatsNameCategoryNumberManufacturer": "Name - category - number - manufacturer", - "PartDisplayFormatsNameNumber": "Name - number", - "PartDisplayFormatsNameNumberManufacturer": "Name - number - manufacturer", - "PartDisplayFormatsNameUPC": "Name - UPC", - "PartDisplayFormatsNumber": "Number only", - "PartDisplayFormatsNumberName": "Number - name", - "PartDisplayFormatsNumberNameManufacturer": "Number - name - manufacturer", - "PartDisplayFormatsUPC": "UPC only", - "PartInventoryAdjustmentAdjustmentNumber": "Number", - "PartInventoryAdjustmentDateAdjusted": "Date Adjusted", - "PartInventoryAdjustmentPartInventoryAdjustmentID": "Adjustment ID", - "PartInventoryAdjustmentReasonForAdjustment": "Reason", - "PartInventoryAdjustmentItemNegativeQuantityInvalid": "There are not enough or no parts of this kind in this warehouse to remove from inventory", - "PartInventoryAdjustmentItemPartNotUnique": "The same part / warehouse combination can only be used once in a single adjustment", - "PartInventoryAdjustmentItemZeroQuantityInvalid": "A quantity is required", - "PartInventoryAdjustmentItemQuantityAdjustment": "Quantity Adjustment", "PartRestockRequiredByVendorList": "Part Restock Required By Vendor", - "PartSerialAdjustmentID": "Adjustment", - "PartSerialAvailable": "Available", - "PartSerialDateConsumed": "Consumed", - "PartSerialDateReceived": "Received", - "PartSerialSerialNumberNotUnique": "Serial number already entered for this part", "PartSerialWarehouseID": "Part Warehouse", "PartSerialNumbersAvailable": "Available serial numbers", - "PartWarehouseDescription": "Description", "PartWarehouseList": "Warehouses", "PartWarehouseName": "Warehouse Name", "PartWarehouseNotes": "Notes", @@ -732,7 +698,6 @@ "Duplicate": "Duplicate", "OK": "OK", "Open": "Open", - "Paste": "Paste", "RecordHistory": "Record History", "Save": "Save", "SaveClose": "Save and Exit", @@ -1285,16 +1250,9 @@ "WorkOrderItemTypeDescription": "Description", "WorkOrderItemTypeList": "Work order Item Types", "WorkOrderItemTypeName": "Work order Item Type Name", - "PMDayOfTheWeek": "Desired Day of the Week", - "PMGenerateServiceWorkOrder": "Manually Generate Service Work order", - "PMGenerateSpan": "Generate time span", - "PMGenerateSpanUnit": "Generate", "PMList": "Preventive maintenance", "PMNextServiceDate": "Next service date", "PMStopGeneratingDate": "Stop generating date", - "PMThresholdSpan": "Threshold time span", - "PMThresholdSpanUnit": "Threshold", - "PMByUnitList": "Preventive Maintenance By Unit", "QuoteDateApproved": "Approved", "QuoteDateSubmitted": "Submitted", "QuoteGenerateServiceWorkOrder": "Convert to Work order", @@ -1523,46 +1481,7 @@ "AttachFile": "Attach file", "Upload": "Upload", "Activity": "Activity", - "PMItem": "PMItem", - "PMItemList": "PMItems", - "PMItemName": "Name", - "PMItemNotes": "Notes", - "PMItemCustom1": "Custom1", - "PMItemCustom2": "Custom2", - "PMItemCustom3": "Custom3", - "PMItemCustom4": "Custom4", - "PMItemCustom5": "Custom5", - "PMItemCustom6": "Custom6", - "PMItemCustom7": "Custom7", - "PMItemCustom8": "Custom8", - "PMItemCustom9": "Custom9", - "PMItemCustom10": "Custom10", - "PMItemCustom11": "Custom11", - "PMItemCustom12": "Custom12", - "PMItemCustom13": "Custom13", - "PMItemCustom14": "Custom14", - "PMItemCustom15": "Custom15", - "PMItemCustom16": "Custom16", - "PMTemplateItem": "PMTemplateItem", - "PMTemplateItemList": "PMTemplateItems", - "PMTemplateItemName": "Name", - "PMTemplateItemNotes": "Notes", - "PMTemplateItemCustom1": "Custom1", - "PMTemplateItemCustom2": "Custom2", - "PMTemplateItemCustom3": "Custom3", - "PMTemplateItemCustom4": "Custom4", - "PMTemplateItemCustom5": "Custom5", - "PMTemplateItemCustom6": "Custom6", - "PMTemplateItemCustom7": "Custom7", - "PMTemplateItemCustom8": "Custom8", - "PMTemplateItemCustom9": "Custom9", - "PMTemplateItemCustom10": "Custom10", - "PMTemplateItemCustom11": "Custom11", - "PMTemplateItemCustom12": "Custom12", - "PMTemplateItemCustom13": "Custom13", - "PMTemplateItemCustom14": "Custom14", - "PMTemplateItemCustom15": "Custom15", - "PMTemplateItemCustom16": "Custom16", + "PMItem": "PMItem", "QuoteItem": "QuoteItem", "QuoteItemList": "QuoteItems", "QuoteItemName": "Name", diff --git a/server/AyaNova/resource/es.json b/server/AyaNova/resource/es.json index 71cf06a0..5d642aeb 100644 --- a/server/AyaNova/resource/es.json +++ b/server/AyaNova/resource/es.json @@ -284,9 +284,7 @@ "NotifySubscriptionLinkText": "Cambiar la configuración de notificación:", "Part": "Pieza", "PartAssembly": "Montaje de la pieza", - "PartCategory": "Categoría de la pieza", "PartInventoryAdjustment": "Ajuste inventario de piezas", - "PartInventoryAdjustmentItem": "Elemento ajuste inventario de piezas", "PartSerial": "Pieza registrada", "PartWarehouse": "Almacén de la pieza", "Priority": "Prioridad", @@ -347,8 +345,6 @@ "WorkOrderStatus": "Estado del orden de trabajo", "ObjectCustomFieldCustomGrid": "Campos personalizados", "OutsideServiceList": "Lista de servicios externos", - "PartMustTrackSerial": "El seguimiento de los números de serie no puede ajustarse a \"falso\" ya que esta pieza ya tiene un historial registrado con números de serie", - "PartTrackSerialHasInventory": "Track serial numbers can not be turned on as this part still has items in inventory", "PartAlternativeWholesalerID": "Mayorista alternativo", "PartAlternativeWholesalerNumber": "Número de mayorista alternativo", "PartCustom1": "Campo personalizado 1", @@ -375,7 +371,6 @@ "PartDescription": "Parte descripción", "PartRetail": "Minorista", "PartCost": "Coste", - "PartTrackSerialNumber": "Seguimiento número de serie", "PartUPC": "UPC", "PartWholesalerID": "Mayorista", "PartWholesalerNumber": "Número de mayorista", @@ -404,38 +399,9 @@ "PartInventoryBalance": "Disponible", "PartByWarehouseInventoryQuantityOnOrder": "En pedido", "PartByWarehouseInventoryReorderQuantity": "Cantidad de reposición", - "PartCategoryList": "Categorías de pieza", - "PartCategoryName": "Nombre de categoría de la pieza", - "PartDisplayFormatsAssemblyNumberName": "Montaje - número - nombre", - "PartDisplayFormatsCategoryNumberName": "Categoría - número - nombre", - "PartDisplayFormatsManufacturerName": "Fabricante - nombre", - "PartDisplayFormatsManufacturerNumber": "Fabricante - número", - "PartDisplayFormatsName": "Sólo nombre", - "PartDisplayFormatsNameCategoryNumberManufacturer": "Name - category - number - manufacturer", - "PartDisplayFormatsNameNumber": "Nombre - número", - "PartDisplayFormatsNameNumberManufacturer": "Name - number - manufacturer", - "PartDisplayFormatsNameUPC": "Nombre - UPC", - "PartDisplayFormatsNumber": "Sólo número", - "PartDisplayFormatsNumberName": "Número - nombre", - "PartDisplayFormatsNumberNameManufacturer": "Número - nombre - fabricante", - "PartDisplayFormatsUPC": "Sólo UPC", - "PartInventoryAdjustmentAdjustmentNumber": "Número", - "PartInventoryAdjustmentDateAdjusted": "Fecha de ajuste", - "PartInventoryAdjustmentPartInventoryAdjustmentID": "ID ajuste", - "PartInventoryAdjustmentReasonForAdjustment": "Motivo", - "PartInventoryAdjustmentItemNegativeQuantityInvalid": "No hay suficientes piezas de este tipo en el almacén para retirarlas del inventario", - "PartInventoryAdjustmentItemPartNotUnique": "La misma combinación pieza / almacén sólo puede utilizarse una vez en un mismo ajuste", - "PartInventoryAdjustmentItemZeroQuantityInvalid": "Se necesita una cantidad", - "PartInventoryAdjustmentItemQuantityAdjustment": "Ajuste cantidad", "PartRestockRequiredByVendorList": "Reposición de piezas requerida proveedor", - "PartSerialAdjustmentID": "Ajuste", - "PartSerialAvailable": "Disponible", - "PartSerialDateConsumed": "Consumido", - "PartSerialDateReceived": "Recibido", - "PartSerialSerialNumberNotUnique": "Número de serie ya introducido para esta pieza", "PartSerialWarehouseID": "Almacén de la pieza", "PartSerialNumbersAvailable": "Números de serie disponibles", - "PartWarehouseDescription": "Descripción", "PartWarehouseList": "Almacenes de piezas", "PartWarehouseName": "Nombre de almacén de la pieza", "PartWarehouseNotes": "Notas", @@ -731,7 +697,6 @@ "Duplicate": "Duplicado", "OK": "Aceptar", "Open": "Abrir", - "Paste": "Pegar", "RecordHistory": "Historial del registro", "Save": "Guardar", "SaveClose": "Guardar y salir", @@ -1285,16 +1250,9 @@ "WorkOrderItemTypeDescription": "Descripción", "WorkOrderItemTypeList": "Tipos de elementos de pedido", "WorkOrderItemTypeName": "Nombre tipo de elemento de pedido", - "PMDayOfTheWeek": "Día de la semana deseado", - "PMGenerateServiceWorkOrder": "Generar pedido de servicio manualmente", - "PMGenerateSpan": "Frecuencia de servicio", - "PMGenerateSpanUnit": "Generar", "PMList": "Mantenimiento preventivo", "PMNextServiceDate": "Fecha del próximo servicio", "PMStopGeneratingDate": "Fecha fin de generación", - "PMThresholdSpan": "Antelación del pedido", - "PMThresholdSpanUnit": "Umbral", - "PMByUnitList": "Mantenimiento preventivo por unidad", "QuoteDateApproved": "Aprobado", "QuoteDateSubmitted": "Presentado", "QuoteGenerateServiceWorkOrder": "Generar pedido de servicio a partir de este presupuesto", @@ -1524,45 +1482,6 @@ "Upload": "Cargar", "Activity": "Actividad", "PMItem": "PMItem", - "PMItemList": "PMItems", - "PMItemName": "Name", - "PMItemNotes": "Notas", - "PMItemCustom1": "Campo personalizado 1", - "PMItemCustom2": "Campo personalizado 2", - "PMItemCustom3": "Campo personalizado 3", - "PMItemCustom4": "Campo personalizado 4", - "PMItemCustom5": "Campo personalizado 5", - "PMItemCustom6": "Campo personalizado 6", - "PMItemCustom7": "Campo personalizado 7", - "PMItemCustom8": "Campo personalizado 8", - "PMItemCustom9": "Campo personalizado 9", - "PMItemCustom10": "Campo personalizado 10", - "PMItemCustom11": "Campo personalizado 11", - "PMItemCustom12": "Campo personalizado 12", - "PMItemCustom13": "Campo personalizado 13", - "PMItemCustom14": "Campo personalizado 14", - "PMItemCustom15": "Campo personalizado 15", - "PMItemCustom16": "Campo personalizado 16", - "PMTemplateItem": "PMTemplateItem", - "PMTemplateItemList": "PMTemplateItems", - "PMTemplateItemName": "Name", - "PMTemplateItemNotes": "Notas", - "PMTemplateItemCustom1": "Campo personalizado 1", - "PMTemplateItemCustom2": "Campo personalizado 2", - "PMTemplateItemCustom3": "Campo personalizado 3", - "PMTemplateItemCustom4": "Campo personalizado 4", - "PMTemplateItemCustom5": "Campo personalizado 5", - "PMTemplateItemCustom6": "Campo personalizado 6", - "PMTemplateItemCustom7": "Campo personalizado 7", - "PMTemplateItemCustom8": "Campo personalizado 8", - "PMTemplateItemCustom9": "Campo personalizado 9", - "PMTemplateItemCustom10": "Campo personalizado 10", - "PMTemplateItemCustom11": "Campo personalizado 11", - "PMTemplateItemCustom12": "Campo personalizado 12", - "PMTemplateItemCustom13": "Campo personalizado 13", - "PMTemplateItemCustom14": "Campo personalizado 14", - "PMTemplateItemCustom15": "Campo personalizado 15", - "PMTemplateItemCustom16": "Campo personalizado 16", "QuoteItem": "QuoteItem", "QuoteItemList": "QuoteItems", "QuoteItemName": "Name", diff --git a/server/AyaNova/resource/fr.json b/server/AyaNova/resource/fr.json index 2401a2f6..ee68be99 100644 --- a/server/AyaNova/resource/fr.json +++ b/server/AyaNova/resource/fr.json @@ -284,9 +284,7 @@ "NotifySubscriptionLinkText": "Modifier le paramètre de notification :", "Part": "Pièce", "PartAssembly": "Assemblage de pièce", - "PartCategory": "Catégorie de pièces", "PartInventoryAdjustment": "Ajustement de stock de pièces", - "PartInventoryAdjustmentItem": "Élément d'ajustement de stock de pièces", "PartSerial": "Pièce numérotée", "PartWarehouse": "Magasin de pièces", "PreventiveMaintenance": "Entretien préventif", @@ -348,8 +346,6 @@ "WorkOrderStatus": "État de bon de travail", "ObjectCustomFieldCustomGrid": "Champs personnalisés", "OutsideServiceList": "Liste des services extérieurs", - "PartMustTrackSerial": "Impossible de régler les numéros de série de suivi sur Faux, car cette pièce apparaît déjà dans l'historique avec des numéros de série", - "PartTrackSerialHasInventory": "Track serial numbers can not be turned on as this part still has items in inventory", "PartAlternativeWholesalerID": "Grossiste de remplacement", "PartAlternativeWholesalerNumber": "Numéro de grossiste de remplacement", "PartCustom1": "Champ personnalisé 1", @@ -376,7 +372,6 @@ "PartDescription": "Description de la pièce", "PartRetail": "Détail", "PartCost": "Coût", - "PartTrackSerialNumber": "Numéro de série de suivi", "PartUPC": "CUP", "PartWholesalerID": "Grossiste", "PartWholesalerNumber": "Numéro de grossiste", @@ -405,38 +400,9 @@ "PartInventoryBalance": "Disponible", "PartByWarehouseInventoryQuantityOnOrder": "En commande", "PartByWarehouseInventoryReorderQuantity": "Quantité de réapprovisionnement", - "PartCategoryList": "Catégories de pièces", - "PartCategoryName": "Nom de catégorie de pièces", - "PartDisplayFormatsAssemblyNumberName": "Assemblage - numéro - nom", - "PartDisplayFormatsCategoryNumberName": "Catégorie - numéro - nom", - "PartDisplayFormatsManufacturerName": "Fabricant - nom", - "PartDisplayFormatsManufacturerNumber": "Fabricant - numéro", - "PartDisplayFormatsName": "Nom uniquement", - "PartDisplayFormatsNameCategoryNumberManufacturer": "Name - category - number - manufacturer", - "PartDisplayFormatsNameNumber": "Nom - numéro", - "PartDisplayFormatsNameNumberManufacturer": "Name - number - manufacturer", - "PartDisplayFormatsNameUPC": "Nom - CUP", - "PartDisplayFormatsNumber": "Numéro uniquement", - "PartDisplayFormatsNumberName": "Numéro - nom", - "PartDisplayFormatsNumberNameManufacturer": "Numéro - nom - fabricant", - "PartDisplayFormatsUPC": "CUP uniquement", - "PartInventoryAdjustmentAdjustmentNumber": "Numéro", - "PartInventoryAdjustmentDateAdjusted": "Date d'ajustement", - "PartInventoryAdjustmentPartInventoryAdjustmentID": "ID d'ajustement", - "PartInventoryAdjustmentReasonForAdjustment": "Raison", - "PartInventoryAdjustmentItemNegativeQuantityInvalid": "Il n'y a pas assez (ou pas du tout) de pièces de ce type dans ce magasin pour que l'on puisse les retirer du stock", - "PartInventoryAdjustmentItemPartNotUnique": "La même combinaison pièce/magasin ne peut être utilisée qu'une fois dans le cadre d'un ajustement", - "PartInventoryAdjustmentItemZeroQuantityInvalid": "Vous devez spécifier une quantité", - "PartInventoryAdjustmentItemQuantityAdjustment": "Ajustement de quantité", "PartRestockRequiredByVendorList": "Réassortiment de pièces demandé par le fournisseur", - "PartSerialAdjustmentID": "Ajustement", - "PartSerialAvailable": "Disponible", - "PartSerialDateConsumed": "Consommé", - "PartSerialDateReceived": "Réceptionné", - "PartSerialSerialNumberNotUnique": "Numéro de série déjà saisi pour cette pièce", "PartSerialWarehouseID": "Magasin de pièces", "PartSerialNumbersAvailable": "Numéros de série disponibles", - "PartWarehouseDescription": "Description", "PartWarehouseList": "Magasins de pièces", "PartWarehouseName": "Nom de magasin de pièces", "PartWarehouseNotes": "Remarques", @@ -732,7 +698,6 @@ "Duplicate": "Dupliquer", "OK": "OK", "Open": "Ouvrir", - "Paste": "Coller", "RecordHistory": "Enregistrer l'historique", "Save": "Enregistrer", "SaveClose": "Enregistrer et quitter", @@ -1285,16 +1250,9 @@ "WorkOrderItemTypeDescription": "Description", "WorkOrderItemTypeList": "Types d'élément de bon de travail", "WorkOrderItemTypeName": "Nom de type d'élément de bon de travail", - "PMDayOfTheWeek": "Jour de semaine souhaité", - "PMGenerateServiceWorkOrder": "Bon de travail de service généré manuellement", - "PMGenerateSpan": "Générer une période de temps", - "PMGenerateSpanUnit": "Générer", "PMList": "Entretien préventif", "PMNextServiceDate": "Date de service suivant", "PMStopGeneratingDate": "Arrêter de générer des dates", - "PMThresholdSpan": "Période seuil", - "PMThresholdSpanUnit": "Seuil", - "PMByUnitList": "Entretien préventif par unité", "QuoteDateApproved": "Approuvé", "QuoteDateSubmitted": "Envoyé", "QuoteGenerateServiceWorkOrder": "Générer un bon de travail de service à partir de ce devis", @@ -1524,45 +1482,6 @@ "Upload": "Télécharger", "Activity": "Activité", "PMItem": "PMItem", - "PMItemList": "PMItems", - "PMItemName": "Name", - "PMItemNotes": "Remarques", - "PMItemCustom1": "Champ personnalisé 1", - "PMItemCustom2": "Champ personnalisé 2", - "PMItemCustom3": "Champ personnalisé 3", - "PMItemCustom4": "Champ personnalisé 4", - "PMItemCustom5": "Champ personnalisé 5", - "PMItemCustom6": "Champ personnalisé 6", - "PMItemCustom7": "Champ personnalisé 7", - "PMItemCustom8": "Champ personnalisé 8", - "PMItemCustom9": "Champ personnalisé 9", - "PMItemCustom10": "Champ personnalisé 10", - "PMItemCustom11": "Champ personnalisé 11", - "PMItemCustom12": "Champ personnalisé 12", - "PMItemCustom13": "Champ personnalisé 13", - "PMItemCustom14": "Champ personnalisé 14", - "PMItemCustom15": "Champ personnalisé 15", - "PMItemCustom16": "Champ personnalisé 16", - "PMTemplateItem": "PMTemplateItem", - "PMTemplateItemList": "PMTemplateItems", - "PMTemplateItemName": "Name", - "PMTemplateItemNotes": "Remarques", - "PMTemplateItemCustom1": "Champ personnalisé 1", - "PMTemplateItemCustom2": "Champ personnalisé 2", - "PMTemplateItemCustom3": "Champ personnalisé 3", - "PMTemplateItemCustom4": "Champ personnalisé 4", - "PMTemplateItemCustom5": "Champ personnalisé 5", - "PMTemplateItemCustom6": "Champ personnalisé 6", - "PMTemplateItemCustom7": "Champ personnalisé 7", - "PMTemplateItemCustom8": "Champ personnalisé 8", - "PMTemplateItemCustom9": "Champ personnalisé 9", - "PMTemplateItemCustom10": "Champ personnalisé 10", - "PMTemplateItemCustom11": "Champ personnalisé 11", - "PMTemplateItemCustom12": "Champ personnalisé 12", - "PMTemplateItemCustom13": "Champ personnalisé 13", - "PMTemplateItemCustom14": "Champ personnalisé 14", - "PMTemplateItemCustom15": "Champ personnalisé 15", - "PMTemplateItemCustom16": "Champ personnalisé 16", "QuoteItem": "QuoteItem", "QuoteItemList": "QuoteItems", "QuoteItemName": "Name", diff --git a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Expense.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Expense.ayrt index d7127876..e0b6d2b1 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Expense.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Expense.ayrt @@ -1 +1 @@ -{"Name":"Nets Taxes LineTotals for each PM Expense","Active":true,"Notes":"","Roles":50538,"AType":80,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemExpenseList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Expenses}}\n \n \n \n \n \n {{#if ChargeToCustomer}}\n\t\t\t\t\t{{else}}{{/if}}\n \n \n {{#if ChargeTaxCodeId}}{{else}} {{/if}}\n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'PreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemExpenseName'}}{{ayT 'WorkOrderItemExpenseChargeToCustomer'}}{{ayT 'WorkOrderItemExpenseChargeAmount'}}{{ayT 'Tax'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{Name}} {{Description}} {{ayCurrency ChargeAmount}}{{ayCurrency TaxAViz}} {{ayCurrency TaxBViz}}{{ayCurrency TaxPaid}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemExpenseChargeToCustomer'}} {{ayT 'WorkOrderItemExpenseList'}} in this report {{ayT 'WorkOrderItemExpenseChargeAmount'}}{{ayT 'Tax'}}{{ayT 'Total'}}
{{ayCurrency AllWOExpensesNetViz}}{{ayCurrency AllWOExpensesTaxs}}{{ayCurrency AllWOExpensesTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"WorkOrderItemExpenseChargeToCustomer\", \"NetPrice\", \"WorkOrderItemExpenseList\", \"WorkOrderItemExpenseName\", \"WorkOrderItemExpenseChargeAmount\", \"Tax\", \"Total\"]);\n\n\n\t//below declares keys to hold for all Expenses so it exists\n\treportData.AllWOExpensesNetViz = 0;\n\treportData.AllWOExpensesTaxs = 0;\n\treportData.AllWOExpensesTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\n\n\t//below is to Iterate through each Exp record of the wo's Item\n\t\t\tfor (const Exp of Item.Expenses)\n\t\t\t{\n\t\t\t//if this expense has a ChargeAmount value AND the ChargeToCustomer is true then adds the ChargeAmount to running totals\n \tif (Exp.ChargeAmount != null && Exp.ChargeToCustomer == true) \n \t \t{\n\t\t\t\t\t\t\n \t \treportData.AllWOExpensesNetViz += Exp.ChargeAmount;\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.ChargeAmount;\n \t \t\t}\t\t\t\n\n\t\t\t//if this expense the ChargeToCustomer is true AND ChargeTaxCode has a value then adds the TaxAViz and TaxBViz to running totals\t\t\n\t\t\t\t\tif (Exp.ChargeToCustomer == true && Exp.ChargeTaxCodeId != null ) \n \t \t{\n\t\t\t\t\t\treportData.AllWOExpensesTaxs += Exp.TaxAViz; //this IS where the actual adding of Exp's Tax A to the running total for ALL Tax A for THIS workorders in this report data\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.TaxAViz; \n\t\t\t\t\t\t\n\t\t\t\t\t\treportData.AllWOExpensesTaxs += Exp.TaxBViz; //this IS where the actual adding of Exp's Tax B to the running total for ALL Tax B for THIS workorders in this report data\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.TaxBViz;\n \t \t\t}\t\t\t\t\n\t\t\t\t\telse if (Exp.ChargeToCustomer == true && Exp.ChargeTaxCodeId == null ) //else if ChargeToCustomer is true AND ChargeTaxCodeID is null, then add TaxPaid to TaxA running total and Grand Total\t\t\n\t\t\t\t\t\t{\n\t\t\t\t\t\treportData.AllWOExpensesTaxs += Exp.TaxPaid; //this IS where the actual adding of Exp's TaxPaid to the running total for ALL Tax A for THIS workorders in this report data\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.TaxPaid; //this IS where the actual adding of Exp's TaxPaid to the running total for GrandTotal for THIS workorders in this report data\n\t\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"Nets Taxes LineTotals for each PM Expense","Active":true,"Notes":"","Roles":50538,"AType":80,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemExpenseList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Expenses}}\n \n \n \n \n \n {{#if ChargeToCustomer}}\n\t\t\t\t\t{{else}}{{/if}}\n \n \n {{#if ChargeTaxCodeId}}{{else}} {{/if}}\n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'PM'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemExpenseName'}}{{ayT 'WorkOrderItemExpenseChargeToCustomer'}}{{ayT 'WorkOrderItemExpenseChargeAmount'}}{{ayT 'Tax'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{Name}} {{Description}} {{ayCurrency ChargeAmount}}{{ayCurrency TaxAViz}} {{ayCurrency TaxBViz}}{{ayCurrency TaxPaid}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemExpenseChargeToCustomer'}} {{ayT 'WorkOrderItemExpenseList'}} in this report {{ayT 'WorkOrderItemExpenseChargeAmount'}}{{ayT 'Tax'}}{{ayT 'Total'}}
{{ayCurrency AllWOExpensesNetViz}}{{ayCurrency AllWOExpensesTaxs}}{{ayCurrency AllWOExpensesTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PM\", \"Customer\", \"PMNextServiceDate\", \"WorkOrderItemExpenseChargeToCustomer\", \"NetPrice\", \"WorkOrderItemExpenseList\", \"WorkOrderItemExpenseName\", \"WorkOrderItemExpenseChargeAmount\", \"Tax\", \"Total\"]);\n\n\n\t//below declares keys to hold for all Expenses so it exists\n\treportData.AllWOExpensesNetViz = 0;\n\treportData.AllWOExpensesTaxs = 0;\n\treportData.AllWOExpensesTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\n\n\t//below is to Iterate through each Exp record of the wo's Item\n\t\t\tfor (const Exp of Item.Expenses)\n\t\t\t{\n\t\t\t//if this expense has a ChargeAmount value AND the ChargeToCustomer is true then adds the ChargeAmount to running totals\n \tif (Exp.ChargeAmount != null && Exp.ChargeToCustomer == true) \n \t \t{\n\t\t\t\t\t\t\n \t \treportData.AllWOExpensesNetViz += Exp.ChargeAmount;\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.ChargeAmount;\n \t \t\t}\t\t\t\n\n\t\t\t//if this expense the ChargeToCustomer is true AND ChargeTaxCode has a value then adds the TaxAViz and TaxBViz to running totals\t\t\n\t\t\t\t\tif (Exp.ChargeToCustomer == true && Exp.ChargeTaxCodeId != null ) \n \t \t{\n\t\t\t\t\t\treportData.AllWOExpensesTaxs += Exp.TaxAViz; //this IS where the actual adding of Exp's Tax A to the running total for ALL Tax A for THIS workorders in this report data\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.TaxAViz; \n\t\t\t\t\t\t\n\t\t\t\t\t\treportData.AllWOExpensesTaxs += Exp.TaxBViz; //this IS where the actual adding of Exp's Tax B to the running total for ALL Tax B for THIS workorders in this report data\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.TaxBViz;\n \t \t\t}\t\t\t\t\n\t\t\t\t\telse if (Exp.ChargeToCustomer == true && Exp.ChargeTaxCodeId == null ) //else if ChargeToCustomer is true AND ChargeTaxCodeID is null, then add TaxPaid to TaxA running total and Grand Total\t\t\n\t\t\t\t\t\t{\n\t\t\t\t\t\treportData.AllWOExpensesTaxs += Exp.TaxPaid; //this IS where the actual adding of Exp's TaxPaid to the running total for ALL Tax A for THIS workorders in this report data\n\t\t\t\t\t\treportData.AllWOExpensesTotalGrand += Exp.TaxPaid; //this IS where the actual adding of Exp's TaxPaid to the running total for GrandTotal for THIS workorders in this report data\n\t\t\t\t\t\t}\n\n\t\t\t}\n\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Labor.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Labor.ayrt index d4e2788e..2e985619 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Labor.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Labor.ayrt @@ -1 +1 @@ -{"Name":"Nets Taxes LineTotals for each PM Labor","Active":true,"Notes":"","Roles":50538,"AType":81,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemLaborList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Labors}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'ServicePreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemLaborServiceRateID'}}{{ayT 'WorkOrderItemLaborPrice'}}{{ayT 'WorkOrderItemLaborServiceRateQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{ServiceRateViz}}{{ayCurrency PriceViz}}{{ServiceRateQuantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemLaborList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOLaborsNetViz}}{{ayCurrency AllWOLaborsTaxAs}}{{ayCurrency AllWOLaborsTaxBs}}{{ayCurrency AllWOLaborsTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PreventiveMaintenance\", \"ServicePreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemLaborList\", \"WorkOrderItemLaborServiceRateID\", \"WorkOrderItemLaborServiceRateQuantity\", \"WorkOrderItemLaborPrice\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//********************//NOTE if you customize this report template and do NOT need a function or key identified below, remove to increase report performance\n\n\n\t//below declares keys to hold for all labors so it exists\n\treportData.AllWOLaborsNetViz = 0;\n\treportData.AllWOLaborsTaxAs = 0;\n\treportData.AllWOLaborsTaxBs = 0;\n\treportData.AllWOLaborsTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Labor record of the wo's Item\n\t\t\tfor (const Labor of Item.Labors) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Labor.NetViz != null) {\n\t\t\t\t\treportData.AllWOLaborsNetViz += Labor.NetViz; //this IS where the actual adding to running total for this WOItem's Net labor\n\t\t\t\t\treportData.AllWOLaborsTaxAs += Labor.TaxAViz;\n\t\t\t\t\treportData.AllWOLaborsTaxBs += Labor.TaxBViz;\n\t\t\t\t\treportData.AllWOLaborsTotalGrand += Labor.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"Nets Taxes LineTotals for each PM Labor","Active":true,"Notes":"","Roles":50538,"AType":81,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemLaborList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Labors}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'ServicePreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemLaborServiceRateID'}}{{ayT 'WorkOrderItemLaborPrice'}}{{ayT 'WorkOrderItemLaborServiceRateQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{ServiceRateViz}}{{ayCurrency PriceViz}}{{ServiceRateQuantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemLaborList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOLaborsNetViz}}{{ayCurrency AllWOLaborsTaxAs}}{{ayCurrency AllWOLaborsTaxBs}}{{ayCurrency AllWOLaborsTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PM\", \"ServicePreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemLaborList\", \"WorkOrderItemLaborServiceRateID\", \"WorkOrderItemLaborServiceRateQuantity\", \"WorkOrderItemLaborPrice\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//********************//NOTE if you customize this report template and do NOT need a function or key identified below, remove to increase report performance\n\n\n\t//below declares keys to hold for all labors so it exists\n\treportData.AllWOLaborsNetViz = 0;\n\treportData.AllWOLaborsTaxAs = 0;\n\treportData.AllWOLaborsTaxBs = 0;\n\treportData.AllWOLaborsTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Labor record of the wo's Item\n\t\t\tfor (const Labor of Item.Labors) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Labor.NetViz != null) {\n\t\t\t\t\treportData.AllWOLaborsNetViz += Labor.NetViz; //this IS where the actual adding to running total for this WOItem's Net labor\n\t\t\t\t\treportData.AllWOLaborsTaxAs += Labor.TaxAViz;\n\t\t\t\t\treportData.AllWOLaborsTaxBs += Labor.TaxBViz;\n\t\t\t\t\treportData.AllWOLaborsTotalGrand += Labor.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Loans.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Loans.ayrt index 2f8369e7..a7b97e43 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Loans.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Loans.ayrt @@ -1 +1 @@ -{"Name":"Nets Taxes LineTotals for each PM Loans","Active":true,"Notes":"","Roles":50538,"AType":82,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemLoanList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Loans}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'PreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemLoanUnit'}}{{ayT 'WorkOrderItemLoanRate'}}{{ayT 'WorkOrderItemLoanQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{LoanUnitViz}}{{UnitOfMeasureViz}}{{ayCurrency PriceViz}}{{Quantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemLoanList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOLoansNetViz}}{{ayCurrency AllWOLoansTaxAs}}{{ayCurrency AllWOLoansTaxBs}}{{ayCurrency AllWOLoansTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemLoanList\", \"WorkOrderItemLoanUnit\", \"WorkOrderItemLoanQuantity\", \"WorkOrderItemLoanRate\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//below declares keys to hold for all Loans so it exists\n\treportData.AllWOLoansNetViz = 0;\n\treportData.AllWOLoansTaxAs = 0;\n\treportData.AllWOLoansTaxBs = 0;\n\treportData.AllWOLoansTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Loan record of the wo's Item\n\t\t\tfor (const Loan of Item.Loans) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Loan.NetViz != null) {\n\t\t\t\t\treportData.AllWOLoansNetViz += Loan.NetViz; //this IS where the actual adding to running total for this WOItem's Net Loan\n\t\t\t\t\treportData.AllWOLoansTaxAs += Loan.TaxAViz;\n\t\t\t\t\treportData.AllWOLoansTaxBs += Loan.TaxBViz;\n\t\t\t\t\treportData.AllWOLoansTotalGrand += Loan.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"Nets Taxes LineTotals for each PM Loans","Active":true,"Notes":"","Roles":50538,"AType":82,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemLoanList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Loans}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'PM'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemLoanUnit'}}{{ayT 'WorkOrderItemLoanRate'}}{{ayT 'WorkOrderItemLoanQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{LoanUnitViz}}{{UnitOfMeasureViz}}{{ayCurrency PriceViz}}{{Quantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemLoanList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOLoansNetViz}}{{ayCurrency AllWOLoansTaxAs}}{{ayCurrency AllWOLoansTaxBs}}{{ayCurrency AllWOLoansTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PM\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemLoanList\", \"WorkOrderItemLoanUnit\", \"WorkOrderItemLoanQuantity\", \"WorkOrderItemLoanRate\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//below declares keys to hold for all Loans so it exists\n\treportData.AllWOLoansNetViz = 0;\n\treportData.AllWOLoansTaxAs = 0;\n\treportData.AllWOLoansTaxBs = 0;\n\treportData.AllWOLoansTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Loan record of the wo's Item\n\t\t\tfor (const Loan of Item.Loans) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Loan.NetViz != null) {\n\t\t\t\t\treportData.AllWOLoansNetViz += Loan.NetViz; //this IS where the actual adding to running total for this WOItem's Net Loan\n\t\t\t\t\treportData.AllWOLoansTaxAs += Loan.TaxAViz;\n\t\t\t\t\treportData.AllWOLoansTaxBs += Loan.TaxBViz;\n\t\t\t\t\treportData.AllWOLoansTotalGrand += Loan.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Part.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Part.ayrt index f24776d3..dc3f53d2 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Part.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Part.ayrt @@ -1 +1 @@ -{"Name":"Nets Taxes LineTotals for each PM Part","Active":true,"Notes":"","Roles":50538,"AType":83,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemPartList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Parts}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'ServicePreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemPartList'}}{{ayT 'WorkOrderItemPartPrice'}}{{ayT 'WorkOrderItemPartQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{PartNameViz}} {{PartDescriptionViz}}{{ayCurrency PriceViz}}{{Quantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemPartList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOPartsNetViz}}{{ayCurrency AllWOPartsTaxAs}}{{ayCurrency AllWOPartsTaxBs}}{{ayCurrency AllWOPartsTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed;\n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PreventiveMaintenance\", \"ServicePreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemPartList\", \"WorkOrderItemPartQuantity\", \"WorkOrderItemPartPrice\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//********************//NOTE if you customize this report template and do NOT need a function or key identified below, remove to increase report performance\n\n\n\t//below declares keys to hold for all parts so it exists\n\treportData.AllWOPartsNetViz = 0;\n\treportData.AllWOPartsTaxAs = 0;\n\treportData.AllWOPartsTaxBs = 0;\n\treportData.AllWOPartsTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Part record of the wo's Item\n\t\t\tfor (const Part of Item.Parts) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Part.NetViz != null) {\n\t\t\t\t\treportData.AllWOPartsNetViz += Part.NetViz; //this IS where the actual adding to running total for this WOItem's Net Parts\n\t\t\t\t\treportData.AllWOPartsTaxAs += Part.TaxAViz;\n\t\t\t\t\treportData.AllWOPartsTaxBs += Part.TaxBViz;\n\t\t\t\t\treportData.AllWOPartsTotalGrand += Part.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"Nets Taxes LineTotals for each PM Part","Active":true,"Notes":"","Roles":50538,"AType":83,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemPartList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Parts}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'ServicePreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemPartList'}}{{ayT 'WorkOrderItemPartPrice'}}{{ayT 'WorkOrderItemPartQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{PartNameViz}} {{PartDescriptionViz}}{{ayCurrency PriceViz}}{{Quantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemPartList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOPartsNetViz}}{{ayCurrency AllWOPartsTaxAs}}{{ayCurrency AllWOPartsTaxBs}}{{ayCurrency AllWOPartsTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed;\n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PM\", \"ServicePreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemPartList\", \"WorkOrderItemPartQuantity\", \"WorkOrderItemPartPrice\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//********************//NOTE if you customize this report template and do NOT need a function or key identified below, remove to increase report performance\n\n\n\t//below declares keys to hold for all parts so it exists\n\treportData.AllWOPartsNetViz = 0;\n\treportData.AllWOPartsTaxAs = 0;\n\treportData.AllWOPartsTaxBs = 0;\n\treportData.AllWOPartsTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Part record of the wo's Item\n\t\t\tfor (const Part of Item.Parts) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Part.NetViz != null) {\n\t\t\t\t\treportData.AllWOPartsNetViz += Part.NetViz; //this IS where the actual adding to running total for this WOItem's Net Parts\n\t\t\t\t\treportData.AllWOPartsTaxAs += Part.TaxAViz;\n\t\t\t\t\treportData.AllWOPartsTaxBs += Part.TaxBViz;\n\t\t\t\t\treportData.AllWOPartsTotalGrand += Part.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Travel.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Travel.ayrt index d1fc0197..63b20c3a 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Travel.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/Nets Taxes LineTotals for each PM Travel.ayrt @@ -1 +1 @@ -{"Name":"Nets Taxes LineTotals for each PM Travel","Active":true,"Notes":"","Roles":50538,"AType":87,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemTravelList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Travels}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'ServicePreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemTravelServiceRateID'}}{{ayT 'WorkOrderItemTravelRateCharge'}}{{ayT 'WorkOrderItemTravelRateQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{TravelRateViz}}{{ayCurrency PriceViz}}{{TravelRateQuantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemTravelList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOTravelsNetViz}}{{ayCurrency AllWOTravelsTaxAs}}{{ayCurrency AllWOTravelsTaxBs}}{{ayCurrency AllWOTravelsTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PreventiveMaintenance\", \"ServicePreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemTravelList\", \"WorkOrderItemTravelServiceRateID\", \"WorkOrderItemTravelRateQuantity\", \"WorkOrderItemTravelRateCharge\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//********************//NOTE if you customize this report template and do NOT need a function or key identified below, remove to increase report performance\n\n\n\t//below declares keys to hold for all Travels so it exists\n\treportData.AllWOTravelsNetViz = 0;\n\treportData.AllWOTravelsTaxAs = 0;\n\treportData.AllWOTravelsTaxBs = 0;\n\treportData.AllWOTravelsTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Travel record of the wo's Item\n\t\t\tfor (const Travel of Item.Travels) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Travel.NetViz != null) {\n\t\t\t\t\treportData.AllWOTravelsNetViz += Travel.NetViz; //this IS where the actual adding to running total for this WOItem's Net Travel\n\t\t\t\t\treportData.AllWOTravelsTaxAs += Travel.TaxAViz;\n\t\t\t\t\treportData.AllWOTravelsTaxBs += Travel.TaxBViz;\n\t\t\t\t\treportData.AllWOTravelsTotalGrand += Travel.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"Nets Taxes LineTotals for each PM Travel","Active":true,"Notes":"","Roles":50538,"AType":87,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemTravelList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Travels}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'ServicePreventiveMaintenance'}}{{ayT 'Customer'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemTravelServiceRateID'}}{{ayT 'WorkOrderItemTravelRateCharge'}}{{ayT 'WorkOrderItemTravelRateQuantity'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{../../CustomerViz}}{{ayDate ../../NextServiceDate}}{{TravelRateViz}}{{ayCurrency PriceViz}}{{TravelRateQuantity}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemTravelList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOTravelsNetViz}}{{ayCurrency AllWOTravelsTaxAs}}{{ayCurrency AllWOTravelsTaxBs}}{{ayCurrency AllWOTravelsTotalGrand}}
\n
\n\n\n","Style":"\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders\n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PM\", \"ServicePreventiveMaintenance\", \"Customer\", \"PMNextServiceDate\", \"NetPrice\", \"WorkOrderItemTravelList\", \"WorkOrderItemTravelServiceRateID\", \"WorkOrderItemTravelRateQuantity\", \"WorkOrderItemTravelRateCharge\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//********************//NOTE if you customize this report template and do NOT need a function or key identified below, remove to increase report performance\n\n\n\t//below declares keys to hold for all Travels so it exists\n\treportData.AllWOTravelsNetViz = 0;\n\treportData.AllWOTravelsTaxAs = 0;\n\treportData.AllWOTravelsTaxBs = 0;\n\treportData.AllWOTravelsTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each Travel record of the wo's Item\n\t\t\tfor (const Travel of Item.Travels) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (Travel.NetViz != null) {\n\t\t\t\t\treportData.AllWOTravelsNetViz += Travel.NetViz; //this IS where the actual adding to running total for this WOItem's Net Travel\n\t\t\t\t\treportData.AllWOTravelsTaxAs += Travel.TaxAViz;\n\t\t\t\t\treportData.AllWOTravelsTaxBs += Travel.TaxBViz;\n\t\t\t\t\treportData.AllWOTravelsTotalGrand += Travel.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/Outside Service via PMs.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/Outside Service via PMs.ayrt index 8a69a935..8078cdf3 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/Outside Service via PMs.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/Outside Service via PMs.ayrt @@ -1 +1 @@ -{"Name":"Outside Service via PMs","Active":true,"Notes":"","Roles":50538,"AType":89,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemOutsideServiceList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each OutsideServices}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'PreventiveMaintenance'}}{{ayT 'WorkOrderItemOutsideServiceDateSent'}}{{ayT 'Unit'}}{{ayT 'WorkOrderItemOutsideServiceVendorSentToID'}}{{ayT 'WorkOrderItemOutsideServiceRMANumber'}}{{ayT 'WorkOrderItemOutsideServiceDateReturned'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{ayDate SentDate}}{{UnitViz}}{{VendorSentToViz}}{{RMANumber}}{{ayDate ReturnDate}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemOutsideServiceList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOOutsideServicesNetViz}}{{ayCurrency AllWOOutsideServicesTaxAs}}{{ayCurrency AllWOOutsideServicesTaxBs}}{{ayCurrency AllWOOutsideServicesTotalGrand}}
\n
\n\n\n","Style":"\r\ntfoot {\r\n border-top: 2px solid #9e9e9e;\r\n font-size: 7pt;\r\n text-align: center;\r\n}\r\n\r\n.singlePage\r\n{\r\npage-break-after: always;\r\n}\r\n\r\nbody {\r\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \r\n}\r\n\r\n.reporttitle { \r\n margin-bottom: 20pt; \r\n font-weight: bold; \r\n font-size: 13pt; \r\n color: #9e9e9e;\r\n} \r\n\r\ntable { \r\n border-collapse: collapse;\r\n white-space: pre-wrap;\r\n width: 100%;\r\n table-layout: fixed; \r\n }\r\n\r\nth {\r\n height: 30px;\r\n font-size: 9pt; \r\n color: #9e9e9e;\r\n}\r\n\r\ntbody td {\r\n padding: 10px;\r\n word-wrap: break-word;\r\n font-size: 7pt;\r\n}\r\n\r\n\r\ntbody tr:nth-child(even) {\r\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\r\n}\r\n\r\n\r\n.rightlean {\r\n text-align: right;\r\n}\r\n.leftlean {\r\n text-align: left;\r\n}\r\n.centerlean {\r\n text-align: center;\r\n}\r\n\r\n\r\n.fontgreen {\r\n color: green;\r\n}\r\n.fontblue {\r\n color: blue;\r\n}\r\n.fontred {\r\n color:red;\r\n}\r\n\r\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders \n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PreventiveMaintenance\", \"Customer\", \"Unit\", \"NetPrice\", \"WorkOrderItemOutsideServiceList\", \"WorkOrderItemOutsideServiceDateSent\", \"WorkOrderItemOutsideServiceVendorSentToID\", \"WorkOrderItemOutsideServiceRMANumber\", \"WorkOrderItemOutsideServiceDateReturned\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//below declares keys to hold for all OutsideServices so it exists\n\treportData.AllWOOutsideServicesNetViz = 0;\n\treportData.AllWOOutsideServicesTaxAs = 0;\n\treportData.AllWOOutsideServicesTaxBs = 0;\n\treportData.AllWOOutsideServicesTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each OutsideService record of the wo's Item\n\t\t\tfor (const OutsideService of Item.OutsideServices) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (OutsideService.NetViz != null) {\n\t\t\t\t\treportData.AllWOOutsideServicesNetViz += OutsideService.NetViz; //this IS where the actual adding to running total for this WOItem's Net OutsideService\n\t\t\t\t\treportData.AllWOOutsideServicesTaxAs += OutsideService.TaxAViz;\n\t\t\t\t\treportData.AllWOOutsideServicesTaxBs += OutsideService.TaxBViz;\n\t\t\t\t\treportData.AllWOOutsideServicesTotalGrand += OutsideService.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"Outside Service via PMs","Active":true,"Notes":"","Roles":50538,"AType":89,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemOutsideServiceList'}} Nets Taxes LineTotals and Grand Totals

\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each OutsideServices}}\n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n
{{ayT 'PM'}}{{ayT 'WorkOrderItemOutsideServiceDateSent'}}{{ayT 'Unit'}}{{ayT 'WorkOrderItemOutsideServiceVendorSentToID'}}{{ayT 'WorkOrderItemOutsideServiceRMANumber'}}{{ayT 'WorkOrderItemOutsideServiceDateReturned'}}{{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{../../Serial}}{{ayDate SentDate}}{{UnitViz}}{{VendorSentToViz}}{{RMANumber}}{{ayDate ReturnDate}}{{ayCurrency NetViz}}{{ayCurrency TaxAViz}}{{ayCurrency TaxBViz}}{{ayCurrency LineTotalViz}}
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
 
Totals for all {{ayT 'WorkOrderItemOutsideServiceList'}} in this report {{ayT 'NetPrice'}}{{ayT 'TaxCodeTaxA'}}{{ayT 'TaxCodeTaxB'}}{{ayT 'Total'}}
{{ayCurrency AllWOOutsideServicesNetViz}}{{ayCurrency AllWOOutsideServicesTaxAs}}{{ayCurrency AllWOOutsideServicesTaxBs}}{{ayCurrency AllWOOutsideServicesTotalGrand}}
\n
\n\n\n","Style":"\r\ntfoot {\r\n border-top: 2px solid #9e9e9e;\r\n font-size: 7pt;\r\n text-align: center;\r\n}\r\n\r\n.singlePage\r\n{\r\npage-break-after: always;\r\n}\r\n\r\nbody {\r\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \r\n}\r\n\r\n.reporttitle { \r\n margin-bottom: 20pt; \r\n font-weight: bold; \r\n font-size: 13pt; \r\n color: #9e9e9e;\r\n} \r\n\r\ntable { \r\n border-collapse: collapse;\r\n white-space: pre-wrap;\r\n width: 100%;\r\n table-layout: fixed; \r\n }\r\n\r\nth {\r\n height: 30px;\r\n font-size: 9pt; \r\n color: #9e9e9e;\r\n}\r\n\r\ntbody td {\r\n padding: 10px;\r\n word-wrap: break-word;\r\n font-size: 7pt;\r\n}\r\n\r\n\r\ntbody tr:nth-child(even) {\r\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\r\n}\r\n\r\n\r\n.rightlean {\r\n text-align: right;\r\n}\r\n.leftlean {\r\n text-align: left;\r\n}\r\n.centerlean {\r\n text-align: center;\r\n}\r\n\r\n\r\n.fontgreen {\r\n color: green;\r\n}\r\n.fontblue {\r\n color: blue;\r\n}\r\n.fontred {\r\n color:red;\r\n}\r\n\r\n","JsPrerender":"async function ayPrepareData(reportData) {\n\t//this function (if present) is called with the report data \n\t//before the report is rendered\n\t//modify data as required here and return it to change the data before the report renders \n\t//see the help documentation for details\n\n\tawait ayGetTranslations([\"PM\", \"Customer\", \"Unit\", \"NetPrice\", \"WorkOrderItemOutsideServiceList\", \"WorkOrderItemOutsideServiceDateSent\", \"WorkOrderItemOutsideServiceVendorSentToID\", \"WorkOrderItemOutsideServiceRMANumber\", \"WorkOrderItemOutsideServiceDateReturned\", \"TaxCodeTaxA\", \"TaxCodeTaxB\", \"Total\"]);\n\n\n\t//below declares keys to hold for all OutsideServices so it exists\n\treportData.AllWOOutsideServicesNetViz = 0;\n\treportData.AllWOOutsideServicesTaxAs = 0;\n\treportData.AllWOOutsideServicesTaxBs = 0;\n\treportData.AllWOOutsideServicesTotalGrand = 0;\n\n\n\n\tfor (const EachWO of reportData.ayReportData) {\n\n\t\t//below is to Iterate through each item of the wo's Items\n\t\tfor (const Item of EachWO.Items) {\n\t\t\t//below is to Iterate through each OutsideService record of the wo's Item\n\t\t\tfor (const OutsideService of Item.OutsideServices) {\n\t\t\t\t//make sure it has a value before attempting to add it to the running total\n\t\t\t\tif (OutsideService.NetViz != null) {\n\t\t\t\t\treportData.AllWOOutsideServicesNetViz += OutsideService.NetViz; //this IS where the actual adding to running total for this WOItem's Net OutsideService\n\t\t\t\t\treportData.AllWOOutsideServicesTaxAs += OutsideService.TaxAViz;\n\t\t\t\t\treportData.AllWOOutsideServicesTaxBs += OutsideService.TaxBViz;\n\t\t\t\t\treportData.AllWOOutsideServicesTotalGrand += OutsideService.LineTotalViz;\n\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\n\treturn reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/PM Item Tasks .ayrt b/server/AyaNova/resource/rpt/stock-report-templates/PM Item Tasks .ayrt index 892b8e45..4c39c65b 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/PM Item Tasks .ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/PM Item Tasks .ayrt @@ -1 +1 @@ -{"Name":"PM Item Tasks ","Active":true,"Notes":"","Roles":50538,"AType":86,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemList'}} {{ayT 'WorkOrderItemTasks'}} List

\n
\n\n \n \n \n \n \n \n \n\n\n\t\t\t\t\t \n\t\t\t\t\t\n \n \n\n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Tasks}}\n \n \n \n \n\n\t\t\t\t\t\n\t\t\t\t\t{{#if_eq Status 2}}\n\t\t\t\t\t{{else}}{{/if_eq}}\n\t\t\t\t\t\n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n\n \n \n\n
{{ayT 'PreventiveMaintenance'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemSummary'}}{{ayT 'WorkOrderItemTaskWorkOrderItemTaskCompletionType'}}{{ayT 'WorkOrderItemTasks'}}
{{../../Serial}}{{ayDateTime ../../NextServiceDate}}{{../Notes}}{{StatusViz}} {{StatusViz}} {{Task}}
\n\n\n
\n\n\n","Style":"body {\r\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \r\n}\r\n\r\n.reporttitle { \r\n margin-bottom: 20pt; \r\n font-weight: bold; \r\n font-size: 13pt; \r\n color: #9e9e9e;\r\n} \r\n\r\ntable { \r\n border-collapse: collapse;\r\n white-space: pre-wrap;\r\n width: 100%;\r\n table-layout: fixed;\r\n }\r\n\r\nth {\r\n height: 20px;\r\n font-size: 10pt; \r\n color: #9e9e9e;\r\n}\r\n\r\ntbody td {\r\n padding: 10px;\r\n word-wrap: break-word;\r\n font-size: 8pt;\r\n}\r\n\r\n\r\ntbody tr:nth-child(even) {\r\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\r\n}\r\n\r\n\r\n.rightlean {\r\n text-align: right;\r\n}\r\n.leftlean {\r\n text-align: left;\r\n}\r\n.centerlean {\r\n text-align: center;\r\n}\r\n\r\n\r\n.fontgreen {\r\n color: green;\r\n font-size: 16pt;\r\n}\r\n.fontblue {\r\n color: blue;\r\n}\r\n.fontred {\r\n color:red;\r\n}\r\n\r\n","JsPrerender":" \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\nasync function ayPrepareData(ayData) { \n\n await ayGetTranslations([ \"WorkOrderItemTasks\", \"PreventiveMaintenance\", \"WorkOrderItemList\", \"PMNextServiceDate\", \"WorkOrderItemSummary\", \"WorkOrderItemTaskWorkOrderItemTaskCompletionType\" ]);\n\n\n \n return ayData;\n}","JsHelpers":"//custom helper so can do a direct comparison - i.e. if value equals xxxx, then show, else show yyyyy\r\n\r\nHandlebars.registerHelper('if_eq', function(a, b, opts) {\r\n if(a == b) // Or === depending on your needs\r\n return opts.fn(this);\r\n else\r\n return opts.inverse(this);\r\n});","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":0,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"20mm","MarginOptionsRight":"20mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"PM Item Tasks ","Active":true,"Notes":"","Roles":50538,"AType":86,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemList'}} {{ayT 'WorkOrderItemTasks'}} List

\n
\n\n \n \n \n \n \n \n \n\n\n\t\t\t\t\t \n\t\t\t\t\t\n \n \n\n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each Tasks}}\n \n \n \n \n\n\t\t\t\t\t\n\t\t\t\t\t{{#if_eq Status 2}}\n\t\t\t\t\t{{else}}{{/if_eq}}\n\t\t\t\t\t\n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n\n \n \n\n
{{ayT 'PM'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemSummary'}}{{ayT 'WorkOrderItemTaskWorkOrderItemTaskCompletionType'}}{{ayT 'WorkOrderItemTasks'}}
{{../../Serial}}{{ayDateTime ../../NextServiceDate}}{{../Notes}}{{StatusViz}} {{StatusViz}} {{Task}}
\n\n\n
\n\n\n","Style":"body {\r\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \r\n}\r\n\r\n.reporttitle { \r\n margin-bottom: 20pt; \r\n font-weight: bold; \r\n font-size: 13pt; \r\n color: #9e9e9e;\r\n} \r\n\r\ntable { \r\n border-collapse: collapse;\r\n white-space: pre-wrap;\r\n width: 100%;\r\n table-layout: fixed;\r\n }\r\n\r\nth {\r\n height: 20px;\r\n font-size: 10pt; \r\n color: #9e9e9e;\r\n}\r\n\r\ntbody td {\r\n padding: 10px;\r\n word-wrap: break-word;\r\n font-size: 8pt;\r\n}\r\n\r\n\r\ntbody tr:nth-child(even) {\r\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\r\n}\r\n\r\n\r\n.rightlean {\r\n text-align: right;\r\n}\r\n.leftlean {\r\n text-align: left;\r\n}\r\n.centerlean {\r\n text-align: center;\r\n}\r\n\r\n\r\n.fontgreen {\r\n color: green;\r\n font-size: 16pt;\r\n}\r\n.fontblue {\r\n color: blue;\r\n}\r\n.fontred {\r\n color:red;\r\n}\r\n\r\n","JsPrerender":" \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\nasync function ayPrepareData(ayData) { \n\n await ayGetTranslations([ \"WorkOrderItemTasks\", \"PM\", \"WorkOrderItemList\", \"PMNextServiceDate\", \"WorkOrderItemSummary\", \"WorkOrderItemTaskWorkOrderItemTaskCompletionType\" ]);\n\n\n \n return ayData;\n}","JsHelpers":"//custom helper so can do a direct comparison - i.e. if value equals xxxx, then show, else show yyyyy\r\n\r\nHandlebars.registerHelper('if_eq', function(a, b, opts) {\r\n if(a == b) // Or === depending on your needs\r\n return opts.fn(this);\r\n else\r\n return opts.inverse(this);\r\n});","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":0,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"20mm","MarginOptionsRight":"20mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/PM Parts Summary .ayrt b/server/AyaNova/resource/rpt/stock-report-templates/PM Parts Summary .ayrt index 57866505..1c4aeb2a 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/PM Parts Summary .ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/PM Parts Summary .ayrt @@ -1 +1 @@ -{"Name":"PM Parts Summary ","Active":true,"Notes":"Custom Prepare to obtain translations, group by the woitempart, derived amounts and running totals","Roles":49258,"AType":21,"IncludeWoItemDescendants":false,"Template":"\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n \n \n \n {{#each items}}\n \n \n \n \n \n \n \n \n \n {{#if NetCost }} {{else}}{{/if}}\n {{#if NetViz }} {{else}}{{/if}}\n {{#if NetDiff }} {{else}}{{/if}} \n \n {{/each}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n \n
{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemParts'}} {{ayT 'PartCost'}} {{ayT 'NetPrice'}}
 
{{ayT 'Part'}}{{ayT 'PreventiveMaintenance'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemPartQuantity'}}{{ayT 'PartCost'}} Per{{ayT 'PartRetail'}} Per {{ayT 'PartCost'}} {{ayT 'NetPrice'}}{{ayT 'PartRetail'}} {{ayT 'NetPrice'}}Difference
 
{{group}}
 {{Serial}}{{ayDate NextServiceDate}}{{Quantity}}{{UnitOfMeasureViz}}{{ayCurrency Cost}}{{ayCurrency PriceViz}} {{ayCurrency NetCost}}{{Quantity}}{{ayCurrency NetViz}}{{Quantity}}{{ayCurrency NetDiff}}{{Quantity}}
 
{{ayT 'Total'}} for part {{group}}{{ayCurrency GroupPartsNetCost}}{{ayCurrency GroupPartsNetViz}}{{ayCurrency GroupPartsDiff}}

 
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#if AllWOPartsNetCost}} {{else}} {{/if}}\n {{#if AllWOPartsNetViz}} {{else}} {{/if}} \n {{#if AllWOPartsDiff}} {{else}} {{/if}}\n \n \n \n
 
{{ayT 'Total'}} for all {{ayT 'WorkOrderItemParts'}} in this reportAll Net CostAll Net ChargeAll Diff
 {{ ayCurrency AllWOPartsNetCost}}$0.00{{ ayCurrency AllWOPartsNetViz}}$0.00{{ayCurrency AllWOPartsDiff}}$0.00
\n\n","Style":".singlePage\n{\npage-break-after: always;\n\n}\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 14pt; \n color: #9e9e9e;\n text-align: left;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%; \n table-layout: fixed; \n }\n\nth {\n height: 20px;\n font-size: 10pt; \n color: #9e9e9e;\n text-align: center;\n}\n\ntbody td {\n padding: 2px;\n word-wrap: break-word;\n font-size: 9pt;\n text-align: center;\n}\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n font-weight: bold;\n}\n.fontpurple {\n color: purple;\n}\n","JsPrerender":"async function ayPrepareData(reportData){ \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\n\tawait ayGetTranslations([\"WorkOrderItemParts\", \"Part\", \"PMNextServiceDate\", \"WorkOrderItemPartQuantity\", \"PreventiveMaintenance\", \"NetPrice\", \"PartCost\", \"PartRetail\", \"Total\" ]);\n\n\t//below is the code to group by the part - the PartNameViz\n\tlet ret = [];\n //iterate pms -> items -> pm item parts\n reportData.ayReportData.forEach(pm => {\n pm.Items.forEach(pmitem => {\n pmitem.Parts.forEach(part => {\n //new shape of data required for report \n let record = {\n Serial: pm.Serial,\n\t\t\t\t\tNextServiceDate: pm.NextServiceDate,\n\t\t\t\t\tNetViz: part.NetViz,\n\t\t\t\t\tPriceOverride: part.PriceOverride,\n\t\t\t\t\tListPrice: part.ListPrice,\n UnitOfMeasureViz: part.UnitOfMeasureViz,\n PriceViz: part.PriceViz,\n Cost: part.Cost,\n SuggestedQuantity: part.SuggestedQuantity,\n Quantity: part.Quantity,\n PartWarehouseViz: part.PartWarehouseViz,\n UpcViz: part.UpcViz,\n Serials: part.Serials,\n PartDescriptionViz: part.PartDescriptionViz ?? \"\",\n };\n\n //Find or create group and insert this record \n let groupObject = ret.find(z => z.group == (part.PartNameViz + \" \" + record.PartDescriptionViz) );\n if (groupObject != undefined) {\n //there is already a matching group in the return array so just push this record into it\n groupObject.items.push(record);\n //update the count for this group's items\n groupObject.count++;\n } else {\n //No group yet, so start a new one in the ret array and push this record into it\n ret.push({ group: (part.PartNameViz + \" \" + record.PartDescriptionViz), items: [record], count: 1 });\n \n }\n\n })\n })\n });\n\n //replace the ayReportData with our new shaped format of data\n reportData.ayReportData = ret;\n\n \n//below to get running totals of THE DATA returned above\n\n\n//below declares a key on the entire wo to hold all Part Net, costs, profit (nets - costs), from all pms so it exists and a key to hold all Part Net Costs\nreportData.AllWOPartsNetViz = 0;\nreportData.AllWOPartsNetCost = 0;\nreportData.AllWOPartsDiff = 0;\n\n\nfor (const EachGroup of reportData.ayReportData) \n\t{\n\n\n\t//below declares a key on the entire group to hold all Part Net, costs, profit/loss (nets - costs), for this group (this group is a single Part that has one or more wo item parts records)\n\tEachGroup.GroupPartsNetViz = 0;\n\tEachGroup.GroupPartsNetCost = 0;\n\tEachGroup.GroupPartsDiff = 0; \n\t\n\n\t//below is to Iterate through each woitempart record for this part - groupitem is a woitempart record\n\tfor (const groupitem of EachGroup.items)\n\t\t{\n\t\t\t\t\t\n\t\t\tgroupitem.ThisItemPartNetViz = 0; //declare a key on the Item to hold all of this item's parts nets and set it initially to 0 \n\t\t\tgroupitem.ThisItemPartNetCost = 0; //declare a key on the Item to hold all of this item's parts costs and set it initially to 0 \n\t\t\tgroupitem.ThisItemPartDiff = 0; //declare a key on the Item to hold all of this item's part profit/loss (nets - costs) and set it initially to 0 \n\t\t\t\n\n\t\t\t//makes sure it has a value before attempting to add it to the running total\n \tif (groupitem.Quantity != 0) \n \t \t{\n\t\t\t\t\t\tEachGroup.GroupPartsNetViz += groupitem.NetViz;\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\treportData.AllWOPartsNetViz += groupitem.NetViz;\t\n\n\n\t\t\t\t\t\tgroupitem.NetCost = (groupitem.Cost * groupitem.Quantity);\t\t\t\t\t\t\n\t\t\t\t\t\tEachGroup.GroupPartsNetCost += groupitem.NetCost;\n\t\t\t\t\t\treportData.AllWOPartsNetCost += groupitem.NetCost;\n\n\n\t\t\t\t\t\tif (groupitem.NetViz != 0) \n\t\t\t\t\t\t{\n\t\t\t\t\t\tgroupitem.NetDiff = (groupitem.NetViz - groupitem.NetCost)\n\t\t\t\t\t\tEachGroup.GroupPartsDiff += groupitem.NetDiff; //\n\t\t\t\t\t\treportData.AllWOPartsDiff += groupitem.NetDiff; //\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n \t \t\t}\t\t\n\t\t\t\n\n\t\t\t\n\t\t}\n\n }\n\n return reportData; \n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"20mm","MarginOptionsRight":"20mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"PM Parts Summary ","Active":true,"Notes":"Custom Prepare to obtain translations, group by the woitempart, derived amounts and running totals","Roles":49258,"AType":21,"IncludeWoItemDescendants":false,"Template":"\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n \n \n \n {{#each items}}\n \n \n \n \n \n \n \n \n \n {{#if NetCost }} {{else}}{{/if}}\n {{#if NetViz }} {{else}}{{/if}}\n {{#if NetDiff }} {{else}}{{/if}} \n \n {{/each}}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{/each}}\n \n
{{ayT 'PM'}} {{ayT 'WorkOrderItemParts'}} {{ayT 'PartCost'}} {{ayT 'NetPrice'}}
 
{{ayT 'Part'}}{{ayT 'PM'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemPartQuantity'}}{{ayT 'PartCost'}} Per{{ayT 'PartRetail'}} Per {{ayT 'PartCost'}} {{ayT 'NetPrice'}}{{ayT 'PartRetail'}} {{ayT 'NetPrice'}}Difference
 
{{group}}
 {{Serial}}{{ayDate NextServiceDate}}{{Quantity}}{{UnitOfMeasureViz}}{{ayCurrency Cost}}{{ayCurrency PriceViz}} {{ayCurrency NetCost}}{{Quantity}}{{ayCurrency NetViz}}{{Quantity}}{{ayCurrency NetDiff}}{{Quantity}}
 
{{ayT 'Total'}} for part {{group}}{{ayCurrency GroupPartsNetCost}}{{ayCurrency GroupPartsNetViz}}{{ayCurrency GroupPartsDiff}}

 
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {{#if AllWOPartsNetCost}} {{else}} {{/if}}\n {{#if AllWOPartsNetViz}} {{else}} {{/if}} \n {{#if AllWOPartsDiff}} {{else}} {{/if}}\n \n \n \n
 
{{ayT 'Total'}} for all {{ayT 'WorkOrderItemParts'}} in this reportAll Net CostAll Net ChargeAll Diff
 {{ ayCurrency AllWOPartsNetCost}}$0.00{{ ayCurrency AllWOPartsNetViz}}$0.00{{ayCurrency AllWOPartsDiff}}$0.00
\n\n","Style":".singlePage\n{\npage-break-after: always;\n\n}\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 14pt; \n color: #9e9e9e;\n text-align: left;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%; \n table-layout: fixed; \n }\n\nth {\n height: 20px;\n font-size: 10pt; \n color: #9e9e9e;\n text-align: center;\n}\n\ntbody td {\n padding: 2px;\n word-wrap: break-word;\n font-size: 9pt;\n text-align: center;\n}\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n font-weight: bold;\n}\n.fontpurple {\n color: purple;\n}\n","JsPrerender":"async function ayPrepareData(reportData){ \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\n\tawait ayGetTranslations([\"WorkOrderItemParts\", \"Part\", \"PMNextServiceDate\", \"WorkOrderItemPartQuantity\", \"PM\", \"NetPrice\", \"PartCost\", \"PartRetail\", \"Total\" ]);\n\n\t//below is the code to group by the part - the PartNameViz\n\tlet ret = [];\n //iterate pms -> items -> pm item parts\n reportData.ayReportData.forEach(pm => {\n pm.Items.forEach(pmitem => {\n pmitem.Parts.forEach(part => {\n //new shape of data required for report \n let record = {\n Serial: pm.Serial,\n\t\t\t\t\tNextServiceDate: pm.NextServiceDate,\n\t\t\t\t\tNetViz: part.NetViz,\n\t\t\t\t\tPriceOverride: part.PriceOverride,\n\t\t\t\t\tListPrice: part.ListPrice,\n UnitOfMeasureViz: part.UnitOfMeasureViz,\n PriceViz: part.PriceViz,\n Cost: part.Cost,\n SuggestedQuantity: part.SuggestedQuantity,\n Quantity: part.Quantity,\n PartWarehouseViz: part.PartWarehouseViz,\n UpcViz: part.UpcViz,\n Serials: part.Serials,\n PartDescriptionViz: part.PartDescriptionViz ?? \"\",\n };\n\n //Find or create group and insert this record \n let groupObject = ret.find(z => z.group == (part.PartNameViz + \" \" + record.PartDescriptionViz) );\n if (groupObject != undefined) {\n //there is already a matching group in the return array so just push this record into it\n groupObject.items.push(record);\n //update the count for this group's items\n groupObject.count++;\n } else {\n //No group yet, so start a new one in the ret array and push this record into it\n ret.push({ group: (part.PartNameViz + \" \" + record.PartDescriptionViz), items: [record], count: 1 });\n \n }\n\n })\n })\n });\n\n //replace the ayReportData with our new shaped format of data\n reportData.ayReportData = ret;\n\n \n//below to get running totals of THE DATA returned above\n\n\n//below declares a key on the entire wo to hold all Part Net, costs, profit (nets - costs), from all pms so it exists and a key to hold all Part Net Costs\nreportData.AllWOPartsNetViz = 0;\nreportData.AllWOPartsNetCost = 0;\nreportData.AllWOPartsDiff = 0;\n\n\nfor (const EachGroup of reportData.ayReportData) \n\t{\n\n\n\t//below declares a key on the entire group to hold all Part Net, costs, profit/loss (nets - costs), for this group (this group is a single Part that has one or more wo item parts records)\n\tEachGroup.GroupPartsNetViz = 0;\n\tEachGroup.GroupPartsNetCost = 0;\n\tEachGroup.GroupPartsDiff = 0; \n\t\n\n\t//below is to Iterate through each woitempart record for this part - groupitem is a woitempart record\n\tfor (const groupitem of EachGroup.items)\n\t\t{\n\t\t\t\t\t\n\t\t\tgroupitem.ThisItemPartNetViz = 0; //declare a key on the Item to hold all of this item's parts nets and set it initially to 0 \n\t\t\tgroupitem.ThisItemPartNetCost = 0; //declare a key on the Item to hold all of this item's parts costs and set it initially to 0 \n\t\t\tgroupitem.ThisItemPartDiff = 0; //declare a key on the Item to hold all of this item's part profit/loss (nets - costs) and set it initially to 0 \n\t\t\t\n\n\t\t\t//makes sure it has a value before attempting to add it to the running total\n \tif (groupitem.Quantity != 0) \n \t \t{\n\t\t\t\t\t\tEachGroup.GroupPartsNetViz += groupitem.NetViz;\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\treportData.AllWOPartsNetViz += groupitem.NetViz;\t\n\n\n\t\t\t\t\t\tgroupitem.NetCost = (groupitem.Cost * groupitem.Quantity);\t\t\t\t\t\t\n\t\t\t\t\t\tEachGroup.GroupPartsNetCost += groupitem.NetCost;\n\t\t\t\t\t\treportData.AllWOPartsNetCost += groupitem.NetCost;\n\n\n\t\t\t\t\t\tif (groupitem.NetViz != 0) \n\t\t\t\t\t\t{\n\t\t\t\t\t\tgroupitem.NetDiff = (groupitem.NetViz - groupitem.NetCost)\n\t\t\t\t\t\tEachGroup.GroupPartsDiff += groupitem.NetDiff; //\n\t\t\t\t\t\treportData.AllWOPartsDiff += groupitem.NetDiff; //\n\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\n\n \t \t\t}\t\t\n\t\t\t\n\n\t\t\t\n\t\t}\n\n }\n\n return reportData; \n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"20mm","MarginOptionsRight":"20mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/PM Scheduled Users.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/PM Scheduled Users.ayrt index 24ba91f6..15425b5f 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/PM Scheduled Users.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/PM Scheduled Users.ayrt @@ -1 +1 @@ -{"Name":"PM Scheduled Users","Active":true,"Notes":"","Roles":50538,"AType":85,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PreventiveMaintenance'}} {{ayT 'WorkOrderItemScheduledUserList'}} List

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each ScheduledUsers}}\n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n\n \n \n\n
{{ayT 'PM'}}{{ayT 'Customer'}}{{ayT 'WorkOrderItemWorkOrderStatusID'}}{{ayT 'WorkOrderItemSummary'}}{{ayT 'WorkOrderItemScheduledUsers'}}{{ayT 'WorkOrderItemScheduledUserStartDate'}}{{ayT 'WorkOrderItemScheduledUserEstimatedQuantity'}}
{{../../Serial}}{{../../CustomerViz}}{{../WorkOrderItemStatusNameViz}}{{../Notes}}{{UserViz}}{{ayDateTime StartDate}}{{EstimatedQuantity}}
\n\n\n
\n\n\n","Style":"body {\r\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \r\n}\r\n\r\n.reporttitle { \r\n margin-bottom: 20pt; \r\n font-weight: bold; \r\n font-size: 13pt; \r\n color: #9e9e9e;\r\n} \r\n\r\ntable { \r\n border-collapse: collapse;\r\n white-space: pre-wrap;\r\n width: 100%;\r\n table-layout: fixed;\r\n }\r\n\r\nth {\r\n height: 20px;\r\n font-size: 10pt; \r\n color: #9e9e9e;\r\n}\r\n\r\ntbody td {\r\n padding: 10px;\r\n word-wrap: break-word;\r\n font-size: 8pt;\r\n}\r\n\r\n\r\ntbody tr:nth-child(even) {\r\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\r\n}\r\n\r\n\r\n.rightlean {\r\n text-align: right;\r\n}\r\n.leftlean {\r\n text-align: left;\r\n}\r\n.centerlean {\r\n text-align: center;\r\n}\r\n\r\n\r\n.fontgreen {\r\n color: green;\r\n font-size: 16pt;\r\n}\r\n.fontblue {\r\n color: blue;\r\n}\r\n.fontred {\r\n color:red;\r\n}\r\n\r\n","JsPrerender":" \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\nasync function ayPrepareData(ayData) { \n\n await ayGetTranslations([ \"PM\", \"PreventiveMaintenance\", \"WorkOrderItemScheduledUsers\", \"WorkOrderItemScheduledUserList\", \"WorkOrder\", \"Customer\", \"WorkOrderItemWorkOrderStatusID\", \"WorkOrderItemSummary\", \"WorkOrderItemScheduledUserStartDate\", \"WorkOrderItemScheduledUserEstimatedQuantity\" ]);\n\n \n return ayData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":0,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"20mm","MarginOptionsRight":"20mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"PM Scheduled Users","Active":true,"Notes":"","Roles":50538,"AType":85,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n

{{ayT 'PM'}} {{ayT 'WorkOrderItemScheduledUserList'}} List

\n
\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n {{#each ayReportData}}\n {{#each Items}}\n {{#each ScheduledUsers}}\n \n \n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n\n \n \n\n
{{ayT 'PM'}}{{ayT 'Customer'}}{{ayT 'WorkOrderItemWorkOrderStatusID'}}{{ayT 'WorkOrderItemSummary'}}{{ayT 'WorkOrderItemScheduledUsers'}}{{ayT 'WorkOrderItemScheduledUserStartDate'}}{{ayT 'WorkOrderItemScheduledUserEstimatedQuantity'}}
{{../../Serial}}{{../../CustomerViz}}{{../WorkOrderItemStatusNameViz}}{{../Notes}}{{UserViz}}{{ayDateTime StartDate}}{{EstimatedQuantity}}
\n\n\n
\n\n\n","Style":"body {\r\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \r\n}\r\n\r\n.reporttitle { \r\n margin-bottom: 20pt; \r\n font-weight: bold; \r\n font-size: 13pt; \r\n color: #9e9e9e;\r\n} \r\n\r\ntable { \r\n border-collapse: collapse;\r\n white-space: pre-wrap;\r\n width: 100%;\r\n table-layout: fixed;\r\n }\r\n\r\nth {\r\n height: 20px;\r\n font-size: 10pt; \r\n color: #9e9e9e;\r\n}\r\n\r\ntbody td {\r\n padding: 10px;\r\n word-wrap: break-word;\r\n font-size: 8pt;\r\n}\r\n\r\n\r\ntbody tr:nth-child(even) {\r\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\r\n}\r\n\r\n\r\n.rightlean {\r\n text-align: right;\r\n}\r\n.leftlean {\r\n text-align: left;\r\n}\r\n.centerlean {\r\n text-align: center;\r\n}\r\n\r\n\r\n.fontgreen {\r\n color: green;\r\n font-size: 16pt;\r\n}\r\n.fontblue {\r\n color: blue;\r\n}\r\n.fontred {\r\n color:red;\r\n}\r\n\r\n","JsPrerender":" \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\nasync function ayPrepareData(ayData) { \n\n await ayGetTranslations([ \"PM\", \"PM\", \"WorkOrderItemScheduledUsers\", \"WorkOrderItemScheduledUserList\", \"WorkOrder\", \"Customer\", \"WorkOrderItemWorkOrderStatusID\", \"WorkOrderItemSummary\", \"WorkOrderItemScheduledUserStartDate\", \"WorkOrderItemScheduledUserEstimatedQuantity\" ]);\n\n \n return ayData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":0,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"20mm","MarginOptionsRight":"20mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file diff --git a/server/AyaNova/resource/rpt/stock-report-templates/PM Units grouped by Customer.ayrt b/server/AyaNova/resource/rpt/stock-report-templates/PM Units grouped by Customer.ayrt index f7f87ac5..e38d0779 100644 --- a/server/AyaNova/resource/rpt/stock-report-templates/PM Units grouped by Customer.ayrt +++ b/server/AyaNova/resource/rpt/stock-report-templates/PM Units grouped by Customer.ayrt @@ -1 +1 @@ -{"Name":"PM Units grouped by Customer","Active":true,"Notes":"","Roles":50538,"AType":88,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n\t\t\t

{{ayT 'PMList'}} {{ayT 'WorkOrderItemUnitList'}} grouped by {{ayT 'Customer'}}

\n\t\t
\n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n \n \n \n {{#each items}}\n {{#each Items}}\n {{#each Units}}\n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n \n \n\n \n \n \n {{/each}}\n \n
{{ayT 'Customer'}}{{ayT 'PreventiveMaintenance'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemUnit'}}{{ayT 'WorkOrderItemWorkOrderStatusID'}}{{ayT 'WorkOrderItemSummary'}}
{{group}}
 {{../../Serial}} {{ayDate ../../NextServiceDate}}{{UnitViz}} - {{UnitModelNameViz}}{{../WorkOrderItemStatusNameViz}}{{../Notes}}
 
 
\n
\n\n \n\n\n","Style":".minimum {\n font-size: 6pt;\n}\n\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData){ \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\n\treportData.ayReportData = ayGroupByKey(reportData.ayReportData, 'CustomerViz')\n\t\n\tawait ayGetTranslations([\"PreventiveMaintenance\", \"PMList\", \"Customer\", \"PMNextServiceDate\", \"WorkOrderItemUnit\", \"WorkOrderItemUnitList\", \"WorkOrderStatus\", \"WorkOrderItemWorkOrderStatusID\", \"WorkOrderItemSummary\", \"WorkOrderSummary\" ]);\n\n\n\n return reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file +{"Name":"PM Units grouped by Customer","Active":true,"Notes":"","Roles":50538,"AType":88,"IncludeWoItemDescendants":false,"Template":"\n\n\n
\n
\n\t\t\t

{{ayT 'PMList'}} {{ayT 'WorkOrderItemUnitList'}} grouped by {{ayT 'Customer'}}

\n\t\t
\n \n \n \n \n \n \n \n \n \n \n \n \n {{#each ayReportData}}\n \n \n \n {{#each items}}\n {{#each Items}}\n {{#each Units}}\n \n \n \n \n \n \n \n \n {{/each}}\n {{/each}}\n {{/each}}\n \n \n \n\n \n \n \n {{/each}}\n \n
{{ayT 'Customer'}}{{ayT 'PM'}}{{ayT 'PMNextServiceDate'}}{{ayT 'WorkOrderItemUnit'}}{{ayT 'WorkOrderItemWorkOrderStatusID'}}{{ayT 'WorkOrderItemSummary'}}
{{group}}
 {{../../Serial}} {{ayDate ../../NextServiceDate}}{{UnitViz}} - {{UnitModelNameViz}}{{../WorkOrderItemStatusNameViz}}{{../Notes}}
 
 
\n
\n\n \n\n\n","Style":".minimum {\n font-size: 6pt;\n}\n\ntfoot {\n border-top: 2px solid #9e9e9e;\n font-size: 7pt;\n text-align: center;\n}\n\n.singlePage\n{\npage-break-after: always;\n}\n\nbody {\n font-family: 'Helvetica', 'Helvetica Neue', Arial, sans-serif; \n}\n\n.reporttitle { \n margin-bottom: 20pt; \n font-weight: bold; \n font-size: 13pt; \n color: #9e9e9e;\n} \n\ntable { \n border-collapse: collapse;\n white-space: pre-wrap;\n width: 100%;\n table-layout: fixed; \n }\n\nth {\n height: 30px;\n font-size: 9pt; \n color: #9e9e9e;\n}\n\ntbody td {\n padding: 10px;\n word-wrap: break-word;\n font-size: 7pt;\n}\n\n\ntbody tr:nth-child(even) {\n background-color: #f8f8f8; /* MUST checkmark Print background in PDF Options for this to show */\n}\n\n\n.rightlean {\n text-align: right;\n}\n.leftlean {\n text-align: left;\n}\n.centerlean {\n text-align: center;\n}\n\n\n.fontgreen {\n color: green;\n}\n.fontblue {\n color: blue;\n}\n.fontred {\n color:red;\n}\n\n","JsPrerender":"async function ayPrepareData(reportData){ \n //this function (if present) is called with the report data \n //before the report is rendered\n //modify data as required here and return it to change the data before the report renders\n //see the help documentation for details\n\n\treportData.ayReportData = ayGroupByKey(reportData.ayReportData, 'CustomerViz')\n\t\n\tawait ayGetTranslations([\"PM\", \"PMList\", \"Customer\", \"PMNextServiceDate\", \"WorkOrderItemUnit\", \"WorkOrderItemUnitList\", \"WorkOrderStatus\", \"WorkOrderItemWorkOrderStatusID\", \"WorkOrderItemSummary\", \"WorkOrderSummary\" ]);\n\n\n\n return reportData;\n}","JsHelpers":"","RenderType":0,"HeaderTemplate":"  ","FooterTemplate":"                Printed date: PDFDate\nPage of                ","DisplayHeaderFooter":true,"PaperFormat":10,"Landscape":true,"MarginOptionsBottom":"15mm","MarginOptionsLeft":"15mm","MarginOptionsRight":"15mm","MarginOptionsTop":"10mm","PageRanges":null,"PreferCSSPageSize":false,"PrintBackground":true,"Scale":1.00000} \ No newline at end of file