=== PWL DTE for Bsale === Contributors: userdm Tags: woocommerce, bsale, electronic invoicing, chile, dte Requires at least: 6.0 Tested up to: 6.9 Requires PHP: 8.0 Stable tag: 2.1.0 License: GPL-3.0-or-later License URI: https://www.gnu.org/licenses/gpl-3.0.html Automatically generate electronic tax documents (boletas and facturas) via Bsale when orders are completed in WooCommerce. == Description == **PWL DTE for Bsale** connects your WooCommerce store with [Bsale](https://www.bsale.cl/), the leading electronic invoicing and point-of-sale platform in Chile. When an order is completed, the plugin automatically generates the corresponding tax document (boleta or factura electrónica) and submits it to the SII. = Key Features = * **Automatic boleta electrónica** — generated when an order is completed (codeSii 39) * **Factura electrónica** — customer checks "I need an invoice" at checkout and provides their RUT and company name * **Real-time RUT validation** — check digit verification with instant feedback * **Classic and Blocks checkout compatible** — works with WooCommerce shortcode checkout and the new Blocks checkout (WC 8.6+) * **Manual stock sync** — update WooCommerce stock from Bsale with one click * **Duplicate prevention** — uses referenceId to avoid issuing the same DTE twice * **`[pwl_dte]` shortcode** — display the tax document on the order confirmation page or My Account * **Sandbox mode** — test without affecting real SII documents * **Activity logs** — detailed record of every DTE issued with status and folio number = Requirements = * WordPress 6.0 or higher * WooCommerce 8.0 or higher * PHP 8.0 or higher * Active [Bsale](https://www.bsale.cl/) account with API token = Lite vs Pro = The free (Lite) edition includes boleta, factura, checkout fields, manual stock sync, and DTE shortcode. The Pro version adds: automatic cron-based stock sync, dedicated stock office, multi-office support (shipping method → office mapping), automatic retry for failed DTEs, real-time webhooks, and credit notes on refunds. **Pro edition (commercial):** [Bsale DTE Pro — purchase and details on PluginLATAM](https://pluginwordpresslatam.cl/producto/bsale-dte-integracion-woocommerce-bsale-dte-pro/) == Installation == 1. Upload the plugin to `/wp-content/plugins/pwl-dte-for-bsale/` or install it directly from the WordPress plugin directory. 2. Activate the plugin from the **Plugins** menu in WordPress. 3. Go to **PWL DTE → Settings** and enter your Bsale API token. 4. Select the mode (Sandbox or Production) and the issuing office. 5. Click **Test Connection** to verify the token is valid. 6. Done! DTEs will be generated automatically when orders are completed. == Frequently Asked Questions == = Do I need a Bsale account? = Yes. This plugin requires an active [Bsale](https://www.bsale.cl/) account and an API token with permission to issue documents. = Does it work in sandbox mode? = Yes. In **Settings → Connection** you can enable Sandbox mode to test without issuing real documents to the SII. = What happens if DTE generation fails? = The error is recorded in **PWL DTE → DTE Logs** with the Bsale error message. You can retry manually from the order metabox in the WooCommerce admin. = Is it compatible with WooCommerce Blocks checkout? = Yes. The RUT, Company Name, and Business Activity fields work with both the classic checkout ([woocommerce_checkout]) and the Blocks checkout (WC 8.6+). = Does the plugin deduct stock in Bsale? = Yes, if the option is enabled in settings. You can control this via the dispatch parameter in the document settings. = Where can I see generated DTEs? = Each WooCommerce order has a "Bsale — Tax Document" metabox showing the document type, folio, status, and links to the PDF and public URL. You can also view the full history in **PWL DTE → DTE Logs**. = Is the plugin translated into Spanish? = Yes. Volunteers add and update translations on [translate.wordpress.org](https://translate.wordpress.org/projects/wp-plugins/pwl-dte-for-bsale/). If your WordPress dashboard is in Spanish, the plugin’s admin screens can appear in Spanish like other plugins. = Where can I buy or learn more about the Pro version? = The commercial Pro edition is available from PluginLATAM: [Bsale DTE Pro — WooCommerce integration](https://pluginwordpresslatam.cl/producto/bsale-dte-integracion-woocommerce-bsale-dte-pro/). == External Services == This plugin connects to the [Bsale API](https://www.bsale.cl/) to generate and manage electronic tax documents (DTEs) required by Chilean tax law (SII). = What data is sent and when = * When a WooCommerce order is completed, the order details (products, quantities, prices, and customer billing information such as RUT and company name) are sent to Bsale to create a tax document (boleta or factura electrónica). * When manual stock sync is triggered by the store admin, product SKUs are sent to retrieve current stock levels from Bsale. * When testing the API connection from the settings page, a simple request is made to verify the token is valid. No customer data is sent. = Service information = * Bsale website: [https://www.bsale.cl/](https://www.bsale.cl/) * Bsale API documentation: [https://docs.bsale.dev/](https://docs.bsale.dev/) * API hosts used by this plugin: * Default API base URL used by the client: `https://api.bsale.io/v1/` * Additional v2 endpoint usage (for product import and webhook resource reads): `https://api.bsale.io/v2/` * Terms of service: [https://www.bsale.cl/sheet/condiciones-uso](https://www.bsale.cl/sheet/condiciones-uso) * Privacy policy: [https://www.bsale.cl/sheet/politica-privacidad](https://www.bsale.cl/sheet/politica-privacidad) == Screenshots == 1. Plugin settings — Connection tab 2. Checkout with electronic invoice fields 3. "Bsale — Tax Document" metabox on the order 4. DTE Logs page with filters == Changelog == = 2.1.0 = * Lite build: WordPress.org distribution no longer references the Pro-only license client in composer.json (require/repositories scrubbed at build time). * Pro: PWL License client integration and license admin flow updates. * Readme: added link to the commercial Pro product page on PluginLATAM. * Readme: removed "Source Code and Build Tools" section from the plugin directory readme. = 2.0.10 = * Readme: simplified FAQ answer about Spanish translations (end-user wording). = 2.0.9 = * Fix: detect WooCommerce on plugins_loaded so alphabetical plugin load order does not show a false “requires WooCommerce” notice. * Fix: load translations immediately (avoid nested plugins_loaded hook) and fall back to bundled es_CL.mo for Spanish locales (e.g. es_ES) when no locale-specific file exists. = 2.0.8 = * i18n: English source strings (msgid) for translators; full Spanish (Chile) catalog (es_CL) and updated POT. * Plugin header description aligned with WordPress.org English metadata expectations. = 2.0.7 = * Removed automatic cross-plugin deactivation logic to comply with WordPress.org activation policy (users now resolve Lite/Pro conflicts manually). * Finalized 2.0.7 consistency updates across plugin metadata and release docs. = 2.0.6 = * Resolved Plugin Check scanner findings by tightening prepared-query handling in webhook event queries. * Replaced legacy runtime logging calls with WooCommerce logger integration for production-safe logs. * Improved release/build consistency and metadata validation (including plugin header URI safeguards and deploy keep-version flow). = 2.0.5 = * Hardened WordPress.org review compliance across escaping, admin asset loading, and i18n behavior. * Added runnable Playwright Lite E2E workflow and updated Lite testing documentation. = 2.0.0 = * Renamed plugin to PWL DTE for Bsale (slug: pwl-dte-for-bsale) for WordPress.org trademark compliance. * Converted all inline scripts to use wp_add_inline_script() per WordPress best practices. * Added External Services section to readme documenting Bsale API usage. = 1.0.5 = * Legacy release prior to the current trademark-compliant plugin naming. = 1.0.1 = * Fix: In Blocks checkout (WC Blocks), the "I need an electronic invoice" field is now read correctly using the _wc_other/ prefix that WooCommerce Blocks uses internally. This fixes an issue where a Boleta was always generated instead of a Factura when using the Blocks checkout. = 1.0.0 = * Initial public release. * Automatic boleta and factura electrónica generation on order completion. * RUT, Company Name, and Business Activity fields in checkout (classic and Blocks). * Real-time RUT validation via AJAX. * Manual stock sync from Bsale. * DTE shortcode to display the document on the frontend. * Sandbox mode for testing. * Activity logs with filters. == Upgrade Notice == = 2.0.0 = Plugin renamed to PWL DTE for Bsale. All internal identifiers updated for WordPress.org trademark compliance.