161 lines
5.9 KiB
C#
Executable File
161 lines
5.9 KiB
C#
Executable File
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();
|
|
}
|
|
}
|
|
}
|
|
|