Gael's profileGael Duhamel - SharePoin...PhotosBlogListsMore Tools Help

Blog


    November 28

    [Commerce Server 2007] Problème de mise à niveau

    Sur un serveur j'ai mis en place un site en partant d'un pup du starter site. Ce site a été installé de base avec le SP1 de Commerce Server 2007. Malgrès cela, j'ai encore cette erreur de remontée :

    Error in Commerce Administration Object : Description - 'The following resources are old. They will not function correctly until they are upgraded:
    Product Catalog (7.2.0)
    Marketing (7.1.0)

    Please run the migration tool in order to upgrade them to the latest versions

    Ceci est du au fait que les ressources décompréssées dans le fichier pup du starter sont toujours en version "sp0". Pour corriger cela, il vous suffit de lancer cette commande : CSConfig.exe /r Feature.MS.CS.ADMIN pour remettre au propre votre base de configuration.

    November 05

    [CS2007] Les prix se mettent à null suite à l'association d'une catégory primaire parente

    Nous avons eu sur un projet, un problème de mise à jour de catégorie parente. En effet, à chaque association d'un produit avec une catégorie primaire parente nos prix (variants compris) était mis à jour avec la valeur null.
     
    Il est important de préciser que nos imports de produits ne se font pas via Biztalk, mais via un webservice et un flux XML (je pense que cela n'a pas forcément d'incidence, mais n'ayant jamais fait d'import via Biztalk...Ange).
     
    Notre première piste a été de vérifier que nous n'utilisions pas une gestion de prix sur la catégorie (via le Product.PricingCategory). Ce qui aurait pu expliquer cette modification de prix... Nous avons donc forcé notre import avec la valeur UseCategoryPricing="0". Et toujours le même résultat... Nous sommes donc partis sur l'execution d'une trace SQL en espérant trouver la procédure stockée responsable de notre malheur Premier de la classe. Et la bingo, l'association d'un produit à une catégorie primaire déclenche l'exécution de la procédure stockée SQL : <SiteName>_productcatalog.dbo.ctlg_SetPrimaryParentCategory qui fait bien plus qu'associer un produit...
     
    Cette procédure est chargée de mettre à jour votre produit pour y associer la catégorie tout en y ajoutant les règles de calcul du prix s'il y a lieu. Ce qui fait que le prix de votre produit est donc systématiquement recalculé.
     
    Focus sur la ligne 149 :

    -- For Product update the list price for the Product and its variants using @ProductID
    SET @Query_tmp = N'Update '+@CatalogProductsTable_tmp+N' SET UseCategoryPricing = @UseCategoryPricing_tmp, PrimaryParentCategory = @PrimaryParentCategory, cy_list_price = ISNULL(@NewPrice_tmp, originalprice) WHERE CatalogName = @BCName AND ProductID = @ProductID'
    Ce qui implique donc que le champ originalprice doit être systématiquement renseigné pour chaque produit et variant lors de votre import de catalogue et que seul le cy_list_price ne suffit pas... Ce que nous avions omis de faire... Mea culpa Ange