Visualización del menú
- Home
- Bebé
- Óptica
- Cuidados
- Bienestar
- Complementos nutrición
- Sueño y relax
- Energía y defensas
- Bienestar digestivo
- Probióticos
- Salud Mujer
- Vitalidad y nutrición
- Infusiones
- Caramelos y edulcorantes
- Deporte y actividad
- Afecciones de invierno
- Atopia
- Vuelta al cole
- Anticaída
- En tu farmacia
- Resultados de búsqueda
- Blog
- Política de cookies
- Contactanos
- Seguridad
- Política de privacidad
- Aviso legal
- PruebaCategoria
- OJOS SENSIBLES
- Ojos y labios
- ANTI PUNOS NEGROS
- CUENTA GOTAS
- TEXTURA ULTRA LIGERA
- TOLERANCIA TESTADA A NIVEL DERMATOLÓGICO Y OFTÁLMICO
- Baño e hidratación
- Tratamientos específicos
Visualización del menú
Ruta de navegación
Publicador de contenidos
Java method "com.cofares.services.impl.GoogleMapsDataServiceImpl.getGoogleMapsData(String, String, long, long, String, String, String, String, String)" threw an exception when invoked on com.cofares.services.impl.GoogleMapsDataServiceImpl object "com.cofares.services.impl.GoogleMapsDataServiceImpl@200d3722"; see cause exception in the Java stack trace. ---- FTL stack trace ("~" means nesting-related): - Failed at: #assign farmacias = GoogleMapsDataSer... [in template "20095#20121#70868" at line 252, column 1] ----
1<#assign JSONFactoryUtil = staticUtil["com.liferay.portal.kernel.json.JSONFactoryUtil"]/>
2<script async src="https://maps.google.com/maps/api/js?v=3&libraries=geometry,places&key=AIzaSyADxO5pq3U3jcHoM1SMQ9FFvIPlENolN5k"></script>
3<script src="https://cdn.rawgit.com/googlemaps/js-marker-clusterer/gh-pages/src/markerclusterer.js"></script>
4
5<script type="text/javascript">
6 var centros = [];
7 var gmarkers = [];
8 var gmarkersshow = [];
9 var side_bar_html = "";
10 var map, marker_you, userMarker, directionsService, directionsDisplay, infowindow, markerCluster;
11 var geoActive = true;
12 var geocoder;
13
14 var defaultCoordinates = { coords: { latitude: 36.5, longitude: -13.0 } };
15 var defaultZoomLevel = 16;
16
17 function addCentros(contador, direccion, latitud, longitud, enlace, telefono) {
18 var entryLocation = [direccion, latitud, longitud, enlace, telefono];
19 centros[contador] = entryLocation;
20 }
21
22 function showError() {
23 console.log("showError");
24 defaultZoomLevel = 5;
25 initializeMaps(defaultCoordinates);
26 }
27
28 function createMarker(latlng, html_infow, html_res, indice) {
29 var contentString = html_infow;
30 var marker = new google.maps.Marker({
31 icon: '/documents/20119/0/marker.png',
32 position: latlng,
33 zIndex: Math.round(latlng.lat * -100000) << 5,
34 info: html_res,
35 ind: indice,
36 visible: false // Ocultar los marcadores de farmacias al inicio
37 });
38
39 google.maps.event.addListener(marker, 'click', function () {
40 infowindow.setContent(contentString);
41 infowindow.open(map, marker);
42 });
43
44 gmarkers.push(marker);
45 return marker;
46 }
47
48 function initLoad() {
49 geocoder = new google.maps.Geocoder();
50 if (navigator.geolocation) {
51 navigator.geolocation.getCurrentPosition(initializeMaps, showError, { enableHighAccuracy: true, maximumAge: 0 });
52 } else {
53 initializeMaps(defaultCoordinates);
54 }
55 }
56
57 function initializeMaps(userPosition) {
58 userMarker = userPosition;
59
60 var myOptions = {
61 zoom: defaultZoomLevel,
62 center: new google.maps.LatLng(userPosition.coords.latitude, userPosition.coords.longitude),
63 mapTypeId: google.maps.MapTypeId.ROADMAP
64 };
65
66 map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
67 infowindow = new google.maps.InfoWindow({ size: new google.maps.Size(150, 50) });
68
69 directionsService = new google.maps.DirectionsService();
70 directionsDisplay = new google.maps.DirectionsRenderer();
71
72 loadCentros();
73 $(".js_input_dir").select();
74 mostrarTodasLasFarmacias();
75
76 google.maps.event.addListener(map, 'idle', function() {
77 actualizarFarmaciasVisibles();
78 });
79 }
80
81 function loadCentros() {
82 for (var i = 0; i < centros.length; i++) {
83 try {
84 var latlng = { lat: parseFloat(centros[i][1]), lng: parseFloat(centros[i][2]) };
85 var html_infow = '<div id="content_gmap"><p class="center_address">' + centros[i][0] + '</p><p><a href="tel:' + centros[i][4] + '">' + centros[i][4] + '</a></p><a class="btn-link" href="javascript:void(0);" onclick="arriveTo(\'' + centros[i][1] + '\', \'' + centros[i][2] + '\');"> Cómo llegar </a></div>';
86 var html_res = '<div id="content_gmap"><p class="center_address">' + centros[i][0] + '</p><p><a href="tel:' + centros[i][4] + '">' + centros[i][4] + '</a></p><a class="btn-link" href="javascript:void(0);" onclick="arriveTo(\'' + centros[i][1] + '\', \'' + centros[i][2] + '\');"> Cómo llegar </a></div>';
87 createMarker(latlng, html_infow, html_res, i);
88 } catch (error) {
89 // Manejo de error al cargar la farmacia
90 }
91 }
92 }
93
94 function mostrarTodasLasFarmacias() {
95 var bounds = new google.maps.LatLngBounds();
96 side_bar_html = '<div class="info_container">';
97 for (var i = 0; i < gmarkers.length; i++) {
98 bounds.extend(gmarkers[i].getPosition());
99 var distanceText = calculateDistance(gmarkers[i].getPosition());
100 side_bar_html += '<div class="info_fcia_side_bar div_side_bar_' + i + '">';
101 side_bar_html += '<div class="info_fcia_distance">' + distanceText + '</div>';
102 side_bar_html += gmarkers[i].info.replace("{index}", i);
103 side_bar_html += '</div>';
104 }
105 side_bar_html += '</div>';
106 document.getElementById("side_bar").innerHTML = "<div class=\"titulosidebar\"><p class=\"title_results_gmaps\"><strong>" + gmarkers.length + " farmacias</strong> encontradas:</p></div>" + side_bar_html;
107
108 applyMarkerCluster();
109 }
110
111 function applyMarkerCluster() {
112 if (markerCluster) markerCluster.clearMarkers();
113
114 var clusterStyles = [{
115 url: 'https://developers.google.com/maps/documentation/javascript/examples/markerclusterer/m1.png',
116 height: 50,
117 width: 50,
118 textColor: '#ffffff',
119 textSize: 8
120 }];
121
122 markerCluster = new MarkerClusterer(map, gmarkers, {
123 styles: clusterStyles,
124 gridSize: 50,
125 maxZoom: 12,
126 zoomOnClick: false
127 });
128
129 google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
130 var markers = cluster.getMarkers();
131 if (map.getZoom() >= 13) {
132 for (var i = 0; i < markers.length; i++) {
133 markers[i].setVisible(true);
134 }
135 }
136 map.fitBounds(cluster.getBounds());
137 });
138 }
139
140 function actualizarFarmaciasVisibles() {
141 var bounds = map.getBounds();
142 side_bar_html = '<div class="info_container">';
143 var gmarkersshow = [];
144
145 for (var i = 0; i < gmarkers.length; i++) {
146 if (bounds.contains(gmarkers[i].getPosition())) {
147 gmarkers[i].setMap(map);
148 gmarkers[i].setVisible(map.getZoom() >= 13);
149 gmarkersshow.push(gmarkers[i]);
150
151 var distanceText = calculateDistanceFromUser(gmarkers[i].getPosition());
152 side_bar_html += '<div class="info_fcia_side_bar div_side_bar_' + i + '">';
153 side_bar_html += '<div class="info_fcia_distance"><span class="text-base">' + distanceText + '</span></div>';
154 side_bar_html += gmarkers[i].info.replace("{index}", i);
155 side_bar_html += '</div>';
156 } else {
157 gmarkers[i].setVisible(false);
158 }
159 }
160
161 side_bar_html += '</div>';
162 document.getElementById("side_bar").innerHTML = "<div class=\"titulosidebar\"><p class=\"title_results_gmaps\"><strong>" + gmarkersshow.length + " farmacias</strong> encontradas:</p></div>" + side_bar_html;
163 }
164
165 function calculateDistanceFromUser(markerPosition) {
166 if (!userMarker) return "N/A";
167 var userLocation = new google.maps.LatLng(userMarker.coords.latitude, userMarker.coords.longitude);
168 var markerLocation = new google.maps.LatLng(markerPosition.lat(), markerPosition.lng());
169 var distance = google.maps.geometry.spherical.computeDistanceBetween(userLocation, markerLocation);
170 return (distance / 1000).toFixed(2) + " km";
171 }
172
173 function calculateDistance(markerPosition) {
174 if (!userMarker) return "N/A";
175 var userLocation = new google.maps.LatLng(userMarker.coords.latitude, userMarker.coords.longitude);
176 var markerLocation = new google.maps.LatLng(markerPosition.lat(), markerPosition.lng());
177 var distance = google.maps.geometry.spherical.computeDistanceBetween(userLocation, markerLocation);
178 return (distance / 1000).toFixed(2) + " km";
179 }
180
181 function codeAddress() {
182 if (directionsDisplay) directionsDisplay.setMap(null);
183 $("#map_indications").html("");
184
185 var searchAddress = $("#address").val();
186 if (searchAddress) {
187 setTimeout(function () {
188 $(".div_lista").fadeIn();
189 exe_code_address(searchAddress);
190 }, 200);
191 }
192 }
193
194 function exe_code_address(searchAddress) {
195 if (!searchAddress) return;
196
197 // Utiliza un debouncer para evitar llamadas excesivas
198 if (this.searchTimeout) clearTimeout(this.searchTimeout);
199
200 // Esperar 300ms antes de ejecutar la búsqueda
201 this.searchTimeout = setTimeout(async () => {
202 try {
203 const results = await geocodeAddress(searchAddress);
204
205 if (results && results.length > 0) {
206 map.setCenter(results[0].geometry.location);
207 map.setZoom(16); // Ajusta el nivel de zoom según sea necesario
208 marker_you = new google.maps.Marker({ map: map, position: results[0].geometry.location });
209 actualizarFarmaciasVisibles();
210 }
211 } catch (error) {
212 //console.error("Error en la búsqueda de direcciones
213 }
214 }, 300); // Retardo de 300ms para evitar búsquedas continuas mientras se escribe
215 }
216
217 function geocodeAddress(searchAddress) {
218 return new Promise((resolve, reject) => {
219 geocoder.geocode({ address: searchAddress }, function (results, status) {
220 if (status === google.maps.GeocoderStatus.OK) {
221 resolve(results);
222 } else {
223 reject(new Error("Error en la geocodificación: " + status));
224 }
225 });
226 });
227 }
228
229 function arriveTo(lat, lng) {
230 var destination = lat + ',' + lng;
231 var mapsUrl = 'https://www.google.com/maps/dir/?api=1&destination=' + destination;
232 window.open(mapsUrl, '_blank');
233 }
234</script>
235
236
237<#assign getterUtil = staticUtil["com.liferay.portal.kernel.util.GetterUtil"]/>
238<#assign groupId = themeDisplay.getScopeGroupId()/>
239<#assign journalArticleLocalServiceUtil = serviceLocator.findService("com.liferay.journal.service.JournalArticleLocalService")/>
240<#assign GoogleMapsDataService = serviceLocator.findService("com.cofares.services.api.GoogleMapsDataService")/>
241<#assign structureID = 3904526/>
242<#assign googleMapsDataPrivateKey = "-----BEGIN PRIVATE KEY-----\nMIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDEZ0FwXxBcrXvm\nXHCBfs5TEm+g/5BuDXhhMKh9Pbj/MGk1ozCyFFQFq57YBhW1FfJoKPfZLS7kY0My\nbY29IFZ75f6DQbJfk1Vvdy9HhXZV8SWm5FseLaHGE4bUBMPg8bU5QXMU80ux6Lyp\nAH99cIZ5BmoJ0JkcnLQ8FitMgobnB+tv1ZkJy+4Sbf/gxqubhyqy4OaojcGARleC\nlV/nQDxcnhandiiZGZ+szBc9rSiHJ0eDbvksHUOn1Hk2s+3oOyU2dBNorWGkbaRB\nKbE06rF+zgPP3c5g7goz+osbd06sXpA2xoIOUERlx5/vphcC0YFoXyKUKPzdPn9I\nk/2VohyJAgMBAAECggEADf48IgkorZNP4KdIZFy7aLbHcxIr4UA4PSOnqLJFMN7r\nOAuZWuHqfjO7XJfLMLydQ0EoyEJMW30cNG0Sxd1JqO7HiRfp4Tf3KweaVXJ57mcA\n43JuPYJ+l3hPr5TRVRo56uTk+DxA8eGFNrzjpUI0CoGW/EqhuT4+8+/LN1qU/JCQ\n8RNlFjTjbu35+/XeLzXu4Xt1U+5okAcxQPt7zUZh0rmKe2lA54CF0tNUDWegHQoi\nV9XhRoBXo+tJtBREgHi6t/5FP+605dHMUhFAM22W+X6DO35Bbzs43brkOZYfST64\nNYZ1Q/5M2P5KOA+OobcTYdRj+vXejxSULITbOtfBQwKBgQDx7iZanQgy/xXGjDUe\n1hJy7E1vlMyO1gyuR1mCeLD2S2/arDeQXHzPxFA1Dpq40C2KZSqAZcwwd1NPQMaA\nm0eEO9v945dXtRJbnGwtO0d2nJweLEyL/KS2o9Sb7Ou41ZI4bk4jlCHXAcaoRU9T\njQ7tg56ErymsBmG9X6VEoHsjIwKBgQDP001kYB99vvjXj+53hZfpSdPse4nn8Le+\n8aZIk1UdOgiYgj26QkTlnHbsR/Koem2oowchsfsOS6zEFZuM8EsuaxTjWSaYPCbg\n8Q9YarkAWLU7U5UGPh0CsnG9TsDI4OnQg29RV/SKIBrd3eu0bZzMEA4+oZX170pz\nZLZD6MHCYwKBgAPIpr7qD9PEW5HUZYxK6tTzTy68lApz3JTpNsQsoQ/pFCHGacQP\nPkB9oIeD5/WWA/BTLrv9W5kydJIbwD8IrrCpwwIQijBr+5KFOsfmUnLPdj2ekb/q\nvqTAoTWjGfi1FmldiElUKsdTFslQ9DGpVh9u3I7UsoEnRGYS1eHh5KsjAoGAcErY\n71psyZHtfPP9QsGBcoD8rDOYMSXE8rw5P8+z1qXrzRPabJCwD2y6aTL674OvSsZD\n7TXw1CmZgR23vbB8vukHEUyzaOBflX1K8FhB++jyi8q+o+/d1v46LLKnwiKc05ih\nBk/DBvsP6T+mwwfTCAPI3piKoacZED6jqQ/T2ccCgYBHyKTh7AdNTIKc7y2p8pQ1\nexgZ7gM4BaN9j2naYKSly5km2hFTMvD3lgYpKywOE/y8amgGIJYogrimJ53GBS//\nRILRPguCzQ7snKtH5oZKArj3JxNqr34cqX1mS2Hwk1RggGRTp46S7mitZmArixY6\nBRaAP/QtfzKPGiVU09GhFA==\n-----END PRIVATE KEY-----\n"/>
243<#assign googleMapsDataPrivateKeyID = "c12a3c4f20b176224995b442b6972d8a86e4351"/>
244<#assign connectionTimeout = 1000/>
245<#assign requestTimeout = 45000/>
246<#assign googleMapsDataSql = "SELECT * FROM farmacias_farline"/>
247<#assign googleMapsDataKey = "farmacia_farline"/>
248<#assign googleMapsDataURL = "https://datasource-connector-api-1096555260408.europe-west1.run.app"/>
249<#assign googleMapsDataURLToken = "https://www.googleapis.com/oauth2/v4/token"/>
250<#assign googleMapsDataGoogleClientEmail = "api-nombres-largos@cofares-tablas-completas-cal.iam.gserviceaccount.com"/>
251
252<#assign farmacias = GoogleMapsDataService.getGoogleMapsData(
253 googleMapsDataPrivateKey,googleMapsDataPrivateKeyID,connectionTimeout,requestTimeout,
254 googleMapsDataSql,googleMapsDataKey,googleMapsDataURL,googleMapsDataURLToken,
255 googleMapsDataGoogleClientEmail
256)/>
257<#assign farmaciasArray = JSONFactoryUtil.createJSONArray(farmacias)/>
258
259<#if farmaciasArray?has_content>
260 <#assign contador = 0 />
261 <#list 0 ..< farmaciasArray.length() as i>
262 <#assign direccion = farmaciasArray.get(i).direccion/>
263 <#assign latitud = farmaciasArray.get(i).latitud/>
264 <#assign longitud = farmaciasArray.get(i).longitud/>
265 <#assign enlace = farmaciasArray.get(i).enlace/>
266 <#assign telefono = farmaciasArray.get(i).telefono/>
267 <script>
268 addCentros('${contador}','${direccion?replace("'", "´")}','${latitud?replace(",", ".")}','${longitud?replace(",", ".")}','${enlace}','${telefono}');
269 </script>
270 <#assign contador = contador + 1 />
271 </#list>
272</#if>
273
274<div class="tc-map w-100 mx-auto">
275 <div class="tc-map-search-ctn">
276 <div class="wrapper-ajust">
277 <form class="form-map">
278 <div class="cards-adt text-center">
279 <p class="cards-adt__pretitle">
280 Encuentra tu farmacia
281 </p>
282 <h2 class="title">
283 Encuentra tus productos de Farline más cerca
284 </h2>
285 </div>
286 <div class="inputs-container d-flex justify-content-center mb-3">
287 <div class="tc-form-control col-xl-10 col-12 mb-3">
288 <label class="tc-map-label" for="address"><span class="text-base">Dirección, CP o Localidad:</span></label>
289 <input class="field form-control error-field" name="address" id="address" type="textbox" placeholder="Dirección, código postal o localidad"></input>
290 </div>
291 <div class="d-flex col-xl-2 col-12 mb-3">
292 <div class="d-none">
293 <div class="tc-form-control d-flex align-items-end w-100">
294 <div class="w-100">
295 <label class="tc-map-label" for="radius"><span class="text-base">Radio de búsqueda:</span></label>
296 <div class="d-flex align-items-center" style="gap: 1rem">
297 <input class="hidden field form-control error-field field-small" name="radius" id="radius" type="number" min="1" step="1" value="2" placeholder="Radio de búsqueda"></input>
298 </div>
299 </div>
300 </div>
301 </div>
302 <button type="button" class="w-100 btn btn-ico btn-primary" onclick="codeAddress();">Buscar</button>
303 </div>
304 </div>
305 </form>
306 </div>
307 </div>
308 <div class="wrapper-ajust">
309 <div class="tc-map-container d-flex">
310 <div id="map_canvas" class="tc-map-show col-12 col-md-8"></div>
311 <div class="div_lista col-12 col-md-4">
312 <div id="side_bar" class="side_bar">
313 <div class="p_aviso_side_bar">
314 <p class="evo-form__text-info">Realice una búsqueda para mostrar un listado de resultados.</p>
315 </div>
316 </div>
317 </div>
318 </div>
319 <div id="map_indications" class="tc-map-indications"></div>
320 </div>
321</div>
322<script>
323$(document).ready(function(){
324 initLoad();
325});
326
327// Get the input field
328var input = document.getElementById("address");
329
330// Execute a function when the user presses a key on the keyboard
331input.addEventListener("keypress", function(event) {
332 // If the user presses the "Enter" key on the keyboard
333 if (event.key === "Enter") {
334 // Cancel the default action, if needed
335 event.preventDefault();
336 // Trigger the button element with a click
337 $(".inputs-container button").click();
338 }
339});
340</script>
341
342<style>
343#map_canvas {
344 height: 500px;
345}
346.tc-map .div_lista {
347 max-height: 500px;
348 overflow: auto;
349 padding: 0 1rem !important;
350}
351 .tc-map-container {
352 flex-wrap: wrap;
353 }
354 .tc-map {
355 max-width: 1600px;
356 padding: 0 2rem;
357 }
358
359 .tc-form-control {
360 flex-direction: column;
361 border-bottom: 2px solid #3894D1;
362 }
363
364 .tc-form-control label {
365 display: none;
366 }
367
368 .tc-form-control input {
369 border: none;
370 font-size: 24px;
371 color: #002B74;
372 height: 100%;
373 }
374
375 .tc-form-control span {
376 font-size: 24px;
377 }
378
379 .form-map button {
380 color: white;
381 font-weight: 700;
382 font-size: 16px;
383 background-color: #002B74;
384 border-radius: 4px;
385 border: 0;
386 transition: all 0.15s;
387 }
388
389 .col-8 {
390 padding-left: 0 !important;
391 }
392
393 span.rad_err_msg {
394 color: #c90f0f;
395 }
396
397 p.title_results_gmaps {
398 border-bottom: 2px solid #002B74;
399}
400 .info_fcia_side_bar {
401 display: flex;
402 flex-direction: row-reverse;
403 justify-content: space-between;
404 gap: 0.5rem;
405 margin-bottom: 1rem;
406 border-bottom: 1px solid #EFF0F0;
407 padding-bottom: 1rem;
408}
409 p.center_address {
410 font-size: 20px;
411 color: #004396;
412 font-weight: 700;
413}
414 .info_fcia_distance {
415 font-size: 20px;
416 color: #004396;
417 min-width: 80px;
418}
419 .info_fcia_side_bar p {
420 margin-bottom: 0;
421}
422
423 @media (max-width: 1200px) {
424 .inputs-container {
425 flex-direction: column;
426 }
427
428 .col-12 {
429 padding-left: 0 !important;
430 padding-right: 0 !important;
431 }
432 }
433
434 @media (max-width: 768px) {
435 .tc-map {
436 padding: 0 2rem;
437 }
438
439 .tc-map .div_lista {
440 padding: 1rem 0 !important;
441}
442
443 .tc-form-control input {
444 border: none;
445 font-size: 18px;
446 color: #002B74;
447 height: 100%;
448 }
449
450 .tc-form-control span {
451 font-size: 18px;
452 }
453
454 }
455
456</style>
Disclaimer de farmacias
Texto / imagen / texto - en tu farmacia
¿Por qué nace Farline?
Más de 30 años mejorando tu vida y tu salud
Farline nace para ofrecerte productos de farmacia y parafarmacia de alta calidad al precio más competitivo, respaldados siempre por el consejo de tu farmacéutico de confianza. Somos un laboratorio farmacéutico con más de 30 años, cuya misión es democratizar la calidad farmacéutica, poniendo a tu disposición el mejor cuidado para impulsar tu bienestar y salud, con la mejor relación calidad-precio.
De la mano de los farmacéuticos, como los profesionales sanitarios más cercanos y siempre apostando por la fabricación nacional, desarrollamos nuestros productos para crear una marca más responsable para ti y tu planeta. Además, nos mantenemos siempre al día de las últimas tendencias para ofrecerte el mejor cuidado para ti y tu familia.
Tu imprescindible - En tu farmacia - 1
Último hito de la marca
Farline, patrocinador de la carrera Contra el Cáncer
Farline ha patrocinado, junto a la Asociación Española Contra el Cáncer, la XI Carrera Madrid en Marcha Contra el Cáncer, que tuvo lugar el pasado 14 de abril. Esta iniciativa se enmarca dentro de nuestro Plan de Responsabilidad Social Corporativa, como un reflejo del compromiso ineludible con el bienestar de nuestros empleados. Por ello, 50 empleados y empleadas de la compañía corrieron por esta causa solidaria.
Publicador de contenidos
¿Cuál es nuestra misión?
Te ofrecemos una amplia gama de productos con excelente relación
calidad-precio
Siempre respaldados con el consejo experto de tu farmacéutico de confianza
¿Cuál es nuestra visión?
Queremos cuidar de ti y de los tuyos, acompañándote en el día a día, siendo tu marca de referencia en la farmacia y creando una comunidad cada vez mayor.
Para cuidar de ti, de tu salud y de tu bienestar
Tu imprescindible - En tu farmacia - 2
Los farmacéuticos
Nuestros mejores embajadores
Farline, nace de la mano de tu farmacéutico de confianza y dentro de un entorno de salud, bienestar y cercanía, como es la farmacia. Como profesionales sanitarios de primer nivel y gracias a su rigor científico y vocación en ofrecerte la mejor recomendación y consejo, los farmacéuticos nos impulsan a desarrollar nuestra gama de productos de la forma más segura y eficaz, pensando siempre en lo mejor para ti.
Valores - En tu farmacia - 1
¿Cuáles son nuestros valores?
La calidad lo es todo
Cuando se trata de cuidar de ti y de los tuyos
Hablamos, escuchamos y compartimos
Para desarrollar productos a medida para ti
Somos transparentes
Somos realmente lo que decimos ser
Apostamos por la fabricación nacional
Para buscar ser más sostenibles con tu planeta
Productos de calidad y confianza
Solo en tu farmacia
Compromiso - En tu farmacia
¿Cuál es nuestro compromiso?
Un compromiso continuo y real en cuidar tu salud y bienestar de la forma más accesible
Lorem ipsum
Labor social - En tu farmacia
Nuestra labor social
Pensando en ti, pensando en todos
Farline acompaña en el día a día a aquellos que lo necesitan, gracias a su labor social.
Cabecera de contenidos - Consejo farmaceutico
Consejo Farmacéutico
Encuentra la recomendación que más necesitas para tu salud y belleza
Publicador de contenidos
Suscripcion footer
Nos gusta verte por aquí
Al pulsar sobre “Suscribirme” confirmo que he leído y acepto la política de privacidad.