{% set presta_external_id = prestashop ? prestashop.externalId : null %} {% set presta_is_linked = presta_external_id is not empty %} {% set dictionary_readiness = dictionary_readiness ?? { ready: false, missing: ['brak danych readiness'], warnings: [], counts: {} } %} {% set dictionary_counts = dictionary_readiness.counts|default({}) %} {% set production_variant_definitions = production_variant_definitions|default([]) %} {% set variant_identity_summary = variant_identity_summary|default({ draft_count: draft.variants|length, production_variant_count: 0, external_identity_count: 0, missing_count: draft.variants|length, missing: [] }) %} {% set unresolved_production_variants = [] %} {% for variant in draft.variants %} {% if variant.active and not variant.projectProductionVariant %} {% set unresolved_production_variants = unresolved_production_variants|merge([variant.attributesLabel ?: variant.clientVariantKey]) %} {% endif %} {% endfor %}

PrestaShop Draft

Lokalny draft produktu

Dane zapisane tutaj są lokalnym draftem w Symfony i źródłem prawdy przed ręcznym wypchnięciem produktu do PrestaShop.

{{ presta_is_linked ? 'Połączony z Presta ID ' ~ presta_external_id : 'Brak powiązania z PrestaShop' }} {{ dictionary_readiness.ready ? 'Słowniki gotowe' : 'Słowniki wymagają synchronizacji' }} {{ draft.statusLabel }}
Status Presta{{ prestashop ? prestashop.statusLabel : 'Brak rekordu' }}
Intent Presta{{ prestashop ? prestashop.intentLabel : '—' }}
Draft istnieje{{ draft_exists ? 'Tak' : 'Nie, wartości domyślne' }}
Status draftu{{ draft.statusLabel }}
Ostatnia edycja{{ draft.updatedAt ? draft.updatedAt|date('d-m-Y H:i') : '—' }}
Sync słowników{{ integration and integration.lastSyncAt ? integration.lastSyncAt|date('d-m-Y H:i') : '—' }}

Powiązanie PrestaShop

Kontrola relacji lokalnego projektu z produktem w sklepie.

{% if presta_is_linked %}
Projekt jest już powiązany z produktem PrestaShop ID {{ presta_external_id }}. Publikacja jako nowy produkt jest zablokowana, aby nie utworzyć duplikatu. {% if prestashop.externalUrl %}
Otwórz produkt w PrestaShop {% endif %}
{% else %}
link_off
Projekt nie jest jeszcze powiązany z produktem PrestaShop.

Po publikacji aplikacja zapisze zewnętrzne ID produktu i zablokuje ponowną publikację jako nowy produkt.

{% endif %}
{% if default_setting %}

Domyślne mapowanie dla typu produktu

Ustawienia startowe pobierane z mapowania produktu.

Tryb wariantów{{ default_setting.variantGenerationModeLabel }} Cena{{ default_setting.basePrice ?: '—' }} Ilość{{ default_setting.baseQuantity is not null ? default_setting.baseQuantity : '—' }} Profil{{ default_setting.variantProfile ? default_setting.variantProfile.name : '—' }} Mapa JSON{{ default_setting.jsonVariantMapping ? default_setting.jsonVariantMapping.name : '—' }}
{% endif %} {% if dictionary_readiness.ready %}
Słowniki PrestaShop wymagane przed publikacją są gotowe.
{% else %}
Słowniki PrestaShop nie są jeszcze gotowe do publikacji. {% if dictionary_readiness.missing is not empty %} Brakuje: {{ dictionary_readiness.missing|join(', ') }}. {% endif %} Kliknij „Pobierz słowniki” przed uzupełnianiem i publikacją draftu.
{% endif %} {% if dictionary_readiness.warnings is defined and dictionary_readiness.warnings is not empty %}
Ostrzeżenia słowników:
    {% for warning in dictionary_readiness.warnings %}
  • {{ warning }}
  • {% endfor %}
{% endif %} {% if draft.lastValidationErrorsJson is not empty %}
Ostatnia walidacja:
    {% for error in draft.lastValidationErrorsJson %}
  • {{ error }}
  • {% endfor %}
{% endif %} {% if unresolved_production_variants is not empty %}
Ostrzeżenie mapowania produkcyjnego: {{ unresolved_production_variants|length }} aktywnych wariantów nie ma przypisanego wariantu produkcyjnego. Publikacja do PrestaShop pozostaje dostępna, ale mapowanie będzie wymagane przed realizacją zamówienia.
{% endif %}

Tożsamość wariantów platformowych

Powiązanie lokalnego wariantu draftu z wariantem produkcyjnym i zewnętrznym id_product_attribute.

Warianty draftu{{ variant_identity_summary.draft_count }} Warianty produkcyjne{{ variant_identity_summary.production_variant_count }} Zewnętrzne ID kombinacji{{ variant_identity_summary.external_identity_count }} Brakujące tożsamości{{ variant_identity_summary.missing_count }}
{% if variant_identity_summary.draft_count == 0 %}
inventory_2
Brak wariantów draftu.

Tożsamości platformowe pojawią się po wygenerowaniu wariantów i publikacji produktu.

{% elseif variant_identity_summary.missing is not empty %}
Lista brakujących tożsamości ({{ variant_identity_summary.missing_count }})
{% for missing_identity in variant_identity_summary.missing %} {% endfor %}
Wariant draftu Wariant produkcyjny Status Przyczyna
{{ missing_identity.label ?: missing_identity.reference ?: missing_identity.client_variant_key }} {{ missing_identity.client_variant_key }} {{ missing_identity.production_variant_code ?: '—' }} {{ missing_identity.mapping_status }} {{ missing_identity.reason }}
{% else %}
Każdy wariant draftu ma zapisaną zewnętrzną tożsamość kombinacji.
{% endif %}
1

Dane podstawowe

Nazwa, SKU, cena i bazowa dostępność produktu.

2

Opisy sprzedażowe

Treści HTML, które trafią do karty produktu.

3

SEO

Meta dane wysyłane razem z produktem.

4

Kategorie

Kategoria główna i dodatkowe powiązania produktowe.

Jeśli kategoria główna nie jest zaznaczona jako dodatkowa, system dopisze ją automatycznie przy zapisie.

5

Tagowanie sprzedażowe

Perfect For i custom tagi z modułu connectora.

6

Cechy

Dodatkowe właściwości produktu widoczne w PrestaShop.

{% for feature in draft.features %} {% else %} {% endfor %}
CechaWartośćAkcje
{{ feature.featureNameSnapshot ?: ('#' ~ feature.featurePrestaId) }} {{ feature.featureValueSnapshot ?: ('#' ~ feature.featureValuePrestaId) }}
Nie dodano jeszcze cech do draftu.
7

Atrybuty i warianty

Konfiguracja kombinacji produktu, impactów cenowych i stanów.

{% for groupId, bucket in attributes_by_group %}
{{ bucket.group ? bucket.group.nameForLang : ('Grupa #' ~ groupId) }} {% for value in bucket.values %} {% else %} Brak wartości. {% endfor %}
{% else %}

Brak atrybutów. Najpierw pobierz słowniki z Presty.

{% endfor %}
{% if default_setting and default_setting.variantGenerationMode == 'variant_profile' and default_setting.variantProfile %}
Źródło: {{ default_setting.variantProfile.name }}
{% endif %}
Import wariantów z JSON

JSON importuje warianty do lokalnego draftu. Każda para key=value musi istnieć w mapie JSON wariantów.

{% if draft.variants|length > 0 %}
Mapowanie produkcyjne

Automatyczne mapowanie uzupełnia wyłącznie brakujące powiązania i nie nadpisuje statusu ręcznego.

{% endif %}
{% for variant in draft.variants %} {% set project_production_variant = variant.projectProductionVariant %} {% set production_definition = project_production_variant ? project_production_variant.definition : null %} {% else %} {% endfor %}
WariantWariant produkcyjnyReferencePrice impactCena końcowaIlośćAktywny
{{ variant.attributesLabel }} {% if production_definition %} {{ production_definition.code }} {{ production_definition.label }} {% else %} Brak przypisanej definicji {% endif %} {{ variant.mappingStatusLabel }}
Brak wariantów. Wybierz atrybuty i kliknij „Wygeneruj warianty”.
{% if draft.variants|length > 0 %}
{% endif %}
8

Podgląd danych technicznych

Skrót payloadu roboczego dla debugowania draftu.

{{ {
                            status: draft.status,
                            reference: draft.reference,
                            main_category_presta_id: draft.mainCategoryPrestaId,
                            category_ids: draft.categoryIdsJson,
                            perfect_for_ids: draft.perfectForIdsJson,
                            custom_tag_ids: draft.customTagIdsJson,
                            variants_count: draft.variants|length
                        }|json_encode(constant('JSON_PRETTY_PRINT')) }}