Files
cosmopet-woozoho-fulfillment/views/settings-page.php
2026-05-15 21:06:41 +07:00

167 lines
9.3 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php if (!defined('ABSPATH')) exit; ?>
<div class="wrap" id="wzhf">
<h1>WooZoho Fulfillment</h1>
<p class="muted">Автосоздание Sales Orders в Zoho. Версия <?php echo esc_html(WZHF_VER); ?></p>
<div class="card">
<strong>Статус подключения:</strong>
<?php $z = new WZHF_Zoho(); if ($z->is_connected()): ?><span class="status-pill status-ok">Connected</span><?php else: ?><span class="status-pill status-bad">Not connected</span><?php endif; ?>
</div>
<div class="tabs">
<a href="#" data-tab="general" class="active">Общее</a>
<a href="#" data-tab="oauth">OAuth</a>
<a href="#" data-tab="orders">Заказы</a>
<a href="#" data-tab="tools">Тесты / Инструменты</a>
<a href="#" data-tab="logs">Логи</a>
</div>
<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
<input type="hidden" name="action" value="wzhf_save"><?php wzhf_nonce_field(); ?>
<div class="tab" data-tab="general">
<div class="grid">
<div class="card">
<h2>Zoho датацентр и организация</h2>
<label>Датацентр</label>
<select name="dc">
<?php $dc=esc_attr(isset($opt['dc'])?$opt['dc']:'.eu'); ?>
<option value=".eu" <?php wzhf_selected($dc,'.eu');?>>.eu</option>
<option value=".com" <?php wzhf_selected($dc,'.com');?>>.com</option>
<option value=".in" <?php wzhf_selected($dc,'.in');?>>.in</option>
<option value=".com.au" <?php wzhf_selected($dc,'.com.au');?>>.com.au</option>
</select>
<label>Organization ID</label>
<input type="text" name="org" value="<?php echo esc_attr(isset($opt['org'])?$opt['org']:''); ?>" />
</div>
<div class="card">
<h2>Патч адреса в SO (без JS)</h2>
<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
<input type="hidden" name="action" value="wzhf_patch_so" />
<?php wzhf_nonce_field(); ?>
<label>Order ID (для серверного действия)</label>
<input type="number" name="order_id_patch" min="1" placeholder="например, 20441" />
<p><button type="submit" class="button">Обновить адрес в существующем SO</button></p>
</form>
</div>
</div>
</div>
<div class="tab" data-tab="oauth" style="display:none">
<div class="grid">
<div class="card">
<h2>OAuth Клиент</h2>
<label>Client ID</label><input type="text" name="cid" value="<?php echo esc_attr(isset($opt['cid'])?$opt['cid']:''); ?>" />
<label>Client Secret</label><input type="password" name="sec" value="<?php echo esc_attr(isset($opt['sec'])?$opt['sec']:''); ?>" />
<label>Scopes</label><input type="text" name="scopes" value="<?php echo esc_attr(isset($opt['scopes'])?$opt['scopes']:'ZohoInventory.FullAccess.all'); ?>" />
<p class="muted">Redirect URI: <code class="mono"><?php echo esc_html(rest_url(WZHF_NS.'/oauth/callback')); ?></code></p>
<?php if(!$connected): ?>
<?php if(!empty($auth)): ?><p><a class="button button-primary" href="<?php echo esc_url($auth); ?>">Подключить Zoho (OAuth)</a></p>
<?php else: ?><p class="muted">Заполните Client ID/Secret и Scopes, сохраните — появится кнопка подключения.</p><?php endif; ?>
<?php else: ?><p><span class="status-pill status-ok">Соединение установлено</span></p><?php endif; ?>
</div>
<div class="card">
<h2>Патч адреса в SO (без JS)</h2>
<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
<input type="hidden" name="action" value="wzhf_patch_so" />
<?php wzhf_nonce_field(); ?>
<label>Order ID (для серверного действия)</label>
<input type="number" name="order_id_patch" min="1" placeholder="например, 20441" />
<p><button type="submit" class="button">Обновить адрес в существующем SO</button></p>
</form>
</div>
</div>
</div>
<div class="tab" data-tab="orders" style="display:none">
<div class="grid">
<div class="card">
<h2>Когда отправлять заказ в Zoho</h2>
<?php $tr=esc_attr(isset($opt['trigger_mode'])?$opt['trigger_mode']:'processed'); ?>
<label>Триггер</label>
<select name="trigger_mode">
<option value="processed" <?php wzhf_selected($tr,'processed');?>>Сразу после оформления</option>
<option value="paid" <?php wzhf_selected($tr,'paid');?>>После оплаты</option>
</select>
<label><input type="checkbox" name="create_missing" <?php wzhf_checked(!empty($opt['create_missing'])); ?> /> Создавать отсутствующие товары в Zoho по SKU</label>
<label><input type="checkbox" name="set_status_after_so" <?php wzhf_checked(!empty($opt['set_status_after_so'])); ?> /> Менять статус заказа после создания SO</label>
<?php $sa=esc_attr(isset($opt['status_after_so'])?$opt['status_after_so']:'processing'); ?>
<select name="status_after_so">
<option value="processing" <?php wzhf_selected($sa,'processing');?>>processing</option>
<option value="on-hold" <?php wzhf_selected($sa,'on-hold');?>>on-hold</option>
<option value="completed" <?php wzhf_selected($sa,'completed');?>>completed</option>
</select>
<label>Синхронизация адресов контакта</label>
<?php $cas = esc_attr(isset($opt['contact_addr_sync'])?$opt['contact_addr_sync']:'always'); ?>
<select name="contact_addr_sync">
<option value="always" <?php wzhf_selected($cas,'always');?>>Всегда из заказа</option>
<option value="if_empty" <?php wzhf_selected($cas,'if_empty');?>>Только если пусто в Zoho</option>
<option value="never" <?php wzhf_selected($cas,'never');?>>Не синхронизировать</option>
</select>
</div>
<div class="card">
<h2>Патч адреса в SO (без JS)</h2>
<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
<input type="hidden" name="action" value="wzhf_patch_so" />
<?php wzhf_nonce_field(); ?>
<label>Order ID (для серверного действия)</label>
<input type="number" name="order_id_patch" min="1" placeholder="например, 20441" />
<p><button type="submit" class="button">Обновить адрес в существующем SO</button></p>
</form>
</div>
</div>
</div>
<div class="tab" data-tab="tools" style="display:none">
<div class="tools-grid">
<div class="card">
<h2>С конкретным заказом</h2>
<label>Order ID</label>
<input type="number" id="tool-order-id" min="1" placeholder="например, 20372" />
<p>
<a href="#" class="button" id="btn-reset-map">Сбросить mapping и трек</a>
<span class="result" id="res-reset-map"></span>
</p>
<p>
<a href="#" class="button" id="btn-resend-so">Отправить заказ в Zoho заново (создать SO)</a>
<span class="result" id="res-resend-so"></span>
</p>
<p>
<a href="#" class="button" id="btn-patch-so-address">Обновить адрес в существующем SO (из заказа)</a>
<span class="result" id="res-patch-so"></span>
</p>
</div>
<div class="card">
<h2>Патч адреса в SO (без JS)</h2>
<form method="post" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
<input type="hidden" name="action" value="wzhf_patch_so" />
<?php wzhf_nonce_field(); ?>
<label>Order ID (для серверного действия)</label>
<input type="number" name="order_id_patch" min="1" placeholder="например, 20441" />
<p><button type="submit" class="button">Обновить адрес в существующем SO</button></p>
</form>
</div>
</div>
</div>
<div class="tab" data-tab="logs" style="display:none">
<div class="card">
<h2>Последние логи</h2>
<?php $logs=WZHF_Logger::latest_logs(); if(empty($logs)): ?>
<p class="muted">Логи пока пусты.</p>
<?php else: foreach($logs as $file=>$content): ?>
<h3><?php echo esc_html($file); ?></h3>
<pre class="mono" style="max-height:300px;overflow:auto;background:#0b1020;color:#cde3ff;padding:12px;border-radius:8px;"><?php echo esc_html($content); ?></pre>
<?php endforeach; endif; ?>
</div>
</div>
<p><button type="submit" class="button button-primary">Сохранить настройки</button></p>
</form>
</div>