protected override void ExecuteWorkflowLogic()
        {
            var detailRecord = new Entity(ProductEntityName)
            {
                [ParentEntityLookupFieldName] = ParentEntity,
                ["quantity"]             = Quantity.Get(Context.ExecutionContext),
                ["description"]          = Description.Get(Context.ExecutionContext),
                ["manualdiscountamount"] = ManualDiscountAmount.Get(Context.ExecutionContext),
                ["tax"] = Tax.Get(Context.ExecutionContext)
            };

            var writeInProduct = ProductName.Get(Context.ExecutionContext);

            if (!string.IsNullOrEmpty(writeInProduct))
            {
                detailRecord["productdescription"]  = writeInProduct;
                detailRecord["isproductoverridden"] = true;
                detailRecord["ispriceoverridden"]   = true;
                detailRecord["priceperunit"]        = PricePerUnit.Get(Context.ExecutionContext);
            }
            else
            {
                detailRecord["productid"]           = ProductId.Get(Context.ExecutionContext);
                detailRecord["isproductoverridden"] = false;
                detailRecord["uomid"] = UomId.Get(Context.ExecutionContext);

                var ispriceoverridden = IsPriceOverridden.Get(Context.ExecutionContext);
                detailRecord["ispriceoverridden"] = ispriceoverridden;

                if (ispriceoverridden)
                {
                    detailRecord["priceperunit"] = PricePerUnit.Get(Context.ExecutionContext);
                }
            }

            ProcessAdditionalFields(ref detailRecord);

            Context.UserService.Create(detailRecord);
        }