Agree. It'll be fixed in the next release. If you don't want to wait you can execute the following script over your database:
ALTER TABLE [dbo].[Nop_Currency]
ALTER COLUMN [Rate] decimal(18, 4) NOT NULL
GO
IF EXISTS (
SELECT *
FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[dbo].[Nop_CurrencyInsert]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
DROP PROCEDURE [dbo].[Nop_CurrencyInsert]
END
GO
CREATE PROCEDURE [dbo].[Nop_CurrencyInsert]
(
@CurrencyID int = NULL output,
@Name nvarchar(50),
@CurrencyCode nvarchar(5),
@Rate decimal (18, 4),
@DisplayLocale nvarchar(50),
@CustomFormatting nvarchar(50),
@Published bit,
@DisplayOrder int,
@CreatedOn datetime,
@UpdatedOn datetime
)
AS
BEGIN
INSERT
INTO [Nop_Currency]
(
[Name],
CurrencyCode,
Rate,
DisplayLocale,
CustomFormatting,
Published,
DisplayOrder,
CreatedOn,
UpdatedOn
)
VALUES
(
@Name,
@CurrencyCode,
@Rate,
@DisplayLocale,
@CustomFormatting,
@Published,
@DisplayOrder,
@CreatedOn,
@UpdatedOn
)
set @CurrencyID=@@identity
END
GO
IF EXISTS (
SELECT *
FROM dbo.sysobjects
WHERE id = OBJECT_ID(N'[dbo].[Nop_CurrencyUpdate]') AND OBJECTPROPERTY(id,N'IsProcedure') = 1)
BEGIN
DROP PROCEDURE [dbo].[Nop_CurrencyUpdate]
END
GO
CREATE PROCEDURE [dbo].[Nop_CurrencyUpdate]
(
@CurrencyID int,
@Name nvarchar(50),
@CurrencyCode nvarchar(5),
@Rate decimal (18, 4),
@DisplayLocale nvarchar(50),
@CustomFormatting nvarchar(50),
@Published bit,
@DisplayOrder int,
@CreatedOn datetime,
@UpdatedOn datetime
)
AS
BEGIN
UPDATE [Nop_Currency]
SET
[Name]=@Name,
CurrencyCode=@CurrencyCode,
Rate=@Rate,
DisplayLocale=@DisplayLocale,
CustomFormatting=@CustomFormatting,
Published=@Published,
DisplayOrder=@DisplayOrder,
CreatedOn=@CreatedOn,
UpdatedOn=@UpdatedOn
WHERE
CurrencyID = @CurrencyID
END
GO