Changeset 3762600
- Timestamp:
- 10/24/2026 12:15:21 AM (6 hours ago)
- Location:
- simple-fatoora
- Files:
-
- 1 deleted
- 16 edited
- 1 copied
-
tags/4.23 (deleted)
-
tags/4.24 (copied) (copied from simple-fatoora/trunk )
-
tags/4.24/assets/js/simple-fatoora-settings.js (modified) (1 diff)
-
tags/4.24/includes/class-simpfa-business-connection.php (modified) (1 diff)
-
tags/4.24/includes/class-simpfa-wc-settings-tab.php (modified) (5 diffs)
-
tags/4.24/languages/simple-fatoora-ar.mo (modified) ( previous)
-
tags/4.24/languages/simple-fatoora-ar.po (modified) (29 diffs)
-
tags/4.24/languages/simple-fatoora.pot (modified) (18 diffs)
-
tags/4.24/readme.txt (modified) (2 diffs)
-
tags/4.24/simple-fatoora.php (modified) (2 diffs)
-
trunk/assets/js/simple-fatoora-settings.js (modified) (1 diff)
-
trunk/includes/class-simpfa-business-connection.php (modified) (1 diff)
-
trunk/includes/class-simpfa-wc-settings-tab.php (modified) (5 diffs)
-
trunk/languages/simple-fatoora-ar.mo (modified) ( previous)
-
trunk/languages/simple-fatoora-ar.po (modified) (29 diffs)
-
trunk/languages/simple-fatoora.pot (modified) (18 diffs)
-
trunk/readme.txt (modified) (2 diffs)
-
trunk/simple-fatoora.php (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
simple-fatoora/tags/4.24/assets/js/simple-fatoora-settings.js
r3762341 r3762600 564 564 password: password || '' 565 565 }; 566 if ($('#sf-personal-signin').length) payload.signin_purpose = 'personal_profile'; 566 567 567 568 if (!payload.email_id || !payload.password) { -
simple-fatoora/tags/4.24/includes/class-simpfa-business-connection.php
r3762341 r3762600 24 24 private static function remembered_session() 25 25 { 26 $saved = get_transient(self::session_key()); 27 if (!$saved && function_exists('get_user_meta')) $saved = get_user_meta(get_current_user_id(), 'simpfa_personal_session', true); 26 // Durable administrator-owned proof is canonical; an old object-cache entry 27 // must not replace a newer sign-in or bypass its expiry. 28 $saved = function_exists('get_user_meta') ? get_user_meta(get_current_user_id(), 'simpfa_personal_session', true) : ''; 29 if (!$saved) $saved = get_transient(self::session_key()); 28 30 // Recover a surviving legacy DB-backed transient after an object-cache change. 29 31 if (!$saved) $saved = get_option('_transient_' . self::session_key(), ''); -
simple-fatoora/tags/4.24/includes/class-simpfa-wc-settings-tab.php
r3762341 r3762600 2645 2645 $token = Simpfa_BusinessConnection::token(); 2646 2646 $result = $token ? $this->get_client()->business_account($token, '/account') : []; 2647 if (empty($result['ok'])) return '<div class="sf-card sf-form-card" data-personal-session-state="' . esc_attr(Simpfa_BusinessConnection::personal_session_state()) . '"><h2>' . esc_html__('Profile Settings', 'simple-fatoora') . '</h2><p>' . esc_html__('Your business is connected. Personal profile settings require your remembered account sign-in.', 'simple-fatoora') . '</p><a href="' . esc_url($this->get_page_url('home')) . '">' . esc_html__('Home', 'simple-fatoora') . '</a></div>'; 2647 if (empty($result['ok'])) { 2648 $signin = !$token || in_array((int) ($result['status_code'] ?? 0), [401, 403], true); 2649 $url = $signin ? add_query_arg('sf_profile_signin', '1', $this->get_page_url('profile')) : $this->get_page_url('profile'); 2650 if ($signin && isset($_GET['sf_profile_signin']) && (string) $_GET['sf_profile_signin'] === '1') return $this->render_personal_signin_card(); 2651 return '<div class="sf-card sf-form-card sf-personal-signin-notice" data-personal-session-state="' . esc_attr(Simpfa_BusinessConnection::personal_session_state()) . '"><h2>' . esc_html__('Profile Settings', 'simple-fatoora') . '</h2><p>' . esc_html($signin ? __('Please sign in again to access Profile Settings.', 'simple-fatoora') : __('Unable to load your profile. Please try again.', 'simple-fatoora')) . '</p><a class="sf-button-primary" href="' . esc_url($url) . '">' . esc_html($signin ? __('Sign In', 'simple-fatoora') : __('Try again', 'simple-fatoora')) . '</a></div>'; 2652 } 2648 2653 $person = $this->get_client()->extract_response($result, []); 2649 2654 $html = '<div id="sf-page-profile" class="sf-card sf-form-card sf-page-view sf-page-view--profile"><div class="sf-page-header"><h2 class="sf-title">' . esc_html__('Profile Settings', 'simple-fatoora') . '</h2></div>'; … … 2657 2662 } 2658 2663 return $html . '</div><div class="sf-form-actions sf-profile-submit-row"><button type="submit" class="button sf-button-primary" formaction="' . esc_url(admin_url('admin-post.php?action=simpfa_personal_profile')) . '" formmethod="post">' . esc_html__('Save Profile', 'simple-fatoora') . '</button></div></div></div>'; 2664 } 2665 2666 private function render_personal_signin_card() 2667 { 2668 return '<div id="sf-personal-signin" class="sf-card sf-form-card"><h2>' . esc_html__('Sign In', 'simple-fatoora') . '</h2><div class="sf-form sf-auth-form"><div class="sf-form-row"><label for="sf-login-email">' . esc_html__('Email', 'simple-fatoora') . '</label><input id="sf-login-email" type="email" autocomplete="username" /></div><div class="sf-form-row"><label for="sf-login-password">' . esc_html__('Password', 'simple-fatoora') . '</label><input id="sf-login-password" type="password" autocomplete="current-password" /></div><button type="button" id="sf-native-signin-btn" class="sf-button-primary">' . esc_html__('Sign In', 'simple-fatoora') . '</button><div id="sf-signin-feedback" class="sf-auth-feedback sf-v2-feedback" aria-live="polite"></div></div></div>'; 2659 2669 } 2660 2670 … … 3115 3125 $resolved_view = $this->resolve_payment_result_view($requested_view, $payment_result_data['status']); 3116 3126 $transaction_id = isset($payment_result_data['transaction_id']) ? absint($payment_result_data['transaction_id']) : 0; 3117 $result_title = __('Payment Status', 'simple-fatoora'); 3118 $result_message = __('We are checking your payment result.', 'simple-fatoora'); 3127 $result_title = __('Confirming your payment', 'simple-fatoora'); 3119 3128 $icon_class = 'sf-payment-result-icon-pending'; 3120 $icon_symbol = '...'; 3121 3129 $icon_symbol = '…'; 3122 3130 if ($resolved_view === 'success') { 3123 $result_title = __('Purchase Confirmed', 'simple-fatoora'); 3124 $result_message = __('Your recurring membership payment was completed successfully.', 'simple-fatoora'); 3131 $result_title = __('Payment confirmed', 'simple-fatoora'); 3125 3132 $icon_class = 'sf-payment-result-icon-success'; 3126 3133 $icon_symbol = '✓'; 3127 3134 } elseif ($resolved_view === 'failed') { 3128 $result_title = __('Payment Failed', 'simple-fatoora'); 3129 $result_message = $payment_view['reason'] === 'cancelled_or_failed' 3130 ? __('The payment was cancelled or could not be completed. No membership was activated.', 'simple-fatoora') 3131 : __('We could not confirm this payment. Please try again.', 'simple-fatoora'); 3135 $result_title = __('Payment failed', 'simple-fatoora'); 3132 3136 $icon_class = 'sf-payment-result-icon-failed'; 3133 3137 $icon_symbol = '!'; 3134 } else { 3135 $result_title = __('Payment Pending', 'simple-fatoora'); 3136 $result_message = __('We are waiting for payment confirmation from MyFatoorah. This can take a short moment after OTP or card confirmation.', 'simple-fatoora'); 3137 } 3138 3139 $home_button = '<a class="sf-button-primary" href="' . esc_url($payment_home_url) . '">' . esc_html__('Back to Plugin Home', 'simple-fatoora') . '</a>'; 3140 $refresh_button = '<a class="sf-button-secondary sf-hidden" href="' . esc_url($this->build_payment_result_url('pending', $transaction_id)) . '" id="sf-payment-result-refresh">' . esc_html__('Refresh Status', 'simple-fatoora') . '</a>'; 3141 $details = ''; 3142 if ($resolved_view === 'success') { 3143 $membership_end_label = $this->get_membership_end_label(isset($payment_result_data['membership_title']) ? (string) $payment_result_data['membership_title'] : ''); 3144 $details .= '<div class="sf-payment-result-grid">'; 3145 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Membership', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_title'] !== '' ? $payment_result_data['membership_title'] : '--') . '</strong></div>'; 3146 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Total', 'simple-fatoora') . '</span><strong>' . esc_html($this->format_result_amount($payment_result_data['amount'])) . '</strong></div>'; 3147 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Term', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_term_label'] !== '' ? $payment_result_data['membership_term_label'] : '--') . '</strong></div>'; 3148 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Start Date', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_start_date'] !== '' ? $payment_result_data['membership_start_date'] : '--') . '</strong></div>'; 3149 $details .= '<div class="sf-payment-result-item"><span>' . esc_html($membership_end_label) . '</span><strong>' . esc_html($payment_result_data['membership_end_date'] !== '' ? $payment_result_data['membership_end_date'] : '--') . '</strong></div>'; 3150 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Invoice ID', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_invoice_number'] !== '' ? $payment_result_data['membership_invoice_number'] : '--') . '</strong></div>'; 3151 $details .= '</div>'; 3152 } 3153 3154 $status_note = ''; 3155 if (!$is_connected) { 3156 $status_note = '<div class="sf-notice sf-notice-error">' . esc_html__('Please reconnect your Simple Fatoora account to review payment details.', 'simple-fatoora') . '</div>'; 3157 } elseif (!empty($payment_result_data['message']) && $resolved_view !== 'success') { 3158 $status_note = '<div class="sf-notice sf-notice-error">' . esc_html($payment_result_data['message']) . '</div>'; 3159 } 3138 } 3139 $home_button = '<a class="sf-button-primary" href="' . esc_url($is_connected ? $this->get_page_url('memberships') : $payment_home_url) . '">' . esc_html($is_connected ? __('Back to subscription', 'simple-fatoora') : __('Sign In', 'simple-fatoora')) . '</a>'; 3140 $status_note = !$is_connected ? '<p>' . esc_html__('Please sign in to view your subscription.', 'simple-fatoora') . '</p>' : ''; 3160 3141 3161 3142 $pending_meta = ''; … … 3174 3155 $html .= '<div class="sf-payment-result-icon ' . esc_attr($icon_class) . '">' . esc_html($icon_symbol) . '</div>'; 3175 3156 $html .= '<h3 class="sf-section-title">' . esc_html($result_title) . '</h3>'; 3176 $html .= '<p class="sf-subtitle">' . esc_html($result_message) . '</p>';3177 3157 $html .= '</div>'; 3178 3158 $html .= $status_note; 3179 $html .= $details;3180 3159 if ($resolved_view === 'pending') { 3181 $html .= '<div id="sf-payment-result-feedback" class="sf-v2-feedback " aria-live="polite"></div>';3160 $html .= '<div id="sf-payment-result-feedback" class="sf-v2-feedback sf-hidden" aria-live="polite"></div>'; 3182 3161 } 3183 3162 $html .= '<div class="sf-payment-result-actions">'; 3184 if ($resolved_view === 'pending') {3185 $html .= $refresh_button;3186 }3187 3163 $html .= $home_button; 3188 3164 $html .= '</div>'; … … 3210 3186 3211 3187 $login_payload = $this->get_client()->extract_response($login, []); 3188 if (sanitize_key(wp_unslash($_POST['signin_purpose'] ?? '')) === 'personal_profile') { 3189 if (empty($login_payload['uuid']) || !Simpfa_BusinessConnection::begin($this->get_client(), $login_payload['uuid'])) { 3190 wp_send_json_error(__('Unable to sign in. Please try again.', 'simple-fatoora')); 3191 } 3192 // Personal reauthentication must never reconnect or switch the store's business. 3193 wp_send_json_success(['redirect_url' => $this->get_page_url('profile')]); 3194 } 3212 3195 if (!empty($login_payload['uuid'])) { 3213 3196 $this->begin_business_selection($login_payload['uuid']); -
simple-fatoora/tags/4.24/languages/simple-fatoora-ar.po
r3762341 r3762600 1 msgid "" 2 msgstr "" 3 "Project-Id-Version: Simple Fatoora 4.23\n" 1 # 2 msgid "" 3 msgstr "" 4 "Project-Id-Version: Simple Fatoora 4.24\n" 4 5 "Report-Msgid-Bugs-To: \n" 5 6 "POT-Creation-Date: 2026-10-23 22:17+0300\n" … … 11 12 "Content-Type: text/plain; charset=UTF-8\n" 12 13 "Content-Transfer-Encoding: 8bit\n" 13 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " 14 "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" 14 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" 15 15 16 16 #: includes/class-simpfa-admin.php:47 includes/class-simpfa-admin.php:48 … … 195 195 msgstr "هذا الطلب لشركة - فاتورة ضريبية" 196 196 197 #: includes/class-simpfa-checkout.php:43 includes/class-simpfa-checkout.php:159 197 #: includes/class-simpfa-checkout.php:43 198 #: includes/class-simpfa-checkout.php:159 198 199 msgid "Company name" 199 200 msgstr "اسم الشركة" … … 203 204 msgstr "اسم الشركة (مطلوب للفاتورة الضريبية)" 204 205 205 #: includes/class-simpfa-checkout.php:56 includes/class-simpfa-checkout.php:160 206 #: includes/class-simpfa-checkout.php:56 207 #: includes/class-simpfa-checkout.php:160 206 208 msgid "Company VAT number" 207 209 msgstr "الرقم الضريبي للشركة" … … 218 220 msgstr "يجب أن يكون الرقم الضريبي 15 رقماً ويبدأ بالرقم 3." 219 221 220 #: includes/class-simpfa-checkout.php:85 includes/class-simpfa-checkout.php:234 222 #: includes/class-simpfa-checkout.php:85 223 #: includes/class-simpfa-checkout.php:234 221 224 msgid "Please enter the company name for VAT invoice." 222 225 msgstr "يرجى إدخال اسم الشركة للفاتورة الضريبية." … … 260 263 "الفاتورة الأصلية والإشعارات المرتبطة بها." 261 264 262 #: includes/class-simpfa-handler.php:130 includes/class-simpfa-order-ui.php:633 265 #: includes/class-simpfa-handler.php:130 266 #: includes/class-simpfa-order-ui.php:633 263 267 #: includes/class-simpfa-wc-settings-tab.php:345 264 268 #: includes/class-simpfa-wc-settings-tab.php:481 … … 876 880 #: includes/class-simpfa-wc-settings-tab.php:715 877 881 msgid "Enter a valid business name, not an email address or website." 878 msgstr "أدخل اسم نشاط تجاري صحيحًا، وليس بريدًا إلكترونيًا أو موقعًا إلكترونيًا." 882 msgstr "" 883 "أدخل اسم نشاط تجاري صحيحًا، وليس بريدًا إلكترونيًا أو موقعًا إلكترونيًا." 879 884 880 885 #: includes/class-simpfa-wc-settings-tab.php:288 … … 1118 1123 #: includes/class-simpfa-wc-settings-tab.php:341 1119 1124 msgid "" 1120 "Payment page opened in a new tab. Complete payment there; status will update "1121 " here."1125 "Payment page opened in a new tab. Complete payment there; status will update" 1126 " here." 1122 1127 msgstr "" 1123 1128 "فُتحت صفحة الدفع في علامة تبويب جديدة. أكمل الدفع هناك وستتحدث الحالة هنا." … … 1133 1138 #: includes/class-simpfa-wc-settings-tab.php:344 1134 1139 msgid "" 1135 "Payment is still pending. You can refresh the status or return to the plugin "1136 " home page."1140 "Payment is still pending. You can refresh the status or return to the plugin" 1141 " home page." 1137 1142 msgstr "" 1138 1143 "ما زالت حالة الدفع معلقة. يمكنك تحديث الحالة أو العودة إلى الصفحة الرئيسية " … … 1326 1331 "Simulation." 1327 1332 msgstr "" 1328 "منصة التجارب نشطة. الطلبات والمسترجعات التجريبية تستخدم الآن محاكاة الفاتورة "1329 " الإلكترونية لدى زاتكا."1333 "منصة التجارب نشطة. الطلبات والمسترجعات التجريبية تستخدم الآن محاكاة الفاتورة" 1334 " الإلكترونية لدى زاتكا." 1330 1335 1331 1336 #: includes/class-simpfa-wc-settings-tab.php:449 … … 1346 1351 "Invoice Settings." 1347 1352 msgstr "" 1348 "تم حفظ المستند، وتعذر تحديث إعداد الضريبة الصفرية الافتراضي. حدّثه من إعدادات"1349 " الفواتير."1353 "تم حفظ المستند، وتعذر تحديث إعداد الضريبة الصفرية الافتراضي. حدّثه من " 1354 "إعدادات الفواتير." 1350 1355 1351 1356 #: includes/class-simpfa-wc-settings-tab.php:541 … … 1465 1470 #: includes/class-simpfa-wc-settings-tab.php:1233 1466 1471 msgid "" 1467 "Continue your guided invoice setup and preview each change before you finish." 1472 "Continue your guided invoice setup and preview each change before you " 1473 "finish." 1468 1474 msgstr "تابع إعداد الفاتورة الموجه وعاين كل تغيير قبل الإنهاء." 1469 1475 … … 1658 1664 #: includes/class-simpfa-wc-settings-tab.php:1267 1659 1665 msgid "" 1660 "Write something eg. “Thank you for visiting us! We look forward to welcoming "1661 " you again soon.”"1666 "Write something eg. “Thank you for visiting us! We look forward to welcoming" 1667 " you again soon.”" 1662 1668 msgstr "اكتب مثلاً: «شكراً لزيارتكم! نتطلع إلى الترحيب بكم مرة أخرى قريباً.»" 1663 1669 … … 1715 1721 #: includes/class-simpfa-wc-settings-tab.php:1332 1716 1722 msgid "" 1717 "Review your current plan, compare memberships, and complete embedded payment "1718 " here."1723 "Review your current plan, compare memberships, and complete embedded payment" 1724 " here." 1719 1725 msgstr "راجع خطتك الحالية وقارن العضويات وأكمل الدفع المضمن من هنا." 1720 1726 … … 1726 1732 msgid "" 1727 1733 "Create invoices, notes, purchase documents, and quotations directly from " 1728 "WordPress. Quotations remain outside ZATCA and invoice usage until converted "1729 " to an invoice."1734 "WordPress. Quotations remain outside ZATCA and invoice usage until converted" 1735 " to an invoice." 1730 1736 msgstr "" 1731 1737 "أنشئ الفواتير والإشعارات ومستندات الشراء وعروض الأسعار مباشرة من ووردبريس. " 1732 "لا تُرسل عروض الأسعار إلى الهيئة ولا تُحتسب ضمن استخدام الفواتير حتى تحويلها "1733 " إلى فاتورة."1738 "لا تُرسل عروض الأسعار إلى الهيئة ولا تُحتسب ضمن استخدام الفواتير حتى تحويلها" 1739 " إلى فاتورة." 1734 1740 1735 1741 #: includes/class-simpfa-wc-settings-tab.php:1384 … … 1785 1791 #: includes/class-simpfa-wc-settings-tab.php:1453 1786 1792 msgid "" 1787 "A valid VAT number makes this a standard document for VAT-registered issuers." 1788 msgstr "" 1789 "يحوّل الرقم الضريبي الصحيح المستند إلى مستند قياسي للمنشآت المسجلة في الضريبة." 1793 "A valid VAT number makes this a standard document for VAT-registered " 1794 "issuers." 1795 msgstr "" 1796 "يحوّل الرقم الضريبي الصحيح المستند إلى مستند قياسي للمنشآت المسجلة في " 1797 "الضريبة." 1790 1798 1791 1799 #: includes/class-simpfa-wc-settings-tab.php:1455 … … 2567 2575 #: includes/class-simpfa-wc-settings-tab.php:2946 2568 2576 msgid "" 2569 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice "2570 " settings, profile, and Phase 2 onboarding."2571 msgstr "" 2572 "استخدم محاكاة الفاتورة الإلكترونية لدى زاتكا لاختبار طلبات ومسترجعات ووكومرس "2573 " وإعدادات الفواتير والملف الشخصي والربط بالمرحلة الثانية."2577 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice" 2578 " settings, profile, and Phase 2 onboarding." 2579 msgstr "" 2580 "استخدم محاكاة الفاتورة الإلكترونية لدى زاتكا لاختبار طلبات ومسترجعات ووكومرس" 2581 " وإعدادات الفواتير والملف الشخصي والربط بالمرحلة الثانية." 2574 2582 2575 2583 #: includes/class-simpfa-wc-settings-tab.php:2950 … … 2578 2586 "Repair it now or exit sandbox." 2579 2587 msgstr "" 2580 "تم تحديد منصة التجارب، لكن هذا المتجر لا يحتوي على مفتاح واجهة برمجة تطبيقات "2581 " التجربة. أصلح الإعداد الآن أو اخرج من منصة التجارب."2588 "تم تحديد منصة التجارب، لكن هذا المتجر لا يحتوي على مفتاح واجهة برمجة تطبيقات" 2589 " التجربة. أصلح الإعداد الآن أو اخرج من منصة التجارب." 2582 2590 2583 2591 #: includes/class-simpfa-wc-settings-tab.php:2952 … … 2613 2621 "and normal customer email behavior." 2614 2622 msgstr "" 2615 "اخرج من منصة التجارب لإعادة هذا المتجر إلى الفواتير المباشرة وزاتكا المباشرة "2616 " وسلوك البريد الإلكتروني الطبيعي للعملاء."2623 "اخرج من منصة التجارب لإعادة هذا المتجر إلى الفواتير المباشرة وزاتكا المباشرة" 2624 " وسلوك البريد الإلكتروني الطبيعي للعملاء." 2617 2625 2618 2626 #: includes/class-simpfa-wc-settings-tab.php:2959 … … 2621 2629 "every incoming order and refund." 2622 2630 msgstr "" 2623 "تابع فقط عندما تريد أن ينشئ هذا المتجر فواتير تجريبية لكل طلب أو مسترجع وارد." 2631 "تابع فقط عندما تريد أن ينشئ هذا المتجر فواتير تجريبية لكل طلب أو مسترجع " 2632 "وارد." 2624 2633 2625 2634 #: includes/class-simpfa-wc-settings-tab.php:2966 … … 2713 2722 2714 2723 #: includes/class-simpfa-wc-settings-tab.php:3156 2715 msgid "Please reconnect your Simple Fatoora account to review payment details." 2724 msgid "" 2725 "Please reconnect your Simple Fatoora account to review payment details." 2716 2726 msgstr "يرجى إعادة ربط حساب سمبل فاتورة لمراجعة تفاصيل الدفع." 2717 2727 … … 2920 2930 "memberships and invoice settings in one place." 2921 2931 msgstr "" 2922 "اربط متجر WooCommerce الخاص بك دون مغادرة ووردبريس، ثم أدر العضويات وإعدادات "2923 " الفاتورة من مكان واحد."2932 "اربط متجر WooCommerce الخاص بك دون مغادرة ووردبريس، ثم أدر العضويات وإعدادات" 2933 " الفاتورة من مكان واحد." 2924 2934 2925 2935 #: includes/class-simpfa-wc-settings-tab.php:4350 … … 3318 3328 3319 3329 #: includes/class-simpfa-wc-settings-tab.php:4944 3320 msgid "Choose when and for which customers WooCommerce orders create invoices." 3330 msgid "" 3331 "Choose when and for which customers WooCommerce orders create invoices." 3321 3332 msgstr "حدد متى ولأي عملاء تنشئ طلبات ووكومرس فواتير." 3322 3333 … … 3481 3492 "codes." 3482 3493 msgstr "" 3483 "نعم. تدعم الإضافة مسارات المرحلتين الأولى والثانية عبر خدمة سمبل فاتورة، بما "3484 " في ذلك إنشاء الفواتير المتوافقة ورموز QR."3494 "نعم. تدعم الإضافة مسارات المرحلتين الأولى والثانية عبر خدمة سمبل فاتورة، بما" 3495 " في ذلك إنشاء الفواتير المتوافقة ورموز QR." 3485 3496 3486 3497 #: includes/class-simpfa-wc-settings-tab.php:5102 … … 3531 3542 "be processed as a VAT invoice." 3532 3543 msgstr "" 3533 "عند تفعيل تفضيل صفحة الدفع، يمكن للعميل اختيار فاتورة شركة وإدخال اسم الشركة "3534 " والرقم الضريبي حتى تتم معالجة الطلب كفاتورة ضريبية."3544 "عند تفعيل تفضيل صفحة الدفع، يمكن للعميل اختيار فاتورة شركة وإدخال اسم الشركة" 3545 " والرقم الضريبي حتى تتم معالجة الطلب كفاتورة ضريبية." 3535 3546 3536 3547 #: includes/class-simpfa-wc-settings-tab.php:5106 … … 3575 3586 #: includes/class-simpfa-wc-settings-tab.php:5109 3576 3587 msgid "" 3577 "Yes. An active membership is required before invoice and credit note actions "3578 " become available."3588 "Yes. An active membership is required before invoice and credit note actions" 3589 " become available." 3579 3590 msgstr "" 3580 3591 "نعم. يلزم وجود عضوية نشطة قبل إتاحة إجراءات الفواتير والإشعارات الدائنة." … … 3710 3721 #: includes/class-simpfa-wc-settings-tab.php:6154 3711 3722 msgid "" 3712 "You do not have permission for this section. Ask a business member with user "3713 " management access to update your permissions."3723 "You do not have permission for this section. Ask a business member with user" 3724 " management access to update your permissions." 3714 3725 msgstr "" 3715 3726 "ليس لديك صلاحية الوصول إلى هذا القسم. اطلب من أحد أعضاء المنشأة المخولين " … … 3922 3933 "with their original business." 3923 3934 msgstr "" 3924 "تُنشأ الطلبات الجديدة باسم المنشأة المرتبطة. وتبقى الفواتير والمبالغ المستردة"3925 "ال سابقة مرتبطة بمنشآتها الأصلية."3935 "تُنشأ الطلبات الجديدة باسم المنشأة المرتبطة. وتبقى الفواتير والمبالغ " 3936 "المستردة السابقة مرتبطة بمنشآتها الأصلية." 3926 3937 3927 3938 #: simple-fatoora.php:1425 … … 3932 3943 msgid "Settings" 3933 3944 msgstr "الإعدادات" 3945 3946 #: includes/class-simpfa-wc-settings-tab.php 3947 msgid "Please sign in again to access Profile Settings." 3948 msgstr "يرجى تسجيل الدخول مجدداً للوصول إلى إعدادات الملف الشخصي." 3949 3950 #: includes/class-simpfa-wc-settings-tab.php 3951 msgid "Unable to load your profile. Please try again." 3952 msgstr "تعذّر تحميل ملفك الشخصي. يرجى المحاولة مجدداً." 3953 3954 #: includes/class-simpfa-wc-settings-tab.php 3955 msgid "Try again" 3956 msgstr "المحاولة مجدداً" 3957 3958 #: includes/class-simpfa-wc-settings-tab.php 3959 msgid "Unable to sign in. Please try again." 3960 msgstr "تعذّر تسجيل الدخول. يرجى المحاولة مجدداً." 3961 3962 #: includes/class-simpfa-wc-settings-tab.php 3963 msgid "Confirming your payment" 3964 msgstr "جارٍ تأكيد الدفع" 3965 3966 #: includes/class-simpfa-wc-settings-tab.php 3967 msgid "Payment confirmed" 3968 msgstr "تم تأكيد الدفع" 3969 3970 #: includes/class-simpfa-wc-settings-tab.php 3971 msgid "Payment failed" 3972 msgstr "فشلت عملية الدفع" 3973 3974 #: includes/class-simpfa-wc-settings-tab.php 3975 msgid "Back to subscription" 3976 msgstr "العودة إلى الاشتراك" 3977 3978 #: includes/class-simpfa-wc-settings-tab.php 3979 msgid "Please sign in to view your subscription." 3980 msgstr "يرجى تسجيل الدخول لعرض اشتراكك." -
simple-fatoora/tags/4.24/languages/simple-fatoora.pot
r3762341 r3762600 7 7 msgid "" 8 8 msgstr "" 9 "Project-Id-Version: Simple Fatoora 4.2 3\n"9 "Project-Id-Version: Simple Fatoora 4.24\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 11 "POT-Creation-Date: 2026-10-23 22:17+0300\n" … … 197 197 msgstr "" 198 198 199 #: includes/class-simpfa-checkout.php:43 includes/class-simpfa-checkout.php:159 199 #: includes/class-simpfa-checkout.php:43 200 #: includes/class-simpfa-checkout.php:159 200 201 msgid "Company name" 201 202 msgstr "" … … 205 206 msgstr "" 206 207 207 #: includes/class-simpfa-checkout.php:56 includes/class-simpfa-checkout.php:160 208 #: includes/class-simpfa-checkout.php:56 209 #: includes/class-simpfa-checkout.php:160 208 210 msgid "Company VAT number" 209 211 msgstr "" … … 220 222 msgstr "" 221 223 222 #: includes/class-simpfa-checkout.php:85 includes/class-simpfa-checkout.php:234 224 #: includes/class-simpfa-checkout.php:85 225 #: includes/class-simpfa-checkout.php:234 223 226 msgid "Please enter the company name for VAT invoice." 224 227 msgstr "" … … 260 263 msgstr "" 261 264 262 #: includes/class-simpfa-handler.php:130 includes/class-simpfa-order-ui.php:633 265 #: includes/class-simpfa-handler.php:130 266 #: includes/class-simpfa-order-ui.php:633 263 267 #: includes/class-simpfa-wc-settings-tab.php:345 264 268 #: includes/class-simpfa-wc-settings-tab.php:481 … … 1107 1111 #: includes/class-simpfa-wc-settings-tab.php:341 1108 1112 msgid "" 1109 "Payment page opened in a new tab. Complete payment there; status will update "1110 " here."1113 "Payment page opened in a new tab. Complete payment there; status will update" 1114 " here." 1111 1115 msgstr "" 1112 1116 … … 1121 1125 #: includes/class-simpfa-wc-settings-tab.php:344 1122 1126 msgid "" 1123 "Payment is still pending. You can refresh the status or return to the plugin "1124 " home page."1127 "Payment is still pending. You can refresh the status or return to the plugin" 1128 " home page." 1125 1129 msgstr "" 1126 1130 … … 1445 1449 #: includes/class-simpfa-wc-settings-tab.php:1233 1446 1450 msgid "" 1447 "Continue your guided invoice setup and preview each change before you finish." 1451 "Continue your guided invoice setup and preview each change before you " 1452 "finish." 1448 1453 msgstr "" 1449 1454 … … 1638 1643 #: includes/class-simpfa-wc-settings-tab.php:1267 1639 1644 msgid "" 1640 "Write something eg. “Thank you for visiting us! We look forward to welcoming "1641 " you again soon.”"1645 "Write something eg. “Thank you for visiting us! We look forward to welcoming" 1646 " you again soon.”" 1642 1647 msgstr "" 1643 1648 … … 1695 1700 #: includes/class-simpfa-wc-settings-tab.php:1332 1696 1701 msgid "" 1697 "Review your current plan, compare memberships, and complete embedded payment "1698 " here."1702 "Review your current plan, compare memberships, and complete embedded payment" 1703 " here." 1699 1704 msgstr "" 1700 1705 … … 1706 1711 msgid "" 1707 1712 "Create invoices, notes, purchase documents, and quotations directly from " 1708 "WordPress. Quotations remain outside ZATCA and invoice usage until converted "1709 " to an invoice."1713 "WordPress. Quotations remain outside ZATCA and invoice usage until converted" 1714 " to an invoice." 1710 1715 msgstr "" 1711 1716 … … 1762 1767 #: includes/class-simpfa-wc-settings-tab.php:1453 1763 1768 msgid "" 1764 "A valid VAT number makes this a standard document for VAT-registered issuers." 1769 "A valid VAT number makes this a standard document for VAT-registered " 1770 "issuers." 1765 1771 msgstr "" 1766 1772 … … 2531 2537 #: includes/class-simpfa-wc-settings-tab.php:2946 2532 2538 msgid "" 2533 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice "2534 " settings, profile, and Phase 2 onboarding."2539 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice" 2540 " settings, profile, and Phase 2 onboarding." 2535 2541 msgstr "" 2536 2542 … … 2663 2669 2664 2670 #: includes/class-simpfa-wc-settings-tab.php:3156 2665 msgid "Please reconnect your Simple Fatoora account to review payment details." 2671 msgid "" 2672 "Please reconnect your Simple Fatoora account to review payment details." 2666 2673 msgstr "" 2667 2674 … … 3260 3267 3261 3268 #: includes/class-simpfa-wc-settings-tab.php:4944 3262 msgid "Choose when and for which customers WooCommerce orders create invoices." 3269 msgid "" 3270 "Choose when and for which customers WooCommerce orders create invoices." 3263 3271 msgstr "" 3264 3272 … … 3496 3504 #: includes/class-simpfa-wc-settings-tab.php:5109 3497 3505 msgid "" 3498 "Yes. An active membership is required before invoice and credit note actions "3499 " become available."3506 "Yes. An active membership is required before invoice and credit note actions" 3507 " become available." 3500 3508 msgstr "" 3501 3509 … … 3624 3632 #: includes/class-simpfa-wc-settings-tab.php:6154 3625 3633 msgid "" 3626 "You do not have permission for this section. Ask a business member with user "3627 " management access to update your permissions."3634 "You do not have permission for this section. Ask a business member with user" 3635 " management access to update your permissions." 3628 3636 msgstr "" 3629 3637 … … 3840 3848 msgid "Settings" 3841 3849 msgstr "" 3850 3851 #: includes/class-simpfa-wc-settings-tab.php 3852 msgid "Please sign in again to access Profile Settings." 3853 msgstr "" 3854 3855 #: includes/class-simpfa-wc-settings-tab.php 3856 msgid "Unable to load your profile. Please try again." 3857 msgstr "" 3858 3859 #: includes/class-simpfa-wc-settings-tab.php 3860 msgid "Try again" 3861 msgstr "" 3862 3863 #: includes/class-simpfa-wc-settings-tab.php 3864 msgid "Unable to sign in. Please try again." 3865 msgstr "" 3866 3867 #: includes/class-simpfa-wc-settings-tab.php 3868 msgid "Confirming your payment" 3869 msgstr "" 3870 3871 #: includes/class-simpfa-wc-settings-tab.php 3872 msgid "Payment confirmed" 3873 msgstr "" 3874 3875 #: includes/class-simpfa-wc-settings-tab.php 3876 msgid "Payment failed" 3877 msgstr "" 3878 3879 #: includes/class-simpfa-wc-settings-tab.php 3880 msgid "Back to subscription" 3881 msgstr "" 3882 3883 #: includes/class-simpfa-wc-settings-tab.php 3884 msgid "Please sign in to view your subscription." 3885 msgstr "" -
simple-fatoora/tags/4.24/readme.txt
r3762341 r3762600 4 4 Tested up to: 6.9.4 5 5 Requires PHP: 7.4 6 Stable tag: 4.2 36 Stable tag: 4.24 7 7 License: GPLv2 or later 8 8 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 101 101 == Changelog == 102 102 103 = 4.24 = 104 * User Experience Improvements 105 103 106 = 4.23 = 104 107 * Performance Improvements -
simple-fatoora/tags/4.24/simple-fatoora.php
r3762341 r3762600 5 5 * Plugin URI: https://simplefatoora.com/ 6 6 * Description: Adds ZATCA Phase 2 e-invoicing with QR codes to WooCommerce for B2C and B2B VAT invoices. 7 * Version: 4.2 37 * Version: 4.24 8 8 * Author: Future Base 9 9 * Author URI: https://futurebase.sa/ … … 26 26 // ----------------------------------------------------------------------------- 27 27 if (!defined('SIMPFA_VERSION')) { 28 define('SIMPFA_VERSION', '4.2 3');28 define('SIMPFA_VERSION', '4.24'); 29 29 } 30 30 require_once __DIR__ . '/includes/class-simpfa-order-boundary.php'; -
simple-fatoora/trunk/assets/js/simple-fatoora-settings.js
r3762341 r3762600 564 564 password: password || '' 565 565 }; 566 if ($('#sf-personal-signin').length) payload.signin_purpose = 'personal_profile'; 566 567 567 568 if (!payload.email_id || !payload.password) { -
simple-fatoora/trunk/includes/class-simpfa-business-connection.php
r3762341 r3762600 24 24 private static function remembered_session() 25 25 { 26 $saved = get_transient(self::session_key()); 27 if (!$saved && function_exists('get_user_meta')) $saved = get_user_meta(get_current_user_id(), 'simpfa_personal_session', true); 26 // Durable administrator-owned proof is canonical; an old object-cache entry 27 // must not replace a newer sign-in or bypass its expiry. 28 $saved = function_exists('get_user_meta') ? get_user_meta(get_current_user_id(), 'simpfa_personal_session', true) : ''; 29 if (!$saved) $saved = get_transient(self::session_key()); 28 30 // Recover a surviving legacy DB-backed transient after an object-cache change. 29 31 if (!$saved) $saved = get_option('_transient_' . self::session_key(), ''); -
simple-fatoora/trunk/includes/class-simpfa-wc-settings-tab.php
r3762341 r3762600 2645 2645 $token = Simpfa_BusinessConnection::token(); 2646 2646 $result = $token ? $this->get_client()->business_account($token, '/account') : []; 2647 if (empty($result['ok'])) return '<div class="sf-card sf-form-card" data-personal-session-state="' . esc_attr(Simpfa_BusinessConnection::personal_session_state()) . '"><h2>' . esc_html__('Profile Settings', 'simple-fatoora') . '</h2><p>' . esc_html__('Your business is connected. Personal profile settings require your remembered account sign-in.', 'simple-fatoora') . '</p><a href="' . esc_url($this->get_page_url('home')) . '">' . esc_html__('Home', 'simple-fatoora') . '</a></div>'; 2647 if (empty($result['ok'])) { 2648 $signin = !$token || in_array((int) ($result['status_code'] ?? 0), [401, 403], true); 2649 $url = $signin ? add_query_arg('sf_profile_signin', '1', $this->get_page_url('profile')) : $this->get_page_url('profile'); 2650 if ($signin && isset($_GET['sf_profile_signin']) && (string) $_GET['sf_profile_signin'] === '1') return $this->render_personal_signin_card(); 2651 return '<div class="sf-card sf-form-card sf-personal-signin-notice" data-personal-session-state="' . esc_attr(Simpfa_BusinessConnection::personal_session_state()) . '"><h2>' . esc_html__('Profile Settings', 'simple-fatoora') . '</h2><p>' . esc_html($signin ? __('Please sign in again to access Profile Settings.', 'simple-fatoora') : __('Unable to load your profile. Please try again.', 'simple-fatoora')) . '</p><a class="sf-button-primary" href="' . esc_url($url) . '">' . esc_html($signin ? __('Sign In', 'simple-fatoora') : __('Try again', 'simple-fatoora')) . '</a></div>'; 2652 } 2648 2653 $person = $this->get_client()->extract_response($result, []); 2649 2654 $html = '<div id="sf-page-profile" class="sf-card sf-form-card sf-page-view sf-page-view--profile"><div class="sf-page-header"><h2 class="sf-title">' . esc_html__('Profile Settings', 'simple-fatoora') . '</h2></div>'; … … 2657 2662 } 2658 2663 return $html . '</div><div class="sf-form-actions sf-profile-submit-row"><button type="submit" class="button sf-button-primary" formaction="' . esc_url(admin_url('admin-post.php?action=simpfa_personal_profile')) . '" formmethod="post">' . esc_html__('Save Profile', 'simple-fatoora') . '</button></div></div></div>'; 2664 } 2665 2666 private function render_personal_signin_card() 2667 { 2668 return '<div id="sf-personal-signin" class="sf-card sf-form-card"><h2>' . esc_html__('Sign In', 'simple-fatoora') . '</h2><div class="sf-form sf-auth-form"><div class="sf-form-row"><label for="sf-login-email">' . esc_html__('Email', 'simple-fatoora') . '</label><input id="sf-login-email" type="email" autocomplete="username" /></div><div class="sf-form-row"><label for="sf-login-password">' . esc_html__('Password', 'simple-fatoora') . '</label><input id="sf-login-password" type="password" autocomplete="current-password" /></div><button type="button" id="sf-native-signin-btn" class="sf-button-primary">' . esc_html__('Sign In', 'simple-fatoora') . '</button><div id="sf-signin-feedback" class="sf-auth-feedback sf-v2-feedback" aria-live="polite"></div></div></div>'; 2659 2669 } 2660 2670 … … 3115 3125 $resolved_view = $this->resolve_payment_result_view($requested_view, $payment_result_data['status']); 3116 3126 $transaction_id = isset($payment_result_data['transaction_id']) ? absint($payment_result_data['transaction_id']) : 0; 3117 $result_title = __('Payment Status', 'simple-fatoora'); 3118 $result_message = __('We are checking your payment result.', 'simple-fatoora'); 3127 $result_title = __('Confirming your payment', 'simple-fatoora'); 3119 3128 $icon_class = 'sf-payment-result-icon-pending'; 3120 $icon_symbol = '...'; 3121 3129 $icon_symbol = '…'; 3122 3130 if ($resolved_view === 'success') { 3123 $result_title = __('Purchase Confirmed', 'simple-fatoora'); 3124 $result_message = __('Your recurring membership payment was completed successfully.', 'simple-fatoora'); 3131 $result_title = __('Payment confirmed', 'simple-fatoora'); 3125 3132 $icon_class = 'sf-payment-result-icon-success'; 3126 3133 $icon_symbol = '✓'; 3127 3134 } elseif ($resolved_view === 'failed') { 3128 $result_title = __('Payment Failed', 'simple-fatoora'); 3129 $result_message = $payment_view['reason'] === 'cancelled_or_failed' 3130 ? __('The payment was cancelled or could not be completed. No membership was activated.', 'simple-fatoora') 3131 : __('We could not confirm this payment. Please try again.', 'simple-fatoora'); 3135 $result_title = __('Payment failed', 'simple-fatoora'); 3132 3136 $icon_class = 'sf-payment-result-icon-failed'; 3133 3137 $icon_symbol = '!'; 3134 } else { 3135 $result_title = __('Payment Pending', 'simple-fatoora'); 3136 $result_message = __('We are waiting for payment confirmation from MyFatoorah. This can take a short moment after OTP or card confirmation.', 'simple-fatoora'); 3137 } 3138 3139 $home_button = '<a class="sf-button-primary" href="' . esc_url($payment_home_url) . '">' . esc_html__('Back to Plugin Home', 'simple-fatoora') . '</a>'; 3140 $refresh_button = '<a class="sf-button-secondary sf-hidden" href="' . esc_url($this->build_payment_result_url('pending', $transaction_id)) . '" id="sf-payment-result-refresh">' . esc_html__('Refresh Status', 'simple-fatoora') . '</a>'; 3141 $details = ''; 3142 if ($resolved_view === 'success') { 3143 $membership_end_label = $this->get_membership_end_label(isset($payment_result_data['membership_title']) ? (string) $payment_result_data['membership_title'] : ''); 3144 $details .= '<div class="sf-payment-result-grid">'; 3145 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Membership', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_title'] !== '' ? $payment_result_data['membership_title'] : '--') . '</strong></div>'; 3146 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Total', 'simple-fatoora') . '</span><strong>' . esc_html($this->format_result_amount($payment_result_data['amount'])) . '</strong></div>'; 3147 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Term', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_term_label'] !== '' ? $payment_result_data['membership_term_label'] : '--') . '</strong></div>'; 3148 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Start Date', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_start_date'] !== '' ? $payment_result_data['membership_start_date'] : '--') . '</strong></div>'; 3149 $details .= '<div class="sf-payment-result-item"><span>' . esc_html($membership_end_label) . '</span><strong>' . esc_html($payment_result_data['membership_end_date'] !== '' ? $payment_result_data['membership_end_date'] : '--') . '</strong></div>'; 3150 $details .= '<div class="sf-payment-result-item"><span>' . esc_html__('Invoice ID', 'simple-fatoora') . '</span><strong>' . esc_html($payment_result_data['membership_invoice_number'] !== '' ? $payment_result_data['membership_invoice_number'] : '--') . '</strong></div>'; 3151 $details .= '</div>'; 3152 } 3153 3154 $status_note = ''; 3155 if (!$is_connected) { 3156 $status_note = '<div class="sf-notice sf-notice-error">' . esc_html__('Please reconnect your Simple Fatoora account to review payment details.', 'simple-fatoora') . '</div>'; 3157 } elseif (!empty($payment_result_data['message']) && $resolved_view !== 'success') { 3158 $status_note = '<div class="sf-notice sf-notice-error">' . esc_html($payment_result_data['message']) . '</div>'; 3159 } 3138 } 3139 $home_button = '<a class="sf-button-primary" href="' . esc_url($is_connected ? $this->get_page_url('memberships') : $payment_home_url) . '">' . esc_html($is_connected ? __('Back to subscription', 'simple-fatoora') : __('Sign In', 'simple-fatoora')) . '</a>'; 3140 $status_note = !$is_connected ? '<p>' . esc_html__('Please sign in to view your subscription.', 'simple-fatoora') . '</p>' : ''; 3160 3141 3161 3142 $pending_meta = ''; … … 3174 3155 $html .= '<div class="sf-payment-result-icon ' . esc_attr($icon_class) . '">' . esc_html($icon_symbol) . '</div>'; 3175 3156 $html .= '<h3 class="sf-section-title">' . esc_html($result_title) . '</h3>'; 3176 $html .= '<p class="sf-subtitle">' . esc_html($result_message) . '</p>';3177 3157 $html .= '</div>'; 3178 3158 $html .= $status_note; 3179 $html .= $details;3180 3159 if ($resolved_view === 'pending') { 3181 $html .= '<div id="sf-payment-result-feedback" class="sf-v2-feedback " aria-live="polite"></div>';3160 $html .= '<div id="sf-payment-result-feedback" class="sf-v2-feedback sf-hidden" aria-live="polite"></div>'; 3182 3161 } 3183 3162 $html .= '<div class="sf-payment-result-actions">'; 3184 if ($resolved_view === 'pending') {3185 $html .= $refresh_button;3186 }3187 3163 $html .= $home_button; 3188 3164 $html .= '</div>'; … … 3210 3186 3211 3187 $login_payload = $this->get_client()->extract_response($login, []); 3188 if (sanitize_key(wp_unslash($_POST['signin_purpose'] ?? '')) === 'personal_profile') { 3189 if (empty($login_payload['uuid']) || !Simpfa_BusinessConnection::begin($this->get_client(), $login_payload['uuid'])) { 3190 wp_send_json_error(__('Unable to sign in. Please try again.', 'simple-fatoora')); 3191 } 3192 // Personal reauthentication must never reconnect or switch the store's business. 3193 wp_send_json_success(['redirect_url' => $this->get_page_url('profile')]); 3194 } 3212 3195 if (!empty($login_payload['uuid'])) { 3213 3196 $this->begin_business_selection($login_payload['uuid']); -
simple-fatoora/trunk/languages/simple-fatoora-ar.po
r3762341 r3762600 1 msgid "" 2 msgstr "" 3 "Project-Id-Version: Simple Fatoora 4.23\n" 1 # 2 msgid "" 3 msgstr "" 4 "Project-Id-Version: Simple Fatoora 4.24\n" 4 5 "Report-Msgid-Bugs-To: \n" 5 6 "POT-Creation-Date: 2026-10-23 22:17+0300\n" … … 11 12 "Content-Type: text/plain; charset=UTF-8\n" 12 13 "Content-Transfer-Encoding: 8bit\n" 13 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " 14 "&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" 14 "Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n" 15 15 16 16 #: includes/class-simpfa-admin.php:47 includes/class-simpfa-admin.php:48 … … 195 195 msgstr "هذا الطلب لشركة - فاتورة ضريبية" 196 196 197 #: includes/class-simpfa-checkout.php:43 includes/class-simpfa-checkout.php:159 197 #: includes/class-simpfa-checkout.php:43 198 #: includes/class-simpfa-checkout.php:159 198 199 msgid "Company name" 199 200 msgstr "اسم الشركة" … … 203 204 msgstr "اسم الشركة (مطلوب للفاتورة الضريبية)" 204 205 205 #: includes/class-simpfa-checkout.php:56 includes/class-simpfa-checkout.php:160 206 #: includes/class-simpfa-checkout.php:56 207 #: includes/class-simpfa-checkout.php:160 206 208 msgid "Company VAT number" 207 209 msgstr "الرقم الضريبي للشركة" … … 218 220 msgstr "يجب أن يكون الرقم الضريبي 15 رقماً ويبدأ بالرقم 3." 219 221 220 #: includes/class-simpfa-checkout.php:85 includes/class-simpfa-checkout.php:234 222 #: includes/class-simpfa-checkout.php:85 223 #: includes/class-simpfa-checkout.php:234 221 224 msgid "Please enter the company name for VAT invoice." 222 225 msgstr "يرجى إدخال اسم الشركة للفاتورة الضريبية." … … 260 263 "الفاتورة الأصلية والإشعارات المرتبطة بها." 261 264 262 #: includes/class-simpfa-handler.php:130 includes/class-simpfa-order-ui.php:633 265 #: includes/class-simpfa-handler.php:130 266 #: includes/class-simpfa-order-ui.php:633 263 267 #: includes/class-simpfa-wc-settings-tab.php:345 264 268 #: includes/class-simpfa-wc-settings-tab.php:481 … … 876 880 #: includes/class-simpfa-wc-settings-tab.php:715 877 881 msgid "Enter a valid business name, not an email address or website." 878 msgstr "أدخل اسم نشاط تجاري صحيحًا، وليس بريدًا إلكترونيًا أو موقعًا إلكترونيًا." 882 msgstr "" 883 "أدخل اسم نشاط تجاري صحيحًا، وليس بريدًا إلكترونيًا أو موقعًا إلكترونيًا." 879 884 880 885 #: includes/class-simpfa-wc-settings-tab.php:288 … … 1118 1123 #: includes/class-simpfa-wc-settings-tab.php:341 1119 1124 msgid "" 1120 "Payment page opened in a new tab. Complete payment there; status will update "1121 " here."1125 "Payment page opened in a new tab. Complete payment there; status will update" 1126 " here." 1122 1127 msgstr "" 1123 1128 "فُتحت صفحة الدفع في علامة تبويب جديدة. أكمل الدفع هناك وستتحدث الحالة هنا." … … 1133 1138 #: includes/class-simpfa-wc-settings-tab.php:344 1134 1139 msgid "" 1135 "Payment is still pending. You can refresh the status or return to the plugin "1136 " home page."1140 "Payment is still pending. You can refresh the status or return to the plugin" 1141 " home page." 1137 1142 msgstr "" 1138 1143 "ما زالت حالة الدفع معلقة. يمكنك تحديث الحالة أو العودة إلى الصفحة الرئيسية " … … 1326 1331 "Simulation." 1327 1332 msgstr "" 1328 "منصة التجارب نشطة. الطلبات والمسترجعات التجريبية تستخدم الآن محاكاة الفاتورة "1329 " الإلكترونية لدى زاتكا."1333 "منصة التجارب نشطة. الطلبات والمسترجعات التجريبية تستخدم الآن محاكاة الفاتورة" 1334 " الإلكترونية لدى زاتكا." 1330 1335 1331 1336 #: includes/class-simpfa-wc-settings-tab.php:449 … … 1346 1351 "Invoice Settings." 1347 1352 msgstr "" 1348 "تم حفظ المستند، وتعذر تحديث إعداد الضريبة الصفرية الافتراضي. حدّثه من إعدادات"1349 " الفواتير."1353 "تم حفظ المستند، وتعذر تحديث إعداد الضريبة الصفرية الافتراضي. حدّثه من " 1354 "إعدادات الفواتير." 1350 1355 1351 1356 #: includes/class-simpfa-wc-settings-tab.php:541 … … 1465 1470 #: includes/class-simpfa-wc-settings-tab.php:1233 1466 1471 msgid "" 1467 "Continue your guided invoice setup and preview each change before you finish." 1472 "Continue your guided invoice setup and preview each change before you " 1473 "finish." 1468 1474 msgstr "تابع إعداد الفاتورة الموجه وعاين كل تغيير قبل الإنهاء." 1469 1475 … … 1658 1664 #: includes/class-simpfa-wc-settings-tab.php:1267 1659 1665 msgid "" 1660 "Write something eg. “Thank you for visiting us! We look forward to welcoming "1661 " you again soon.”"1666 "Write something eg. “Thank you for visiting us! We look forward to welcoming" 1667 " you again soon.”" 1662 1668 msgstr "اكتب مثلاً: «شكراً لزيارتكم! نتطلع إلى الترحيب بكم مرة أخرى قريباً.»" 1663 1669 … … 1715 1721 #: includes/class-simpfa-wc-settings-tab.php:1332 1716 1722 msgid "" 1717 "Review your current plan, compare memberships, and complete embedded payment "1718 " here."1723 "Review your current plan, compare memberships, and complete embedded payment" 1724 " here." 1719 1725 msgstr "راجع خطتك الحالية وقارن العضويات وأكمل الدفع المضمن من هنا." 1720 1726 … … 1726 1732 msgid "" 1727 1733 "Create invoices, notes, purchase documents, and quotations directly from " 1728 "WordPress. Quotations remain outside ZATCA and invoice usage until converted "1729 " to an invoice."1734 "WordPress. Quotations remain outside ZATCA and invoice usage until converted" 1735 " to an invoice." 1730 1736 msgstr "" 1731 1737 "أنشئ الفواتير والإشعارات ومستندات الشراء وعروض الأسعار مباشرة من ووردبريس. " 1732 "لا تُرسل عروض الأسعار إلى الهيئة ولا تُحتسب ضمن استخدام الفواتير حتى تحويلها "1733 " إلى فاتورة."1738 "لا تُرسل عروض الأسعار إلى الهيئة ولا تُحتسب ضمن استخدام الفواتير حتى تحويلها" 1739 " إلى فاتورة." 1734 1740 1735 1741 #: includes/class-simpfa-wc-settings-tab.php:1384 … … 1785 1791 #: includes/class-simpfa-wc-settings-tab.php:1453 1786 1792 msgid "" 1787 "A valid VAT number makes this a standard document for VAT-registered issuers." 1788 msgstr "" 1789 "يحوّل الرقم الضريبي الصحيح المستند إلى مستند قياسي للمنشآت المسجلة في الضريبة." 1793 "A valid VAT number makes this a standard document for VAT-registered " 1794 "issuers." 1795 msgstr "" 1796 "يحوّل الرقم الضريبي الصحيح المستند إلى مستند قياسي للمنشآت المسجلة في " 1797 "الضريبة." 1790 1798 1791 1799 #: includes/class-simpfa-wc-settings-tab.php:1455 … … 2567 2575 #: includes/class-simpfa-wc-settings-tab.php:2946 2568 2576 msgid "" 2569 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice "2570 " settings, profile, and Phase 2 onboarding."2571 msgstr "" 2572 "استخدم محاكاة الفاتورة الإلكترونية لدى زاتكا لاختبار طلبات ومسترجعات ووكومرس "2573 " وإعدادات الفواتير والملف الشخصي والربط بالمرحلة الثانية."2577 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice" 2578 " settings, profile, and Phase 2 onboarding." 2579 msgstr "" 2580 "استخدم محاكاة الفاتورة الإلكترونية لدى زاتكا لاختبار طلبات ومسترجعات ووكومرس" 2581 " وإعدادات الفواتير والملف الشخصي والربط بالمرحلة الثانية." 2574 2582 2575 2583 #: includes/class-simpfa-wc-settings-tab.php:2950 … … 2578 2586 "Repair it now or exit sandbox." 2579 2587 msgstr "" 2580 "تم تحديد منصة التجارب، لكن هذا المتجر لا يحتوي على مفتاح واجهة برمجة تطبيقات "2581 " التجربة. أصلح الإعداد الآن أو اخرج من منصة التجارب."2588 "تم تحديد منصة التجارب، لكن هذا المتجر لا يحتوي على مفتاح واجهة برمجة تطبيقات" 2589 " التجربة. أصلح الإعداد الآن أو اخرج من منصة التجارب." 2582 2590 2583 2591 #: includes/class-simpfa-wc-settings-tab.php:2952 … … 2613 2621 "and normal customer email behavior." 2614 2622 msgstr "" 2615 "اخرج من منصة التجارب لإعادة هذا المتجر إلى الفواتير المباشرة وزاتكا المباشرة "2616 " وسلوك البريد الإلكتروني الطبيعي للعملاء."2623 "اخرج من منصة التجارب لإعادة هذا المتجر إلى الفواتير المباشرة وزاتكا المباشرة" 2624 " وسلوك البريد الإلكتروني الطبيعي للعملاء." 2617 2625 2618 2626 #: includes/class-simpfa-wc-settings-tab.php:2959 … … 2621 2629 "every incoming order and refund." 2622 2630 msgstr "" 2623 "تابع فقط عندما تريد أن ينشئ هذا المتجر فواتير تجريبية لكل طلب أو مسترجع وارد." 2631 "تابع فقط عندما تريد أن ينشئ هذا المتجر فواتير تجريبية لكل طلب أو مسترجع " 2632 "وارد." 2624 2633 2625 2634 #: includes/class-simpfa-wc-settings-tab.php:2966 … … 2713 2722 2714 2723 #: includes/class-simpfa-wc-settings-tab.php:3156 2715 msgid "Please reconnect your Simple Fatoora account to review payment details." 2724 msgid "" 2725 "Please reconnect your Simple Fatoora account to review payment details." 2716 2726 msgstr "يرجى إعادة ربط حساب سمبل فاتورة لمراجعة تفاصيل الدفع." 2717 2727 … … 2920 2930 "memberships and invoice settings in one place." 2921 2931 msgstr "" 2922 "اربط متجر WooCommerce الخاص بك دون مغادرة ووردبريس، ثم أدر العضويات وإعدادات "2923 " الفاتورة من مكان واحد."2932 "اربط متجر WooCommerce الخاص بك دون مغادرة ووردبريس، ثم أدر العضويات وإعدادات" 2933 " الفاتورة من مكان واحد." 2924 2934 2925 2935 #: includes/class-simpfa-wc-settings-tab.php:4350 … … 3318 3328 3319 3329 #: includes/class-simpfa-wc-settings-tab.php:4944 3320 msgid "Choose when and for which customers WooCommerce orders create invoices." 3330 msgid "" 3331 "Choose when and for which customers WooCommerce orders create invoices." 3321 3332 msgstr "حدد متى ولأي عملاء تنشئ طلبات ووكومرس فواتير." 3322 3333 … … 3481 3492 "codes." 3482 3493 msgstr "" 3483 "نعم. تدعم الإضافة مسارات المرحلتين الأولى والثانية عبر خدمة سمبل فاتورة، بما "3484 " في ذلك إنشاء الفواتير المتوافقة ورموز QR."3494 "نعم. تدعم الإضافة مسارات المرحلتين الأولى والثانية عبر خدمة سمبل فاتورة، بما" 3495 " في ذلك إنشاء الفواتير المتوافقة ورموز QR." 3485 3496 3486 3497 #: includes/class-simpfa-wc-settings-tab.php:5102 … … 3531 3542 "be processed as a VAT invoice." 3532 3543 msgstr "" 3533 "عند تفعيل تفضيل صفحة الدفع، يمكن للعميل اختيار فاتورة شركة وإدخال اسم الشركة "3534 " والرقم الضريبي حتى تتم معالجة الطلب كفاتورة ضريبية."3544 "عند تفعيل تفضيل صفحة الدفع، يمكن للعميل اختيار فاتورة شركة وإدخال اسم الشركة" 3545 " والرقم الضريبي حتى تتم معالجة الطلب كفاتورة ضريبية." 3535 3546 3536 3547 #: includes/class-simpfa-wc-settings-tab.php:5106 … … 3575 3586 #: includes/class-simpfa-wc-settings-tab.php:5109 3576 3587 msgid "" 3577 "Yes. An active membership is required before invoice and credit note actions "3578 " become available."3588 "Yes. An active membership is required before invoice and credit note actions" 3589 " become available." 3579 3590 msgstr "" 3580 3591 "نعم. يلزم وجود عضوية نشطة قبل إتاحة إجراءات الفواتير والإشعارات الدائنة." … … 3710 3721 #: includes/class-simpfa-wc-settings-tab.php:6154 3711 3722 msgid "" 3712 "You do not have permission for this section. Ask a business member with user "3713 " management access to update your permissions."3723 "You do not have permission for this section. Ask a business member with user" 3724 " management access to update your permissions." 3714 3725 msgstr "" 3715 3726 "ليس لديك صلاحية الوصول إلى هذا القسم. اطلب من أحد أعضاء المنشأة المخولين " … … 3922 3933 "with their original business." 3923 3934 msgstr "" 3924 "تُنشأ الطلبات الجديدة باسم المنشأة المرتبطة. وتبقى الفواتير والمبالغ المستردة"3925 "ال سابقة مرتبطة بمنشآتها الأصلية."3935 "تُنشأ الطلبات الجديدة باسم المنشأة المرتبطة. وتبقى الفواتير والمبالغ " 3936 "المستردة السابقة مرتبطة بمنشآتها الأصلية." 3926 3937 3927 3938 #: simple-fatoora.php:1425 … … 3932 3943 msgid "Settings" 3933 3944 msgstr "الإعدادات" 3945 3946 #: includes/class-simpfa-wc-settings-tab.php 3947 msgid "Please sign in again to access Profile Settings." 3948 msgstr "يرجى تسجيل الدخول مجدداً للوصول إلى إعدادات الملف الشخصي." 3949 3950 #: includes/class-simpfa-wc-settings-tab.php 3951 msgid "Unable to load your profile. Please try again." 3952 msgstr "تعذّر تحميل ملفك الشخصي. يرجى المحاولة مجدداً." 3953 3954 #: includes/class-simpfa-wc-settings-tab.php 3955 msgid "Try again" 3956 msgstr "المحاولة مجدداً" 3957 3958 #: includes/class-simpfa-wc-settings-tab.php 3959 msgid "Unable to sign in. Please try again." 3960 msgstr "تعذّر تسجيل الدخول. يرجى المحاولة مجدداً." 3961 3962 #: includes/class-simpfa-wc-settings-tab.php 3963 msgid "Confirming your payment" 3964 msgstr "جارٍ تأكيد الدفع" 3965 3966 #: includes/class-simpfa-wc-settings-tab.php 3967 msgid "Payment confirmed" 3968 msgstr "تم تأكيد الدفع" 3969 3970 #: includes/class-simpfa-wc-settings-tab.php 3971 msgid "Payment failed" 3972 msgstr "فشلت عملية الدفع" 3973 3974 #: includes/class-simpfa-wc-settings-tab.php 3975 msgid "Back to subscription" 3976 msgstr "العودة إلى الاشتراك" 3977 3978 #: includes/class-simpfa-wc-settings-tab.php 3979 msgid "Please sign in to view your subscription." 3980 msgstr "يرجى تسجيل الدخول لعرض اشتراكك." -
simple-fatoora/trunk/languages/simple-fatoora.pot
r3762341 r3762600 7 7 msgid "" 8 8 msgstr "" 9 "Project-Id-Version: Simple Fatoora 4.2 3\n"9 "Project-Id-Version: Simple Fatoora 4.24\n" 10 10 "Report-Msgid-Bugs-To: \n" 11 11 "POT-Creation-Date: 2026-10-23 22:17+0300\n" … … 197 197 msgstr "" 198 198 199 #: includes/class-simpfa-checkout.php:43 includes/class-simpfa-checkout.php:159 199 #: includes/class-simpfa-checkout.php:43 200 #: includes/class-simpfa-checkout.php:159 200 201 msgid "Company name" 201 202 msgstr "" … … 205 206 msgstr "" 206 207 207 #: includes/class-simpfa-checkout.php:56 includes/class-simpfa-checkout.php:160 208 #: includes/class-simpfa-checkout.php:56 209 #: includes/class-simpfa-checkout.php:160 208 210 msgid "Company VAT number" 209 211 msgstr "" … … 220 222 msgstr "" 221 223 222 #: includes/class-simpfa-checkout.php:85 includes/class-simpfa-checkout.php:234 224 #: includes/class-simpfa-checkout.php:85 225 #: includes/class-simpfa-checkout.php:234 223 226 msgid "Please enter the company name for VAT invoice." 224 227 msgstr "" … … 260 263 msgstr "" 261 264 262 #: includes/class-simpfa-handler.php:130 includes/class-simpfa-order-ui.php:633 265 #: includes/class-simpfa-handler.php:130 266 #: includes/class-simpfa-order-ui.php:633 263 267 #: includes/class-simpfa-wc-settings-tab.php:345 264 268 #: includes/class-simpfa-wc-settings-tab.php:481 … … 1107 1111 #: includes/class-simpfa-wc-settings-tab.php:341 1108 1112 msgid "" 1109 "Payment page opened in a new tab. Complete payment there; status will update "1110 " here."1113 "Payment page opened in a new tab. Complete payment there; status will update" 1114 " here." 1111 1115 msgstr "" 1112 1116 … … 1121 1125 #: includes/class-simpfa-wc-settings-tab.php:344 1122 1126 msgid "" 1123 "Payment is still pending. You can refresh the status or return to the plugin "1124 " home page."1127 "Payment is still pending. You can refresh the status or return to the plugin" 1128 " home page." 1125 1129 msgstr "" 1126 1130 … … 1445 1449 #: includes/class-simpfa-wc-settings-tab.php:1233 1446 1450 msgid "" 1447 "Continue your guided invoice setup and preview each change before you finish." 1451 "Continue your guided invoice setup and preview each change before you " 1452 "finish." 1448 1453 msgstr "" 1449 1454 … … 1638 1643 #: includes/class-simpfa-wc-settings-tab.php:1267 1639 1644 msgid "" 1640 "Write something eg. “Thank you for visiting us! We look forward to welcoming "1641 " you again soon.”"1645 "Write something eg. “Thank you for visiting us! We look forward to welcoming" 1646 " you again soon.”" 1642 1647 msgstr "" 1643 1648 … … 1695 1700 #: includes/class-simpfa-wc-settings-tab.php:1332 1696 1701 msgid "" 1697 "Review your current plan, compare memberships, and complete embedded payment "1698 " here."1702 "Review your current plan, compare memberships, and complete embedded payment" 1703 " here." 1699 1704 msgstr "" 1700 1705 … … 1706 1711 msgid "" 1707 1712 "Create invoices, notes, purchase documents, and quotations directly from " 1708 "WordPress. Quotations remain outside ZATCA and invoice usage until converted "1709 " to an invoice."1713 "WordPress. Quotations remain outside ZATCA and invoice usage until converted" 1714 " to an invoice." 1710 1715 msgstr "" 1711 1716 … … 1762 1767 #: includes/class-simpfa-wc-settings-tab.php:1453 1763 1768 msgid "" 1764 "A valid VAT number makes this a standard document for VAT-registered issuers." 1769 "A valid VAT number makes this a standard document for VAT-registered " 1770 "issuers." 1765 1771 msgstr "" 1766 1772 … … 2531 2537 #: includes/class-simpfa-wc-settings-tab.php:2946 2532 2538 msgid "" 2533 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice "2534 " settings, profile, and Phase 2 onboarding."2539 "Use ZATCA's Fatoora Simulation for test WooCommerce orders, refunds, invoice" 2540 " settings, profile, and Phase 2 onboarding." 2535 2541 msgstr "" 2536 2542 … … 2663 2669 2664 2670 #: includes/class-simpfa-wc-settings-tab.php:3156 2665 msgid "Please reconnect your Simple Fatoora account to review payment details." 2671 msgid "" 2672 "Please reconnect your Simple Fatoora account to review payment details." 2666 2673 msgstr "" 2667 2674 … … 3260 3267 3261 3268 #: includes/class-simpfa-wc-settings-tab.php:4944 3262 msgid "Choose when and for which customers WooCommerce orders create invoices." 3269 msgid "" 3270 "Choose when and for which customers WooCommerce orders create invoices." 3263 3271 msgstr "" 3264 3272 … … 3496 3504 #: includes/class-simpfa-wc-settings-tab.php:5109 3497 3505 msgid "" 3498 "Yes. An active membership is required before invoice and credit note actions "3499 " become available."3506 "Yes. An active membership is required before invoice and credit note actions" 3507 " become available." 3500 3508 msgstr "" 3501 3509 … … 3624 3632 #: includes/class-simpfa-wc-settings-tab.php:6154 3625 3633 msgid "" 3626 "You do not have permission for this section. Ask a business member with user "3627 " management access to update your permissions."3634 "You do not have permission for this section. Ask a business member with user" 3635 " management access to update your permissions." 3628 3636 msgstr "" 3629 3637 … … 3840 3848 msgid "Settings" 3841 3849 msgstr "" 3850 3851 #: includes/class-simpfa-wc-settings-tab.php 3852 msgid "Please sign in again to access Profile Settings." 3853 msgstr "" 3854 3855 #: includes/class-simpfa-wc-settings-tab.php 3856 msgid "Unable to load your profile. Please try again." 3857 msgstr "" 3858 3859 #: includes/class-simpfa-wc-settings-tab.php 3860 msgid "Try again" 3861 msgstr "" 3862 3863 #: includes/class-simpfa-wc-settings-tab.php 3864 msgid "Unable to sign in. Please try again." 3865 msgstr "" 3866 3867 #: includes/class-simpfa-wc-settings-tab.php 3868 msgid "Confirming your payment" 3869 msgstr "" 3870 3871 #: includes/class-simpfa-wc-settings-tab.php 3872 msgid "Payment confirmed" 3873 msgstr "" 3874 3875 #: includes/class-simpfa-wc-settings-tab.php 3876 msgid "Payment failed" 3877 msgstr "" 3878 3879 #: includes/class-simpfa-wc-settings-tab.php 3880 msgid "Back to subscription" 3881 msgstr "" 3882 3883 #: includes/class-simpfa-wc-settings-tab.php 3884 msgid "Please sign in to view your subscription." 3885 msgstr "" -
simple-fatoora/trunk/readme.txt
r3762341 r3762600 4 4 Tested up to: 6.9.4 5 5 Requires PHP: 7.4 6 Stable tag: 4.2 36 Stable tag: 4.24 7 7 License: GPLv2 or later 8 8 License URI: https://www.gnu.org/licenses/gpl-2.0.html … … 101 101 == Changelog == 102 102 103 = 4.24 = 104 * User Experience Improvements 105 103 106 = 4.23 = 104 107 * Performance Improvements -
simple-fatoora/trunk/simple-fatoora.php
r3762341 r3762600 5 5 * Plugin URI: https://simplefatoora.com/ 6 6 * Description: Adds ZATCA Phase 2 e-invoicing with QR codes to WooCommerce for B2C and B2B VAT invoices. 7 * Version: 4.2 37 * Version: 4.24 8 8 * Author: Future Base 9 9 * Author URI: https://futurebase.sa/ … … 26 26 // ----------------------------------------------------------------------------- 27 27 if (!defined('SIMPFA_VERSION')) { 28 define('SIMPFA_VERSION', '4.2 3');28 define('SIMPFA_VERSION', '4.24'); 29 29 } 30 30 require_once __DIR__ . '/includes/class-simpfa-order-boundary.php';
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)