- What Laravel-based platforms support this DPD France bundle?
- This bundle is **exclusively for OroCommerce 5.1+** (a Laravel/Symfony-based eCommerce platform). It won’t work with vanilla Laravel, Magento, or Shopware due to its tight OroCommerce integration. If you’re using Oro, ensure your PHP version is 8.2+ and Symfony dependencies align.
- How do I add DPD shipping methods (Classic, Predict, Relais) to my OroCommerce store?
- After installing the bundle via Composer, run the migrations (`oro:migration:load`) and reload workflows (`oro:workflow:definitions:load`). The shipping methods appear automatically in OroCommerce’s shipping configuration. No manual code changes are needed for basic setup.
- Does this bundle support real-time DPD shipping rates during checkout?
- Yes, the bundle integrates with DPD France’s API to fetch real-time rates during checkout. However, **no async processing is documented**, so heavy API calls could slow down checkout. For high-traffic stores, consider caching rates or implementing a queue system (e.g., Symfony Messenger).
- How do I configure the FTP export for DPD Station? Are there error-handling options?
- The bundle exports orders to DPD Station via FTP, but **no retry logic or error handling is documented**. If FTP fails, exports may silently drop. For production, monitor the `data/dpd-france/export` directory and consider adding a cron job to retry failed transfers or log errors to Oro’s admin panel.
- Can I use this bundle with OroCommerce 6.x or later? What about downgrading from 6.x to 5.1?
- This bundle is **locked to OroCommerce 5.1+** and may break in 6.x due to API changes. If upgrading, test thoroughly or fork the bundle. Downgrading from 6.x to 5.1 could also cause conflicts if you’ve customized Oro’s core shipping logic. Always back up your database before migrations.
- What happens if DPD France’s API changes or goes down? Are there fallback options?
- The bundle relies on DPD’s API for rates and tracking, but **no fallback mechanisms (e.g., cached rates or manual overrides) are documented**. For critical stores, implement a custom service layer to cache API responses or notify admins of outages via Oro’s notification system.
- How do I customize shipping rules (e.g., restrict DPD to specific customer groups or products)?
- Use OroCommerce’s **expression language** in shipping rules (e.g., `[customer_group == 'wholesale']`). The bundle extends Oro’s rule system, so you can dynamically enable/disable DPD methods based on product attributes (like `maxQtyForDpdFr`) or order totals. Test rules with small batches first to avoid checkout errors.
- Are there security risks with storing DPD credentials (contract number, agency code) in OroCommerce?
- Credentials are likely stored in Oro’s `Integration` entity, which **supports encryption**. However, ensure your OroCommerce instance uses HTTPS and follows Oro’s security best practices. For GDPR compliance, audit the `dnd_dpd_fr_shipping_service` tables to confirm no PII is exported unnecessarily to DPD Station.
- Can I extend this bundle to support DPD Express or compare DPD with other carriers like Mondial Relay?
- The bundle is modular but **not designed for multi-carrier comparisons**. To add DPD Express, you’d need to extend the `DpdFranceShippingService` class and update workflows. For carrier comparisons, consider Oro’s `ShippingMethod` system or a third-party extension like **OroShippingBundle** to aggregate rates dynamically.
- How do I test this bundle in a CI/CD pipeline? Are there mocking tools for the DPD API?
- The bundle lacks built-in mocking, but you can **mock DPD API calls** using Oro’s dependency injection. In PHPUnit, replace the `DpdFranceApiClient` service with a mock that returns test responses. For FTP exports, simulate file transfers by creating empty files in the export directory. Test edge cases like failed API calls with Oro’s error handlers.