Kearney Solutions – procurement

Asset Publisher

Fehler bei der Verarbeitung der Vorlage.
Java method "com.sun.proxy.$Proxy540.getLatestArticle(long)" threw an exception when invoked on com.sun.proxy.$Proxy540 object "com.liferay.journal.service.impl.JournalArticleLocalServiceImpl@314adc27"; see cause exception in the Java stack trace.

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign jArt = JournalArticleLocalSer...  [in template "20116#20152#1037147" at line 90, column 13]
----
1<#-- 
2Application display templates can be used to modify the look of a 
3specific application. 
4 
5Please use the left panel to quickly add commonly used variables. 
6Autocomplete is also available and can be invoked by typing "${". 
7--> 
8 
9<#assign JournalArticleLocalService = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")> 
10<#assign LayoutLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.LayoutLocalService")> 
11<#assign PortletPreferencesLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.PortletPreferencesLocalService")/> 
12<#assign PropertyFactoryUtil = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.PropertyFactoryUtil") /> 
13<#assign DynamicQueryFactoryUtil = serviceLocator.findService("com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil") /> 
14 
15<#assign portletId = themeDisplay.getPortletDisplay().getId()> 
16<#assign PortletPreferencesLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.PortletPreferencesLocalService")/> 
17<#assign portletPreferencesXML = saxReaderUtil.read((PortletPreferencesLocalService.getPortletPreferences(themeDisplay.getPlid(), portletId)?first).getPreferences())> 
18 
19 
20<#-- Macro used to get specific field text from an Asset Entry --> 
21<#macro entryNode article field> 
22    <#assign document = saxReaderUtil.read(article.getContentByLocale(themeDisplay.getLocale()))> 
23    <#if document.selectSingleNode("/root/dynamic-element[@name='"+field+"']/dynamic-content")??> 
24    "${document.selectSingleNode("/root/dynamic-element[@name='"+field+"']/dynamic-content").getText()?js_string}" 
25    <#else> 
26    "" 
27    </#if> 
28</#macro> 
29 
30<#-- Macro used to get repeatable field text from an Asset Entry --> 
31<#macro entryNodes article field childField> 
32    <#assign document = saxReaderUtil.read(article.getContentByLocale(themeDisplay.getLocale()))> 
33    <#if document.selectNodes("/root/dynamic-element[@name='"+field+"']/dynamic-content")??> 
34
35        <#list document.selectNodes("/root/dynamic-element[@name='"+field+"']/dynamic-content") as curField> 
36
37            ${field}: '${curField.getText()}', 
38            ${childField}: '${curField.selectSingleNode("../dynamic-element[@name='"+childField+"']/dynamic-content").getText()}' 
39
40        </#list> 
41
42    <#else> 
43    [] 
44    </#if> 
45</#macro> 
46 
47<#-- Macro used to get specific portlet preference --> 
48<#macro preference prefKey defaultValue> 
49    <#if portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='"+prefKey+"']/value")??> 
50    "${portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='"+prefKey+"']/value").getText()?js_string}"<#return> 
51    <#else> 
52    "${defaultValue?js_string}"<#return> 
53    </#if> 
54</#macro> 
55 
56<div id="bioGrid_${portletId}"></div> 
57 
58<script> 
59 
60    <#assign gridPagingBehavior> 
61        <@preference prefKey="gridPagingBehavior" defaultValue="Vertical Stack"/> 
62    </#assign> 
63 
64    <#if portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='autoPlay']/value")?? && 
65        portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='autoPlay']/value").getText() == "true"> 
66        <#assign autoplay = "true" /> 
67    <#else> 
68        <#assign autoplay = "false" /> 
69    </#if> 
70 
71    <#assign gridTitle> 
72        <@preference prefKey="gridTitle" defaultValue="" /> 
73    </#assign> 
74     
75    <#assign numColumns> 
76        <@preference prefKey="numColumns" defaultValue="4" /> 
77    </#assign> 
78 
79    var parsedBios = [ 
80	<#if entries?has_content> 
81        <#list entries as curEntry> 
82 
83            <#if portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='usePositionOverTitle']/value")?? && 
84            portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='usePositionOverTitle']/value").getText() == "true"> 
85                <#assign title = "Position" /> 
86            <#else> 
87                <#assign title = "Title" /> 
88            </#if> 
89 
90            <#assign jArt = JournalArticleLocalService.getLatestArticle(curEntry.getClassPK())> 
91
92            	<#if numColumns?contains("1")> 
93                    "fullName": <@entryNode article=jArt field="FullName"/>, 
94                    "gridDescription": <@entryNode article=jArt field=title/>, 
95                    "description": <@entryNode article=jArt field="Description"/>, 
96                    "quote": <@entryNode article=jArt field="Quote"/>, 
97                    "title": <@entryNode article=jArt field=title/>, 
98                    "linkedInURL": <@entryNode article=jArt field="LinkedInURL"/>, 
99                    "additionalLinks": <@entryNodes article=jArt field="AdditionalLink" childField="AdditionalLinkURL"/>, 
100                    "headshot": <@entryNode article=jArt field="CutoutHeadshot"/>, 
101                    "displayType": "1-Wide Bio Grid", 
102                <#else> 
103                    "urlTitle": encodeURIComponent(<@entryNode article=jArt field="FullName"/>), 
104                    "fullName": <@entryNode article=jArt field="FullName"/>, 
105                    "preferredFirstName": <@entryNode article=jArt field="PreferredFirstName"/>, 
106                    "position": <@entryNode article=jArt field="Positon"/>, 
107                    "title": <@entryNode article=jArt field=title />, 
108                    "description": <@entryNode article=jArt field="Description"/>, 
109                    "quote": <@entryNode article=jArt field="Quote"/>, 
110                    "emailURL": <@entryNode article=jArt field="EmailURL"/>, 
111                    "linkedInURL": <@entryNode article=jArt field="LinkedInURL"/>, 
112                    "additionalLinks": <@entryNodes article=jArt field="AdditionalLink" childField="AdditionalLinkURL"/>, 
113                    "headshot": <@entryNode article=jArt field="CutoutHeadshot"/>, 
114            	</#if> 
115 
116				<#assign query = PortletPreferencesLocalService.dynamicQuery().add(PropertyFactoryUtil.forName("portletId").like("%com_liferay_journal_content_web_portlet_JournalContentPortlet%")).add(PropertyFactoryUtil.forName("preferences").like("%<value>" + jArt.getArticleId() + "</value>%")) > 
117 
118				<#assign recordset = PortletPreferencesLocalService.dynamicQuery(query)> 
119 
120				<#if recordset?has_content> 
121 
122                    <#list recordset as curRecord> 
123                        <#assign friendlyURL = LayoutLocalService.getLayout(curRecord.getPlid()?number).getFriendlyURL() > 
124                    </#list> 
125 
126                    "bioURL": '${friendlyURL}' 
127 
128                <#else> 
129                    "bioURL": '' 
130                </#if> 
131            }, 
132        </#list> 
133    </#if> 
134    ]; 
135 
136    var ensureFieldNotEmpty = function (bio, field) { 
137        var value = bio[field]; 
138        return value !== undefined && value !== null && value !== ""; 
139    }; 
140 
141    var bios = _.filter(parsedBios, function (bio) { 
142    	<#if numColumns?contains("1")> 
143            return ensureFieldNotEmpty(bio, "gridDescription") && ensureFieldNotEmpty(bio, "byline") && ensureFieldNotEmpty(bio, "headshot"); 
144        <#else> 
145            return ensureFieldNotEmpty(bio, "title") && ensureFieldNotEmpty(bio, "fullName") && ensureFieldNotEmpty(bio, "headshot"); 
146    	</#if> 
147    }); 
148 
149    console.log("Filtered out " + (parsedBios.length - bios.length) + " bios with incomplete content"); 
150 
151	<#if (gridPagingBehavior?contains("Carousel")) && (entries?has_content) && (entries?size > 0)> 
152 
153    //Create the carousel navigation arrows and carousel root element 
154 
155    var bioGroups = []; 
156 
157    while (bios.length > 0) { 
158        var temp = {}; 
159        temp.elements = bios.splice(0,8); 
160        temp.gridComponent = 'bio'; 
161        temp.expandedSectionComponent = 'bio'; 
162        temp.columns = 4; 
163        bioGroups.push(temp); 
164
165 
166    var carouselProps = { 
167        entries: bioGroups, 
168        fullWidthDisplay: false, 
169        greyBackground: false, 
170        autoplay: ${(autoplay == "true")?c} 
171    }; 
172 
173    ATK.React.Component.BioGridCarousel('bioGrid_${portletId}', carouselProps); 
174 
175    <#else> 
176 
177        <#if portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='expandableMicroBios']/value")?? && 
178            portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='expandableMicroBios']/value").getText() == "true"> 
179            <#assign disableExpand = "false" /> 
180        <#else> 
181            <#assign disableExpand = "true" /> 
182        </#if> 
183 
184        <#if portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='greyBackground']/value")?? > 
185            <#assign greyBackground = portletPreferencesXML.selectSingleNode("/portlet-preferences/preference[name='greyBackground']/value").getText()?js_string /> 
186        <#else> 
187            <#assign greyBackground = "None" /> 
188        </#if> 
189 
190        ATK.React.App.ExpandingGrid("bioGrid_${portletId}", parseInt(${numColumns}), "bio", "bio", parsedBios, "${disableExpand}" === "true", "${greyBackground}", ${gridTitle}); 
191    </#if> 
192 
193</script> 

Asset Publisher

Asset Publisher

Asset Publisher

Kearney Solutions – Procurement > Body Content

What areas does the procurement team specialize in?

Category management

We equip clients with the expertise, tools, and ongoing support required to manage categories, maximize savings, and assure process efficiency. We provide assistance in all areas.

Supply chain management

We transform supply chain performance—whether that means changing regional and global strategies, streamlining the product mix, tightening operations, adopting inventory programs, or improving processes and competencies.

 

Transformation

We work with clients to assess their current enterprise-wide supply management capabilities (people, processes, and technology) to determine the most significant gaps relative to best practices and to chart a road map to improved performance.

Supplier relationship management

We help companies develop strategic supplier relationships to manage risk, encourage innovation, generate returns, and identify cost-saving opportunities that yield significant benefits for both parties.