Initial Commit
This commit is contained in:
160
MarketData/MarketDataLib/MarketDataModel/CashflowStatement.cs
Executable file
160
MarketData/MarketDataLib/MarketDataModel/CashflowStatement.cs
Executable file
@@ -0,0 +1,160 @@
|
||||
using System;
|
||||
using System.Text;
|
||||
using MarketData.Utils;
|
||||
|
||||
namespace MarketData.MarketDataModel
|
||||
{
|
||||
|
||||
public class CashflowStatement
|
||||
{
|
||||
public enum PeriodType { Annual=0,Quarterly=1}
|
||||
private String symbol;
|
||||
private DateTime asof;
|
||||
private double depreciationAndAmortization;
|
||||
private double deferredIncomeTaxes;
|
||||
private double stockBasedCompensation;
|
||||
private double accountsReceivable;
|
||||
private double inventory;
|
||||
private double accountsPayable;
|
||||
private double accruedLiabilities;
|
||||
private double operatingCashflow;
|
||||
private double freeCashflow;
|
||||
private PeriodType period;
|
||||
private DateTime modified;
|
||||
|
||||
public CashflowStatement()
|
||||
{
|
||||
}
|
||||
// It is appropriate to use the AsOf date in the comparison of the financial statements because the AsOf date is the statement date.
|
||||
public void MergeFrom(CashflowStatement previousCashflowStatement)
|
||||
{
|
||||
if(null==previousCashflowStatement)return;
|
||||
if(!symbol.Equals(previousCashflowStatement.Symbol))return;
|
||||
if(!AsOf.Date.Equals(previousCashflowStatement.AsOf.Date))return;
|
||||
if(!Period.Equals(previousCashflowStatement.Period))return;
|
||||
if(Utility.IsZeroOrNaN(DepreciationAndAmortization))DepreciationAndAmortization=previousCashflowStatement.DepreciationAndAmortization;
|
||||
if(Utility.IsZeroOrNaN(DeferredIncomeTaxes))DeferredIncomeTaxes=previousCashflowStatement.DeferredIncomeTaxes;
|
||||
if(Utility.IsZeroOrNaN(StockBasedCompensation))StockBasedCompensation=previousCashflowStatement.StockBasedCompensation;
|
||||
if(Utility.IsZeroOrNaN(AccountsReceivable))AccountsReceivable=previousCashflowStatement.AccountsReceivable;
|
||||
if(Utility.IsZeroOrNaN(Inventory))Inventory=previousCashflowStatement.Inventory;
|
||||
if(Utility.IsZeroOrNaN(AccountsPayable))AccountsPayable=previousCashflowStatement.AccountsPayable;
|
||||
if(Utility.IsZeroOrNaN(AccruedLiabilities))AccruedLiabilities=previousCashflowStatement.AccruedLiabilities;
|
||||
if(Utility.IsZeroOrNaN(OperatingCashflow))OperatingCashflow=previousCashflowStatement.OperatingCashflow;
|
||||
if(Utility.IsZeroOrNaN(FreeCashflow))FreeCashflow=previousCashflowStatement.FreeCashflow;
|
||||
}
|
||||
|
||||
public bool IsValid()
|
||||
{
|
||||
if(String.IsNullOrEmpty(symbol))return false;
|
||||
if(AsOf.Date.Equals(Utility.Epoch))return false;
|
||||
if(Utility.IsZeroOrNaN(DepreciationAndAmortization)&&
|
||||
Utility.IsZeroOrNaN(DeferredIncomeTaxes)&&
|
||||
Utility.IsZeroOrNaN(StockBasedCompensation)&&
|
||||
Utility.IsZeroOrNaN(AccountsReceivable)&&
|
||||
Utility.IsZeroOrNaN(Inventory)&&
|
||||
Utility.IsZeroOrNaN(AccountsPayable)&&
|
||||
Utility.IsZeroOrNaN(AccruedLiabilities)&&
|
||||
Utility.IsZeroOrNaN(OperatingCashflow)&&
|
||||
Utility.IsZeroOrNaN(FreeCashflow)
|
||||
)return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
public String Symbol
|
||||
{
|
||||
get { return symbol; }
|
||||
set { symbol = value; }
|
||||
}
|
||||
public DateTime AsOf
|
||||
{
|
||||
get { return asof; }
|
||||
set { asof = value; }
|
||||
}
|
||||
public double DepreciationAndAmortization
|
||||
{
|
||||
get{return depreciationAndAmortization;}
|
||||
set{depreciationAndAmortization=value;}
|
||||
}
|
||||
public double DeferredIncomeTaxes
|
||||
{
|
||||
get{return deferredIncomeTaxes;}
|
||||
set{deferredIncomeTaxes=value;}
|
||||
}
|
||||
public double StockBasedCompensation
|
||||
{
|
||||
get{return stockBasedCompensation;}
|
||||
set{stockBasedCompensation=value;}
|
||||
}
|
||||
public double AccountsReceivable
|
||||
{
|
||||
get{return accountsReceivable;}
|
||||
set{accountsReceivable=value;}
|
||||
}
|
||||
public double Inventory
|
||||
{
|
||||
get{return inventory;}
|
||||
set{inventory=value;}
|
||||
}
|
||||
public double AccountsPayable
|
||||
{
|
||||
get{return accountsPayable;}
|
||||
set{accountsPayable=value;}
|
||||
}
|
||||
public double AccruedLiabilities
|
||||
{
|
||||
get{return accruedLiabilities;}
|
||||
set{accruedLiabilities=value;}
|
||||
}
|
||||
public double OperatingCashflow
|
||||
{
|
||||
get{return operatingCashflow;}
|
||||
set{operatingCashflow=value;}
|
||||
}
|
||||
public double FreeCashflow
|
||||
{
|
||||
get{return freeCashflow;}
|
||||
set{freeCashflow=value;}
|
||||
}
|
||||
public PeriodType Period
|
||||
{
|
||||
get { return period; }
|
||||
set { period = value; }
|
||||
}
|
||||
public String PeriodAsString
|
||||
{
|
||||
get { return PeriodType.Quarterly.Equals(period) ? "Quarterly" : "Annual"; }
|
||||
}
|
||||
public DateTime Modified
|
||||
{
|
||||
get { return modified; }
|
||||
set { modified = value; }
|
||||
}
|
||||
public static String Heading
|
||||
{
|
||||
get
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("Symbol,AsOf,DepreciationAndAmortization,DeferredIncomeTaxes,StockBasedCompensation,AccountsReceivable,Inventory,AccountsPayable,AccruedLiabilities,OperatingCashflow,FreeCashflow,Period");
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
public override string ToString()
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append(symbol).Append(",");
|
||||
sb.Append(Utility.DateTimeToStringMMSDDSYYYY(asof)).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", DepreciationAndAmortization))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", DeferredIncomeTaxes))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", StockBasedCompensation))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", AccountsReceivable))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", Inventory))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", AccountsPayable))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", AccruedLiabilities))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", OperatingCashflow))).Append(",");
|
||||
sb.Append(Utility.AddQuotes(String.Format("{0:C}", FreeCashflow))).Append(",");
|
||||
sb.Append(PeriodAsString);
|
||||
return sb.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user