321 lines
16 KiB
C#
321 lines
16 KiB
C#
using YLErp.Model.Enum;
|
||
|
||
namespace YLErp.Model.FinancialVoucherCreator
|
||
{
|
||
public class MaturityInvestmentIncomeGenerator
|
||
{
|
||
|
||
public static FinancialStatement GetFinancialStatement(bool isSamePeer, string clientName, bool isBuy, string contractCode, bool isExercise, double optionFee, double exerciseAmount)
|
||
{
|
||
if (isSamePeer)
|
||
{
|
||
if (isBuy)
|
||
{
|
||
var settlement = exerciseAmount - optionFee;
|
||
if (!isExercise)
|
||
{
|
||
var financialStatement = new FinancialStatement
|
||
{
|
||
AbstractTye = FinancialVoucherAbstractEnum.MaturityInvestmentIncome.GetHashCode(),
|
||
Abstract = $"确认期权到期投资收益({contractCode})",
|
||
IsSamePeer = isSamePeer
|
||
};
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/买权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 0,
|
||
DataField = settlement,
|
||
Remark = ""
|
||
});
|
||
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "衍生工具/期权/场外期权/买权/成本",
|
||
DebitOrCredit = 1,
|
||
DataField = settlement,
|
||
Remark = ""
|
||
});
|
||
return financialStatement;
|
||
}
|
||
else
|
||
{
|
||
var financialStatement = new FinancialStatement
|
||
{
|
||
AbstractTye = FinancialVoucherAbstractEnum.MaturityInvestmentIncome.GetHashCode(),
|
||
Abstract = $"确认期权到期投资收益({contractCode})",
|
||
IsSamePeer = isSamePeer
|
||
};
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应付款/应付单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 0,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "衍生工具/期权/场外期权/买权/成本",
|
||
DebitOrCredit = 1,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/买权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 0,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应付款/应付单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 1,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应收款/应收单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 0,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/买权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 1,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
return financialStatement;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
var settlement = exerciseAmount + optionFee;
|
||
if (!isExercise)
|
||
{
|
||
var financialStatement = new FinancialStatement
|
||
{
|
||
AbstractTye = FinancialVoucherAbstractEnum.MaturityInvestmentIncome.GetHashCode(),
|
||
Abstract = $"确认期权到期投资收益({contractCode})",
|
||
IsSamePeer = isSamePeer
|
||
};
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "衍生工具/期权/场外期权/卖权/成本",
|
||
DebitOrCredit = 0,
|
||
DataField = settlement,
|
||
Remark = ""
|
||
});
|
||
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/卖权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 1,
|
||
DataField = settlement,
|
||
Remark = ""
|
||
});
|
||
return financialStatement;
|
||
}
|
||
else
|
||
{
|
||
var financialStatement = new FinancialStatement
|
||
{
|
||
AbstractTye = FinancialVoucherAbstractEnum.MaturityInvestmentIncome.GetHashCode(),
|
||
Abstract = $"确认期权到期投资收益({contractCode})",
|
||
IsSamePeer = isSamePeer
|
||
};
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "衍生工具/期权/场外期权/卖权/成本",
|
||
DebitOrCredit = 0,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应收款/应收单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 1,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/卖权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 0,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应付款/应付单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 1,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应收款/应收单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 0,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/卖权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 1,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
return financialStatement;
|
||
}
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (isBuy)
|
||
{
|
||
var settlement = exerciseAmount - optionFee;
|
||
var financialStatement = new FinancialStatement
|
||
{
|
||
AbstractTye = FinancialVoucherAbstractEnum.MaturityInvestmentIncome.GetHashCode(),
|
||
Abstract = $"确认期权到期投资收益({contractCode})",
|
||
IsSamePeer = isSamePeer
|
||
};
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/买权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 0,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "衍生工具/期权/场外期权/买权/成本",
|
||
DebitOrCredit = 1,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
if (Math.Abs(settlement) > 0)
|
||
{
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/买权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 0,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应付款/应付单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 1,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应收款/应收单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 0,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/卖权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 1,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
}
|
||
|
||
return financialStatement;
|
||
}
|
||
else
|
||
{
|
||
var settlement = exerciseAmount + optionFee;
|
||
var financialStatement = new FinancialStatement
|
||
{
|
||
AbstractTye = FinancialVoucherAbstractEnum.MaturityInvestmentIncome.GetHashCode(),
|
||
Abstract = $"确认期权到期投资收益({contractCode})",
|
||
IsSamePeer = isSamePeer
|
||
};
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "衍生工具/期权/场外期权/卖权/成本",
|
||
DebitOrCredit = 0,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/卖权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 1,
|
||
DataField = optionFee,
|
||
Remark = ""
|
||
});
|
||
if (Math.Abs(settlement) > 0)
|
||
{
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/卖权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 0,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应付款/应付单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 1,
|
||
DataField = -Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "其他应收款/应收单位款",
|
||
SupplementaryAcountingUnit = clientName,
|
||
DebitOrCredit = 0,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
financialStatement.Children.Add(new FinancialStatement
|
||
{
|
||
AccountingSubject = "投资收益/衍生工具/期权/场外期权/卖权",
|
||
SupplementaryAcountingUnit = "场外衍生品部",
|
||
DebitOrCredit = 1,
|
||
DataField = Math.Abs(settlement),
|
||
Remark = ""
|
||
});
|
||
}
|
||
|
||
return financialStatement;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|