update
This commit is contained in:
@@ -17,6 +17,14 @@ $statusSyncDirection = (string) ($statusSyncDirection ?? 'allegro_to_orderpro');
|
||||
$statusSyncIntervalMinutes = max(1, (int) ($statusSyncIntervalMinutes ?? 15));
|
||||
$statusMappings = is_array($statusMappings ?? null) ? $statusMappings : [];
|
||||
$orderproStatuses = is_array($orderproStatuses ?? null) ? $orderproStatuses : [];
|
||||
$allegroStatuses = is_array($allegroStatuses ?? null) ? $allegroStatuses : [];
|
||||
$allegroMappingIndex = [];
|
||||
foreach ($statusMappings as $m) {
|
||||
$opCode = strtolower(trim((string) ($m['orderpro_status_code'] ?? '')));
|
||||
if ($opCode !== '' && trim((string) ($m['allegro_status_code'] ?? '')) !== '') {
|
||||
$allegroMappingIndex[$opCode] = $m;
|
||||
}
|
||||
}
|
||||
?>
|
||||
|
||||
<section class="card">
|
||||
@@ -150,75 +158,50 @@ $orderproStatuses = is_array($orderproStatuses ?? null) ? $orderproStatuses : []
|
||||
<button type="submit" class="btn btn--secondary"><?= $e($t('settings.allegro.statuses.actions.sync')) ?></button>
|
||||
</form>
|
||||
|
||||
<form class="statuses-form mt-12" action="/settings/integrations/allegro/statuses/save" method="post" novalidate>
|
||||
<input type="hidden" name="_token" value="<?= $e($csrfToken ?? '') ?>">
|
||||
<label class="form-field">
|
||||
<span class="field-label"><?= $e($t('settings.allegro.statuses.fields.allegro_status_code')) ?></span>
|
||||
<input class="form-control" type="text" name="allegro_status_code" maxlength="64" required placeholder="<?= $e($t('settings.allegro.statuses.fields.allegro_status_code_placeholder')) ?>">
|
||||
</label>
|
||||
<label class="form-field">
|
||||
<span class="field-label"><?= $e($t('settings.allegro.statuses.fields.allegro_status_name')) ?></span>
|
||||
<input class="form-control" type="text" name="allegro_status_name" maxlength="120" placeholder="<?= $e($t('settings.allegro.statuses.fields.allegro_status_name_placeholder')) ?>">
|
||||
</label>
|
||||
<label class="form-field">
|
||||
<span class="field-label"><?= $e($t('settings.allegro.statuses.fields.orderpro_status_code')) ?></span>
|
||||
<select class="form-control" name="orderpro_status_code" required>
|
||||
<option value=""><?= $e($t('settings.allegro.statuses.fields.orderpro_status_placeholder')) ?></option>
|
||||
<?php foreach ($orderproStatuses as $status): ?>
|
||||
<?php $statusCode = strtolower(trim((string) ($status['code'] ?? ''))); ?>
|
||||
<?php if ($statusCode === '') continue; ?>
|
||||
<option value="<?= $e($statusCode) ?>">
|
||||
<?= $e((string) ($status['name'] ?? $statusCode)) ?> (<?= $e($statusCode) ?>)
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
</label>
|
||||
<div class="form-actions">
|
||||
<button type="submit" class="btn btn--primary"><?= $e($t('settings.allegro.statuses.actions.save')) ?></button>
|
||||
</div>
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="mt-16">
|
||||
<h3 class="section-title"><?= $e($t('settings.allegro.statuses.list_title')) ?></h3>
|
||||
<form action="/settings/integrations/allegro/statuses/save-bulk" method="post">
|
||||
<form action="/settings/integrations/allegro/statuses/save-bulk" method="post" class="mt-12">
|
||||
<input type="hidden" name="_token" value="<?= $e($csrfToken ?? '') ?>">
|
||||
<div class="table-wrap mt-12">
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= $e($t('settings.allegro.statuses.fields.allegro_status_code')) ?></th>
|
||||
<th><?= $e($t('settings.allegro.statuses.fields.allegro_status_name')) ?></th>
|
||||
<th><?= $e($t('settings.allegro.statuses.fields.orderpro_status_code')) ?></th>
|
||||
<th><?= $e($t('settings.order_statuses.fields.orderpro_status')) ?></th>
|
||||
<th><?= $e($t('settings.allegro.statuses.fields.allegro_status')) ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php if ($statusMappings === []): ?>
|
||||
<?php if ($orderproStatuses === []): ?>
|
||||
<tr>
|
||||
<td colspan="3" class="muted"><?= $e($t('settings.allegro.statuses.empty')) ?></td>
|
||||
<td colspan="2" class="muted"><?= $e($t('settings.integrations.statuses.no_orderpro_statuses')) ?></td>
|
||||
</tr>
|
||||
<?php else: ?>
|
||||
<?php foreach ($statusMappings as $mapping): ?>
|
||||
<?php foreach ($orderproStatuses as $opStatus): ?>
|
||||
<?php
|
||||
$opCode = strtolower(trim((string) ($opStatus['code'] ?? '')));
|
||||
if ($opCode === '') continue;
|
||||
$opName = (string) ($opStatus['name'] ?? $opCode);
|
||||
$mapped = $allegroMappingIndex[$opCode] ?? null;
|
||||
$selectedAllegroCode = $mapped !== null ? strtolower(trim((string) ($mapped['allegro_status_code'] ?? ''))) : '';
|
||||
?>
|
||||
<tr>
|
||||
<td>
|
||||
<code><?= $e((string) ($mapping['allegro_status_code'] ?? '')) ?></code>
|
||||
<input type="hidden" name="allegro_status_code[]" value="<?= $e((string) ($mapping['allegro_status_code'] ?? '')) ?>">
|
||||
<?= $e($opName) ?> <code class="muted"><?= $e($opCode) ?></code>
|
||||
<input type="hidden" name="orderpro_status_code[]" value="<?= $e($opCode) ?>">
|
||||
</td>
|
||||
<td>
|
||||
<?= $e((string) ($mapping['allegro_status_name'] ?? '')) ?>
|
||||
<input type="hidden" name="allegro_status_name[]" value="<?= $e((string) ($mapping['allegro_status_name'] ?? '')) ?>">
|
||||
</td>
|
||||
<td>
|
||||
<select class="form-control" name="orderpro_status_code[]">
|
||||
<option value=""><?= $e($t('settings.allegro.statuses.fields.orderpro_status_placeholder')) ?></option>
|
||||
<?php foreach ($orderproStatuses as $status): ?>
|
||||
<?php $statusCode = strtolower(trim((string) ($status['code'] ?? ''))); ?>
|
||||
<?php if ($statusCode === '') continue; ?>
|
||||
<option value="<?= $e($statusCode) ?>"<?= $statusCode === strtolower(trim((string) ($mapping['orderpro_status_code'] ?? ''))) ? ' selected' : '' ?>>
|
||||
<?= $e((string) ($status['name'] ?? $statusCode)) ?> (<?= $e($statusCode) ?>)
|
||||
<select class="form-control" name="allegro_status_code[]" data-allegro-name-target="allegro_status_name_<?= $e($opCode) ?>">
|
||||
<option value="" data-name=""><?= $e($t('settings.order_statuses.fields.no_mapping')) ?></option>
|
||||
<?php foreach ($allegroStatuses as $extStatus): ?>
|
||||
<?php
|
||||
$extCode = strtolower(trim((string) ($extStatus['code'] ?? '')));
|
||||
$extName = (string) ($extStatus['name'] ?? $extCode);
|
||||
if ($extCode === '') continue;
|
||||
?>
|
||||
<option value="<?= $e($extCode) ?>" data-name="<?= $e($extName) ?>"<?= $selectedAllegroCode === $extCode ? ' selected' : '' ?>>
|
||||
<?= $e($extName !== '' ? $extName : $extCode) ?> (<?= $e($extCode) ?>)
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<input type="hidden" name="allegro_status_name[]" id="allegro_status_name_<?= $e($opCode) ?>" value="<?= $e($mapped !== null ? (string) ($mapped['allegro_status_name'] ?? '') : '') ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
@@ -226,7 +209,7 @@ $orderproStatuses = is_array($orderproStatuses ?? null) ? $orderproStatuses : []
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if ($statusMappings !== []): ?>
|
||||
<?php if ($orderproStatuses !== []): ?>
|
||||
<div class="form-actions mt-12">
|
||||
<button type="submit" class="btn btn--primary"><?= $e($t('settings.allegro.statuses.actions.save_bulk')) ?></button>
|
||||
</div>
|
||||
@@ -720,4 +703,16 @@ $orderproStatuses = is_array($orderproStatuses ?? null) ? $orderproStatuses : []
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
||||
(function () {
|
||||
document.querySelectorAll('select[data-allegro-name-target]').forEach(function (select) {
|
||||
select.addEventListener('change', function () {
|
||||
var targetId = select.getAttribute('data-allegro-name-target');
|
||||
var hidden = document.getElementById(targetId);
|
||||
if (!hidden) return;
|
||||
var selected = select.options[select.selectedIndex];
|
||||
hidden.value = selected ? (selected.getAttribute('data-name') || '') : '';
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
@@ -2,8 +2,9 @@
|
||||
$list = is_array($rows ?? null) ? $rows : [];
|
||||
$selected = is_array($selectedIntegration ?? null) ? $selectedIntegration : null;
|
||||
$formValues = is_array($form ?? null) ? $form : [];
|
||||
$statusRows = is_array($statusRows ?? null) ? $statusRows : [];
|
||||
$mappingIndex = is_array($mappingIndex ?? null) ? $mappingIndex : [];
|
||||
$orderproStatuses = is_array($orderproStatuses ?? null) ? $orderproStatuses : [];
|
||||
$shopproStatuses = is_array($shopproStatuses ?? null) ? $shopproStatuses : [];
|
||||
$ordersImportIntervalMinutes = max(1, (int) ($ordersImportIntervalMinutes ?? 5));
|
||||
$statusSyncIntervalMinutes = max(1, (int) ($statusSyncIntervalMinutes ?? 15));
|
||||
$paymentSyncIntervalMinutes = max(1, (int) ($paymentSyncIntervalMinutes ?? 10));
|
||||
@@ -210,43 +211,44 @@ foreach ($dmMappings as $dm) {
|
||||
<table class="table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><?= $e($t('settings.order_statuses.fields.shoppro_code')) ?></th>
|
||||
<th><?= $e($t('settings.order_statuses.fields.shoppro_name')) ?></th>
|
||||
<th><?= $e($t('settings.order_statuses.fields.orderpro_status')) ?></th>
|
||||
<th><?= $e($t('settings.order_statuses.fields.shoppro_status')) ?></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<?php if ($statusRows === []): ?>
|
||||
<?php if ($orderproStatuses === []): ?>
|
||||
<tr>
|
||||
<td colspan="3" class="muted"><?= $e($t('settings.integrations.statuses.empty')) ?></td>
|
||||
<td colspan="2" class="muted"><?= $e($t('settings.integrations.statuses.no_orderpro_statuses')) ?></td>
|
||||
</tr>
|
||||
<?php else: ?>
|
||||
<?php foreach ($statusRows as $row): ?>
|
||||
<?php foreach ($orderproStatuses as $opStatus): ?>
|
||||
<?php
|
||||
$shopCode = (string) ($row['shoppro_status_code'] ?? '');
|
||||
$shopName = (string) ($row['shoppro_status_name'] ?? '');
|
||||
$selectedOrderpro = strtolower(trim((string) ($row['orderpro_status_code'] ?? '')));
|
||||
$opCode = strtolower(trim((string) ($opStatus['code'] ?? '')));
|
||||
if ($opCode === '') continue;
|
||||
$opName = (string) ($opStatus['name'] ?? $opCode);
|
||||
$mapped = $mappingIndex[$opCode] ?? null;
|
||||
$selectedShopCode = $mapped !== null ? (string) ($mapped['shoppro_status_code'] ?? '') : '';
|
||||
?>
|
||||
<tr>
|
||||
<td>
|
||||
<code><?= $e($shopCode) ?></code>
|
||||
<input type="hidden" name="shoppro_status_code[]" value="<?= $e($shopCode) ?>">
|
||||
<?= $e($opName) ?> <code class="muted"><?= $e($opCode) ?></code>
|
||||
<input type="hidden" name="orderpro_status_code[]" value="<?= $e($opCode) ?>">
|
||||
</td>
|
||||
<td>
|
||||
<?= $e($shopName) ?>
|
||||
<input type="hidden" name="shoppro_status_name[]" value="<?= $e($shopName) ?>">
|
||||
</td>
|
||||
<td>
|
||||
<select class="form-control" name="orderpro_status_code[]">
|
||||
<option value=""><?= $e($t('settings.order_statuses.fields.no_mapping')) ?></option>
|
||||
<?php foreach ($orderproStatuses as $status): ?>
|
||||
<?php $statusCode = strtolower(trim((string) ($status['code'] ?? ''))); ?>
|
||||
<?php if ($statusCode === '') continue; ?>
|
||||
<option value="<?= $e($statusCode) ?>"<?= $selectedOrderpro === $statusCode ? ' selected' : '' ?>>
|
||||
<?= $e((string) ($status['name'] ?? $statusCode)) ?> (<?= $e($statusCode) ?>)
|
||||
<select class="form-control" name="shoppro_status_code[]" data-shoppro-name-target="shoppro_status_name_<?= $e($opCode) ?>">
|
||||
<option value="" data-name=""><?= $e($t('settings.order_statuses.fields.no_mapping')) ?></option>
|
||||
<?php foreach ($shopproStatuses as $extStatus): ?>
|
||||
<?php
|
||||
$extCode = (string) ($extStatus['code'] ?? '');
|
||||
$extName = (string) ($extStatus['name'] ?? $extCode);
|
||||
if ($extCode === '') continue;
|
||||
?>
|
||||
<option value="<?= $e($extCode) ?>" data-name="<?= $e($extName) ?>"<?= $selectedShopCode === $extCode ? ' selected' : '' ?>>
|
||||
<?= $e($extName) ?> (<?= $e($extCode) ?>)
|
||||
</option>
|
||||
<?php endforeach; ?>
|
||||
</select>
|
||||
<input type="hidden" name="shoppro_status_name[]" id="shoppro_status_name_<?= $e($opCode) ?>" value="<?= $e($mapped !== null ? (string) ($mapped['shoppro_status_name'] ?? '') : '') ?>">
|
||||
</td>
|
||||
</tr>
|
||||
<?php endforeach; ?>
|
||||
@@ -254,7 +256,7 @@ foreach ($dmMappings as $dm) {
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<?php if ($statusRows !== []): ?>
|
||||
<?php if ($orderproStatuses !== []): ?>
|
||||
<div class="form-actions mt-12">
|
||||
<button type="submit" class="btn btn--primary"><?= $e($t('settings.order_statuses.actions.save')) ?></button>
|
||||
</div>
|
||||
@@ -740,4 +742,16 @@ foreach ($dmMappings as $dm) {
|
||||
}
|
||||
});
|
||||
})();
|
||||
|
||||
(function () {
|
||||
document.querySelectorAll('select[data-shoppro-name-target]').forEach(function (select) {
|
||||
select.addEventListener('change', function () {
|
||||
var targetId = select.getAttribute('data-shoppro-name-target');
|
||||
var hidden = document.getElementById(targetId);
|
||||
if (!hidden) return;
|
||||
var selected = select.options[select.selectedIndex];
|
||||
hidden.value = selected ? (selected.getAttribute('data-name') || '') : '';
|
||||
});
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
Reference in New Issue
Block a user