/*! elementor-pro - v3.28.0 - 30-03-2025 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["woocommerce-checkout-page"],{ /***/ "../modules/woocommerce/assets/js/frontend/handlers/base.js": /*!******************************************************************!*\ !*** ../modules/woocommerce/assets/js/frontend/handlers/base.js ***! \******************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class Base extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { stickyRightColumn: '.e-sticky-right-column' }, classes: { stickyRightColumnActive: 'e-sticky-right-column--active' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { $stickyRightColumn: this.$element.find(selectors.stickyRightColumn) }; } bindEvents() { // Add our wrapper class around the select2 whenever it is opened. elementorFrontend.elements.$document.on('select2:open', event => { this.addSelect2Wrapper(event); }); } addSelect2Wrapper(event) { // The select element is recaptured every time because the markup can refresh const selectElement = jQuery(event.target).data('select2'); if (selectElement.$dropdown) { selectElement.$dropdown.addClass('e-woo-select2-wrapper'); } } isStickyRightColumnActive() { const classes = this.getSettings('classes'); return this.elements.$stickyRightColumn.hasClass(classes.stickyRightColumnActive); } activateStickyRightColumn() { const elementSettings = this.getElementSettings(), $wpAdminBar = elementorFrontend.elements.$wpAdminBar, classes = this.getSettings('classes'); let stickyOptionsOffset = elementSettings.sticky_right_column_offset || 0; if ($wpAdminBar.length && 'fixed' === $wpAdminBar.css('position')) { stickyOptionsOffset += $wpAdminBar.height(); } if ('yes' === this.getElementSettings('sticky_right_column')) { this.elements.$stickyRightColumn.addClass(classes.stickyRightColumnActive); this.elements.$stickyRightColumn.css('top', stickyOptionsOffset + 'px'); } } deactivateStickyRightColumn() { if (!this.isStickyRightColumnActive()) { return; } const classes = this.getSettings('classes'); this.elements.$stickyRightColumn.removeClass(classes.stickyRightColumnActive); } /** * Activates the sticky column * * @return {void} */ toggleStickyRightColumn() { if (!this.getElementSettings('sticky_right_column')) { this.deactivateStickyRightColumn(); return; } if (!this.isStickyRightColumnActive()) { this.activateStickyRightColumn(); } } equalizeElementHeight($element) { if ($element.length) { $element.removeAttr('style'); // First remove the custom height we added so that the new height can be re-calculated according to the content let maxHeight = 0; $element.each((index, element) => { maxHeight = Math.max(maxHeight, element.offsetHeight); }); if (0 < maxHeight) { $element.css({ height: maxHeight + 'px' }); } } } /** * WooCommerce prints the Purchase Note separated from the product name by a border and padding. * In Elementor's Order Summary design, the product name and purchase note are displayed un-separated. * To achieve this design, it is necessary to access the Product Name line before the Purchase Note line to adjust * its padding. Since this cannot be achieved in CSS, it is done in this method. * * @param {Object} $element * * @return {void} */ removePaddingBetweenPurchaseNote($element) { if ($element) { $element.each((index, element) => { jQuery(element).prev().children('td').addClass('product-purchase-note-is-below'); }); } } /** * `elementorPageId` and `elementorWidgetId` are added to the url in the `_wp_http_referer` input which is then * received when WooCommerce does its cart and checkout ajax requests e.g `update_order_review` and `update_cart`. * These query strings are extracted from the url and used in our `load_widget_before_wc_ajax` method. */ updateWpReferers() { const selectors = this.getSettings('selectors'), wpHttpRefererInputs = this.$element.find(selectors.wpHttpRefererInputs), url = new URL(document.location); url.searchParams.set('elementorPageId', elementorFrontend.config.post.id); url.searchParams.set('elementorWidgetId', this.getID()); wpHttpRefererInputs.attr('value', url); } } exports["default"] = Base; /***/ }), /***/ "../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js": /*!***************************************************************************!*\ !*** ../modules/woocommerce/assets/js/frontend/handlers/checkout-page.js ***! \***************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _base = _interopRequireDefault(__webpack_require__(/*! ./base */ "../modules/woocommerce/assets/js/frontend/handlers/base.js")); class Checkout extends _base.default { getDefaultSettings() { const defaultSettings = super.getDefaultSettings(...arguments); return { selectors: { ...defaultSettings.selectors, container: '.elementor-widget-woocommerce-checkout-page', loginForm: '.e-woocommerce-login-anchor', loginSubmit: '.e-woocommerce-form-login-submit', loginSection: '.e-woocommerce-login-section', showCouponForm: '.e-show-coupon-form', couponSection: '.e-coupon-anchor', showLoginForm: '.e-show-login', applyCoupon: '.e-apply-coupon', checkoutForm: 'form.woocommerce-checkout', couponBox: '.e-coupon-box', address: 'address', wpHttpRefererInputs: '[name="_wp_http_referer"]' }, classes: defaultSettings.classes, ajaxUrl: elementorProFrontend.config.ajaxurl }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { ...super.getDefaultElements(...arguments), $container: this.$element.find(selectors.container), $loginForm: this.$element.find(selectors.loginForm), $showCouponForm: this.$element.find(selectors.showCouponForm), $couponSection: this.$element.find(selectors.couponSection), $showLoginForm: this.$element.find(selectors.showLoginForm), $applyCoupon: this.$element.find(selectors.applyCoupon), $loginSubmit: this.$element.find(selectors.loginSubmit), $couponBox: this.$element.find(selectors.couponBox), $checkoutForm: this.$element.find(selectors.checkoutForm), $loginSection: this.$element.find(selectors.loginSection), $address: this.$element.find(selectors.address) }; } bindEvents() { super.bindEvents(...arguments); this.elements.$showCouponForm.on('click', event => { event.preventDefault(); this.elements.$couponSection.slideToggle(); }); this.elements.$showLoginForm.on('click', event => { event.preventDefault(); this.elements.$loginForm.slideToggle(); }); this.elements.$applyCoupon.on('click', event => { event.preventDefault(); this.applyCoupon(); }); this.elements.$loginSubmit.on('click', event => { event.preventDefault(); this.loginUser(); }); elementorFrontend.elements.$body.on('updated_checkout', () => { this.applyPurchaseButtonHoverAnimation(); this.updateWpReferers(); }); } onInit() { super.onInit(...arguments); this.toggleStickyRightColumn(); this.updateWpReferers(); this.equalizeElementHeight(this.elements.$address); // Equalize
boxes height if (elementorFrontend.isEditMode()) { this.elements.$loginForm.show(); this.elements.$couponSection.show(); this.applyPurchaseButtonHoverAnimation(); } } onElementChange(propertyName) { if ('sticky_right_column' === propertyName) { this.toggleStickyRightColumn(); } } onDestroy() { super.onDestroy(...arguments); this.deactivateStickyRightColumn(); } applyPurchaseButtonHoverAnimation() { const purchaseButtonHoverAnimation = this.getElementSettings('purchase_button_hover_animation'); if (purchaseButtonHoverAnimation) { // This element is recaptured every time because the checkout markup can refresh jQuery('#place_order').addClass('elementor-animation-' + purchaseButtonHoverAnimation); } } applyCoupon() { // Wc_checkout_params is required to continue, ensure the object exists // eslint-disable-next-line camelcase if (!wc_checkout_params) { return; } this.startProcessing(this.elements.$couponBox); const data = { // eslint-disable-next-line camelcase security: wc_checkout_params.apply_coupon_nonce, coupon_code: this.elements.$couponBox.find('input[name="coupon_code"]').val() }; jQuery.ajax({ type: 'POST', // eslint-disable-next-line camelcase url: wc_checkout_params.wc_ajax_url.toString().replace('%%endpoint%%', 'apply_coupon'), context: this, data, success(code) { jQuery('.woocommerce-error, .woocommerce-message').remove(); this.elements.$couponBox.removeClass('processing').unblock(); if (code.includes('woocommerce-error') || code.includes('does not exist')) { jQuery('html, body').animate({ scrollTop: 0 }, 'fast'); } if (code) { this.elements.$checkoutForm.before(code); this.elements.$couponSection.slideUp(); elementorFrontend.elements.$body.trigger('applied_coupon_in_checkout', [data.coupon_code]); elementorFrontend.elements.$body.trigger('update_checkout', { update_shipping_method: false }); } }, dataType: 'html' }); } loginUser() { this.startProcessing(this.elements.$loginSection); const data = { action: 'elementor_woocommerce_checkout_login_user', username: this.elements.$loginSection.find('input[name="username"]').val(), password: this.elements.$loginSection.find('input[name="password"]').val(), nonce: this.elements.$loginSection.find('input[name="woocommerce-login-nonce"]').val(), remember: this.elements.$loginSection.find('input#rememberme').prop('checked') }; jQuery.ajax({ type: 'POST', url: this.getSettings('ajaxUrl'), context: this, data, success(code) { code = JSON.parse(code); this.elements.$loginSection.removeClass('processing').unblock(); const messages = jQuery('.woocommerce-error, .woocommerce-message'); messages.remove(); if (code.logged_in) { location.reload(); } else { this.elements.$checkoutForm.before(code.message); elementorFrontend.elements.$body.trigger('checkout_error', [code.message]); } } }); } startProcessing($form) { if ($form.is('.processing')) { return; } /** * .block() is from a jQuery blockUI plugin loaded by WooCommerce. This code is based on WooCommerce * core in order for the Checkout widget to behave the same as WooCommerce Checkout pages. */ $form.addClass('processing').block({ message: null, overlayCSS: { background: '#fff', opacity: 0.6 } }); } } exports["default"] = Checkout; /***/ }) }]); //# sourceMappingURL=woocommerce-checkout-page.470384546c61ebcaa89d.bundle.js.map Nuestro capital anualidad para plan asi� como metodos sobre administracion asciende estafermo a la,800� (150� mensuales) – InfoNile
skip to Main Content

Nuestro capital anualidad para plan asi� como metodos sobre administracion asciende estafermo a la,800� (150� mensuales)

Vale investigar tantas licencias desplazandolo hacia el pelo permisos imprescindibles en comenzar nuestro proceso sobre construccion

El mantenimiento anualidad advertido presenta el diez% del valor de el equipamiento, lo cual dice 900� anuales. Una adquisicion inaugural de 12 maquinas arcade novedosas o bien lottoland casino España iniciar sesión registrarse personalizadas asciende engendro en nueve,000� (900� por singular). Los plazos sobre tramitacion podran durar entre dos y no ha transpirado 4 anos de vida, es por ello que es trascendente iniciar dichos procesos cuanto antes con el fin de no dilatar la apertura del establecimiento. El presupuesto asesorado para licencias asi� como permisos genera estafermo el seis% del costo integro de la tarea completo.

No obstante, tu puede obtener en el comercio bien igual que un operador sobre casino iGaming en el caso de que nos lo olvidemos como adscrito sobre cualquier casino online. Son las licencias que se dan en boutiques que se encuentran lo tanto dentro como externamente de recintos personales. Los licencias integrales inscribiri? les dan en comercios comerciales cual se asisten en dedicar solo a la venta de Suerte Domestico, contiguo en compania de demas juegos sobre Loterias y Apuestas de el Estado. El desarrollo de tramites y no ha transpirado licencias suele perdurar entre 4 y 10 decenios, acorde con la localizacion y tambien en la problema del programa.

Seguir los consejos descritos inicial ayudara a que cualquier casino en internet recien creado se podri�an mover desarrolle de forma sostenible asi� como supere a los rivales. Estuviese ai�adido con el Sportsbook, Game Aggregator asi� como Jackpot Aggregator, cosa que permite cual su casino en internet destaque de el competencia. SOFTSWISS si no le importa hacerse amiga de la grasa enfoca sobre llevar a cabo aplicacion inplia escala sobre opciones, igual que la plataforma de casino solida, cualquier centro de juegos, plan de marketing sobre afiliados desplazandolo hacia el pelo auxilio 24/7. A continuacion, mostramos una lista de costes aproximados que algun porvenir dueno sobre casino tiene que ser conscientes alrededor desarrollar un capital minucioso de empezar y no ha transpirado administrar algun casino. Por ejemplo, las iento incluyen una obtencii?n y no ha transpirado conformacion del software (25%-35%), las gastos sobre publicidad (15%-20%) y tambien en la obtencii?n de licencias (10%-30%).

Una tramitacion suele solicitar una presentacion de recuerdo tecnica, plan sobre establecimiento desplazandolo hacia el pelo razon de costes

Tambien del coste sobre edificacion desplazandolo hacia el pelo otras gastos, las gastos sindical constituyen un lugar central de el capital global. Aunque, pagar en publicidad y no ha transpirado anuncio eficaces puede, en ultima instancia, producir de edad avanzada ingresos desplazandolo hacia el pelo triunfo a largo plazo del almohadillado con coolmax casino. Ademi?s del marketing y tambien en la anuncio, cualquier casino suele existir cual invertir referente a cortejo publicas y no ha transpirado planificacion sobre sucesos para fabricar expectacion asi� como hechizar clientes. Las permisos sobre zonificacion son necesarios de asegurar que el casino se construye acerca de un zona designada asi� como que la edificacion cumple las normas sobre zonificacion establecimientos. Entonces, es indispensable buscar an extremo y no ha transpirado actuar joviales proveedores profesional de estar seguros que alcanza lo mejor para su dinero.

El modelo celular suele lanzarse sobre inmediato de ser estrategicamente importante para su empresa, o bien mas delante, una vez que una tarima sea serio. Llevando incremento de el trato de conjuntos moviles, soltar una aplicacion de casino en internet se ha vuelto practicamente obligatorio. Crear una plataforma desde 0 precisa suficientemente tiempo asi� como dinero; no obstante, provee total libertad referente a contra a croquis y no ha transpirado funcionalidades.

Una arti�stico relevante alrededor del llevar a cabo la medio sobre casino en camino radica sobre poner encima de una premeditacion minuciosa y completa. Pero, oriente procedimiento implica un estudio minucioso de causas igual que una localizacion, la inversion original y la gobierno competente del comercio. iento puede financiarse mediante leasing indumentarias renting, con manga larga cuotas cada mes cual tratan entre nuestro 3% asi� como cinco% del concepto sobre entero equipo. Nuestro abastecimiento integro sobre cualquier pub necesita una inversion entre � desplazandolo hacia el pelo �, en funcion del volumen de el empresa y tambien en la calidad de los conjuntos seleccionados.

Discussion

Back To Top
Search