def read_from_file(self, path): configdir = 'config' botsinit.generalinit(configdir) process_name = 'odoo_get_edi' botsglobal.logger = botsinit.initenginelogging(process_name) atexit.register(logging.shutdown) ta_info = { 'alt': '', 'charset': '', 'command': 'new', 'editype': 'edifact', 'filename': path, 'fromchannel': '', 'frompartner': '', 'idroute': '', 'messagetype': 'edifact', 'testindicator': '', 'topartner': ''} try: edifile = inmessage.parse_edi_file(**ta_info) except Exception as e: if '[A59]' in str(e): raise exceptions.Warning( _('Edi file has codification errors.'), _('Check accents and other characters not allowed ' 'in the edi document')) raise exceptions.Warning(_( 'It has occurred following error: %s.' % e)) json_ins = outmessage.json(edifile.ta_info) struc = [{ms.root.record['BOTSID']: json_class._node2json(json_ins, ms.root)} for ms in edifile.nextmessage()] return struc
def testedifact03(self): #~ #display query correct? incluuding propagating 'down the tree'? node.Node.fetchqueries = fetchqueries inn = inmessage.parse_edi_file( editype='edifact', messagetype='edifact', filename='botssys/infile/unitnode/0T0000000015.edi') inn.root.processqueries({}, 2) inn.root.fetchqueries() #~ print collectqueries comparequeries = { u'UNH': { 'reference': u'UNHREF', 'messagetype': u'ORDERSD96AUNEAN008', 'reference2': u'UNBREF', 'topartner': u'PARTNER2', 'alt': u'50EAB', 'alt2': u'50E9', 'frompartner': u'PARTNER1' }, u'UNB': { 'topartner': u'PARTNER2', 'reference2': u'UNBREF', 'reference': u'UNBREF', 'frompartner': u'PARTNER1' }, u'UNZ': { 'reference': u'UNBREF', 'reference2': u'UNBREF', 'topartner': u'PARTNER2', 'frompartner': u'PARTNER1' } } self.assertEqual(comparequeries, collectqueries)
def readwrite(filenamein="", filenameout="", **args): inn = inmessage.parse_edi_file(filename=filenamein, **args) out = outmessage.outmessage_init( filename=filenameout, divtext="", topartner="", **args ) # make outmessage object out.root = inn.root out.writeall()
def testedifact03(self): #~ #display query correct? incluuding propagating 'down the tree'? node.Node.fetchqueries = fetchqueries inn = inmessage.parse_edi_file(editype='edifact',messagetype='edifact',filename='botssys/infile/unitnode/0T0000000015.edi') inn.root.processqueries({},2) inn.root.fetchqueries() #~ print collectqueries comparequeries = {u'UNH': {'reference': u'UNHREF', 'messagetype': u'ORDERSD96AUNEAN008', 'reference2': u'UNBREF', 'topartner': u'PARTNER2', 'alt': u'50EAB', 'alt2': u'50E9', 'frompartner': u'PARTNER1'}, u'UNB': {'topartner': u'PARTNER2', 'reference2': u'UNBREF', 'reference': u'UNBREF', 'frompartner': u'PARTNER1'}, u'UNZ': {'reference': u'UNBREF', 'reference2': u'UNBREF', 'topartner': u'PARTNER2', 'frompartner': u'PARTNER1'}} self.assertEqual(comparequeries,collectqueries)
def testedifact01(self): inn = inmessage.parse_edi_file(editype='edifact',messagetype='invoicwithenvelope',filename='botssys/infile/unitnode/nodetest01.edi') out = outmessage.outmessage_init(editype='edifact',messagetype='invoicwithenvelope',filename='botssys/infile/unitnode/output/inisout03.edi',divtext='',topartner='') #make outmessage object out.root = inn.root #* getloop ************************************** count = 0 for t in inn.getloop({'BOTSID':'XXX'}): count += 1 self.assertEqual(count,0,'Cmplines') count = 0 for t in inn.getloop({'BOTSID':'UNB'}): count += 1 self.assertEqual(count,2,'Cmplines') count = 0 for t in out.getloop({'BOTSID':'UNB'},{'BOTSID':'XXX'}): count += 1 self.assertEqual(count,0,'Cmplines') count = 0 for t in out.getloop({'BOTSID':'UNB'},{'BOTSID':'UNH'}): count += 1 self.assertEqual(count,3,'Cmplines') count = 0 for t in inn.getloop({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'XXX'}): count += 1 self.assertEqual(count,0,'Cmplines') count = 0 for t in inn.getloop({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'}): count += 1 self.assertEqual(count,6,'Cmplines') count = 0 for t in inn.getloop({'BOTSID':'UNB'},{'BOTSID':'XXX'},{'BOTSID':'LIN'},{'BOTSID':'QTY'}): count += 1 self.assertEqual(count,0,'Cmplines') count = 0 for t in inn.getloop({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'XXX'}): count += 1 self.assertEqual(count,0,'Cmplines') count = 0 for t in inn.getloop({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'QTY'}): count += 1 self.assertEqual(count,6,'Cmplines') #* getcount, getcountmpath ************************************** count = 0 countlist=[5,0,1] nrsegmentslist=[132,10,12] for t in out.getloop({'BOTSID':'UNB'},{'BOTSID':'UNH'}): count2 = 0 for u in t.getloop({'BOTSID':'UNH'},{'BOTSID':'LIN'}): count2 += 1 count3 = t.getcountoccurrences({'BOTSID':'UNH'},{'BOTSID':'LIN'}) self.assertEqual(t.getcount(),nrsegmentslist[count],'Cmplines') self.assertEqual(count2,countlist[count],'Cmplines') self.assertEqual(count3,countlist[count],'Cmplines') count += 1 self.assertEqual(out.getcountoccurrences({'BOTSID':'UNB'},{'BOTSID':'UNH'}),count,'Cmplines') self.assertEqual(inn.getcountoccurrences({'BOTSID':'UNB'},{'BOTSID':'UNH'}),count,'Cmplines') self.assertEqual(inn.getcount(),sum(nrsegmentslist,4),'Cmplines') self.assertEqual(out.getcount(),sum(nrsegmentslist,4),'Cmplines') #* get, getnozero, countmpath, sort************************************** for t in out.getloop({'BOTSID':'UNB'},{'BOTSID':'UNH'}): self.assertRaises(botslib.MappingRootError,out.get,()) self.assertRaises(botslib.MappingRootError,out.getnozero,()) self.assertRaises(botslib.MappingRootError,out.get,0) self.assertRaises(botslib.MappingRootError,out.getnozero,0) t.sort({'BOTSID':'UNH'},{'BOTSID':'LIN','C212.7140':None}) start='0' for u in t.getloop({'BOTSID':'UNH'},{'BOTSID':'LIN'}): nextstart = u.get({'BOTSID':'LIN','C212.7140':None}) self.failUnless(start<nextstart) start = nextstart t.sort({'BOTSID':'UNH'},{'BOTSID':'LIN','1082':None}) start='0' for u in t.getloop({'BOTSID':'UNH'},{'BOTSID':'LIN'}): nextstart = u.get({'BOTSID':'LIN','1082':None}) self.failUnless(start<nextstart) start = nextstart self.assertRaises(botslib.MappingRootError,out.get,()) self.assertRaises(botslib.MappingRootError,out.getnozero,()) #~ # self.assertRaises(botslib.MpathError,out.get,()) first=True for t in out.getloop({'BOTSID':'UNB'}): if first: self.assertEqual('15',t.getcountsum({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN','1082':None}),'Cmplines') self.assertEqual('8',t.getcountsum({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'QTY','C186.6063':'47','C186.6060':None}),'Cmplines') self.assertEqual('0',t.getcountsum({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'QTY','C186.6063':'12','C186.6060':None}),'Cmplines') self.assertEqual('54.4',t.getcountsum({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'MOA','C516.5025':'203','C516.5004':None}),'Cmplines') first = False else: self.assertEqual('1',t.getcountsum({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'QTY','C186.6063':'47','C186.6060':None}),'Cmplines') self.assertEqual('0',t.getcountsum({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'QTY','C186.6063':'12','C186.6060':None}),'Cmplines') self.assertEqual('0',t.getcountsum({'BOTSID':'UNB'},{'BOTSID':'UNH'},{'BOTSID':'LIN'},{'BOTSID':'MOA','C516.5025':'203','C516.5004':None}),'Cmplines')
def readwrite(filenamein='', filenameout='', **args): inn = inmessage.parse_edi_file(filename=filenamein, **args) out = outmessage.outmessage_init(filename=filenameout, divtext='', topartner='', **args) # make outmessage object out.root = inn.root out.writeall()
def testedifact01(self): inn = inmessage.parse_edi_file( editype='edifact', messagetype='invoicwithenvelope', filename='botssys/infile/unitnode/nodetest01.edi') out = outmessage.outmessage_init( editype='edifact', messagetype='invoicwithenvelope', filename='botssys/infile/unitnode/output/inisout03.edi', divtext='', topartner='') #make outmessage object out.root = inn.root #* getloop ************************************** count = 0 for t in inn.getloop({'BOTSID': 'XXX'}): count += 1 self.assertEqual(count, 0, 'Cmplines') count = 0 for t in inn.getloop({'BOTSID': 'UNB'}): count += 1 self.assertEqual(count, 2, 'Cmplines') count = 0 for t in out.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'XXX'}): count += 1 self.assertEqual(count, 0, 'Cmplines') count = 0 for t in out.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}): count += 1 self.assertEqual(count, 3, 'Cmplines') count = 0 for t in inn.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'XXX'}): count += 1 self.assertEqual(count, 0, 'Cmplines') count = 0 for t in inn.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}): count += 1 self.assertEqual(count, 6, 'Cmplines') count = 0 for t in inn.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'XXX'}, {'BOTSID': 'LIN'}, {'BOTSID': 'QTY'}): count += 1 self.assertEqual(count, 0, 'Cmplines') count = 0 for t in inn.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, {'BOTSID': 'XXX'}): count += 1 self.assertEqual(count, 0, 'Cmplines') count = 0 for t in inn.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, {'BOTSID': 'QTY'}): count += 1 self.assertEqual(count, 6, 'Cmplines') #* getcount, getcountmpath ************************************** count = 0 countlist = [5, 0, 1] nrsegmentslist = [132, 10, 12] for t in out.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}): count2 = 0 for u in t.getloop({'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}): count2 += 1 count3 = t.getcountoccurrences({'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}) self.assertEqual(t.getcount(), nrsegmentslist[count], 'Cmplines') self.assertEqual(count2, countlist[count], 'Cmplines') self.assertEqual(count3, countlist[count], 'Cmplines') count += 1 self.assertEqual( out.getcountoccurrences({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}), count, 'Cmplines') self.assertEqual( inn.getcountoccurrences({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}), count, 'Cmplines') self.assertEqual(inn.getcount(), sum(nrsegmentslist, 4), 'Cmplines') self.assertEqual(out.getcount(), sum(nrsegmentslist, 4), 'Cmplines') #* get, getnozero, countmpath, sort************************************** for t in out.getloop({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}): self.assertRaises(botslib.MappingRootError, out.get, ()) self.assertRaises(botslib.MappingRootError, out.getnozero, ()) self.assertRaises(botslib.MappingRootError, out.get, 0) self.assertRaises(botslib.MappingRootError, out.getnozero, 0) t.sort({'BOTSID': 'UNH'}, {'BOTSID': 'LIN', 'C212.7140': None}) start = '0' for u in t.getloop({'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}): nextstart = u.get({'BOTSID': 'LIN', 'C212.7140': None}) self.failUnless(start < nextstart) start = nextstart t.sort({'BOTSID': 'UNH'}, {'BOTSID': 'LIN', '1082': None}) start = '0' for u in t.getloop({'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}): nextstart = u.get({'BOTSID': 'LIN', '1082': None}) self.failUnless(start < nextstart) start = nextstart self.assertRaises(botslib.MappingRootError, out.get, ()) self.assertRaises(botslib.MappingRootError, out.getnozero, ()) #~ # self.assertRaises(botslib.MpathError,out.get,()) first = True for t in out.getloop({'BOTSID': 'UNB'}): if first: self.assertEqual( '15', t.getcountsum({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, { 'BOTSID': 'LIN', '1082': None }), 'Cmplines') self.assertEqual( '8', t.getcountsum({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, { 'BOTSID': 'QTY', 'C186.6063': '47', 'C186.6060': None }), 'Cmplines') self.assertEqual( '0', t.getcountsum({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, { 'BOTSID': 'QTY', 'C186.6063': '12', 'C186.6060': None }), 'Cmplines') self.assertEqual( '54.4', t.getcountsum({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, { 'BOTSID': 'MOA', 'C516.5025': '203', 'C516.5004': None }), 'Cmplines') first = False else: self.assertEqual( '1', t.getcountsum({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, { 'BOTSID': 'QTY', 'C186.6063': '47', 'C186.6060': None }), 'Cmplines') self.assertEqual( '0', t.getcountsum({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, { 'BOTSID': 'QTY', 'C186.6063': '12', 'C186.6060': None }), 'Cmplines') self.assertEqual( '0', t.getcountsum({'BOTSID': 'UNB'}, {'BOTSID': 'UNH'}, {'BOTSID': 'LIN'}, { 'BOTSID': 'MOA', 'C516.5025': '203', 'C516.5004': None }), 'Cmplines')