{"version":3,"sources":["features/TaxSummary/TaxSummary.module.scss","components/DataEntryTable/DataEntryTable.module.scss","features/RealTangibleProperty/RealTangibleLocations/RealTangibleLocations.module.scss","features/CcPayment/CcPayment.module.scss","components/ReviewForm/ReviewForm.module.scss","components/ReviewForm/PrintReviewForm.module.scss","features/AccountInfo/confirm/ConfirmAccountInfo.module.scss","features/BusinessLicenseSelect/BusinessLicenseSelect.module.scss","components/Voucher/Voucher.module.scss","features/FilingInfo/FilingInfo.module.scss","components/ProgressBar/ProgressBar.module.scss","components/CheckboxField/CheckboxField.module.scss","App.module.scss","assets/img/KCLogoNew.png","features/Login/Login.module.scss","components/RadiobuttonField/RadiobuttonField.module.scss","assets/img/satisfaction-survey-faces.jpg","features/BusinessLicense/BusinessLicense.module.scss","features/RealTangibleProperty/RealTangibleValue/RealTangibleValue.module.scss","features/RealTangibleProperty/PropertyValueByLocation/PropertyValueByLocation.module.scss","components/Modal/Modal.module.scss","features/TaxForms/TaxForms.module.scss","components/DatepickerField/DatepickerField.module.scss","features/Payroll/Payroll/Payroll.module.scss","features/Payroll/KentonCountyPayroll/KentonCountyPayroll.module.scss","features/Review/ReviewPrint.module.scss","features/BusinessLicenseLocations/BusinessLicenseLocations.module.scss","features/Attachments/Attachments.module.scss","components/Card/Card.module.scss","features/Home/Home.module.scss","assets/img/filing-wizard-graphic.png","assets/img/standard-online-filing-graphic.png","assets/img/businessLicenseImg.png","assets/img/busLicLoginPage.png","components/FieldWrapper/FieldWrapper.module.scss","components/ValidationError/ValidationError.module.scss","components/ButtonGroup/ButtonGroup.module.scss","features/GrossReceipts/Locations/GrossReceiptsLocations.module.scss","components/Content/Content.module.scss","features/Payroll/Locations/PayrollLocations.module.scss","features/Rent/RentPaid/RentPaid.module.scss","components/YesNoGroup/Yesnogroup.module.scss","features/Rent/GrossAnnualRent/GrossAnnualRent.module.scss","features/Rent/Locations/RentLocations.module.scss","features/Rent/TotalGrossRental/TotalGrossRental.module.scss","assets/img/businessLicenseSelect-countywide.png","assets/img/businessLicenseSelect-locationSpecific.png","features/ExtensionsFiled/ExtensionFiled.module.scss","providers/Progress.tsx","components/ProgressBar/ProgressBar.tsx","providers/Title.tsx","providers/Body.tsx","styles/constants.ts","components/Button/Button.tsx","components/Card/Card.tsx","routes/constants.ts","features/Home/Home.tsx","components/Modal/Modal.tsx","features/BusinessLicense/BusinessLicense.tsx","components/TextInput/TextInput.tsx","components/FieldWrapper/FieldWrapper.tsx","components/ValidationError/ValidationError.tsx","services/axiosService.ts","config.ts","services/accountService.ts","providers/Filing.tsx","services/authService.ts","services/saveProgress.ts","providers/Authentication.tsx","components/ButtonGroup/ButtonGroup.tsx","services/annualService.ts","services/taxFormsService.ts","providers/BusinessLicense.tsx","providers/GrossReceipts.tsx","providers/Payroll.tsx","providers/NetProfits.tsx","providers/Rent.tsx","providers/RealTangible.tsx","models/taxFormsConfig.ts","components/LoadingSpinner/LoadingSpinner.tsx","features/Login/Login.tsx","features/AccountInfo/confirm/ConfirmAccountInfo.tsx","features/AccountInfo/edit/EditAccountInfo.tsx","components/CheckboxField/CheckboxField.tsx","features/TaxForms/TaxForms.tsx","components/DatepickerField/DatepickerField.tsx","components/RadiobuttonField/RadiobuttonField.tsx","features/FilingInfo/FilingInfo.tsx","services/locationService.ts","providers/Locations.tsx","features/GrossReceipts/Locations/GrossReceiptsLocations.tsx","components/Content/Content.tsx","components/CurrencyInput/CurrencyInput.tsx","components/DataEntryTable/DataEntryTable.tsx","features/GrossReceipts/Details/GrossReceiptsDetails.tsx","features/GrossReceipts/Totals/GrossReceiptsTotals.tsx","features/Payroll/Payroll/Payroll.tsx","features/Payroll/KentonCountyPayroll/KentonCountyPayroll.tsx","features/Payroll/Locations/PayrollLocations.tsx","features/Payroll/TotalsByLocation/PayrollTotalsByLocation.tsx","features/Payroll/TotalPayrollExpense/TotalPayrollExpense.tsx","features/NetProfits/NetProfits.tsx","components/YesNoGroup/Yesnogroup.tsx","features/Rent/RentPaid/RentPaid.tsx","features/Rent/GrossAnnualRent/GrossAnnualRent.tsx","features/RealTangibleProperty/RealTangibleLocations/RealTangibleLocations.tsx","features/RealTangibleProperty/RealTangibleValue/RealTangibleValue.tsx","features/Rent/Locations/RentLocations.tsx","features/Rent/TotalGrossRental/TotalGrossRental.tsx","services/pastReturnsService.ts","providers/pastFiled.tsx","features/ExtensionsFiled/ExtensionFiled.tsx","components/ReviewForm/ReviewForm.tsx","components/ReviewForm/PrintReviewForm.tsx","features/Review/ReviewPrint.tsx","features/Review/Review.tsx","models/taxForm.ts","features/RealTangibleProperty/PropertyValueByLocation/PropertyValueByLocation.tsx","features/BusinessLicenseSelect/BusinessLicenseSelect.tsx","services/ccService.ts","features/TaxSummary/TaxSummary.tsx","features/Deductions/Deductions.tsx","features/Additions/Additions.tsx","features/BusinessLicenseLocations/BusinessLicenseLocations.tsx","services/attachmentService.ts","features/Attachments/Attachments.tsx","components/Voucher/Voucher.tsx","features/Complete/Complete.tsx","features/CcPayment/CcPaymentConfirmation.tsx","routes/index.tsx","App.tsx","registerServiceWorker.js","index.tsx"],"names":["module","exports","wizardArray","initialValues","currentPage","value","ProgressContext","createContext","ProgressProvider","props","useState","setValue","setCurrentPage","useEffect","Math","floor","indexOf","length","values","useMemo","Provider","children","useProgress","context","useContext","undefined","Error","ProgressBar","className","styles","baseLayer","progressLayer","filler","fillerFull","style","width","label","sectionLayer","currentTitle","TitleContext","TitleProvider","setCurrentTitle","useTitle","currentBody","header","body","BodyContext","BodyProvider","setCurrentBody","useBody","styleConstants","Button","disabled","onClick","primary","warning","rest","buttonProps","backgroundColor","border","borderWidth","borderColor","borderRadius","color","fontWeight","boxShadow","cursor","transition","background","sx","Card","image","alt","console","log","button","src","ROUTES","Home","history","useHistory","filingWizardGraphic","push","fontSize","margin","standardOnlineFilingGraphic","baseCommunityUrl","process","REACT_APP_BASE_COMMUNITY_URL","currentHost","window","location","hostname","includes","assign","Modal","title","img","onClose","trigger","onLoad","height","open","setOpen","onAfterClose","onAfterOpen","isOpen","modal","ariaHideApp","overlayClassName","overlay","p","minWidth","maxWidth","pb","borderBottom","borderBottomColor","font","py","pt","borderTop","borderTopColor","BusinessLicense","marginBottom","link","display","justifyContent","businessLicenseImg","objectFit","TextInput","field","error","form","helperText","FieldWrapper","fieldWrapper","ValidationError","axios","axiosStatic","create","baseURL","interceptors","response","use","token","headers","split","sessionStorage","setItem","alert","clear","replace","Promise","reject","request","config","getItem","Authorization","AxiosService","staticAxios","ReturnType","accountService","accountNumber","a","this","get","data","authService","taxID","post","saveProgressService","info","taxForms","locations","details","deductions","totals","rent","properties","JSON","parse","isLoggedIn","AuthContext","AuthProvider","setAccountNumber","account","setAccount","setError","isLoading","setIsLoading","setIsLoggedIn","resetAuth","useCallback","defaults","common","login","taxId","success","accountInfo","stringify","logout","getAccountInfo","updateAccountInfo","saveAccountInfo","useAuth","ButtonGroup","annualService","year","returnId","paymentType","isEstimatedPayment","confirmationNumber","taxFormsService","BusinessLicenseType","FilingContext","initialFilingInfo","initialTaxFormValues","otherForms","otherFormsSelected","FilingProvider","returnType","setReturnType","selectedTaxForms","setSelectedTaxForms","setTaxForms","yearEndDate","dayjs","format","setYearEndDate","dueDate","setDueDate","checkForExistingReturn","checkForExtensionRequest","checkForUnprocessedReturn","getTaxFormsForYear","getTaxForms","saveFilingInformation","saveTaxForms","useFiling","GrossReceiptsContext","initialSelectedLocations","initialDetails","initialTotals","initialDeductions","GrossReceiptsProvider","selectedLocations","setSelectedLocations","setDetails","setTotals","setDeductions","saveSelectedLocations","saveGrossReceiptDetails","saveGrossReceiptsTotals","getGrossReceiptsTotals","e","saveGrossReceiptsDeductions","removeTotals","formId","useGrossReceipts","PayrollContext","storedPayrollValue","storedKentonPayrollValue","initialHasPayroll","initialHasKentonPayroll","initialPayrollTotalsByLocation","initialpayrollExpense","PayrollProvider","hasPayroll","setHasPayroll","hasKentonPayroll","setHasKentonPayroll","payrollTotalsByLocation","setpayrollTotalsByLocation","totalPayrollExpense","setTotalPayrollExpense","savePayrollResponse","val","toString","saveKentonPayrollResponse","savePayrollTotalsByLocation","saveTotalPayrollExpense","usePayroll","NetProfitsContext","initialNetProfitsForm","initialNetProfitAdditions","NetProfitsProvider","netProfitsForm","setNetProfitsForm","additions","setAdditions","saveNetProfitsForm","saveNetProfitsAdditions","useNetProfits","RentContext","storedRentIsPaidValue","initialRentIsPaid","initialGrossAnnualRentForm","initialRentTotalGross","RentProvider","rentIsPaid","setRentPaidResponse","grossAnnualRentForm","setGrossAnnualRentForm","rentTotalGross","setRentTotalGross","saveRentPaidResponse","saveGrossAnnualRentForm","saveRentTotalGross","useRent","RealTangibleContext","initialRealTangibleValueForm","initialPropertyValueByLocationForm","RealTangibleProvider","realTangibleValueForm","setRealTangibleValueForm","propertyValueByLocationForm","setPropertyValueByLocationForm","savePropertyValueByLocationForm","saveRealTangibleValueForm","useRealTangible","FormType","BusinessLicenseContext","initialLicenseSelection","parseInt","BusinessLicenseProvider","selectedType","setSelectedType","renewedLocations","setRenewedLocations","saveSelectedType","newSelectedType","getRenewedLocations","ActualReturn","useBusinessLicense","LoadingSpinner","strokeColor","strokeWidth","animationDuration","visible","Login","loading","setLoading","saveKentonPayrollLocations","saveSelectedRentLocations","saveRealTangibleLocations","saveLicenseLocations","returnTrueForms","allForms","trueForms","forEach","TaxFormId","returnTrueLocations","LocationId","returnTrueGrossForm","Value","returnTrueGrossTotals","retVals","TaxFormLineItemId","returnTrueGrossDeductions","Deductions","AppliesToGrossReceipts","returnPayrollDetailLocations","returnPayrollDetailValues","returnTotalPayrollExpense","returnNetProfits","filter","x","NetProfit","returnNetProfitAdditions","AppliesToNetProfits","Additions","returnRentLocations","returnGrossAnnualRent","GrossAnnual","returnTotalGrossRent","returnRealTangibleLocations","returnRealTangibleValues","AverageValue","returnLicenseLocations","handleDb","Return","db","Id","AveragePropertyValue","BusinessLicenseLocations","Payroll","HasPayroll","PayrollKentonCounty","HasPayrollKentonCounty","Properties","RentPaid","HasRentPaid","Rents","ReturnFilingInfo","ReturnGrossReceiptTotals","ReturnGrossReceipts","ReturnPayrollDetails","ReturnPayrollTotals","TaxForms","ReturnTaxForms","TotalRents","LicenseType","LicenseLocations","FiscalYearEndDate","trueValues","trueLocations","0","my","onSubmit","getProgress","message","htmlFor","name","component","placeholder","mx","loginBusLicImg","modalImg","flexDirection","flexWrap","marginTop","type","ConfirmAccountInfo","mt","mb","id","dba","address","attention","address1","address2","city","state","zip","contactName","contactTitle","contactEmail","contactPhone","EditAccountInfo","number","validate","errors","Object","keys","validateOnBlur","touched","isValidating","Boolean","ml","pr","px","required","aria-required","tabIndex","goBack","CheckboxField","fetched","setFetched","removeGrossReceiptTotals","removePayrollTotals","removeRentTotals","getReturnInfo","returnInfo","AccountNumber","LastStep","removedItems","map","trueItems","reduce","acc","item","saveTaxFormsProgress","Data","saveReturnInfo","trueVals","oneRequired","dirty","role","aria-labelledby","key","join","data-tip","tooltipDescription","confirm","handleGoBack","tooltipWrapper","DatePickerField","setFieldValue","useFormikContext","useField","kctpDatepicker","selected","Date","onChange","RadiobuttonField","FilingInfo","calculateDueDate","date","month","day","add","emancipationDay","helpSection","helpText","propertyValueText","textSection","selectedDate","selectedYear","currentDate","currentYear","ExtensionRequest","isAfter","returnNeedsProcessed","extensionRequest","previousReturn","filingInfo","fiscalYearEndDate","saveFilingInfo","NormalReturn","locationService","LocationsContext","LocationsProvider","availableLocations","setAvailableLocations","getAvailableLocations","getLocations","useLocations","GrossReceiptsLocations","grossReceiptsLocationsForm","saveGrossReceiptsLocations","Content","CurrencyInput","parseFloat","toFixed","setVal","prefix","decimalsLimit","onValueChange","newVal","onBlur","formatter","Intl","NumberFormat","currency","DataEntryTable","rows","cols","sumRows","sumCols","valOption","combineErrors","allowNegative","errorCallback","totalRowLabel","additionsAndDeductions","totalRows","additionsTotal","deductionsTotal","formType","formatValue","isNaN","Number","formattedValue","Set","deepObjectValues","newVals","idx","splice","dataEntryTable","colLabel","colLabelInner","colLabelText","index","rowSum","b","plus","Decimal","toNumber","Addition","additionValue","deductionValue","rowLabel","lineDescription","lineItem","y","disabledCell","cell","currencyField","totalLabel","totalCell","colSpan","GrossReceiptsDetails","dataEntryRows","setDataEntryRows","dataEntryCols","setDataEntryCols","getTrueValues","saveGrossReceiptsDetails","GrossReceiptsTotals","setInitialValues","tempInitialValues","formsToShow","lineItems","taxFormLineItems","flatMap","pageId","lineNumber","description","lineItemIds","past","from","sum","detailSum","getReturninfo","KentonCountyPayroll","PayrollLocations","fromEntries","entries","savePayrollLocations","PayrollTotalsByLocation","savePayrollDetails","PayrollExpense","savePayrollTotals","NetProfits","form4797LineItems","li","schedDLineItems","schedELineItems","schedFLineItems","saveNetProfits","Yesnogroup","content","displayErrMsg","hasValueSelected","checked","GrossAnnualRent","bodyText","saveGrossAnnualRent","RealTangibleLocations","sectionHeader","helpIconsWrapper","helpIconWithText","size","helpIconsText","saveRealTangilbleProperties","getEstimatedReturnLicenseType","Locations","trueChecks","filtered","RealTangibleValue","avgPropertyValue","RentLocations","saveRentLocations","TotalGrossRental","saveRentTotals","pastReturnsService","PastReturnContext","PastReturnProvider","pastReturn","setPastReturns","getPastReturn","getPastReturns","usePastReturn","ExtensionsFiled","entryDate","minimumFractionDigits","exists","toLocaleDateString","taxPaid","licenseFeePaid","textAlign","ReviewForm","columns","totalBy","totalOnClick","detailsOnClick","calcTotal","cells","partialSum","row","ammount","rowTitle","rowData","cellIndex","PrintReviewForm","sectionWrapper","ReviewPrint","React","forwardRef","ref","printWrapper","kcLogoSize","KCLogo","AccountInfo","getFormattedValues","forms","retVal","locationId","find","taxFormId","line","Review","setData","secondcom","useRef","sessionData","atomic","current","PropertyValueByLocation","saveProperties","BusinessLicenseSelect","isPastDue","handleClick","County","None","CountyWideImg","LocationImg","ccService","payment","parsedRes","cctPostback","TaxSummary","GRDetails","PRDetails","RentDetails","RTDetails","returnDetails","setReturnDetails","setConfirmationNumber","feesDue","setFeesDue","redirecting","setIsRedirecting","setIsEstimatedPayment","showDisclaimerModal","setShowDisclaimerModal","isActualOrFinal","FinalReturn","cityString","cityName","grossReceipts","payroll","realTangible","feeDue","submitZeroReturn","postAnnualHeader","handleSaveAndContinue","paymentInfo","getPaymentInfo","redirectToNic","redirectData","setSessionStorage","legacyRedirectUrl","amountDue","addEventListener","event","persisted","reload","getTaxDue","checkNavigation","isEstimatedReturn","formattedEstimatedTotal","slice","formattedTotal","textDecoration","href","footer","summaryPdfUrl","cityIdString","priorPayment","cityId","mainContainer","estimatedFeeDue","citySection","sectionText","totalGrossReceipts","locationGrossReceipts","salesFactor","sectionSpacer","totalPayroll","locationPayroll","payrollFactor","totalPropertyValue","locationPropertyValue","totalRentPaid","locationRentPaid","totalPropertyAndRents","locationPropertyAndRents","propertyFactor","factorTotals","numFactors","allocationFactor","taxMethod","totalNetProfit","allocatedEarnings","rate","feeLessPandI","penaltyRate","penalty","interestRate","interest","hasCountyWideLicense","licenseFee","countyWideLicenseCost","total","estimatedTotal","selectedTaxForm","f","appliesToGrossReceipts","Deduction","appliesToNetProfits","col","saveNetProfitsAdditionsDeductions","showCountyError","setShowCountyError","combinedLocations","setCombinedLocations","combineSelectedAndRenewedLocations","renewedLocationsObj","combinedLocationsObj","getTrueLocations","saveBusinessLicenseLocations","isValid","code","attachmentService","file","formData","FormData","append","fileName","delete","Attachments","fileRef","selectedFile","setSelectedFile","attachments","setAttachments","setReturnId","userRemindedToUpload","setUserRemindedToUpload","getAttachments","files","submit","saveAttachment","cancelQueuedFile","deleteAttachment","attachmentTable","redX","target","marginLeft","Voucher","businessAccountName","businessDba","returnDueDate","returnFiling","fontStyle","Complete","getReturnDetails","getCompletedReturnData","componentRef","handleVoucherPrint","useReactToPrint","aria-label","rel","surveyFaces","KcLogo","accountName","accountDba","formattedDueDate","CcPaymentConfirmation","paymentStatus","setPaymentStatus","cctData","setCctData","useLocation","params","URLSearchParams","search","status","parsedReturnId","isStale","getTransactionDetails","table","center","lftcol","taxFeeAmount","transactionFeeAmount","lastFour","cardType","billingAddr1","billingAddr2","billingAddrCity","billingAddrState","billingAddrZip","disclaimer","Routes","exact","path","headerRowContainer","pageHeader","watermark","match","baseUrl","document","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","App","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.1569cb75.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"mainContainer\":\"TaxSummary_mainContainer__2Z1Am\",\"citySection\":\"TaxSummary_citySection__1tFMr\",\"sectionTitle\":\"TaxSummary_sectionTitle__2FtCR\",\"title\":\"TaxSummary_title__m7pdz\",\"edit\":\"TaxSummary_edit__S7omt\",\"sectionSpacer\":\"TaxSummary_sectionSpacer__3QaLq\",\"grossReceiptsSection\":\"TaxSummary_grossReceiptsSection__1eZq0\",\"body\":\"TaxSummary_body__3Sqkw\",\"radio-wrapper\":\"TaxSummary_radio-wrapper__3Q0aS\",\"fieldWrapper\":\"TaxSummary_fieldWrapper__1jMOZ\",\"footer\":\"TaxSummary_footer__1jfcA\",\"row\":\"TaxSummary_row__2kTMT\",\"radio-circle\":\"TaxSummary_radio-circle__3I11m\",\"area\":\"TaxSummary_area__-dpUV\",\"disclaimer-modal\":\"TaxSummary_disclaimer-modal__ECxkj\",\"disclaimer-modal-content\":\"TaxSummary_disclaimer-modal-content__GQQQt\",\"modal-header\":\"TaxSummary_modal-header__2cbIk\",\"modal-footer\":\"TaxSummary_modal-footer__xpIk8\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"dataEntryTable\":\"DataEntryTable_dataEntryTable__2Pv7Y\",\"colLabelInner\":\"DataEntryTable_colLabelInner__1rJ0D\",\"colLabelText\":\"DataEntryTable_colLabelText__36jKA\",\"rowLabel\":\"DataEntryTable_rowLabel__393rC\",\"sub\":\"DataEntryTable_sub__3_Ebc\",\"lineDescription\":\"DataEntryTable_lineDescription__3azIJ\",\"cell\":\"DataEntryTable_cell__3Hkfb\",\"disabledCell\":\"DataEntryTable_disabledCell__2DS14\",\"totalCell\":\"DataEntryTable_totalCell__oPTOI\",\"currencyField\":\"DataEntryTable_currencyField__3Flsy\",\"totalLabel\":\"DataEntryTable_totalLabel__2udHH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content-col\":\"RealTangibleLocations_content-col__1aMty\",\"buttons-row\":\"RealTangibleLocations_buttons-row__2cFp0\",\"helpSection\":\"RealTangibleLocations_helpSection__1n_I5\",\"helpText\":\"RealTangibleLocations_helpText__dkVei\",\"helpIconsWrapper\":\"RealTangibleLocations_helpIconsWrapper__2qyVt\",\"helpIconWithText\":\"RealTangibleLocations_helpIconWithText__MKh0I\",\"helpIcons\":\"RealTangibleLocations_helpIcons__2veew\",\"helpIconsText\":\"RealTangibleLocations_helpIconsText__2tPnR\",\"propertyValueText\":\"RealTangibleLocations_propertyValueText__2L1gX\",\"textSection\":\"RealTangibleLocations_textSection__OapFt\",\"sectionHeader\":\"RealTangibleLocations_sectionHeader__XrLNY\",\"index\":\"RealTangibleLocations_index__2sVWB\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"center\":\"CcPayment_center__20aZO\",\"lftcol\":\"CcPayment_lftcol__1j62c\",\"table\":\"CcPayment_table__1UAXL\",\"disclaimer\":\"CcPayment_disclaimer__1f6No\",\"footer\":\"CcPayment_footer__2bS67\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"ReviewForm\":\"ReviewForm_ReviewForm__xWhTU\",\"header\":\"ReviewForm_header__3mdVN\",\"row\":\"ReviewForm_row__ZhyZE\",\"ammount\":\"ReviewForm_ammount__FjpR1\",\"dataEntryTable\":\"ReviewForm_dataEntryTable__U8Y_q\",\"colLabelInner\":\"ReviewForm_colLabelInner__2u1Gq\",\"colLabelText\":\"ReviewForm_colLabelText__3Ojsb\",\"rowLabel\":\"ReviewForm_rowLabel__CDRxd\",\"sub\":\"ReviewForm_sub__11RLD\",\"lineDescription\":\"ReviewForm_lineDescription__18ncU\",\"cell\":\"ReviewForm_cell__vKyoM\",\"totalCell\":\"ReviewForm_totalCell__Dwbyw\",\"currencyField\":\"ReviewForm_currencyField__1DWv6\",\"totalLabel\":\"ReviewForm_totalLabel__30pjZ\",\"link\":\"ReviewForm_link__3RyGI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"sectionWrapper\":\"PrintReviewForm_sectionWrapper__1aFvI\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title-row\":\"ConfirmAccountInfo_title-row__3gKoI\",\"label-confirm\":\"ConfirmAccountInfo_label-confirm__1fzwh\",\"p-confirm\":\"ConfirmAccountInfo_p-confirm__342K3\",\"buttons-row\":\"ConfirmAccountInfo_buttons-row__1Mb9N\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"all-container\":\"BusinessLicenseSelect_all-container__2vJBw\",\"cards-container\":\"BusinessLicenseSelect_cards-container__1tSlQ\",\"info-style\":\"BusinessLicenseSelect_info-style__1Cmo1\",\"button-container\":\"BusinessLicenseSelect_button-container__NLPaX\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"base-layer\":\"Voucher_base-layer__Tlfk4\",\"upper-layer\":\"Voucher_upper-layer__1R0KG\",\"lower-layer\":\"Voucher_lower-layer__1iNPl\",\"header-layer\":\"Voucher_header-layer__2xqkM\",\"header-text\":\"Voucher_header-text__10hcB\",\"content-layer\":\"Voucher_content-layer__1CygN\",\"bullet-layer\":\"Voucher_bullet-layer__M_nVa\",\"mail-layer\":\"Voucher_mail-layer__3JJjG\",\"notice-layer\":\"Voucher_notice-layer__v7SOj\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content-col\":\"FilingInfo_content-col__2WUX1\",\"date-picker\":\"FilingInfo_date-picker__gm1Vw\",\"label\":\"FilingInfo_label__A7ah9\",\"helpSection\":\"FilingInfo_helpSection__27and\",\"helpText\":\"FilingInfo_helpText__3N3HI\",\"helpIconsWrapper\":\"FilingInfo_helpIconsWrapper__304A8\",\"helpIconWithText\":\"FilingInfo_helpIconWithText__2pbED\",\"helpIcons\":\"FilingInfo_helpIcons__3m2LB\",\"helpIconsText\":\"FilingInfo_helpIconsText__3CyXZ\",\"propertyValueText\":\"FilingInfo_propertyValueText__2qFEl\",\"textSection\":\"FilingInfo_textSection__3MP3i\",\"sectionHeader\":\"FilingInfo_sectionHeader__2Mw74\",\"index\":\"FilingInfo_index__23rGv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"filler\":\"ProgressBar_filler__hTMAF\",\"fillerFull\":\"ProgressBar_fillerFull__1hS1T\",\"label\":\"ProgressBar_label__2WGy4\",\"baseLayer\":\"ProgressBar_baseLayer__1KszN\",\"progressLayer\":\"ProgressBar_progressLayer__1SGRg\",\"sectionLayer\":\"ProgressBar_sectionLayer__1K9Dv\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"checkboxLabel\":\"CheckboxField_checkboxLabel__E-eNC\",\"row\":\"CheckboxField_row__19K6z\",\"label\":\"CheckboxField_label__3CcTX\",\"checkbox-square\":\"CheckboxField_checkbox-square__3BQ3Q\",\"area\":\"CheckboxField_area__33S68\",\"noselect\":\"CheckboxField_noselect__3eRGk\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title\":\"App_title__2jEJD\",\"headerRowContainer\":\"App_headerRowContainer__G_yAH\",\"pageHeader\":\"App_pageHeader__2Fim8\",\"kcLogoSize\":\"App_kcLogoSize__3CqvK\",\"watermark\":\"App_watermark__2-Trd\",\"contact-phone\":\"App_contact-phone__1s15p\",\"vulnerability-report-link\":\"App_vulnerability-report-link__1TG6A\"};","module.exports = __webpack_public_path__ + \"static/media/KCLogoNew.a7a8c7bc.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"login-form\":\"Login_login-form__3FL2y\",\"link\":\"Login_link__K6tBR\",\"modalImg\":\"Login_modalImg__61W31\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"row\":\"RadiobuttonField_row__2yiAV\",\"radio-circle\":\"RadiobuttonField_radio-circle__3R5Ea\",\"area\":\"RadiobuttonField_area__1xVZm\"};","module.exports = __webpack_public_path__ + \"static/media/satisfaction-survey-faces.f6ecad9b.jpg\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title-container\":\"BusinessLicense_title-container__qVxZA\",\"link\":\"BusinessLicense_link__1Pl7p\",\"buttons-row\":\"BusinessLicense_buttons-row__23EiN\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"body\":\"RealTangibleValue_body__1bWls\",\"header\":\"RealTangibleValue_header__3fuEH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bodyText\":\"PropertyValueByLocation_bodyText__39YiF\",\"header\":\"PropertyValueByLocation_header__zx2hu\",\"body\":\"PropertyValueByLocation_body__3tE3E\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"modal\":\"Modal_modal__PK1kq\",\"overlay\":\"Modal_overlay__gCbn4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title-row\":\"TaxForms_title-row__27gfS\",\"content-col\":\"TaxForms_content-col__2LXPB\",\"buttons-row\":\"TaxForms_buttons-row__2o8IB\",\"tooltipWrapper\":\"TaxForms_tooltipWrapper__25bu0\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"kctpDatepicker\":\"DatepickerField_kctpDatepicker__wh7jX\",\"error\":\"DatepickerField_error__FkUX-\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main-container-col\":\"Payroll_main-container-col__1isry\",\"content-col\":\"Payroll_content-col__3kX11\",\"buttons-row\":\"Payroll_buttons-row__299hQ\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main-container-col\":\"KentonCountyPayroll_main-container-col__-qn0T\",\"content-col\":\"KentonCountyPayroll_content-col__2xeFm\",\"buttons-row\":\"KentonCountyPayroll_buttons-row__t8-v4\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"printWrapper\":\"ReviewPrint_printWrapper__1pKD-\",\"kcLogoSize\":\"ReviewPrint_kcLogoSize__22RNg\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error\":\"BusinessLicenseLocations_error__2kUsT\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"attachmentTable\":\"Attachments_attachmentTable__37Uzv\",\"redX\":\"Attachments_redX__3NiPa\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"card-container\":\"Card_card-container__1sMsc\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"cards-container\":\"Home_cards-container__roJkK\"};","module.exports = __webpack_public_path__ + \"static/media/filing-wizard-graphic.cf5f546c.png\";","module.exports = __webpack_public_path__ + \"static/media/standard-online-filing-graphic.da949a48.png\";","module.exports = __webpack_public_path__ + \"static/media/businessLicenseImg.459d7df4.png\";","module.exports = __webpack_public_path__ + \"static/media/busLicLoginPage.acdc35aa.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fieldWrapper\":\"FieldWrapper_fieldWrapper__KalYp\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"error\":\"ValidationError_error__1V3Ql\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"fieldWrapper\":\"ButtonGroup_fieldWrapper__3U0dw\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"title-row\":\"GrossReceiptsLocations_title-row__OMIfN\",\"content-col\":\"GrossReceiptsLocations_content-col__1aFa_\",\"buttons-row\":\"GrossReceiptsLocations_buttons-row__UpDdo\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"Content\":\"Content_Content__oIVAK\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content-col\":\"PayrollLocations_content-col__fPlmE\",\"buttons-row\":\"PayrollLocations_buttons-row__207u7\",\"covington\":\"PayrollLocations_covington__1YT3W\",\"message\":\"PayrollLocations_message__1CK1s\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content-col\":\"RentPaid_content-col__VIs9C\",\"buttons-row\":\"RentPaid_buttons-row__3_J6F\",\"covington\":\"RentPaid_covington__EPUkt\",\"message\":\"RentPaid_message__6Veze\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content\":\"Yesnogroup_content__2IBvt\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bodyText\":\"GrossAnnualRent_bodyText__3GPnH\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"content-col\":\"RentLocations_content-col__3UxLi\",\"buttons-row\":\"RentLocations_buttons-row__36XMb\",\"covington\":\"RentLocations_covington__2z1CL\",\"message\":\"RentLocations_message__2dH7j\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"bodyText\":\"TotalGrossRental_bodyText__2_-ZT\"};","module.exports = __webpack_public_path__ + \"static/media/businessLicenseSelect-countywide.ac0b0047.png\";","module.exports = __webpack_public_path__ + \"static/media/businessLicenseSelect-locationSpecific.4d09e0b6.png\";","// extracted by mini-css-extract-plugin\nmodule.exports = {\"info\":\"ExtensionFiled_info__XbZnU\"};","import React, { createContext, useContext, useEffect, useMemo, useState } from \"react\";\r\n\r\nconst wizardArray = [\r\n \"account-confirm\",\r\n \"account-edit\",\r\n \"filing-info\",\r\n \"tax-forms\",\r\n \"gross-receipt-locations\",\r\n \"gross-details\",\r\n \"gross-totals\",\r\n \"deductions\",\r\n \"payroll\",\r\n \"kenton-payroll\",\r\n \"payroll-locations\",\r\n \"payroll-totals\",\r\n \"payroll-expense\",\r\n \"netprofits\",\r\n \"rentPaid\",\r\n \"rent-locations\",\r\n \"gross-annual\",\r\n \"rent-total-gross\",\r\n \"real-tangible-locations\",\r\n \"property-value\",\r\n \"real-tangible-value\",\r\n \"business-license-select\",\r\n \"business-license-locations\",\r\n \"attachments\",\r\n \"extension-filed\",\r\n \"review\",\r\n \"tax-summary\",\r\n \"complete\",\r\n];\r\n\r\nexport type WizardValues =\r\n \"account-confirm\" |\r\n \"account-edit\" |\r\n \"filing-info\" |\r\n \"tax-forms\" |\r\n \"gross-receipt-locations\" |\r\n \"gross-details\" |\r\n \"gross-totals\" |\r\n \"deductions\" |\r\n \"payroll\" |\r\n \"kenton-payroll\" |\r\n \"payroll-locations\" |\r\n \"payroll-totals\" |\r\n \"payroll-expense\" |\r\n \"netprofits\" |\r\n \"rentPaid\" |\r\n \"rent-locations\" |\r\n \"gross-annual\" |\r\n \"property-value\" |\r\n \"real-tangible-value\" |\r\n \"rent-total-gross\" |\r\n \"real-tangible-locations\" |\r\n \"real-tangible-value\" |\r\n \"business-license-select\" |\r\n \"business-license-locations\" |\r\n \"attachments\" |\r\n \"extension-filed\" |\r\n \"review\" |\r\n \"tax-summary\" |\r\n \"complete\";\r\n \r\n\r\ninterface ProgressContextType {\r\n currentPage: WizardValues | null;\r\n setCurrentPage?: (val: WizardValues | null) => void;\r\n value: number,\r\n}\r\n\r\nconst initialValues: ProgressContextType = {\r\n currentPage: null,\r\n value: 0,\r\n};\r\n\r\nexport const ProgressContext = createContext(initialValues);\r\n\r\nexport interface ProgressProviderProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nexport const ProgressProvider = (props: ProgressProviderProps) => {\r\n const [value, setValue] = useState(initialValues.value);\r\n const [currentPage, setCurrentPage] = useState(initialValues.currentPage);\r\n\r\n useEffect(() => {\r\n if (currentPage)\r\n setValue(Math.floor(((wizardArray.indexOf(currentPage) + 1) / (1.0 * (wizardArray.length))) * 100.0));\r\n }, [currentPage, setValue]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n currentPage,\r\n value,\r\n \r\n setCurrentPage\r\n }),\r\n [\r\n currentPage,\r\n value,\r\n\r\n setCurrentPage\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const useProgress = () => {\r\n const context = useContext(ProgressContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useProgress must be used within a ProgressProvider component.\");\r\n }\r\n\r\n return context;\r\n}","import React from 'react';\r\nimport { useProgress } from '../../providers/Progress';\r\nimport styles from './ProgressBar.module.scss';\r\n\r\n\r\nexport const ProgressBar = () => {\r\n const { value, currentPage } = useProgress();\r\n\r\n if (!currentPage) {\r\n return (<>);\r\n }\r\n\r\n return (\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n
\r\n
Step 1: Filing Information
\r\n
Step 2: Entry and Calculations
\r\n
Step 3: Review and Payment
\r\n
\r\n
\r\n );\r\n};\r\n","import React, { createContext, useContext, useMemo, useState } from \"react\";\r\n\r\ninterface TitleContextType {\r\n currentTitle: string;\r\n setCurrentTitle?: (val: string) => void;\r\n}\r\n\r\nconst initialValues: TitleContextType = {\r\n currentTitle: \"\"\r\n}\r\n\r\nexport const TitleContext = createContext(initialValues);\r\n\r\nexport interface TitleProviderProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nexport const TitleProvider = (props: TitleProviderProps) => {\r\n const [currentTitle, setCurrentTitle] = useState(initialValues.currentTitle);\r\n\r\n const values = useMemo(\r\n () => ({\r\n currentTitle,\r\n setCurrentTitle\r\n }),\r\n\r\n [\r\n currentTitle,\r\n setCurrentTitle\r\n ]\r\n )\r\n\r\n return \r\n {props.children}\r\n \r\n}\r\n\r\nexport const useTitle = () => {\r\n const context = useContext(TitleContext);\r\n\r\n if (context === undefined) {\r\n throw new Error('useTitle must be used within a titleProvider component.');\r\n }\r\n\r\n return context;\r\n} ","import React, { createContext, useContext, useMemo, useState } from \"react\";\r\n\r\ninterface BodyContextType {\r\n currentBody: {\r\n header: string;\r\n body: string;\r\n }\r\n setCurrentBody?: (val: {header:string,body:string}) => void;\r\n}\r\n\r\nconst initialValues: BodyContextType = {\r\n currentBody : {\r\n header:\"\",\r\n body:\"\"\r\n }\r\n}\r\n\r\nexport const BodyContext = createContext(initialValues);\r\n\r\nexport interface BodyProviderProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nexport const BodyProvider = (props: BodyProviderProps) => {\r\n const [currentBody, setCurrentBody] = useState(initialValues.currentBody);\r\n\r\n const values = useMemo(\r\n () => ({\r\n currentBody,\r\n setCurrentBody\r\n }),\r\n\r\n [\r\n currentBody,\r\n setCurrentBody\r\n ]\r\n )\r\n\r\n return \r\n {props.children}\r\n \r\n}\r\n\r\nexport const useBody = () => {\r\n const context = useContext(BodyContext);\r\n\r\n if (context === undefined) {\r\n throw new Error('useBody must be used within a bodyProvider component.');\r\n }\r\n\r\n return context;\r\n} ","export const styleConstants = {\r\n red: 'red',\r\n lightGray: 'lightgray',\r\n white: 'white',\r\n darkGreen: '#00837c',\r\n darkestGreen: '#024d49',\r\n lightGreen: '#2b918b',\r\n darkBlue: '#1f5197',\r\n gray: 'gray',\r\n whitesmoke: 'whitesmoke',\r\n confirm: '#4e4e4e',\r\n disabledGreen: '#659996',\r\n};\r\n","import React from \"react\";\r\nimport { Button as RebassButton } from 'rebass';\r\nimport { styleConstants } from \"../../styles/constants\";\r\n\r\nexport interface ButtonProps {\r\n icon?: string;\r\n disabled?: boolean;\r\n onClick?(): void;\r\n loading?: boolean;\r\n type?: string;\r\n primary?: boolean;\r\n children?: string;\r\n tabIndex?: number;\r\n warning?: boolean;\r\n}\r\n\r\nexport const Button = ({\r\n children,\r\n disabled = false,\r\n onClick,\r\n primary = true,\r\n warning = false,\r\n ...rest\r\n}: ButtonProps) => {\r\n let buttonProps = {\r\n backgroundColor: primary ? styleConstants.disabledGreen : styleConstants.white,\r\n border: '2px solid',\r\n borderWidth: 1,\r\n borderColor: warning ? styleConstants.red : styleConstants.darkGreen,\r\n borderRadius: 3,\r\n color: primary ? styleConstants.white : warning ? styleConstants.red : styleConstants.confirm,\r\n fontWeight: 'bold',\r\n boxShadow: 'rgba(0, 0, 0, 0.24) 0px 3px 8px;',\r\n cursor: 'pointer',\r\n } as any;\r\n\r\n if (!disabled) {\r\n buttonProps = {\r\n ...buttonProps,\r\n backgroundColor: primary ? styleConstants.darkGreen : styleConstants.white,\r\n transition: 'all 0.15s ease-in',\r\n ':hover': {\r\n background: primary ? styleConstants.darkestGreen : styleConstants.whitesmoke,\r\n },\r\n ':focus': {\r\n background: primary ? styleConstants.darkestGreen : styleConstants.whitesmoke,\r\n transition : 'none',\r\n },\r\n }\r\n }\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n","import React, { FunctionComponent } from \"react\";\n\nimport { Button } from \"../Button/Button\";\n\nimport styles from \"./Card.module.scss\";\n\ninterface CardProps {\n image?: string | undefined;\n alt?: string | undefined;\n onClick?(): void;\n label?: string;\n button?: boolean;\n}\n\nexport const Card: FunctionComponent = ({\n children,\n image,\n alt,\n onClick = () => console.log(\"button clicked!\"),\n label = \"START HERE\",\n button = true\n\n}) => {\n return (\n
\n {children}\n {alt}\n \n
\n );\n};\n","export const ROUTES = {\r\n HOME: \"/\",\r\n LOGIN: \"/login\",\r\n BUSINESS_LICENSE: \"/business-license\",\r\n ACCOUNT_INFO_CONF: \"/account-information-confirmation\",\r\n ACCOUNT_INFO_EDIT: \"/account-information-edit\",\r\n FILING_INFO: \"/filing-info\",\r\n TAX_FORMS: \"/tax-forms-select\",\r\n GROSS_RECEIPTS_LOCATIONS: \"/gross-receipts-locations\",\r\n GROSS_RECEIPT_DETAILS: \"/gross-receipts-details\",\r\n GROSS_RECEIPTS_TOTALS: \"/gross-receipts-totals\",\r\n PAYROLL: \"/payroll\",\r\n KENTON_PAYROLL: \"/kenton-payroll\",\r\n PAYROLL_LOCATIONS: \"/payroll-locations\",\r\n PAYROLL_TOTALS: \"/payroll-totals\",\r\n PAYROLL_EXPENSE: \"/payroll-expense\",\r\n NET_PROFITS: \"/netprofits\",\r\n RENT_PAID: \"/rent-paid\",\r\n RENT_LOCATIONS: \"/rent-locations\",\r\n GROSS_ANNUAL_RENT: \"/gross-annual\",\r\n RENT_TOTAL_GROSS: \"/rent-total-gross\",\r\n REAL_TANGIBLE_LOCATIONS: \"/real-tangible-locations\",\r\n PROPERTY_VALUE_BY_LOCATION: \"/property-value\",\r\n REAL_TANGIBLE_VALUE: \"/real-tangible-value\",\r\n BUSINESS_LICENSE_SELECT: \"/business-license-select\",\r\n EXTENSIONS_FILED: \"/extensions-filed\",\r\n REVIEW: \"/review\",\r\n TAX_SUMMARY: \"/tax-summary\",\r\n DEDUCTIONS: \"/deductions\",\r\n ADDITIONS: \"/additions\",\r\n BUSINESS_LICENSE_LOCATIONS: \"/business-license-locations\",\r\n ATTACHMENTS: \"/attachments\",\r\n COMPLETE: \"/complete\",\r\n CC_PAYMENT_CONFIRMATION: \"/confirmation\"\r\n};\r\n","import React from \"react\";\nimport { Card } from \"../../components/Card/Card\";\n\nimport styles from \"./Home.module.scss\";\n\nimport filingWizardGraphic from \"../../assets/img/filing-wizard-graphic.png\";\nimport standardOnlineFilingGraphic from \"../../assets/img/standard-online-filing-graphic.png\";\nimport { useHistory } from \"react-router-dom\";\nimport { ROUTES } from \"../../routes/constants\";\n\nexport const Home = () => {\n const history = useHistory();\n\n const handleCommunityRedirect = () => {\n let baseCommunityUrl = process.env.REACT_APP_BASE_COMMUNITY_URL;\n\n if (baseCommunityUrl === undefined) {\n const currentHost = window.location.hostname;\n\n if (currentHost.includes(\"localhost\")) {\n baseCommunityUrl = \"http://localhost:58661\";\n } else if (currentHost.includes(\"test\")) {\n baseCommunityUrl = \"https://testcommunity.kentoncounty.org\";\n } else if (currentHost.includes(\"uat\")) {\n baseCommunityUrl = \"https://community-uat.kentoncounty.org\";\n } else {\n baseCommunityUrl = \"https://colt.kentoncounty.org\";\n }\n\n console.log(\"environment variable not found -- redirecting manually\");\n }\n\n window.location.assign(baseCommunityUrl + \"/Community/Home?loginModal=annual\");\n };\n\n return (\n
\n
\n

Select an annual return workflow

\n
\n history.push(ROUTES.BUSINESS_LICENSE)}\n >\n

Filing Wizard

\n

\n Filing Wizard provides step-by-step guidance for filing your annual return, including specific federal tax form line references.\n

\n \n \n

Standard Online Filing

\n

\n Standard Online Filing uses our traditional web-based process for submitting a company's annual return.\n

\n \n
\n
\n
\n );\n}\n","import React, { useState } from \"react\";\r\nimport ReactModal from \"react-modal\";\r\nimport { Box } from \"rebass\";\r\nimport { styleConstants } from \"../../styles/constants\";\r\nimport { Button } from \"../Button/Button\";\r\nimport styles from \"./Modal.module.scss\";\r\n\r\ninterface ModalProps {\r\n img?: string;\r\n trigger?: JSX.Element;\r\n title: string;\r\n onClose?: () => void;\r\n children: JSX.Element;\r\n onLoad?: boolean;\r\n height?: string;\r\n}\r\n\r\nexport const Modal = ({\r\n children,\r\n img = \"\",\r\n title,\r\n onClose,\r\n trigger = ,\r\n onLoad = false,\r\n height = \"auto\",\r\n ...rest\r\n}: ModalProps) => {\r\n const [open, setOpen] = useState(onLoad);\r\n\r\n return (\r\n <>\r\n {\r\n !onLoad ?\r\n setOpen(true)}>\r\n {trigger}\r\n \r\n : null\r\n }\r\n {\r\n setOpen(false);\r\n if (onClose) {\r\n onClose();\r\n }\r\n }}\r\n onAfterOpen={() => setOpen(true)}\r\n isOpen={open}\r\n className={styles.modal}\r\n ariaHideApp={false}\r\n overlayClassName={styles.overlay}\r\n >\r\n \r\n \r\n

{title}

\r\n \r\n \r\n {children}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button } from \"../../components/Button/Button\";\nimport { Modal } from \"../../components/Modal/Modal\";\n\nimport businessLicenseImg from \"../../assets/img/businessLicenseImg.png\";\nimport styles from \"./BusinessLicense.module.scss\";\nimport { ROUTES } from \"../../routes/constants\";\n\nexport const BusinessLicense = () => {\n const history = useHistory();\n\n const handleCommunityRedirect = () => {\n let baseCommunityUrl = process.env.REACT_APP_BASE_COMMUNITY_URL;\n\n if (baseCommunityUrl === undefined) {\n const currentHost = window.location.hostname;\n\n if (currentHost.includes(\"localhost\")) {\n baseCommunityUrl = \"http://localhost:58661\";\n } else if (currentHost.includes(\"test\")) {\n baseCommunityUrl = \"https://testcommunity.kentoncounty.org\";\n } else if (currentHost.includes(\"uat\")) {\n baseCommunityUrl = \"https://community-uat.kentoncounty.org\";\n } else {\n baseCommunityUrl = \"https://colt.kentoncounty.org\";\n }\n\n console.log(\"environment variable not found -- redirecting manually\");\n }\n\n window.location.assign(baseCommunityUrl + \"/Community/BusinessLicenseApplication/AgreementPage\");\n };\n\n return (\n
\n
\n

\n Do you have a business license?\n

\n \n What does a business license look like?\n \n }\n height=\"95vh\"\n >\n <>\n
\n \n
\n
\n

Business License Example

\n

\n This is an example of what a business license looks\n like.\n

\n
\n \n \n
\n\n
\n \n NO\n \n history.push(ROUTES.LOGIN)}\n >\n YES\n \n
\n
\n );\n};\n","import { Input } from '@rebass/forms';\r\nimport { FieldProps } from 'formik';\r\nimport React from 'react';\r\nimport { styleConstants } from '../../styles/constants';\r\n\r\nexport interface TextInputProps extends FieldProps {\r\n error?: boolean;\r\n helperText?: string;\r\n}\r\n\r\nexport const TextInput = ({field, form, error, helperText, ...props}: TextInputProps) => {\r\n return (\r\n <>\r\n \r\n \r\n )\r\n}","import React from 'react';\r\n\r\nimport styles from './FieldWrapper.module.scss';\r\n\r\nexport interface FieldWrapperProps {\r\n style?: object;\r\n children: JSX.Element[] | JSX.Element;\r\n}\r\n\r\nexport const FieldWrapper = ({children, ...rest}: FieldWrapperProps) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}","import React from 'react';\r\n\r\nimport styles from './ValidationError.module.scss';\r\n\r\nexport const ValidationError = ({...props}: any) => {\r\n return (\r\n
\r\n {props.children}\r\n
\r\n );\r\n};\r\n","import axiosStatic from \"axios\";\nimport { ROUTES } from \"../routes/constants\";\nimport { config } from \"../config\";\n\nexport const axios = axiosStatic.create({\n baseURL: config.apiUrl,\n});\n\naxios.interceptors.response.use((response) => {\n let token = response.headers[\"authorization\"];\n if (token) {\n token = token.split(\" \")[1];\n sessionStorage.setItem(\"token\", token);\n }\n return response;\n},\n(error) => {\n alert(\"An unhandled error has occurred.\");\n sessionStorage.clear();\n window.location.replace(ROUTES.LOGIN);\n return Promise.reject(error);\n});\n\naxios.interceptors.request.use((config) => {\n let token = sessionStorage.getItem(\"token\");\n if (config) {\n config.headers = {\n Authorization: \"Bearer \" + token\n }\n }\n return config;\n})\n\nexport class AxiosService {\n private static staticAxios = axios;\n\n protected get axios() {\n return AxiosService.staticAxios;\n }\n\n protected constructor() { }\n}\n\nexport interface ApiResponse {\n data: T;\n success: boolean;\n message: string;\n}\n","export const config = {\n apiUrl: 'https://wizard.kentoncounty.org/api/v1',\n baseUrl: 'https://colt.kentoncounty.org'\n}\n","import { AccountInfo } from \"../models/accountInfo\";\nimport { ApiResponse, AxiosService } from \"./axiosService\";\n\nexport class AccountService extends AxiosService {\n public constructor() { super(); }\n\n async getAccountInfo(accountNumber: string) {\n try {\n const { data } = await this.axios.get>(`/Account/${accountNumber}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport const accountService = new AccountService();","import dayjs from \"dayjs\";\r\nimport React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\r\nimport { FilingInfo } from \"../models/filingInfo\";\r\nimport { TaxFormsForm } from \"../models/taxFormsForm\";\r\nimport { TaxFormsForm as TaxForm } from \"../models/taxForm\";\r\nimport { annualService } from \"../services/annualService\";\r\nimport { ApiResponse } from \"../services/axiosService\";\r\nimport { taxFormsService } from \"../services/taxFormsService\";\r\n\r\nexport enum ReturnType {\r\n ActualReturn = 0,\r\n ExtensionRequest = 1,\r\n FinalReturn = 2,\r\n NormalReturn = 3\r\n};\r\n\r\ninterface FilingContextType {\r\n error?: Error;\r\n isLoading: boolean;\r\n returnType?: ReturnType;\r\n selectedTaxForms: TaxFormsForm;\r\n taxForms?: TaxForm[];\r\n yearEndDate?: string;\r\n dueDate?: string;\r\n\r\n checkForExistingReturn: (year: number) => Promise>;\r\n checkForExtensionRequest: (year: number) => Promise>;\r\n checkForUnprocessedReturn: (year: number) => Promise>;\r\n getTaxFormsForYear: (year: number) => Promise>;\r\n saveFilingInformation: (yearEndDate: string, dueDate: string, returnType: ReturnType) => Promise;\r\n saveTaxForms: (taxForms: TaxFormsForm) => Promise;\r\n};\r\n\r\nexport const FilingContext = createContext({\r\n isLoading: false,\r\n} as any);\r\n\r\nexport interface FilingContextProps {\r\n children: JSX.Element | JSX.Element[];\r\n};\r\n\r\nconst initialFilingInfo : FilingInfo = JSON.parse(sessionStorage.getItem(\"filingInfo\") as string) || undefined;\r\n\r\nconst initialTaxFormValues: TaxFormsForm = JSON.parse(sessionStorage.getItem(\"selectedTaxForms\") as string) || {\r\n otherForms: \"\",\r\n otherFormsSelected: false,\r\n} as TaxFormsForm;\r\n\r\nexport const FilingProvider = (props: FilingContextProps) => {\r\n const [error, setError] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [returnType, setReturnType] = useState(initialFilingInfo?.returnType);\r\n const [selectedTaxForms, setSelectedTaxForms] = useState(initialTaxFormValues);\r\n const [taxForms, setTaxForms] = useState();\r\n const [yearEndDate, setYearEndDate] = useState(initialFilingInfo?.yearEndDate ? dayjs(initialFilingInfo.yearEndDate).format(\"MM/DD/YYYY\") : undefined);\r\n const [dueDate, setDueDate] = useState(initialFilingInfo?.dueDate ? dayjs(initialFilingInfo.dueDate).format(\"MM/DD/YYYY\") : undefined);\r\n\r\n const checkForExistingReturn = useCallback(async (year: number) => {\r\n try {\r\n setIsLoading(true);\r\n const response = await annualService.checkForExistingReturn(year);\r\n return response;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setError]);\r\n\r\n const checkForExtensionRequest = useCallback(async (year: number) => {\r\n try {\r\n setIsLoading(true);\r\n const response = await annualService.checkForExtensionRequest(year);\r\n return response;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setError]);\r\n\r\n const checkForUnprocessedReturn = useCallback(async (year: number) => {\r\n try {\r\n setIsLoading(true);\r\n const response = await annualService.checkForUnprocessedReturn(year);\r\n return response;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setError]);\r\n\r\n const getTaxFormsForYear = useCallback(async (year: number) => {\r\n try {\r\n setIsLoading(true);\r\n const response = await taxFormsService.getTaxForms(year);\r\n setTaxForms(response.data);\r\n return response;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setTaxForms, setError]);\r\n\r\n const saveFilingInformation = useCallback(async (yearEndDate: string, dueDate: string, returnType: ReturnType) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"filingInfo\", JSON.stringify({\r\n yearEndDate,\r\n dueDate,\r\n returnType\r\n }));\r\n setYearEndDate(yearEndDate);\r\n setDueDate(dueDate);\r\n setReturnType(returnType);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setYearEndDate, setReturnType, setDueDate, setError]);\r\n\r\n const saveTaxForms = useCallback(async (taxForms: TaxFormsForm) => {\r\n try {\r\n setIsLoading(true);\r\n setSelectedTaxForms(taxForms);\r\n sessionStorage.setItem(\"selectedTaxForms\", JSON.stringify(taxForms));\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setSelectedTaxForms, setError]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n error,\r\n isLoading,\r\n returnType,\r\n selectedTaxForms,\r\n taxForms,\r\n yearEndDate,\r\n dueDate,\r\n\r\n checkForExistingReturn,\r\n checkForExtensionRequest,\r\n checkForUnprocessedReturn,\r\n getTaxFormsForYear,\r\n saveFilingInformation,\r\n saveTaxForms,\r\n }),\r\n [\r\n error,\r\n isLoading,\r\n returnType,\r\n selectedTaxForms,\r\n taxForms,\r\n yearEndDate,\r\n dueDate,\r\n\r\n checkForExistingReturn,\r\n checkForExtensionRequest,\r\n checkForUnprocessedReturn,\r\n getTaxFormsForYear,\r\n saveFilingInformation,\r\n saveTaxForms,\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const useFiling = () => {\r\n const context = useContext(FilingContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useFiling must be used within a FilingProvider component.\");\r\n }\r\n\r\n return context;\r\n};\r\n","import { LoginResponse } from \"../models/loginResponse\";\r\nimport { ApiResponse, AxiosService } from \"./axiosService\";\r\n\r\nexport class AuthService extends AxiosService {\r\n public constructor() { super(); }\r\n\r\n async login(accountNumber: string, taxID: string) {\r\n try {\r\n const { data } = await this.axios.post>('/Auth', {\r\n accountNumber,\r\n taxID,\r\n });\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n}\r\n\r\nexport const authService = new AuthService();\r\n","import { BooleanResponse } from \"../models/SaveProgressModels/taxFormResponse\";\nimport { SaveFilingInfo } from \"../models/SaveProgressModels/saveFilingInfo\";\nimport { SaveReturnInfo } from \"../models/SaveProgressModels/SaveReturnInfo\";\nimport { ApiResponse, AxiosService } from \"./axiosService\";\nimport { ObjectValueResponse, ValueResponse } from \"../models/SaveProgressModels/valueResponse\";\nimport { AccountInfo } from \"../models/accountInfo\";\n\nexport class SaveProgressService extends AxiosService {\n public constructor() { super(); }\n\n async getProgress(accountNumber: string) {\n try {\n const { data } = await this.axios.get>(`/TaxPortalForm/getReturnByAccountId/${accountNumber}`);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveFilingInfo(info: SaveFilingInfo) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveFilingInfo\", info);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveAccountInfo(info: AccountInfo) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveAccountInfo\", info);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveReturnInfo(info: SaveReturnInfo) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveReturnInfo\", info);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveTaxFormsProgress(taxForms: BooleanResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveTaxForms\", taxForms);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveGrossReceiptsLocations(locations: BooleanResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveGrossReceiptsLocations\", locations);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveGrossReceiptsDetails(details: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveGrossReceiptsDetails\", details);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveGrossReceiptsDeductions(deductions: ObjectValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveGrossReceiptsDeductions\", deductions);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveGrossReceiptsTotals(totals: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveReturnGrossReceiptTotals\", totals);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n\n async saveGrossAnnualRent(rent: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveRent\", rent);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async savePayrollLocations(details: BooleanResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/savePayrollLocations\", details);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async savePayrollDetails(details: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/savePayrollDetails\", details);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async savePayrollDetailValues(values: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/savePayrollDetailValues\", values);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async savePayrollTotals(totals: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/savePayrollTotals\", totals);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveNetProfits(totals: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveNetProfits\", totals);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveNetProfitsAdditionsDeductions(values: ObjectValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveNetProfitAdditionsDeductions\", values);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveRentLocations(locations: BooleanResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveRentLocations\", locations);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveRentTotals(totals: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveRentTotals\", totals);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveProperties(properties: ValueResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveProperties\", properties);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveRealTangilbleProperties(locations: BooleanResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveRealTangibleProperties\", locations);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async saveBusinessLicenseLocations(locations: BooleanResponse) {\n try {\n const { data } = await this.axios.post>(\"/TaxPortalForm/saveBusinessLicenseLocations\", locations);\n\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport const saveProgressService = new SaveProgressService();\n","import React, {createContext, useCallback, useContext, useMemo, useState} from \"react\";\nimport { AccountInfo } from \"../models/accountInfo\";\nimport { LoginResponse } from \"../models/loginResponse\";\nimport { SaveAccountInfo } from \"../models/SaveProgressModels/saveAccountInfo\";\nimport { accountService } from \"../services/accountService\";\nimport { authService } from \"../services/authService\";\nimport { ApiResponse, axios } from \"../services/axiosService\";\nimport { saveProgressService } from \"../services/saveProgress\";\n\ninterface AuthContextType {\n accountNumber?: string,\n account?: AccountInfo;\n error?: Error;\n isLoading: boolean;\n isLoggedIn: boolean;\n\n resetAuth: () => void;\n setAccount: (val?: AccountInfo) => void;\n login: (accountNumber: string, taxId: string) => Promise>;\n getAccountInfo: () => Promise>;\n updateAccountInfo: (account: AccountInfo) => Promise>;\n}\n\nconst initialValues: AuthContextType = JSON.parse(sessionStorage.getItem(\"auth\") as string) || {\n isLoggedIn: false,\n};\n\nexport const AuthContext = createContext(initialValues);\n\nexport interface AuthProviderProps {\n children: JSX.Element | JSX.Element[];\n}\n\nexport const AuthProvider = (props: AuthProviderProps) => {\n const [accountNumber, setAccountNumber] = useState(initialValues?.accountNumber);\n const [account, setAccount] = useState(initialValues?.account);\n const [error, setError] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [isLoggedIn, setIsLoggedIn] = useState(initialValues.isLoggedIn);\n\n const resetAuth = useCallback(() => {\n setIsLoggedIn(false);\n setAccount(undefined);\n setAccountNumber(undefined);\n sessionStorage.clear();\n delete axios.defaults.headers.common[\"Authorization\"];\n }, [setIsLoggedIn, setAccount, setAccountNumber]);\n\n const login = useCallback(async (accountNumber: string, taxId: string) => {\n try {\n const response = await authService.login(accountNumber, taxId);\n setIsLoggedIn(response.success);\n if (response.success) {\n setAccountNumber(accountNumber);\n setAccount(response.data.accountInfo);\n\n sessionStorage.setItem(\"auth\", JSON.stringify({\n isLoggedIn: true,\n accountNumber,\n token: response.data.token,\n }));\n sessionStorage.setItem('token', response.data.token);\n axios.defaults.headers.common[\"Authorization\"] = `Bearer ${response.data.token}`;\n } \n return response;\n } catch (e) {\n setError(e as Error);\n throw e;\n }\n }, [setIsLoading, setAccountNumber, setAccount, setError]);\n\n const logout = useCallback(() => {\n resetAuth();\n return;\n }, [resetAuth]);\n\n const getAccountInfo = useCallback(async () => {\n try {\n setIsLoading(true);\n const response = await accountService.getAccountInfo(accountNumber!);\n setAccount(response.data);\n return response;\n } catch (e) {\n setError(e as Error);\n setIsLoading(false);\n throw e;\n }\n }, [setIsLoading, setAccount, setError, accountNumber]);\n\n const updateAccountInfo = useCallback(async (account: AccountInfo) => {\n try {\n setIsLoading(true);\n const response = await saveProgressService.saveAccountInfo(account);\n setAccount(response.data);\n return response;\n } catch (e) {\n setError(e as Error);\n setIsLoading(false);\n throw e;\n }\n }, [setIsLoading, setAccount, setError]);\n\n\n const values = useMemo(\n () => ({\n account,\n accountNumber,\n error,\n isLoading,\n isLoggedIn,\n\n getAccountInfo,\n login,\n updateAccountInfo,\n setAccount,\n resetAuth,\n logout,\n }), [\n account,\n accountNumber,\n error,\n isLoading,\n isLoggedIn,\n \n getAccountInfo,\n logout,\n resetAuth,\n login,\n updateAccountInfo,\n ]\n );\n\n return \n {props.children}\n \n};\n\nexport const useAuth = () => {\n const context = useContext(AuthContext);\n\n if (context === undefined) {\n throw new Error('useAuth must be used within a AuthProvider component.');\n }\n\n return context;\n}\n","import React from 'react';\r\n\r\nimport styles from './ButtonGroup.module.scss';\r\n\r\nexport interface ButtonGroupProps {\r\n style?: object;\r\n children: JSX.Element[] | JSX.Element;\r\n}\r\n\r\nexport const ButtonGroup = ({children, ...rest}: ButtonGroupProps) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}","import { CompletedReturnDetails } from \"../models/completedReturnDetails\";\nimport { TaxSummary } from \"../models/taxSummary\";\nimport { ApiResponse, AxiosService } from \"./axiosService\";\n\nexport class AnnualService extends AxiosService {\n public constructor() { super(); }\n\n async checkForUnprocessedReturn(year: number) {\n try {\n const { data } = await this.axios.get>(`/Annual/unprocessed-return?year=${year}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n \n async checkForExtensionRequest(year: number) {\n try {\n const { data } = await this.axios.get>(`/Annual/extension-request?year=${year}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n \n async checkForExistingReturn(year: number) {\n try {\n const { data } = await this.axios.get>(`/Annual?year=${year}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async getRenewedLocations(year: number) {\n try {\n const { data } = await this.axios.get>(`/Annual/renewed-locations?year=${year}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async getEstimatedReturnLicenseType(year: number) {\n try {\n const { data } = await this.axios.get>(`/Annual/estimated-license-type?year=${year}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async getTaxDue(returnId: number) {\n try {\n const { data } = await this.axios.get>(`/Annual/tax-summary?returnId=${returnId}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async postAnnualHeader(returnId: number, paymentType: string, isEstimatedPayment: boolean) {\n try {\n const { data } = await this.axios.post>(`/Annual/annual-header?returnId=${returnId}&paymentVoucherType=${paymentType}&isEstimatedPayment=${isEstimatedPayment}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n\n async getCompletedReturnData(confirmationNumber: number) {\n try {\n const { data } = await this.axios.get>(`/Annual/completed-return?confirmationNumber=${confirmationNumber}`);\n return data;\n } catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport const annualService = new AnnualService();\n","import { TaxFormsForm } from \"../models/taxForm\";\r\nimport { ApiResponse, AxiosService } from \"./axiosService\";\r\n\r\nexport class TaxFormsService extends AxiosService {\r\n public constructor() { super(); }\r\n\r\n async getTaxForms(year: number) {\r\n try { \r\n const { data } = await this.axios.get>(`/TaxForms?year=${year}`);\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n}\r\n\r\nexport const taxFormsService = new TaxFormsService();","import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';\r\nimport { BusinessLicenseLocationsForm } from '../models/businessLicenseLocationsForm';\r\nimport { annualService } from '../services/annualService';\r\nimport { ReturnType } from './Filing';\r\n\r\nexport enum BusinessLicenseType {\r\n None = 2,\r\n County = 0,\r\n Locations = 1,\r\n}\r\n\r\ninterface BusinessLicenseContextType {\r\n error?: Error;\r\n isLoading: boolean;\r\n selectedLocations: BusinessLicenseLocationsForm;\r\n selectedType?: BusinessLicenseType;\r\n renewedLocations: string[] | undefined;\r\n\r\n saveSelectedType: (selectedType: BusinessLicenseType) => Promise;\r\n saveSelectedLocations: (form: BusinessLicenseLocationsForm) => Promise;\r\n getRenewedLocations: (year: number, returnType: ReturnType) => Promise;\r\n}\r\n\r\nexport const BusinessLicenseContext = createContext({} as any);\r\n\r\ninterface BusinessLicenseContextProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nconst initialSelectedLocations : BusinessLicenseLocationsForm = JSON.parse(sessionStorage.getItem(\"businessLicenseLocations\") as string) || {};\r\nconst initialLicenseSelection : BusinessLicenseType | undefined = parseInt(sessionStorage.getItem('businessLicenseSelection') as string) as BusinessLicenseType || undefined;\r\n\r\nexport const BusinessLicenseProvider = (props: BusinessLicenseContextProps) => {\r\n const [error, setError] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [selectedLocations, setSelectedLocations] = useState(initialSelectedLocations);\r\n const [selectedType, setSelectedType] = useState(initialLicenseSelection);\r\n const [renewedLocations, setRenewedLocations] = useState();\r\n \r\n const saveSelectedType = useCallback(async (newSelectedType: BusinessLicenseType) => {\r\n try {\r\n setIsLoading(true);\r\n if (newSelectedType) {\r\n sessionStorage.setItem(\"businessLicenseSelection\", newSelectedType.toString());\r\n }\r\n setSelectedType(newSelectedType);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setSelectedType, setError]);\r\n\r\n const saveSelectedLocations = useCallback(async (form: BusinessLicenseLocationsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"businessLicenseLocations\", JSON.stringify(form));\r\n setSelectedLocations(selectedLocations);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setSelectedLocations, setError, selectedLocations]);\r\n\r\n const getRenewedLocations = useCallback(async (year: number, returnType: ReturnType) => {\r\n try {\r\n setIsLoading(true);\r\n if (returnType === ReturnType.ActualReturn) {\r\n const response = await annualService.getRenewedLocations(year);\r\n setRenewedLocations(response.data);\r\n } else {\r\n setRenewedLocations([]);\r\n }\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setRenewedLocations, setError]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n selectedType,\r\n renewedLocations,\r\n\r\n saveSelectedLocations,\r\n saveSelectedType,\r\n getRenewedLocations\r\n }),\r\n [\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n selectedType,\r\n renewedLocations,\r\n\r\n saveSelectedLocations,\r\n saveSelectedType,\r\n getRenewedLocations\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const useBusinessLicense = () => {\r\n const context = useContext(BusinessLicenseContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useBusinessLicense must be used within a BusinessLicense Provider component.\");\r\n }\r\n\r\n return context;\r\n}\r\n","import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\r\nimport { GrossReceiptDetailsForm } from \"../models/grossReceiptDetailsForm\";\r\nimport { GrossReceiptsTotalsForm } from \"../models/grossReceiptsTotalsForm\";\r\nimport { GrossReceiptsLocationsForm } from \"../models/grossReceiptsLocationsForm\";\r\nimport { Deduction } from \"../models/deduction\";\r\n\r\ninterface GrossReceiptsContextType {\r\n error?: Error;\r\n isLoading: boolean;\r\n selectedLocations: GrossReceiptsLocationsForm;\r\n details: GrossReceiptDetailsForm;\r\n totals: GrossReceiptsTotalsForm;\r\n deductions: Deduction;\r\n\r\n saveSelectedLocations: (locations: GrossReceiptsLocationsForm) => Promise;\r\n saveGrossReceiptDetails: (details:GrossReceiptDetailsForm) => Promise;\r\n saveGrossReceiptsTotals: (totals: GrossReceiptsTotalsForm) => Promise;\r\n saveGrossReceiptsDeductions: (deductions: Deduction) => void;\r\n removeTotals: (formId: number) => Promise;\r\n\r\n getGrossReceiptsTotals: () => GrossReceiptsTotalsForm;\r\n}\r\n\r\nexport const GrossReceiptsContext = createContext({} as any);\r\n\r\ninterface GrossReceiptsContextProps {\r\n children: JSX.Element | JSX.Element[];\r\n};\r\n\r\nconst initialSelectedLocations : GrossReceiptsLocationsForm = JSON.parse(sessionStorage.getItem(\"grossReceiptLocations\") as string) || {};\r\nconst initialDetails: GrossReceiptDetailsForm = JSON.parse(sessionStorage.getItem(\"grossReceiptDetails\") as string) || {};\r\nconst initialTotals: GrossReceiptsTotalsForm = JSON.parse(sessionStorage.getItem(\"grossReceiptsTotals\") as string) || {};\r\nconst initialDeductions: Deduction = JSON.parse(sessionStorage.getItem(\"grossReceiptsDeductions\") as string) || {};\r\n\r\nexport const GrossReceiptsProvider = (props: GrossReceiptsContextProps) => {\r\n const [error, setError] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [selectedLocations, setSelectedLocations] = useState(initialSelectedLocations);\r\n const [details, setDetails] = useState(initialDetails);\r\n const [totals, setTotals] = useState(initialTotals);\r\n const [deductions, setDeductions] = useState(initialDeductions);\r\n\r\n const saveSelectedLocations = useCallback(async (locations: GrossReceiptsLocationsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"grossReceiptLocations\", JSON.stringify(locations));\r\n setSelectedLocations(locations);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setSelectedLocations, setError]);\r\n\r\n const saveGrossReceiptDetails = useCallback(async (details: GrossReceiptDetailsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"grossReceiptDetails\", JSON.stringify(details));\r\n setDetails(details);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setDetails, setError]);\r\n\r\n const saveGrossReceiptsTotals = useCallback(async (totals: GrossReceiptsTotalsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"grossReceiptsTotals\", JSON.stringify(totals));\r\n setTotals(totals);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setTotals, setError]);\r\n\r\n const getGrossReceiptsTotals = useCallback(() => {\r\n try {\r\n var total = JSON.parse(sessionStorage.getItem(\"grossReceiptsTotals\")!) as GrossReceiptsTotalsForm;\r\n return total;\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [setError]);\r\n\r\n const saveGrossReceiptsDeductions = useCallback(async (deductions: Deduction) => {\r\n try {\r\n sessionStorage.setItem(\"grossReceiptsDeductions\", JSON.stringify(deductions));\r\n setDeductions(deductions);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [setError]);\r\n\r\n const removeTotals = useCallback(async (formId: number) => {\r\n try {\r\n if (!!totals[formId]) {\r\n delete totals[formId];\r\n }\r\n saveGrossReceiptsTotals(totals);\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [totals, saveGrossReceiptsTotals]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n details,\r\n totals,\r\n deductions,\r\n\r\n saveSelectedLocations,\r\n saveGrossReceiptDetails,\r\n saveGrossReceiptsTotals,\r\n saveGrossReceiptsDeductions,\r\n removeTotals,\r\n getGrossReceiptsTotals,\r\n }),\r\n [\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n details,\r\n totals,\r\n deductions,\r\n\r\n saveSelectedLocations,\r\n saveGrossReceiptDetails,\r\n saveGrossReceiptsTotals,\r\n saveGrossReceiptsDeductions,\r\n removeTotals,\r\n getGrossReceiptsTotals,\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const useGrossReceipts = () => {\r\n const context = useContext(GrossReceiptsContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useGrossReceipts must be used within a GrossReceiptsProvider component.\");\r\n }\r\n\r\n return context;\r\n}","import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\r\nimport { PayrollTotalsByLocationForm } from \"../models/payrollTotalsByLocationForm\";\r\nimport { PayrollLocationsForm } from \"../models/payrollLocationsForm\";\r\nimport { PayrollExpenseForm } from \"../models/payrollExpenseForm\";\r\n\r\ninterface PayrollContextType {\r\n error?: Error;\r\n isLoading: boolean;\r\n hasPayroll: null | boolean;\r\n hasKentonPayroll: null | boolean;\r\n selectedLocations: PayrollLocationsForm;\r\n payrollTotalsByLocation: PayrollTotalsByLocationForm;\r\n totalPayrollExpense: PayrollExpenseForm;\r\n\r\n savePayrollResponse: (val: boolean) => Promise;\r\n saveKentonPayrollResponse: (val: boolean) => Promise;\r\n saveSelectedLocations: (locations: PayrollLocationsForm) => Promise;\r\n savePayrollTotalsByLocation: (payrollTotalsByLocation: PayrollTotalsByLocationForm) => Promise;\r\n saveTotalPayrollExpense: (totalPayrollExpense: PayrollExpenseForm) => Promise;\r\n removeTotals: (formId: number) => Promise;\r\n}\r\n\r\nexport const PayrollContext = createContext({} as any);\r\n\r\ninterface PayrollContextProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nconst initialSelectedLocations: PayrollLocationsForm = JSON.parse(sessionStorage.getItem(\"payrollLocations\") as string) || {};\r\nconst storedPayrollValue = (sessionStorage.getItem(\"payrollAnswer\") as string);\r\nconst storedKentonPayrollValue = (sessionStorage.getItem(\"kentonPayrollAnswer\") as string);\r\nconst initialHasPayroll = storedPayrollValue ? storedPayrollValue === \"true\" : null;\r\nconst initialHasKentonPayroll = storedKentonPayrollValue ? storedKentonPayrollValue === \"true\" : null;\r\nconst initialPayrollTotalsByLocation: PayrollTotalsByLocationForm = JSON.parse(sessionStorage.getItem(\"payrollTotalsByLocation\") as string) || {};\r\nconst initialpayrollExpense: PayrollExpenseForm = JSON.parse(sessionStorage.getItem(\"payrollTotalExpense\") as string) || {};\r\n\r\nexport const PayrollProvider = (props: PayrollContextProps) => {\r\n const [error, setError] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [hasPayroll, setHasPayroll] = useState(initialHasPayroll);\r\n const [hasKentonPayroll, setHasKentonPayroll] = useState(initialHasKentonPayroll);\r\n const [selectedLocations, setSelectedLocations] = useState(initialSelectedLocations);\r\n const [payrollTotalsByLocation, setpayrollTotalsByLocation] = useState(initialPayrollTotalsByLocation);\r\n const [totalPayrollExpense, setTotalPayrollExpense] = useState(initialpayrollExpense);\r\n\r\n const savePayrollResponse = useCallback(async (val: boolean) => {\r\n try {\r\n sessionStorage.setItem(\"payrollAnswer\", val.toString());\r\n setHasPayroll(val);\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [setHasPayroll, setError]);\r\n\r\n const saveKentonPayrollResponse = useCallback(async (val: boolean) => {\r\n try {\r\n sessionStorage.setItem(\"kentonPayrollAnswer\", val.toString());\r\n setHasKentonPayroll(val);\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [setHasKentonPayroll, setError])\r\n\r\n const saveSelectedLocations = useCallback(async (locations: PayrollLocationsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"payrollLocations\", JSON.stringify(locations));\r\n setSelectedLocations(locations);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setSelectedLocations, setError]);\r\n\r\n const savePayrollTotalsByLocation = useCallback(async (payrollTotalsByLocation: PayrollTotalsByLocationForm) => {\r\n try {\r\n setIsLoading(true);\r\n //TODO: Save payroll totals in temporary table\r\n sessionStorage.setItem(\"payrollTotalsByLocation\", JSON.stringify(payrollTotalsByLocation));\r\n setpayrollTotalsByLocation(payrollTotalsByLocation);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setpayrollTotalsByLocation, setError]);\r\n\r\n const saveTotalPayrollExpense = useCallback(async (totalPayrollExpense: PayrollExpenseForm) => {\r\n try {\r\n sessionStorage.setItem(\"payrollTotalExpense\", JSON.stringify(totalPayrollExpense));\r\n setTotalPayrollExpense(totalPayrollExpense);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [setTotalPayrollExpense, setError]);\r\n\r\n const removeTotals = useCallback(async (formId: number) => {\r\n try {\r\n if (!!totalPayrollExpense[formId]) {\r\n delete totalPayrollExpense[formId];\r\n }\r\n saveTotalPayrollExpense(totalPayrollExpense);\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [totalPayrollExpense, saveTotalPayrollExpense]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n hasPayroll,\r\n hasKentonPayroll,\r\n payrollTotalsByLocation,\r\n totalPayrollExpense,\r\n\r\n savePayrollResponse,\r\n saveKentonPayrollResponse,\r\n saveSelectedLocations,\r\n savePayrollTotalsByLocation,\r\n saveTotalPayrollExpense,\r\n removeTotals,\r\n }),\r\n [\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n hasPayroll,\r\n hasKentonPayroll,\r\n payrollTotalsByLocation,\r\n totalPayrollExpense,\r\n\r\n savePayrollResponse,\r\n saveKentonPayrollResponse,\r\n saveSelectedLocations,\r\n savePayrollTotalsByLocation,\r\n saveTotalPayrollExpense,\r\n removeTotals,\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const usePayroll = () => {\r\n const context = useContext(PayrollContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"usePayroll must be used within a PayrollProvider component.\");\r\n }\r\n\r\n return context;\r\n}\r\n","import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\r\nimport { AdditionsModel } from \"../models/additionsModel\";\r\nimport { NetProfitsForm } from \"../models/netProfitsForm\";\r\n\r\ninterface NetProfitsContextType {\r\n error?: Error;\r\n isLoading: boolean;\r\n netProfitsForm: NetProfitsForm;\r\n additions: AdditionsModel;\r\n\r\n saveNetProfitsForm: (netProfitsForm: NetProfitsForm) => Promise;\r\n saveNetProfitsAdditions: (netProfitsForm: AdditionsModel) => Promise;\r\n}\r\n\r\nexport const NetProfitsContext = createContext({} as any);\r\n\r\ninterface NetProfitsContextProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nconst initialNetProfitsForm: NetProfitsForm = JSON.parse(sessionStorage.getItem(\"netProfitsForm\") as string) || {};\r\nconst initialNetProfitAdditions: AdditionsModel = JSON.parse(sessionStorage.getItem(\"netProfitAdditions\") as string) || {};\r\n\r\nexport const NetProfitsProvider = (props: NetProfitsContextProps) => {\r\n const [error, setError] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [netProfitsForm, setNetProfitsForm] = useState(initialNetProfitsForm);\r\n const [additions, setAdditions] = useState(initialNetProfitAdditions);\r\n\r\n const saveNetProfitsForm = useCallback(async (netProfitsForm: NetProfitsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"netProfitsForm\", JSON.stringify(netProfitsForm));\r\n setNetProfitsForm(netProfitsForm);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setNetProfitsForm, setError]);\r\n\r\n const saveNetProfitsAdditions = useCallback(async (netProfitsForm: AdditionsModel) => {\r\n try {\r\n setIsLoading(true)\r\n sessionStorage.setItem(\"netProfitAdditions\", JSON.stringify(netProfitsForm));\r\n setAdditions(netProfitsForm)\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setError]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n error,\r\n isLoading,\r\n netProfitsForm,\r\n additions,\r\n\r\n saveNetProfitsForm,\r\n saveNetProfitsAdditions\r\n }),\r\n [\r\n error,\r\n isLoading,\r\n netProfitsForm,\r\n additions,\r\n \r\n saveNetProfitsForm,\r\n saveNetProfitsAdditions\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const useNetProfits = () => {\r\n const context = useContext(NetProfitsContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useNetProfits must be used within a NetProfits Provider component.\");\r\n }\r\n\r\n return context;\r\n}","import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\r\nimport { RentLocationsForm } from \"../models/rentLocationsForm\";\r\nimport { GrossAnnualRentForm } from \"../models/grossAnnualRentForm\";\r\nimport { RentTotalGrossForm } from \"../models/rentTotalGrossForm\";\r\n\r\ninterface RentContextType {\r\n error?: Error;\r\n isLoading: boolean;\r\n rentIsPaid?: boolean;\r\n selectedLocations: RentLocationsForm;\r\n grossAnnualRentForm: GrossAnnualRentForm;\r\n rentTotalGross: RentTotalGrossForm;\r\n\r\n saveRentPaidResponse: (val: boolean) => Promise;\r\n saveSelectedLocations: (locations: RentLocationsForm) => Promise;\r\n saveGrossAnnualRentForm: (grossAnnualRentForm: GrossAnnualRentForm) => Promise;\r\n saveRentTotalGross: (totals: RentTotalGrossForm) => Promise;\r\n removeTotals: (formId: number) => Promise;\r\n}\r\n\r\nexport const RentContext = createContext({} as any);\r\n\r\ninterface RentContextProps {\r\n children: JSX.Element | JSX.Element[];\r\n}\r\n\r\nconst storedRentIsPaidValue: string = (sessionStorage.getItem(\"rentPaidReponse\") as string);\r\nconst initialRentIsPaid: boolean | undefined = storedRentIsPaidValue ? storedRentIsPaidValue === \"true\" : undefined;\r\nconst initialSelectedLocations: RentLocationsForm = JSON.parse(sessionStorage.getItem(\"rentLocations\") as string) || {};\r\nconst initialGrossAnnualRentForm: GrossAnnualRentForm = JSON.parse(sessionStorage.getItem(\"grossAnnualRentForm\") as string) || {};\r\nconst initialRentTotalGross: RentTotalGrossForm = JSON.parse(sessionStorage.getItem(\"rentTotalGross\") as string) || {};\r\n\r\nexport const RentProvider = (props: RentContextProps) => {\r\n const [error, setError] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [rentIsPaid, setRentPaidResponse] = useState(initialRentIsPaid);\r\n const [selectedLocations, setSelectedLocations] = useState(initialSelectedLocations);\r\n const [grossAnnualRentForm, setGrossAnnualRentForm] = useState(initialGrossAnnualRentForm);\r\n const [rentTotalGross, setRentTotalGross] = useState(initialRentTotalGross);\r\n\r\n const saveRentPaidResponse = useCallback(async (val: boolean) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"rentPaidReponse\", val.toString());\r\n setRentPaidResponse(val);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setRentPaidResponse, setError]);\r\n\r\n const saveSelectedLocations = useCallback(async (locations: RentLocationsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"rentLocations\", JSON.stringify(locations));\r\n setSelectedLocations(locations);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setSelectedLocations, setError]);\r\n\r\n const saveGrossAnnualRentForm = useCallback(async (grossAnnualRentForm: GrossAnnualRentForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"grossAnnualRentForm\", JSON.stringify(grossAnnualRentForm));\r\n setGrossAnnualRentForm(grossAnnualRentForm);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setGrossAnnualRentForm, setError])\r\n\r\n const saveRentTotalGross = useCallback(async (totals: RentTotalGrossForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"rentTotalGross\", JSON.stringify(totals));\r\n setRentTotalGross(totals);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setRentTotalGross, setError]);\r\n\r\n const removeTotals = useCallback(async (formId: number) => {\r\n try {\r\n if (!!rentTotalGross[formId]) {\r\n delete rentTotalGross[formId];\r\n }\r\n saveRentTotalGross(rentTotalGross);\r\n } catch (e) {\r\n setError(e as Error);\r\n throw e;\r\n }\r\n }, [rentTotalGross, saveRentTotalGross]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n error,\r\n isLoading,\r\n rentIsPaid,\r\n selectedLocations,\r\n grossAnnualRentForm,\r\n rentTotalGross,\r\n\r\n saveRentPaidResponse,\r\n saveSelectedLocations,\r\n saveGrossAnnualRentForm,\r\n saveRentTotalGross,\r\n removeTotals,\r\n }),\r\n [\r\n error,\r\n isLoading,\r\n rentIsPaid,\r\n selectedLocations,\r\n grossAnnualRentForm,\r\n rentTotalGross,\r\n\r\n saveRentPaidResponse,\r\n saveSelectedLocations,\r\n saveGrossAnnualRentForm,\r\n saveRentTotalGross,\r\n removeTotals,\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const useRent = () => {\r\n const context = useContext(RentContext);\r\n\r\n if (context === undefined) {\r\n throw new Error(\"useRent must be used within a RentProvider component.\");\r\n }\r\n\r\n return context;\r\n}\r\n","import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\r\nimport { PropertyValueByLocationForm } from \"../models/propertyValueByLocationForm\";\r\nimport { RealTangibleLocationsForm } from \"../models/realTangibleLocationsForm\";\r\nimport { RealTangibleValueForm } from \"../models/realTangibleValueForm\";\r\n\r\n\r\ninterface RealTangibleContextType {\r\n error?: Error;\r\n isLoading: boolean;\r\n selectedLocations: RealTangibleLocationsForm;\r\n realTangibleValueForm?: RealTangibleValueForm;\r\n propertyValueByLocationForm: PropertyValueByLocationForm;\r\n\r\n saveSelectedLocations: (locations: RealTangibleLocationsForm) => Promise;\r\n saveRealTangibleValueForm: (realTangibleValueForm: RealTangibleValueForm) => Promise;\r\n savePropertyValueByLocationForm: (propertyValueByLocationForm: PropertyValueByLocationForm) => Promise;\r\n};\r\n\r\nexport const RealTangibleContext = createContext({} as any);\r\n\r\ninterface RealTangibleContextProps {\r\n children: JSX.Element | JSX.Element[];\r\n};\r\n\r\nconst initialSelectedLocations: RealTangibleLocationsForm = JSON.parse(sessionStorage.getItem(\"realTangibleLocations\") as string) || {};\r\nconst initialRealTangibleValueForm: RealTangibleValueForm = JSON.parse(sessionStorage.getItem(\"realTangibleValueForm\") as string) || {};\r\nconst initialPropertyValueByLocationForm: PropertyValueByLocationForm = JSON.parse(sessionStorage.getItem(\"propertyValueByLocationForm\") as string) || {};\r\n\r\nexport const RealTangibleProvider = (props: RealTangibleContextProps) => {\r\n const [error, setError] = useState();\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [selectedLocations, setSelectedLocations] = useState(initialSelectedLocations);\r\n const [realTangibleValueForm, setRealTangibleValueForm] = useState(initialRealTangibleValueForm);\r\n const [propertyValueByLocationForm, setPropertyValueByLocationForm] = useState(initialPropertyValueByLocationForm);\r\n\r\n const saveSelectedLocations = useCallback(async (locations: RealTangibleLocationsForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"realTangibleLocations\", JSON.stringify(locations));\r\n setSelectedLocations(locations);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setSelectedLocations, setError]);\r\n\r\n const savePropertyValueByLocationForm = useCallback(async (propertyValueByLocationForm: PropertyValueByLocationForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"propertyValueByLocationForm\", JSON.stringify(propertyValueByLocationForm));\r\n setPropertyValueByLocationForm(propertyValueByLocationForm);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setPropertyValueByLocationForm, setError]);\r\n\r\n const saveRealTangibleValueForm = useCallback(async (realTangibleValueForm: RealTangibleValueForm) => {\r\n try {\r\n setIsLoading(true);\r\n sessionStorage.setItem(\"realTangibleValueForm\", JSON.stringify(realTangibleValueForm));\r\n setRealTangibleValueForm(realTangibleValueForm);\r\n return;\r\n } catch (e) {\r\n setError(e as Error);\r\n setIsLoading(false);\r\n throw e;\r\n }\r\n }, [setIsLoading, setRealTangibleValueForm, setError]);\r\n\r\n const values = useMemo(\r\n () => ({\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n propertyValueByLocationForm,\r\n realTangibleValueForm,\r\n\r\n saveSelectedLocations,\r\n savePropertyValueByLocationForm,\r\n saveRealTangibleValueForm,\r\n }),\r\n [\r\n error,\r\n isLoading,\r\n selectedLocations,\r\n propertyValueByLocationForm,\r\n realTangibleValueForm,\r\n \r\n saveSelectedLocations,\r\n savePropertyValueByLocationForm,\r\n saveRealTangibleValueForm,\r\n ]\r\n );\r\n\r\n return \r\n {props.children}\r\n \r\n};\r\n\r\nexport const useRealTangible = () => {\r\n const context = useContext(RealTangibleContext);\r\n\r\n if (context === undefined) {\r\n throw new Error('useRealTangible must be used within a RealTangibleProvider component.');\r\n }\r\n\r\n return context;\r\n}\r\n","export interface TaxFormsConfig {\r\n year: number;\r\n forms: Form[];\r\n}\r\n\r\nexport interface Form{\r\n name: string;\r\n info: string;\r\n toolTips?: {\r\n taxforms?: string\r\n };\r\n totalGrossRentalLine?: string;\r\n lineItems?: LineItem[];\r\n}\r\n\r\ninterface LineItem{\r\n id: number,\r\n name: string,\r\n appliesToNetProfits?: boolean,\r\n appliesToGrossReceipts?: boolean\r\n formType?: FormType\r\n}\r\n\r\nexport enum FormType{\r\n Addition=0,\r\n Deduction=1\r\n}","import React from \"react\";\r\nimport { RotatingLines } from 'react-loader-spinner';\r\nimport { styleConstants } from \"../../styles/constants\";\r\n\r\nexport interface SpinnerProps {\r\n strokeColor?: string;\r\n strokeWidth?: string;\r\n animationDuration?: string;\r\n width?: string;\r\n visible?: boolean\r\n}\r\n\r\nexport const LoadingSpinner = ({\r\n strokeColor= styleConstants.darkGreen,\r\n strokeWidth= \"4\",\r\n animationDuration= \"0.75\",\r\n width= \"100\",\r\n visible= true\r\n}: SpinnerProps) => {\r\n \r\n return (\r\n \r\n );\r\n};\r\n","import React, { useEffect, useState} from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { ErrorMessage, Field, Form, Formik} from \"formik\";\r\nimport { Label } from \"@rebass/forms\";\r\nimport { Button } from \"../../components/Button/Button\";\r\nimport { TextInput } from \"../../components/TextInput/TextInput\";\r\nimport { Modal } from \"../../components/Modal/Modal\";\r\nimport loginBusLicImg from \"../../assets/img/busLicLoginPage.png\";\r\nimport styles from \"./Login.module.scss\";\r\nimport { Box, Flex } from \"rebass\";\r\nimport { ROUTES } from \"../../routes/constants\";\r\nimport { FieldWrapper } from \"../../components/FieldWrapper/FieldWrapper\";\r\nimport { ValidationError } from \"../../components/ValidationError/ValidationError\";\r\nimport { useAuth } from \"../../providers/Authentication\";\r\nimport { saveProgressService } from \"../../services/saveProgress\";\r\nimport { useProgress } from \"../../providers/Progress\";\r\nimport { useTitle } from \"../../providers/Title\";\r\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\r\nimport { useBody } from \"../../providers/Body\";\r\nimport { useFiling } from \"../../providers/Filing\";\r\nimport { useGrossReceipts } from \"../../providers/GrossReceipts\";\r\nimport { usePayroll } from \"../../providers/Payroll\";\r\nimport { TaxFormsForm } from \"../../models/taxFormsForm\";\r\nimport { GrossReceiptsLocationsForm } from \"../../models/grossReceiptsLocationsForm\";\r\nimport { GrossReceiptDetailsForm } from \"../../models/grossReceiptDetailsForm\";\r\nimport dayjs from \"dayjs\";\r\nimport { GrossReceiptsTotalsForm } from \"../../models/grossReceiptsTotalsForm\";\r\nimport { PayrollLocationsForm } from \"../../models/payrollLocationsForm\";\r\nimport { PayrollTotalsByLocationForm } from \"../../models/payrollTotalsByLocationForm\";\r\nimport { PayrollExpenseForm } from \"../../models/payrollExpenseForm\";\r\nimport { useNetProfits } from \"../../providers/NetProfits\";\r\nimport { NetProfitsForm } from \"../../models/netProfitsForm\";\r\nimport { useRent } from \"../../providers/Rent\";\r\nimport { RentLocationsForm } from \"../../models/rentLocationsForm\";\r\nimport { GrossAnnualRentForm } from \"../../models/grossAnnualRentForm\";\r\nimport { RentTotalGrossForm } from \"../../models/rentTotalGrossForm\";\r\nimport { RealTangibleLocationsForm } from \"../../models/realTangibleLocationsForm\";\r\nimport { RealTangibleValueForm } from \"../../models/realTangibleValueForm\";\r\nimport { useRealTangible } from \"../../providers/RealTangible\";\r\nimport { Deduction } from \"../../models/deduction\";\r\nimport { AdditionsModel } from \"../../models/additionsModel\";\r\nimport { useBusinessLicense } from \"../../providers/BusinessLicense\";\r\nimport { BusinessLicenseLocationsForm } from \"../../models/businessLicenseLocationsForm\";\r\nimport { LoadingSpinner } from \"../../components/LoadingSpinner/LoadingSpinner\";\r\n\r\ninterface LoginForm {\r\n accountNumber: string;\r\n taxId: string;\r\n}\r\n\r\nexport const Login = () => {\r\n const history = useHistory();\r\n const { login, resetAuth } = useAuth();\r\n const { setCurrentPage } = useProgress();\r\n const { setCurrentTitle } = useTitle();\r\n const { setCurrentBody } = useBody();\r\n const [ error, setError ] = useState(undefined);\r\n const [ loading, setLoading ] = useState(false);\r\n\r\n const {\r\n saveTaxForms,\r\n getTaxFormsForYear,\r\n yearEndDate,\r\n saveFilingInformation\r\n } = useFiling();\r\n\r\n const { \r\n saveGrossReceiptDetails, \r\n saveSelectedLocations, \r\n saveGrossReceiptsTotals,\r\n saveGrossReceiptsDeductions, \r\n } = useGrossReceipts();\r\n \r\n const {\r\n savePayrollResponse,\r\n saveSelectedLocations: saveKentonPayrollLocations,\r\n saveKentonPayrollResponse,\r\n savePayrollTotalsByLocation,\r\n saveTotalPayrollExpense,\r\n } = usePayroll();\r\n\r\n const {\r\n saveNetProfitsForm,\r\n saveNetProfitsAdditions,\r\n } = useNetProfits();\r\n\r\n const {\r\n saveRentPaidResponse,\r\n saveSelectedLocations: saveSelectedRentLocations,\r\n saveGrossAnnualRentForm,\r\n saveRentTotalGross,\r\n } = useRent();\r\n\r\n const {\r\n savePropertyValueByLocationForm,\r\n saveRealTangibleValueForm,\r\n saveSelectedLocations: saveRealTangibleLocations,\r\n } = useRealTangible();\r\n\r\n const {\r\n saveSelectedType,\r\n saveSelectedLocations: saveLicenseLocations,\r\n } = useBusinessLicense();\r\n\r\n useEffect(() => {\r\n setCurrentPage!(null);\r\n //reset session if they navigate to this page\r\n setCurrentTitle!(\"Login\");\r\n resetAuth!();\r\n setCurrentBody!({ header: \"\", body: \"\" });\r\n }, [resetAuth, setCurrentBody, setCurrentPage, setCurrentTitle]);\r\n\r\n const returnTrueForms = (allForms: {ReturnId: number, TaxFormId: number}[]) => {\r\n const trueForms = {} as TaxFormsForm;\r\n allForms.forEach(form => {\r\n trueForms[form.TaxFormId] = true;\r\n });\r\n return trueForms;\r\n };\r\n\r\n const returnTrueLocations = (allForms: {ReturnId: number, LocationId: number}[]) => {\r\n const trueForms = {} as GrossReceiptsLocationsForm;\r\n allForms.forEach(form => {\r\n trueForms[form.LocationId] = true;\r\n });\r\n return trueForms;\r\n };\r\n\r\n const returnTrueGrossForm = (values: { LocationId: number, TaxFormId: number, Value: number }[]) => {\r\n const trueForms = {} as GrossReceiptDetailsForm;\r\n\r\n values.forEach(val => {\r\n trueForms[val.LocationId] = val.Value;\r\n });\r\n\r\n return trueForms;\r\n };\r\n\r\n const returnTrueGrossTotals = (values: { LocationId: number, TaxFormLineItemId: number, Value: number }[]) => {\r\n const retVals = {} as GrossReceiptsTotalsForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.TaxFormLineItemId] = val.Value;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnTrueGrossDeductions = (values: { TaxFormLineItemId: number, Deductions: number, AppliesToGrossReceipts?: boolean }[]) => {\r\n const retVals = {} as Deduction;\r\n\r\n values.forEach(val => {\r\n retVals[val.TaxFormLineItemId] = {\r\n Deductions: undefined\r\n };\r\n if (!!val.AppliesToGrossReceipts)\r\n retVals[val.TaxFormLineItemId].Deductions = val.Deductions;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnPayrollDetailLocations = (values: { LocationId: number, Value: boolean }[]) => {\r\n const retVals = {} as PayrollLocationsForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.LocationId] = true;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnPayrollDetailValues = (values: { LocationId: number, Value: number }[]) => {\r\n const retVals = {} as PayrollTotalsByLocationForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.LocationId] = val.Value;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnTotalPayrollExpense = (values: { TaxFormLineItemId: number, Value: number }[]) => {\r\n const retVals = {} as PayrollExpenseForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.TaxFormLineItemId] = val.Value;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnNetProfits = (values: { TaxFormLineItemId: number, NetProfit: number }[]) => {\r\n const retVals = {} as NetProfitsForm;\r\n\r\n values.filter(x => !!x.NetProfit).forEach(val => {\r\n retVals[val.TaxFormLineItemId] = val.NetProfit;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnNetProfitAdditions = (values: { TaxFormLineItemId: number, Deductions?: number, Additions?: number, AppliesToNetProfits?: boolean }[]) => {\r\n const retVals = {} as AdditionsModel;\r\n\r\n values.forEach(val => {\r\n retVals[val.TaxFormLineItemId] = {\r\n \"Additions\": 0,\r\n \"Deductions\": 0,\r\n };\r\n if (!!val.AppliesToNetProfits) {\r\n retVals[val.TaxFormLineItemId][\"Additions\"] = val.Additions ?? 0;\r\n retVals[val.TaxFormLineItemId][\"Deductions\"] = val.Deductions ?? 0;\r\n }\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnRentLocations = (values: { LocationId: number, Value: boolean }[]) => {\r\n const retVals = {} as RentLocationsForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.LocationId] = true;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnGrossAnnualRent = (values: { LocationId: number, GrossAnnual: number }[]) => {\r\n const retVals = {} as GrossAnnualRentForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.LocationId] = val.GrossAnnual;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnTotalGrossRent = (values: { TaxFormLineItemId: number, Value: number }[]) => {\r\n const retVals = {} as RentTotalGrossForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.TaxFormLineItemId] = val.Value;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnRealTangibleLocations = (values: { LocationId: number, AverageValue: number }[]) => {\r\n const retVals = {} as RealTangibleLocationsForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.LocationId] = true;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnRealTangibleValues = (values: { LocationId: number, AverageValue: number }[]) => {\r\n const retVals = {} as RealTangibleValueForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.LocationId] = val.AverageValue;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const returnLicenseLocations = (values: { LocationId: number}[]) => {\r\n const retVals = {} as BusinessLicenseLocationsForm;\r\n\r\n values.forEach(val => {\r\n retVals[val.LocationId] = true;\r\n });\r\n\r\n return retVals;\r\n };\r\n\r\n const handleDb = async (value: {Return: any, Deductions: any[]}) => {\r\n if (!value) {\r\n return;\r\n }\r\n\r\n const { Return, Deductions } = value;\r\n\r\n const db = {\r\n Id: Return.Id,\r\n AveragePropertyValue: Return.AveragePropertyValue,\r\n BusinessLicenseLocations: Return.BusinessLicenseLocations,\r\n Deductions: Return.Deductions,\r\n Payroll: Return.HasPayroll ? Return.HasPayroll : null,\r\n PayrollKentonCounty: Return.HasPayrollKentonCounty ? Return.HasPayrollKentonCounty : false,\r\n Properties: Return.Properties,\r\n RentPaid: Return.HasRentPaid,\r\n Rents: Return.Rents,\r\n ReturnFilingInfo: Return.ReturnFilingInfo,\r\n ReturnGrossReceiptTotals: Return.ReturnGrossReceiptTotals,\r\n ReturnGrossReceipts: Return.ReturnGrossReceipts,\r\n ReturnPayrollDetails: Return.ReturnPayrollDetails,\r\n ReturnPayrollTotals: Return.ReturnPayrollTotals,\r\n TaxForms: Return.ReturnTaxForms,\r\n TotalRents: Return.TotalRents,\r\n LicenseType: Return.LicenseType,\r\n LicenseLocations: Return.BusinessLicenseLocations,\r\n };\r\n await saveFilingInformation(\r\n db.ReturnFilingInfo.FiscalYearEndDate\r\n ? dayjs(db.ReturnFilingInfo.FiscalYearEndDate).format(\"MM/DD/YYYY\")\r\n : \"\",\r\n \"\",\r\n db.ReturnFilingInfo.ReturnType);\r\n\r\n let trueValues = returnTrueForms(db.TaxForms);\r\n let trueLocations = returnTrueLocations(db.ReturnGrossReceipts);\r\n\r\n try {\r\n await saveTaxForms(trueValues);\r\n await saveSelectedLocations(trueLocations);\r\n await saveGrossReceiptDetails(returnTrueGrossForm(db.ReturnGrossReceipts));\r\n await saveGrossReceiptsTotals(returnTrueGrossTotals(db.ReturnGrossReceiptTotals));\r\n await saveGrossReceiptsDeductions(returnTrueGrossDeductions(Deductions));\r\n await saveKentonPayrollResponse(db.PayrollKentonCounty);\r\n await saveKentonPayrollLocations(returnPayrollDetailLocations(db.ReturnPayrollDetails));\r\n await savePayrollTotalsByLocation(returnPayrollDetailValues(db.ReturnPayrollDetails));\r\n await saveTotalPayrollExpense(returnTotalPayrollExpense(db.ReturnPayrollTotals));\r\n await saveNetProfitsForm(returnNetProfits(db.Deductions));\r\n await saveNetProfitsAdditions(returnNetProfitAdditions(Deductions));\r\n await saveSelectedRentLocations(returnRentLocations(db.Rents));\r\n await saveGrossAnnualRentForm(returnGrossAnnualRent(db.Rents));\r\n await saveRentTotalGross(returnTotalGrossRent(db.TotalRents));\r\n await saveRealTangibleLocations(returnRealTangibleLocations(db.Properties));\r\n await savePropertyValueByLocationForm(returnRealTangibleValues(db.Properties));\r\n await saveLicenseLocations(returnLicenseLocations(db.LicenseLocations))\r\n if (db.LicenseType !== null) {\r\n await saveSelectedType(db.LicenseType);\r\n }\r\n if (db.Payroll !== null) {\r\n await savePayrollResponse(db.Payroll);\r\n }\r\n if (db.RentPaid !== null) {\r\n await saveRentPaidResponse(db.RentPaid);\r\n }\r\n if (db.AveragePropertyValue !== null) {\r\n await saveRealTangibleValueForm({0: db.AveragePropertyValue});\r\n }\r\n } catch (e) {\r\n console.error(e);\r\n }\r\n }\r\n\r\n return (\r\n
\r\n {error ? {error} : null}\r\n {loading && !error ? (\r\n \r\n ) : {\r\n setError(undefined);\r\n setLoading(true);\r\n const response = await login(values.accountNumber, values.taxId);\r\n if (response.success) {\r\n const value = await saveProgressService.getProgress(values.accountNumber);\r\n if (!!value) {\r\n await handleDb(value as any);\r\n }\r\n // TODO make sure this route varies based on existing progress (if any)\r\n history.push(ROUTES.ACCOUNT_INFO_CONF);\r\n } else {\r\n setError(response.message !== \"\" ? response.message : \"An unspecified error occurred.\");\r\n setLoading(false);\r\n }\r\n }}\r\n >\r\n {() => (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n I can't find my account number\r\n \r\n }\r\n >\r\n \r\n \r\n \"Business\r\n \r\n \r\n

Business License: Account number

\r\n

\r\n Your account number can be found as shown highlighted in this sample\r\n

\r\n
\r\n
\r\n \r\n {!error && !loading ? (\r\n \r\n \r\n \r\n

\r\n Before you start your annual return with\r\n the Kenton County Filing Wizard, be sure\r\n you have all of your federal tax forms\r\n for reference, and that you've already\r\n calculated your revenue, payroll, and\r\n gross receipts for each locality in\r\n which you had business.\r\n

\r\n
\r\n \r\n

\r\n Be sure to have any of the following\r\n forms that apply completed before\r\n starting your filing with Kenton County:\r\n

\r\n
\r\n \r\n \r\n

US Forms:

\r\n
    \r\n
  • 1040A and/or 1040X
  • \r\n
  • \r\n Schedules A-F from Form 1040\r\n
  • \r\n
  • 1041
  • \r\n
  • 1099-G
  • \r\n
  • 1099-MISC
  • \r\n
  • 4797
  • \r\n
  • \r\n 6252 - Installment Sale Income\r\n
  • \r\n
  • 8824 - Like-Kind Exchanges
  • \r\n
  • Form 1120 (any variation)
  • \r\n
  • 1065
  • \r\n
  • 8825
  • \r\n
  • 990-T
  • \r\n
  • 1120-REIT
  • \r\n
\r\n
\r\n \r\n

Kentucky Forms:

\r\n
    \r\n
  • Kentucky Sales Tax forms
  • \r\n
  • \r\n Personal Tangible Property Return\r\n
  • \r\n
  • \r\n All Kentucky Alcohol reporting forms\r\n
  • \r\n
\r\n

Other:

\r\n
    \r\n
  • \r\n Forms reporting any state or\r\n local license Taxes paid\r\n
  • \r\n
  • \r\n Gross Receipts totaled for each\r\n Kenton County jurisdiction\r\n
  • \r\n
  • \r\n Payroll by Kenton County\r\n jurisdiction\r\n
  • \r\n
  • \r\n Real Property Value by Kenton\r\n County jurisdiction\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n ) : null}\r\n\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n }\r\n
\r\n );\r\n};\r\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Box } from \"rebass\";\nimport { Label } from \"@rebass/forms\";\n\nimport { ROUTES } from \"../../../routes/constants\";\nimport { Button } from \"../../../components/Button/Button\";\n\nimport styles from \"./ConfirmAccountInfo.module.scss\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { useTitle } from \"../../../providers/Title\";\n\nexport const ConfirmAccountInfo = () => {\n const history = useHistory();\n\n const { isLoggedIn, account, getAccountInfo } = useAuth();\n const { setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n\n const handleIncorrect = () => {\n history.push(ROUTES.ACCOUNT_INFO_EDIT);\n };\n\n const handleCorrect = () => {\n history.push(ROUTES.FILING_INFO);\n };\n\n useEffect(() => {\n if (isLoggedIn && !account) {\n getAccountInfo();\n }\n }, [isLoggedIn, account, getAccountInfo]);\n\n useEffect(() => {\n if (!isLoggedIn) {\n history.replace(ROUTES.LOGIN);\n return;\n }\n\n setCurrentPage!('account-confirm');\n setCurrentTitle!(\"Is the following information correct?\");\n }, [history, isLoggedIn, setCurrentPage, setCurrentTitle]);\n\n return (\n
\n \n \n \n

{account?.name}

\n
\n \n \n

{account?.dba}

\n
\n \n \n

\n {account?.address.attention ? <>ATTN: {account.address.attention}
: null}\n {account?.address.address1}
\n {account?.address.address2 ? <>{account.address.address2}
: null}\n {account?.address.city}, {account?.address.state} {account?.address.zip}\n

\n
\n \n \n

\n {account?.contactName ? <>{account.contactName}
: null}\n {account?.contactTitle ? <>{account.contactTitle}
: null}\n {account?.contactEmail ? <>{account.contactEmail}
: null}\n {account?.contactPhone}\n

\n
\n
\n\n
\n \n \n
\n
\n );\n};\n","import React, { useEffect } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { ErrorMessage, Field, Form, Formik } from 'formik';\nimport { Box, Flex } from 'rebass';\nimport { Label } from '@rebass/forms';\nimport { AccountInfo } from '../../../models/accountInfo';\nimport { Button } from '../../../components/Button/Button';\nimport { FieldWrapper } from '../../../components/FieldWrapper/FieldWrapper';\nimport { TextInput } from '../../../components/TextInput/TextInput';\nimport { ValidationError } from '../../../components/ValidationError/ValidationError';\nimport { ROUTES } from '../../../routes/constants';\nimport { useProgress } from '../../../providers/Progress';\nimport { useAuth } from '../../../providers/Authentication';\nimport { useTitle } from '../../../providers/Title';\n\nexport const EditAccountInfo = () => {\n const history = useHistory();\n const { isLoggedIn, account, getAccountInfo, updateAccountInfo } = useAuth();\n const { setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n \n let initialValues = {\n number: account?.number || \"\",\n name: account?.name || \"\",\n dba: account?.dba || \"\",\n address: {\n address1: account?.address.address1 || \"\",\n address2: account?.address.address2 || \"\",\n attention: account?.address.attention || \"\",\n city: account?.address.city || \"\",\n state: account?.address.state || \"\",\n zip: account?.address.zip || \"\",\n },\n contactEmail: account?.contactEmail || \"\",\n contactName: account?.contactName || \"\",\n contactTitle: account?.contactTitle || \"\",\n contactPhone: account?.contactPhone || \"\"\n };\n\n useEffect(() => {\n if (!account && isLoggedIn) {\n getAccountInfo();\n }\n }, [account, getAccountInfo, isLoggedIn]);\n\n useEffect(() => {\n if (!isLoggedIn) {\n history.replace(ROUTES.LOGIN);\n return;\n }\n\n setCurrentPage!('account-edit');\n setCurrentTitle!(\"Edit Account Information\");\n }, [history, isLoggedIn, setCurrentPage, setCurrentTitle]);\n\n return (\n
\n

Please take a moment to correct any information below that isn't right.

\n {!account ?\n <>Loading\n :\n {\n updateAccountInfo(values as AccountInfo);\n history.push(ROUTES.FILING_INFO);\n }}\n validate={values => {\n let errors = {\n address: {}\n } as AccountInfo;\n\n if (!values.dba) {\n errors.dba = 'DBA is required.';\n }\n if (!values.address?.attention) {\n errors.address.attention = 'Attention is required.';\n }\n if (!values.address?.address1) {\n errors.address.address1 = 'Address 1 is required.';\n }\n if (!values.address?.city) {\n errors.address.city = 'City is required.';\n }\n if (!values.address?.state) {\n errors.address.state = 'State is required.';\n }\n if (!values.address?.zip) {\n errors.address.zip = 'ZIP is required.';\n }\n if (!values.contactName) {\n errors.contactName = 'Contact Name is required.';\n }\n if (!values.contactTitle) {\n errors.contactTitle = 'Contact Title is required.';\n }\n if (!values.contactEmail) {\n errors.contactEmail = 'Contact Email is required.';\n }\n if (!values.contactPhone) {\n errors.contactPhone = 'Contact Phone is required.';\n }\n\n if (Object.keys(errors).length === 1 && Object.keys(errors.address).length === 0) {\n errors = {} as AccountInfo;\n }\n\n return errors;\n }}\n validateOnBlur={true}\n >\n {({ errors, touched, isValidating }) => (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n <>   \n \n \n
\n )}\n \n }\n
\n );\n};\n","import { Field } from 'formik';\r\nimport React from 'react';\r\nimport styles from './CheckboxField.module.scss';\r\n\r\nexport interface CheckboxFieldProps {\r\n label: string;\r\n}\r\n\r\nexport const CheckboxField = ({ name, label, ...rest }: CheckboxFieldProps & any) => {\r\n return (\r\n
\r\n \r\n
\r\n );\r\n};\r\n","import dayjs from \"dayjs\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport ReactTooltip from \"react-tooltip\";\r\nimport { Formik, Form } from \"formik\";\r\nimport { Button } from \"../../components/Button/Button\";\r\nimport { CheckboxField } from \"../../components/CheckboxField/CheckboxField\";\r\nimport { useTitle } from \"../../providers/Title\";\r\nimport { useProgress } from \"../../providers/Progress\";\r\nimport { useFiling } from \"../../providers/Filing\";\r\nimport { ROUTES } from \"../../routes/constants\";\r\n\r\nimport styles from \"./TaxForms.module.scss\";\r\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\r\nimport { saveProgressService } from \"../../services/saveProgress\";\r\nimport { useAuth } from \"../../providers/Authentication\";\r\nimport { SaveReturnInfo } from \"../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { useGrossReceipts } from \"../../providers/GrossReceipts\";\r\nimport { TaxFormsForm } from \"../../models/taxFormsForm\";\r\nimport { usePayroll } from \"../../providers/Payroll\";\r\nimport { useRent } from \"../../providers/Rent\";\r\nimport { ValidationError } from \"../../components/ValidationError/ValidationError\";\r\nimport { LoadingSpinner } from \"../../components/LoadingSpinner/LoadingSpinner\"\r\n\r\nexport const TaxForms = () => {\r\n const history = useHistory();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const [fetched, setFetched] = useState(false);\r\n const { yearEndDate, taxForms, selectedTaxForms, getTaxFormsForYear, saveTaxForms } = useFiling();\r\n const { setCurrentTitle } = useTitle();\r\n const { accountNumber } = useAuth();\r\n const { removeTotals: removeGrossReceiptTotals } = useGrossReceipts();\r\n const { removeTotals: removePayrollTotals } = usePayroll();\r\n const { removeTotals: removeRentTotals } = useRent();\r\n\r\n useEffect(() => {\r\n const year = dayjs(yearEndDate).get(\"year\");\r\n if (!taxForms || taxForms[0]?.year !== year) {\r\n getTaxFormsForYear(year);\r\n }\r\n setCurrentPage!(\"tax-forms\");\r\n setCurrentTitle!(\"Which tax forms do you have?\");\r\n }, [getTaxFormsForYear, setCurrentPage, setCurrentTitle, taxForms, yearEndDate]);\r\n\r\n useEffect(() => {\r\n setFetched(true);\r\n }, [taxForms]);\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n history.push(ROUTES.FILING_INFO);\r\n return;\r\n };\r\n\r\n const getReturnInfo = () => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n\r\n return returnInfo;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {!fetched || !taxForms ? \r\n :\r\n {\r\n const removedItems = Object.keys(values).filter(x => !values[x as any]).map(x => parseInt(x));\r\n const trueItems = Object.keys(values).filter(x => values[x as any]).reduce((acc, item) => ({\r\n ...acc,\r\n [parseInt(item)]: values[item as any],\r\n }), {} as TaxFormsForm);\r\n await saveTaxForms(trueItems);\r\n\r\n for (const item of removedItems) {\r\n await removeGrossReceiptTotals(item);\r\n await removePayrollTotals(item);\r\n await removeRentTotals(item);\r\n }\r\n\r\n const returnInfo = getReturnInfo();\r\n await saveProgressService.saveTaxFormsProgress({\r\n AccountNumber: returnInfo.AccountNumber,\r\n Data: values\r\n })\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n\r\n history.push(ROUTES.GROSS_RECEIPTS_LOCATIONS);\r\n }}\r\n validate={(values) => {\r\n const trueVals = Object.keys(values).filter(x => values[x as any]).reduce((acc, item) => ({\r\n ...acc,\r\n [parseInt(item)]: values[item as any],\r\n }), {} as TaxFormsForm);\r\n\r\n if (!Object.keys(trueVals).length) {\r\n return {\r\n oneRequired: \"At least one tax form must be selected.\"\r\n };\r\n }\r\n }}\r\n >\r\n {({ values, dirty, errors }) => (\r\n
\r\n
\r\n {taxForms?.map(form => {\r\n let key = `${form.year}-${form.name}`.split(\" \").join(\"-\");\r\n return (\r\n \r\n )\r\n })}\r\n\r\n \r\n \r\n {(errors as any).oneRequired}\r\n \r\n
\r\n \r\n handleGoBack(dirty)}>\r\n Go Back\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n }\r\n
\r\n
\r\n );\r\n};\r\n","import React from \"react\";\r\nimport { useField, useFormikContext } from \"formik\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport styles from './DatepickerField.module.scss';\r\n\r\nexport const DatePickerField = ({ ...props }: any) => {\r\n const { setFieldValue } = useFormikContext();\r\n const [field] = useField(props);\r\n return (\r\n {\r\n setFieldValue(field.name, val);\r\n }}\r\n />\r\n );\r\n};\r\n","import { Field, useFormikContext } from 'formik';\r\nimport React from 'react';\r\nimport styles from './RadiobuttonField.module.scss';\r\n\r\nexport interface RadiobuttonFieldProps {\r\n name: string;\r\n value: string;\r\n label: string;\r\n checked?: boolean;\r\n onChange?: () => void;\r\n}\r\n\r\nexport const RadiobuttonField = ({ ...props }: RadiobuttonFieldProps & any) => {\r\n const { setFieldValue } = useFormikContext();\r\n\r\n return (\r\n
\r\n \r\n
\r\n )\r\n};\r\n","import { Label } from \"@rebass/forms\";\nimport dayjs from \"dayjs\";\nimport { ErrorMessage, Form, Formik } from \"formik\";\nimport React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Box } from \"rebass\";\nimport { Button } from \"../../components/Button/Button\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport { DatePickerField } from \"../../components/DatepickerField/DatepickerField\";\nimport { FieldWrapper } from \"../../components/FieldWrapper/FieldWrapper\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { RadiobuttonField } from \"../../components/RadiobuttonField/RadiobuttonField\";\nimport { ValidationError } from \"../../components/ValidationError/ValidationError\";\nimport { SaveFilingInfo } from \"../../models/SaveProgressModels/saveFilingInfo\";\nimport { ReturnType, useFiling } from \"../../providers/Filing\";\nimport { useAuth } from \"../../providers/Authentication\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { useTitle } from \"../../providers/Title\";\nimport { ROUTES } from \"../../routes/constants\";\nimport { saveProgressService } from \"../../services/saveProgress\";\nimport styles from \"./FilingInfo.module.scss\";\n\nexport const FilingInfo = () => {\n const history = useHistory();\n const { setCurrentPage } = useProgress();\n const { yearEndDate, returnType, checkForUnprocessedReturn, checkForExistingReturn, checkForExtensionRequest, saveFilingInformation } = useFiling();\n const { setCurrentTitle } = useTitle();\n const { accountNumber } = useAuth();\n\n useEffect(() => {\n setCurrentPage!(\"filing-info\");\n setCurrentTitle!(\"Please enter the filing information:\");\n\n }, [setCurrentPage, setCurrentTitle]);\n\n function calculateDueDate(date: dayjs.Dayjs) {\n let dueDate = dayjs(new Date(date.year(), date.month() + 4, 15));\n \n // account for weekends\n if (dueDate.day() === 6)\n dueDate = dueDate.add(2, \"day\");\n else if (dueDate.day() === 0)\n dueDate = dueDate.add(1, \"day\");\n \n // account for Emancipation Day\n if (dueDate.month() === 3) {\n const emancipationDay = dayjs(new Date(dueDate.year(), 3, 16));\n \n if (emancipationDay.day() === 0 && dueDate.date() === 17)\n dueDate = dueDate.add(1, \"day\");\n else if (emancipationDay.day() === 6 && dueDate.date() === 15)\n dueDate = dueDate.add(3, \"day\");\n else if (dueDate.date() === 16)\n dueDate = dueDate.add(1, \"day\");\n }\n \n return dueDate;\n }\n\n return (\n
\n
\n \n Return Type?\n \n }\n >\n
\n
\n

\n File Extension Request: \n Federal extension does not satisfy the requirements for an extension for Kenton County or any city\n within Kenton County. An estimated payment (90% of tax due) and 100% of City Business License Renewals or County-Wide\n Business License must be remitted by original due date of return. The due date of the return will be extended six\n months from the original due date. Any tax due at extended due date will be charged interest at the Kentucky Tax Interest Rate.\n

\n
\n\n
\n

\n File Return: \n Normal returns filed at due date of return without prior Extension Request,\n or actual returns filed after an Extension Request.\n

\n
\n
\n \n
\n\n \n {\n const selectedDate = dayjs(values.yearEndDate);\n const selectedYear = selectedDate.get(\"year\");\n const currentDate = dayjs();\n const currentYear = currentDate.get(\"year\");\n const dueDate = calculateDueDate(selectedDate);\n\n if (selectedYear > currentYear + 1) {\n return alert(`You cannot file for any year after ${currentYear + 1}.`);\n } else if (selectedYear < 2019) {\n return alert(`You cannot use Filing Wizard to file a return for ${selectedYear}.`);\n } else if (values.returnType === ReturnType.ExtensionRequest && currentDate.isAfter(dueDate, \"day\")) {\n return alert(`You cannot file an extension for ${selectedYear} because you are past the due date (${dueDate.format(\"MM/DD/YYYY\")}).`);\n }\n\n const returnNeedsProcessed = await checkForUnprocessedReturn(selectedYear);\n if (returnNeedsProcessed.data) {\n return alert(returnNeedsProcessed.message);\n }\n\n const extensionRequest = await checkForExtensionRequest(selectedYear);\n const previousReturn = await checkForExistingReturn(selectedYear); // excludes extensions\n\n if (extensionRequest.data) {\n if (values.returnType === ReturnType.ExtensionRequest) {\n // user is attempting to file a duplicate extension\n return alert(extensionRequest.message);\n } else if (previousReturn.data) {\n // user is attempting to file a duplicate actual return\n return alert(previousReturn.message);\n } else {\n // user is filing an actual\n values.returnType = ReturnType.ActualReturn;\n }\n } else if (previousReturn.data) {\n // user is attempting to file a duplicate normal/final return\n return alert(previousReturn.message);\n }\n\n await saveFilingInformation(values.yearEndDate!, dueDate.format(\"MM/DD/YYYY\"), values.returnType!);\n const filingInfo: SaveFilingInfo = {\n accountNumber: accountNumber!,\n fiscalYearEndDate: values.yearEndDate!,\n returnType: values.returnType!,\n };\n await saveProgressService.saveFilingInfo(filingInfo);\n\n history.push(ROUTES.TAX_FORMS);\n }}\n validate={values => {\n let errors = {} as any;\n if (!values.yearEndDate) {\n errors.yearEndDate = \"Fiscal Year End Date is required\";\n }\n if (values.returnType === null || values.returnType === undefined) {\n errors.returnType = \"A return type is required.\";\n }\n return errors;\n }}\n validateOnBlur={true}\n >\n {({ errors, touched }) => (\n
\n
\n
\n \n \n \n
\n \n \n \n \n \n \n \n { history.push(ROUTES.ACCOUNT_INFO_CONF) }}\n >\n Go Back\n \n \n \n \n
\n
\n )}\n \n
\n )\n}\n","import { Location } from \"../models/location\";\nimport { ApiResponse, AxiosService } from \"./axiosService\";\n\nexport class LocationService extends AxiosService {\n public constructor() { super(); }\n\n async getLocations(year: number) {\n try {\n const { data } = await this.axios.get>(`/Locations?year=${year}`);\n return data;\n }\n catch (e) {\n console.error(e);\n throw e;\n }\n }\n}\n\nexport const locationService = new LocationService();\n","import React, { createContext, useCallback, useContext, useMemo, useState } from 'react';\nimport { Location } from '../models/location';\nimport { ApiResponse } from '../services/axiosService';\nimport { locationService } from '../services/locationService';\n\ninterface LocationsContextType {\n availableLocations?: Location[];\n error?: Error;\n isLoading: boolean;\n\n getAvailableLocations: (year: number) => Promise>;\n}\n\nexport const LocationsContext = createContext({} as any);\n\ninterface LocationsContextProps {\n children: JSX.Element | JSX.Element[];\n}\n\nexport const LocationsProvider = (props: LocationsContextProps) => {\n const [error, setError] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [availableLocations, setAvailableLocations] = useState();\n\n const getAvailableLocations = useCallback(async (year: number) => {\n try {\n setIsLoading(true);\n const response = await locationService.getLocations(year);\n setAvailableLocations(response.data);\n return response;\n } catch (e) {\n setError(e as Error);\n setIsLoading(false);\n throw e;\n }\n }, []);\n\n const values = useMemo(\n () => ({\n availableLocations,\n error,\n isLoading,\n getAvailableLocations,\n }),\n [\n availableLocations,\n error,\n isLoading,\n getAvailableLocations,\n ]\n );\n\n return \n {props.children}\n \n};\n\nexport const useLocations = () => {\n const context = useContext(LocationsContext);\n\n if (context === undefined) {\n throw new Error('useLocations must be used within a LocationsProvider component.');\n }\n\n return context;\n};\n","import React, { useEffect } from \"react\";\nimport { Formik, Form } from \"formik\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { CheckboxField } from \"../../../components/CheckboxField/CheckboxField\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { useBody } from \"../../../providers/Body\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { useGrossReceipts } from \"../../../providers/GrossReceipts\";\nimport { GrossReceiptsLocationsForm } from \"../../../models/grossReceiptsLocationsForm\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport styles from \"./GrossReceiptsLocations.module.scss\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { ValidationError } from \"../../../components/ValidationError/ValidationError\";\nimport { LoadingSpinner } from \"../../../components/LoadingSpinner/LoadingSpinner\";\nimport dayjs from \"dayjs\";\nimport { useFiling } from \"../../../providers/Filing\";\n\nexport const GrossReceiptsLocations = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n const { currentPage, setCurrentPage } = useProgress();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, saveSelectedLocations } = useGrossReceipts();\n const { accountNumber } = useAuth();\n const { yearEndDate } = useFiling();\n\n let initialValues = {} as GrossReceiptsLocationsForm;\n if (selectedLocations && Object.keys(selectedLocations).length) {\n Object.keys(selectedLocations).forEach(location => {\n if (selectedLocations[parseInt(location)] === true) initialValues[parseInt(location)] = true;\n });\n }\n\n useEffect(() => {\n getAvailableLocations(dayjs(yearEndDate).year());\n setCurrentPage!(\"gross-receipt-locations\");\n setCurrentTitle!(\"In which Kenton County locations do you have gross receipts (sales/revenue)?\");\n setCurrentBody!({header: \"\", body: \"\"});\n }, [getAvailableLocations, setCurrentBody, setCurrentPage, setCurrentTitle]);\n\n const returnTrueLocations = (grossReceiptsLocationsForm: GrossReceiptsLocationsForm) => {\n const trueLocations = {} as GrossReceiptsLocationsForm;\n Object.keys(grossReceiptsLocationsForm).forEach(location => {\n if (grossReceiptsLocationsForm[parseInt(location)] === true) trueLocations[parseInt(location)] = true;\n });\n return trueLocations;\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n history.push(ROUTES.TAX_FORMS);\n return;\n }\n\n return (\n
\n
\n {availableLocations === undefined ? (\n \n ) :\n {\n const trueLocations = returnTrueLocations(values);\n\n await saveSelectedLocations(trueLocations);\n\n const returnInfo = getReturnInfo();\n await saveProgressService.saveGrossReceiptsLocations({\n AccountNumber: returnInfo.AccountNumber,\n Data: values\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.GROSS_RECEIPT_DETAILS);\n }}\n validate={(values) => {\n const trueLocations = returnTrueLocations(values);\n\n if (!Object.keys(trueLocations).length) {\n return {\n oneRequired: \"You must select at least one location.\"\n };\n }\n }}\n >\n {({ values, dirty, errors }) => (\n
\n
\n {availableLocations.map(city => {\n let key = `${city.id}`;\n return (\n \n )\n })}\n \n {(errors as any).oneRequired}\n \n
\n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n
\n )}\n \n }\n
\n
\n )\n}\n","import React from 'react';\r\n\r\nimport styles from './Content.module.scss';\r\n\r\nexport interface ContentProps {\r\n style?: object;\r\n children: JSX.Element[] | JSX.Element;\r\n}\r\n\r\nexport const Content = ({children, ...rest}: ContentProps) => {\r\n return (\r\n
\r\n {children}\r\n
\r\n )\r\n}","import { FieldProps } from 'formik';\r\nimport React, { useState } from 'react';\r\nimport {default as CurrencyInputField} from 'react-currency-input-field';\r\n\r\ninterface CurrencyInputProps extends FieldProps{\r\n className?: string;\r\n value?: string;\r\n}\r\n\r\nexport const CurrencyInput = (props: CurrencyInputProps) => {\r\n const [val, setVal] = useState(props.value ? parseFloat(props.value).toFixed(2) : undefined);\r\n return (\r\n <>\r\n {\r\n setVal(newVal as any);\r\n }}\r\n onBlur={() => {\r\n props.form.setFieldValue(props.field.name, parseFloat(val!))\r\n }} />\r\n \r\n )\r\n}","import { Field, useFormikContext } from \"formik\";\nimport React, { useEffect } from \"react\";\nimport { Decimal } from \"decimal.js\";\nimport { CurrencyInput } from \"../CurrencyInput/CurrencyInput\";\nimport ReactTooltip from \"react-tooltip\";\nimport styles from \"./DataEntryTable.module.scss\";\nimport \"./Tooltip.css\";\nimport { FormType } from \"../../models/taxFormsConfig\";\n\nconst deepObjectValues = (val: object) => {\n let newVals : string[] = [...new Set(Object.values(val))];\n newVals.forEach((newVal, idx) => {\n if (typeof(newVal) === 'object') {\n newVals.splice(idx, 1);\n Object.keys(newVal).forEach(x => {\n newVals = [...newVals, ...deepObjectValues(newVal)]\n });\n } else {\n newVals = [ ...newVals ];\n }\n });\n\n return newVals;\n};\n\ninterface DataEntryTableProps {\n rows: { label: string, id: number, lineItem?: string, formType?: FormType }[];\n cols: { label: string, info?: string, formType?: FormType }[];\n sumCols?: boolean;\n sumRows?: boolean;\n combineErrors?: boolean;\n values: any;\n valOption: boolean;\n errors: any,\n touched: any,\n errorCallback: any\n allowNegative?: boolean;\n totalRowLabel?: string;\n additionsAndDeductions?: boolean;\n}\n\nconst formatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\"\n});\n \n\nexport const DataEntryTable = ({ rows, cols, sumRows = false, sumCols = false, valOption = false, combineErrors = false, allowNegative = false, errorCallback, totalRowLabel, additionsAndDeductions = false }: DataEntryTableProps) => {\n const { values, touched, errors }: { values: any, touched: any, errors: any } = useFormikContext();\n\n let totalRows = 0;\n let totalAddition = 0;\n let additionsTotal = 0;\n let deductionsTotal = 0;\n\n let additions = false;\n if (cols[0]?.formType !== undefined) {\n additions = true;\n }\n\n const formatValue = (val : any) => {\n if (val === null || val === undefined || isNaN(Number(val))) {\n return 0;\n }\n return Number(val);\n };\n\n const validate = (value: any) => {\n let error;\n const formattedValue = formatValue(value);\n\n if (formattedValue < 0 && !allowNegative) {\n error = \"Values cannot be negative.\";\n }\n if (formattedValue === null || formattedValue === undefined || isNaN(formattedValue)) {\n error = \"Please enter a valid number.\";\n }\n return error;\n };\n\n useEffect(() => {\n if (errors && errorCallback) {\n if (combineErrors) {\n errorCallback([...new Set(Object.values(errors))]);\n } else {\n errorCallback(errors);\n }\n }\n }, [errors, errorCallback, combineErrors]);\n\n return (\n <>\n \n {errors ? combineErrors ?\n (\n
\n {deepObjectValues(errors).map(x => {\n console.log(x);\n return (\n
\n {x as any}\n
\n )}\n )}\n
\n )\n :\n Object.keys(errors).map((x) => {\n if (combineErrors) {\n return null\n }\n return (\n
\n {\n x + \" \" +\n (\n typeof errors[Object.keys(errors)[0]] != \"string\" ?\n Object.values(errors[x])[0]\n : errors[x]\n )\n }\n
\n );\n }) : null}\n
\n\n \n \n \n \n {cols.map(x => (\n \n ))}\n \n \n \n {rows.map((x, index) => {\n if (sumRows) {\n if (!values[x.id]) { values[x.id] = 0 }\n\n // calculate the sum of the current row values\n let rowSum: number = typeof (values[x.id]) === 'object' ? (Object.values(values).reduce((a: Decimal, b: any) => {\n return Number.isNaN(b) ? a.plus(new Decimal(0)) : a.plus(new Decimal(b))\n }, new Decimal(0)) as Decimal).toNumber()\n :\n values[x.id];\n\n // make the total only happen if the form is an additive type\n if (x.formType === FormType.Addition) totalAddition += rowSum;\n\n totalRows += rowSum;\n }\n if (additionsAndDeductions) {\n const additionValue = values[x.id]?.[\"Additions\"] ?? 0;\n const deductionValue = values[x.id]?.[\"Deductions\"] ?? 0;\n additionsTotal += isNaN(additionValue) ? 0 : Number(additionValue);\n deductionsTotal += isNaN(deductionValue) ? 0 : Number(deductionValue);\n }\n return (\n \n \n {cols.map(y => {\n const val = values[x.id] != null && typeof (values[x.id]) === 'object'\n ? values[x.id][y.label]\n ? values[x.id][y.label]\n : null\n : values[x.id] ?? 0;\n\n if (y.formType !== undefined && y.formType !== x.formType) {\n return (\n \n )\n } else if (y.formType !== undefined && y.formType === x.formType) {\n return (\n \n )\n }\n else {\n return (\n \n )\n }\n })}\n \n )\n })}\n {additions ?\n \n \n \n \n \n : null}\n {sumRows && !additions ?\n \n \n \n \n \n : null}\n \n
\n
\n
\n {x.label}\n\n {(x.info) ?\n
\n \n
\n : null}\n
\n
\n
\n

{x.label}

\n

{x.lineItem}

\n
\n \n \n \n \n
{totalRowLabel ?? 'Total for Kenton County'}\n {formatter.format(additionsTotal)}\n \n {formatter.format((deductionsTotal > 0 ? deductionsTotal * -1 : deductionsTotal))}\n
{totalRowLabel ?? 'Total for Kenton County'}\n {formatter.format(totalRows)}\n
\n \n );\n};\n","import dayjs from \"dayjs\";\nimport React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Form, Formik } from \"formik\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport { Content } from \"../../../components/Content/Content\";\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\nimport { GrossReceiptDetailsForm } from \"../../../models/grossReceiptDetailsForm\";\nimport { useFiling } from \"../../../providers/Filing\";\nimport { useGrossReceipts } from \"../../../providers/GrossReceipts\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\n\nexport const GrossReceiptsDetails = () => {\n const history = useHistory();\n const { currentPage, setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { taxForms, yearEndDate, getTaxFormsForYear } = useFiling();\n const { selectedLocations, details, saveGrossReceiptDetails} = useGrossReceipts();\n const { accountNumber } = useAuth();\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number }[]>([]);\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\n const [, setError] = useState(0);\n\n let initialValues = {} as GrossReceiptDetailsForm;\n if (!details || !Object.keys(details).length) {\n for (const location of Object.keys(selectedLocations)) {\n initialValues[parseInt(location)] = 0;\n }\n } else {\n initialValues = details;\n Object.keys(initialValues).forEach(city => {\n if (!selectedLocations[parseInt(city)]) delete initialValues[parseInt(city)];\n });\n for (const location of Object.keys(selectedLocations)) {\n if (!initialValues[parseInt(location)]) {\n initialValues[parseInt(location)] = 0;\n }\n }\n }\n\n useEffect(() => {\n if (availableLocations) {\n setDataEntryRows(availableLocations.filter(x => Object.keys(selectedLocations).indexOf(x.id.toString()) > -1).map(location => {\n return {\n label: location.name,\n id: location.id,\n }\n }));\n\n setDataEntryCols([\n { label: \"\" }\n ]);\n }\n }, [availableLocations, selectedLocations]);\n\n useEffect(() => {\n if (!availableLocations) {\n getAvailableLocations(dayjs(yearEndDate).year());\n }\n\n if (!taxForms) {\n const year = dayjs(yearEndDate).get(\"year\");\n getTaxFormsForYear(year);\n }\n\n setCurrentPage!(\"gross-details\");\n setCurrentTitle!(\"Please enter your Gross Receipts by Location into the table below:\");\n }, [availableLocations, getAvailableLocations, getTaxFormsForYear, setCurrentPage, setCurrentTitle, taxForms, yearEndDate]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n history.push(ROUTES.GROSS_RECEIPTS_LOCATIONS);\n return;\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n const getTrueValues = (values: GrossReceiptDetailsForm) => {\n return Object.keys(values)\n .filter(x => values[x as any])\n .reduce((acc, item) => ({\n ...acc,\n [parseInt(item)]: values[item as any],\n }), {} as GrossReceiptDetailsForm);\n };\n\n return (\n {\n const trueValues = getTrueValues(values);\n const returnInfo = getReturnInfo();\n\n await saveGrossReceiptDetails(trueValues);\n await saveProgressService.saveGrossReceiptsDetails({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueValues,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.GROSS_RECEIPTS_TOTALS);\n }}\n >\n {({ values, dirty, errors, touched }) => (\n \n
\n \n
\n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n
\n \n
\n )}\n \n );\n};\n","import dayjs from \"dayjs\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Form, Formik } from \"formik\";\r\nimport { Button } from \"../../../components/Button/Button\";\r\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\r\nimport { useTitle } from \"../../../providers/Title\";\r\nimport { useProgress } from \"../../../providers/Progress\";\r\nimport { useFiling } from \"../../../providers/Filing\";\r\nimport { useGrossReceipts } from \"../../../providers/GrossReceipts\";\r\nimport { GrossReceiptsTotalsForm } from \"../../../models/grossReceiptsTotalsForm\";\r\nimport { ROUTES } from \"../../../routes/constants\";\r\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\r\nimport { saveProgressService } from \"../../../services/saveProgress\";\r\nimport { useAuth } from \"../../../providers/Authentication\";\r\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { LoadingSpinner } from \"../../../components/LoadingSpinner/LoadingSpinner\";\r\n\r\nexport const GrossReceiptsTotals = () => {\r\n const history = useHistory();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { setCurrentTitle } = useTitle();\r\n const { totals, saveGrossReceiptsTotals, details } = useGrossReceipts();\r\n const { selectedTaxForms, taxForms, yearEndDate, getTaxFormsForYear } = useFiling();\r\n const { accountNumber } = useAuth();\r\n\r\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number, lineItem?: string }[]>([]);\r\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\r\n const [, setError] = useState(0);\r\n const [initialValues, setInitialValues] = useState({});\r\n\r\n useEffect(() => {\r\n let tempInitialValues = {} as GrossReceiptsTotalsForm;\r\n if (taxForms) {\r\n let formsToShow = [] as any;\r\n const lineItems = taxForms\r\n ?.filter(x => Object.keys(selectedTaxForms).indexOf(x.id.toString()) >= 0)\r\n .map(x => ({ ...x, taxFormLineItems: x.taxFormLineItems.map(y => ({ ...y, form: x })) }))\r\n ?.flatMap(x => x.taxFormLineItems)\r\n .filter(x => x.pageId === 0);\r\n\r\n for (let lineItem of lineItems) {\r\n let lineDescription = lineItem.lineNumber + \" - \" + lineItem.description;\r\n formsToShow.push({\r\n label: lineItem.form.name,\r\n id: lineItem.id,\r\n lineItem: lineDescription,\r\n });\r\n }\r\n\r\n // add default value of 0\r\n if (!totals || !Object.keys(totals).length) {\r\n for (let lineItem of lineItems) {\r\n tempInitialValues[lineItem.id] = 0;\r\n }\r\n } else {\r\n tempInitialValues = totals;\r\n const lineItemIds = lineItems.map(x => x.id);\r\n\r\n // remove unnecessary values\r\n Object.keys(tempInitialValues).forEach(lineItem => {\r\n if (lineItemIds!.indexOf(parseInt(lineItem)) < 0) delete tempInitialValues[parseInt(lineItem)];\r\n });\r\n\r\n // add missing values\r\n for (let lineItem of lineItems) {\r\n if (!tempInitialValues[lineItem.id]) {\r\n tempInitialValues[lineItem.id] = 0;\r\n }\r\n }\r\n }\r\n\r\n if (!formsToShow || !formsToShow.length) {\r\n (async () => {\r\n const returnInfo = getReturnInfo();\r\n\r\n await saveGrossReceiptsTotals({});\r\n await saveProgressService.saveGrossReceiptsTotals({\r\n AccountNumber: returnInfo.AccountNumber,\r\n Data: {},\r\n });\r\n })();\r\n\r\n let past: any;\r\n if (history.location.state) {\r\n past = history.location.state;\r\n if (past.from === ROUTES.DEDUCTIONS || past.from === ROUTES.PAYROLL) {\r\n history.push(ROUTES.GROSS_RECEIPT_DETAILS, { from: ROUTES.GROSS_RECEIPTS_TOTALS });\r\n return;\r\n }\r\n }\r\n history.push(ROUTES.DEDUCTIONS, { from: ROUTES.GROSS_RECEIPT_DETAILS });\r\n }\r\n\r\n setInitialValues(tempInitialValues);\r\n setDataEntryRows(formsToShow);\r\n setDataEntryCols([{ label: \"\" }]);\r\n }\r\n }, [taxForms, selectedTaxForms, totals, history]);\r\n\r\n useEffect(() => {\r\n if (!taxForms) {\r\n const year = dayjs(yearEndDate).get(\"year\");\r\n getTaxFormsForYear(year);\r\n }\r\n\r\n setCurrentPage!(\"gross-totals\");\r\n setCurrentTitle!(\"Please Enter Your Total Gross Receipts Into the Table Below:\")\r\n }, [getTaxFormsForYear, setCurrentPage, setCurrentTitle, taxForms, yearEndDate]);\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n history.push(ROUTES.GROSS_RECEIPT_DETAILS);\r\n return;\r\n }\r\n\r\n const getReturnInfo = () => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n\r\n return returnInfo;\r\n };\r\n\r\n const getTrueValues = (values: GrossReceiptsTotalsForm) => {\r\n return Object.keys(values)\r\n .filter(x => values[x as any])\r\n .reduce((acc, item) => ({\r\n ...acc,\r\n [parseInt(item)]: values[item as any],\r\n }), {} as GrossReceiptsTotalsForm);\r\n };\r\n\r\n if (!taxForms && !Object.keys(initialValues).length) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n {Object.keys(initialValues).length > 0 ?\r\n {\r\n const trueValues = getTrueValues(values);\r\n const returnInfo = getReturnInfo();\r\n\r\n await saveGrossReceiptsTotals(trueValues);\r\n await saveProgressService.saveGrossReceiptsTotals({\r\n AccountNumber: returnInfo.AccountNumber,\r\n Data: trueValues,\r\n });\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n\r\n history.push(ROUTES.DEDUCTIONS, { from: ROUTES.GROSS_RECEIPTS_TOTALS });\r\n }}\r\n validate={async (values) => {\r\n const trueItems = getTrueValues(values);\r\n const sum = Object.keys(trueItems).reduce((acc, item) => acc + trueItems[item as any], 0);\r\n const detailSum = Object.keys(details).reduce((acc, item) => acc + details[item as any], 0);\r\n if (sum < detailSum) {\r\n return {\r\n totals: 'The total must be greater than or equal to the sum of the location gross receipts entered on the previous page.',\r\n };\r\n }\r\n }}>\r\n {({ values, dirty, errors, touched }) => (\r\n
\r\n \r\n\r\n \r\n handleGoBack(dirty)}>\r\n Go Back\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n : null}\r\n
\r\n )\r\n};\r\n","import React, { useEffect } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Formik, Form, ErrorMessage } from \"formik\";\r\nimport styles from \"./Payroll.module.scss\";\r\nimport { Button } from \"../../../components/Button/Button\";\r\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\r\nimport { usePayroll } from \"../../../providers/Payroll\";\r\nimport { useProgress } from \"../../../providers/Progress\";\r\nimport { useTitle } from \"../../../providers/Title\";\r\nimport { ROUTES } from \"../../../routes/constants\";\r\nimport { useAuth } from \"../../../providers/Authentication\";\r\nimport { saveProgressService } from \"../../../services/saveProgress\";\r\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { FieldWrapper } from \"../../../components/FieldWrapper/FieldWrapper\";\r\nimport { RadiobuttonField } from \"../../../components/RadiobuttonField/RadiobuttonField\";\r\nimport { ValidationError } from \"../../../components/ValidationError/ValidationError\";\r\n\r\nexport const Payroll = () => {\r\n const history = useHistory();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { setCurrentTitle } = useTitle();\r\n const { hasPayroll, savePayrollResponse } = usePayroll();\r\n const { accountNumber } = useAuth();\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n history.push(ROUTES.DEDUCTIONS, { from: ROUTES.PAYROLL });\r\n return;\r\n };\r\n\r\n useEffect(() => {\r\n setCurrentPage!(\"payroll\");\r\n setCurrentTitle!(\"Do you pay Payroll?\");\r\n }, [setCurrentPage, setCurrentTitle]);\r\n\r\n const getReturninfo = (value: boolean) => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n returnInfo.Payroll = value;\r\n\r\n return returnInfo;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {\r\n if (values.hasPayroll !== null) {\r\n await savePayrollResponse(values.hasPayroll);\r\n\r\n const returnInfo = getReturninfo(values.hasPayroll);\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n }\r\n\r\n if (!!values.hasPayroll) {\r\n history.push(ROUTES.KENTON_PAYROLL);\r\n } else {\r\n history.push(ROUTES.NET_PROFITS);\r\n }\r\n }}\r\n validate={(values) => {\r\n if (values.hasPayroll == null) {\r\n return {\r\n hasPayroll: 'You must select Yes or No.'\r\n }\r\n }\r\n }}\r\n >\r\n {({ values, dirty, setFieldValue }) => (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n handleGoBack(dirty)}>\r\n Go Back\r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n
\r\n )\r\n}\r\n","import React, { useEffect} from \"react\";\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Formik, Form, ErrorMessage } from \"formik\";\r\nimport styles from \"./KentonCountyPayroll.module.scss\";\r\nimport { Button } from \"../../../components/Button/Button\";\r\nimport { ButtonGroup } from '../../../components/ButtonGroup/ButtonGroup';\r\nimport { usePayroll } from '../../../providers/Payroll';\r\nimport { useProgress } from \"../../../providers/Progress\";\r\nimport { useTitle } from '../../../providers/Title';\r\nimport { ROUTES } from '../../../routes/constants';\r\nimport { useAuth } from '../../../providers/Authentication';\r\nimport { SaveReturnInfo } from '../../../models/SaveProgressModels/SaveReturnInfo';\r\nimport { saveProgressService } from '../../../services/saveProgress';\r\nimport { FieldWrapper } from \"../../../components/FieldWrapper/FieldWrapper\";\r\nimport { RadiobuttonField } from \"../../../components/RadiobuttonField/RadiobuttonField\";\r\nimport { ValidationError } from \"../../../components/ValidationError/ValidationError\";\r\n\r\nexport const KentonCountyPayroll = () => {\r\n const history = useHistory();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { setCurrentTitle } = useTitle();\r\n const { hasKentonPayroll, saveKentonPayrollResponse } = usePayroll();\r\n const { accountNumber } = useAuth();\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n history.push(ROUTES.PAYROLL);\r\n return;\r\n };\r\n\r\n\r\n useEffect(() => {\r\n setCurrentPage!(\"kenton-payroll\");\r\n setCurrentTitle!(\"Do you pay Payroll in Kenton County?\");\r\n }, [setCurrentPage, setCurrentTitle]);\r\n\r\n const getReturninfo = (value: boolean) => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n returnInfo.PayrollKentonCounty = value;\r\n\r\n return returnInfo;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {\r\n if (values.hasKentonPayroll !== null) {\r\n await saveKentonPayrollResponse(values.hasKentonPayroll);\r\n\r\n const returnInfo = getReturninfo(values.hasKentonPayroll);\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n }\r\n\r\n if (!!values.hasKentonPayroll) {\r\n history.push(ROUTES.PAYROLL_LOCATIONS);\r\n } else {\r\n history.push(ROUTES.NET_PROFITS);\r\n }\r\n }}\r\n validate={(values) => {\r\n if (values.hasKentonPayroll == null) {\r\n return {\r\n hasKentonPayroll: 'You must select Yes or No.'\r\n }\r\n }\r\n }}\r\n >\r\n {({ values, dirty, setFieldValue }) => (\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n handleGoBack(dirty)}>\r\n Go Back\r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n
\r\n
\r\n );\r\n};\r\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { CheckboxField } from \"../../../components/CheckboxField/CheckboxField\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { useBody } from \"../../../providers/Body\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { usePayroll } from \"../../../providers/Payroll\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport styles from \"./PayrollLocations.module.scss\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\nimport { ValidationError } from \"../../../components/ValidationError/ValidationError\";\nimport { LoadingSpinner } from \"../../../components/LoadingSpinner/LoadingSpinner\";\nimport dayjs from \"dayjs\";\nimport { useFiling } from \"../../../providers/Filing\";\n\nexport const PayrollLocations = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { currentPage, setCurrentPage } = useProgress();\n const { setCurrentBody } = useBody();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, saveSelectedLocations } = usePayroll();\n const { accountNumber } = useAuth();\n const { yearEndDate } = useFiling();\n\n useEffect(() => {\n getAvailableLocations(dayjs(yearEndDate).year());\n setCurrentPage!(\"payroll-locations\");\n setCurrentTitle!(\"In what Kenton County locations do you pay Payroll?\");\n setCurrentBody!({header: \"\", body: \"\"});\n }, [getAvailableLocations, setCurrentBody, setCurrentPage, setCurrentTitle]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n history.push(ROUTES.KENTON_PAYROLL);\n return;\n }\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n return (\n
\n
\n {availableLocations === undefined ? (\n \n )\n :\n {\n // get the true values\n const trueLocations = Object.fromEntries(Object.entries(values).filter(([key, val]) => !!val));\n await saveSelectedLocations(trueLocations);\n\n const returnInfo = getReturnInfo();\n await saveProgressService.savePayrollLocations({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueLocations,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.PAYROLL_TOTALS);\n }}\n validate={(values) => {\n const trueLocations = Object.fromEntries(Object.entries(values).filter(([key, val]) => !!val));\n\n if (!Object.keys(trueLocations).length) {\n return {\n oneRequired: \"You must select at least one location.\"\n };\n }\n }}\n >\n {({ values, dirty, errors }) => (\n
\n
\n {availableLocations.map(city => {\n let key = `${city.id}`;\n return (\n \n )\n })}\n \n \n {(errors as any).oneRequired}\n \n
\n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n
\n )}\n \n }\n
\n
\n )\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Form, Formik } from \"formik\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { usePayroll } from \"../../../providers/Payroll\";\nimport { PayrollTotalsByLocationForm } from \"../../../models/payrollTotalsByLocationForm\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\nimport dayjs from \"dayjs\";\nimport { useFiling } from \"../../../providers/Filing\";\n\nexport const PayrollTotalsByLocation = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { currentPage, setCurrentPage } = useProgress();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, payrollTotalsByLocation, savePayrollTotalsByLocation } = usePayroll();\n const { accountNumber } = useAuth();\n const { yearEndDate } = useFiling();\n\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number }[]>([]);\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\n const [, setError] = useState(0);\n\n let initialValues = {} as PayrollTotalsByLocationForm;\n if (!payrollTotalsByLocation || !Object.keys(payrollTotalsByLocation).length) {\n for (const location of Object.keys(selectedLocations)) {\n initialValues[parseInt(location)] = 0;\n }\n } else {\n initialValues = payrollTotalsByLocation;\n Object.keys(initialValues).forEach(city => {\n if (!selectedLocations[parseInt(city)]) delete initialValues[parseInt(city)];\n });\n for (const location of Object.keys(selectedLocations)) {\n if (!initialValues[parseInt(location)]) {\n initialValues[parseInt(location)] = 0;\n }\n }\n }\n\n useEffect(() => {\n if (availableLocations) {\n setDataEntryRows(availableLocations.filter(x => Object.keys(selectedLocations).indexOf(x.id.toString()) > -1).map(location => {\n return {\n label: location.name,\n id: location.id,\n }\n }));\n }\n\n setDataEntryCols([{ label: \"\" }]);\n }, [availableLocations, selectedLocations]);\n\n useEffect(() => {\n if (!availableLocations) {\n getAvailableLocations(dayjs(yearEndDate).year());\n }\n\n setCurrentPage!(\"payroll-totals\");\n setCurrentTitle!(\"Please Enter Your Payroll Expenses by Location\")\n }, [availableLocations, getAvailableLocations, setCurrentPage, setCurrentTitle]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n history.push(ROUTES.PAYROLL_LOCATIONS);\n return;\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n const getTrueValues = (values: PayrollTotalsByLocationForm) => {\n return Object.keys(values)\n .filter(x => values[x as any])\n .reduce((acc, item) => ({\n ...acc,\n [parseInt(item)]: values[item as any],\n }), {} as PayrollTotalsByLocationForm);\n };\n\n return (\n
\n {\n const trueValues = getTrueValues(values);\n const returnInfo = getReturnInfo();\n\n await savePayrollTotalsByLocation(trueValues);\n await saveProgressService.savePayrollDetails({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueValues,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.PAYROLL_EXPENSE);\n }}>\n {({ values, dirty, errors, touched }) => (\n
\n \n\n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n \n )}\n \n
\n );\n};\n","import dayjs from \"dayjs\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Form, Formik } from \"formik\";\r\nimport { Button } from \"../../../components/Button/Button\";\r\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\r\nimport { useTitle } from \"../../../providers/Title\";\r\nimport { useProgress } from \"../../../providers/Progress\";\r\nimport { useFiling } from \"../../../providers/Filing\";\r\nimport { usePayroll } from \"../../../providers/Payroll\";\r\nimport { PayrollExpenseForm } from \"../../../models/payrollExpenseForm\";\r\nimport { ROUTES } from \"../../../routes/constants\";\r\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\r\nimport { useAuth } from \"../../../providers/Authentication\";\r\nimport { saveProgressService } from \"../../../services/saveProgress\";\r\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { LoadingSpinner } from \"../../../components/LoadingSpinner/LoadingSpinner\";\r\n\r\nexport const PayrollExpense = () => {\r\n const history = useHistory();\r\n const { setCurrentTitle } = useTitle();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { selectedTaxForms, taxForms, yearEndDate, getTaxFormsForYear } = useFiling();\r\n const { totalPayrollExpense, saveTotalPayrollExpense, payrollTotalsByLocation } = usePayroll();\r\n const { accountNumber } = useAuth();\r\n\r\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number, lineItem?: string }[]>([]);\r\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\r\n const [, setError] = useState(0);\r\n const [initialValues, setInitialValues] = useState({});\r\n\r\n useEffect(() => {\r\n let tempInitialValues = {} as PayrollExpenseForm;\r\n if (taxForms) {\r\n let formsToShow = [] as any;\r\n const lineItems = taxForms\r\n ?.filter(x => Object.keys(selectedTaxForms).indexOf(x.id.toString()) >= 0)\r\n .map(x => ({ ...x, taxFormLineItems: x.taxFormLineItems.map(y => ({ ...y, form: x })) }))\r\n ?.flatMap(x => x.taxFormLineItems)\r\n .filter(x => x.pageId === 1);\r\n\r\n for (let lineItem of lineItems) {\r\n let lineDescription = lineItem.lineNumber + \" - \" + lineItem.description;\r\n formsToShow.push({\r\n label: lineItem.form.name,\r\n id: lineItem.id,\r\n lineItem: lineDescription,\r\n });\r\n }\r\n\r\n // add default value of 0\r\n if (!totalPayrollExpense || !Object.keys(totalPayrollExpense).length) {\r\n for (let lineItem of lineItems) {\r\n tempInitialValues[lineItem.id] = 0;\r\n }\r\n } else {\r\n tempInitialValues = totalPayrollExpense;\r\n const lineItemIds = lineItems.map(x => x.id);\r\n\r\n // remove unnecessary values\r\n Object.keys(tempInitialValues).forEach(lineItem => {\r\n if (lineItemIds!.indexOf(parseInt(lineItem)) < 0) delete tempInitialValues[parseInt(lineItem)];\r\n });\r\n\r\n // add missing values\r\n for (let lineItem of lineItems) {\r\n if (!tempInitialValues[lineItem.id]) {\r\n tempInitialValues[lineItem.id] = 0;\r\n }\r\n }\r\n }\r\n\r\n if (!formsToShow || !formsToShow.length) {\r\n (async () => {\r\n const returnInfo = getReturnInfo();\r\n\r\n await saveTotalPayrollExpense({});\r\n await saveProgressService.savePayrollTotals({\r\n AccountNumber: returnInfo.AccountNumber,\r\n Data: {},\r\n });\r\n })();\r\n\r\n if (history.location.state) {\r\n const past: any = history.location.state;\r\n if (past.from === ROUTES.NET_PROFITS) {\r\n history.push(ROUTES.PAYROLL_TOTALS, { from: ROUTES.NET_PROFITS });\r\n return;\r\n }\r\n }\r\n history.push(ROUTES.NET_PROFITS, { from: ROUTES.PAYROLL_TOTALS });\r\n }\r\n\r\n setInitialValues(tempInitialValues);\r\n setDataEntryRows(formsToShow);\r\n setDataEntryCols([{ label: \"\" }]);\r\n }\r\n }, [taxForms, selectedTaxForms, totalPayrollExpense, history]);\r\n\r\n useEffect(() => {\r\n if (!taxForms) {\r\n const year = dayjs(yearEndDate).get(\"year\");\r\n getTaxFormsForYear(year);\r\n }\r\n\r\n setCurrentPage!(\"payroll-expense\");\r\n setCurrentTitle!(\"Please enter your total Payroll Expense:\");\r\n }, [getTaxFormsForYear, setCurrentPage, setCurrentTitle, taxForms, yearEndDate]);\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n history.push(ROUTES.PAYROLL_TOTALS);\r\n return;\r\n }\r\n\r\n const getReturnInfo = () => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n\r\n return returnInfo;\r\n };\r\n\r\n const getTrueValues = (values: PayrollExpenseForm) => {\r\n return Object.keys(values)\r\n .filter(x => values[x as any])\r\n .reduce((acc, item) => ({\r\n ...acc,\r\n [parseInt(item)]: values[item as any],\r\n }), {} as PayrollExpenseForm);\r\n };\r\n\r\n if (!taxForms && !Object.keys(initialValues).length) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n {Object.keys(initialValues).length > 0 ?\r\n {\r\n const trueValues = getTrueValues(values);\r\n const returnInfo = getReturnInfo();\r\n\r\n await saveTotalPayrollExpense(trueValues);\r\n await saveProgressService.savePayrollTotals({\r\n AccountNumber: returnInfo.AccountNumber,\r\n Data: trueValues,\r\n });\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n\r\n history.push(ROUTES.NET_PROFITS);\r\n }}\r\n \r\n validate={async (values) => {\r\n const trueItems = getTrueValues(values);\r\n const sum = Object.keys(trueItems).reduce((acc, item) => acc + trueItems[item as any], 0);\r\n const detailSum = Object.keys(payrollTotalsByLocation).reduce((acc, item) => acc + payrollTotalsByLocation[item as any], 0);\r\n if (sum < detailSum) {\r\n return {\r\n '': 'The total must be greater than or equal to the sum of the location payroll amounts entered on the previous page.',\r\n };\r\n }\r\n }}>\r\n {({ values, dirty, errors, touched }) => (\r\n
\r\n \r\n\r\n \r\n handleGoBack(dirty)}>\r\n Go Back\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n : null}\r\n
\r\n );\r\n};\r\n","import dayjs from \"dayjs\";\nimport React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Form, Formik } from \"formik\";\nimport { Button } from \"../../components/Button/Button\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport { DataEntryTable } from \"../../components/DataEntryTable/DataEntryTable\";\nimport { NetProfitsForm } from \"../../models/netProfitsForm\";\nimport { useBody } from \"../../providers/Body\";\nimport { useFiling } from \"../../providers/Filing\";\nimport { useLocations } from \"../../providers/Locations\";\nimport { useNetProfits } from \"../../providers/NetProfits\";\nimport { usePayroll } from \"../../providers/Payroll\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { useTitle } from \"../../providers/Title\";\nimport { ROUTES } from \"../../routes/constants\";\nimport { useAuth } from \"../../providers/Authentication\";\nimport { saveProgressService } from \"../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../models/SaveProgressModels/SaveReturnInfo\";\nimport { LoadingSpinner } from \"../../components/LoadingSpinner/LoadingSpinner\";\n\nexport const NetProfits = () => {\n const history = useHistory();\n const { currentPage, setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedTaxForms, taxForms, yearEndDate, getTaxFormsForYear } = useFiling();\n const { hasPayroll, hasKentonPayroll } = usePayroll();\n const { netProfitsForm, saveNetProfitsForm } = useNetProfits();\n const { accountNumber } = useAuth();\n\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number, lineItem?: string }[]>([]);\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string, info?: string }[]>([]);\n const [, setError] = useState(0);\n const [initialValues, setInitialValues] = useState({});\n\n useEffect(() => {\n let tempInitialValues = {} as NetProfitsForm;\n if (taxForms) {\n let formsToShow = [] as any;\n const lineItems = taxForms\n ?.filter(x => Object.keys(selectedTaxForms).indexOf(x.id.toString()) >= 0)\n .map(x => ({ ...x, taxFormLineItems: x.taxFormLineItems.map(y => ({ ...y, form: x })) }))\n ?.flatMap(x => x.taxFormLineItems)\n .filter(x => x.pageId === 2);\n\n // remove redundant line items for things covered under form 1041\n if (lineItems.map(x => x.form.name).indexOf(\"1041 - U.S. Income Tax Return for Estates and Trusts\") > -1) {\n //4797 - Sales of Business Property\n const form4797LineItems = lineItems.filter(x => x.form.name === \"4797 - Sales of Business Property\");\n for (let li of form4797LineItems) {\n lineItems.splice(lineItems.indexOf(li), 1);\n }\n\n //Schedule D (Form 1040) - Capital Gains and Losses\n const schedDLineItems = lineItems.filter(x => x.form.name === \"Schedule D (Form 1040) - Capital Gains and Losses\");\n for (let li of schedDLineItems) {\n lineItems.splice(lineItems.indexOf(li), 1);\n }\n\n //Schedule E (Form 1040) - Supplemental Income and Loss (From rental real estate, royalties, partnerships, S corporations, estates, trusts, REMICs, etc.)\n const schedELineItems = lineItems.filter(x => x.form.name === \"Schedule E (Form 1040) - Supplemental Income and Loss (From rental real estate, royalties, partnerships, S corporations, estates, trusts, REMICs, etc.)\");\n for (let li of schedELineItems) {\n lineItems.splice(lineItems.indexOf(li), 1);\n }\n\n //Schedule F - Profit or Loss from Farming\n const schedFLineItems = lineItems.filter(x => x.form.name === \"Schedule F - Profit or Loss from Farming\");\n for (let li of schedFLineItems) {\n lineItems.splice(lineItems.indexOf(li), 1);\n }\n }\n\n for (let lineItem of lineItems) {\n let lineDescription = lineItem.lineNumber + \" - \" + lineItem.description;\n formsToShow.push({\n label: lineItem.form.name,\n id: lineItem.id,\n lineItem: lineDescription,\n });\n }\n\n if (formsToShow.length <= 0) {\n let past: any;\n if (history.location.state) {\n past = history.location.state;\n if (past.from === ROUTES.ADDITIONS) {\n if (hasKentonPayroll) {\n history.push(ROUTES.PAYROLL_EXPENSE);\n } else if (hasPayroll) {\n history.push(ROUTES.KENTON_PAYROLL);\n }\n\n history.push(ROUTES.PAYROLL, { from: past.from });\n return;\n }\n }\n history.push(ROUTES.ADDITIONS);\n }\n\n // add default value of 0\n if (!netProfitsForm || !Object.keys(netProfitsForm).length) {\n for (let lineItem of lineItems) {\n tempInitialValues[lineItem.id] = 0;\n }\n } else {\n tempInitialValues = netProfitsForm;\n const lineItemIds = lineItems.map(x => x.id);\n\n // remove unnecessary values\n Object.keys(tempInitialValues).forEach(lineItem => {\n if (lineItemIds!.indexOf(parseInt(lineItem)) < 0) delete tempInitialValues[parseInt(lineItem)];\n });\n\n // add missing values\n for (let lineItem of lineItems) {\n if (!tempInitialValues[lineItem.id]) {\n tempInitialValues[lineItem.id] = 0;\n }\n }\n }\n\n setInitialValues(tempInitialValues);\n setDataEntryRows(formsToShow);\n setDataEntryCols([\n { label: \"\" }\n ]);\n }\n }, [taxForms, selectedTaxForms, netProfitsForm, hasPayroll, hasKentonPayroll, history]);\n\n useEffect(() => {\n if (!availableLocations) {\n getAvailableLocations(dayjs(yearEndDate).year());\n }\n\n if (!taxForms) {\n const year = dayjs(yearEndDate).get(\"year\");\n getTaxFormsForYear(year);\n }\n\n setCurrentPage!(\"netprofits\");\n setCurrentTitle!(\"Please enter your Net Profits\");\n setCurrentBody!({ header: \"\", body: \"\" });\n }, [\n availableLocations,\n getAvailableLocations,\n getTaxFormsForYear,\n setCurrentBody,\n setCurrentPage,\n setCurrentTitle,\n taxForms,\n yearEndDate\n ]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n\n if (history.location.state) {\n const past = history.location.state as any;\n if (past && past.from && past.from !== ROUTES.ADDITIONS) {\n history.push(past.from);\n return;\n }\n }\n \n if (hasKentonPayroll) {\n history.push(ROUTES.PAYROLL_TOTALS);\n } else if (hasPayroll) {\n history.push(ROUTES.KENTON_PAYROLL);\n } else {\n history.push(ROUTES.PAYROLL);\n }\n return;\n }\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n const getTrueValues = (values: NetProfitsForm) => {\n return Object.keys(values)\n .filter(x => values[x as any])\n .reduce((acc, item) => ({\n ...acc,\n [parseInt(item)]: values[item as any],\n }), {} as NetProfitsForm);\n };\n\n if (!taxForms && !Object.keys(initialValues).length) {\n return (\n \n )\n }\n\n return (\n
\n {Object.keys(initialValues).length ?\n {\n const trueValues = getTrueValues(values);\n const returnInfo = getReturnInfo();\n\n await saveNetProfitsForm(trueValues);\n await saveProgressService.saveNetProfits({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueValues,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.ADDITIONS);\n }}>\n {({ values, dirty, errors, touched }) => (\n
\n \n\n \n handleGoBack(dirty)}>\n Go Back\n \n <>   \n \n \n \n )}\n \n : null}\n
\n );\n};\n","import React from 'react';\r\nimport styles from './Yesnogroup.module.scss';\r\n\r\nexport interface YesnogroupProps {\r\n style?: object;\r\n children: JSX.Element[] | JSX.Element;\r\n}\r\n\r\n\r\nexport const Yesnogroup = ({children, ...rest}: YesnogroupProps) => {\r\n\r\n return (\r\n
\r\n {children}\r\n
\r\n );\r\n};\r\n","import React, { useEffect} from \"react\";\r\nimport { Formik, Form } from \"formik\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Button } from \"../../../components/Button/Button\";\r\nimport { CheckboxField } from \"../../../components/CheckboxField/CheckboxField\";\r\nimport { useTitle } from \"../../../providers/Title\";\r\nimport { useProgress } from \"../../../providers/Progress\";\r\nimport { useRent } from \"../../../providers/Rent\";\r\nimport { ROUTES } from \"../../../routes/constants\";\r\n\r\nimport styles from \"./RentPaid.module.scss\";\r\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\r\nimport { ValidationError } from \"../../../components/ValidationError/ValidationError\";\r\nimport { Yesnogroup } from \"../../../components/YesNoGroup/Yesnogroup\";\r\nimport { saveProgressService } from \"../../../services/saveProgress\";\r\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { useAuth } from \"../../../providers/Authentication\";\r\n\r\nexport const RentPaid = () => {\r\n const history = useHistory();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { setCurrentTitle } = useTitle();\r\n const { rentIsPaid, saveRentPaidResponse } = useRent();\r\n const { accountNumber } = useAuth();\r\n\r\n let displayErrMsg = false;\r\n let hasValueSelected = rentIsPaid !== undefined;\r\n\r\n let initialValues = {\r\n rentIsPaid: hasValueSelected ? rentIsPaid : false\r\n };\r\n\r\n useEffect(() => {\r\n setCurrentPage!(\"rentPaid\");\r\n setCurrentTitle!(\"Do you pay rent in Kenton County?\");\r\n }, [setCurrentPage, setCurrentTitle]);\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n history.push(ROUTES.ADDITIONS, { from: ROUTES.RENT_PAID });\r\n return;\r\n };\r\n\r\n const getReturnInfo = (rentIsPaid: boolean) => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n returnInfo.RentPaid = rentIsPaid;\r\n\r\n return returnInfo;\r\n };\r\n\r\n return (\r\n
\r\n
\r\n {(\r\n {\r\n if (hasValueSelected) {\r\n await saveRentPaidResponse(values.rentIsPaid!);\r\n\r\n const returnInfo = getReturnInfo(values.rentIsPaid!);\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n\r\n if (values.rentIsPaid!) {\r\n history.push(ROUTES.RENT_LOCATIONS);\r\n } else {\r\n history.push(ROUTES.REAL_TANGIBLE_LOCATIONS, { from: ROUTES.RENT_PAID });\r\n }\r\n } else {\r\n displayErrMsg = true;\r\n }\r\n }}\r\n >\r\n {({ values, dirty }) => (\r\n
\r\n \r\n \r\n {\r\n values.rentIsPaid = true;\r\n\r\n hasValueSelected = true;\r\n displayErrMsg = false;\r\n }}\r\n />\r\n {\r\n values.rentIsPaid = false;\r\n\r\n hasValueSelected = true;\r\n displayErrMsg = false;\r\n }}\r\n />\r\n \r\n {displayErrMsg ?\r\n \r\n You must select a value.\r\n \r\n : null}\r\n
\r\n \r\n handleGoBack(dirty)}\r\n >\r\n Go Back\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n
\r\n \r\n );\r\n}\r\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Form, Formik } from \"formik\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { useRent } from \"../../../providers/Rent\";\nimport { GrossAnnualRentForm } from \"../../../models/grossAnnualRentForm\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\nimport styles from './GrossAnnualRent.module.scss';\nimport { Content } from \"../../../components/Content/Content\";\nimport dayjs from \"dayjs\";\nimport { useFiling } from \"../../../providers/Filing\";\n\nexport const GrossAnnualRent = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { currentPage, setCurrentPage } = useProgress();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, grossAnnualRentForm, saveGrossAnnualRentForm } = useRent();\n const { accountNumber } = useAuth();\n const { yearEndDate } = useFiling();\n\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number }[]>([]);\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string, info?: string }[]>([]);\n const [, setError] = useState(0);\n\n let initialValues = {} as GrossAnnualRentForm;\n if (!grossAnnualRentForm || !Object.keys(grossAnnualRentForm).length) {\n for (const location of Object.keys(selectedLocations)) {\n initialValues[parseInt(location)] = 0;\n }\n } else {\n initialValues = grossAnnualRentForm;\n Object.keys(initialValues).forEach(city => {\n if (!selectedLocations[parseInt(city)]) delete initialValues[parseInt(city)];\n });\n for (const location of Object.keys(selectedLocations)) {\n if (!initialValues[parseInt(location)]) {\n initialValues[parseInt(location)] = 0;\n }\n }\n }\n\n useEffect(() => {\n if (availableLocations) {\n setDataEntryRows(availableLocations.filter(x => Object.keys(selectedLocations).indexOf(x.id.toString()) > -1).map(location => {\n return {\n label: location.name,\n id: location.id,\n }\n }));\n }\n\n setDataEntryCols([{ label: \"\" }])\n }, [availableLocations, selectedLocations]);\n\n useEffect(() => {\n if (!availableLocations) {\n getAvailableLocations(dayjs(yearEndDate).year());\n }\n\n setCurrentPage!(\"gross-annual\");\n setCurrentTitle!(\"Please Enter Your Gross Annual Rent(s) Paid by Location\");\n }, [availableLocations, getAvailableLocations, setCurrentPage, setCurrentTitle]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n history.push(ROUTES.RENT_LOCATIONS);\n return;\n }\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n const getTrueValues = (values: GrossAnnualRentForm) => {\n return Object.keys(values)\n .filter(x => values[x as any])\n .reduce((acc, item) => ({\n ...acc,\n [parseInt(item)]: values[item as any],\n }), {} as GrossAnnualRentForm);\n };\n\n return (\n
\n
\n

Enter the amount of the net annual rental rate.

\n

The entered amount will be multiplied by eight. Property rented by the taxpayer is valued at\n eight times the net annual rental rate which is the annual rental rate paid by the taxpayer less any\n annual rental rate received by the taxpayer from sub-rentals.\n

\n

Example:

\n

Gross rents paid per month (less sub-rentals) during tax period: $1,500/month

\n

Gross rents multiplied by eight: $12,000

\n

$12,000 reflects the value of the property rented by the taxpayer during tax period.

\n
\n {(\n Object.keys(initialValues).length !== 0 ?\n\n {\n const trueValues = getTrueValues(values);\n const returnInfo = getReturnInfo();\n\n await saveGrossAnnualRentForm(trueValues);\n await saveProgressService.saveGrossAnnualRent({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueValues,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.RENT_TOTAL_GROSS);\n }}>\n {({ values, dirty, errors, touched }) => (\n \n
\n \n\n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n \n
\n )}\n \n\n : null)}\n
\n )\n};\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport { BsBuilding, BsLaptop, BsTruck } from \"react-icons/bs\";\nimport { Modal } from \"../../../components/Modal/Modal\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { CheckboxField } from \"../../../components/CheckboxField/CheckboxField\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { useBody } from \"../../../providers/Body\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useRent } from \"../../../providers/Rent\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { useRealTangible } from \"../../../providers/RealTangible\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport styles from \"./RealTangibleLocations.module.scss\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\nimport { ValidationError } from \"../../../components/ValidationError/ValidationError\";\nimport { LoadingSpinner } from \"../../../components/LoadingSpinner/LoadingSpinner\";\nimport { annualService } from \"../../../services/annualService\";\nimport dayjs from \"dayjs\";\nimport { ReturnType, useFiling } from \"../../../providers/Filing\";\nimport { BusinessLicenseType, useBusinessLicense } from \"../../../providers/BusinessLicense\";\n\nexport const RealTangibleLocations = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n const { currentPage, setCurrentPage } = useProgress();\n const { rentIsPaid } = useRent();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, saveSelectedLocations } = useRealTangible();\n const { accountNumber } = useAuth();\n const { returnType, yearEndDate } = useFiling();\n const { saveSelectedType } = useBusinessLicense();\n\n useEffect(() => {\n getAvailableLocations(dayjs(yearEndDate).year());\n setCurrentPage!(\"real-tangible-locations\");\n setCurrentTitle!(\"In What Kenton County locations Do You Own Real and Tangible Property?\");\n setCurrentBody!({ header: \"\", body: \"\" });\n }, [getAvailableLocations, setCurrentBody, setCurrentPage, setCurrentTitle]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n\n if (history.location.state) {\n const past = history.location.state as any;\n if (past.from) {\n history.push(past.from);\n return;\n }\n } else if (rentIsPaid) {\n history.push(ROUTES.RENT_TOTAL_GROSS);\n } else {\n history.push(ROUTES.RENT_PAID);\n }\n\n return;\n };\n\n const style = {\n color: \"#7DC49E\",\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n return (\n
\n
\n
\n \n What is an example of real and tangible\n property? What forms?\n \n }\n >\n
\n
\n

\n Average Value of Real and Tangible Personal\n Property\n

\n
    \n
  • \n Property owned by the taxpayer is valued\n at its original cost.\n
  • \n
  • \n The average value of property shall be\n determined by averaging the values at\n the beginning and ending of the\n computation period, but the county\n Administrative Officer may require the\n averaging of monthly values during the\n computation period if reasonably\n required to reflect properly the average\n value of the taxpayer’s property.  \n         \n
  • \n
\n
\n
\n

Example:

\n
\n

\n Property Value as of January 1\n st of tax period: $150,000\n

\n

\n Property Value as of December 31\n st of tax period: $185,000\n

\n

\n Average Value of property during tax\n period: $165,000\n

\n
\n
\n\n
\n

\n Gross Annual Rent(s) paid, Multiplied by 8\n

\n
\n
    \n
  • \n Property rented by the taxpayer is\n valued at eight times the net annual\n rental rate which is the annual\n rental rate paid by the taxpayer\n less any annual rental rate received\n by the taxpayer from sub-rentals.\n
  • \n
\n
\n
\n
\n

Example:

\n
\n

\n Gross Rents paid per month (less\n sub-rentals) during tax period: $1,500\n per month\n

\n

\n Gross Rent(s) paid, Multiplied by 8:\n $12,000\n

\n

\n $12,000 reflects the value of the\n property rented by the taxpayer during\n tax period.\n

\n
\n
\n
\n \n\n
\n
\n \n

\n Physical Property\n

\n
\n
\n \n

\n Computers/Phones\n

\n
\n
\n \n

\n Vehicles/Machinery\n

\n
\n
\n
\n {availableLocations === undefined ? (\n \n ) : (\n {\n if (!!values['none' as any]) {\n let returnInfo = getReturnInfo();\n\n await saveSelectedLocations({'none': true} as any);\n await saveProgressService.saveReturnInfo(returnInfo);\n await saveProgressService.saveRealTangilbleProperties({\n AccountNumber: returnInfo.AccountNumber,\n Data: {},\n });\n\n if (returnType !== ReturnType.ActualReturn) {\n history.push(ROUTES.BUSINESS_LICENSE_SELECT, { from: ROUTES.REAL_TANGIBLE_LOCATIONS });\n } else {\n const estimatedIsCountyWide = await annualService.getEstimatedReturnLicenseType(dayjs(yearEndDate).year());\n \n if (!estimatedIsCountyWide.data) {\n history.push(ROUTES.BUSINESS_LICENSE_SELECT, { from: ROUTES.REAL_TANGIBLE_LOCATIONS });\n } else {\n returnInfo.LicenseType = 1;\n \n await saveProgressService.saveReturnInfo(returnInfo);\n saveSelectedType(BusinessLicenseType.Locations);\n \n history.push(ROUTES.ATTACHMENTS, { from: ROUTES.REAL_TANGIBLE_LOCATIONS });\n }\n }\n\n return;\n }\n const trueLocations = Object.fromEntries(Object.entries(values).filter(([key, val]) => !!val));\n await saveSelectedLocations(trueLocations);\n\n const returnInfo = getReturnInfo();\n await saveProgressService.saveRealTangilbleProperties({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueLocations,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.PROPERTY_VALUE_BY_LOCATION);\n }}\n validate={(values) => {\n const trueLocations = Object.fromEntries(Object.entries(values).filter(([key, val]) => !!val));\n\n if (!Object.keys(trueLocations).length) {\n return {\n oneRequired: \"You must select at least one location.\"\n };\n }\n }}\n >\n {({ values, dirty, errors }) => {\n const trueChecks = Object.keys(values).filter(x => x !== 'none').reduce((filtered: any, key) => {\n if (values[key as any]) {\n return [\n ...filtered,\n key,\n ];\n } else {\n return filtered;\n }\n }, []);\n return (\n
\n \n {availableLocations.map((city) => {\n let key = `${city.id}`;\n return (\n \n );\n })}\n \n\n \n {(errors as any).oneRequired}\n \n
\n \n handleGoBack(dirty)}\n >\n Go Back\n \n \n \n \n )\n }\n }\n \n )}\n
\n \n );\n}\n","import React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Form, Formik } from \"formik\";\r\nimport { Button } from \"../../../components/Button/Button\";\r\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\r\nimport { useTitle } from \"../../../providers/Title\";\r\nimport { useBody } from \"../../../providers/Body\";\r\nimport { useProgress } from \"../../../providers/Progress\";\r\nimport { useRealTangible } from \"../../../providers/RealTangible\";\r\nimport { RealTangibleValueForm } from \"../../../models/realTangibleValueForm\";\r\nimport { ROUTES } from \"../../../routes/constants\";\r\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\r\nimport { Content } from \"../../../components/Content/Content\";\r\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { useAuth } from \"../../../providers/Authentication\";\r\nimport { saveProgressService } from \"../../../services/saveProgress\";\r\nimport style from './RealTangibleValue.module.scss';\r\nimport { ReturnType, useFiling } from \"../../../providers/Filing\";\r\nimport { annualService } from \"../../../services/annualService\";\r\nimport dayjs from \"dayjs\";\r\nimport { BusinessLicenseType, useBusinessLicense } from \"../../../providers/BusinessLicense\";\r\n\r\nexport const RealTangibleValue = () => {\r\n const history = useHistory();\r\n const { setCurrentTitle } = useTitle();\r\n const { setCurrentBody } = useBody();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { realTangibleValueForm, saveRealTangibleValueForm, propertyValueByLocationForm } = useRealTangible();\r\n const { accountNumber } = useAuth();\r\n const { returnType, yearEndDate } = useFiling();\r\n const { saveSelectedType } = useBusinessLicense();\r\n\r\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number }[]>([]);\r\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\r\n const [, setError] = useState(0);\r\n\r\n var initialValues = {} as RealTangibleValueForm;\r\n if (!realTangibleValueForm || !Object.keys(realTangibleValueForm).length) {\r\n initialValues[0] = 0;\r\n } else {\r\n initialValues = realTangibleValueForm;\r\n }\r\n\r\n useEffect(() => {\r\n setCurrentPage!(\"real-tangible-value\");\r\n setCurrentTitle!(\"Please Enter Your Average Total Real And Tangible Property Value\");\r\n setCurrentBody!({ header: \"\", body: \"\" });\r\n setDataEntryRows([{ label: \"Total\", id: 0 }]);\r\n setDataEntryCols([{ label: \"\" }]);\r\n }, [setCurrentBody, setCurrentPage, setCurrentTitle]);\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n setCurrentBody!({ header: \"\", body: \"\", });\r\n history.push(ROUTES.PROPERTY_VALUE_BY_LOCATION);\r\n return;\r\n };\r\n\r\n const getReturnInfo = (avgPropertyValue: number) => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n returnInfo.AveragePropertyValue = avgPropertyValue;\r\n\r\n return returnInfo;\r\n };\r\n\r\n const getTrueValues = (values: RealTangibleValueForm) => {\r\n return Object.keys(values)\r\n .filter(x => values[x as any])\r\n .reduce((acc, item) => ({\r\n ...acc,\r\n [parseInt(item)]: values[item as any],\r\n }), {} as RealTangibleValueForm);\r\n };\r\n\r\n return (\r\n
\r\n
\r\n

Here is how to calculate your average property value:

\r\n
\r\n

Property owned by the tax payer is valued at its original cost. The average value is determined by averaging the values at the beginning and ending of the computation period. Please enter the average value of all properties owned by taxpayer.

\r\n

Example:

\r\n

\r\n Property as of January 1st of tax period: $150,000
\r\n Property as of December 31st of tax period: $185,000
\r\n Average value of property during tax period: $165,000
\r\n

\r\n
\r\n
\r\n {Object.keys(initialValues).length !== 0 ? (\r\n {\r\n const trueValues = getTrueValues(values);\r\n let returnInfo = getReturnInfo(values[0]);\r\n\r\n await saveRealTangibleValueForm(trueValues);\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n\r\n setCurrentBody!({ header: \"\", body: \"\" });\r\n\r\n if (returnType !== ReturnType.ActualReturn) {\r\n history.push(ROUTES.BUSINESS_LICENSE_SELECT);\r\n } else {\r\n const estimatedIsCountyWide = await annualService.getEstimatedReturnLicenseType(dayjs(yearEndDate).year());\r\n\r\n if (!estimatedIsCountyWide.data) {\r\n history.push(ROUTES.BUSINESS_LICENSE_SELECT);\r\n } else {\r\n returnInfo.LicenseType = 1;\r\n\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n saveSelectedType(BusinessLicenseType.Locations);\r\n\r\n history.push(ROUTES.ATTACHMENTS, { from: ROUTES.REAL_TANGIBLE_VALUE });\r\n }\r\n }\r\n }}\r\n validate={async (values) => {\r\n const trueItems = getTrueValues(values);\r\n const sum = Object.keys(trueItems).reduce((acc, item) => acc + trueItems[item as any], 0);\r\n const detailSum = Object.keys(propertyValueByLocationForm).reduce((acc, item) => acc + propertyValueByLocationForm[item as any], 0);\r\n if (sum < detailSum) {\r\n return {\r\n totals: 'The total must be greater than or equal to the sum of the location values entered on the previous page.',\r\n };\r\n }\r\n }}\r\n >\r\n {({ values, dirty, errors, touched }) => (\r\n \r\n
\r\n \r\n\r\n \r\n handleGoBack(dirty)}\r\n >\r\n Go Back\r\n \r\n \r\n \r\n \r\n
\r\n )}\r\n \r\n ) : null}\r\n
\r\n );\r\n};\r\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Formik, Form } from \"formik\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { CheckboxField } from \"../../../components/CheckboxField/CheckboxField\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { useBody } from \"../../../providers/Body\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { useRent } from \"../../../providers/Rent\";\nimport { RentLocationsForm } from \"../../../models/rentLocationsForm\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport styles from \"./RentLocations.module.scss\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\nimport { ValidationError } from \"../../../components/ValidationError/ValidationError\";\nimport { LoadingSpinner } from \"../../../components/LoadingSpinner/LoadingSpinner\";\nimport dayjs from \"dayjs\";\nimport { useFiling } from \"../../../providers/Filing\";\n\nexport const RentLocations = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n const { currentPage, setCurrentPage } = useProgress();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, saveSelectedLocations } = useRent();\n const { accountNumber } = useAuth();\n const { yearEndDate } = useFiling();\n\n let initialValues = {} as RentLocationsForm;\n if (selectedLocations && Object.keys(selectedLocations).length) {\n Object.keys(selectedLocations).forEach(location => {\n if (selectedLocations[parseInt(location)] === true) initialValues[parseInt(location)] = true;\n });\n }\n\n useEffect(() => {\n getAvailableLocations(dayjs(yearEndDate).year());\n setCurrentPage!(\"rent-locations\");\n setCurrentTitle!(\"In what Kenton County locations do you pay rent?\");\n setCurrentBody!({ header: \"\", body: \"\" });\n }, [getAvailableLocations, setCurrentBody, setCurrentPage, setCurrentTitle]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n history.push(ROUTES.RENT_PAID);\n return;\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n return (\n
\n
\n {availableLocations === undefined ? (\n \n ) :\n {\n // get the true values\n const trueLocations = Object.fromEntries(Object.entries(values).filter(([key, val]) => !!val));\n await saveSelectedLocations(trueLocations);\n\n const returnInfo = getReturnInfo();\n await saveProgressService.saveRentLocations({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueLocations,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.GROSS_ANNUAL_RENT);\n }}\n validate={(values) => {\n const trueLocations = Object.fromEntries(Object.entries(values).filter(([key, val]) => !!val));\n\n if (!Object.keys(trueLocations).length) {\n return {\n oneRequired: \"You must select at least one location.\"\n };\n }\n }}\n >\n {({ values, dirty, errors }) => (\n
\n
\n {availableLocations.map(city => {\n let key = `${city.id}`;\n return (\n \n )\n })}\n
\n \n {(errors as any).oneRequired}\n \n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n
\n )}\n \n }\n
\n
\n );\n}\n","import dayjs from \"dayjs\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Form, Formik } from \"formik\";\r\nimport { Button } from \"../../../components/Button/Button\";\r\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\r\nimport { useTitle } from \"../../../providers/Title\";\r\nimport { useBody } from \"../../../providers/Body\";\r\nimport { useProgress } from \"../../../providers/Progress\";\r\nimport { useFiling } from \"../../../providers/Filing\";\r\nimport { useRent } from \"../../../providers/Rent\";\r\nimport { ROUTES } from \"../../../routes/constants\";\r\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\r\nimport { useAuth } from \"../../../providers/Authentication\";\r\nimport { saveProgressService } from \"../../../services/saveProgress\";\r\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { RentTotalGrossForm } from \"../../../models/rentTotalGrossForm\";\r\nimport styles from './TotalGrossRental.module.scss';\r\nimport { LoadingSpinner } from \"../../../components/LoadingSpinner/LoadingSpinner\";\r\n\r\nexport const TotalGrossRental = () => {\r\n const history = useHistory();\r\n const { setCurrentTitle } = useTitle();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { setCurrentBody } = useBody();\r\n const { selectedTaxForms, taxForms, yearEndDate, getTaxFormsForYear } = useFiling();\r\n const { rentTotalGross, saveRentTotalGross, grossAnnualRentForm } = useRent();\r\n const { accountNumber } = useAuth();\r\n\r\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number, lineItem?: string }[]>([]);\r\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\r\n const [, setError] = useState(0);\r\n const [initialValues, setInitialValues] = useState({});\r\n\r\n useEffect(() => {\r\n let tempInitialValues = {} as RentTotalGrossForm;\r\n if (taxForms) {\r\n let formsToShow = [] as any;\r\n const lineItems = taxForms\r\n ?.filter(x => Object.keys(selectedTaxForms).indexOf(x.id.toString()) >= 0)\r\n .map(x => ({ ...x, taxFormLineItems: x.taxFormLineItems.map(y => ({ ...y, form: x })) }))\r\n ?.flatMap(x => x.taxFormLineItems)\r\n .filter(x => x.pageId === 3);\r\n\r\n for (let lineItem of lineItems) {\r\n let lineDescription = lineItem.lineNumber + \" - \" + lineItem.description;\r\n formsToShow.push({\r\n label: lineItem.form.name,\r\n id: lineItem.id,\r\n lineItem: lineDescription,\r\n });\r\n }\r\n\r\n // add default value of 0\r\n if (!rentTotalGross || !Object.keys(rentTotalGross).length) {\r\n for (let lineItem of lineItems) {\r\n tempInitialValues[lineItem.id] = 0;\r\n }\r\n } else {\r\n tempInitialValues = rentTotalGross;\r\n const lineItemIds = lineItems.map(x => x.id);\r\n\r\n // remove unnecessary values\r\n Object.keys(tempInitialValues).forEach(lineItem => {\r\n if (lineItemIds!.indexOf(parseInt(lineItem)) < 0) delete tempInitialValues[parseInt(lineItem)];\r\n });\r\n\r\n // add missing values\r\n for (let lineItem of lineItems) {\r\n if (!tempInitialValues[lineItem.id]) {\r\n tempInitialValues[lineItem.id] = 0;\r\n }\r\n }\r\n }\r\n\r\n if (!formsToShow || !formsToShow.length) {\r\n (async () => {\r\n const returnInfo = getReturnInfo();\r\n\r\n await saveRentTotalGross({});\r\n await saveProgressService.saveRentTotals({\r\n AccountNumber: returnInfo.AccountNumber,\r\n Data: {},\r\n });\r\n })();\r\n\r\n history.push(ROUTES.REAL_TANGIBLE_LOCATIONS, { from: ROUTES.GROSS_ANNUAL_RENT });\r\n }\r\n\r\n setInitialValues(tempInitialValues);\r\n setDataEntryRows(formsToShow);\r\n setDataEntryCols([{ label: \"\" }])\r\n }\r\n }, [taxForms, selectedTaxForms, rentTotalGross, history]);\r\n\r\n useEffect(() => {\r\n if (!taxForms) {\r\n const year = dayjs(yearEndDate).get(\"year\");\r\n getTaxFormsForYear(year);\r\n }\r\n\r\n setCurrentPage!(\"rent-total-gross\");\r\n setCurrentTitle!(\"Please Enter Your Total Gross Rent(s) Paid\");\r\n setCurrentBody!({ header: \"\", body: \"\" });\r\n }, [getTaxFormsForYear, setCurrentBody, setCurrentPage, setCurrentTitle, taxForms, yearEndDate]);\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n setCurrentBody!({ header: \"\", body: \"\" });\r\n\r\n if (history.location.state) {\r\n const past = history.location.state as any;\r\n if (past.from) {\r\n history.push(past.from);\r\n return;\r\n }\r\n } else {\r\n history.push(ROUTES.GROSS_ANNUAL_RENT);\r\n return;\r\n }\r\n }\r\n\r\n const getReturnInfo = () => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n\r\n return returnInfo;\r\n };\r\n\r\n const getTrueValues = (values: RentTotalGrossForm) => {\r\n return Object.keys(values)\r\n .filter(x => values[x as any])\r\n .reduce((acc, item) => ({\r\n ...acc,\r\n [parseInt(item)]: values[item as any],\r\n }), {} as RentTotalGrossForm);\r\n };\r\n\r\n if (!taxForms && !Object.keys(initialValues).length) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n
\r\n
\r\n

Enter the annual net amount of the taxpayers total gross rental paid.

\r\n

The entered amount will be multiplied by eight. Property rented by the taxpayer is valued at \r\n eight times the net annual rental rate which is the annual rental rate paid by the taxpayer less any\r\n annual rental rate received by the taxpayer from sub-rentals.\r\n

\r\n

Example:

\r\n

Gross rents paid per month (less sub-rentals) during tax period: $1,500/month

\r\n

Gross rents multiplied by eight: $12,000

\r\n

$12,000 reflects the value of the property rented by the taxpayer during tax period.

\r\n
\r\n {Object.keys(initialValues).length > 0 ?\r\n {\r\n const trueValues = getTrueValues(values);\r\n const returnInfo = getReturnInfo();\r\n\r\n await saveRentTotalGross(trueValues);\r\n await saveProgressService.saveRentTotals({\r\n AccountNumber: returnInfo.AccountNumber,\r\n Data: values,\r\n });\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n\r\n history.push(ROUTES.REAL_TANGIBLE_LOCATIONS);\r\n setCurrentBody!({ header: \"\", body: \"\" });\r\n }}\r\n validate={async (values) => {\r\n const trueItems = Object.keys(values).filter(x => values[x as any]).reduce((acc, item) => ({\r\n ...acc,\r\n [parseInt(item)]: values[item as any],\r\n }), {} as RentTotalGrossForm);\r\n\r\n const sum = Object.keys(trueItems).reduce((acc, item) => acc + trueItems[item as any], 0);\r\n const detailSum = Object.keys(grossAnnualRentForm).reduce((acc, item) => acc + grossAnnualRentForm[item as any], 0);\r\n if (sum < detailSum) {\r\n return {\r\n totals: 'The total must be greater than or equal to the sum of the location rent amounts entered on the previous page.',\r\n };\r\n }\r\n }}>\r\n {({ values, dirty, errors, touched }) => (\r\n
\r\n \r\n\r\n \r\n handleGoBack(dirty)}>\r\n Go Back\r\n \r\n \r\n \r\n \r\n )}\r\n \r\n : null}\r\n
\r\n )\r\n};\r\n","import { PastReturn } from \"../models/pastFiledModel\";\r\nimport { ApiResponse, AxiosService } from \"./axiosService\";\r\n\r\nexport class PastReturnsService extends AxiosService {\r\n public constructor() { super(); }\r\n\r\n async getPastReturns(accountNumber: string, year: number) {\r\n try {\r\n const { data } = await this.axios.get>(`/PastReturns?accountNumber=${accountNumber}&year=${year}`);\r\n return data;\r\n }\r\n catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n}\r\n\r\nexport const pastReturnsService = new PastReturnsService();\r\n","import React, { createContext, useCallback, useContext, useMemo, useState } from \"react\";\nimport { PastReturn } from \"../models/pastFiledModel\";\nimport { pastReturnsService } from \"../services/pastReturnsService\";\n\ninterface PastReturnsContextType {\n pastReturn?: PastReturn,\n error?: Error;\n isLoading: boolean;\n\n getPastReturn: (accountNumber: string, year: number) => void;\n}\n\nexport const PastReturnContext = createContext({} as any);\n\nexport interface PastReturnContextProps {\n children: JSX.Element | JSX.Element[];\n}\n\nexport const PastReturnProvider = (props: PastReturnContextProps) => {\n const [error, setError] = useState();\n const [isLoading, setIsLoading] = useState(false);\n const [pastReturn, setPastReturns] = useState();\n\n const getPastReturn = useCallback(async (accountNumber: string, year: number) => {\n try {\n setIsLoading(true);\n const response = await pastReturnsService.getPastReturns(accountNumber, year);\n setPastReturns(response.data);\n setIsLoading(false);\n } catch (e) {\n setError(e as Error);\n setIsLoading(false);\n throw e;\n }\n }, [setIsLoading, setPastReturns, setError]);\n\n const values = useMemo(\n () => ({\n error,\n isLoading,\n pastReturn,\n\n getPastReturn\n }),\n [\n error,\n isLoading,\n pastReturn,\n\n getPastReturn\n ]\n );\n\n return \n {props.children}\n \n};\n\nexport const usePastReturn = () => {\n const context = useContext(PastReturnContext);\n\n if (context === undefined) {\n throw new Error(\"usePastReturns must be used within a PastReturnProvider component.\");\n }\n\n return context;\n}\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button } from \"../../components/Button/Button\";\nimport { FieldWrapper } from \"../../components/FieldWrapper/FieldWrapper\";\nimport { useTitle } from \"../../providers/Title\";\nimport { useBody } from \"../../providers/Body\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { ROUTES } from \"../../routes/constants\";\nimport { usePastReturn } from \"../../providers/pastFiled\";\nimport \"./ExtensionFiled.module.scss\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport { useAuth } from \"../../providers/Authentication\";\nimport { useFiling } from \"../../providers/Filing\";\nimport dayjs from \"dayjs\";\nimport { LoadingSpinner } from \"../../components/LoadingSpinner/LoadingSpinner\";\n\nexport const ExtensionsFiled = () => {\n const history = useHistory();\n const { setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n const { getPastReturn, pastReturn } = usePastReturn();\n const { accountNumber } = useAuth();\n const { yearEndDate } = useFiling();\n\n useEffect(() => {\n getPastReturn(accountNumber!, dayjs(yearEndDate).year());\n setCurrentPage!(\"extension-filed\");\n setCurrentTitle!(\"Amount Paid on Estimated Return\");\n setCurrentBody!({ header: \"\", body: \"\" });\n }, [setCurrentBody, setCurrentPage, setCurrentTitle, accountNumber, getPastReturn, yearEndDate]);\n\n const handleGoBack = () => {\n setCurrentBody!({ header: \"\", body: \"\" });\n\n if (history.location.state) {\n const past = history.location.state as any;\n if (past.from && past.from !== ROUTES.REVIEW) {\n history.push(past.from);\n return;\n }\n }\n\n history.push(ROUTES.ATTACHMENTS);\n return;\n };\n\n const formatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2\n });\n\n const formatDate = (entryDate: Date) => {\n const date = new Date(entryDate);\n const options: Intl.DateTimeFormatOptions = { year: 'numeric', month: '2-digit', day: '2-digit' };\n const formattedDate: string = date.toLocaleDateString(undefined, options);\n return formattedDate\n }\n\n return (\n
\n {pastReturn === undefined ? (\n \n ) : pastReturn.exists ?\n <>\n
\n

Previous extension payments will be credited toward your final amount due.

\n

Please review the amounts below.

\n

If this information is not correct please call (859) 392-1440 or email business.services@kentoncounty.org.

\n
\n
\n {pastReturn.confirmationNumber !== null &&\n

\n Confirmation Number: {pastReturn.confirmationNumber}\n

}\n

\n Date Submitted: {formatDate(pastReturn.entryDate)}\n

\n

\n Tax Paid: {formatter.format(pastReturn.taxPaid)}\n

\n

\n License Fee Paid: {formatter.format(pastReturn.licenseFeePaid)}\n

\n

\n Total Paid: {formatter.format(pastReturn.taxPaid + pastReturn.licenseFeePaid)}\n

\n
\n \n : <>\n

No extension found on file.

\n

If this is not correct please call (859) 392-1440 or email business.services@kentoncounty.org.

\n \n }\n\n \n \n handleGoBack()}\n >\n Go Back\n \n \n \n \n
\n );\n};\n","import React from 'react';\r\nimport styles from './ReviewForm.module.scss';\r\n\r\nexport interface ReviewFormProps {\r\n style?: object;\r\n children?: JSX.Element[] | JSX.Element;\r\n data: object;\r\n totalBy:string;\r\n availableLocations: any;\r\n totalOnClick: () => void;\r\n detailsOnClick: () => void;\r\n calcTotal?: boolean;\r\n}\r\n\r\nconst formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n});\r\n\r\nexport const ReviewForm = ({children, availableLocations, totalBy, data, totalOnClick, detailsOnClick, calcTotal = true, ...rest}: ReviewFormProps) => {\r\n\r\n let columns: any | undefined;\r\n let rows = Object.keys(data);\r\n let cells = Object.values(data);\r\n let sum = 0;\r\n\r\n if (typeof Object.values(data)[0] === 'object' && Object.values(data)[0]){\r\n columns = Object.keys(Object.values(data)[0]);\r\n let values: any[] = [];\r\n cells.forEach(x => {\r\n Object.values(x).forEach((y:any) => values.push(parseFloat(y)))\r\n })\r\n\r\n sum = values.reduce((partialSum, a) => partialSum + parseInt(a), 0);\r\n } else {\r\n sum = cells.reduce((partialSum, a) => partialSum + parseInt(a), 0);\r\n }\r\n\r\n return (\r\n
\r\n {calcTotal ?\r\n
\r\n
Total:
\r\n
{formatter.format(sum)}
\r\n
Edit
\r\n
\r\n : null}\r\n
\r\n
\r\n By {totalBy}: \r\n
Edit
\r\n
\r\n \r\n \r\n {(columns !== undefined) ?\r\n \r\n \r\n {\r\n columns.map((x:any)=> {\r\n return(\r\n \r\n )})\r\n }\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n {rows.map((rowTitle : any, index) => {\r\n let rowData = cells[index];\r\n\r\n return(\r\n \r\n \r\n {\r\n (columns !== undefined) ?\r\n columns.map((x: any, cellIndex:number) => {\r\n let ammount = rowData[x];\r\n return(\r\n )\r\n })\r\n :\r\n \r\n }\r\n \r\n )})}\r\n \r\n
\r\n
\r\n
\r\n {x}\r\n
\r\n
\r\n
\r\n { rowTitle }\r\n \r\n { ammount ? formatter.format(ammount) : formatter.format(0) }\r\n \r\n { formatter.format(rowData) }\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React from 'react';\r\nimport styles from './PrintReviewForm.module.scss';\r\n\r\nexport interface ReviewFormProps {\r\n style?: object;\r\n children?: JSX.Element[] | JSX.Element;\r\n data: object;\r\n totalBy:string;\r\n availableLocations: any;\r\n title: string;\r\n}\r\n\r\nconst formatter = new Intl.NumberFormat('en-US', {\r\n style: 'currency',\r\n currency: 'USD'\r\n});\r\n\r\nexport const PrintReviewForm = ({children, availableLocations, totalBy, data, title, ...rest}: ReviewFormProps) => {\r\n\r\n let columns: any | undefined;\r\n let rows = Object.keys(data);\r\n let cells = Object.values(data);\r\n let sum = 0;\r\n\r\n if(typeof Object.values(data)[0] === 'object' && Object.values(data)[0]){\r\n columns = Object.keys(Object.values(data)[0]);\r\n let values: any[] = [];\r\n cells.forEach(x => {\r\n Object.values(x).forEach((y:any) => values.push(parseFloat(y)))\r\n })\r\n\r\n sum = values.reduce((partialSum, a) => partialSum + parseInt(a), 0);\r\n }\r\n else{\r\n sum = cells.reduce((partialSum, a) => partialSum + parseInt(a), 0);\r\n }\r\n\r\n return (\r\n
\r\n

{title}

\r\n
\r\n
Total:
\r\n
{formatter.format(sum)}
\r\n
\r\n
\r\n
\r\n By {totalBy}: \r\n
\r\n \r\n \r\n {(columns !== undefined) ?\r\n \r\n \r\n {\r\n columns.map((x:any)=> {\r\n return(\r\n \r\n )})\r\n }\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n {rows.map((rowTitle : any, index) => {\r\n let rowData = cells[index];\r\n\r\n return(\r\n \r\n \r\n {\r\n (columns !== undefined) ?\r\n columns.map((x: any, cellIndex:number) => {\r\n let ammount = rowData[x];\r\n return(\r\n )\r\n })\r\n :\r\n \r\n }\r\n \r\n )})}\r\n \r\n
\r\n
\r\n
\r\n {x}\r\n
\r\n
\r\n
\r\n { rowTitle }\r\n \r\n { ammount ? formatter.format(ammount) : formatter.format(0) }\r\n \r\n { formatter.format(rowData) }\r\n
\r\n
\r\n
\r\n )\r\n}\r\n","import React from \"react\";\r\nimport { PrintReviewForm } from \"../../components/ReviewForm/PrintReviewForm\";\r\nimport { Location } from \"../../models/location\";\r\nimport { ComponentToPrintModel } from \"../../models/PrintModel\";\r\nimport { AccountInfo } from \"./Review\";\r\nimport KCLogo from \"../../assets/img/KCLogoNew.png\";\r\nimport styles from './ReviewPrint.module.scss';\r\n\r\n\r\nexport const ReviewPrint = React.forwardRef(({ data, availableLocations }: { data: ComponentToPrintModel, availableLocations: Location[] }, ref) => {\r\n return (\r\n
} className={styles.printWrapper}>\r\n
\r\n \r\n
\r\n

Account Information

\r\n \r\n\r\n {data['Gross Receipts'] ?\r\n \r\n : <>}\r\n\r\n {data['Gross Receipts Total'] ?\r\n \r\n : <>}\r\n\r\n {data['Payroll Expense'] ?\r\n \r\n : <>}\r\n\r\n {data['Total Payroll Expense'] ?\r\n \r\n : <>}\r\n\r\n {data['Net Profits'] ?\r\n \r\n : <>}\r\n\r\n {data['Gross Annual Rentals'] ?\r\n \r\n : <>}\r\n\r\n {data['Total Gross Annual Rentals'] ?\r\n \r\n : <>}\r\n\r\n {data['Average Property Value'] ?\r\n \r\n : <>}\r\n\r\n {data['Average Total Real & Tangible Property Value'] ?\r\n \r\n : <>}\r\n
\r\n );\r\n});","import React, { useEffect, useRef, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n// @ts-ignore\nimport { Accordion, AccordionItem } from \"react-light-accordion\";\nimport { Box } from \"rebass\";\nimport { Label } from \"@rebass/forms\";\nimport { Button } from \"../../components/Button/Button\";\nimport { FieldWrapper } from \"../../components/FieldWrapper/FieldWrapper\";\nimport { useTitle } from \"../../providers/Title\";\nimport { useBody } from \"../../providers/Body\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { useAuth } from \"../../providers/Authentication\";\nimport { useGrossReceipts } from \"../../providers/GrossReceipts\";\nimport { ROUTES } from \"../../routes/constants\";\nimport styles from \"../../components/DataEntryTable/DataEntryTable.module.scss\";\nimport \"./accordian.scss\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport { ReviewForm } from \"../../components/ReviewForm/ReviewForm\";\nimport { useNetProfits } from \"../../providers/NetProfits\";\nimport { useRent } from \"../../providers/Rent\";\nimport { useRealTangible } from \"../../providers/RealTangible\";\nimport ReactToPrint from \"react-to-print\";\nimport { useLocations } from '../../providers/Locations';\nimport { ReviewPrint } from \"./ReviewPrint\";\nimport { ComponentToPrintModel } from \"../../models/PrintModel\";\nimport { usePayroll } from \"../../providers/Payroll\";\nimport { ReturnType, useFiling } from \"../../providers/Filing\";\nimport dayjs from \"dayjs\";\nimport { Location } from \"../../models/location\";\nimport { TaxFormsForm } from \"../../models/taxForm\";\n\nexport const AccountInfo = () => {\n const { account } = useAuth();\n return (\n
\n \n \n \n

{account?.name}

\n
\n \n \n

{account?.dba}

\n
\n \n \n

\n {account?.address.address1}
\n {account?.address.address2 ? <>{account.address.address2}
: null}\n {account?.address.attention ? <>{account.address.attention}
: null}\n {account?.address.city}, {account?.address.state} {account?.address.zip}\n

\n
\n \n \n

\n {account?.contactName}
\n {account?.contactTitle}
\n {account?.contactEmail}
\n {account?.contactPhone}\n

\n
\n
\n
\n );\n};\n\nfunction getFormattedValues(data: any, locations: Location[], forms: TaxFormsForm[], type: 'city' | 'form'): {[key: string]: string} {\n let retVal = {} as {[key: string]: string};\n const lineItems = forms\n .map(x => ({ ...x, taxFormLineItems: x.taxFormLineItems.map(y => ({ ...y, form: x })) }))\n ?.flatMap(x => x.taxFormLineItems);\n\n if (type === 'city') {\n Object.keys(data).forEach(locationId => {\n const location = locations.find(x=> x.id.toString() === locationId);\n if (!location) {\n return;\n }\n\n retVal[location.name] = data[locationId];\n });\n } else {\n Object.keys(data).forEach(taxFormId => {\n const line = lineItems.find(x=> x.id.toString() === taxFormId);\n if (!line) {\n return;\n }\n\n retVal[line.description] = data[taxFormId];\n });\n }\n return retVal;\n};\n\nexport const Review = () => {\n const history = useHistory();\n const { setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n\n const { totals, details } = useGrossReceipts();\n const { isLoggedIn, account, getAccountInfo } = useAuth();\n const { netProfitsForm } = useNetProfits();\n const { rentTotalGross, grossAnnualRentForm } = useRent();\n const { propertyValueByLocationForm, realTangibleValueForm } = useRealTangible();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { payrollTotalsByLocation, totalPayrollExpense } = usePayroll();\n const { taxForms, yearEndDate, returnType, getTaxFormsForYear } = useFiling();\n const { additions } = useNetProfits();\n\n const [data, setData] = useState(null);\n\n const secondcom = useRef(null);\n\n useEffect(() => {\n if (isLoggedIn && !account) {\n getAccountInfo();\n }\n\n if (!taxForms) {\n const year = dayjs(yearEndDate).get(\"year\");\n getTaxFormsForYear(year);\n }\n getAvailableLocations(dayjs(yearEndDate).year());\n }, [isLoggedIn, account, getAccountInfo, getAvailableLocations, taxForms, yearEndDate, getTaxFormsForYear]);\n\n useEffect(() => {\n if (availableLocations && taxForms) {\n var sessionData: ComponentToPrintModel = {\n \"Gross Receipts\": getFormattedValues(details, availableLocations, taxForms, \"city\"),\n \"Gross Receipts Total\": getFormattedValues(totals, availableLocations, taxForms, \"form\"),\n \"Net Profits\": getFormattedValues(netProfitsForm, availableLocations, taxForms, \"form\"),\n \"Payroll Expense\": getFormattedValues(payrollTotalsByLocation, availableLocations, taxForms, \"city\"),\n \"Total Payroll Expense\": getFormattedValues(totalPayrollExpense, availableLocations, taxForms, \"form\"),\n \"Gross Annual Rentals\": getFormattedValues(rentTotalGross, availableLocations, taxForms, \"city\"),\n \"Total Gross Annual Rentals\": getFormattedValues(grossAnnualRentForm, availableLocations, taxForms, \"form\"),\n \"Average Property Value\": getFormattedValues(propertyValueByLocationForm, availableLocations, taxForms, \"city\"),\n \"Average Total Real & Tangible Property Value\": getFormattedValues(realTangibleValueForm, availableLocations, taxForms, \"form\"),\n \"Additions & Deductions\": getFormattedValues(additions, availableLocations, taxForms, \"form\"),\n };\n\n setData(sessionData);\n }\n }, [availableLocations, taxForms, details, grossAnnualRentForm, netProfitsForm, propertyValueByLocationForm, realTangibleValueForm, rentTotalGross, totals, additions, payrollTotalsByLocation, totalPayrollExpense]);\n\n useEffect(() => {\n setCurrentPage!(\"review\");\n setCurrentTitle!(\"Please Review The Information Entered\");\n setCurrentBody!({ header: \"\", body: \"\" });\n }, [setCurrentBody, setCurrentPage, setCurrentTitle]);\n\n const handleGoBack = () => {\n setCurrentBody!({ header: \"\", body: \"\" });\n \n if (returnType == ReturnType.ActualReturn) {\n history.push(ROUTES.EXTENSIONS_FILED);\n return;\n }\n\n history.push(ROUTES.ATTACHMENTS);\n return;\n };\n\n return (\n
\n {data && availableLocations ?\n <>\n \n \n
\n \n
\n
\n \n {data[\"Gross Receipts\"] ?\n \n history.push(ROUTES.GROSS_RECEIPTS_LOCATIONS)}\n detailsOnClick={() => history.push(ROUTES.GROSS_RECEIPT_DETAILS)} />\n \n : <>}\n\n {data[\"Gross Receipts Total\"] ?\n \n history.push(ROUTES.GROSS_RECEIPTS_LOCATIONS)}\n detailsOnClick={() => history.push(ROUTES.GROSS_RECEIPT_DETAILS)} />\n \n : <>}\n\n {data[\"Payroll Expense\"] ?\n \n history.push(ROUTES.PAYROLL_LOCATIONS)}\n detailsOnClick={() => history.push(ROUTES.PAYROLL_EXPENSE)} />\n \n : <>}\n\n {data[\"Total Payroll Expense\"] ?\n \n history.push(ROUTES.PAYROLL_TOTALS)}\n detailsOnClick={() => history.push(ROUTES.PAYROLL_EXPENSE)} />\n \n : <>}\n\n {data[\"Net Profits\"] ?\n \n history.push(ROUTES.NET_PROFITS)}\n detailsOnClick={() => history.push(ROUTES.NET_PROFITS)} />\n \n : <>}\n\n {data[\"Gross Annual Rentals\"] ?\n \n history.push(ROUTES.GROSS_ANNUAL_RENT)}\n detailsOnClick={() => history.push(ROUTES.GROSS_ANNUAL_RENT)} />\n \n : <>}\n\n {data[\"Total Gross Annual Rentals\"] ?\n \n history.push(ROUTES.RENT_TOTAL_GROSS)}\n detailsOnClick={() => history.push(ROUTES.RENT_TOTAL_GROSS)} />\n \n : <>}\n\n {data[\"Average Property Value\"] ?\n \n history.push(ROUTES.PROPERTY_VALUE_BY_LOCATION)}\n detailsOnClick={() => history.push(ROUTES.PROPERTY_VALUE_BY_LOCATION)} />\n \n : <>}\n\n {data[\"Average Total Real & Tangible Property Value\"] ?\n \n history.push(ROUTES.REAL_TANGIBLE_LOCATIONS)}\n detailsOnClick={() => history.push(ROUTES.REAL_TANGIBLE_LOCATIONS)} />\n \n : <>}\n\n {data[\"Additions & Deductions\"] ?\n \n history.push(ROUTES.ADDITIONS)}\n detailsOnClick={() => history.push(ROUTES.ADDITIONS)}\n calcTotal={false} />\n \n : <>}\n
\n \n : null}\n
\n \n \n handleGoBack()}\n >\n Go Back\n \n
\n }\n content={() => secondcom.current}\n />\n {data && availableLocations ?\n
\n \n
\n : null}\n
\n \n
\n
\n
\n
\n );\n};\n","export interface TaxFormsForm {\r\n id: number;\r\n name: string;\r\n year: number;\r\n tooltipDescription: string;\r\n taxFormLineItems: [\r\n {\r\n id: number;\r\n taxFormId: number;\r\n lineNumber: string;\r\n description: string;\r\n pageId: number;\r\n formType: FormType;\r\n appliesToNetProfits?: boolean;\r\n appliesToGrossReceipts?: boolean;\r\n }\r\n ]\r\n};\r\n\r\nexport enum FormType{\r\n Addition=0,\r\n Deduction=1\r\n};\r\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Form, Formik } from \"formik\";\nimport { Button } from \"../../../components/Button/Button\";\nimport { DataEntryTable } from \"../../../components/DataEntryTable/DataEntryTable\";\nimport { useTitle } from \"../../../providers/Title\";\nimport { useBody } from \"../../../providers/Body\";\nimport { useProgress } from \"../../../providers/Progress\";\nimport { useLocations } from \"../../../providers/Locations\";\nimport { useRealTangible } from \"../../../providers/RealTangible\";\nimport { PropertyValueByLocationForm } from \"../../../models/propertyValueByLocationForm\";\nimport { ROUTES } from \"../../../routes/constants\";\nimport { ButtonGroup } from \"../../../components/ButtonGroup/ButtonGroup\";\nimport style from \"./PropertyValueByLocation.module.scss\";\nimport { useAuth } from \"../../../providers/Authentication\";\nimport { saveProgressService } from \"../../../services/saveProgress\";\nimport { SaveReturnInfo } from \"../../../models/SaveProgressModels/SaveReturnInfo\";\nimport dayjs from \"dayjs\";\nimport { useFiling } from \"../../../providers/Filing\";\n\nexport const PropertyValueByLocation = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n const { currentPage, setCurrentPage } = useProgress();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, propertyValueByLocationForm, savePropertyValueByLocationForm } = useRealTangible();\n const { accountNumber } = useAuth();\n const { yearEndDate } = useFiling();\n\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number }[]>([]);\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\n const [, setError] = useState(0);\n\n let initialValues = {} as PropertyValueByLocationForm;\n if (!propertyValueByLocationForm || !Object.keys(propertyValueByLocationForm).length) {\n for (const location of Object.keys(selectedLocations)) {\n initialValues[parseInt(location)] = 0;\n }\n } else {\n initialValues = propertyValueByLocationForm;\n Object.keys(initialValues).forEach(city => {\n if (!selectedLocations[parseInt(city)]) delete initialValues[parseInt(city)];\n });\n for (const location of Object.keys(selectedLocations)) {\n if (!initialValues[parseInt(location)]) {\n initialValues[parseInt(location)] = 0;\n }\n }\n }\n\n useEffect(() => {\n if (availableLocations) {\n setDataEntryRows(availableLocations.filter(x => Object.keys(selectedLocations).indexOf(x.id.toString()) > -1).map(location => {\n return {\n label: location.name,\n id: location.id,\n }\n }));\n }\n\n setDataEntryCols([{ label: \"\" }]);\n }, [availableLocations, selectedLocations]);\n\n useEffect(() => {\n if (!availableLocations) {\n getAvailableLocations(dayjs(yearEndDate).year());\n }\n\n setCurrentPage!(\"property-value\");\n setCurrentTitle!(\"Please List Your Average Property Value By Location\");\n setCurrentBody!({ header: \"\", body: \"\" });\n }, [availableLocations, getAvailableLocations, setCurrentBody, setCurrentPage, setCurrentTitle]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n setCurrentBody!({ header: \"\", body: \"\" });\n history.push(ROUTES.REAL_TANGIBLE_LOCATIONS);\n return;\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n const getTrueValues = (values: PropertyValueByLocationForm) => {\n return Object.keys(values)\n .filter(x => values[x as any])\n .reduce((acc, item) => ({\n ...acc,\n [parseInt(item)]: values[item as any],\n }), {} as PropertyValueByLocationForm);\n };\n\n return (\n <>\n
\n

Here is how to calculate your average property value:

\n
\n

Property owned by the tax payer is valued at its original cost. The average value is determined by averaging the values at the beginning and ending of the computation period.

\n

Example:

\n

\n Property as of January 1st of tax period: $150,000
\n Property as of December 31st of tax period: $185,000
\n Average value of property during tax period: $165,000
\n

\n
\n
\n {\n const trueValues = getTrueValues(values);\n const returnInfo = getReturnInfo();\n\n await savePropertyValueByLocationForm(trueValues);\n await saveProgressService.saveProperties({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueValues,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n setCurrentBody!({ header: \"\", body: \"\" });\n history.push(ROUTES.REAL_TANGIBLE_VALUE);\n }}>\n {({ values, dirty, errors, touched }) => (\n
\n \n\n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n \n )}\n \n \n );\n};\n","import React, { useEffect } from \"react\";\nimport dayjs from \"dayjs\";\nimport { useHistory } from \"react-router-dom\";\nimport { Card } from \"../../components/Card/Card\";\nimport { Button } from \"../../components/Button/Button\";\nimport { useTitle } from \"../../providers/Title\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { ROUTES } from \"../../routes/constants\";\nimport CountyWideImg from \"../../assets/img/businessLicenseSelect-countywide.png\";\nimport LocationImg from \"../../assets/img/businessLicenseSelect-locationSpecific.png\";\n\nimport styles from \"./BusinessLicenseSelect.module.scss\";\nimport { SaveReturnInfo } from \"../../models/SaveProgressModels/SaveReturnInfo\";\nimport { useAuth } from \"../../providers/Authentication\";\nimport { useFiling } from \"../../providers/Filing\";\nimport { saveProgressService } from \"../../services/saveProgress\";\nimport { BusinessLicenseType, useBusinessLicense } from \"../../providers/BusinessLicense\";\n\nexport const BusinessLicenseSelect = () => {\n const history = useHistory();\n const { currentPage, setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const { dueDate } = useFiling();\n const { accountNumber } = useAuth();\n const { saveSelectedType } = useBusinessLicense();\n const isPastDue = dayjs().isAfter(dueDate, \"day\");\n\n useEffect(() => {\n setCurrentPage!(\"business-license-select\");\n setCurrentTitle!(\"Please select a business license for the next year:\");\n }, [setCurrentPage, setCurrentTitle]);\n\n const handleClick = async (value: string) => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n if (value === 'county') {\n returnInfo.LicenseType = 0;\n await saveProgressService.saveReturnInfo(returnInfo);\n saveSelectedType(BusinessLicenseType.County);\n history.push(ROUTES.ATTACHMENTS, { from: ROUTES.BUSINESS_LICENSE_SELECT });\n return;\n } else if (value === 'location') {\n returnInfo.LicenseType = 1;\n await saveProgressService.saveReturnInfo(returnInfo);\n saveSelectedType(BusinessLicenseType.Locations);\n history.push(ROUTES.BUSINESS_LICENSE_LOCATIONS);\n return;\n } else if (value === 'none') {\n returnInfo.LicenseType = 2;\n await saveProgressService.saveReturnInfo(returnInfo);\n saveSelectedType(BusinessLicenseType.None);\n history.push(ROUTES.ATTACHMENTS, { from: ROUTES.BUSINESS_LICENSE_SELECT });\n return;\n }\n\n return;\n };\n\n return (\n\n
\n
\n\n
\n {!isPastDue ?\n
\n handleClick('county')}\n >\n
\n

County-Wide Business License

\n

License is valid in all locations within Kenton County, including Covington and Unincorporated Kenton County.

\n

If the business is anticipating activity in five or more locations, please select this option.

\n
\n \n
\n : null}\n\n
\n handleClick('location')}\n >\n
\n

Individual City License

\n

License is valid in the selected location(s) only.

\n {!isPastDue\n ?

If the business is anticipating activity in fewer than five locations, please select this option.

\n :

NOTE: The County-Wide License option is only available for returns filed on or before the due date.

\n }\n
\n \n
\n
\n
\n
\n \n
\n
\n \n
\n
\n\n );\n}\n","import { CcPayment } from \"../models/ccPayment\";\r\nimport { CcTransactionConfirmation } from \"../models/ccTransactionConfirmation\";\r\nimport { CcTransactionPostback } from \"../models/ccTransactionPostback\";\r\nimport { ApiResponse, AxiosService } from \"./axiosService\";\r\n\r\nexport class CcService extends AxiosService {\r\n public constructor() { super(); }\r\n\r\n // fetch a token and redirect the user to NIC\r\n async redirectToNic(payment: CcPayment) {\r\n try {\r\n const { data } = await this.axios.post>(`/Ccp/nic-payment`, payment);\r\n var parsedRes = JSON.parse(data.data);\r\n \r\n return parsedRes;\r\n } catch (e) {\r\n console.error(e);\r\n alert(\"There was an error when redirecting you to credit card payment.\");\r\n throw e;\r\n }\r\n }\r\n\r\n async postCcTransaction(cctPostback: CcTransactionPostback) {\r\n try {\r\n const { data } = await this.axios.post>(`/Ccp/ccp-success`, cctPostback);\r\n\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n\r\n async getTransactionDetails(returnId: number) {\r\n try {\r\n const { data } = await this.axios.get>(`/Ccp/transaction-details?returnId=${returnId}`);\r\n\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n}\r\n\r\nexport const ccService = new CcService();\r\n\r\n","import React, { useCallback, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\n// @ts-ignore\nimport { Accordion, AccordionItem } from \"react-light-accordion\";\nimport { Button } from \"../../components/Button/Button\";\nimport { FieldWrapper } from \"../../components/FieldWrapper/FieldWrapper\";\nimport { useTitle } from \"../../providers/Title\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { useLocations } from \"../../providers/Locations\";\nimport { useGrossReceipts } from \"../../providers/GrossReceipts\";\nimport { usePayroll } from \"../../providers/Payroll\";\nimport { useRent } from \"../../providers/Rent\";\nimport { useRealTangible } from \"../../providers/RealTangible\";\nimport { ROUTES } from \"../../routes/constants\";\nimport { RadiobuttonField } from \"../../components/RadiobuttonField/RadiobuttonField\";\nimport { Form, Formik } from 'formik';\nimport styles from \"./TaxSummary.module.scss\";\nimport { annualService } from \"../../services/annualService\";\nimport { saveProgressService } from \"../../services/saveProgress\";\nimport { ccService } from \"../../services/ccService\";\nimport { useAuth } from \"../../providers/Authentication\";\nimport { TaxSummary as TaxSummaryModel } from \"../../models/taxSummary\";\nimport { ReturnType, useFiling } from \"../../providers/Filing\";\nimport { SaveReturnInfo } from \"../../models/SaveProgressModels/SaveReturnInfo\";\nimport dayjs from \"dayjs\";\nimport { CcPayment } from \"../../models/ccPayment\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport { LoadingSpinner } from \"../../components/LoadingSpinner/LoadingSpinner\";\nimport { usePastReturn } from \"../../providers/pastFiled\";\n\n\nexport const TaxSummary = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { setCurrentPage, currentPage } = useProgress();\n const { details: GRDetails } = useGrossReceipts();\n const { payrollTotalsByLocation: PRDetails } = usePayroll();\n const { grossAnnualRentForm: RentDetails } = useRent();\n const { propertyValueByLocationForm: RTDetails } = useRealTangible();\n const { availableLocations, getAvailableLocations } = useLocations();\n const [returnDetails, setReturnDetails] = useState();\n const { returnType, yearEndDate } = useFiling();\n const { getPastReturn, pastReturn } = usePastReturn();\n const { account, accountNumber, isLoggedIn, getAccountInfo } = useAuth();\n const [confirmationNumber, setConfirmationNumber] = useState(null);\n const [feesDue, setFeesDue] = useState(null);\n const [redirecting, setIsRedirecting] = useState(false);\n const [loading, setLoading] = useState(false);\n const [isEstimatedPayment, setIsEstimatedPayment] = useState(false);\n const [showDisclaimerModal, setShowDisclaimerModal] = useState(false);\n const isActualOrFinal = returnType == ReturnType.ActualReturn || returnType == ReturnType.FinalReturn;\n\n interface SummaryValues {\n [key: string]: {\n name: string,\n grossReceipts: number,\n payroll: number,\n rent: number,\n realTangible: number,\n feeDue: number,\n }\n };\n\n const initialValues = {} as SummaryValues;\n\n if (availableLocations) {\n for (const city of availableLocations) {\n let cityString = city.id.toString();\n let cityName = city.name;\n\n if (!GRDetails[city.id] &&\n !PRDetails[city.id] &&\n !RentDetails[city.id] &&\n !RTDetails[city.id]) {\n continue;\n }\n\n initialValues[cityString] = {\n name: cityName,\n grossReceipts: 0,\n payroll: 0,\n rent: 0,\n realTangible: 0,\n feeDue: 0,\n };\n\n if (GRDetails[city.id]) {\n initialValues[city.id].grossReceipts = GRDetails[city.id];\n }\n\n if (PRDetails[city.id]) {\n initialValues[city.id].payroll = PRDetails[city.id];\n }\n\n if (RentDetails && RentDetails[city.id]) {\n initialValues[city.id].rent = RentDetails[city.id];\n }\n\n if (RTDetails && RTDetails[city.id]) {\n initialValues[city.id].realTangible = RTDetails[city.id];\n }\n }\n }\n\n const formatter = new Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: 2\n });\n\n const formatDate = (entryDate: Date) => {\n const date = new Date(entryDate);\n const options: Intl.DateTimeFormatOptions = { year: 'numeric', month: '2-digit', day: '2-digit' };\n const formattedDate: string = date.toLocaleDateString(undefined, options);\n return formattedDate\n }\n\n const handlePayOnline = () => {\n const isZeroOrNegativeReturn = returnDetails!.total <= 0 || returnDetails!.estimatedTotal <= 0\n\n if (isZeroOrNegativeReturn) {\n submitZeroReturn()\n } else {\n setShowDisclaimerModal(true);\n }\n };\n\n const submitZeroReturn = async () => {\n const returnInfo = getReturnInfo();\n await saveProgressService.saveReturnInfo(returnInfo);\n\n const value = await saveProgressService.getProgress(accountNumber!);\n if (!!value) {\n const { data } = await annualService.postAnnualHeader(((value as any).Return.Id), \"OnlineCC\", isEstimatedPayment);\n history.push(ROUTES.COMPLETE, { confirmationNumber: data });\n }\n }\n\n const handleSaveAndContinue = async () => {\n const value = await saveProgressService.getProgress(accountNumber!);\n if (!!value) {\n const returnInfo = getReturnInfo();\n const paymentInfo = getPaymentInfo((value as any));\n await saveProgressService.saveReturnInfo(returnInfo);\n let response = await annualService.postAnnualHeader(paymentInfo.returnId, \"OnlineCC\", isEstimatedPayment);\n if (response.success) {\n paymentInfo.confirmationNumber = response.data;\n let redirectData = await ccService.redirectToNic(paymentInfo);\n setSessionStorage(paymentInfo);\n setShowDisclaimerModal(false); \n setIsRedirecting(true);\n window.location.assign(redirectData.legacyRedirectUrl);\n } else {\n setShowDisclaimerModal(false); \n alert(\"We are unable to process your return at this time.\");\n }\n }\n };\n\n const setSessionStorage = (paymentInfo: CcPayment) => {\n sessionStorage.setItem(\"confirmationNumber\", paymentInfo.confirmationNumber);\n sessionStorage.setItem(\"feesDue\", paymentInfo.amountDue);\n };\n \n const handleCancel = () => {\n setShowDisclaimerModal(false); \n };\n\n useEffect(() => {\n window.addEventListener('pageshow', (event) => {\n if (event.persisted) {\n window.location.reload();\n }\n });\n })\n\n useEffect(() => {\n if (availableLocations) {\n for (const city of availableLocations) {\n let cityString = city.id.toString();\n let cityName = city.name;\n if (!initialValues[cityString]) {\n initialValues[cityString] = {\n name: cityName,\n grossReceipts: 0,\n payroll: 0,\n rent: 0,\n realTangible: 0,\n feeDue: 0,\n }\n }\n }\n }\n }, [availableLocations, initialValues]);\n\n const getTaxDue = useCallback(async () => {\n const value = await saveProgressService.getProgress(accountNumber!);\n if (!!value) {\n var data = await annualService.getTaxDue((value as any).Return.Id);\n if (!!data) {\n setReturnDetails(data.data);\n }\n }\n const alreadyFiled = await checkNavigation();\n if (alreadyFiled) {\n setCurrentPage!(\"complete\");\n setCurrentTitle!(\"Your return has been filed.\");\n } else {\n setCurrentPage!(\"tax-summary\");\n setCurrentTitle!(\"Tax Summary\");\n }\n\n }, [accountNumber]);\n\n const checkNavigation = useCallback(async () => {\n let confirmationNumber = sessionStorage.getItem(\"confirmationNumber\")\n let feesDue = sessionStorage.getItem(\"feesDue\")\n if (confirmationNumber !== null) {\n setConfirmationNumber(confirmationNumber)\n setFeesDue(feesDue)\n return true\n } else {\n return false\n }\n\n }, [confirmationNumber]);\n\n const handleSummaryPdfDownload = () => {\n let baseCommunityUrl = process.env.REACT_APP_BASE_COMMUNITY_URL;\n\n if (baseCommunityUrl === undefined) {\n const currentHost = window.location.hostname;\n\n if (currentHost.includes(\"localhost\")) {\n baseCommunityUrl = \"http://localhost:58661\";\n } else if (currentHost.includes(\"test\")) {\n baseCommunityUrl = \"https://testcommunity.kentoncounty.org\";\n } else if (currentHost.includes(\"uat\")) {\n baseCommunityUrl = \"https://community-uat.kentoncounty.org\";\n } else {\n baseCommunityUrl = \"https://colt.kentoncounty.org\";\n }\n\n console.log(\"environment variable not found -- setting base Community URL manually\");\n }\n\n const summaryPdfUrl = `${baseCommunityUrl}/Community/ExportToPDF/ReturnSummary?type=Annual&confirmationNumber=${confirmationNumber}`;\n\n window.open(summaryPdfUrl, \"_blank\");\n };\n\n useEffect(() => {\n if (isLoggedIn && !account) {\n getAccountInfo();\n }\n\n }, [isLoggedIn, account, getAccountInfo]);\n\n useEffect(() => {\n if (!availableLocations) {\n getAvailableLocations(dayjs(yearEndDate).year());\n }\n\n getTaxDue();\n }, [availableLocations, getAvailableLocations, setCurrentPage, setCurrentTitle, getTaxDue, getAccountInfo]);\n\n useEffect(() => {\n getPastReturn(accountNumber!, dayjs(yearEndDate).year());\n }, [accountNumber, getPastReturn, yearEndDate])\n\n useEffect(() => {\n if (returnDetails?.isEstimatedReturn) {\n setIsEstimatedPayment(true);\n }\n }, [returnDetails])\n\n const getPaymentInfo = (value: any) => {\n let paymentInfo = {} as CcPayment;\n paymentInfo.returnType = \"Annual\";\n paymentInfo.returnId = value.Return.Id;\n paymentInfo.accountNumber = accountNumber!;\n if (!!returnDetails) {\n paymentInfo.amountDue = isEstimatedPayment\n ? returnDetails.formattedEstimatedTotal.slice(1)\n : returnDetails.formattedTotal.slice(1);\n }\n\n return paymentInfo;\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n if (!returnDetails) {\n return (\n \n )\n }\n\n if (redirecting) {\n return (
Redirecting to NIC...
)\n }\n\n return (\n <>\n {confirmationNumber ?\n <>\n
\n

\n Your return has been accepted, and your confirmation number is {confirmationNumber}.\n

\n

\n Your annual return has been submitted for review by Kenton County Business Services; however, your credit card payment was canceled.\n

\n

\n Please remit the total due (${feesDue}) to the following address:

Kenton County Fiscal Court,

1840 Simon Kenton Way,

Suite 5100, Covington, KY 41011.
\n

\n

\n Please print this page for your records. Additionally, you may download a PDF summary of your return by clicking the button below.\n

\n

\n If there are any questions or issues with your filing, you will be contacted via phone or email. If you have any questions and would like to discuss your return, please call (859) 392-1440 or email business.services@kentoncounty.org.\n

\n
\n
\n

\n Thank you for using this application.\n

\n

\n Kenton County Business Services.\n

\n
\n \n \n \n \n :\n <>\n
\n \n {Object.keys(returnDetails.details).map((cityIdString, idx) => {\n const details = returnDetails.details[parseInt(cityIdString)];\n\n if (!details || (!details.feeDue && !details.priorPayment && details.cityId !== -1) || !availableLocations) {\n return
;\n }\n\n const location = cityIdString === \"-1\" ? { name: 'Kenton County' } : availableLocations.find(x => x.id.toString() === cityIdString);\n if (!location) {\n return ;\n }\n\n return (
\n \n
\n
Fee Due: {isEstimatedPayment ? formatter.format(details.estimatedFeeDue) : formatter.format(details.feeDue)}
\n
\n
\n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n\n \n \n\n \n \n \n\n \n \n \n {details.taxMethod === 1 ?\n \n : null}\n \n \n \n\n \n \n \n \n\n {!returnDetails.hasCountyWideLicense ?\n \n : null}\n\n {isActualOrFinal ?\n \n : null} \n\n \n \n \n \n \n
Total Gross Receipts: {formatter.format(details.totalGrossReceipts)}
{location!.name} Gross Receipts: {formatter.format(details.locationGrossReceipts)}
{location!.name} Receipt Factor: {(details.salesFactor * 100.0).toFixed(6)}%
Total Payroll: {formatter.format(details.totalPayroll)}
{location!.name} Payroll: {formatter.format(details.locationPayroll)}
{location!.name} Payroll Factor: {(details.payrollFactor * 100.0).toFixed(6)}%
Total Value of Property:{formatter.format(details.totalPropertyValue)}
{location!.name} Property Value: {formatter.format(details.locationPropertyValue)}
Total Rents Paid (multiplied by 8): {formatter.format(details.totalRentPaid)}
{location!.name} Rents Paid (multiplied by 8):{formatter.format(details.locationRentPaid)}
Total Value of Property and Rents Paid: {formatter.format(details.totalPropertyAndRents)}
{location!.name} Property Value & Rents Paid:{formatter.format(details.locationPropertyAndRents)}
{location!.name} Property Factor:{(details.propertyFactor * 100.0).toFixed(6)}%
Factor Totals: {(details.factorTotals * 100.0).toFixed(6)}%
Number of Factors: {details.numFactors}
Allocation Factor (Average): {(details.allocationFactor * 100.0).toFixed(6)}%
Total Net Profit:{formatter.format(details.totalNetProfit)}
{location!.name} Allocated {details.taxMethod === 2 ? 'Gross Receipts' : 'Net Profit'}: {formatter.format(details.allocatedEarnings)}
{location!.name} Rate on {details.taxMethod === 2 ? 'Gross Receipts' : 'Net Profit'}: {details.rate}
{location!.name} Fee Due before Penalty and Interest: {formatter.format(details.feeLessPandI)}
{location!.name} Penalty Rate: {details.penaltyRate}
{location!.name} Penalty: {formatter.format(details.penalty)}
{location!.name} Interest Rate: {details.interestRate}
{location!.name} Interest: {formatter.format(details.interest)}
{location!.name} License Renewal: {formatter.format(details.licenseFee)}
{location!.name} Prior Payment: {formatter.format(details.priorPayment)}
Amount Due to {location!.name}: {isEstimatedPayment ? formatter.format(details.estimatedFeeDue) : formatter.format(details.feeDue)}
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
);\n })}\n
\n
\n {returnDetails.hasCountyWideLicense ?\n
County-wide License Fee: {formatter.format(returnDetails.countyWideLicenseCost)}
\n : null}\n {pastReturn!.exists ?\n <>\n
\n Total Tax Paid On {formatDate(pastReturn!.entryDate)}: {formatter.format(pastReturn!.taxPaid)} \n Remaining Fees Due: {returnDetails.formattedTotal}\n
\n \n : \n Total Fees Due: {isEstimatedPayment ? returnDetails.formattedEstimatedTotal : returnDetails.formattedTotal}\n }\n
\n\n {returnDetails.isEstimatedReturn ?\n
\n

For estimated returns, you are required to pay at least 90% of calculated tax due, as well as any license renewal fees. You can optionally pay the full amount.

\n\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n
\n : null}\n\n
\n \n {\n setLoading(true);\n if (values.paymentType === 'Voucher') {\n const returnInfo = getReturnInfo();\n await saveProgressService.saveReturnInfo(returnInfo);\n\n const value = await saveProgressService.getProgress(accountNumber!);\n if (!!value) {\n const { data } = await annualService.postAnnualHeader(((value as any).Return.Id), values.paymentType, isEstimatedPayment);\n history.push(ROUTES.COMPLETE, { confirmationNumber: data });\n }\n } else {\n handlePayOnline();\n }\n setLoading(false);\n }}>\n\n {({ values }) => (\n
\n

Please select a payment method below to complete your return.

\n\n
\n
\n \n
\n
\n \n
\n
\n\n
\n {values.paymentType === 'Voucher'\n ?\n \n :\n \n }\n
\n
\n )}\n
\n
\n
\n\n {showDisclaimerModal && (\n
\n
\n
\n
\n

Redirection to NIC Disclaimer

\n
\n

\n You will now be redirected to the NIC portal to complete your online payment.\n

\n

\n A service fee will apply to online credit card or ACH transactions.\n

\n

\n Please note: If your payment is unsuccessful for any reason, or you cancel your payment in the portal, you will be required to remit the fee due to Kenton County Fiscal Court via mail.\n

\n \n
\n
\n \n
\n
\n \n
\n )}\n
\n \n }\n \n )\n}","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Form, Formik } from \"formik\";\nimport { Button } from \"../../components/Button/Button\";\nimport { DataEntryTable } from \"../../components/DataEntryTable/DataEntryTable\";\nimport { useTitle } from \"../../providers/Title\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { ROUTES } from \"../../routes/constants\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport styles from \"./Deductions.module.scss\";\nimport { useFiling } from \"../../providers/Filing\";\nimport { TaxFormsForm } from \"../../models/taxForm\";\nimport { useGrossReceipts } from \"../../providers/GrossReceipts\";\nimport dayjs from \"dayjs\";\nimport { Deduction } from \"../../models/deduction\";\nimport { saveProgressService } from \"../../services/saveProgress\";\nimport { useAuth } from \"../../providers/Authentication\";\nimport { SaveReturnInfo } from \"../../models/SaveProgressModels/SaveReturnInfo\";\n\nexport const Deductions = () => {\n const history = useHistory();\n const { currentPage, setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const { deductions, saveGrossReceiptsDeductions } = useGrossReceipts();\n const {\n getTaxFormsForYear,\n yearEndDate,\n taxForms,\n selectedTaxForms\n } = useFiling();\n const { accountNumber } = useAuth();\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number, lineItem: string }[]>([]);\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string }[]>([]);\n const [, setError] = useState(0);\n const [initialValues, setInitialValues] = useState({});\n\n useEffect(() => {\n let rows = [] as { label: string, id: number, lineItem: string }[];\n let col = [{ label: \"Deductions\" }];\n const tempInitialValues = {} as Deduction;\n if (taxForms && taxForms.length) {\n Object.keys(selectedTaxForms).forEach(selectedTaxForm => {\n let forms: TaxFormsForm[] | undefined = taxForms?.filter(f => f.id.toString() === selectedTaxForm);\n if (forms) {\n for (let form of forms) {\n form.taxFormLineItems?.forEach(lineItem => {\n if (lineItem.appliesToGrossReceipts) {\n tempInitialValues[lineItem.id] = {\n Deductions: deductions[lineItem.id] ? deductions[lineItem.id].Deductions ?? 0 : 0\n };\n rows.push({\n label: form.name,\n id: lineItem.id,\n lineItem: lineItem.description,\n });\n }\n });\n }\n }\n });\n\n if (rows.length <= 0) {\n let past: any;\n if (history.location.state) {\n past = history.location.state;\n if (past.from === ROUTES.PAYROLL) {\n history.push(ROUTES.GROSS_RECEIPTS_TOTALS, { from: ROUTES.DEDUCTIONS });\n return;\n }\n }\n history.push(ROUTES.PAYROLL);\n }\n\n\n setDataEntryRows(rows);\n setDataEntryCols(col);\n setInitialValues(tempInitialValues);\n }\n }, [history, selectedTaxForms, taxForms, deductions]);\n\n useEffect(() => {\n setCurrentPage!(\"deductions\");\n setCurrentTitle!(\"Please Enter Any Gross Receipt Deductions\")\n }, [setCurrentPage, setCurrentTitle]);\n\n useEffect(() => {\n if (!taxForms) {\n const year = dayjs(yearEndDate).get(\"year\");\n getTaxFormsForYear(year);\n }\n }, [taxForms, getTaxFormsForYear, history, yearEndDate]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n history.push(ROUTES.GROSS_RECEIPT_DETAILS);\n return;\n }\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n return (\n
\n {Object.keys(initialValues).length > 0 ?\n {\n await saveGrossReceiptsDeductions(values);\n\n const returnInfo = getReturnInfo();\n await saveProgressService.saveGrossReceiptsDeductions({\n AccountNumber: accountNumber!,\n Data: values as any,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.PAYROLL);\n }}>\n {({ values, dirty, errors, touched }) => (\n
\n \n\n \n handleGoBack(dirty)}>\n Go Back\n \n \n \n \n )}\n \n : null}\n
\n )\n};","import React, { useEffect, useState } from \"react\";\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { Form, Formik } from \"formik\";\r\nimport { Button } from \"../../components/Button/Button\";\r\nimport { DataEntryTable } from \"../../components/DataEntryTable/DataEntryTable\";\r\nimport { useTitle } from \"../../providers/Title\";\r\nimport { useBody } from \"../../providers/Body\";\r\nimport { useProgress } from \"../../providers/Progress\";\r\nimport { useFiling } from \"../../providers/Filing\";\r\nimport { TaxFormsForm, FormType } from \"../../models/taxForm\";\r\nimport { ROUTES } from \"../../routes/constants\";\r\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\r\nimport { useNetProfits } from \"../../providers/NetProfits\";\r\nimport { AdditionsModel } from \"../../models/additionsModel\";\r\nimport dayjs from \"dayjs\";\r\nimport { SaveReturnInfo } from \"../../models/SaveProgressModels/SaveReturnInfo\";\r\nimport { useAuth } from \"../../providers/Authentication\";\r\nimport { saveProgressService } from \"../../services/saveProgress\";\r\n\r\nexport const Additions = () => {\r\n const history = useHistory();\r\n const { currentPage, setCurrentPage } = useProgress();\r\n const { setCurrentTitle } = useTitle();\r\n const { setCurrentBody } = useBody();\r\n const { additions, saveNetProfitsAdditions } = useNetProfits();\r\n const {\r\n getTaxFormsForYear,\r\n yearEndDate,\r\n taxForms,\r\n selectedTaxForms\r\n } = useFiling();\r\n const { accountNumber } = useAuth();\r\n\r\n const [dataEntryRows, setDataEntryRows] = useState<{ label: string, id: number }[]>([]);\r\n const [dataEntryCols, setDataEntryCols] = useState<{ label: string, info?: string }[]>([]);\r\n const [, setError] = useState(0);\r\n\r\n //{\"Federal Form 1120\": \"0\", \"Federal Form 1065\": \"0\"}\r\n const [initialValues, setInitialValues] = useState({});\r\n\r\n useEffect(() => {\r\n let rows = [] as { label: string, id: number, formType?: FormType, lineItem: string }[];\r\n let cols = [{ label: \"Additions\", formType: FormType.Addition }, { label: \"Deductions\", formType: FormType.Deduction }] as { label: string, formType?: FormType }[];\r\n\r\n const tempInitialValues = {} as AdditionsModel;\r\n if (taxForms && taxForms.length) {\r\n Object.keys(selectedTaxForms).forEach(selectedTaxForm => {\r\n let forms: TaxFormsForm[] | undefined = taxForms?.filter(f => f.id.toString() === selectedTaxForm);\r\n if (forms) {\r\n forms.forEach(form => {\r\n form.taxFormLineItems?.forEach(lineItem => {\r\n if (lineItem.appliesToNetProfits) {\r\n rows.push({\r\n label: form.name,\r\n id: lineItem.id,\r\n formType: lineItem.formType,\r\n lineItem: lineItem.description,\r\n });\r\n tempInitialValues[lineItem.id] = {\r\n \"Additions\": 0,\r\n \"Deductions\": 0,\r\n };\r\n cols.forEach(col => {\r\n if (lineItem.formType === col.formType) {\r\n if (lineItem.formType === FormType.Addition) {\r\n tempInitialValues[lineItem.id][\"Additions\"] = additions[lineItem.id] ? additions[lineItem.id][\"Additions\"] ?? 0 : 0;\r\n } else if (lineItem.formType === FormType.Deduction) {\r\n tempInitialValues[lineItem.id][\"Deductions\"] = additions[lineItem.id] ? additions[lineItem.id][\"Deductions\"] ?? 0 : 0;\r\n }\r\n }\r\n })\r\n }\r\n });\r\n });\r\n }\r\n });\r\n }\r\n\r\n\r\n if (rows.length <= 0) {\r\n let past: any;\r\n if (history.location.state) {\r\n past = history.location.state;\r\n if (past.from === ROUTES.RENT_PAID) {\r\n history.push(ROUTES.NET_PROFITS, { from: ROUTES.ADDITIONS });\r\n return;\r\n }\r\n }\r\n history.push(ROUTES.RENT_PAID);\r\n }\r\n\r\n setDataEntryRows(rows);\r\n setDataEntryCols(cols);\r\n setInitialValues(tempInitialValues)\r\n }, [history, selectedTaxForms, taxForms, additions]);\r\n\r\n\r\n useEffect(() => {\r\n setCurrentPage!(\"netprofits\");\r\n setCurrentTitle!(\"Please enter any Net Profit Additions and Deductions\");\r\n setCurrentBody!({ header: \"\", body: \"\" });\r\n }, [setCurrentBody, setCurrentTitle, setCurrentPage]);\r\n\r\n useEffect(() => {\r\n if (!taxForms) {\r\n const year = dayjs(yearEndDate).get(\"year\");\r\n getTaxFormsForYear(year);\r\n }\r\n }, [taxForms, getTaxFormsForYear, yearEndDate]);\r\n\r\n\r\n const handleGoBack = (dirty: Boolean) => {\r\n if (dirty) {\r\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\r\n if (!window.confirm(msg)) return;\r\n }\r\n\r\n history.push(ROUTES.NET_PROFITS);\r\n return;\r\n }\r\n\r\n const getReturnInfo = () => {\r\n let returnInfo = {} as SaveReturnInfo;\r\n returnInfo.AccountNumber = accountNumber!;\r\n returnInfo.LastStep = currentPage!;\r\n\r\n return returnInfo;\r\n };\r\n\r\n return (\r\n
\r\n {Object.keys(initialValues).length > 0 ?\r\n {\r\n await saveNetProfitsAdditions(values);\r\n\r\n const returnInfo = getReturnInfo();\r\n await saveProgressService.saveNetProfitsAdditionsDeductions({\r\n AccountNumber: accountNumber!,\r\n Data: values,\r\n });\r\n await saveProgressService.saveReturnInfo(returnInfo);\r\n\r\n history.push(ROUTES.RENT_PAID);\r\n }}>\r\n {({ values, dirty, errors, touched }) => (\r\n
\r\n \r\n\r\n \r\n handleGoBack(dirty)}>\r\n Go Back\r\n \r\n <>   \r\n \r\n \r\n \r\n )}\r\n \r\n : null}\r\n
\r\n )\r\n};\r\n","import { Form, Formik } from 'formik';\nimport React, { useEffect, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Button } from '../../components/Button/Button';\nimport { ButtonGroup } from '../../components/ButtonGroup/ButtonGroup';\nimport { CheckboxField } from '../../components/CheckboxField/CheckboxField';\nimport { SaveReturnInfo } from '../../models/SaveProgressModels/SaveReturnInfo';\nimport { useAuth } from '../../providers/Authentication';\nimport { useBody } from '../../providers/Body';\nimport { useBusinessLicense } from '../../providers/BusinessLicense';\nimport { useLocations } from '../../providers/Locations';\nimport { useProgress } from '../../providers/Progress';\nimport { useTitle } from '../../providers/Title';\nimport { ROUTES } from '../../routes/constants';\nimport { saveProgressService } from '../../services/saveProgress';\nimport styles from './BusinessLicenseLocations.module.scss';\nimport { LoadingSpinner } from '../../components/LoadingSpinner/LoadingSpinner';\nimport { ReturnType, useFiling } from '../../providers/Filing';\nimport dayjs from 'dayjs';\nimport { BusinessLicenseLocationsForm } from '../../models/businessLicenseLocationsForm';\n\nexport const BusinessLicenseLocations = () => {\n const history = useHistory();\n const { setCurrentTitle } = useTitle();\n const { setCurrentBody } = useBody();\n const { dueDate, returnType, yearEndDate } = useFiling();\n const { currentPage, setCurrentPage } = useProgress();\n const { availableLocations, getAvailableLocations } = useLocations();\n const { selectedLocations, renewedLocations, saveSelectedLocations, getRenewedLocations } = useBusinessLicense();\n const { accountNumber } = useAuth();\n const [showCountyError, setShowCountyError] = useState(false);\n const isPastDue = dayjs().isAfter(dueDate, \"day\");\n const [combinedLocations, setCombinedLocations] = useState();\n\n useEffect(() => {\n getAvailableLocations(dayjs(yearEndDate).year());\n getRenewedLocations(dayjs(yearEndDate).year(), returnType!);\n setCurrentPage!(\"business-license-locations\");\n setCurrentTitle!(\"In what Kenton County locations do you need a business license?\");\n setCurrentBody!({ header: \"\", body: \"\" });\n }, [getAvailableLocations, getRenewedLocations, setCurrentBody, setCurrentPage, setCurrentTitle]);\n\n useEffect(() => {\n if (renewedLocations !== undefined) {\n combineSelectedAndRenewedLocations();\n }\n }, [renewedLocations]);\n\n const handleGoBack = (dirty: Boolean) => {\n if (dirty) {\n let msg = \"Are you sure you want to go back? Unsaved changes will be lost.\";\n if (!window.confirm(msg)) return;\n }\n\n if (history.location.state) {\n const past = history.location.state as any;\n if (past.from !== ROUTES.EXTENSIONS_FILED) {\n history.push(past.from);\n return;\n }\n } else {\n history.push(ROUTES.BUSINESS_LICENSE_SELECT);\n }\n\n return;\n };\n\n const getReturnInfo = () => {\n let returnInfo = {} as SaveReturnInfo;\n returnInfo.AccountNumber = accountNumber!;\n returnInfo.LastStep = currentPage!;\n\n return returnInfo;\n };\n\n const combineSelectedAndRenewedLocations = () => {\n if (!renewedLocations || !renewedLocations.length) {\n setCombinedLocations({ ...selectedLocations } as BusinessLicenseLocationsForm);\n }\n\n const renewedLocationsObj = Object.fromEntries(renewedLocations!.map((val) => [val, true]));\n const combinedLocationsObj = {\n ...selectedLocations,\n ...renewedLocationsObj\n } as BusinessLicenseLocationsForm;\n\n setCombinedLocations(combinedLocationsObj);\n };\n\n const getTrueLocations = (values: BusinessLicenseLocationsForm) => {\n return Object.fromEntries(Object.entries(values).filter(([key, val]) => !!val && !renewedLocations!.includes(key)));\n };\n\n return (\n <>\n {showCountyError ? \n
You have selected more than 4 locations. You must select a county-wide license on the previous page if you'd like to select more than 4 locations.
\n : null}\n
\n {combinedLocations === undefined ? (\n \n ) : (\n {\n const trueLocations = getTrueLocations(values);\n await saveSelectedLocations(trueLocations);\n\n const returnInfo = getReturnInfo();\n await saveProgressService.saveBusinessLicenseLocations({\n AccountNumber: returnInfo.AccountNumber,\n Data: trueLocations,\n });\n await saveProgressService.saveReturnInfo(returnInfo);\n\n history.push(ROUTES.ATTACHMENTS, { from: ROUTES.BUSINESS_LICENSE_LOCATIONS });\n }}\n validate={(values) => {\n const trueLocations = Object.keys(getTrueLocations(values));\n \n if (trueLocations.length > 4 && !isPastDue) {\n setShowCountyError(true);\n } else {\n setShowCountyError(false);\n }\n\n if (!trueLocations.length && !renewedLocations!.length) {\n return {\n oneRequired: \"You must select at least one location.\"\n };\n }\n }}\n >\n {({ values, dirty, errors }) => {\n const trueLocations = Object.keys(getTrueLocations(values));\n const isValid = trueLocations.length + renewedLocations!.length > 0 && (trueLocations.length <= 4 || isPastDue);\n return (\n
\n \n {availableLocations?.map((city) => {\n if (city.code === \"FV01\" || city.code === \"KV01\" || city.code === \"WT01\") {\n return\n } else {\n return (\n \n );\n }\n })}\n
\n \n handleGoBack(dirty)}\n >\n Go Back\n \n \n \n \n )\n }}\n \n )}\n \n \n )\n}","import { ApiResponse, AxiosService } from \"./axiosService\";\r\n\r\nexport class AttachmentService extends AxiosService {\r\n public constructor() { super(); }\r\n\r\n async saveAttachment(returnId: number, file: File) {\r\n try {\r\n var formData = new FormData();\r\n formData.append(\"File\", file as any);\r\n formData.append(\"ReturnId\", returnId.toString())\r\n\r\n const { data } = await this.axios.post>('/TaxPortalForm/saveAttachment', formData, {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n });\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n\r\n async getAttachments(returnId: number) {\r\n try {\r\n const { data } = await this.axios.get>(`/TaxPortalForm/getAttachments?returnId=${returnId}`);\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n\r\n async deleteAttachment(returnId: number, fileName: string) {\r\n try {\r\n const { data } = await this.axios.delete>(`/TaxPortalForm/deleteAttachment?returnId=${returnId}&fileName=${fileName}`);\r\n return data;\r\n } catch (e) {\r\n console.error(e);\r\n throw e;\r\n }\r\n }\r\n}\r\n\r\nexport const attachmentService = new AttachmentService();","import React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { useHistory } from 'react-router-dom';\nimport { Button } from '../../components/Button/Button';\nimport { ButtonGroup } from '../../components/ButtonGroup/ButtonGroup';\nimport { useAuth } from '../../providers/Authentication';\nimport { useProgress } from '../../providers/Progress';\nimport { useTitle } from '../../providers/Title';\nimport { ROUTES } from '../../routes/constants';\nimport { attachmentService } from '../../services/attachmentService';\nimport { saveProgressService } from '../../services/saveProgress';\nimport styles from './Attachments.module.scss';\nimport { ReturnType, useFiling } from '../../providers/Filing';\nimport { annualService } from '../../services/annualService';\nimport dayjs from 'dayjs';\n\nexport const Attachments = () => {\n const history = useHistory();\n const fileRef = useRef(null);\n const { setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const { returnType, yearEndDate } = useFiling();\n const [selectedFile, setSelectedFile] = useState();\n const [attachments, setAttachments] = useState([]);\n const [returnId, setReturnId] = useState();\n const [userRemindedToUpload, setUserRemindedToUpload] = useState(false);\n const { accountNumber } = useAuth();\n\n useEffect(() => {\n setCurrentPage!('attachments');\n setCurrentTitle!('Upload All Applicable Tax Forms and Schedules');\n\n (async () => {\n const value = await saveProgressService.getProgress(accountNumber!);\n if (!!value) {\n setReturnId((value as any).Return.Id);\n }\n })();\n }, [setCurrentPage, setCurrentTitle, accountNumber]);\n\n useEffect(() => {\n if (!returnId) {\n return;\n }\n\n (async () => {\n var files = await attachmentService.getAttachments(returnId);\n setAttachments(files.data);\n })();\n }, [returnId])\n\n const submit = useCallback(async () => {\n if (!selectedFile || !returnId) {\n return;\n }\n\n const maxFileSize = 50 * 1024 * 1024; // 50MB\n\n if (selectedFile.size > maxFileSize) {\n alert(\"Your file is too large!\\n\\nMaximum allowed size is 50MB.\");\n return;\n }\n\n try {\n var files = await attachmentService.saveAttachment(returnId, selectedFile);\n\n if (!files.data.includes(selectedFile.name)) {\n alert(\"File was NOT uploaded!\");\n } else {\n setSelectedFile(undefined);\n fileRef.current!.value = '';\n }\n\n setAttachments(files.data);\n } catch (e) {\n alert(\"An error occurred while uploading your file.\");\n }\n }, [returnId, selectedFile]);\n\n const cancelQueuedFile = useCallback(() => {\n setSelectedFile(undefined);\n fileRef.current!.value = '';\n }, [returnId, selectedFile]);\n\n const deleteAttachment = useCallback(async (fileName: string) => {\n if (!returnId) {\n return;\n }\n\n var files = await attachmentService.deleteAttachment(returnId, fileName)\n setAttachments(files.data);\n }, [returnId]);\n\n return (\n
\n

Possible Document Uploads: Federal Schedule C, Federal Schedule E, Federal Form 1065, Federal Form 1120S, Federal Form 8825

\n
\n \n \n \n {attachments.length ? attachments.map((x, idx) => \n \n \n \n \n ) : }\n \n
FileActions
{x}\n deleteAttachment(x)}>X\n
No files uploaded.
\n
\n
\n event.target.files?.length\n ? setSelectedFile(event.target.files[0])\n : setSelectedFile(undefined)} />\n \n {selectedFile &&\n \n \n Cancel\n \n }\n
\n
\n \n {\n if (history.location.state) {\n const past = history.location.state as any;\n if (past.from === ROUTES.REAL_TANGIBLE_VALUE || past.from === ROUTES.REAL_TANGIBLE_LOCATIONS) {\n history.push(past.from);\n return;\n }\n }\n\n if (returnType !== ReturnType.ActualReturn) {\n history.push(ROUTES.BUSINESS_LICENSE_SELECT);\n } else {\n const estimatedIsCountyWide = await annualService.getEstimatedReturnLicenseType(dayjs(yearEndDate).year());\n \n if (!estimatedIsCountyWide.data) {\n history.push(ROUTES.BUSINESS_LICENSE_SELECT);\n } else {\n history.push(ROUTES.REAL_TANGIBLE_LOCATIONS);\n }\n }\n }}\n >\n Go Back\n \n {\n if (selectedFile !== undefined) {\n alert(\"Please remember to upload or remove your selected file before continuing!\");\n return;\n }\n\n if (attachments.length === 0 && !userRemindedToUpload) {\n alert(\"ALERT - You're attempting to submit a return without uploading any supporting documents. \"\n + \"Please take a moment and upload any supporting documents from your federal tax forms.\");\n setUserRemindedToUpload(true);\n return;\n }\n\n if (returnType == ReturnType.ActualReturn) {\n history.push(ROUTES.EXTENSIONS_FILED);\n return;\n }\n \n history.push(ROUTES.REVIEW);\n }}>\n Save and Continue\n \n \n
\n
\n )\n}","import React from \"react\";\r\nimport { ReturnType } from \"../../providers/Filing\";\r\nimport styles from \"./Voucher.module.scss\";\r\n\r\ninterface VoucherProps {\r\n image?: string | undefined;\r\n alt?: string | undefined;\r\n onClick?(): void;\r\n label?: string;\r\n button?: boolean;\r\n businessAccountName?: string,\r\n businessDba?: string,\r\n accountNumber?: string,\r\n returnFiling?: ReturnType,\r\n amountDue?: string,\r\n returnDueDate?: string\r\n}\r\n\r\n\r\nexport const Voucher = React.forwardRef(({\r\n \r\n children,\r\n image,\r\n alt,\r\n businessAccountName ,\r\n businessDba ,\r\n accountNumber ,\r\n amountDue = \"$0.00\" ,\r\n returnDueDate = \"0/0/0000\" ,\r\n returnFiling \r\n\r\n}, ref) => {\r\n return (\r\n
\r\n\r\n
\r\n\r\n {alt}\r\n\r\n
\r\n

Kenton County Annual Filing Payment Coupon

\r\n\r\n
\r\n
BusinessAccountName:
{businessAccountName}
\r\n
BusinessDba:
{businessDba}
\r\n
AccountNumber:
{accountNumber}
\r\n
ReturnFiling:
{returnFiling! === ReturnType.ExtensionRequest ? 'Extension Request' : 'Return'}
\r\n
AmountDue:
{amountDue}
\r\n
ReturnDueDate:
{returnDueDate}
\r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n
• Please make check or money order payable to \"Kenton County Fiscal Court\" for amount due listed above
\r\n
• Ensure your name and address appear on your check or money order
\r\n
• Enclose check with payment coupon and mail to:
\r\n
\r\n\r\n
\r\n
Kenton County Fiscal Court
\r\n
PO Box 706237
\r\n
Cincinnati, OH 45270
\r\n
\r\n\r\n
\r\n
Please note: Payment received after the return Due Date will be subject to Penalty and Interest as outlined in Kenton County Ordinace 225.48.
\r\n
\r\n
\r\n\r\n
\r\n
\r\n );\r\n});\r\n","import React, { useCallback, useEffect, useRef, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Box, Flex } from \"rebass\";\nimport surveyFaces from \"../../assets/img/satisfaction-survey-faces.jpg\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { useTitle } from \"../../providers/Title\";\nimport { Button } from \"../../components/Button/Button\";\nimport { Voucher } from \"../../components/Voucher/Voucher\";\nimport { useReactToPrint } from \"react-to-print\";\nimport KcLogo from \"../../assets/img/KCLogoNew.png\";\nimport { annualService } from \"../../services/annualService\";\nimport { CompletedReturnDetails } from \"../../models/completedReturnDetails\";\n\nexport const Complete = () => {\n const history = useHistory();\n const confirmationNumber = (history.location as any).state.confirmationNumber;\n const { setCurrentPage } = useProgress();\n const { setCurrentTitle } = useTitle();\n const [returnDetails, setReturnDetails] = useState();\n\n const getReturnDetails = useCallback(async () => {\n const data = await annualService.getCompletedReturnData(confirmationNumber);\n if (!!data) {\n setReturnDetails(data.data);\n }\n }, [confirmationNumber]);\n\n const componentRef = useRef(null);\n const handleVoucherPrint = useReactToPrint({\n content: () => componentRef.current,\n });\n\n const handleSummaryPdfDownload = () => {\n let baseCommunityUrl = process.env.REACT_APP_BASE_COMMUNITY_URL;\n\n if (baseCommunityUrl === undefined) {\n const currentHost = window.location.hostname;\n\n if (currentHost.includes(\"localhost\")) {\n baseCommunityUrl = \"http://localhost:58661\";\n } else if (currentHost.includes(\"test\")) {\n baseCommunityUrl = \"https://testcommunity.kentoncounty.org\";\n } else if (currentHost.includes(\"uat\")) {\n baseCommunityUrl = \"https://community-uat.kentoncounty.org\";\n } else {\n baseCommunityUrl = \"https://colt.kentoncounty.org\";\n }\n\n console.log(\"environment variable not found -- setting base Community URL manually\");\n }\n\n const summaryPdfUrl = `${baseCommunityUrl}/Community/ExportToPDF/ReturnSummary?type=Annual&confirmationNumber=${confirmationNumber}`;\n\n window.open(summaryPdfUrl, \"_blank\");\n };\n\n useEffect(() => {\n getReturnDetails();\n }, [getReturnDetails]);\n\n useEffect(() => {\n setCurrentPage!(\"complete\");\n setCurrentTitle!(\"Your filing is complete\");\n }, [setCurrentPage, setCurrentTitle]);\n\n return (\n
\n \n \n \n

Please click to complete a satisfaction survey.

\n
\n \n \"satisfaction\n \n
\n
\n \n {returnDetails &&\n
\n \n
\n }\n
\n

\n Your return has been submitted, but has not yet been paid. Your confirmation number is {confirmationNumber}.\n
\n
\n Please print this page for your records.\n Additionally, you may download a PDF summary of your return by clicking the button below.\n
\n
\n Your annual return has been submitted for review by Kenton County Business Services.\n If there are any questions or issues with your filing, you will be contacted via phone or email.\n If you have any questions and would like to discuss your return, please call\n (859) 392-1440 or email business.services@kentoncounty.org.\n
\n
\n
\n Thank you for using this application.\n
\n
\n Kenton County Business Services.\n

\n \n \n \n \n
\n
\n )\n}\n","import React, { useEffect, useState, useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\nimport { useTitle } from \"../../providers/Title\";\nimport { useProgress } from \"../../providers/Progress\";\nimport { CcTransactionConfirmation } from \"../../models/ccTransactionConfirmation\";\nimport { ccService } from \"../../services/ccService\";\nimport { Box, Flex } from \"rebass\";\nimport { Modal } from \"../../components/Modal/Modal\";\nimport { ButtonGroup } from \"../../components/ButtonGroup/ButtonGroup\";\nimport { AnchorButton } from \"../../components/AnchorButton/AnchorButton\";\nimport surveyFaces from \"../../assets/img/satisfaction-survey-faces.jpg\";\nimport styles from './CcPayment.module.scss';\nimport { LoadingSpinner } from \"../../components/LoadingSpinner/LoadingSpinner\";\nimport { Button } from \"../../components/Button/Button\";\n\nexport const CcPaymentConfirmation = () => {\n const [error, setError] = useState(\"\");\n const [loading, setLoading] = useState(true);\n const [paymentStatus, setPaymentStatus] = useState(\"success\");\n const [cctData, setCctData] = useState();\n const { setCurrentTitle } = useTitle();\n const { setCurrentPage } = useProgress();\n\n const location = useLocation()\n const { confirmationNumber, returnId, returnType, amountDue, status } = useMemo(() => {\n const params = new URLSearchParams(location.search)\n const confirmationNumber = params.get(\"confirmationNumber\")\n const returnId = params.get(\"returnId\")\n const returnType = params.get(\"returnType\")\n const amountDue = params.get(\"amountDue\")\n const status = params.get(\"status\")\n\n return { confirmationNumber, returnId, returnType, amountDue, status }\n }, [location.search])\n\n const handleSummaryPdfDownload = () => {\n let baseCommunityUrl = process.env.REACT_APP_BASE_COMMUNITY_URL;\n\n if (baseCommunityUrl === undefined) {\n const currentHost = window.location.hostname;\n\n if (currentHost.includes(\"localhost\")) {\n baseCommunityUrl = \"http://localhost:58661\";\n } else if (currentHost.includes(\"test\")) {\n baseCommunityUrl = \"https://testcommunity.kentoncounty.org\";\n } else if (currentHost.includes(\"uat\")) {\n baseCommunityUrl = \"https://community-uat.kentoncounty.org\";\n } else {\n baseCommunityUrl = \"https://colt.kentoncounty.org\";\n }\n\n console.log(\"environment variable not found -- setting base Community URL manually\");\n }\n\n const summaryPdfUrl = `${baseCommunityUrl}/Community/ExportToPDF/ReturnSummary?type=Annual&confirmationNumber=${confirmationNumber}`;\n\n window.open(summaryPdfUrl, \"_blank\");\n };\n \n useEffect(() => {\n setCurrentTitle!(\"Your filing is complete\");\n setCurrentPage!(\"complete\")\n \n if (returnId !== null) {\n const parsedReturnId = parseInt(returnId)\n \n let isStale = false;\n\n (async () => {\n const data = await ccService.getTransactionDetails(parsedReturnId);\n if (!isStale) {\n if (!!data) {\n setCctData(data.data)\n setLoading(false)\n } else {\n setError(\"Sorry, we can't find your account details at this time. Please contact Kenton County for your confirmation receipt.\")\n setLoading(false)\n }\n }\n })();\n \n return () => {\n isStale = true\n }\n\n } else if (status === \"canceled\") {\n setPaymentStatus(\"canceled\")\n setLoading(false)\n } else if (status === \"failed\") {\n setPaymentStatus(\"unsuccessful\")\n setLoading(false)\n } else if(status === \"pending\") {\n setPaymentStatus(\"pending\")\n setLoading(false)\n } else {\n setError(\"Sorry, we can't find your account details at this time. Please contact Kenton County for your confirmation receipt.\")\n setLoading(false)\n }\n \n }, [confirmationNumber, returnId, returnType, status, setCurrentPage, setCurrentTitle])\n\n return (\n <>\n {error ? (

{error}. Your confirmation number is {confirmationNumber}

) : null}\n \n {paymentStatus === \"pending\" ? (\n <>\n
\n

\n Your return has been accepted, and your confirmation number is {confirmationNumber}.\n

\n

\n Please print this page for your records. Additionally, you may download a PDF summary of your return by clicking the button below.\n

\n

\n If there are any questions or issues with your filing, you will be contacted via phone or email. If you have any questions and would like to discuss your return, please call (859) 392-1440 or email business.services@kentoncounty.org.\n

\n
\n
\n

\n Thank you for using this application.\n

\n

\n Kenton County Business Services.\n

\n
\n \n ): null}\n\n {paymentStatus === \"canceled\" || paymentStatus === \"unsuccessful\" ? (\n <>\n
\n

\n Your return has been accepted, and your confirmation number is {confirmationNumber}.\n

\n

\n Your {returnType} return has been submitted for review by Kenton County Business Services; however, your payment was {paymentStatus}.\n

\n

\n Please remit the total due ${amountDue} to the following address:

Kenton County Fiscal Court,

1840 Simon Kenton Way,

Suite 5100, Covington, KY 41011.
\n

\n

\n Please print this page for your records. Additionally, you may download a PDF summary of your return by clicking the button below.\n

\n

\n If there are any questions or issues with your filing, you will be contacted via phone or email. If you have any questions and would like to discuss your return, please call (859) 392-1440 or email business.services@kentoncounty.org.\n

\n
\n
\n

\n Thank you for using this application.\n

\n

\n Kenton County Business Services.\n

\n
\n \n ): null}\n\n {cctData ? (\n <>\n

Return Confirmation

\n

Your payment was successful and your return has been accepted. Your confirmation number is {confirmationNumber}.

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {cctData.cardType === \"Checking\" || \"Saving\" ? (\n \n \n \n \n ) : \n <>\n \n \n \n \n \n \n \n \n \n }\n \n \n \n \n {cctData.billingAddr2 ? (\n \n \n \n \n ): null}\n \n \n \n \n \n
Receipt Information
Tax Fee Paid${cctData.taxFeeAmount.toFixed(2)}
NIC Service Fee Paid*${cctData.transactionFeeAmount.toFixed(2)}
Total Paid${(cctData.taxFeeAmount + cctData.transactionFeeAmount).toFixed(2)}
Last Four{cctData.lastFour}
Account Type{cctData.cardType}
Exp. Date{cctData.expiration}
Card Type{cctData.cardType}
Address{cctData.billingAddr1}
{cctData.billingAddr2}
City/State/ZIP{cctData.billingAddrCity}, {cctData.billingAddrState} {cctData.billingAddrZip}
\n
\n

*the NIC service fee paid is not collected by Kenton County

\n

\n Please print this page for your records. Additionally, you may download a PDF summary of your return by clicking the button below.\n

\n

\n Your annual return has been submitted for review by Kenton County Business Services. If there are any questions or issues with your filing, you will be contacted via phone or email. If you have any questions and would like to discuss your return, please call (859) 392-1440 or email business.services@kentoncounty.org.\n

\n
\n
\n

\n Thank you for using this application.\n

\n
\n

\n Kenton County Business Services.\n

\n
\n
\n \n ): null}\n \n {loading ? (\n \n ) :\n <>\n \n \n \n

Please click to complete a satisfaction survey.

\n
\n \n \"satisfaction\n \n
\n
\n \n \n \n \n \n }\n \n )\n};","import React from \"react\";\r\nimport { Route } from \"react-router-dom\";\r\nimport { Home } from \"../features/Home/Home\";\r\nimport { BusinessLicense } from \"../features/BusinessLicense/BusinessLicense\";\r\nimport { Login } from \"../features/Login/Login\";\r\nimport { ConfirmAccountInfo } from \"../features/AccountInfo/confirm/ConfirmAccountInfo\";\r\nimport { EditAccountInfo } from \"../features/AccountInfo/edit/EditAccountInfo\";\r\nimport { TaxForms } from \"../features/TaxForms/TaxForms\";\r\nimport { FilingInfo } from \"../features/FilingInfo/FilingInfo\";\r\nimport { GrossReceiptsLocations } from \"../features/GrossReceipts/Locations/GrossReceiptsLocations\";\r\nimport { GrossReceiptsDetails } from \"../features/GrossReceipts/Details/GrossReceiptsDetails\";\r\nimport { GrossReceiptsTotals } from \"../features/GrossReceipts/Totals/GrossReceiptsTotals\";\r\nimport { Payroll } from \"../features/Payroll/Payroll/Payroll\"; \r\nimport { KentonCountyPayroll } from \"../features/Payroll/KentonCountyPayroll/KentonCountyPayroll\"; \r\nimport { PayrollLocations } from \"../features/Payroll/Locations/PayrollLocations\"; \r\nimport { PayrollTotalsByLocation } from \"../features/Payroll/TotalsByLocation/PayrollTotalsByLocation\";\r\nimport { PayrollExpense } from \"../features/Payroll/TotalPayrollExpense/TotalPayrollExpense\";\r\nimport { NetProfits } from \"../features/NetProfits/NetProfits\"; \r\nimport { RentPaid } from \"../features/Rent/RentPaid/RentPaid\";\r\nimport { GrossAnnualRent } from \"../features/Rent/GrossAnnualRent/GrossAnnualRent\";\r\nimport { RealTangibleLocations } from \"../features/RealTangibleProperty/RealTangibleLocations/RealTangibleLocations\";\r\nimport { RealTangibleValue } from \"../features/RealTangibleProperty/RealTangibleValue/RealTangibleValue\";\r\nimport { RentLocations } from \"../features/Rent/Locations/RentLocations\";\r\nimport { TotalGrossRental } from \"../features/Rent/TotalGrossRental/TotalGrossRental\";\r\nimport { ExtensionsFiled } from \"../features/ExtensionsFiled/ExtensionFiled\";\r\nimport { Review } from \"../features/Review/Review\";\r\nimport { PropertyValueByLocation } from \"../features/RealTangibleProperty/PropertyValueByLocation/PropertyValueByLocation\";\r\nimport { BusinessLicenseSelect } from \"../features/BusinessLicenseSelect/BusinessLicenseSelect\";\r\nimport { TaxSummary } from \"../features/TaxSummary/TaxSummary\";\r\nimport { ROUTES } from \"./constants\";\r\nimport { Deductions } from \"../features/Deductions/Deductions\";\r\nimport { Additions } from \"../features/Additions/Additions\";\r\nimport { BusinessLicenseLocations } from \"../features/BusinessLicenseLocations/BusinessLicenseLocations\";\r\nimport { Attachments } from \"../features/Attachments/Attachments\";\r\nimport { Complete } from \"../features/Complete/Complete\";\r\nimport { CcPaymentConfirmation } from \"../features/CcPayment/CcPaymentConfirmation\";\r\n\r\nexport const Routes = () => {\r\n return (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n};\r\n","import React from \"react\";\nimport KCLogo from \"./assets/img/KCLogoNew.png\";\nimport { ProgressBar } from \"./components/ProgressBar/ProgressBar\";\nimport { useTitle } from \"./providers/Title\";\nimport { useBody } from \"./providers/Body\";\nimport { Routes } from \"./routes\";\nimport styles from './App.module.scss';\nimport { ROUTES } from \"./routes/constants\";\nimport { useHistory } from \"react-router-dom\";\nimport { useAuth } from \"./providers/Authentication\";\n\nexport default () => {\n const history = useHistory();\n const { currentTitle } = useTitle();\n const { currentBody } = useBody();\n const { accountNumber } = useAuth();\n\n const logout = () => {\n let msg = \"Are you sure you want to log out?\";\n if (window.confirm(msg)) {\n sessionStorage.clear();\n history.push(ROUTES.LOGIN);\n }\n }\n\n return (\n
\n
\n
\n {accountNumber ?\n \n Log out\n \n : null}\n
\n\n
\n
\n \n
\n\n
\n \n\n
\n\n
\n
\n
\n
\n\n
\n
\n

{currentTitle}

\n {/* We will need a better way to size this */}\n
\n

{currentBody.header}

\n
{currentBody.body}
\n
\n \n
\n
KENTON COUNTY
\n
\n
\n
\n

Contact Us

\n

Phone: 859-392-1440

\n \n Report a vulnerability\n \n
\n

Copyright © 2023. All rights reserved

\n
\n
\n );\n}\n","/* eslint-disable no-console */\r\n/* eslint-disable no-param-reassign */\r\n/* eslint-disable no-use-before-define */\r\n/* eslint-disable no-undef */\r\n/* eslint-disable linebreak-style */\r\n// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost'\r\n // [::1] is the IPv6 localhost address.\r\n || window.location.hostname === '[::1]'\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n || window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/,\r\n ),\r\n);\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl);\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then((registration) => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.');\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch((error) => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then((response) => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404\r\n || response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.',\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then((registration) => {\r\n registration.unregister();\r\n });\r\n }\r\n}","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport \"./styles/index.scss\";\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport { ProgressProvider } from \"./providers/Progress\";\r\nimport { AuthProvider } from \"./providers/Authentication\";\r\nimport { FilingProvider } from \"./providers/Filing\";\r\nimport { GrossReceiptsProvider } from \"./providers/GrossReceipts\";\r\nimport { PayrollProvider } from \"./providers/Payroll\";\r\nimport { NetProfitsProvider } from \"./providers/NetProfits\";\r\nimport { TitleProvider } from \"./providers/Title\";\r\nimport { RentProvider } from \"./providers/Rent\";\r\nimport { LocationsProvider } from \"./providers/Locations\";\r\nimport { RealTangibleProvider } from \"./providers/RealTangible\";\r\nimport { BodyProvider } from \"./providers/Body\";\r\nimport { PastReturnProvider } from \"./providers/pastFiled\";\r\nimport { BusinessLicenseProvider } from \"./providers/BusinessLicense\";\r\nimport { unregister } from \"./registerServiceWorker\";\r\n\r\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\r\nconst rootElement = document.getElementById(\"root\");\r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\nunregister();"],"sourceRoot":""}