> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dc.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> Änderungsprotokoll für dynamic commerce

<Update label="04/2026" description="April 2026">
  **Features**

  * add custom success message, add placeholder to confirmation email, success messages and subjects
  * add confirmation email in contactform. change checkbox infield from lines to header
  * add centralAuthV2 (security improvements)
  * add env var to directly redirect to auth0 for login

  **Improvements**

  * Use prep stmt with correct params
  * refactor migration handling to improve transaction management
  * refactor mysqli\_query calls to prepared statements
  * Refactor shop\_payment\_option query to use prepared statements
  * refactor basket profile to basket type
  * Paypal: use the calculate\_totals to determine the amount
  * CustomerAddress: initialize the CustomerAddress prior to session\_save\_data\_b2c()
  * Payment: remove useless count on the not defined variable \$resultArray for paypal express
  * Availability: change literals in getItemAvailability to constants
  * AttributeFilter: change the querys HAVING COUNT from item\_no to the attribute\_code

  **Bug Fixes**

  * fix codeception migrations - fix basket quantity change
  * fix sql params in register\_new\_customer
  * fix sql injection in user\_order\_payment.inc.php refactors mysqli\_query calls to PDOQueryWrapper

  **UI/UX Adjustments**

  * styling inquiry basket
  * changed localized strings for quotes

  **Other**

  * merge from lulatour
  * cleanup db dump
  * Deleted unlink.svg:Zone.Identifier
  * set collana pay paid order to successfully on callback
</Update>

<Update label="03/2026" description="März 2026">
  **Features**

  * Add navconnect functions for NextGen Migration
  * Add option to load custom favicon from userdata
  * Add script for exporting database from remote to local and config variable for remote branch

  **Improvements**

  * Cast `right_blanket_order` to boolean in getter/setter functions
  * Extend shop user SQL data for new schema

  **Bug Fixes**

  * Fix migration tool
  * Fix missing colon on PDO parameters
  * Fix shop user modals

  **Other**

  * Update KSS documentation
</Update>

<Update label="02/2026" description="Februar 2026">
  **Features**

  * Add CRSF token class and use for payment page to prevent multiple post attempts
  * Add new Amazon Pay URLs
  * Add GitHub coding agent for legacy
  * Add Junie guidelines
  * Add original viewmodel context into AdditionalData renderRows
  * Add table indexes
  * Add role for accessibility in lists
  * Add logs to pipeline output
  * Add min, max, and step for search list
  * Add default values for new ShopSetup fields

  **Improvements**

  * Update SQL migrations in demo
  * Improve test execution via composer
  * Optimize scripts for tests
  * Optimize performance of tests
  * Optimize performance of ItemCardTests
  * Optimize test B2B
  * Optimize test execution via composer
  * Refactor and fix open\_salesperson\_login to create a new session for the given salesperson
  * Refactor getUpdateInsertQueryFromArray to improve safety and stability
  * Simplify price queries, add caches, and remove unused parameters
  * Change the default sorting from customer\_no to name for salesperson
  * Change caching keys from arrays to string for price
  * Change default DE country code getting pulled instead of customer country code
  * Change the used parameters in getWebshopItemByItemNo to the correct ones
  * Change the default sorting from customer\_no to name for salesperson
  * Fixed env for additional env variables

  **Bug Fixes**

  * Fixed wrong YAML entries for color in mailConfig
</Update>

<Update label="12/2025" description="Dezember 2025">
  **Improvements**

  * DataCleaning: Change the data cleaning to remove only unlinked/unreferenced data.
  * Salesperson: Move customer fetching to repository to have only one logic.
  * Payment: Refactor the payment response files order\_error, order\_notify, and others.
  * Feeds: Use the permission provider to export only the permitted items.
  * Top Items: Intersect the top items with the allowed item prior to the query.
  * Permissions: Add annotations from the code review.

  **Bug Fixes**

  * Fix quick order get item number from cross-reference.
  * SQL injection fix in item card.
  * Fix navconnect function -> get\_field\_content.
  * Heisenbug when initializing the MustacheRenderer in Docker with XDEBUG\_MODE.
  * Top Items: Make sure that topItemsArray is an array to work with.
  * Fix empty customer class after login.
  * Fixed move up and down in page list view.

  **UI/UX Adjustments**

  * Add item card flag in item list.
  * Fixed icons markup for KSS.
  * Change password link placeholder in BC Webform from `%password_link%` to `%link%`.

  **Other**

  * Remove `b2c/ajax.php` and references of it in `dc/common/common.js`.
  * Tests: Add test for `delete()` in navconnect.
</Update>

<Update label="11/2025" description="November 2025">
  **Features**

  * Add legacy tarball creation for new deployment pipeline method and update build exclusions in Makefile
  * Add pipelines for demo

  **Improvements**

  * Change category structure to mustache template

  **Bug Fixes**

  * Fix infieldInputs: also handle blur for not flickering labels, refactoring
  * Fix infieldInputs: special inputs like tel, date, masketDate that these fields are always focused prevent overlapping label with placeholder
  * Fixed missing index and set default sorting when items have the same ranking
  * Fix rename\_item: mysqli 3rd param causes error, field 'type' not in shop\_user\_basket\_line\_new anymore
  * Fix type error when no items are present in query
  * Fixed sm cell in linklist if is a boolean format
  * Fix BC item preview
  * Fix demo pipeline triggers
  * Fix round values for collanaPay
  * Hotfix: prevent failed order emails due to empty recipient
  * Fixed share URL in item card

  **UI/UX Adjustments**

  * Quantity spinner: prevent add to favorites when quantity input is changed and hitting enter
  * Mobile menu set top 0 of mobile menu when sub-entry is opened - prevent submenu not accessible
  * Tag manager remove noscript-tag

  **Other**

  * Adding files for deployment hooks
  * Prices: add discount\_group to unique nav\_primary index for the nav sync
  * HighlightEditor: remove line feeds from the description
  * Cache DB connection (PDO and mysqli) to force using only one open connection
</Update>

<Update label="10/2025" description="Oktober 2025">
  **Features**

  * Add custom value for field 'your\_reference' for ordering blanket order.

  **Improvements**

  * Improve healthcheck.
  * Replace sleep with proper wait conditions.
  * Make sure currShopConfig is filled in MustacheRenderer.

  **Bug Fixes**

  * Fix tests.
  * Fix demo DB data encoding problem for tests.
  * Fix DB dump issues.
  * Fix migrations.
  * Fix webshop login site part.
  * Fix correct the doc-block to string.
  * Fix currency format on B2C item card.
  * Fix GetOrders, check for SubArray.
  * Fix bug that no item\_list is shown if no filter is set in the main\_shop\_item\_preview table.
  * Fix bug that wrong salesperson text constant shown if only one salesperson is available.
  * Fix add default value and type casting for salesperson code in customer.

  **Other**

  * Restore git user after release.
  * Remove debug code.
  * Update DB dump.
  * Various fixes from the current shop update.
</Update>

<Update label="09/2025" description="September 2025">
  **Features**

  * Webforms: add theme creation to download\_file\_new\.php
  * Hide orders on other reasons

  **Improvements**

  * DB: Don't echo database credentials
  * ShowAddress: True on default in B2B
  * Composer: Update composer.lock to match composer.json state

  **Bug Fixes**

  * Fix item obj parameter for function get\_itemcard\_descriptions
  * Fixed: Save sales\_line\_customize in B2B how it's done in B2C
  * Fixed: Set customization\_hash or it will not be displayed in step 1 in B2B
  * Fix product search cron
  * Fixed: Order subscription header by payment type or it is sorted by ID (inconsistent view)
  * Fixed order button icon color
  * Fix checkPasswordStrength
  * Fix UnitPrice Tax
</Update>

<Update label="08/2025" description="August 2025">
  **Improvements**

  * Change all htdocs path to /app
  * Change docker path everywhere to /usr/local/apache2/htdocs
  * Load themes always from disk
  * Add Algolia styling

  **Bug Fixes**

  * Call login listener before setting salesperson data to prevent silent errors
  * Fix layout class migration
  * Fix order bar
  * Fix Algolia variants
  * Fix Algolia attributes
  * Fix blanked orders
  * Fix false function calls in GeneralAjaxData
  * Fix load variants in B2B item list
  * Fixed SQL error after set page link insert
  * Fix multiple script load error

  **UI/UX Adjustments**

  * Removed headline in topsellerPreview

  **Other**

  * Update releaseTools
  * Add text constant
  * Changed TCS group classes
  * Get Webshop Order Line Additional Data
  * Add blanketorderhelper to basket button class in GeneralAjaxData
  * Prevent usage of dummy items in getAlgoliaItemListRender
  * Algolia add variant description
  * Algolia add prices
  * Algolia add is B2B in renderInstantSearch, adapt sorting
</Update>

<Update label="07/2025" description="Juli 2025">
  **Features**

  * Add possibility to get more information from shop
  * Add GTIN to shop\_item and search and quick\_order

  **Improvements**

  * Cleanup `docker-compose.yml` files and add support for profiling for PHP8.1 and PHP8.3
  * Refactor: use container images from dynamiccommerce instead of building them again for every automated tests execution
  * Optimize performance and disk space usage of PHP8.3 Docker image build
  * Refactor `run-codeception.yml` to use dynamic Docker prefix for container management
  * Refactor pipeline for running Codeception
  * Config vendor filter in item statistics
  * Make Dice error more verbose to find the initial error faster

  **Bug Fixes**

  * Fix redirect to search after login
  * Fix correct graduate price cache key
  * Fix false array structure for order tables on older MariaDB versions
  * Fix update of text constants from file to prevent overwriting of changed entries
  * Fix selector to pass `BasketCest.testRemoveItemBasket` successfully
  * Fixed backslash in mail color
  * Fix problem that Docker volumes are always named lowercase
  * Fix permissions in pipeline
  * Fix permission error at the end of pipeline execution
  * Fix error when trying to run Codeception pipeline
  * Fix shipping options & payment options permission queries

  **UI/UX Adjustments**

  * Add styling for itemlist in order
  * Add itemlist slider to order
  * Add accessibility in B2B, catalog, website, login

  **Other**

  * DB: Change length of `shop_nav_sales_header.shipment_method` from 80 to 100
  * DB: Change length of `shop_nav_sales_header.payment_terms` from 80 to 100
  * Add cleanup step to adjust ownership after test execution in `run-codeception.yml`
  * Add PHP script to rewrite the `docker-compose.yaml` file for the use in the pipeline
  * Remove unnecessary environment variables
</Update>

<Update label="06/2025" description="Juni 2025">
  **Features**

  * Implemented group by functionality.
  * Added NOT LIKE comparator for SQL find by criteria from repository.
  * First implementation of additional\_data table.
  * Added script for automatic MySQL migration.

  **Improvements**

  * Updated database dump.
  * Added sorting column and order filter by sorting column in collection filter group.

  **Bug Fixes**

  * Fixed division by zero by type casting qty as float in item price data.
  * Fixed link for Excel XLS.
  * Fixed Channable mark as shipped.

  **UI/UX Adjustments**

  * Dealer search removed radius.
</Update>

<Update label="05/2025" description="Mai 2025" />

<Update label="04/2025" description="April 2025" />

<Update label="03/2025" description="März 2025" />

<Update label="02/2025" description="Februar 2025" />

<Update label="01/2025" description="Januar 2025" />

<Update label="12/2024" description="Dezember 2024" />

<Update label="11/2024" description="November 2024" />

<Update label="10/2024" description="Oktober 2024" />

<Update label="09/2024" description="September 2024" />

<Update label="08/2024" description="August 2024" />

<Update label="06/2024" description="Juni 2024" />

<Update label="05/2024" description="Mai 2024" />

<Update label="04/2024" description="April 2024" />

<Update label="03/2024" description="März 2024" />

<Update label="02/2024" description="Februar 2024" />

<Update label="12/2023" description="Dezember 2023" />

<Update label="11/2023" description="November 2023" />

<Update label="10/2023" description="Oktober 2023" />

<Update label="09/2023" description="September 2023" />

<Update label="08/2023" description="August 2023" />

<Update label="07/2023" description="Juli 2023" />

<Update label="07/2023" description="Juli 2023" />

<Update label="06/2023" description="Juni 2023" />

<Update label="04/2023" description="April 2023" />

<Update label="10/2022" description="Oktober 2022" />

<Update label="09/2022" description="September 2022" />

<Update label="08/2022" description="August 2022" />

<Update label="07/2022" description="Juli 2022" />

<Update label="06/2022" description="Juni 2022" />

<Update label="05/2022" description="Mai 2022" />

<Update label="04/2022" description="April 2022" />

<Update label="03/2022" description="März 2022" />

<Update label="02/2022" description="Februar 2022" />

<Update label="12/2021" description="Dezember 2021" />

<Update label="11/2021" description="November 2021" />

<Update label="10/2021" description="Oktober 2021" />

<Update label="09/2021" description="September 2021" />

<Update label="08/2021" description="August 2021" />

<Update label="07/2021" description="Juli 2021" />

<Update label="06/2021" description="Juni 2021" />

<Update label="05/2021" description="Mai 2021" />

<Update label="04/2021" description="April 2021" />

<Update label="03/2021" description="März 2021" />
