Commit 664c7156 by Amelin Konstantin

Complete MasterAgreementTemplate

parent 96929bd4
<?xml version="1.0" encoding="utf-8"?>
<nonpublicExecutionReport xmlns="http://www.fpml.org/FpML-5/recordkeeping" xmlns:nsdext="http://www.fpml.org/FpML-5/recordkeeping/nsd-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fpmlext="http://www.fpml.org/FpML-5/ext" xsi:schemaLocation="http://www.fpml.org/FpML-5/recordkeeping ../fpml-recordkeeping-merged-schema.xsd http://www.fpml.org/FpML-5/recordkeeping/nsd-ext ../nsd-ext-merged-schema.xsd" fpmlVersion="5-4" actualBuild="5">
<!--Заголовок сообщения.-->
<!--Message header.-->
<header>
<!--Номер сообщения-->
<!--Message identifier-->
<messageId messageIdScheme="http://repository.nsd.ru/coding-scheme/messageid(nsdrus)">MesIdfra-1</messageId>
<!--Отправитель сообщения-->
<!--Message sender-->
<sentBy>P00000000111</sentBy>
<!--Получатель сообщения-->
<!--Message receiver-->
<sendTo>NDC000000000</sendTo>
<!--Время создания сообщения-->
<!--Message creation time-->
<creationTimestamp>2015-07-27T19:03:13</creationTimestamp>
<!--Версия спецификации.-->
<!--The version(s) of specifications.-->
<implementationSpecification>
<!--Версия спецификации.-->
<!--Version of specification.-->
<version>4.4</version>
</implementationSpecification>
</header>
<!--Признак корректирующего сообщения-->
<!--Correction message mark-->
<isCorrection>false</isCorrection>
<!--Уникальный код цепочки сообщений-->
<!--Messages chain identifier-->
<correlationId correlationIdScheme="http://repository.nsd.ru/coding-scheme/correlationId(nsdrus)">[P00000000111]-[2015]-[MesIdfra-1]</correlationId>
<!--Дата совершения отчитываемого события-->
<!--Event's actual date-->
<asOfDate>2013-01-21</asOfDate>
<nsdext:masterAgreementTermination>
<!--Регистрационный номер генерального соглашения-->
<!--Master agreement number is assigned by repository at registration.-->
<nsdext:masterAgreementId>MA0123456789</nsdext:masterAgreementId>
<!--Причина прекращения генерального соглашения.-->
<!--Master agreement terminating reason.-->
<nsdext:maTerminatingReason>Close</nsdext:maTerminatingReason>
</nsdext:masterAgreementTermination>
<!--Участники Анкеты-->
<!--Party-->
<party id="TradeRepository">
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>NDC000000000</partyId>
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>LEI_00000000000000000001</partyId>
<!--Наименование участника.-->
<!--Party's name.-->
<partyName>НКО АО НРД</partyName>
</party>
<!--Участники Анкеты-->
<!--Party-->
<party id="UTIGeneratingParty">
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>P00000000111</partyId>
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>LEI_00000000000000000001</partyId>
<!--Наименование участника.-->
<!--Party's name.-->
<partyName>Клиент репозитария 1</partyName>
</party>
<!--Участники Анкеты-->
<!--Party-->
<party id="Party1">
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>P00000000111</partyId>
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>LEI_00000000000000000001</partyId>
<!--Наименование участника.-->
<!--Party's name.-->
<partyName>Клиент репозитария 1</partyName>
<!--Вид экономической деятельности-->
<!--Industry classification-->
<classification industryClassificationScheme="http://www.fpml.org/coding-scheme/external/north-american-industry-classification-system">Other</classification>
<!--Страна.-->
<!--Country.-->
<country countryScheme="http://www.fpml.org/ext/iso3166">RU</country>
<!--Тип лица-->
<!--Organization type-->
<organizationType organizationTypeScheme="http://www.fpml.org/coding-scheme/organization-type">L</organizationType>
</party>
<!--Участники Анкеты-->
<!--Party-->
<party id="Party2">
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>P00000000222</partyId>
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>LEI_00000000000000000002</partyId>
<!--Наименование участника.-->
<!--Party's name.-->
<partyName>Клиент репозитария 2</partyName>
<!--Вид экономической деятельности-->
<!--Industry classification-->
<classification industryClassificationScheme="http://www.fpml.org/coding-scheme/external/north-american-industry-classification-system">Other</classification>
<!--Страна.-->
<!--Country.-->
<country countryScheme="http://www.fpml.org/ext/iso3166">RU</country>
<!--Тип лица-->
<!--Organization type-->
<organizationType organizationTypeScheme="http://www.fpml.org/coding-scheme/organization-type">L</organizationType>
</party>
<!--Участники Анкеты-->
<!--Party-->
<party id="Sender">
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>P00000000111</partyId>
<!--Идентификационный код-->
<!--Party's identifier.-->
<partyId>LEI_00000000000000000001</partyId>
<!--Наименование участника.-->
<!--Party's name.-->
<partyName>Клиент репозитария 1</partyName>
</party>
</nonpublicExecutionReport>
......@@ -37,13 +37,18 @@ object Main {
if (debugMode) new CommodityForwardTemplate(source) with Logger else new CommodityForwardTemplate(source)
case Success(v) if v == "commoditySwap" =>
if (debugMode) new CommoditySwapTemplate(source) with Logger else new CommoditySwapTemplate(source)
case Success(v) if v == "masterAgreementTerms" =>
if (debugMode) new MasterAgreementTemplate(source) with Logger else new MasterAgreementTemplate(source)
case Failure(_) =>
case _ =>
Try { (source \\ "markToMarketValuation").head } match {
case Success(_) =>
if (debugMode) new FairValueReportTemplate(source) with Logger else new FairValueReportTemplate(source)
case Failure(_) => throw new Exception("Undefined trade type")
case _ => Try { (source \\ "masterAgreementTerms").head } match {
case Success(_) =>
if (debugMode) new MasterAgreementTemplate(source) with Logger else new MasterAgreementTemplate(source)
case _ => Try { (source \\ "masterAgreementTermination").head } match {
case Success(_) => if (debugMode) new MasterAgreementTemplate(source) with Logger else new MasterAgreementTemplate(source)
case _ => throw new Exception("Undefined trade type")
}
}
}
}
}
......
package templates
import scala.xml.Node
import scala.xml.{Node, NodeSeq}
class MasterAgreementTemplate(source: Node) extends RegiAmendTermMasterAgreementTemplate(source) {
protected[this] def templateMATerms: Node = ???
protected[this] def templateMATerms: NodeSeq = {
val utip =
(source \\ "trade" \ "tradeHeader" \ "partyTradeIdentifier")
.filter(_.child.filter(_.attributes.nonEmpty).head.attributes("href").text.mkString == "UTIGeneratingParty")
val rp =
(source \\ "trade" \ "tradeHeader" \ "partyTradeIdentifier")
.filter(_.child.filter(_.attributes.nonEmpty).head.attributes("href").text.mkString == "Party1")
val nrp =
(source \\ "trade" \ "tradeHeader" \ "partyTradeIdentifier")
.filter(_.child.filter(_.attributes.nonEmpty).head.attributes("href").text.mkString == "Party2")
<rtsrep:masterAgreement>
<rtsrep:masterAgreementId>{ "NONREF" }</rtsrep:masterAgreementId>
<rtsrep:masterAgreementType>{ get(source \\ "trade" \ "masterAgreementTerms" \ "masterAgreementType") }</rtsrep:masterAgreementType>
<rtsrep:masterAgreementVersion>{ get(source \\ "trade" \ "masterAgreementTerms" \ "masterAgreementVersion") }</rtsrep:masterAgreementVersion>
{/* masterAgreementDate isn`t present in the source */}
<rtsrep:masterAgreementDate>{ get(source \\ "trade" \ "tradeHeader" \ "tradeDate") }</rtsrep:masterAgreementDate>
</rtsrep:masterAgreement>
<rtsrep:masterAgreementParty>
<rtsrep:masterAgreementPartyReference href={ get(rp \ "partyReference", "href") }/>
<rtsrep:masterAgreementId>{ get(utip \ "tradeId") }</rtsrep:masterAgreementId>
<rtsrep:reportingParty>
<rtsrep:reportingPartyReference href={ get(rp \ "partyReference", "href") }/>
{/* productType isn`t present in the source */}
<rtsrep:productType>{ "All" }</rtsrep:productType>
</rtsrep:reportingParty>
</rtsrep:masterAgreementParty>
<rtsrep:nonreportingParty>
<rtsrep:partyReference href={ get(nrp \ "partyReference", "href") }/>
</rtsrep:nonreportingParty>
<rtsrep:partyRelatedType>{ get(source \\ "trade" \ "masterAgreementTerms" \ "partiesAreAffiliated") }</rtsrep:partyRelatedType> ++
<rtsrep:attachment>
<fpml:name></fpml:name>
</rtsrep:attachment>
}
def isStraight = true
}
package templates
import scala.xml.Node
import scala.xml.{Node, NodeSeq}
abstract class RegiAmendTermMasterAgreementTemplate(source: Node) extends Template(source) {
protected[this] def templateMATerms: Node
protected[this] def templateMATerms: NodeSeq
def template: Node = {
<rtsrep:masterAgreementRegistration xmlns:fpml="http://www.fpml.org/FpML-5/recordkeeping"
......@@ -20,9 +20,23 @@ abstract class RegiAmendTermMasterAgreementTemplate(source: Node) extends Templa
</fpml:header>
<fpml:isCorrection>{ get(source \ "isCorrection") }</fpml:isCorrection>
<fpml:correlationId correlationIdScheme="">{ get(source \ "correlationId") }</fpml:correlationId>
{ if ((source \ "masterAgreementTermination").nonEmpty)
<rtsrep:terminationMasterAgreement>
<rtsrep:masterAgreementId>{ get(source \ "masterAgreementTermination" \ "masterAgreementId") }</rtsrep:masterAgreementId>
<rtsrep:terminationDate>{ get(source \ "masterAgreementTermination" \ "terminationDate") }</rtsrep:terminationDate>
<rtsrep:reason>{ get(source \ "masterAgreementTermination" \ "maTerminatingReason") }</rtsrep:reason>
</rtsrep:terminationMasterAgreement>
else if ((source \ "amendment").isEmpty)
<rtsrep:registrationMasterAgreement>
{ templateMATerms }
</rtsrep:registrationMasterAgreement>
else
<rtsrep:amendmentMasterAgreement>
{ templateMATerms }
<fpml:agreementDate>{ get(source \ "amendment" \ "agreementDate") }</fpml:agreementDate>
<fpml:effectiveDate>{ get(source \ "amendment" \ "effectiveDate") }</fpml:effectiveDate>
</rtsrep:amendmentMasterAgreement>
}
{ for { s <- source \ "party"
id = get(s, "id").mkString
if id != "Sender" && id != "UTIGeneratingParty" } yield {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment