#!/usr/bin/python import csv import sys import selenium.common.exceptions import pysapweb.rfp import pysapweb.sap_profiles def get_profile(): try: browser = pysapweb.sap_profiles.load_firefox() return browser except selenium.common.exceptions.WebDriverException as e: print e.msg raise def to_bool(val): if val == 'True': return True elif val == 'False': return False else: raise ValueError("Expected True or False, got '%s'" % (val, )) def read_rfp_info(line): id = int(line['id']) name = line['name'] addr_fields = ('street', 'city', 'state', 'postal') address = [line['addr.'+f] for f in addr_fields] + ['US'] item_fields = ('date', 'gl', 'co', 'amount', 'desc') line_item = [line['item.'+f] for f in item_fields] payee = (to_bool(line['payee.mit']), line['payee.name']) return id, name, address, line_item, payee def create_rfps(fd): reader = csv.DictReader(fd) browser = get_profile() for line in reader: id, name, address, line_item, payee = read_rfp_info(line) args = dict( name=name, payee=payee, line_items=(line_item, ), ) if not payee[0]: args['address'] = address print "args=%s" % (args, ) rfp = pysapweb.rfp.create(browser, **args) print "Created voucher %d -> RFP %s" % (id, rfp) def create_test_rfp(): browser = get_profile() address = ('69 School St', 'Cambridge', 'MA', '02139', 'US') line_items = ( ('1/1/2014', '421000', '2720842', '12.50', 'test meeting food'), ) rfp = pysapweb.rfp.create(browser, name='test RFP', payee=(False, 'Alex Dehnert'), address=address, line_items=line_items, ) print "Created RFP %s" % (rfp, ) if __name__ == '__main__': create_rfps(sys.stdin)