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")
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)
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")
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()