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é:
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.
3 Réponses :
Vous pouvez vérifier le typeCode de ProductSales, car il a peut-être déjà été utilisé.
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é?
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
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?
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.