public DisplayableCorrectedTradeStatement(AdjustedTradeStatement tradeStatement)
 {
     Date = tradeStatement.Date;
     TransactionDetail = tradeStatement.TransactionDetail;
     TransactionTax    = tradeStatement.TransactionTax;
     Quanity           = tradeStatement.Quanity;
     Cost   = (tradeStatement.Value < 0) ? tradeStatement.Value * -1 : 0;
     Sale   = (tradeStatement.Value >= 0) ? tradeStatement.Value : 0;
     Name   = tradeStatement.Name;
     Reason = tradeStatement.Reason;
 }
コード例 #2
0
        public List <AdjustedTradeStatement> GetTradeStatements(ILogger logger, string sheetName)
        {
            using (ExcelReader reader = new ExcelReader(_inputFile, sheetName, logger))
            {
                SheetHeadingVerifier.VerifyHeadingNames(logger, reader, _headings);

                var tradeStatements = reader.ReadAllLines(1, (r) =>
                {
                    if (!r.IsValueAvailable(SerialNumber))
                    {
                        return(Tuple.Create(new AdjustedTradeStatement(), false));
                    }
                    var isSaleAvailable = r.IsValueAvailable(Sale);
                    var sale            = isSaleAvailable ? r.ReadDouble(Sale) : 0;
                    var isCostAvailable = r.IsValueAvailable(Cost);
                    var cost            = isCostAvailable ? r.ReadDouble(Cost) : 0;
                    var reason          = string.Empty;
                    var value           = sale - cost;
                    if (isSaleAvailable && isCostAvailable)
                    {
                        if (!sale.IsZero() && !cost.IsZero())
                        {
                            if (sale > cost)
                            {
                                reason = $"Both Sale(={sale}) and Cost(={cost}) has value. Setting Sale as {value}.";
                            }
                            else
                            {
                                reason = $"Both Sale(={sale}) and Cost(={cost}) has value. Setting Cost as {value * -1 }.";
                            }
                        }
                    }
                    var tradeStatement = new AdjustedTradeStatement()
                    {
                        Date              = r.ReadDate(Date),
                        Name              = r.ReadString(Name),
                        TransactionTax    = r.ReadString(TransactionTax),
                        TransactionDetail = r.ReadString(TransactionDetail),
                        Quanity           = r.ReadDouble(Quantity),
                        Value             = value,
                        Reason            = reason,
                    };
                    return(Tuple.Create(tradeStatement, true));
                }).ToList();
                return(tradeStatements.Where(x => x.Item2).Select(x => x.Item1).ToList());
            }
        }