Как я могу скрыть статус билета в hybris? - PullRequest
0 голосов
/ 02 января 2019

Как скрыть статус билета в hybris? OTTB в hybris есть 3 состояния (открыть, в процессе, закрыть ). Я добавляю свой пользовательский статус Отклонено . Логика, которую делает hybris, заключается в том, что при создании одного билета из витрины, а затем при входе в бэк-офис под именем «CustomerSupportAgent» на вкладке тикета при нажатии на созданный тикет я вижу 3 статуса ( В процессе, закрытие и мой пользовательский статус Отклонено ), и когда я меняю статус с В процессе на Закрыть , тогда я вижу 2 состояния Закрыть и Повторно открыть . Я хочу, чтобы мой статус был В процессе и нажмите Отклонено , чтобы увидеть Отклонено и В процессе или Повторно открыть , но Закрыть статус будет невидимым.

Hybris делает весеннее отображение, чтобы сделать это видимым.

<alias name="csTicketStateTransitionMap" alias="ticketStateTransitionMap"/>
    <util:map id="csTicketStateTransitionMap">
        <entry>
            <key>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.NEW"/>
            </key>
            <util:list>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.OPEN"/>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.CLOSED"/>
            </util:list>
        </entry>
        <entry>
            <key>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.OPEN"/>
            </key>
            <util:list>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.CLOSED"/>
            </util:list>
        </entry>
        <entry>
            <key>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.CLOSED"/>
            </key>
            <util:list>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.OPEN"/>
            </util:list>
        </entry>
    </util:map>

Когда я добавляю свою логику для Отклонено

<alias name="csTicketStateTransitionMap" alias="ticketStateTransitionMap"/>
    <util:map id="csTicketStateTransitionMap">
        <entry>
            <key>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.NEW"/>
            </key>
            <util:list>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.OPEN"/>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.CLOSED"/>
            </util:list>
        </entry>
        <entry>
            <key>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.OPEN"/>
            </key>
            <util:list>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.CLOSED"/>
            </util:list>
        </entry>

//here I add like hybris logic when click Rejected to see Reopen or In process but not Close
<entry>
            <key>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.REJECTED"/>
            </key>
            <util:list>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.OPEN"/>
            </util:list>
        </entry>
        <entry>
            <key>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.CLOSED"/>
            </key>
            <util:list>
                <util:constant static-field="de.hybris.platform.ticket.enums.CsTicketState.OPEN"/>
            </util:list>
        </entry>
    </util:map>

Но это не работает. Зачем?

Что я на самом деле делаю:

Я использую рецепт B2B и у меня есть пользовательский аддон customerticketingaddon, для которого требуется расширение name = "customerticketingfacades"

в моем customerticketingaddon-items.xml Я добавляю свой пользовательский статус в CsTicketState

<enumtype code="CsTicketState" autocreate="false" generate="false" dynamic="true">
            <value code="Rejected"/>
</enumtype>

Затем в моем cusomerticketingaddon-spring.xml я делаю сопоставление, которое я показал выше.

1 Ответ

0 голосов
/ 03 января 2019

Прежде всего, убедитесь, что вы используете контекст пружины backoffice для определения вашего bean-компонента.

Гибридный способ расширения bean-компонентов карты заключается в использовании функциональности backoffice Map Extender - https://help.hybris.com/1811/hcd/94ac56a0aa9f486490bbe1251d994457.html#loio83afe1e428384fa881d687b0baa6ea48

cng: map-extender предоставляет возможность помещать и удалять записи карты.

Взгляните на пример из ruleenginebackoffice-backoffice-spring

Исходное определение компонента

    <alias name="defaultBackofficeCronJobHistoryIncludes" alias="backofficeCronJobHistoryIncludes"/>
<util:map id="defaultBackofficeCronJobHistoryIncludes" key-type="java.lang.String"
          value-type="de.hybris.platform.servicelayer.cronjob.CronJobHistoryInclude">
    <entry key="syncProcesses">
        <bean class="de.hybris.platform.servicelayer.cronjob.CronJobHistoryInclude">
            <property name="jobTypeCode" value="#{T(de.hybris.platform.catalog.model.SyncItemJobModel)._TYPECODE}"/>
        </bean>
    </entry>
    <entry key="excelImportProcesses">
        <bean class="de.hybris.platform.servicelayer.cronjob.CronJobHistoryInclude">
            <property name="jobTypeCode" value="#{T(com.hybris.backoffice.model.ExcelImportJobModel)._TYPECODE}"/>
        </bean>
    </entry>
    <entry key="auditReportGeneratorProcess">
        <bean class="de.hybris.platform.servicelayer.cronjob.CronJobHistoryInclude">
            <property name="cronJobTypeCode" value="#{T(de.hybris.platform.auditreport.model.CreateAuditReportCronJobModel)._TYPECODE}"/>
        </bean>
    </entry>

</util:map>

Extendedиспользуя

    <cng:map-extender bean="backofficeCronJobHistoryIncludes" xmlns:cng="http://www.hybris.com/cockpitng/spring">
    <cng:put key-type="java.lang.String" value-type="de.hybris.platform.servicelayer.cronjob.CronJobHistoryInclude">
        <entry key="ruleEngineProcesses">
            <bean class="de.hybris.platform.servicelayer.cronjob.CronJobHistoryInclude">
                <property name="jobTypeCode" value="RuleEngineJob"/>
            </bean>
        </entry>
    </cng:put>
</cng:map-extender>
...