Appearance
BigBuy
BigBuy is handled as a dropship supplier. The source uses the product value drop_ship = "bigbuy"; this exact lowercase value controls whether a new processing sale product is sent to BigBuy.
Evidence boundary
The flow below is verified against Logidav commit 42116ebc0ba509bce9cc6651a55ecefd9a5fdb38. It describes code behavior only. The active BigBuy account, cron schedule, API credentials, and the deployed revision still need runtime or owner confirmation.
Entry points
| Operation | Command or event | What the source does |
|---|---|---|
| Product import | `menzzo:bigbuy:products --onlyCreatedProducts=0 | 1` |
| Category import | menzzo:bigbuy:categories | Calls the BigBuy category service under a lock. |
| Shipping rates | menzzo:bigbuy:shipping:shipping-rate-sync | Reads gls-shipping-costs-csv-en.csv, chrono-shipping-costs-csv-en.csv, and tnt-shipping-costs-csv-en.csv from data/erp/bigbuy/rates-csv/, then updates local rate rows. |
| Order submission | AfterSaleProductCreatedFromSaleEvent and AfterSaleProductUpdatedFromSaleEvent | Sends each eligible BigBuy line to the BigBuy order API and stores the returned order id. |
| Tracking import | menzzo:bigbuy:sale:expedition-check | Polls BigBuy tracking for local lines with a BigBuy order id and no tracking id, then marks the line shipped. |
The product command's option is a mode selector, not a dry run. There is no source-backed dry-run option on this command.
Order submission rules
BigbuyBundle\Services\OrderService::processSaleProduct() sends a line only when all of these conditions hold:
- The sale status is
processing. - The final product has
drop_ship = "bigbuy". - The line has no
bigbuy_order_id. - The line is not already shipped.
The request uses the supplier SKU from the BigBuy product record. For a composed product, it resolves the first component and multiplies the requested quantity by the number of component SKUs. The carrier list defaults to chrono and gls; a non-empty ProductInfo.bigbuyCarrier replaces that list with the configured value.
On a successful HTTP 201 response with a Location header, the service extracts the order id from /rest/order/<id> and saves it on the sale product. Failures roll back the local transaction and create a BigbuyAlert; the source does not retry inside this event handler.
Tracking and local shipment state
menzzo:bigbuy:sale:expedition-check selects non-canceled, non-shipped lines with a BigBuy order id and no local tracking id. It reads tracking numbers from BigBuy, appends them to the sale tracking list, sets is_sent_expedition, shipped_at, tracking_id, track_number, carrier, and is_shipped, then creates a local shipment record and rechecks the sale completion state.
The source maps BigBuy carrier ids to names such as CHRONOPOST, GLS, SEUR, TNT, DHL, UPS, and DACHSER. It currently builds tracking links with the GLS tracking URL for every returned tracking number, even when the carrier label is different. Treat those links as a source-level discrepancy to verify before using them operationally.
Product and rate data
The product service imports BigBuy catalog rows through the BigbuyApi, normalizes supplier fields into the local catalog, queues price changes, and maintains the BigBuy product relation. Category import and shipping-rate sync are separate commands; a successful catalog import does not prove that local categories or shipping rates are current.
Configuration and runtime checks
Runtime checks still needed
Confirm the installed cron entries, parameter keys, current BigBuy API response contract, and downstream Magento or marketplace readback before treating this page as an operational runbook.
Error handling
Order submission failures roll back the local transaction and create a BigbuyAlert; tracking and rate-file failures remain dependent on the command's output/logging. Confirm the installed cron and alert routing before treating these as monitored recovery paths.
Source locations
src/BigbuyBundle/Services/ProductService.php— catalog import and local product mapping.src/BigbuyBundle/Services/OrderService.php— event-driven order submission and idempotency guard.src/BigbuyBundle/Command/Sale/SaleExpeditionCheckCommand.php— tracking import and local shipment mutation.src/BigbuyBundle/Command/ShippingRate/ShippingRateSyncCommand.php— local rate-file import.