Add fees as line items

This commit is contained in:
dinamiko 2021-08-10 17:09:38 +02:00
parent 5a84bd1430
commit 0452171869

View file

@ -66,12 +66,21 @@ class ItemFactory {
* @return Item[] * @return Item[]
*/ */
public function from_wc_order( \WC_Order $order ): array { public function from_wc_order( \WC_Order $order ): array {
return array_map( $items = array_map(
function ( \WC_Order_Item_Product $item ) use ( $order ): Item { function ( \WC_Order_Item_Product $item ) use ( $order ): Item {
return $this->from_wc_order_line_item( $item, $order ); return $this->from_wc_order_line_item( $item, $order );
}, },
$order->get_items( 'line_item' ) $order->get_items( 'line_item' )
); );
$fees = array_map(
function ( \WC_Order_Item_Fee $item ) use ( $order ): Item {
return $this->from_wc_order_fee( $item, $order );
},
$order->get_fees()
);
return array_merge( $items, $fees );
} }
/** /**
@ -109,6 +118,24 @@ class ItemFactory {
); );
} }
/**
* Creates an Item based off a WooCommerce Fee Item.
*
* @param \WC_Order_Item_Fee $item The WooCommerce order item.
* @param \WC_Order $order The WooCommerce order.
*
* @return Item
*/
private function from_wc_order_fee( \WC_Order_Item_Fee $item, \WC_Order $order ): Item {
return new Item(
$item->get_name(),
new Money( (float) $item->get_amount(), $order->get_currency() ),
$item->get_quantity(),
'',
new Money( (float) $item->get_total_tax(), $order->get_currency() )
);
}
/** /**
* Creates an Item based off a PayPal response. * Creates an Item based off a PayPal response.
* *