{-#LANGUAGE OverloadedStrings#-}
module Data.P440.XML.Instances.BVS where

import qualified Data.P440.Domain.BVS as BVS
import Data.P440.Domain.SimpleTypes
import Data.P440.Domain.ComplexTypes

import Data.P440.XML.XML
import qualified Data.P440.XML.Instances.ComplexTypes as C
import qualified Data.P440.XML.Instances.ComplexTypesZS as C

instance ToNode BVS.Файл where
    toNode (BVS.Файл идЭС версПрог телОтпр
                     должнОтпр фамОтпр выписка) =
        complex "Файл"
                ["ИдЭС"      =: идЭС
                ,"ВерсПрог"  =: версПрог
                ,"ТелОтпр"   =: телОтпр
                ,"ДолжнОтпр" =: должнОтпр
                ,"ФамОтпр"   =: фамОтпр]
                [Single выписка]

instance ToNode BVS.Выписка where
    toNode (BVS.Выписка видВыпис номЗапр датаПодпЗапр наимПодтв призНал
                        колДопФ датаПодп наДатуИлиЗаПериод свНО свБанкИлиСвУБР
                        свПл свСчет свЭДС свВклад отсутствуют предБанка) =
        complex "Выписка"
                ["ВидВыпис"     =: видВыпис
                ,"НомЗапр"      =: номЗапр
                ,"ДатаПодпЗапр" =: датаПодпЗапр
                ,"НаимПодтв"    =: наимПодтв
                ,"ПризНал"      =: призНал
                ,"КолДопФ"      =: колДопФ
                ,"ДатаПодп"     =: датаПодп]
                [Single наДатуИлиЗаПериод
                ,Single $ C.свНО "СвНО" свНО
                ,Single $ свБанкИлиСвУБР
                ,Single $ свПл
                ,Sequence $ свСчет
                ,Sequence $ свЭДС
                ,Sequence $ свВклад
                ,Sequence $ отсутствуют
                ,Single $ C.предБ "ПредБанка" предБанка]

instance ToNode BVS.ПлЮЛИлиПлФЛ where
    toNode (BVS.ПлЮЛ' плюл) = C.плЮЛ "ПлЮЛ" плюл
    toNode (BVS.ПлФЛ' плфл) = C.плФЛ "ПлФЛ" плфл

instance ToNode BVS.СвСчет where
    toNode (BVS.СвСчет порНомСчет номСч видСч датаОткрСчет
                       датаЗакрСчет кодВалСчет датаНачСчет датаКонСчет остатНачСчет
                       суммаДебСчет суммаКредСчет остатКонСчет) =
       complex_ "СвСчет"
                ["ПорНом"    =: порНомСчет
                ,"НомСч"     =: номСч
                ,"ВидСч"     =: видСч
                ,"ДатаОткр"  =: датаОткрСчет
                ,"ДатаЗакр"  =: датаЗакрСчет
                ,"КодВал"    =: кодВалСчет
                ,"ДатаНач"   =: датаНачСчет
                ,"ДатаКон"   =: датаКонСчет
                ,"ОстатНач"  =: остатНачСчет
                ,"СуммаДеб"  =: суммаДебСчет
                ,"СуммаКред" =: суммаКредСчет
                ,"ОстатКон"  =: остатКонСчет]

instance ToNode BVS.СвЭДС where
    toNode (BVS.СвЭДС порНомЭДС идЭСП  датаОткрЭДС датаЗакрЭДС
                      кодВалЭДС датаНачЭДС датаКонЭДС остатНачЭДС суммаДебЭДС
                      суммаКредЭДС остатКонЭДС) =
        complex_ "СвЭДС"
                 ["ПорНом"    =: порНомЭДС
                 ,"ИдЭСП"     =: идЭСП
                 ,"ДатаОткр"  =: датаОткрЭДС
                 ,"ДатаЗакр"  =: датаЗакрЭДС
                 ,"КодВал"    =: кодВалЭДС
                 ,"ДатаНач"   =: датаНачЭДС
                 ,"ДатаКон"   =: датаКонЭДС
                 ,"ОстатНач"  =: остатНачЭДС
                 ,"СуммаДеб"  =: суммаДебЭДС
                 ,"СуммаКред" =: суммаКредЭДС
                 ,"ОстатКон"  =: остатКонЭДС]

instance ToNode BVS.СвВклад where
    toNode (BVS.СвВклад порНомВклад номВкл видВкл датаОткрВклад
                        датаИстВклад датаЗакрВклад кодВалВклад датаНачВклад датаКонВклад
                        остатНачВклад суммаДебВклад суммаКредВклад остатКонВклад проценты) =
        complex_ "СвВклад"
                 ["ПорНом"    =: порНомВклад
                 ,"НомВкл"    =: номВкл
                 ,"ВидВкл"    =: видВкл
                 ,"ДатаОткр"  =: датаОткрВклад
                 ,"ДатаИст"   =: датаИстВклад
                 ,"ДатаЗакр"  =: датаЗакрВклад
                 ,"КодВал"    =: кодВалВклад
                 ,"ДатаНач"   =: датаНачВклад
                 ,"ДатаКон"   =: датаКонВклад
                 ,"ОстатНач"  =: остатНачВклад
                 ,"СуммаДеб"  =: суммаДебВклад
                 ,"СуммаКред" =: суммаКредВклад
                 ,"ОстатКон"  =: остатКонВклад
                 ,"Проценты"  =: проценты]

instance ToNode BVS.Отсутствуют where
    toNode (BVS.Отсутствуют номер) =
        complex_ "Отсутствуют"
                 ["Номер" =: номер]
