--upgrade scripts from nopCommerce 3.90 to 4.00 --new locale resources declare @resources xml --a resource will be deleted if its value is empty set @resources=' Headers A list of headers. Here you can find third-party extensions and themes which are developed by our community and partners.They are also available in our marketplace

]]>
The secure URL of your store e.g. https://www.yourstore.com/ or http://sharedssl.yourstore.com/. Leave it empty if you want nopCommerce to detect secure URL automatically. CAPTCHA is a program that can tell whether its user is a human or a computer. You''ve probably seen them — colorful images with distorted text at the bottom ofWeb registration forms. CAPTCHAs are used by many websites to prevent abuse from "bots" or automated programs usually written to generate spam. No computer programcan read distorted text as well as humans can, so bots cannot navigate sites protectedby CAPTCHAs. nopCommerce uses reCAPTCHA.

]]>
This message template is used when Configuration - Settings - Customer settings - "Registration method" dropdownlist is set to "Email validation". The customer receives a message to confirm an email address used when registering. The default size (pixels) for category thumbnail images. The default size (pixels) for manufacturer thumbnail images. "Store IP addresses" setting is disabled Store IP addresses When enabled, IP addresses of customers will be stored. When disabled, it can improved performance. Furthermore, it''s prohibited to store IP addresses in some countries (private customer data). If you''re using this gateway ensure that your primary store currency is supported by Paypal.

To use PDT, you must activate PDT and Auto Return in your PayPal account profile. You must also acquire a PDT identity token, which is used in all PDT communication you send to PayPal. Follow these steps to configure your account for PDT:

1. Log in to your PayPal account (click here to create your account).
2. Click the Profile subtab.
3. Click Website Payment Preferences in the Seller Preferences column.
4. Under Auto Return for Website Payments, click the On radio button.
5. For the Return URL, enter the URL on your site that will receive the transaction ID posted by PayPal after a customer payment ({0}).
6. Under Payment Data Transfer, click the On radio button.
7. Click Save.
8. Click Website Payment Preferences in the Seller Preferences column.
9. Scroll down to the Payment Data Transfer section of the page to view your PDT identity token.

]]>
Enable to combine (bundle) multiple CSS files into a single file. Do not enable if you''re running nopCommerce in IIS virtual directory. Currently it doesn''t support web farms. Enable to combine (bundle) multiple JavaScript files into a single file. Currently it doesn''t support web farms. Terms of service Require vendors to accept terms of service during registration. I accept terms of service (read) Please accept terms of service Card is expired Popup windows for "terms of service" Check if you want "accept terms of service" or "accept privacy policy" links to be open in popup window. If disabled, then they''ll be open on a new page. Deleted system log Allow admins to buy "Call for price" products Check to allow administrators (in impersonation mode) are allowed to buy products marked as "Call for price". Available services Select the services you want to offer to customers. A user with the specified email has been already registered. If this is your account, and you want to associate it with ''{0}'' external record, please login firstly. Overrride default tax display type Check to override the default tax display type. Default tax display type Default tax display type. Display order Specify the pickup point display order. Add a new attribute Edit product attribute back to product details Info You need to save the product attribute before you can add values for this product attribute page. Choose an attribute. Choose how to display your attribute values. The attribute display order. 1 represents the first item in the list. When an attribute is required, the customer must choose an appropriate attribute value before they can continue. Enter text prompt (you can leave it empty). You need to save the product attribute before you can edit conditional attributes. The attribute has been deleted successfully. The attribute has been updated successfully. The new attribute has been added successfully. If you''re using this gateway ensure that your primary store currency is supported by Paypal.

To configure plugin follow these steps:
1. Log into your Developer PayPal account (click here to create your account).
2. Click on My Apps & Credentials from the Dashboard.
3. Create new REST API app.
4. Copy your Client ID and Secret key below.
5. To be able to use recurring payments you need to set the webhook ID. You can get it manually in your PayPal account (enter the URL {0} below REST API application credentials), or automatically by pressing "{1}" button (not visible when running the site locally).

]]>
Admin area Use rich editor on message templates Indicates whether to use rich editor on message templates and campaigns details pages. The same combination already exists Zip / postal code is required Country is required External authentication Allow customers to remove associations Check to allow customers to remove external authentication associations. Google Analytics is a free website stats tool from Google. It keeps track of statistics about the visitors and eCommerce conversion on your website.

Follow the next steps to enable Google Analytics integration:
  • Create a Google Analytics account and follow the wizard to add your website
  • Copy the Tracking ID into the ''ID'' box below
  • Click the ''Save'' button below and Google Analytics will be integrated into your store

If you would like to switch between Google Analytics (used by default) and Universal Analytics, then please use the buttons below:

]]>
Select customer role Check if the product should be shipped separately from other products (in single box). But notice that if the order includes several items of this product, all of them will be shipped in single box. Enable E-commerce Check to pass information about orders to Google E-commerce feature. Paste the tracking code generated by Google Analytics here. {GOOGLEID} and will be dynamically replaced. The plugin has been uploaded. Upload plugin Zip file Uploaded a new plugin (FriendlyName: ''{0}'') Uploading plugin... The archive should contain only one root plugin directory. For example, Payments.PayPalDirect. The archive should contain only already compiled plugin version. Please note that you can also manually upload a plugin using FTP if this method doesn''t work for you. This payment method stores credit card information in database (it''s not sent to any third-party processor). In order to store credit card information, you must be PCI compliant. Account number Specify UPS account number (required to get negotiated rates). Export/Import products with specification attributes Check if products should be exported/imported with specification attributes. Sitemap includes product tags Check if you want to include product tags in sitemap. Product tags ''{0}'' plugin is not compatible or cannot be loaded. Export/Import products with category breadcrumb Check if products should be exported/imported with a full category name including names of all its parents. Admin area Use rich editor on message templates Indicates whether to use rich editor on message templates and campaigns details pages. Enable to combine (bundle) multiple CSS files into a single file. Do not enable if you''re running nopCommerce in IIS virtual directory. Currently it doesn''t support web farms. And please note it could take up to two minutes for changes to existing files to be applied (when enabled). Enable to combine (bundle) multiple JavaScript files into a single file. Currently it doesn''t support web farms. And please note it could take up to two minutes for changes to existing files to be applied (when enabled). Export/Import categories using name of category Check if categories should be exported/imported using name of category. Categories with the following names don''t exist: {0} Manufacturers with the following names don''t exist: {0} Product attributes with the following IDs don''t exist: {0} Categories with the following names aren''t imported - {0} Delete Deleting plugin... Deleted a plugin (FriendlyName: ''{0}'') The plugin has been deleted. Lower weight limit. This field can be used for "per extra weight unit" scenarios. marketplace]]> marketplace]]> marketplace]]> marketplace]]> marketplace]]> marketplace]]> Some comment here... First, please create at least one specification attribute option Select specification attribute option The archive should contain only one root plugin directory (already compiled). For example, Payments.PayPalDirect. Or it should has the uploadedPlugins.json file with the archive structure (in case if the archive has many subdirectories or plugins). Please note that if the plugin directory already exists, it will be overwritten. You can also manually upload a plugin using FTP if this method doesn''t work for you. CSS bundling is not allowed in virtual directories Apply all Determines whether exchange rates will be updated automatically. Select an exchange rate provider. Uploaded a new theme (FriendlyName: ''{0}'') {0} plugins and {1} themes have been uploaded Upload plugin or theme Uploading plugins and themes... The archive should contain only one root plugin or theme directory (already compiled for plugin). For example, Payments.PayPalDirect. Or it should have the ''{0}'' file with the archive structure (in case if the archive has many plugins and themes). Please note that if the plugin or theme directory already exists, it will be overwritten. You can also manually upload a plugin or theme using FTP if this method doesn''t work for you. Get the automatically renewed OAuth access token by pressing button ''Obtain access token''. Access tokens expire after thirty days, so it is recommended that you specify 30 days for the period. Token renewal limit to {0} days max, but it is recommended that you specify {1} days for the period The store has some error(s). Please find more information on the Warnings page. Use sandbox Determine whether to use sandbox credentials. Sandbox access token Enter your sandbox access token, available from the application dashboard. Sandbox application ID Enter your sandbox application ID, available from the application dashboard.
' CREATE TABLE #LocaleStringResourceTmp ( [ResourceName] [nvarchar](200) NOT NULL, [ResourceValue] [nvarchar](max) NOT NULL ) INSERT INTO #LocaleStringResourceTmp (ResourceName, ResourceValue) SELECT nref.value('@Name', 'nvarchar(200)'), nref.value('Value[1]', 'nvarchar(MAX)') FROM @resources.nodes('//Language/LocaleResource') AS R(nref) --do it for each existing language DECLARE @ExistingLanguageID int DECLARE cur_existinglanguage CURSOR FOR SELECT [ID] FROM [Language] OPEN cur_existinglanguage FETCH NEXT FROM cur_existinglanguage INTO @ExistingLanguageID WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @ResourceName nvarchar(200) DECLARE @ResourceValue nvarchar(MAX) DECLARE cur_localeresource CURSOR FOR SELECT ResourceName, ResourceValue FROM #LocaleStringResourceTmp OPEN cur_localeresource FETCH NEXT FROM cur_localeresource INTO @ResourceName, @ResourceValue WHILE @@FETCH_STATUS = 0 BEGIN IF (EXISTS (SELECT 1 FROM [LocaleStringResource] WHERE LanguageID=@ExistingLanguageID AND ResourceName=@ResourceName)) BEGIN UPDATE [LocaleStringResource] SET [ResourceValue]=@ResourceValue WHERE LanguageID=@ExistingLanguageID AND ResourceName=@ResourceName END ELSE BEGIN INSERT INTO [LocaleStringResource] ( [LanguageId], [ResourceName], [ResourceValue] ) VALUES ( @ExistingLanguageID, @ResourceName, @ResourceValue ) END IF (@ResourceValue is null or @ResourceValue = '') BEGIN DELETE [LocaleStringResource] WHERE LanguageID=@ExistingLanguageID AND ResourceName=@ResourceName END FETCH NEXT FROM cur_localeresource INTO @ResourceName, @ResourceValue END CLOSE cur_localeresource DEALLOCATE cur_localeresource --fetch next language identifier FETCH NEXT FROM cur_existinglanguage INTO @ExistingLanguageID END CLOSE cur_existinglanguage DEALLOCATE cur_existinglanguage DROP TABLE #LocaleStringResourceTmp GO --delete setting DELETE FROM [Setting] WHERE [Name] = N'externalauthenticationsettings.autoregisterenabled' GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'customersettings.storeipaddresses') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'customersettings.storeipaddresses', N'True', 0) END GO --drop column IF EXISTS (SELECT 1 FROM sys.columns WHERE object_id=object_id('[ScheduleTask]') and NAME='LeasedByMachineName') BEGIN ALTER TABLE [ScheduleTask] DROP COLUMN [LeasedByMachineName] END GO --drop column IF EXISTS (SELECT 1 FROM sys.columns WHERE object_id=object_id('[ScheduleTask]') and NAME='LeasedUntilUtc') BEGIN ALTER TABLE [ScheduleTask] DROP COLUMN [LeasedUntilUtc] END GO --delete setting DELETE FROM [Setting] WHERE [Name] = N'paypalstandardpaymentsettings.pdtvalidateordertotal' GO --delete setting DELETE FROM [Setting] WHERE [Name] = N'paypalstandardpaymentsettings.enableipn' GO --delete setting DELETE FROM [Setting] WHERE [Name] = N'paypalstandardpaymentsettings.ipnurl' GO --delete setting DELETE FROM [Setting] WHERE [Name] = N'paypalstandardpaymentsettings.returnfrompaypalwithoutpaymentredirectstoorderdetailspage' GO --delete setting DELETE FROM [Setting] WHERE [Name] = N'paypalstandardpaymentsettings.addressoverride' GO --new topic IF NOT EXISTS ( SELECT 1 FROM [dbo].[Topic] WHERE [SystemName] = N'VendorTermsOfService') BEGIN INSERT [dbo].[Topic] ([SystemName], [TopicTemplateId], [IncludeInSitemap], [AccessibleWhenStoreClosed], [LimitedToStores], [IncludeInFooterColumn1], [IncludeInFooterColumn2], [IncludeInFooterColumn3], [IncludeInTopMenu], [IsPasswordProtected], [DisplayOrder], [SubjectToAcl], [Published], [Title], [Body]) VALUES (N'VendorTermsOfService', 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, N'', N'

Put your terms of service information here. You can edit this in the admin site.

') DECLARE @TopicId INT SET @TopicId = @@IDENTITY INSERT [dbo].[UrlRecord] ([EntityId], [EntityName], [Slug], [IsActive], [LanguageId]) VALUES (@TopicId, N'Topic', N'vendortermsofservice', 1, 0) END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'commonsettings.popupfortermsofservicelinks') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'commonsettings.popupfortermsofservicelinks', N'True', 0) END GO --recreate index IF EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Log_CreatedOnUtc' and object_id=object_id(N'[dbo].[Log]')) BEGIN DROP INDEX [IX_Log_CreatedOnUtc] ON [Log] END GO CREATE NONCLUSTERED INDEX [IX_Log_CreatedOnUtc] ON [Log] ([CreatedOnUtc] DESC) GO --recreate index IF EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_ActivityLog_CreatedOnUtc' and object_id=object_id(N'[dbo].[ActivityLog]')) BEGIN DROP INDEX [IX_ActivityLog_CreatedOnUtc] ON [ActivityLog] END GO CREATE NONCLUSTERED INDEX [IX_ActivityLog_CreatedOnUtc] ON [ActivityLog] ([CreatedOnUtc] DESC) GO --recreate index IF EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_QueuedEmail_CreatedOnUtc' and object_id=object_id(N'[dbo].[QueuedEmail]')) BEGIN DROP INDEX [IX_QueuedEmail_CreatedOnUtc] ON [QueuedEmail] END GO CREATE NONCLUSTERED INDEX [IX_QueuedEmail_CreatedOnUtc] ON [QueuedEmail] ([CreatedOnUtc] DESC) GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Order_CreatedOnUtc' and object_id=object_id(N'[dbo].[Order]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Order_CreatedOnUtc] ON [Order] ([CreatedOnUtc] DESC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Customer_CreatedOnUtc' and object_id=object_id(N'[dbo].[Customer]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Customer_CreatedOnUtc] ON [Customer] ([CreatedOnUtc] DESC) END GO --new activity types IF NOT EXISTS (SELECT 1 FROM [ActivityLogType] WHERE [SystemKeyword] = N'DeleteSystemLog') BEGIN INSERT [ActivityLogType] ([SystemKeyword], [Name], [Enabled]) VALUES (N'DeleteSystemLog', N'Delete system log', N'true') END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'ordersettings.allowadminstobuycallforpriceproducts') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'ordersettings.allowadminstobuycallforpriceproducts', N'True', 0) END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'canadapostsettings.selectedservicescodes') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'canadapostsettings.selectedservicescodes', N'', 0) END GO --new column IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE object_id=object_id('[CustomerRole]') and NAME='OverrideTaxDisplayType') BEGIN ALTER TABLE [CustomerRole] ADD [OverrideTaxDisplayType] bit NULL END GO UPDATE [CustomerRole] SET [OverrideTaxDisplayType] = 0 WHERE [OverrideTaxDisplayType] IS NULL GO ALTER TABLE [CustomerRole] ALTER COLUMN [OverrideTaxDisplayType] bit NOT NULL GO --new column IF NOT EXISTS (SELECT 1 FROM sys.columns WHERE object_id=object_id('[CustomerRole]') and NAME='DefaultTaxDisplayTypeId') BEGIN ALTER TABLE [CustomerRole] ADD [DefaultTaxDisplayTypeId] int NULL END GO UPDATE [CustomerRole] SET [DefaultTaxDisplayTypeId] = 0 WHERE [DefaultTaxDisplayTypeId] IS NULL GO ALTER TABLE [CustomerRole] ALTER COLUMN [DefaultTaxDisplayTypeId] int NOT NULL GO --new column IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[StorePickupPoint]') and OBJECTPROPERTY(object_id, N'IsUserTable') = 1) AND NOT EXISTS (SELECT 1 FROM sys.columns WHERE object_id = OBJECT_ID(N'[dbo].[StorePickupPoint]') and NAME='DisplayOrder') BEGIN ALTER TABLE [StorePickupPoint] ADD [DisplayOrder] INT NULL END GO IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[StorePickupPoint]') and OBJECTPROPERTY(object_id, N'IsUserTable') = 1) BEGIN UPDATE [StorePickupPoint] SET [DisplayOrder] = 0 WHERE [DisplayOrder] IS NULL END GO IF EXISTS (SELECT 1 FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[StorePickupPoint]') and OBJECTPROPERTY(object_id, N'IsUserTable') = 1) BEGIN ALTER TABLE [StorePickupPoint] ALTER COLUMN [DisplayOrder] INT NOT NULL END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Product_Picture_Mapping_ProductId' and object_id=object_id(N'[dbo].[Product_Picture_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Product_Picture_Mapping_ProductId] ON [Product_Picture_Mapping] ([ProductId] ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_PCM_ProductId' and object_id=object_id(N'[dbo].[Product_Category_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_PCM_ProductId] ON [Product_Category_Mapping] ([ProductId] ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_PCM_ProductId_Extended' and object_id=object_id(N'[dbo].[Product_Category_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_PCM_ProductId_Extended] ON [Product_Category_Mapping] ([ProductId] ASC, [IsFeaturedProduct] ASC) INCLUDE ([CategoryId]) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_PMM_ProductId' and object_id=object_id(N'[dbo].[Product_Manufacturer_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_PMM_ProductId] ON [Product_Manufacturer_Mapping] ([ProductId] ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_PMM_ProductId_Extended' and object_id=object_id(N'[dbo].[Product_Manufacturer_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_PMM_ProductId_Extended] ON [Product_Manufacturer_Mapping] ([ProductId] ASC, [IsFeaturedProduct] ASC) INCLUDE ([ManufacturerId]) END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'seosettings.querystringincanonicalurlsenabled') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'seosettings.querystringincanonicalurlsenabled', N'False', 0) END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'externalauthenticationsettings.allowcustomerstoremoveassociations') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'externalauthenticationsettings.allowcustomerstoremoveassociations', N'True', 0) END GO --delete setting DELETE FROM [Setting] WHERE [name] = N'googleanalyticssettings.ecommercescript' GO --delete setting DELETE FROM [Setting] WHERE [name] = N'googleanalyticssettings.ecommercedetailscript' GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'googleanalyticssettings.enableecommerce') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'googleanalyticssettings.enableecommerce', N'False', 0) END GO --new activity types IF NOT EXISTS (SELECT 1 FROM [ActivityLogType] WHERE [SystemKeyword] = N'UploadNewPlugin') BEGIN INSERT [ActivityLogType] ([SystemKeyword], [Name], [Enabled]) VALUES (N'UploadNewPlugin', N'Upload a plugin', N'true') END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'adminareasettings.usenestedsetting') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'adminareasettings.usenestedsetting', N'True', 0) END GO IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'catalogsettings.exportimportproductspecificationattributes') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'catalogsettings.exportimportproductspecificationattributes', N'True', 0) END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'commonsettings.sitemapincludeproducttags') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'commonsettings.sitemapincludeproducttags', N'False', 0) END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'catalogsettings.exportimportproductcategorybreadcrumb') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'catalogsettings.exportimportproductcategorybreadcrumb', N'True', 0) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Product_Category_Mapping_CategoryId' and object_id=object_id(N'[dbo].[Product_Category_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Product_Category_Mapping_CategoryId] ON [Product_Category_Mapping] (CategoryId ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Product_Category_Mapping_IsFeaturedProduct' and object_id=object_id(N'[dbo].[Product_Category_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Product_Category_Mapping_IsFeaturedProduct] ON [Product_Category_Mapping] (IsFeaturedProduct ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Product_Manufacturer_Mapping_ManufacturerId' and object_id=object_id(N'[dbo].[Product_Manufacturer_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Product_Manufacturer_Mapping_ManufacturerId] ON [Product_Manufacturer_Mapping] (ManufacturerId ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Product_Manufacturer_Mapping_IsFeaturedProduct' and object_id=object_id(N'[dbo].[Product_Manufacturer_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Product_Manufacturer_Mapping_IsFeaturedProduct] ON [Product_Manufacturer_Mapping] (IsFeaturedProduct ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Product_Manufacturer_Mapping_ProductId' and object_id=object_id(N'[dbo].[Product_Manufacturer_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Product_Manufacturer_Mapping_ProductId] ON [Product_Manufacturer_Mapping] (ProductId ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Customer_CustomerRole_Mapping_Customer_Id' and object_id=object_id(N'[dbo].[Customer_CustomerRole_Mapping]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Customer_CustomerRole_Mapping_Customer_Id] ON [Customer_CustomerRole_Mapping] (Customer_Id ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Shipment_OrderId' and object_id=object_id(N'[dbo].[Shipment]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Shipment_OrderId] ON [Shipment] (OrderId ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_Product_Delete_Id' and object_id=object_id(N'[dbo].[Product]')) BEGIN CREATE NONCLUSTERED INDEX [IX_Product_Delete_Id] ON [Product] (Deleted ASC, Id ASC) END GO --new index IF NOT EXISTS (SELECT 1 from sys.indexes WHERE [NAME]=N'IX_ShoppingCartItem_CustomerId' and object_id=object_id(N'[dbo].[ShoppingCartItem]')) BEGIN CREATE NONCLUSTERED INDEX [IX_ShoppingCartItem_CustomerId] ON [ShoppingCartItem] (CustomerId ASC) END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'catalogsettings.exportimportcategoriesusingcategoryname') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'catalogsettings.exportimportcategoriesusingcategoryname', N'False', 0) END GO --new activity types IF NOT EXISTS (SELECT 1 FROM [ActivityLogType] WHERE [SystemKeyword] = N'DeletePlugin') BEGIN INSERT [ActivityLogType] ([SystemKeyword], [Name], [Enabled]) VALUES (N'DeletePlugin', N'Delete a plugin', N'true') END GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'securitysettings.pluginstaticfileextensionsblacklist') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'securitysettings.pluginstaticfileextensionsblacklist', N'', 0) END GO --new activity type IF NOT EXISTS (SELECT 1 FROM [ActivityLogType] WHERE [SystemKeyword] = N'UploadNewTheme') BEGIN INSERT [ActivityLogType] ([SystemKeyword], [Name], [Enabled]) VALUES (N'UploadNewTheme', N'Upload a theme', N'true') END GO --delete setting DELETE FROM [Setting] WHERE [name] = N'squarepaymentsettings.accesstokenrenewalperiod' GO --new setting IF NOT EXISTS (SELECT 1 FROM [Setting] WHERE [name] = N'squarepaymentsettings.usesandbox') BEGIN INSERT [Setting] ([Name], [Value], [StoreId]) VALUES (N'squarepaymentsettings.usesandbox', N'true', 0) END GO --update schedule task type UPDATE [ScheduleTask] SET [Type] = 'Nop.Plugin.Payments.Square.Services.RenewAccessTokenTask' WHERE [Type] like 'Nop.Plugin.Payments.Square.Services.RenewAccessTokenTask%' GO --delete setting DELETE FROM [Setting] WHERE [name] = N'worldpaypaymentsettings.developerid' GO --delete setting DELETE FROM [Setting] WHERE [name] = N'worldpaypaymentsettings.developerversion' GO