{"version":3,"sources":["functions/auth.js","functions/users.js","contextapi/MyContext.js","pages/auth/Login.js","functions/notifications.js","pages/auth/ChangePassword.js","functions/dashboard.js","components/popups/Notifications.js","components/nav/Header.js","components/nav/Sidebar.js","forms/CreateUpdateUser.js","forms/DeletePopUp.js","functions/commonfunction.js","pages/admin/Users.js","functions/customers.js","forms/CustomerAddUpdateForm.js","pages/admin/Customers.js","functions/tickets.js","functions/masters.js","forms/CreateUpdateOrderType.js","functions/orderType.js","forms/CreateTicket.js","functions/estimates.js","functions/invoices.js","forms/OrderTypeUpdate.js","components/popups/Invoicedateupdate.js","components/popups/Invoiceduedateupdate.js","components/popups/Invoicenoupdate.js","components/popups/TicketDetails.js","googleMap/MyMapComponent.js","commonComponents/KeyPoints.js","pages/admin/Dashboard.js","components/popups/TicketFilters.js","pages/admin/Tickets.js","components/popups/StatusUpdate.js","functions/service.js","components/popups/InvoiceDetails.js","pages/admin/Invoices.js","components/popups/EstimateDetails.js","pages/admin/Estimates.js","pages/admin/OrderType.js","pages/auth/ResetPassword1.js","pages/auth/ResetPassword2.js","pages/auth/ResetPassword3.js","pages/auth/ResetPassword4.js","functions/reports.js","components/reports/RevenueByTech.js","components/reports/RevenueByCustomer.js","components/reports/CollectionReport.js","components/reports/TechPerformance.js","contextapi/MyProvider.js","privateRoutes/PrivateRoute.js","components/reports/TechUtilization.js","forms/CreateUpdateService.js","pages/admin/Services.js","pages/admin/Fullcalender2.js","pages/admin/withDnDContext.js","pages/admin/Fullcalender.js","components/popups/CalendarTicketDetails.js","Charts/DoubleLineChart.js","Charts/SimplePieChart.js","components/analyticsCard/Card.js","functions/analytics.js","pages/admin/DashboardAnalytics.js","pages/admin/AvgTicketResolTime.js","pages/admin/TechOccupancy.js","pages/admin/RevenueTrend.js","Charts/PieChartResponseTime.js","pages/admin/AverageResponseTime.js","pages/admin/AverageTicketLifecycle.js","pages/admin/EstimatedActualTime.js","pages/admin/AverageRevenuePertech.js","pages/admin/DeletedTickets.js","App.js","reducers/index.js","reducers/userReducer.js","index.js"],"names":["API_Base_Url","process","LoginApi","reqdata","a","fetch","method","headers","body","JSON","stringify","mobileno","password","response","status","toast","error","window","setTimeout","localStorage","clear","location","href","json","result","ok","errors","ChangePassword","getItem","ResetPassord_api_1","ResetPassord_api_2","ResetPassord_api_3","GetProfileApi","Number","mobilenumber","accesstoken","undefined","CreateUser_api","clientid","name","usertype","email","phone","profilepic","allowapplogin","colorcode","UpdateUser_api","userid","ChangeUserStatus_api","statusid","DeleteUser_api","LoadUsers_api","tab","searchtext","LoadTechnicians_api","MyContext","React","createContext","Login","setContextUser","useContext","Contextuser","IsUserBlank","Object","keys","length","history","useHistory","dispatch","useDispatch","useState","setMobileno","setPassword","iskeepsignIn","setKeepSignIn","useEffect","push","getLogin","then","res","setItem","userId","userType","profilePic","clientID","client","type","payload","timeZoneId","timeZone","createdOn","catch","class","src","alt","height","onSubmit","e","preventDefault","LoginBtnClick","autoComplete","placeholder","value","maxLength","onChange","target","id","checked","for","className","to","style","fontSize","LoadNotificationList_api","ChangePassword_pop","newPassword","setNewPassword","confirmNewPassword","setConfirmNewPassword","tabindex","role","onClick","pwd","document","getElementById","getAttribute","setAttribute","$","removeClass","addClass","Showhidepassword","req","success","message","modal","ChangePassword_submit","GetKeyPointsApi","GetMapdataApi","GetUnreadNotificationApi","ReadNotificationApi","GetAssignmentsApi","date","Notifications","intervaltime","notificationList","setNotificationList","refresh","setRefresh","setNotcount","LoadNotficationList","loadNotificationCount","setInterval","refreshNotificationCount","clearInterval","data","console","log","width","map","item","notification","timestampvalue","Header","username","notcount","marginTop","cursor","reload","Sidebar","activeMenu","setActiveMenu","toString","match","paddingTop","CreateUpdateUser","screentype","CreateUser_submit","UpdateUser_submit","setName","setPhone","setEmail","setUserType","setAllowAppLogin","allowAppLogin","setImage","image","color","setColor","loggeduserid","image_upload","uploadimage","files","alert","formData","FormData","today","Date","ext","split","pop","datevalue","getDate","getMonth","getFullYear","getHours","getMinutes","getSeconds","filename","append","requestOptions","ApiBaseURL","filepath","replace","accept","marginLeft","DeletePopUp","DeleteUser_submit","getreqFrom","marginRight","display","validateEmail","inputText","Users","selectedTab","setSelectedTab","searchText","setSearchText","userList","SetUserList","isLoaded","setIsLoaded","setScreenType","userID","setUserID","loadUsers","UpdateUser_Status_submit","newstatus","verticalAlign","borderRadius","backgroundColor","colorCode","loadUserDetails","verificationStatus","trim","LoadCustomers_api","CreateCustomer_api","customername","customertype","address","state","city","zipcode","latitude","longitude","fieldcontactname","fieldcontactemail","fieldcontactphone","accountingcontactname","accountingcontactemail","accountingcontactphone","marginpercentage","discountpercentage","UpdateCustomer_api","customerid","DeleteCustomer_api","ChangeCustomerStatus_api","Customers_Profile_api","CustomerAddUpdateForm","loadCustomers","customerinfo","SelectNewAddedCustomer","testId","customerName","setCustomerName","customerType","setCustomerType","streetAddress","setStreetAddress","setState","setCity","zipCode","setZipCode","setmarginpercentage","setLocation","setLatitude","setLongitude","contactName","setContactName","contactNumber","setContactNumber","acontactName","setAContactName","acontactNumber","setAContactNumber","aemail","setAEmail","customerId","setCustomerId","discountPercentage","setDiscountPercentage","loadCustomerDetails","val","hidden","isNaN","input","autocomplete","google","maps","places","Autocomplete","addListener","place","getPlace","div","createElement","innerHTML","adr_address","cityname","getElementsByClassName","statename","lat","geometry","long","lng","String","formatted_address","initMap_customer","Customers","customerList","setCustomerList","setCustomerinfo","setTestId","UpdateCustomer_Status_submit","textAlign","ticketcounts","LoadTicketActions_api","ticketid","ticketList_api","fromdate","todate","assigntouserid","searchkeyword","LoadNotesDetails_api","activityid","LoadPhotos_api","LoadEstimates_api","LoadInvoices_api","LoadTicketDetails_api","SearchDuplicateTicket_api","ponumber","workordernumber","jobname","CreateTicket_api","ordertypeid","orderdetails","scheduledate","scheduletime","technicianid","pofilepath","jobcontactname","jobcontactemail","jobcontactphone","addedby","expectedtime","priority","DeleteTicket_api","deletedticketList_api","RestoreTicket_api","LoadDeletedTicketDetails_api","CreateNotes_api","UpdateTicketOrderDetails_api","UpdateTicketPOWorkOrder_api","UpdateTicketAssinee_api","UpdateTicketStatus_api","SendEmail_api","ResendEmail_api","LoadOrderType_api","LoadTicketStatus_api","CreateUpdateOrderType","CreateOrderType_submit","UpdateOrderType_submit","orderType","setOrderType","CreateOrderType_api","UpdateOrderType_api","ChangeOrderTypeStatus_api","DeleteOrderType_api","CreateTicket","refreshDashboard","ticketType","AccessToken","orderDetail","setOrderDetail","ticketDate","setTicketDate","ticketTime","setTicketTime","setPoRequired","poDOc","setPoDoc","setTechnicianid","orderTypeList","setOrderTypeList","technicianList","setTechnicianlist","technicianId","setTechnicianID","txtsearchOrderType","setTxtSearchOrderType","allOrderTypes","setAllOrderTypes","orderTypeId","setOrderTypeId","setText","poNumber","setPoNumber","workOrderNumber","setWorkOrderNumber","serviceAddress","setServiceAddress","sameAsBilling","setSameAsBilling","customerAddress","setCustomerAddress","customer_state","setcustomer_State","customer_city","setcustomer_City","customer_zipcode","setcustomer_ZipCode","customer_latitude","setcustomer_Latitude","customer_longitude","setcustomer_Longitude","setJobName","setJobContactName","setJobContactEmail","setJobContactPhone","setExpectedtime","setTicketDetails","priorityId","setPriorityID","selectedcustomerid","loadOrderType","loadTechnicians","hide","loadCustomerProfile","loadTicketDetails","clearFields","UploadDocument","selectedFile","Request","SelectNewOrderType","ordertype","filter","x","selectOrderType_fn","orderdetail","show","toLowerCase","includes","search_fn","zIndex","border","rows","onFocus","attr","initMap_create","pattern","vlaue","submitTicket","UpdateEstimate_api","FinalizeEstimate_api","DraftEstimate_api","DeleteEstimate_api","UpdateInvoice_api","FinalizeInvoice_api","DraftInvoice_api","DeleteInvoice_api","UpdateInvoicedate_api","OrderTypeUpdate","orderDetail_prop","DateUpdate","loadInvoice","invoicedate1","invoiceduedate1","invoiceno","invoicedate","setInvoicedate","loaddate","format","hash","updateinvoicedate","DueDateUpdate","invoiceduedate","setInvoiceduedate","updateinvoiceduedate","Invoicenoupdate","invoiceno1","setInvoiceno","TicketDetails","loadAgain","notesdetails","setNotesdetails","ticketDetails","photosList","setPhotosList","EstimatesDetails","setEstimatesDetails","InvoicesDetails","setInvoicesDetails","openSection","setOpenSection","txtnotes","setTxtNotes","test","setTest","activiyid","setActivityId","isAddNewEstimate","setIsAddNewEstimate","setIsAddNewInvoice","selectedOrderType","setSelectedOrderType","statusList","setStatusList","selectedStatusId","setSelectedStatusId","poNumber_estimate","setPoNumber_estimate","poNumber_invoice","setPoNumber_invoice","actionList","setActionList","poDocument","setPoDocument","isMailSent","setIsMailSent","isMailSent_invoice","setIsMailSent_invoice","invoicestatus","setInvoiceStatus","cid","setCid","loadStatus","loadActions","sumEstimateAmt","sum_invoice","totalmaterialamt","totallaboramt","i","estimatedata","amount","amountLabour","parseFloat","toFixed","amountMaterial","sumPayable","invoicedata","sumPayable_invoice","amtMaterial","amtLabour","amtTaxMaterial","amtTaxLabour","amtDiscount","amountTaxMaterialRate","amountTaxMaterial","amountTaxLabourRate","amountTaxLabour","amountDiscount","amountPayable","actionlist","allowed","currentstatusactivity","loadTicketDetailsAfterDraft","screen","loadEstimate","activities","handleChange_Material","event","index","indexOf","totalmaterialamt_aa","handleChange_Labor","handleChange_TextValue_item","handleChange_TextValue_item_invoice","calculateAmount","_item","_qty","_unitprice","_total","qtyno","unitprice","finalizeEstimate","countRecords","lastIndexTitle_material","lastIndexQty_material","qty","lastIndexUnitPrice_material","lastIndexAmount_material","lastIndexTitle_labor","lastIndexQty_labor","lastIndexUnitPrice_labor","lastIndexAmount_labor","amountTax","notes","draftEstimate","updateEstimate","addMoreMaterialRow","lastIndexTitle","lastIndexQty","lastIndexUnitPrice","lastIndexAmount","addMoreLaborRow","finalizeInvoice","draftInvoice","updateInvoice","addMoreMaterialRow_invoice","addMoreLaborRow_invoice","showAssigneeUpdate","amPmString","assignedtoUserID","moment","scheduleddate","scheduledtime","handleChange_TextValue_qty_material_estimate","num","handleChange_TextValue_qty_labor_estimate","handleChange_TextValue_UnitPrice_material_estimate","handleChange_TextValue_UnitPrice_labor_estimate","handleChange_TextValue_qty_material_invoice","handleChange_TextValue_qty_labor_invoice","handleChange_TextValue_UnitPrice_material_invoice","handleChange_TextValue_UnitPrice_labor_invoice","removeRow_estimate","removeRow_invoice","sendMail","photos","selectedphotos","selected","photoid","reSendMail","handleChange_disc_percentage_estimate","handleChange_disc_percentage_invoice","currentstatus","assignedtoName","poavailable","assignedtoPhone","currentstatusid","billingaddress","contactname","contactphone","contactemail","action","addNewEstimate","addNewInvoice","activitytype","activity","activityday","activitydate","activitytime","showCreateTicketPopUp","cols","submitNotes","activitybyName","photopath","disabled","downloadpath","creationdate","creationtime","createdbyName","text","SelectImage_estimate","max","handleChange_tax_material","handleChange_tax_labor","date2","invoicenumber","editinvoiceno","margin","SelectImage_invoice","handleChange_tax_material_invoice","handleChange_tax_labor_invoice","UpdateAssignee","initMap_ticket","UpdateOrderType","UpdatePOWorkOrder","UpdateStatus","on","click","exampleMapStyles","featureType","elementType","stylers","visibility","MyMapComponent","compose","withProps","googleMapURL","loadingElement","containerElement","mapElement","withScriptjs","withGoogleMap","props","elementRef","useRef","selectedCenter","setSelectedCenter","ticketMapData","setTicketMapData","technicianMapData","setTechnicialMapData","latLng","setLatLng","defaultZoom","setDefaultZoom","defineKey","setSelectedTicketId","listener","key","addEventListener","removeEventListener","refreshmap","loadMapData","searchData","searchDateVal","searchTechnicianList","searchValue","searchOrderTypeList","technicians","list","isFilterApplied","aa","tickets","zoom","center","defaultOptions","styles","defaultcolor","defaultcolorblue","svg","svgblue","ref","icon","url","encodeURIComponent","anchor","Point","scaledSize","Size","position","onCloseClick","setTicketId","fillColor","fillOpacity","strokeColor","strokeWeight","scale","KeyPoints","keyPoint","setKeyPoints","loadKeyPoints","unassigned","assigned","submittedEstimate","drafetInvoice","Dashboard","date_lo","formateddate","Moment","txtcustomername","setCustomername","selectedCustomerID","setSelectedCustomerID","setSelectedCustomerName","assignmentList","setAssignmentList","setDate","ticketId","keypointRefresh","setKeyPointsRefresh","txtSearchInMaptemp","setTxtSearchInMaptemp","setRefreshComponentAfterSearch","searchOrderTypelist","setSearchOrderTypelist","searchTechnicianlist","setSearchTechnicianlist","txtSearchDateval","setTxtSearchDateVal","setSearchData","multiselectRef","createRef","multiselectRef1","evt","loadAssignments","axios","get","technicianID","technicianname","avatar","profileimage","totalTickets","bgColor","resourceId","techncianID","title","totalHours","start","end","unavailableTiming","err","forEach","txtsearch","assignments","ChooseCustomer","cust","whichScreen","changeStatus","marginBottom","options","onSelect","selectedList","selectedItem","obj","onSelectOrder","onRemove","removedItem","onRemoveOrder","displayValue","showCheckbox","avoidHighlightFirstOption","current","resetSelectedValues","onSelectTechnician","onRemoveTechnician","isMarkerShown","SearchCustomer","add","addminusDays","addDays","accordionitem","slideToggle","parent","siblings","find","slideUp","toggleClass","assignmentjs","slice","countTickets","inneritem","TicketFilters","handleSearch","assigneelist","statuslist","setFromdate","setTodate","setStatus","assigntoId","setAssigntoId","Tickets","urlstatus","params","setassigneelist","setStatusid","ticketList","setTicketList","selectedTicketId","paginationarr","setPaginationarr","selectedPageNo","setSelectedPageNo","totaltickets","setTotalTickets","setTxtsearch","isapplyFilter_status","setIsApplyfilter_status","isapplyFilter_assignto","setIsApplyfilter_assignto","isapplyFilter_date","setIsApplyfilter_date","keyStatus","setKeyStatus","sortingDirection","setSortingDirection","recordshowperpage","SelectKeyStatus","ticklist","totalpage","reminder","pages","sortBy","direction","array","sort","b","compareBy","cancelled","waitingonparts","OpenTicketDetails","statusactivity","StatusUpdate","selectedStatusId_prop","loadagain","whichPage","CreateService_api","Updateservice_api","ChangeserviceStatus_api","Deleteservice_api","Loadservice_api","InvoiceDetails","invoiceid","loadInvoiceList","serviceList","setserviceList","loadservices","sum","removeRow","assignedtoProfilePic","serviceName","serviceAmount","editinvoicedate","editinvoiceduedate","handleChange_TextValue_qty_material","handleChange_TextValue_UnitPrice_material","handleChange_TextValue_qty_labor","handleChange_TextValue_UnitPrice_labor","Invoice","invoiceList","setInvoiceList","totalResult","setTotalResult","setInvoiceId","setselectedTicketId","loadInvoices","countAll","countDrafted","countFinalized","countSubmitted","countPaid","totalamountgrid","openInvoiceDetails","customerphone","createdbyUserType","submittedDate","submittedTime","invoice","deletedby","estimateid","loadEstimates","setEstimateDetails","Estimates","estimateList","setEstimateList","setEstimateId","EstimateDetails","countAproovedNotAssigned","countAproovedAssigned","openEstimateDetails","OrderType","loadOrderTypes","UpdateOrderType_Status_submit","colSpan","loadOrderTypeDetails","ResetPassword1","next","NextClick","ResetPassword2","otp","setOtp","code","numInputs","ResetPassword3","confirmPassword","setConfirmPassword","ResetPassword4","GetReport_RevenueByTech_api","GetReport_CollectionReport_api","GetReport_TechUtilizationReport_api","GetReport_RevenueByCustomer_api","GetReport_TechPerformance_api","GetReport_AvgTicketResolutionTime_api","GetReport_TechOccupancy_api","GetReport_AvgRevenuePerTech_api","GetReport_AvgResponseTime_api","filterval","GetReport_AvgTicketLifeCycle_api","GetReport_EstimatedActual_api","ReportOne","ExcelFile","ReactExport","ExcelSheet","ExcelColumn","excelDataSet","setExcelDataSet","period","setPeriod","selectedTechnicianID","setSelectedTechnicianID","fromDate","setFromDate","toDate","setToDate","List","setList","loadReport","_period","_fromdate","_todate","_technicialID","dataset","invoices","j","TechnicianID","Technician","Revenue","revenue","Customer","invoiceamt","selectPeriod","element","label","AccordianChange","span","RevenueByCustomer","_customerID","Month","month","totalrevenue","CollectionReport","PONumber","InvoiceNumber","InvoiceDate","GrossAmount","grossamount","NetAmount","netamount","colspan","totalGrossAmount","totalNetAmount","TechPerformance","timedata","tech","time","mintime","avgtime","MyProvider","parse","contextUser","Provider","userinfo","children","PrivateRoute","Component","component","rest","render","TechUtilization","_technicianID","ordertocashtime","activityPerformed","draftedon","checkin","checkout","timespent","timespentminutes","CreateUpdateService","CreateService_submit","Updateservice_submit","service","setservice","serviceamount","setserviceamount","Services","serviceId","setserviceId","Updateservice_Status_submit","serviceid","serviceID","loadserviceDetails","CustomEditor","scheduler","formatedtime","edited","Isunavailable","setUnavailable","ticketendtime","setTicketEndTime","res1","evt1","close","Button","float","fontWeight","post","profileimagee","MarkUnavailable","HandleClose","FullCalendarWidget2","slotid","setID","setTitle","setRes","RESOURCES","setResourses","EVENTS","setEvents","empdata","temp","admin_id","mobile","item1","tempstart","starttime","tempend","endtime","duration","asMinutes","minutes","event_id","jobtype","jobdetails","background","padding","img","setValue","Scheduler","customEditor","events","resources","week","weekDays","weekStartOn","startHour","endHour","step","resourceFields","idField","colorField","textField","subTextField","resourceViewMode","selectedDate","fields","default","config","required","DragDropContext","HTML5Backend","withDragDropContext","prevClick","schedulerData","prev","viewModel","nextClick","onViewChange","view","setViewType","viewType","showAgenda","isEventPerspective","onSelectDate","eventClicked","slot_id","ops1","ops2","newEvent","slotId","slotName","updateEventStart","newStart","updateEventEnd","newEnd","moveEvent","onScrollRight","schedulerContent","maxScrollLeft","onScrollLeft","onScrollTop","maxScrollTop","onScrollBottom","toggleExpandFunc","toggleExpandStatus","SchedulerData","DATE_FORMAT","ViewTypes","Week","selectedAreaColor","nonWorkingTimeHeadBgColor","nonWorkingTimeBodyBgColor","startResizable","endResizable","headerEnabled","resourceName","views","localeMoment","locale","setResources","this","eventItemClick","useParams","DoubleLineBasic","xAsisData","lable","series","label1","currentdata","label2","prevdata","chart","enabled","colors","dataLabels","markers","size","strokeColors","strokeWidth","stroke","curve","lineCap","legend","align","grid","row","yaxis","yAxis","xaxis","xAxis","categories","tickAmount","SimplePieChart","part1","part2","part3","part4","offsetY","offsetX","labels","plotOptions","radialBar","startAngle","endAngle","hollow","responsive","breakpoint","AnalyticsCard","shareIcon","subTitle","GetAnalyticsSummary_api","filter_val","GetRevenueTrend_api","DashboardAnalytics","setFilterval","graphfilterval","setGraphFilterVal","summaryResult","setSummaryResult","setxAxisData","lineChartData","setLineChartData","lineChartTitle","setisLoaded","PieChartData","setPieChartData","loadAnalyticsSummary","loadRevenueTrend","loadpiechartData","currentyear","series1FromDate","prevyear","label_data","thisyear_data","prevyear_data","val1","series1Revenue","val2","series2Revenue","series1Label","responseTime","working","estimateApproval","invoicePaid","LoadLineChartData","firstTimeFixRate","averageTicketResolutionTime","averageResponseTime","estimatedTime","actualTime","techOccupancy","totalInvoices","totalRevenue","avgRevenuePerTicket","avgRevenuePerTech","totalCustomers","avgRevenuePerCustomer","AvgTicketResolTime","setType","setfilterval","ordertypeList","setOrdertypeList","tabledataList","setTableDataList","loadOrderTypelist","LoadDataList","tbldata","chartdata","serieslabel","seriesvalue","avgResolutionTime","details","ticketno","resolutiontime","TechOccupancy","filterid","setFilterid","headingList","setHeadingList","currentTotal","prevTotal","setTotal","currenttotal","prevtotal","series1label","series1value","series2value","listitem","RevenueTrend","reduce","series1Tickets","series1Estimates","series1Invoices","PieChartResponseTime","AvgResponseTime","setData","loadDataList","entryToScheduled","scheduledToVisit","avgResponseTime","ticketdate","AverageTicketLifecycle","lifecycleTime","totalTiming","EstimatedActualTime","estimatedlabel","estimatedvalue","actualvalue","AverageRevenuePertech","avgRevenue","DeletedTickets","App","transition","Slide","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","limit","exact","path","FullCalendarWidget","Invoices","RevenueByTech","rootReducer","combineReducers","user","store","createStore","composeWithDevTools","ReactDOM"],"mappings":"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","file":"static/js/main.0b9b9b37.chunk.js","sourcesContent":["import axios from 'axios'\nimport { toast } from 'react-toastify'\nimport { useSelector } from 'react-redux'\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\nexport const LoginApi = async (reqdata) => {\n try {\n var data = [];\n const response = await fetch(API_Base_Url + \"authorize\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n // 'Authorization': 'Bearer ' + this.state.AccessToken\n },\n body: JSON.stringify({\n \"username\": reqdata.mobileno,\n \"password\": reqdata.password,\n \"device\": \"web\",\n \"ipaddress\": \"127.0.0.1\"\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n toast.error(result.errors[0])\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const ChangePassword = async (reqdata) => {\n try {\n var data = [];\n const response = await fetch(API_Base_Url + \"users/changepassword\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n toast.error(result.errors[0])\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const ResetPassord_api_1 = async (reqdata) => {\n try {\n var data = [];\n const response = await fetch(API_Base_Url + \"users/forgotpassword\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n //'Authorization': 'Bearer ' + this.state.AccessToken\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n toast.error(result.errors[0])\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//verify\nexport const ResetPassord_api_2 = async (reqdata) => {\n try {\n\n const response = await fetch(API_Base_Url + \"users/verifycode\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n //'Authorization': 'Bearer ' + this.state.AccessToken\n },\n body: JSON.stringify(reqdata)\n })\n //alert(response.status)\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n toast.error(result.errors[0])\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//reset password\nexport const ResetPassord_api_3 = async (reqdata) => {\n try {\n var data = [];\n const response = await fetch(API_Base_Url + \"users/resetpassword\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json'\n //'Authorization': 'Bearer ' + this.state.AccessToken\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n toast.error(result.errors[0])\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n\n","\nimport { useSelector } from 'react-redux'\nimport { toast } from 'react-toastify'\n\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\nconst AccessToken = localStorage.getItem(\"AccessToken\");\nconst loggeduserid = Number(localStorage.getItem(\"userid\"));\n\n\n\nexport const GetProfileApi = async (mobilenumber, accesstoken) => {\n try {\n\n var data = [];\n const response = await fetch(API_Base_Url + \"users/profile?phone=\" + mobilenumber, {\n method: \"GET\",\n headers: {\n 'Authorization': 'Bearer ' + accesstoken\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Add User\nexport const CreateUser_api = async (reqdata) => {\n try {\n var clientid = localStorage.getItem(\"clientid\")\n const response = await fetch(`${API_Base_Url}users/add`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"clientid\":Number(clientid),\n \"name\": reqdata.name, \n \"usertype\": reqdata.usertype,\n \"email\": reqdata.email,\n \"phone\": reqdata.phone,\n \"profilepic\":reqdata.profilepic,\n \"password\": reqdata.password,\n \"allowapplogin\" : reqdata.allowapplogin,\n \"timezoneid\": 8,\n \"addedby\": Number(localStorage.getItem(\"userid\")),\n \"colorcode\":reqdata.colorcode\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Update User\nexport const UpdateUser_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}users/update`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"name\": reqdata.name,\n \"usertype\": reqdata.usertype,\n \"email\": reqdata.email,\n \"phone\": reqdata.phone,\n \"profilepic\":reqdata.profilepic,\n \"password\": reqdata.password,\n \"userid\": reqdata.userid,\n \"allowapplogin\" : reqdata.allowapplogin,\n \"timezoneid\": 8,\n \"updatedby\": Number(localStorage.getItem(\"userid\")),\n \"colorcode\":reqdata.colorcode\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Active Not Active status update\nexport const ChangeUserStatus_api = async (userid, statusid) => {\n try {\n const response = await fetch(`${API_Base_Url}users/status`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"userid\": userid,\n \"status\": statusid,\n \"updatedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Delete user\nexport const DeleteUser_api = async (userid) => {\n try {\n const response = await fetch(`${API_Base_Url}users/delete`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"userid\": userid,\n \"deletedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//User List\nexport const LoadUsers_api = async (tab, searchtext) => {\n // const { user } = useSelector(state => ({ ...state }))\n // var header = { 'Authorization': 'Bearer ' + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJGU01TZXJ2aWNlQWNjZXNzVG9rZW4iLCJqdGkiOiIwMGJlMGRmNC03YTBhLTRlNjQtYTdhMS0wMWZkYTQ5ZWY4ZDYiLCJpYXQiOiI0LzgvMjAyMSA0OjE0OjUxIEFNIiwiSWQiOiIyIiwiTmFtZSI6IktyaXMgSGFycGVyIiwiUGhvbmUiOiI5OTk4ODg3NzcyIiwiVXNlclR5cGUiOiJTdXBlcnZpc29yIiwiRW1haWwiOiJrcmlzaGFycGVyQGdtYWlsLmNvbSIsImV4cCI6MTYxNzk0MTY5MSwiaXNzIjoiRlNNQXV0aGVudGljYXRpb25TZXJ2ZXIiLCJhdWQiOiJGU01TZXJ2aWNlQXBwQ2xpZW50In0.keoUNJmc1eU5VXWZDTNYyULYudfyhrY7BLilk_wlG7E' }\n // return await axios.get(`${API_Base_Url}users/list?type=${tab}&search=${searchtext}`, header);\n\n try {\n var data = [];\n var clientid = localStorage.getItem(\"clientid\")\n const response = await fetch(`${API_Base_Url}users/list?clientid=${clientid}&type=${tab}&search=${searchtext}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}\n\n\nexport const LoadTechnicians_api = async () => { \n try {\n var clientid = localStorage.getItem(\"clientid\")\n var data = [];\n const response = await fetch(`${API_Base_Url}users/technicians?clientid=${clientid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}","\n\nimport React from 'react';\n\n// this is the equivalent to the createStore method of Redux\n// https://redux.js.org/api/createstore\n\nconst MyContext = React.createContext();\n\nexport default MyContext;\n","import React, { useState, useEffect } from 'react';\nimport { LoginApi } from '../../functions/auth'\nimport { GetProfileApi } from '../../functions/users'\nimport { toast } from 'react-toastify'\nimport { Link, useHistory } from 'react-router-dom'\nimport { useDispatch, useSelector } from 'react-redux'\nimport MyContext from '../../contextapi/MyContext'\nimport { Redirect, Route } from \"react-router-dom\";\n\nfunction Login() {\n const { setContextUser } = React.useContext(MyContext);\n\n const { Contextuser } = React.useContext(MyContext);\n const IsUserBlank = Object.keys(Contextuser).length;\n\n let history = useHistory();\n let dispatch = useDispatch();\n const [mobileno, setMobileno] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [iskeepsignIn, setKeepSignIn] = useState(true);\n\n\n\n useEffect(() => {\n if (localStorage.getItem(\"usertype\") === \"Accounts\" && (localStorage.getItem(\"ISREMEMBERED\") === true || localStorage.getItem(\"ISREMEMBERED\") === \"true\")) {\n history.push('/customers');\n }\n else if(localStorage.getItem(\"usertype\") === \"Dispatcher\" && (localStorage.getItem(\"ISREMEMBERED\") === true || localStorage.getItem(\"ISREMEMBERED\") === \"true\")){\n history.push('/tickets');\n }\n else if (IsUserBlank > 0 && (localStorage.getItem(\"ISREMEMBERED\") === true || localStorage.getItem(\"ISREMEMBERED\") === \"true\")) {\n history.push(\"/dashboard\");\n }\n }, [])\n\n const LoginBtnClick = (e) => {\n e.preventDefault();\n if (mobileno === \"\" || mobileno === null) {\n return toast.error(\"Please enter username\")\n }\n else if (password === \"\" || password === null) {\n return toast.error(\"Please enter password\")\n }\n getLogin();\n }\n const getLogin = async () => {\n\n try {\n\n var req = {};\n req = {\n mobileno: mobileno,\n password: password\n }\n LoginApi(req).then(res => {\n if (res !== undefined) {\n localStorage.setItem(\"AccessToken\", res.accesstoken);\n GetProfileApi(mobileno, res.accesstoken).then(result => {\n\n if (result !== undefined) {\n\n if (iskeepsignIn) {\n localStorage.setItem(\"ISREMEMBERED\", true)\n }\n else {\n localStorage.setItem(\"ISREMEMBERED\", false)\n }\n setContextUser(result)\n //store in localstorage \n localStorage.setItem(\"userinfo\", JSON.stringify(result));\n localStorage.setItem(\"userid\", result.userId);\n localStorage.setItem(\"usertype\", result.userType);\n localStorage.setItem(\"profilepic\", result.profilePic);\n localStorage.setItem(\"username\", result.name);\n localStorage.setItem(\"clientid\", result.clientID);\n localStorage.setItem(\"client\", result.client);\n if (result.userType === \"Accounts\") {\n history.push('/customers');\n }\n else if(result.userType === \"Dispatcher\"){\n history.push('/tickets');\n }\n else\n history.push('/dashboard');\n // Store in redux \n dispatch({\n type: 'LOGGED_IN_USER',\n payload: {\n \"accesstoken\": res.accesstoken,\n \"userId\": result.userId,\n \"userType\": result.userType,\n \"clientid\": result.clientID,\n \"client\": result.client,\n \"name\": result.name,\n \"email\": result.email,\n \"phone\": result.phone,\n \"timeZoneId\": result.timeZoneId,\n \"timeZone\": result.timeZone,\n \"profilePic\": result.profilePic,\n \"status\": result.status,\n \"createdOn\": result.createdOn\n }\n })\n }\n })\n\n }\n })\n .catch()\n } catch (error) {\n\n }\n }\n\n return (\n
\n
\n
\n
\n \"\"\n

Login

\n
\n
LoginBtnClick(e)} >\n
\n { setMobileno(e.target.value) }} /> {/*.replace(/\\D/, '') */}\n
\n
\n setPassword(e.target.value)} />\n
\n
\n setKeepSignIn(iskeepsignIn ? false : true)} />\n \n
\n
\n
\n \n
\n \n\n
\n
\n
\n\n
\n

Mepco

\n

Field Service Management

\n \"\"\n
\n\n
\n
\n\n
\n )\n}\n\nexport default Login\n","import { toast } from 'react-toastify'\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\n\nexport const LoadNotificationList_api = async (userid) => {\n try {\n const response = await fetch(`${API_Base_Url}notification/web?userid=${userid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n //toast.error('Something went wrong , Please try again later.')\n }\n}","import React, { useState } from 'react'\nimport { ChangePassword } from '../../functions/auth'\nimport { toast } from 'react-toastify'\n\nconst ChangePassword_pop = () => {\n const [newPassword, setNewPassword] = useState(\"\");\n const [confirmNewPassword, setConfirmNewPassword] = useState(\"\");\n\n const ChangePassword_submit = (e) => {\n //e.preventDefault();\n e.preventDefault();\n if (newPassword == \"\" || newPassword == null)\n return toast.error(\"Please enter new password.\");\n else if (confirmNewPassword == \"\" || confirmNewPassword == null)\n return toast.error(\"Please enter comfirm password.\");\n else if (newPassword != confirmNewPassword)\n return toast.error(\"New password and confirm password should be same.\");\n else {\n var req = {\n \"userid\": Number(localStorage.getItem(\"userid\")),\n \"password\": newPassword\n }\n ChangePassword(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#ChangePWD\").modal('hide');\n //refreshDashboard();\n //localStorage.clear();\n // window.location.href = '#';\n // window.location.reload();\n }\n })\n .catch();\n }\n\n }\n\n const Showhidepassword = () => {\n var pwd = document.getElementById(\"pwd\");\n var icon = document.getElementById(\"icon\");\n if (pwd.getAttribute(\"type\") == \"password\") {\n pwd.setAttribute(\"type\", \"text\");\n window.$('.icon').removeClass('fa fa-eye').addClass('fa fa-eye-slash');\n\n } else {\n pwd.setAttribute(\"type\", \"password\");\n window.$('.icon').removeClass('fa fa-eye-slash').addClass('fa fa-eye');\n }\n }\n\n return (\n\n\n
\n
\n
\n
\n \n
Change Password
\n
\n
\n
\n
\n
\n
\n

Create a new Password

\n
\n setNewPassword(e.target.value)} placeholder=\"New Password\" />\n
\n
\n setConfirmNewPassword(e.target.value)} placeholder=\"Confirm New Password\" />\n \n Showhidepassword()}>\n \n
\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default ChangePassword_pop\n","import { toast } from 'react-toastify'\n\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\nconst AccessToken = localStorage.getItem(\"AccessToken\");\nconst loggeduserid = Number(localStorage.getItem(\"userid\"));\n\n//Key Points\nexport const GetKeyPointsApi = async () => {\n\n\n try {\n const response = await fetch(API_Base_Url + \"keypoints?userid=\" + Number(localStorage.getItem(\"userid\")), {\n method: \"GET\",\n headers: {\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Map Web\nexport const GetMapdataApi = async () => {\n\n\n try {\n const response = await fetch(API_Base_Url + \"ticket/mapweb?userid=\" + Number(localStorage.getItem(\"userid\")), {\n method: \"GET\",\n headers: {\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Unread Notifications\nexport const GetUnreadNotificationApi = async () => {\n try {\n const response = await fetch(API_Base_Url + \"notification/unreadweb?userid=\" + Number(localStorage.getItem(\"userid\")), {\n method: \"GET\",\n headers: {\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n //toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Unread Notifications\nexport const ReadNotificationApi = async () => {\n try {\n const response = await fetch(API_Base_Url + \"notification/readweb?userid=\" + Number(localStorage.getItem(\"userid\")), {\n method: \"GET\",\n headers: {\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Assignments\nexport const GetAssignmentsApi = async (date) => {\n\n\n try {\n const response = await fetch(API_Base_Url + \"ticket/assignments?userid=\" + Number(localStorage.getItem(\"userid\")) + \"&date=\" + date, {\n method: \"GET\",\n headers: {\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};","import React, { useEffect, useState } from 'react'\nimport { LoadNotificationList_api } from '../../functions/notifications'\nimport { GetUnreadNotificationApi } from '../../functions/dashboard'\n\nconst Notifications = () => {\n\n const [notificationList, setNotificationList] = useState([]);\n const userid = localStorage.getItem(\"userid\");\n const [refresh, setRefresh] = useState(0)\n const [notcount, setNotcount] = useState(0)\n\n useEffect(() => {\n LoadNotficationList();\n loadNotificationCount();\n }, [])\n \n var intervaltime;\n useEffect(() => {\n intervaltime = setInterval(refreshNotificationCount, 5000)\n }, [refresh])\n\n const refreshNotificationCount = () => {\n clearInterval(intervaltime)\n setRefresh(refresh + 1)\n loadNotificationCount();\n }\n\n const loadNotificationCount = () => {\n GetUnreadNotificationApi().then(res => { \n const result = res;\n if (result != undefined) {\n setNotcount(result.message);\n localStorage.setItem(\"notificationcount\", result.message); \n }\n }).catch();\n }\n\n\n const LoadNotficationList = () => {\n LoadNotificationList_api(userid).then(res => {\n const result = res; \n if (result != undefined) {\n if (result.data == null) {\n setNotificationList([])\n }\n else\n setNotificationList(result.data);\n }\n console.log(result)\n }).catch();\n } \n\n\n return (\n
\n
\n
\n
\n \n

Notification

\n
\n\n
\n
\n {\n notificationList.length == 0 ?\n
\n \n

All caught up!

\n
\n :\n notificationList.map(item => (\n\n
\n\n
\n

{item.notification}

\n
{item.timestampvalue}
\n
\n
\n ))\n }
\n
\n
\n
\n
\n )\n}\n\nexport default Notifications\n","import React, { useEffect, useState } from 'react'\nimport { LoadNotificationList_api } from '../../functions/notifications'\nimport ChangePassword_pop from '../../pages/auth/ChangePassword'\nimport Notifications from '../popups/Notifications'\nimport { ReadNotificationApi } from '../../functions/dashboard'\n\nfunction Header() {\n\n const profilepic = localStorage.getItem(\"profilepic\");\n const username = localStorage.getItem(\"username\");\n const usertype = localStorage.getItem(\"usertype\");\n const client = localStorage.getItem(\"client\");\n const [refresh, setRefresh] = useState(0)\n const userid = localStorage.getItem(\"userid\");\n const [notificationList, setNotificationList] = useState([]);\n const [notcount, setNotcount] = useState(localStorage.getItem(\"notificationcount\"))\n\n useEffect(() => {\n refreshNotificationCount();\n }, []);\n \n var intervaltime;\n useEffect(() => {\n intervaltime = setInterval(refreshNotificationCount, 5000)\n }, [refresh])\n\n const refreshNotificationCount = () => {\n clearInterval(intervaltime)\n setRefresh(refresh + 1)\n setNotcount(localStorage.getItem(\"notificationcount\"));\n }\n\n const signOut = () => {\n localStorage.clear();\n window.location.href = '#';\n window.location.reload();\n }\n\n const ChangePassword = () => {\n window.$(\"#ChangePWD\").modal('show');\n } \n\n const openNotification = () => {\n \n ReadNotificationApi().then(res => { \n const result = res;\n if (result != undefined) {\n setNotcount(\"0\");\n localStorage.setItem(\"notificationcount\", \"0\"); \n }\n }).catch();\n\n window.$(\"#Notification\").modal('show')\n }\n return (\n <>\n
\n {/* */}\n \n {/* */}\n HE\n {/* */}\n \"\"\n \n {/* */}\n \n
\n \n \n \n )\n}\n\nexport default Header\n","\nimport React, { useState, useEffect } from 'react'\nimport { Link, NavLink, useHistory } from 'react-router-dom'\nconst Sidebar = () => {\n const [activeMenu, setActiveMenu] = useState(\"\")\n const [userType, setUserType] = useState(localStorage.getItem(\"usertype\"));\n const history = useHistory();\n const gotoDashbaord = () => {\n history.push(\"/dashboard\")\n }\n const gotoTickets = () => {\n history.push(\"/tickets\")\n }\n const gotoCustomers = () => {\n history.push(\"/customers\")\n }\n const gotoInvoices = () => {\n history.push(\"/invoices\")\n }\n const gotoEstimates = () => {\n history.push(\"/estimates\")\n }\n const gotoUsers = () => {\n history.push(\"/users\")\n }\n const gotoCalendar = () => {\n history.push(\"/calendar\")\n }\n const gotoSetting = () => {\n history.push(\"/ordertype\")\n }\n const gotoReports = () => {\n history.push(\"/revenuebytech\")\n }\n\n // function gotoDeletedTickets added by Sonali 01-04-22 feedback \n const gotoDeletedTickets = () => {\n history.push(\"/archive-tickets\")\n } \n\n useEffect(() => {\n if (window.location.toString().match(/dashboard/)) {\n //Do stuff\n setActiveMenu(\"dashboard\")\n }\n if (window.location.toString().match(/users/)) {\n //Do stuff\n setActiveMenu(\"users\")\n }\n if (window.location.toString().match(/customers/)) {\n //Do stuff\n setActiveMenu(\"customers\")\n }\n if (window.location.toString().match(/tickets/)) {\n //Do stuff\n setActiveMenu(\"tickets\")\n }\n if (window.location.toString().match(/invoices/)) {\n //Do stuff\n setActiveMenu(\"invoices\")\n }\n if (window.location.toString().match(/estimates/)) {\n //Do stuff\n setActiveMenu(\"estimates\")\n }\n if (window.location.toString().match(/ordertype/)) {\n //Do stuff\n setActiveMenu(\"ordertype\")\n }\n if (window.location.toString().match(/analytics/)) {\n //Do stuff\n setActiveMenu(\"analytics\")\n }\n\n if (window.location.toString().match(/archive-tickets/)) {\n //Do stuff\n setActiveMenu(\"deletedtickets\")\n } // added by Sonali 01-04-22 feedback \n\n \n // if (window.location.toString().match(/revenuebytech/)) {\n // //Do stuff\n // setActiveMenu(\"reports\")\n // }\n // if (window.location.toString().match(/revenuebycustomer/)) {\n // //Do stuff\n // setActiveMenu(\"reports\")\n // }\n // if (window.location.toString().match(/collectionreport/)) {\n // //Do stuff\n // setActiveMenu(\"reports\")\n // }\n // if (window.location.toString().match(/techperformance/)) {\n // //Do stuff\n // setActiveMenu(\"reports\")\n // }\n // if (window.location.toString().match(/techutilization/)) {\n // //Do stuff\n // setActiveMenu(\"reports\")\n // }\n \n }, [])\n return (\n \n\n )\n}\n\nexport default Sidebar\n\n","import React, { useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport ColorPicker from 'react-color-picker'\n\nimport 'react-color-picker/index.css'\n\nconst ApiBaseURL = process.env.REACT_APP_API_BASE_URL;\nconst CreateUpdateUser = ({ screentype, CreateUser_submit, UpdateUser_submit, name, setName, phone, setPhone, email, setEmail, password, setPassword, userType, setUserType, setAllowAppLogin, allowAppLogin, image, setImage, color, setColor }) => {\n let loggeduserid = localStorage.getItem(\"userid\");\n\n const image_upload = async (e) => {\n\n try {\n var uploadimage = [];\n uploadimage = e.target.files;\n if (uploadimage == null)\n return alert(JSON.stringify(e));\n\n const formData = new FormData();\n var today = new Date();\n var doctype = \"\";\n const ext = uploadimage[0].name.split('.').pop();\n const datevalue = today.getDate() + today.getMonth() + today.getFullYear() + today.getHours() + today.getMinutes() + today.getSeconds();\n const filename = \"profilepic_\" + datevalue + \".\" + ext;\n if (ext == \"png\" || ext == \"jpeg\" || ext == \"jpg\" || ext == \"PNG\" || ext == \"JPEG\" || ext == \"JPG\") {\n doctype = \"Image\";\n }\n else\n return alert('Please select valid image.');\n formData.append(\"uploadedby\", loggeduserid);\n formData.append(\"uploadedfrom\", \"web\");\n formData.append(\"filename\", filename);\n formData.append(\"file\", uploadimage[0]);\n const requestOptions = {\n method: \"POST\",\n headers: {\n 'Authorization': 'Bearer ' + localStorage.getItem('AccessToken')\n },\n body: formData\n }\n const response = await fetch(ApiBaseURL + 'upload', requestOptions);\n const result = await response.json();\n if (response.ok) {\n setImage(result.filepath)\n }\n else if (response.status === 400) {\n console.log(result.errors)\n toast.error(result.errors)\n }\n else if (response.status === 401) {\n toast.error('Your Session has been expired, Please login again.');\n window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/login\";\n }, 2000);\n }\n else {\n\n }\n\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n }\n\n return
\n
\n
\n
\n \n \n
{screentype == \"Create\" ? \"Add\" : \"Update\"} User
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n setName(e.target.value)} />\n
\n
\n
\n\n
\n
\n
\n setPhone(e.target.value.replace(/\\D/, ''))} />\n
\n
\n
\n
\n
\n
\n setEmail(e.target.value)} />\n
\n
\n
\n
\n
\n
\n image_upload(e)} />\n
\n
\n
\n
\n
\n
\n
\n
\n setColor(e.target.value)} />\n
\n
\n
\n {\n screentype == \"Create\" &&\n
\n
\n setPassword(e.target.value)} />\n
\n
\n }\n\n
\n
\n\n setAllowAppLogin(!allowAppLogin)} />\n  \n
\n\n
\n {\n screentype == \"Create\"\n ?\n Save \n :\n Update \n }\n
\n
\n Cancel\n
\n\n\n\n
\n\n {/* {\n screentype == \"Create\"\n ?\n
\n Save \n
\n\n :\n
\n Update \n
\n } */}\n\n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n}\n\nexport default CreateUpdateUser\n","import React from 'react'\n\n\nfunction DeletePopUp({ DeleteUser_submit, id, getreqFrom }) {\n return (\n
\n
\n
\n
\n \n \n {/*
{screentype == \"Create\" ? \"Add\" : \"Update\"} User
*/}\n
\n
\n\n
\n
\n \n
Are you sure to delete this
{getreqFrom} ?
\n
\n \n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n )\n}\n\nexport default DeletePopUp\n","\nexport const validateEmail = (inputText) => { \n var mailformat = /^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\\.[a-zA-Z0-9-]+)*$/;\n if (inputText.match(mailformat)) {\n return true;\n }\n else\n return false;\n}","import React, { useState, useEffect } from 'react'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport CreateUpdateUser from '../../forms/CreateUpdateUser'\nimport DeletePopUp from '../../forms/DeletePopUp'\nimport { toast } from 'react-toastify'\nimport { validateEmail } from '../../functions/commonfunction'\nimport { CreateUser_api, LoadUsers_api, UpdateUser_api, ChangeUserStatus_api, DeleteUser_api } from '../../functions/users'\nimport { encrytion } from '../../functions/encryption'\nimport { Height } from '@material-ui/icons'\n\n\nfunction Users() {\n\n const [name, setName] = useState(\"\");\n const [phone, setPhone] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n // const [userName, setUserName] = useState(\"\");\n const [password, setPassword] = useState(\"\");\n const [userType, setUserType] = useState(\"\");\n const [selectedTab, setSelectedTab] = useState(\"All\");\n const [searchText, setSearchText] = useState(\"\");\n const [userList, SetUserList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [screentype, setScreenType] = useState(\"Create\");\n const [userID, setUserID] = useState(0);\n const [allowAppLogin, setAllowAppLogin] = useState(false);\n const [image, setImage] = useState('');\n const [color, setColor] = useState(\"#008945\"); // added by Sonali 08/04/22\n let loggedUserType = localStorage.getItem(\"usertype\");\n\n // useEffect(() => {\n // loadUsers();\n // }, [])\n\n useEffect(() => {\n loadUsers();\n }, [selectedTab])\n\n useEffect(() => {\n loadUsers();\n }, [searchText])\n\n\n const loadUsers = () => {\n setIsLoaded(false);\n LoadUsers_api(selectedTab, searchText).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n SetUserList([])\n }\n else\n SetUserList(result.data);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const showUserCreationPopUp = () => {\n setName(\"\");\n setUserType(\"\");\n setEmail(\"\");\n setPhone(\"\");\n setUserID(\"\");\n setScreenType(\"Create\");\n setAllowAppLogin(false);\n window.$(\"#AddUser\").modal('show');\n }\n\n const CreateUser_submit = (e) => {\n e.preventDefault();\n if (name == \"\" && phone == \"\" && email == \"\")\n return toast.error(\"Please fill all fields.\");\n else if (name.trim() == \"\")\n return toast.error(\"please enter name.\");\n else if (phone.trim() == \"\")\n return toast.error(\"Please enter phone number.\");\n else if (phone.trim().length != 10)\n return toast.error(\"Please enter valid phone number\");\n else if (email.trim() == \"\")\n return toast.error(\"Please enter email id.\");\n else if (validateEmail(email.trim()) == false)\n return toast.error(\"Please enter valid email id.\");\n else if (userType.trim() == \"\" || userType == null)\n return toast.error(\"Please select user type.\");\n else if (password.trim() == \"\")\n return toast.error(\"Please enter password.\");\n\n var req = {\n name: name,\n usertype: userType,\n email: email,\n phone: phone,\n profilepic: image,\n password: password,\n allowapplogin: allowAppLogin,\n colorcode: color // added by Sonali on 08/04/22\n //password: encrytion(password)\n }\n CreateUser_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#AddUser\").modal('hide');\n setName(\"\");\n setEmail(\"\");\n setUserType(\"\");\n setPhone(\"\");\n setPassword(\"\");\n setColor(\"#008945\"); // added by Sonali on 08/04/22\n loadUsers();\n\n }\n })\n .catch();\n\n }\n\n const UpdateUser_submit = (e) => {\n e.preventDefault();\n if (name == \"\" && phone == \"\" && email == \"\")\n return toast.error(\"Please fill all fields.\");\n else if (name.trim() == \"\")\n return toast.error(\"please enter name.\");\n else if (phone.trim() == \"\")\n return toast.error(\"Please enter phone number.\");\n else if (phone.trim().length != 10)\n return toast.error(\"Please enter valid phone number\");\n else if (email.trim() == \"\")\n return toast.error(\"Please enter email id.\");\n else if (validateEmail(email.trim()) == false)\n return toast.error(\"Please enter valid email id.\");\n else if (userType.trim() == \"\" || userType == null)\n return toast.error(\"Please select user type.\");\n\n var req = {\n name: name,\n usertype: userType,\n email: email,\n phone: phone,\n profilepic: image,\n password: password,\n allowapplogin: allowAppLogin,\n userid: userID,\n colorcode: color // added by Sonali on 08/04/22\n }\n UpdateUser_api(req).then(res => {\n if (res != undefined) {\n console.log(res)\n toast.success(res.message);\n window.$(\"#AddUser\").modal('hide');\n setName(\"\");\n setEmail(\"\");\n setUserType(\"\");\n setPhone(\"\");\n setPassword(\"\");\n setColor(\"#008945\"); // added by Sonali on 08/04/22\n loadUsers();\n }\n })\n .catch();\n\n }\n\n const UpdateUser_Status_submit = (userid, newstatus) => {\n\n ChangeUserStatus_api(userid, newstatus).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadUsers();\n }\n })\n .catch();\n\n }\n\n\n const loadUserDetails = (item) => {\n setName(item.name);\n setUserType(item.userType);\n setEmail(item.email);\n setPhone(item.phone);\n setUserID(item.userId);\n setColor(item.colorCode); // added by Sonali on 08/04/22\n setAllowAppLogin(item.allowAppLogin == \"No\" ? false : true)\n setScreenType(\"Update\");\n window.$(\"#AddUser\").modal('show');\n }\n\n const deleteUserPopUp = (userid) => {\n setUserID(userid)\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const DeleteUser_submit = (userid) => {\n DeleteUser_api(userid).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#DeletePopUp\").modal('hide');\n loadUsers();\n }\n })\n .catch();\n\n }\n return (\n
\n
\n\n {/* SideBar */}\n
\n \n {/* */}\n
\n\n {/* */}\n
\n {/* */}\n
\n
\n
\n

\n Users

\n \n
\n
\n
\n \n\n
\n
\n {/* */}\n {\n isLoaded == false ?
\"\"
\n :\n
\n \n \n \n \n \n \n \n \n \n {/* */}\n \n \n \n \n {\n (userList != undefined && userList != null && userList != \"null\") &&\n userList.length == 0 ?\n \"No Record Found.\"\n :\n userList.map(item => (\n \n \n \n \n \n \n \n \n \n\n \n \n ))\n\n }\n\n \n
User NameUser PhotoUser RoleEmailPhone App Login TimeZoneVerification

Status
StatusAction
loadUserDetails(item)}>{\" \" + item.name}{\n item.profilePic != \"NA\" && item.profilePic != \"\"\n &&\n \n }{item.userType}{item.email}{item.phone}{item.allowAppLogin}{item.verificationStatus}\n {\n item.status == \"Active\"\n ?\n UpdateUser_Status_submit(item.userId, 0)} >Active\n :\n UpdateUser_Status_submit(item.userId, 1)}>Inactive\n }\n\n \n {item.userType != \"Admin\" &&\n deleteUserPopUp(item.userId)}>Delete\n }\n\n
\n
\n\n }{/* */}\n
\n
\n\n\n
\n {/* */}\n
\n {/* */}\n
\n {/* */}\n
\n\n {/* Create Form */}\n \n\n \n\n\n\n {/* */}\n\n
\n
\n )\n}\n\nexport default Users\n","import { toast } from 'react-toastify'\n\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\nvar AccessToken = localStorage.getItem(\"AccessToken\");\nconst loggeduserid = Number(localStorage.getItem(\"userid\"));\n\n//Customer List\nexport const LoadCustomers_api = async (tab, searchtext) => {\n try {\n var clientid = localStorage.getItem(\"clientid\")\n const response = await fetch(`${API_Base_Url}customers/list?clientid=${clientid}&type=${tab}&search=${searchtext}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}\n\n// Add Customers\nexport const CreateCustomer_api = async (reqdata) => {\n try {\n var clientid = localStorage.getItem(\"clientid\")\n const response = await fetch(`${API_Base_Url}customers/add`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"clientid\": Number(clientid),\n \"customername\": reqdata.customername,\n \"customertype\": reqdata.customertype,\n \"address\": reqdata.address,\n \"state\": reqdata.state,\n \"city\": reqdata.city,\n \"location\": reqdata.location,\n \"zipcode\": reqdata.zipcode,\n \"latitude\": reqdata.latitude,\n \"longitude\": reqdata.longitude,\n \"fieldcontactname\": reqdata.fieldcontactname,\n \"fieldcontactemail\": reqdata.fieldcontactemail,\n \"fieldcontactphone\": reqdata.fieldcontactphone,\n \"accountingcontactname\": reqdata.accountingcontactname,\n \"accountingcontactemail\": reqdata.accountingcontactemail,\n \"accountingcontactphone\": reqdata.accountingcontactphone,\n \"marginpercentage\": reqdata.marginpercentage,\n \"discountpercentage\": reqdata.discountpercentage,\n \"addedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Update Customer\nexport const UpdateCustomer_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}customers/update`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"customerid\": reqdata.customerid,\n \"customername\": reqdata.customername,\n \"customertype\": reqdata.customertype,\n \"address\": reqdata.address,\n \"state\": reqdata.state,\n \"city\": reqdata.city,\n \"location\": reqdata.location,\n \"zipcode\": reqdata.zipcode,\n \"latitude\": reqdata.latitude,\n \"longitude\": reqdata.longitude,\n \"fieldcontactname\": reqdata.fieldcontactname,\n \"fieldcontactemail\": reqdata.fieldcontactemail,\n \"fieldcontactphone\": reqdata.fieldcontactphone,\n \"accountingcontactname\": reqdata.accountingcontactname,\n \"accountingcontactemail\": reqdata.accountingcontactemail,\n \"accountingcontactphone\": reqdata.accountingcontactphone,\n \"marginpercentage\": reqdata.marginpercentage,\n \"discountpercentage\": reqdata.discountpercentage,\n \"updatedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Delete Customer\nexport const DeleteCustomer_api = async (customerid) => {\n try {\n const response = await fetch(`${API_Base_Url}customers/delete`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"customerid\": customerid,\n \"deletedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Active Not Active status update\nexport const ChangeCustomerStatus_api = async (customerid, statusid) => {\n try {\n const response = await fetch(`${API_Base_Url}customers/status`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"customerid\": customerid,\n \"status\": statusid,\n \"updatedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Customer profile \nexport const Customers_Profile_api = async (customerid) => {\n try {\n const response = await fetch(`${API_Base_Url}customers/profile?customerid=${customerid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n \n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}","import React, { useState, useEffect, useRef } from 'react'\nimport { toast } from 'react-toastify'\nimport { validateEmail } from '../functions/commonfunction'\nimport { CreateCustomer_api, UpdateCustomer_api } from '../functions/customers'\n\nconst CustomerAddUpdateForm = ({ screentype, loadCustomers, customerinfo, SelectNewAddedCustomer, testId }) => {\n \n const [customerName, setCustomerName] = useState(\"\");\n const [customerType, setCustomerType] = useState(\"\");\n const [streetAddress, setStreetAddress] = useState(\"\");\n const [state, setState] = useState(\"\");\n const [city, setCity] = useState(\"\");\n const [zipCode, setZipCode] = useState(\"\");\n const [marginpercentage, setmarginpercentage] = useState(0);\n //for api provide by google places\n const [location, setLocation] = useState(\"\");\n const [latitude, setLatitude] = useState(\"\");\n const [longitude, setLongitude] = useState(\"\");\n\n const [contactName, setContactName] = useState(\"\");\n const [contactNumber, setContactNumber] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [acontactName, setAContactName] = useState(\"\");\n const [acontactNumber, setAContactNumber] = useState(\"\");\n const [aemail, setAEmail] = useState(\"\");\n const [customerId, setCustomerId] = useState(0);\n const [discountPercentage, setDiscountPercentage] = useState();\n\n\n\n function initMap_customer() {\n var input = document.getElementById('searchMapInputCustomer');\n\n setStreetAddress(input.value)\n\n var autocomplete = new window.google.maps.places.Autocomplete(input);\n\n autocomplete.addListener('place_changed', function () {\n var place = autocomplete.getPlace();\n let div = document.createElement('div');\n div.innerHTML = place.adr_address;\n let cityname = div.getElementsByClassName('locality')[0].innerHTML;\n let statename = div.getElementsByClassName('region')[0].innerHTML;\n let zipCode=\"\"\n if(div.getElementsByClassName('postal-code').length>0)\n zipCode=div.getElementsByClassName('postal-code')[0].innerHTML;\n let lat = place.geometry.location.lat();\n let long = place.geometry.location.lng();\n\n console.log(place)\n setState(statename)\n setCity(cityname)\n setZipCode(zipCode)\n setLatitude(String(lat))\n setLongitude(String(long))\n setStreetAddress(place.formatted_address)\n\n // document.getElementById('location-snap').innerHTML = place.formatted_address;\n // document.getElementById('lat-span').innerHTML = place.geometry.location.lat();\n // document.getElementById('lon-span').innerHTML = place.geometry.location.lng();\n });\n }\n\n\n\n\n useEffect(() => {\n\n if (screentype != \"Create\") {\n //loadCustomerDetails(customerinfo)\n loadCustomerDetails(customerinfo)\n }\n\n\n }, [customerinfo])\n useEffect(() => {\n if (screentype == \"Create\") {\n setCustomerName(\"\");\n setCustomerType(\"\");\n setStreetAddress(\"\");\n setState(\"\");\n setCity(\"\");\n setZipCode(\"\");\n setContactName(\"\");\n setContactNumber(\"\");\n setEmail(\"\");\n setAContactName(\"\");\n setAContactNumber(\"\");\n setAEmail(\"\");\n setCustomerId(\"\");\n }\n }, [screentype]);\n\n useEffect(() => {\n if (screentype == \"Create\") {\n setCustomerName(\"\");\n setCustomerType(\"\");\n setStreetAddress(\"\");\n setState(\"\");\n setCity(\"\");\n setZipCode(\"\");\n setContactName(\"\");\n setContactNumber(\"\");\n setEmail(\"\");\n setAContactName(\"\");\n setAContactNumber(\"\");\n setAEmail(\"\");\n setCustomerId(\"\");\n window.$(\"#searchMapInput\").val('')\n }\n }, [testId]);\n\n\n\n\n const CreateCustomer_submit = (e) => {\n e.preventDefault();\n if (customerName == \"\" && customerType == \"\" && email == \"\" && streetAddress == \"\")\n return toast.error(\"Please fill all fields.\");\n else if (customerName.trim() == \"\")\n return toast.error(\"please enter customer name.\");\n else if (customerType.trim() == \"\" || customerType == null)\n return toast.error(\"Please select customer type.\");\n else if (streetAddress.trim() == \"\")\n return toast.error(\"Please enter address.\");\n else if (state.trim() == \"\" || state == null)\n return toast.error(\"Please enter state.\");\n else if (city.trim() == \"\" || city == null)\n return toast.error(\"Please enter city.\");\n // else if (zipCode.trim() == \"\")\n // return toast.error(\"Please enter zip code.\");\n else if (acontactName.trim() == \"\")\n return toast.error(\"Please enter contact name.\");\n else if (aemail != \"\" && validateEmail(aemail.trim()) == false)\n return toast.error(\"Please enter valid email id.\");\n else if (acontactNumber.trim() === \"\")\n return toast.error(\"Please enter phone number\");\n\n var req = {\n \"customername\": customerName,\n \"customertype\": customerType,\n \"address\": streetAddress,\n \"state\": state,\n \"city\": city,\n \"location\": location,\n \"zipcode\": zipCode,\n \"latitude\": latitude,\n \"longitude\": longitude,\n \"fieldcontactname\": contactName,\n \"fieldcontactemail\": email,\n \"fieldcontactphone\": contactNumber,\n \"accountingcontactname\": acontactName,\n \"accountingcontactemail\": aemail,\n \"accountingcontactphone\": acontactNumber,\n \"marginpercentage\": marginpercentage,\n \"discountpercentage\": Number(discountPercentage)\n }\n CreateCustomer_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#CustomerFormPop\").modal('hide');\n loadCustomers();\n SelectNewAddedCustomer(res.customerid)\n }\n })\n .catch();\n\n }\n\n const UpdateCustomer_submit = (e) => {\n e.preventDefault();\n if (customerName == \"\" && customerType == \"\" && email == \"\" && streetAddress == \"\")\n return toast.error(\"Please fill all fields.\");\n else if (customerName.trim() == \"\")\n return toast.error(\"please enter customer name.\");\n else if (customerType.trim() == \"\" || customerType == null)\n return toast.error(\"Please select customer type.\");\n else if (streetAddress.trim() == \"\")\n return toast.error(\"Please enter address.\");\n else if (state.trim() == \"\" || state == null)\n return toast.error(\"Please enter state.\");\n else if (city.trim() == \"\" || city == null)\n return toast.error(\"Please enter city.\");\n // else if (zipCode.trim() == \"\")\n // return toast.error(\"Please enter zip code.\");\n else if (acontactName.trim() == \"\")\n return toast.error(\"Please enter contact name.\");\n else if (aemail != \"\" && validateEmail(aemail.trim()) == false)\n return toast.error(\"Please enter valid email id.\");\n else if (acontactNumber.trim() === \"\")\n return toast.error(\"Please enter phone number\");\n\n var req = {\n \"customerid\": customerId,\n \"customername\": customerName,\n \"customertype\": customerType,\n \"address\": streetAddress,\n \"state\": state,\n \"city\": city,\n \"location\": location,\n \"zipcode\": zipCode,\n \"latitude\": latitude,\n \"longitude\": longitude,\n \"fieldcontactname\": contactName,\n \"fieldcontactemail\": email,\n \"fieldcontactphone\": contactNumber,\n \"accountingcontactname\": acontactName,\n \"accountingcontactemail\": aemail,\n \"accountingcontactphone\": acontactNumber,\n \"marginpercentage\": marginpercentage,\n \"discountpercentage\": Number(discountPercentage)\n }\n UpdateCustomer_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#CustomerFormPop\").modal('hide');\n loadCustomers();\n }\n })\n .catch();\n\n }\n\n const loadCustomerDetails = (item) => {\n setCustomerName(item.customername);\n setCustomerType(item.customertype);\n setStreetAddress(item.address);\n setState(item.state);\n setCity(item.city);\n setLocation(item.location);\n setZipCode(item.zipcode);\n setLatitude(item.latitude);\n setLongitude(item.longitude);\n setContactName(item.fieldcontactname);\n setContactNumber(item.fieldcontactphone);\n setEmail(item.fieldcontactemail);\n setAContactName(item.accountingcontactname);\n setAContactNumber(item.accountingcontactphone);\n setAEmail(item.accountingcontactemail);\n setmarginpercentage(item.marginpercentage)\n setCustomerId(item.customerid);\n setDiscountPercentage(item.discountpercentage)\n //setScreenType(\"Update\");\n window.$(\"#CustomerFormPop\").modal('show');\n }\n\n return
\n
\n
\n
\n \n \n
Add New Customer
\n
\n\n
\n
\n
\n
\n
\n
\n setCustomerName(e.target.value)} />\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n initMap_customer()} />\n
\n
\n
\n
\n
\n
\n setState(e.target.value)} />\n
\n
\n
\n
\n setCity(e.target.value)} />\n
\n
\n
\n setZipCode(e.target.value.replace(/\\D/, ''))} />\n
\n
\n {/*
\n
\n \n setContactName(e.target.value)} />\n
\n
\n
\n
\n setEmail(e.target.value)} />\n
\n
\n
\n
\n setContactNumber(e.target.value.replace(/\\D/, ''))} />\n
\n
*/}\n\n
\n
\n \n setAContactName(e.target.value)} />\n
\n
\n
\n
\n setAEmail(e.target.value)} />\n
\n
\n
\n
\n setAContactNumber(e.target.value.replace(/\\D/, ''))} />\n
\n
\n {\n screentype == \"Create\"\n ?\n
\n SAVE \n
\n :\n //Update\n
\n Update \n
\n }\n
\n Cancel\n
\n {/*

Autocomplete Address Search Box using Google Maps Javascript API

*/}\n\n {/* \n
    \n
  • Full Address:
  • \n
  • Latitude:
  • \n
  • Longitude:
  • \n
*/}\n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n}\nexport default CustomerAddUpdateForm;\n\n\n\n","import React, { useState, useEffect } from 'react'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport DeletePopUp from '../../forms/DeletePopUp'\nimport { toast } from 'react-toastify'\nimport CustomerAddUpdateForm from '../../forms/CustomerAddUpdateForm'\nimport MyContext from '../../contextapi/MyContext'\n\nimport { LoadCustomers_api, DeleteCustomer_api, ChangeCustomerStatus_api, Customers_Profile_api } from '../../functions/customers'\n\nfunction Customers() {\n const { Contextuser } = React.useContext(MyContext);\n const [customerList, setCustomerList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [selectedTab, setSelectedTab] = useState(\"All\");\n const [searchText, setSearchText] = useState(\"\");\n const [screentype, setScreenType] = useState(\"Create\");\n const [customerinfo, setCustomerinfo] = useState({});\n const [customerId, setCustomerId] = useState(0);\n const [testId, setTestId] = useState(0);\n const usertype = localStorage.getItem(\"usertype\");\n\n useEffect(() => { \n loadCustomers();\n }, [selectedTab]);\n\n useEffect(() => {\n loadCustomers();\n }, [searchText])\n\n const loadCustomers = () => {\n setIsLoaded(false);\n LoadCustomers_api(selectedTab, searchText).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setCustomerList([])\n }\n else\n setCustomerList(result.data);\n }\n else {\n setCustomerList([])\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const showCustomerCreationPopUp = () => {\n setScreenType(\"Create\");\n setTestId(testId + 1)\n window.$(\"#CustomerFormPop\").modal('show');\n }\n\n\n\n const UpdateCustomer_Status_submit = (userid, newstatus) => {\n\n ChangeCustomerStatus_api(userid, newstatus).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadCustomers();\n }\n })\n .catch();\n\n }\n\n const deleteCustomerPopUp = (customerid) => {\n setCustomerId(customerid)\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const DeleteCustomer_submit = (customerid) => {\n DeleteCustomer_api(customerid).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#DeletePopUp\").modal('hide');\n loadCustomers();\n }\n })\n .catch();\n }\n\n const loadCustomerDetails = (item) => {\n setScreenType(\"Update\");\n setCustomerinfo(item);\n }\n\n const SelectNewAddedCustomer = () => {\n\n }\n\n\n return (\n
\n
\n\n
\n \n\n {/* */}\n
\n\n {/* */}\n
\n {/* */}\n
\n
\n
\n

\n Customers\n

\n \n
\n
\n \n
\n
\n
\n
\n setSearchText(e.target.value)} />\n \n
\n
\n
\n
\n\n
\n
\n {/* */}\n {\n isLoaded == false ?
\"\"
\n :\n
\n \n \n \n \n {/* */}\n \n \n \n \n \n \n \n {\n customerList.length == 0 ?\n \"No Record Found.\"\n :\n customerList.map(item => (\n \n \n {/* */}\n \n \n \n \n \n \n \n ))\n }\n\n \n
Customer NameField ContactBilling ContactBilling AddressType StatusTicketsAction
(usertype===\"Admin\" || usertype===\"Accounts\")&& loadCustomerDetails(item)}\n >{item.customername}{item.fieldcontactname}
{item.fieldcontactphone}
{item.fieldcontactemail}
{item.accountingcontactname}
{item.accountingcontactphone}
{item.accountingcontactemail}
{item.address}{item.customertype} \n {\n item.status == \"Active\"\n ?\n UpdateCustomer_Status_submit(item.customerid, 0)} >Active\n :\n UpdateCustomer_Status_submit(item.customerid, 1)}>Inactive\n }\n\n {item.ticketcounts}\n {(item.userType != \"Admin\" && item.ticketcounts == 0) &&\n deleteCustomerPopUp(item.customerid)}>Delete\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\nexport default Customers\n","import { toast } from 'react-toastify'\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\n\n\n//Load Ticket Actions\nexport const LoadTicketActions_api = async (userid, ticketid) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/actionlist?userid=${userid}&ticketid=${ticketid}&type=web`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Ticket List/search Result\n\nexport const ticketList_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/list`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"requestedby\": reqdata.userid,\n \"fromdate\": reqdata.fromdate,\n \"todate\": reqdata.todate,\n \"status\": reqdata.status,\n \"technicianid\": Number(reqdata.assigntouserid),\n \"searchkeyword\": reqdata.searchkeyword\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Load notes\nexport const LoadNotesDetails_api = async (ticketid, userid, activityid) => {\n try {\n const response = await fetch(`${API_Base_Url}notes/load?userid=${userid}&ticketid=${ticketid}&activityid=${activityid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n \n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//load Photos\nexport const LoadPhotos_api = async (ticketid, userid, activityid) => {\n try {\n const response = await fetch(`${API_Base_Url}photos/load?userid=${userid}&ticketid=${ticketid}&activityid=${activityid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Load Estimates\nexport const LoadEstimates_api = async (ticketid, userid, activityid) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/load?userid=${userid}&ticketid=${ticketid}&activityid=${activityid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Load Invoices\nexport const LoadInvoices_api = async (ticketid, userid, activityid) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/load?userid=${userid}&ticketid=${ticketid}&activityid=${activityid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Ticket Details\nexport const LoadTicketDetails_api = async (ticketid, userid) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/details?userid=${userid}&ticketid=${ticketid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n console.log(result,userid, ticketid,\"response\")\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n\n\n//Search Duplicate Ticket\nexport const SearchDuplicateTicket_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/searchduplicate`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({ \n \"ponumber\": reqdata.ponumber,\n \"wonumber\": reqdata.workordernumber,\n \"jobname\": reqdata.jobname\n \n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n console.log(\"res_req\",result)\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Ticket Add\nexport const CreateTicket_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/add`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"customerid\": reqdata.customerid,\n \"ordertypeid\": reqdata.ordertypeid,\n \"orderdetails\": reqdata.orderdetails,\n \"scheduledate\": reqdata.scheduledate,\n \"scheduletime\": reqdata.scheduletime,\n \"technicianid\": reqdata.technicianid,\n //\"porequired\": reqdata.porequired,\n \"pofilepath\": reqdata.pofilepath,\n \"ponumber\": reqdata.ponumber,\n \"workordernumber\": reqdata.workordernumber,\n \"address\": reqdata.address,\n \"state\": reqdata.state,\n \"city\": reqdata.city,\n \"zipcode\": reqdata.zipcode,\n \"latitude\": reqdata.latitude,\n \"longitude\": reqdata.longitude,\n \"jobname\": reqdata.jobname,\n \"jobcontactname\": reqdata.jobcontactname,\n \"jobcontactemail\": reqdata.jobcontactemail,\n \"jobcontactphone\": reqdata.jobcontactphone,\n \"addedby\": reqdata.addedby,\n \"expectedtime\":reqdata.expectedtime,\n \"priority\":reqdata.priority\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n console.log(\"res_req\",result)\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n// Delete Ticket added by sonali 31/03/22\nexport const DeleteTicket_api = async (ticketid) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/delete`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"ticketid\": ticketid\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n\n// Deleted Ticket List Api added by Sonali 01-04-22 feedback\n\nexport const deletedticketList_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/deletedticket`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"requestedby\": reqdata.userid,\n \"fromdate\": reqdata.fromdate,\n \"todate\": reqdata.todate,\n \"status\": reqdata.status,\n \"technicianid\": Number(reqdata.assigntouserid),\n \"searchkeyword\": reqdata.searchkeyword\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n// Restore Ticket added by sonali 01/04/22 feedback\nexport const RestoreTicket_api = async (ticketid) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/restore`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"ticketid\": ticketid\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n\n\n//Deleted Ticket Details\nexport const LoadDeletedTicketDetails_api = async (ticketid, userid) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/deleteddetails?userid=${userid}&ticketid=${ticketid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n console.log(result,userid, ticketid,\"response\")\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n\n//Notes Add\nexport const CreateNotes_api = async (req) => {\n try {\n const response = await fetch(`${API_Base_Url}notes/add`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Update order details\nexport const UpdateTicketOrderDetails_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/updateorder`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n const result = await response.json();\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n \n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//update po work order number\nexport const UpdateTicketPOWorkOrder_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/updatepodetail`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Update Assignee\nexport const UpdateTicketAssinee_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/updateassignment`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Update status\nexport const UpdateTicketStatus_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ticket/status`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n\n//send Email\nexport const SendEmail_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}mail/send`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Resend Email\nexport const ResendEmail_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}mail/resend`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if (result.errors != undefined) {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n\n","import { toast } from 'react-toastify'\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\n//Order Types\nexport const LoadOrderType_api = async () => {\n try {\n var clientid = localStorage.getItem(\"clientid\")\n const response = await fetch(`${API_Base_Url}masters/ordertype?clientid=${clientid}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}\n\n//ticket status\nexport const LoadTicketStatus_api = async (type) => {\n try {\n // var usertype = localStorage.getItem(\"usertype\");\n // var type = \"\";\n // if (usertype == \"Accounts\")\n // type = \"invoice_accounts\";\n // if (usertype == \"Supervisor\")\n // type = \"invoice_supervisor\";\n // if (usertype == \"Admin\")\n // type = \"web\"\n const response = await fetch(`${API_Base_Url}masters/status?type=${type}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}\n\n\n","import React from 'react'\n\n\nconst CreateUpdateOrderType = ({ screentype, CreateOrderType_submit, UpdateOrderType_submit, orderType, setOrderType }) => {\n return
\n
\n
\n
\n \n \n
{screentype == \"Create\" ? \"Add\" : \"Update\"} Order Type
\n
\n
\n
\n
\n\n
\n
\n
\n setOrderType(e.target.value)} />\n
\n
\n
\n
\n Cancel\n
\n\n {\n screentype == \"Create\"\n ?\n
\n SAVE \n
\n\n :\n
\n SAVE \n
\n }\n\n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n}\n\nexport default CreateUpdateOrderType\n","\nimport { useSelector } from 'react-redux'\nimport { toast } from 'react-toastify'\n\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\nconst AccessToken = localStorage.getItem(\"AccessToken\");\nconst loggeduserid = Number(localStorage.getItem(\"userid\"));\n\n\n\n\n//Add OrderType\nexport const CreateOrderType_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ordertype/add`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Update OrderType\nexport const UpdateOrderType_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}ordertype/update`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Active Not Active status update\nexport const ChangeOrderTypeStatus_api = async (ordertypeid, statusid) => {\n try {\n const response = await fetch(`${API_Base_Url}ordertype/status`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"ordertypeid\": ordertypeid,\n \"status\": statusid,\n \"updatedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Delete OrderType\nexport const DeleteOrderType_api = async (ordertypeid) => {\n try {\n const response = await fetch(`${API_Base_Url}ordertype/delete`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"ordertypeid\": ordertypeid, \n \"deletedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//User List\nexport const LoadOrderType_api = async (searchtext) => {\n // const { user } = useSelector(state => ({ ...state }))\n // var header = { 'Authorization': 'Bearer ' + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJGU01TZXJ2aWNlQWNjZXNzVG9rZW4iLCJqdGkiOiIwMGJlMGRmNC03YTBhLTRlNjQtYTdhMS0wMWZkYTQ5ZWY4ZDYiLCJpYXQiOiI0LzgvMjAyMSA0OjE0OjUxIEFNIiwiSWQiOiIyIiwiTmFtZSI6IktyaXMgSGFycGVyIiwiUGhvbmUiOiI5OTk4ODg3NzcyIiwiVXNlclR5cGUiOiJTdXBlcnZpc29yIiwiRW1haWwiOiJrcmlzaGFycGVyQGdtYWlsLmNvbSIsImV4cCI6MTYxNzk0MTY5MSwiaXNzIjoiRlNNQXV0aGVudGljYXRpb25TZXJ2ZXIiLCJhdWQiOiJGU01TZXJ2aWNlQXBwQ2xpZW50In0.keoUNJmc1eU5VXWZDTNYyULYudfyhrY7BLilk_wlG7E' }\n // return await axios.get(`${API_Base_Url}users/list?type=${tab}&search=${searchtext}`, header);\n try {\n var data = [];\n const response = await fetch(`${API_Base_Url}ordertype/list?userid=${Number(localStorage.getItem(\"userid\"))}&search=${searchtext}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport { CreateTicket_api, SearchDuplicateTicket_api } from '../functions/tickets'\nimport { LoadOrderType_api } from '../functions/masters'\nimport { LoadUsers_api, LoadTechnicians_api } from '../functions/users'\nimport CreateUpdateOrderType from '../forms/CreateUpdateOrderType'\nimport { CreateOrderType_api } from '../functions/orderType'\nimport { Customers_Profile_api } from '../functions/customers'\nimport { LoadTicketDetails_api } from '../functions/tickets'\n\nfunction CreateTicket({ customerid, refreshDashboard, testId, ticketid,ticketType=\"\"}) {\n\n const API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n const AccessToken = localStorage.getItem(\"AccessToken\");\n\n const [ticketTitle, setTicketTitle] = useState(\"\");\n const [orderType, setOrderType] = useState(\"\");\n const [orderDetail, setOrderDetail] = useState(\"\");\n const [ticketDate, setTicketDate] = useState(\"\");\n const [ticketTime, setTicketTime] = useState(\"\");\n const [poRequired, setPoRequired] = useState(false);\n const [poDOc, setPoDoc] = useState(\"\");\n const [technicianid, setTechnicianid] = useState(0);\n const loggeduserid = Number(localStorage.getItem(\"userid\"));\n const [orderTypeList, setOrderTypeList] = useState([]);\n const [technicianList, setTechnicianlist] = useState([]);\n const [technicianId, setTechnicianID] = useState(0);\n const [txtsearchOrderType, setTxtSearchOrderType] = useState(\"\");\n const [allOrderTypes, setAllOrderTypes] = useState([]);\n const [screentype, setScreenType] = useState(\"Create\");\n const [orderTypeId, setOrderTypeId] = useState(0);\n const [test, setText] = useState(0);\n const [showsearch, setshowsearch] = useState(false);\n const [poNumber, setPoNumber] = useState(\"\");\n const [workOrderNumber, setWorkOrderNumber] = useState(\"\");\n const [serviceAddress, setServiceAddress] = useState(\"\");\n const [sameAsBilling, setSameAsBilling] = useState(false);\n const [customerAddress, setCustomerAddress] = useState(\"\");\n const [state, setState] = useState(\"\")\n const [city, setCity] = useState(\"\")\n const [zipcode, setZipCode] = useState(\"\")\n const [latitude, setLatitude] = useState(\"\")\n const [longitude, setLongitude] = useState(\"\")\n const [customer_state, setcustomer_State] = useState(\"\")\n const [customer_city, setcustomer_City] = useState(\"\")\n const [customer_zipcode, setcustomer_ZipCode] = useState(\"\")\n const [customer_latitude, setcustomer_Latitude] = useState(\"\")\n const [customer_longitude, setcustomer_Longitude] = useState(\"\")\n const usertype = localStorage.getItem(\"usertype\");\n const [jobname, setJobName] = useState(\"\");\n const [jobcontactname, setJobContactName] = useState(\"\");\n const [jobcontactemail, setJobContactEmail] = useState(\"\");\n const [jobcontactphone, setJobContactPhone] = useState(\"\");\n const [expectedtime, setExpectedtime] = useState(\"0\")\n const [ticketDetails, setTicketDetails] = useState({});\n const [priorityId, setPriorityID] = useState(0)\n const [isLoaded, setIsLoaded] = useState(false)\n const [selectedcustomerid,setCustomerId]=useState(0)\n\n\n\n useEffect(() => {\n console.log(\"idmain\",customerid)\n loadOrderType();\n loadTechnicians();\n window.$(\"#searchOrderType\").hide();\n }, []);\n\n\n useEffect(() => {\n console.log(\"id\",customerid)\n setTxtSearchOrderType(\"\")\n setOrderTypeId(0);\n setOrderType(\"\")\n setOrderDetail(\"\");\n setTicketDate(\"\");\n setTicketTime(\"\");\n setTechnicianID(\"\")\n setPoDoc(\"\");\n setPoRequired(false);\n setSameAsBilling(false)\n if (customerid !== undefined && customerid !== 0 && customerid !== null){\n setCustomerId(customerid)\n loadCustomerProfile();\n console.log(\"id2\",customerid)\n }\n\n if (ticketid !== undefined && ticketid !== 0 && ticketid !== null && ticketid !== \"\") {\n if(ticketType===\"normal\"){ loadTicketDetails()}\n }\n }, [testId])\n\n useEffect(() => {\n console.log(\"idsame1\",customerid)\n if (sameAsBilling) {\n console.log(\"idsame2\",customerid)\n setServiceAddress(customerAddress)\n setCity(customer_city)\n setState(customer_state)\n setLatitude(customer_latitude)\n setLongitude(customer_longitude)\n setZipCode(customer_zipcode)\n }\n else\n setServiceAddress(\"\");\n }, [sameAsBilling])\n\n const loadCustomerProfile = () => {\n \n Customers_Profile_api(customerid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n //SetUserList([])\n }\n else {\n setCustomerAddress(result.address)\n setcustomer_State(result.state)\n setcustomer_City(result.city)\n setcustomer_Latitude(result.latitude)\n setcustomer_Longitude(result.longitude)\n setcustomer_ZipCode(result.zipcode)\n }\n console.log(result, \"customerprofile\")\n\n //SetUserList(result.data);\n }\n }).catch();\n }\n\n\n const loadOrderType = () => {\n console.log(\"idordertype\",customerid)\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setOrderTypeList([])\n setAllOrderTypes([])\n }\n else {\n setOrderTypeList(result.data);\n setAllOrderTypes(result.data);\n }\n }\n\n }).catch();\n }\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n const CreateOrderType_submit = (e) => {\n e.preventDefault();\n if (orderType.trim() == \"\")\n return toast.error(\"Please enter order type.\");\n\n var req = {\n \"ordertype\": orderType,\n \"addedby\": loggeduserid\n }\n CreateOrderType_api(req).then(res => {\n if (res != undefined) {\n //toast.success(res.message);\n window.$(\"#AddOrderType\").modal('hide');\n setOrderType(\"\");\n loadOrderType();\n SelectNewOrderType(res.ordertypeid)\n }\n })\n .catch();\n\n }\n\n\n\n const submitTicket = (e) => {\n \n e.preventDefault();\n \n if (orderTypeId == 0 || orderTypeId == null)\n return toast.error(\"Please choose order type.\");\n else if ((ticketDate == \"\" || ticketDate == null) && usertype !== \"Dispatcher\")\n return toast.error(\"Please enter ticket date.\");\n else if ((ticketTime == \"\" || ticketTime == null) && usertype !== \"Dispatcher\")\n return toast.error(\"Please enter ticket time.\");\n else if (expectedtime === \"0\")\n return toast.error(\"Please enter expected time.\");\n else if ((latitude == \"\" || latitude == null))\n return toast.error(\"Please select complete address.\");\n else if (longitude == \"\" || longitude == null)\n return toast.error(\"Please select complete address.\");\n\n else {\n\n var req = {\n \"ponumber\": poNumber,\n \"workordernumber\": workOrderNumber,\n \"jobname\": jobname,\n }\n\n SearchDuplicateTicket_api(req).then(result => {\n console.log(result, \"duplicateticket\")\n if (result.message === \"Ticket exists\") {\n window.$(\"#SearchDuplicateTicket\").modal('show');\n }\n else {\n window.$(\"#SearchDuplicateTicket\").modal('hide');\n CreateTicket(e);\n }\n })\n }\n\n }\n\n const CreateTicket = (e) => {\n var req = {\n \"customerid\": selectedcustomerid,\n //\"customername\": ticketTitle,\n \"ordertypeid\": Number(orderTypeId),\n \"orderdetails\": orderDetail,\n \"scheduledate\": ticketDate,\n \"scheduletime\": ticketTime,\n \"expectedtime\": expectedtime,\n \"technicianid\": Number(technicianId),\n \"ponumber\": poNumber,\n \"workordernumber\": workOrderNumber,\n \"address\": serviceAddress,\n \"state\": state,\n \"city\": city,\n \"zipcode\": zipcode,\n \"latitude\": String(latitude),\n \"longitude\": String(longitude),\n \"jobname\": jobname,\n \"jobcontactname\": jobcontactname,\n \"jobcontactemail\": jobcontactemail,\n \"jobcontactphone\": jobcontactphone,\n \"pofilepath\": poDOc,\n \"addedby\": loggeduserid,\n \"priority\": Number(priorityId)\n }\n console.log(req, \"ticketadd\")\n CreateTicket_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#SearchDuplicateTicket\").modal('hide');\n window.$(\"#CreateTicket\").modal('hide');\n //loadCustomers();\n refreshDashboard();\n clearFields();\n\n }\n })\n .catch();\n\n }\n\n const HandleClose = (e) => {\n window.$(\"#SearchDuplicateTicket\").modal('hide');\n window.$(\"#CreateTicket\").modal('hide');\n refreshDashboard();\n clearFields();\n }\n\n const UploadDocument = async (e) => {\n\n try {\n let multifile = [];\n const selectedFile = e.target.files;\n //for (let i = 0; i < selectedFile.length; i++) {\n const formData = new FormData();\n var today = new Date();\n var doctype = \"\";\n const ext = selectedFile[0].name.split('.').pop();\n const datevalue = today.getDate() + today.getMonth() + today.getFullYear() + today.getHours() + today.getMinutes() + today.getSeconds();\n const filename = \"file_\" + datevalue + \".\" + ext;\n if (ext == \"png\" || ext == \"jpeg\" || ext == \"svg\" || ext == \"wpeg\" || ext == \"PNG\" || ext == \"JPEG\" || ext == \"JPG\" || ext == \"jpg\" || ext == \"SVG\" || ext == \"WPEG\") {\n doctype = \"Image\";\n }\n else if (ext == \"pdf\" || ext == \"PDF\") {\n doctype = \"PDF\";\n }\n else if (ext == \"docx\" || ext == \"DOCX\" || ext == \"doc\" || ext == \"DOC\" || ext == \"txt\" || ext == \"TXT\") {\n doctype = \"Document\";\n }\n else if (ext == \"pptx\" || ext == \"PPTX\" || ext == \"ppt\" || ext == \"PPT\") {\n doctype = \"Presentation\";\n }\n else if (ext == \"xlsx\" || ext == \"XLSX\" || ext == \"xls\" || ext == \"XLS\") {\n doctype = \"Workbook\";\n }\n else {\n return toast.error('Please Select Valid file');\n }\n // Update the formData object \n formData.append(\"uploadedby\", loggeduserid);\n formData.append(\"file\", selectedFile[0], filename);\n const Request = {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer ' + AccessToken\n },\n body: formData\n }\n const response = await fetch(API_Base_Url + \"upload\", Request)\n const result = await response.json();\n if (response.ok) {\n // multifile = multifile.concat(result)\n setPoDoc(result.filepath)\n //$(\"#file-picker1\").hide();\n }\n else if (response.status === 400) {\n if (result.errors == undefined) { }\n else {\n toast.error(result.errors)\n }\n }\n else if (response.status === 401) {\n toast.error('Your Session has been expired, Please login again.');\n window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/login\";\n }, 2000);\n }\n else {\n //setisLoaded(true)\n }\n //}\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n\n }\n\n const clearFields = () => {\n setOrderType(\"\");\n setOrderDetail(\"\");\n setTechnicianid(0);\n setTicketDate(\"\");\n setTicketTime(\"\");\n setPriorityID(0)\n setWorkOrderNumber(\"\")\n setPoNumber(\"\")\n setJobName(\"\")\n setExpectedtime(0)\n\n\n }\n\n const showOrderTypeCreationPopUp = () => {\n //setCustomername(\"\");\n window.$(\"#AddOrderType\").modal('show');\n }\n\n // useEffect(() => {\n\n // }, [txtsearchOrderType])\n\n const search_fn = (e) => {\n var searchText = e.target.value;\n setTxtSearchOrderType(e.target.value)\n if (searchText.length > 1) {\n window.$(\"#searchOrderType\").show()\n setOrderTypeList(allOrderTypes.filter(x => x.ordertype.toLowerCase().includes(searchText.toLowerCase())))\n }\n else {\n window.$(\"#searchOrderType\").hide()\n }\n }\n\n const SelectNewOrderType = (ordertypeid) => {\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n\n }\n else {\n var ordertype = result.data.filter(x => x.ordertypeid == ordertypeid)[0];\n selectOrderType_fn(ordertype);\n }\n }\n\n }).catch();\n }\n\n const selectOrderType_fn = (item) => {\n setText(1)\n window.$(\"#searchOrderType\").hide();\n setOrderTypeId(item.ordertypeid);\n window.$(\"#searchOrderType\").hide();\n setTxtSearchOrderType(item.ordertype)\n }\n\n function initMap_create() {\n var input = document.getElementById('searchMapInput_create');\n setServiceAddress(input.value)\n var autocomplete = new window.google.maps.places.Autocomplete(input);\n\n autocomplete.addListener('place_changed', function () {\n var place = autocomplete.getPlace();\n let div = document.createElement('div');\n div.innerHTML = place.adr_address;\n let cityname = div.getElementsByClassName('locality')[0] != undefined ? div.getElementsByClassName('locality')[0].innerHTML : \"\";\n let statename = div.getElementsByClassName('region')[0] != undefined ? div.getElementsByClassName('region')[0].innerHTML : \"\";\n let lat = place.geometry.location.lat();\n let long = place.geometry.location.lng();\n setCity(cityname)\n setState(statename)\n setLatitude(lat)\n setLongitude(long)\n setServiceAddress(place.formatted_address)\n });\n }\n\n const onfocusSearch = () => {\n window.$(\"#searchMapInput_create\").attr(\"autocomplete\", \"new-password\");\n }\n\n const loadTicketDetails = () => {\n LoadTicketDetails_api(ticketid, loggeduserid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else {\n setTicketDetails(result);\n setOrderTypeId(result.ordertypeid)\n setOrderType(result.ordertype)\n setTxtSearchOrderType(result.ordertype)\n setOrderDetail(result.orderdetail)\n setJobName(result.jobname)\n setServiceAddress(result.address)\n setState(result.state)\n setCity(result.city)\n setZipCode(result.zipcode)\n setLatitude(result.latitude)\n setLongitude(result.longitude)\n setJobContactName(result.jobcontactname)\n setJobContactEmail(result.jobcontactemail)\n setJobContactPhone(result.jobcontactphone)\n setPriorityID(result.priority)\n }\n\n }\n }).catch();\n }\n\n return (\n // \n <>\n
\n
\n
\n
\n \n \n
Add New Ticket
\n
\n
\n
\n
\n\n
\n
\n search_fn(e)} />\n {/* */}\n
\n\n
\n
\n {\n orderTypeList.length == 0\n ?\n null\n :\n orderTypeList.map(item => (\n
selectOrderType_fn(item)} >\n
{item.ordertype}
\n
\n ))\n }\n
\n \n\n
\n\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n setJobName(e.target.value)} />\n {/* */}\n
\n
\n\n {/* Service Address */}\n
\n
\n {/* */}\n \n
\n
\n
\n
\n setSameAsBilling(!sameAsBilling)} />\n  \n
\n
\n\n
\n
\n \n setJobContactName(e.target.value)} />\n
\n
\n
\n
\n setJobContactEmail(e.target.value)} />\n
\n
\n
\n
\n setJobContactPhone(e.target.value.replace(/\\D/, ''))} />\n
\n
\n\n
\n
\n setTicketDate(e.target.value)} />\n
\n
\n
\n
\n setTicketTime(e.target.value)} />\n
\n
\n
\n
\n \n
\n
\n {usertype !== \"Dispatcher\" &&\n <>\n
\n
\n \n
\n
\n\n\n
\n
\n \n
\n
\n\n\n {/* */}\n\n
\n
\n setPoNumber(e.target.value)} />\n
\n
\n
\n
\n setWorkOrderNumber(e.target.value)} />\n
\n
\n \n }\n {usertype !== \"Dispatcher\" ?\n
\n UploadDocument(e)} className=\"form-control tic-file\" placeholder=\"PO File\" />\n
\n :\n
\n  \n
\n }\n
\n Cancel\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

The record already exists, do you want to proceed?

\n
\n
\n\n \n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n\n\n \n \n\n )\n}\n\nexport default CreateTicket\n\n","import { toast } from 'react-toastify'\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\n//Update Estimate\nexport const UpdateEstimate_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/update`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\nexport const FinalizeEstimate_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/finalize`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\nexport const DraftEstimate_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/draft`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Submitted\nexport const SubmitEstimate_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/submit`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Approve\nexport const ApproveEstimate_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/approve`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Estimate List\nexport const LoadEstimates_api = async (userid, type, searchtext) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/list?userid=${userid}&type=${type}&search=${searchtext}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}\n\n//Delete Estimate\nexport const DeleteEstimate_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}estimate/delete`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}","import { toast } from 'react-toastify'\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\n\n\n//Invoice List/search Result\n\nexport const LoadInvoices_api = async (userid, type, searchtext) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/list?userid=${userid}&type=${type}&search=${searchtext}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}\n\n//update invoice\nexport const UpdateInvoice_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/update`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\nexport const FinalizeInvoice_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/finalize`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\nexport const DraftInvoice_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/draft`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n \n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\nexport const SubmitInvoice_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/submit`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Approve\nexport const PaidInvoice_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/paid`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n//Delete\nexport const DeleteInvoice_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/delete`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}\n\n\nexport const UpdateInvoicedate_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}invoice/updatedate`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n}","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport { LoadOrderType_api } from '../functions/masters'\n\nconst OrderTypeUpdate = ({ orderType, orderDetail_prop }) => {\n\n const loggeduserid = Number(localStorage.getItem(\"userid\"));\n const [orderTypeList, setOrderTypeList] = useState([]);\n const [selectedOrderType, setSelectedOrderType] = useState(orderType);\n const [orderDetail, setOrderDetail] = useState(orderDetail_prop);\n\n useEffect(() => {\n loadOrderType();\n }, [])\n const loadOrderType = () => {\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setOrderTypeList([])\n }\n else\n setOrderTypeList(result.data);\n }\n\n }).catch();\n }\n\n const UpdateOrderType = (e) => {\n e.preventDefault();\n if (selectedOrderType == \"\" || selectedOrderType == null)\n return toast.error(\"Please choose order type.\");\n else if (orderDetail == \"\" || orderDetail == null)\n return toast.error(\"Please enter order details.\");\n else {\n var req = {\n // \"customerid\": customerid,\n // //\"customername\": ticketTitle,\n // \"ordertypeid\": Number(orderType),\n // \"orderdetails\": orderDetail,\n // \"scheduledate\": ticketDate,\n // \"scheduletime\": ticketTime,\n // \"technicianid\": Number(technicianId),\n // \"porequired\": poRequired,\n // \"pofilepath\": poDOc,\n // \"addedby\": loggeduserid\n }\n // UpdateOrderType_api(req).then(res => {\n // if (res != undefined) {\n // //toast.success(res.message);\n // window.$(\"#OrderType\").modal('hide');\n // //refreshDashboard();\n // }\n // })\n // .catch();\n }\n\n }\n\n\n\n return (\n <>\n \n )\n}\n\nexport default OrderTypeUpdate\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport {UpdateInvoicedate_api } from '../../functions/invoices'\nimport { format } from 'date-fns'\n\n\nconst DateUpdate = ({ticketid, activityid, loadInvoice, invoicedate1, invoiceduedate1,invoiceno}) => {\n\n var userid = Number(localStorage.getItem(\"userid\"));\n const [invoicedate, setInvoicedate] = useState(invoicedate1);\n\n useEffect(()=>{\n loaddate()\n loaddate()\n },[invoicedate1])\n const loaddate=()=>{\n \n setInvoicedate(invoicedate1)\n console.log(invoicedate)\n }\n\n const updateinvoicedate = () => {\n \n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"invoicedate\": format(new Date(invoicedate), 'yyyy-MM-dd'),\n \"invoiceduedate\": format(new Date(invoiceduedate1),\"yyyy-MM-dd\"),\n \"invoicenumber\":invoiceno,\n \"updatedby\": userid\n }\n \n UpdateInvoicedate_api(req).then(res => {\n\n if (res != undefined) {\n toast.success(res.message);\n if(window.location.hash===\"#/tickets\")\n loadInvoice(activityid)\n else\n loadInvoice();\n window.$(\"#datepopup\").modal('hide');\n }\n })\n .catch();\n }\n\n return (\n
\n
\n
\n
\n \n \n
Update Invoice Date
\n
\n
\n
\n
\n\n
\n
\n setInvoicedate(e.target.value)} />\n
\n
\n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n )\n}\n\nexport default DateUpdate\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport { UpdateInvoicedate_api } from '../../functions/invoices'\nimport { format } from 'date-fns'\n\n\nconst DueDateUpdate = ({ticketid, activityid, loadInvoice, invoicedate1, invoiceduedate1,invoiceno}) => {\n\n var userid = Number(localStorage.getItem(\"userid\"));\n const [invoiceduedate, setInvoiceduedate] = useState(invoiceduedate1);\n\n\n const updateinvoiceduedate = () => {\n\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"invoicedate\": format(new Date(invoicedate1), 'yyyy-MM-dd'),\n \"invoiceduedate\": format(new Date(invoiceduedate),\"yyyy-MM-dd\"),\n \"invoicenumber\":invoiceno,\n \"updatedby\": userid\n }\n UpdateInvoicedate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n if(window.location.hash===\"#/tickets\")\n loadInvoice(activityid)\n else\n loadInvoice();\n window.$(\"#duedatepopup\").modal('hide');\n }\n })\n .catch();\n }\n\n return (\n
\n
\n
\n
\n \n \n
Update Invoice Duedate
\n
\n
\n
\n
\n\n
\n
\n setInvoiceduedate(e.target.value)} />\n
\n
\n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n )\n}\n\nexport default DueDateUpdate\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport {UpdateInvoicedate_api } from '../../functions/invoices'\nimport { format } from 'date-fns'\n\n\nconst Invoicenoupdate = ({ticketid, activityid, loadInvoice, invoicedate1,invoiceduedate1,invoiceno1}) => {\n\n var userid = Number(localStorage.getItem(\"userid\"));\n const [invoiceno, setInvoiceno] = useState(invoiceno1);\n\n\n const updateinvoicedate = () => {\n \n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"invoicedate\": format(new Date(invoicedate1), 'yyyy-MM-dd'),\n \"invoiceduedate\": format(new Date(invoiceduedate1),\"yyyy-MM-dd\"),\n \"invoicenumber\":invoiceno,\n \"updatedby\": userid\n }\n \n UpdateInvoicedate_api(req).then(res => {\n\n if (res != undefined) {\n toast.success(res.message);\n if(window.location.hash===\"#/tickets\")\n loadInvoice(activityid)\n else\n loadInvoice();\n window.$(\"#invoiceno\").modal('hide');\n }\n })\n .catch();\n }\n\n return (\n
\n
\n
\n
\n \n \n
Update Invoice No.
\n
\n
\n
\n
\n\n
\n
\n setInvoiceno(e.target.value)} />\n
\n
\n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n )\n}\n\nexport default Invoicenoupdate\n","import React, { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport moment from 'moment'\nimport {\n LoadTicketDetails_api,\n LoadNotesDetails_api,\n LoadPhotos_api,\n LoadInvoices_api,\n LoadEstimates_api,\n CreateNotes_api,\n UpdateTicketOrderDetails_api,\n UpdateTicketAssinee_api,\n UpdateTicketStatus_api,\n UpdateTicketPOWorkOrder_api,\n LoadTicketActions_api,\n SendEmail_api, ResendEmail_api,\n LoadDeletedTicketDetails_api,\n RestoreTicket_api\n\n} from '../../functions/tickets'\nimport { FinalizeEstimate_api, DraftEstimate_api, SubmitEstimate_api, ApproveEstimate_api, UpdateEstimate_api } from '../../functions/estimates'\nimport { FinalizeInvoice_api, DraftInvoice_api, SubmitInvoice_api, PaidInvoice_api, UpdateInvoice_api } from '../../functions/invoices'\nimport OrderTypeUpdate from '../../forms/OrderTypeUpdate'\nimport TicketAssigneeUpdate from '../../forms/TicketAssigneeUpdate'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { LoadOrderType_api, LoadTicketStatus_api } from '../../functions/masters'\nimport { Customers_Profile_api } from '../../functions/customers'\nimport { useHistory } from 'react-router-dom'\nimport { format } from 'date-fns'\nimport DateUpdate from '../popups/Invoicedateupdate'\nimport DueDateUpdate from '../popups/Invoiceduedateupdate'\nimport Invoicenoupdate from '../popups/Invoicenoupdate'\nimport CreateTicket from '../../forms/CreateTicket'\nimport DeletePopUp from '../../forms/DeletePopUp';\n\nimport { DeleteTicket_api } from '../../functions/tickets';\nimport { AirlineSeatLegroomReducedTwoTone, AlternateEmail } from '@material-ui/icons';\n\nfunction TicketDetails({ ticketid, loadAgain, ticketType }) {\n //const ticketid = Number(localStorage.getItem(\"ticketid\"));\n var userid = Number(localStorage.getItem(\"userid\"));\n const API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n const AccessToken = localStorage.getItem(\"AccessToken\");\n\n const [locationKeys, setLocationKeys] = useState([])\n\n const [customerid, setCustomerid] = useState(0);\n const [customername, setCustomerName] = useState(\"\");\n const [customertype, setCustomertype] = useState(\"\");\n const [address, setaddress] = useState(\"\");\n const [state, setState] = useState(\"\");\n const [city, setCity] = useState(\"\");\n const [location, setLocation] = useState(\"\");\n const [zipcode, setZipCode] = useState(\"\");\n const [latitude, setLatitude] = useState(\"\");\n const [longitude, setLongitude] = useState(\"\");\n const [notesdetails, setNotesdetails] = useState({});\n\n const [ticketDetails, setTicketDetails] = useState({});\n const [isLoaded, setIsLoaded] = useState(false);\n const [photosList, setPhotosList] = useState([]);\n const [EstimatesDetails, setEstimatesDetails] = useState({});\n const [InvoicesDetails, setInvoicesDetails] = useState({});\n const [openSection, setOpenSection] = useState(\"\");\n const [txtnotes, setTxtNotes] = useState(\"\");\n const [test, setTest] = useState(0);\n const [totalMaterialAmt, setTotalMaterialAmt] = useState(0)\n const [totalLoborAmt, setTotalLaborAmt] = useState(0);\n const [activiyid, setActivityId] = useState(0);\n const [isAddNewEstimate, setIsAddNewEstimate] = useState(false);\n const [isAddNewInvoice, setIsAddNewInvoice] = useState(false)\n\n const [technicianList, setTechnicianlist] = useState([]);\n const [technicianId, setTechnicianID] = useState(0);\n const [ticketDate, setTicketDate] = useState(\"\");\n const [ticketTime, setTicketTime] = useState(\"\");\n\n const [orderTypeList, setOrderTypeList] = useState([]);\n const [selectedOrderType, setSelectedOrderType] = useState(0);\n const [orderDetail, setOrderDetail] = useState(\"\");\n const [statusList, setStatusList] = useState([]);\n const [selectedStatusId, setSelectedStatusId] = useState(0);\n\n const [jobcontactname, setJobContactName] = useState(\"\")\n const [jobname, setJobName] = useState(\"\")\n const [jobcontactemail, setJobContactEmail] = useState(\"\")\n const [jobcontactphone, setJobContactPhone] = useState(\"\")\n\n const [poRequired, setPoRequired] = useState(false);\n const [poDOc, setPoDoc] = useState(\"\");\n const loggeduserid = Number(localStorage.getItem(\"userid\"));\n const userType = localStorage.getItem(\"usertype\");\n const [poNumber_estimate, setPoNumber_estimate] = useState(\"\");\n const [poNumber_invoice, setPoNumber_invoice] = useState(\"\");\n\n\n const [poNumber, setPoNumber] = useState(\"\");\n const [workOrderNumber, setWorkOrderNumber] = useState(\"\");\n const [serviceAddress, setServiceAddress] = useState(\"\");\n const [sameAsBilling, setSameAsBilling] = useState(false);\n const [customerAddress, setCustomerAddress] = useState(\"\");\n\n const history = useHistory()\n const [customer_state, setcustomer_State] = useState(\"\")\n const [customer_city, setcustomer_City] = useState(\"\")\n const [customer_zipcode, setcustomer_ZipCode] = useState(\"\")\n const [customer_latitude, setcustomer_Latitude] = useState(\"\")\n const [customer_longitude, setcustomer_Longitude] = useState(\"\");\n const [actionList, setActionList] = useState([]);\n const [isEstimateEditable, setIsEstimateEditable] = useState(true);\n const [poDocument, setPoDocument] = useState(\"\");\n const [isMailSent, setIsMailSent] = useState(true);\n const [isMailSent_invoice, setIsMailSent_invoice] = useState(true);\n const [invoiceduedate, setInvoiceduedate] = useState(\"\");\n const [invoicedate, setInvoicedate] = useState(\"\");\n const [invoiceno, setInvoiceno] = useState(\"\");\n const [invoicestatus, setInvoiceStatus] = useState(\"\");\n\n const [ticketId, setTicketId] = useState(0);\n const [testId, setTestId] = useState(0);\n const [cid, setCid] = useState(0)\n\n\n useEffect(() => {\n if (ticketid != 0 && ticketid != undefined) {\n setTicketDetails({})\n setEstimatesDetails({})\n setInvoicesDetails({})\n setOpenSection(\"\")\n refresh();\n loadTechnicians();\n loadOrderType();\n loadStatus();\n loadActions(ticketid);\n setIsMailSent(false);\n setIsMailSent_invoice(false)\n }\n window.$(\"#addnotesdiv\").hide();\n }, [ticketid]);\n\n const refresh = () => {\n loadTicketDetails();\n loadActions(ticketid);\n\n }\n useEffect(() => {\n if (sameAsBilling) {\n setServiceAddress(customerAddress)\n setCity(customer_city)\n setState(customer_state)\n setLatitude(customer_latitude)\n setLongitude(customer_longitude)\n setZipCode(customer_zipcode)\n }\n else\n setServiceAddress(\"\");\n }, [sameAsBilling])\n\n useEffect(() => {\n if (Object.keys(EstimatesDetails).length > 0)\n sumEstimateAmt();\n }, [EstimatesDetails])\n\n useEffect(() => {\n if (Object.keys(InvoicesDetails).length > 0)\n sum_invoice();\n }, [InvoicesDetails])\n\n function getTwentyFourHourTime(amPmString) {\n // var d = new Date(\"1/1/2013 \" + amPmString);\n // return d.getHours() + ':' + d.getMinutes();\n\n var convertedTime = moment(amPmString, 'hh:mm A').format('HH:mm')\n return convertedTime;\n }\n\n const sumEstimateAmt = () => {\n //alert(JSON.stringify(EstimatesDetails))\n var totalmaterialamt = 0;\n var totallaboramt = 0;\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").length; i++) {\n if (!(isNaN(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount) || EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount === null || EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount === 0)) {\n totallaboramt = Number(totallaboramt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount);\n }\n }\n\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").length; i++) {\n if (!(isNaN(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount) || EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount === null || EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount === 0)) {\n totalmaterialamt = Number(totalmaterialamt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount);\n }\n }\n\n EstimatesDetails.amountLabour = parseFloat(totallaboramt).toFixed(2);\n EstimatesDetails.amountMaterial = parseFloat(totalmaterialamt).toFixed(2);\n sumPayable()\n }\n\n const sum_invoice = () => {\n\n var totalmaterialamt = 0;\n var totallaboramt = 0;\n for (var i = 0; i < InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").length; i++) {\n if (!(isNaN(InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount) || InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount === null || InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount === 0)) {\n totallaboramt = Number(totallaboramt) + Number(InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount);\n //alert(totallaboramt)\n }\n }\n\n for (var i = 0; i < InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").length; i++) {\n if (!(isNaN(InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount) || InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount === null || InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount === 0)) {\n totalmaterialamt = Number(totalmaterialamt) + Number(InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount);\n }\n }\n\n InvoicesDetails.amountLabour = parseFloat(totallaboramt).toFixed(2);\n InvoicesDetails.amountMaterial = parseFloat(totalmaterialamt).toFixed(2);\n sumPayable_invoice()\n\n }\n\n //estimate sum\n const sumPayable = () => {\n var amtMaterial = 0;\n var amtLabour = 0;\n var amtTaxMaterial = 0;\n var amtTaxLabour = 0;\n var amtDiscount = 0;\n var amtNetPayable = 0;\n\n if (!(isNaN(EstimatesDetails.amountMaterial) || EstimatesDetails.amountMaterial === null)) {\n amtMaterial = Number(EstimatesDetails.amountMaterial);\n if (!(isNaN(EstimatesDetails.amountTaxMaterialRate) || EstimatesDetails.amountTaxMaterialRate === null)) {\n amtTaxMaterial = EstimatesDetails.amountTaxMaterial = parseFloat(((Number(EstimatesDetails.amountMaterial) * Number(EstimatesDetails.amountTaxMaterialRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(EstimatesDetails.amountLabour) || EstimatesDetails.amountLabour === null)) {\n amtLabour = Number(EstimatesDetails.amountLabour);\n if (!(isNaN(EstimatesDetails.amountTaxLabourRate) || EstimatesDetails.amountTaxLabourRate === null)) {\n amtTaxLabour = EstimatesDetails.amountTaxLabour = parseFloat(((Number(EstimatesDetails.amountLabour) * Number(EstimatesDetails.amountTaxLabourRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(EstimatesDetails.amountDiscount) || EstimatesDetails.amountDiscount === null)) {\n if (!(isNaN(EstimatesDetails.discountpercentage) || EstimatesDetails.discountpercentage === null)) {\n amtDiscount = EstimatesDetails.amountDiscount = parseFloat((Number(amtMaterial) + Number(amtLabour)) * Number(EstimatesDetails.discountpercentage) / 100).toFixed(2);\n }\n }\n EstimatesDetails.amountPayable = parseFloat((Number(amtMaterial) + Number(amtLabour) + Number(amtTaxMaterial) + Number(amtTaxLabour)) - Number(amtDiscount)).toFixed(2);\n setTest(test + 1)\n }\n\n const sumPayable_invoice = () => {\n var amtMaterial = 0;\n var amtLabour = 0;\n var amtTaxMaterial = 0;\n var amtTaxLabour = 0;\n var amtDiscount = 0;\n var amtNetPayable = 0;\n\n if (!(isNaN(InvoicesDetails.amountMaterial) || InvoicesDetails.amountMaterial === null)) {\n amtMaterial = Number(InvoicesDetails.amountMaterial);\n if (!(isNaN(InvoicesDetails.amountTaxMaterialRate) || InvoicesDetails.amountTaxMaterialRate === null)) {\n amtTaxMaterial = InvoicesDetails.amountTaxMaterial = parseFloat(((Number(InvoicesDetails.amountMaterial) * Number(InvoicesDetails.amountTaxMaterialRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(InvoicesDetails.amountLabour) || InvoicesDetails.amountLabour === null)) {\n amtLabour = Number(InvoicesDetails.amountLabour);\n if (!(isNaN(InvoicesDetails.amountTaxLabourRate) || InvoicesDetails.amountTaxLabourRate === null)) {\n amtTaxLabour = InvoicesDetails.amountTaxLabour = parseFloat(((Number(InvoicesDetails.amountLabour) * Number(InvoicesDetails.amountTaxLabourRate)) / 100)).toFixed(2);\n }\n }\n if (!(isNaN(InvoicesDetails.amountDiscount) || InvoicesDetails.amountDiscount === null)) {\n if (!(isNaN(InvoicesDetails.discountpercentage) || InvoicesDetails.discountpercentage === null)) {\n amtDiscount = InvoicesDetails.amountDiscount = parseFloat((Number(amtMaterial) + Number(amtLabour)) * Number(InvoicesDetails.discountpercentage) / 100).toFixed(2);\n }\n }\n InvoicesDetails.amountPayable = parseFloat((Number(amtMaterial) + Number(amtLabour) + Number(amtTaxMaterial) + Number(amtTaxLabour)) - Number(amtDiscount)).toFixed(2);\n setTest(test + 1)\n }\n\n const loadActions = (ticketid) => {\n if (ticketType === \"normal\") {\n\n LoadTicketActions_api(userid, ticketid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.actionlist == null) {\n setActionList([])\n }\n else\n setActionList(result.actionlist.filter(x => x.allowed == true));\n }\n\n }).catch();\n }\n }\n\n const loadOrderType = () => {\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setOrderTypeList([])\n }\n else\n setOrderTypeList(result.data);\n }\n\n }).catch();\n }\n\n const loadStatus = () => {\n LoadTicketStatus_api(\"web\").then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setStatusList([])\n }\n else {\n console.log(result.data)\n setStatusList(result.data);\n }\n }\n\n }).catch();\n }\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n\n const loadTicketDetails = () => {\n\n setIsLoaded(false);\n if (ticketType === \"normal\") {\n LoadTicketDetails_api(ticketid, userid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else {\n\n console.log(\"ticketDetails\", result)\n setTicketDetails(result);\n loadCustomerProfile(result.customerid)\n setPoNumber(result.ponumber)\n setWorkOrderNumber(result.workordernumber)\n setInvoiceStatus(result.currentstatusactivity)\n setCid(result.customerid)\n // setServiceAddress()\n\n }\n\n }\n setIsLoaded(true);\n }).catch();\n }\n else {\n LoadDeletedTicketDetails_api(ticketid, userid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else {\n setTicketDetails(result);\n loadCustomerProfile(result.customerid)\n setPoNumber(result.ponumber)\n setWorkOrderNumber(result.workordernumber)\n setInvoiceStatus(result.currentstatusactivity)\n setCid(result.customerid)\n // setServiceAddress()\n\n }\n\n }\n setIsLoaded(true);\n }).catch();\n }\n }\n\n\n //for drafting\n const loadTicketDetailsAfterDraft = (screen) => {\n // setIsLoaded(false);\n if (ticketType === \"normal\") {\n LoadTicketDetails_api(ticketid, userid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else {\n setTicketDetails(result);\n loadCustomerProfile(result.customerid)\n setPoNumber(result.ponumber)\n setWorkOrderNumber(result.workordernumber)\n if (screen == \"estimate\")\n loadEstimate(result.activities[0].activityid);\n if (screen == \"invoice\")\n loadInvoice(result.activities[0].activityid);\n // setServiceAddress()\n\n }\n\n }\n // setIsLoaded(true);\n }).catch();\n }\n }\n\n const loadCustomerProfile = (customerid) => {\n Customers_Profile_api(customerid).then(res => {\n\n const result = res;\n if (result != undefined) {\n if (result == null) {\n }\n else {\n console.log(result)\n setCustomerAddress(result.address)\n setcustomer_State(result.state)\n setcustomer_City(result.city)\n setcustomer_Latitude(result.latitude)\n setcustomer_Longitude(result.longitude)\n setcustomer_ZipCode(result.zipcode)\n\n }\n }\n }).catch();\n }\n\n const loadNotesDetails = (activityid) => {\n setOpenSection(\"Notes\")\n LoadNotesDetails_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setNotesdetails({})\n }\n else\n setNotesdetails(result);\n }\n\n }).catch();\n }\n\n const loadPhotos = (activityid) => {\n setOpenSection(\"Photos\")\n LoadPhotos_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.photos == null) {\n setPhotosList([]);\n }\n else\n setPhotosList(result.photos);\n }\n\n }).catch();\n }\n\n const loadBoth = (activityid) => {\n loadEstimate(activityid);\n // sumEstimateAmt();\n }\n\n const loadEstimate = (activityid) => {\n\n setOpenSection(\"Estimates\")\n setIsAddNewEstimate(false)\n if (activityid != 0 && activityid != undefined) {\n setActivityId(activityid)\n LoadEstimates_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setEstimatesDetails({});\n }\n else {\n setEstimatesDetails(result);\n setPoNumber_estimate(result.ponumber)\n\n\n\n }\n //console.log(result)\n }\n\n }).catch();\n }\n }\n\n const loadInvoice = (activityid) => {\n setOpenSection(\"Invoices\")\n setIsAddNewInvoice(false)\n if (activityid != 0 && activityid != undefined) {\n setActivityId(activityid)\n LoadInvoices_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n\n if (result == null) {\n setInvoicesDetails({});\n }\n else {\n setInvoicesDetails(result);\n setPoNumber_invoice(result.ponumber)\n }\n }\n\n }).catch();\n }\n }\n\n const submitNotes = (e) => {\n e.preventDefault();\n if (txtnotes.trim() == \"\")\n return toast.error(\"Please enter notes.\")\n var req = {\n \"ticketid\": Number(ticketid),\n \"notes\": txtnotes,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude \": \"\",\n \"signature\": \"\"\n\n }\n CreateNotes_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#addnotesdiv\").hide();\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n const openNotesAdd = () => {\n window.$(\"#addnotesdiv\").show();\n setOpenSection(\"\");\n setTxtNotes(\"\");\n }\n\n const handleChange_Material = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].amount = event.target.value.replace(/\\D/, ''); // Update it with the modified email. \n var totalmaterialamt_aa = 0;\n\n if (item.type == \"Material\") {\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").length; i++) {\n\n totalmaterialamt_aa = totalmaterialamt_aa + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount);\n //setTotalMaterialAmt(totalmaterialamt) \n EstimatesDetails.amountMaterial = totalmaterialamt_aa;\n\n }\n }\n sumPayable()\n setTest(test + 1)\n }\n const handleChange_Labor = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].amount = event.target.value.replace(/\\D/, ''); // Update it with the modified email.\n\n\n var totallaboramt = 0;\n\n if (item.type == \"Labor\") {\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").length; i++) {\n totallaboramt = Number(totallaboramt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount);\n\n // setTotalLaborAmt(totallaboramt)\n EstimatesDetails.amountLabour = totallaboramt;\n }\n }\n setTest(test + 1)\n sumPayable()\n setTest(test + 1)\n }\n\n\n\n const handleChange_TextValue_item = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].item = event.target.value;\n setTest(test + 1)\n }\n\n const handleChange_TextValue_item_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n InvoicesDetails.invoicedata[index].item = event.target.value;\n setTest(test + 1)\n }\n\n const handleChange_disc = (event) => {\n EstimatesDetails.amountDiscount = event.target.value.replace(/\\D/, '');\n sumPayable();\n setTest(test + 1)\n }\n\n\n const handleChange_tax_material = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.amountTaxMaterialRate = amount;\n }\n EstimatesDetails.amountTaxMaterial = ((EstimatesDetails.amountMaterial * event.target.value) / 100)\n sumPayable();\n setTest(test + 1)\n }\n\n const handleChange_tax_labor = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.amountTaxLabourRate = amount;\n }\n EstimatesDetails.amountTaxLabour = ((EstimatesDetails.amountLabour * event.target.value) / 100);\n sumPayable();\n setTest(test + 1)\n }\n\n const handleChange_tax_material_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.amountTaxMaterialRate = amount;\n }\n InvoicesDetails.amountTaxMaterial = ((InvoicesDetails.amountMaterial * event.target.value) / 100)\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n const handleChange_tax_labor_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.amountTaxLabourRate = amount;\n }\n InvoicesDetails.amountTaxLabour = ((InvoicesDetails.amountLabour * event.target.value) / 100);\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n\n const calculateAmount = (_item) => {\n var _qty = 0;\n var _unitprice = 0;\n var _total = 0;\n\n try {\n _qty = _item.qtyno;//replace(/\\D/g, '');\n } catch (error) {\n\n }\n try {\n _unitprice = _item.unitprice;//.replace(/\\D/g, '');\n } catch (error) {\n\n }\n\n if (!(isNaN(_qty) || _qty === null || _qty === 0)) {\n if (!(isNaN(_unitprice) || _unitprice === null || _unitprice === 0)) {\n _total = _qty * _unitprice;\n }\n }\n return _total;\n }\n\n const finalizeEstimate = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"id\": EstimatesDetails.estimatedata[i].id,\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": Number(EstimatesDetails.amountMaterial),\n \"amountLabour\": Number(EstimatesDetails.amountLabour),\n \"amountTotal\": Number(EstimatesDetails.amountMaterial) + Number(EstimatesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(EstimatesDetails.amountDiscount)) ? Number(EstimatesDetails.amountDiscount) : 0,\n \"amountTax\": EstimatesDetails.amountTax == null ? 0 : Number(EstimatesDetails.amountTax),\n \"discountPercentage\": EstimatesDetails.discountpercentage == null ? 0 : Number(EstimatesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(EstimatesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(EstimatesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(EstimatesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(EstimatesDetails.amountTaxLabour),\n \"amountPayable\": Number(EstimatesDetails.amountPayable),\n \"ponumber\": poNumber_estimate,\n \"notes\": EstimatesDetails.notes,\n \"updatedby\": userid\n\n }\n FinalizeEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadEstimate(activiyid);\n loadActions(ticketid)\n }\n })\n .catch();\n }\n\n const draftEstimate = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": 0,\n \"amountLabour\": 0,\n \"amountTotal\": 0,\n \"amountDiscount\": 0,\n \"amountTax\": 0,\n \"amountTaxMaterialRate\": 0,\n \"amountTaxMaterial\": 0,\n \"amountTaxLabourRate\": 0,\n \"amountTaxLabour\": 0,\n \"amountPayable\": 0,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude\": \"\",\n \"signature\": \"\",\n \"notes\": EstimatesDetails.notes,\n\n }\n DraftEstimate_api(req).then(res => {\n if (res != undefined) {\n\n toast.success(res.message);\n if (ticketType === \"normal\") {\n loadTicketDetailsAfterDraft(\"estimate\");\n }\n // loadEstimate(activiyid);\n loadActions(ticketid)\n }\n })\n .catch();\n }\n\n const updateEstimate = (e) => {\n // return alert(EstimatesDetails.discountpercentage)\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"id\": EstimatesDetails.estimatedata[i].id,\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": Number(EstimatesDetails.amountMaterial),\n \"amountLabour\": Number(EstimatesDetails.amountLabour),\n \"amountTotal\": Number(EstimatesDetails.amountMaterial) + Number(EstimatesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(EstimatesDetails.amountDiscount)) ? Number(EstimatesDetails.amountDiscount) : 0,\n \"amountTax\": Number(EstimatesDetails.amountTax),\n \"discountPercentage\": EstimatesDetails.discountpercentage == null ? 0 : Number(EstimatesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(EstimatesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(EstimatesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(EstimatesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(EstimatesDetails.amountTaxLabour),\n \"amountPayable\": Number(EstimatesDetails.amountPayable),\n \"ponumber\": poNumber_estimate,\n \"updatedfrom\": \"web\",\n \"notes\": EstimatesDetails.notes,\n \"updatedby\": userid\n\n }\n UpdateEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadEstimate(activiyid);\n loadActions(ticketid)\n }\n })\n .catch();\n }\n\n const addMoreMaterialRow = (e) => {\n e.preventDefault();\n\n if (EstimatesDetails.estimatedata != undefined && EstimatesDetails.estimatedata != null) {\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n }\n if (EstimatesDetails.estimatedata == null) {\n EstimatesDetails.estimatedata = [];\n }\n EstimatesDetails.estimatedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Material\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addMoreLaborRow = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata != undefined && EstimatesDetails.estimatedata != null) {\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n }\n if (EstimatesDetails.estimatedata == null) {\n EstimatesDetails.estimatedata = [];\n }\n\n EstimatesDetails.estimatedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Labor\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n\n const finalizeInvoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n // if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"id\": InvoicesDetails.invoicedata[i].id,\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n //}\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": Number(InvoicesDetails.amountMaterial),\n \"amountLabour\": Number(InvoicesDetails.amountLabour),\n \"amountTotal\": Number(InvoicesDetails.amountMaterial) + Number(InvoicesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(InvoicesDetails.amountDiscount)) ? Number(InvoicesDetails.amountDiscount) : 0,\n \"amountTax\": Number(InvoicesDetails.amountTax),\n \"discountPercentage\": InvoicesDetails.discountpercentage == null ? 0 : Number(InvoicesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(InvoicesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(InvoicesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(InvoicesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(InvoicesDetails.amountTaxLabour),\n \"amountPayable\": Number(InvoicesDetails.amountPayable),\n \"ponumber\": poNumber_invoice,\n \"notes\": InvoicesDetails.notes,\n \"updatedby\": userid\n\n }\n\n FinalizeInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadInvoice(activiyid);\n }\n })\n .catch();\n }\n\n const draftInvoice = (e) => {\n e.preventDefault();\n\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n //if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n //}\n }\n var req = {\n \"ticketid\": ticketid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": 0,\n \"amountLabour\": 0,\n \"amountTotal\": 0,\n \"amountDiscount\": 0,\n \"amountTax\": 0,\n \"amountTaxMaterialRate\": 0,\n \"amountTaxMaterial\": 0,\n \"amountTaxLabourRate\": 0,\n \"amountTaxLabour\": 0,\n \"amountPayable\": 0,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude\": \"\",\n \"signature\": \"\",\n \"notes\": InvoicesDetails.notes,\n\n }\n DraftInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n if (ticketType === \"normal\") {\n loadTicketDetailsAfterDraft(\"invoice\");\n }\n loadActions(ticketid);\n\n }\n })\n .catch();\n }\n\n const updateInvoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n // if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"id\": InvoicesDetails.invoicedata[i].id,\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n //}\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": Number(InvoicesDetails.amountMaterial),\n \"amountLabour\": Number(InvoicesDetails.amountLabour),\n \"amountTotal\": Number(InvoicesDetails.amountMaterial) + Number(InvoicesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(InvoicesDetails.amountDiscount)) ? Number(InvoicesDetails.amountDiscount) : 0,\n \"amountTax\": Number(InvoicesDetails.amountTax),\n \"discountPercentage\": InvoicesDetails.discountpercentage == null ? 0 : Number(InvoicesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(InvoicesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(InvoicesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(InvoicesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(InvoicesDetails.amountTaxLabour),\n \"amountPayable\": Number(InvoicesDetails.amountPayable),\n \"ponumber\": poNumber_invoice,\n \"updatedfrom\": \"web\",\n \"notes\": InvoicesDetails.notes,\n \"updatedby\": userid\n\n }\n\n UpdateInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadInvoice(activiyid);\n }\n })\n .catch();\n }\n\n const addMoreMaterialRow_invoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata != undefined && InvoicesDetails.invoicedata != null) {\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n }\n if (InvoicesDetails.invoicedata == null) {\n InvoicesDetails.invoicedata = [];\n }\n InvoicesDetails.invoicedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Material\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addMoreLaborRow_invoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata != undefined && InvoicesDetails.invoicedata != null) {\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n }\n if (InvoicesDetails.invoicedata == null) {\n InvoicesDetails.invoicedata = [];\n }\n InvoicesDetails.invoicedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Labor\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addNewEstimate = () => {\n setIsAddNewEstimate(true);\n setIsAddNewInvoice(false);\n setOpenSection(\"Estimates_draft\")\n window.$(\"#addnotesdiv\").hide();\n\n setEstimatesDetails({ amountDiscount: 0, amountTaxLabour: 0, amountLabour: 0, amountMaterial: 0, amountPayable: 0, amountTaxMaterial: 0, amountTaxMaterialRate: 0, amountTaxLabour: 0, amountTaxLabourRate: 0, amountTax: 0, estimatedata: [{ \"type\": \"Material\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }, { \"type\": \"Labor\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }] });\n setTest(test + 1)\n }\n\n const addNewInvoice = () => {\n setIsAddNewEstimate(false);\n setIsAddNewInvoice(true);\n setOpenSection(\"Invoices_draft\")\n window.$(\"#addnotesdiv\").hide();\n setInvoicesDetails({ amountDiscount: 0, amountTax: 0, amountLabour: 0, amountMaterial: 0, amountPayable: 0, amountTaxMaterial: 0, amountTaxMaterialRate: 0, amountTaxLabour: 0, amountTaxLabourRate: 0, amountTax: 0, invoicedata: [{ \"type\": \"Material\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }, { \"type\": \"Labor\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }] });\n // InvoicesDetails.invoicedata.push({\"item\" : \"\", \"qty\" : \"\" , \"amount\" : 0})\n setTest(test + 1)\n }\n\n const OpenOrderTypeEdit = () => {\n setSelectedOrderType(ticketDetails.ordertypeid);\n setOrderDetail(ticketDetails.orderdetail)\n setServiceAddress(ticketDetails.address)\n setJobName(ticketDetails.jobname)\n setJobContactName(ticketDetails.jobcontactname)\n setJobContactEmail(ticketDetails.jobcontactemail)\n setJobContactPhone(ticketDetails.jobcontactphone)\n //setPoDoc(ticketDetails.pofilepath)\n //setPoRequired(ticketDetails.poavailable) \n window.$(\"#OrderType\").modal('show');\n }\n\n const OpenPOWorkOrderEdit = () => {\n //console.log(\"ticket\" , ticketDetails)\n setWorkOrderNumber(ticketDetails.workordernumber)\n setPoNumber(ticketDetails.ponumber)\n setPoDoc(ticketDetails.pofilepath)\n setPoRequired(ticketDetails.poavailable)\n window.$(\"#POWorkOrder\").modal('show');\n }\n\n\n const showAssigneeUpdate = () => {\n setTechnicianID(ticketDetails.assignedtoUserID);\n setTicketDate(moment(ticketDetails.scheduleddate).format(\"yyyy-MM-DD\"))\n setTicketTime(getTwentyFourHourTime(ticketDetails.scheduledtime))\n\n window.$(\"#AssigneeUpdate\").modal('show');\n }\n\n const showStatusUpdate = () => {\n setSelectedStatusId(ticketDetails.currentstatusid);\n window.$(\"#StatusPop\").modal('show');\n }\n\n const UpdateAssignee = (e) => {\n e.preventDefault();\n if (technicianId == 0 || technicianId == null)\n return toast.error(\"Please choose technician\");\n else if (ticketDate == \"\" || ticketDate == null)\n return toast.error(\"Please enter date.\");\n else if (ticketTime == \"\" || ticketTime == null)\n return toast.error(\"Please enter time.\");\n else {\n var req = {\n \"ticketid\": ticketid,\n \"scheduledate\": ticketDate,\n \"technicianid\": Number(technicianId),\n \"scheduletime\": ticketTime,\n \"updatedby\": loggeduserid\n }\n UpdateTicketAssinee_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#AssigneeUpdate\").modal('hide');\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n\n\n const UpdateOrderType = (e) => {\n e.preventDefault();\n if (selectedOrderType == \"\" || selectedOrderType == null)\n return toast.error(\"Please choose order type.\");\n else if (orderDetail == \"\" || orderDetail == null)\n return toast.error(\"Please enter order details.\");\n else {\n var req = {\n \"ticketid\": Number(ticketid),\n //\"customername\": ticketTitle,\n \"ordertypeid\": Number(selectedOrderType),\n \"orderdetails\": orderDetail,\n \"address\": serviceAddress,\n \"state\": state,\n \"city\": city,\n \"zipcode\": zipcode,\n \"latitude\": String(latitude),\n \"longitude\": String(longitude),\n \"jobname\": jobname,\n \"jobcontactname\": jobcontactname,\n \"jobcontactemail\": jobcontactemail,\n \"jobcontactphone\": jobcontactphone,\n \"updatedby\": loggeduserid\n }\n UpdateTicketOrderDetails_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#OrderType\").modal('hide');\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n const UpdatePOWorkOrder = (e) => {\n e.preventDefault();\n\n if (poNumber == \"\" || poNumber == null)\n return toast.error(\"Please enter po number.\");\n else if (workOrderNumber == \"\" || workOrderNumber == null)\n return toast.error(\"Please enter work order number.\");\n else {\n var req = {\n \"ticketid\": Number(ticketid),\n \"pofilepath\": poDocument,\n \"ponumber\": poNumber,\n \"workordernumber\": workOrderNumber,\n \"updatedby\": loggeduserid\n }\n UpdateTicketPOWorkOrder_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#POWorkOrder\").modal('hide');\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n const UpdateStatus = (e) => {\n e.preventDefault();\n if (selectedStatusId == 0 || selectedStatusId == null)\n return toast.error(\"Please choose status.\");\n\n else {\n var req = {\n \"ticketid\": Number(ticketid),\n \"statusID\": Number(selectedStatusId),\n \"updatedby\": loggeduserid\n }\n UpdateTicketStatus_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#StatusPop\").modal('hide');\n loadTicketDetails();\n loadAgain();\n }\n })\n .catch();\n }\n\n }\n\n\n\n const UploadDocument = async (e) => {\n\n try {\n\n let multifile = [];\n const selectedFile = e.target.files;\n //for (let i = 0; i < selectedFile.length; i++) {\n const formData = new FormData();\n var today = new Date();\n var doctype = \"\";\n const ext = selectedFile[0].name.split('.').pop();\n const datevalue = today.getDate() + today.getMonth() + today.getFullYear() + today.getHours() + today.getMinutes() + today.getSeconds();\n const filename = \"file_\" + datevalue + \".\" + ext;\n if (ext == \"png\" || ext == \"jpeg\" || ext == \"svg\" || ext == \"wpeg\" || ext == \"PNG\" || ext == \"JPEG\" || ext == \"JPG\" || ext == \"jpg\" || ext == \"SVG\" || ext == \"WPEG\") {\n doctype = \"Image\";\n }\n else if (ext == \"pdf\" || ext == \"PDF\") {\n doctype = \"PDF\";\n }\n else if (ext == \"docx\" || ext == \"DOCX\" || ext == \"doc\" || ext == \"DOC\" || ext == \"txt\" || ext == \"TXT\") {\n doctype = \"Document\";\n }\n else if (ext == \"pptx\" || ext == \"PPTX\" || ext == \"ppt\" || ext == \"PPT\") {\n doctype = \"Presentation\";\n }\n else if (ext == \"xlsx\" || ext == \"XLSX\" || ext == \"xls\" || ext == \"XLS\") {\n doctype = \"Workbook\";\n }\n else {\n return toast.error('Please Select Valid file');\n }\n // Update the formData object \n formData.append(\"uploadedby\", loggeduserid);\n formData.append(\"file\", selectedFile[0], filename);\n const Request = {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer ' + AccessToken\n },\n body: formData\n }\n const response = await fetch(API_Base_Url + \"upload\", Request)\n const result = await response.json();\n if (response.ok) {\n // multifile = multifile.concat(result)\n setPoDoc(result.filepath)\n setTest(test + 1)\n setPoDocument(result.filepath)\n //$(\"#file-picker1\").hide();\n }\n else if (response.status === 400) {\n if (result.errors == undefined) { }\n else {\n toast.error(result.errors)\n }\n }\n else if (response.status === 401) {\n toast.error('Your Session has been expired, Please login again.');\n window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/login\";\n }, 2000);\n }\n else {\n //setisLoaded(true)\n }\n //}\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n\n }\n\n\n\n const handleChange_TextValue_qty_material_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].qty = event.target.value;\n // var num = event.target.value.replace(/[^0-9\\.]+/g,\"\");\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/))\n EstimatesDetails.estimatedata[index].qtyno = num;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_labor_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n //EstimatesDetails.estimatedata[index].amount = EstimatesDetails.estimatedata[index].unitprice * EstimatesDetails.estimatedata[index].qtyno;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n const handleChange_TextValue_UnitPrice_material_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n\n EstimatesDetails.estimatedata[index].unitprice = event.target.value;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_UnitPrice_labor_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n\n EstimatesDetails.estimatedata[index].unitprice = event.target.value;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n\n\n const handleChange_TextValue_qty_material_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n InvoicesDetails.invoicedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_labor_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n InvoicesDetails.invoicedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n const handleChange_TextValue_UnitPrice_material_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n\n InvoicesDetails.invoicedata[index].unitprice = event.target.value;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_UnitPrice_labor_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n\n InvoicesDetails.invoicedata[index].unitprice = event.target.value;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n\n function initMap_ticket() {\n var input = document.getElementById('searchMapInputTicket');\n setServiceAddress(input.value)\n var autocomplete = new window.google.maps.places.Autocomplete(input);\n\n autocomplete.addListener('place_changed', function () {\n var place = autocomplete.getPlace();\n let div = document.createElement('div');\n div.innerHTML = place.adr_address;\n let cityname = div.getElementsByClassName('locality')[0] != undefined ? div.getElementsByClassName('locality')[0].innerHTML : \"\";\n let statename = div.getElementsByClassName('region')[0] != undefined ? div.getElementsByClassName('region')[0].innerHTML : \"\";\n let lat = place.geometry.location.lat();\n let long = place.geometry.location.lng();\n setCity(cityname)\n setState(statename)\n setLatitude(lat)\n setLongitude(long)\n setServiceAddress(place.formatted_address)\n });\n }\n const onfocusSearch = () => {\n window.$(\"#searchMapInputTicket\").attr(\"autocomplete\", \"new-password\");\n }\n\n const removeRow_estimate = (item) => {\n EstimatesDetails.estimatedata = EstimatesDetails.estimatedata.filter(x => x !== item);\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n const removeRow_invoice = (item) => {\n InvoicesDetails.invoicedata = InvoicesDetails.invoicedata.filter(x => x !== item);\n sum_invoice()\n setTest(test + 1)\n }\n\n const sendMail = (type) => {\n var photos = [];\n var selectedphotos = [];\n if (type == \"estimate\") {\n if (EstimatesDetails.photos != undefined && EstimatesDetails.photos.length > 0) {\n selectedphotos = EstimatesDetails?.photos?.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n\n if (type == \"invoice\") {\n if (InvoicesDetails.photos != undefined && InvoicesDetails.photos.length > 0) {\n selectedphotos = InvoicesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n\n\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n SendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n if (type == \"estimate\")\n setIsMailSent(true)\n if (type == \"invoice\")\n setIsMailSent_invoice(true)\n loadTicketDetails();\n // loadInvoice(activiyid);\n // loadEstimate(activiyid)\n }\n })\n .catch();\n }\n\n const reSendMail = (type) => {\n var photos = [];\n var selectedphotos = [];\n if (type == \"estimate\") {\n if (EstimatesDetails.photos != undefined && EstimatesDetails.photos.length > 0) {\n selectedphotos = EstimatesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n\n if (type == \"invoice\") {\n if (InvoicesDetails.photos != undefined && InvoicesDetails.photos.length > 0) {\n selectedphotos = InvoicesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n ResendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n // loadInvoice(activiyid);\n // loadEstimate(activiyid)\n }\n })\n .catch();\n\n }\n\n const handlenotes_estimate = (text) => {\n EstimatesDetails.notes = text;\n setTest(test + 1)\n\n }\n const handlenotes_invoice = (text) => {\n InvoicesDetails.notes = text;\n setTest(test + 1)\n }\n\n const SelectImage_estimate = (item) => {\n var index = EstimatesDetails.photos.indexOf(item);\n EstimatesDetails.photos[index].selected = EstimatesDetails.photos[index].selected ? false : true;\n setTest(test + 1)\n }\n const SelectImage_invoice = (item) => {\n var index = InvoicesDetails.photos.indexOf(item);\n InvoicesDetails.photos[index].selected = InvoicesDetails.photos[index].selected ? false : true;\n setTest(test + 1)\n }\n const handleChange_disc_percentage_estimate = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.discountpercentage = amount;\n }\n sumPayable();\n setTest(test + 1)\n }\n const handleChange_disc_percentage_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.discountpercentage = amount;\n }\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n const editinvoiceduedate = (date, date2) => {\n setInvoiceduedate(format(new Date(date), \"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date2), \"MM/dd/yyyy\"))\n window.$(\"#duedatepopup\").modal('show');\n }\n\n const editinvoicedate = (date, date2) => {\n setInvoiceduedate(format(new Date(date2), \"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date), \"MM/dd/yyyy\"))\n window.$(\"#datepopup\").modal('show');\n }\n\n const editinvoiceno = (date, date2, invoiceno) => {\n setInvoiceduedate(format(new Date(date), \"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date2), \"MM/dd/yyyy\"))\n setInvoiceno(invoiceno)\n window.$(\"#invoiceno\").modal('show');\n }\n\n const showCreateTicketPopUp = () => {\n if (cid == 0)\n return toast.error('Please select customer')\n else {\n setTestId(testId + 1)\n window.$(\"#CreateTicket\").modal('show');\n }\n\n }\n\n const refreshDashboard = () => {\n history.push('/tickets')\n }\n\n //#region Delete Function added by sonali 31/03/22 feedbacks\n\n const deleteTicketPopUp = () => {\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const DeleteTicket_submit = (id) => {\n // window.$(\"#DeletePopUp\").modal('hide');\n // window.$(\"#TicketDetails\").modal('hide');\n DeleteTicket_api(id).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#DeletePopUp\").modal('hide');\n window.$(\"#TicketDetails\").modal('hide');\n loadAgain();\n }\n })\n .catch();\n\n }\n\n //#endregion\n\n\n const RestoreTicket = () => {\n RestoreTicket_api(ticketid).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#TicketDetails\").modal('hide');\n loadAgain();\n }\n }).catch();\n }\n\n\n\n return (\n <>\n
\n
\n
\n
\n \n
#{ticketid} - Ticket Details
\n \n\n {ticketType === \"normal\" ?\n ((ticketDetails.currentstatus === \"Assigned\" || ticketDetails.currentstatus === \"Created\" || ticketDetails.currentstatus === \"In-Progress\" || ticketDetails.currentstatus === \"Awaited\" || ticketDetails.currentstatus === \"Cancelled\") && (!ticketDetails.currentstatusactivity.includes('Estimate') && !ticketDetails.currentstatusactivity.includes('Invoice') && !ticketDetails.currentstatusactivity.includes('Paid') )) &&\n \n : \n }\n\n {ticketDetails.assignedtoName &&
Job Scheduled at {ticketDetails.scheduleddate + \" \" + ticketDetails.scheduledtime}
}\n\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

{ticketDetails.ordertype}\n {ticketType === \"normal\" &&\n OpenOrderTypeEdit()} className=\"od-edit\">}\n

\n

{ticketDetails.orderdetail}

\n

{ticketDetails.address}

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

Job Contact

\n
{ticketDetails.jobname !== null ? ticketDetails.jobname : \"\"}
\n

{ticketDetails.jobcontactname !== null ? ticketDetails.jobcontactname : \"\"}

\n

{ticketDetails.jobcontactemail !== null ? ticketDetails.jobcontactemail : \"\"}

\n

{ticketDetails.jobcontactphone !== null ? ticketDetails.jobcontactphone : \"\"}

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

PO / Work Order\n {ticketType === \"normal\" &&\n OpenPOWorkOrderEdit()} className=\"od-edit\">\n }\n

\n
\n

PO No. {ticketDetails.ponumber}

\n

Work Order No. {ticketDetails.workordernumber}

\n
\n
\n
\n {\n (ticketDetails.pofilepath != \"\" && ticketDetails.pofilepath != \"NA\" && ticketDetails.poavailable)\n ?\n \n \n\n Purchase Order \n \n \n :\n \"No Purchase order available.\"\n\n }\n\n
\n\n\n
\n
\n\n\n
\n
\n
\n

Assigned to\n {ticketType === \"normal\" &&\n showAssigneeUpdate()} className=\"od-edit\">\n }\n

\n
\n {/* {\n ticketDetails.assignedtoProfilePic != \"\" && ticketDetails.assignedtoProfilePic != \"NA\"\n &&\n \n } */}\n\n
\n

{ticketDetails.assignedtoName}

\n {ticketDetails.assignedtoPhone}\n
\n
\n
\n
\n Status \n
\n \n {ticketDetails.currentstatus} ({ticketDetails.currentstatusactivity})\n {ticketType === \"normal\" &&\n showStatusUpdate()} className=\"od-edit\">\n }\n \n
\n
\n
\n
\n
\n
\n

{ticketDetails.customername}

\n {ticketDetails.customertype}\n
{ticketDetails.billingaddress}
\n

{ticketDetails.contactname}

\n

{ticketDetails.contactphone}

\n

{ticketDetails.contactemail}

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

Activities

\n {ticketType === \"normal\" &&\n
\n  New\n     \n \n
\n }\n
\n
\n
\n
\n
\n {\n ticketDetails.activities != null && ticketDetails.activities != undefined\n &&\n ticketDetails.activities.length == 0\n ?\n \"No Record Found.\"\n :\n ticketDetails.activities != null\n &&\n ticketDetails.activities.map(item => (\n <>\n
\n {item.activitytype == \"Notes\" &&\n
loadNotesDetails(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype == \"Photos\" &&\n
loadPhotos(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype == \"Estimate\" &&\n
loadBoth(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype == \"Invoice\" &&\n
loadInvoice(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype != \"Invoice\" && item.activitytype != \"Estimate\" && item.activitytype != \"Photos\" && item.activitytype != \"Notes\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n
\n \n\n ))\n }\n\n\n
\n
\n {/*
\n ADD\n
*/}\n\n
\n
\n
\n\n
\n {invoicestatus === \"Invoice Drafted\" ? : \"\"}\n\n {/* Add Notes */}\n
\n
\n
\n\n {/*

Notes

*/}\n\n
\n
\n

Notes

\n\n \n
\n \n \n
\n\n
\n
\n {\n openSection == \"Notes\"\n &&\n
\n
\n
\n\n

Notes

\n

{notesdetails.activityday}, {notesdetails.activitydate} {notesdetails.activitytime}

\n

by: {notesdetails.activitybyName}

\n
\n
\n

Notes \n {/* */}\n

\n\n

{notesdetails.notes}

\n
\n\n {/* \n
\n \n
*/}\n\n
\n\n {/* Signature */}\n\n
\n\n }\n\n {\n openSection == \"Photos\"\n &&\n
\n
\n
\n

Photos

\n
\n\n {\n photosList.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n photosList.map(item => (\n \n \n \n ))\n }\n\n\n
\n
\n\n
\n
\n\n }\n\n {\n openSection == \"Estimates_draft\"\n &&\n
\n
\n
\n

Estimate

\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == false)\n &&\n sendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Send Mail\n }\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == true)\n &&\n reSendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Resend Mail\n }\n\n\n\n
\n
\n
\n
\n
\n

Material

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // &&\n \n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails != null &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_UnitPrice_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_Material(item, e)} />\n removeRow_estimate(item)} >\"\"\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails.estimatedata != null && EstimatesDetails.estimatedata != undefined &&\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Material\").length > 0\n &&\n\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n\n
\n
\n

Labor

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // && \n \n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_Labor(item, e)} />\n removeRow_estimate(item)} >\"\"\n
\n
\n\n\n\n\n\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Labor\").length > 0\n &&\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n
\n\n
\n
\n
\n
\n\n {\n ticketDetails.currentstatusactivity !== \"Estimate Approved\"\n &&\n
\n {\n (EstimatesDetails.status == \"\" || EstimatesDetails.status == null || EstimatesDetails.status == undefined)\n &&\n draftEstimate(e)} className=\"btn btn-theme\" >Save\n }\n {\n (EstimatesDetails.status == \"Draft\")\n &&\n finalizeEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Finalized\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Submitted\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n {\n (EstimatesDetails.status == \"Approved\")\n &&\n null\n // updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n\n }\n
\n
\n
\n
\n
\n\n\n }\n {\n openSection == \"Estimates\"\n &&\n
\n
\n
\n

Estimate

\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == false)\n &&\n sendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Send Mail\n }\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == true)\n &&\n reSendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Resend Mail\n }\n {\n EstimatesDetails.downloadpath != \"\"\n &&\n Download\n }\n\n

{EstimatesDetails.creationdate} {EstimatesDetails.creationtime}

\n {\n isAddNewEstimate == false\n &&\n

by: {EstimatesDetails.createdbyName}

\n }\n\n
\n
\n
\n
\n
\n

Material

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // &&\n
\n {EstimatesDetails.status != \"Approved\" &&\n addMoreMaterialRow(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails != null &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_UnitPrice_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_Material(item, e)} />\n {EstimatesDetails.status != \"Approved\" &&\n removeRow_estimate(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails.estimatedata != null && EstimatesDetails.estimatedata != undefined &&\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Material\").length > 0\n &&\n\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n\n
\n
\n

Labor

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // && \n
\n {EstimatesDetails.status != \"Approved\" &&\n addMoreLaborRow(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_Labor(item, e)} />\n {EstimatesDetails.status != \"Approved\" &&\n removeRow_estimate(item)} >\"\"\n }\n
\n
\n\n\n\n\n\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Labor\").length > 0\n &&\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n
\n\n
\n
\n
\n
\n

Notes

\n\n \n
\n
\n

Photos

\n
\n\n {\n EstimatesDetails?.photos?.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n EstimatesDetails?.photos?.map(item => (\n SelectImage_estimate(item)} style={{ cursor: 'pointer' }} >\n \n \n ))\n }\n\n\n
\n
\n
\n\n
\n
\n
\n
\n {/*
\n
PO Number
\n setPoNumber_estimate(e.target.value)} />\n
*/}\n
\n
Total Material
\n
{EstimatesDetails.amountMaterial}
\n
\n
\n
Total Labor
\n
{EstimatesDetails.amountLabour}
\n
\n\n
\n
Material Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_material(e)} />%\n\n
\n
\n
Labor Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_labor(e)} />%\n\n
\n
\n
Discounts
\n handleChange_disc(e)} />\n {EstimatesDetails.status == \"Approved\" ?\n <> handleChange_disc_percentage_estimate(e)} />%\n :\n <> handleChange_disc_percentage_estimate(e)} />%\n }\n
\n
\n
Total Due
\n
{EstimatesDetails.amountPayable}
\n
\n
\n {\n userType != \"Accounts\"\n &&\n
\n\n {\n (EstimatesDetails.status == \"\" || EstimatesDetails.status == null || EstimatesDetails.status == undefined)\n &&\n draftEstimate(e)} className=\"btn btn-theme\" >Save\n }\n {\n (EstimatesDetails.status == \"Draft\")\n &&\n finalizeEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Finalized\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Submitted\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n {\n (EstimatesDetails.status == \"Approved\")\n &&\n null\n // updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n\n }\n
\n
\n
\n
\n
\n }\n\n\n {\n openSection == \"Invoices_draft\"\n &&\n
\n
\n
\n

Invoice

\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == false)\n &&\n sendMail(\"invoice\")} className=\"btn btn-default pull-right\" >Send Mail\n }\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == true)\n &&\n reSendMail(\"invoice\")} className=\"btn btn-default pull-right\" >Resend Mail\n }\n\n
\n
\n
\n
\n \n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails != null &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_qty_material_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_material_invoice(item, e)} />\n
\n
\n \n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

\n
\n
\n
\n \n
\n
\n
\n
\n\n
\n \n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_invoice(item, e)} />\n
\n
\n \n
\n ))\n }\n\n
\n\n
\n
\n

Total

\n
\n
\n
\n \n
\n
\n
\n
\n
\n\n
\n
\n\n
\n
\n {\n userType != \"Accounts\"\n &&\n\n
\n {\n (InvoicesDetails.status == \"\" || InvoicesDetails.status == null || InvoicesDetails.status == undefined)\n &&\n draftInvoice(e)} className=\"btn btn-theme\" >Save\n }\n {\n InvoicesDetails.status == \"Draft\"\n &&\n finalizeInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Finalized\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Submitted\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n {\n InvoicesDetails.status == \"Paid\"\n &&\n null\n // updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n }\n\n
\n
\n
\n
\n
\n }\n\n {\n openSection == \"Invoices\"\n &&\n
\n
\n
\n

Invoice Details

\n
\n \n \n \n
\n\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == false && (userType === \"Accounts\" || userType === \"Admin\"))\n &&\n sendMail()} className=\"btn btn-default\" style={{ margin: \"0px 10px 0px 0px\" }}>Send Mail\n }\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == true && (userType === \"Accounts\" || userType === \"Admin\"))\n &&\n reSendMail()} className=\"btn btn-default\" style={{ margin: \"0px 10px 0px 0px\" }}>Resend Mail\n }\n {\n InvoicesDetails.downloadpath != \"\"\n &&\n Download\n }\n
\n\n
\n
\n
\n
\n
\n
\n

Material

\n
\n {InvoicesDetails.status != \"Paid\" &&\n addMoreMaterialRow_invoice(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails != null &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_qty_material_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_material_invoice(item, e)} />\n
\n
\n
\n
\n \n {InvoicesDetails.status != \"Paid\" &&\n removeRow_invoice(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

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

Labor

\n
\n {InvoicesDetails.status != \"Paid\" &&\n addMoreLaborRow_invoice(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_invoice(item, e)} />\n
\n
\n
\n
\n \n {InvoicesDetails.status != \"Paid\" &&\n removeRow_invoice(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

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

Notes

\n\n \n
\n
\n

Photos

\n
\n\n {\n InvoicesDetails?.photos?.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n InvoicesDetails?.photos?.map(item => (\n SelectImage_invoice(item)} style={{ cursor: 'pointer' }} >\n \n \n ))\n }\n\n\n
\n
\n
\n\n
\n\n
\n
\n
\n {/*
\n
PO Number
\n setPoNumber_invoice(e.target.value)} />\n
*/}\n
\n
Total Material
\n
{InvoicesDetails.amountMaterial}
\n
\n
\n
Total Labor
\n
{InvoicesDetails.amountLabour}
\n
\n\n
\n
Material Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_material_invoice(e)} />%\n\n
\n
\n
Labor Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_labor_invoice(e)} />%\n\n
\n
\n
Discounts
\n \n {InvoicesDetails.status == \"Paid\" ?\n <> handleChange_disc_percentage_invoice(e)} />%\n :\n <> handleChange_disc_percentage_invoice(e)} />%\n }\n
\n\n
\n
Total Due
\n
{InvoicesDetails.amountPayable}
\n
\n
\n {/* stutus {InvoicesDetails.status} */}\n {\n userType != \"Accounts\"\n &&\n\n
\n\n {\n (InvoicesDetails.status == \"\" || InvoicesDetails.status == null || InvoicesDetails.status == undefined)\n &&\n draftInvoice(e)} className=\"btn btn-theme\" >Save\n }\n {\n InvoicesDetails.status == \"Draft\"\n &&\n finalizeInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Finalized\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Submitted\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n {\n InvoicesDetails.status == \"Paid\"\n &&\n null\n // updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n\n }\n
\n
\n
\n
\n
\n }\n\n
\n
\n
\n
\n
\n
\n {\n ticketDetails.ordertypeid != undefined\n &&\n \n }\n\n {/* */}\n\n\n
\n
\n
\n
\n \n \n
Update Assignee
\n
\n
\n
\n
\n\n\n
\n
\n\n setTicketDate(e.target.value)} />\n
\n
\n
\n
\n\n setTicketTime(e.target.value)} />\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
Update Order Type
\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
Update PO/Work Order
\n
\n
\n
\n
\n
\n
\n setPoNumber(e.target.value)} />\n
\n
\n
\n
\n setWorkOrderNumber(e.target.value)} />\n
\n
\n\n
\n UploadDocument(e)} className=\"form-control tic-file\" placeholder=\"\" />\n
\n\n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n
\n
\n
\n
\n \n \n
Update Status
\n
\n
\n
\n
\n\n
\n
\n \n
\n
\n\n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n {cid !== 0 &&\n }\n \n \n \n\n \n\n\n\n \n )\n}\n\nexport default TicketDetails\n\nwindow.$(window).on('popstate', function () {\n window.$('.modal').click();\n});","import { GoogleMap, withGoogleMap, withScriptjs, Marker, InfoWindow } from \"react-google-maps\"\nimport { compose, withProps } from \"recompose\"\nimport React, { useState, useEffect, useRef } from 'react'\nimport TicketDetails from '../components/popups/TicketDetails'\nimport { GetKeyPointsApi, GetAssignmentsApi, GetMapdataApi } from '../functions/dashboard'\nimport moment from 'moment'\nimport { ListAltRounded } from \"@material-ui/icons\"\n\n//GoogleMap.setApiKey(\"AIzaSyA6KSQ1K4AYunLrJLZzibbZOAMWBSuqIPo\");\n\n// let iconMarker = new window.google.maps.MarkerImage(\n// \"https://lh3.googleusercontent.com/bECXZ2YW3j0yIEBVo92ECVqlnlbX9ldYNGrCe0Kr4VGPq-vJ9Xncwvl16uvosukVXPfV=w300\",\n// null, /* size is determined at runtime */\n// null, /* origin is 0,0 */\n// null, /* anchor is bottom center of the scaled image */\n// new window.google.maps.Size(32, 32)\n// );\n\nconst exampleMapStyles = [\n {\n featureType: \"poi\",\n elementType: \"geometry\",\n stylers: [\n {\n color: \"#eeeeee\",\n },\n ],\n },\n {\n featureType: \"poi\",\n elementType: \"labels.text\",\n stylers: [\n {\n visibility: \"off\",\n },\n ],\n },\n {\n featureType: \"water\",\n elementType: \"labels.text.fill\",\n stylers: [\n {\n color: \"#9e9e9e\",\n },\n ],\n },\n];\n\n\nconst MyMapComponent = compose(\n withProps({\n googleMapURL: \"https://maps.googleapis.com/maps/api/js?key=AIzaSyA6KSQ1K4AYunLrJLZzibbZOAMWBSuqIPo&v=3.exp&libraries=geometry,drawing,places\",\n loadingElement:
,\n containerElement:
,\n mapElement:
,\n }),\n withScriptjs,\n withGoogleMap\n)((props) => {\n\n const elementRef = useRef();\n const [selectedCenter, setSelectedCenter] = useState(null);\n const [refresh, setRefresh] = useState(0)\n const [ticketMapData, setTicketMapData] = useState([]);\n const [technicianMapData, setTechnicialMapData] = useState([]);\n const [test, setTest] = useState(0);\n const [latLng, setLatLng] = useState({ lat: 33.0312515, lng: -96.70522659999999 })\n const [defaultZoom, setDefaultZoom] = useState(8);\n const [defineKey, setDefineKey] = useState(0);\n const [selectedTicketId, setSelectedTicketId] = useState(0);\n useEffect(() => {\n const listener = e => {\n if (e.key === \"Escape\") {\n setSelectedCenter(null);\n }\n };\n window.addEventListener(\"keydown\", listener);\n return () => {\n window.removeEventListener(\"keydown\", listener);\n };\n setDefineKey(defineKey + 1)\n },\n []);\n\n const OpenTicketDetails = (ticketid) => {\n\n setSelectedTicketId(ticketid);\n window.$(\"#TicketDetails\").modal('show');\n props.setTicketId(ticketid)\n }\n\n var intervaltime;\n useEffect(() => {\n intervaltime = setInterval(refreshmap, 20000)\n }, [refresh])\n\n\n useEffect(() => {\n // loadMapData()\n }, []);\n\n useEffect(() => {\n loadMapData()\n }, [props.searchData]);\n\n const refreshmap = () => {\n clearInterval(intervaltime)\n setRefresh(refresh + 1)\n if (props.searchData === 0 && props.searchDateVal === \"\" && props.searchTechnicianList > 0 && props.searchValue === \"\" && props.searchOrderTypeList.length > 0) {\n setRefresh(refresh + 1)\n loadMapData();\n }\n }\n\n const loadMapData = () => {\n GetMapdataApi().then(res => {\n const result = res;\n if (result != undefined) {\n console.log(\"mapresult\", result)\n setTechnicialMapData(result.technicians)\n setTicketMapData(null)\n\n var list = [];\n var isFilterApplied = false;\n if (props.searchDateVal !== \"\" && list.length > 0) {\n //setTicketMapData(result.tickets.filter(x => x.scheduleddate === moment(props.searchDateVal).format(\"DD MMM YYYY\").toString()))\n var aa = list.filter(x => x.scheduleddate === moment(props.searchDateVal).format(\"DD MMM YYYY\").toString());\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n }\n list = list.filter(x => x.scheduleddate === moment(props.searchDateVal).format(\"DD MMM YYYY\").toString());\n isFilterApplied = true;\n }\n else if (props.searchDateVal !== \"\" && (list === null || list === undefined || list.length === 0)) {\n\n var aa = result.tickets.filter(x => x.scheduleddate === moment(props.searchDateVal).format(\"DD MMM YYYY\").toString());\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n }\n list = result.tickets.filter(x => x.scheduleddate === moment(props.searchDateVal).format(\"DD MMM YYYY\").toString());\n console.log('listdata', list)\n isFilterApplied = true;\n }\n if (props.searchOrderTypeList.length > 0 && list.length > 0) {\n var aa = list.filter(a => props.searchOrderTypeList.includes(a.ordertype));\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n\n }\n list = list.filter(a => props.searchOrderTypeList.includes(a.ordertype));\n isFilterApplied = true;\n }\n else if (props.searchOrderTypeList.length > 0 && (list === null || list === undefined || list.length === 0)) {\n const aa = result.tickets.filter(a => props.searchOrderTypeList.includes(a.ordertype));\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n }\n list = result.tickets.filter(a => props.searchOrderTypeList.includes(a.ordertype));\n isFilterApplied = true;\n }\n if (props.searchTechnicianList.length > 0 && list.length > 0) {\n\n var aa = list.filter(a => props.searchTechnicianList.includes(a.technicianid));\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n }\n list = list.filter(a => props.searchTechnicianList.includes(a.technicianid));\n isFilterApplied = true;\n }\n else if (props.searchTechnicianList.length > 0 && (list === null || list === undefined || list.length === 0)) {\n var aa = result.tickets.filter(a => props.searchTechnicianList.includes(a.technicianid));\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n }\n list = result.tickets.filter(a => props.searchTechnicianList.includes(a.technicianid));\n isFilterApplied = true;\n }\n if (props.searchValue !== \"\" && list.length > 0) {\n\n var aa = list.filter(x => x.ticketid === Number(props.searchValue));\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n }\n list = list.filter(x => x.ticketid === Number(props.searchValue));\n isFilterApplied = true;\n }\n else if (props.searchValue !== \"\" && (list === null || list === undefined || list.length === 0)) {\n\n var aa = result.tickets.filter(x => x.ticketid === Number(props.searchValue));\n if (aa.length > 0) {\n setDefaultZoom(13)\n setLatLng({ lat: Number(aa[0].latitude), lng: Number(aa[0].longitude) })\n }\n list = result.tickets.filter(x => x.ticketid === Number(props.searchValue));\n isFilterApplied = true;\n\n }\n if ((list.length > 0 && list !== null && list !== undefined) || isFilterApplied === true) {\n setTicketMapData(list)\n console.log('listdata1', list)\n // setTest(test + 1)\n //props.setRefreshComponentAfterSearch(test + 1)\n }\n else {\n setTicketMapData(result.tickets)\n setDefaultZoom(8)\n setLatLng({ lat: 33.0312515, lng: -96.70522659999999 })\n console.log('listdata2', list)\n //setTest(test + 1)\n //props.setRefreshComponentAfterSearch(test + 1)\n }\n // props.setRefreshComponentAfterSearch(test + 1)\n //clearLatLng(result.tickets);\n\n }\n }).catch();\n }\n\n\n\n useEffect(() => () => {\n //unmount \n })\n\n const handleSearch = () => {\n\n }\n\n return (\n <>\n \n {\n (ticketMapData != undefined && ticketMapData != null && ticketMapData.length > 0) &&\n ticketMapData.map(item => {\n var defaultcolor = \"#f81300\"\n var defaultcolorblue = \"#3b5998\"\n var svg = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `;\n var svgblue = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `;\n return <>\n {item.longitude !== null\n ?\n {\n setSelectedCenter(item);\n }}\n key={item}\n name={'Current location'}\n >\n {selectedCenter && (\n (selectedCenter.latitude == item.latitude)\n &&\n {\n setSelectedCenter(null);\n }}\n position={{\n lat: parseFloat(selectedCenter.latitude),\n lng: parseFloat(selectedCenter.longitude)\n }}\n >\n \n \n )}\n\n \n :\n null}\n \n })\n\n }\n {\n technicianMapData != undefined && technicianMapData != null &&\n technicianMapData.map(item => {\n var defaultcolor = \"#008945\"\n var svg = `\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n `;\n return {\n setSelectedCenter(item);\n }}\n\n\n >\n {selectedCenter && (\n (selectedCenter.latitude == item.latitude)\n &&\n {\n setSelectedCenter(null);\n }}\n position={{\n lat: selectedCenter.latitude,\n lng: selectedCenter.longitude\n }}\n >\n \n \n )}\n \n })\n\n }\n \n\n \n )\n}\n\n)\n\nexport default MyMapComponent\n","\nimport React, { useState, useEffect } from 'react'\nimport { Link } from 'react-router-dom';\nimport { GetKeyPointsApi } from '../functions/dashboard'\n\n//whichScreen should be dashboard or Ticket\nconst KeyPoints = ({ refresh }) => {\n const [keyPoint, setKeyPoints] = useState({}); \n const [keyStatus, setKeyStatus] = useState(\"\");\n useEffect(() => {\n loadKeyPoints();\n }, [refresh]); \n\n const loadKeyPoints = () => {\n GetKeyPointsApi().then(res => {\n const result = res;\n if (result != undefined) {\n setKeyPoints(result);\n }\n }).catch();\n }\n\n return ( \n
    \n
  • \n \n
    \n
    \n {keyPoint.unassigned == undefined ? :

    {keyPoint.unassigned}

    } \n

    Unassigned

    \n
    \n \n
  • \n
  • \n \n
    \n
    \n {keyPoint.assigned == undefined ? :

    {keyPoint.assigned}

    }\n {/*

    {keyPoint.assigned}

    */}\n

    In Progress

    \n
    \n \n
  • \n
  • \n \n
    \n
    \n {keyPoint.draftEstimate == undefined ? :

    {keyPoint.draftEstimate}

    }\n {/*

    {keyPoint.draftEstimate}

    */}\n

    Estimate Drafted

    \n
    \n \n
  • \n
  • \n \n
    \n
    \n {keyPoint.submittedEstimate == undefined ? :

    {keyPoint.submittedEstimate}

    }\n {/*

    {keyPoint.submittedEstimate}

    */}\n

    Estimate Pending for Approval

    \n
    \n \n
  • \n
  • \n \n
    \n
    \n {keyPoint.drafetInvoice == undefined ? :

    {keyPoint.drafetInvoice}

    }\n {/*

    {keyPoint.drafetInvoice}

    */}\n

    Work Completed

    \n
    \n \n
  • \n
\n \n \n \n\n )\n}\nexport default KeyPoints;\n","import React, { useEffect, useState } from 'react'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { LoadCustomers_api } from '../../functions/customers'\nimport CustomerAddUpdateForm from '../../forms/CustomerAddUpdateForm'\nimport CreateTicket from '../../forms/CreateTicket'\nimport { toast } from 'react-toastify'\nimport { GetAssignmentsApi, GetMapdataApi } from '../../functions/dashboard'\nimport { LoadTechnicians_api } from '../../functions/users' // added by Sonali 05/04/22\nimport { LoadOrderType_api } from '../../functions/masters' // added by Sonali 05/04/22\nimport Moment from 'moment';\nimport { Link } from 'react-router-dom'\nimport MyMapComponent from '../../googleMap/MyMapComponent'\nimport TicketDetails from '../../components/popups/TicketDetails'\nimport KeyPoints from '../../commonComponents/KeyPoints'\nimport axios from 'axios';\n\nimport Multiselect from 'multiselect-react-dropdown';\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\n\nfunction Dashboard() {\n var date_lo = new Date();\n var formateddate = Moment(date_lo).format(\"yyyy-MM-DD\");\n const [txtcustomername, setCustomername] = useState(\"\");\n const [selectedCustomerID, setSelectedCustomerID] = useState(\"\");\n const [selectedCustomerName, setSelectedCustomerName] = useState(\"\");\n const [customerList, setCustomerList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [screentype, setScreenType] = useState(\"Create\");\n const [customerinfo, setCustomerinfo] = useState({});\n const [assignmentList, setAssignmentList] = useState([]);\n const [date, setDate] = useState(formateddate);\n const [ticketMapData, setTicketMapData] = useState([]);\n const [technicianMapData, setTechnicialMapData] = useState([]);\n const [ticketId, setTicketId] = useState(0);\n const [testId, setTestId] = useState(0);\n const [keypointRefresh, setKeyPointsRefresh] = useState(0);\n const [txtSearchInMap, setTxtSearchInMap] = useState(\"\");\n const [txtSearchInMaptemp, setTxtSearchInMaptemp] = useState(\"\");\n const [refreshComponetAfterSearch, setRefreshComponentAfterSearch] = useState(0)\n\n const [technicianList, setTechnicianlist] = useState([]); // added by Sonali 05/04/22\n const [searchOrderTypelist, setSearchOrderTypelist] = useState([]); // added by Sonali 05/04/22\n const [searchTechnicianlist, setSearchTechnicianlist] = useState([]); // added by Sonali 05/04/22\n const [allOrderTypes, setAllOrderTypes] = useState([]); // added by Sonali 05/04/22\n const [txtSearchDateval, setTxtSearchDateVal] = useState(\"\") // added by Sonali 05/04/22\n const [searchData, setSearchData] = useState(0);\n const multiselectRef = React.createRef();\n const multiselectRef1 = React.createRef();\n // added by Sonali 05/04/22\n\n useEffect(() => {\n\n window.$(\"#searchOrderTypeval\").hide(); // added by Sonali 05/04/22\n window.$(\"#searchresultarea\").hide();\n window.$(\"#msgdiv\").hide();\n\n loadTechnicians(); // added by Sonali 05/04/22\n loadOrderType(); // added by Sonali 05/04/22\n\n loadAssignments();\n loadMapData();\n\n let res;\n let evt;\n let evtfinal;\n const clientid = localStorage.getItem(\"clientid\");\n try {\n axios.get(API_Base_Url + \"calendar/summary?clientid=\" + clientid, {\n headers: {\n 'Accept': 'application/json, text/plain, */*',\n //'Content-Type': 'application/json'\n }\n })\n .then(response => {\n console.log(response.data.technicians)\n res = response.data.technicians.map(item => {\n return {\n id: item.technicianID,\n name: item.technicianname,\n avatar: item.profileimage === \"\" ? \"images/avtar.png\" : item.profileimage\n }\n\n })\n // evt = response.data.data.map((item, i) => {\n // return {\n // id: i + 1,\n // bgColor: item.unavailableTiming === \"\" ? \"#A2D2FF\" : \"#dfdfdf\",\n // resourceId: item.techncianID,\n // title: item.unavailableTiming === \"\" ? item.totalTickets + \" tickets \" + \" (\" + item.totalHours + \" Hours)\" : \"Unavailable (\" + (item.unavailableTiming) + \")\",\n // start: item.date + ' 09:00:00',\n // end: item.date + ' 11:00:00'\n // }\n // })\n\n //evtfinal.push(evt)\n // console.log(\"evt1\", evt)\n evt = response.data.data.map((item, i) => {\n if (item.totalTickets > 0) {\n return {\n id: i * 100 + 1,\n bgColor: \"#A2D2FF\",\n resourceId: item.techncianID,\n title: item.totalTickets + \" tickets \" + \" (\" + item.totalHours + \" Hours)\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n }\n }\n else {\n return {\n id: 0,\n bgColor: \"#ffffff\",\n resourceId: '',\n title: '',\n start: '',\n end: ''\n }\n }\n\n\n })\n evtfinal = response.data.data.map((item, i) => {\n if (item.unavailableTiming !== \"\") {\n\n evt.push({\n id: i * 200 + 1,\n bgColor: \"#dfdfdf\",\n resourceId: item.techncianID,\n title: \"Block (\" + (item.unavailableTiming) + \")\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n })\n }\n\n\n })\n console.log(\"evt2\", evt)\n localStorage.setItem(\"evt\", JSON.stringify(evt))\n localStorage.setItem(\"res\", JSON.stringify(res))\n\n });\n }\n catch (err) {\n //console.log(err)\n }\n\n\n }, []);\n\n // loadTechnicians() added by Sonali 05/04/22\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n var list = [];\n result.data.forEach(item => {\n list.push({ name: item.name, id: item.userId })\n });\n setTechnicianlist(list);\n }\n\n }).catch();\n }\n\n const loadOrderType = () => {\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setAllOrderTypes([])\n }\n else {\n var list = [];\n result.data.forEach(item => {\n list.push({ name: item.ordertype, id: item.ordertype })\n });\n setAllOrderTypes(list);\n }\n }\n\n }).catch();\n }\n\n\n const refreshDashboard = () => {\n setKeyPointsRefresh(keypointRefresh + 1);\n loadAssignments();\n loadMapData();\n setCustomername(\"\");\n setSelectedCustomerID(0);\n window.$(\"#msgdiv\").show();\n }\n //Load Change date value\n useEffect(() => {\n loadAssignments();\n }, [date]);\n\n\n const loadCustomers = (txtsearch) => {\n setIsLoaded(false);\n LoadCustomers_api(\"All\", txtsearch).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setCustomerList([])\n }\n else {\n setCustomerList(result.data);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n\n\n //load Map Data\n const loadMapData = () => {\n GetMapdataApi().then(res => {\n const result = res;\n if (result != undefined) {\n setTechnicialMapData(result.technicians)\n setTicketMapData(result.tickets)\n }\n }).catch();\n }\n\n //Assignments\n const loadAssignments = () => {\n GetAssignmentsApi(date).then(res => {\n const result = res;\n if (result != undefined) {\n setAssignmentList(result.assignments);\n }\n }).catch();\n }\n\n const SearchCustomer = (e) => {\n setCustomername(e.target.value);\n if (e.target.value.length < 2) {\n window.$(\"#searchresultarea\").hide();\n\n }\n else {\n window.$(\"#searchresultarea\").show();\n loadCustomers(e.target.value);\n }\n\n }\n\n const SelectNewAddedCustomer = (customerid) => {\n LoadCustomers_api(\"All\", txtcustomername).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n\n }\n else {\n var cust = result.data.filter(x => x.customerid == customerid)[0];\n ChooseCustomer(cust);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const ChooseCustomer = (item) => {\n setSelectedCustomerName(item.customername)\n setSelectedCustomerID(item.customerid)\n //alert(item.customerid)\n window.$(\"#searchresultarea\").hide();\n setCustomername(item.customername)\n }\n\n const showCustomerCreationPopUp = () => {\n setCustomername(\"\");\n setTestId(testId + 1)\n window.$(\"#CustomerFormPop\").modal('show');\n window.$(\"#searchresultarea\").hide();\n }\n\n const loadAgain = () => {\n\n }\n\n const showCreateTicketPopUp = () => {\n //alert(selectedCustomerID)\n if (selectedCustomerID == 0)\n return toast.error('Please select customer')\n\n setTestId(testId + 1)\n window.$(\"#CreateTicket\").modal('show');\n\n }\n\n const addDays = () => {\n var aa = Moment(date).add(1, 'days');\n setDate(aa.format(\"yyyy-MM-DD\"));\n }\n\n const addminusDays = () => {\n var aa = Moment(date).add(-1, 'days');\n setDate(aa.format(\"yyyy-MM-DD\"));\n }\n\n\n const assignmentjs = (item) => {\n var accordionitem = item;\n window.$(\"#\" + accordionitem).slideToggle().parent().siblings().find(\".accordion-content\").slideUp();\n window.$(\"#\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + \"item_\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title\").removeClass(\"active-title\");\n window.$(\"i.fa-chevron-down\", \"#\" + item).toggleClass(\"chevron-top\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title i.fa-chevron-down\").removeClass(\"chevron-top\");\n }\n\n const doSearch = (e) => {\n setSearchData(searchData + 1)\n } // updated by Sonali on 05/04/22\n\n\n const onSelectOrder = (selectedList, selectedItem) => {\n var obj = [];\n selectedList.forEach(x => {\n obj.push(x.name);\n })\n setSearchOrderTypelist(obj)\n }\n\n const onRemoveOrder = (selectedList, removedItem) => {\n var obj = [];\n selectedList.forEach(x => {\n obj.push(x.name);\n })\n setSearchOrderTypelist(selectedList)\n\n }\n\n const onSelectTechnician = (selectedList, selectedItem) => {\n var obj = [];\n selectedList.forEach(x => {\n obj.push(Number(x.id));\n })\n setSearchTechnicianlist(obj)\n }\n\n const onRemoveTechnician = (selectedList, removedItem) => {\n var obj = [];\n selectedList.forEach(x => {\n obj.push(Number(x.id));\n })\n setSearchTechnicianlist(obj)\n\n }\n const onClearOrder = () => {\n setSearchOrderTypelist([])\n\n // By calling the belowe method will reset the selected values programatically\n multiselectRef.current.resetSelectedValues();\n\n }\n const onClearTechnician = () => {\n setSearchTechnicianlist([])\n\n // By calling the belowe method will reset the selected values programatically\n multiselectRef1.current.resetSelectedValues();\n\n }\n\n\n return (\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

Overview

\n
\n
\n { }} />\n
\n
\n
\n
\n
\n
\n
\n\n
\n

Tickets & Techs

\n
\n\n
\n
\n {/*
doSearch(e)}> */}\n
\n setTxtSearchDateVal(e.target.value)} />\n
\n\n
\n onSelectOrder(e)} // Function will trigger on select event\n onRemove={e => onRemoveOrder(e)} // Function will trigger on remove event\n displayValue=\"name\" // Property name to display in the dropdown options\n placeholder={searchOrderTypelist.length <= 0 ? \"Select Order Type\" : searchOrderTypelist.length.toString() + \" Selected\"}\n showCheckbox={true}\n avoidHighlightFirstOption={true}\n ref={multiselectRef}\n />\n {searchOrderTypelist.length > 0 ?\n onClearOrder()} className=\"multiselectclearbutton\">clear\n : \"\"}\n
\n
\n\n onSelectTechnician(e)} // Function will trigger on select event\n onRemove={e => onRemoveTechnician(e)} // Function will trigger on remove event\n displayValue=\"name\" // Property name to display in the dropdown options\n placeholder={searchTechnicianlist.length <= 0 ? \"Select Technician\" : searchTechnicianlist.length.toString() + \" Selected\"}\n showCheckbox={true}\n avoidHighlightFirstOption={true}\n ref={multiselectRef1}\n />\n {searchTechnicianlist.length > 0 ?\n onClearTechnician()} className=\"multiselectclearbutton\">clear\n : \"\"}\n {/* */}\n
\n
\n setTxtSearchInMaptemp(e.target.value.replace(/[^0-9]/g, \"\"))} />\n
\n \n\n {/*
*/}\n
\n\n
\n \n
\n
\n
\n
\n\n\n {/* */}\n
\n

Overview

\n
\n
\n
\n SearchCustomer(e)} className=\"form-control\" placeholder=\"Select Customer\" />\n \n
\n
\n
\n {\n customerList.length == 0\n ?\n null\n :\n customerList.map(item => (\n
ChooseCustomer(item)}>\n
{item.customername}
\n

{item.contactname}

\n
\n ))\n }\n
\n \n\n
\n \n\n
\n
\n\n
\n

Assignments

\n
addminusDays()}>  {Moment(date).format(\"DD-MMM-YY\")}    addDays()}>
\n
\n
\n {/* */}\n
\n
\n
\n {\n assignmentList != undefined &&\n <>\n {\n assignmentList.length == 0\n ?\n \"No Record Found.\"\n :\n assignmentList.map((item, index) => (\n
\n
assignmentjs(`item-${index}`)}>\n
\n\n {\n item.profilepic == \"NA\" || item.profilepic == \"\"\n ?\n
\n
{item.name.slice(0, 1)}
\n
\n :\n \n\n }\n
\n

{item.name}

\n {item.phone}\n
\n
\n
{item.countTickets}
\n \n
\n
\n
\n\n
\n {/*

{JSON.stringify(item.tickets)}

*/}\n {\n\n item.tickets != undefined &&\n\n item.tickets.length == 0\n ?\n \"No Record Found.\"\n :\n item.tickets != null &&\n item.tickets.map(inneritem => (\n
\n
\n
\n \n\n\n {inneritem.ticketid}
\n
{inneritem.scheduletime}
\n
\n
\n

{inneritem.customername}

\n

{inneritem.address}

\n

{inneritem.ordertype}

\n
\n {\n inneritem.status == \"Scheduled\"\n &&\n \n }\n {\n inneritem.status == \"Completed\"\n &&\n \n }\n {\n inneritem.status == \"Open\"\n &&\n \n }\n {\n inneritem.status == \"In-Progress\"\n &&\n \n }\n {\n inneritem.status == \"Closed\"\n &&\n \n }\n {\n inneritem.status == \"Cancelled\"\n &&\n \n }\n {\n inneritem.status == \"Awaited\"\n &&\n \n }\n {inneritem.status}\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\nexport default Dashboard\n\n","import React from 'react'\n\nfunction TicketFilters({ handleSearch ,statuslist, assigneelist, fromdate, setFromdate, todate , setTodate, status, setStatus, assigntoId, setAssigntoId}) {\n return (\n
\n
\n
\n
\n \n \n
Filters
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n\n\n
\n
\n
\n setFromdate(e.target.value)} />\n
\n
\n
\n
\n
\n setTodate(e.target.value)} />\n
\n
\n\n\n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n )\n}\n\nexport default TicketFilters\n","import React, { useEffect, useState } from 'react'\nimport { toast } from 'react-toastify'\nimport KeyPoints from '../../commonComponents/KeyPoints'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport TicketDetails from '../../components/popups/TicketDetails'\nimport TicketFilters from '../../components/popups/TicketFilters'\nimport { filterslist_api, ticketList_api } from '../../functions/tickets'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetKeyPointsApi } from '../../functions/dashboard'\nimport { useHistory } from 'react-router-dom'\nimport Moment from 'moment';\nimport { LoadCustomers_api } from '../../functions/customers'\nimport CustomerAddUpdateForm from '../../forms/CustomerAddUpdateForm'\nimport CreateTicket from '../../forms/CreateTicket'\nimport DeletePopUp from '../../forms/DeletePopUp'\nimport { DeleteTicket_api } from '../../functions/tickets'\n\nimport localeCompare from \"locale-compare\";\n\nfunction Tickets(props) {\n\n const history = useHistory();\n var urlstatus = props.match.params.status;\n var date_lo = new Date();\n var formateddate = Moment(date_lo).format(\"yyyy-MM-DD\");\n const usertype = localStorage.getItem(\"usertype\");\n const [statuslist, setstatuslist] = useState([]);\n const [assigneelist, setassigneelist] = useState([]);\n const [fromdate, setFromdate] = useState(\"\");\n const [todate, setTodate] = useState(\"\");\n const [status, setStatus] = useState(urlstatus !== undefined ? urlstatus : \"Not Assigned\");\n const [statusid, setStatusid] = useState(urlstatus);\n const [assigntoId, setAssigntoId] = useState(0);\n const [ticketList, setTicketList] = useState([]);\n const [selectedTicketId, setSelectedTicketId] = useState(0);\n var userid = Number(localStorage.getItem(\"userid\"));\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n const [totaltickets, setTotalTickets] = useState(\"\");\n const [txtsearch, setTxtsearch] = useState(\"\");\n const [ticketid, setTicketId] = useState(0);\n const [isapplyFilter_status, setIsApplyfilter_status] = useState(urlstatus != undefined ? true : false);\n const [isapplyFilter_assignto, setIsApplyfilter_assignto] = useState(false);\n const [isapplyFilter_date, setIsApplyfilter_date] = useState(false);\n const [isLoaded, setIsLoaded] = useState(false);\n const [keypointRefresh, setKeyPointsRefresh] = useState(0);\n const [keyStatus, setKeyStatus] = useState(\"Not Assigned\");\n const [keyPoint, setKeyPoints] = useState({});\n const [selectedCustomerID, setSelectedCustomerID] = useState(\"\");\n const [screentype, setScreenType] = useState(\"Create\");\n const [customerinfo, setCustomerinfo] = useState({});\n const [testId, setTestId] = useState(0);\n const [txtcustomername, setCustomername] = useState(\"\");\n const [customerList, setCustomerList] = useState([]);\n const [selectedCustomerName, setSelectedCustomerName] = useState(\"\");\n const [technicianMapData, setTechnicialMapData] = useState([]);\n const [ticketMapData, setTicketMapData] = useState([]);\n const [assignmentList, setAssignmentList] = useState([]);\n\n\n const [sortingDirection, setSortingDirection] = useState(\"asc\")\n\n let recordshowperpage = 10;\n\n useEffect(() => {\n loadTechnicians();\n loadKeyPoints();\n SelectKeyStatus('Not Assigned')\n handleSearch();\n\n window.$(\"#searchresultarea\").hide();\n window.$(\"#msgdiv\").hide();\n }, []);\n\n\n useEffect(() => {\n handleSearch();\n }, [txtsearch]);\n\n useEffect(() => {\n if (keyStatus != \"\")\n history.push('/tickets')\n handleSearch();\n }, [keyStatus]);\n\n\n const SelectKeyStatus = (value) => {\n setStatus(value)\n setKeyStatus(value)\n }\n\n\n const loadKeyPoints = () => {\n GetKeyPointsApi().then(res => {\n const result = res;\n if (result != undefined) {\n setKeyPoints(result);\n console.log(\"keypointres\", result)\n }\n }).catch();\n }\n\n const handleSearch = () => {\n setSelectedPageNo(1)\n setPaginationarr([])\n setIsLoaded(false);\n var req = {\n \"userid\": userid,\n \"fromdate\": fromdate,\n \"todate\": todate,\n \"status\": status,\n \"searchkeyword\": txtsearch,\n \"assigntouserid\": assigntoId\n }\n ticketList_api(req).then(res => {\n setIsLoaded(true)\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#Filters\").modal('hide');\n if (fromdate != \"\" && todate != \"\")\n setIsApplyfilter_date(true)\n if (status != \"\")\n setIsApplyfilter_status(true)\n if (assigntoId != 0)\n setIsApplyfilter_assignto(true)\n\n setTotalTickets(res.result);\n var ticklist = res.tickets;\n if (ticklist != undefined) {\n setTicketList(res.tickets);\n console.log(\"ticketList\", res.tickets)\n if (ticklist.length > recordshowperpage) {\n var totalpage = ticklist.length / recordshowperpage;\n var reminder = ticklist.length % recordshowperpage;\n var pages = [];\n for (var i = 1; i <= totalpage; i++) {\n pages.push(i);\n }\n if (reminder == 0) {\n //pages = pages;\n }\n else {\n pages.push(pages.length + 1)\n }\n setPaginationarr(pages);\n //setPaginationarr(reminder == 0 ? totalpage : totalpage + (totalpage + 1))\n }\n else {\n setPaginationarr([]);\n //setTicketList([]);\n }\n }\n else {\n setPaginationarr([]);\n setTicketList([]);\n }\n\n }\n\n })\n .catch(error => setIsLoaded(true));\n\n }\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setassigneelist([])\n }\n else\n setassigneelist(result.data);\n }\n\n }).catch();\n }\n\n const loadCustomers = (txtsearch) => {\n setIsLoaded(false);\n LoadCustomers_api(\"All\", txtsearch).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setCustomerList([])\n }\n else {\n setCustomerList(result.data);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const SelectNewAddedCustomer = (customerid) => {\n LoadCustomers_api(\"All\", txtcustomername).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n\n }\n else {\n var cust = result.data.filter(x => x.customerid == customerid)[0];\n ChooseCustomer(cust);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const ChooseCustomer = (item) => {\n setSelectedCustomerName(item.customername)\n setSelectedCustomerID(item.customerid)\n window.$(\"#searchresultarea\").hide();\n setCustomername(item.customername)\n }\n\n const showCustomerCreationPopUp = () => {\n setCustomername(\"\");\n setTestId(testId + 1)\n window.$(\"#CustomerFormPop\").modal('show');\n window.$(\"#searchresultarea\").hide();\n }\n\n const refreshDashboard = () => {\n setKeyPointsRefresh(keypointRefresh + 1);\n handleSearch()\n setCustomername(\"\");\n setSelectedCustomerID(0);\n window.$(\"#msgdiv\").show();\n }\n\n const SearchCustomer = (e) => {\n setCustomername(e.target.value);\n if (e.target.value.length < 2) {\n window.$(\"#searchresultarea\").hide();\n\n }\n else {\n window.$(\"#searchresultarea\").show();\n loadCustomers(e.target.value);\n }\n\n }\n\n const showCreateTicketPopUp = () => {\n if (selectedCustomerID == 0)\n return toast.error('Please select customer')\n\n setTestId(testId + 1)\n window.$(\"#CreateTicket\").modal('show');\n\n }\n\n\n\n var tickid = 0;\n const OpenTicketDetails = (ticketid) => {\n setSelectedTicketId(ticketid);\n tickid = ticketid;\n localStorage.setItem(\"ticketid\", ticketid)\n window.$(\"#TicketDetails\").modal('show');\n }\n\n const compareBy = (key, direction) => {\n if (direction === \"asc\") {\n setSortingDirection(\"desc\")\n return function (a, b) {\n if (a[key] < b[key]) return -1;\n if (a[key] > b[key]) return 1;\n return 0;\n };\n }\n else if (direction === \"desc\") {\n setSortingDirection(\"asc\")\n return function (a, b) {\n if (a[key] < b[key]) return 1;\n if (a[key] > b[key]) return -1;\n return 0;\n };\n }\n }\n\n const sortBy = (key, direction) => {\n let array = [...ticketList];\n array.sort(compareBy(key, direction));\n setTicketList(array);\n }\n\n const deleteTicketPopUp = (ticketId) => {\n setSelectedTicketId(ticketId)\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const DeleteTicket_submit = (id) => {\n DeleteTicket_api(id).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#DeletePopUp\").modal('hide');\n handleSearch();\n }\n })\n .catch();\n\n }\n\n return (\n
\n
\n
\n \n {\n // selectedTicketId != 0\n // &&\n \n }\n\n {\n usertype === \"Dispatcher\" &&\n <>\n \n \n \n }\n\n\n \n\n
\n {/* */}\n
\n {/* */}\n
\n
\n
\n

\n Tickets\n

\n
\n
\n setTxtsearch(e.target.value)} />\n \n
\n \n
\n
\n
\n
\n \n\n {usertype === \"Dispatcher\" &&\n
\n
\n
\n SearchCustomer(e)} className=\"form-control\" placeholder=\"Select Customer\" />\n \n
\n
\n
\n {\n customerList.length == 0\n ?\n null\n :\n customerList.map(item => (\n
ChooseCustomer(item)}>\n
{item.customername}
\n

{item.contactname}

\n
\n ))\n }\n
\n \n\n
\n \n\n
\n
\n }\n\n
\n
\n
\n {/* */}\n
\n
\n
{totaltickets}  \n {/* - 01 Mar to 30 Mar */}\n \n {\n isapplyFilter_status && (status===\"waitingonparts\"?\"Waiting on Parts\":status)\n }  \n {\n (isapplyFilter_assignto && assigntoId!==0) && \"Assign to - \" + assigneelist.filter(x => x.userId == assigntoId)[0].name\n }  \n {\n isapplyFilter_date\n &&\n \"From \" + fromdate + \" To \" + todate\n }\n \n
\n
\n
\n {/* */}\n {\n isLoaded == false ?
\"\"
\n :\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n ticketList.length == 0\n ?\n \"No Record Found\"\n :\n ticketList.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map(item => (\n \n \n \n \n \n \n {\n (item.technicianname == \"\" || item.technicianname == null)\n ?\n \n :\n \n }\n\n \n \n\n \n \n {/* added by Sonali 31-03-22 feedback */}\n {\n keyStatus !== \"Draft Invoice\" && keyStatus !== \"Draft Estimate\" && keyStatus!==\"Submitted Estimate\" ?\n \n : ''\n }\n \n ))\n }\n \n
sortBy('ticketid', sortingDirection)}>Ticket ID sortBy('technicianname', sortingDirection)}>Description sortBy('customername', sortingDirection)}>Customer sortBy('jobname', sortingDirection)}>Job Name sortBy('jobcontactname', sortingDirection)}>Job Address sortBy('technicianname', sortingDirection)}>Assigned To sortBy('scheduledate', sortingDirection)}>Schedule On sortBy('priority', sortingDirection)}>PriorityStatus
usertype !== \"Dispatcher\" ? OpenTicketDetails(item.ticketid) : ''} style={usertype !== \"Dispatcher\" ? { cursor: 'pointer' } : { cursor: \"default\" }}>{item.ticketid}{item.ordertype}{item.customername}{item.jobname}{item.address}Not Assigned\n {/* {\n item.profilepic != null && item.profilepic != \"NA\"\n &&\n \n } */}\n\n {item.technicianname}{item.scheduledate}
{item.scheduletime}
{item.priority}{item.status}

{item.statusactivity}

\n deleteTicketPopUp(item.ticketid)}>
\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\nexport default Tickets\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport { LoadOrderType_api, LoadTicketStatus_api } from '../../functions/masters'\nimport {\n UpdateTicketStatus_api\n} from '../../functions/tickets'\n\nconst StatusUpdate = ({ ticketid, selectedStatusId_prop, loadagain, whichPage, loadTicketDetails }) => {\n\n const [selectedStatusId, setSelectedStatusId] = useState(selectedStatusId_prop);\n const [statusList, setStatusList] = useState([]);\n\n\n useEffect(() => {\n loadStatus();\n }, [])\n\n const loadStatus = () => {\n var type = \"\";\n var usertype = localStorage.getItem(\"usertype\");\n if (whichPage == \"Estimate\" && usertype == \"Supervisor\") {\n type = \"estimate_supervisor\";\n }\n else if (whichPage == \"Estimate\" && usertype == \"Accounts\") {\n type = \"estimate_accounts\";\n }\n\n else if (whichPage == \"Invoice\" && usertype == \"Supervisor\") {\n type = \"invoice_supervisor\";\n }\n else if (whichPage == \"Invoice\" && usertype == \"Accounts\") {\n type = \"invoice_accounts\";\n }\n else {\n type = \"web\"\n }\n \n \n LoadTicketStatus_api(type).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setStatusList([])\n }\n else\n setStatusList(result.data);\n }\n\n }).catch();\n }\n\n const UpdateStatus = (e) => {\n e.preventDefault();\n if (selectedStatusId == 0 || selectedStatusId == null)\n return toast.error(\"Please choose status.\");\n\n else {\n var req = {\n \"ticketid\": ticketid,\n \"statusID\": Number(selectedStatusId),\n \"updatedby\": Number(localStorage.getItem(\"userid\"))\n }\n UpdateTicketStatus_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#StatusPop\").modal('hide');\n loadagain();\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n return (\n
\n
\n
\n
\n \n \n
Update Status
\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\nexport default StatusUpdate\n","\nimport { useSelector } from 'react-redux'\nimport { toast } from 'react-toastify'\n\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\nconst AccessToken = localStorage.getItem(\"AccessToken\");\nconst loggeduserid = Number(localStorage.getItem(\"userid\"));\n\n\n\n\n//Add OrderType\nexport const CreateService_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}service/add`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n console.log(\"now\",result)\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n//Update OrderType\nexport const Updateservice_api = async (reqdata) => {\n try {\n const response = await fetch(`${API_Base_Url}service/update`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(reqdata)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Active Not Active status update\nexport const ChangeserviceStatus_api = async (ordertypeid, statusid) => {\n try {\n const response = await fetch(`${API_Base_Url}service/status`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"serviceid\": ordertypeid,\n \"status\": statusid,\n \"updatedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//Delete OrderType\nexport const Deleteservice_api = async (ordertypeid) => {\n try {\n const response = await fetch(`${API_Base_Url}service/delete`, {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify({\n \"serviceid\": ordertypeid, \n \"deletedby\": Number(localStorage.getItem(\"userid\"))\n })\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n};\n\n//User List\nexport const Loadservice_api = async (searchtext) => {\n // const { user } = useSelector(state => ({ ...state }))\n // var header = { 'Authorization': 'Bearer ' + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJGU01TZXJ2aWNlQWNjZXNzVG9rZW4iLCJqdGkiOiIwMGJlMGRmNC03YTBhLTRlNjQtYTdhMS0wMWZkYTQ5ZWY4ZDYiLCJpYXQiOiI0LzgvMjAyMSA0OjE0OjUxIEFNIiwiSWQiOiIyIiwiTmFtZSI6IktyaXMgSGFycGVyIiwiUGhvbmUiOiI5OTk4ODg3NzcyIiwiVXNlclR5cGUiOiJTdXBlcnZpc29yIiwiRW1haWwiOiJrcmlzaGFycGVyQGdtYWlsLmNvbSIsImV4cCI6MTYxNzk0MTY5MSwiaXNzIjoiRlNNQXV0aGVudGljYXRpb25TZXJ2ZXIiLCJhdWQiOiJGU01TZXJ2aWNlQXBwQ2xpZW50In0.keoUNJmc1eU5VXWZDTNYyULYudfyhrY7BLilk_wlG7E' }\n // return await axios.get(`${API_Base_Url}users/list?type=${tab}&search=${searchtext}`, header);\n\n try {\n var data = [];\n const response = await fetch(`${API_Base_Url}service/list?clientid=${Number(localStorage.getItem(\"clientid\"))}&search=${searchtext}`, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n}","import React, { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport { LoadInvoices_api, LoadTicketDetails_api, SendEmail_api, ResendEmail_api } from '../../functions/tickets'\nimport { FinalizeInvoice_api, DraftInvoice_api, SubmitInvoice_api, PaidInvoice_api, UpdateInvoice_api, UpdateInvoicedate_api } from '../../functions/invoices'\nimport StatusUpdate from '../popups/StatusUpdate'\nimport { Loadservice_api } from '../../functions/service'\nimport moment from 'moment'\nimport { format } from 'date-fns'\nimport DateUpdate from '../popups/Invoicedateupdate'\nimport DueDateUpdate from '../popups/Invoiceduedateupdate'\nimport Invoicenoupdate from '../popups/Invoicenoupdate'\n\nconst InvoiceDetails = ({ invoiceid, ticketid, activityid, loadInvoiceList }) => {\n\n var userid = Number(localStorage.getItem(\"userid\"));\n const [test, setTest] = useState(0);\n const [InvoicesDetails, setInvoicesDetails] = useState({});\n const [selectedStatusId, setSelectedStatusId] = useState(0);\n const [ticketDetails, setTicketDetails] = useState({});\n const [poNumber, setPoNumber] = useState(\"\");\n const [isMailSent_invoice, setIsMailSent_invoice] = useState(true);\n const userType = localStorage.getItem(\"usertype\");\n const [searchText, setSearchText] = useState(\"\");\n const [serviceList, setserviceList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [invoiceduedate, setInvoiceduedate] = useState(\"\");\n const [invoicedate, setInvoicedate] = useState(\"\");\n const [invoiceno, setInvoiceno] = useState(\"\");\n\n useEffect(() => {\n loadInvoice();\n setIsMailSent_invoice(false)\n }, [activityid])\n\n useEffect(() => {\n loadTicketDetails();\n }, [])\n\n const loadservices = (searchText) => {\n setIsLoaded(false);\n Loadservice_api(searchText).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setserviceList([])\n }\n else\n setserviceList(result.data);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const SearchCustomer = (e) => {\n if (e.target.value.length < 2) {\n window.$(\"#searchresultarea\").hide();\n\n }\n else {\n window.$(\"#searchresultarea\").show();\n loadservices(e.target.value);\n }\n\n }\n\n useEffect(() => {\n if (Object.keys(InvoicesDetails).length > 0)\n sum();\n }, [InvoicesDetails])\n\n const loadTicketDetails = () => {\n // setIsLoaded(false);\n LoadTicketDetails_api(ticketid, userid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else\n setTicketDetails(result);\n }\n //setIsLoaded(true);\n }).catch();\n }\n\n const sum = () => {\n var totalmaterialamt = 0;\n var totallaboramt = 0;\n for (var i = 0; i < InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").length; i++) {\n if (!(isNaN(InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount) || InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount === null || InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount === 0)) {\n totallaboramt = Number(totallaboramt) + Number(InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount);\n }\n }\n\n for (var i = 0; i < InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").length; i++) {\n if (!(isNaN(InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount) || InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount === null || InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount === 0)) {\n totalmaterialamt = Number(totalmaterialamt) + Number(InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount);\n }\n }\n\n InvoicesDetails.amountLabour = parseFloat(totallaboramt).toFixed(2);\n InvoicesDetails.amountMaterial = parseFloat(totalmaterialamt).toFixed(2);\n sumPayable_invoice()\n }\n\n const sumPayable_invoice = () => {\n var amtMaterial = 0;\n var amtLabour = 0;\n var amtTaxMaterial = 0;\n var amtTaxLabour = 0;\n var amtDiscount = 0;\n var amtNetPayable = 0;\n\n if (!(isNaN(InvoicesDetails.amountMaterial) || InvoicesDetails.amountMaterial === null)) {\n amtMaterial = Number(InvoicesDetails.amountMaterial);\n if (!(isNaN(InvoicesDetails.amountTaxMaterialRate) || InvoicesDetails.amountTaxMaterialRate === null)) {\n amtTaxMaterial = InvoicesDetails.amountTaxMaterial = parseFloat(((Number(InvoicesDetails.amountMaterial) * Number(InvoicesDetails.amountTaxMaterialRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(InvoicesDetails.amountLabour) || InvoicesDetails.amountLabour === null)) {\n amtLabour = Number(InvoicesDetails.amountLabour);\n if (!(isNaN(InvoicesDetails.amountTaxLabourRate) || InvoicesDetails.amountTaxLabourRate === null)) {\n amtTaxLabour = InvoicesDetails.amountTaxLabour = parseFloat(((Number(InvoicesDetails.amountLabour) * Number(InvoicesDetails.amountTaxLabourRate)) / 100)).toFixed(2);\n }\n }\n if (!(isNaN(InvoicesDetails.amountDiscount) || InvoicesDetails.amountDiscount === null)) {\n if (!(isNaN(InvoicesDetails.discountpercentage) || InvoicesDetails.discountpercentage === null)) {\n amtDiscount = InvoicesDetails.amountDiscount = parseFloat((Number(amtMaterial) + Number(amtLabour)) * Number(InvoicesDetails.discountpercentage) / 100).toFixed(2);\n }\n }\n InvoicesDetails.amountPayable = parseFloat((Number(amtMaterial) + Number(amtLabour) + Number(amtTaxMaterial) + Number(amtTaxLabour)) - Number(amtDiscount)).toFixed(2);\n setTest(test + 1);\n }\n\n const loadInvoice = () => {\n LoadInvoices_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n\n if (result == null) {\n setInvoicesDetails({});\n }\n else {\n setInvoicesDetails(result);\n setPoNumber(result.ponumber)\n }\n }\n\n }).catch();\n }\n\n const handleChange_TextValue_item_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n InvoicesDetails.invoicedata[index].item = event.target.value;\n setTest(test + 1)\n }\n\n const handleChange_tax_material_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.amountTaxMaterialRate = amount;\n }\n InvoicesDetails.amountTaxMaterial = ((InvoicesDetails.amountMaterial * event.target.value) / 100)\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n const handleChange_tax_labor_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.amountTaxLabourRate = amount;\n }\n InvoicesDetails.amountTaxLabour = ((InvoicesDetails.amountLabour * event.target.value) / 100);\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_material = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n InvoicesDetails.invoicedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/))\n InvoicesDetails.invoicedata[index].qtyno = num;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_labor = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n InvoicesDetails.invoicedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum()\n setTest(test + 1)\n }\n const handleChange_TextValue_UnitPrice_material = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n\n InvoicesDetails.invoicedata[index].unitprice = event.target.value;\n InvoicesDetails.invoicedata[index].amount = Number(calculateAmount(item));\n sumPayable_invoice()\n sum()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_UnitPrice_labor = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n\n InvoicesDetails.invoicedata[index].unitprice = event.target.value;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum()\n setTest(test + 1)\n }\n\n const finalizeInvoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"id\": InvoicesDetails.invoicedata[i].id,\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": Number(InvoicesDetails.amountMaterial),\n \"amountLabour\": Number(InvoicesDetails.amountLabour),\n \"amountTotal\": Number(InvoicesDetails.amountMaterial) + Number(InvoicesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(InvoicesDetails.amountDiscount)) ? Number(InvoicesDetails.amountDiscount) : 0,\n \"amountTax\": Number(InvoicesDetails.amountTax),\n \"discountPercentage\": InvoicesDetails.discountpercentage == null ? 0 : Number(InvoicesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(InvoicesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(InvoicesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(InvoicesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(InvoicesDetails.amountTaxLabour),\n \"amountPayable\": Number(InvoicesDetails.amountPayable),\n \"ponumber\": poNumber,\n \"notes\": InvoicesDetails.notes,\n \"updatedby\": userid\n\n }\n console.log(req)\n FinalizeInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadInvoiceList();\n loadInvoice();\n }\n })\n .catch();\n }\n\n const draftInvoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n invoicedata.push({\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n }\n\n var req = {\n \"ticketid\": ticketid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": 0,\n \"amountLabour\": 0,\n \"amountTotal\": 0,\n \"amountDiscount\": 0,\n \"amountTax\": 0,\n \"amountTaxMaterialRate\": 0,\n \"amountTaxMaterial\": 0,\n \"amountTaxLabourRate\": 0,\n \"amountTaxLabour\": 0,\n \"amountPayable\": 0,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude\": \"\",\n \"signature\": \"\",\n \"notes\": InvoicesDetails.notes,\n\n }\n DraftInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadInvoiceList();\n loadInvoice();\n }\n })\n .catch();\n }\n\n const updateInvoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"id\": InvoicesDetails.invoicedata[i].id,\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": Number(InvoicesDetails.amountMaterial),\n \"amountLabour\": Number(InvoicesDetails.amountLabour),\n \"amountTotal\": Number(InvoicesDetails.amountMaterial) + Number(InvoicesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(InvoicesDetails.amountDiscount)) ? Number(InvoicesDetails.amountDiscount) : 0,\n \"amountTax\": Number(InvoicesDetails.amountTax),\n \"discountPercentage\": InvoicesDetails.discountpercentage == null ? 0 : Number(InvoicesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(InvoicesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(InvoicesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(InvoicesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(InvoicesDetails.amountTaxLabour),\n \"amountPayable\": Number(InvoicesDetails.amountPayable),\n \"ponumber\": poNumber,\n \"updatedfrom\": \"web\",\n \"notes\": InvoicesDetails.notes,\n \"updatedby\": userid\n\n }\n console.log(req)\n UpdateInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadInvoiceList();\n loadInvoice();\n }\n })\n .catch();\n }\n\n const addMoreMaterialRow_invoice = (e) => {\n e.preventDefault();\n //alert(JSON.stringify(InvoicesDetails.invoicedata))\n if (InvoicesDetails.invoicedata != undefined) {\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n }\n if (InvoicesDetails.invoicedata == null) {\n InvoicesDetails.invoicedata = [];\n }\n InvoicesDetails.invoicedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Material\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addMoreLaborRow_invoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata != undefined && InvoicesDetails.invoicedata != null) {\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty.trim() == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n }\n if (InvoicesDetails.invoicedata == null) {\n InvoicesDetails.invoicedata = [];\n }\n InvoicesDetails.invoicedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Labor\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const showStatusUpdate = () => {\n setSelectedStatusId(InvoicesDetails.currentstatusid);\n window.$(\"#StatusPop\").modal('show');\n }\n\n const calculateAmount = (_item) => {\n var _qty = 0;\n var _unitprice = 0;\n var _total = 0;\n\n try {\n _qty = _item.qtyno //.replace(/\\D/g, '');\n } catch (error) {\n\n }\n try {\n _unitprice = _item.unitprice;//.replace(/\\D/g, '');\n } catch (error) {\n\n }\n\n if (!(isNaN(_qty) || _qty === null || _qty === 0)) {\n if (!(isNaN(_unitprice) || _unitprice === null || _unitprice === 0)) {\n _total = _qty * _unitprice;\n }\n }\n\n return _total;\n }\n\n const removeRow = (item) => {\n InvoicesDetails.invoicedata = InvoicesDetails.invoicedata.filter(x => x !== item);\n sum()\n setTest(test + 1)\n }\n\n const sendMail = () => {\n var photos = [];\n var selectedphotos = [];\n if (InvoicesDetails.photos != undefined && InvoicesDetails.photos.length > 0) {\n selectedphotos = InvoicesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n SendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n setIsMailSent_invoice(true)\n //loadInvoice();\n loadTicketDetails()\n }\n })\n .catch();\n }\n\n\n const reSendMail = () => {\n var photos = [];\n var selectedphotos = [];\n if (InvoicesDetails.photos != undefined && InvoicesDetails.photos.length > 0) {\n selectedphotos = InvoicesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n ResendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n //loadInvoice();\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n const handlenotes_invoice = (text) => {\n InvoicesDetails.notes = text;\n setTest(test + 1)\n }\n const SelectImage_invoice = (item) => {\n var index = InvoicesDetails.photos.indexOf(item);\n InvoicesDetails.photos[index].selected = InvoicesDetails.photos[index].selected ? false : true;\n setTest(test + 1)\n }\n const handleChange_disc_percentage_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.discountpercentage = amount;\n }\n //InvoicesDetails.discountpercentage = event.target.value.replace(/\\D/, '');\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n const editinvoiceduedate = (date, date2,invoiceno) => {\n setInvoiceduedate(format(new Date(date),\"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date2),\"MM/dd/yyyy\"))\n setInvoiceno(invoiceno)\n window.$(\"#duedatepopup\").modal('show');\n }\n\n const editinvoicedate = (date, date2,invoiceno) => {\n setInvoiceduedate(format(new Date(date2),\"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date),\"MM/dd/yyyy\"))\n setInvoiceno(invoiceno)\n window.$(\"#datepopup\").modal('show');\n }\n\n const editinvoiceno = (date, date2,invoiceno) => {\n setInvoiceduedate(format(new Date(date),\"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date2),\"MM/dd/yyyy\"))\n setInvoiceno(invoiceno)\n window.$(\"#invoiceno\").modal('show');\n }\n\n\n return (\n <>\n
\n
\n
\n
\n \n
\n {/* #{invoiceid} - Invoice Details */}\n #{ticketid} - Ticket Details
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

{ticketDetails.ordertype}\n {/* */}\n

\n

{ticketDetails.orderdetail}

\n

{ticketDetails.address}

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

PO / Work Order

\n
\n

PO No. {ticketDetails.ponumber}

\n

Work Order No. {ticketDetails.workordernumber}

\n
\n
\n
\n {\n (ticketDetails.pofilepath != \"\" && ticketDetails.pofilepath != \"NA\" && ticketDetails.poavailable)\n ?\n \n \n\n Purchase Order \n \n \n :\n \"No Purchase order available.\"\n\n }\n\n
\n\n\n
\n
\n\n
\n
\n
\n

Assigned to\n {/* */}\n

\n
\n {\n InvoicesDetails.assignedtoProfilePic != \"\" && InvoicesDetails.assignedtoProfilePic != \"NA\"\n &&\n \n }\n\n
\n

{InvoicesDetails.assignedtoName}

\n {InvoicesDetails.assignedtoPhone}\n
\n
\n
\n\n \n\n
\n
\n
\n
\n
\n

{InvoicesDetails.customername}

\n {InvoicesDetails.customertype}\n
{InvoicesDetails.address}
\n

{InvoicesDetails.contactname}

\n

{InvoicesDetails.contactphone}

\n

{InvoicesDetails.contactemail}

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

Activities

\n
\n
\n
\n
\n
\n {\n ticketDetails.activities != null && ticketDetails.activities != undefined\n &&\n ticketDetails.activities.length == 0\n ?\n \"No Record Found.\"\n :\n ticketDetails.activities != null\n &&\n ticketDetails.activities.map(item => (\n\n
\n {item.activitytype == \"Notes\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype == \"Photos\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype == \"Estimate\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype == \"Invoice\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype != \"Invoice\" && item.activitytype != \"Estimate\" && item.activitytype != \"Photos\" && item.activitytype != \"Notes\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n
\n\n\n ))\n }\n\n\n
\n
\n {/*
\n ADD\n
*/}\n\n
\n
\n
\n\n\n
\n
\n
\n
\n
\n SearchCustomer(e)} />\n \n
\n
\n
\n {\n serviceList.length == 0\n ?\n null\n :\n serviceList.map(item => (\n
\n
{item.serviceName}
\n

${item.serviceAmount}

\n
\n ))\n }\n
\n\n
\n
\n
\n
\n
\n
\n
\n

Invoice Details

\n
\n \n \n \n
\n\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == false && (userType === \"Accounts\" || userType === \"Admin\"))\n &&\n sendMail()} className=\"btn btn-default\" style={{ margin: \"0px 10px 0px 0px\" }}>Send Mail\n }\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == true && (userType === \"Accounts\" || userType === \"Admin\"))\n &&\n reSendMail()} className=\"btn btn-default\" style={{ margin: \"0px 10px 0px 0px\" }}>Resend Mail\n }\n {\n InvoicesDetails.downloadpath != \"\"\n &&\n Download\n }\n
\n\n
\n
\n
\n
\n
\n
\n

Material

\n
\n {InvoicesDetails.status != \"Paid\" &&\n addMoreMaterialRow_invoice(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails != null &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_qty_material(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_material(item, e)} />\n
\n
\n
\n
\n \n {InvoicesDetails.status != \"Paid\" &&\n removeRow(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

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

Labor

\n
\n {InvoicesDetails.status != \"Paid\" &&\n addMoreLaborRow_invoice(e)} className=\"btn btn-gray btn-sm\">   Add\n\n }
\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor(item, e)} />\n
\n
\n
\n
\n \n {InvoicesDetails.status != \"Paid\" &&\n removeRow(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

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

Notes

\n\n \n
\n
\n

Photos

\n
\n\n {\n InvoicesDetails?.photos?.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n InvoicesDetails?.photos?.map(item => (\n SelectImage_invoice(item)} style={{ cursor: 'pointer' }} >\n \n \n ))\n }\n\n\n
\n
\n
\n\n
\n\n
\n
\n
\n {/*
\n
PO Number
\n setPoNumber(e.target.value)} />\n
*/}\n
\n
Total Material
\n
{InvoicesDetails.amountMaterial}
\n
\n
\n
Total Labor
\n
{InvoicesDetails.amountLabour}
\n
\n\n
\n
Material Taxes
\n {/*
{InvoicesDetails.amountTax}
*/}\n \n handleChange_tax_material_invoice(e)} />%\n\n
\n
\n
Labor Taxes
\n {/*
{InvoicesDetails.amountTax}
*/}\n \n\n handleChange_tax_labor_invoice(e)} />%\n\n
\n
\n
Discounts
\n \n {InvoicesDetails.status == \"Paid\" ?\n <> handleChange_disc_percentage_invoice(e)} />%\n :\n <> handleChange_disc_percentage_invoice(e)} />%\n\n }\n
\n\n
\n
Total Due
\n
{InvoicesDetails.amountPayable}
\n
\n
\n {/* stutus {InvoicesDetails.status} */}\n
\n {/* {\n isAddNewInvoice\n ?\n draftInvoice(e)} className=\"btn btn-theme\" >Draft\n :\n finalizeInvoice(e)} className=\"btn btn-theme\" >Finalize\n\n } */}\n\n\n {\n (InvoicesDetails.status == \"\" || InvoicesDetails.status == null || InvoicesDetails.status == undefined)\n &&\n draftInvoice(e)} className=\"btn btn-theme\" >Save\n }\n {\n InvoicesDetails.status == \"Draft\"\n &&\n finalizeInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Finalized\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (InvoicesDetails.status == \"Submitted\")\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n // PaidInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n {\n (InvoicesDetails.status == \"Paid\")\n &&\n null\n // updateInvoice(e)} className=\"btn btn-theme\" >Save\n // PaidInvoice(e)} className=\"btn btn-theme\" >Submit\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\nexport default InvoiceDetails\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { LoadInvoices_api } from '../../functions/invoices'\nimport InvoiceDetails from '../../components/popups/InvoiceDetails'\nimport DeletePopUp from '../../forms/DeletePopUp'\nimport { DeleteInvoice_api } from '../../functions/invoices'\nimport TicketDetails from '../../components/popups/TicketDetails'\n\nfunction Invoice() {\n\n var userid = Number(localStorage.getItem(\"userid\"));\n const [invoiceList, setInvoiceList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [selectedTab, setSelectedTab] = useState(localStorage.getItem(\"usertype\") == \"Accounts\" ? \"Finalized\" : \"All\");\n const [searchText, setSearchText] = useState(\"\");\n const [totalResult, setTotalResult] = useState(\"\");\n const [activityid, setActivityId] = useState(0);\n const [ticketid, setTicketId] = useState(0);\n const [invoiceid, setInvoiceId] = useState(0);\n const [selectedTicketId, setselectedTicketId] = useState(0);\n const usertype = localStorage.getItem(\"usertype\");\n\n useEffect(() => {\n loadInvoices();\n }, []);\n\n useEffect(() => {\n loadInvoices();\n }, [selectedTab]);\n\n useEffect(() => {\n loadInvoices();\n }, [searchText])\n\n\n\n const loadInvoices = () => {\n setIsLoaded(false);\n LoadInvoices_api(userid, selectedTab, searchText).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setInvoiceList([])\n }\n else\n setInvoiceList(result.data);\n setTotalResult(result);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const openInvoiceDetails = (item) => {\n setTicketId(item.ticketid)\n setActivityId(item.activityid);\n setInvoiceId(item.invoiceid)\n }\n\n const OpenDeleteInvoice = (invoiceid, ticketid) => {\n setTicketId(ticketid)\n setInvoiceId(invoiceid)\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const DeleteInvoice = () => {\n var req = {\n ticketid: ticketid,\n invoice: invoiceid,\n deletedby: userid\n }\n DeleteInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadInvoices();\n }\n })\n .catch();\n window.$(\"#DeletePopUp\").modal('hide');\n }\n\n const OpenTicketDetails = (ticketid) => {\n setselectedTicketId(ticketid)\n }\n return (\n <>\n
\n
\n
\n \n {\n (activityid != 0 && ticketid != 0)\n &&\n \n\n }\n { }}\n ticketType={\"normal\"}\n />\n
\n {/* */}\n
\n {/* */}\n
\n
\n
\n

Invoice

\n
\n
\n setSearchText(e.target.value)} className=\"form-control ih36\" placeholder=\"\" />\n \n
\n
\n
\n \n
\n
\n
\n
\n \n\n
\n
\n
\n\n {/* */}\n
\n
\n
{totalResult.result}    ${totalResult.totalamountgrid}
\n
\n
\n {/* */}\n {\n isLoaded == false ?
\"\"
\n :\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n\n {\n invoiceList != undefined &&\n invoiceList.length == 0 ?\n \"No Record Found.\"\n :\n invoiceList.map(item => (\n \n \n \n \n \n \n \n \n \n \n\n {/* */}\n \n ))\n }\n \n
Invoice IDCreated OnTicket IDCustomerCreated ByAmountStatusSubmitted OnDownloadAction
openInvoiceDetails(item)} className=\"ticketID\" data-toggle=\"modal\" data-target=\"#InvoiceDetail\">{item.invoiceid}{item.creationdate}
{item.creationtime}
OpenTicketDetails(item.ticketid)} className=\"ticketID\" data-toggle=\"modal\" data-target=\"#TicketDetails\">{item.ticketid}{item.customername}
{item.customerphone}
\n {\n item.profilepic != \"NA\" && item.profilepic != \"\"\n &&\n \n }\n\n
{item.createdbyName}
{item.createdbyUserType}
${item.amountPayable}{item.status}{item.status == \"Submitted\" && <>{item.submittedDate}
{item.submittedTime}}
{\n item.downloadpath != null && item.downloadpath != \"\" &&\n item.downloadpath != \"null\"\n &&\n \n }\n {\n\n item.status == \"Draft\"\n &&\n OpenDeleteInvoice(item.invoiceid, item.ticketid)} >Delete\n }\n
\n
\n }\n {/* */}\n
\n\n
\n
\n {/* */}\n
\n {/* */}\n\n
\n
\n
\n \n \n\n )\n}\n\nexport default Invoice\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport { FinalizeEstimate_api, DraftEstimate_api, SubmitEstimate_api, ApproveEstimate_api, UpdateEstimate_api } from '../../functions/estimates'\nimport { LoadEstimates_api, LoadTicketDetails_api, SendEmail_api, ResendEmail_api } from '../../functions/tickets'\nimport StatusUpdate from '../popups/StatusUpdate'\n\n\nconst EstimatesDetails = ({ estimateid, ticketid, activityid, loadEstimates }) => {\n var userid = Number(localStorage.getItem(\"userid\"));\n const [EstimatesDetails, setEstimateDetails] = useState({});\n const [test, setTest] = useState(0);\n const [selectedStatusId, setSelectedStatusId] = useState(0);\n const [ticketDetails, setTicketDetails] = useState({});\n const [poNumber, setPoNumber] = useState(\"\");\n const [isMailSent, setIsMailSent] = useState(true);\n useEffect(() => {\n loadEstimate()\n setIsMailSent(false);\n }, [activityid])\n\n useEffect(() => {\n loadTicketDetails();\n }, [])\n\n useEffect(() => {\n if (Object.keys(EstimatesDetails).length > 0)\n sum();\n }, [EstimatesDetails])\n\n const loadTicketDetails = () => {\n // setIsLoaded(false);\n LoadTicketDetails_api(ticketid, userid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else\n\n setTicketDetails(result);\n }\n //setIsLoaded(true);\n }).catch();\n }\n\n const sumPayable = () => {\n var amtMaterial = 0;\n var amtLabour = 0;\n var amtTaxMaterial = 0;\n var amtTaxLabour = 0;\n var amtDiscount = 0;\n var amtNetPayable = 0;\n\n if (!(isNaN(EstimatesDetails.amountMaterial) || EstimatesDetails.amountMaterial === null)) {\n amtMaterial = Number(EstimatesDetails.amountMaterial);\n if (!(isNaN(EstimatesDetails.amountTaxMaterialRate) || EstimatesDetails.amountTaxMaterialRate === null)) {\n amtTaxMaterial = EstimatesDetails.amountTaxMaterial = parseFloat(((Number(EstimatesDetails.amountMaterial) * Number(EstimatesDetails.amountTaxMaterialRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(EstimatesDetails.amountLabour) || EstimatesDetails.amountLabour === null)) {\n amtLabour = Number(EstimatesDetails.amountLabour);\n if (!(isNaN(EstimatesDetails.amountTaxLabourRate) || EstimatesDetails.amountTaxLabourRate === null)) {\n amtTaxLabour = EstimatesDetails.amountTaxLabour = parseFloat(((Number(EstimatesDetails.amountLabour) * Number(EstimatesDetails.amountTaxLabourRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(EstimatesDetails.amountDiscount) || EstimatesDetails.amountDiscount === null)) {\n if (!(isNaN(EstimatesDetails.discountpercentage) || EstimatesDetails.discountpercentage === null)) {\n amtDiscount = EstimatesDetails.amountDiscount = parseFloat((Number(amtMaterial) + Number(amtLabour)) * Number(EstimatesDetails.discountpercentage) / 100).toFixed(2);\n\n }\n }\n EstimatesDetails.amountPayable = parseFloat((Number(amtMaterial) + Number(amtLabour) + Number(amtTaxMaterial) + Number(amtTaxLabour)) - Number(amtDiscount)).toFixed(2);\n setTest(test + 1)\n }\n\n const sum = () => {\n var totalmaterialamt = 0;\n var totallaboramt = 0;\n if (EstimatesDetails.estimatedata !== null) {\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").length; i++) {\n if (!(isNaN(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount) || EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount === null || EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount === 0)) {\n totallaboramt = Number(totallaboramt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount);\n }\n }\n\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").length; i++) {\n if (!(isNaN(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount) || EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount === null || EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount === 0)) {\n totalmaterialamt = Number(totalmaterialamt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount);\n }\n }\n }\n\n EstimatesDetails.amountLabour = parseFloat(totallaboramt).toFixed(2);\n EstimatesDetails.amountMaterial = parseFloat(totalmaterialamt).toFixed(2);\n sumPayable()\n }\n\n const loadEstimate = () => {\n LoadEstimates_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setEstimateDetails({});\n }\n else {\n console.log(\"estimateDetails\", result)\n setEstimateDetails(result);\n setPoNumber(result.ponumber)\n }\n }\n\n }).catch();\n }\n\n const handleChange_Material = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].amount = event.target.value.replace(/\\D/, ''); // Update it with the modified email. \n var totalmaterialamt = 0;\n\n if (item.type == \"Material\") {\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").length; i++) {\n\n totalmaterialamt = Number(totalmaterialamt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount);\n EstimatesDetails.amountMaterial = totalmaterialamt;\n\n }\n }\n sumPayable()\n setTest(test + 1)\n }\n const handleChange_Labor = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].amount = event.target.value.replace(/\\D/, ''); // Update it with the modified email.\n\n\n var totallaboramt = 0;\n\n if (item.type == \"Labor\") {\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").length; i++) {\n totallaboramt = Number(totallaboramt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount);\n\n EstimatesDetails.amountLabour = totallaboramt;\n }\n }\n sumPayable()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_material = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sum()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_labor = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n\n EstimatesDetails.estimatedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sum()\n setTest(test + 1)\n }\n const handleChange_TextValue_UnitPrice_material = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n\n EstimatesDetails.estimatedata[index].unitprice = event.target.value;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sum()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_UnitPrice_labor = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n\n EstimatesDetails.estimatedata[index].unitprice = event.target.value;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sum()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_item = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].item = event.target.value;\n setTest(test + 1)\n }\n\n const handleChange_disc = (event) => {\n EstimatesDetails.amountDiscount = event.target.value.replace(/\\D/, '');\n sumPayable();\n setTest(test + 1)\n }\n const handleChange_disc_percentage_estimate = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.discountpercentage = amount;\n }\n //EstimatesDetails.discountpercentage = event.target.value.replace(/\\D/, '');\n sumPayable();\n setTest(test + 1)\n }\n const handleChange_tax_material = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.amountTaxMaterialRate = amount;\n }\n EstimatesDetails.amountTaxMaterial = ((EstimatesDetails.amountMaterial * event.target.value) / 100)\n sumPayable();\n setTest(test + 1)\n }\n\n const handleChange_tax_labor = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.amountTaxLabourRate = amount;\n }\n EstimatesDetails.amountTaxLabour = ((EstimatesDetails.amountLabour * event.target.value) / 100);\n sumPayable();\n setTest(test + 1)\n }\n\n const finalizeEstimate = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"id\": EstimatesDetails.estimatedata[i].id,\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": Number(EstimatesDetails.amountMaterial),\n \"amountLabour\": Number(EstimatesDetails.amountLabour),\n \"amountTotal\": Number(EstimatesDetails.amountMaterial) + Number(EstimatesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(EstimatesDetails.amountDiscount)) ? Number(EstimatesDetails.amountDiscount) : 0,\n \"amountTax\": Number(EstimatesDetails.amountTax),\n \"discountPercentage\": Number(EstimatesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(EstimatesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(EstimatesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(EstimatesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(EstimatesDetails.amountTaxLabour),\n \"amountPayable\": Number(EstimatesDetails.amountPayable),\n \"ponumber\": poNumber,\n \"notes\": EstimatesDetails.notes,\n \"updatedby\": userid\n\n }\n FinalizeEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadEstimate();\n }\n })\n .catch();\n }\n\n const draftEstimate = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": 0,\n \"amountLabour\": 0,\n \"amountTotal\": 0,\n \"amountDiscount\": 0,\n \"amountTax\": 0,\n \"amountTaxMaterialRate\": 0,\n \"amountTaxMaterial\": 0,\n \"amountTaxLabourRate\": 0,\n \"amountTaxLabour\": 0,\n \"amountPayable\": 0,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude\": \"\",\n \"signature\": \"\",\n \"notes\": EstimatesDetails.notes\n\n }\n DraftEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n // loadTicketDetails();\n }\n })\n .catch();\n }\n\n const updateEstimate = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"id\": EstimatesDetails.estimatedata[i].id,\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": Number(EstimatesDetails.amountMaterial),\n \"amountLabour\": Number(EstimatesDetails.amountLabour),\n \"amountTotal\": Number(EstimatesDetails.amountMaterial) + Number(EstimatesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(EstimatesDetails.amountDiscount)) ? Number(EstimatesDetails.amountDiscount) : 0,\n \"amountTax\": Number(EstimatesDetails.amountTax),\n \"discountPercentage\": EstimatesDetails.discountpercentage == null ? 0 : Number(EstimatesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(EstimatesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(EstimatesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(EstimatesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(EstimatesDetails.amountTaxLabour),\n \"amountPayable\": Number(EstimatesDetails.amountPayable),\n \"ponumber\": poNumber,\n \"updatedfrom\": \"web\",\n \"notes\": EstimatesDetails.notes,\n \"updatedby\": userid\n\n }\n UpdateEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadEstimate();\n }\n })\n .catch();\n }\n\n const addMoreMaterialRow = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata != undefined && EstimatesDetails.estimatedata != null) {\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n }\n if (EstimatesDetails.estimatedata == null) {\n EstimatesDetails.estimatedata = [];\n }\n EstimatesDetails.estimatedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Material\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addMoreLaborRow = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata != undefined && EstimatesDetails.estimatedata != null) {\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n }\n if (EstimatesDetails.estimatedata == null) {\n EstimatesDetails.estimatedata = [];\n }\n EstimatesDetails.estimatedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Labor\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const showStatusUpdate = () => {\n setSelectedStatusId(EstimatesDetails.currentstatusid);\n window.$(\"#StatusPop\").modal('show');\n }\n\n const calculateAmount = (_item) => {\n var _qty = 0;\n var _unitprice = 0;\n var _total = 0;\n\n try {\n _qty = _item.qtyno //.replace(/\\D/g, '');\n } catch (error) {\n\n }\n try {\n _unitprice = _item.unitprice;//.replace(/\\D/g, '');\n } catch (error) {\n\n }\n\n if (!(isNaN(_qty) || _qty === null || _qty === 0)) {\n if (!(isNaN(_unitprice) || _unitprice === null || _unitprice === 0)) {\n _total = _qty * _unitprice;\n }\n }\n return _total;\n }\n\n const removeRow = (item) => {\n EstimatesDetails.estimatedata = EstimatesDetails.estimatedata.filter(x => x !== item);\n sum()\n setTest(test + 1)\n }\n\n const sendMail = () => {\n var photos = [];\n var selectedphotos = [];\n if (EstimatesDetails.photos != undefined && EstimatesDetails.photos.length > 0) {\n selectedphotos = EstimatesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n SendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails()\n setIsMailSent(true)\n }\n })\n .catch();\n }\n\n const reSendMail = () => {\n var photos = [];\n var selectedphotos = [];\n if (EstimatesDetails.photos != undefined && EstimatesDetails.photos.length > 0) {\n selectedphotos = EstimatesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activityid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n ResendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails()\n }\n })\n .catch();\n }\n const handlenotes_estimate = (text) => {\n EstimatesDetails.notes = text;\n setTest(test + 1)\n }\n const SelectImage_estimate = (item) => {\n var index = EstimatesDetails.photos.indexOf(item);\n EstimatesDetails.photos[index].selected = EstimatesDetails.photos[index].selected ? false : true;\n setTest(test + 1)\n }\n\n return (\n <>\n
\n
\n
\n
\n \n
\n {/* #{estimateid} - Estimate Details */}\n #{ticketid} - Ticket Details
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

{ticketDetails.ordertype}\n {/* */}\n

\n

{ticketDetails.orderdetail}

\n

{ticketDetails.address}

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

PO / Work Order

\n
\n

PO No. {ticketDetails.ponumber}

\n

Work Order No. {ticketDetails.workordernumber}

\n
\n
\n
\n {\n (ticketDetails.pofilepath != \"\" && ticketDetails.pofilepath != \"NA\" && ticketDetails.poavailable)\n ?\n \n \n\n Purchase Order \n \n \n :\n \"No Purchase order available.\"\n\n }\n\n
\n\n\n
\n
\n\n
\n
\n
\n

Assigned to\n {/* */}\n

\n
\n {\n EstimatesDetails.assignedtoProfilePic != \"\" && EstimatesDetails.assignedtoProfilePic != \"NA\"\n &&\n \n }\n\n
\n

{EstimatesDetails.assignedtoName}

\n {EstimatesDetails.assignedtoPhone}\n
\n
\n
\n\n \n\n
\n
\n
\n
\n
\n

{EstimatesDetails.customername}

\n {EstimatesDetails.customertype}\n
{EstimatesDetails.address}
\n

{EstimatesDetails.contactname}

\n

{EstimatesDetails.contactphone}

\n

{EstimatesDetails.contactemail}

\n
\n
\n
\n
\n
\n
\n\n\n
\n\n\n\n
\n\n
\n \n
\n
\n
\n
\n {\n ticketDetails.activities != null && ticketDetails.activities != undefined\n &&\n ticketDetails.activities.length == 0\n ?\n \"No Record Found.\"\n :\n ticketDetails.activities != null\n &&\n ticketDetails.activities.map(item => (\n\n
\n {item.activitytype == \"Notes\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype == \"Photos\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype == \"Estimate\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype == \"Invoice\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n\n {item.activitytype != \"Invoice\" && item.activitytype != \"Estimate\" && item.activitytype != \"Photos\" && item.activitytype != \"Notes\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n
\n\n\n ))\n }\n\n\n
\n
\n {/*
\n ADD\n
*/}\n\n
\n
\n
\n\n\n\n
\n
\n
\n
\n

Estimate Details

\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == false)\n &&\n sendMail()} className=\"btn btn-default pull-right\" >Send Mail\n }\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == true)\n &&\n reSendMail()} className=\"btn btn-default pull-right\" >Resend Mail\n }\n {\n EstimatesDetails.downloadpath != \"\"\n &&\n Download\n }\n\n

{EstimatesDetails.creationdate} {EstimatesDetails.creationtime}

\n\n

by: {EstimatesDetails.createdbyName}

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

Material

\n {\n EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n &&\n
\n {EstimatesDetails.status != \"Approved\" &&\n addMoreMaterialRow(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n }\n
\n
\n\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails != null &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_material(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_UnitPrice_material(item, e)} />\n
\n
\n
\n
\n handleChange_Material(item, e)} />\n {EstimatesDetails.status != \"Approved\" &&\n removeRow(item)} >\"\"\n }\n
\n\n
\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails.estimatedata != null && EstimatesDetails.estimatedata != undefined &&\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Material\").length > 0\n &&\n\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n\n
\n
\n

Labor

\n {\n EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n &&\n
\n {\n EstimatesDetails.status != \"Approved\" &&\n\n addMoreLaborRow(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n }\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor(item, e)} />\n
\n
\n\n
\n
\n handleChange_Labor(item, e)} />\n {EstimatesDetails.status != \"Approved\" &&\n removeRow(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Labor\").length > 0\n &&\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n
\n\n
\n
\n
\n
\n

Notes

\n\n \n
\n
\n

Photos

\n
\n\n {\n EstimatesDetails?.photos?.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n EstimatesDetails?.photos?.map(item => (\n SelectImage_estimate(item)} style={{ cursor: 'pointer' }} >\n \n \n ))\n }\n\n
\n
\n
\n
\n
\n
\n
\n\n {/*
\n
PO Number
\n setPoNumber(e.target.value)} />\n
*/}\n\n
\n
Total Material
\n
{EstimatesDetails.amountMaterial}
\n
\n
\n
Total Labor
\n
{EstimatesDetails.amountLabour}
\n
\n\n
\n
Material Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_material(e)} />%\n\n
\n
\n
Labor Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_labor(e)} />%\n\n
\n\n
\n
Discounts
\n handleChange_disc(e)} />\n {EstimatesDetails.status == \"Approved\"\n ?\n <> handleChange_disc_percentage_estimate(e)} />%\n :\n <> handleChange_disc_percentage_estimate(e)} />%\n }\n
\n\n
\n
Total Due
\n
{EstimatesDetails.amountPayable}
\n
\n
\n
\n\n {\n (EstimatesDetails.status == \"\" || EstimatesDetails.status == null || EstimatesDetails.status == undefined)\n &&\n draftEstimate(e)} className=\"btn btn-theme\" >Save\n }\n {\n (EstimatesDetails.status == \"Draft\")\n &&\n finalizeEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Finalized\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Submitted\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n {\n (EstimatesDetails.status == \"Approved\")\n &&\n null\n // updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n\n\n
\n
\n
\n\n
\n
\n
\n\n\n
\n
\n
\n\n
\n
\n
\n \n \n )\n}\n\nexport default EstimatesDetails\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { LoadEstimates_api, DeleteEstimate_api } from '../../functions/estimates'\nimport EstimateDetails from '../../components/popups/EstimateDetails'\nimport DeletePopUp from '../../forms/DeletePopUp'\nimport TicketDetails from '../../components/popups/TicketDetails'\n\nfunction Estimates() {\n\n var userid = Number(localStorage.getItem(\"userid\"));\n const [estimateList, setEstimateList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [selectedTab, setSelectedTab] = useState(localStorage.getItem(\"usertype\") == \"Accounts\" ? \"Submitted\" : \"Draft\");\n const [searchText, setSearchText] = useState(\"\");\n const [totalResult, setTotalResult] = useState(\"\");\n const [activityid, setActivityId] = useState(0);\n const [ticketid, setTicketId] = useState(0);\n const [estimateid, setEstimateId] = useState(0);\n const [selectedTicketId, setselectedTicketId] = useState(0);\n const usertype = localStorage.getItem(\"usertype\");\n\n\n useEffect(() => {\n loadEstimates();\n }, []);\n\n useEffect(() => {\n loadEstimates();\n }, [selectedTab]);\n\n useEffect(() => {\n loadEstimates();\n }, [searchText])\n\n\n\n const loadEstimates = () => {\n setIsLoaded(false);\n LoadEstimates_api(userid, selectedTab, searchText).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setEstimateList([])\n }\n else\n setEstimateList(result.data);\n setTotalResult(result)\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const openEstimateDetails = (item) => {\n setTicketId(item.ticketid)\n setActivityId(item.activityid);\n setEstimateId(item.estimateid)\n }\n const OpenTicketDetails = (ticketid) => {\n setselectedTicketId(ticketid)\n }\n \n const DeleteEstimate = () => {\n var req = {\n ticketid: ticketid,\n estimateid: estimateid,\n deletedby: userid\n }\n DeleteEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadEstimates();\n }\n })\n .catch();\n window.$(\"#DeletePopUp\").modal('hide');\n }\n\n\n return (\n <>\n
\n
\n
\n \n {\n (activityid != 0 && ticketid != 0)\n &&\n \n\n }\n { }}\n ticketType={\"normal\"}\n />\n\n
\n {/* */}\n
\n {/* */}\n
\n
\n
\n

\n Estimate\n

\n
\n
\n setSearchText(e.target.value)} className=\"form-control ih36\" placeholder=\"\" />\n \n
\n
\n
\n \n
\n
\n
\n
\n \n
\n
\n
\n\n {/* */}\n
\n
\n
{totalResult.result} ${totalResult.totalamountgrid}
\n
\n
\n {/* */}\n {\n isLoaded == false ?
\"\"
\n :\n\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n\n {\n estimateList != undefined &&\n estimateList.length == 0 ?\n \"No Record Found.\"\n :\n estimateList.map(item => (\n \n \n \n \n \n \n \n \n \n \n\n {/* */}\n\n \n\n ))\n }\n\n\n\n\n \n
Est IDCreated OnTicket IDCustomerCreated ByAmountStatusSubmitted OnDownloadAction
openEstimateDetails(item)} className=\"ticketID\" data-toggle=\"modal\" data-target=\"#EstimatesDetail\">{item.estimateid}{item.creationdate}
{item.creationtime}
OpenTicketDetails(item.ticketid)} className=\"ticketID\" data-toggle=\"modal\" data-target=\"#TicketDetails\">{item.ticketid}{item.customername}
{item.customerphone}
\n {\n item.profilepic != \"NA\" && item.profilepic != \"\"\n &&\n \n }\n\n
{item.createdbyName}
{item.createdbyUserType}
${item.amountPayable}{item.status} {item.status == \"Submitted\" && <>{item.submittedDate}
{item.submittedTime}}
{\n item.downloadpath != null && item.downloadpath != \"\" &&\n item.downloadpath != \"null\"\n &&\n \n }{\n\n item.status == \"Draft\"\n &&\n OpenDeleteEstimate(item.estimateid, item.ticketid)} >Delete\n }\n
\n
\n }\n {/* */}\n
\n\n
\n
\n {/* */}\n
\n {/* */}\n\n
\n
\n
\n\n \n \n\n )\n}\n\nexport default Estimates\n","import React, { useState, useEffect } from 'react'\nimport { Link } from 'react-router-dom'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport CreateUpdateOrderType from '../../forms/CreateUpdateOrderType'\nimport DeletePopUp from '../../forms/DeletePopUp'\nimport { toast } from 'react-toastify'\nimport { CreateOrderType_api, LoadOrderType_api, UpdateOrderType_api, ChangeOrderTypeStatus_api, DeleteOrderType_api } from '../../functions/orderType'\n\nconst OrderType = () => {\n\n const [isLoaded, setIsLoaded] = useState(false);\n const [screentype, setScreenType] = useState(\"Create\");\n const [orderTypeId, setOrderTypeId] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [orderTypeList, setOrderTypeList] = useState([]);\n const [orderType, setOrderType] = useState(\"\");\n const loggeduserid = Number(localStorage.getItem(\"userid\"));\n const [userType] = useState(localStorage.getItem(\"usertype\"));\n\n\n useEffect(() => {\n loadOrderTypes();\n }, [searchText])\n\n const loadOrderTypes = () => {\n setIsLoaded(false);\n LoadOrderType_api(searchText).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setOrderTypeList([])\n }\n else\n setOrderTypeList(result.data);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const showOrderTypeCreationPopUp = () => {\n setOrderType(\"\");\n setOrderTypeId(\"\");\n setScreenType(\"Create\");\n window.$(\"#AddOrderType\").modal('show');\n }\n\n const CreateOrderType_submit = (e) => {\n e.preventDefault();\n if (orderType.trim() == \"\")\n return toast.error(\"Please enter order type.\");\n\n\n var req = {\n \"ordertype\": orderType,\n \"addedby\": loggeduserid\n }\n CreateOrderType_api(req).then(res => {\n if (res != undefined) {\n toast.success(\"Order type added successfully!\");\n window.$(\"#AddOrderType\").modal('hide');\n setOrderType(\"\");\n loadOrderTypes();\n }\n })\n .catch();\n\n }\n\n const UpdateOrderType_submit = (e) => {\n e.preventDefault();\n if (orderType.trim() == \"\")\n return toast.error(\"Please enter order type.\");\n\n\n var req = {\n \"ordertypeid\": orderTypeId,\n \"ordertype\": orderType,\n \"updatedby\": loggeduserid\n }\n UpdateOrderType_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#AddOrderType\").modal('hide');\n setOrderType(\"\");\n loadOrderTypes();\n }\n })\n .catch();\n\n }\n\n const UpdateOrderType_Status_submit = (userid, newstatus) => {\n\n ChangeOrderTypeStatus_api(userid, newstatus).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadOrderTypes();\n }\n })\n .catch();\n\n }\n\n const loadOrderTypeDetails = (item) => {\n setOrderType(item.ordertype);\n setOrderTypeId(item.ordertypeid)\n setScreenType(\"Update\");\n window.$(\"#AddOrderType\").modal('show');\n }\n\n const deleteOrderTypePopUp = (ordertypeid) => {\n setOrderTypeId(ordertypeid)\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const DeleteOrderType_submit = (ordertypeid) => {\n DeleteOrderType_api(orderTypeId).then(res => {\n if (res != undefined) {\n toast.success(\"Order type deleted successfully!\");\n window.$(\"#DeletePopUp\").modal('hide');\n loadOrderTypes();\n }\n })\n .catch();\n\n }\n\n return (\n
\n
\n\n {/* SideBar */}\n
\n \n {/* */}\n
\n\n {/* */}\n
\n {/* */}\n
\n
\n
\n {userType!==\"Dispatcher\"&&
\n Order Type\n Services\n\n
}\n
\n
\n
\n\n
\n
\n \n
\n
\n
\n\n {/*
\n
\n\n setSearchText(e.target.value)} />\n \n\n
\n
*/}\n
\n\n
\n
\n {/* */}\n {\n isLoaded == false ?
\"\"
\n :\n
\n \n \n \n\n \n \n \n \n {\n (orderTypeList != undefined && orderTypeList != null && orderTypeList != \"null\") &&\n orderTypeList.length == 0 ?\n \n :\n orderTypeList.map(item => (\n \n\n \n \n\n \n\n \n ))\n\n }\n\n \n
Order TypeStatusAction
No Record Found.
{item.ordertype}\n {\n item.status == \"Active\"\n ?\n UpdateOrderType_Status_submit(item.ordertypeid, 0)} >Active\n :\n UpdateOrderType_Status_submit(item.ordertypeid, 1)}>Inactive\n }\n\n \n {item.userType != \"Admin\" &&\n loadOrderTypeDetails(item)}>Edit\n }\n   \n {item.userType != \"Admin\" &&\n deleteOrderTypePopUp(item.ordertypeid)}>Delete\n }\n\n\n
\n
\n\n }{/* */}\n
\n
\n\n\n
\n {/* */}\n
\n {/* */}\n
\n {/* */}\n
\n\n {/* Create Form */}\n \n\n \n\n\n\n {/* */}\n\n
\n
\n\n )\n}\n\nexport default OrderType\n","import React, { useState } from 'react';\nimport { ResetPassord_api_1 } from '../../functions/auth'\nimport { toast } from 'react-toastify'\nimport { useHistory } from 'react-router-dom'\n\nfunction ResetPassword1() {\n const history = useHistory();\n const [mobileno, setMobileno] = useState(\"\");\n\n const NextClick = (e) => {\n e.preventDefault();\n if (mobileno === \"\" || mobileno === null) {\n return toast.error(\"Please enter mobile number\")\n }\n next();\n }\n const next = async () => {\n try {\n var req = {\n username: mobileno\n }\n\n ResetPassord_api_1(req).then(res => {\n if (res !== undefined) {\n toast.success(res.message);\n history.push(\"/resetpassword2\");\n localStorage.setItem(\"ChagePasswordUserName\", mobileno)\n }\n })\n .catch()\n } catch (error) {\n\n }\n }\n return (\n
\n
\n
\n
\n \"\"/\n

Reset Password

\n
\n
NextClick(e)} >\n
\n { setMobileno(e.target.value.replace(/\\D/, '')) }} />\n
\n
\n
\n \n
\n\n
\n
\n
\n\n
\n

Field Service Management System

\n \"\"/\n
\n\n
\n
\n\n
\n )\n}\n\nexport default ResetPassword1","import React, { useState } from 'react';\nimport { ResetPassord_api_2 } from '../../functions/auth'\nimport { toast } from 'react-toastify'\nimport OtpInput from 'react-otp-input';\nimport { useHistory } from 'react-router-dom'\n\nfunction ResetPassword2() {\n const history = useHistory();\n const [otp, setOtp] = useState(\"\")\n\n const NextClick = (e) => {\n e.preventDefault();\n if (otp === \"\" || otp === null) {\n return toast.error(\"Please Enter otp.\")\n }\n next();\n }\n const next = async () => {\n try {\n var req = {\n username: localStorage.getItem(\"ChagePasswordUserName\"),\n code: otp\n }\n\n ResetPassord_api_2(req).then(res => {\n if (res !== undefined) {\n toast.success(res.message);\n history.push(\"/resetpassword3\");\n localStorage.setItem(\"ResetPasswordOTP\", otp)\n }\n })\n .catch()\n } catch (error) {\n\n }\n }\n\n const handleOtp = otp => setOtp(otp);\n return (\n
\n
\n
\n
\n \"\"/\n

Reset Password

\n
\n
NextClick(e)} >\n
\n
\n

Enter 4 digit code received in your registere email address

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

Field Service Management System

\n \"\"/\n
\n\n
\n
\n\n
\n )\n}\n\nexport default ResetPassword2","import React, { useState } from 'react';\nimport { ResetPassord_api_3 } from '../../functions/auth'\nimport { toast } from 'react-toastify'\nimport { useHistory } from 'react-router-dom'\n\nfunction ResetPassword3() {\n const history = useHistory();\n const [password, setPassword] = useState(\"\");\n const [confirmPassword, setConfirmPassword] = useState(\"\");\n\n const LoginBtnClick = (e) => {\n e.preventDefault();\n if (password === \"\" || password === null) {\n return toast.error(\"Please enter password.\")\n }\n else if (confirmPassword === \"\" || confirmPassword === null) {\n return toast.error(\"Please confirm password\")\n }\n else if (password !== confirmPassword) {\n return toast.error(\"Password not matched\")\n }\n next();\n }\n const next = async () => {\n try {\n var req = {\n username: localStorage.getItem(\"ChagePasswordUserName\"),\n code: localStorage.getItem(\"ResetPasswordOTP\"),\n password: password\n }\n\n ResetPassord_api_3(req).then(res => {\n if (res !== undefined) {\n toast.success(res.message);\n history.push(\"/resetpassword4\");\n }\n })\n .catch()\n } catch (error) {\n\n }\n }\n return (\n
\n
\n
\n
\n \"\"/\n

Reset Password

\n
\n
LoginBtnClick(e)} >\n
\n { setPassword(e.target.value) }} />\n
\n
\n setConfirmPassword(e.target.value)} />\n
\n
\n \n
\n
\n
\n\n
\n

Field Service Management System

\n \"\"/\n
\n\n
\n
\n\n
\n )\n}\n\nexport default ResetPassword3","import React from 'react';\nimport { useHistory } from 'react-router-dom'\n\nfunction ResetPassword4() {\n const history = useHistory();\n\n const gotologin = () => {\n history.push(\"/\")\n }\n return (\n
\n
\n
\n
\n \"\"/\n

Reset Password

\n
\n
\n
\n You have successfully created a new Password!\n
\n
\n \n
\n
\n
\n\n
\n

Field Service Management System

\n \"\"/\n
\n\n
\n
\n\n
\n )\n}\n\nexport default ResetPassword4","\nimport { useSelector } from 'react-redux'\nimport { toast } from 'react-toastify'\n\n\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\nconst AccessToken = localStorage.getItem(\"AccessToken\");\nconst loggeduserid = Number(localStorage.getItem(\"userid\"));\n\n\n\nexport const GetReport_RevenueByTech_api = async (req) => {\n try {\n const response = await fetch(API_Base_Url + \"reports/revenueByTech\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const GetReport_CollectionReport_api = async (req) => {\n try { \n const response = await fetch(API_Base_Url + \"reports/collection\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const GetReport_TechUtilizationReport_api = async (req) => {\n try { \n const response = await fetch(API_Base_Url + \"reports/techUtilization\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n} catch (error) {\n toast.error('Something went wrong , Please try again later.')\n}\n};\n\nexport const GetReport_RevenueByCustomer_api = async (req) => {\n try {\n var data = [];\n const response = await fetch(API_Base_Url + \"reports/revenueByCustomer\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\nexport const GetReport_TechPerformance_api = async (req) => {\n\n\n try { \n const response = await fetch(API_Base_Url + \"reports/techPerformance\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const GetReport_AvgTicketResolutionTime_api=async(req)=>{\n try { \n const response = await fetch(API_Base_Url + \"analytics/avgticketresolutiontime\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const GetReport_TechOccupancy_api=async(req)=>{\n try { \n const response = await fetch(API_Base_Url + \"analytics/techoccupancy\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const GetReport_AvgRevenuePerTech_api=async(req)=>{\n try { \n const response = await fetch(API_Base_Url + \"analytics/avgrevenuepertech\", {\n method: \"POST\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n },\n body: JSON.stringify(req)\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\nexport const GetReport_AvgResponseTime_api=async(filterval)=>{\n try { \n const response = await fetch(API_Base_Url + \"analytics/avgresponsetime?period=\"+filterval, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n\nexport const GetReport_AvgTicketLifeCycle_api=async(filterval)=>{\n try { \n const response = await fetch(API_Base_Url + \"analytics/avgticketlifecycle?period=\"+filterval, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n\n\nexport const GetReport_EstimatedActual_api=async(filterval)=>{\n try { \n const response = await fetch(API_Base_Url + \"analytics/estimatedactual?period=\"+filterval, {\n method: \"GET\",\n headers: {\n 'Accept': 'application/json',\n 'Content-Type': 'application/json',\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\n }\n })\n if (response.status == 401) {\n toast.error('Your Session has been expired, Please login again.');\n return window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/\";\n }, 1000);\n }\n const result = await response.json();\n if (response.ok) {\n return result;\n }\n else if (response.status === 400) {\n if(result.errors != undefined)\n {\n toast.error(result.errors[0])\n }\n }\n else {\n\n }\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n};\n\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../nav/Header'\nimport Sidebar from '../nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetReport_RevenueByTech_api } from '../../functions/reports'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\n\nfunction ReportOne() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n\n const [period, setPeriod] = useState(\"This Month\");\n const [selectedTechnicianID, setSelectedTechnicianID] = useState(0);\n const [fromDate, setFromDate] = useState(\"\");\n const [toDate, setToDate] = useState(\"\");\n const [technicianList, setTechnicianlist] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [List, setList] = useState([]);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadTechnicians();\n loadReport();\n }, [])\n\n // useEffect(() => {\n // if (period == \"Custom\") {\n // window.$(\"#dateSelection\").modal('show')\n // }\n // }, [period])\n\n const selectPeriod = (period) => {\n setPeriod(period)\n if (period == \"Custom\") {\n window.$(\"#dateSelection\").modal('show')\n }\n }\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n\n const AccordianChange = (item) => {\n var accordionitem = item;\n window.$(\"#\" + accordionitem).slideToggle().parent().siblings().find(\".accordion-content\").slideUp();\n window.$(\"#\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + \"item_\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title\").removeClass(\"active-title\");\n window.$(\"i.fa-chevron-down\", \"#\" + item).toggleClass(\"chevron-top\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title i.fa-chevron-down\").removeClass(\"chevron-top\");\n }\n\n const loadReport = () => {\n var _period = period;\n var _fromdate = fromDate;\n var _todate = toDate;\n var _technicialID = (selectedTechnicianID == undefined || selectedTechnicianID == null) ? 0 : selectedTechnicianID;\n if (period === \"Custom\") {\n if (_fromdate == \"\" || _fromdate == null) {\n return toast.error(\"Please select from date.\")\n }\n else {\n _fromdate = moment(_fromdate).format(\"YYYY-MM-DD\")\n }\n if (_todate == \"\" || _todate == null) {\n return toast.error(\"Please select to date.\")\n }\n else {\n _todate = moment(_todate).format(\"YYYY-MM-DD\")\n }\n }\n setIsLoaded(false);\n var req = {\n \"periodtype\": _period,\n \"fromdate\": _fromdate,\n \"todate\": _todate,\n \"techid\": Number(_technicialID)\n }\n GetReport_RevenueByTech_api(req).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setList([])\n }\n else { \n setList(result)\n let data = result.data;\n let dataset = [];\n if (data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].invoices != undefined && data[i].invoices != null) {\n for (var j = 0; j < data[i].invoices.length; j++) {\n dataset.push(\n {\n TechnicianID: data[i].technicianID,\n Technician: data[i].technicianname,\n Revenue: data[i].revenue,\n Customer: data[i].invoices[j].customername,\n ponumber: data[i].invoices[j].ponumber,\n amount: data[i].invoices[j].invoiceamt\n }\n )\n }\n }\n }\n }\n {\n dataset.push({\n TechnicianID: 0,\n Technician: \"\",\n Revenue: \"\",\n Customer: \"\",\n ponumber: \"\",\n amount: 0\n })\n }\n setExcelDataSet(dataset);\n console.log(\"Dataset\", dataset)\n //var data = result.data;\n if (data.length > recordshowperpage) {\n var totalpage = data.length / recordshowperpage;\n var reminder = data.length % recordshowperpage;\n var pages = [];\n for (var i = 1; i <= totalpage; i++) {\n pages.push(i);\n }\n if (reminder == 0) {\n //pages = pages;\n }\n else {\n pages.push(pages.length + 1)\n }\n setPaginationarr(pages);\n }\n }\n }\n else {\n setPaginationarr([]);\n }\n\n setIsLoaded(true);\n }).catch();\n }\n\n return (\n
\n
\n
\n
\n \n
\n {/*
*/}\n
\n
\n
\n
    \n
  • Revenue by Tech
  • \n
  • Revenue by Customer
  • \n
  • Collection Report
  • \n {/*
  • Tech Performance
  • */}\n
  • Tech Utilization
  • \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 Export to Excel} >\n \n \n \n \n \n \n \n
\n
\n
\n
\n {\n period == \"Custom\"\n &&\n
\n From - {fromDate != \"\" && moment(fromDate).format(\"DD MMM YYYY\")}    To - {toDate != \"\" && moment(toDate).format(\"DD MMM YYYY\")}\n     window.$(\"#dateSelection\").modal('show')}>\n
\n }\n
\n
\n
\n
\n\n
\n {\n isLoaded == false ?
\"\"
\n :\n
\n {\n List.data != undefined &&\n <>\n {\n List.data.length == 0\n ?\n \"No Record Found.\"\n :\n List.data.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map((item, index) => (\n <>\n
\n
AccordianChange(`item-${index}`)}>\n
\n
\n

{item.technicianname}

\n
\n
\n
${item.revenue}
\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 item.invoices != undefined &&\n\n item.invoices.length == 0\n ?\n \"No Record Found.\"\n :\n item.invoices != null &&\n item.invoices.map(inneritem => (\n \n \n \n \n \n ))\n }\n \n
CustomerPO NumberAmount
{inneritem.customername}{inneritem.ponumber}${inneritem.invoiceamt}
\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 setFromDate(e.target.value)} />\n
\n
\n
\n \n
\n setToDate(e.target.value)} />\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default ReportOne\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../nav/Header'\nimport Sidebar from '../nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadCustomers_api } from '../../functions/customers'\nimport { GetReport_RevenueByCustomer_api } from '../../functions/reports'\nimport ReactExport from \"react-data-export\";\n\nfunction RevenueByCustomer() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [period, setPeriod] = useState(\"\");\n const [selectedCustomerID, setSelectedCustomerID] = useState(0);\n const [fromDate, setFromDate] = useState(\"\");\n const [toDate, setToDate] = useState(\"\");\n const [customerList, setCustomerList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [List, setList] = useState([]);\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadCustomers();\n loadReport();\n }, [])\n\n const loadCustomers = () => {\n LoadCustomers_api('All', '').then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setCustomerList([])\n }\n else\n setCustomerList(result.data);\n }\n\n }).catch();\n }\n\n\n\n const loadReport = () => {\n var _period = period;\n var _fromdate = fromDate;\n var _todate = toDate;\n var _customerID = selectedCustomerID;\n setIsLoaded(false);\n var req = {\n \"periodtype\": _period,\n \"customerid\": Number(_customerID)\n }\n GetReport_RevenueByCustomer_api(req).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setList([])\n }\n else {\n setList(result)\n let data = result.data;\n let dataset = [];\n if (data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n dataset.push({\n Month: data[i].month,\n Revenue: data[i].revenue\n })\n }\n\n }\n {\n dataset.push({\n Month: \"\",\n Revenue: \"\"\n })\n }\n setExcelDataSet(dataset)\n // var data = result.data;\n if (data.length > recordshowperpage) {\n var totalpage = data.length / recordshowperpage;\n var reminder = data.length % recordshowperpage;\n var pages = [];\n for (var i = 1; i <= totalpage; i++) {\n pages.push(i);\n }\n if (reminder == 0) {\n //pages = pages;\n }\n else {\n pages.push(pages.length + 1)\n }\n setPaginationarr(pages);\n }\n }\n }\n else {\n setPaginationarr([]);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n\n return (\n
\n
\n
\n
\n \n
\n {/*
*/}\n
\n
\n
\n
    \n
  • Revenue by Tech
  • \n
  • Revenue by Customer
  • \n
  • Collection Report
  • \n {/*
  • Tech Performance
  • */}\n
  • Tech Utilization
  • \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 Export to Excel} >\n \n \n \n \n \n
\n
\n
\n
\n
\n
\n\n\n
\n
\n\n
\n {\n isLoaded == false ?
\"\"
\n :\n <>\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {\n List.data != undefined &&\n <>\n {\n List.data.length == 0\n ?\n \"No Record Found.\"\n :\n List.data.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map((item, index) => (\n \n \n \n \n ))\n }\n \n }\n \n
{List.customername}${List.totalrevenue}
MonthRevenue
{item.month}${item.revenue}
\n
\n \n }\n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default RevenueByCustomer\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../nav/Header'\nimport Sidebar from '../nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadCustomers_api } from '../../functions/customers'\nimport { GetReport_CollectionReport_api } from '../../functions/reports'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\n\nfunction CollectionReport() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [period, setPeriod] = useState(\"This Week\");\n const [selectedCustomerID, setSelectedCustomerID] = useState(0);\n const [fromDate, setFromDate] = useState(\"\");\n const [toDate, setToDate] = useState(\"\");\n const [customerList, setCustomerList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [List, setList] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadCustomers();\n loadReport();\n }, [])\n\n // useEffect(() => {\n // if (period == \"Custom\") {\n // window.$(\"#dateSelection\").modal('show')\n // }\n // }, [period])\n\n const selectPeriod = (period) => {\n setPeriod(period)\n if (period == \"Custom\") {\n window.$(\"#dateSelection\").modal('show')\n }\n }\n\n const loadCustomers = () => {\n LoadCustomers_api('All', '').then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setCustomerList([])\n }\n else\n setCustomerList(result.data);\n }\n\n }).catch();\n }\n\n\n const loadReport = () => {\n var _period = period;\n var _fromdate = fromDate;\n var _todate = toDate;\n var _customerID = selectedCustomerID;\n\n if (period === \"Custom\") {\n if (_fromdate == \"\" || _fromdate == null) {\n return toast.error(\"Please select from date.\")\n }\n else {\n _fromdate = moment(_fromdate).format(\"YYYY-MM-DD\")\n }\n if (_todate == \"\" || _todate == null) {\n return toast.error(\"Please select to date.\")\n }\n else {\n _todate = moment(_todate).format(\"YYYY-MM-DD\")\n }\n }\n setIsLoaded(false);\n var req = {\n \"periodtype\": _period,\n \"fromdate\": _fromdate,\n \"todate\": _todate,\n \"customerid\": Number(_customerID)\n }\n GetReport_CollectionReport_api(req).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setList([])\n }\n else {\n setList(result)\n let data = result.data;\n let dataset = [];\n if (data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n dataset.push({\n PONumber: data[i].ponumber,\n InvoiceNumber: data[i].invoicenumber,\n InvoiceDate: data[i].invoicedate,\n GrossAmount: data[i].grossamount,\n NetAmount: data[i].netamount,\n Technician: data[i].technicianname\n })\n }\n\n }\n {\n dataset.push({\n PONumber: \"\",\n InvoiceNumber: \"\",\n InvoiceDate: \"\",\n GrossAmount: \"\",\n NetAmount: \"\",\n Technician: \"\"\n })\n }\n setExcelDataSet(dataset)\n\n // var data = result.data;\n if (data.length > recordshowperpage) {\n var totalpage = data.length / recordshowperpage;\n var reminder = data.length % recordshowperpage;\n var pages = [];\n for (var i = 1; i <= totalpage; i++) {\n pages.push(i);\n }\n if (reminder == 0) {\n //pages = pages;\n }\n else {\n pages.push(pages.length + 1)\n }\n setPaginationarr(pages);\n }\n }\n }\n else {\n setPaginationarr([]);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n\n return (\n
\n
\n
\n
\n \n
\n {/*
*/}\n
\n
\n
\n
    \n
  • Revenue by Tech
  • \n
  • Revenue by Customer
  • \n
  • Collection Report
  • \n {/*
  • Tech Performance
  • */}\n
  • Tech Utilization
  • \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 Export to Excel} >\n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n {\n period == \"Custom\"\n &&\n
\n From - {fromDate != \"\" && moment(fromDate).format(\"DD MMM YYYY\")}    To - {toDate != \"\" && moment(toDate).format(\"DD MMM YYYY\")}\n     window.$(\"#dateSelection\").modal('show')}>\n
\n }\n
\n
\n
\n
\n\n\n
\n\n {\n isLoaded == false ?
\"\"
\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 List.data != undefined &&\n <>\n {\n List.data.length == 0\n ?\n \"No Record Found.\"\n :\n List.data.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map((item, index) => (\n\n \n \n \n \n \n \n \n \n ))\n }\n \n }\n \n
{List.customername}${List.totalGrossAmount}${List.totalNetAmount}
PO NumberInvoice NumberInvoice DateGross AmountNet AmountTech
{item.ponumber}{item.invoicenumber}{item.invoicedate}${item.grossamount}${item.netamount}{item.technicianname}
\n
\n \n }\n \n
\n
\n
\n
\n
\n
\n\n
\n
\n
\n
\n
\n \n
\n setFromDate(e.target.value)} />\n
\n
\n
\n \n
\n setToDate(e.target.value)} />\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default CollectionReport\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../nav/Header'\nimport Sidebar from '../nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { GetReport_TechPerformance_api } from '../../functions/reports'\n\nfunction TechPerformance() {\n\n const [period, setPeriod] = useState(\"\");\n const [selectedCustomerID, setSelectedCustomerID] = useState(0);\n const [fromDate, setFromDate] = useState(\"\");\n const [toDate, setToDate] = useState(\"\");\n const [customerList, setCustomerList] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [List, setList] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadReport();\n }, [])\n\n useEffect(() => {\n if (period == \"Custom\") {\n window.$(\"#dateSelection\").modal('show')\n }\n }, [period])\n\n\n\n\n const loadReport = () => {\n var aa = \"0 Hr\".replace(\" Hr\", '');\n var _period = period;\n var req = {\n \"periodtype\": _period\n }\n\n setIsLoaded(false);\n GetReport_TechPerformance_api(req).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setList([])\n }\n else {\n setList(result)\n var data = result.data.filter(x => x.timedata != undefined);\n if (data.length > recordshowperpage) {\n var totalpage = data.length / recordshowperpage;\n var reminder = data.length % recordshowperpage;\n var pages = [];\n for (var i = 1; i <= totalpage; i++) {\n pages.push(i);\n }\n if (reminder == 0) {\n //pages = pages;\n }\n else {\n pages.push(pages.length + 1)\n }\n setPaginationarr(pages);\n }\n }\n }\n else {\n setPaginationarr([]);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n\n return (\n
\n \n
\n )\n}\n\nexport default TechPerformance\n","import React, { useState } from 'react'\nimport MyContext from '../contextapi/MyContext';\n\nexport default function MyProvider(props) {\n const [contextUser, setContextUser] = useState(JSON.parse(localStorage.getItem(\"userinfo\")));\n return (\n { \n setContextUser(userinfo)\n }\n }}\n >\n {props.children}\n \n )\n}\n","import React from \"react\";\nimport { Redirect, Route } from \"react-router-dom\";\nimport MyContext from '../contextapi/MyContext'\n\nconst PrivateRoute = ({\n component: Component,\n ...rest\n}) => {\n // const history = useHistory(); \n // const accessToken = localStorage.getItem(\"token\");\n // const decodedToken = jwt_decode(accessToken);\n\n // if (decodedToken.userData.isAdmin) {\n // history.push(\"/admin-panel\");\n // }\n const { Contextuser } = React.useContext(MyContext);\n const IsUserBlank = Object.keys(Contextuser).length;\n return (\n {\n // logic for authenticated user to access /app part goes here.\n // e.g. check if user is logged-in logic.\n // const isLoggedIn = true;\n\n return IsUserBlank > 0 ? (\n \n ) : (\n \n );\n }}\n />\n );\n};\nexport default PrivateRoute","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../nav/Header'\nimport Sidebar from '../nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetReport_TechUtilizationReport_api } from '../../functions/reports'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\n\nfunction TechUtilization() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [period, setPeriod] = useState(\"This Week\");\n const [selectedTechnicianID, setSelectedTechnicianID] = useState(0);\n const [fromDate, setFromDate] = useState(\"\");\n const [toDate, setToDate] = useState(\"\");\n const [technicianList, setTechnicianlist] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n const [List, setList] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadTechnicians();\n loadReport();\n }, [])\n\n // useEffect(() => {\n // if (period == \"Custom\") {\n // window.$(\"#dateSelection\").modal('show')\n // }\n // }, [period])\n\n const selectPeriod = (period) => {\n setPeriod(period)\n if (period == \"Custom\") {\n window.$(\"#dateSelection\").modal('show')\n }\n }\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n\n const loadReport = () => {\n var _period = period;\n var _fromdate = fromDate;\n var _todate = toDate;\n var _technicianID = selectedTechnicianID;\n\n if (period === \"Custom\") {\n if (_fromdate == \"\" || _fromdate == null) {\n return toast.error(\"Please select from date.\")\n }\n else {\n _fromdate = moment(_fromdate).format(\"YYYY-MM-DD\")\n }\n if (_todate == \"\" || _todate == null) {\n return toast.error(\"Please select to date.\")\n }\n else {\n _todate = moment(_todate).format(\"YYYY-MM-DD\")\n }\n }\n setIsLoaded(false);\n var req = {\n \"periodtype\": _period,\n \"fromdate\": _fromdate,\n \"todate\": _todate,\n \"techid\": Number(_technicianID)\n }\n GetReport_TechUtilizationReport_api(req).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setList([])\n }\n else {\n setList(result);\n console.log(result,\"tech\")\n\n let data = result.data;\n let dataset = [];\n if (data.length > 0) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].tickets != undefined && data[i].tickets != null) {\n for (var j = 0; j < data[i].tickets.length; j++) {\n dataset.push(\n {\n TechnicianID: data[i].technicianID,\n Technician: data[i].technicianname,\n Revenue: data[i].revenue,\n Customer: data[i].tickets[j].customername,\n ticketid: data[i].tickets[j].ticketid,\n ponumber: data[i].tickets[j].ponumber,\n ordertype: data[i].tickets[j].ordertype,\n ordertocashtime: data[i].tickets[j].ordertocashtime,\n activityPerformed: data[i].tickets[j].activityPerformed,\n draftedon: data[i].tickets[j].draftedon,\n checkin: data[i].tickets[j].checkin,\n checkout: data[i].tickets[j].checkout,\n timespent: data[i].tickets[j].timespent,\n timespentminutes: data[i].tickets[j].timespentminutes\n }\n )\n }\n }\n }\n }\n {\n dataset.push({\n TechnicianID: 0,\n Technician: \"\",\n Revenue: \"\",\n Customer: \"\",\n ponumber: \"\",\n ticketid: 0,\n ordertype: \"\",\n ordertocashtime:\"\",\n activityPerformed: \"\",\n draftedon: \"\",\n checkin: \"\",\n checkout: \"\",\n timespent: \"\",\n timespentminutes: \"\"\n })\n }\n setExcelDataSet(dataset);\n\n // var data = result.data;\n if (data.length > recordshowperpage) {\n var totalpage = data.length / recordshowperpage;\n var reminder = data.length % recordshowperpage;\n var pages = [];\n for (var i = 1; i <= totalpage; i++) {\n pages.push(i);\n }\n if (reminder == 0) {\n //pages = pages;\n }\n else {\n pages.push(pages.length + 1)\n }\n setPaginationarr(pages);\n }\n }\n }\n else {\n setPaginationarr([]);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const AccordianChange = (item) => {\n var accordionitem = item;\n window.$(\"#\" + accordionitem).slideToggle().parent().siblings().find(\".accordion-content\").slideUp();\n window.$(\"#\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + \"item_\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title\").removeClass(\"active-title\");\n window.$(\"i.fa-chevron-down\", \"#\" + item).toggleClass(\"chevron-top\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title i.fa-chevron-down\").removeClass(\"chevron-top\");\n }\n\n\n return (\n
\n
\n
\n
\n \n
\n {/*
*/}\n
\n
\n
\n
    \n
  • Revenue by Tech
  • \n
  • Revenue by Customer
  • \n
  • Collection Report
  • \n {/*
  • Tech Performance
  • */}\n
  • Tech Utilization
  • \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 Export to Excel} >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n
\n {\n period == \"Custom\"\n &&\n
\n From - {fromDate != \"\" && moment(fromDate).format(\"DD MMM YYYY\")}    To - {toDate != \"\" && moment(toDate).format(\"DD MMM YYYY\")}\n     window.$(\"#dateSelection\").modal('show')}>\n
\n }\n
\n
\n
\n
\n\n\n
\n {\n isLoaded == false ?
\"\"
\n :\n
\n {\n List.data != undefined &&\n <>\n {\n List.data.length == 0\n ?\n \"No Record Found.\"\n :\n List.data.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map((item, index) => (\n <>\n
\n
AccordianChange(`item-${index}`)}>\n
\n
\n

{item.technicianname}

\n
\n
\n
{item.timespent}
\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 item.tickets != undefined &&\n\n item.tickets.length == 0\n ?\n \"No Record Found.\"\n :\n item.tickets != null &&\n item.tickets.map(inneritem => (\n \n\n \n \n \n \n \n \n \n \n \n \n ))\n }\n \n
ticketidCustomerOrder TypeActivity PerformedPO NumberCheck InCheck OutOrder to Cash TimeTime Spent
{inneritem.ticketid}{inneritem.customername}{inneritem.ordertype}{inneritem.activityPerformed}{inneritem.ponumber}{inneritem.checkin}{inneritem.checkout}{inneritem.ordertocashtime}{inneritem.timespent}
\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 setFromDate(e.target.value)} />\n
\n
\n
\n \n
\n setToDate(e.target.value)} />\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default TechUtilization\n","import React from 'react'\n\n\nconst CreateUpdateService = ({ screentype, CreateService_submit, Updateservice_submit, service, setservice, serviceamount, setserviceamount }) => {\n return
\n
\n
\n
\n \n \n
{screentype == \"Create\" ? \"Add\" : \"Update\"} Service
\n
\n
\n
\n
\n\n
\n
\n
\n setservice(e.target.value)} />\n
\n
\n
\n\n
\n
\n
\n setserviceamount(e.target.value.replace(/\\D/, ''))} />\n
\n
\n
\n\n
\n Cancel\n
\n {\n screentype == \"Create\"\n ?\n
\n SAVE \n
\n\n :\n
\n SAVE \n
\n }\n\n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n}\n\nexport default CreateUpdateService\n","import React, { useState, useEffect } from 'react'\nimport { Link } from 'react-router-dom'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport CreateUpdateService from '../../forms/CreateUpdateService'\nimport DeletePopUp from '../../forms/DeletePopUp'\nimport { toast } from 'react-toastify'\nimport { CreateService_api, Loadservice_api, Updateservice_api, ChangeserviceStatus_api, Deleteservice_api } from '../../functions/service'\n\nconst Services = () => {\n\n const [isLoaded, setIsLoaded] = useState(false);\n const [screentype, setScreenType] = useState(\"Create\");\n const [serviceId, setserviceId] = useState(0);\n const [searchText, setSearchText] = useState(\"\");\n const [serviceList, setserviceList] = useState([]);\n const [service, setservice] = useState(\"\");\n const [serviceamount, setserviceamount] = useState(0);\n const loggeduserid = Number(localStorage.getItem(\"userid\"));\n\n\n useEffect(() => {\n loadservices();\n }, [searchText])\n\n const loadservices = () => {\n setIsLoaded(false);\n Loadservice_api(searchText).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setserviceList([])\n }\n else\n setserviceList(result.data);\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const showServiceCreationPopUp = () => {\n setservice(\"\");\n setserviceId(\"\");\n setScreenType(\"Create\");\n window.$(\"#Addservice\").modal('show');\n }\n\n const CreateService_submit = (e) => {\n console.log(localStorage.getItem(\"clientid\"), service, serviceamount, loggeduserid)\n e.preventDefault();\n if (service.trim() === \"\")\n return toast.error(\"Please enter service name.\");\n else if (serviceamount.trim() == \"\")\n return toast.error(\"Please enter service amount.\");\n\n\n var req = {\n \"clientid\": Number(localStorage.getItem(\"clientid\")),\n \"servicename\": service,\n \"serviceamount\": Number(serviceamount),\n \"addedby\": Number(loggeduserid)\n }\n CreateService_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#Addservice\").modal('hide');\n setserviceamount(0);\n setservice(\"\");\n loadservices();\n }\n })\n .catch();\n\n }\n\n const Updateservice_submit = (e) => {\n e.preventDefault();\n if (service.trim() == \"\")\n return toast.error(\"Please enter order type.\");\n\n\n var req = {\n \"serviceid\": Number(serviceId),\n \"servicename\": service,\n \"serviceamount\": Number(serviceamount),\n \"updatedby\": Number(loggeduserid)\n }\n Updateservice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#Addservice\").modal('hide');\n setservice(\"\");\n loadservices();\n }\n })\n .catch();\n\n }\n\n const Updateservice_Status_submit = (serviceid, newstatus) => {\n\n ChangeserviceStatus_api(serviceid, newstatus).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadservices();\n }\n })\n .catch();\n\n }\n\n const loadserviceDetails = (item) => {\n setservice(item.serviceName);\n setserviceId(item.serviceID)\n setserviceamount(item.serviceAmount)\n setScreenType(\"Update\");\n window.$(\"#Addservice\").modal('show');\n }\n\n const deleteservicePopUp = (serviceid) => {\n setserviceId(serviceid)\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const Deleteservice_submit = (serviceid) => {\n Deleteservice_api(serviceid).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#DeletePopUp\").modal('hide');\n loadservices();\n }\n })\n .catch();\n\n }\n\n return (\n
\n
\n\n {/* SideBar */}\n
\n \n {/* */}\n
\n\n {/* */}\n
\n {/* */}\n
\n
\n
\n
\n Order Type\n Services\n\n
\n
\n
\n
\n\n
\n
\n \n
\n
\n
\n\n {/*
\n
\n\n setSearchText(e.target.value)} />\n \n\n
\n
*/}\n
\n\n
\n
\n {/* */}\n {\n isLoaded == false ?
\"\"
\n :\n
\n \n \n \n\n \n \n \n \n \n {\n (serviceList != undefined && serviceList != null && serviceList != \"null\") &&\n serviceList.length == 0 ?\n \n :\n serviceList.map(item => (\n \n\n \n \n \n\n \n\n \n ))\n\n }\n\n \n
Service NameAmountStatusAction
No Record Found.
{item.serviceName}{item.serviceAmount}\n {\n item.status == \"Active\"\n ?\n Updateservice_Status_submit(item.serviceID, 0)} >Active\n :\n Updateservice_Status_submit(item.serviceID, 1)}>Inactive\n }\n\n \n {item.userType != \"Admin\" &&\n loadserviceDetails(item)}>Edit\n }\n   \n {item.userType != \"Admin\" &&\n deleteservicePopUp(item.serviceID)}>Delete\n }\n\n\n
\n
\n\n }{/* */}\n
\n
\n\n\n
\n {/* */}\n
\n {/* */}\n
\n {/* */}\n
\n\n {/* Create Form */}\n \n\n \n\n\n\n {/* */}\n\n
\n
\n\n )\n}\n\nexport default Services\n","import { Fragment, useState, useEffect } from \"react\";\nimport { Button, Typography } from \"@material-ui/core\";\nimport { useParams } from \"react-router-dom\";\nimport { ProcessedEvent, Scheduler, SchedulerHelpers } from \"@aldabil/react-scheduler\";\n//import { EVENTS1 } from \"./data\";\nimport PersonRoundedIcon from \"@material-ui/icons/PersonRounded\";\nimport axios from 'axios';\nimport { toast } from 'react-toastify'\nimport { CreateTicket_api,SearchDuplicateTicket_api } from '../../functions/tickets'\nimport { LoadOrderType_api } from '../../functions/masters'\nimport { LoadUsers_api, LoadTechnicians_api } from '../../functions/users'\nimport CreateUpdateOrderType from '../../forms/CreateUpdateOrderType'\nimport { CreateOrderType_api } from '../../functions/orderType'\nimport { Customers_Profile_api } from '../../functions/customers'\nimport { LoadCustomers_api } from '../../functions/customers'\nimport moment from \"moment\";\nimport { useHistory } from \"react-router-dom\";\nimport TicketDetails from '../../components/popups/TicketDetails'\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\nconst CustomEditor = ({ scheduler }) => {\n const history = useHistory()\n var date_lo = localStorage.getItem(\"calendarstart\");\n var formateddate = moment(date_lo).format(\"YYYY-MM-DD\");\n var formatedtime = moment(date_lo).format(\"hh:mm\");\n const event = scheduler.edited;\n const API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n const AccessToken = localStorage.getItem(\"AccessToken\");\n const [txtcustomername, setCustomername] = useState(\"\");\n const [keypointRefresh, setKeyPointsRefresh] = useState(0);\n const [selectedCustomerID, setSelectedCustomerID] = useState(0);\n const [ticketTitle, setTicketTitle] = useState(\"\");\n const [orderType, setOrderType] = useState(\"\");\n const [orderDetail, setOrderDetail] = useState(\"\");\n const [ticketDate, setTicketDate] = useState(formateddate.toString());\n const [ticketTime, setTicketTime] = useState(formatedtime.toString());\n const [poRequired, setPoRequired] = useState(false);\n const [poDOc, setPoDoc] = useState(\"\");\n const [technicianid, setTechnicianid] = useState(0);\n const loggeduserid = Number(localStorage.getItem(\"userid\"));\n const [orderTypeList, setOrderTypeList] = useState([]);\n const [technicianList, setTechnicianlist] = useState([]);\n const [technicianId, setTechnicianID] = useState(localStorage.getItem(\"calendaruserid\"));\n const [txtsearchOrderType, setTxtSearchOrderType] = useState(\"\");\n const [allOrderTypes, setAllOrderTypes] = useState([]);\n const [screentype, setScreenType] = useState(\"Create\");\n const [orderTypeId, setOrderTypeId] = useState(0);\n const [test, setText] = useState(0);\n const [showsearch, setshowsearch] = useState(false);\n const [poNumber, setPoNumber] = useState(\"\");\n const [workOrderNumber, setWorkOrderNumber] = useState(\"\");\n const [serviceAddress, setServiceAddress] = useState(\"\");\n const [sameAsBilling, setSameAsBilling] = useState(false);\n const [customerAddress, setCustomerAddress] = useState(\"\");\n const [state, setState] = useState(\"\")\n const [city, setCity] = useState(\"\")\n const [zipcode, setZipCode] = useState(\"\")\n const [latitude, setLatitude] = useState(\"\")\n const [longitude, setLongitude] = useState(\"\")\n const [customer_state, setcustomer_State] = useState(\"\")\n const [customer_city, setcustomer_City] = useState(\"\")\n const [customer_zipcode, setcustomer_ZipCode] = useState(\"\")\n const [customer_latitude, setcustomer_Latitude] = useState(\"\")\n const [customer_longitude, setcustomer_Longitude] = useState(\"\")\n const usertype = localStorage.getItem(\"usertype\");\n const [jobname, setJobName] = useState(\"\");\n const [jobcontactname, setJobContactName] = useState(\"\");\n const [jobcontactemail, setJobContactEmail] = useState(\"\");\n const [jobcontactphone, setJobContactPhone] = useState(\"\");\n const [isLoaded, setIsLoaded] = useState(false);\n const [selectedCustomerName, setSelectedCustomerName] = useState(\"\");\n const [customerList, setCustomerList] = useState([]);\n const [testId, setTestId] = useState(0);\n const [Isunavailable, setUnavailable] = useState(false);\n const [ticketendtime, setTicketEndTime] = useState(\"\");\n const [expectedtime, setExpectedtime] = useState(\"0\")\n const [priorityId, setPriorityID] = useState(0)\n\n\n useEffect(() => {\n loadOrderType();\n loadTechnicians();\n window.$(\"#searchresultarea\").hide();\n window.$(\"#searchOrderType\").hide();\n }, []);\n\n useEffect(() => {\n setTxtSearchOrderType(\"\")\n setOrderTypeId(0);\n setOrderType(\"\")\n setOrderDetail(\"\");\n //setTicketDate(\"\");\n //setTicketTime(\"\");\n //setTechnicianID(\"\")\n setPoDoc(\"\");\n setPoRequired(false);\n setSameAsBilling(false)\n if (selectedCustomerID !== undefined && selectedCustomerID !== 0 && selectedCustomerID !== null)\n loadCustomerProfile();\n }, [testId])\n\n useEffect(() => {\n if (selectedCustomerID !== undefined && selectedCustomerID !== 0 && selectedCustomerID !== null)\n loadCustomerProfile();\n }, [selectedCustomerID])\n\n useEffect(() => {\n if (sameAsBilling) {\n setServiceAddress(customerAddress)\n setCity(customer_city)\n setState(customer_state)\n setLatitude(customer_latitude)\n setLongitude(customer_longitude)\n setZipCode(customer_zipcode)\n }\n else\n setServiceAddress(\"\");\n }, [sameAsBilling])\n\n const loadCustomers = (txtsearch) => {\n setIsLoaded(false);\n LoadCustomers_api(\"All\", txtsearch).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setCustomerList([])\n }\n else {\n setCustomerList(result.data);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const refreshDashboard = () => {\n setKeyPointsRefresh(keypointRefresh + 1);\n setCustomername(\"\");\n setSelectedCustomerID(0);\n }\n\n const SearchCustomer = (e) => {\n setCustomername(e.target.value);\n if (e.target.value.length < 2) {\n window.$(\"#searchresultarea\").hide();\n\n }\n else {\n window.$(\"#searchresultarea\").show();\n loadCustomers(e.target.value);\n }\n\n }\n\n const SelectNewAddedCustomer = (selectedCustomerID) => {\n LoadCustomers_api(\"All\", txtcustomername).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n\n }\n else {\n var cust = result.data.filter(x => x.customerid == selectedCustomerID)[0];\n ChooseCustomer(cust);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const ChooseCustomer = (item) => {\n setSelectedCustomerName(item.customername)\n setSelectedCustomerID(item.customerid)\n window.$(\"#searchresultarea\").hide();\n setCustomername(item.customername)\n }\n\n const showCustomerCreationPopUp = () => {\n setCustomername(\"\");\n setTestId(testId + 1)\n window.$(\"#CustomerFormPop\").modal('show');\n window.$(\"#searchresultarea\").hide();\n }\n\n const loadCustomerProfile = () => {\n Customers_Profile_api(selectedCustomerID).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n //SetUserList([])\n }\n else {\n setCustomerAddress(result.address)\n setcustomer_State(result.state)\n setcustomer_City(result.city)\n setcustomer_Latitude(result.latitude)\n setcustomer_Longitude(result.longitude)\n setcustomer_ZipCode(result.zipcode)\n }\n\n //SetUserList(result.data);\n }\n }).catch();\n }\n\n\n const loadOrderType = () => {\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setOrderTypeList([])\n setAllOrderTypes([])\n }\n else {\n setOrderTypeList(result.data);\n setAllOrderTypes(result.data);\n }\n }\n\n }).catch();\n }\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n const CreateOrderType_submit = (e) => {\n e.preventDefault();\n if (orderType.trim() == \"\")\n return toast.error(\"Please enter order type.\");\n\n var req = {\n \"ordertype\": orderType,\n \"addedby\": loggeduserid\n }\n CreateOrderType_api(req).then(res => {\n if (res != undefined) {\n //toast.success(res.message);\n window.$(\"#AddOrderType\").modal('hide');\n setOrderType(\"\");\n loadOrderType();\n SelectNewOrderType(res.ordertypeid)\n }\n })\n .catch();\n\n }\n\n const submitTicket = (e) => {\n e.preventDefault();\n if (selectedCustomerID == 0)\n return toast.error('Please select customer')\n else if (orderTypeId == 0 || orderTypeId == null)\n return toast.error(\"Please choose order type.\");\n else if ((ticketDate == \"\" || ticketDate == null) && usertype !== \"Dispatcher\")\n return toast.error(\"Please enter ticket date.\");\n else if ((ticketTime == \"\" || ticketTime == null) && usertype !== \"Dispatcher\")\n return toast.error(\"Please enter ticket time.\");\n else if (expectedtime === \"0\")\n return toast.error(\"Please enter expected time.\");\n else if ((latitude == \"\" || latitude == null))\n return toast.error(\"Please select complete address.\");\n else if (longitude == \"\" || longitude == null)\n return toast.error(\"Please select complete address.\");\n\n else {\n var req = {\n \"customerid\": selectedCustomerID,\n //\"customername\": ticketTitle,\n \"ordertypeid\": Number(orderTypeId),\n \"orderdetails\": orderDetail,\n \"scheduledate\": ticketDate,\n \"scheduletime\": ticketTime,\n \"expectedtime\": expectedtime,\n \"technicianid\": Number(technicianId),\n \"ponumber\": poNumber,\n \"workordernumber\": workOrderNumber,\n \"address\": serviceAddress,\n \"state\": state,\n \"city\": city,\n \"zipcode\": zipcode,\n \"latitude\": String(latitude),\n \"longitude\": String(longitude),\n \"jobname\": jobname,\n \"jobcontactname\": jobcontactname,\n \"jobcontactemail\": jobcontactemail,\n \"jobcontactphone\": jobcontactphone,\n \"pofilepath\": poDOc,\n \"addedby\": loggeduserid,\n \"priority\": Number(priorityId)\n }\n\n SearchDuplicateTicket_api(req).then(result => {\n console.log(result, \"duplicateticket\")\n if (result.message === \"Ticket exists\") {\n window.$(\"#SearchDuplicateTicket\").modal('show');\n }\n else {\n window.$(\"#SearchDuplicateTicket\").modal('hide');\n CreateTicket();\n }\n })\n }\n }\n\n const CreateTicket = (e) => {\n var req = {\n \"customerid\": selectedCustomerID,\n //\"customername\": ticketTitle,\n \"ordertypeid\": Number(orderTypeId),\n \"orderdetails\": orderDetail,\n \"scheduledate\": ticketDate,\n \"scheduletime\": ticketTime,\n \"expectedtime\": expectedtime,\n \"technicianid\": Number(technicianId),\n \"ponumber\": poNumber,\n \"workordernumber\": workOrderNumber,\n \"address\": serviceAddress,\n \"state\": state,\n \"city\": city,\n \"zipcode\": zipcode,\n \"latitude\": String(latitude),\n \"longitude\": String(longitude),\n \"jobname\": jobname,\n \"jobcontactname\": jobcontactname,\n \"jobcontactemail\": jobcontactemail,\n \"jobcontactphone\": jobcontactphone,\n \"pofilepath\": poDOc,\n \"addedby\": loggeduserid,\n \"priority\": Number(priorityId)\n }\n CreateTicket_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#CreateTicket\").modal('hide');\n window.$(\"#SearchDuplicateTicket\").modal('hide');\n //loadCustomers();\n refreshDashboard();\n clearFields();\n scheduler.close();\n let res1;\n let evt1;\n let evtfinal;\n const clientid = localStorage.getItem(\"clientid\");\n try {\n axios.get(API_Base_Url + \"calendar/summary?clientid=\" + clientid, {\n headers: {\n 'Accept': 'application/json, text/plain, */*',\n //'Content-Type': 'application/json'\n }\n })\n .then(response => {\n res1 = response.data.technicians.map(item => {\n return {\n id: item.technicianID,\n name: item.technicianname,\n avatar: item.profileimage === \"\" ? \"images/avtar.png\" : item.profileimage\n }\n\n })\n evt1 = response.data.data.map((item, i) => {\n if (item.totalTickets > 0) {\n return {\n id: i * 100 + 1,\n bgColor: \"#A2D2FF\",\n resourceId: item.techncianID,\n title: item.totalTickets + \" tickets \" + \" (\" + item.totalHours + \" Hours)\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n }\n }\n else {\n return {\n id: 0,\n bgColor: \"#ffffff\",\n resourceId: '',\n title: '',\n start: '',\n end: ''\n }\n }\n\n\n })\n evtfinal = response.data.data.map((item, i) => {\n if (item.unavailableTiming !== \"\") {\n\n evt1.push({\n id: i * 200 + 1,\n bgColor: \"#dfdfdf\",\n resourceId: item.techncianID,\n title: \"Block (\" + (item.unavailableTiming) + \")\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n })\n }\n\n\n })\n localStorage.setItem(\"evt\", JSON.stringify(evt1))\n localStorage.setItem(\"res\", JSON.stringify(res1))\n window.location.reload();\n\n });\n }\n catch (err) {\n //console.log(err)\n }\n\n\n }\n })\n .catch();\n \n}\n\nconst HandleClose = (e) => {\n window.$(\"#SearchDuplicateTicket\").modal('hide');\n window.$(\"#CreateTicket\").modal('hide');\n refreshDashboard();\n clearFields();\n scheduler.close();\n let res1;\n let evt1;\n let evtfinal;\n const clientid = localStorage.getItem(\"clientid\");\n try {\n axios.get(API_Base_Url + \"calendar/summary?clientid=\" + clientid, {\n headers: {\n 'Accept': 'application/json, text/plain, */*',\n //'Content-Type': 'application/json'\n }\n })\n .then(response => {\n res1 = response.data.technicians.map(item => {\n return {\n id: item.technicianID,\n name: item.technicianname,\n avatar: item.profileimage === \"\" ? \"images/avtar.png\" : item.profileimage\n }\n\n })\n evt1 = response.data.data.map((item, i) => {\n if (item.totalTickets > 0) {\n return {\n id: i * 100 + 1,\n bgColor: \"#A2D2FF\",\n resourceId: item.techncianID,\n title: item.totalTickets + \" tickets \" + \" (\" + item.totalHours + \" Hours)\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n }\n }\n else {\n return {\n id: 0,\n bgColor: \"#ffffff\",\n resourceId: '',\n title: '',\n start: '',\n end: ''\n }\n }\n\n\n })\n evtfinal = response.data.data.map((item, i) => {\n if (item.unavailableTiming !== \"\") {\n\n evt1.push({\n id: i * 200 + 1,\n bgColor: \"#dfdfdf\",\n resourceId: item.techncianID,\n title: \"Block (\" + (item.unavailableTiming) + \")\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n })\n }\n\n\n })\n localStorage.setItem(\"evt\", JSON.stringify(evt1))\n localStorage.setItem(\"res\", JSON.stringify(res1))\n window.location.reload();\n\n });\n }\n catch (err) {\n //console.log(err)\n }\n\n}\n\n\nconst UploadDocument = async (e) => {\n\n try {\n let multifile = [];\n const selectedFile = e.target.files;\n //for (let i = 0; i < selectedFile.length; i++) {\n const formData = new FormData();\n var today = new Date();\n var doctype = \"\";\n const ext = selectedFile[0].name.split('.').pop();\n const datevalue = today.getDate() + today.getMonth() + today.getFullYear() + today.getHours() + today.getMinutes() + today.getSeconds();\n const filename = \"file_\" + datevalue + \".\" + ext;\n if (ext == \"png\" || ext == \"jpeg\" || ext == \"svg\" || ext == \"wpeg\" || ext == \"PNG\" || ext == \"JPEG\" || ext == \"JPG\" || ext == \"jpg\" || ext == \"SVG\" || ext == \"WPEG\") {\n doctype = \"Image\";\n }\n else if (ext == \"pdf\" || ext == \"PDF\") {\n doctype = \"PDF\";\n }\n else if (ext == \"docx\" || ext == \"DOCX\" || ext == \"doc\" || ext == \"DOC\" || ext == \"txt\" || ext == \"TXT\") {\n doctype = \"Document\";\n }\n else if (ext == \"pptx\" || ext == \"PPTX\" || ext == \"ppt\" || ext == \"PPT\") {\n doctype = \"Presentation\";\n }\n else if (ext == \"xlsx\" || ext == \"XLSX\" || ext == \"xls\" || ext == \"XLS\") {\n doctype = \"Workbook\";\n }\n else {\n return toast.error('Please Select Valid file');\n }\n // Update the formData object \n formData.append(\"uploadedby\", loggeduserid);\n formData.append(\"file\", selectedFile[0], filename);\n const Request = {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer ' + AccessToken\n },\n body: formData\n }\n const response = await fetch(API_Base_Url + \"upload\", Request)\n const result = await response.json();\n if (response.ok) {\n // multifile = multifile.concat(result)\n setPoDoc(result.filepath)\n //$(\"#file-picker1\").hide();\n }\n else if (response.status === 400) {\n if (result.errors == undefined) { }\n else {\n toast.error(result.errors)\n }\n }\n else if (response.status === 401) {\n toast.error('Your Session has been expired, Please login again.');\n window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/login\";\n }, 2000);\n }\n else {\n //setisLoaded(true)\n }\n //}\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n\n}\n\nconst clearFields = () => {\n setOrderType(\"\");\n setOrderDetail(\"\");\n //setTechnicianid(0);\n //setTicketDate(\"\");\n //setTicketTime(\"\");\n\n}\n\nconst showOrderTypeCreationPopUp = () => {\n //setCustomername(\"\");\n window.$(\"#AddOrderType\").modal('show');\n}\n\n// useEffect(() => {\n\n// }, [txtsearchOrderType])\n\nconst search_fn = (e) => {\n var searchText = e.target.value;\n setTxtSearchOrderType(e.target.value)\n if (searchText.length > 1) {\n window.$(\"#searchOrderType\").show()\n setOrderTypeList(allOrderTypes.filter(x => x.ordertype.toLowerCase().includes(searchText.toLowerCase())))\n }\n else {\n window.$(\"#searchOrderType\").hide()\n }\n}\n\nconst SelectNewOrderType = (ordertypeid) => {\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n\n }\n else {\n var ordertype = result.data.filter(x => x.ordertypeid == ordertypeid)[0];\n selectOrderType_fn(ordertype);\n }\n }\n\n }).catch();\n}\n\nconst selectOrderType_fn = (item) => {\n setText(1)\n window.$(\"#searchOrderType\").hide();\n setOrderTypeId(item.ordertypeid);\n window.$(\"#searchOrderType\").hide();\n setTxtSearchOrderType(item.ordertype)\n}\n\nfunction initMap_create() {\n var input = document.getElementById('searchMapInput_create');\n setServiceAddress(input.value)\n var autocomplete = new window.google.maps.places.Autocomplete(input);\n\n autocomplete.addListener('place_changed', function () {\n var place = autocomplete.getPlace();\n let div = document.createElement('div');\n div.innerHTML = place.adr_address;\n let cityname = div.getElementsByClassName('locality')[0] != undefined ? div.getElementsByClassName('locality')[0].innerHTML : \"\";\n let statename = div.getElementsByClassName('region')[0] != undefined ? div.getElementsByClassName('region')[0].innerHTML : \"\";\n let lat = place.geometry.location.lat();\n let long = place.geometry.location.lng();\n setCity(cityname)\n setState(statename)\n setLatitude(lat)\n setLongitude(long)\n setServiceAddress(place.formatted_address)\n });\n}\n\nconst onfocusSearch = () => {\n window.$(\"#searchMapInput_create\").attr(\"autocomplete\", \"new-password\");\n}\n\nconst MarkUnavailable = (e) => {\n // const clientid = localStorage.getItem(\"clientid\");\n if (ticketendtime === \"\") {\n toast.error(\"Plaese enter End time\");\n }\n else {\n const req = {\n \"date\": moment(ticketDate).format(\"YYYY-MM-DD\"),\n \"fromtime\": ticketTime,\n \"totime\": ticketendtime,\n \"status\": \"unavailable\",\n \"userid\": Number(localStorage.getItem(\"calendaruserid\"))\n };\n console.log(\"req\", req)\n axios.post(API_Base_Url + \"calendar/mark\", req, {\n headers: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': 'application/json'\n }\n })\n .then(response => {\n toast.success(response.data.message)\n window.$(\"#CreateTicket\").modal('hide');\n refreshDashboard();\n clearFields();\n scheduler.close();\n let res1;\n let evt1;\n let evtfinal;\n const clientid = localStorage.getItem(\"clientid\");\n try {\n axios.get(API_Base_Url + \"calendar/summary?clientid=\" + clientid, {\n headers: {\n 'Accept': 'application/json, text/plain, */*',\n //'Content-Type': 'application/json'\n }\n })\n .then(response => {\n res1 = response.data.technicians.map(item => {\n return {\n id: item.technicianID,\n name: item.technicianname,\n avatar: item.profileimage === \"\" ? \"images/avtar.png\" : item.profileimagee\n }\n\n })\n evt1 = response.data.data.map((item, i) => {\n if (item.totalTickets > 0) {\n return {\n id: i * 100 + 1,\n bgColor: \"#A2D2FF\",\n resourceId: item.techncianID,\n title: item.totalTickets + \" tickets \" + \" (\" + item.totalHours + \" Hours)\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n }\n }\n else {\n return {\n id: 0,\n bgColor: \"#ffffff\",\n resourceId: '',\n title: '',\n start: '',\n end: ''\n }\n }\n\n\n })\n evtfinal = response.data.data.map((item, i) => {\n if (item.unavailableTiming !== \"\") {\n\n evt1.push({\n id: i * 200 + 1,\n bgColor: \"#dfdfdf\",\n resourceId: item.techncianID,\n title: \"Block (\" + (item.unavailableTiming) + \")\",\n start: item.date + ' 09:00:00',\n end: item.date + ' 11:00:00'\n })\n }\n\n\n })\n localStorage.setItem(\"evt\", JSON.stringify(evt1))\n localStorage.setItem(\"res\", JSON.stringify(res1))\n window.location.reload();\n\n });\n }\n catch (err) {\n //console.log(err)\n }\n });\n }\n}\n\n\nreturn (\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n
Add New Ticket\n setUnavailable(Isunavailable ? false : true)}>{Isunavailable ? \"Add Ticket\" : \" Mark Unavailable\"}\n
\n
\n\n
\n
\n
\n SearchCustomer(e)} className=\"form-control\" placeholder=\"Select Customer\" />\n \n
\n
\n
\n {\n customerList.length == 0\n ?\n null\n :\n customerList.map(item => (\n
ChooseCustomer(item)}>\n
{item.customername}
\n

{item.contactname}

\n
\n ))\n }\n
\n \n\n
\n\n
\n
\n search_fn(e)} />\n {/* */}\n
\n\n
\n
\n {\n orderTypeList.length == 0\n ?\n null\n :\n orderTypeList.map(item => (\n
selectOrderType_fn(item)} >\n
{item.ordertype}
\n
\n ))\n }\n
\n \n\n
\n\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n
\n setJobName(e.target.value)} />\n {/* */}\n
\n
\n\n {/* Service Address */}\n
\n
\n {/* */}\n \n
\n
\n
\n
\n setSameAsBilling(!sameAsBilling)} />\n  \n
\n
\n\n
\n
\n \n setJobContactName(e.target.value)} />\n
\n
\n
\n
\n setJobContactEmail(e.target.value)} />\n
\n
\n
\n
\n setJobContactPhone(e.target.value.replace(/\\D/, ''))} />\n
\n
\n\n
\n
\n setTicketDate(e.target.value)} />\n
\n
\n
\n
\n setTicketTime(e.target.value)} />\n
\n
\n
\n
\n \n
\n
\n {usertype !== \"Dispatcher\" &&\n <>\n
\n
\n \n
\n
\n\n
\n
\n \n
\n
\n\n
\n
\n setPoNumber(e.target.value)} />\n
\n
\n
\n
\n setWorkOrderNumber(e.target.value)} />\n
\n
\n \n }\n {usertype !== \"Dispatcher\" ?\n
\n UploadDocument(e)} className=\"form-control tic-file\" placeholder=\"PO File\" />\n
\n :\n
\n  \n
\n }\n \n
\n
\n
\n
Add Unavailable Date/Time
\n
\n
\n
\n setTicketDate(e.target.value)} />\n
\n
\n
\n
\n setTicketTime(e.target.value)} />\n
\n
\n
\n
\n setTicketEndTime(e.target.value)} />\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

The record already exists, do you want to proceed?

\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\nfunction FullCalendarWidget2({ slotid }) {\n const [mode, setMode] = useState(\"tabs\");\n const [userid, setUserid] = useState(Number(slotid));\n const [id, setID] = useState(Number(slotid))\n const [color, setColor] = useState(\"#fff\")\n const [title, setTitle] = useState(\"\")\n const [res, setRes] = useState([])\n const [RESOURCES, setResourses] = useState([])\n const [EVENTS, setEvents] = useState([])\n const [selectedTicketId, setSelectedTicketId] = useState(0);\n const [image, setImage] = useState('')\n\n\n useEffect(() => {\n if (id === 0) {\n event(slotid)\n localStorage.setItem(\"calendaruserid\", slotid)\n }\n else {\n event(id)\n localStorage.setItem(\"calendaruserid\", id)\n }\n }, [id, slotid])\n\n useEffect(() => {\n empdata()\n if (userid === 0) {\n event(slotid)\n localStorage.setItem(\"calendaruserid\", slotid)\n }\n else {\n event(userid)\n localStorage.setItem(\"calendaruserid\", userid)\n }\n\n if (RESOURCES.length > 0 && EVENTS.length > 0) {\n var temp = RESOURCES.filter(x => x[0].admin_id === Number(userid === 0 ? slotid : userid))\n console.log(\"xyz\", userid, temp)\n\n setTitle(temp[0][0].title)\n setID(temp[0][0].admin_id)\n setImage(temp[0][0].avatar)\n setRes(temp[0])\n }\n // console.log('res1111 ',res,temp[0])\n }, [userid, slotid])\n\n const empdata = () => {\n const clientid = localStorage.getItem(\"clientid\");\n axios.get(API_Base_Url + \"calendar/summary?clientid=\" + clientid, {\n headers: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': 'application/json'\n }\n })\n .then(response => {\n\n let res1 = response.data.technicians.map(item => {\n return [{\n admin_id: item.technicianID,\n title: item.technicianname,\n mobile: \"555666777\",\n avatar: item.profileimage === \"\" ? \"images/avtar.png\" : item.profileimage\n\n }]\n\n })\n\n setResourses(res1)\n res1.length > 0 && res1.map((item, i) => (\n res1[i].length > 0 && res1[i].map((item1, j) => (\n (item[j].admin_id === (userid === 0 ? slotid : userid)) && setRes([item1])\n )\n ))\n )\n\n });\n\n }\n\n const event = (id) => {\n const clientid = localStorage.getItem(\"clientid\");\n axios.get(API_Base_Url + \"calendar/technician?clientid=\" + clientid + \"&technicianid=\" + id, {\n headers: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': 'application/json'\n }\n })\n .then(response => {\n console.log(\"hfjkd\", response)\n let evt = response.data.data.length > 0 ?\n response.data.data.map((item, i) => {\n\n let tempstart = item.date + \" \" + item.starttime\n let tempend = item.date + \" \" + item.endtime\n if (item.starttime === item.endtime) {\n let a = moment.duration(item.starttime).asMinutes() + moment.duration(\"01:00\").asMinutes()\n var minutes = a % 60;\n var hours = (a - minutes) / 60;\n var end = (hours + \":\" + minutes);\n tempend = item.date + \" \" + end\n }\n else {\n if (item.endtime === \"02:00\") {\n let a = moment.duration(item.endtime).asMinutes() + moment.duration(\"12:00\").asMinutes()\n var minutes = a % 60;\n var hours = (a - minutes) / 60;\n var end = (hours + \":\" + minutes);\n tempend = item.date + \" \" + end\n }\n else {\n tempend = item.date + \" \" + item.endtime\n }\n }\n return {\n event_id: item.ticketid,\n admin_id: response.data.technicianID,\n title: item.status !== \"Unavailable\" ? \"#\" +item.ticketid+\" - \"+item.customerName + \" \" + item.jobtype + \" \" + item.jobdetails : \"Unavailable\",\n start: new Date(tempstart),\n end: new Date(tempend),\n color: item.status !== \"Unavailable\" ? \"#A2D2FF\" : \"#dfdfdf\"\n }\n })\n :\n [{\n event_id: 0,\n admin_id: '',\n title: '',\n start: '',\n end: '',\n color: \"#ffffff\"\n }]\n console.log(\"evttt\", evt, id, res)\n setTitle(response.data.technicianname)\n setImage(response.data.profileimage)\n setEvents(evt)\n\n });\n \n }\n const handleSearch = () => {\n\n }\n\n\n // useEffect(() => {\n // if (RESOURCES.length > 0) {\n // var temp = RESOURCES.filter(x => x[0].admin_id === Number(userid))\n // setTitle(temp[0][0].title)\n // setID(temp[0][0].admin_id)\n // setRes(temp[0])\n // }\n // }, [userid])\n\n\n const setValue = (id, title, img) => {\n setImage(img)\n setTitle(title)\n setID(id)\n setColor(color)\n var temp = RESOURCES.length > 0 && RESOURCES.filter(x => x[0].admin_id === id)\n setRes(temp[0])\n }\n\n return (\n <>\n
\n
\n
\n
\n \n \n
\n
\n
\n {RESOURCES.length > 0 && EVENTS.length > 0 &&\n
\n
\n   {title}  \n
    \n {\n RESOURCES.length > 0\n &&\n RESOURCES.map(item => (\n <>\n
  • setValue(item[0].admin_id, item[0].title, item[0].avatar)}>  {item[0].title}
  • \n \n ))\n }\n
\n
\n
\n
\n }\n events={EVENTS}\n resources={res}\n week={\n { weekDays: [0, 1, 2, 3, 4, 5], weekStartOn: 6, startHour: 0, endHour: 23, step: 60 }\n }\n resourceFields={{\n idField: \"admin_id\",\n colorField: \"color\",\n textField: \"\",\n subTextField: \"\"\n }}\n resourceViewMode=\"tabs\"\n selectedDate={new Date()}\n fields={[\n {\n name: \"admin_id\",\n type: \"select\",\n default: RESOURCES[0].admin_id,\n options: RESOURCES.map((res) => {\n return {\n id: res[0].admin_id,\n text: `${res[0].title}`,\n value: res[0].admin_id //Should match \"name\" property\n };\n }),\n config: { label: \"Assignee\", required: true }\n }\n ]}\n />\n
}\n
\n
\n
\n
\n \n \n );\n}\n\nexport default FullCalendarWidget2;","import { DragDropContext } from \"react-dnd\";\nimport HTML5Backend from \"react-dnd-html5-backend\";\n\nexport default DragDropContext(HTML5Backend);\n","import React, { Component, useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport FullCalendarWidget2 from \"./Fullcalender2\";\nimport axios from 'axios';\nimport Scheduler, {\n SchedulerData,\n ViewTypes,\n DemoData,\n DATE_FORMAT\n} from \"react-big-scheduler\";\nimport withDragDropContext from \"./withDnDContext\";\nimport \"react-big-scheduler/lib/css/style.css\";\nimport moment from \"moment\";\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\nclass FullCalendarWidget extends Component {\n constructor(props) {\n super(props);\n\n //let schedulerData = new SchedulerData(new moment(\"2017-12-18\").format(DATE_FORMAT), ViewTypes.Week);\n let schedulerData = new SchedulerData(\n new moment().format(DATE_FORMAT),\n ViewTypes.Week,\n false,\n false,\n {\n selectedAreaColor: \"#616e7c\",\n nonWorkingTimeHeadBgColor: \"#fff\",\n nonWorkingTimeBodyBgColor: \"#fff\",\n startResizable: false,\n endResizable: false,\n headerEnabled: true,\n resourceName: \"Technician\",\n //nonAgendaDayCellHeaderFormat: \"ddd D |HH:mm\",\n views: []\n\n },\n\n )\n schedulerData.localeMoment.locale(\"en\");\n schedulerData.setResources(JSON.parse(localStorage.getItem(\"res\")));\n schedulerData.setEvents(JSON.parse(localStorage.getItem(\"evt\")));\n this.state = {\n viewModel: schedulerData,\n slot_id: 0\n };\n }\n\n render() {\n const { viewModel } = this.state;\n return (\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 prevClick = schedulerData => {\n schedulerData.prev();\n schedulerData.setEvents(JSON.parse(localStorage.getItem(\"evt\")));\n this.setState({\n viewModel: schedulerData\n });\n };\n\n nextClick = schedulerData => {\n schedulerData.next();\n schedulerData.setEvents(JSON.parse(localStorage.getItem(\"evt\")));\n this.setState({\n viewModel: schedulerData\n });\n };\n\n onViewChange = (schedulerData, view) => {\n schedulerData.setViewType(\n view.viewType,\n view.showAgenda,\n view.isEventPerspective\n );\n schedulerData.setEvents(JSON.parse(localStorage.getItem(\"evt\")));\n this.setState({\n viewModel: schedulerData\n });\n };\n\n onSelectDate = (schedulerData, date) => {\n schedulerData.setDate(date);\n schedulerData.setEvents(JSON.parse(localStorage.getItem(\"evt\")));\n this.setState({\n viewModel: schedulerData\n });\n };\n\n eventClicked = (schedulerData, event) => {\n this.setState({\n slot_id: event.resourceId\n });\n window.$(\"#calendarpopup\").modal('show');\n };\n\n ops1 = (schedulerData, event) => {\n\n };\n\n ops2 = (schedulerData, event) => {\n\n };\n\n newEvent = (schedulerData, slotId, slotName, start, end, type, item) => {\n this.setState({\n slot_id: slotId\n });\n window.$(\"#calendarpopup\").modal('show');\n };\n\n updateEventStart = (schedulerData, event, newStart) => {\n\n };\n\n updateEventEnd = (schedulerData, event, newEnd) => {\n\n };\n\n moveEvent = (schedulerData, event, slotId, slotName, start, end) => {\n\n };\n\n onScrollRight = (schedulerData, schedulerContent, maxScrollLeft) => {\n\n };\n\n onScrollLeft = (schedulerData, schedulerContent, maxScrollLeft) => {\n\n };\n\n onScrollTop = (schedulerData, schedulerContent, maxScrollTop) => {\n console.log(\"onScrollTop\");\n };\n\n onScrollBottom = (schedulerData, schedulerContent, maxScrollTop) => {\n console.log(\"onScrollBottom\");\n };\n\n toggleExpandFunc = (schedulerData, slotId) => {\n schedulerData.toggleExpandStatus(slotId);\n this.setState({\n viewModel: schedulerData\n });\n };\n}\n\nexport default withDragDropContext(FullCalendarWidget);\n","import React, { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport moment from 'moment'\nimport {\n LoadTicketDetails_api,\n LoadNotesDetails_api,\n LoadPhotos_api,\n LoadInvoices_api,\n LoadEstimates_api,\n CreateNotes_api,\n UpdateTicketOrderDetails_api,\n UpdateTicketAssinee_api,\n UpdateTicketStatus_api,\n UpdateTicketPOWorkOrder_api,\n LoadTicketActions_api,\n SendEmail_api, ResendEmail_api\n\n} from '../../functions/tickets'\nimport { FinalizeEstimate_api, DraftEstimate_api, SubmitEstimate_api, ApproveEstimate_api, UpdateEstimate_api } from '../../functions/estimates'\nimport { FinalizeInvoice_api, DraftInvoice_api, SubmitInvoice_api, PaidInvoice_api, UpdateInvoice_api } from '../../functions/invoices'\nimport OrderTypeUpdate from '../../forms/OrderTypeUpdate'\nimport TicketAssigneeUpdate from '../../forms/TicketAssigneeUpdate'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { LoadOrderType_api, LoadTicketStatus_api } from '../../functions/masters'\nimport { Customers_Profile_api } from '../../functions/customers'\nimport { useHistory } from 'react-router-dom'\nimport { useParams } from 'react-router';\nimport { format } from 'date-fns'\nimport DateUpdate from './Invoicedateupdate'\nimport DueDateUpdate from './Invoiceduedateupdate'\nimport Invoicenoupdate from './Invoicenoupdate'\nimport FullCalendarWidget2 from '../../pages/admin/Fullcalender2';\n\nimport DeletePopUp from '../../forms/DeletePopUp';\nimport { DeleteTicket_api } from '../../functions/tickets';\n\n\n\nfunction TicketDetails() {\n //const ticketid = Number(localStorage.getItem(\"ticketid\"));\n const { ticketid } = useParams()\n var userid = Number(localStorage.getItem(\"userid\"));\n const API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n const AccessToken = localStorage.getItem(\"AccessToken\");\n\n const [locationKeys, setLocationKeys] = useState([])\n\n const [customerid, setCustomerid] = useState(0);\n const [customername, setCustomerName] = useState(\"\");\n const [customertype, setCustomertype] = useState(\"\");\n const [address, setaddress] = useState(\"\");\n const [state, setState] = useState(\"\");\n const [city, setCity] = useState(\"\");\n const [location, setLocation] = useState(\"\");\n const [zipcode, setZipCode] = useState(\"\");\n const [latitude, setLatitude] = useState(\"\");\n const [longitude, setLongitude] = useState(\"\");\n const [notesdetails, setNotesdetails] = useState({});\n\n const [ticketDetails, setTicketDetails] = useState({});\n const [isLoaded, setIsLoaded] = useState(false);\n const [photosList, setPhotosList] = useState([]);\n const [EstimatesDetails, setEstimatesDetails] = useState({});\n const [InvoicesDetails, setInvoicesDetails] = useState({});\n const [openSection, setOpenSection] = useState(\"\");\n const [txtnotes, setTxtNotes] = useState(\"\");\n const [test, setTest] = useState(0);\n const [totalMaterialAmt, setTotalMaterialAmt] = useState(0)\n const [totalLoborAmt, setTotalLaborAmt] = useState(0);\n const [activiyid, setActivityId] = useState(0);\n const [isAddNewEstimate, setIsAddNewEstimate] = useState(false);\n const [isAddNewInvoice, setIsAddNewInvoice] = useState(false)\n\n const [technicianList, setTechnicianlist] = useState([]);\n const [technicianId, setTechnicianID] = useState(0);\n const [ticketDate, setTicketDate] = useState(\"\");\n const [ticketTime, setTicketTime] = useState(\"\");\n\n const [orderTypeList, setOrderTypeList] = useState([]);\n const [selectedOrderType, setSelectedOrderType] = useState(0);\n const [orderDetail, setOrderDetail] = useState(\"\");\n const [statusList, setStatusList] = useState([]);\n const [selectedStatusId, setSelectedStatusId] = useState(0);\n\n const [poRequired, setPoRequired] = useState(false);\n const [poDOc, setPoDoc] = useState(\"\");\n const loggeduserid = Number(localStorage.getItem(\"userid\"));\n const userType = localStorage.getItem(\"usertype\");\n const [poNumber_estimate, setPoNumber_estimate] = useState(\"\");\n const [poNumber_invoice, setPoNumber_invoice] = useState(\"\");\n\n const [jobname, setJobName] = useState(\"\")\n const [jobcontactname, setJobContactName] = useState(\"\")\n const [jobcontactemail, setJobContactEmail] = useState(\"\")\n const [jobcontactphone, setJobContactPhone] = useState(\"\")\n\n const [poNumber, setPoNumber] = useState(\"\");\n const [workOrderNumber, setWorkOrderNumber] = useState(\"\");\n const [serviceAddress, setServiceAddress] = useState(\"\");\n const [sameAsBilling, setSameAsBilling] = useState(false);\n const [customerAddress, setCustomerAddress] = useState(\"\");\n\n const history = useHistory()\n const [customer_state, setcustomer_State] = useState(\"\")\n const [customer_city, setcustomer_City] = useState(\"\")\n const [customer_zipcode, setcustomer_ZipCode] = useState(\"\")\n const [customer_latitude, setcustomer_Latitude] = useState(\"\")\n const [customer_longitude, setcustomer_Longitude] = useState(\"\");\n const [actionList, setActionList] = useState([]);\n const [isEstimateEditable, setIsEstimateEditable] = useState(true);\n const [poDocument, setPoDocument] = useState(\"\");\n const [isMailSent, setIsMailSent] = useState(true);\n const [isMailSent_invoice, setIsMailSent_invoice] = useState(true);\n const [invoiceduedate, setInvoiceduedate] = useState(\"\");\n const [invoicedate, setInvoicedate] = useState(\"\");\n const [invoiceno, setInvoiceno] = useState(\"\");\n const [slot_id, setSlotID] = useState(0)\n\n useEffect(() => {\n if (ticketid != 0 && ticketid != undefined) {\n setTicketDetails({})\n setEstimatesDetails({})\n setInvoicesDetails({})\n setOpenSection(\"\")\n refresh();\n loadTechnicians();\n loadOrderType();\n loadStatus();\n loadActions(ticketid);\n setIsMailSent(false);\n setIsMailSent_invoice(false)\n }\n\n window.$(\"#addnotesdiv\").hide();\n }, [ticketid]);\n\n const refresh = () => {\n loadTicketDetails();\n loadActions(ticketid);\n\n }\n useEffect(() => {\n if (sameAsBilling) {\n setServiceAddress(customerAddress)\n setCity(customer_city)\n setState(customer_state)\n setLatitude(customer_latitude)\n setLongitude(customer_longitude)\n setZipCode(customer_zipcode)\n }\n else\n setServiceAddress(\"\");\n }, [sameAsBilling])\n\n useEffect(() => {\n if (Object.keys(EstimatesDetails).length > 0)\n sumEstimateAmt();\n }, [EstimatesDetails])\n\n useEffect(() => {\n if (Object.keys(InvoicesDetails).length > 0)\n sum_invoice();\n }, [InvoicesDetails])\n\n function getTwentyFourHourTime(amPmString) {\n // var d = new Date(\"1/1/2013 \" + amPmString);\n // return d.getHours() + ':' + d.getMinutes();\n\n var convertedTime = moment(amPmString, 'hh:mm A').format('HH:mm')\n return convertedTime;\n }\n\n const sumEstimateAmt = () => {\n //alert(JSON.stringify(EstimatesDetails))\n var totalmaterialamt = 0;\n var totallaboramt = 0;\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").length; i++) {\n if (!(isNaN(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount) || EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount === null || EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount === 0)) {\n totallaboramt = Number(totallaboramt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount);\n }\n }\n\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").length; i++) {\n if (!(isNaN(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount) || EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount === null || EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount === 0)) {\n totalmaterialamt = Number(totalmaterialamt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount);\n }\n }\n\n EstimatesDetails.amountLabour = parseFloat(totallaboramt).toFixed(2);\n EstimatesDetails.amountMaterial = parseFloat(totalmaterialamt).toFixed(2);\n sumPayable()\n }\n\n const sum_invoice = () => {\n\n var totalmaterialamt = 0;\n var totallaboramt = 0;\n for (var i = 0; i < InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").length; i++) {\n if (!(isNaN(InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount) || InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount === null || InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount === 0)) {\n totallaboramt = Number(totallaboramt) + Number(InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\")[i].amount);\n //alert(totallaboramt)\n }\n }\n\n for (var i = 0; i < InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").length; i++) {\n if (!(isNaN(InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount) || InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount === null || InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount === 0)) {\n totalmaterialamt = Number(totalmaterialamt) + Number(InvoicesDetails.invoicedata.filter(x => x.type == \"Material\")[i].amount);\n }\n }\n\n InvoicesDetails.amountLabour = parseFloat(totallaboramt).toFixed(2);\n InvoicesDetails.amountMaterial = parseFloat(totalmaterialamt).toFixed(2);\n sumPayable_invoice()\n\n }\n\n //estimate sum\n const sumPayable = () => {\n var amtMaterial = 0;\n var amtLabour = 0;\n var amtTaxMaterial = 0;\n var amtTaxLabour = 0;\n var amtDiscount = 0;\n var amtNetPayable = 0;\n\n if (!(isNaN(EstimatesDetails.amountMaterial) || EstimatesDetails.amountMaterial === null)) {\n amtMaterial = Number(EstimatesDetails.amountMaterial);\n if (!(isNaN(EstimatesDetails.amountTaxMaterialRate) || EstimatesDetails.amountTaxMaterialRate === null)) {\n amtTaxMaterial = EstimatesDetails.amountTaxMaterial = parseFloat(((Number(EstimatesDetails.amountMaterial) * Number(EstimatesDetails.amountTaxMaterialRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(EstimatesDetails.amountLabour) || EstimatesDetails.amountLabour === null)) {\n amtLabour = Number(EstimatesDetails.amountLabour);\n if (!(isNaN(EstimatesDetails.amountTaxLabourRate) || EstimatesDetails.amountTaxLabourRate === null)) {\n amtTaxLabour = EstimatesDetails.amountTaxLabour = parseFloat(((Number(EstimatesDetails.amountLabour) * Number(EstimatesDetails.amountTaxLabourRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(EstimatesDetails.amountDiscount) || EstimatesDetails.amountDiscount === null)) {\n if (!(isNaN(EstimatesDetails.discountpercentage) || EstimatesDetails.discountpercentage === null)) {\n amtDiscount = EstimatesDetails.amountDiscount = parseFloat((Number(amtMaterial) + Number(amtLabour)) * Number(EstimatesDetails.discountpercentage) / 100).toFixed(2);\n }\n }\n EstimatesDetails.amountPayable = parseFloat((Number(amtMaterial) + Number(amtLabour) + Number(amtTaxMaterial) + Number(amtTaxLabour)) - Number(amtDiscount)).toFixed(2);\n setTest(test + 1)\n }\n\n const sumPayable_invoice = () => {\n var amtMaterial = 0;\n var amtLabour = 0;\n var amtTaxMaterial = 0;\n var amtTaxLabour = 0;\n var amtDiscount = 0;\n var amtNetPayable = 0;\n\n if (!(isNaN(InvoicesDetails.amountMaterial) || InvoicesDetails.amountMaterial === null)) {\n amtMaterial = Number(InvoicesDetails.amountMaterial);\n if (!(isNaN(InvoicesDetails.amountTaxMaterialRate) || InvoicesDetails.amountTaxMaterialRate === null)) {\n amtTaxMaterial = InvoicesDetails.amountTaxMaterial = parseFloat(((Number(InvoicesDetails.amountMaterial) * Number(InvoicesDetails.amountTaxMaterialRate)) / 100)).toFixed(2);\n }\n }\n\n if (!(isNaN(InvoicesDetails.amountLabour) || InvoicesDetails.amountLabour === null)) {\n amtLabour = Number(InvoicesDetails.amountLabour);\n if (!(isNaN(InvoicesDetails.amountTaxLabourRate) || InvoicesDetails.amountTaxLabourRate === null)) {\n amtTaxLabour = InvoicesDetails.amountTaxLabour = parseFloat(((Number(InvoicesDetails.amountLabour) * Number(InvoicesDetails.amountTaxLabourRate)) / 100)).toFixed(2);\n }\n }\n if (!(isNaN(InvoicesDetails.amountDiscount) || InvoicesDetails.amountDiscount === null)) {\n if (!(isNaN(InvoicesDetails.discountpercentage) || InvoicesDetails.discountpercentage === null)) {\n amtDiscount = InvoicesDetails.amountDiscount = parseFloat((Number(amtMaterial) + Number(amtLabour)) * Number(InvoicesDetails.discountpercentage) / 100).toFixed(2);\n }\n }\n InvoicesDetails.amountPayable = parseFloat((Number(amtMaterial) + Number(amtLabour) + Number(amtTaxMaterial) + Number(amtTaxLabour)) - Number(amtDiscount)).toFixed(2);\n setTest(test + 1)\n }\n\n const loadActions = (ticketid) => {\n LoadTicketActions_api(userid, ticketid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.actionlist == null) {\n setActionList([])\n }\n else\n setActionList(result.actionlist.filter(x => x.allowed == true));\n }\n\n }).catch();\n }\n\n const loadOrderType = () => {\n LoadOrderType_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setOrderTypeList([])\n }\n else\n setOrderTypeList(result.data);\n }\n\n }).catch();\n }\n\n const loadStatus = () => {\n LoadTicketStatus_api(\"web\").then(res => {\n const result = res;\n if (result !== undefined) {\n if (result.data === null) {\n\n setStatusList([])\n }\n else {\n setStatusList(result.data);\n }\n }\n\n }).catch();\n }\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n\n const loadTicketDetails = () => {\n setIsLoaded(false);\n LoadTicketDetails_api(ticketid, userid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else {\n setTicketDetails(result);\n loadCustomerProfile(result.customerid)\n setPoNumber(result.ponumber)\n setWorkOrderNumber(result.workordernumber)\n // setServiceAddress()\n\n }\n\n }\n setIsLoaded(true);\n }).catch();\n }\n\n\n //for drafting\n const loadTicketDetailsAfterDraft = (screen) => {\n // setIsLoaded(false);\n LoadTicketDetails_api(ticketid, userid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setTicketDetails([])\n }\n else {\n setTicketDetails(result);\n loadCustomerProfile(result.customerid)\n setPoNumber(result.ponumber)\n setWorkOrderNumber(result.workordernumber)\n if (screen == \"estimate\")\n loadEstimate(result.activities[0].activityid);\n if (screen == \"invoice\")\n loadInvoice(result.activities[0].activityid);\n // setServiceAddress()\n\n }\n\n }\n // setIsLoaded(true);\n }).catch();\n }\n\n const loadCustomerProfile = (customerid) => {\n Customers_Profile_api(customerid).then(res => {\n\n const result = res;\n if (result != undefined) {\n if (result == null) {\n }\n else {\n console.log(result)\n setCustomerAddress(result.address)\n setcustomer_State(result.state)\n setcustomer_City(result.city)\n setcustomer_Latitude(result.latitude)\n setcustomer_Longitude(result.longitude)\n setcustomer_ZipCode(result.zipcode)\n\n }\n }\n }).catch();\n }\n\n const loadNotesDetails = (activityid) => {\n setOpenSection(\"Notes\")\n LoadNotesDetails_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setNotesdetails({})\n }\n else\n setNotesdetails(result);\n }\n\n }).catch();\n }\n\n const loadPhotos = (activityid) => {\n setOpenSection(\"Photos\")\n LoadPhotos_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.photos == null) {\n setPhotosList([]);\n }\n else\n setPhotosList(result.photos);\n }\n\n }).catch();\n }\n\n const loadBoth = (activityid) => {\n loadEstimate(activityid);\n // sumEstimateAmt();\n }\n\n const loadEstimate = (activityid) => {\n\n setOpenSection(\"Estimates\")\n setIsAddNewEstimate(false)\n if (activityid != 0 && activityid != undefined) {\n setActivityId(activityid)\n LoadEstimates_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n if (result == null) {\n setEstimatesDetails({});\n }\n else {\n setEstimatesDetails(result);\n setPoNumber_estimate(result.ponumber)\n\n\n\n }\n //console.log(result)\n }\n\n }).catch();\n }\n }\n\n const loadInvoice = (activityid) => {\n setOpenSection(\"Invoices\")\n setIsAddNewInvoice(false)\n if (activityid != 0 && activityid != undefined) {\n setActivityId(activityid)\n LoadInvoices_api(ticketid, userid, activityid).then(res => {\n const result = res;\n if (result != undefined) {\n\n if (result == null) {\n setInvoicesDetails({});\n }\n else {\n setInvoicesDetails(result);\n setPoNumber_invoice(result.ponumber)\n }\n }\n\n }).catch();\n }\n }\n\n const submitNotes = (e) => {\n e.preventDefault();\n if (txtnotes.trim() == \"\")\n return toast.error(\"Please enter notes.\")\n var req = {\n \"ticketid\": ticketid,\n \"notes\": txtnotes,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude \": \"\",\n \"signature\": \"\"\n\n }\n CreateNotes_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#addnotesdiv\").hide();\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n const openNotesAdd = () => {\n window.$(\"#addnotesdiv\").show();\n setOpenSection(\"\");\n setTxtNotes(\"\");\n }\n\n const handleChange_Material = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].amount = event.target.value.replace(/\\D/, ''); // Update it with the modified email. \n var totalmaterialamt_aa = 0;\n\n if (item.type == \"Material\") {\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").length; i++) {\n\n totalmaterialamt_aa = totalmaterialamt_aa + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Material\")[i].amount);\n //setTotalMaterialAmt(totalmaterialamt) \n EstimatesDetails.amountMaterial = totalmaterialamt_aa;\n\n }\n }\n sumPayable()\n setTest(test + 1)\n }\n const handleChange_Labor = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].amount = event.target.value.replace(/\\D/, ''); // Update it with the modified email.\n\n\n var totallaboramt = 0;\n\n if (item.type == \"Labor\") {\n for (var i = 0; i < EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").length; i++) {\n totallaboramt = Number(totallaboramt) + Number(EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\")[i].amount);\n\n // setTotalLaborAmt(totallaboramt)\n EstimatesDetails.amountLabour = totallaboramt;\n }\n }\n setTest(test + 1)\n sumPayable()\n setTest(test + 1)\n }\n\n\n\n const handleChange_TextValue_item = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].item = event.target.value;\n setTest(test + 1)\n }\n\n const handleChange_TextValue_item_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n InvoicesDetails.invoicedata[index].item = event.target.value;\n setTest(test + 1)\n }\n\n const handleChange_disc = (event) => {\n EstimatesDetails.amountDiscount = event.target.value.replace(/\\D/, '');\n sumPayable();\n setTest(test + 1)\n }\n\n\n const handleChange_tax_material = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.amountTaxMaterialRate = amount;\n }\n EstimatesDetails.amountTaxMaterial = ((EstimatesDetails.amountMaterial * event.target.value) / 100)\n sumPayable();\n setTest(test + 1)\n }\n\n const handleChange_tax_labor = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.amountTaxLabourRate = amount;\n }\n EstimatesDetails.amountTaxLabour = ((EstimatesDetails.amountLabour * event.target.value) / 100);\n sumPayable();\n setTest(test + 1)\n }\n\n const handleChange_tax_material_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.amountTaxMaterialRate = amount;\n }\n InvoicesDetails.amountTaxMaterial = ((InvoicesDetails.amountMaterial * event.target.value) / 100)\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n const handleChange_tax_labor_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.amountTaxLabourRate = amount;\n }\n InvoicesDetails.amountTaxLabour = ((InvoicesDetails.amountLabour * event.target.value) / 100);\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n\n const calculateAmount = (_item) => {\n var _qty = 0;\n var _unitprice = 0;\n var _total = 0;\n\n try {\n _qty = _item.qtyno;//replace(/\\D/g, '');\n } catch (error) {\n\n }\n try {\n _unitprice = _item.unitprice;//.replace(/\\D/g, '');\n } catch (error) {\n\n }\n\n if (!(isNaN(_qty) || _qty === null || _qty === 0)) {\n if (!(isNaN(_unitprice) || _unitprice === null || _unitprice === 0)) {\n _total = _qty * _unitprice;\n }\n }\n return _total;\n }\n\n const finalizeEstimate = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"id\": EstimatesDetails.estimatedata[i].id,\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": Number(EstimatesDetails.amountMaterial),\n \"amountLabour\": Number(EstimatesDetails.amountLabour),\n \"amountTotal\": Number(EstimatesDetails.amountMaterial) + Number(EstimatesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(EstimatesDetails.amountDiscount)) ? Number(EstimatesDetails.amountDiscount) : 0,\n \"amountTax\": EstimatesDetails.amountTax == null ? 0 : Number(EstimatesDetails.amountTax),\n \"discountPercentage\": EstimatesDetails.discountpercentage == null ? 0 : Number(EstimatesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(EstimatesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(EstimatesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(EstimatesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(EstimatesDetails.amountTaxLabour),\n \"amountPayable\": Number(EstimatesDetails.amountPayable),\n \"ponumber\": poNumber_estimate,\n \"notes\": EstimatesDetails.notes,\n \"updatedby\": userid\n\n }\n FinalizeEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadEstimate(activiyid);\n loadActions(ticketid)\n }\n })\n .catch();\n }\n\n const draftEstimate = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": 0,\n \"amountLabour\": 0,\n \"amountTotal\": 0,\n \"amountDiscount\": 0,\n \"amountTax\": 0,\n \"amountTaxMaterialRate\": 0,\n \"amountTaxMaterial\": 0,\n \"amountTaxLabourRate\": 0,\n \"amountTaxLabour\": 0,\n \"amountPayable\": 0,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude\": \"\",\n \"signature\": \"\",\n \"notes\": EstimatesDetails.notes,\n\n }\n DraftEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetailsAfterDraft(\"estimate\");\n // loadEstimate(activiyid);\n loadActions(ticketid)\n }\n })\n .catch();\n }\n\n const updateEstimate = (e) => {\n // return alert(EstimatesDetails.discountpercentage)\n e.preventDefault();\n if (EstimatesDetails.estimatedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var estimatedata = [];\n for (var i = 0; i < EstimatesDetails.estimatedata.length; i++) {\n estimatedata.push({\n \"id\": EstimatesDetails.estimatedata[i].id,\n \"type\": EstimatesDetails.estimatedata[i].type,\n \"item\": EstimatesDetails.estimatedata[i].item,\n \"qty\": String(EstimatesDetails.estimatedata[i].qty),\n \"unitprice\": Number(EstimatesDetails.estimatedata[i].unitprice),\n \"amount\": Number(EstimatesDetails.estimatedata[i].amount)\n })\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"estimatedata\": estimatedata,\n \"amountMaterials\": Number(EstimatesDetails.amountMaterial),\n \"amountLabour\": Number(EstimatesDetails.amountLabour),\n \"amountTotal\": Number(EstimatesDetails.amountMaterial) + Number(EstimatesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(EstimatesDetails.amountDiscount)) ? Number(EstimatesDetails.amountDiscount) : 0,\n \"amountTax\": Number(EstimatesDetails.amountTax),\n \"discountPercentage\": EstimatesDetails.discountpercentage == null ? 0 : Number(EstimatesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(EstimatesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(EstimatesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(EstimatesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(EstimatesDetails.amountTaxLabour),\n \"amountPayable\": Number(EstimatesDetails.amountPayable),\n \"ponumber\": poNumber_estimate,\n \"updatedfrom\": \"web\",\n \"notes\": EstimatesDetails.notes,\n \"updatedby\": userid\n\n }\n UpdateEstimate_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadEstimate(activiyid);\n loadActions(ticketid)\n }\n })\n .catch();\n }\n\n const addMoreMaterialRow = (e) => {\n e.preventDefault();\n\n if (EstimatesDetails.estimatedata != undefined && EstimatesDetails.estimatedata != null) {\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount = EstimatesDetails.estimatedata.filter(x => x.type === \"Material\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n }\n if (EstimatesDetails.estimatedata == null) {\n EstimatesDetails.estimatedata = [];\n }\n EstimatesDetails.estimatedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Material\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addMoreLaborRow = (e) => {\n e.preventDefault();\n if (EstimatesDetails.estimatedata != undefined && EstimatesDetails.estimatedata != null) {\n var countRecords = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount = EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\")[EstimatesDetails.estimatedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n }\n if (EstimatesDetails.estimatedata == null) {\n EstimatesDetails.estimatedata = [];\n }\n\n EstimatesDetails.estimatedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Labor\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n\n const finalizeInvoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n // if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"id\": InvoicesDetails.invoicedata[i].id,\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n //}\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": Number(InvoicesDetails.amountMaterial),\n \"amountLabour\": Number(InvoicesDetails.amountLabour),\n \"amountTotal\": Number(InvoicesDetails.amountMaterial) + Number(InvoicesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(InvoicesDetails.amountDiscount)) ? Number(InvoicesDetails.amountDiscount) : 0,\n \"amountTax\": Number(InvoicesDetails.amountTax),\n \"discountPercentage\": InvoicesDetails.discountpercentage == null ? 0 : Number(InvoicesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(InvoicesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(InvoicesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(InvoicesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(InvoicesDetails.amountTaxLabour),\n \"amountPayable\": Number(InvoicesDetails.amountPayable),\n \"ponumber\": poNumber_invoice,\n \"notes\": InvoicesDetails.notes,\n \"updatedby\": userid\n\n }\n\n FinalizeInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadInvoice(activiyid);\n }\n })\n .catch();\n }\n\n const draftInvoice = (e) => {\n e.preventDefault();\n\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n //if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n //}\n }\n var req = {\n \"ticketid\": ticketid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": 0,\n \"amountLabour\": 0,\n \"amountTotal\": 0,\n \"amountDiscount\": 0,\n \"amountTax\": 0,\n \"amountTaxMaterialRate\": 0,\n \"amountTaxMaterial\": 0,\n \"amountTaxLabourRate\": 0,\n \"amountTaxLabour\": 0,\n \"amountPayable\": 0,\n \"customername\": \"\",\n \"comment\": \"\",\n \"addedby\": userid,\n \"latitude\": \"\",\n \"longitude\": \"\",\n \"signature\": \"\",\n \"notes\": InvoicesDetails.notes,\n\n }\n DraftInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetailsAfterDraft(\"invoice\");\n loadActions(ticketid);\n\n }\n })\n .catch();\n }\n\n const updateInvoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata.length == 0)\n return toast.error('Please add atleast one row for material or labor');\n\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount_material = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle_material == \"\" || lastIndexTitle_material == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty_material == \"\" || lastIndexQty_material == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice_material == \"\" || lastIndexUnitPrice_material == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount_material == \"\" || lastIndexAmount_material == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n\n countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount_labor = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle_labor == \"\" || lastIndexTitle_labor == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty_labor == \"\" || lastIndexQty_labor == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice_labor == \"\" || lastIndexUnitPrice_labor == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount_labor == \"\" || lastIndexAmount_labor == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n var invoicedata = [];\n for (var i = 0; i < InvoicesDetails.invoicedata.length; i++) {\n // if (InvoicesDetails.invoicedata[i].type != null && InvoicesDetails.invoicedata[i].type != \"\" && InvoicesDetails.invoicedata[i].type != \"null\") {\n invoicedata.push({\n \"id\": InvoicesDetails.invoicedata[i].id,\n \"type\": InvoicesDetails.invoicedata[i].type,\n \"item\": InvoicesDetails.invoicedata[i].item,\n \"qty\": String(InvoicesDetails.invoicedata[i].qty),\n \"unitprice\": Number(InvoicesDetails.invoicedata[i].unitprice),\n \"amount\": Number(InvoicesDetails.invoicedata[i].amount)\n })\n //}\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"invoicedata\": invoicedata,\n \"amountMaterials\": Number(InvoicesDetails.amountMaterial),\n \"amountLabour\": Number(InvoicesDetails.amountLabour),\n \"amountTotal\": Number(InvoicesDetails.amountMaterial) + Number(InvoicesDetails.amountLabour),\n \"amountDiscount\": !isNaN(Number(InvoicesDetails.amountDiscount)) ? Number(InvoicesDetails.amountDiscount) : 0,\n \"amountTax\": Number(InvoicesDetails.amountTax),\n \"discountPercentage\": InvoicesDetails.discountpercentage == null ? 0 : Number(InvoicesDetails.discountpercentage),\n \"amountTaxMaterialRate\": Number(InvoicesDetails.amountTaxMaterialRate),\n \"amountTaxMaterial\": Number(InvoicesDetails.amountTaxMaterial),\n \"amountTaxLabourRate\": Number(InvoicesDetails.amountTaxLabourRate),\n \"amountTaxLabour\": Number(InvoicesDetails.amountTaxLabour),\n \"amountPayable\": Number(InvoicesDetails.amountPayable),\n \"ponumber\": poNumber_invoice,\n \"updatedfrom\": \"web\",\n \"notes\": InvoicesDetails.notes,\n \"updatedby\": userid\n\n }\n\n UpdateInvoice_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n loadInvoice(activiyid);\n }\n })\n .catch();\n }\n\n const addMoreMaterialRow_invoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata != undefined && InvoicesDetails.invoicedata != null) {\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].item;\n var lastIndexQty = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].qty;\n var lastIndexUnitPrice = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].unitprice;\n var lastIndexAmount = InvoicesDetails.invoicedata.filter(x => x.type === \"Material\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Material\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Material Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Material Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Material Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Material Amount.\");\n }\n }\n }\n if (InvoicesDetails.invoicedata == null) {\n InvoicesDetails.invoicedata = [];\n }\n InvoicesDetails.invoicedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Material\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addMoreLaborRow_invoice = (e) => {\n e.preventDefault();\n if (InvoicesDetails.invoicedata != undefined && InvoicesDetails.invoicedata != null) {\n var countRecords = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length;\n if (!(isNaN(countRecords) || countRecords === null || countRecords === 0)) {\n var lastIndexTitle = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].item;\n var lastIndexQty = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].qty;\n var lastIndexUnitPrice = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].unitprice;\n var lastIndexAmount = InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\")[InvoicesDetails.invoicedata.filter(x => x.type === \"Labor\").length - 1].amount;\n if (lastIndexTitle == \"\" || lastIndexTitle == null) {\n return toast.error(\"Please Enter Labor Title.\");\n }\n else if (lastIndexQty == \"\" || lastIndexQty == 0) {\n return toast.error(\"Please Enter Labor Qty.\");\n }\n else if (lastIndexUnitPrice == \"\" || lastIndexUnitPrice == 0) {\n return toast.error(\"Please Enter Labor Unit Price.\");\n }\n else if (lastIndexAmount == \"\" || lastIndexAmount == 0) {\n return toast.error(\"Please Enter Labor Amount.\");\n }\n }\n }\n if (InvoicesDetails.invoicedata == null) {\n InvoicesDetails.invoicedata = [];\n }\n InvoicesDetails.invoicedata.push({\n \"id\": 0,\n \"item\": \"\",\n \"type\": \"Labor\",\n \"qty\": 0,\n \"unitprice\": 0,\n \"amount\": 0\n })\n setTest(test + 1)\n }\n\n const addNewEstimate = () => {\n setIsAddNewEstimate(true);\n setIsAddNewInvoice(false);\n setOpenSection(\"Estimates_draft\")\n window.$(\"#addnotesdiv\").hide();\n\n setEstimatesDetails({ amountDiscount: 0, amountTaxLabour: 0, amountLabour: 0, amountMaterial: 0, amountPayable: 0, amountTaxMaterial: 0, amountTaxMaterialRate: 0, amountTaxLabour: 0, amountTaxLabourRate: 0, amountTax: 0, estimatedata: [{ \"type\": \"Material\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }, { \"type\": \"Labor\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }] });\n setTest(test + 1)\n }\n\n const addNewInvoice = () => {\n setIsAddNewEstimate(false);\n setIsAddNewInvoice(true);\n setOpenSection(\"Invoices_draft\")\n window.$(\"#addnotesdiv\").hide();\n setInvoicesDetails({ amountDiscount: 0, amountTax: 0, amountLabour: 0, amountMaterial: 0, amountPayable: 0, amountTaxMaterial: 0, amountTaxMaterialRate: 0, amountTaxLabour: 0, amountTaxLabourRate: 0, amountTax: 0, invoicedata: [{ \"type\": \"Material\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }, { \"type\": \"Labor\", \"item\": \"\", \"qty\": 0, \"unitprice\": 0, \"amount\": 0 }] });\n // InvoicesDetails.invoicedata.push({\"item\" : \"\", \"qty\" : \"\" , \"amount\" : 0})\n setTest(test + 1)\n }\n\n const OpenOrderTypeEdit = () => {\n setSelectedOrderType(ticketDetails.ordertypeid);\n setOrderDetail(ticketDetails.orderdetail)\n setServiceAddress(ticketDetails.address)\n setJobName(ticketDetails.jobname)\n setJobContactName(ticketDetails.jobcontactname)\n setJobContactEmail(ticketDetails.jobcontactemail)\n setJobContactPhone(ticketDetails.jobcontactphone)\n console.log(ticketDetails)\n //setPoDoc(ticketDetails.pofilepath)\n //setPoRequired(ticketDetails.poavailable) \n window.$(\"#OrderType\").modal('show');\n }\n\n const OpenPOWorkOrderEdit = () => {\n //console.log(\"ticket\" , ticketDetails)\n setWorkOrderNumber(ticketDetails.workordernumber)\n setPoNumber(ticketDetails.ponumber)\n setPoDoc(ticketDetails.pofilepath)\n setPoRequired(ticketDetails.poavailable)\n window.$(\"#POWorkOrder\").modal('show');\n }\n\n\n const showAssigneeUpdate = () => {\n setTechnicianID(ticketDetails.assignedtoUserID);\n setTicketDate(moment(ticketDetails.scheduleddate).format(\"yyyy-MM-DD\"))\n setTicketTime(getTwentyFourHourTime(ticketDetails.scheduledtime))\n\n window.$(\"#AssigneeUpdate\").modal('show');\n }\n\n const showStatusUpdate = () => {\n setSelectedStatusId(ticketDetails.currentstatusid);\n window.$(\"#StatusPop\").modal('show');\n }\n\n const UpdateAssignee = (e) => {\n e.preventDefault();\n if (technicianId == 0 || technicianId == null)\n return toast.error(\"Please choose technician\");\n else if (ticketDate == \"\" || ticketDate == null)\n return toast.error(\"Please enter date.\");\n else if (ticketTime == \"\" || ticketTime == null)\n return toast.error(\"Please enter time.\");\n else {\n var req = {\n \"ticketid\": ticketid,\n \"scheduledate\": ticketDate,\n \"technicianid\": Number(technicianId),\n \"scheduletime\": ticketTime,\n \"updatedby\": loggeduserid\n }\n UpdateTicketAssinee_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#AssigneeUpdate\").modal('hide');\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n\n\n const UpdateOrderType = (e) => {\n e.preventDefault();\n if (selectedOrderType == \"\" || selectedOrderType == null)\n return toast.error(\"Please choose order type.\");\n else if (orderDetail == \"\" || orderDetail == null)\n return toast.error(\"Please enter order details.\");\n else {\n var req = {\n \"ticketid\": Number(ticketid),\n //\"customername\": ticketTitle,\n \"ordertypeid\": Number(selectedOrderType),\n \"orderdetails\": orderDetail,\n \"address\": serviceAddress,\n \"state\": state,\n \"city\": city,\n \"zipcode\": zipcode,\n \"latitude\": String(latitude),\n \"longitude\": String(longitude),\n \"jobname\": jobname,\n \"jobcontactname\": jobcontactname,\n \"jobcontactemail\": jobcontactemail,\n \"jobcontactphone\": jobcontactphone,\n \"updatedby\": loggeduserid\n }\n console.log(\"req\", req)\n UpdateTicketOrderDetails_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#OrderType\").modal('hide');\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n const UpdatePOWorkOrder = (e) => {\n e.preventDefault();\n\n if (poNumber == \"\" || poNumber == null)\n return toast.error(\"Please enter po number.\");\n else if (workOrderNumber == \"\" || workOrderNumber == null)\n return toast.error(\"Please enter work order number.\");\n else {\n var req = {\n \"ticketid\": ticketid,\n \"pofilepath\": poDocument,\n \"ponumber\": poNumber,\n \"workordernumber\": workOrderNumber,\n \"updatedby\": loggeduserid\n }\n UpdateTicketPOWorkOrder_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#POWorkOrder\").modal('hide');\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n const UpdateStatus = (e) => {\n e.preventDefault();\n if (selectedStatusId == 0 || selectedStatusId == null)\n return toast.error(\"Please choose status.\");\n\n else {\n var req = {\n \"ticketid\": ticketid,\n \"statusID\": Number(selectedStatusId),\n \"updatedby\": loggeduserid\n }\n UpdateTicketStatus_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#StatusPop\").modal('hide');\n loadTicketDetails();\n }\n })\n .catch();\n }\n\n }\n\n\n\n const UploadDocument = async (e) => {\n\n try {\n\n let multifile = [];\n const selectedFile = e.target.files;\n //for (let i = 0; i < selectedFile.length; i++) {\n const formData = new FormData();\n var today = new Date();\n var doctype = \"\";\n const ext = selectedFile[0].name.split('.').pop();\n const datevalue = today.getDate() + today.getMonth() + today.getFullYear() + today.getHours() + today.getMinutes() + today.getSeconds();\n const filename = \"file_\" + datevalue + \".\" + ext;\n if (ext == \"png\" || ext == \"jpeg\" || ext == \"svg\" || ext == \"wpeg\" || ext == \"PNG\" || ext == \"JPEG\" || ext == \"JPG\" || ext == \"jpg\" || ext == \"SVG\" || ext == \"WPEG\") {\n doctype = \"Image\";\n }\n else if (ext == \"pdf\" || ext == \"PDF\") {\n doctype = \"PDF\";\n }\n else if (ext == \"docx\" || ext == \"DOCX\" || ext == \"doc\" || ext == \"DOC\" || ext == \"txt\" || ext == \"TXT\") {\n doctype = \"Document\";\n }\n else if (ext == \"pptx\" || ext == \"PPTX\" || ext == \"ppt\" || ext == \"PPT\") {\n doctype = \"Presentation\";\n }\n else if (ext == \"xlsx\" || ext == \"XLSX\" || ext == \"xls\" || ext == \"XLS\") {\n doctype = \"Workbook\";\n }\n else {\n return toast.error('Please Select Valid file');\n }\n // Update the formData object \n formData.append(\"uploadedby\", loggeduserid);\n formData.append(\"file\", selectedFile[0], filename);\n const Request = {\n method: 'POST',\n headers: {\n 'Authorization': 'Bearer ' + AccessToken\n },\n body: formData\n }\n const response = await fetch(API_Base_Url + \"upload\", Request)\n const result = await response.json();\n if (response.ok) {\n // multifile = multifile.concat(result)\n setPoDoc(result.filepath)\n setTest(test + 1)\n setPoDocument(result.filepath)\n //$(\"#file-picker1\").hide();\n }\n else if (response.status === 400) {\n if (result.errors == undefined) { }\n else {\n toast.error(result.errors)\n }\n }\n else if (response.status === 401) {\n toast.error('Your Session has been expired, Please login again.');\n window.setTimeout(function () {\n localStorage.clear();\n window.location.href = \"/#/login\";\n }, 2000);\n }\n else {\n //setisLoaded(true)\n }\n //}\n } catch (error) {\n toast.error('Something went wrong , Please try again later.')\n }\n\n\n }\n\n\n\n const handleChange_TextValue_qty_material_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].qty = event.target.value;\n // var num = event.target.value.replace(/[^0-9\\.]+/g,\"\");\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/))\n EstimatesDetails.estimatedata[index].qtyno = num;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_labor_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n EstimatesDetails.estimatedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n //EstimatesDetails.estimatedata[index].amount = EstimatesDetails.estimatedata[index].unitprice * EstimatesDetails.estimatedata[index].qtyno;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n const handleChange_TextValue_UnitPrice_material_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n\n EstimatesDetails.estimatedata[index].unitprice = event.target.value;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_UnitPrice_labor_estimate = (item, event) => {\n var index = EstimatesDetails.estimatedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n EstimatesDetails.estimatedata[index].qtyno = num;\n\n EstimatesDetails.estimatedata[index].unitprice = event.target.value;\n EstimatesDetails.estimatedata[index].amount = calculateAmount(item);\n sumPayable()\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n\n\n const handleChange_TextValue_qty_material_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n InvoicesDetails.invoicedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_qty_labor_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n InvoicesDetails.invoicedata[index].qty = event.target.value;\n var num = parseFloat(event.target.value.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n const handleChange_TextValue_UnitPrice_material_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n\n InvoicesDetails.invoicedata[index].unitprice = event.target.value;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n\n const handleChange_TextValue_UnitPrice_labor_invoice = (item, event) => {\n var index = InvoicesDetails.invoicedata.indexOf(item);\n\n var num = parseFloat(item.qty.match(/[\\d\\.]+/));\n InvoicesDetails.invoicedata[index].qtyno = num;\n\n InvoicesDetails.invoicedata[index].unitprice = event.target.value;\n InvoicesDetails.invoicedata[index].amount = calculateAmount(item);\n sumPayable_invoice()\n sum_invoice()\n setTest(test + 1)\n }\n\n function initMap_ticket() {\n var input = document.getElementById('searchMapInputTicket');\n setServiceAddress(input.value)\n var autocomplete = new window.google.maps.places.Autocomplete(input);\n\n autocomplete.addListener('place_changed', function () {\n var place = autocomplete.getPlace();\n let div = document.createElement('div');\n div.innerHTML = place.adr_address;\n let cityname = div.getElementsByClassName('locality')[0] != undefined ? div.getElementsByClassName('locality')[0].innerHTML : \"\";\n let statename = div.getElementsByClassName('region')[0] != undefined ? div.getElementsByClassName('region')[0].innerHTML : \"\";\n let lat = place.geometry.location.lat();\n let long = place.geometry.location.lng();\n setCity(cityname)\n setState(statename)\n setLatitude(lat)\n setLongitude(long)\n setServiceAddress(place.formatted_address)\n });\n }\n const onfocusSearch = () => {\n window.$(\"#searchMapInputTicket\").attr(\"autocomplete\", \"new-password\");\n }\n\n const removeRow_estimate = (item) => {\n EstimatesDetails.estimatedata = EstimatesDetails.estimatedata.filter(x => x !== item);\n sumEstimateAmt()\n setTest(test + 1)\n }\n\n const removeRow_invoice = (item) => {\n InvoicesDetails.invoicedata = InvoicesDetails.invoicedata.filter(x => x !== item);\n sum_invoice()\n setTest(test + 1)\n }\n\n const sendMail = (type) => {\n var photos = [];\n var selectedphotos = [];\n if (type == \"estimate\") {\n if (EstimatesDetails.photos != undefined && EstimatesDetails.photos.length > 0) {\n selectedphotos = EstimatesDetails?.photos?.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n\n if (type == \"invoice\") {\n if (InvoicesDetails.photos != undefined && InvoicesDetails.photos.length > 0) {\n selectedphotos = InvoicesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n\n\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n SendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n if (type == \"estimate\")\n setIsMailSent(true)\n if (type == \"invoice\")\n setIsMailSent_invoice(true)\n loadTicketDetails();\n // loadInvoice(activiyid);\n // loadEstimate(activiyid)\n }\n })\n .catch();\n }\n\n const reSendMail = (type) => {\n var photos = [];\n var selectedphotos = [];\n if (type == \"estimate\") {\n if (EstimatesDetails.photos != undefined && EstimatesDetails.photos.length > 0) {\n selectedphotos = EstimatesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n\n if (type == \"invoice\") {\n if (InvoicesDetails.photos != undefined && InvoicesDetails.photos.length > 0) {\n selectedphotos = InvoicesDetails.photos.filter(x => x.selected == true);\n if (selectedphotos.length > 0) {\n for (var i = 0; i < selectedphotos.length; i++) {\n photos.push({\n \"photoid\": selectedphotos[i].photoid\n })\n }\n }\n }\n }\n var req = {\n \"ticketid\": ticketid,\n \"activityid\": activiyid,\n \"photos\": photos,\n \"sentby\": userid\n\n }\n ResendEmail_api(req).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n loadTicketDetails();\n // loadInvoice(activiyid);\n // loadEstimate(activiyid)\n }\n })\n .catch();\n\n }\n\n const handlenotes_estimate = (text) => {\n EstimatesDetails.notes = text;\n setTest(test + 1)\n\n }\n const handlenotes_invoice = (text) => {\n InvoicesDetails.notes = text;\n setTest(test + 1)\n }\n\n const SelectImage_estimate = (item) => {\n var index = EstimatesDetails.photos.indexOf(item);\n EstimatesDetails.photos[index].selected = EstimatesDetails.photos[index].selected ? false : true;\n setTest(test + 1)\n }\n const SelectImage_invoice = (item) => {\n var index = InvoicesDetails.photos.indexOf(item);\n InvoicesDetails.photos[index].selected = InvoicesDetails.photos[index].selected ? false : true;\n setTest(test + 1)\n }\n const handleChange_disc_percentage_estimate = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n EstimatesDetails.discountpercentage = amount;\n }\n sumPayable();\n setTest(test + 1)\n }\n const handleChange_disc_percentage_invoice = (event) => {\n const amount = event.target.value;\n if (!amount || amount.match(/^\\d{1,}(\\.\\d{0,2})?$/)) {\n InvoicesDetails.discountpercentage = amount;\n }\n sumPayable_invoice();\n setTest(test + 1)\n }\n\n const editinvoiceduedate = (date, date2) => {\n setInvoiceduedate(format(new Date(date), \"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date2), \"MM/dd/yyyy\"))\n window.$(\"#duedatepopup\").modal('show');\n }\n\n const editinvoicedate = (date, date2) => {\n setInvoiceduedate(format(new Date(date2), \"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date), \"MM/dd/yyyy\"))\n window.$(\"#datepopup\").modal('show');\n }\n\n const editinvoiceno = (date, date2, invoiceno) => {\n setInvoiceduedate(format(new Date(date), \"MM/dd/yyyy\"))\n setInvoicedate(format(new Date(date2), \"MM/dd/yyyy\"))\n setInvoiceno(invoiceno)\n window.$(\"#invoiceno\").modal('show');\n }\n\n const closeclick = () => {\n window.$(\"#TicketDetails\").modal('hide');\n setSlotID(localStorage.getItem(\"calendaruserid\"))\n }\n useEffect(() => {\n if (slot_id !== 0)\n window.$(\"#calendarpopup\").modal('show');\n }, [slot_id])\n\n\n //#region Delete Function added by sonali 31/03/22 feedbacks\n\n const deleteTicketPopUp = () => {\n window.$(\"#DeletePopUp\").modal('show');\n }\n\n const DeleteTicket_submit = (id) => {\n\n DeleteTicket_api(Number(id)).then(res => {\n if (res != undefined) {\n toast.success(res.message);\n window.$(\"#DeletePopUp\").modal('hide');\n //custom_close();\n window.location.href = ('#/calendar');\n\n }\n })\n .catch();\n\n\n\n }\n\n function custom_close() {\n\n window.opener = null;\n window.open(\"\", \"_self\", \"\");\n window.close();\n\n\n }\n\n\n //#endregion\n\n\n\n return (\n <>\n
\n
\n
\n {/* */}\n
\n
\n
\n
\n {/* */}\n
#{ticketid} - Ticket Details
\n \n {\n ((ticketDetails.currentstatus === \"Assigned\" || ticketDetails.currentstatus === \"Created\" || ticketDetails.currentstatus === \"In-Progress\" || ticketDetails.currentstatus === \"Awaited\" || ticketDetails.currentstatus === \"Cancelled\") && (!ticketDetails.currentstatusactivity.includes('Estimate') && !ticketDetails.currentstatusactivity.includes('Invoice') && !ticketDetails.currentstatusactivity.includes('Paid'))) &&\n \n }\n {ticketDetails.assignedtoName &&
Job Scheduled at {ticketDetails.scheduleddate + \" \" + ticketDetails.scheduledtime}
}\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

{ticketDetails.ordertype} OpenOrderTypeEdit()} className=\"od-edit\">

\n

{ticketDetails.orderdetail}

\n

{ticketDetails.address}

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

Job Contact

\n
{ticketDetails.jobname !== null ? ticketDetails.jobname : \"\"}
\n

{ticketDetails.jobcontactname !== null ? ticketDetails.jobcontactname : \"\"}

\n

{ticketDetails.jobcontactemail !== null ? ticketDetails.jobcontactemail : \"\"}

\n

{ticketDetails.jobcontactphone !== null ? ticketDetails.jobcontactphone : \"\"}

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

PO / Work Order OpenPOWorkOrderEdit()} className=\"od-edit\">

\n
\n

PO No. {ticketDetails.ponumber}

\n

Work Order No. {ticketDetails.workordernumber}

\n
\n
\n
\n {\n (ticketDetails.pofilepath != \"\" && ticketDetails.pofilepath != \"NA\" && ticketDetails.poavailable)\n ?\n \n \n\n Purchase Order \n \n \n :\n \"No Purchase order available.\"\n\n }\n\n
\n\n\n
\n
\n\n\n
\n
\n
\n

Assigned to showAssigneeUpdate()} className=\"od-edit\">

\n
\n {/* {\n ticketDetails.assignedtoProfilePic != \"\" && ticketDetails.assignedtoProfilePic != \"NA\"\n &&\n \n } */}\n\n
\n

{ticketDetails.assignedtoName}

\n {ticketDetails.assignedtoPhone}\n
\n
\n
\n
\n Status \n
\n \n {ticketDetails.currentstatus} ({ticketDetails.currentstatusactivity}) showStatusUpdate()} className=\"od-edit\">\n
\n
\n
\n
\n
\n
\n

{ticketDetails.customername}

\n {ticketDetails.customertype}\n
{ticketDetails.billingaddress}
\n

{ticketDetails.contactname}

\n

{ticketDetails.contactphone}

\n

{ticketDetails.contactemail}

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

Activities

\n
\n  New\n     \n \n
\n
\n
\n
\n
\n
\n {\n ticketDetails.activities != null && ticketDetails.activities != undefined\n &&\n ticketDetails.activities.length == 0\n ?\n \"No Record Found.\"\n :\n ticketDetails.activities != null\n &&\n ticketDetails.activities.map(item => (\n <>\n
\n {item.activitytype == \"Notes\" &&\n
loadNotesDetails(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype == \"Photos\" &&\n
loadPhotos(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype == \"Estimate\" &&\n
loadBoth(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype == \"Invoice\" &&\n
loadInvoice(item.activityid)}>\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime} \"\"

\n
\n }\n\n {item.activitytype != \"Invoice\" && item.activitytype != \"Estimate\" && item.activitytype != \"Photos\" && item.activitytype != \"Notes\" &&\n
\n

{item.activity}

\n

{item.activityday}, {item.activitydate} {item.activitytime}

\n
\n }\n
\n \n\n ))\n }\n\n\n
\n
\n {/*
\n ADD\n
*/}\n\n
\n
\n
\n\n
\n\n\n {/* Add Notes */}\n
\n
\n
\n\n {/*

Notes

*/}\n\n
\n
\n

Notes

\n\n \n
\n \n \n
\n\n
\n
\n {\n openSection == \"Notes\"\n &&\n
\n
\n
\n\n

Notes

\n

{notesdetails.activityday}, {notesdetails.activitydate} {notesdetails.activitytime}

\n

by: {notesdetails.activitybyName}

\n
\n
\n

Notes \n {/* */}\n

\n\n

{notesdetails.notes}

\n
\n\n {/* \n
\n \n
*/}\n\n
\n\n {/* Signature */}\n\n
\n\n }\n\n {\n openSection == \"Photos\"\n &&\n
\n
\n
\n

Photos

\n
\n\n {\n photosList.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n photosList.map(item => (\n \n \n \n ))\n }\n\n\n
\n
\n\n
\n
\n\n }\n\n {\n openSection == \"Estimates_draft\"\n &&\n
\n
\n
\n

Estimate

\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == false)\n &&\n sendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Send Mail\n }\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == true)\n &&\n reSendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Resend Mail\n }\n\n\n\n
\n
\n
\n
\n
\n

Material

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // &&\n \n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails != null &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_UnitPrice_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_Material(item, e)} />\n removeRow_estimate(item)} >\"\"\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails.estimatedata != null && EstimatesDetails.estimatedata != undefined &&\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Material\").length > 0\n &&\n\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n\n
\n
\n

Labor

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // && \n \n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_Labor(item, e)} />\n removeRow_estimate(item)} >\"\"\n
\n
\n\n\n\n\n\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Labor\").length > 0\n &&\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n
\n\n
\n
\n
\n
\n\n {\n ticketDetails.currentstatusactivity !== \"Estimate Approved\"\n &&\n
\n {\n (EstimatesDetails.status == \"\" || EstimatesDetails.status == null || EstimatesDetails.status == undefined)\n &&\n draftEstimate(e)} className=\"btn btn-theme\" >Save\n }\n {\n (EstimatesDetails.status == \"Draft\")\n &&\n finalizeEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Finalized\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Submitted\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n {\n (EstimatesDetails.status == \"Approved\")\n &&\n null\n // updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n\n }\n
\n
\n
\n
\n
\n\n\n }\n {\n openSection == \"Estimates\"\n &&\n
\n
\n
\n

Estimate

\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == false)\n &&\n sendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Send Mail\n }\n {\n ((EstimatesDetails.status == \"Finalized\" || EstimatesDetails.status == \"Submitted\") && isMailSent == true)\n &&\n reSendMail(\"estimate\")} className=\"btn btn-default pull-right\" >Resend Mail\n }\n {\n EstimatesDetails.downloadpath != \"\"\n &&\n Download\n }\n\n

{EstimatesDetails.creationdate} {EstimatesDetails.creationtime}

\n {\n isAddNewEstimate == false\n &&\n

by: {EstimatesDetails.createdbyName}

\n }\n\n
\n
\n
\n
\n
\n

Material

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // &&\n
\n {EstimatesDetails.status != \"Approved\" &&\n addMoreMaterialRow(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails != null &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_UnitPrice_material_estimate(item, e)} />\n
\n
\n
\n
\n handleChange_Material(item, e)} />\n {EstimatesDetails.status != \"Approved\" &&\n removeRow_estimate(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails.estimatedata != null && EstimatesDetails.estimatedata != undefined &&\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Material\").length > 0\n &&\n\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n\n
\n
\n

Labor

\n {\n // EstimatesDetails.currentstatusactivity != \"Estimate Approved\"\n // && \n
\n {EstimatesDetails.status != \"Approved\" &&\n addMoreLaborRow(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n }\n\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n EstimatesDetails.estimatedata != null &&\n EstimatesDetails.estimatedata.length > 0\n &&\n EstimatesDetails.estimatedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_estimate(item, e)} />\n
\n
\n\n
\n
\n handleChange_Labor(item, e)} />\n {EstimatesDetails.status != \"Approved\" &&\n removeRow_estimate(item)} >\"\"\n }\n
\n
\n\n\n\n\n\n
\n ))\n }\n\n\n
\n\n
\n {\n EstimatesDetails?.estimatedata?.filter(x => x.type == \"Labor\").length > 0\n &&\n <>\n
\n

Total

\n
\n
\n
\n \n
\n
\n \n }\n
\n
\n
\n\n
\n
\n
\n
\n

Notes

\n\n \n
\n
\n

Photos

\n
\n\n {\n EstimatesDetails?.photos?.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n EstimatesDetails?.photos?.map(item => (\n SelectImage_estimate(item)} style={{ cursor: 'pointer' }} >\n \n \n ))\n }\n\n\n
\n
\n
\n\n
\n
\n
\n
\n {/*
\n
PO Number
\n setPoNumber_estimate(e.target.value)} />\n
*/}\n
\n
Total Material
\n
{EstimatesDetails.amountMaterial}
\n
\n
\n
Total Labor
\n
{EstimatesDetails.amountLabour}
\n
\n\n
\n
Material Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_material(e)} />%\n\n
\n
\n
Labor Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_labor(e)} />%\n\n
\n
\n
Discounts
\n handleChange_disc(e)} />\n {EstimatesDetails.status == \"Approved\" ?\n <> handleChange_disc_percentage_estimate(e)} />%\n :\n <> handleChange_disc_percentage_estimate(e)} />%\n }\n
\n
\n
Total Due
\n
{EstimatesDetails.amountPayable}
\n
\n
\n {\n userType != \"Accounts\"\n &&\n
\n\n {\n (EstimatesDetails.status == \"\" || EstimatesDetails.status == null || EstimatesDetails.status == undefined)\n &&\n draftEstimate(e)} className=\"btn btn-theme\" >Save\n }\n {\n (EstimatesDetails.status == \"Draft\")\n &&\n finalizeEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Finalized\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n (EstimatesDetails.status == \"Submitted\")\n &&\n updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n {\n (EstimatesDetails.status == \"Approved\")\n &&\n null\n // updateEstimate(e)} className=\"btn btn-theme\" >Save\n // finalizeEstimate(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n\n }\n
\n
\n
\n
\n
\n }\n\n\n {\n openSection == \"Invoices_draft\"\n &&\n
\n
\n
\n

Invoice

\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == false)\n &&\n sendMail(\"invoice\")} className=\"btn btn-default pull-right\" >Send Mail\n }\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == true)\n &&\n reSendMail(\"invoice\")} className=\"btn btn-default pull-right\" >Resend Mail\n }\n\n
\n
\n
\n
\n \n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails != null &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_qty_material_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_material_invoice(item, e)} />\n
\n
\n \n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

\n
\n
\n
\n \n
\n
\n
\n
\n\n
\n \n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_invoice(item, e)} />\n
\n
\n \n
\n ))\n }\n\n
\n\n
\n
\n

Total

\n
\n
\n
\n \n
\n
\n
\n
\n
\n\n
\n
\n\n
\n
\n {\n userType != \"Accounts\"\n &&\n\n
\n {\n (InvoicesDetails.status == \"\" || InvoicesDetails.status == null || InvoicesDetails.status == undefined)\n &&\n draftInvoice(e)} className=\"btn btn-theme\" >Save\n }\n {\n InvoicesDetails.status == \"Draft\"\n &&\n finalizeInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Finalized\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Submitted\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n {\n InvoicesDetails.status == \"Paid\"\n &&\n null\n // updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n }\n\n
\n
\n
\n
\n
\n }\n\n {\n openSection == \"Invoices\"\n &&\n
\n
\n
\n

Invoice Details

\n
\n \n \n \n
\n\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == false && (userType === \"Accounts\" || userType === \"Admin\"))\n &&\n sendMail()} className=\"btn btn-default\" style={{ margin: \"0px 10px 0px 0px\" }}>Send Mail\n }\n {\n ((InvoicesDetails.status == \"Finalized\" || InvoicesDetails.status == \"Submitted\") && isMailSent_invoice == true && (userType === \"Accounts\" || userType === \"Admin\"))\n &&\n reSendMail()} className=\"btn btn-default\" style={{ margin: \"0px 10px 0px 0px\" }}>Resend Mail\n }\n {\n InvoicesDetails.downloadpath != \"\"\n &&\n Download\n }\n
\n\n
\n
\n
\n
\n
\n
\n

Material

\n
\n {InvoicesDetails.status != \"Paid\" &&\n addMoreMaterialRow_invoice(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails != null &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Material\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_qty_material_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_material_invoice(item, e)} />\n
\n
\n
\n
\n \n {InvoicesDetails.status != \"Paid\" &&\n removeRow_invoice(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

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

Labor

\n
\n {InvoicesDetails.status != \"Paid\" &&\n addMoreLaborRow_invoice(e)} className=\"btn btn-gray btn-sm\">   Add\n }\n
\n
\n
\n
\n
\n
\n Title\n
\n
\n
\n
\n Qty\n
\n
\n
\n
\n Unit Price\n
\n
\n
\n
\n Amount\n
\n
\n
\n\n {\n InvoicesDetails.invoicedata != null &&\n InvoicesDetails.invoicedata.length > 0\n &&\n InvoicesDetails.invoicedata.filter(x => x.type == \"Labor\").map(item => (\n
\n
\n
\n handleChange_TextValue_item_invoice(item, e)} />\n
\n
\n
\n
\n handleChange_TextValue_qty_labor_invoice(item, e)} />\n
\n
\n\n
\n
\n handleChange_TextValue_UnitPrice_labor_invoice(item, e)} />\n
\n
\n
\n
\n \n {InvoicesDetails.status != \"Paid\" &&\n removeRow_invoice(item)} >\"\"\n }\n
\n
\n
\n ))\n }\n\n\n
\n\n
\n
\n

Total

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

Notes

\n\n \n
\n
\n

Photos

\n
\n\n {\n InvoicesDetails?.photos?.length == 0 ?\n \"No Photos Available.\"\n :\n // photosList != null &&\n InvoicesDetails?.photos?.map(item => (\n SelectImage_invoice(item)} style={{ cursor: 'pointer' }} >\n \n \n ))\n }\n\n\n
\n
\n
\n\n
\n\n
\n
\n
\n {/*
\n
PO Number
\n setPoNumber_invoice(e.target.value)} />\n
*/}\n
\n
Total Material
\n
{InvoicesDetails.amountMaterial}
\n
\n
\n
Total Labor
\n
{InvoicesDetails.amountLabour}
\n
\n\n
\n
Material Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_material_invoice(e)} />%\n\n
\n
\n
Labor Taxes
\n {/*
{EstimatesDetails.amountTax}
*/}\n \n handleChange_tax_labor_invoice(e)} />%\n\n
\n
\n
Discounts
\n \n {InvoicesDetails.status == \"Paid\" ?\n <> handleChange_disc_percentage_invoice(e)} />%\n :\n <> handleChange_disc_percentage_invoice(e)} />%\n }\n
\n\n
\n
Total Due
\n
{InvoicesDetails.amountPayable}
\n
\n
\n {/* stutus {InvoicesDetails.status} */}\n {\n userType != \"Accounts\"\n &&\n\n
\n\n {\n (InvoicesDetails.status == \"\" || InvoicesDetails.status == null || InvoicesDetails.status == undefined)\n &&\n draftInvoice(e)} className=\"btn btn-theme\" >Save\n }\n {\n InvoicesDetails.status == \"Draft\"\n &&\n finalizeInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Finalized\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n }\n\n {\n InvoicesDetails.status == \"Submitted\"\n &&\n updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n {\n InvoicesDetails.status == \"Paid\"\n &&\n null\n // updateInvoice(e)} className=\"btn btn-theme\" >Save\n // finalizeInvoice(e)} className=\"btn btn-theme\" >Submit\n }\n\n
\n\n }\n
\n
\n
\n
\n
\n }\n\n
\n
\n
\n
\n
\n
\n
\n {\n ticketDetails.ordertypeid != undefined\n &&\n \n }\n\n {/* */}\n\n\n
\n
\n
\n
\n \n \n
Update Assignee
\n
\n
\n
\n
\n\n\n
\n
\n\n setTicketDate(e.target.value)} />\n
\n
\n
\n
\n\n setTicketTime(e.target.value)} />\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
Update Order Type
\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
Update PO/Work Order
\n
\n
\n
\n
\n
\n
\n setPoNumber(e.target.value)} />\n
\n
\n
\n
\n setWorkOrderNumber(e.target.value)} />\n
\n
\n\n
\n UploadDocument(e)} className=\"form-control tic-file\" placeholder=\"\" />\n
\n\n \n
\n
\n\n
\n\n
\n {/* */}\n
\n {/* */}\n
\n\n
\n
\n
\n
\n \n \n
Update Status
\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\nexport default TicketDetails\n\nwindow.$(window).on('popstate', function () {\n window.$('.modal').click();\n});","import React from 'react';\nimport ReactApexChart from 'react-apexcharts';\n\nconst DoubleLineBasic = ({ data, xAsisData, lable,color }) => {\n\n\n const series = [\n {\n name: data.label1,\n data: data.currentdata\n },\n {\n name: data.label2,\n data: data.prevdata\n }]\n const options = {\n chart: {\n height: 340,\n type: 'line',\n zoom: {\n enabled: false\n }\n },\n colors: color,\n dataLabels: {\n enabled: false\n },\n markers: {\n size: 4,\n colors: undefined,\n strokeColors: '#fff',\n strokeWidth: 0,\n },\n stroke: {\n curve: 'straight',\n lineCap: 'butt',\n width: 3,\n\n },\n title: {\n // text: 'Revenue Trend',\n //align: 'left'\n },\n legend: {\n align: 'right',\n position: 'top',\n\n },\n grid: {\n row: {\n //colors: ['#f3f3f3', 'transparent'], // takes an array which will be repeated on columns\n //opacity: 0.5\n },\n },\n yaxis: {\n title: {\n text: lable.yAxis\n }\n },\n xaxis: {\n title: {\n text: lable.xAxis\n },\n categories: xAsisData,\n tickAmount: 24\n }\n }\n\n\n return (\n\n <>\n
\n \n
\n \n\n\n );\n}\n\nexport default DoubleLineBasic;","import React from 'react';\nimport { useState } from 'react';\nimport Chart from 'react-apexcharts';\n\nexport default function SimplePieChart(props) {\n\n\n// Making Series Array to show in Graph\n\nconst series = [props.data.part1,props.data.part2,props.data.part3,props.data.part4]\n return (\n\n <>\n
\n \n \n
\n \n\n\n );\n}\n","import { Link } from \"react-router-dom\";\n\n/*\nDate:-11-01-22\nCodeBy:-Mayur\nDescription:- Analitics Card Components\n*/\nconst AnalyticsCard = ({ shareIcon, title, subTitle, url }) => {\n return (\n <>\n
  • \n \n {shareIcon === true &&\n
    \n
    \n \n
    \n
    \n }\n
    \n

    {title}

    \n

    {subTitle}

    \n
    \n \n
  • \n \n )\n}\nexport default AnalyticsCard;\n","import { useSelector } from 'react-redux'\r\nimport { toast } from 'react-toastify'\r\n\r\n\r\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\r\nconst AccessToken = localStorage.getItem(\"AccessToken\");\r\nconst loggeduserid = Number(localStorage.getItem(\"userid\"));\r\n\r\n\r\n\r\nexport const GetAnalyticsSummary_api = async (filter_val) => {\r\n try {\r\n const response = await fetch(API_Base_Url + \"analytics/keysummary?period=\"+filter_val, {\r\n method: \"GET\",\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\r\n } \r\n })\r\n if (response.status == 401) {\r\n toast.error('Your Session has been expired, Please login again.');\r\n return window.setTimeout(function () {\r\n localStorage.clear();\r\n window.location.href = \"/#/\";\r\n }, 1000);\r\n }\r\n const result = await response.json();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else if (response.status === 400) {\r\n if(result.errors != undefined)\r\n {\r\n toast.error(result.errors[0])\r\n }\r\n }\r\n else {\r\n\r\n }\r\n } catch (error) {\r\n toast.error('Something went wrong , Please try again later.')\r\n }\r\n};\r\n\r\nexport const GetRevenueTrend_api = async (filter_val) => {\r\n try {\r\n const response = await fetch(API_Base_Url + \"analytics/revenuetrend?period=\"+filter_val, {\r\n method: \"GET\",\r\n headers: {\r\n 'Accept': 'application/json',\r\n 'Content-Type': 'application/json'\r\n // 'Authorization': 'Bearer ' + localStorage.getItem(\"AccessToken\")\r\n } \r\n })\r\n if (response.status == 401) {\r\n toast.error('Your Session has been expired, Please login again.');\r\n return window.setTimeout(function () {\r\n localStorage.clear();\r\n window.location.href = \"/#/\";\r\n }, 1000);\r\n }\r\n const result = await response.json();\r\n if (response.ok) {\r\n return result;\r\n }\r\n else if (response.status === 400) {\r\n if(result.errors != undefined)\r\n {\r\n toast.error(result.errors[0])\r\n }\r\n }\r\n else {\r\n\r\n }\r\n } catch (error) {\r\n toast.error('Something went wrong , Please try again later.')\r\n }\r\n};\r\n","import React, { useEffect, useState } from 'react'\nimport { Link } from 'react-router-dom'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport DoubleLineBasic from '../../Charts/DoubleLineChart'\nimport SimplePieChart from '../../Charts/SimplePieChart'\nimport AnalyticsCard from '../../components/analyticsCard/Card'\nimport { GetAnalyticsSummary_api, GetRevenueTrend_api } from '../../functions/analytics'\nimport {GetReport_AvgTicketLifeCycle_api} from '../../functions/reports'\nconst API_Base_Url = process.env.REACT_APP_API_BASE_URL;\n\n/*\nDate:-11-01-22\nCodeBy:-Mayur\nDescription:-Dashboard of Analitics\n*/\nfunction DashboardAnalytics() {\n\n const [filterval, setFilterval] = useState(\"This Year\")\n const [graphfilterval, setGraphFilterVal] = useState(\"year\")\n const [summaryResult, setSummaryResult] = useState([])\n\n const [xAsisData, setxAxisData] = useState([])\n const [lineChartData, setLineChartData] = useState({ currentdata: [], prevdata: [], label1: \"\", label2: \"\" })\n const [lineChartTitle, setLineChartTitle] = useState({ xAxis: \"Months\", yAxis: \"Revenue\" })\n\n const[isLoaded,setisLoaded]=useState(false)\n\n const [PieChartData, setPieChartData] = useState({ part1: 0, part2: 0, part3: 0, part4: 0 })\n\n \n\n useEffect(() => {\n setisLoaded(false)\n loadAnalyticsSummary();\n loadRevenueTrend();\n loadpiechartData();\n setisLoaded(true)\n\n }, [filterval]);\n\n const loadAnalyticsSummary = () => {\n GetAnalyticsSummary_api(filterval).then(res => {\n if (res !== undefined) {\n setSummaryResult(res)\n }\n }).catch();\n }\n\n\n const loadRevenueTrend = () => {\n var val=\"This Year\";\n if (filterval === \"This Year\" || filterval === \"This Month\") {\n val = \"This\";\n }\n else {\n val = \"Previous\";\n }\n const obj_filter = val + \" \" + graphfilterval;\n GetRevenueTrend_api(obj_filter).then(res => {\n if (res !== undefined) {\n var dt = new Date(res[0].series1FromDate);\n var currentyear = dt.getFullYear();\n var prevyear = currentyear - 1;\n var data = res;\n var label_data = [];\n var thisyear_data = [];\n var prevyear_data = [];\n data.forEach(item => {\n const val1 = item.series1Revenue !== null ? item.series1Revenue.toFixed(2) : 0\n const val2 = item.series2Revenue !== null ? item.series2Revenue.toFixed(2) : 0\n label_data.push(item.series1Label)\n thisyear_data.push(val1)\n prevyear_data.push(val2)\n });\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data, prevdata: prevyear_data, label2: prevyear, label1: currentyear })\n }\n }).catch();\n }\n\n const loadpiechartData=()=>{\n GetReport_AvgTicketLifeCycle_api(filterval).then(res => {\n if (res !== undefined) {\n setPieChartData({ part1: res.responseTime, part2: res.working, part3: res.estimateApproval, part4: res.invoicePaid })\n }\n console.log(res,\"piechart\")\n setisLoaded(true)\n }).catch();\n }\n const LoadLineChartData=(name)=>{\n setGraphFilterVal(name)\n var val=\"This\";\n if (filterval === \"This Year\" || filterval === \"This Month\") {\n val = \"This\";\n }\n else {\n val = \"Previous\";\n }\n const obj_filter = val + \" \" + name;\n GetRevenueTrend_api(obj_filter).then(res => {\n if (res !== undefined) {\n var dt = new Date(res[0].series1FromDate);\n var currentyear = dt.getFullYear();\n var prevyear = currentyear - 1;\n var data = res;\n var label_data = [];\n var thisyear_data = [];\n var prevyear_data = [];\n data.forEach(item => {\n const val1 = item.series1Revenue !== null ? item.series1Revenue.toFixed(2) : 0\n const val2 = item.series2Revenue !== null ? item.series2Revenue.toFixed(2) : 0\n label_data.push(item.series1Label)\n thisyear_data.push(val1)\n prevyear_data.push(val2)\n });\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data, prevdata: prevyear_data, label2: prevyear, label1: currentyear })\n }\n }).catch();\n }\n\n return (\n
    \n
    \n
    \n \n
    \n {/* */}\n
    \n
    \n
    \n
    \n
    \n
    \n\n
    \n
    \n {/* */}\n
    \n {/* Timelines */}\n
    \n
    \n

    Timelines

    \n
    \n \n
    \n
    \n {isLoaded?\n
    \n
      \n \n \n \n \n \n
    \n
    \n :
    \"\"
    }\n
    \n {/* Financials */}\n {isLoaded?\n <>\n
    \n

    Financials

    \n
    \n
    \n
    \n
    \n

    Revenue Trend

    \n
    \n LoadLineChartData(\"month\")}>Month\n LoadLineChartData(\"year\")}>Year\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 {/* Average Ticket Life Cycle */}\n
    \n
    \n
    \n

    Average Ticket Life Cycle

    \n
    \n \n
    \n
    \n \n
    \n
    \n \n :
    \"\"
    }\n
    \n\n
    \n\n
    \n\n
    \n {/* wrapper */}\n
    \n )\n}\n\nexport default DashboardAnalytics","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetReport_AvgTicketResolutionTime_api } from '../../functions/reports'\nimport { LoadOrderType_api } from '../../functions/orderType'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\nimport DoubleLineBasic from '../../Charts/DoubleLineChart'\n\nfunction AvgTicketResolTime() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n\n const [period, setPeriod] = useState(\"This Year\");\n const [type, setType] = useState(\"Order Type\")\n const [filterval, setfilterval] = useState(0);\n const [fromDate, setFromDate] = useState(\"\");\n const [toDate, setToDate] = useState(\"\");\n\n const [ordertypeList, setOrdertypeList] = useState([]);\n const [technicianList, setTechnicianlist] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n\n const [tabledataList, setTableDataList] = useState([])\n const [chartDataList, setChartDataList] = useState([])\n\n const [List, setList] = useState([]);\n const [xAsisData, setxAxisData] = useState([])\n const [lineChartData, setLineChartData] = useState({ currentdata: [], label: \"\"})\n const [lineChartTitle, setLineChartTitle] = useState({ xAxis: \"\", yAxis: \"Hours\" })\n\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadOrderTypelist();\n loadTechnicians();\n LoadDataList();\n }, [])\n\n const loadReport = () => {\n LoadDataList();\n }\n\n useEffect(() => {\n setfilterval(0)\n }, [type])\n\n const LoadDataList = () => {\n setIsLoaded(false)\n var req = {\n \"period\": period,\n \"type\": type,\n \"id\": Number(filterval),\n \"fromdate\": \"\",\n \"todate\": \"\"\n }\n GetReport_AvgTicketResolutionTime_api(req).then(res => {\n if (res !== undefined) {\n if(res.tbldata.length>0){\n setTableDataList(res.tbldata)\n }\n else{\n setTableDataList([])\n }\n if(res.chartdata.length>0){\n var data = res.chartdata;\n var label_data = [];\n var thisyear_data = [];\n var currenttotal = 0;\n data.forEach(item => {\n label_data.push(item.serieslabel)\n thisyear_data.push(item.seriesvalue)\n });\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data })\n }\n setIsLoaded(true)\n }\n })\n }\n\n\n\n\n const loadOrderTypelist = () => {\n const val = \"\";\n LoadOrderType_api(val).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setOrdertypeList([])\n }\n else\n setOrdertypeList(result.data);\n }\n }).catch();\n }\n\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n }).catch();\n }\n\n\n const AccordianChange = (item) => {\n var accordionitem = item;\n window.$(\"#\" + accordionitem).slideToggle().parent().siblings().find(\".accordion-content\").slideUp();\n window.$(\"#\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + \"item_\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title\").removeClass(\"active-title\");\n window.$(\"i.fa-chevron-down\", \"#\" + item).toggleClass(\"chevron-top\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title i.fa-chevron-down\").removeClass(\"chevron-top\");\n }\n\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n \n
    \n
    \n
    \n < div className=\"col-md-3 \">\n \n \n
    \n
    \n
    \n \n
    \n {type === \"Order Type\" &&\n \n }\n {type === \"Technician\" &&\n \n }\n
    \n
    \n
    \n\n
    \n
    \n
    \n \n
    \n
    \n Export to Excel} >\n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n\n
    \n\n

    Avg. Ticket Resolution Time for this year is 3 hr 50min

    \n
    \n \n
    \n
    \n\n\n
    \n {\n isLoaded == false ?
    \"\"
    \n :\n
    \n {\n tabledataList != undefined &&\n <>\n {\n tabledataList.length == 0\n ?\n \"No Record Found.\"\n :\n tabledataList.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map((item, index) => (\n <>\n
    \n
    AccordianChange(`item-${index}`)}>\n
    \n
    \n

    {item.name}

    \n
    \n
    \n
    {item.avgResolutionTime}
    \n \n
    \n
    \n
    \n\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n item.details != undefined &&\n\n item.details.length == 0\n ?\n \"No Record Found.\"\n :\n item.details != null &&\n item.details.map(inneritem => (\n \n \n \n \n \n ))\n }\n \n
    CustomerTicket NoResolution Time
    {inneritem.customername}{inneritem.ticketno}{inneritem.resolutiontime}
    \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 setFromDate(e.target.value)} />\n
    \n
    \n
    \n \n
    \n setToDate(e.target.value)} />\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n )\n}\n\nexport default AvgTicketResolTime\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetReport_TechOccupancy_api } from '../../functions/reports'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\nimport DoubleLineBasic from '../../Charts/DoubleLineChart'\n\n\nfunction TechOccupancy() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n\n const [period, setPeriod] = useState(\"This Year\");\n const [filterid, setFilterid] = useState(0);\n\n const [technicianList, setTechnicianlist] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n\n const [headingList, setHeadingList] = useState([])\n const [List, setList] = useState([]);\n const [xAsisData, setxAxisData] = useState([])\n const [lineChartData, setLineChartData] = useState({ currentdata: [], prevdata: [], label1: \"\", label2: \"\" })\n const [lineChartTitle, setLineChartTitle] = useState({ xAxis: \"\", yAxis: \"\" })\n const [total, setTotal] = useState({ currentTotal: 0, prevTotal: 0 })\n\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadTechnicians();\n LoadDataList();\n }, [])\n\n const loadReport = () => {\n LoadDataList();\n }\n\n const LoadDataList = () => {\n setIsLoaded(false)\n var req = {\n \"period\": period,\n \"id\": Number(filterid),\n \"fromdate\": \"\",\n \"todate\": \"\"\n }\n GetReport_TechOccupancy_api(req).then(res => {\n if (res !== undefined) {\n if (res.tbldata.length > 0) {\n setHeadingList(res.tbldata[0].details)\n setList(res.tbldata)\n\n }\n else {\n setList([])\n }\n if (res.chartdata.length > 0) {\n\n var dt = new Date();\n var currentyear = dt.getFullYear();\n var prevyear = currentyear - 1;\n var data = res.chartdata;\n var label_data = [];\n var thisyear_data = [];\n var prevyear_data = [];\n var currenttotal = 0;\n var prevtotal = 0;\n data.forEach(item => {\n currenttotal = 0;\n prevtotal = 0;\n label_data.push(item.series1label)\n thisyear_data.push(item.series1value)\n prevyear_data.push(item.series2value)\n });\n setTotal({ currentTotal: currenttotal, prevTotal: prevtotal })\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data, prevdata: prevyear_data, label2: prevyear + \" - \" + prevtotal, label1: currentyear + \" - \" + currenttotal })\n }\n else {\n var dt = new Date();\n var currentyear = dt.getFullYear();\n var prevyear = currentyear - 1;\n var data = res.chartdata;\n var label_data = [];\n var thisyear_data = [];\n var prevyear_data = [];\n var currenttotal = 0;\n var prevtotal = 0;\n\n setTotal({ currentTotal: currenttotal, prevTotal: prevtotal })\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data, prevdata: prevyear_data, label2: prevyear + \" - \" + prevtotal, label1: currentyear + \" - \" + currenttotal })\n }\n\n setIsLoaded(true)\n }\n })\n }\n\n\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n\n const AccordianChange = (item) => {\n var accordionitem = item;\n window.$(\"#\" + accordionitem).slideToggle().parent().siblings().find(\".accordion-content\").slideUp();\n window.$(\"#\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + \"item_\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title\").removeClass(\"active-title\");\n window.$(\"i.fa-chevron-down\", \"#\" + item).toggleClass(\"chevron-top\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title i.fa-chevron-down\").removeClass(\"chevron-top\");\n }\n\n return (\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 Export to Excel} >\n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n

    Tech Occupancy for this year is 60%

    \n
    \n \n
    \n
    \n\n
    \n {\n isLoaded == false ?
    \"\"
    \n :\n
    \n \n \n \n \n {headingList.map(item => (\n \n\n ))}\n \n {List.map(item => (\n \n \n {item.details.map(listitem => (\n \n ))}\n\n \n\n ))}\n \n
    Technician{item.label}
    {item.name}{listitem.value}
    \n\n
    \n }\n
    \n\n
    \n
    \n
    \n\n
    \n )\n}\n\nexport default TechOccupancy\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport DoubleLineBasic from '../../Charts/DoubleLineChart'\nimport { Link } from 'react-router-dom'\nimport { GetRevenueTrend_api } from '../../functions/analytics'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\n\nfunction RevenueTrend() {\n\n\n const [period, setPeriod] = useState(\"this month\");\n const [title, setTitle] = useState(\"\")\n\n const [xAsisData, setxAxisData] = useState([])\n const [lineChartData, setLineChartData] = useState({ currentdata: [], prevdata: [], label1: \"\", label2: \"\" })\n const [lineChartTitle, setLineChartTitle] = useState({ xAxis: \"Months\", yAxis: \"Revenue\" })\n const [total, setTotal] = useState({ currentTotal: 0, prevTotal: 0 })\n\n\n const [isLoaded, setIsLoaded] = useState(false);\n const [List, setList] = useState([]);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadRevenueTrend();\n }, [period])\n\n const loadRevenueTrend = () => {\n GetRevenueTrend_api(period).then(res => {\n if (res !== undefined) {\n\n var dt = new Date();\n var currentyear = dt.getFullYear();\n var prevyear = currentyear - 1;\n var data = res;\n var label_data = [];\n var thisyear_data = [];\n var prevyear_data = [];\n var currenttotal = 0;\n var prevtotal = 0;\n data.forEach(item => {\n const val1 = item.series1Revenue !== null ? item.series1Revenue.toFixed(2) : 0\n const val2 = item.series2Revenue !== null ? item.series2Revenue.toFixed(2) : 0\n currenttotal = data.length > 0 ? data.reduce((a, b) => a + b.series1Revenue, 0).toFixed(2) : 0;\n prevtotal = data.length > 0 ? data.reduce((a, b) => a + b.series2Revenue, 0).toFixed(2) : 0;\n label_data.push(item.series1Label)\n thisyear_data.push(val1)\n prevyear_data.push(val2)\n });\n setList(res)\n \n setTotal({ currentTotal: currenttotal, prevTotal: prevtotal })\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data, prevdata: prevyear_data, label2: prevyear + \" - $\" + prevtotal, label1: currentyear + \" - $\" + currenttotal })\n }\n setIsLoaded(true)\n }).catch();\n }\n\n\n\n return (\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 {isLoaded?\n
    \n

    Revenue Trend

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

    {title}

    \n\n
    \n\n
    \n \n \n \n \n \n \n \n \n \n {List.length > 0 ?\n List.map(item => (\n \n \n \n \n \n \n \n ))\n\n : \"No Record Found.\"\n }\n\n \n
    PeriodTicketsEstimateInvoicesRevenue
    {item.series1Label}{item.series1Tickets}{item.series1Estimates}{item.series1Invoices}{item.series1Revenue !== null ? \"$\" + item.series1Revenue.toFixed(2) : \"0\"}
    \n\n
    \n
    \n\n
    \n :
    \"\"
    }\n
    \n\n\n\n
    \n\n
    \n
    \n )\n}\n\nexport default RevenueTrend\n","import React from 'react';\nimport { useState } from 'react';\nimport Chart from 'react-apexcharts';\n\nexport default function PieChartResponseTime(props) {\n\n\n// Making Series Array to show in Graph\n\nconst series = [props.data.part1,props.data.part2]\n return (\n\n <>\n
    \n \n \n
    \n \n\n\n );\n}\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport PieChartResponseTime from '../../Charts/PieChartResponseTime'\nimport { GetReport_AvgResponseTime_api } from '../../functions/reports'\nimport { LoadOrderType_api } from '../../functions/orderType'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\n\nfunction AvgResponseTime() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n\n const [period, setPeriod] = useState(\"This Year\");\n\n const [isLoaded, setIsLoaded] = useState(false);\n const [data, setData] = useState([]);\n const [List, setList] = useState([]);\n\n const [PieChartData, setPieChartData] = useState({ part1: 0, part2: 0,})\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadDataList();\n }, [])\n\n const loadDataList = () => {\n setIsLoaded(false)\n GetReport_AvgResponseTime_api(period).then(res => {\n if (res !== undefined) {\n setData(res)\n setPieChartData({part2:res.entryToScheduled,part1:res.scheduledToVisit})\n if (res.tbldata.length > 0) {\n setList(res.tbldata)\n }\n else {\n setList([])\n }\n setIsLoaded(true)\n }\n }).catch();\n }\n const loadReport = () => {\n loadDataList();\n }\n\n\n\n // const loadReport = () => {\n // var _period = period;\n // var _fromdate = fromDate;\n // var _todate = toDate;\n // var _technicialID = (selectedTechnicianID == undefined || selectedTechnicianID == null) ? 0 : selectedTechnicianID;\n // if (period === \"Custom\") {\n // if (_fromdate == \"\" || _fromdate == null) {\n // return toast.error(\"Please select from date.\")\n // }\n // else {\n // _fromdate = moment(_fromdate).format(\"YYYY-MM-DD\")\n // }\n // if (_todate == \"\" || _todate == null) {\n // return toast.error(\"Please select to date.\")\n // }\n // else {\n // _todate = moment(_todate).format(\"YYYY-MM-DD\")\n // }\n // }\n // setIsLoaded(false);\n // var req = {\n // \"periodtype\": _period,\n // \"fromdate\": _fromdate,\n // \"todate\": _todate,\n // \"techid\": Number(_technicialID)\n // }\n // Get(req).then(res => {\n // const result = res;\n // if (result != undefined) {\n // if (result == null) {\n // setList([])\n // }\n // else {\n // setList(result)\n // let data = result.data;\n // let dataset = [];\n // if (data.length > 0) {\n // for (var i = 0; i < data.length; i++) {\n // if (data[i].invoices != undefined && data[i].invoices != null) {\n // for (var j = 0; j < data[i].invoices.length; j++) {\n // dataset.push(\n // {\n // TechnicianID: data[i].technicianID,\n // Technician: data[i].technicianname,\n // Revenue: data[i].revenue,\n // Customer: data[i].invoices[j].customername,\n // ponumber: data[i].invoices[j].ponumber,\n // amount: data[i].invoices[j].invoiceamt\n // }\n // )\n // }\n // }\n // }\n // }\n // {\n // dataset.push({\n // TechnicianID: 0,\n // Technician: \"\",\n // Revenue: \"\",\n // Customer: \"\",\n // ponumber: \"\",\n // amount: 0\n // })\n // }\n // setExcelDataSet(dataset);\n // console.log(\"Dataset\", dataset)\n // //var data = result.data;\n // if (data.length > recordshowperpage) {\n // var totalpage = data.length / recordshowperpage;\n // var reminder = data.length % recordshowperpage;\n // var pages = [];\n // for (var i = 1; i <= totalpage; i++) {\n // pages.push(i);\n // }\n // if (reminder == 0) {\n // //pages = pages;\n // }\n // else {\n // pages.push(pages.length + 1)\n // }\n // setPaginationarr(pages);\n // }\n // }\n // }\n // else {\n // setPaginationarr([]);\n // }\n\n // setIsLoaded(true);\n // }).catch();\n // }\n\n return (\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{isLoaded?\n
    \n
    \n

    Average Response Time for {period.toLowerCase()} is {data.avgResponseTime}

    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n {List.length > 0 ?\n List.map(item => (\n \n \n \n \n \n \n \n \n \n\n ))\n : \"No Record Found\"\n }\n\n \n
    Ticket IDCustomerOrder TypeTicket DateEntry to Scheduled Schedule to VisitResponse Time
    {item.ticketno}{item.customername}{item.ordertype}{item.ticketdate}{item.entryToScheduled}{item.scheduledToVisit}{item.responseTime}
    \n\n
    \n
    \n
    \n
    \n
    \n Entry\n \n
    \n
    \n
    \n
    \n :
    \"\"
    }\n
    \n
    \n
    \n\n \n
    \n )\n}\n\nexport default AvgResponseTime\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetReport_AvgTicketLifeCycle_api } from '../../functions/reports'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\nimport DoubleLineBasic from '../../Charts/DoubleLineChart'\nimport SimplePieChart from '../../Charts/SimplePieChart'\n\nfunction AverageTicketLifecycle() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n const [PieChartData, setPieChartData] = useState({ part1: 0, part2: 0, part3: 0, part4: 0 })\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n\n const [period, setPeriod] = useState(\"This Year\");\n\n const [isLoaded, setIsLoaded] = useState(false);\n const [data, setData] = useState([]);\n const [List, setList] = useState([]);\n\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadDataList();\n }, [])\n const loadDataList = () => {\n setIsLoaded(false)\n GetReport_AvgTicketLifeCycle_api(period).then(res => {\n if (res !== undefined) {\n setData(res)\n setPieChartData({ part1: res.responseTime, part2: res.working, part3: res.estimateApproval, part4: res.invoicePaid })\n if (res.tbldata.length > 0) {\n setList(res.tbldata)\n }\n else {\n setList([])\n }\n setIsLoaded(true)\n }\n }).catch();\n }\n const loadReport = () => {\n loadDataList();\n }\n\n // const loadReport = () => {\n // var _period = period;\n // var _fromdate = fromDate;\n // var _todate = toDate;\n // var _technicialID = (selectedTechnicianID == undefined || selectedTechnicianID == null) ? 0 : selectedTechnicianID;\n // if (period === \"Custom\") {\n // if (_fromdate == \"\" || _fromdate == null) {\n // return toast.error(\"Please select from date.\")\n // }\n // else {\n // _fromdate = moment(_fromdate).format(\"YYYY-MM-DD\")\n // }\n // if (_todate == \"\" || _todate == null) {\n // return toast.error(\"Please select to date.\")\n // }\n // else {\n // _todate = moment(_todate).format(\"YYYY-MM-DD\")\n // }\n // }\n // setIsLoaded(false);\n // var req = {\n // \"periodtype\": _period,\n // \"fromdate\": _fromdate,\n // \"todate\": _todate,\n // \"techid\": Number(_technicialID)\n // }\n // GetReport_RevenueByTech_api(req).then(res => {\n // const result = res;\n // if (result != undefined) {\n // if (result == null) {\n // setList([])\n // }\n // else {\n // setList(result)\n // let data = result.data;\n // let dataset = [];\n // if (data.length > 0) {\n // for (var i = 0; i < data.length; i++) {\n // if (data[i].invoices != undefined && data[i].invoices != null) {\n // for (var j = 0; j < data[i].invoices.length; j++) {\n // dataset.push(\n // {\n // TechnicianID: data[i].technicianID,\n // Technician: data[i].technicianname,\n // Revenue: data[i].revenue,\n // Customer: data[i].invoices[j].customername,\n // ponumber: data[i].invoices[j].ponumber,\n // amount: data[i].invoices[j].invoiceamt\n // }\n // )\n // }\n // }\n // }\n // }\n // {\n // dataset.push({\n // TechnicianID: 0,\n // Technician: \"\",\n // Revenue: \"\",\n // Customer: \"\",\n // ponumber: \"\",\n // amount: 0\n // })\n // }\n // setExcelDataSet(dataset);\n // console.log(\"Dataset\", dataset)\n // //var data = result.data;\n // if (data.length > recordshowperpage) {\n // var totalpage = data.length / recordshowperpage;\n // var reminder = data.length % recordshowperpage;\n // var pages = [];\n // for (var i = 1; i <= totalpage; i++) {\n // pages.push(i);\n // }\n // if (reminder == 0) {\n // //pages = pages;\n // }\n // else {\n // pages.push(pages.length + 1)\n // }\n // setPaginationarr(pages);\n // }\n // }\n // }\n // else {\n // setPaginationarr([]);\n // }\n\n // setIsLoaded(true);\n // }).catch();\n // }\n\n return (\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 {isLoaded ?\n
    \n
    \n

    Average Ticket Lifecycle for {period.toLowerCase()} is {data.lifecycleTime}

    \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n {List.length > 0 ?\n List.map(item => (\n \n \n \n \n \n \n \n \n \n \n \n\n ))\n : \"No Record Found\"\n }\n \n
    Ticket IDCustomerOrder TypeTicket DateResponse Time WorkingEstimate ApprovalInvoice PaidTotal Timing
    {item.ticketno}{item.customername}{item.ordertype}{item.ticketdate}{item.responseTime}{item.working}{item.estimateApproval}{item.invoicePaid}{item.totalTiming}
    \n\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n :
    \"\"
    }\n
    \n
    \n
    \n\n
    \n )\n}\n\nexport default AverageTicketLifecycle\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetReport_EstimatedActual_api } from '../../functions/reports'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\nimport DoubleLineBasic from '../../Charts/DoubleLineChart'\n\nfunction EstimatedActualTime() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n\n const [xAsisData, setxAxisData] = useState([])\n const [lineChartData, setLineChartData] = useState({ currentdata: [], prevdata: [], label1: \"\", label2: \"\" })\n const [lineChartTitle, setLineChartTitle] = useState({ xAxis: \"\", yAxis: \"\" })\n\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n\n\n const [period, setPeriod] = useState(\"This Year\");\n\n const [isLoaded, setIsLoaded] = useState(false);\n const [List, setList] = useState([]);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadDataList();\n }, [])\n\n const loadDataList = () => {\n setIsLoaded(false)\n GetReport_EstimatedActual_api(period).then(res => {\n if (res !== undefined) {\n if (res.tbldata.length > 0) {\n setList(res.tbldata)\n }\n else {\n setList([])\n }\n if (res.chartdata.length > 0) {\n var data = res.chartdata;\n var label_data = [];\n var thisyear_data = [];\n var prevyear_data = [];\n data.forEach(item => {\n label_data.push(item.estimatedlabel)\n thisyear_data.push(item.estimatedvalue)\n prevyear_data.push(item.actualvalue)\n });\n\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data, prevdata: prevyear_data,label1:\"Estimated\",label2:\"Actual Target\" })\n }\n else {\n var data = res;\n var label_data = [];\n var thisyear_data = [];\n var prevyear_data = [];\n\n setxAxisData(label_data)\n setLineChartData({ currentdata: thisyear_data, prevdata: prevyear_data })\n }\n setIsLoaded(true)\n console.log(\"res\",res.tbldata,res.chartdata)\n }\n }).catch();\n }\n\n const loadReport = () => {\n loadDataList();\n }\n\n // const loadReport = () => {\n // var _period = period;\n // var _fromdate = fromDate;\n // var _todate = toDate;\n // var _technicialID = (selectedTechnicianID == undefined || selectedTechnicianID == null) ? 0 : selectedTechnicianID;\n // if (period === \"Custom\") {\n // if (_fromdate == \"\" || _fromdate == null) {\n // return toast.error(\"Please select from date.\")\n // }\n // else {\n // _fromdate = moment(_fromdate).format(\"YYYY-MM-DD\")\n // }\n // if (_todate == \"\" || _todate == null) {\n // return toast.error(\"Please select to date.\")\n // }\n // else {\n // _todate = moment(_todate).format(\"YYYY-MM-DD\")\n // }\n // }\n // setIsLoaded(false);\n // var req = {\n // \"periodtype\": _period,\n // \"fromdate\": _fromdate,\n // \"todate\": _todate,\n // \"techid\": Number(_technicialID)\n // }\n // GetReport_RevenueByTech_api(req).then(res => {\n // const result = res;\n // if (result != undefined) {\n // if (result == null) {\n // setList([])\n // }\n // else {\n // setList(result)\n // let data = result.data;\n // let dataset = [];\n // if (data.length > 0) {\n // for (var i = 0; i < data.length; i++) {\n // if (data[i].invoices != undefined && data[i].invoices != null) {\n // for (var j = 0; j < data[i].invoices.length; j++) {\n // dataset.push(\n // {\n // TechnicianID: data[i].technicianID,\n // Technician: data[i].technicianname,\n // Revenue: data[i].revenue,\n // Customer: data[i].invoices[j].customername,\n // ponumber: data[i].invoices[j].ponumber,\n // amount: data[i].invoices[j].invoiceamt\n // }\n // )\n // }\n // }\n // }\n // }\n // {\n // dataset.push({\n // TechnicianID: 0,\n // Technician: \"\",\n // Revenue: \"\",\n // Customer: \"\",\n // ponumber: \"\",\n // amount: 0\n // })\n // }\n // setExcelDataSet(dataset);\n // console.log(\"Dataset\", dataset)\n // //var data = result.data;\n // if (data.length > recordshowperpage) {\n // var totalpage = data.length / recordshowperpage;\n // var reminder = data.length % recordshowperpage;\n // var pages = [];\n // for (var i = 1; i <= totalpage; i++) {\n // pages.push(i);\n // }\n // if (reminder == 0) {\n // //pages = pages;\n // }\n // else {\n // pages.push(pages.length + 1)\n // }\n // setPaginationarr(pages);\n // }\n // }\n // }\n // else {\n // setPaginationarr([]);\n // }\n\n // setIsLoaded(true);\n // }).catch();\n // }\n\n return (\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 Export to Excel} >\n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n {isLoaded ?\n
    \n

    Estimated V/s. Actual Time

    \n
    \n \n
    \n
    \n :
    \"\"
    }\n\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n {List.length > 0 ?\n List.map(item => (\n \n \n \n \n \n \n \n \n ))\n\n : \"No Record Found.\"\n }\n \n
    Ticket IDCustomerPO NumberTicket DateEstimated TimeActual Time
    {item.ticketno}{item.customername}{item.ponumber}{item.ticketdate}{item.estimatedTime}{item.actualTime}
    \n\n
    \n
    \n\n
    \n
    \n
    \n\n\n
    \n )\n}\n\nexport default EstimatedActualTime\n","import React, { useState, useEffect } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport { Link } from 'react-router-dom'\nimport { LoadTechnicians_api } from '../../functions/users'\nimport { GetReport_AvgRevenuePerTech_api } from '../../functions/reports'\nimport moment from 'moment'\nimport ReactExport from \"react-data-export\";\n\n\nfunction AverageRevenuePertech() {\n const ExcelFile = ReactExport.ExcelFile;\n const ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\n const ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\n const [excelDataSet, setExcelDataSet] = useState([]);\n\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n\n const [period, setPeriod] = useState(\"This Year\");\n const [filterid, setFilterid] = useState(0);\n\n const [technicianList, setTechnicianlist] = useState([]);\n const [isLoaded, setIsLoaded] = useState(false);\n\n const [List, setList] = useState([]);\n let recordshowperpage = 30;\n\n useEffect(() => {\n loadTechnicians();\n LoadDataList();\n }, [])\n\n\n const loadReport = () => {\n LoadDataList();\n }\n\n const LoadDataList = () => {\n setIsLoaded(false)\n var req = {\n \"period\": period,\n \"id\": Number(filterid),\n \"fromdate\": \"\",\n \"todate\": \"\"\n }\n GetReport_AvgRevenuePerTech_api(req).then(res => {\n if (res !== undefined) {\n if (res.length > 0) {\n setList(res)\n\n }\n else {\n setList([])\n }\n\n setIsLoaded(true)\n }\n })\n }\n\n const loadTechnicians = () => {\n LoadTechnicians_api().then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setTechnicianlist([])\n }\n else\n setTechnicianlist(result.data);\n }\n\n }).catch();\n }\n\n\n const AccordianChange = (item) => {\n var accordionitem = item;\n window.$(\"#\" + accordionitem).slideToggle().parent().siblings().find(\".accordion-content\").slideUp();\n window.$(\"#\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + \"item_\" + accordionitem).toggleClass(\"active-title\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title\").removeClass(\"active-title\");\n window.$(\"i.fa-chevron-down\", \"#\" + item).toggleClass(\"chevron-top\");\n window.$(\"#\" + accordionitem).parent().siblings().find(\".accordion-title i.fa-chevron-down\").removeClass(\"chevron-top\");\n }\n\n // const loadReport = () => {\n // LoadDataList();\n // var _period = period;\n // var _fromdate = fromDate;\n // var _todate = toDate;\n // var _technicialID = (selectedTechnicianID == undefined || selectedTechnicianID == null) ? 0 : selectedTechnicianID;\n // if (period === \"Custom\") {\n // if (_fromdate == \"\" || _fromdate == null) {\n // return toast.error(\"Please select from date.\")\n // }\n // else {\n // _fromdate = moment(_fromdate).format(\"YYYY-MM-DD\")\n // }\n // if (_todate == \"\" || _todate == null) {\n // return toast.error(\"Please select to date.\")\n // }\n // else {\n // _todate = moment(_todate).format(\"YYYY-MM-DD\")\n // }\n // }\n // setIsLoaded(false);\n // var req = {\n // \"periodtype\": _period,\n // \"fromdate\": _fromdate,\n // \"todate\": _todate,\n // \"techid\": Number(_technicialID)\n // }\n // GetReport_AvgRevenuePerTech_api(req).then(res => {\n // const result = res;\n // if (result != undefined) {\n // if (result == null) {\n // setList([])\n // }\n // else {\n // setList(result)\n // let data = result.data;\n // let dataset = [];\n // if (data.length > 0) {\n // for (var i = 0; i < data.length; i++) {\n // if (data[i].invoices != undefined && data[i].invoices != null) {\n // for (var j = 0; j < data[i].invoices.length; j++) {\n // dataset.push(\n // {\n // TechnicianID: data[i].technicianID,\n // Technician: data[i].technicianname,\n // Revenue: data[i].revenue,\n // Customer: data[i].invoices[j].customername,\n // ponumber: data[i].invoices[j].ponumber,\n // amount: data[i].invoices[j].invoiceamt\n // }\n // )\n // }\n // }\n // }\n // }\n // {\n // dataset.push({\n // TechnicianID: 0,\n // Technician: \"\",\n // Revenue: \"\",\n // Customer: \"\",\n // ponumber: \"\",\n // amount: 0\n // })\n // }\n // setExcelDataSet(dataset);\n // console.log(\"Dataset\", dataset)\n // //var data = result.data;\n // if (data.length > recordshowperpage) {\n // var totalpage = data.length / recordshowperpage;\n // var reminder = data.length % recordshowperpage;\n // var pages = [];\n // for (var i = 1; i <= totalpage; i++) {\n // pages.push(i);\n // }\n // if (reminder == 0) {\n // //pages = pages;\n // }\n // else {\n // pages.push(pages.length + 1)\n // }\n // setPaginationarr(pages);\n // }\n // }\n // }\n // else {\n // setPaginationarr([]);\n // }\n\n // setIsLoaded(true);\n // }).catch();\n //}\n\n return (\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 Export to Excel} >\n \n \n \n \n \n \n \n
    \n
    \n
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n\n\n
    \n

    Average Revenue Per Tech

    \n
    \n
    \n
    \n
    Technician
    \n
    \n
    \n
    Average Revenue
    \n
    \n
    \n
    Total Revenue
    \n
    \n
    \n\n
    \n\n {\n isLoaded == false ?
    \"\"
    \n :\n
    \n {\n List != undefined &&\n <>\n {\n List.length == 0\n ?\n \"No Record Found.\"\n :\n List.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map((item, index) => (\n <>\n\n
    \n
    AccordianChange(`item-${index}`)}>\n
    \n
    \n

    {item.name}

    \n
    \n
    \n

    {item.avgRevenue!==0?\"$\" +item.avgRevenue:\"0\"}

    \n
    \n
    \n
    {item.totalRevenue}
    \n \n
    \n
    \n
    \n\n
    \n
    \n \n \n \n \n \n \n \n \n \n \n\n \n\n {\n\n item.details != undefined &&\n\n item.details.length == 0\n ?\n \"No Record Found.\"\n :\n item.details != null &&\n item.details.map(inneritem => (\n \n \n \n \n \n \n \n ))\n }\n \n
    Ticket No.CustomerPO NumberTicket DateAmount
    {inneritem.ticketno}{inneritem.customername}{inneritem.ponumber}{inneritem.ticketdate}{inneritem.revenue!==0?\"$\"+ inneritem.revenue:\"0\"}
    \n
    \n
    \n
    \n \n ))\n }\n \n }\n
    \n }\n \n
    \n\n
    \n
    \n
    \n
    \n )\n}\n\nexport default AverageRevenuePertech\n","import React, { useEffect, useState } from 'react'\nimport { toast } from 'react-toastify'\nimport Header from '../../components/nav/Header'\nimport Sidebar from '../../components/nav/Sidebar'\nimport TicketDetails from '../../components/popups/TicketDetails'\nimport TicketFilters from '../../components/popups/TicketFilters'\nimport { filterslist_api, deletedticketList_api, RestoreTicket_api } from '../../functions/tickets'\nimport { useHistory } from 'react-router-dom'\nimport Moment from 'moment';\nimport { LoadCustomers_api } from '../../functions/customers'\nimport CustomerAddUpdateForm from '../../forms/CustomerAddUpdateForm'\nimport CreateTicket from '../../forms/CreateTicket'\n\nimport localeCompare from \"locale-compare\";\n\nfunction DeletedTickets(props) {\n\n const history = useHistory();\n var urlstatus = props.match.params.status;\n var date_lo = new Date();\n var formateddate = Moment(date_lo).format(\"yyyy-MM-DD\");\n const usertype = localStorage.getItem(\"usertype\");\n const [statuslist, setstatuslist] = useState([]);\n const [assigneelist, setassigneelist] = useState([]);\n const [fromdate, setFromdate] = useState(\"\");\n const [todate, setTodate] = useState(\"\");\n const [status, setStatus] = useState(urlstatus !== undefined ? urlstatus : \"all\");\n const [statusid, setStatusid] = useState(urlstatus);\n const [assigntoId, setAssigntoId] = useState(0);\n const [ticketList, setTicketList] = useState([]);\n const [selectedTicketId, setSelectedTicketId] = useState(0);\n var userid = Number(localStorage.getItem(\"userid\"));\n const [paginationarr, setPaginationarr] = useState([]);\n const [selectedPageNo, setSelectedPageNo] = useState(1);\n const [totaltickets, setTotalTickets] = useState(\"\");\n const [txtsearch, setTxtsearch] = useState(\"\");\n const [ticketid, setTicketId] = useState(0);\n const [isapplyFilter_status, setIsApplyfilter_status] = useState(urlstatus != undefined ? true : false);\n const [isapplyFilter_assignto, setIsApplyfilter_assignto] = useState(false);\n const [isapplyFilter_date, setIsApplyfilter_date] = useState(false);\n const [isLoaded, setIsLoaded] = useState(false);\n const [keypointRefresh, setKeyPointsRefresh] = useState(0);\n const [keyStatus, setKeyStatus] = useState(\"all\");\n const [selectedCustomerID, setSelectedCustomerID] = useState(\"\");\n const [screentype, setScreenType] = useState(\"Create\");\n const [customerinfo, setCustomerinfo] = useState({});\n const [testId, setTestId] = useState(0);\n const [txtcustomername, setCustomername] = useState(\"\");\n const [customerList, setCustomerList] = useState([]);\n const [selectedCustomerName, setSelectedCustomerName] = useState(\"\");\n\n\n const [sortingDirection, setSortingDirection] = useState(\"asc\")\n\n let recordshowperpage = 10;\n\n useEffect(() => {\n handleSearch();\n window.$(\"#searchresultarea\").hide();\n window.$(\"#msgdiv\").hide();\n }, []);\n\n\n useEffect(() => {\n handleSearch();\n }, [txtsearch]);\n\n\n\n const handleSearch = () => {\n setSelectedPageNo(1)\n setPaginationarr([])\n setIsLoaded(false);\n var req = {\n \"userid\": userid,\n \"fromdate\": fromdate,\n \"todate\": todate,\n \"status\": \"all\",\n \"searchkeyword\": txtsearch,\n \"assigntouserid\": assigntoId\n }\n deletedticketList_api(req).then(res => {\n setIsLoaded(true)\n if (res != undefined) {\n //toast.success(res.message);\n window.$(\"#Filters\").modal('hide');\n if (fromdate != \"\" && todate != \"\")\n setIsApplyfilter_date(true)\n if (status != \"\")\n setIsApplyfilter_status(true)\n if (assigntoId != 0)\n setIsApplyfilter_assignto(true)\n\n setTotalTickets(res.result);\n var ticklist = res.tickets;\n if (ticklist != undefined) {\n setTicketList(res.tickets);\n console.log(\"ticketList\", res.tickets)\n if (ticklist.length > recordshowperpage) {\n var totalpage = ticklist.length / recordshowperpage;\n var reminder = ticklist.length % recordshowperpage;\n var pages = [];\n for (var i = 1; i <= totalpage; i++) {\n pages.push(i);\n }\n if (reminder == 0) {\n //pages = pages;\n }\n else {\n pages.push(pages.length + 1)\n }\n setPaginationarr(pages);\n //setPaginationarr(reminder == 0 ? totalpage : totalpage + (totalpage + 1))\n }\n else {\n setPaginationarr([]);\n //setTicketList([]);\n }\n }\n else {\n setPaginationarr([]);\n setTicketList([]);\n }\n\n }\n\n })\n .catch(error => setIsLoaded(true));\n\n }\n\n const loadCustomers = (txtsearch) => {\n setIsLoaded(false);\n LoadCustomers_api(\"All\", txtsearch).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n setCustomerList([])\n }\n else {\n setCustomerList(result.data);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const SelectNewAddedCustomer = (customerid) => {\n LoadCustomers_api(\"All\", txtcustomername).then(res => {\n const result = res;\n if (result != undefined) {\n if (result.data == null) {\n\n }\n else {\n var cust = result.data.filter(x => x.customerid == customerid)[0];\n ChooseCustomer(cust);\n }\n }\n setIsLoaded(true);\n }).catch();\n }\n\n const ChooseCustomer = (item) => {\n setSelectedCustomerName(item.customername)\n setSelectedCustomerID(item.customerid)\n window.$(\"#searchresultarea\").hide();\n setCustomername(item.customername)\n }\n\n const showCustomerCreationPopUp = () => {\n setCustomername(\"\");\n setTestId(testId + 1)\n window.$(\"#CustomerFormPop\").modal('show');\n window.$(\"#searchresultarea\").hide();\n }\n\n const refreshDashboard = () => {\n setKeyPointsRefresh(keypointRefresh + 1);\n handleSearch()\n setCustomername(\"\");\n setSelectedCustomerID(0);\n window.$(\"#msgdiv\").show();\n }\n\n const SearchCustomer = (e) => {\n setCustomername(e.target.value);\n if (e.target.value.length < 2) {\n window.$(\"#searchresultarea\").hide();\n\n }\n else {\n window.$(\"#searchresultarea\").show();\n loadCustomers(e.target.value);\n }\n\n }\n\n const showCreateTicketPopUp = () => {\n if (selectedCustomerID == 0)\n return toast.error('Please select customer')\n\n setTestId(testId + 1)\n window.$(\"#CreateTicket\").modal('show');\n\n }\n\n\n\n var tickid = 0;\n const OpenTicketDetails = (ticketid) => {\n setSelectedTicketId(ticketid);\n tickid = ticketid;\n localStorage.setItem(\"ticketid\", ticketid)\n window.$(\"#TicketDetails\").modal('show');\n }\n\n const compareBy = (key, direction) => {\n if (direction === \"asc\") {\n setSortingDirection(\"desc\")\n return function (a, b) {\n if (a[key] < b[key]) return -1;\n if (a[key] > b[key]) return 1;\n return 0;\n };\n }\n else if (direction === \"desc\") {\n setSortingDirection(\"asc\")\n return function (a, b) {\n if (a[key] < b[key]) return 1;\n if (a[key] > b[key]) return -1;\n return 0;\n };\n }\n }\n\n const sortBy = (key, direction) => {\n let array = [...ticketList];\n array.sort(compareBy(key, direction));\n setTicketList(array);\n }\n\n\n const RestoreTicket = (id) => {\n RestoreTicket_api(id).then(res => {\n if (res != undefined) {\n handleSearch();\n return toast.success(res.message); \n }\n }).catch();\n }\n\n return (\n
    \n
    \n
    \n \n {\n // selectedTicketId != 0\n // &&\n \n }\n\n {\n usertype === \"Dispatcher\" &&\n <>\n \n \n \n }\n\n\n \n\n
    \n {/* */}\n
    \n {/* */}\n
    \n
    \n
    \n

    \n Deleted Tickets\n

    \n
    \n
    \n setTxtsearch(e.target.value)} />\n \n
    \n \n
    \n
    \n
    \n {/* */}\n
    \n
    \n
    {totaltickets}  \n
    \n
    \n
    \n {/* */}\n {\n isLoaded == false ?
    \"\"
    \n :\n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\n ticketList.length == 0\n ?\n \"No Record Found\"\n :\n ticketList.slice(selectedPageNo * recordshowperpage - recordshowperpage, selectedPageNo * recordshowperpage).map(item => (\n \n \n \n \n \n \n {\n (item.technicianname == \"\" || item.technicianname == null)\n ?\n \n :\n \n }\n\n \n \n\n \n\n {/* added by Sonali 31-03-22 feedback */}\n {\n keyStatus !== \"Draft Invoice\" && keyStatus !== \"Draft Estimate\" && keyStatus !== \"Submitted Estimate\" ?\n \n : ''\n }\n \n ))\n }\n \n
    sortBy('ticketid', sortingDirection)}>Ticket ID sortBy('technicianname', sortingDirection)}>Description sortBy('customername', sortingDirection)}>Customer sortBy('jobname', sortingDirection)}>Job Name sortBy('jobcontactname', sortingDirection)}>Job Address sortBy('technicianname', sortingDirection)}>Assigned To sortBy('scheduledate', sortingDirection)}>Schedule On sortBy('priority', sortingDirection)}>PriorityStatus
    usertype !== \"Dispatcher\" ? OpenTicketDetails(item.ticketid) : ''} style={usertype !== \"Dispatcher\" ? { cursor: 'pointer' } : { cursor: \"default\" }}>{item.ticketid}{item.ordertype}{item.customername}{item.jobname}{item.address}Not Assigned\n {/* {\n item.profilepic != null && item.profilepic != \"NA\"\n &&\n \n } */}\n\n {item.technicianname}{item.scheduledate}
    {item.scheduletime}
    {item.priority}{item.status}

    {item.statusactivity}

    \n RestoreTicket(item.ticketid)}>Restore
    \n
    \n }\n {/* */}\n
    \n\n \n
    \n
    \n {/* */}\n
    \n {/* */}\n\n
    \n {/* */}\n\n
    \n\n
    \n\n\n\n )\n}\n\nexport default DeletedTickets\n","\nimport React from 'react'\nimport { Switch, Route, HashRouter } from 'react-router-dom'\nimport { BrowserRouter } from 'react-router-dom'\nimport Login from './pages/auth/Login'\nimport { ToastContainer, Slide } from 'react-toastify'\nimport \"react-toastify/dist/ReactToastify.css\"\nimport Users from './pages/admin/Users'\nimport Customers from './pages/admin/Customers'\nimport Dashboard from './pages/admin/Dashboard'\nimport Tickets from './pages/admin/Tickets'\nimport Invoices from './pages/admin/Invoices'\nimport Estimates from './pages/admin/Estimates'\nimport OrderType from './pages/admin/OrderType'\nimport ResetPassword1 from './pages/auth/ResetPassword1'\nimport ResetPassword2 from './pages/auth/ResetPassword2'\nimport ResetPassword3 from './pages/auth/ResetPassword3'\nimport ResetPassword4 from './pages/auth/ResetPassword4'\nimport RevenueByTech from './components/reports/RevenueByTech'\nimport RevenueByCustomer from './components/reports/RevenueByCustomer'\nimport CollectionReport from './components/reports/CollectionReport'\nimport TechPerformance from './components/reports/TechPerformance'\nimport MyProvider from './contextapi/MyProvider'\nimport PrivateRoute from './privateRoutes/PrivateRoute'\nimport AdminRoutes from './privateRoutes/AdminRoutes'\nimport TechUtilization from './components/reports/TechUtilization'\nimport Services from './pages/admin/Services'\nimport FullCalendarWidget from './pages/admin/Fullcalender'\nimport FullCalendarWidget2 from './pages/admin/Fullcalender2'\nimport TicketDetails from './components/popups/CalendarTicketDetails'\nimport DashboardAnalytics from './pages/admin/DashboardAnalytics'\nimport AvgTicketResolTime from './pages/admin/AvgTicketResolTime'\nimport TechOccupancy from './pages/admin/TechOccupancy'\nimport RevenueTrend from './pages/admin/RevenueTrend'\nimport AvgResponseTime from './pages/admin/AverageResponseTime'\nimport AverageTicketLifecycle from './pages/admin/AverageTicketLifecycle'\nimport EstimatedActualTime from './pages/admin/EstimatedActualTime'\nimport AverageRevenuePertech from './pages/admin/AverageRevenuePertech'\n\nimport DeletedTickets from './pages/admin/DeletedTickets' // added by sonali 01-04-22 feedback\n\n\n\nfunction App() {\n return (\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 {/* added by Sonali 01-04-22 feedback */}\n {/* */}\n \n \n
    \n
    \n );\n}\n\nexport default App;\n","import {combineReducers} from 'redux'\nimport {userReducer} from './userReducer'\n\nconst rootReducer = combineReducers({\n user:userReducer\n})\n\nexport default rootReducer;","export const userReducer = (state = null, action) => {\n switch (action.type) {\n case \"LOGGED_IN_USER\":\n return action.payload;\n case \"LOGOUT\":\n return action.payload;\n default:\n return state; \n }\n}","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport { BrowserRouter } from 'react-router-dom'\nimport {createStore} from 'redux'\nimport {Provider} from 'react-redux'\nimport {composeWithDevTools} from 'redux-devtools-extension'\nimport rootReducer from './reducers/index'\n\nconst store = createStore(rootReducer,composeWithDevTools());\n\nReactDOM.render(\n // \n \n {/* */}\n \n {/* */}\n ,\n // ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n\n"],"sourceRoot":""}