Files
2025-03-12 17:06:23 +01:00

232 lines
12 KiB
PHP

<?php
/**
* @var stTaskSchedulerImportConfigurationInterface $import_config
*/
use_helper('stAdminGenerator', 'stTaskSchedulerImport', 'stAvailability', 'stCategory', 'stTaskScheluder');
st_include_partial('stTaskSchedulerImportBackend/header', [
'title' => __('Import - %name%', [
'%name%' => $import_config->getLabel(),
])
]);
$children = $import_config->getChildren();
st_include_partial('stTaskSchedulerImportBackend/list_menu');
st_include_partial('stAdminGenerator/message', [
'labels' => isset($labels) ? $labels : [],
]);
echo st_admin_form_tag_start('@stTaskSchedulerImportBackend?action=importConfiguration&id=' . $id);
echo st_admin_section_start();
echo st_admin_get_form_field('import[enabled]', __('Włącz'), true, 'checkbox_tag', array('checked' => $import && isset($import) && isset($import['enabled']) && $import['enabled']));
if (SF_ENVIRONMENT == 'dev')
{
echo st_admin_get_form_field('import[check_import_relation]', __('Zawsze sprawdzaj powiązanie produktu'), true, 'checkbox_tag', array(
'checked' => $import && isset($import) && isset($import['check_import_relation']) && $import['check_import_relation'],
'help' => __('Jeżeli ustawione import zawsze sprawdza czy dany produkt został powiązany z danym importem. Opcje należy zaznaczyć przy pierwszym imporcie w przypadku, gdy klient miał już dodane wcześniej produkty, które wchodzą w skład importu, aby import mógł utworzyć poprawnie powiązania z tymi produktami.')
));
}
echo st_admin_get_form_field('import[time_interval]', __('Wykonuj'), $import && isset($import['time_interval']) ? $import['time_interval'] : $import_config->getOption('time_interval'), 'st_task_scheluder_time_interval_select_tag', array(
'default_time_interval' => $import_config->getOption('time_interval'),
));
echo st_admin_get_form_field('import[url]', __('Adres pliku'), $import && isset($import) ? $import['url'] : $import_config->getDefault('url'), 'input_tag', array('size' => 60, 'maxlength' => 255, 'required' => true));
if ($import_config->with('auth'))
{
echo st_admin_get_form_field('import[auth][user]', __('Użytkownik'), $import && isset($import['auth']) ? $import['auth']['user'] : '', 'input_tag', array('size' => 30, 'maxlength' => 255));
echo st_admin_get_form_field('import[auth][password]', __('Hasło'), $import && isset($import['auth']) ? $import['auth']['password'] : '', 'input_password_tag', array('size' => 30, 'maxlength' => 255));
}
echo st_admin_section_end();
foreach ($children as $child)
{
if ($child->with('url'))
{
echo st_admin_section_start($child->getLabel());
echo st_admin_get_form_field('child_import['.$child->getId().'][url]', __('Adres pliku'), $child_import && isset($child_import[$child->getId()]['url']) ? $child_import[$child->getId()]['url'] : $child->getDefault('url'), 'input_tag', array('size' => 60, 'maxlength' => 255, 'required' => true));
echo st_admin_section_end();
}
}
echo st_admin_section_start(__('Konfiguracja'));
if ($import_config->with('product_price'))
{
echo st_admin_get_form_field('import[ignore_with_empty_price]', __('Nie dodawaj produktów bez ceny'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['ignore_with_empty_price'])
));
}
if ($import_config->with('product_stock'))
{
echo st_admin_get_form_field('import[ignore_with_no_stock]', __('Nie dodawaj produktów z zerowym stanem magazynowym'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['ignore_with_no_stock'])
));
}
if ($import_config->with('product_images'))
{
echo st_admin_get_form_field('import[ignore_with_no_image]', __('Nie dodawaj produktów bez zdjęć'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['ignore_with_no_image'])
));
echo st_admin_get_form_field('import[disable_image_update]', __('Wyłącz aktualizacje zdjęć produktów'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['disable_image_update']),
'help' => __('Jeśli zaznaczona, wyłącza aktualizacje zdjęć produktów przy ponownym imporcie danych'),
));
}
if ($import_config->with('product_attributes'))
{
echo st_admin_get_form_field('import[disable_attributes_update]', __('Wyłącz aktualizacje atrybutów produktów'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['disable_attributes_update']),
'help' => __('Jeśli zaznaczona, wyłącza aktualizacje atrybutów produktów przy ponownym imporcie danych'),
));
}
if ($import_config->with('product_options'))
{
echo st_admin_get_form_field('import[disable_options_update]', __('Wyłącz aktualizacje opcji produktów'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['disable_options_update']),
'help' => __('Jeśli zaznaczona, wyłącza aktualizacje opcji produktów przy ponownym imporcie danych'),
));
}
if ($import_config->with('product_categories'))
{
echo st_admin_get_form_field('import[disable_categories_update]', __('Wyłącz aktualizacje kategorii produktów'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['disable_categories_update']),
'help' => __('Jeśli zaznaczona, wyłącza aktualizacje kategorii produktów przy ponownym imporcie danych'),
));
}
if ($import_config->with('product_description'))
{
echo st_admin_get_form_field('import[disable_description_update]', __('Wyłącz aktualizacje opisu produktów'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['disable_description_update']),
'help' => __('Jeśli zaznaczona, wyłącza aktualizacje opisu produktów przy ponownym imporcie danych'),
));
}
if ($import_config->with('product_categories'))
{
echo st_admin_get_form_field('import[delete_product_with_excluded_category]', __('Usuwaj produkty z wykluczonymi kategoriami'), true, 'checkbox_tag', array(
'checked' => $import && isset($import['delete_product_with_excluded_category']),
'help' => __('Zaznaczenie tej opcji spowoduje, że już dodane wcześniej produkty zostaną fizycznie usunięte z oferty sklepu jeżeli ich kategoria jest oznaczona jako wykluczona. Domyślnie wcześniej zaimportowane produkty pomimo wykluczenia ich kategorii nie są usuwane z oferty sklepu.'),
));
}
if ($import_config->with('product_status'))
{
echo st_admin_get_form_field('import[default_product_status]', __('Domyślny status produktu'), $import && isset($import['default_product_status']) ? $import['default_product_status'] : 1, 'select_tag', [
'choices' => [
0 => __('Nieaktywny'),
1 => __('Aktywny'),
],
'help' => __('Określa domyślny status nowo zaimportowanych produktów. W przypadku, gdy opcja jest ustawiona na <b>Niekatywny</b> opcja <b>Produkty wycofane z oferty</b> nie będzie ustawiała automatycznie produktu jako aktywnego w przypadku, gdy jest dostępny w ofercie.')
]);
}
if ($import_config->with('product_price'))
{
echo st_admin_get_form_field('import[price_margin]', __('Narzut'), $import && isset($import['price_margin']) ? $import['price_margin'] : array(), 'st_task_scheduler_import_price_margin', array('size' => 8, 'maxlength' => 10, 'data-format' => 'decimal'));
}
if ($import_config->with('product_price_array'))
{
echo st_include_partial('stTaskSchedulerImportBackend/product_price_array', array('import' => $import));
/*echo "<pre>";
print_r($import['price_array']);
echo "</pre>";*/
}
if ($import_config->with('product_stock'))
{
echo st_admin_get_form_field('import[default_availability]', __('Domyślna dostępność'), $import && isset($import['default_availability']) ? $import['default_availability'] : '', 'st_availability_select_tag', [
'help' => 'Określa domyślną dostępność jaka ma zostać ustawiona dla nowo zaimportowanych prodktów.'
]);
}
echo st_admin_get_form_field('import[withdraw_action]', __('Produkty wycofane z oferty'), $import && isset($import['withdraw_action']) ? $import['withdraw_action'] : 'deactivate', 'select_tag', [
'choices' => [
'deactivate' => __('Dezaktywuj'),
'set_availability' => __('Ustaw dostępność')
],
'help' => __('Określa jaka ma być podjęta akcja dla produktów wycofanych z oferty hurtownii. Do automatyczynego wznawiania produktów dla wartości dezaktywowanych opcja <b>Domyślny status produktu</b> musi być ustawiona na <b>Aktywny</b>')
]);
echo st_admin_get_form_field('import[withdraw_availability]', __('Dostępność dla produktów wycofanych'), $import && isset($import['withdraw_availability']) ? $import['withdraw_availability'] : '', 'st_availability_select_tag', [
'help' => __('Określa dostępność jaka ma zostać ustawiona dla produktów wycofanych z oferty. Opcja jest brana tylko pod uwagę jeżeli opcja <b>Produkty wycofane z oferty</b> ustawiona jest na <b>Ustaw dostępność</b>.'),
'exclude_default_stock' => true,
]);
if ($import_config->with('product_attributes'))
{
echo st_admin_get_form_field('import[attributes]', __('Atrybuty'), $import && isset($import['attributes']) ? $import['attributes'] : $import_config->getDefault('attributes'), 'select_tag', array(
'choices' => array(
'default' => __('Importuj jako atrybuty SOTESHOP'),
'append_description' => __('Doklejaj do opisu produktu'),
)
));
}
echo st_admin_get_form_field('import[code_prefix]', __('Prefiks kodu produktu'), $import && isset($import['code_prefix']) ? $import['code_prefix'] : $import_config->getDefault('code_prefix'), null, [
'disabled' => $code_prefix_disabled,
]);
if ($code_prefix_disabled)
{
echo input_hidden_tag('import[code_prefix]', $import && isset($import['code_prefix']) ? $import['code_prefix'] : $import_config->getDefault('code_prefix'));
}
if ($import_config->with('product_categories'))
{
echo st_admin_get_form_field('import[category]', __('Kategoria docelowa'), $import && isset($import['category']) ? $import['category'] : array(), 'st_category_picker_input_tag', array(
'allow_assign_root' => true,
'simple_array' => true,
'limit' => 1,
'help' => __('target.category.help'),
));
}
echo st_admin_section_end();
echo content_tag('div', st_get_admin_actions([
[
'label' => __('Wykonaj'),
'type' => 'default',
'params' => [
'name' => 'execute',
]
],
['label' => __('Zapisz'), 'type' => 'save']
]));
echo st_admin_form_tag_end();
st_include_partial('stTaskSchedulerImportBackend/footer');
?>
<script>
jQuery(function($) {
$('#import_withdraw_action').change(function() {
const withdrawAvailability = $('.row.import_withdraw_availability');
if ($(this).val() != 'set_availability') {
withdrawAvailability.hide();
} else {
withdrawAvailability.show();
}
}).change();
});
</script>