0
votes

SAP Hybris Commerce - Initialiser la valeur par défaut pour un attribut de référence

Je travaille sur SAP Commerce (Hybris) 1811 et j'essaye d'étendre un type Product avec une référence à un type ProductSales , qui va contiennent des données de vente de produits et doivent être remplies via un cronjob.

Cependant, je ne trouve pas de moyen approprié d'initialiser ce nouveau type pour tous les produits nouveaux et existants. Même après une mise à jour du système, cette référence n'est pas initialisée (nulle).

Il devrait y avoir une relation 1-à-1 entre Product et ProductSales .

J'aimerais que ce type référencé soit initialisé:

  1. Pendant la mise à jour du système pour tous les produits existants qui n'ont pas encore la référence
  2. Créer une instance pour tous les produits nouvellement créés

Ma définition de items.xml :

<itemtype code="ProductSales" autocreate="true" generate="true" >
    <deployment table="productsales" typecode="15011" />
    <attributes>
        <attribute qualifier="unitsSold" type="localized:java.lang.Long">
            <description>Amount of units sold</description>
            <persistence type="property"/>
        </attribute>
        <attribute qualifier="ordersCount" type="localized:java.lang.Long">
            <description>Count of how many orders contained this product</description>
            <persistence type="property"/>
        </attribute>
    </attributes>
</itemtype>

<itemtype code="Product" autocreate="false" generate="false">
   ...
    <attribute qualifier="productSales" type="ProductSales">
        <description>Product Sales</description>
        <modifiers partof="true" optional="false" initial="true" />
        <persistence type="property"/>
    </attribute>
   ...
</itemtype>

La raison pour laquelle je ne stocke pas les données directement dans le Le tableau des produits , mais à titre de référence, est que je ne souhaite pas que ces données soient synchronisées lors de la synchronisation du catalogue.

Quelle serait la meilleure façon d'initialiser ce nouveau type pour tous les produits?

Merci pour tous les conseils.


0 commentaires

3 Réponses :


0
votes

Vous pouvez vérifier le typeCode de ProductSales, car il a peut-être déjà été utilisé.


2 commentaires

J'ai vérifié et le typecode est unique. Le type est créé et déployé avec succès et je peux le créer manuellement, ce n'est donc pas vraiment le problème en question. La question est de savoir comment initialiser ce type pour tous les produits.


@fugasjunior - La question est de savoir comment initialiser ce type pour tous les produits. - Qu'entendez-vous par initialize ? Voulez-vous dire que ce champ doit être initialisé avec une valeur statique (c'est-à-dire la même valeur pour tous les produits) dans la base de données? Si oui, avec quelle valeur voulez-vous que ce champ soit initialisé?



0
votes

J'ai relu votre question et créé une nouvelle réponse.

Je pense que c'est plus facile si vous ajoutez simplement les attributs à Produit. Après cela, importez l'impex ci-dessous pour désactiver la synchronisation pour les attributs que vous ne souhaitez pas synchroniser. Vous devrez remplacer "MySyncJob" par le code utilisé pour la tâche de synchronisation.

INSERT_UPDATE SyncAttributeDescriptorConfig;syncJob(code)[unique=true][path-delimiter=!];attributeDescriptor(enclosingType(code), qualifier)[unique=true];includedInSync;copyByValue
;MySyncJob;Product:unitsSold;false;false
;MySyncJob;Product:ordersCount;false;false


1 commentaires

Merci pour votre réponse. Cependant, cela ne donnerait-il pas un aspect désynchronisé aux produits dans Backoffice après chaque passage du cronjob qui remplit ces valeurs?



0
votes

En fin de compte, j'ai résolu ce problème en créant les références manquantes dans le cronjob lui-même. Je crée uniquement cet objet wrapper dans le catalogue par étapes pour être synchronisé plus tard.

Au fait, j'ai trouvé qu'en plus de modifier le travail de synchronisation, créer un objet wrapper et garder sa référence synchronisée entre les catalogues est la solution recommandée par SAP.


0 commentaires