class PAYEERS(ElementList): """ OFX Section 12.9.1.2 """ payeelstid = String(12, required=True) payee = SubAggregate(PAYEE) bankacctto = SubAggregate(BANKACCTTO) extdpayee = SubAggregate(EXTDPAYEE) payacct = ListElement(String(32))
class PAYEEMODRQ(ElementList): """ OFX Section 12.9.2.1 """ payeelstid = String(12, required=True) payee = SubAggregate(PAYEE) bankacctto = SubAggregate(BANKACCTTO) payacct = ListElement(String(32))
class STPCHKPROF(ElementList): """OFX section 11.13.2.3""" procdaysoff = ListElement(OneOf(*DAYS)) procendtm = Time(required=True) canuserange = Bool(required=True) canusedesc = Bool(required=True) stpchkfee = Decimal(required=True)
class PAYEERQ(ElementList): """ OFX Section 12.9.1.1 """ payeeid = String(12) payee = SubAggregate(PAYEE) bankacctto = SubAggregate(BANKACCTTO) payacct = ListElement(String(32)) requiredMutexes = [("payeeid", "payee")]
class WIREXFERMSGSETV1(ElementList): """OFX section 11.13.5""" msgsetcore = SubAggregate(MSGSETCORE, required=True) procdaysoff = ListElement(OneOf(*DAYS)) procendtm = Time(required=True) cansched = Bool(required=True) domxferfee = Decimal(required=True) intlxferfee = Decimal(required=True)
class BANKMSGSETV1(ElementList): """OFX section 11.13.2.1""" msgsetcore = SubAggregate(MSGSETCORE, required=True) invalidaccttype = ListElement(OneOf(*ACCTTYPES)) closingavail = Bool(required=True) pendingavail = Bool() xferprof = SubAggregate(XFERPROF) stpchkprof = SubAggregate(STPCHKPROF) emailprof = SubAggregate(EMAILPROF, required=True) imageprof = Unsupported()
class XFERPROF(ElementList): """ OFX section 11.13.2.2 """ procdaysoff = ListElement(OneOf(*DAYS)) procendtm = Time(required=True) cansched = Bool(required=True) canrecur = Bool(required=True) canmodxfer = Bool(required=True) canmodmdls = Bool(required=True) modelwnd = Integer(3, required=True) dayswith = Integer(3, required=True) dfltdaystopay = Integer(3, required=True)
class TAX1099MSGSETV1(ElementList): """ OFX tax extensions section 2.1 """ msgsetcore = SubAggregate(MSGSETCORE, required=True) tax1099dnld = Bool(required=True) extd1099b = Bool(required=True) taxyearsupported = ListElement(Integer(4)) @classmethod def validate_args(cls, *args, **kwargs): # Must contain at least one TAXYEARSUPPORTED if len(args) == 0: msg = "{} must contain at least one of {}" raise ValueError(msg.format(cls.__name__, list(cls.listaggregates.keys()))) super().validate_args(*args, **kwargs)
class MSGSETCORE(ElementList): """ OFX section 7.2.1 """ ver = Integer(required=True) url = String(255, required=True) ofxsec = OneOf("NONE", "TYPE1", required=True) transpsec = Bool(required=True) signonrealm = String(32, required=True) language = ListElement(OneOf(*LANG_CODES)) syncmode = OneOf("FULL", "LITE", required=True) refreshsupt = Bool() respfileer = Bool(required=True) spname = String(32) ofxextension = SubAggregate(OFXEXTENSION) @classmethod def validate_args(cls, *args, **kwargs): if len(args) == 0: msg = "{} must contain at least one item" raise ValueError(msg.format(cls.__name__)) super().validate_args(*args, **kwargs)
class BILLPAYMSGSETV1(ElementList): """ OFX section 12.11.2 """ msgsetcore = SubAggregate(MSGSETCORE, required=True) dayswith = Integer(3, required=True) dfltdaystopay = Integer(3, required=True) xferdayswith = Integer(3, required=True) xferdfltdaystopay = Integer(3, required=True) procdaysoff = ListElement(OneOf(*DAYS)) procendtm = Time(required=True) modelwnd = Integer(3, required=True) postprocwnd = Integer(3, required=True) stsviamods = Bool(required=True) pmtbyaddr = Bool(required=True) pmtbyxfer = Bool(required=True) pmtbypayeeid = Bool(required=True) canaddpayee = Bool(required=True) hasextdpmt = Bool(required=True) canmodpmts = Bool(required=True) canmodmdls = Bool(required=True) difffirstpmt = Bool(required=True) difflastpmt = Bool(required=True) billpubcontext = Bool()
class TAX1099RQ(ElementList): """OFX tax extensions section 2.2.5""" acctnum = String(32) recid = String(32) taxyear = ListElement(Integer(4))
class BADELEMENTLIST(ElementList): metadata = String(32) tag = ListElement(Bool) tag2 = ListElement(Bool)
class TESTELEMENTLIST(ElementList): metadata = String(32) tag = ListElement(Bool())