Deployment Day: Version 1.6.6 custom fields, cart calculations, eu tax rules and a lot of improvements

We’ve just upgraded all stores to the latest version of the SolidShops e-commerce CMS. This is a big maintenance release with some improvements, based on the feedback we’ve received!

Custom fields

From now on you can add multiple custom field groups to one product. This can be useful if you need a custom field group for several languages or if you need custom fields that are only relevant for some products.

We added extra custom field types such as a checkbox, a radio button and a datetime picker.

2015-01-17 21_02_01-Custom Fields


We made some changes to our invoicing system to be compliant with the new EU VAT rules

Since January 1 2015 some new VAT rules are applicable for stores selling to/from the EU.

For B2B nothing has changed but if you are selling digital products to customers(B2C) you must charge the tax percentage applied by the country of the buyer and not the one of your own country.

If you did need to change something, you should have been notified by us. Please check however in any case your tax settings with your accountant!

A good writeup can be found at The Next Web.

The official  information issued by the European Commision can be found here:


Shopping cart calculations

Since customers started to use our product for more complicated themes, we noticed we could improve our API object attributes.

The interpretation of the subtotal attribute in our order/cart objects wasn’t always clear since,depending on the tax setting of your store, it might contain tax or not. For the sake of simplicity we renamed the following fields:

  • order.items_subtotal -> order.items_price_total
  • order.item[0].subtotal -> order.item[0].price_total.
  • cart.items_subtotal -> cart.items_price_total
  • cart.item[0].subtotal -> cart.item[0].price_total.

There was an issue with the calculation of the cart total which we solved as follows. Since the coupon was deducted from the cart total (after taxes & shipping), the tax in our order and cart attributes was not recalculated. This has now been solved.

A new attribute has been added so you can print the discount of the shopping cart without tax. The attribute, that showed the discount amount(tax included) is still available.

Although we updated all references where these objects were used(themes, mails, invoices, theme store) we suggest to keep these changes in mind if you copy/paste an existing template into SolidShops.


Unit & integration tests

Since we had some regression issues caused by different reasons we started to write unit tests (before and after !) every change in our codebase. We also wrote a lot of integration tests for all kinds of important things like cache invalidation, template rendering, virus scanning and all kinds of shopping cart calculations (incl/excl tax, shipping, discounts etc).

2015-01-30 18_47_22-MINGW32__c_work_websites_solidshops_tests



Objects used in our template language and api:

  • An extra field has been added to the variant combination object (product.variant_combinations.extra). This field can be used for different purposes like a discount per variant combination or additional information about the variant combination.
  • We added the date_created  attribute to the page and product object
  • Each order object has a new “status”(pending,paid,shipped,…) attribute and the order filter has been updated so you can search orders based on this status.
  • The order.date_paid attribute has been removed since it was never used.
  • We introduced an order.payment_method attribute so you can read the selected payment method in your api or email templates.
  • We added the tax_setting attribute to the order.items object
  • We returned the order.notes attribute in our api and template objects so to have access to the comments about an order in an external system
  • We added an id attribute to the custom field object. It’s also possible to filter all custom fields based on this id.


  • Our servers have been patched for the POODLE vulnerability
  • Our servers have been patched for the GHOST vulnerability


  • The server 2 server integration of Ogone did not succeed in some circumstances. We updated our library to prevent this in the future. This was something that was also missing in the Ogone documentation. After having contacted Ogone they told us they would update the documentation
  • The Paypal payment gateway showed a link to instead of once the payment was done. The customer was redirected to the correct domain though.


  • When you used our checkout partial “checkout_body_container_pre” to print images that contained links to http resources you received mixed content warnings. This has been resolved.
  • When you returned from the checkout page back to your cart, the selected payment method was not remembered.


  • If pagination was used on a custom template,  the first_url attribute of the pagination object contained 1 for the first page. So the url was instead of
  • We solved a regression bug where order.get() would not return the current order on the order confirmation page


  • 20 instead instead of 10 orders are shown on the order tab
  • In our email and invoice templates we injected a variable “order” with all the information about the order into the template. The problem was that this variable replaced the default “order” object. Since you couldn’t use the default order object anymore, we changed the variable and injected it to orderObject so you could use both. All templates have been updated.
  • Order attributes that contained to much text unnecessary stretched the layout. From now on these long texts are wrapped over multiple lines


  • From now on our caching layer gets refreshed when things like tax settings, coupons or categories change.
  • An option has been added to our theme importer so you can automatically activate the newly imported theme. This setting is remembered so this should significantly speed up development if you are importing your theme from git during development.



Enjoy the updates everyone and let us know if you have an idea that can improve our application and our service to you. We’d love to know!