Ejemplo n.º 1
0
 def get_ownership_info(self):
     print "Owner:", self.cdm.case_list[
         -9]  # complainant name to search for
     zip = self.cdm.case_list[-2]  # gets complainant zip code
     search = SearchEngine()
     data = search.by_zipcode(zip)
     # Get comp county; if not in Florida (or our list, ask for it manually)
     if data.state != "FL":
         print "The complainant lives in %s, not Florida." % data.state
         zip = self.cdm.case_list[7]  # try the respondent instead of comp
         data = search.by_zipcode(zip)
         if data.state != "FL":
             print "The respondent is not in FL, either."
             county = get_string("In what county is the unit located?")
             county = county.title().replace("County", "").strip()
         else:
             county = data.county.replace("County", "").strip()
     else:
         county = data.county.replace("County", "").strip()
     # Get the list of counties from the AppraiserSites table
     results = self.dbm.query("SELECT * FROM AppraiserSites")
     counties = [result[0] for result in results]
     if county not in counties:
         print "%s not found in the list of counties." % county
         county = get_string("In what county is the unit located?")
         county = county.title().replace("County", "").strip()
     sql = " SELECT Site From AppraiserSites WHERE County =  '%s' " % county
     results = self.dbm.query(sql)
     appraiser_site = results.fetchone()[0]
     wb.open_new_tab(appraiser_site)
     self.owner = get_bool("Is complainant a unit owner?")
     self.owner = "unit owner" if self.owner is True else "not unit owner"
Ejemplo n.º 2
0
    def get_merge_data(self):
        # This is the data we have already, no need to recollect it
        self.merge_dict = {
            "CaseNumber" : str(self.cdm.case_list[0]),
            "Complainant" : self.cdm.case_list[9],
            "Respondent" : self.cdm.case_list[1],
            "Date" : datetime.datetime.today().strftime('%m-%d-%Y')
        }

        # Here is the data we do need to collect
        self.merge_dict["DateCaseOpened"] = get_string(
            "What was the date the case was opened?"
        )

        self.merge_dict["RelatedCaseNumbers"] = get_string(
            "If applicable, add a comma-separated list of related case numbers."
        )

        # We can operate logic on whether PSTUs should have been completed
        opened = dateparser.parse(self.merge_dict["DateCaseOpened"])
        today = datetime.datetime.today()
        num_days = today - opened
        num_days = num_days.days # gives us just the number of days as an int

        # Now this won't fire if case has been opened for less than 90 days
        # If it has been open for more than 90, will confirm each required PSTU
        for x in range(90, num_days, 30):
            if get_bool("Enter true/yes/1 to confirm a %s-day PSTU." % x):
                self.merge_dict["%sDayPSTU" % x] = self.merge_dict["Date"]
            else:
                self.merge_dict["%sDayPSTU" % x] = None
Ejemplo n.º 3
0
 def get_fees_info(self):
     print "Case Number:", self.cdm.case_list[0]
     vr = "http://vr:9029/le5/faces/jsp/VrDashboard.jsp"
     wb.open_new_tab(vr)
     self.num_of_units = get_integer("What is the number of units?")
     self.fees_paid = get_bool("Are all fees that are due paid?")
     self.fees_paid = "paid" if self.fees_paid is True else "not paid"
    def reserve_questions(self):
        self.review_results["reserves_waived"] = get_bool_or_na_or_unknown(
            "Have unit owners waived reserves with a majority vote at a duly\n"
            "called meeting?\n\n"
            "Enter \"N/A\" if reserve waivers not being investigated.\n"
            "Enter \"Unknown\" if evidence doesn't demonstrate either way\n"
            "AND if this is an allegation or issue under investigation.")

        if self.review_results["reserves_waived"] in [True, "N/A"]:
            self.review_results["reserve_accounts"] = "N/A"
            self.review_results["reserve_formula"] = "N/A"
        else:
            self.review_results["reserve_accounts"] = get_bool(
                "Does the budget include reserves for painting, paving,\n"
                "roofing, and any other item estimated at more than $10k?")
            self.review_results["reserve_formula"] = get_bool(
                "Was amount to be reserved computed using a formula based on\n"
                "the estimated remaining useful life and estimated replacement\n"
                "cost or deferred maintenance expense of each reserve item.")
Ejemplo n.º 5
0
 def check_reporting_level(self):
     prompt = (
         "Florida Statute 718.111(13)(a) states:\n"
         "\"An association ... shall prepare a complete set of financial\n"
         "statements ... The financial statements must be based on the\n"
         "association's total annual revenues, as follows:\"\n"
         "1. $500,000 and more   = Audited Financial Statement\n"
         "2. $300,000 - $500,000 = Reviewed Financial Statement\n"
         "3. $150,000 - $300,000 = Compiled Financial Statement\n"
         "4. Less than $150,000  = Report of Cash Receipts and Disbursements"
         "\n\n"
         "Based on revenue, the association should be preparing a:\n"
         "\n%s.\n\n"
         "Is the association reporting at the appropriate level (or higher)?"
     ) % self.reporting_level
     return get_bool(prompt)
 def notice_questions(self):
     do_it = get_bool(
         "Is the 14-day noticing of the budget meeting under investigation?"
     )
     if do_it is False:
         self.review_results["notice_14"] = "N/A"
         self.review_results["notice_affidavit"] = "N/A"
     else:
         self.review_results["notice_14"] = get_bool_or_na_or_unknown(
             "Did the association notice the budget meeting at least 14\n"
             "days in advance? Hand delivery, mail, and electronic delivery\n"
             "are acceptable forms of notice.\n"
             "(Enter \"unknown\" if evidence is not yet obtained.)")
         self.review_results["notice_affidavit"] = get_bool_or_na_or_unknown(
             "Did an officer or manager execute an affidavit attesting to\n"
             "the delivery of the 14-day budget meeting notice?\n"
             "(Enter \"unknown\" if evidence is not yet obtained.)")
    def rule_elements(self):
        self.review_results["common_expenses"] = get_bool(
            "The association is required to include the following elements\n"
            "in its annual budget. Indicate whether each was included:\n\n"
            "(a) State the estimated common expenses or expenditures on at\n"
            "    least an annual basis.")

        self.review_results["beg_end"] = get_bool(
            "(b) Disclose the beginning and ending dates of the period\n"
            "    covered by the budget.")

        self.review_results["unit_types_ass"] = get_bool(
            "(c) Show the total assessment for each unit type according to\n"
            "    the proportion of ownership on a monthly basis, or for any\n"
            "    other period for which assessments will be due.")

        self.review_results["reserves_full"] = get_bool(
            "(d) Reserves for capital expenditures and deferred maintenance\n"
            "    must be included in proposed annual budget and shall not be\n"
            "    waived or reduced prior to mailing proposed budget.")

        pool_or_straight = menu_choice(
            "Select the method of reserves accounting:\n"
            "1. Straight-line\n"
            "2. Pooled", "12")

        if pool_or_straight is 1:  #straight-line
            self.review_results["straight_line"] = True
            self.review_results["total_estimate"] = get_bool(
                "Does the association's reserve schedule include the following\n"
                "information for each asset for which reserves are maintained?"
                "\n\n1. The total estimated useful life of the asset.")
            self.review_results["remaining_estimate"] = get_bool(
                "2. The estimated remaining life of the asset.")
            self.review_results["replacement_cost"] = get_bool(
                "3. The estimated replacement cost or deferred maintenance\n"
                "   expense of the asset.")
            self.review_results["beginning_balance"] = get_bool(
                "4. The estimated fund balance as of the beginning of the\n"
                "    period for which the budget will be in effect.")
            self.review_results["dev_obligation"] = get_bool_or_na(
                "5. The developer's total funding obligation, when all units\n"
                "    are sold, for each converter reserve, if applicable.\n"
                "Enter \"N/A\" if this does not apply.")
            # empty strings for the other method of reserves
            self.review_results["pooled"] = ""
            self.review_results["pooled_total"] = ""
            self.review_results["pooled_remaining"] = ""
            self.review_results["pooled_replacement"] = ""
            self.review_results["pooled_balance"] = ""
        elif pool_or_straight is 2:  #pooled
            self.review_results["pooled"] = True
            self.review_results["pooled_total"] = get_bool(
                "Does the association's pooled reserve schedule include the\n"
                "following information?\n\n"
                "1. The total estimated useful life of each asset within the\n"
                "   pooled analysis.")
            self.review_results["pooled_remaining"] = get_bool(
                "2. The estimated remaining useful life of each asset within\n"
                "   the pooled analysis.")
            self.review_results["pooled_replacement"] = get_bool(
                "3. The estimated replacement cost or deferred maintenance\n"
                "   expense of each asset within the pooled analysis.")
            self.review_results["pooled_balance"] = get_bool(
                "4. The estimated fund balance of the pooled reserve account\n"
                "   as of the beginning of the period for which the budget\n"
                "   will be in effect.")
            # emptry strings for the other methord of reserves
            self.review_results["straight_line"] = ""
            self.review_results["total_estimate"] = ""
            self.review_results["remaining_estimate"] = ""
            self.review_results["replacement_cost"] = ""
            self.review_results["beginning_balance"] = ""
            self.review_results["dev_obligation"] = ""

        self.review_results["other_reserves"] = get_bool_or_na(
            "Did the association include a separate schedule of any other\n"
            "reserve funds to be restricted by the association as a separate\n"
            "line item with the following minimum disclosures:\n"
            "1. The intended use of the restricted funds.\n"
            "2. The estimated fund balance of the item at the beginning of\n"
            "   period for which the budget will be in effect.\n"
            "Enter \"N/A\" if there is not evidence of other reserves.")
    def step_through_statute(self):
        # detailed and classified
        self.review_results["classification"] = get_bool(
            "The proposed annual budget of estimated revenues and expenses\n"
            "must be detailed and must show the amounts budgeted by accounts\n"
            "and expense classifications...\n"
            "Does the budget meet this standard?")

        # specific categories from FS 718.504(21), intro and first one
        self.review_results["assessments"] = get_bool(
            "The budget shall include, at a minimum, any applicable expenses\n"
            "listed in s. 718.504(21).\n\n"
            "Does the budget include the following expenses?\n\n"
            "(a) The estimated monthly and annual expenses of the condominium\n"
            "    and the association that are collected from unit owners by\n"
            "    assessments.")

        self.review_results["special_pay"] = get_bool_or_na(
            "(b) The estimated monthly and annual [amount owed] by the unit\n"
            "    owner to persons or entities other than the association, as\n"
            "    well as to the association, including fees assessed pursuant\n"
            "    to s. 718.113(1) for maintenance of limited common elements\n"
            "    where such costs are shared only by those entiteled to use\n"
            "    the limited common element, and the total estimated monthly\n"
            "    and annual expense. (Numerous exceptions listed.)\n\n"
            "Enter N/A if there is no evidence this expense applies.")

        # the list under subsection (c) starts here
        self.review_results["admin"] = get_bool(
            "Subsection (c) requires the following items specifically.\n"
            "Indicate whether they were included or if association marked\n"
            "these items as \"N/A\".\n\n"
            "Administration of the association?")
        self.review_results["management"] = get_bool("Management fees?")
        self.review_results["maintenance"] = get_bool("Maintenance?")
        self.review_results["rec_rent"] = get_bool(
            "Rent for recreataional and other commonly used facilities?")
        self.review_results["taxes_prop"] = get_bool(
            "Taxes upon association property?")
        self.review_results["taxes_leased"] = get_bool(
            "Taxes upon leased areas?")
        self.review_results["insurance"] = get_bool("Insurance?")
        self.review_results["security"] = get_bool("Security provisions?")
        self.review_results["other"] = get_bool("Other expenses?")
        self.review_results["operating"] = get_bool("Operating capital?")
        self.review_results["reserves"] = get_bool("Reserves?")
        self.review_results["division_fees"] = get_bool(
            "Fees payable to the division?")
        self.review_results["unit_rent"] = get_bool(
            "Rent for the unit, if subject to a lease.")
        self.review_results["other_rent"] = get_bool(
            "Rent payable by the unit owner directly to the lessor or agent\n"
            "under any recreational lease or lease for the use of commonly\n"
            "used facilities, which use and payment is a mandatory condition\n"
            "of ownership and is not included in the common expense or\n"
            "assessments for common maintenance paid by the unit owners to\n"
            "the association.")

        self.review_results["min_months"] = get_bool(
            "(f) The estimated budget covers a period of at least 12 months.")
Ejemplo n.º 9
0
    def statement_component_review(self):

        # for docx merge value
        self.review_results["reporting_level"] = self.reporting_level

        # check for accountant preparation for appropriate levels
        if "Compiled" not in self.reporting_level:
            self.review_results["accountant_prep"] = get_bool(
                "Did an independent certified public accountant prepare the\n"
                "financial statement as required by F.A.R. 61B-22.006(1)?")
        else:
            self.review_results["accountant_prep"] = "N/A"

        # FINANCIAL STATEMENT COMPONENTS
        prompt = (
            "\n\n"
            "Was each of the following components included in the financial\n"
            "statements pursuant to F.A.R. 61B-22.006(2)?")
        print prompt

        if "Compiled" not in self.reporting_level:
            self.review_results["accountant_report"] = get_bool(
                "Accountant's or auditor's report?")
        else:
            self.review_results["accountant_report"] = "N/A"

        self.review_results["balance_sheet"] = get_bool("Balance sheet?")

        self.review_results["revenues_expenses"] = get_bool(
            "Statement of revenues and expenses?")

        self.review_results["changes_funds"] = get_bool(
            "Statement of changes in fund balances?")

        self.review_results["cash_flows"] = get_bool(
            "Statement of cash flows?")

        self.review_results["notes"] = get_bool(
            "Notes to financial statements?")

        # RESERVE DISCLOSURES
        prompt = (
            "\n\nWas each of the following reserve disclosures provided\n"
            "regardless of whether reserves have been waived for the fiscal\n"
            "period covered by the financial statements?")
        print prompt

        self.review_results["beginning_reserves"] = get_bool(
            "The beginning balance in each reserve account as of the\n"
            "beginning of the fiscal period covered by the financial statement?"
        )

        self.review_results["reserve_additions"] = get_bool(
            "The amount of assessments and other additions to each reserve\n"
            "account including authorized transfers from other reserve accounts?"
        )

        self.review_results["reserve_expenditures"] = get_bool(
            "The amount expended or removed from each reserve account,\n"
            "including authorized transfers to other reserve accounts?")

        self.review_results["ending_reserves"] = get_bool(
            "The ending balance in each reserve account as of the end of the\n"
            "fiscal period covered by the financial statement?")

        self.review_results["annual_funding"] = get_bool(
            "The amount of annual funding required to fully fund each reserve\n"
            "account, or pool of accounts, over the remaining useful life of\n"
            "the applicable asset or group of assets?")

        self.review_results["reserves_manner"] = get_bool(
            "The manner by whice reserve items were estimated, the date the\n"
            "estimates were last made, the association's policies for allocating\n"
            "reserve fund interest, and whether reserves have been waived during\n"
            "the period covered by the financial statements?")

        rare_disclosures = get_bool(
            "Do rarely required disclosures apply? These include unit income\n"
            "and expense allocation, special assessments, limited common\n"
            "elements, and guarantees.")

        if rare_disclosures is False:
            self.review_results["method_allocation"] = "N/A"
            self.review_results["special_assessments"] = "N/A"
            self.review_results["limited_common_elements"] = "N/A"
            self.review_results["guarantee_disclosures"] = "N/A"
            return

        # rarely addressed disclosures requirements
        prompt = (
            "The following disclosure requirements may not be required.\n"
            "If not required, enter N/A. Statutory language follows:")

        self.review_results["method_allocation"] = get_bool_or_na(
            "The method by which income and expenses were allocated to the\n"
            "unit owners.")

        self.review_results["special_assessments"] = get_bool_or_na(
            "The specific purpose or purposes of any special assessments\n"
            "to unit owners pursuant to Section 718.116(10), F.S., and the\n"
            "amount of each special assessment and the disposition of the\n"
            "funds collected.")

        self.review_results["limited_common_elements"] = get_bool_or_na(
            "The amount of revenues and expenses related to limited common\n"
            "elements shall be disclosed when the association maintains the\n"
            "limited commons elements and the expense is apportioned to those\n"
            "unit owners entitled to exclusive use of the limited common\n"
            "elements.")

        self.review_results["guarantee_disclosures"] = get_bool_or_na(
            "If a guarantee pursuant to Section 718.116(9), F.S., existed at\n"
            "any time during the fiscal year, the financial statements shall\n"
            "disclose the following:\n"
            "1. Period of time covered by the guarantee;\n"
            "2. The amount of common expenses incurred during the guarantee\n"
            "   period.\n"
            "3. The amount of assessments charged to non=developer unit\n"
            "   owners during the guarantee period.\n"
            "4-7 etc.")
Ejemplo n.º 10
0
    def report_component_review(self):
        # Checking for everything in FS 718.111(13)(b)2.
        self.review_results["receipts"] = get_bool(
            "Has the association disclosed \"the amount of receipts by accounts"
            "\nand receipt classifications\"?")

        self.review_results["expenses"] = get_bool(
            "Has the association disclosed \"the amount of expenses by accounts"
            "\nand expense classifications\"?")

        print "\nDid the association specifically include in its report:"

        self.review_results["security"] = get_bool("Security costs?")
        self.review_results["pro_and_man"] = get_bool(
            "Professional and managment fees and expenses?")
        self.review_results["taxes"] = get_bool("Taxes?")
        self.review_results["rec_facilities"] = get_bool(
            "Recreational facilities?")
        self.review_results["refuse_utilities"] = get_bool(
            "Expenses for refuse collection and utility services?")
        self.review_results["lawn"] = get_bool("Expenses for lawn care?")
        self.review_results["buildings"] = get_bool(
            "Costs for building maintenance and repair?")
        self.review_results["insurance"] = get_bool("Insurance costs?")
        self.review_results["admin_salaries"] = get_bool(
            "Administration and salary expenses?")
        self.review_results["reserves"] = get_bool(
            "Reserves accumulated for capital expenditures, deferred\n"
            "maintenance, and any other category for which the association\n"
            "maintains reserves.")
Ejemplo n.º 11
0
 def get_corporate_info(self):
     print "Corporation:", self.cdm.case_list[1]
     sunbiz = "http://search.sunbiz.org/Inquiry/CorporationSearch/ByName"
     wb.open_new_tab(sunbiz)
     self.corp_status = get_bool("Is corporate status active?")
     self.corp_status = "active" if self.corp_status is True else "inactive"