def kreditor_fakturer_os1(self, doc): antal = 0 Betalingsdato = self.attr_val(doc, 'Betalingsdato', 'DateProperty') lobnr = nextval('Tilpbsid') rootTilpbs = db.Key.from_path('rootTilpbs', 'root') t = Tilpbs.get_or_insert('%s' % (lobnr), parent=rootTilpbs) t.Id = lobnr t.Delsystem = "OS1" t.Leverancetype = None t.Udtrukket = datetime.now() t.put() TempBetalforslaglinie = doc.getElementsByTagName( "TempBetalforslaglinie") for TempBetalforslaglinie in TempBetalforslaglinies: Nr = self.attr_val(TempBetalforslaglinie, 'Nr', 'IntegerProperty') Navn = self.attr_val(TempBetalforslaglinie, 'Navn', 'StringProperty') Advisbelob = self.attr_val(TempBetalforslaglinie, 'Advisbelob', 'FloatProperty') Fakid = self.attr_val(TempBetalforslaglinie, 'Fakid', 'IntegerProperty') Bankregnr = self.attr_val(TempBetalforslaglinie, 'Bankregnr', 'StringProperty') Bankkontonr = self.attr_val(TempBetalforslaglinie, 'Bankkontonr', 'StringProperty') Faknr = self.attr_val(TempBetalforslaglinie, 'Faknr', 'IntegerProperty') wadvistekst = 'Puls3060-' + Faknr overforselid = nextval('Overforselid') keyPerson = db.Key.from_path('Persons', 'root', 'Person', '%s' % (Nr)) keyTilpbs = db.Key.from_path('rootTilpbs', 'root', 'Tilpbs', '%s' % (lobnr)) o = Overforsel.get_or_insert('%s' % (overforselid), parent=keyPerson) o.Id = overforselid o.TilPbsref = keyTilpbs o.Nr = Nr o.Advistekst = wadvistekst o.Advisbelob = Advisbelob o.SFakID = Fakid o.SFaknr = Faknr o.Bankregnr = Bankregnr o.Bankkontonr = Bankkontonr o.Betalingsdato = bankdageplus(Betalingsdato, 0) o.put() antal += 1 return (lobnr, antal)
def post(self): doc = minidom.parse(self.request.body_file) ModelName = doc.documentElement.tagName if ModelName == 'Medlog': try: Id = nextval('Medlogid') except: Id = None try: Nr = doc.getElementsByTagName("Nr")[0].childNodes[0].data except: Nr = None root = db.Key.from_path('Persons', 'root', 'Person', '%s' % (Nr)) rec = Medlog.get_or_insert('%s' % (Id), parent=root) for attr_name, value in Medlog.__dict__.iteritems(): if isinstance(value, db.Property): attr_type = value.__class__.__name__ if not attr_type in ['_ReverseReferenceProperty']: val = self.attr_val(doc, attr_name, attr_type) logging.info('%s=%s' % (attr_name, val)) try: setattr(rec, attr_name, val) except: setattr(rec, attr_name, None) logging.info('==>%s<==>%s<==' % (attr_name, attr_type)) rec.put() deleteMemcache('Medlog') self.response.out.write('Status: 404')
def readgirokort042(self, sektion, transkode, rec): # -- pbssektionnr # -- pbstranskode belobmun = float(0) belob = int(0) # Medlem Nr try: Nr = int(rec[33:40]) except: Nr = 0 indbetalingskortid = nextval('Indbetalingskortid') root_indbetalingskort = db.Key.from_path('Persons', 'root', 'Person', '%s' % (Nr)) self.m_rec_indbetalingskort = Indbetalingskort.get_or_insert( '%s' % (indbetalingskortid), parent=root_indbetalingskort) self.m_rec_indbetalingskort.Id = indbetalingskortid self.m_rec_indbetalingskort.Pbssektionnr = sektion self.m_rec_indbetalingskort.Pbstranskode = transkode self.m_rec_indbetalingskort.Nr = Nr # debitorkonto self.m_rec_indbetalingskort.Debitorkonto = rec[25:40] # debgrpnr self.m_rec_indbetalingskort.Debgrpnr = rec[20:25] # Kortartkode self.m_rec_indbetalingskort.Kortartkode = rec[40:42] # FI-kreditor self.m_rec_indbetalingskort.Fikreditornr = rec[42:50] # Indbetalerident self.m_rec_indbetalingskort.Indbetalerident = rec[50:69] # dato if rec[55:61] != '000000': self.m_rec_indbetalingskort.Dato = datetime.strptime( '20' + rec[73:75] + '-' + rec[71:73] + '-' + rec[69:71], "%Y-%m-%d").date() else: self.m_rec_indbetalingskort.Dato = None # Beløb belob = int(rec[75:88]) belobmun = float(float(belob) / 100) self.m_rec_indbetalingskort.Belob = belobmun # Faknr self.m_rec_indbetalingskort.Faknr = int(rec[88:97]) qry = Person.all().filter('Nr =', self.m_rec_indbetalingskort.Nr) if qry.count() == 1: # Add tblindbetalingskort self.m_rec_indbetalingskort.put() else: self.m_rec_indbetalingskort.delete()
def readaftale042(self, sektion, transkode, rec): # -- pbssektionnr # -- pbstranskode # - transkode 0230, aktiv aftale # - transkode 0231, tilgang af ny betalingsaftale # - transkode 0232, aftale afmeldt af pengeinstitut # - transkode 0233, aftale afmeldt af kreditor # - transkode 0234, aftale afmeldt af betalingsservice # Medlem Nr try: Nr = int(rec[33:40]) except: Nr = 0 aftalelinid = nextval('Aftalelinid') root_aftalelin = db.Key.from_path('Persons', 'root', 'Person', '%s' % (Nr)) self.m_rec_aftalelin = Aftalelin.get_or_insert('%s' % (aftalelinid), parent=root_aftalelin) self.m_rec_aftalelin.Id = aftalelinid self.m_rec_aftalelin.Pbssektionnr = sektion self.m_rec_aftalelin.Pbstranskode = transkode self.m_rec_aftalelin.Nr = Nr # debitorkonto self.m_rec_aftalelin.Debitorkonto = rec[25:40] # debgrpnr self.m_rec_aftalelin.Debgrpnr = rec[20:25] # aftalenr self.m_rec_aftalelin.Aftalenr = int(rec[40:49]) # aftalestartdato if rec[49:55] != '000000': self.m_rec_aftalelin.Aftalestartdato = datetime.strptime( '20' + rec[53:55] + '-' + rec[51:53] + '-' + rec[49:51], "%Y-%m-%d").date() else: self.m_rec_aftalelin.Aftalestartdato = None # aftaleslutdato if rec[55:61] != '000000': self.m_rec_aftalelin.Aftaleslutdato = datetime.strptime( '20' + rec[59:61] + '-' + rec[57:59] + '-' + rec[55:57], "%Y-%m-%d").date() else: self.m_rec_aftalelin.Aftaleslutdato = None qry = Person.all().filter('Nr =', self.m_rec_aftalelin.Nr) if qry.count() == 1: # Add tblaftalelin self.m_rec_aftalelin.put() else: self.m_rec_aftalelin.delete()
def get(self): path = self.request.environ['PATH_INFO'] logging.info('path: %s' % (path)) mo = re.match("/sync/NrSerie/([0-9a-zA-Z]+)", path) if mo: if mo.groups()[0]: try: nrserie = mo.groups()[0] logging.info('nrserie: %s' % (nrserie)) nextnr = nextval('%s' % (nrserie)) logging.info('NrSerie=%s, nextnr=%s' % (nrserie, nextnr)) self.response.out.write('%s' % (nextnr)) except: self.response.out.write('Error')
def post(self): jData = '{ ' Nr = self.request.get('Nr') if Nr == '*': Nr = nextval('Personid') #Test for Valid dato bAkt_dato = False Akt_dato = self.request.get('Akt_dato') if Akt_dato: try: Testdato = datetime.strptime(Akt_dato, "%Y-%m-%d") bAkt_dato = True except: bAkt_dato = False if bAkt_dato: Id = nextval('tblMedlemlog') k = db.Key.from_path('Persons', 'root', 'Person', '%s' % (Nr)) p = Medlog.get_or_insert('%s' % (Id), parent=k) p.Id = Id p.Source = 'Medlog' p.Source_id = Id p.Nr = int(Nr) p.Logdato = datetime.now() p.Akt_id = int(self.request.get('Akt_id')) Akt_dato = self.request.get('Akt_dato') logging.info('Akt_dato: %s' % (Akt_dato)) p.Akt_dato = datetime.strptime(Akt_dato, "%Y-%m-%d").date() p.put() jData += '"bMedlemlog":"true"' jData += ',"MedlemlogTablePos":"%s"' % ( self.request.get('MedlemlogTablePos')) jData += ',"MedlemlogData":["%s","%s","%s","%s","%s","%s","%s"]' % ( p.Nr, p.Source, p.Source_id, p.Logdato, p.Akt_id, p.Akt_dato, p.Akt_id) deleteMemcache('Medlog') Akt_id = self.request.get('Akt_id') if Akt_id == '10': Kontingent_id = nextval('Kontingentid') t = db.Key.from_path('Persons', 'root', 'Person', '%s' % (Nr)) q = Kontingent.get_or_insert('%s' % (Kontingent_id), parent=t) q.Id = int(Kontingent_id) q.Nr = int(Nr) dtFradato = datetime.strptime(Akt_dato, "%Y-%m-%d") q.Fradato = date(dtFradato.year, dtFradato.month, dtFradato.day) q.beregnKontingent() q.put() Navn = self.request.get('Navn') jData += ',"bKontingent":"true"' jData += ',"KontingentTablePos":"%s"' % ( self.request.get('KontingentTablePos')) jData += ',"KontingentData":["%s","%s","%s","%s","%s","%s"]' % ( q.Nr, Navn, q.Fradato, q.Advisbelob, q.Tildato, q.Id) deleteMemcache('Kontingent') else: jData += ',"bKontingent":"false"' else: jData += '"bMedlemlog":"false"' root = db.Key.from_path('Persons', 'root') m = Person.get_or_insert('%s' % (Nr), parent=root) try: m.Navn = self.request.get('Navn') m.Kaldenavn = self.request.get('Kaldenavn') m.Adresse = self.request.get('Adresse') m.Postnr = self.request.get('Postnr') m.Bynavn = self.request.get('Bynavn') m.Telefon = self.request.get('Telefon') m.Email = self.request.get('Email') m.Kon = self.request.get('Kon') dt = datetime.strptime(self.request.get('FodtDato'), "%Y-%m-%d") m.FodtDato = dt.date() logging.info('%s=%s' % ('FodtDato', getattr(m, 'FodtDato'))) m.Bank = self.request.get('Bank') m.setNameTags() m.put() jData += ',"PersonTablePos":"%s"' % ( self.request.get('PersonTablePos')) jData += ',"PersonTableData": ["%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s","%s"]' % ( m.Nr, m.Navn, m.Kaldenavn, m.Adresse, m.Postnr, m.Bynavn, m.Email, m.Telefon, m.Kon, m.FodtDato, m.Bank, m.MedlemtilDato, m.MedlemAabenBetalingsdato) jData += ' }' deleteMemcache('Person') logging.info( 'UpdatemedlemHandler OK Navn: %s, Kaldenavn: %s' % (self.request.get('Navn'), self.request.get('Kaldenavn'))) logging.info('%s' % (jData)) self.response.headers["Content-Type"] = "application/json" self.response.out.write(jData) except: logging.info( 'UpdatemedlemHandler ERROR Navn: %s, Kaldenavn: %s' % (self.request.get('Navn'), self.request.get('Kaldenavn'))) self.response.out.write('ERROR from Server')
def aftaleoplysninger_fra_pbs(): rec = None leverance = None leverancespecifikation = None leverancedannelsesdato = None sektion = None wpbsfilesid = None wleveranceid = None AntalFiler = 0 qry = db.Query(Recievequeue).filter('Recieved_from_pbs =', False).filter('Onhold =', False) for self.m_rec_recievequeue in qry: data = self.m_rec_recievequeue.Pbsfileref.Data datalines = data.split(crlf) #Strip off PBCNET records if datalines[0][:6] == 'PBCNET': del datalines[0] if datalines[-1][:6] == 'PBCNET': del datalines[-1] #Test for BS 0603 record if datalines[0][16:20] == '0603' and datalines[0][:2] == 'BS': try: wpbsfilesid = self.m_rec_recievequeue.Pbsfileref.Pbsfilesref.Id AntalFiler += 1 leverancetype = '' sektion = '' leverancespecifikation = '' Seqnr = 0 for rec in datalines: Seqnr += 1 # Bestem Leverance Type if rstpbsfile.Seqnr == 1: if rec[:5] == 'BS002': # Leverance Start leverance = rec[16:20] leverancespecifikation = rec[20:30] leverancedannelsesdato = datetime.strptime( '20' + rec[53:55] + '-' + rec[51:53] + '-' + rec[49:51], "%Y-%m-%d") else: raise Pbs603Error( '241 - Foerste record er ikke en Leverance start record' ) if leverance == '0603': # -- Leverance 0603 qry = Frapbs.all().filter( 'Leverancespecifikation =', leverancespecifikation) antal = qry.count() if antal > 0: raise Pbs603Error( '242 - Leverance med pbsfilesid: %s og leverancespecifikation: %s er indlaest tidligere' % (wpbsfilesid, leverancespecifikation)) wleveranceid = nextval('leveranceid') pbsforsendelseid = nextval('Pbsforsendelseid') root_pbsforsendelse = db.Key.from_path( 'rootPbsforsendelse', 'root') self.m_rec_pbsforsendelse = Pbsforsendelse.get_or_insert( '%s' % (pbsforsendelseid), parent=root_pbsforsendelse) self.m_rec_pbsforsendelse.Id = pbsforsendelseid self.m_rec_pbsforsendelse.Delsystem = 'BS1' self.m_rec_pbsforsendelse.Leverancetype = '0603' self.m_rec_pbsforsendelse.Oprettetaf = 'Bet' self.m_rec_pbsforsendelse.Oprettet = datetime.now( ) self.m_rec_pbsforsendelse.Leveranceid = wleveranceid self.m_rec_pbsforsendelse.put() self.m_rec_recievequeue.Pbsfileref.Pbsfilesref.Pbsforsendelseref = self.m_rec_pbsforsendelse.key( ) self.m_rec_recievequeue.Pbsfileref.Pbsfilesref.put( ) frapbsid = nextval('Frapbsid') root_frapbs = db.Key.from_path( 'rootFrapbs', 'root') self.m_rec_frapbs = Frapbs.get_or_insert( '%s' % (frapbsid), parent=root_frapbs) self.m_rec_frapbs.Id = frapbsid self.m_rec_frapbs.Delsystem = 'BS1' self.m_rec_frapbs.Leverancetype = '0603' self.m_rec_frapbs.LBilagdato = None self.m_rec_frapbs.Pbsforsendelseref = self.m_rec_pbsforsendelse.key( ) self.m_rec_frapbs.Leverancespecifikation = leverancespecifikation self.m_rec_frapbs.Leverancedannelsesdato = leverancedannelsesdato self.m_rec_frapbs.Udtrukket = datetime.now() self.m_rec_frapbs.put() if leverance == '0603': # Leverance 0603 # Bestem Sektions Type if sektion == '': if rec[:5] == 'BS012': # Sektion Start sektion = rec[13:17] else: if not (rec[:5] == 'BS992' or rec[:5] == 'BS002'): raise Pbs603Error( '243 - Foerste record er ikke en Sektions start record' ) if rec[:5] == 'BS002': # Leverance start # BEHANDL: Leverance start pass # -****************************************************************************************************** # -****************************************************************************************************** elif sektion == '0210': # Sektion 0210 Aktive aftaler if rec[:5] == 'BS012' and rec[13:17] == '0210': # Sektion Start # BEHANDL: Sektion Start pass elif rec[:5] == 'BS042' and rec[ 13:17] == '0230': # Aktive aftaler # BEHANDL: Aktive aftaler self.readaftale042(sektion, '0230', rec) elif rec[:5] == 'BS092' and rec[ 13:17] == '0210': # Sektion S**t # BEHANDL: Sektion S**t sektion = '' else: raise Pbs603Error( '244 - Rec# %s ukendt: %s' % (Seqnr, rec)) # -****************************************************************************************************** # -****************************************************************************************************** elif sektion == '0212': # Sektion 0212 Til- og afgang af betalingsaftaler if rec[:5] == 'BS012' and rec[13:17] == '0212': # Sektion Start # BEHANDL: Sektion Start pass elif rec[:5] == 'BS042' and rec[ 13:17] == '0231': # Tilgang af nye betalingsaftaler # BEHANDL: Tilgang af nye betalingsaftaler self.readaftale042(sektion, '0231', rec) elif rec[:5] == 'BS042' and rec[ 13:17] == '0232': # Aftale afmeldt af pengeinstitut # BEHANDL: aftale afmeldt af pengeinstitut self.readaftale042(sektion, '0232', rec) elif rec[:5] == 'BS042' and rec[ 13:17] == '0233': # Aftaler afmeldt af kreditor # BEHANDL: aftaler afmeldt af kreditor self.readaftale042(sektion, '0233', rec) elif rec[:5] == 'BS042' and rec[ 13:17] == '0234': # Aftaler afmeldt af betalingsservice # BEHANDL: aftaler afmeldt af betalingsservice self.readaftale042(sektion, '0234', rec) elif rec[:5] == 'BS092' and rec[ 13:17] == '0212': # Sektion S**t # BEHANDL: Sektion S**t sektion = '' else: raise Pbs603Error( '245 - Rec# %s ukendt: %s' % (Seqnr, rec)) # -****************************************************************************************************** # -****************************************************************************************************** elif sektion == '0214': # Sektion 0214 Forfaldsoplysninger if rec[:5] == 'BS012' and rec[13:17] == '0214': # Sektion Start # BEHANDL: Sektion Start pass elif rec[:5] == 'BS042' and rec[ 13:17] == '0235': # Forfald automatisk betaling # BEHANDL: Forfald automatisk betaling pass elif rec[:5] == 'BS042' and rec[ 13:17] == '0295': # Forfald manuel betaling # BEHANDL: Forfald manuel betaling pass elif rec[:5] == 'BS092' and rec[ 13:17] == '0214': # Sektion S**t # BEHANDL: Sektion S**t sektion = '' else: raise Pbs603Error( '246 - Rec# %s ukendt: %s' % (Seqnr, rec)) # -****************************************************************************************************** # -****************************************************************************************************** elif sektion == '0215': # Sektion 0215 Debitornavn/-adresse if rec[:5] == 'BS012' and rec[13:17] == '0215': # Sektion Start # BEHANDL: Sektion Start pass elif rec[:5] == 'BS022' and rec[ 13:17] == '0240': # Navn/adresse på debitor # BEHANDL: Navn/adresse på debitor pass elif rec[:5] == 'BS092' and rec[ 13:17] == '0215': # Sektion S**t # BEHANDL: Sektion S**t sektion = '' else: raise Pbs603Error( '247 - Rec# %s ukendt: %s' % (Seqnr, rec)) # -****************************************************************************************************** # -****************************************************************************************************** elif sektion == '0217': # Sektion 0217 Oplysninger fra indbetalingskort if rec[:5] == 'BS012' and rec[13:17] == '0217': # Sektion Start # BEHANDL: Sektion Start pass elif rec[:5] == 'BS042' and rec[ 13:17] == '0295': # Oplysninger fra indbetalingskort # BEHANDL: Oplysninger fra indbetalingskort self.readgirokort042(sektion, '0295', rec) elif rec[:5] == 'BS092' and rec[ 13:17] == '0217': # Sektion S**t # BEHANDL: Sektion S**t sektion = '' else: raise Pbs603Error( '248 - Rec# %s ukendt: %s' % (Seqnr, rec)) # -****************************************************************************************************** # -****************************************************************************************************** elif sektion == '0219': # Sektion 0219 Aktive aftaler om Elektronisk Indbetalingskort if rec[:5] == 'BS012' and rec[13:17] == '0219': # Sektion Start # BEHANDL: Sektion Start pass elif rec[:5] == 'BS042' and rec[ 13:17] == '0230': # Aktiv aftale om Elektronisk Indbetalingskort # BEHANDL: Aktiv aftale om Elektronisk Indbetalingskort pass elif rec[:5] == 'BS092' and rec[ 13:17] == '0219': # Sektion S**t # BEHANDL: Sektion S**t sektion = '' else: raise Pbs603Error( '249 - Rec# %s ukendt: %s' % (Seqnr, rec)) # -****************************************************************************************************** # -****************************************************************************************************** elif rec[:5] == 'BS992': # Leverance s**t # BEHANDL: Leverance S**t leverance = '' else: raise Pbs603Error('250 - Rec# %s ukendt: %s' % (Seqnr, rec)) else: raise Pbs603Error('251 - Rec# %s ukendt: %s' % (Seqnr, rec)) except Pbs603Error, e: msg = '%s' % e.value if msg[:3] == '241': #241 - Første record er ikke en Leverance start record AntalFiler -= 1 elif msg[:3] == '242': #242 - Leverancen er indlæst tidligere AntalFiler -= 1 elif msg[:3] == '243': #243 - Første record er ikke en Sektions start record AntalFiler -= 1 elif msg[:3] == '244': #244 - Record ukendt AntalFiler -= 1 elif msg[:3] == '245': #245 - Record ukendt AntalFiler -= 1 elif msg[:3] == '246': #246 - Record ukendt AntalFiler -= 1 elif msg[:3] == '247': #247 - Record ukendt AntalFiler -= 1 elif msg[:3] == '248': #248 - Record ukendt AntalFiler -= 1 elif msg[:3] == '249': #249 - Record ukendt AntalFiler -= 1 elif msg[:3] == '250': #250 - Record ukendt AntalFiler -= 1 elif msg[:3] == '251': #251 - Record ukendt AntalFiler -= 1 else: AntalFiler -= 1 raise Pbs602Error(msg)
def betalinger_fra_pbs(self): rec = None leverancetype = None leverancespecifikation = None leverancedannelsesdato = None sektion = None wpbsfilesid = None wleveranceid = None AntalFiler = 0 crlf = '\n' # wpbsfilesid = 3450 #'--test test # leverancetype = '0602' # sektion = '0211' # rec = 'BS0420398564402360000000100000000001231312345678910120310000000012755000000125 3112031112030000000012755' qry = db.Query(Recievequeue).filter('Recieved_from_pbs =',False).filter('Onhold =',False) for self.m_rec_recievequeue in qry: data = self.m_rec_recievequeue.Pbsfileref.Data datalines = data.split(crlf) #Strip off PBCNET records if datalines[0][:6] == 'PBCNET': del datalines[0] if datalines[-1][:6] == 'PBCNET': del datalines[-1] #Test for BS 0602 record if datalines[0][16:20] == '0602' and datalines[0][:2] == 'BS': try: wpbsfilesid = self.m_rec_recievequeue.Pbsfileref.Pbsfilesref.Id AntalFiler += 1 leverancetype = '' sektion = '' leverancespecifikation = '' Seqnr = 0 for rec in datalines: Seqnr += 1 # -- Bestem Leverance Type if Seqnr == 1: if rec[0:5] == 'BS002': # -- Leverance Start leverancetype = rec[16:20] leverancespecifikation = rec[20:30] leverancedannelsesdato = datetime.strptime('20' + rec[53:55] + '-' + rec[51:53] + '-' + rec[49:51], "%Y-%m-%d") else: raise Pbs602Error('241 - Foerste record er ikke en Leverance start record') if leverancetype == '0602': # -- Leverance 0602 qry = Frapbs.all().filter('Leverancespecifikation =', leverancespecifikation) antal = qry.count() if antal > 0: pass raise Pbs602Error('242 - Leverance med pbsfilesid: %s og leverancespecifikation: %s er indlaest tidligere' % (wpbsfilesid, leverancespecifikation)) wleveranceid = nextval('leveranceid') pbsforsendelseid = nextval('Pbsforsendelseid') root_pbsforsendelse = db.Key.from_path('rootPbsforsendelse','root') self.m_rec_pbsforsendelse = Pbsforsendelse.get_or_insert('%s' % (pbsforsendelseid), parent=root_pbsforsendelse) self.m_rec_pbsforsendelse.Id = pbsforsendelseid self.m_rec_pbsforsendelse.Delsystem = 'BS1' self.m_rec_pbsforsendelse.Leverancetype = '0602' self.m_rec_pbsforsendelse.Oprettetaf = 'Bet' self.m_rec_pbsforsendelse.Oprettet = datetime.now() self.m_rec_pbsforsendelse.Leveranceid = wleveranceid self.m_rec_pbsforsendelse.put() self.m_rec_recievequeue.Pbsfileref.Pbsfilesref.Pbsforsendelseref = self.m_rec_pbsforsendelse.key() self.m_rec_recievequeue.Pbsfileref.Pbsfilesref.put() frapbsid = nextval('Frapbsid') root_frapbs = db.Key.from_path('rootFrapbs','root') self.m_rec_frapbs = Frapbs.get_or_insert('%s' % (frapbsid), parent=root_frapbs) self.m_rec_frapbs.Id = frapbsid self.m_rec_frapbs.Delsystem = 'BS1' self.m_rec_frapbs.Leverancetype = '0602' self.m_rec_frapbs.LBilagdato = None self.m_rec_frapbs.Pbsforsendelseref = self.m_rec_pbsforsendelse.key() self.m_rec_frapbs.Leverancespecifikation = leverancespecifikation self.m_rec_frapbs.Leverancedannelsesdato = leverancedannelsesdato self.m_rec_frapbs.Udtrukket = datetime.now() self.m_rec_frapbs.put() if leverancetype == '0602': # -- Leverance 0602********* # -- Bestem Sektions Type if sektion == '': if rec[0:5] == 'BS012': # -- Sektion Start sektion = rec[13:17] elif not (rec[0:5] == 'BS992' or rec[0:5] == 'BS002'): raise Pbs602Error('243 - Foerste record er ikke en Sektions start record') if rec[0:5] == 'BS002': # -- Leverance start # -- BEHANDL: Leverance start pass elif sektion == '0211': # -- Sektion 0211 Betalingsinformation if rec[0:5] == 'BS012' and rec[13:17] == '0211': # -- Sektion Start # -- BEHANDL: Sektion Start pass elif rec[0:5] == 'BS042' and rec[13:17] == '0236': # -- Gennemført automatisk betaling # -- BEHANDL: Gennemført automatisk betaling self.read042(sektion, '0236', rec) elif rec[0:5] == 'BS042' and rec[13:17] == '0237': # -- Afvist betaling # -- BEHANDL: Afvist betaling self.read042(sektion, '0237', rec) elif rec[0:5] == 'BS042' and rec[13:17] == '0238': # -- Afmeldt betaling # -- BEHANDL: Afmeldt betaling self.read042(sektion, '0238', rec) elif rec[0:5] == 'BS042' and rec[13:17] == '0239': # -- Tilbagef?rt betaling # -- BEHANDL: Tilbagef?rt betaling self.read042(sektion, '0239', rec) elif rec[0:5] == 'BS092' and rec[13:17] == '0211': # -- Sektion S**t # -- BEHANDL: Sektion S**t sektion = '' else: raise Pbs602Error('244 - Rec# %s ukendt: %s' % (Seqnr, rec)) elif sektion == '0215': # -- Sektion 0215 FI-Betalingsinformation if rec[0:5] == 'BS012' and rec[13:17] == '0215': # -- Sektion Start # -- BEHANDL: Sektion Start pass elif rec[0:5] == 'BS042' and rec[13:17] == '0297': # -- Gennemført FI-betaling # -- BEHANDL: Gennemført FI-betaling self.read042(sektion, '0297', rec) elif rec[0:5] == 'BS042' and rec[13:17] == '0299': # -- Tilbageført FI-betaling # -- BEHANDL: Tilbagef?rt FI-betaling self.read042(sektion, '0299', rec) elif rec[0:5] == 'BS092' and rec[13:17] == '0215': # -- Sektion S**t # -- BEHANDL: Sektion S**t sektion = '' else: raise Pbs602Error('245 - Rec# %s ukendt: %s' % (Seqnr, rec)) elif rec[0:5] == 'BS992': # -- Leverance s**t # -- BEHANDL: Leverance S**t leverancetype = '' else: raise Pbs602Error('246 - Rec# %s ukendt: %s' % (Seqnr, rec)) else: raise Pbs602Error('247 - Rec# %s ukendt: %s' % (Seqnr, rec)) # s**t rstpbsfile # -- Update indbetalingsbelob in Bet for rec_bet in self.m_rec_frapbs.listBet: SumIndbetalingsbelob = 0.0 for rec_betlin in rec_bet.listBetlin: SumIndbetalingsbelob += rec_betlin.Indbetalingsbelob rec_bet.Indbetalingsbelob = SumIndbetalingsbelob rec_bet.put() except Pbs602Error, e: msg = '%s' % e.value if msg[:3] == '241': #241 - Første record er ikke en Leverance start record AntalFiler -= 1 elif msg[:3] == '242': #242 - Leverancen er indlæst tidligere AntalFiler -= 1 elif msg[:3] == '243': #243 - Første record er ikke en Sektions start record AntalFiler -= 1 elif msg[:3] == '244': #244 - Record ukendt AntalFiler -= 1 elif msg[:3] == '245': #245 - Record ukendt AntalFiler -= 1 elif msg[:3] == '246': #246 - Record ukendt AntalFiler -= 1 elif msg[:3] == '247': #247 - Record ukendt AntalFiler -= 1 else: AntalFiler -= 1 raise Pbs602Error(msg)
def read042(self, sektion, transkode, rec): fortegn = None belobmun = None belob = None # -- pbssektionnr # -- pbstranskode # - transkode 0236, gennemført automatisk betaling # - transkode 0237, afvist automatisk betaling # - transkode 0238, afmeldt automatisk betaling # - transkode 0239, tilbageført betaling # -- debitorkonto if sektion == '0211': Nr = int(rec[33:40] ) Debitorkonto = rec[25:40] elif sektion == '0215': Nr = int(rec[37:44] ) Debitorkonto = rec[29:44] else: Nr = None Debitorkonto = None betlinid = nextval('Betlinid') root_betlin = db.Key.from_path('Persons','root','Person','%s' % (Nr)) self.m_rec_betlin = Betlin.get_or_insert('%s' % (betlinid), parent=root_betlin) self.m_rec_betlin.Id = betlinid self.m_rec_betlin.Pbssektionnr = sektion self.m_rec_betlin.Pbstranskode = transkode self.m_rec_betlin.Nr = Nr self.m_rec_betlin.Debitorkonto = Debitorkonto # -- aftalenr if sektion == '0211': self.m_rec_betlin.Aftalenr = int(rec[40:49] ) else: self.m_rec_betlin.Aftalenr = None # -- pbskortart if sektion == '0215': self.m_rec_betlin.Pbskortart = rec[44:46] else: self.m_rec_betlin.Pbskortart = None # -- pbsgebyrbelob if sektion == '0215': fortegn = int(rec[46:46+1] ) belob = int(rec[47:47+5] ) belobmun = float(belob / 100) if fortegn == 0: self.m_rec_betlin.Pbsgebyrbelob = float(0) elif fortegn == 1: self.m_rec_betlin.Pbsgebyrbelob = belobmun else: self.m_rec_betlin.Pbsgebyrbelob = float(0) else: self.m_rec_betlin.Pbsgebyrbelob = float(0) # -- betalingsdato if sektion == '0211': if rec[49:55] != '000000': self.m_rec_betlin.Betalingsdato = datetime.strptime('20' + rec[53:55] + '-' + rec[51:53] + '-' + rec[49:51], "%Y-%m-%d").date() else: self.m_rec_betlin.Betalingsdato = None elif sektion == '0215': if rec[52:58] != '000000': self.m_rec_betlin.Betalingsdato = datetime.strptime('20' + rec[56:58] + '-' + rec[54:56] + '-' + rec[52:54], "%Y-%m-%d").date() else: self.m_rec_betlin.Betalingsdato = None else: self.m_rec_betlin.Betalingsdato = None # -- belob if sektion == '0211': fortegn = int(rec[55:56] ) belob = int(rec[56:69] ) belobmun = float(belob / 100) if fortegn == 0: self.m_rec_betlin.Belob = float(0) elif fortegn == 1: self.m_rec_betlin.Belob = belobmun elif fortegn == 2: self.m_rec_betlin.Belob = (belobmun * -1) else: self.m_rec_betlin.Belob = None elif sektion == '0215': fortegn = int(rec[58:59] ) belob = int(rec[59:72] ) belobmun = float(belob / 100) if fortegn == 0: self.m_rec_betlin.Belob = float(0) elif fortegn == 1: self.m_rec_betlin.Belob = belobmun else: self.m_rec_betlin.Belob = None else: self.m_rec_betlin.Belob = None # -- faknr if sektion == '0211': self.m_rec_betlin.Faknr = int('0' + rec[69:78].strip()) elif sektion == '0215': self.m_rec_betlin.Faknr = int('0' + rec[72:81].strip()) else: self.m_rec_betlin.Faknr = None # -- pbsarkivnr if sektion == '0215': self.m_rec_betlin.Pbsarkivnr = rec[81:103] else: self.m_rec_betlin.Pbsarkivnr = None # -- indbetalingsdato if rec[103:109] != '000000': self.m_rec_betlin.Indbetalingsdato = datetime.strptime('20' + rec[107:109] + '-' + rec[105:107] + '-' + rec[103:105], "%Y-%m-%d").date() else: self.m_rec_betlin.Indbetalingsdato = None # -- bogforingsdato if rec[109:115] != '000000': self.m_rec_betlin.Bogforingsdato = datetime.strptime('20' + rec[113:115] + '-' + rec[111:113] + '-' + rec[109:111], "%Y-%m-%d").date() else: self.m_rec_betlin.Bogforingsdato = None # -- indbetalingsbelob if sektion == '0211': fortegn = int(rec[55:56] ) belob = int(rec[115:128] ) belobmun = float(belob / 100) if fortegn == 0: self.m_rec_betlin.Indbetalingsbelob = 0 elif fortegn == 1: self.m_rec_betlin.Indbetalingsbelob = belobmun elif fortegn == 2: self.m_rec_betlin.Indbetalingsbelob = (belobmun * -1) else: self.m_rec_betlin.Indbetalingsbelob = None elif sektion == '0215': fortegn = int(rec[58:59] ) belob = int(rec[115:128] ) belobmun = float(belob / 100) if fortegn == 0: self.m_rec_betlin.Indbetalingsbelob = float(0) elif fortegn == 1: self.m_rec_betlin.Indbetalingsbelob = belobmun else: self.m_rec_betlin.Indbetalingsbelob = None else: self.m_rec_betlin.Indbetalingsbelob = None # Find or Create Bet record for wrec_bet in self.m_rec_frapbs.listBet: if wrec_bet.Pbssektionnr == sektion and wrec_bet.Transkode == transkode and wrec_bet.Bogforingsdato == self.m_rec_betlin.Bogforingsdato: self.m_rec_bet = wrec_bet break else: betid = nextval('Betid') root_bet = db.Key.from_path('rootBet','root') self.m_rec_bet = Bet.get_or_insert('%s' % (betid), parent=root_bet) self.m_rec_bet.Id = betid self.m_rec_bet.Pbssektionnr = sektion self.m_rec_bet.Transkode = transkode self.m_rec_bet.Bogforingsdato = self.m_rec_betlin.Bogforingsdato self.m_rec_bet.Frapbsref = self.m_rec_frapbs.key() self.m_rec_bet.put() # Add Betlin self.m_rec_betlin.Betref = self.m_rec_bet.key() self.m_rec_betlin.put()
def krdfaktura_overfoersel_action(self, lobnr): rec = '' seq = 0 wleveranceid = None wdispositionsdato = None whour = None wbankdage = None # Betalingsoplysninger belobint = None # Tællere antalos5 = 0 # Antal OS5: Antal foranstående OS5 records belobos5 = 0 # Beløb: Nettobeløb i OS5 records antalsek = 0 # Antal sektioner i leverancen antalos5tot = 0 # Antal OS5: Antal foranstående OS5 records belobos5tot = 0 # Beløb: Nettobeløb i OS5 records nu = datetime.now(cet).replace(tzinfo=None) whour = nu.hour if whour > 17: wbankdage = 3 else: wbankdage = 2 wdispositionsdato = bankdageplus(nu, wbankdage) tilpbskey = db.Key.from_path('rootTilpbs', 'root', 'Tilpbs', '%s' % (lobnr)) rsttil = Tilpbs.get(tilpbskey) if not rsttil: raise PbsOverforselError( '101 - Der er ingen PBS forsendelse for id: %s' % (lobnr)) if rsttil.Pbsforsendelseref: raise PbsOverforselError( '102 - Pbsforsendelse for id: %s er allerede sendt' % (lobnr)) qry = rsttil.listOverforsel if qry.count() == 0: raise PbsOverforselError( '103 - Der er ingen pbs transaktioner for tilpbsid: %s' % (lobnr)) if not rsttil.Udtrukket: rsttil.Udtrukket = datetime.now() if not rsttil.Bilagdato: rsttil.Bilagdato = date.today() if not rsttil.Delsystem: rsttil.Delsystem = "OS1" if not rsttil.Leverancetype: rsttil.Leverancetype = "" wleveranceid = nextval("leveranceid") qry = Kreditor.all() qry.filter("Delsystem =", rsttil.Delsystem) krd = qry.fetch(1)[0] # -- Leverance Start - OS1 # - rstkrd.Datalevnr - Dataleverandørnr.: Dataleverandørens SE-nummer # - wleveranceid - Leveranceidentifikation: Løbenummer efter eget valg rec += self.writeOS1(krd.Datalevnr, wleveranceid) # Start loop over betalinger i tbloverforsel for rec_overfoersel in rsttil.listOverforsel: if rec_overfoersel.Betalingsdato == None: Betalingsdato = wdispositionsdato else: Betalingsdato = rec_overfoersel.Betalingsdato if Betalingsdato < wdispositionsdato: Betalingsdato = wdispositionsdato rec_overfoersel.Betalingsdato = Betalingsdato #opdater aktuel betalingsdato # Sektion start – (OS2) antalos5 = 0 belobos5 = 0 # -- OS2 # - Betalingsdato - Dispositionsdato # - krd.regnr - Reg.nr.: Overførselsregistreringsnummer # - krd.kontonr - Kontonr.: Overførselskontonummer # - krd.datalevnr - Dataleverandørnr.: Dataleverandørens SE-nummer rec += self.writeOS2(Betalingsdato, krd.Regnr, krd.Kontonr, krd.Datalevnr) antalsek += 1 # -- Forfald betaling if rec_overfoersel.Advisbelob > 0: belobint = int(rec_overfoersel.Advisbelob * 100) belobos5 += belobint belobos5tot += belobint else: belobint = 0 # -- OS5 # - debinfo.bankregnr - Betalingsmodtager registreringsnummer # - debinfo.bankkontonr - Betalingsmodtager kontonummer # - belobint - Beløb: Beløb i øre uden fortegn # - Betalingsdato - Dispositionsdato # - krd.regnr - Reg.nr.: Overførselsregistreringsnummer # - krd.kontonr - Kontonr.: Overførselskontonummer # - deb.advistekst - Tekst på Betalingsmodtagers kontoudtog # - deb.SFakID - Ref til betalingsmodtager til eget brug rec += self.writeOS5(rec_overfoersel.Bankregnr, rec_overfoersel.Bankkontonr, belobint, Betalingsdato, krd.Regnr, krd.Kontonr, rec_overfoersel.Advistekst, rec_overfoersel.SFakID) antalos5 += 1 antalos5tot += 1 # -- Sektion s**t – (OS8) # - OS8 # - antalos5 - Antal 042: Antal foranstående 042 records # - belobos5 - Beløb: Nettobeløb i 042 records # - Betalingsdato - Dispositionsdato # - krd.regnr - Reg.nr.: Overførselsregistreringsnummer # - krd.kontonr - Kontonr.: Overførselskontonummer # - krd.datalevnr - Dataleverandørnr.: Dataleverandørens SE-nummer rec += self.writeOS8(antalos5, belobos5, Betalingsdato, krd.Regnr, krd.Kontonr, krd.Datalevnr) # -- Leverance s**t - (OS9) # --OS9 # - antalos5tot - Antal 042: Antal foranstående 042 records # - belobos5tot - Beløb: Nettobeløb i 042 records # - krd.datalevnr - Dataleverandørnr.: Dataleverandørens SE-nummer rec += self.writeOS9(antalos5tot, belobos5tot, krd.Datalevnr) pbsforsendelseid = nextval('Pbsforsendelseid') root_pbsforsendelse = db.Key.from_path('rootPbsforsendelse', 'root') rec_pbsforsendelse = Pbsforsendelse.get_or_insert( '%s' % (pbsforsendelseid), parent=root_pbsforsendelse) rec_pbsforsendelse.Id = pbsforsendelseid rec_pbsforsendelse.Delsystem = rsttil.Delsystem rec_pbsforsendelse.Leverancetype = rsttil.Leverancetype rec_pbsforsendelse.Oprettetaf = 'Udb' rec_pbsforsendelse.Oprettet = datetime.now() rec_pbsforsendelse.Leveranceid = wleveranceid rec_pbsforsendelse.put() rsttil.Udtrukket = datetime.now() rsttil.Leverancespecifikation = '%s' % (wleveranceid) rsttil.Pbsforsendelseref = rec_pbsforsendelse.key() rsttil.put() pbsfilesid = nextval('Pbsfilesid') idlev = nextval('idlev') root_pbsfiles = db.Key.from_path('rootPbsfiles', 'root') rec_pbsfiles = Pbsfiles.get_or_insert('%s' % (pbsfilesid), parent=root_pbsfiles) rec_pbsfiles.Id = pbsfilesid rec_pbsfiles.Idlev = idlev rec_pbsfiles.Pbsforsendelseref = rec_pbsforsendelse.key() rec_pbsfiles.put() root_pbsfile = db.Key.from_path('rootPbsfile', 'root') rec_pbsfile = Pbsfile.get_or_insert('%s' % (pbsfilesid), parent=root_pbsfile) rec_pbsfile.Id = pbsfilesid rec_pbsfile.Pbsfilesref = rec_pbsfiles.key() rec_pbsfile.Data = rec rec_pbsfile.put() sendqueueid = rec_pbsfile.add_to_sendqueue() return sendqueueid