From 566237e63f33018c5793b3df023a92e35ee73a47 Mon Sep 17 00:00:00 2001 From: Steve Date: Sun, 5 Jan 2025 18:37:26 +0000 Subject: [PATCH] 2025-01-05 --- Websites/SharePrices/.vs/SharePrices/v17/.suo | Bin 108032 -> 26624 bytes .../v17/DocumentLayout.backup.json | 2 +- Websites/SharePrices/SharePrices.v12.suo | Bin 70656 -> 71168 bytes .../SharePrices/App_Code/DataAccessLayer.vb | 7 +- .../SharePrices/CreateDBSchema.sql | 426 +++++++- .../SharePrices/SharePrices/SharePrices.aspx | 16 +- .../SharePrices/SharePrices.aspx.vb | 154 ++- .../SharePrices/SharePrices.vbproj | 4 +- .../SharePrices/SharePrices.vbproj.user | 3 + .../SharePrices/bin/SharePrices.dll | Bin 45056 -> 49152 bytes .../SharePrices/bin/SharePrices.pdb | Bin 75264 -> 77312 bytes .../SharePrices/obj/Debug/SharePrices.dll | Bin 45056 -> 49152 bytes .../SharePrices/obj/Debug/SharePrices.pdb | Bin 75264 -> 77312 bytes ...gnTimeResolveAssemblyReferencesInput.cache | Bin 0 -> 37814 bytes .../Release/SharePrices.Resources.resources | Bin 0 -> 180 bytes .../SharePrices/obj/Release/SharePrices.dll | Bin 0 -> 39424 bytes .../SharePrices/obj/Release/SharePrices.pdb | Bin 0 -> 60928 bytes .../SharePrices.vbproj.FileListAbsolute.txt | 9 + .../SharePrices.vbproj.GenerateResource.Cache | Bin 0 -> 919 bytes .../SharePrices/obj/Release/SharePrices.xml | 44 + .../My Project.Resources.Designer.vb.dll | Bin 0 -> 7680 bytes .../SharePrices/scripts/SharePrices.js | 918 ++++++------------ 22 files changed, 923 insertions(+), 660 deletions(-) create mode 100644 Websites/SharePrices/SharePrices/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache create mode 100644 Websites/SharePrices/SharePrices/obj/Release/SharePrices.Resources.resources create mode 100644 Websites/SharePrices/SharePrices/obj/Release/SharePrices.dll create mode 100644 Websites/SharePrices/SharePrices/obj/Release/SharePrices.pdb create mode 100644 Websites/SharePrices/SharePrices/obj/Release/SharePrices.vbproj.FileListAbsolute.txt create mode 100644 Websites/SharePrices/SharePrices/obj/Release/SharePrices.vbproj.GenerateResource.Cache create mode 100644 Websites/SharePrices/SharePrices/obj/Release/SharePrices.xml create mode 100644 Websites/SharePrices/SharePrices/obj/Release/TempPE/My Project.Resources.Designer.vb.dll diff --git a/Websites/SharePrices/.vs/SharePrices/v17/.suo b/Websites/SharePrices/.vs/SharePrices/v17/.suo index a35604e32bb9512d1d9096c9a33a64e44a5d5784..d26668a9acc135899f534730d83656e7be5a8be1 100644 GIT binary patch literal 26624 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 ByUG9n literal 108032 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 diff --git a/Websites/SharePrices/.vs/SharePrices/v17/DocumentLayout.backup.json b/Websites/SharePrices/.vs/SharePrices/v17/DocumentLayout.backup.json index 7176f60..c1073ec 100644 --- a/Websites/SharePrices/.vs/SharePrices/v17/DocumentLayout.backup.json +++ b/Websites/SharePrices/.vs/SharePrices/v17/DocumentLayout.backup.json @@ -1,6 +1,6 @@ { "Version": 1, - "WorkspaceRootPath": "C:\\Users\\Steve.OZDOMAIN\\source\\repos\\Steves_Code\\Websites\\SharePrices\\", + "WorkspaceRootPath": "\\\\OZHOST1\\d$\\Documents\\Visual Studio Projects\\SharePrices\\", "Documents": [], "DocumentGroupContainers": [ { diff --git a/Websites/SharePrices/SharePrices.v12.suo b/Websites/SharePrices/SharePrices.v12.suo index 01a015430b0484672b48f6d964e30b220f1ad449..3847ce3556c90a31c8056113fa44fee167535253 100644 GIT binary patch delta 5939 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 e+0&N$TU0!po;ji3b6Y6CJ%CO>A4k&=gR delta 6690 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 */ --CREATE PROCEDURE usp_UpdateInstrument (@Symbol varchar(8), @GMTOffset int, @Currency varchar(3), @CurrentPrice money, @InstrumentType varchar(15), @TradeDayStart datetime, @TradeDayEnd datetime) -CREATE PROCEDURE usp_UpdateInstrument (@Symbol varchar(8), @GMTOffset int, @Currency varchar(3), @CurrentPrice real, @InstrumentType varchar(15), @TradeDayStart datetime, @TradeDayEnd datetime) +CREATE OR ALTER PROCEDURE usp_UpdateInstrument (@Symbol varchar(8), @GMTOffset int, @Currency varchar(3), @CurrentPrice real, @InstrumentType varchar(15), @TradeDayStart datetime, @TradeDayEnd datetime) AS BEGIN SET NOCOUNT ON @@ -389,7 +553,7 @@ GO GRANT EXECUTE ON usp_UpdateInstrument TO WebApp_Role GO -CREATE PROCEDURE usp_GetAccounts +CREATE OR ALTER PROCEDURE usp_GetAccounts AS BEGIN SET NOCOUNT ON @@ -405,7 +569,7 @@ GO GRANT EXECUTE ON usp_GetAccounts TO WebApp_Role GO -CREATE PROCEDURE usp_GetInstruments +CREATE OR ALTER PROCEDURE usp_GetInstruments AS BEGIN SET NOCOUNT ON @@ -418,6 +582,8 @@ BEGIN [PostPandemicDilution], [GMTOffset], [Currency], + CASE [TrackPriceHistory] WHEN 1 THEN 1 ELSE 0 END as [TrackPriceHistory], --Javascript doesn't like True/False + [PriceSourceName] as [PriceSource], [CurrentPrice], [InstrumentType], [ShowInMarquee], @@ -440,6 +606,8 @@ BEGIN i.PostPandemicDilution as [PostPandemicDilution], i.GMTOffset as [GMTOffset], i.Currency as [Currency], + i.TrackPriceHistory as [TrackPriceHistory], + ps.PriceSourceName as [PriceSourceName], i.CurrentPrice as [CurrentPrice], i.InstrumentType as [InstrumentType], i.ShowInMarquee as [ShowInMarquee], @@ -452,7 +620,9 @@ BEGIN ISNULL((SELECT MAX(id.HistoryDT) FROM InstrumentHistory_Intraday id WHERE id.InstrumentID = i.InstrumentID), CONVERT(DATETIME, '1970-01-01')) as [MaxIntradayDate], (SELECT MAX(h.SoldDate) FROM Holding h WHERE h.InstrumentID = i.InstrumentID AND h.SoldDate IS NOT NULL) as [LastSoldDate] FROM - Instrument i) as dt + Instrument i + INNER JOIN PriceSource ps + ON ps.PriceSourceID = i.PriceSourceID) as dt ORDER BY DisplayOrder END @@ -460,7 +630,7 @@ GO GRANT EXECUTE ON usp_GetInstruments TO WebApp_Role GO -CREATE PROCEDURE usp_GetDailyData (@Symbol varchar(8), @StartDate datetime, @EndDate datetime) +CREATE OR ALTER PROCEDURE usp_GetDailyData (@Symbol varchar(8), @StartDate datetime, @EndDate datetime) AS BEGIN SELECT @@ -485,7 +655,7 @@ GO GRANT EXECUTE ON usp_GetDailyData TO WebApp_Role GO -CREATE PROCEDURE usp_GetIntradayData (@Symbol varchar(8), @StartDate datetime, @EndDate datetime) +CREATE OR ALTER PROCEDURE usp_GetIntradayData (@Symbol varchar(8), @StartDate datetime, @EndDate datetime) AS BEGIN DECLARE @MAX_DAYS INT = 30 @@ -517,7 +687,7 @@ GO GRANT EXECUTE ON usp_GetIntradayData TO WebApp_Role GO -CREATE PROCEDURE usp_InsertDailyData (@Symbol varchar(8), @PriceData PriceDataType READONLY) +CREATE OR ALTER PROCEDURE usp_InsertDailyData (@Symbol varchar(8), @PriceData PriceDataType READONLY) AS BEGIN SET NOCOUNT ON @@ -581,7 +751,7 @@ GO GRANT EXECUTE ON usp_InsertDailyData TO WebApp_Role GO -CREATE PROCEDURE usp_InsertIntradayData (@Symbol varchar(8), @PriceData PriceDataType READONLY) +CREATE OR ALTER PROCEDURE usp_InsertIntradayData (@Symbol varchar(8), @PriceData PriceDataType READONLY) AS BEGIN SET NOCOUNT ON @@ -644,7 +814,7 @@ GRANT EXECUTE ON usp_InsertIntradayData TO WebApp_Role GO --CREATE PROCEDURE usp_InsertHolding (@Account varchar(20), @Symbol varchar(8), @NoUnits int, @PurchasePricePerUnit money, @PurchaseDate datetime, @Solddate datetime = NULL) -CREATE PROCEDURE usp_InsertHolding (@Account varchar(20), @Symbol varchar(8), @NoUnits real, @PurchasePricePerUnit real, @PurchaseDate datetime, @Solddate datetime = NULL) +CREATE OR ALTER PROCEDURE usp_InsertHolding (@Account varchar(20), @Symbol varchar(8), @NoUnits real, @PurchasePricePerUnit real, @PurchaseDate datetime, @PurchaseCurrency varchar(8), @BookCostInPurchaseCurrency numeric(36, 12), @Solddate datetime = NULL) AS BEGIN DECLARE @AccountID tinyint @@ -660,6 +830,8 @@ BEGIN NoUnits, PurchasePricePerUnit, PurchaseDate, + PurchaseCurrencyID, + BookCostInPurchaseCurrency, SoldDate) SELECT @AccountID, @@ -667,6 +839,8 @@ BEGIN @NoUnits, @PurchasePricePerUnit, @PurchaseDate, + (SELECT InstrumentID FROM Instrument WHERE Symbol = @PurchaseCurrency), + @BookCostInPurchaseCurrency, @SoldDate SELECT @@ -760,7 +934,7 @@ GO -- EXEC usp_InsertHolding 'Steve ii Trd', 'ARB.L', 11459, 261.7805, '2021-03-01 11:25', NULL GO -CREATE PROCEDURE usp_GetHoldings +CREATE OR ALTER PROCEDURE usp_GetHoldings AS BEGIN SELECT @@ -791,7 +965,7 @@ GO GRANT EXECUTE ON usp_GetHoldings TO WebApp_Role GO -CREATE PROCEDURE usp_GetHoldingsHistory +CREATE OR ALTER PROCEDURE usp_GetHoldingsHistory AS BEGIN DECLARE @Dates TABLE (InstrumentID int, DT datetime) @@ -843,7 +1017,7 @@ GO GRANT EXECUTE ON usp_DeleteHolding TO WebApp_Role GO */ -CREATE PROCEDURE usp_SoldHolding (@HoldingID int, @SoldDate datetime, @SoldCurrency varchar(8), @SoldProceeds numeric(36, 12)) +CREATE OR ALTER PROCEDURE usp_SoldHolding (@HoldingID int, @SoldDate datetime, @SoldCurrency varchar(8), @SoldProceeds numeric(36, 12)) AS BEGIN UPDATE @@ -861,7 +1035,7 @@ GO GRANT EXECUTE ON usp_SoldHolding TO WebApp_Role GO -CREATE PROCEDURE usp_SetAccountCashValue (@AccountName varchar(20), @Currency varchar(8), @Value numeric(36, 12)) +CREATE OR ALTER PROCEDURE usp_SetAccountCashValue (@AccountName varchar(20), @Currency varchar(8), @Value numeric(36, 12)) AS BEGIN DECLARE @AccountID int @@ -921,7 +1095,7 @@ GO GRANT EXECUTE ON usp_SetAccountCashValue TO WebApp_Role GO -CREATE PROCEDURE usp_SwapDisplayOrder (@Symbol1 varchar(8), @Symbol2 varchar(8)) +CREATE OR ALTER PROCEDURE usp_SwapDisplayOrder (@Symbol1 varchar(8), @Symbol2 varchar(8)) AS BEGIN DECLARE @OldDisplayOrder1 TINYINT @@ -950,13 +1124,24 @@ GO GRANT EXECUTE ON usp_SwapDisplayOrder TO WebApp_Role GO -CREATE PROCEDURE usp_SetTotalHoldingsValue (@TotalValueGBP money) +CREATE OR ALTER PROCEDURE usp_SetTotalHoldingsValue (@TotalValueGBP money) AS BEGIN DECLARE @Rounded INT = CONVERT(int, FLOOR(@TotalValueGBP)) DECLARE @EndOfPreviousWeek DATE = DATEADD(day, 1 - DATEPART(weekday, CURRENT_TIMESTAMP), convert(date, CURRENT_TIMESTAMP)) DECLARE @PreviousDay DATE = DATEADD(day, -1, CONVERT(DATE, CURRENT_TIMESTAMP)) + --Maintain the AllDays table + ;WITH cteAllDays AS + (SELECT CONVERT(datetime, CONVERT(date, MIN(PurchaseDate))) as DT FROM Holding + UNION ALL + SELECT DATEADD(day, 1, DT) + FROM cteAllDays + WHERE DATEADD(day, 1, DT) <= CONVERT(date, CURRENT_TIMESTAMP) + ) + INSERT AllDays (DT) SELECT DT FROM cteAllDays c WHERE c.DT > (SELECT MAX(DT) FROM AllDays) AND c.DT <= CURRENT_TIMESTAMP OPTION (MAXRECURSION 20000) + + IF DATENAME(WEEKDAY, CURRENT_TIMESTAMP) NOT IN ('Saturday', 'Sunday') BEGIN IF EXISTS (SELECT NULL FROM TotalHoldingsHistory_Daily WHERE HistoryDate = CONVERT(date, CURRENT_TIMESTAMP)) @@ -1003,7 +1188,7 @@ GO GRANT EXECUTE ON usp_SetTotalHoldingsValue TO WebApp_Role GO -CREATE PROCEDURE usp_GetTotalHoldingsHistory +CREATE OR ALTER PROCEDURE usp_GetTotalHoldingsHistory AS BEGIN SELECT @@ -1021,7 +1206,7 @@ GO GRANT EXECUTE ON usp_GetTotalHoldingsHistory TO WebApp_Role GO -CREATE VIEW vHolding +CREATE OR ALTER VIEW vHolding AS SELECT h.HoldingID, @@ -1042,7 +1227,30 @@ AS ON a.AccountID = h.AccountID GO -CREATE VIEW vErroneousPrices_Daily +CREATE OR ALTER VIEW vCashBalances +AS +SELECT + a.AccountID, + h.HoldingID, + a.ShortName as [AccoutName], + i.Symbol, + h.NoUnits, + --i.DisplayName as [InstrumentName], + --i.CurrentPrice, + --h.NoUnits, + h.NoUnits * i.CurrentPrice as [Balance] +FROM + Holding h + INNER JOIN Instrument i + ON i.InstrumentID = h.InstrumentID + INNER JOIN Account a + ON a.AccountID = h.AccountID +WHERE + i.InstrumentType = 'CURRENCY' + AND h.SoldDate IS NULL +GO + +CREATE OR ALTER VIEW vErroneousPrices_Daily AS SELECT i.InstrumentID, @@ -1080,7 +1288,7 @@ WHERE OR (p.ClosePrice/CASE WHEN d1.ClosePrice = 0 THEN 0.0000001 ELSE d1.ClosePrice END > 90 AND n.ClosePrice/CASE WHEN d1.ClosePrice = 0 THEN 0.0000001 ELSE d1.ClosePrice END > 90) GO -CREATE VIEW vErroneousPrices_Intraday +CREATE OR ALTER VIEW vErroneousPrices_Intraday AS SELECT i.InstrumentID, @@ -1118,7 +1326,7 @@ WHERE OR (p.ClosePrice/CASE WHEN d1.ClosePrice = 0 THEN 0.0000001 ELSE d1.ClosePrice END > 90 AND n.ClosePrice/CASE WHEN d1.ClosePrice = 0 THEN 0.0000001 ELSE d1.ClosePrice END > 90) GO -CREATE VIEW vDataQuality_Prices +CREATE OR ALTER VIEW vDataQuality_Prices AS SELECT i.InstrumentID, @@ -1151,7 +1359,169 @@ FROM AND n.HistoryDT = (SELECT MIN(HistoryDT) FROM InstrumentHistory_Daily WHERE InstrumentID = d1.InstrumentID AND HistoryDT > d1.HistoryDT) GO +CREATE OR ALTER VIEW vHoldingValueHistory +AS +SELECT + hist.HoldingID, + a.ShortName as [AccountName], + i.Symbol, + i.Currency, + i.FullName as [InstrumentName], + h.PurchaseDate, + h.PurchasePricePerUnit * h.NoUnits as [CostBase], + (h.PurchasePricePerUnit * h.NoUnits) / dbo.fn_GetExchangeRate(Currency, DT) as [CostBaseGBP], + h.SoldDate, + DT as [ValuationDate], + h.NoUnits * dbo.fn_GetPriceAtDate(h.InstrumentID, DT) as [Value], + (h.NoUnits * dbo.fn_GetPriceAtDate(h.InstrumentID, DT) / dbo.fn_GetExchangeRate(Currency, DT)) as [ValueGBP], + h.NoUnits * dbo.fn_GetPriceAtDate(h.InstrumentID, DT) - (h.PurchasePricePerUnit * h.NoUnits) as [Gain], + (h.NoUnits * dbo.fn_GetPriceAtDate(h.InstrumentID, DT) - (h.PurchasePricePerUnit * h.NoUnits)) / dbo.fn_GetExchangeRate(Currency, DT) as [GainGBP] +FROM ( + SELECT + HoldingID, + PurchaseDate as DT + FROM + Holding + UNION + SELECT + HoldingID, + ISNULL(SoldDate, CURRENT_TIMESTAMP) as DT + FROM + Holding + UNION + SELECT + HoldingID, + DT + FROM + Holding h + INNER JOIN allDays d + ON d.DT >= h.PurchaseDate + AND d.DT <= ISNULL(h.SoldDate, CURRENT_TIMESTAMP)) as hist + INNER JOIN Holding h + ON h.HoldingID = hist.HoldingID + INNER JOIN Account a + ON a.AccountID = h.AccountID + INNER JOIN Instrument i + ON i.InstrumentID = h.InstrumentID +GO + +CREATE OR ALTER VIEW vTradeLedger +AS +SELECT + ah.Name + ' - ' + CASE WHEN a.IsTaxable = 0 THEN 'Non-' ELSE '' END + 'Taxable' as [TaxBucket], + a.ShortName as [AccountName], + a.IsTaxable, + i.Symbol, + --ah.Name + ' - ' + CASE WHEN a.IsTaxable = 0 THEN 'Non-' ELSE '' END + 'Taxable' + '|' + i.Symbol as [InvestmentGroup], + DENSE_RANK() OVER (PARTITION BY a.AccountHolderID, a.IsTaxable, l.InstrumentID ORDER BY TradeDT) as [InvestmentPoolOrder], + i.FullName as [Instrument], + i.DisplayName as [InstrumentDisplayName], + i.Currency as [InstrumentCurrency], + --l.[TradeLedgerID], + l.[InstrumentID], + --l.[AccountID], + l.[TradeDT], + l.[ActionType], + l.[NoUnits], + --l.[TradeCurrencyID], + --l.[ActualExchangeRate], + --l.[EstimatedExchangeRate], + --l.[TradeValue], + l.[TradeValueGBP], + l.[Notes] +FROM + TradeLedger l + INNER JOIN Account a + ON a.AccountID = l.AccountID + INNER JOIN AccountHolder ah + ON ah.AccountHolderID = a.AccountHolderID + INNER JOIN Instrument i + ON i.InstrumentID = l.InstrumentID + INNER JOIN Instrument tc + ON tc.InstrumentID = l.TradeCurrencyID +GO + +CREATE OR ALTER VIEW vTradeHistory +AS +WITH cteInvestmentPoolHistory AS ( + SELECT + l.*, + l.NoUnits as [NewPoolTotalUnits], + l.TradeValueGBP as [NewPoolBaseCostGBP], + CAST(0 as MONEY) as [RealisedGainGBP] + FROM + vTradeLedger l + WHERE + InvestmentPoolOrder = 1 + UNION ALL + SELECT + l.*, + CAST(IIF(l.ActionType = 'Sell', c.NewPoolTotalUnits - l.NoUnits, c.NewPoolTotalUnits + l.NoUnits) as NUMERIC(36, 12)) as [NewPoolTotalUnits], + CASE l.ActionType + WHEN 'Sell' THEN CAST((1 - (l.NoUnits / c.NewPoolTotalUnits)) * c.NewPoolBaseCostGBP as MONEY) --The proportion of units remaining * previous avg cost base + WHEN 'Transfer' THEN IIF(l.NoUnits < 0, c.NewPoolBaseCostGBP - l.TradeValueGBP, c.NewPoolBaseCostGBP + l.TradeValueGBP) --Invert TradeValueGBP for transfers OUT + ELSE c.NewPoolBaseCostGBP + l.TradeValueGBP + END as [NewPoolBaseCostGBP], + CASE + WHEN l.ActionType = 'Sell' THEN CAST(l.TradeValueGBP - ((l.NoUnits / c.NewPoolTotalUnits) * c.NewPoolBaseCostGBP) as MONEY) --Trade Value - (The proportion of units sold * previous avg cost base) + ELSE 0 + END as [RealisedGainGBP] + FROM + vTradeLedger l + INNER JOIN cteInvestmentPoolHistory c + ON c.TaxBucket = l.TaxBucket + AND c.Symbol = l.Symbol + AND c.InvestmentPoolOrder = l.InvestmentPoolOrder - 1 + ) +SELECT + *, + CAST(IIF(EXISTS (SELECT 1 FROM cteInvestmentPoolHistory n WHERE n.TaxBucket = c.TaxBucket AND n.Instrument = c.Instrument AND n.InvestmentPoolOrder > c.InvestmentPoolOrder), 0, 1) as BIT) as [IsFinalPosition] +FROM + cteInvestmentPoolHistory c +GO + /* +SELECT + Symbol, + Currency, + ValuationDate, + SUM(CostBase) as [TotalCostBase], + SUM(Value) as [TotalValue], + SUM(Gain) as [Gain] +FROM vHoldingValueHistory +--WHERE HoldingID = 169 +WHERE Symbol = 'LMI3.L' +GROUP BY + Symbol, + Currency, + ValuationDate +ORDER BY Symbol, ValuationDate + +SELECT + ValuationDate, + SUM(CostBaseGBP) as CostBase, + SUM(ValueGBP) as Value, + SUM(GainGBP) as Gain +FROM vHoldingValueHistory +WHERE ValuationDate >= '2024-02-01' +AND CONVERT(varchar(30), ValuationDate, 120) LIKE '%00:00:00%' +GROUP BY + ValuationDate +ORDER BY ValuationDate + +SELECT + --Currency COLLATE Latin1_General_CS_AS, + ValuationDate, + --dbo.fn_GetExchangeRate(Currency, ValuationDate), + --CostBase / dbo.fn_GetExchangeRate(Currency, ValuationDate) as CostBaseGBP, + SUM(CostBase) as [TotalCostBase], + SUM(CostBase) / dbo.fn_GetExchangeRate(Currency, ValuationDate) as [TotalCostBaseGBP], + SUM(Value) as [TotalValue], + SUM(Value) / dbo.fn_GetExchangeRate(Currency, ValuationDate) as [TotalValueGBP], + SUM(Gain) / dbo.fn_GetExchangeRate(Currency, ValuationDate) as [Gain] +FROM vHoldingValueHistory +WHERE ValuationDate = '2024-02-24 00:00:00' +GROUP BY ValuationDate select * from Instrument diff --git a/Websites/SharePrices/SharePrices/SharePrices.aspx b/Websites/SharePrices/SharePrices/SharePrices.aspx index 5639bd9..3189cc8 100644 --- a/Websites/SharePrices/SharePrices/SharePrices.aspx +++ b/Websites/SharePrices/SharePrices/SharePrices.aspx @@ -39,7 +39,7 @@ Charts Holdings - Accounts + Accounts Analysis History Log @@ -94,8 +94,11 @@
-
-
+
+
+ +
+
@@ -119,7 +122,7 @@