eds-home-Saúde

Saúde

Navegação da Categoria do Comércio

Navegação da Categoria do Comércio

Filtre
Enfermagem
Farmácia
Gestão em Saúde
Hemoterapia e Análises Clínicas
Massoterapia e Terapias Complementares
Nutrição
Odontologia
Optica
Podologia
Radiologia

eds-home-Enfermagem

Editor de produto

Um erro ocorreu enquanto processava o modelo.
The following has evaluated to null or missing:
==> serviceLocator.findService("br.senac.sp.editora.services.service.ProductService")  [in template "20102#20129#43698982" at line 6, column 27]

----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----

----
FTL stack trace ("~" means nesting-related):
	- Failed at: #assign productService = serviceLocat...  [in template "20102#20129#43698982" at line 6, column 1]
----
1<#setting locale="pt_BR"> 
2 
3<#assign commerceOrderLocalService = serviceLocator.findService("com.liferay.commerce.service.CommerceOrderLocalService")> 
4<#assign contentHelper = serviceLocator.findService("com.liferay.commerce.product.content.util.CPContentHelper") /> 
5<#assign definitionHelper = serviceLocator.findService("com.liferay.commerce.product.util.CPDefinitionHelper") /> 
6<#assign productService = serviceLocator.findService("br.senac.sp.editora.services.service.ProductService") /> 
7<#assign userLocalService = serviceLocator.findService("com.liferay.portal.kernel.service.UserLocalService")> 
8<#assign warehouseService = serviceLocator.findService("com.liferay.commerce.inventory.service.CommerceInventoryWarehouseItemLocalService") /> 
9 
10<#assign companyId =  userLocalService.getUser(themeDisplay.getUserId()).getCompanyId() /> 
11 
12<div class="container"> 
13    <div class="row resultado"> 
14        <#if entries?has_content> 
15        	<#list entries as curCPCatalogEntry> 
16        	    <#assign friendlyURL = definitionHelper.getFriendlyURL(curCPCatalogEntry.getCPDefinitionId(),themeDisplay)> 
17            	<div class="col-md-3 col-xs-12 itemContainerResultado"> 
18            	  <div class="itemContainerResultado-content"> 
19            	    <a href="${friendlyURL}"> 
20                        <#assign cpMedia = contentHelper.getImages(curCPCatalogEntry.getCPDefinitionId(), themeDisplay) /> 
21                        <#list cpMedia as media> 
22                              <img src="${media.getURL()}"/> 
23                              <#break> 
24                        </#list> 
25                    </a> 
26                    <div class="infoProdutoResultado"> 
27                            <div class="infoSuperiores"> 
28                                <a href="${friendlyURL}"> 
29                                    <div class="tituloProdutoResultado"> 
30                                        <#if curCPCatalogEntry.name?length &gt; 0 > 
31                                            ${curCPCatalogEntry.name?truncate(60, '...')} 
32                                        </#if> 
33                                    </div> 
34                                    <div class="tituloAutorResultado"> 
35                                        <#list contentHelper.getCategorizedCPDefinitionSpecificationOptionValues(curCPCatalogEntry.getCPDefinitionId(),43620166) as specs>   
36                            	            <#if specs.CPSpecificationOptionId == 43594743> 
37                                                ${specs.getValueCurrentValue()?truncate(45, '...')} 
38                                                <#break> 
39                                            </#if> 
40                                        </#list> 
41                                    </div> 
42                                </a> 
43                            </div> 
44                             
45                            <div class="valorResultado"> 
46                                <@liferay_commerce_ui["price"] 
47        							             CPCatalogEntry=curCPCatalogEntry 
48        						            /> 
49                            </div> 
50                            <div class="divEspiarResultado"> 
51                              <#if productService.isAvailable( curCPCatalogEntry.getCPDefinitionId() ) && warehouseService.getStockQuantity(companyId,curCPCatalogEntry.CPSkus[0].getSku()) gt 0 > 
52                                  <span class="comprarResultado"> 
53                                     <#assign PortalUtil = staticUtil["com.liferay.portal.kernel.util.PortalUtil"] /> 
54                					 <#assign id = "add-to-cart" + PortalUtil.generateRandomKey(request, "add-to-cart") + "" + curCPCatalogEntry.CPSkus[0].getSku() /> 
55                					 <@liferay_commerce_ui["add-to-cart"] 
56                					   CPInstanceId=curCPCatalogEntry.CPSkus[0].getCPInstanceId() 
57                					   id=id 
58                					  /> 
59                                  </span> 
60                              <#else> 
61                                  <span class="comprarCarrossel4"> 
62                                     <button class="btnIndisponivelEspecialCarrossel4" disabled>Livro Indisponível</button> 
63                                  </span> 
64                              </#if> 
65                            </div> 
66                        </div> 
67                  </div> 
68                </div> 
69        	</#list> 
70        </#if> 
71    </div> 
72</div> 
73 
74<style> 
75 
76	.comprarResultado  div.form-group { 
77		display: none; 
78
79	.comprarResultado { 
80	  margin-top: 0px; 
81
82	span.price-value-final { 
83	  color: #D2691E; 
84
85	.price-value { 
86	  font-size: .8rem !important; 
87
88	.price-value-final { 
89	  font-size: 1rem !important; 
90
91    .valorResultado span.product-price { 
92        font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-bold) var(--unnamed-font-size-18)/var(--unnamed-line-spacing-17) var(--unnamed-font-family-montserrat); 
93        letter-spacing: var(--unnamed-character-spacing-0); 
94        color: var(--unnamed-color-f6921e); 
95        text-align: left; 
96        font: normal bold 18px/17px Montserrat; 
97        letter-spacing: 0px; 
98        color: #F6921E; 
99        opacity: 1; 
100        font-weight: 600; 
101        float: left; 
102        clear: left; 
103
104     
105    .valorResultado span.product-price::before { 
106        content: attr(data-content); 
107        font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-medium) var(--unnamed-font-size-12)/var(--unnamed-line-spacing-22) var(--unnamed-font-family-montserrat); 
108        letter-spacing: var(--unnamed-character-spacing-0); 
109        color: var(--unnamed-color-454f63); 
110        text-align: left; 
111        font-weight: 200; 
112        letter-spacing: 0px; 
113        color: #454F63; 
114
115     
116	.btnIndisponivelEspecialCarrossel4 { 
117	  border-radius: 4px; 
118    width: 206px; 
119    padding: 1px; 
120		margin-top: 0.75rem !important; 
121
122     
123    .valorResultado span.product-promo-price { 
124        float: left; 
125        font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-medium) var(--unnamed-font-size-14)/var(--unnamed-line-spacing-22) var(--unnamed-font-family-montserrat); 
126        letter-spacing: var(--unnamed-character-spacing-0); 
127        color: var(--unnamed-color-454f63); 
128        text-align: left; 
129        text-decoration: line-through; 
130        font-weight: 200; 
131        letter-spacing: 0px; 
132        color: #454F63; 
133
134     
135    .valorResultado span.product-promo-price::before { 
136        content: "De: "; 
137        font: var(--unnamed-font-style-normal) normal var(--unnamed-font-weight-medium) var(--unnamed-font-size-12)/var(--unnamed-line-spacing-22) var(--unnamed-font-family-montserrat); 
138        letter-spacing: var(--unnamed-character-spacing-0); 
139        color: var(--unnamed-color-454f63); 
140        text-align: left; 
141        font-weight: 200; 
142        letter-spacing: 0px; 
143        color: #454F63; 
144
145     
146    .valorResultado span.commerce-discount{ 
147        display: none; 
148
149     
150    .comprarResultado .add-to-cart-quantity-marker.active { 
151        opacity: 0; 
152        display: none; 
153
154 
155    .comprarResultado  form.quantity-selector { 
156        display: none; 
157
158 
159    .comprarResultado  button.btn.btn-primary { 
160        background-color: #5ACC75; 
161        width: 206px; 
162        padding: 1px; 
163        justify-content: center;  
164        padding-left: 13%; 
165
166     
167    a.dropdown-toggle.page-link { 
168        display: none; 
169
170 
171    @media (max-width: 767px){ 
172        .btnIndisponivelEspecialCarrossel4  { 
173            width: calc(100vw - 150px); 
174
175         
176        .comprarResultado  button.btn.btn-primary.btn-lg.btn-add-to-cart.btn-add-to-cart-inline{ 
177            width: calc(100vw - 150px); 
178            padding-left: 5%; 
179            height: 30px; 
180
181        .comprarCarrossel4 {  
182         
183            margin-top: -8px; 
184
185 
186        .page-item.active .page-link, .nav-underline .tab.active a.page-item .page-link{ 
187            color:#FFFFFF; 
188            font-weight: 600; 
189            background-color: #F6921E; 
190
191     
192        .valorResultado span.product-price { 
193            font: normal normal bold 16px/17px Montserrat; 
194
195        .valorResultado span.product-promo-price { 
196            font: normal normal nomal 15px/16px Montserrat; 
197
198        .pagination-items-per-page{ 
199            display : none; 
200
201        .pagination-results{ 
202            font-size: 12px !important; 
203            font-weight: 500 !important; 
204
205         
206        .page-item.active .page-link, .nav-underline .tab.active a.page-item .page-link{ 
207            color:#FFFFFF; 
208            font-weight: 600; 
209            background-color: #F6921E; 
210
211         
212
213     
214</style> 
215 
216<script> 
217	 
218			if (typeof promoPrice !== 'undefined') { 
219      	promoPrice = document.getElementsByClassName("price"); 
220
221			else { 
222      	promoPrice = document.getElementsByClassName("price"); 
223
224	 
225			for (let i = 0; i < document.getElementsByClassName("price").length; i++) { 
226				let carrossel = document.getElementsByClassName("price"); 
227				if(carrossel[i].children.length < 5) { 
228					carrossel[i].children[0].innerText = "Por:" 
229					carrossel[i].children[1].style.color = "#D2691E" 
230					carrossel[i].children[1].style.marginLeft = ".5rem" 
231					carrossel[i].style.marginTop = "24px" 
232
233				else if (carrossel[i].children.length > 7){ 
234			    carrossel[i].children[0].innerHTML = "<del>De:</del>" 
235					carrossel[i].children[0].style.color = "#78849e" 
236					carrossel[i].children[1].classList.remove("price-value-inactive") 
237			    let priceBefore = carrossel[i].children[1].innerText 
238					carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>' 
239					carrossel[i].children[1].style.color = "#78849e" 
240									 
241					carrossel[i].children[2].style.display = "none" 
242					carrossel[i].children[3].style.display = "none" 
243					carrossel[i].children[4].innerText = "Por:" 
244					carrossel[i].children[5].style.display = "none" 
245					carrossel[i].children[6].style.display = "none" 
246					carrossel[i].children[7].style.color = "#D2691E" 
247					carrossel[i].children[7].style.marginLeft = ".5rem" 
248					carrossel[i].style.marginTop = "10px" 
249
250				else { 
251					carrossel[i].children[0].innerHTML = "<del>De:</del>" 
252					carrossel[i].children[0].style.color = "#78849e" 
253					carrossel[i].children[1].classList.remove("price-value-inactive") 
254					let priceBefore = carrossel[i].children[1].innerText 
255					carrossel[i].children[1].innerHTML = '<del>'+priceBefore+'</del>' 
256					carrossel[i].children[1].style.color = "#78849e" 
257					carrossel[i].children[2].style.display = "none" 
258					carrossel[i].children[3].style.display = "none" 
259					carrossel[i].children[4].innerText = "Por:" 
260					carrossel[i].children[5].style.color = "#D2691E" 
261					carrossel[i].children[5].style.marginLeft = ".5rem" 
262					carrossel[i].style.marginTop = "10px" 
263
264
265	 
266    $(function(){ 
267      if(screen.width < 768){ 
268        var paginacao = $("[class*='pagination-results']").text() 
269        paginacao = paginacao.split(' '); 
270        console.log(paginacao); 
271        $("[class*='pagination-results']").html(paginacao[0]+' '+paginacao[1]+' - '+paginacao[3]+' '+paginacao[4]+' '+paginacao[5]+' livros'); 
272
273    }); 
274     
275    function atualizarCarrinho(){ 
276       var menu = $('.ssp-mega-menu__wrapper') 
277       menu.id = "eds-ssp-mega-menu-wrapper" 
278        $("#eds-ssp-mega-menu-wrapper" ).load(window.location.href + " #eds-ssp-mega-menu-wrapper" ); 
279
280    
281   function criarCarrinhoEPostCartItem(cpInstanceId, cpDefinitionId, bodyCart){ 
282       var urlCreateCart = "${themeDisplay.getURLPortal()}/o/headless-commerce-delivery-cart/v1.0/channels/23978336/carts" 
283        
284       $.ajax({ 
285                contentType: "application/json", 
286                headers: { 
287                    "x-csrf-token": Liferay.authToken, 
288                    "accept": "application/json" 
289                }, 
290                method: "POST", 
291                url: urlCreateCart, 
292                data: JSON.stringify(bodyCart), 
293                 
294                success: function( data ){ 
295                    postCartItem(cpInstanceId, cpDefinitionId, data) 
296
297        }) 
298
299    
300   function postCartItem(cpInstanceId, cpDefinitionId, carrinho){ 
301        cartId = carrinho.id 
302         
303        var url2 = "${themeDisplay.getURLPortal()}/o/headless-commerce-delivery-cart/v1.0/carts/"+ cartId + "/items" 
304 
305        var body =  { 
306                      "productId": cpDefinitionId, 
307                      "quantity": 1, 
308                      "skuId": cpInstanceId 
309
310                     
311                     
312        $.ajax({ 
313            contentType: "application/json", 
314            headers: { 
315                "x-csrf-token": Liferay.authToken, 
316                "accept": "application/json" 
317            }, 
318            method: "POST", 
319            url: url2, 
320            data: JSON.stringify(body), 
321             
322            success: function( data ){ 
323                atualizarCarrinho() 
324
325        }) 
326
327    
328    
329   function addCartItem(cpInstanceId, cpDefinitionId){ 
330        cpDefinitionId += 1 
331        var accountId = 0 
332        var carrinho = null 
333         
334        var url1 = "${themeDisplay.getURLPortal()}/o/headless-commerce-delivery-cart/v1.0/channels/23978336/carts" 
335         
336        var urlCreateCart = "${themeDisplay.getURLPortal()}/o/headless-commerce-delivery-cart/v1.0/channels/23978336/carts" 
337         
338        var userId = Liferay.ThemeDisplay.getUserId() 
339         
340        var bodyCart =  { 
341                            "accountId": accountId, 
342                            "currencyCode": "BRL" 
343
344         
345        Liferay.Service('/commerce.commerceaccount/get-personal-commerce-account', 
346
347            userId: userId 
348          }, 
349          function(obj) { 
350            accountId = obj.commerceAccountId 
351            bodyCart.accountId = accountId 
352
353        ); 
354         
355        $.ajax({ 
356                contentType: "application/json", 
357                headers: { 
358                    "x-csrf-token": Liferay.authToken, 
359                    "accept": "application/json" 
360                }, 
361                method: "GET", 
362                url: url1, 
363                 
364                success: function( data ){ 
365                    for(var i = 0; i < data.items.length; i++){ 
366                        if(data.items[i].accountId == accountId){ 
367                            carrinho = data.items[i] 
368                            break 
369
370                             
371
372                    if(carrinho == null || carrinho == undefined){ 
373                       criarCarrinhoEPostCartItem(cpInstanceId, cpDefinitionId, bodyCart)  
374
375                    else{ 
376                        postCartItem(cpInstanceId, cpDefinitionId,carrinho) 
377
378
379        }) 
380
381</script> 

eds-newsletter

QUER FICAR POR DENTRO DE PROMOÇÕES E NOVIDADES?