PluginProbe
ووسلام – همگام سازی ووکامرس و باسلام / 1.8.8
ووسلام – همگام سازی ووکامرس و باسلام v1.8.8
1.10.19 1.10.20 1.10.18 1.10.17 1.10.15 1.10.14 1.10.13 1.10.12 1.10.10 1.10.9 1.10.8 1.10.7 1.10.6 1.10.5 1.10.4 1.10.3 1.10.2 1.10.1 1.10.0 1.9.2 1.9.1 1.9.0 1.8.8 1.8.5 1.8.6 All 53 releases
sync-basalam / includes / Admin / Order / OrderMetaBox.php

OrderMetaBox.php in ووسلام – همگام سازی ووکامرس و باسلام 1.8.8, at includes/Admin/Order/OrderMetaBox.php

117 lines 3.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace SyncBasalam\Admin\Order;
4
5 defined("ABSPATH") || exit;
6
7 class OrderMetaBox
8 {
9 public function registerMetaBox()
10 {
11 if (!current_user_can("manage_woocommerce")) return;
12
13 // HPOS uses 'id', traditional CPT uses 'post'
14 $orderId = isset($_GET["id"]) ? absint($_GET["id"]) : 0;
15 if (!$orderId) $orderId = isset($_GET["post"]) ? absint($_GET["post"]) : 0;
16 if (!$orderId) return;
17
18 $order = wc_get_order($orderId);
19 if (!$order) return;
20
21 $allowedStatuses = [
22 "bslm-rejected",
23 "bslm-preparation",
24 "bslm-wait-vendor",
25 "bslm-shipping",
26 "bslm-completed",
27 ];
28
29 if (!in_array($order->get_status(), $allowedStatuses, true)) return;
30
31 add_meta_box(
32 "basalam_order_settings",
33 "تنظی�
34 ات باسلا�
35 ",
36 [$this, "renderMetaBox"],
37 ["woocommerce_page_wc-orders", "shop_order"],
38 "side",
39 "high"
40 );
41
42 add_meta_box(
43 'basalam_order_info',
44 'اطلاعات سفارش باسلا�
45 ',
46 [$this, 'renderBasalamOrderMetaBox'],
47 ["woocommerce_page_wc-orders", "shop_order"],
48 "side",
49 "high"
50 );
51 }
52
53 public function renderMetaBox($post_or_order)
54 {
55 // HPOS passes WC_Order object, traditional CPT passes WP_Post object
56 if (is_object($post_or_order) && method_exists($post_or_order, 'get_id')) {
57 $orderId = $post_or_order->get_id();
58 } else $orderId = $post_or_order->ID;
59
60 $order = wc_get_order($orderId);
61 if (!$order) return;
62
63 $orderStatus = $order->get_status();
64
65 require_once plugin_dir_path(__FILE__) . "OrderTrackingBox.php";
66 }
67
68 public function renderBasalamOrderMetaBox($post_or_order)
69 {
70 // HPOS passes WC_Order object, traditional CPT passes WP_Post object
71 if (is_object($post_or_order) && method_exists($post_or_order, 'get_id')) {
72 $orderId = $post_or_order->get_id();
73 } else $orderId = $post_or_order->ID;
74
75 $order = wc_get_order($orderId);
76 if (!$order) {
77 echo '<p class="basalam-p">سفارش یافت نشد</p>';
78 return;
79 }
80
81 global $wpdb;
82 $table_name = $wpdb->prefix . 'sync_basalam_payments';
83
84 $invoice_id = $wpdb->get_var(
85 $wpdb->prepare(
86 "SELECT invoice_id FROM {$table_name} WHERE order_id = %d",
87 $orderId
88 )
89 );
90
91 if (!$invoice_id) {
92 echo '<p class="basalam-p">اطلاعات سفارش باسلا�
93 یافت نشد</p>';
94 return;
95 }
96
97 $fee_amount = $order->get_meta('_basalam_fee_amount', true);
98 $balance_amount = $order->get_meta('_basalam_balance_amount', true);
99 $purchase_count = $order->get_meta('_basalam_purchase_count', true);
100 $hash_id = $order->get_meta('_sync_basalam_hash_id', true);
101
102 $fee_formatted = $this->formatBasalamCurrency($fee_amount);
103 $balance_formatted = $this->formatBasalamCurrency($balance_amount);
104
105 require_once syncBasalamPlugin()->templatePath('orders/OrderMetaBox.php');
106 }
107
108 private function formatBasalamCurrency($amount)
109 {
110 if (empty($amount) || $amount == 0) return '0 تو�
111 ان';
112
113 return number_format($amount) . ' تو�
114 ان';
115 }
116 }
117