Hi
Is there a way to create a scheduled task that sets productname of all variants equal to productname of the master product?
if so, how could this be done?
/Hans
Hi
Is there a way to create a scheduled task that sets productname of all variants equal to productname of the master product?
if so, how could this be done?
/Hans
You probably should change the inheritance of the product name field so variants cannot have different names.
Otherwise you can create a SQL scheduled task instance and update the records like this (untested with real data):
update EcomProducts set productname = (select top 1 ProductName from EcomProducts as secondproducts where secondproducts.ProductID = ecomproducts.ProductID and secondproducts.ProductLanguageID = ecomproducts.ProductLanguageID and secondproducts.ProductVariantID ='') where ProductVariantid <> ''
Thank you Nicolai. We have an import batch of 5 stepst in the Data Integration. Is it possible to run this scheduled task as a part of that batch or right after somehow?
/Hans
You can create a Notification Subscriber for JobFinished, check for the correct job name and then execute your SQL code. Here's an example that does that You need to add the code to a class file in a Class Library project, compile it to a DLL and add that DLL to your site's Bin folder:
using System; using Dynamicweb.DataIntegration.Integration.Notifications; using Dynamicweb.Extensibility.Notifications; namespace Your.Namespace.Here { [Subscribe(Integration.JobFinished)] public class SyncVariantNames : NotificationSubscriber { private Dynamicweb.Logging.ILogger _logger; public override void OnNotify(string notification, NotificationArgs args) { var integrationArgs = (Integration.JobFinishedIntegrationArgs)args; _logger = integrationArgs.Job.Logger; try { if (integrationArgs.JobFailed || !integrationArgs.Job.Name.Contains("Your Job Name")) { _logger.Log($"Job failed: {integrationArgs.JobFailed} Name: {integrationArgs.Job.Name}"); return; } var sql = "..."; var recordsAffected = Dynamicweb.Data.Database.ExecuteNonQuery(sql); _logger.Log($"Done syncing variant names. Records affected: {recordsAffected}"); } catch (Exception ex) { _logger.Error("Error syncing names.", ex); } } } }
Hope this helps,
Imar
Thank you Imar and Nicolai 👍
/Hans
You must be logged in to post in the forum