209 lines
7.8 KiB
C#
209 lines
7.8 KiB
C#
using System;
|
|
using System.Text;
|
|
using MarketData.Utils;
|
|
|
|
namespace MarketData.MarketDataModel
|
|
{
|
|
public class BalanceSheet
|
|
{
|
|
public enum PeriodType { Annual = 0, Quarterly = 1 }
|
|
private String symbol;
|
|
private DateTime asof;
|
|
private double longTermDebt;
|
|
private double otherLiabilities;
|
|
private double deferredLongTermLiabilities;
|
|
private double minorityInterest;
|
|
private double negativeGoodwill;
|
|
private double goodwill;
|
|
private double totalStockHolderEquity;
|
|
private double inventory;
|
|
private double propertyPlantAndEquipment;
|
|
private double intangibleAssets;
|
|
private double accumulatedAmortization;
|
|
private double totalAssets;
|
|
private double totalCurrentAssets;
|
|
private double totalLiabilities;
|
|
private double totalCurrentLiabilities;
|
|
private double cashAndCashEquivalents;
|
|
private PeriodType period;
|
|
private DateTime modified;
|
|
|
|
public BalanceSheet()
|
|
{
|
|
}
|
|
// 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(BalanceSheet previousBalanceSheet)
|
|
{
|
|
if(null==previousBalanceSheet)return;
|
|
if(!Symbol.Equals(previousBalanceSheet.Symbol))return;
|
|
if(!AsOf.Date.Equals(previousBalanceSheet.AsOf.Date))return;
|
|
if(!Period.Equals(previousBalanceSheet.Period))return;
|
|
if(Utility.IsZeroOrNaN(LongTermDebt))LongTermDebt=previousBalanceSheet.LongTermDebt;
|
|
if(Utility.IsZeroOrNaN(OtherLiabilities))OtherLiabilities=previousBalanceSheet.OtherLiabilities;
|
|
if(Utility.IsZeroOrNaN(DeferredLongTermLiabilities))DeferredLongTermLiabilities=previousBalanceSheet.DeferredLongTermLiabilities;
|
|
if(Utility.IsZeroOrNaN(MinorityInterest))MinorityInterest=previousBalanceSheet.MinorityInterest;
|
|
if(Utility.IsZeroOrNaN(NegativeGoodwill))NegativeGoodwill=previousBalanceSheet.NegativeGoodwill;
|
|
if(Utility.IsZeroOrNaN(Goodwill))Goodwill=previousBalanceSheet.Goodwill;
|
|
if(Utility.IsZeroOrNaN(TotalStockHolderEquity))TotalStockHolderEquity=previousBalanceSheet.TotalStockHolderEquity;
|
|
if(Utility.IsZeroOrNaN(Inventory))Inventory=previousBalanceSheet.Inventory;
|
|
if(Utility.IsZeroOrNaN(PropertyPlantAndEquipment))PropertyPlantAndEquipment=previousBalanceSheet.PropertyPlantAndEquipment;
|
|
if(Utility.IsZeroOrNaN(IntangibleAssets))IntangibleAssets=previousBalanceSheet.IntangibleAssets;
|
|
if(Utility.IsZeroOrNaN(AccumulatedAmortization))AccumulatedAmortization=previousBalanceSheet.AccumulatedAmortization;
|
|
if(Utility.IsZeroOrNaN(TotalAssets))TotalAssets=previousBalanceSheet.TotalAssets;
|
|
if(Utility.IsZeroOrNaN(TotalCurrentAssets))TotalCurrentAssets=previousBalanceSheet.TotalCurrentAssets;
|
|
if(Utility.IsZeroOrNaN(TotalLiabilities))TotalLiabilities=previousBalanceSheet.TotalLiabilities;
|
|
if(Utility.IsZeroOrNaN(TotalCurrentLiabilities))TotalCurrentLiabilities=previousBalanceSheet.TotalCurrentLiabilities;
|
|
if(Utility.IsZeroOrNaN(CashAndCashEquivalents))CashAndCashEquivalents=previousBalanceSheet.CashAndCashEquivalents;
|
|
}
|
|
public String Symbol
|
|
{
|
|
get { return symbol; }
|
|
set { symbol = value; }
|
|
}
|
|
public DateTime AsOf
|
|
{
|
|
get { return asof; }
|
|
set { asof = value; }
|
|
}
|
|
public double CashAndCashEquivalents
|
|
{
|
|
get { return cashAndCashEquivalents; }
|
|
set { cashAndCashEquivalents = value; }
|
|
}
|
|
public double LongTermDebt
|
|
{
|
|
get { return longTermDebt; }
|
|
set { longTermDebt = value; }
|
|
}
|
|
public double OtherLiabilities
|
|
{
|
|
get { return otherLiabilities; }
|
|
set { otherLiabilities = value; }
|
|
}
|
|
public double DeferredLongTermLiabilities
|
|
{
|
|
get { return deferredLongTermLiabilities; }
|
|
set { deferredLongTermLiabilities = value; }
|
|
}
|
|
public double MinorityInterest
|
|
{
|
|
get { return minorityInterest; }
|
|
set { minorityInterest = value; }
|
|
}
|
|
public double Goodwill
|
|
{
|
|
get { return goodwill; }
|
|
set { goodwill = value; }
|
|
}
|
|
public double NegativeGoodwill
|
|
{
|
|
get { return negativeGoodwill; }
|
|
set { negativeGoodwill = value; }
|
|
}
|
|
public double TotalStockHolderEquity
|
|
{
|
|
get { return totalStockHolderEquity; }
|
|
set { totalStockHolderEquity=value; }
|
|
}
|
|
public PeriodType Period
|
|
{
|
|
get { return period; }
|
|
set { period = value; }
|
|
}
|
|
public double Inventory
|
|
{
|
|
get { return inventory; }
|
|
set { inventory = value; }
|
|
}
|
|
public double PropertyPlantAndEquipment
|
|
{
|
|
get { return propertyPlantAndEquipment; }
|
|
set { propertyPlantAndEquipment = value; }
|
|
}
|
|
public double IntangibleAssets
|
|
{
|
|
get { return intangibleAssets; }
|
|
set { intangibleAssets = value; }
|
|
}
|
|
public double AccumulatedAmortization
|
|
{
|
|
get { return accumulatedAmortization; }
|
|
set { accumulatedAmortization=value; }
|
|
}
|
|
public String PeriodAsString
|
|
{
|
|
get { return PeriodType.Quarterly.Equals(period) ? "Quarterly" : "Annual"; }
|
|
}
|
|
public double TotalAssets
|
|
{
|
|
get{return totalAssets;}
|
|
set{totalAssets=value;}
|
|
}
|
|
public double TotalCurrentAssets
|
|
{
|
|
get{return totalCurrentAssets;}
|
|
set{totalCurrentAssets=value;}
|
|
}
|
|
public double TotalLiabilities
|
|
{
|
|
get{return totalLiabilities;}
|
|
set{totalLiabilities=value;}
|
|
}
|
|
public double TotalCurrentLiabilities
|
|
{
|
|
get{return totalCurrentLiabilities;}
|
|
set{totalCurrentLiabilities=value;}
|
|
}
|
|
public double NetCurrentAssetValue
|
|
{
|
|
get{return TotalCurrentAssets-TotalLiabilities;}
|
|
}
|
|
public double NetFixedAssets
|
|
{
|
|
get
|
|
{
|
|
if(double.IsNaN(TotalAssets)||double.IsNaN(TotalCurrentAssets)||double.IsNaN(Goodwill))return double.NaN;
|
|
return TotalAssets-TotalCurrentAssets-Goodwill;
|
|
}
|
|
}
|
|
public DateTime Modified
|
|
{
|
|
get { return modified; }
|
|
set { modified = value; }
|
|
}
|
|
|
|
public static String Heading
|
|
{
|
|
get
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append("Symbol,AsOf,LongTermDebt,OtherLiabilities,DeferredLongTermLiabilities,MinorityInterest,NegativeGoodwill,TotalStockHolderEquity,Inventory,PP&E,IntangibleAssets,AccumulatedAmortization,Period,TotalAssets,TotalCurrentAssets,TotalLiabilities,TotalCurrentLiabilities,CashAndCashEquivalents,NetCurrentAssetValue");
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
public override string ToString()
|
|
{
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.Append(symbol).Append(",");
|
|
sb.Append(Utility.DateTimeToStringMMSDDSYYYY(asof)).Append(",");
|
|
sb.Append(String.Format("{0:C}", LongTermDebt)).Append(",");
|
|
sb.Append(String.Format("{0:C}", OtherLiabilities)).Append(",");
|
|
sb.Append(String.Format("{0:C}", DeferredLongTermLiabilities)).Append(",");
|
|
sb.Append(String.Format("{0:C}", MinorityInterest)).Append(",");
|
|
sb.Append(String.Format("{0:C}", NegativeGoodwill)).Append(",");
|
|
sb.Append(String.Format("{0:C}", TotalStockHolderEquity)).Append(",");
|
|
sb.Append(String.Format("{0:C}", Inventory)).Append(",");
|
|
sb.Append(String.Format("{0:C}", PropertyPlantAndEquipment)).Append(",");
|
|
sb.Append(String.Format("{0:C}", IntangibleAssets)).Append(",");
|
|
sb.Append(String.Format("{0:C}", AccumulatedAmortization)).Append(",");
|
|
sb.Append(PeriodAsString).Append(",");
|
|
sb.Append(String.Format("{0:C}", TotalAssets)).Append(",");
|
|
sb.Append(String.Format("{0:C}", TotalCurrentAssets)).Append(",");
|
|
sb.Append(String.Format("{0:C}", TotalLiabilities)).Append(",");
|
|
sb.Append(String.Format("{0:C}", TotalCurrentLiabilities)).Append(",");
|
|
sb.Append(String.Format("{0:C}", CashAndCashEquivalents)).Append(",");
|
|
sb.Append(String.Format("{0:C}", NetCurrentAssetValue));
|
|
return sb.ToString();
|
|
}
|
|
}
|
|
} |