Fechar

Funcionária da Vale sorrindo em paisagem verde. Ela veste uniforme verde
da vale, oculos, capacete e protetores auriculares Artefato visual de onda Vale
Imagem de header interno Imagem de header interno
Corrupção é crime e combater essa prática ilegal ainda é um desafio global. O Dia Internacional Contra a Corrupção, 9 de dezembro, lembra a importância do combate à corrupção para a construção de uma sociedade mais justa e igualitária. Conversamos com alguns de nossos líderes sobre o compromisso anticorrupção da nossa empresa.

Como o compromisso com o combate à corrupção está conectado à estratégia da nossa empresa?

Essa conexão começa quando pensamos no que está por trás da nossa estratégia. Queremos construir uma Vale melhor. Queremos ser referência na criação e compartilhamento de valor, não apenas para nossos investidores, mas para a nossa sociedade. E tudo isso passa necessariamente por assumirmos responsabilidade na luta contra a corrupção. Nosso compromisso com o combate à corrupção, além de ser parte dos princípios éticos da Vale, é também parte da nossa agenda ESG (environmental, social and governance). Com cada vez mais transparência e uma governança sólida, contribuímos para essa agenda global que interessa a cada um de nós como cidadãos.”

José Luciano Duarte Penido
Presidente do Conselho de Administração

Combater a corrupção também é colocar em prática o nosso propósito?

Não tenho dúvida disso. Como vamos transformar o futuro se não combatermos um crime que desvia recursos que poderiam ser utilizados para melhorar a saúde, a segurança e a educação da nossa sociedade? Esse é um compromisso básico nosso, não dá para ser diferente. Agir com integridade é necessariamente ter intolerância com qualquer forma injusta de fazer negócios. Na nossa empresa, não existe espaço para nenhum tipo de corrupção ou suborno. E isso depende de cada um de nós, começando pela liderança que deve dar o exemplo. Temos que colocar sempre a ética, os nossos valores e o nosso propósito em prática a cada decisão que tomamos.”

Eduardo Bartolomeo
Presidente da Vale

Em 2022, vimos diversos casos de corrupção, alguns até mesmo envolvendo empresas do setor de mineração. Como nossa empresa está evoluindo na gestão deste risco?

Combater a corrupção é um dos desafios que guia o nosso Programa de Ética & Compliance. Desde o lançamento do Programa, em março de 2021, evoluímos bastante na gestão do risco de corrupção. Implementamos novos controles e testes, estamos automatizando alguns processos de detecção de desvios. Mas tudo isso é compliance, é fazer cumprir a regra. E nós acreditamos que existe algo maior do que isso: a ética. Combater a corrupção depende do comportamento individual de todos que fazem a Vale. É por isso que apostamos também em ações de comunicação e treinamentos sobre este tema, como o Curso Anticorrupção que lançamos este ano durante a Semana da Ética. Precisamos estar capacitados e alinhados aos valores da nossa empresa. É assim que vamos tomar decisões de forma ética e responsável para combatermos a corrupção.”

Denis Cuenca
Diretor de Auditoria e Conformidade
Um erro ocorreu enquanto processava o modelo.
Syntax error in template "44549#44620#460359" in line 28, column 59:
Naming convention mismatch. Identifiers that are part of the template language (not the user specified ones) must consistently use the same naming convention within the same template. This template uses legacy naming convention (directive (tag) names are like examplename, everything else is like example_name) estabilished by auto-detection at line 28, column 45 by token "has_content", but the problematic token, "newsTopicCategory", uses a different convention.
1<#assign 
2    images_path = "/documents/d/guest/" 
3    namespace = "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_" + stringUtil.randomId() 
4/> 
5 
6<#attempt> 
7	<#assign newsTopicVocabularyId = 64872 /> 
8<#recover> 
9	<#assign newsTopicVocabularyId = 0 /> 
10</#attempt> 
11 
12<#function getDisplayPageUrl asset> 
13    <#local 
14        assetRenderer = asset.getAssetRenderer() 
15        baseViewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, asset, !stringUtil.equals(assetLinkBehavior, "showFullContent"))?split("?")?first?split("/-/")?first 
16    /> 
17    <#return baseViewURL?replace(themeDisplay.getURLPortal(), "")/> 
18</#function> 
19 
20<#function getCategoryFilterEndpoint asset> 
21	  <#attempt> 
22   <!-- <#local 
23        newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first 
24        newsTopicCategoryId = newsTopicCategory.getCategoryId() 
25    /> --> 
26			<#local 
27    newsTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == newsTopicVocabularyId)?first!null 
28    newsTopicCategoryId = newsTopicCategory?has_content ? newsTopicCategory.getCategoryId() : null 
29    /> 
30		<#recover> 
31			<#assign newsTopicCategoryId = 0 /> 
32		</#attempt> 
33    <#return  "/-/categories/" + newsTopicCategoryId /> 
34</#function> 
35 
36<#function getDDMFormFieldsValue DDMFormFieldsReferencesMap DDMFormFieldValuesMap fieldReference> 
37    <#local field = DDMFormFieldsReferencesMap[fieldReference].name /> 
38    <#return DDMFormFieldValuesMap[field][0].getValue().getString(locale)!"" /> 
39</#function> 
40 
41<#function getCustomDisplayPageDataAttr customDisplayPageJson categoryFilterEndpoint> 
42    <#local 
43        groupId = customDisplayPageJson.getLong("groupId") 
44        uuid = customDisplayPageJson.getString("id") 
45        privateLayout = customDisplayPageJson.getBoolean("privateLayout") 
46    /> 
47    <#local customDisplayPageDataAttr> 
48        data-vale-custom-display-page='{"groupId":${groupId},"uuid":"${uuid}","privateLayout":${privateLayout?c}}' 
49        data-vale-category-endpoint=${categoryFilterEndpoint} 
50    </#local> 
51    <#return customDisplayPageDataAttr/> 
52</#function> 
53 
54<section class="vale-widget-noticias-relacionadas bg-verde-vale" id="vale-widget-noticias-relacionadas-${namespace}"> 
55    <div class="fragment-container overflow-hidden"> 
56        <div class="container"> 
57            <div class="titulo d-flex justify-content-between mt-7 mb-5"> 
58                <h2 class="text-amarelo-vale"> 
59			            <@liferay.language key="related-news" /> 
60                </h2> 
61                <div class="d-none d-md-flex align-self-center justify-content-end"> 
62                    <img 
63                        class="${namespace} carrossel-card-branco-categoria-button-prev btn btn-primary border-amarelo-vale bg-amarelo-vale mr-3 p-1 rounded-circle" 
64                        src="${images_path}seta-2-esq_bra" 
65                        alt="button-prev" 
66												loading="lazy" 
67                    /> 
68                    <img 
69                        class="${namespace} carrossel-card-branco-categoria-button-next btn btn-primary border-amarelo-vale bg-amarelo-vale p-1 rounded-circle" 
70                        src="${images_path}seta-2-dir_bra" 
71                        alt="button-next" 
72												loading="lazy" 
73                    /> 
74                </div> 
75            </div> 
76            <div class="swiper ${namespace} carrossel-card-branco-categoria"> 
77                <div class="swiper-wrapper mb-sm-6"> 
78                    <#if entries?has_content> 
79                        <#list entries as curEntry> 
80                            <#assign 
81                                assetRenderer = curEntry.getAssetRenderer() 
82                                article = assetRenderer.getArticle() 
83 
84                                categoryFilterEndpoint = getCategoryFilterEndpoint(curEntry) 
85 
86                                DDMFormFieldValuesMap = assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap() 
87                                DDMFormFieldsReferencesMap = assetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true) 
88 
89                                customDisplayPageJsonString = getDDMFormFieldsValue(DDMFormFieldsReferencesMap, DDMFormFieldValuesMap, "customDisplayPage") 
90                                customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString) 
91 
92                                hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content 
93                                customDisplayPageDataAttr = hasCustomDisplayPage?then( 
94                                    getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "") 
95 
96                                displayPageUrl = getDisplayPageUrl(curEntry) + categoryFilterEndpoint 
97                            /> 
98                            <div class="swiper-slide"> 
99                            <a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
100                                <div class="box d-flex flex-column justify-content-between p-3"> 
101                                    <div> 
102                                        <p class="text-amarelo-vale mb-2"> 
103                                            <#assign categories = curEntry.getCategories() /> 
104                                            <#list categories as category> 
105                                                <#if category.vocabularyId == newsTopicVocabularyId> 
106                                                    ${category.name} 
107                                                    <#break> 
108                                                </#if> 
109                                            </#list> 
110                                        </p> 
111                                        <p class="text-verde-aqua"> 
112                                            ${curEntry.getTitle(locale)} 
113                                        </p> 
114                                    </div> 
115                                    <p class="text-cinza-escuro m-0"> 
116                                        <#assign dataField = DDMFormFieldsReferencesMap['data'].name /> 
117                                        <#assign data = DDMFormFieldValuesMap[dataField][0].getValue().getString(locale) /> 
118                                        <#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/> 
119 
120                                        ${date_localized} 
121                                    </p> 
122                                    <img 
123                                        class="onda position-absolute" 
124                                        src="${images_path}onda_verde" 
125																				loading="lazy" 
126                                    /> 
127                                </div> 
128                            </a> 
129                            </div> 
130                        </#list> 
131                    </#if> 
132                </div> 
133            </div> 
134            <a  
135                class="bg-amarelo-vale border-amarelo-vale btn btn-nm btn-primary mb-6"  
136                href="${(locale == 'pt_BR')?then('/todas-as-noticias','/all-then-news')}"  
137                target="_blank" 
138
139                <@liferay.language key="access-all-news" /> 
140            </a> 
141        </div> 
142    </div> 
143</section> 
144 
145<style> 
146.vale-widget-noticias-relacionadas .onda { 
147    position: absolute; 
148    bottom: 1.875rem; 
149    right: -0.125rem; 
150
151 
152.vale-widget-noticias-relacionadas .box { 
153    background-color: var(--branco); 
154    border-left: 10px solid var(--amarelo-vale); 
155    height: 14.6875rem; 
156    margin-bottom: 2rem; 
157
158 
159.vale-widget-noticias-relacionadas p { 
160    display: -webkit-box;  
161    line-clamp: 4; 
162    overflow: hidden; 
163    -webkit-line-clamp: 4; 
164    -webkit-box-orient: vertical; 
165
166 
167@media screen and (min-width: 768px) { 
168    .vale-widget-noticias-relacionadas .box { 
169        border-left: 20px solid var(--amarelo-vale); 
170        height: 11.875rem; 
171
172 
173    .vale-widget-noticias-relacionadas p { 
174        line-clamp: 3; 
175        -webkit-line-clamp: 3; 
176
177
178 
179.vale-widget-noticias-relacionadas .container { 
180    overflow: visible; 
181
182 
183.vale-widget-noticias-relacionadas .swiper { 
184    overflow: visible; 
185
186 
187.vale-widget-noticias-relacionadas .swiper-slide { 
188    width: auto; 
189
190 
191</style> 
192 
193<script> 
194(function(){ 
195 
196var swiper = new Swiper(".${namespace}.carrossel-card-branco-categoria", { 
197    slidesPerView: 1, 
198    spaceBetween: 32, 
199    navigation: { 
200      nextEl: ".${namespace}.carrossel-card-branco-categoria-button-next", 
201      prevEl: ".${namespace}.carrossel-card-branco-categoria-button-prev", 
202      disabledClass: "disabled", 
203      navigationDisabledClass: "disabled", 
204    }, 
205    pagination: { 
206      clickable: true, 
207    }, 
208    slideClass: "swiper-slide", 
209    breakpoints: { 
210        768: { 
211            slidesPerView: 2, 
212        }, 
213        1024: { 
214            slidesPerView: 3, 
215        }, 
216    }, 
217}); 
218 
219  // Tagueamento 
220 
221    const namespace = document.querySelector("#vale-widget-noticias-relacionadas-${namespace}"); 
222 
223    const section = namespace.querySelector("h2").innerText; 
224 
225    const links =  namespace.querySelectorAll("a"); 
226 
227    const handleEventLinkClick = (title, href) => { 
228      Analytics.track("Link", { 
229          section: section, 
230          rotulo: title + " : " + href, 
231      }); 
232    }; 
233 
234    links.forEach(link => { 
235      const text = link.querySelector('p.text-verde-vale'); 
236      const title = text ? text.innerText : ''; 
237      link.addEventListener("click", () => handleEventLinkClick(title, link.href)) 
238    }) 
239 
240    // Configurar URL de página de exibição dinâmica 
241    const displayPageUrls = namespace.querySelectorAll('a[data-vale-custom-display-page]'); 
242    displayPageUrls.forEach(displayPageUrl => { 
243        const customDisplayPage = displayPageUrl.dataset["valeCustomDisplayPage"]; 
244        const categoryEndpoint = displayPageUrl.dataset["valeCategoryEndpoint"]; 
245        Liferay.Service( 
246            '/layout/get-layout-by-uuid-and-group-id', 
247            JSON.parse(customDisplayPage), 
248            layout => { 
249                const friendlyURL = layout["friendlyURL"]; 
250                if (friendlyURL) { 
251                    displayPageUrl.href = friendlyURL + categoryEndpoint; 
252
253
254        ); 
255    }) 
256})() 
257 
258</script> 
Lupa de pesquisa

Não encontrou o que buscava? Acesse nossa Central de Busca