1. TUBO PVC SANITARIO 4 X 3 MTS | The Home Depot México
Cuenta con un diámetro de 11 cm (4 pulgadas) que brinda un ajuste preciso sin fugas y puede cortarse a la medida deseada, sin mayor desperdicio del material. Es ...
Tubo sanitario blanco Amanco, su uso es adecuado para realizar conexiones para desagüe, cuenta con un diámetro de 11 cm (4 pulgadas). Brinda un ajuste preciso sin fugas y resistencia a las fracturas por impacto.

2. Tubo Pvc 4 Pulgada Economico | MercadoLibre
Tubo De Pvc Blanco Para Aguas Negras Económico Varias Med. 7 dólares con 99 centavosU$S7,99 · Tubo Conduit Electricidad 3/4 Pulgada Pvc Plástico ...
Envíos Gratis en el día ✓ Compre Tubo Pvc 4 Pulgada Economico en cuotas sin interés! Conozca nuestras increíbles ofertas y promociones en millones de productos.
3. Tubo pvc para drenaje de 4 pulg - Vidri
MATERIAL PVC · COLOR BLANCO · LONGITUD 6 METROS · DIÁMETRO DE 4 PULGADAS · RESISTENCIA DE PRESIÓN DE 63 PSI · RESISTENCIA A LA CORROSIÓN INTERNA Y EXTERNA · PARA USO ...
Compra RESISTENCIA A LA CORROSIÓN INTERNA Y EXTERNA, PARA USO EN INSTALACIONES DE AGUAS LLUVIAS Y/O NEGRAS Y DRENAJES

4. Tubería de PVC de 4" x 20' SDR 64 - Cochez
Tubería de PVC de 4" x 20' SDR 64 ; Tubería de PVC de 3" x 20' SDR 41. U085-000186. $15.99 ; Tubería de PVC de 2-1/2" x 20' SDR 26. U085-000327. $16.99 ; Flange ...
"; source = ((CCRZ.getCookie("handlebars") != "") ? preSource : "") + data; } }); } } else { preSource = "" + id + ""; source = ((CCRZ.getCookie("handlebars") != "") ? preSource : "") + source; } return Handlebars.compile(source); } }); /* //////////////////////////////////////////////////////// //////////////// GLOBAL AUXILIAR FUNCTIONS //////////////// */ ///////////////////////////////////////////////////////// // CLONE ANY OBJECT function cloneObject(objectToClone) { return JSON.parse(JSON.stringify(objectToClone)); } //Asigna a un un texto de error //Parametros: //elem: $("#elemento") o $(".clase") etc //message: "mensaje de error" function setMessageErrorInElement(elem, message) { elem.html(message).css("color", "#ff0000"); } //Limpia el de error //Parametros: //elem: $("#elemento") o $(".clase") etc //millisecond: 3000 o la cantidad de milisegundos que desee function hideMessageErrorInElement(elem, millisecond) { setTimeout(() => { elem.html(''); }, millisecond); } //Deshabilita los input de un form //Parametros: //elem: $("#elemento") o $(".clase") etc //excludeInput: string de input que desea excluir separados por coma(,). Ejm: "#txtInput1,.txtClassBtn,#txtArea" function disabledForm(elem, excludeInput) { if (excludeInput != undefined) { elem.not(excludeInput).prop('disabled', true); } else { elem.prop('disabled', true); } } //Habilita los input de un form //Parametros: //elem: $("#elemento") o $(".clase") etc function enabledForm(elem) { elem.prop('disabled', false); } //Valida si es visita o no function IsGuest() { if (CCRZ.currentUser.UserType == 'Guest') { return true; } else { return false; } } //Retorna el nombre del día de la semana function getDayName(dayNumber) { let weekday = new Array(7); weekday[0] = "Global_DayName1"; weekday[1] = "Global_DayName2"; weekday[2] = "Global_DayName3"; weekday[3] = "Global_DayName4"; weekday[4] = "Global_DayName5"; weekday[5] = "Global_DayName6"; weekday[6] = "Global_DayName7"; return weekday[dayNumber]; } //Habilita los popovers de un form //Parametros: //elem: $("#elemento") o $(".clase") etc function showMessageTypePopover(elem, title, content, timeClose) { if(CCRZ.getPageConfig('pd.enablepopuppl')){ if($(elem).data('isavailableurl')){ elem.attr('data-html', true); let brandTitle=CCRZ.productDetailModel.attributes.product.prodBean.brandName; let labelBrand=CCRZ.pagevars.pageLabels.seeMoreProductsByBrand?CCRZ.pagevars.pageLabels.seeMoreProductsByBrand:''; let writter=''; let store=CCRZ.pagevars.storefrontName; writter+=''+content+''; writter+=''+' '+labelBrand+' '+ brandTitle+''; content=writter; title=''+title+''; } let timeToSet=(CCRZ.getPageConfig('pd.settimepopup')?CCRZ.getPageConfig('pd.settimepopup'):30000); timeClose=parseInt(timeToSet); } elem.attr('title', title); elem.attr('data-content', content); elem.attr('data-trigger', 'focus'); elem.attr('data-toggle', 'popover'); elem.attr('data-container', 'body'); elem.attr('data-placement', 'top'); elem.popover("show"); setTimeout(() => { elem.popover("hide"); elem.popover("destroy"); }, timeClose); } function getJsonToAddCart(idProd, qty, typeProduct) { let data = []; // ----- FIX FOR COMPARE PRODUCTS let viewState = $("#viewState").val() == undefined? "ListView":$("#viewState").val() if (viewState == "ListView") { data.push({ prodId: idProd, qty: qty }); } else if (viewState == "DetailView") { if (typeProduct == "Dynamic Kit") { let prods = CCRZ.dynamicKitView.selView.dataSet.selList.toJSON(); for (p of prods) { data.push({ prodId: p.id, qty: p.quantity }); } } else { data.push({ prodId: idProd, qty: qty }); } } return data; } function percentagesOfDiscount(price, basePrice){ let percent = 100, result = 0; result = ((percent - (percent * price) / basePrice)).toFixed(); return result + '%'; } //-------------------------------------------------------------------------------- // ------------------ FORMATO DE NUMERO SEPARADO POR COMAS ----------------------- //-------------------------------------------------------------------------------- var formatNumber = { separador: ",", // separador para los miles sepDecimal: '.', // separador para los decimales formatear:function (num){ num +=''; var splitStr = num.split('.'); var splitLeft = splitStr[0]; var splitRight = splitStr.length > 1 ? this.sepDecimal + splitStr[1] : ''; var regx = /(\d+)(\d{3})/; while (regx.test(splitLeft)) { splitLeft = splitLeft.replace(regx, '$1' + this.separador + '$2'); } return this.simbol + splitLeft + splitRight; }, new:function(num, simbol){ this.simbol = simbol ||''; return this.formatear(num); } } function cartItemsHasSelectSubscrip(){ if(CCRZ.cartCheckoutModel.attributes.cartItems){ let found = CCRZ.cartCheckoutModel.attributes.cartItems.find(x => x.hasOwnProperty("subProdterm")); if(found){ return true; }else{ return false; } }else{ return false; } } function getPrefixStore() { return CCRZ.pagevars.storefrontName.toLowerCase().indexOf("cochez") > 0 ? 'C' : 'N'; } function getPrefixStore2() { return CCRZ.pagevars.storefrontName.toLowerCase().indexOf("cochez") > 0 ? 'CO' : 'NO'; } function getPrefixStore3(){ return CCRZ.pagevars.storefrontName.toLowerCase().indexOf("cochez") > 0 ? 'Chz' : 'Nvy'; } function getCodeCompany() { return CCRZ.pagevars.storefrontName.toLowerCase().indexOf("cochez") > 0 ? '01' : '03'; } function getNameCompany(){ return CCRZ.pagevars.storefrontName.toLowerCase().indexOf("cochez") > 0 ? 'Cochez' : 'Novey'; } function getGeneralNameCategories() { return['Root: CochezB2C', 'Root: NoveyB2C', 'Root: NoveyB2C2','Root: CochezB2B']; } //-------------------------------------------------------------------------------- //-- REMOVE TEXT Provincia de FROM GOOGLE MAPS API RESULT //-------------------------------------------------------------------------------- function removeUnnecessaryText(text) { text = text.replace("Provincia de ", "").replace("Province", "").replace("Distrito de ", "").replace("District", ""); return text } //-------------------------------------------------------------------------------- function updateMiniCartFields(){ // subtotal, tax, shipping let subtotal; if(CCRZ.pagevars.storefrontName.includes('B2B')){ subtotal = (CCRZ.LLIPaymentModel.attributes.cartData.subtotalAmount != undefined)? parseFloat(CCRZ.LLIPaymentModel.attributes.cartData.subtotalAmount) : 0, tax = (CCRZ.LLIPaymentModel.attributes.cartData.taxAmount != undefined)? parseFloat(CCRZ.LLIPaymentModel.attributes.cartData.taxAmount) : 0, shipping = (CCRZ.LLIPaymentModel.attributes.cartData.shipAmount != undefined)? parseFloat(CCRZ.LLIPaymentModel.attributes.cartData.shipAmount) : 0. itbmsString = parseFloat(tax).toFixed(2), itbms = parseFloat(itbmsString) }else{ subtotal = (CCRZ.cartCheckoutView.model.attributes.subtotalAmount != undefined)? parseFloat(CCRZ.cartCheckoutView.model.attributes.subtotalAmount) : 0, tax = (CCRZ.cartCheckoutView.model.attributes.tax != undefined)? parseFloat(CCRZ.cartCheckoutView.model.attributes.tax) : 0, shipping= (CCRZ.cartCheckoutView.model.attributes.shippingCharge != undefined)? parseFloat(CCRZ.cartCheckoutView.model.attributes.shippingCharge) : 0. itbmsString = parseFloat(tax).toFixed(2), itbms = parseFloat(itbmsString) } // totalAmount = (subtotal + itbms + shippingCharge).toFixed(2) console.log('subtotal',subtotal, 'tac',tax, 'shipping',shipping ) subtotal = parseFloat(subtotal) tax = parseFloat(tax) shipping = parseFloat(shipping) itbmsString=parseFloat(tax).toFixed(2); itbms=parseFloat(itbmsString); suma=subtotal + itbms + shipping; var total=suma.toFixed(2); // console.log("totsum",sumaTot); // total = parseFloat((subtotal + tax + shipping)).toFixed(2) // console.log('total',total); $("#writerTax").empty(); $("#writertotalAmount").empty(); $("#writerShip").empty(); $("#writerTax").append(formatNumber.new(itbms, "$")); $("#writertotalAmount").append(formatNumber.new( total, "$") ); $("#writerShip").append(formatNumber.new( shipping, "$") ); //writeExtData(); $(".plusInfo").attr("style","display:block"); $(".plusInfoTot").attr("style","display:block"); $(".plusInfoEnv").attr("style","display:block"); } function writeExtData(){ $("#writerExtDataComprador").empty(); var writer=""; console.log('check type',CCRZ.CheckoutPayload.DeliveryType); if(CCRZ.CheckoutPayload.DeliveryType=='DOM'){ writer+=""; if(CCRZ.pagevars.storefrontName=='B2CNovey'){ writer+="Información de envío "; } else if(CCRZ.pagevars.storefrontName=='B2CCochez'){ writer+="Información de envío "; } writer+=""+CCRZ.processPageLabelMap('AddressInMap_Country') +': '+CCRZ.CheckoutPayload.Country+" "; writer+=" "+CCRZ.processPageLabelMap('Checkout_ship_description') +': '+CCRZ.CheckoutPayload.addressDescription+" "; // writer+=" "+CCRZ.processPageLabelMap('Checkout_ChooseDeliveryDate') +': '+CCRZ.CheckoutPayload.liMainDelivery+" "; writer+=" "+CCRZ.processPageLabelMap('Checkout_ChooseDeliveryDate') +': '+CCRZ.CheckoutPayload.DeliveryDate+" "; writer+=""; }else if(CCRZ.CheckoutPayload.DeliveryType=='SUC'){ writer+=""; if(CCRZ.pagevars.storefrontName=='B2CNovey'){ writer+="Información de retiro "; } else if(CCRZ.pagevars.storefrontName=='B2CCochez'){ writer+="Información de retiro "; } writer+=""+CCRZ.processPageLabelMap('Checkout_suc_description') +': '+CCRZ.CheckoutPayload.DeliveryTypeDesc+" "; writer+=" "+CCRZ.processPageLabelMap('Checkout_suc_select') +': '+CCRZ.CheckoutPayload.Store+" "; writer+=""; } $("#writerExtDataComprador").append(writer); } function writerData( name,ape,email){ $("#writerDataComprador").empty(); // var ape=CCRZ.cartCheckoutView.model.attributes.buyerLastName; // var email=CCRZ.cartCheckoutView.model.attributes.buyerEmail; var writer=""; writer+=""; if(CCRZ.pagevars.storefrontName=='B2CNovey'){ writer+="" + CCRZ.processPageLabelMap('Component_MiniCart_BuyerInformation') + ""; } else if(CCRZ.pagevars.storefrontName=='B2CCochez'){ writer+="" + CCRZ.processPageLabelMap('Component_MiniCart_BuyerInformation') + ""; } writer+=""; writer+=""; if(CCRZ.pagevars.storefrontName=='B2CNovey'){ writer+="" + CCRZ.processPageLabelMap('Name') + ":"; writer+=""+name+" "+ape+""; }else if(CCRZ.pagevars.storefrontName=='B2CCochez'){ writer+="" + CCRZ.processPageLabelMap('Name') + ": "+name+" "+ape+""; // writer+=""+name+" "+ape+""; } writer+=""; writer+=""; if(CCRZ.pagevars.storefrontName=='B2CNovey'){ writer+="" + CCRZ.processPageLabelMap('EMail') + ""; writer+=""+email+""; }else if(CCRZ.pagevars.storefrontName=='B2CCochez'){ writer+="" + CCRZ.processPageLabelMap('EMail') + ": "+email+""; } writer+=""; $("#writerDataComprador").append(writer); } function paintCustomerData(){ if(CCRZ.pagevars.isGuest){ var nameP=CCRZ.cartCheckoutView.model.attributes.buyerFirstName; var apeP=CCRZ.cartCheckoutView.model.attributes.buyerLastName; var emailP=CCRZ.cartCheckoutView.model.attributes.buyerEmail; writerData(nameP, apeP,emailP); }else{ var nameP=CCRZ.currentUser.FirstName; var apeP=CCRZ.currentUser.LastName; var emailP=CCRZ.currentUser.Email; writerData(nameP, apeP,emailP); } } function clearAmuntAndDelivaryData(){ $("#writerTax").empty(); $("#writertotalAmount").empty(); $("#writerShip").empty(); $("#writerExtDataComprador").empty(); $(".plusInfo").attr("style","display:none"); $(".plusInfoTot").attr("style","display:none"); $(".plusInfoEnv").attr("style","display:none"); } function updateInfo(){ CCRZ.LoadTaxMiniCart=null; if(CCRZ.pagevars.currentPageName == "ccrz__CheckoutNew"){ if(CCRZ.pagevars.isGuest){ CCRZ.LoadTaxMiniCart =setInterval(function() { if(!(typeof CCRZ.cartCheckoutView.model.attributes.buyerFirstName == "undefined")){ // var nameP=CCRZ.cartCheckoutView.model.attributes.buyerFirstName; // var apeP=CCRZ.cartCheckoutView.model.attributes.buyerLastName; // var emailP=CCRZ.cartCheckoutView.model.attributes.buyerEmail; // writerData(nameP, apeP,emailP); paintCustomerData() if(CCRZ.CheckoutPayload!=undefined){ writeExtData(); } updateMiniCartFields(); clearInterval(CCRZ.LoadTaxMiniCart); } }, 1000); }else{ CCRZ.LoadTaxMiniCart =setInterval(function() { console.log('pregunta') if(!(typeof CCRZ.currentUser === "undefined")){ console.log( 'curr:-',CCRZ.currentUser); // var nameP=CCRZ.currentUser.FirstName; // var apeP=CCRZ.currentUser.LastName; // var emailP=CCRZ.currentUser.Email; // writerData(nameP, apeP,emailP); paintCustomerData() if(CCRZ.CheckoutPayload!=undefined){ writeExtData(); } updateMiniCartFields(); clearInterval(CCRZ.LoadTaxMiniCart); } }, 1000); } } } function is_MC_Pixel_Active() { let isActive = false if(typeof _etmc !== "undefined" && CCRZ.getPageConfig('sfmc.mcp_enable',false)){ isActive = true } return isActive } function linkHawkSend(e){ let hawkKey=CCRZ.pagevars.storefrontName=='B2CCochez'? '3f3063fb0b584d43b6c91421aede6c03' : '49842e22915f43fcbcc5c5bcd8280800'; HawkSearch.link(e,hawkKey,1, e.target.dataset.productsfid,0) ; //e.stopImmediatePropagation(); } // --------------------- PROTOTYPE ------------------------ String.prototype.capitalize = function() { return this.charAt(0).toUpperCase() + this.slice(1); } // ---------------- REMOTE INVOKE ACTION ----------------- // Utilizar para cuando el método del controlador recive un JSON como parámetro //----- // Parámetros // remoteCallObj: el objeto con contexto del controlador que se va utilizar. // remoteActionName: nombre del metodo o action a ejecutar en el controlador // data: parametros(objeto) en formato string function callCtrlRemoteAction(remoteCallObj, remoteActionName, data) { // console.log(arguments); return new Promise(function(resolve, reject) { remoteCallObj.invokeContainerLoadingCtx($('.deskLayout'), remoteActionName, data, function(res, err) { if (res != null) { resolve(res); } else if (err.message != "") { resolve(err); } }, { nmsp: false }); }); } //---------- Format data MC PIXEL function set_MC_Pixel_PurchaseSuccess(dataPurchase) { let data = { 'cart': [], 'order_number': dataPurchase.sfdcName, // Transaction ID. Required for purchases and refunds <----- ORDER NUMBER ON SALESFORCE. 'discount': '', 'shipping': dataPurchase.shippingCharge, // Shipping value) 'details': { 'originatedCart' : dataPurchase.originatedCart, 'buyerEmail': dataPurchase.buyerEmail, 'buyerFirstName': dataPurchase.buyerFirstName, 'buyerLastName': dataPurchase.buyerLastName, 'buyerMobilePhone': dataPurchase.buyerMobilePhone, 'contactId': dataPurchase.contact, 'shippingCharge': dataPurchase.shippingCharge, 'subTotal': dataPurchase.subTotal, 'tax': dataPurchase.tax, 'taxSubTotalAmount': dataPurchase.taxSubTotalAmount, 'totalAmount': dataPurchase.totalAmount } } let productList = dataPurchase.orderItems for(product of productList){ data.cart.push({ item: product.mockProduct.name, quantity: product.quantity, price: product.price, unique_id: product.mockProduct.sku }); } if(CCRZ.getPageConfig('env.isprod',false)){ _etmc.push(["trackConversion", data]) }else{ console.log("data compra MC Pixel => ",data) } } //-------------------------------------------------------------------------------- // --------------- FUNCTION DRAG SCROLL FOR PAINT PALETTE ---------------- //-------------------------------------------------------------------------------- function setDragScroll( elemName ) { const ele = document.getElementById( elemName ); ele.style.cursor = 'grab'; let pos = { top: 0, left: 0, x: 0, y: 0 }; const mouseDownHandler = function(e) { ele.style.cursor = 'grabbing'; ele.style.userSelect = 'none'; pos = { left: ele.scrollLeft, top: ele.scrollTop, // Get the current mouse position x: e.clientX, y: e.clientY, }; document.addEventListener('mousemove', mouseMoveHandler); document.addEventListener('mouseup', mouseUpHandler); }; const mouseMoveHandler = function(e) { // How far the mouse has been moved const dx = e.clientX - pos.x; const dy = e.clientY - pos.y; // Scroll the element ele.scrollTop = pos.top - dy; ele.scrollLeft = pos.left - dx; }; const mouseUpHandler = function() { ele.style.cursor = 'grab'; ele.style.removeProperty('user-select'); document.removeEventListener('mousemove', mouseMoveHandler); document.removeEventListener('mouseup', mouseUpHandler); }; // Attach the handler ele.addEventListener('mousedown', mouseDownHandler); } function ifApplyExpressDelivery(){ if(CCRZ.getPageConfig('exdev.stl')){ let availableExpressList = CCRZ.getPageConfig('exdev.stl').split(','); let sucursalFilter; if(localStorage.getItem('locStor'+getPrefixStore3())){ sucursalFilter = getCodeCompany()+(JSON.parse(localStorage.getItem('locStor'+getPrefixStore3())).codigo); if( availableExpressList.find(x=>((x.trim())==sucursalFilter)) ){ // validamos si el horario de la sucursal está habilitado para el horario de Delivery Express /*( ifApplyExpressDeliveryByTime() == true ) ? $('.expressDeliveryStyle').show() : $('.expressDeliveryStyle').hide();*/ const productId = (CCRZ.pagevars.currentPageName == 'ccrz__ProductDetails') ? CCRZ.productDetailModel.attributes.product.prodBean.id : ''; getStatusExpressDeliveryByStore(productId).then(function(res) { if( res == true ){ /*let productBorderTypeDelivery = $(".delivery-type").has('div.box-border-quad'); productBorderTypeDelivery.addClass('box-border-quad-express'); productBorderTypeDelivery.removeClass('box-border-quad'); let productIconTypeDelivery = productBorderTypeDelivery.children('img')[0]; productIconTypeDelivery.src = 'https://storage.googleapis.com/chz-marketing-repositorio-fotos/cochez/Iconos/truck-express.svg '; let productTextTypeDelivery = $('.msg-quad-inv-delivery'); productTextTypeDelivery.empty(); productTextTypeDelivery.append('Disponible paraentrega a domicilioexpress en 45 minutos'); productTextTypeDelivery.removeAttr('style'); productTextTypeDelivery.css('color', 'green');*/ //$('.expressDeliveryStyle').show(); // Si se obtiene una respuesta igualmente apagamos lógica para express delivery // Apagamos lógica para express delivery $('.expressDeliveryStyle').hide() }else{ // validamos si el horario de la sucursal está habilitado para el horario de Delivery Express // Apagamos lógica para express delivery /*( ifApplyExpressDeliveryByTime() == true ) ? $('.expressDeliveryStyle').show() : $('.expressDeliveryStyle').hide();*/ $('.expressDeliveryStyle').hide() } }) .catch(function(error) { console.log("Error when validating if it is a holiday : " + error); }); // Validación para horarios especiales / feriados para sucursales // ***Se comenta bloque de validación a espera de ajuste en ambiente de desarrollo*** /*let dateToday = moment().format('YYYY-MM-DD'); const ciaCodeStore = (JSON.parse(localStorage.getItem('locStor'+getPrefixStore3())).codigo); const ciaCodeCompany = getCodeCompany(); ifApplyStoreBySpecialHour(dateToday, ciaCodeCompany, ciaCodeStore).then(function(res) { if( res == true ){ let productBorderTypeDelivery = $('.box-border-quad-express'); productBorderTypeDelivery.addClass('box-border-quad'); productBorderTypeDelivery.removeClass('box-border-quad-express'); let productIconTypeDelivery = productBorderTypeDelivery.children('img')[0]; productIconTypeDelivery.src = 'https://storage.googleapis.com/chz-marketing-repositorio-fotos/novey/iconos_storefront/deliveryNoveyV2.svg'; let productTextTypeDelivery = $('.msg-quad-inv-delivery'); productTextTypeDelivery.empty(); productTextTypeDelivery.append('Disponible paraentrega a domicilio'); productTextTypeDelivery.removeAttr('style'); productTextTypeDelivery.css('color', '#0055b8'); //$('.expressDeliveryStyle').hide(); }else{ // validamos si el horario de la sucursal está habilitado para el horario de Delivery Express ( ifApplyExpressDeliveryByTime() == true ) ? $('.expressDeliveryStyle').show() : $('.expressDeliveryStyle').hide(); } }) .catch(function(error) { console.log("Error when validating if it is a holiday : " + error); });*/ }else{ $('.expressDeliveryStyle').hide() } } } } function ifApplyExpressDeliveryByTime(){ let date = new Date(); // Creamos y asignamos una fecha / hora para validar horarios // fuera del delivery express //let date2 = new Date().toISOString().split('T')[0]; //date2 = date2 + ' 03:30:00 PM'; // Get current hour with timezone. Require moment-timezone library const currentHour = moment(date, 'YYYY-MM-DD H:mm:ss a').tz('America/Panama').format('HH:mm:ss'); const openHour = date.toISOString().split('T')[0] + ' ' + CCRZ.getPageConfig('exdev.enableexpressdelivery'); const openHourDeliveryExpress = moment(openHour, 'YYYY-MM-DD H:mm:ss a').format('HH:mm:ss'); const closeHour = date.toISOString().split('T')[0] + ' ' + CCRZ.getPageConfig('exdev.disableexpressdelivery'); const closeHourDeliveryExpress = moment(closeHour, 'YYYY-MM-DD H:mm:ss a').format('HH:mm:ss'); return ( ( currentHour >= openHourDeliveryExpress) == true && (currentHour <= closeHourDeliveryExpress) == true ) ? true : false; } // Obtenemos los datos para validación si existe sucursal con horario especial o feriado /*function ifApplyStoreBySpecialHour(specialDate, ciaCode, ciaStore){ let remoteCall = _.extend(CCRZ.RemoteInvocation,{ className: 'AddToCartRemoteValidator'}); remoteCall.invokeCtx('getStoreBySpecialHour', specialDate, ciaCode, ciaStore, function(response, event) { //console.log("AJX RESPONSE :: ==> " + response); let applyResponseSH; if(!response.data.length == 0){ const HoraInicioStore = response.data[0].Hora_Inicio__c; const HoraFinStore = response.data[0].Hora_Fin__c; if( HoraInicioStore == "cerrado" && HoraFinStore == "cerrado"){ applyResponseSH = true; }else{ applyResponseSH = false; } }else{ applyResponseSH = false; } return applyResponseSH; }, { nmsp: false, escape: false, timeout: 10000, buffer: false }); }*/ /* @return promise Validamos si existe una sucursal con horario especial o feriado */ /*function ifApplyStoreBySpecialHour( specialDate, ciaCode, ciaStore ) { return new Promise((resolve, reject) => { let remoteCall = _.extend(CCRZ.RemoteInvocation,{ className: 'AddToCartRemoteValidator'}); remoteCall.invokeCtx('getStoreBySpecialHour', specialDate, ciaCode, ciaStore, function(response, event) { let applyResponseSH; if(!response.data.length == 0){ const HoraInicioStore = response.data[0].Hora_Inicio__c; const HoraFinStore = response.data[0].Hora_Fin__c; if( HoraInicioStore == "cerrado" && HoraFinStore == "cerrado"){ applyResponseSH = true; resolve(applyResponseSH); }else{ applyResponseSH = false; reject(applyResponseSH); } }else{ applyResponseSH = false; reject(applyResponseSH); } return applyResponseSH; }, { nmsp: false, escape: false, timeout: 10000, buffer: false }); }); }*/ /* @return promise VALIDAMOS SI EL PRODUCTO TIENE DELIVERY EXPRESS Y SI ESTÁ EN EL CENTRO DE ENTREGA EXPRESS */ function getStatusExpressDeliveryByStore( productId ) { return new Promise((resolve, reject) => { let remoteCall = _.extend(CCRZ.RemoteInvocation,{ className: 'AddToCartRemoteValidator'}); remoteCall.invokeCtx('getStatusExpressDeliveryByStore', productId, function(response, event) { let applyResponseSH; if(!response.data.length == 0){ console.log('EXPRESS DELIVERY RESPONSE ==> ' + JSON.stringify(response.data)); const expressDeliveryStatus = response.data[0].ccrz__ProductItem__r.express_delivery__c; const inventoryLocationCode = response.data[0].ccrz__InventoryLocationCode__c; console.log("EXPRESS DELIVERY STATUS ==> "+expressDeliveryStatus); console.log("INVENTORY LOCATION CODE ==> "+inventoryLocationCode); if(expressDeliveryStatus == true && inventoryLocationCode == '0303'){ applyResponseSH = true; resolve(applyResponseSH); }else{ applyResponseSH = false; reject(applyResponseSH); } }else{ applyResponseSH = false; reject(applyResponseSH); } return applyResponseSH; }, { nmsp: false, escape: false, timeout: 10000, buffer: false }); }); } function enabledBrandForInk(){ let brandName = CCRZ.prodDetailView.model.attributes.product.prodBean.brandName if(brandName != null){ let brandEnables = CCRZ.getPageConfig('paint.brands_enable').split(',') return brandEnables.includes(brandName.toLowerCase().capitalize()) } else { return false } } // id: a1F5C000000kRcWUAU // qty: 1 function addToCartSFAsync( id, qty ) { console.log("JMC ================> entro"); return new Promise((resolve, reject) => { //Valida el inventario let data=[{ prodId: id, qty: qty.toString() }]; let remoteCall = _.extend(CCRZ.RemoteInvocation, { className: 'AddToCartRemoteValidator' }); remoteCall.invokeContainerLoadingCtx($('.deskLayout'), 'itemQuantityValidationRemoteAction', JSON.stringify(data), function (res, err) { if (res != null) { if (res.success) { //Agrega al carrito el producto let remoteCall2 = _.extend(CCRZ.RemoteInvocation, { className: 'ccrz.cc_RemoteActionController' }); remoteCall2.invokeContainerLoadingCtx($('.deskLayout'), 'addItem', id, qty, null, null, "", null, function (res, err) { if (res.success) { resolve(res); CCRZ.pubSub.trigger('cartChange', res.data); } }, { nmsp: false }); } else { reject(res); } } else if (err.message != "") { reject(res); } }, { nmsp: false }); }); } CCRZ.pubSub.on("chargeFooter", function() { // function hawkLoadEvent(){ if(CCRZ.getPageConfig('hsm.enable_hs')){ if(CCRZ.pagevars.currentPageName=="ccrz__HomePage"){ HawkSearch.Tracking.track('pageload',{pageType: "landing"}); } if(CCRZ.pagevars.currentPageName=="ccrz__Cart"){ HawkSearch.Tracking.track('pageload',{pageType: "cart"}); } if(CCRZ.pagevars.currentPageName=="ccrz__MyAccount"){ HawkSearch.Tracking.track('pageload',{pageType: "custom"}); } if(CCRZ.pagevars.currentPageName=="ccrz__CheckoutNew"){ HawkSearch.Tracking.track('pageload',{pageType: "custom"}); } if(CCRZ.pagevars.currentPageName=="ccrz__ProductList"){ HawkSearch.Tracking.track('pageload',{pageType: "custom"}); } if(CCRZ.pagevars.currentPageName=="ccrz__ProductList"){ } if(CCRZ.pagevars.currentPageName=="ccrz__ProductDetails"){ // setTimeout(() => { HawkSearch.Context.add("uniqueid", CCRZ.productDetailModel.attributes.product.prodBean.id) // }, 1000); HawkSearch.Tracking.track('pageload',{pageType: "item"}); } } }); function hawkDataTrackCynx(qty, typeProduct, dataProduct){ console.log('datos '+ dataProduct.sfidProd); console.log('datos2 '+ dataProduct.id); sfidHawk=dataProduct.sfidProd?dataProduct.sfidProd:dataProduct.id; sendEventHawkTrackAdd2Cart(sfidHawk,dataProduct.price,qty) } function sendEventHawkTrackAdd2Cart(sfidHawk,price,qty){ console.log('hawkEventSend => '+ sfidHawk); HawkSearch.Tracking.track('add2cart',{ uniqueId: sfidHawk, price: parseFloat(price), quantity: parseInt(qty), currency: 'USD' }); } function hawkDataTrackOrderConfirmation(dataPurchase){ let oItems=[]; if(dataPurchase.orderItems){ for(item of dataPurchase.orderItems ){ if(item.product && item.price && item.quantity){ oItems.push({ uniqueid: item.product, itemPrice: item.price, quantity: item.quantity }) } } HawkSearch.Tracking.track('sale', { orderNo: dataPurchase.orderName, itemList: oItems, total: dataPurchase.totalAmount, subTotal: dataPurchase.subTotal, tax: dataPurchase.tax, currency: 'USD' }); } // HawkSearch.Tracking.track('sale', { // orderNo: dataPurchase.orderName, // itemList: dataPurchase.orderItems, // total: dataPurchase.totalAmount, // subTotal: dataPurchase.subTotal, // tax: dataPurchase.tax, // currency: 'USD' // }); } CCRZ.pubSub.on("view:PaymentProcessorView:refresh", function() { updateInfo(); setTimeout(() => { $("#overlay").remove() }, 2000); }) function momentFormatLLLL(date){ let dateLLLL = '' if(date != ''){ let arrDates = moment(date).format('LLLL').split(' ') arrDates[0] = arrDates[0].toLowerCase().capitalize() arrDates.splice(arrDates.length-1) dateLLLL = arrDates.join(' ') } else { dateLLLL = 'Fecha invalida' } return dateLLLL } function obtenerValorParametroBase(sParametroNombre,url) { var sPaginaURL = url; var sURLVariables = sPaginaURL.split('&'); for (var i = 0; i < sURLVariables.length; i++) { var sParametro = sURLVariables[i].split('='); if (sParametro[0] == sParametroNombre) { return sParametro[1]; } } return null; } //Funcion que retorna la distancia en kilometros entre dos conjuntos de coordenadas function getDistanceByTwoCoordinates(lat1, lon1, lat2, lon2){ rad = function(x){ return x * Math.PI/180; } //Radio de la tierra en km let R = 6371; let dLat = rad( lat2 - lat1 ); let dLong = rad( lon2 - lon1 ); let a = Math.sin(dLat/2) * Math.sin(dLat/2) + Math.cos(rad(lat1)) * Math.cos(rad(lat2)) * Math.sin(dLong/2) * Math.sin(dLong/2); let c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); let d = R * c; return d.toFixed(2); } //Funcion que ordena por alguna propiedad del JSON function jsonSortOrder(prop) { return function(a, b) { if (a[prop] > b[prop]) { return 1; } else if (a[prop] < b[prop]) { return -1; } return 0; } } //Funcion que seteara la tienda y la actualiza en el widget componente del header selector de tiendas function setLocStore(storeCode, isChangingStore){ let cia = getCodeCompany() let stores = JSON.parse(localStorage.getItem('stores'+getPrefixStore3())) let storeSelected = stores.find( x => (cia+x.centro == storeCode) ) let jsonStore = JSON.stringify({ codigo:storeSelected.centro, tienda:storeSelected.nombre, direccion:storeSelected.direccion, horarioLV:storeSelected.horarioLunesViernes, horarioS:storeSelected.horarioSabado, horarioD:storeSelected.horarioDomingo, coordenadas: storeSelected.coordenadas }) if (isChangingStore) { CCRZ.pubSub.trigger('pickStore_Event', storeSelected.nombre); } localStorage.setItem('locStor'+getPrefixStore3(), jsonStore) //Actualiza el componente widget de tiendas en el header locationSelected() } function loaderPayment(text1, text2){ let customLoader = ` ${text1} ${text2} ${text1} ${text2} ` return customLoader } /* GIFT CARD */ //variable global var processCount = 0; var addItemSuccessCount = 0; // CCRZ.pubSub.on('view:cartView:refresh', function(){ // if((JSON.parse(sessionStorage.getItem('giftcard')) != null) && (CCRZ.pagevars.queryParams.pagekey != 'GiftCard') && (CCRZ.pagevars.remoteContext.currentPageName != 'ccrz__CheckoutNew') && CCRZ.pagevars.remoteContext.currentPageName != 'ccrz__OrderConfirmation'){ // if(JSON.parse(sessionStorage.getItem('savedCartItems')) != null){ // checkCartToRemoveGiftCard(false); // sessionStorage.removeItem('giftcard'); // let savedItems = JSON.parse(sessionStorage.getItem('savedCartItems')); // let parseItem; // let itemsQty = savedItems.length; // //let response = false; // savedItems.forEach(element => { // parseItem = JSON.parse(element); // addSavedCartItems(parseItem.idProduct, parseItem.quantity, itemsQty); // }); // //CCRZ.pubSub.trigger('cartChange', CCRZ.cartView.cartmodel.attributes.sfid); // }else{ // checkCartToRemoveGiftCard(true); // sessionStorage.removeItem('giftcard'); // } // } // }); //NEW DEV LOCAL STORAGE ANDRES GARCIA CCRZ.pubSub.on('view:cartView:refresh', function(){ if((JSON.parse(localStorage.getItem('giftcard')) != null) && (CCRZ.pagevars.queryParams.pagekey != 'GiftCard') && (CCRZ.pagevars.remoteContext.currentPageName != 'ccrz__CheckoutNew') && CCRZ.pagevars.remoteContext.currentPageName != 'ccrz__OrderConfirmation'){ if(JSON.parse(localStorage.getItem('savedCartItems')) != null){ checkCartToRemoveGiftCard(false); localStorage.removeItem('giftcard'); let savedItems = JSON.parse(localStorage.getItem('savedCartItems')); let parseItem; let itemsQty = savedItems.length; //let response = false; savedItems.forEach(element => { parseItem = JSON.parse(element); addSavedCartItems(parseItem.idProduct, parseItem.quantity, itemsQty); }); //CCRZ.pubSub.trigger('cartChange', CCRZ.cartView.cartmodel.attributes.sfid); }else{ checkCartToRemoveGiftCard(true); localStorage.removeItem('giftcard'); } } // valida el contexto de PG Promocionales //validatePgPromoContext(); }); // CCRZ.pubSub.on('view:CartDetailView:refresh',function(){ // validatePgPromoContext(); // }); function checkCartToRemoveGiftCard(cartChangeFlag){ const ccFlag = cartChangeFlag; if(processCount == 0){ let gcSKU = CCRZ.getPageConfig('GC.gcsku', 'GCSKU'); //let gcSessionStorage = JSON.parse(sessionStorage.getItem('giftcard')); if(CCRZ.cartView.cartmodel.attributes.cartItems != undefined){ if(CCRZ.cartView.cartmodel.attributes.cartItems[0].mockProduct.sku.includes(gcSKU)){ removeGCFromCart(CCRZ.cartView.cartmodel.attributes.sfid, ccFlag); } } processCount++; } } function removeGCFromCart(cartSfid,cartChangeFlag) { const ccFlag = cartChangeFlag; let processCount = 0; let remoteCall = _.extend(CCRZ.RemoteInvocation,{ className: 'AddToCartRemoteValidator'}); remoteCall.invokeCtx('removeItemsFromCart',cartSfid,(res,err)=>{ if(res.success && ccFlag){ CCRZ.pubSub.trigger('cartChange', CCRZ.cartView.cartmodel.attributes.encryptedId); } },{nmsp: false, escape: false, buffer: false} ); } //NEW DEV SAVE CART ITEMS GIFTCARD // function getCartItems(cartSfid) { // //let processCount = 0; // let items; // let remoteCall = _.extend(CCRZ.RemoteInvocation,{ className: 'AddToCartRemoteValidator'}); // remoteCall.invokeCtx('getCartItems',cartSfid,(res,err)=>{ // if(res.success){ // items = JSON.stringify(res.data.cartItems); // sessionStorage.setItem('savedCartItems',items); // } // },{nmsp: false, escape: false, buffer: false} // ); // } //NEW DEV SAVE CART ITEMS GIFTCARD // function addSavedCartItems(idProd, qty, itemsQty){ // let remoteCall = _.extend(CCRZ.RemoteInvocation, { className: 'ccrz.cc_RemoteActionController' }); // remoteCall.invokeContainerLoadingCtx($('.deskLayout'), 'addItem', idProd, qty, null, null, "", null, function (res, err) { // if (res.success) { // console.log('Se logro introducir items al carrito desde el session storage'); // addItemSuccessCount++; // if(addItemSuccessCount == itemsQty){ // CCRZ.pubSub.trigger('cartChange', res.data); // } // } // }, // { nmsp: false }); // } // PUNTOS GRODOS PROMOCIONALES ---------------- // isPromo: true or false function setLocalIsCartPgPromoContext(isPromo){ isPromo ? localStorage.setItem('isPgPromoContext', 'true') : localStorage.removeItem('isPgPromo'); } // function validatePgPromoContext(){ // if((localStorage.getItem('isPgPromoContext') == 'true') && (CCRZ.pagevars.remoteContext.currentPageName != 'ccrz__CheckoutNew') && CCRZ.pagevars.remoteContext.currentPageName != 'ccrz__OrderConfirmation'){ // const cartID = CCRZ.cartView != undefined ? CCRZ.cartView.cartmodel.attributes.sfid : CCRZ.cartDetailView.model.attributes.sfid; // const cartEncId = CCRZ.pagevars.currentCartID; // let remoteCall = _.extend(CCRZ.RemoteInvocation,{ className: 'AddToCartRemoteValidator'}); // remoteCall.invokeCtx('removePGCartItems',cartID, true, function(response, event) { // if(response.success){ // localStorage.removeItem('isPgPromoContext'); // remoteCall.invokeCtx('removeFlagIsPgPromo',cartEncID, function(response, event) { // if(response.success){ // console.log('AJX :: removeFlagIsPgPromo ==> ', response); // //Refresco la pagina si estoy en el cart Detail // if(CCRZ.pagevars.remoteContext.currentPageName == 'ccrz__Cart'){ // location.reload(); // } // } // }, { nmsp: false, escape: false, timeout: 10000, buffer: false }); // CCRZ.pubSub.trigger('cartChange', CCRZ.cartView.cartmodel.attributes.encryptedId); // } // }, { nmsp: false, escape: false, timeout: 10000, buffer: false }); // } // } // function checkCartToRemoveGiftCard(cartChangeFlag){ // const ccFlag = cartChangeFlag; // if(processCount == 0){ // let gcSKU = CCRZ.getPageConfig('GC.gcsku', 'GCSKU'); // //let gcSessionStorage = JSON.parse(sessionStorage.getItem('giftcard')); // if(CCRZ.cartView.cartmodel.attributes.cartItems != undefined){ // if(CCRZ.cartView.cartmodel.attributes.cartItems[0].mockProduct.sku.includes(gcSKU)){ // removeGCFromCart(CCRZ.cartView.cartmodel.attributes.sfid, ccFlag); // } // } // processCount++; // } // } function getAccountGroupInfo(){ return new Promise((resolve, reject) => { const remoteCall = _.extend(CCRZ.RemoteInvocation, { className: 'AddToCartRemoteValidator' }); remoteCall.invokeContainerLoadingCtx($('.deskLayout'), 'getAccountGroupInfo', CCRZ.currentUser.Contact.AccountId, function (res, err) { if(res.success){ resolve(res.data.ccrz__E_AccountGroup__r); }else{ reject(res); } },{ nmsp: false, escape: false, timeout: 10000, buffer: false } ); }); } //Ejemplo de llamado a función con promesa // async function callAccountGroupInfo(){ // let response = await getAccountGroupInfo(); // return response; // }
5. Precio Tubo Pvc 4 Pulgadas - Alibaba
Encuentre la mejor selección de fabricantes y catálogo de productos baratos de alta calidad para el mercado de hablantes de precio tubo pvc 4 pulgadas en ...
Encuentre la mejor selección de fabricantes precio tubo pvc 4 pulgadas y catálogo de productos precio tubo pvc 4 pulgadas baratos de alta calidad para el mercado de hablantes de spanish en alibaba.com
6. Tubo Sanitario 4" x 6 Mts. - Homecenter.com.co
Tubo Sanitario 4" x 6 Mts. · $96.900 ; Codo 90 x 4 CxE Sanitaria · $12.900 ; Tee 4 Sanitaria · $18.900 ...
Compra Tubo Sanitario 4" x 6 Mts. en Homecenter.com.co, los mejores productos de Pavco Wavin - 65854.
7. tubo pvc 4 pulgada x 6 metros 64 psi - Freund
TUBO PVC 1/2 PULGADA X 6 METROS 315 PSI. $2.85. UNIDAD: M6 ; YETE DRENAJE PVC LISA 4 PLG. $3.95. UNIDAD: C/U ; CURVA PVC 4 PULGADA 90 GRADOS. $2.70. UNIDAD: C/U.
Compra en Freund soluciones en pintura, herramientas, hogar, jardín, materiales de construcción, eléctricos, fontanería, para proyectos y hogar.

8. Las mejores ofertas en Tubo de PVC - eBay
Tubo de PVC transparente de cualquier tamaño de diámetro de 1/2""-12"" pulgadas (1'-5' pies de largo). Totalmente nuevo. USD5.99 a USD1 954.95. Envío gratis.
En eBay encuentras fabulosas ofertas en Tubo de PVC. Encontrarás artículos nuevos o usados en Tubo de PVC en eBay. Envío gratis en artículos seleccionados. Tenemos la selección más grande y las mejores ofertas en Tubo de PVC. ¡Compra con confianza en eBay!