From 5e357f0e8199739f036bf20260bc48a6b6908402 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20Kj=C3=A6r=20Rasmussen?= Date: Thu, 1 Feb 2024 13:11:13 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20Handle=20variations?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Woocommerce/OrderService.php | 5 ++--- src/Woocommerce/ProductService.php | 25 +++++++++++++++++++++---- src/WoocommerceEconomic.php | 6 +++--- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/Woocommerce/OrderService.php b/src/Woocommerce/OrderService.php index 4d31f57..492f25b 100644 --- a/src/Woocommerce/OrderService.php +++ b/src/Woocommerce/OrderService.php @@ -199,15 +199,14 @@ private static function createAndBookInvoice($paymentMethod, DraftInvoice $invoi $invoice->create(); } - private static function getEconomicProduct($item, DraftInvoice $invoice): ?Product + private static function getEconomicProduct(\WC_Order_Item_Product $item, DraftInvoice $invoice): ?Product { $product = apply_filters('woocommerce_economic_invoice_get_economic_product_line', null, $item, $invoice); if (! $product) { - $productEconomicId = get_post_meta($item->get_product_id(), 'economic_product_id', true); + $productEconomicId = get_post_meta($item->get_variation_id() ?? $item->get_product_id(), 'economic_product_id', true); $product = Product::find($productEconomicId); - ray($product); } return $product; diff --git a/src/Woocommerce/ProductService.php b/src/Woocommerce/ProductService.php index 76bc526..908e9a1 100644 --- a/src/Woocommerce/ProductService.php +++ b/src/Woocommerce/ProductService.php @@ -7,25 +7,42 @@ class ProductService public static function addEconomicProductFieldWithWrapper(): void { echo ''; } - public static function addEconomicProductField(): void + public static function addEconomicProductField( $loop, $variation_data, $variation): void { woocommerce_wp_text_input([ - 'id' => 'economic_product_id', + 'id' => 'economic_product_id_'."[{$loop}]", 'label' => __('E-conomic produkt id', 'mt-wc-economic'), 'placeholder' => __('E-conomic produkt id', 'mt-wc-economic'), 'desc_tip' => 'true', 'description' => __('Udfyld varenummerer fra e-conomic', 'mt-wc-economic'), 'type' => 'number', + 'value' => get_post_meta($variation->ID, 'economic_product_id', true), ]); } public static function saveEconomicProductField($post_id): void { $economic_product_id = $_POST['economic_product_id'] ?? ''; - update_post_meta($post_id, 'economic_product_id', sanitize_text_field($economic_product_id)); + + update_post_meta($post_id, 'economic_product_id', $economic_product_id); + } + + public static function saveVariationEconomicProductField($post_id, $id): void + { + $economic_product_id = $_POST['economic_product_id_'][$id] ?? ''; + + update_post_meta($post_id, 'economic_product_id', $economic_product_id); } } diff --git a/src/WoocommerceEconomic.php b/src/WoocommerceEconomic.php index 8e2d736..53c9ad8 100755 --- a/src/WoocommerceEconomic.php +++ b/src/WoocommerceEconomic.php @@ -12,9 +12,9 @@ public static function init(): void add_filter('woocommerce_payment_gateways', [self::class, 'registerGateway'], 10, 1); add_action('init', [self::class, 'requireGateway'], 1); add_action('woocommerce_product_options_general_product_data', [ProductService::class, 'addEconomicProductFieldWithWrapper']); - add_action('woocommerce_variation_options', [ProductService::class, 'addEconomicProductField']); - add_action('woocommerce_save_product_variation', [ProductService::class, 'saveEconomicProductField'], 10, 2); - add_action('woocommerce_process_product_meta', [ProductService::class, 'saveEconomicProductField'], 10, 2); + add_action('woocommerce_variation_options', [ProductService::class, 'addEconomicProductField'],10,3); + add_action('woocommerce_save_product_variation', [ProductService::class, 'saveVariationEconomicProductField'], 10, 2); + add_action('woocommerce_process_product_meta', [ProductService::class, 'saveEconomicProductField'], 10, 1); add_action(ActionScheduleService::CREATE_INVOICE, [ActionScheduleService::class, 'handleCreateInvoiceJob'], 10, 1); }