Plugin Directory

Changeset 3795004


Ignore:
Timestamp:
11/10/2026 06:13:28 PM (less than one hour ago)
Author:
factuhub
Message:

0.9.7: during the FactuHub trial the store notice no longer shows the Activar button; includes 0.9.5 and 0.9.6 (monthly add-on, demo photo cleanup)

Location:
factuhub-for-woocommerce
Files:
12 edited
1 copied

Legend:

Unmodified
Added
Removed
  • factuhub-for-woocommerce/tags/0.9.7/factuhub.php

    r3783257 r3795004  
    44 * Plugin URI:        https://factuhub.com
    55 * Description:       Factura automáticamente los pedidos de WooCommerce en FactuHub (VERI*FACTU) y trae el catálogo, los precios y el stock desde FactuHub.
    6  * Version:           0.9.4
     6 * Version:           0.9.7
    77 * Requires at least: 6.5
    88 * Requires Plugins: woocommerce
    … …  
    2020defined( 'ABSPATH' ) || exit;
    2121
    22 define( 'FACTUHUB_VERSION', '0.9.4' );
     22define( 'FACTUHUB_VERSION', '0.9.7' );
    2323define( 'FACTUHUB_ARCHIVO', __FILE__ );
    2424define( 'FACTUHUB_DIR', plugin_dir_path( __FILE__ ) );
  • factuhub-for-woocommerce/tags/0.9.7/includes/class-factuhub-activacion.php

    r3762696 r3795004  
    11<?php
    22/**
    3  * La conexión de cada tienda con FactuHub se activa en FactuHub (pago único por tienda). Mientras
     3 * La conexión de cada tienda con FactuHub se activa en FactuHub (cuota mensual de la empresa). Mientras
    44 * no lo está, FactuHub responde 402 «tienda_sin_activar»: se avisa al administrador y los pedidos
    55 * esperan (se reintentan cada hora sin gastar reintentos) hasta que se active.
  • factuhub-for-woocommerce/tags/0.9.7/includes/class-factuhub-api.php

    r3734061 r3795004  
    8686                                'Accept'        => 'application/json',
    8787                                'User-Agent'    => 'FactuHub-WooCommerce/' . FACTUHUB_VERSION . '; ' . home_url(),
    88                                 // Identifica la tienda: su conexión se activa en FactuHub (pago único por tienda)
     88                                // Identifica la tienda: su conexión se activa en FactuHub (cuota mensual de la empresa)
    8989                                'X-FactuHub-Tienda-Url' => untrailingslashit( set_url_scheme( home_url(), 'https' ) ),
    9090                        ),
  • factuhub-for-woocommerce/tags/0.9.7/includes/class-factuhub-demo.php

    r3783257 r3795004  
    186186                        }
    187187                        // Términos de atributos, categorías y marcas vacíos no estorban; las variaciones se van con su padre.
     188                        // Las fotos que trajo el catálogo de FactuHub (media_sideload_image) quedan sueltas al borrar el producto: fuera,
     189                        // salvo las que aún use otra entrada como imagen destacada
     190                        $en_uso = array_map( 'intval', $wpdb->get_col( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_thumbnail_id'" ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
     191                        foreach ( get_posts( array( 'post_type' => 'attachment', 'post_status' => 'any', 'post_parent' => 0, 'numberposts' => -1, 'fields' => 'ids', 'meta_key' => '_source_url' ) ) as $id ) { // phpcs:ignore WordPress.DB.SlowDBQuery
     192                                if ( ! in_array( (int) $id, $en_uso, true ) ) {
     193                                        wp_delete_attachment( (int) $id, true );
     194                                }
     195                        }
    188196                }
    189197                // Credenciales e integraciones que pudo dejar la demo anterior: claves de la API REST de WooCommerce, webhooks,
  • factuhub-for-woocommerce/tags/0.9.7/includes/class-factuhub-estado-tienda.php

    r3734061 r3795004  
    3838                }
    3939                $boton = '<a class="button" href="' . esc_url( (string) $e['activar_url'] ) . '" target="_blank" rel="noopener noreferrer">'
    40                         /* translators: %s: precio con IVA */
    41                         . esc_html( sprintf( __( 'Activar · %s', 'factuhub-for-woocommerce' ), html_entity_decode( wp_strip_all_tags( wc_price( (float) $e['precio_activacion'] ) ) ) ) ) . '</a>';
     40                        /* translators: %s: precio con IVA (con «/mes» si FactuHub lo cobra al mes) */
     41                        . esc_html( sprintf( __( 'Activar · %s', 'factuhub-for-woocommerce' ), html_entity_decode( wp_strip_all_tags( wc_price( (float) $e['precio_activacion'] ) ) ) . ( empty( $e['precio_periodo'] ) ? '' : '/' . $e['precio_periodo'] ) ) ) . '</a>';
    4242                if ( 'revocada' === $e['estado'] ) {
    4343                        return '<div class="notice notice-error inline"><p>' . esc_html__( 'La conexión de esta tienda está desactivada en FactuHub: no se factura ni se sincroniza nada.', 'factuhub-for-woocommerce' ) . ' ' . $boton . '</p></div>';
    … …  
    4949                                (int) $e['dias_prueba']
    5050                        );
    51                         return '<div class="notice notice-warning inline"><p>' . esc_html__( 'Tienda sin activar: funciona gratis durante la prueba de FactuHub', 'factuhub-for-woocommerce' ) . esc_html( $dias ) . '. ' . $boton . '</p></div>';
     51                        // Sin botón: en la prueba FactuHub no deja activar hasta elegir plan
     52                        return '<div class="notice notice-info inline"><p>' . esc_html__( 'Tienda en prueba: funciona gratis durante la prueba de FactuHub', 'factuhub-for-woocommerce' ) . esc_html( $dias ) . '. ' . esc_html__( 'Cuando elijas tu plan en FactuHub podrás activarla.', 'factuhub-for-woocommerce' ) . '</p></div>';
    5253                }
    5354                return '<div class="notice notice-error inline"><p>' . esc_html__( 'Tienda sin activar: los pedidos esperan sin facturarse y el catálogo no se sincroniza hasta que la actives.', 'factuhub-for-woocommerce' ) . ' ' . $boton . '</p></div>';
    … …  
    5657        public static function enlace_activar( $enlaces ) {
    5758                $e = self::obtener();
    58                 if ( null !== $e && 'activa' !== $e['estado'] ) {
     59                if ( null !== $e && 'activa' !== $e['estado'] && empty( $e['en_prueba'] ) ) {
    5960                        array_unshift( $enlaces, '<a href="' . esc_url( (string) $e['activar_url'] ) . '" target="_blank" rel="noopener noreferrer" style="font-weight:600">' . esc_html__( 'Activar en FactuHub', 'factuhub-for-woocommerce' ) . '</a>' );
    6061                }
  • factuhub-for-woocommerce/tags/0.9.7/readme.txt

    r3783257 r3795004  
    66Requires PHP: 7.4
    77Requires Plugins: woocommerce
    8 Stable tag: 0.9.4
     8Stable tag: 0.9.7
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    3939= Pricing =
    4040
    41 The plugin is free. You need a FactuHub account with an active plan, and the connection of each store is activated in FactuHub with a one-time payment (no subscription). During FactuHub's free trial (30 days) it works without paying. While a store is not activated, its orders wait and are invoiced automatically as soon as you activate it.
     41The plugin is free. You need a FactuHub account with an active plan, and the store connection is a FactuHub add-on with a monthly fee for the whole company (one store), billed with your plan. During FactuHub's free trial (30 days) it works without paying. While a store is not activated, its orders wait and are invoiced automatically as soon as you activate it.
    4242
    4343== External services ==
    … …  
    8989
    9090== Changelog ==
     91
     92= 0.9.7 =
     93* During the FactuHub trial the store notice no longer shows an "Activar" button (it can only be activated after choosing a plan).
     94
     95= 0.9.6 =
     96* The store connection is now a monthly FactuHub add-on: the "Activar" button shows the price per month.
     97
     98= 0.9.5 =
     99* Demo stores: resetting a demo store now also deletes the product photos that the FactuHub catalogue had downloaded (they stayed in the media library with no product).
    91100
    92101= 0.9.4 =
  • factuhub-for-woocommerce/trunk/factuhub.php

    r3783257 r3795004  
    44 * Plugin URI:        https://factuhub.com
    55 * Description:       Factura automáticamente los pedidos de WooCommerce en FactuHub (VERI*FACTU) y trae el catálogo, los precios y el stock desde FactuHub.
    6  * Version:           0.9.4
     6 * Version:           0.9.7
    77 * Requires at least: 6.5
    88 * Requires Plugins: woocommerce
    … …  
    2020defined( 'ABSPATH' ) || exit;
    2121
    22 define( 'FACTUHUB_VERSION', '0.9.4' );
     22define( 'FACTUHUB_VERSION', '0.9.7' );
    2323define( 'FACTUHUB_ARCHIVO', __FILE__ );
    2424define( 'FACTUHUB_DIR', plugin_dir_path( __FILE__ ) );
  • factuhub-for-woocommerce/trunk/includes/class-factuhub-activacion.php

    r3762696 r3795004  
    11<?php
    22/**
    3  * La conexión de cada tienda con FactuHub se activa en FactuHub (pago único por tienda). Mientras
     3 * La conexión de cada tienda con FactuHub se activa en FactuHub (cuota mensual de la empresa). Mientras
    44 * no lo está, FactuHub responde 402 «tienda_sin_activar»: se avisa al administrador y los pedidos
    55 * esperan (se reintentan cada hora sin gastar reintentos) hasta que se active.
  • factuhub-for-woocommerce/trunk/includes/class-factuhub-api.php

    r3734061 r3795004  
    8686                                'Accept'        => 'application/json',
    8787                                'User-Agent'    => 'FactuHub-WooCommerce/' . FACTUHUB_VERSION . '; ' . home_url(),
    88                                 // Identifica la tienda: su conexión se activa en FactuHub (pago único por tienda)
     88                                // Identifica la tienda: su conexión se activa en FactuHub (cuota mensual de la empresa)
    8989                                'X-FactuHub-Tienda-Url' => untrailingslashit( set_url_scheme( home_url(), 'https' ) ),
    9090                        ),
  • factuhub-for-woocommerce/trunk/includes/class-factuhub-demo.php

    r3783257 r3795004  
    186186                        }
    187187                        // Términos de atributos, categorías y marcas vacíos no estorban; las variaciones se van con su padre.
     188                        // Las fotos que trajo el catálogo de FactuHub (media_sideload_image) quedan sueltas al borrar el producto: fuera,
     189                        // salvo las que aún use otra entrada como imagen destacada
     190                        $en_uso = array_map( 'intval', $wpdb->get_col( "SELECT meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_thumbnail_id'" ) ); // phpcs:ignore WordPress.DB.DirectDatabaseQuery
     191                        foreach ( get_posts( array( 'post_type' => 'attachment', 'post_status' => 'any', 'post_parent' => 0, 'numberposts' => -1, 'fields' => 'ids', 'meta_key' => '_source_url' ) ) as $id ) { // phpcs:ignore WordPress.DB.SlowDBQuery
     192                                if ( ! in_array( (int) $id, $en_uso, true ) ) {
     193                                        wp_delete_attachment( (int) $id, true );
     194                                }
     195                        }
    188196                }
    189197                // Credenciales e integraciones que pudo dejar la demo anterior: claves de la API REST de WooCommerce, webhooks,
  • factuhub-for-woocommerce/trunk/includes/class-factuhub-estado-tienda.php

    r3734061 r3795004  
    3838                }
    3939                $boton = '<a class="button" href="' . esc_url( (string) $e['activar_url'] ) . '" target="_blank" rel="noopener noreferrer">'
    40                         /* translators: %s: precio con IVA */
    41                         . esc_html( sprintf( __( 'Activar · %s', 'factuhub-for-woocommerce' ), html_entity_decode( wp_strip_all_tags( wc_price( (float) $e['precio_activacion'] ) ) ) ) ) . '</a>';
     40                        /* translators: %s: precio con IVA (con «/mes» si FactuHub lo cobra al mes) */
     41                        . esc_html( sprintf( __( 'Activar · %s', 'factuhub-for-woocommerce' ), html_entity_decode( wp_strip_all_tags( wc_price( (float) $e['precio_activacion'] ) ) ) . ( empty( $e['precio_periodo'] ) ? '' : '/' . $e['precio_periodo'] ) ) ) . '</a>';
    4242                if ( 'revocada' === $e['estado'] ) {
    4343                        return '<div class="notice notice-error inline"><p>' . esc_html__( 'La conexión de esta tienda está desactivada en FactuHub: no se factura ni se sincroniza nada.', 'factuhub-for-woocommerce' ) . ' ' . $boton . '</p></div>';
    … …  
    4949                                (int) $e['dias_prueba']
    5050                        );
    51                         return '<div class="notice notice-warning inline"><p>' . esc_html__( 'Tienda sin activar: funciona gratis durante la prueba de FactuHub', 'factuhub-for-woocommerce' ) . esc_html( $dias ) . '. ' . $boton . '</p></div>';
     51                        // Sin botón: en la prueba FactuHub no deja activar hasta elegir plan
     52                        return '<div class="notice notice-info inline"><p>' . esc_html__( 'Tienda en prueba: funciona gratis durante la prueba de FactuHub', 'factuhub-for-woocommerce' ) . esc_html( $dias ) . '. ' . esc_html__( 'Cuando elijas tu plan en FactuHub podrás activarla.', 'factuhub-for-woocommerce' ) . '</p></div>';
    5253                }
    5354                return '<div class="notice notice-error inline"><p>' . esc_html__( 'Tienda sin activar: los pedidos esperan sin facturarse y el catálogo no se sincroniza hasta que la actives.', 'factuhub-for-woocommerce' ) . ' ' . $boton . '</p></div>';
    … …  
    5657        public static function enlace_activar( $enlaces ) {
    5758                $e = self::obtener();
    58                 if ( null !== $e && 'activa' !== $e['estado'] ) {
     59                if ( null !== $e && 'activa' !== $e['estado'] && empty( $e['en_prueba'] ) ) {
    5960                        array_unshift( $enlaces, '<a href="' . esc_url( (string) $e['activar_url'] ) . '" target="_blank" rel="noopener noreferrer" style="font-weight:600">' . esc_html__( 'Activar en FactuHub', 'factuhub-for-woocommerce' ) . '</a>' );
    6061                }
  • factuhub-for-woocommerce/trunk/readme.txt

    r3783257 r3795004  
    66Requires PHP: 7.4
    77Requires Plugins: woocommerce
    8 Stable tag: 0.9.4
     8Stable tag: 0.9.7
    99License: GPLv2 or later
    1010License URI: https://www.gnu.org/licenses/gpl-2.0.html
    … …  
    3939= Pricing =
    4040
    41 The plugin is free. You need a FactuHub account with an active plan, and the connection of each store is activated in FactuHub with a one-time payment (no subscription). During FactuHub's free trial (30 days) it works without paying. While a store is not activated, its orders wait and are invoiced automatically as soon as you activate it.
     41The plugin is free. You need a FactuHub account with an active plan, and the store connection is a FactuHub add-on with a monthly fee for the whole company (one store), billed with your plan. During FactuHub's free trial (30 days) it works without paying. While a store is not activated, its orders wait and are invoiced automatically as soon as you activate it.
    4242
    4343== External services ==
    … …  
    8989
    9090== Changelog ==
     91
     92= 0.9.7 =
     93* During the FactuHub trial the store notice no longer shows an "Activar" button (it can only be activated after choosing a plan).
     94
     95= 0.9.6 =
     96* The store connection is now a monthly FactuHub add-on: the "Activar" button shows the price per month.
     97
     98= 0.9.5 =
     99* Demo stores: resetting a demo store now also deletes the product photos that the FactuHub catalogue had downloaded (they stayed in the media library with no product).
    91100
    92101= 0.9.4 =
Note: See TracChangeset for help on using the changeset viewer.