| @@ -15,8 +15,10 @@ | ||
| 15 | 15 | use WCPOS\WooCommercePOS\Services\Receipt_Data_Builder; |
| 16 | 16 | use WCPOS\WooCommercePOS\Services\Receipt_Renderer_Factory; |
| 17 | 17 | use WCPOS\WooCommercePOS\Services\Template_Pdf_Service; |
| 18 | 18 | use WCPOS\WooCommercePOS\Templates as TemplatesManager; |
| 19 | +use WCPOS\WooCommercePOS\Templates\Thermal\Html_Thermal_Emitter; | |
| 20 | +use WCPOS\WooCommercePOS\Templates\Thermal\Thermal_Renderer; | |
| 19 | 21 | |
| 20 | 22 | /** |
| 21 | 23 | * Receipt class. |
| 22 | 24 | */ |
| @@ -243,15 +245,24 @@ | ||
| 243 | 245 | * that ignore the filter still print acceptably because template colours are |
| 244 | 246 | * print-safe (dark accent ink, near-white fills). Legacy PHP templates emit a |
| 245 | 247 | * full HTML document and own their print styling, so they render untouched. |
| 246 | 248 | * |
| 247 | - * @param array $custom_template Template metadata/content. | |
| 248 | - * @param \WC_Abstract_Order|null $order Order object. | |
| 249 | - * @param array $receipt_data Canonical receipt payload. | |
| 249 | + * @param array $custom_template Template metadata/content. | |
| 250 | + * @param \WC_Abstract_Order $order Order object. | |
| 251 | + * @param array $receipt_data Canonical receipt payload. | |
| 250 | 252 | */ |
| 251 | - private function render_custom_template( array $custom_template, ?\WC_Abstract_Order $order, array $receipt_data ): void { | |
| 253 | + private function render_custom_template( array $custom_template, \WC_Abstract_Order $order, array $receipt_data ): void { | |
| 252 | 254 | $template_engine = $this->get_template_engine( $custom_template ); |
| 253 | - $renderer = ( new Receipt_Renderer_Factory() )->create( $template_engine ); | |
| 255 | + if ( 'thermal' === $template_engine ) { | |
| 256 | + $ast = ( new Thermal_Renderer() )->build_ast( $custom_template, $order, $receipt_data ); | |
| 257 | + $thermal_html = ( new Html_Thermal_Emitter() )->emit( $ast ); | |
| 258 | + // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- The emitter escapes every dynamic value. | |
| 259 | + echo $thermal_html; | |
| 260 | + | |
| 261 | + return; | |
| 262 | + } | |
| 263 | + | |
| 264 | + $renderer = ( new Receipt_Renderer_Factory() )->create( $template_engine ); | |
| 254 | 265 | |
| 255 | 266 | if ( 'logicless' !== $template_engine ) { |
| 256 | 267 | $renderer->render( $custom_template, $order, $receipt_data ); |
| 257 | 268 | |