def fCreate_FinanceCharges(pMonth):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("finance" + str(pMonth))
    logging.debug('Create_FinanceCharges: ' + str(pMonth))

    allClients = names_Init.fInit_Clients()
    count = 0

    myTools.getFocus()

    # client list
    type("i",KeyModifier.CTRL)

    for oneClient in allClients:
        count += 1
        
        # always create finance charge for first 5 clients 
        # then create finance charge for 1 out of 35 next clients
        
        if (count in range(6)) or ((count + pMonth) % 35 == 0):
            financeCharge = str(count) + ".99"            
            fCreate_OneFinanceCharge(oneClient,count,pMonth,financeCharge)
        else:
            logging.debug('-- skip: ' + str(pMonth) + "-" + oneClient)

    type(Key.F4,KeyModifier.CTRL)
    myTools.sectionEndTimeStamp()
def fPrecision_Setup():
    # - - - - - - - - - - - - - - - - - - - - - - - - - #

    myTools.sectionStartTimeStamp("ba Precision")
    logging.debug("ba Precision")

    # open client
    type("i", KeyModifier.CTRL)
    time.sleep(1)
    type("BA-Precision")
    type(Key.ENTER)
    time.sleep(1)

    # get to Rounding field
    if int(Settings.tsVersion) < 2015:
        myTools.pressF6(4)
        time.sleep(1)
        myTools.pressTAB(8)
    else:
        myTools.pressF6(7)
        time.sleep(1)
        myTools.pressTAB(7)

    time.sleep(1)
    type(Key.UP)

    # save and close
    type("s", KeyModifier.CTRL)

    type(Key.F4, KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4, KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fCreate_CreditsForMonth(pMonth):
    # ---------------------------------------------------#

    myTools.sectionStartTimeStamp("credits" + str(pMonth))
    logging.debug("Create_CreditsForMonth: " + str(pMonth))

    allClients = names_Init.fInit_Clients()
    count = 0

    myTools.getFocus()

    # open a/r tran list
    type("t", KeyModifier.CTRL)
    myTools.waitForTransList()

    for oneClient in allClients:
        count += 1

        # always create credits for first 5 clients
        # then create credits for 1 out of 9 next clients

        if (count in range(6)) or ((count + pMonth) % 9 == 0):
            creditAmount = pMonth + pMonth / float(100)
            fCreate_OneCredit(oneClient, count, pMonth, creditAmount)
        else:
            logging.debug("-- skip: " + str(pMonth) + "-" + oneClient)

    type(Key.F4, KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4, KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
    myTools.checkProcesses()
def fSetup_ClientHold():
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("set up client hold")
    logging.debug('set up client hold')

    # make sure timeslips has focus
    myTools.getFocus()

    logging.debug('- open client list')
    type("n",KeyModifier.ALT)
    type("i")
    time.sleep(1)

    fHold_Time_NextBill_Hours()
    fHold_Exp_AllBills_Amount()
    fHold_Bill_AllBills_AmountAndHours()
    fHold_AR_AllBills()

    time.sleep(1)
    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fContingencyExp_Setup2(pBAClient):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp(pBAClient + "2")
    logging.debug(pBAClient + "2")

# open client
    myTools.openClient(pBAClient)

# get to arrangement field for exp
    ba__Common.fMoveto_BAPage()
    myTools.pressTAB(6)
    
# enter details    
    type(Key.ENTER)
    time.sleep(1)
    
#    if int(Settings.tsVersion) > 2014:
#        myTools.pressTAB(1)
#    else:
    myTools.pressTAB(2)
    
    type(Key.DOWN)
    
# save and close    
    type(Key.ENTER)
    type("s",KeyModifier.CTRL)
    
    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4,KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fFundsAccouts_Setup():
# - - - - - - - - - - - - - - - - - - - - - - - - - #

    myTools.sectionStartTimeStamp("funds account")
    logging.debug('FundsAccount_Setup')

    # make sure timeslips has focus
    myTools.getFocus()
    # switch date to 1/27/13
    fSet_BillDate(1)

    fBankAccount_Create()

    # open client list
    type("i",KeyModifier.CTRL)
    time.sleep(1)

    clientList = ["Hadley","Halifax"]
    count = 0    

    for oneCli in clientList:
        count += 1
        fFundsAccount_Create(oneCli,count)

    type(Key.F4,KeyModifier.CTRL)
    myTools.sectionEndTimeStamp()
def fEdit_Client():
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("edit client")
    logging.debug('Edit_Client')

    # make sure timeslips has focus
    myTools.getFocus()

    fEdit_CliGenInfo()
    fEdit_CliCustom()
    fEdit_CliRatesNotes()

    logging.debug('- save')
    type("s",KeyModifier.CTRL)
    time.sleep(1)

    fEdit_DefaultRates()
    fEdit_InterestSetting()

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fCreate_ReplacementSlips(pReplClient):
    # ---------------------------------------------------#

    myTools.sectionStartTimeStamp("replacement slips")
    logging.debug("fCreate_ReplacementSlips")

    type("m", KeyModifier.CTRL)
    time.sleep(1)

    # create some time slips
    slips_Create.Create_OneSlip("t", "TomH", "gen004", pReplClient, 1)  # override - General
    slips_Create.Create_OneSlip("t", "CoreyM", "gen005", pReplClient, 2)  # donotbill - General
    slips_Create.Create_OneSlip("t", "SamS", "lnd011", pReplClient, 3)  # billable - Landscape
    slips_Create.Create_OneSlip("t", "ShawnR", "lnd010", pReplClient, 4)  # nocharge - Landscape
    slips_Create.Create_OneSlip("t", "JamesR", "lnd011", pReplClient, 5)  # billable - Landscape

    # create some expense slips
    slips_Create.Create_OneSlip("e", "ShawnR", "e006", pReplClient, 6)  # donotbill - Supplies
    slips_Create.Create_OneSlip("e", "SamS", "e009", pReplClient, 7)  # billable - Supplies
    slips_Create.Create_OneSlip("e", "CoreyM", "e003", pReplClient, 8)  # nocharge - Supplies
    slips_Create.Create_OneSlip("e", "TomH", "e008", pReplClient, 9)  # override - Supplies
    slips_Create.Create_OneSlip("e", "JamesR", "e010", pReplClient, 10)  # billable - Other

    type(Key.F4, KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4, KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fPrint_FeeAllocPer(pReportMonth,pRepExt):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("print FeeAllocPer")

    # name report file: ex: PreBill-03
    reportName = myTools.buildRepName("FeeAllocPer",pRepExt)
    logging.debug('Print_FeeAllocPer: ' + reportName)

    # make sure timeslips has focus
    myTools.getFocus()

    logging.debug('- open FeeAllocPer')
    type("r",KeyModifier.ALT)
    type("t")
    time.sleep(1)
    myTools.pressDOWN(3)
    time.sleep(1)    

    # choose csv
    myTools.pressSHIFTTAB(2)
    type("c")
    time.sleep(1)

    myTools.enterCurrentMonthOnList(pReportMonth)

    # print the report
    type(Key.ENTER)    
    time.sleep(1)

    myTools.finishReport(reportName)
def fSetup_SplitBills():
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("setup split")
    logging.debug('- set up split bills')

    myTools.getFocus()

    # open split billing rule list
    type("b",KeyModifier.ALT)
    time.sleep(1)
    type("i")
    time.sleep(1)

    fSetup_Primary("Beverly")

    # new secondary
    myTools.pressTAB(7)   
    fSetup_Secondary("Peabody",15)
    fSetup_Secondary("Saugus",20)

    # done
    myTools.pressTAB(4)
    type(Key.SPACE)

    myTools.sectionEndTimeStamp()
    backup_Data.fBackup_Checkpoint("split")    
Exemple #11
0
def fStartTS_CreateNewDB():
#---------------------------------------------------#
    """
    main driver
    - calls fDelete_DataFolder, fStart_TS, fCheckFor_PEP, 
    - calls fEnter_NewDBWizard, fEnter_GeneralSettings, fEnter_GettingStartedWizard
    - makes backup "-new"
    """    

    myTools.sectionStartTimeStamp("new db")    
    logging.debug('StartTS_CreateNewDB')

    popup("make sure Timeslips is closed")

    fDelete_DataFolder()
    fStart_TS()
    fCheckFor_PEP()
    fEnter_NewDBWizard()
    fEnter_GeneralSettings()
    fEnter_GettingStartedWizard()

# backup
    time.sleep(1)
    if exists("backup_database.png"):
        click("no_btn.png")
        time.sleep(1)
        type("n")

    fCheckFor_BillingDate()
    fCheckFor_SPS()
    fCheckFor_PEP()  
    
    myTools.sectionEndTimeStamp()
    backup_Data.fBackup_Checkpoint("new")
def fCreate_Discounts(pMonth):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("discounts" + str(pMonth))
    logging.debug('fCreate_Discounts: ' + str(pMonth))

    # list the client that will get a refund each month
    discountClients = ["Natick","Orange","Oakham","Oak Bluffs","Southampton","Otis","Oxford","Leyden","Monroe","Monson","Methuen","Uxbridge"]
    oneClient = discountClients[(pMonth - 1)]

    myTools.getFocus()

    # open a/r tran list
    type("t",KeyModifier.CTRL)
    myTools.waitForTransList()

    discountAmount = 49 + pMonth/float(100)
    fCreate_OneDiscount(oneClient,pMonth,discountAmount)

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)
    
    myTools.sectionEndTimeStamp()
    myTools.checkProcesses()
def fCreate_Categories():
    # ---------------------------------------------------#

    myTools.sectionStartTimeStamp("categories")

    logging.debug("fCreate_Categories")

    # make sure timeslips has focus
    myTools.getFocus()

    logging.debug("- open category list")
    type("p", KeyModifier.ALT)

    # hot keys changed for TS2014
    if int(Settings.tsVersion) < 2014:
        type("i")
    else:
        type("o")
    time.sleep(1)

    for category in ["Construction", "General", "Landscape", "Hardware", "Supplies", "Materials", "Other"]:
        logging.debug("-- create: " + category)
        type("n", KeyModifier.ALT)
        type(category)
        type(Key.ENTER)

    logging.debug("- close list")
    myTools.pressTAB(4)
    type(Key.ENTER)

    myTools.sectionEndTimeStamp()
def fProgressTotal_Setup3():
    # - - - - - - - - - - - - - - - - - - - - - - - - - #

    myTools.sectionStartTimeStamp("ba ProgressTot3")
    logging.debug("ba ProgressTot3")

    # open client
    type("i", KeyModifier.CTRL)
    time.sleep(1)
    type("BA-ProgressTot")
    type(Key.ENTER)
    time.sleep(1)

    # get to arrangement field for time
    ba__Common.fMoveto_BAPage()
    myTools.pressTAB(5)

    # enter details
    type(Key.ENTER)
    time.sleep(1)
    type("700")
    time.sleep(1)

    type("u", KeyModifier.ALT)
    type(Key.END)
    type(Key.ENTER)

    # save and close
    type("s", KeyModifier.CTRL)

    type(Key.F4, KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4, KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fCreate_Transfers(pMonth):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("transfers" + str(pMonth))
    logging.debug('Create_Transfers: ' + str(pMonth))

    allClients = ["East.Bridgewater","North.Adams","West.Boylston"]
    count = 0

    myTools.getFocus()

    # open a/r tran list
    type("t",KeyModifier.CTRL)
    myTools.waitForTransList()

    for oneClient in allClients:
        count += 1
        transferAmount = 10 + int(count) + pMonth/float(100)        
        fCreate_OneTransfer(oneClient,count,pMonth,transferAmount)

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)
    
    myTools.sectionEndTimeStamp()
    myTools.checkProcesses()
def fCreate_Writeoffs(pMonth):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("writeoffs" + str(pMonth))
    logging.debug('Create_Writeoffs: ' + str(pMonth))

    count = 0

    myTools.getFocus()

    # open a/r tran list
    type("t",KeyModifier.CTRL)
    myTools.waitForTransList()

    clientList = ["Blackstone","Carver"]
    for woClient in clientList:    
        count += 1
        if woClient == "Blackstone":
            woAmount = 2
        else:
            woAmount = 3
            
        woAmount = woAmount + pMonth/float(100)            
        fCreate_OneWriteOff(woClient,count,pMonth,woAmount)

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)
    
    myTools.sectionEndTimeStamp()
    myTools.checkProcesses()
def fProgressTotal_Setup1():
    # - - - - - - - - - - - - - - - - - - - - - - - - - #

    myTools.sectionStartTimeStamp("ba ProgressTot1")
    logging.debug("ba ProgressTot1")

    # open client
    type("i", KeyModifier.CTRL)
    time.sleep(1)
    type("BA-ProgressTot")
    type(Key.ENTER)
    time.sleep(1)

    # get to arrangement field for time
    ba__Common.fMoveto_BAPage()
    myTools.pressTAB(4)

    # switch to minimum
    type(Key.HOME)
    myTools.pressDOWN(11)
    # enter details
    type(Key.TAB)
    type(Key.ENTER)
    time.sleep(1)
    type("500")
    time.sleep(1)
    type(Key.ENTER)
    # save and close
    type("s", KeyModifier.CTRL)

    type(Key.F4, KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4, KEY_CTRL)

    myTools.sectionEndTimeStamp()
def fPrint_SlipFields(pReportMonth,pRepExt):
#---------------------------------------------------#

    # this does not include applied fields, since we fixed some stuff in ts2016

    myTools.sectionStartTimeStamp("print slipfields")

    # name report file: ex: UDSlip1-03
    reportName = myTools.buildRepName("UDSlip2",pRepExt)
    logging.debug('Print_UDSlip2: ' + reportName)
    myTools.getFocus()

    logging.debug('- open report list')
    type("r",KeyModifier.ALT)
    type("s")
    time.sleep(1)

    logging.debug('- choose report')
    type("UDS SlipFields")
    time.sleep(1)

#    fSort_SlipReportFields()
    fChoose_CSV_Print(reportName)
    myTools.waitForReport()
    reports_Compare.Compare_OneReport(reportName)

    # close the report
    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1)
    type("n")
    type(Key.F4,KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fPrint_SlipListCalc(pReportMonth,pRepExt):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("print slipcalcs")

    # name report file: ex: UDSlip1-03
    reportName = myTools.buildRepName("UDSCalc",pRepExt)
    logging.debug('Print_UDSCalc: ' + reportName)
    myTools.getFocus()

    logging.debug('- open report list')
    type("r",KeyModifier.ALT)
    type("s")
    time.sleep(1)

    logging.debug('- choose report')
    type("uds c")
    time.sleep(1)

#    fSort_SlipReportFields()
    fChoose_CSV_Print(reportName)
    myTools.waitForReport()
    reports_Compare.Compare_OneReport(reportName)

    # close the report
    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1)
    type("n")
    type(Key.F4,KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fBudget_Setup():
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("budgets")
    logging.debug('budgets')
    
    myTools.getFocus()

    # open budget setup
    type("n", KeyModifier.ALT)
    type("b")
    time.sleep(1)    

    if (int(Settings.tsVersion) > 2016) and (Settings.tsDB == "PREM"):
        fTimekeeperBudget_New()
        fClientBudget_New()
        fFirmBudget_New()        
    else:
        fTimekeeperBudget()
        fClientBudget()
        fFirmBudget()

    type(Key.F4,KeyModifier.CTRL)
    
    myTools.sectionEndTimeStamp()
def fCreate_Refunds(pMonth):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("refunds" + str(pMonth))
    logging.debug('fCreate_Refunds: ' + str(pMonth))

    # list the client that will get a refund each month
    refundClients = ["Hawley","Haverhill","Hatfield","Harwich","Harvard","Hawley","Haverhill","Hatfield","Harwich","Harvard","Hawley","Haverhill"]
    oneClient = refundClients[(pMonth - 1)]

    myTools.getFocus()

    # open a/r tran list
    type("t",KeyModifier.CTRL)
    myTools.waitForTransList()

    refundAmount = 99 + pMonth/float(100)        
    fCreate_OneRefund(oneClient,pMonth,refundAmount)

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)
    
    myTools.sectionEndTimeStamp()
    myTools.checkProcesses()
def fPrint_ARwRunBal(pReportMonth,pRepExt):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("print ARwRunBal")

    # name report file: ex: UDSlip1-03
    reportName = myTools.buildRepName("ARwRunBal",pRepExt)
    logging.debug('fPrint_ARwRunBal: ' + reportName)
    myTools.getFocus()

    logging.debug('- open report list')
    type("r",KeyModifier.ALT)
    type("a")
    time.sleep(1)

    logging.debug('- choose report')
    myTools.pressDOWN(2)
    time.sleep(1)

    # choose txt
    myTools.pressSHIFTTAB(2)
    time.sleep(1)
    type("t")
    time.sleep(1)

    myTools.enterCurrentMonthOnList(pReportMonth)

    # print the report
    type(Key.ENTER)    
    time.sleep(1)

    myTools.finishReport(reportName)
def fPrint_InvoiceListing(pReportMonth, pRepExt):
    # ---------------------------------------------------#

    myTools.sectionStartTimeStamp("print invoicelist")

    # name report file: ex: UDSlip1-03
    reportName = myTools.buildRepName("InvList", pRepExt)
    logging.debug("Print_InvoiceList: " + reportName)
    myTools.getFocus()

    logging.debug("- open report list")
    type("r", KeyModifier.ALT)
    type("a")
    time.sleep(1)

    logging.debug("- choose report")
    type("i")
    time.sleep(1)

    # choose txt
    myTools.pressSHIFTTAB(2)
    time.sleep(1)
    type("t")
    time.sleep(1)

    myTools.enterYearToDateOnList(pReportMonth)

    # print the report
    type(Key.ENTER)
    time.sleep(1)

    myTools.finishReport(reportName)
def fCreate_TransfersToFunds(pMonth):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("transfer funds" + str(pMonth))
    logging.debug('Create_TransfersFunds: ' + str(pMonth))

    allClients = ["East.Brookfield","North.Andover","West.Bridgewater"]
    count = 0

    myTools.getFocus()

    # open a/r tran list
    type("t",KeyModifier.CTRL)
    myTools.waitForTransList()

    for oneClient in allClients:
        count += 1
        fCreate_OneFundsTransfer(oneClient,count,pMonth)

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4,KeyModifier.CTRL)
    
    myTools.sectionEndTimeStamp()
    myTools.checkProcesses()
def fPrint_FlatFee(pReportMonth,pRepExt):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("print FlatFee")

    # name report file: ex: ARAgedBal-03
    reportName = myTools.buildRepName("FlatFee",pRepExt)    
    logging.debug('Print_FlatFee: ' + reportName)

    # make sure timeslips has focus
    myTools.getFocus()

    logging.debug('- open report')
    type("r",KeyModifier.ALT)
    type("c")
    time.sleep(1)
    type("f")
    time.sleep(1)

    # move to Print To and choose CSV
    myTools.pressSHIFTTAB(2)
    time.sleep(1)
    type("c")

    # print the report
    type(Key.ENTER)    
    time.sleep(1)

    myTools.finishReport(reportName)
Exemple #26
0
def fPrint_BABill(pBAClient, pBillNum):
    # ---------------------------------------------------#
    """
    backs up the database ("-before")
    prints the bill to text file
    approves the bill
    backs up the database ("-after")
    """

    baBillName = pBAClient + str(pBillNum)
    backup_Data.fBackup_Checkpoint(baBillName + "-before")

    myTools.sectionStartTimeStamp("ba bill")
    logging.debug("BA_Bill: " + baBillName)

    type("b", KeyModifier.CTRL)
    time.sleep(1)
    click("remove_filters.png")
    time.sleep(1)
    type(Key.ENTER)
    type(Key.DOWN)
    type(Key.TAB)
    type(Key.SPACE)
    type(pBAClient)
    time.sleep(1)
    type(Key.F4)
    type(Key.ENTER)

    myTools.pressSHIFTTAB(3)

    type("t")
    type(Key.ENTER)
    time.sleep(1)
    type(Settings.repFolder + "\\" + baBillName + ".txt")

    #    for checkmark in findAll("checkmark.png"):
    #        click(checkmark)

    time.sleep(1)
    type(Key.ENTER)
    time.sleep(1)

    if exists("replace_msg.png"):
        type(Key.ENTER)
        time.sleep(1)

    wait("approve_bill.png", FOREVER)
    click("approve_bill.png")
    type(Key.ENTER)
    time.sleep(1)

    if exists("select_report_to_print.png"):
        type(Key.ESC)

    type(Key.F4, KeyModifier.CTRL)
    time.sleep(1)
    type("n")

    myTools.sectionEndTimeStamp()
    backup_Data.fBackup_Checkpoint(baBillName + "-after")
Exemple #27
0
def fCreate_BASlips(pBAClient):
    # ---------------------------------------------------#
    """
    calls slips_Create.Create_OneSlip to create 4 time slips and 4 expense slips
    for each billing arrangement bill
    """

    myTools.sectionStartTimeStamp("ba slips")
    logging.debug("fCreate_BASlips")

    type("m", KeyModifier.CTRL)
    time.sleep(1)

    # create some time slips
    slips_Create.Create_OneSlip("t", "TomH", "con001", pBAClient, 1)
    slips_Create.Create_OneSlip("t", "CoreyM", "gen004", pBAClient, 2)
    slips_Create.Create_OneSlip("t", "SamS", "gen005", pBAClient, 3)
    slips_Create.Create_OneSlip("t", "ShawnR", "lnd010", pBAClient, 4)

    # create some expense slips
    slips_Create.Create_OneSlip("e", "ShawnR", "e004", pBAClient, 5)
    slips_Create.Create_OneSlip("e", "SamS", "e005", pBAClient, 6)
    slips_Create.Create_OneSlip("e", "CoreyM", "e006", pBAClient, 7)
    slips_Create.Create_OneSlip("e", "TomH", "e003", pBAClient, 8)

    type(Key.F4, KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4, KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()
def fCreate_PaymentsToAccount(pMonth):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("paystoaccount" + str(pMonth))
    logging.debug('Create_PaysToAccount: ' + str(pMonth))

    allClients = names_Init.fInit_Clients()
    count = 0

    myTools.getFocus()

    # open funds list
    type("f",KeyModifier.CTRL)
    myTools.waitForFundsList()    

    # create PTA for first 5 clients and then every 6th client

    for oneClient in allClients:
        count += 1
        if (count in range(6)) or ((count + pMonth) % 6 == 0):
            ptaAmount = 25 + pMonth/float(100)
            fCreate_OnePayToAccount(oneClient,count,pMonth,ptaAmount)
        else:
            logging.debug('-- skip: ' + str(pMonth) + "-" + oneClient)           
     
    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)
    
    myTools.sectionEndTimeStamp()
    myTools.checkProcesses()        
def fBill_BillFields():
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("bill fields")
    logging.debug("fBill_BillFields")    

    buName = Settings.tsVersion + "-bill-12b"
    backup_Data.fRestore_Backup(buName)

    reportName = "BillFields-13-" + Settings.tsVersion + ".txt"

    myTools.getFocus()                                # make sure timeslips has focus

    if int(Settings.tsVersion) < 2016:                # to get around a defect in pre-2016
        type("i",KeyModifier.CTRL)                    # open client info and close it to load custom fields
        time.sleep(1)
        type("o",KeyModifier.CTRL)
        time.sleep(1)
        type(Key.F4,KeyModifier.CTRL)
        time.sleep(1)
        type(Key.F4,KeyModifier.CTRL)
    
    bill_ImportLayout.fImport_BillLayout("Fields")    # import the layout    
    fSet_BillDate(12)                                 # set billing data to 12/27 for text bills 
    fPrint_BillsToText(reportName)                    # print all bills to one text file
    reports_Compare.Compare_OneReport(reportName)

    myTools.sectionEndTimeStamp()
def fPercent_Setup3(pBAClient):
#---------------------------------------------------#

    myTools.sectionStartTimeStamp(pBAClient + "3")
    logging.debug(pBAClient + "3")

# open client    
    type("i",KeyModifier.CTRL)
    time.sleep(1)
    type(pBAClient)
    type(Key.ENTER)
    time.sleep(1)

# enter details    
    ba__Common.fMoveto_BAPage()
    myTools.pressTAB(5)
    type(Key.ENTER)
    time.sleep(1)    

    type(Key.TAB)
    type(Key.DOWN)
    type(Key.TAB)
    
    type("o",KeyModifier.CTRL)
    myTools.pressTAB(4)
    type("100")
    type(Key.ENTER)
    time.sleep(1)    

    type(Key.DOWN)
    type("o",KeyModifier.CTRL)
    myTools.pressTAB(4)
    type("100")
    type(Key.ENTER)
    time.sleep(1)    

    type(Key.DOWN)
    type("o",KeyModifier.CTRL)
    myTools.pressTAB(4)
    type("100")
    type(Key.ENTER)
    time.sleep(1)    

    # save and close

    if int(Settings.tsVersion) > 2014:
        myTools.pressTAB(8)        
    else:
        myTools.pressTAB(9)

    type(Key.SPACE)
    time.sleep(1)
    type("s",KeyModifier.CTRL)

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1)
    type(Key.F4,KeyModifier.CTRL)

    myTools.sectionEndTimeStamp()