Files
2026-04-28 15:13:50 +02:00

70 lines
1.8 KiB
PHP

<?php
namespace WPO\IPS\EDI\Syntaxes\Cii\Handlers;
use WPO\IPS\EDI\Syntaxes\Cii\Abstracts\AbstractCiiHandler;
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}
class HeaderTradeDeliveryHandler extends AbstractCiiHandler {
/**
* Handle the data and return the formatted output.
*
* @param array $data The data to be handled.
* @param array $options Additional options for handling.
* @return array
*/
public function handle( array $data, array $options = array() ): array {
$order = $this->document->order;
$delivery_date = apply_filters( 'wpo_ips_edi_cii_delivery_date', null, $order, $this );
if ( empty( $delivery_date ) ) {
return $data;
}
$date_format_code = $this->get_date_format_code();
$php_date_format = $this->get_php_date_format_from_code( $date_format_code );
$delivery_date = $this->normalize_date( $delivery_date, $php_date_format );
if ( ! $this->validate_date_format( $delivery_date, $date_format_code ) ) {
wpo_ips_edi_log(
sprintf(
'CII ApplicableHeaderTradeDelivery: Invalid delivery date format for %s in order %d.',
$delivery_date,
$order->get_id()
),
'error'
);
return $data;
}
$delivery_node = array(
'name' => 'ram:ApplicableHeaderTradeDelivery',
'value' => array(
array(
'name' => 'ram:ActualDeliverySupplyChainEvent',
'value' => array(
array(
'name' => 'ram:OccurrenceDateTime',
'value' => array(
'name' => 'udt:DateTimeString',
'value' => $delivery_date,
'attributes' => array(
'format' => $date_format_code,
),
),
),
),
),
),
);
$data[] = apply_filters( 'wpo_ips_edi_cii_header_trade_delivery', $delivery_node, $data, $options, $this );
return $data;
}
}