def fSetUpCatTerm():
#---------------------------------------------------#

    time.sleep(1)
    logging.debug('- set up category terminology')
# open general settings
    type("p",KeyModifier.ALT)
    type(Key.ENTER)
    time.sleep(1)
# switch to Calendar Terminology
    myTools.pressF6(2)
# category terminology
    type("1",KeyModifier.ALT)
    type("One")
    type(Key.TAB)
    type("Two")
    type(Key.TAB)
    type("Three")
    type(Key.TAB)
    type("Four")
    type(Key.TAB)
    type("Five")
    type(Key.TAB)
    type("Six")
    type(Key.TAB)
    type("Seven")
    type(Key.TAB)
    type("Eight")
    type(Key.TAB)
    type("Nine")
    type(Key.TAB)
    type("Ten")
    type(Key.ENTER)
def fHold_Time_NextBill_Hours():
#---------------------------------------------------#

    logging.debug('- Hold_Time_NextBill_Hours')

    # open Wakefield    
    type("Wakefield")
    type(Key.ENTER)
    time.sleep(1)

    # move to page with Hold fields
    if int(Settings.tsVersion) > 2014:
        myTools.pressF6(5)        
    else:
        myTools.pressF6(3)

    # move to Hold time charges
    if int(Settings.tsVersion) > 2014:
        myTools.pressTAB(3)        
    else:
        myTools.pressTAB(6)
    time.sleep(1)

    # set to "on next bill" until 5 hours
    myTools.pressDOWN(1)
    myTools.pressTAB(2)
    type("5")

    # save
    time.sleep(1)
    type("s",KeyModifier.CTRL)
Example #3
0
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 fChange_ClientSettings():
#---------------------------------------------------#

    logging.debug('- Change_ClientSettings')
    myTools.getFocus()
    
    logging.debug('-- change a client')
    type("i",KeyModifier.CTRL)
    time.sleep(1)
    type(Key.ENTER)
    time.sleep(1)

    myTools.pressF6(4)
    if Settings.tsVersion > "2014":
        myTools.pressF6(3)       
    time.sleep(1)
    
    myTools.pressTAB(3)   
    time.sleep(1)
    type("my")

    logging.debug('-- save client')
    type("s",KeyModifier.CTRL)

    fExport_ClientSettings()
    fExport_TemplateSettings()

    time.sleep(1)
    type(Key.F4,KeyModifier.CTRL)
    type(Key.F4,KeyModifier.CTRL)
def fMoveto_BAPage():
#---------------------------------------------------#

    if int(Settings.tsVersion) > 2014:
        myTools.pressSHIFTF6(9)
    else:
        myTools.pressF6(3)
Example #6
0
def fSetup_NewNamesDefault():
    # ---------------------------------------------------#
    """
    new names will inherit Layout setting from the Template client
    """

    logging.debug("- open gen settings")
    type("p", KeyModifier.ALT)
    type("g")
    time.sleep(1)

    # get to New Names page
    myTools.pressF6(7)
    time.sleep(2)
    type("i", KeyModifier.ALT)
    type(Key.DOWN)

    # get to Layout field

    if int(Settings.tsVersion) > 2014:
        myTools.pressTAB(10)
    else:
        myTools.pressTAB(9)
    type("t")

    type(Key.ENTER)
def fEdit_TaskCustom():
#---------------------------------------------------#

    logging.debug('  - custom fields')

# switch to custom fields
    myTools.pressF6(2)
    type(Key.TAB)

# Date
    type("1/1/15")
    type(Key.TAB)
 # Hours
    type("101.01")
    type(Key.TAB)
 # List
    type("Construction")
    type(Key.TAB)
 # Money
    type("101.01")
    type(Key.TAB)
    time.sleep(1)    
 # Number
    type("101.01")
    type(Key.TAB)
 # Percent
    type("101.01")
    type(Key.TAB)
 # Text
    type("Build Structure")
    type(Key.TAB)
    
    time.sleep(1)
Example #8
0
def fMoveto_BAPage():
    # ---------------------------------------------------#
    """
    moves to the Arrangements page of Client Information
    """

    if int(Settings.tsVersion) > 2014:
        myTools.pressSHIFTF6(9)
    else:
        myTools.pressF6(3)
def fSetup_PayDist():
    # ---------------------------------------------------#

    myTools.sectionStartTimeStamp("setup pay dist")
    logging.debug("- set up pay dist")

    myTools.getFocus()

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

    # open Nahant
    type("n")
    type(Key.ENTER)
    time.sleep(1)

    # get to payment distribution fields

    if Settings.tsVersion > "2014":
        myTools.pressF6(8)
        time.sleep(1)
        myTools.pressTAB(6)
        time.sleep(1)
    else:
        myTools.pressF6(5)
        time.sleep(1)
        myTools.pressSHIFTTAB(7)
        time.sleep(1)

    # First Pay = Newest
    type("n")
    time.sleep(1)

    # Order = Costs/Fees/Int
    myTools.pressTAB(1)
    type("c")
    time.sleep(1)

    # First Pay = Charge Type
    myTools.pressTAB(1)
    type("c")
    time.sleep(1)

    # save
    type("s", KeyModifier.CTRL)
    time.sleep(1)

    fExport_ClientSettings()

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

    myTools.sectionEndTimeStamp()
Example #10
0
def moveTo_NextTemplate():
#---------------------------------------------------#

    if int(Settings.tsVersion) < 2015:
        myTools.pressDOWN(1)
        time.sleep(1)
        type("o",KeyModifier.CTRL)
    else:
        myTools.pressF6(1)
        
    time.sleep(1)
def Setup_Discounts():
# - - - - - - - - - - - - - - - - - - - - - - - - - #

    logging.debug('Set Up Discounts')

    # make sure timeslips has focus
    myTools.getFocus()

    logging.debug('- change a client')
    type("i",KeyModifier.CTRL)
    time.sleep(1)

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

    myTools.pressF6(5)
    myTools.pressSHIFTTAB(10)
    time.sleep(1)
    
    type("10")
    type(Key.TAB)
    type("30")
    type(Key.TAB)
    myTools.pressDOWN(2)
    time.sleep(1)

    type("s", KeyModifier.CTRL)
    click("export_btn.png")
    time.sleep(1)
    
    type(Key.DELETE)
    type(Key.UP)
    type(Key.DOWN)
    type(Key.DOWN, KeyModifier.SHIFT)
    type(Key.DOWN, KeyModifier.SHIFT)    
    type(Key.F4)
    time.sleep(1)

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

    wait("export_successful.png", FOREVER)
    type(Key.ENTER)    

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)
def fCreate_OneFinanceCharge(pClient,pCliNum,pMonth,pAmount):
#---------------------------------------------------#

    logging.debug('- Create_OneFinance: ' + str(pMonth) + "-" + pClient + " = " + str(pAmount))
    time.sleep(1)

    # choose client
    type(pClient)
    time.sleep(1)
    type(Key.ENTER)
    time.sleep(1)

    # switch page
    if Settings.tsVersion > "2014":
        myTools.pressF6(7)
    else:
        myTools.pressF6(4)
    time.sleep(1)

    # go to field
    if Settings.tsVersion > "2014":
        myTools.pressSHIFTTAB(4)
    else:    
        myTools.pressSHIFTTAB(3)
    time.sleep(1)

    # set "next bill"
    type("ne")
    time.sleep(1)
    
    myTools.pressTAB(1)
    time.sleep(1)

    # enter finance charge   
    type(pAmount)
    time.sleep(1)
    myTools.pressTAB(1)

    # description
    type("a",KeyModifier.CTRL)
    financeText = "Finance charge for: " + pClient + ": Month: " + str(pMonth)
    time.sleep(1)
    type(financeText)
    time.sleep(1)

    # save
    type("s",KeyModifier.CTRL)
    time.sleep(1)

    # close client info
    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
def fSetup_LinkDetailsUnmarkWIP():
#---------------------------------------------------#

    type("a",KeyModifier.ALT)           # set up accounting link
    time.sleep(1)
    type("s")
    time.sleep(1)

    myTools.pressF6(1)                  # method page
    time.sleep(1)
    
    myTools.pressTAB(3)                         # time WIP
    type(Key.SPACE)

    myTools.pressTAB(1)                         # expense WIP
    type(Key.SPACE)

    type(Key.ENTER)                     # OK
    time.sleep(1)
Example #14
0
def fEnter_GeneralSettings():
#---------------------------------------------------#
    """
    enter firm address, project separator, slips/trans IDs
    """

# wait for address info
    wait("address_info.png",60)
   
# Firm name/address
    type(Key.TAB)
    type("239 Western Avenue")
    myTools.pressTAB(2)
    type("Essex")
    type(Key.TAB)
    type("MA")
    type(Key.TAB)
    type("01929")
    type(Key.TAB)
    type("USA")
    type(Key.TAB)
    type("508-768-6100")
    time.sleep(1)
    
# project separator
    myTools.pressF6(6)
    time.sleep(1)
    type(".")
    
# slips, a/r, funds IDs
    myTools.pressF6(5)
    time.sleep(1)
    type("10001")
    myTools.pressTAB(1)    
    type("10001")
    myTools.pressTAB(1)    
    type("10001")
    
# close General settings
    type(Key.ENTER)
def fCreate_Jurisdictions():
#---------------------------------------------------#

    logging.debug('- Create_Jurisdiction')

    # move to jurisdictions
    myTools.pressF6(2)
    time.sleep(1)

    # new jurisdication for Zone 1
    logging.debug('-- new jurisdictions')  
    type("n",KeyModifier.ALT)
    time.sleep(1)
    type("o")
    myTools.pressTAB(1)
    type("Zone1")
    myTools.pressTAB(1)
    type("One")
    time.sleep(1)
    
    # OK
    type(Key.ENTER)
def fEdit_ExpenseCustom():
#---------------------------------------------------#

    logging.debug('  - custom fields')

    # switch to custom fields
    myTools.pressF6(2)
    type(Key.TAB)

    # Date
    type("12/1/16")
    type(Key.TAB)
 
    # Hours
    type("301.01")
    type(Key.TAB)
    
    # List
    type("Materials")
    type(Key.TAB)

    # Money
    type("301.01")
    type(Key.TAB)
    time.sleep(1)    
    
    # Number
    type("301.01")
    type(Key.TAB)
    
    # Percent
    type("301.01")
    type(Key.TAB)
    
    # Text
    type("Hand Tools")
    type(Key.TAB)
    
    time.sleep(1)
def setupCustomSort():
#---------------------------------------------------#
    """ sets up custom sort Activity List; only used by fPrint_PreBill_2 """

    logging.debug('- setupCustomSort')

    # switch to the Sort page
    myTools.pressF6(1)
    time.sleep(1)

    # remove sorts
    myTools.clickRemoveAll()

    # switch to the activity group
    myTools.pressSHIFTTAB(1)
    type("a")
    time.sleep(1)

    # choose Activity List
    myTools.pressTAB(1)
    myTools.pressDOWN(7)
    click("add_filter.png")
    time.sleep(1)                
def fSetup_NewNamesDefault():
#---------------------------------------------------#

    logging.debug('- open gen settings')
    type("p",KeyModifier.ALT)
    type("g")
    time.sleep(1)

# get to New Names page    
    myTools.pressF6(7)
    time.sleep(2)
    type("i",KeyModifier.ALT)
    type(Key.DOWN)

# get to Layout field

    if int(Settings.tsVersion) > 2014:
        myTools.pressTAB(10)
    else:
        myTools.pressTAB(9)
    type("t")

    type(Key.ENTER)
Example #19
0
def setup_StatementTemplates():
#---------------------------------------------------#

    logging.debug('- edit statement template')

    myTools.pressF6(1)
    
    if int(Settings.tsVersion) < 2015:
        type("o",KeyModifier.CTRL)

    setup_StatementTemplate("Current")
    moveTo_NextTemplate()
    
    setup_StatementTemplate("Period1")
    moveTo_NextTemplate()
    
    setup_StatementTemplate("Period2")
    moveTo_NextTemplate()
    
    setup_StatementTemplate("Period3")
    moveTo_NextTemplate()
    
    setup_StatementTemplate("Period4")
def fEdit_InterestSetting():
#---------------------------------------------------#

    logging.debug('- edit interest setting')
    
    # switch to first client
    type(Key.PAGE_UP, KeyModifier.CTRL)

    # get to interest field
    if int(Settings.tsVersion) > 2014:
        myTools.pressSHIFTF6(9)
        myTools.pressTAB(9)
    else:
        myTools.pressF6(2)    
        myTools.pressTAB(7)
        
    type("5")
    type("s", KeyModifier.CTRL)
    time.sleep(1)
    click(Pattern("export_button.png").targetOffset(0,8))
    time.sleep(1)
    type(Key.DELETE)

    # interest rate
    myTools.pressDOWN(5)
    
    type(Key.F4)
    time.sleep(1)
    
    type(Key.TAB)
    type(Key.INSERT)
    type(Key.TAB)
    type(Key.ENTER)
    time.sleep(1)
    type("y")
    
    myTools.waitForExportSuccess()
def fSetUpEntryTerm():
#---------------------------------------------------#

    time.sleep(1)
    logging.debug('- set up entry terminology')
# open general settings
    myTools.getFocus()
    type("p",KeyModifier.ALT)
    type(Key.ENTER)
    time.sleep(1)
# switch to Calendar Terminology
    myTools.pressF6(2)
# entry terminology
    type("Entry")
    type(Key.TAB)
    type("Entries")
    type(Key.TAB)
    time.sleep(1)

    type("Event")
    type(Key.TAB)
    type("Events")
    type(Key.TAB)
    time.sleep(1)

    type("TooDoo")
    type(Key.TAB)
    type("TooDoo")
    type(Key.TAB)
    time.sleep(1)

    type("Type")
    type(Key.TAB)
    type("Types")

    time.sleep(1)
    type(Key.ENTER)
def fSlipsRoundDol_Setup():
# - - - - - - - - - - - - - - - - - - - - - - - - - #

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

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

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

    time.sleep(1)
    type("5") 
    type(Key.TAB)
    type("u")
    
# save and close    
    type("s",KeyModifier.CTRL)

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

    myTools.sectionEndTimeStamp()
Example #23
0
def fStartTS_CreateNewDB():
#---------------------------------------------------#

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

    popup("make sure Timeslips is closed")

    fDelete_DataFolder()
    fStart_TS()
    fCheckFor_PEP()

# start the new db process
    logging.debug('- Check for database')
    time.sleep(3)

    if exists("database_not_found.png"):
        logging.debug('-- TS2014 db not found')
        type(Key.ENTER)
        time.sleep(2)
        type("n")
    elif exists("fb_encountered_error.png"):
        logging.debug('-- TS2016 db not found')
        type(Key.ENTER)
        time.sleep(2)
        type("n")
    else:
        logging.debug('-- db found')
        if exists("supervisor.png"):
            type(Key.ENTER)        
            time.sleep(1)
        fCheckFor_Sample()
        fCheckFor_PEP()
        fCheckFor_BillingDate()
        fCheckFor_SPS()
        time.sleep(1)

        # File > New > Database
        logging.debug('- create new database')
        type("f",KeyModifier.ALT)
        type("n")
        type("d")
        
    time.sleep(1)
    
# Empty database, press Next
    type("n",KeyModifier.ALT)

# For TS2016, choose Local, press Next
    if int(Settings.tsVersion) > 2015:
        myTools.pressDOWN(1)
        type("n",KeyModifier.ALT)        

# new db path and settings
    logging.debug('- enter path')
    type(Settings.dbFolder)
    type(Key.ENTER)

# Firm name
    type("TS Handyman Services")
    type(Key.ENTER)    
    logging.debug('- db settings')

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

# set Fiscal month to July
    myTools.pressDOWN(6)
    type(Key.ENTER)

# starting invoice number    
    type("12345")
    type(Key.ENTER)

# bill with firm heading    
    myTools.pressDOWN(2)
# mark cover page
    type(Key.TAB,KeyModifier.SHIFT)
    type(Key.SPACE)
    time.sleep(1)        
    type(Key.ENTER)    
    
#    click("do_not_use_tal.png")    
    time.sleep(1)        
    type(Key.ENTER)

# unmark outlook
    type(Key.SPACE)
    time.sleep(1)        
    type(Key.ENTER)

# Ready to Create Your Database
    time.sleep(1)     
    type(Key.ENTER)

# Wait for db to be created    
    wait("finish.png",FOREVER)

# press Finish    
    type(Key.ENTER)
    time.sleep(1)

# wait for address info
    wait("address_info.png",60)

# Firm name/address
    type(Key.TAB)
    type("239 Western Avenue")
    myTools.pressTAB(2)
    type("Essex")
    type(Key.TAB)
    type("MA")
    type(Key.TAB)
    type("01929")
    type(Key.TAB)
    type("USA")
    type(Key.TAB)
    type("508-768-6100")
    time.sleep(1)

# project separator
    myTools.pressF6(6)
    time.sleep(1)
    type(".")

# close General settings
    type(Key.ENTER)    

# getting started
    logging.debug('- getting started wiz')
    wait("enter_your_name.png",FOREVER)
    type("Xander Yakuza Zork")
    type(Key.TAB)
    time.sleep(1)     
    type(Key.ENTER)    
    type("XanderZ")
    type(Key.TAB)
    type("XZork")
    type("f",KeyModifier.ALT)

# 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 fExport_Timekeepers():
#---------------------------------------------------#

    logging.debug('- Export Timekeepers')

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

    if int(Settings.tsVersion) > 2014:    
        myTools.pressF6(4)
        myTools.pressTAB(2)        
    else:
        type(Key.F6)
        myTools.pressTAB(3)
        type(Key.RIGHT)

    # enter custom field values
    type(Key.TAB)
    type("t")
    type(Key.TAB)
    type("20")
    
    type(Key.TAB)
    type("c")
    type(Key.TAB)
    type("10")

    type(Key.TAB)
    type("j")
    type(Key.TAB)
    type("5")

    type("s", KeyModifier.CTRL)
    
    wait("export_btn.png")
    click("export_btn.png")
    time.sleep(1)

    if int(Settings.tsVersion) > 2014:    
        type(Key.DOWN)
        # sometimes a keypress is needed to make INS work
    else:    
        type(Key.DELETE)
        myTools.pressDOWN(8)
        type(Key.DOWN, KeyModifier.SHIFT)
        type(Key.DOWN, KeyModifier.SHIFT)    
        type(Key.F4)
    time.sleep(1)

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

    myTools.waitForExportSuccess()

    type(Key.F4,KeyModifier.CTRL)
    time.sleep(1) 
    type(Key.F4,KeyModifier.CTRL)
def fTweak_Prefs():
#---------------------------------------------------#

    myTools.sectionStartTimeStamp("preferences")

    logging.debug('fTweak_Prefs')

    # make sure timeslips has focus
    myTools.getFocus()

    logging.debug('- open preferences')
    type("p",KeyModifier.ALT)
    type("p")
    time.sleep(1)

    # click Default button
    type("d",KeyModifier.ALT)
    type(Key.ENTER)
    time.sleep(1)

# Interface: Startup
    # unmark date check
    type(Key.SPACE)

# Interface: Appearance
    myTools.pressF6(3) 
    time.sleep(1)

    logging.debug('- clear window settings')
    type("a",KeyModifier.ALT)
    type(Key.ENTER)
    time.sleep(1)

# Interface: Nav Rules
    myTools.pressSHIFTF6(2)
    time.sleep(1)
    
    # Update Rates
    type("u",KeyModifier.ALT)
    time.sleep(1)

    # Slips: New Slip Rules

    if int(Settings.tsVersion) < 2014:        
        myTools.pressF6(6)
    else:
        myTools.pressF6(8)
    click(Pattern("dates_extra_chk.png").targetOffset(-118,-1))
    time.sleep(1)

    # spelling
    if int(Settings.tsVersion) < 2014:        
        myTools.pressF6(6)
    else:
        myTools.pressF6(5)
        
    type("m")
    type(Key.TAB)
    type("m")
    time.sleep(1)

    # save
    type("s",KeyModifier.ALT)
    prefsFile = Settings.tsFolder + "\\" + Settings.tsVersion + ".prf"
    time.sleep(1)   
    type(prefsFile)
    type(Key.ENTER)
    
    # close  
    time.sleep(1)   
    type(Key.ENTER)

    myTools.sectionEndTimeStamp()