Plugin Directory

Changeset 3435218


Ignore:
Timestamp:
01/08/2026 02:46:19 PM (6 weeks ago)
Author:
Picaland
Message:

Added: resolveOrder
Fixed: disableInvoiceOnOrderTotalZero, add support for auto completed order
Fixed: getNature and getRefN

Location:
woopop-electronic-invoice-free/trunk
Files:
14 edited

Legend:

Unmodified
Added
Removed
  • woopop-electronic-invoice-free/trunk/addon/for/cozmos/vendor/composer/installed.php

    r3426093 r3435218  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     6        'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     16            'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • woopop-electronic-invoice-free/trunk/addon/for/pmpro/vendor/composer/installed.php

    r3426093 r3435218  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     6        'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     16            'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • woopop-electronic-invoice-free/trunk/addon/to/aruba/vendor/composer/installed.php

    r3426093 r3435218  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     6        'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     16            'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • woopop-electronic-invoice-free/trunk/addon/to/fattureincloud-stock/vendor/composer/installed.php

    r3426093 r3435218  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     6        'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     16            'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • woopop-electronic-invoice-free/trunk/addon/to/fattureincloud/vendor/composer/installed.php

    r3426093 r3435218  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     6        'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     16            'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • woopop-electronic-invoice-free/trunk/addon/to/sdi-pec/vendor/composer/installed.php

    r3426093 r3435218  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     6        'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     16            'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
  • woopop-electronic-invoice-free/trunk/changelog.txt

    r3426093 r3435218  
     1= 6.5.8 - 08/01/2025 =
     2Added: resolveOrder
     3Fixed: disableInvoiceOnOrderTotalZero, add support for auto completed order
     4Fixed: getNature and getRefN
     5
    16= 6.5.7 - 23/12/2025 =
    27Added: Freshworks widget
  • woopop-electronic-invoice-free/trunk/inc/integrations.php

    r3409381 r3435218  
    360360                            'help_link', WC_EL_INV_TEXTDOMAIN); ?></a></li>
    361361                <li><a target="_blank"
     362                       href="https://help.popapi.io/category/paid-memberships-pro/"><?php echo esc_html_x('Paid Memberships Pro',
     363                            'help_link', WC_EL_INV_TEXTDOMAIN); ?></a></li>
     364                <li><a target="_blank"
    362365                       href="https://help.popapi.io/category/sdi-via-pop/"><?php echo esc_html_x('SdI via POP',
     366                            'help_link', WC_EL_INV_TEXTDOMAIN); ?></a></li>
     367                <li><a target="_blank"
     368                       href="https://help.popapi.io/category/peppol/"><?php echo esc_html_x('PEPPOL',
    363369                            'help_link', WC_EL_INV_TEXTDOMAIN); ?></a></li>
    364370                <li><a target="_blank"
  • woopop-electronic-invoice-free/trunk/index.php

    r3426093 r3435218  
    77 * Description: POP automatically configures your e-commerce to comply with European tax regulations. Your e-commerce can generate electronic invoices in XML format and, thanks to our APIs, automatically transmit them to your accounting software and tax authorities.
    88 *
    9  * Version: 6.5.7
     9 * Version: 6.5.8
    1010 * Author: POP
    1111 * Author URI: https://popapi.io/
     
    5252define('WC_EL_INV_NAME', 'POP Electronic Invoice');
    5353define('WC_EL_INV_TEXTDOMAIN', 'el-inv');
    54 define('WC_EL_INV_VERSION', '6.5.7');
     54define('WC_EL_INV_VERSION', '6.5.8');
    5555define('WC_EL_INV_VERSION_CLASS', str_replace('.', '_', WC_EL_INV_VERSION));
    5656define('WC_EL_INV_PLUGIN_DIR', basename(plugin_dir_path(__FILE__)));
  • woopop-electronic-invoice-free/trunk/readme.md

    r3426093 r3435218  
    44* **Requires at least:** 4.6
    55* **Tested up to:** 6.9
    6 * **Stable tag:** 6.5.7
     6* **Stable tag:** 6.5.8
    77* **Requires PHP:** 5.6
    88* **License:** GPLv2 or later
     
    150150## Changelog
    151151== Changelog ==
     152= 6.5.8 - 08/01/2025 =
     153* Add: resolveOrder
     154* Fix: disableInvoiceOnOrderTotalZero, add support for auto completed order
     155* Fix: getNature and getRefN
     156
    152157= 6.5.7 - 23/12/2025 =
    153158* Add: Freshworks widget
  • woopop-electronic-invoice-free/trunk/readme.txt

    r3426093 r3435218  
    44Requires at least: 4.6
    55Tested up to: 6.9
    6 Stable tag: 6.5.7
     6Stable tag: 6.5.8
    77Requires PHP: 5.6
    88License: GPLv2 or later
     
    129129
    130130== Changelog ==
     131= 6.5.8 - 08/01/2025 =
     132* Add: resolveOrder
     133* Fix: disableInvoiceOnOrderTotalZero, add support for auto completed order
     134* Fix: getNature and getRefN
     135
    131136= 6.5.7 - 23/12/2025 =
    132137* Add: Freshworks widget
  • woopop-electronic-invoice-free/trunk/src/Functions/Invoice.php

    r3382415 r3435218  
    676676
    677677    if ('on' === $disableInvoiceNumber &&
    678         is_subclass_of($order, '\WcElectronInvoice\Providers\Order')
     678        (is_subclass_of($order, '\WcElectronInvoice\Providers\Order') || $order instanceof \WC_Abstract_Order)
    679679    ) {
    680680        $total = floatval($order->get_total());
  • woopop-electronic-invoice-free/trunk/src/WooCommerce/Fields/TaxFields.php

    r3327458 r3435218  
    209209    public static function getNature($order): ?string
    210210    {
    211         if ($order instanceof \stdClass) {
    212             if ('shop_order' === $order->order_type) {
    213                 $order = OrderQuery::instance()->getProviderOrder($order->id, $order->provider);
    214             } elseif ('shop_order_refund' === $order->order_type) {
    215                 $order = OrderQuery::instance()->getProviderOrder($order->parent_id, $order->provider);
    216             }
    217         }
    218 
    219         if (! is_subclass_of($order, '\WcElectronInvoice\Providers\Order') &&
    220             ! is_subclass_of($order, '\WcElectronInvoice\Providers\OrderRefund') &&
    221             ! property_exists($order, 'id') ||
    222             ! method_exists($order, 'get_id')
     211        $order            = self::resolveOrder($order);
     212        $sanMarinoSupport = sanMarinoSupport();
     213
     214        $isOrder  = is_subclass_of($order, '\WcElectronInvoice\Providers\Order');
     215        $isRefund = is_subclass_of($order, '\WcElectronInvoice\Providers\OrderRefund');
     216
     217        if ((! $isOrder && ! $isRefund) || ! method_exists($order, 'get_id')) {
     218            return null;
     219        }
     220
     221        if (! self::getType($order->get_meta('_billing_invoice_type'))) {
     222            return null;
     223        }
     224
     225        $nature = method_exists($order, 'get_nature_rc') ? $order->get_nature_rc() : '';
     226
     227        // Country IT return
     228        if ($isOrder &&
     229            'SM' !== $sanMarinoSupport->shopCountry &&
     230            'IT' === $order->get_billing_country() &&
     231            '' === $nature
    223232        ) {
    224233            return null;
    225234        }
    226235
    227         if (! self::getType($order->get_meta('_billing_invoice_type'))) {
    228             return null;
    229         }
    230 
    231         $nature = $order->get_nature_rc();
    232 
    233         // Country IT return
    234         if (is_subclass_of($order, '\WcElectronInvoice\Providers\Order') && ! property_exists($order, 'id')) {
    235             if ('IT' === $order->get_billing_country() && ! $nature) {
    236                 return null;
    237             }
    238         }
    239 
    240         $parentID = $order->get_parent_id();
    241         $orderID  = $order->get_id();
    242 
    243         $parentOrder    = OrderQuery::instance()->getProviderOrder($parentID, $order->provider);
    244         $orderIsAllowed = isset($parentID) && 0 !== $parentID && 'shop_order_refund' === $order->get_type() ?
    245             // parent of shop refund order
    246             $parentOrder :
    247             // shop order
    248             $order;
    249 
    250         if (is_object($orderIsAllowed)) {
    251             $natureRCharge = $orderIsAllowed->get_meta('nature_rc');
    252         } else {
    253             $natureRCharge = '';
    254         }
    255 
    256         if ('' !== $natureRCharge) {
    257             return $natureRCharge;
    258         } else {
    259             return '';
    260         }
     236        $parentOrder = null;
     237        if (property_exists($order, 'provider') && 0 !== (int) $order->get_parent_id()) {
     238            $parentOrder = OrderQuery::instance()->getProviderOrder($order->get_parent_id(), $order->provider);
     239        }
     240
     241        $orderForMeta = $isRefund && is_object($parentOrder) ? $parentOrder : $order;
     242        $natureMeta   = is_object($orderForMeta) ? $orderForMeta->get_meta('nature_rc') : '';
     243
     244        if ('' !== $natureMeta) {
     245            return $natureMeta;
     246        }
     247
     248        return $nature;
    261249    }
    262250
     
    290278    public static function getRefN($order)
    291279    {
    292         $provider         = $order->provider;
    293         $order            = OrderQuery::instance()->getProviderOrder($order->id, $provider);
     280        $order            = self::resolveOrder($order);
    294281        $sanMarinoSupport = sanMarinoSupport();
    295282
    296         $refNorm = '';
    297         if (is_subclass_of($order, '\WcElectronInvoice\Providers\OrderRefund')) {
    298             $refNorm = $order->get_ref_norm_rc();
    299         }
    300 
    301         $isSubclass = is_subclass_of($order, '\WcElectronInvoice\Providers\Order');
    302         if ($isSubclass &&
    303             ! property_exists($order, 'id') ||
    304             ! method_exists($order, 'get_id')
     283        $refNorm = method_exists($order, 'get_ref_norm_rc') ? $order->get_ref_norm_rc() : '';
     284
     285        $isOrder  = is_subclass_of($order, '\WcElectronInvoice\Providers\Order');
     286        $isRefund = is_subclass_of($order, '\WcElectronInvoice\Providers\OrderRefund');
     287
     288        if ((! $isOrder && ! $isRefund) || ! method_exists($order, 'get_id')) {
     289            return null;
     290        }
     291
     292        if (! self::getType($order->get_meta('_billing_invoice_type'))) {
     293            return null;
     294        }
     295
     296        // Country IT return
     297        if ($isOrder &&
     298            'SM' !== $sanMarinoSupport->shopCountry &&
     299            'IT' === $order->get_billing_country() &&
     300            '' === $refNorm
    305301        ) {
    306302            return null;
    307         } elseif (! $isSubclass) {
    308             $order = wc_get_order($order->id);
    309         }
    310 
    311         if (! self::getType($order->get_meta('_billing_invoice_type'))) {
    312             return null;
    313         }
    314 
    315         // Country IT return
    316         if ($isSubclass) {
    317             if ('SM' !== $sanMarinoSupport->shopCountry &&
    318                 'IT' === $order->get_billing_country() &&
    319                 ! $refNorm) {
    320                 return null;
    321             }
    322         }
    323 
    324         $parentID       = $order->get_parent_id();
    325         $orderID        = $order->get_id();
    326         $parentOrder    = OrderQuery::instance()->getProviderOrder($parentID, $provider);
    327         $orderIsAllowed = isset($parentID) && 0 !== $parentID ?
    328             // shop refund order
    329             $parentOrder :
    330             // shop order
    331             $order;
    332 
    333         if (is_object($orderIsAllowed)) {
    334             $natureRefNorm = $orderIsAllowed->get_meta('ref_norm_rc');
    335         } else {
    336             $natureRefNorm = '';
    337         }
     303        }
     304
     305        $parentOrder = null;
     306        if (property_exists($order, 'provider') && 0 !== (int) $order->get_parent_id()) {
     307            $parentOrder = OrderQuery::instance()->getProviderOrder($order->get_parent_id(), $order->provider);
     308        }
     309
     310        $orderForMeta  = $isRefund && is_object($parentOrder) ? $parentOrder : $order;
     311        $natureRefNorm = is_object($orderForMeta) ? $orderForMeta->get_meta('ref_norm_rc') : '';
    338312
    339313        if ('' !== $natureRefNorm) {
    340314            return $natureRefNorm;
    341         } else {
    342             return '';
    343         }
     315        }
     316
     317        return $refNorm;
     318    }
     319
     320    /**
     321     * Resolve order/stdClass to provider order where possible.
     322     *
     323     * @param $order
     324     *
     325     * @return mixed
     326     */
     327    private static function resolveOrder($order)
     328    {
     329        $isOrder  = is_subclass_of($order, '\WcElectronInvoice\Providers\Order');
     330        $isRefund = is_subclass_of($order, '\WcElectronInvoice\Providers\OrderRefund');
     331        if ($isOrder || $isRefund) {
     332            return $order;
     333        }
     334
     335        if ($order instanceof \stdClass && isset($order->order_type, $order->provider, $order->id)) {
     336            $orderId = 'shop_order_refund' === $order->order_type ? $order->parent_id : $order->id;
     337            return OrderQuery::instance()->getProviderOrder($orderId, $order->provider);
     338        }
     339
     340        if (isset($order->provider, $order->id)) {
     341            return OrderQuery::instance()->getProviderOrder($order->id, $order->provider);
     342        }
     343
     344        return $order;
    344345    }
    345346
  • woopop-electronic-invoice-free/trunk/vendor/composer/installed.php

    r3426093 r3435218  
    44        'pretty_version' => 'dev-main',
    55        'version' => 'dev-main',
    6         'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     6        'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    77        'type' => 'library',
    88        'install_path' => __DIR__ . '/../../',
     
    1414            'pretty_version' => 'dev-main',
    1515            'version' => 'dev-main',
    16             'reference' => 'f200e3aa0575373da9b9d69cfa3f3d0273687fe4',
     16            'reference' => '1ecdf32bf3f88d82e8272ff1de3beaddca188836',
    1717            'type' => 'library',
    1818            'install_path' => __DIR__ . '/../../',
Note: See TracChangeset for help on using the changeset viewer.