[DBTech] DragonByte eCommerce

[DBTech] DragonByte eCommerce 2.2.0rc2

No permission to buy ($49.95)
Update highlights

This version adds a new feature; a BBCode embed for products. You can copy a product's BBCode from its "Share product" widget on the product information page and paste it into any XF text box that supports BBCode.

The Commissions page has also been tweaked in order to make individual transactions easier to read, as well as fixing some display issues with negative amounts (e.g. chargebacks / refunds).

Lastly, about half a dozen reported bugs have been resolved.

Complete Change Log

Feature: Ability to embed products in posts
Change: Use a separate phrase for "Paid" (invoice) from "Paid" (product costs money)
Change: Reworked the "Applicable Payments" section of the "Outstanding Payments" page for Commissions to be easier to read
Change: Standardised the purchase log status phrases
Fix: XR Product Manager importer would not convert serialized fields correctly
Fix: Download chooser form did not respect download visibility state
Fix: Moving categories would not immediately trigger a permission rebuild
Fix: Fixed an issue where assigned products would not appear in the "generate licenses" list even after assigning someone as a Distributor
Fix: Fixed an issue where cancelled / refunded transactions would not correctly update the Commission value on the Outstanding Payments page
Fix: Fixed an issue where the Order Clean-up feature was not working as intended
Fix: Fixed an issue where the Order Reminder feature was not working as intended
Fix: Fixed an issue where the License Expiry Reminder feature was not working as intended
Update highlights

After a successful Beta period, it's time to release the Gold version of DragonByte eCommerce v1.4.0! 🎉

This version contains multiple usability improvements and enhancements. The "Simplified download interface" option has been made obsolete, and its functionality has been merged with the "normal" downloads interface.
This means users will have an easier time downloading their licenses, as download buttons are now more readily available.

Furthermore, when viewing releases on the Product information page, the download versions any given release applies to will now display in the list, reducing confusion for people stuck on older platforms of your product.

This version also contains future-proofing for PHP 7.4 / XenForo v2.1.3.

Lastly, about half a dozen discovered bugs have been resolved.

Complete Change Log

Feature: Added a list of versions each individual release applies to when viewing the Releases tab on the product info page
Feature: The "Download" button on the "Licenses" tab on the product info page now appears in all scenarios
Change: Eliminated the "Simplified downloads interface" option and switched its functionality to a style property (controls whether the grouped download interface shows up when clicking a license)
Change: The user who added a download to a product is now stored in the download record
Change: Set version_string as required in the Download entity
Change: Changed the way API calls are made, in order to support the HTTP Proxy feature in XenForo
Fix: PHP 7.4 compatibility fix
Fix: Respect deleted/moderated when displaying list of releases
Fix: Fix errors on install
Fix: Fix for server error in license entity
Fix: When editing products, the global "Enable content tagging" setting was not respected
Fix: Fix a few issues with the download cache for download versions
Fix: Fix alerting on new product update (fall back to product if the download user does not exist)
Fix: The user who added a download to a product will now correctly show in the news feed / update alert
Fix: Fixed an issue where removing the last item from an order would not delete the order itself.
Fix: Fix various issues with the "Generated downloads cache" feature
  • Love
  • Like
Reactions: Xon and SyTry
Update highlights

Welcome to the second Release Candidate version of DragonByte eCommerce v1.4.0! 🎉

This version adds a couple new features; Ability to hide a product from the product list, and ability to associate a forum with a product to work as a support forum.

If you associate a forum with a product, a new "Get support" button will be added to the product information block, letting users know exactly where to get support. This works especially well with our DragonByte Tickets product, which will show a special support ticket UI when viewing the support forums.

The way pricing is displayed in templates has also changed, to fix a few issues where an error could occur if a sale was ongoing and a product was free, or in some cases even just marking a product as free.

The registration defaults have also been changed, no longer requiring an entirely separate setting. The toggles can be found inside XF's own registrationDefaults setting.

Complete Change Log

Feature: Per-product setting to indicate whether it's included in product lists
Feature: You can now enter a "Support forum" for each product, with a link on the product information page
Feature: A new phrase (dbtech_ecommerce_invoice_closing_line) has been added, letting you add custom text to the bottom of the invoice (below the order total)
Change: Merged registration defaults into the core setting
Fix: Only show renew button if the user has renewal licenses
Fix: Copy Xen Product Manager Essentials support & default config into XF-PM importer
Fix: Fix incorrect pricing display on the product overview page if the product is currently on sale
Fix: Fixed an issue where the pricing display could be corrupted
Fix: Do not show download versions without any contents
  • Like
Reactions: Xon
Update highlights

After several months in development, we're proud to present the first Release Candidate version of DragonByte eCommerce v1.4.0! 🎉

As you can tell, the list of changes is nothing short of immense. I won't be able to break down every single change or new feature, as that would take hours, but I'll go through some of the most important ones.

VAT ID per address: VAT IDs are now stored in the Address record, instead of in the Order record. This means that recurring customers will no longer have to fill out their VAT ID every time they place a new order. With this change, it is also possible to place addresses in the Approval Queue for moderators to validate prior to allowing it to be applied to an order.
If you don't wish to use this moderation feature, a user group permission can be granted to bypass validation.

Uneditable addresses: Addresses that have been used in orders, or have a verified VAT ID, can no longer be edited in the front-end. Administrators can still edit these records in the Admin control panel. This is to preserve the records in case the tax man comes calling for an audit.

Recurring sales: You can configure sales to recur at certain time intervals, or using custom date ranges. This makes recurring sales useful for sales that occur at the same date every year (such as Xmas) and for sales that occur at different dates every year (such as Easter).

Specific renewal costs: Each different product pricing tier for a digital product can now have a specific, fixed renewal cost. This cost does not change when the license is expired vs. still active.

UI improvements: Many different improvements have been made to the UI, including (but not limited to) a purchase button in the product list, renewal costs in the product information block, version number in the product list, ability to click "Renew licenses" to renew even non-expired licenses, and more.

XPM / XRPM importer improvements: Various improvements to these importers see them more reliably importing data, including extended data from XPM Essentials.

Bugs, now fixed: Over two dozen bugs have been fixed!

Thanks to @Xon for many of these features and improvements!

Complete Change Log

Feature: Generated downloads are now optionally cached via a new config.php flag "$config['dbtechEcommerceCacheReleases'] = true;" (Experimental)
Feature: Automatically mark alerts for download as read when downloading a release
Feature: Automatically mark alerts for download as read when viewing the download page
Feature: Automatically mark alerts for product ratings as read when viewing the reviews page
Feature: Automatically mark alerts for product ratings as read when viewing the latest reviews page
Feature: Automatically mark alerts for download as read when viewing the releases page
Feature: Automatically mark alerts for a product as read when viewing the main product page
Feature: For digital products, the version number now appears in a more prominent spot in the product list
Feature: Purchase button on product list
Feature: Starting renewal cost is now in a tooltip on the pricing label
Feature: Renewal costs are now displayed on the product pricing block
Feature: Renewal pricing can now be set per product cost
Feature: Ability to display a "Checkout" button in the pricing info block for products currently in cart
Feature: Ability to specify any number of date ranges in the future for the sale to recur manually
Feature: Recurring sales
Feature: Implement "On sale" product filter
Feature: Ability to customise product release thread titles
Feature: Moderation queue support for Addresses, when using the VAT system
Feature: Per-sale option to feature products during sale
Feature: Added purchase type (new / renew) to the invoice
Feature: [XPM Importer] Properly convert XPM Essentials 'branches' into product versions
Feature: [XPM Importer] Import product filters
Feature: [XPM Importer] Migrate extra license field
Feature: [XPM / XRPM Importer] Setup product-watch for imported licenses
Feature: The "Expired" label and the expiry date (for non-lifetime licenses) are now links to purchase a renewal
Feature: When the "Simplified download interface" setting is disabled, show a grouped list of the latest X releases in the license view

Change: Merged registration defaults into the core setting
Change: Improve performance on the product overview list by caching product pricing data
Change: Simplified the CSS / Style properties for the Sale ribbon
Change: Sale percent discounts now accept floats
Change: Sale discounts are now formatted to remove unneeded trailing zeroes
Change: Sales tax rate is now displayed in the invoice
Change: Fixes & improvements to the XenProductManager import
Change: Add-on products are no longer included in the sitemap, as they do not have a dedicated product information page
Change: Product icon no longer shows up on the product info page if there's also no product description
Change: "Renew licenses" button will now show up if any license is not lifetime in addition to if any licenses have expired
Change: Add-on licenses now link to the parent license if the license info is invalid
Change: The email validator for Addresses now respects the banned emails list
Change: VAT ID is now stored in the Address record, automatically set in an order when choosing an address with a VAT ID
Change: Addresses used in previous orders can no longer be edited or deleted
Change: Addresses with a valid VAT ID can no longer be edited or deleted
Change: Use new Approval Queue template
Change: Use XF's abstracted filesystem instead of direct access for most contents in 'internal_data' & 'data' directories

Fix: Fixed "{name}" showing up in the news feed instead of the user's name when a new review is written
Fix: Email options would not save correctly on Account Details or Privacy pages
Fix: Fixed an issue where sales would not rebuild when undeleted
Fix: Certain VAT ID formats could produce a server error when validating them
Fix: The email subject for order shipped emails would not correctly include the board title
Fix: Ensure prefixes can be clickable on the main product overview page
Fix: Fix a race condition where viewing another user's pending order could remove their items from cart
Fix: Fixed serialize -> json_encode for various cache rebuilds
Fix: Shipping notification could generate a server error in some circumstances
Fix: Fixed product cost cache not rebuilding after importing one
Fix: Fix for a potential server error where a non-existent order is refunded
Fix: Fix eror during updates; Template error: Method canViewDbtechEcommerceProducts is not callable on the given object
Fix: Fix missing "View scheduled releases" permission
Fix: Fixed infinite scrolling when using the Grid style
Fix: Check whether invoices are enabled for the front-end order list
Fix: "Page not found" when trying to view the licenses tab
Fix: Deleting orders containing deleted products would fail with an error
Fix: Filtering licenses by product using the drop-down would not preserve the selection onto page 2 onwards
Fix: New orders could produce a server error record in certain circumstances
Fix: Fixed an issue where the email preferences in the Preferences page would not show up in certain scenarios
Fix: Fixed banners on List style
Fix: [XPM Importer] Import per-product permissions
Fix: Certain data could be stored with an incorrect amount of decimals
Fix: Fix "Template error: Method canViewDbtechEcommerceProducts is not callable on the given object" during rebuild
Fix: Ensure alerts are linked to add-on
Fix: Fix possible "Call to undefined method hasDbtechEcommerceProductPermission()" during rebuild
Fix: Better handle copied from abstract path system to temp files
Fix: Stop responding to API requests if the API system is disabled
  • Like
Reactions: Xon
Update highlights

This is a re-release of v1.3.4 (which has also been patched) to fix an issue that could lead to data loss.

Given following scenario:
  • Another user's order is pending
  • The current viewing user is the owner of a product in the other user's cart (and thus can't purchase it)
  • The current viewing user visits the order log in the Admin control panel
In the above scenario, any order items whose products are owned by the current viewing user would be silently removed from the other user's cart.

The reason this occurred is that every time the order total is calculated for pending orders, the order items are validated to ensure that the user has the permission to buy the item in question.
This permission check did not ensure it was taking the buyer's permissions into account, so permissions were checked incorrectly.

The problem only revealed itself because of the Order log in the AdminCP, which is currently the only way it is possible to view another user's current pending order.

To clarify: The existing v1.3.4 release has also been patched, so if your eCommerce license has expired since the release of v1.3.4, you can re-download that version to obtain the fix.

Complete Change Log

Fix: Fix a race condition where viewing another user's pending order could remove their items from cart
Update highlights

This update features some important changes in relation to VAT and PayPal.

If you sell your products via PayPal, and use accounting software like QuickBooks to manage your bookkeeping, it would previously have been difficult to utilise the VAT features in eCommerce while maintaining records in your accounting software. Transactions would either fail to import or be imported with incomplete data.

This happened because eCommerce would specifically tell PayPal how much sales tax to add separately to each transaction, bypassing any sales tax rates you set up in your interface.

There is now a new setting for controlling whether the order cost sent to PayPal is inclusive of tax. If this setting is turned off, PayPal will use the sales tax rates as defined in your PayPal account settings to apply sales tax.

If a valid VAT ID was added to the order, eCommerce will tell PayPal to not add any tax to the order, unless the person placing the order is from the same country as your business.
If both the seller and the customer is located in the same country, VAT should always be added and each party will be able to reclaim the VAT from the tax authority.

The next version (v1.4.0) will have even more updates with regards to VAT. The tentative feature list:
  • Sales tax ID will be stored in the address book, rather than the order. This means recurring customers won't have to keep re-entering their VAT ID every time they place an order.

  • If VAT is enabled in the tax settings, addresses with VAT IDs will be placed under moderation and appear in the "Approval Queue" in XenForo. You can then look up the VAT ID and see whether the user entered their correct business address.

  • A new user group permission will be added to allow chosen user groups to bypass the address moderation requirement, if you do not wish / need to use the address moderation feature.

  • If an address is under moderation, a notice will appear on the checkout screen letting them know they will still be charged VAT until the address is approved.

  • Addresses with approved VAT IDs will not be editable and customers will not be able to delete them from their address books. This is to prevent older order records from being rendered incomplete.

  • Addresses will become searchable / editable in the AdminCP.
The goal of this update is to ensure that your business is compliant with all tax authorities and their varying record keeping requirements.

I'm aiming to make the update as frictionless as possible for your existing customers. All past sales tax IDs will be imported into the corresponding address entries. The existing form field for entering a VAT ID during checkout will simply be changed to apply to the currently selected billing address, rather than the order itself.

As always, it's not possible to provide an ETA for this update.

Complete Change Log

Feature: Add new setting for controlling whether tax amount is included in the amount sent to the payment processor
Change: Update sales tax calculation to only exclude sales tax if VAT is enabled and the user is from a different VAT country
Fix: Fix product description not saving
Fix: Fixed an issue where add-on products would generate an alert if the user is watching the category
Update highlights

This update resolves an issue where the "Extend licenses" feature would get stuck in an endless loop if more than 1,000 licenses matched the criteria.

Complete Change Log

Change: Back-end improvements to utilise new XF 2.1 method of deleting content
Fix: Fixed an issue where the "Extend licenses" functionality could get stuck in an endless loop
Update highlights

This update primarily focuses on making changes to the Structured Data for product information pages, to improve compatibility with rich search results on Google. Multiple optional fields are now added, and the correct product icon URLs are now used for product images.

There were also a few important changes and fixes that necessitated a speedier release. Previously, store credit applied to an order would cause two things to occur; the store credit was not taken into consideration when submitting the final cost to PayPal, and the sales tax amount submitted to PayPal would be incorrect in the event that store credit was used in the order.

Both of these issues have now been resolved, so the correct order total is used.

Complete Change Log

Change: Update the way PayPal tax amount is added
Change: Structured Data changes for Product information pages
Fix: Fix missing order cancel route in the front-end
Fix: Fixed an issue in which store credit is not taken into consideration when submitting an order to PayPal
  • Like
Reactions: 51463
Update highlights

This update features an improvement to the license expiry reminder system; previously, renewing a license or changing its expiry date manually would not reset the "expiring soon" and "has expired" reminders. Which it now does.

A new feature has been added to the pricing tier (digital) / product variation (physical) system, where you can add a short description that will be displayed on the pricing choice screen as a little hover icon.

Speaking of pricing tiers / product variations, the UI for managing them has been completely reworked. It was always sub-optimal, especially on mobile devices, but with the addition of the above description feature it became urgent to rework this.
Now, each tier / variation uses the standard form element styling, with a new header to divide them.

You can see an example of the new look here:

Lastly, an issue was identified where attempting to change a product's prefix via Inline Moderation would fail to work. It was quite important to fix, especially in the event that you might want to edit Prefixes for Multiple products at some point...

Complete Change Log

Feature: Changing a license's expiry date (manually or via renewal) will now also reset its reminder states
Feature: Add "description" to a pricing tier, which will be shown in the pricing list as a hover icon
Change: Reworked UI for product pricing tiers / product variations
Fix: Fix updating prefixes via inline moderation
  • Like
Reactions: 51463
Update highlights

After a lengthy beta / RC period, this version has now gone Gold! 🎉

This update adds a new feature: Ability to set a custom product icon size! The XenForo Options have been updated to add this new setting, which will also resize your product icons in the product display. You will need to re-upload your product icons to avoid them looking stretched if you want to use a bigger icon, though.

An issue was discovered where moderator action alerts would not display to non-moderator users due to the way these alerts were stored. The short version of the technical explanation; the alerts were associated with the content, rather than the user receiving the alert, thus if the user could no longer view the content (such as a soft deleted product), the alert would not show.

Where possible, I've updated the existing stored alerts, and where this is not possible I have simply removed any such alerts from the system.

Lastly, it is now possible to save an empty tagline or description when editing a product.

Complete Change Log

Feature: The product icon size is now controllable in the XenForo Options
Change: Change the way Moderator Action alerts are stored
Fix: Fixed an issue where it was not possible to save an empty tagline or description when editing a product
  • Like
Reactions: 51463