PageSourceSearch

https://enchanting-cocada-910953.netlify.app/_next/static/chunks/p…/hrms-attendance-b1d19e6a181f2985.js

js enchanting-cocada-910953.netlify.app collected 2026-10-03 10:44:14 UTC 39,338 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[841],{83513:function(e,t,a){(window.__NEXT_P=window.__NEXT_P||[]).push(["/integration/hrms-attendance",function(){return a(2903)}])},2903:function(e,t,a){"use strict";a.r(t),a.d(t,{__N_SSG:function(){return D},default:function(){return M}});var s=a(4637),r=a(59496),n=a(42135),l=a(98693),o=a(47517),i=a(37792),d=a(62248),c=a(29397),x=a(19923),m=a.n(x),h=a(83412);function p(){return(0,s.jsx)("section",{className:" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-highlight-black ","aria-labelledby":"hero-heading",children:(0,s.jsx)("div",{className:"container mx-auto px-8",children:(0,s.jsxs)("div",{className:"max-w-6xl mx-auto text-center",children:[(0,s.jsxs)("header",{children:[(0,s.jsxs)("h1",{id:"hero-heading",className:"main-heading font-bold font-gilroy text-white mb-4 lg:mb-8",children:["Stop chasing attendance. Automate it from device to ",(0,s.jsx)(i.Z,{variant:"blue",children:"payroll"})]}),(0,s.jsx)("p",{className:"sub-heading text-white mb-4 lg:mb-8 max-w-6xl mx-auto leading-relaxed",children:"Connect any attendance device you already own, biometric, face, RFID, turnstile or mobile, to ERPNext and Frappe HR. Attendance marks itself by shift, and payroll runs with PF, ESI, PT and TDS built in. No manual registers, no re-keyed punches, and no month-end scramble. Works with your existing hardware. ZKTeco and ESSL out of the box, most other devices through an API or a custom connector."})]}),(0,s.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-3 gap-6 max-w-3xl mx-auto mb-4 lg:mb-8 mt-8",children:[(0,s.jsx)(h.Zb,{className:"border-0 bg-white rounded-xl shadow-md hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 text-center",children:(0,s.jsxs)(h.aY,{className:"p-6",children:[(0,s.jsx)("div",{className:"text-xl lg:text-2xl font-bold font-gilroy mb-1",style:{color:"#0038ff"},children:"ZKTeco / ESSL"}),(0,s.jsx)("p",{className:"text-sm text-brand-black",children:"Out of the Box"})]})}),(0,s.jsx)(h.Zb,{className:"border-0 bg-white rounded-xl shadow-md hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 text-center",children:(0,s.jsxs)(h.aY,{className:"p-6",children:[(0,s.jsx)("div",{className:"text-xl lg:text-2xl font-bold font-gilroy mb-1",style:{color:"#0038ff"},children:"Automatic"}),(0,s.jsx)("p",{className:"text-sm text-brand-black",children:"PF, ESI, PT, TDS"})]})}),(0,s.jsx)(h.Zb,{className:"border-0 bg-white rounded-xl shadow-md hover:shadow-xl transition-all duration-300 transform hover:-translate-y-1 text-center",children:(0,s.jsxs)(h.aY,{className:"p-6",children:[(0,s.jsx)("div",{className:"text-xl lg:text-2xl font-bold font-gilroy mb-1",style:{color:"#0038ff"},children:"Real-time"}),(0,s.jsx)("p",{className:"text-sm text-brand-black",children:"Shift Auto-Attendance"})]})})]}),(0,s.jsx)("nav",{className:"min-h-fit mt-8",children:(0,s.jsx)("div",{className:"flex flex-col sm:flex-row gap-4 justify-center",children:(0,s.jsx)(m(),{href:"/contact",passHref:!0,children:(0,s.jsx)("button",{className:"text-white font-bold px-8 py-4 rounded-xl transition-all duration-300 hover:opacity-90",style:{backgroundColor:"#0038ff"},children:"Schedule a Free Demo"})})})})]})})})}var b=[{title:"Data stuck in the machine",desc:"Punches sit in the biometric device and someone exports and keys them in by hand every month."},{title:"Payroll takes days",desc:"Attendance, leave and overtime are reconciled across spreadsheets before a single salary slip is cut."},{title:"Errors and disputes",desc:"Missed punches and manual maths lead to wrong pay, PF and ESI mistakes, and staff complaints."},{title:"Many sites, no single view",desc:"Each location runs its own register, so HR never sees live attendance across the company."}];function f(){return(0,s.jsx)("section",{className:" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-1",style:{backgroundColor:"#f0f4ff"},"aria-labelledby":"problems-heading",children:(0,s.jsxs)("div",{className:"container mx-auto px-8",children:[(0,s.jsxs)("header",{className:"max-w-7xl mx-auto text-center",children:[(0,s.jsxs)("h2",{id:"problems-heading",className:"heading font-bold mb-4 md:mb-8 font-gilroy text-brand-black",children:["The attendance and payroll ",(0,s.jsx)(i.Z,{variant:"pink",children:"problems this ends"})]}),(0,s.jsx)("p",{className:"sub-heading text-brand-black mb-4 md:mb-8",children:"If any of these describe your month, an ERPNext attendance and payroll integration pays for itself quickly."})]}),(0,s.jsx)("div",{className:"flex gap-4 overflow-x-auto scrollbar-visible pb-4 md:grid md:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 md:overflow-visible md:pb-0 md:gap-4",children:b.map((function(e,t){return(0,s.jsx)("article",{className:"bg-white p-8 rounded-xl border border-gray-400 shadow-sm hover:shadow-md transition-all duration-300 group focus-within:ring-2 focus-within:ring-brand-primary-blue focus-within:ring-offset-2 min-w-[320px] md:min-w-0 flex flex-col justify-between",children:(0,s.jsxs)("div",{children:[(0,s.jsxs)("h3",{className:"text-base sm:text-lg lg:text-xl font-bold font-gilroy text-brand-black mb-4 flex items-start gap-2",children:[(0,s.jsx)("svg",{className:"w-5 h-5 text-red-500 flex-shrink-0 mt-0.5",fill:"none",viewBox:"0 0 24 24",stroke:"currentColor",strokeWidth:2.5,"aria-hidden":"true",children:(0,s.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M6 18L18 6M6 6l12 12"})}),(0,s.jsx)("span",{children:e.title})]}),(0,s.jsx)("p",{className:"text-gray-700 text-sm leading-relaxed font-poppins",children:e.desc})]})},t)}))})]})})}var g=[{title:"Employee attendance sync",desc:"Punches from any device land in ERPNext in near real time and mark attendance automatically against each employee's shift.",outcome:"Outcome: no manual registers and live attendance."},{title:"Payroll automation",desc:"Attendance, leave and overtime feed the payroll entry, which computes PF, ESI, PT and TDS and generates every salary slip in one run.",outcome:"Outcome: payroll in hours, not days."},{title:"Shift management",desc:"Shift types and rosters drive auto attendance, judging on time, late entry, early exit, overt
1ime and week-offs for you.",outcome:"Outcome: fair, rule-based attendance."}];function u(){return(0,s.jsx)("section",{className:" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-2",style:{backgroundColor:"#fafafa"},"aria-labelledby":"oneflow-heading",children:(0,s.jsxs)("div",{className:"container mx-auto px-8",children:[(0,s.jsxs)("header",{className:"max-w-6xl mx-auto text-center",children:[(0,s.jsxs)("h2",{id:"oneflow-heading",className:"heading font-bold mb-4 md:mb-8 font-gilroy text-brand-black",children:["One flow from the ",(0,s.jsx)(i.Z,{variant:"black",children:"gate to the payslip"})]}),(0,s.jsx)("p",{className:"sub-heading text-brand-black mb-4 md:mb-8",children:"Every punch becomes attendance by shift, and attendance becomes accurate, statutory-ready payroll."})]}),(0,s.jsx)("div",{className:"grid md:grid-cols-2 xl:grid-cols-3 gap-4 md:gap-4 lg:gap-6",children:g.map((function(e,t){return(0,s.jsx)("article",{className:"h-full",children:(0,s.jsxs)("div",{className:"border section-bg-1 rounded-xl shadow-sm hover:shadow-md border-gray-400 transition-all duration-300 group focus-within:ring-2 focus-within:ring-brand-primary-blue focus-within:ring-offset-2 p-6 flex flex-col justify-between h-full",children:[(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:"flex gap-2 items-center",children:(0,s.jsx)("h3",{className:"text-base sm:text-lg lg:text-xl font-bold font-gilroy text-brand-black mb-2",children:e.title})}),(0,s.jsx)("p",{className:"text-gray-700 text-sm leading-relaxed mb-3",children:e.desc})]}),(0,s.jsx)("div",{className:"mt-2 border-t border-gray-100 flex items-center justify-between pt-3",children:(0,s.jsx)("span",{className:"text-xs font-semibold text-brand-primary-blue bg-blue-50 px-2.5 py-1 rounded",children:e.outcome})})]})},t)}))})]})})}var y=[{name:"Fingerprint terminals",examples:"ZKTeco, essl",conn:"LAN sync tool (ZK) or API",effort:"Low"},{name:"Face recognition terminals",examples:"ZKTeco SpeedFace, essl, Hikvision",conn:"Sync tool or vendor API push",effort:"Low"},{name:"Palm vein and iris scanners",examples:"Mantra, secure sites",conn:"Vendor API push or file import",effort:"Medium"},{name:"RFID, smart card and NFC readers",examples:"HID, generic card readers",conn:"API push or import",effort:"Low"},{name:"Proximity and QR turnstiles",examples:"Gate entry systems",conn:"API push or import",effort:"Medium"}
1,{name:"Access control and boom barriers",examples:"Any system logging IN and OUT",conn:"API push or import",effort:"Medium"},{name:"Time clocks and swipe machines",examples:"Matrix COSEC, Suprema, Realtime, Spectra, Secureye, Bio-Rad",conn:"Vendor API push or import",effort:"Medium"},{name:"ADMS push protocol devices",examples:"Devices that HTTP post punches",conn:"Direct push to the check-in API",effort:"Low"}],j=[{name:"Mobile check-in (geo and selfie)",examples:"Office and hybrid staff",conn:"Native, Frappe HR mobile app",effort:"Built in"},{name:"Geofenced check-in",examples:"Field and sales teams",conn:"Native app with site boundary",effort:"Low"},{name:"QR code check-in",examples:"Reception or per site",conn:"Native or light custom",effort:"Low"},{name:"Beacon, BLE and NFC tap in",examples:"Factory floors, multi gate plants",conn:"API or custom",effort:"Medium"},{name:"Vehicle GPS and telematics",examples:"Drivers and field service",conn:"API or custom",effort:"Higher"}],N=[{name:"Tablet or kiosk check-in",examples:"Shared entrance",conn:"Native or app",effort:"Low"},{name:"Web check-in",examples:"Desk based staff",conn:"Native, employee portal",effort:"Built in"},{name:"Desktop or system login attendance",examples:"Office computers",conn:"Custom connector",effort:"Medium"}],w=[{name:"CCTV and VMS with ANPR or people count",examples:"Gate and vehicle movement",conn:"API or custom",effort:"Higher"},{name:"Canteen and visitor management",examples:"Shared badge events",conn:"API or custom",effort:"Medium"},{name:"IoT and PLC machine login",examples:"Operator time tied to a work order",conn:"Custom, links to Manufacturing",effort:"Higher"},{name:"Barcode and handheld scanners",examples:"Production line presence",conn:"API or import",effort:"Medium"}],v=["Biometric & Access","Mobile & Location-Based","Kiosk, Desktop & Web","Adjacent Hardware"],k=function(e){var t=null===e||void 0===e?void 0:e.toLowerCase().trim();return"low"===t||"built in"===t?"bg-green-50 text-green-700 border border-green-200 px-2.5 py-0.5 rounded text-[10px] font-semibold":"medium"===t?"bg-yellow-50 text-yellow-800 border border-yellow-200 px-2.5 py-0.5 rounded text-[10px] font-semibold":"higher"===t?"bg-red-50 text-red-750 border border-red-200 px-2.5 py-0.5 rounded text-[10px] font-semibold":"bg-blue-50 text-brand-primary-blue border border-blue-200 px-2.5 py-0.5 rounded text-[10px] font-semibold"};function P(){var e=(0,r.useState)(0),t=e[0],a=e[1];return(0,s.jsx)("section",{className:" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-3",style:{backgroundColor:"#ffffff"},"aria-labelledby":"devices-heading",children:(0,s.jsxs)("div",{className:"container mx-auto px-8",children:[(0,s.jsxs)("header",{className:"max-w-6xl mx-auto text-center",children:[(0,s.jsxs)("h2",{id:"devices-heading",className:"heading font-bold mb-4 md:mb-8 font-gilroy text-brand-black",children:["Almost any attendance device ",(0,s.jsx)(i.Z,{variant:"blue",children:"can connect"})]}),(0,s.jsx)("p",{className:"sub-heading text-brand-black mb-4 md:mb-8",children:"ERPNext only needs an IN or OUT log with an employee ID and a timestamp, which is why the list below is long. Each device is tagged by how it connects and the effort involved, so there are no surprises later."})]}),(0,s.jsx)("div",{className:"flex flex-wrap justify-center gap-3 mb-8 max-w-5xl mx-auto font-poppins",children:v.map((function(e,r){return(0,s.jsx)("button",{type:"button",onClick:function(){return a(r)},className:"text-xs md:text-sm font-bold font-gilroy px-5 py-3 rounded-xl transition-all duration-300 ".concat(t===r?"text-white bg-[#0038ff] shadow-lg scale-[1.02]":"text-brand-black bg-white border border-gray-400 hover:bg-gray-50 shadow-sm"),children:e},r)}))}),(0,s.jsxs)("div",{className:"relative max-w-4xl mx-auto",children:[(0,s.jsx)("button",{type:"button",onClick:function(){return a((function(e){return 0===e?3:e-1}))},className:"hidden lg:flex absolute left-[-60px] top-1/2 -translate-y-1/2 items-center justify-center w-12 h-12 bg-white border border-gray-300 rounded-full hover:bg-gray-50 shadow-md hover:shadow-lg transition-all text-xl font-bold","aria-label":"Previous Table",children:"\u2190"}),(0,s.jsxs)("div",{className:"transition-opacity duration-300",children:[0===t&&(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-lg border border-gray-400 overflow-hidden font-poppins text-xs",children:[(0,s.jsxs)("div",{className:"bg-blue-50 px-6 py-3.5 border-b border-gray-250 flex justify-between items-center",children:[(0,s.jsx)("span",{className:"font-gilroy font-bold text-brand-primary-blue text-sm",children:"Biometric and access hardware"}),(0,s.jsx)("span",{className:"text-gray-400 text-[10px] font-medium font-gilroy",children:"Table 1 of 4"})]}),(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full text-left border-collapse",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-gray-50 border-b border-gray-200 text-gray-500 font-semibold uppercase tracking-wider",children:[(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Device or method"}),(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Examples / best for"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"How it connects"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"Effort"})]})}),(0,s.jsx)("tbody",{className:"divide-y divide-gray-100 text-gray-700",children:y.map((function(e,t){return(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"px-6 py-3.5 font-bold",children:e.name}),(0,s.jsx)("td",{className:"px-6 py-3.5",children:e.examples}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center font-mono",children:e.conn}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center",children:(0,s.jsx)("span",{className:k(e.effort),children:e.effort})})]},t)}))})]})})]}),1===t&&(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-lg border border-gray-400 overflow-hidden font-poppins text-xs",children:[(0,s.jsxs)("div",{className:"bg-blue-50 px-6 py-3.5 border-b border-gray-250 flex justify-between items-center",children:[(0,s.jsx)("span",{className:"font-gilroy font-bold text-brand-primary-blue text-sm",children:"Mobile and location-based"}),(0,s.jsx)("span",{className:"text-gray-400 text-[10px] font-medium font-gilroy",children:"Table 2 of 4"})]}),(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full text-left border-collapse",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-gray-50 border-b border-gray-200 text-gray-500 font-semibold uppercase tracking-wider",children:[(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Device or method"}),(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Examples / best for"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"How it connects"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"Effort"})]})}),(0,s.jsx)("tbody",{className:"divide-y divide-gray-100 text-gray-700",children:j.map((function(e,t){return(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"px-6 py-3.5 font-bold",children:e.name}),(0,s.jsx)("td",{className:"px-6 py-3.5",children:e.examples}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center font-mono",children:e.conn}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center",children:(0,s.jsx)("span",{className:k(e.effort),children:e.effort})})]},t)}))})]})})]}),2===t&&(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-lg border border-gray-400 overflow-hidden font-poppins text-xs",children:[(0,s.jsxs)("div",{className:"bg-blue-50 px-6 py-3.5 border-b border-gray-250 flex justify-between items-center",children:[(0,s.jsx)("span",{className:"font-gilroy font-bold text-brand-primary-blue text-sm",children:"Kiosk, desktop and web"}),(0,s.jsx)("span",{className:"text-gray-400 text-[10px] font-medium font-gilroy",children:"Table 3 of 4"})]}),(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full text-left border-collapse",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-gray-50 border-b border-gray-200 text-gray-500 font-semibold uppercase tracking-wider",children:[(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Device or method"}),(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Examples / best for"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"How it connects"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"Effort"})]})}),(0,s.jsx)("tbody",{className:"divide-y divide-gray-100 text-gray-700",children:N.map((function(e,t){return(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"px-6 py-3.5 font-bold",children:e.name}),(0,s.jsx)("td",{className:"px-6 py-3.5",children:e.examples}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center font-mono",children:e.conn}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center",children:(0,s.jsx)("span",{className:k(e.effort),children:e.effort})})]},t)}))})]})})]}),3===t&&(0,s.jsxs)("div",{className:"bg-white rounded-xl shadow-lg border border-gray-400 overflow-hidden font-poppins text-xs",children:[(0,s.jsxs)("div",{className:"bg-blue-50 px-6 py-3.5 border-b border-gray-250 flex justify-between items-center",children:[(0,s.jsx)("span",{className:"font-gilroy font-bold text-brand-primary-blue text-sm",children:"Adjacent hardware that can feed HR"}),(0,s.jsx)("span",{className:"text-gray-400 text-[10px] font-medium font-gilroy",children:"Table 4 of 4"})]}),(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full text-left border-collapse",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-gray-50 border-b border-gray-200 text-gray-500 font-semibold uppercase tracking-wider",children:[(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Device or method"}),(0,s.jsx)("th",{className:"px-6 py-3 w-1/3",children:"Examples / best for"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"How it connects"}),(0,s.jsx)("th",{className:"px-6 py-3 text-center",children:"Effort"})]})}),(0,s.jsx)("tbody",{className:"divide-y divide-gray-100 text-gray-700",children:w.map((function(e,t){return(0,s.jsxs)("tr",{children:[(0,s.jsx)("td",{className:"px-6 py-3.5 font-bold",children:e.name}),(0,s.jsx)("td",{className:"px-6 py-3.5",children:e.examples}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center font-mono",children:e.conn}),(0,s.jsx)("td",{className:"px-6 py-3.5 text-center",children:(0,s.jsx)("span",{className:k(e.effort),children:e.effort})})]},t)}))})]})})]})]}),(0,s.jsx)("button",{type:"button",onClick:function(){return a((function(e){return 3===e?0:e+1}
1))},className:"hidden lg:flex absolute right-[-60px] top-1/2 -translate-y-1/2 items-center justify-center w-12 h-12 bg-white border border-gray-300 rounded-full hover:bg-gray-50 shadow-md hover:shadow-lg transition-all text-xl font-bold","aria-label":"Next Table",children:"\u2192"})]}),(0,s.jsxs)("div",{className:"flex justify-center items-center gap-4 mt-8 font-poppins",children:[(0,s.jsx)("button",{type:"button",onClick:function(){return a((function(e){return 0===e?3:e-1}))},className:"lg:hidden flex items-center justify-center px-4 py-2 bg-white border border-gray-350 rounded-xl hover:bg-gray-50 shadow-sm text-xs font-bold font-gilroy",children:"\u2190 Prev"}),(0,s.jsx)("div",{className:"flex gap-2.5",children:[0,1,2,3].map((function(e){return(0,s.jsx)("button",{type:"button",onClick:function(){return a(e)},className:"w-2.5 h-2.5 rounded-full transition-all duration-300 ".concat(t===e?"bg-[#0038ff] w-6":"bg-gray-300 hover:bg-gray-400"),"aria-label":"Go to table ".concat(e+1)},e)}))}),(0,s.jsx)("button",{type:"button",onClick:function(){return a((function(e){return 3===e?0:e+1}))},className:"lg:hidden flex items-center justify-center px-4 py-2 bg-white border border-gray-350 rounded-xl hover:bg-gray-50 shadow-sm text-xs font-bold font-gilroy",children:"Next \u2192"})]}),(0,s.jsx)("div",{className:"max-w-4xl mx-auto bg-gray-50 border border-gray-200 rounded-xl p-6 mt-8",children:(0,s.jsx)("p",{className:"text-gray-700 text-sm leading-relaxed text-center font-poppins",children:"Three connection routes cover all of the above: a simple CSV or Excel import, an API push from the device or vendor cloud, or the official LAN sync tool for ZK protocol devices. If your device is not listed, it almost certainly still works. Tell us the make and we will confirm the route and effort before you commit."})})]})})}var A=a(63290);function C(){var e=(0,r.useState)("checkin"),t=e[0],a=e[1];return(0,s.jsx)("section",{className:" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-1",style:{backgroundColor:"#f0f4ff"},"aria-labelledby":"mockups-heading",children:(0,s.jsxs)("div",{className:"container mx-auto px-8",children:[(0,s.jsxs)("header",{className:"max-w-6xl mx-auto text-center ",children:[(0,s.jsxs)("h2",{id:"mockups-heading",className:"heading font-bold mb-4 md:mb-8 font-gilroy text-brand-black ",children:["See it working, ",(0,s.jsx)(i.Z,{variant:"pink",children:"screen by screen"})]}),(0,s.jsx)("p",{className:"sub-heading text-brand-black font-poppins mb-4 md:mb-8",children:"Representative views of biometric sync, auto attendance, payroll and the shift roster. These are illustrative mockups, not live ERPNext screenshots."})]}),(0,s.jsx)("div",{className:"max-w-4xl mx-auto mb-4 lg:mb-8 flex flex-row overflow-x-auto scrollbar-visible gap-2 pb-3 border-b border-gray-400 justify-start md:justify-center md:flex-wrap md:pb-0 md:gap-0 font-poppins",children:[{key:"checkin",label:"Attendance Sync"},{key:"attendance",label:"Auto Attendance"},{key:"payroll",label:"Payroll Automation"},{key:"roster",label:"Shift Management"}].map((function(e){return(0,s.jsx)("button",{onClick:function(){return a(e.key)},className:"px-4 py-2.5 rounded-full text-xs font-gilroy font-bold whitespace-nowrap transition-all duration-300 focus:outline-none md:px-6 md:py-3 md:text-sm md:rounded-none md:border-b-2 ".concat(t===e.key?"bg-[#0038ff] text-white border border-[#0038ff] md:bg-transparent md:border-0 md:border-b-2 md:border-[#0038ff] md:text-[#0038ff]":"bg-brand-off-white text-gray-700 hover:text-brand-black border border-gray-400 md:bg-transparent md:border-0 md:border-b-2 md:border-transparent"),children:e.label},e.key)}))}),(0,s.jsxs)("div",{className:"max-w-6xl mx-auto bg-white rounded-xl shadow-lg border border-gray-400 overflow-hidden font-poppins text-xs",children:["checkin"===t&&(0,s.jsxs)("div",{className:"flex flex-col divide-y divide-gray-200",children:[(0,s.jsxs)("div",{className:"p-6 md:p-8",children:[(0,s.jsx)("h3",{className:"text-base md:text-lg font-bold font-gilroy text-brand-black mb-2",children:"Attendance sync: every punch, in ERPNext within seconds"}),(0,s.jsx)("p",{className:"text-gray-700 text-sm leading-relaxed mb-6",children:"Check-ins from ZKTeco, ESSL and the mobile app arrive in Employee Checkin, matched to the employee by device ID, ready to become attendance."}),(0,s.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Log check-ins automatically from hardware device registers"})]})}),(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Synchronize punches in near real-time without files or scripts"})]})})]})]}),(0,s.jsx)("div",{className:"p-4 md:p-6 bg-gray-50",children:(0,s.jsx)(A.Z,{title:"Employee Checkins",src:"/integration/images/hrms-attendance/employee-checkins.png",alt:"ERPNext Employee Checkins",caption:"Illustrative dashboard mockup, not a live ERPNext screenshot.",height
1Class:"aspect-[5/2] md:aspect-auto md:h-[380px] lg:h-[440px]",className:"w-full"})})]}),"attendance"===t&&(0,s.jsxs)("div",{className:"flex flex-col divide-y divide-gray-200",children:[(0,s.jsxs)("div",{className:"p-6 md:p-8",children:[(0,s.jsx)("h3",{className:"text-base md:text-lg font-bold font-gilroy text-brand-black mb-2",children:"Auto attendance: attendance marks itself, by shift"}),(0,s.jsx)("p",{className:"text-gray-700 text-sm leading-relaxed mb-6",children:"ERPNext reads the check-ins and each employee's shift and marks attendance, flagging late entry, half days and absentees with no manual register."}),(0,s.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Auto-determine status (Present, Absent, Half Day, Holiday)"})]})}),(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Auto-flag late entries and early exits with grace periods"})]})})]})]}),(0,s.jsx)("div",{className:"p-4 md:p-6 bg-gray-50",children:(0,s.jsx)(A.Z,{title:"Auto Attendance",src:"/integration/images/hrms-attendance/auto-attendance.png",alt:"ERPNext Auto Attendance",caption:"Illustrative dashboard mockup, not a live ERPNext screenshot.",heightClass:"aspect-[5/2] md:aspect-auto md:h-[380px] lg:h-[440px]",className:"w-full"})})]}),"payroll"===t&&(0,s.jsxs)("div",{className:"flex flex-col divide-y divide-gray-200",children:[(0,s.jsxs)("div",{className:"p-6 md:p-8",children:[(0,s.jsx)("h3",{className:"text-base md:text-lg font-bold font-gilroy text-brand-black mb-2",children:"Payroll automation: PF, ESI, PT and TDS in one run"}),(0,s.jsx)("p",{className:"text-gray-700 text-sm leading-relaxed mb-6",children:"Attendance and leave feed the Payroll Entry, which computes gross, statutory deductions and net pay, and generates salary slips for the whole company."}),(0,s.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Automatically compute statutory PF, ESI, and PT deductions"})]})}),(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Run payroll with tax deductions (TDS) calculated in one click"})]})})]})]}),(0,s.jsx)("div",{className:"p-4 md:p-6 bg-gray-50",children:(0,s.jsx)(A.Z,{title:"Payroll Automation",src:"/integration/images/hrms-attendance/payroll-entry.png",alt:"ERPNext Payroll Automation",caption:"Illustrative dashboard mockup, not a live ERPNext screenshot.",heightClass:"aspect-[5/2] md:aspect-auto md:h-[380px] lg:h-[440px]",className:"w-full"})})]}),"roster"===t&&(0,s.jsxs)("div",{className:"flex flex-col divide-y divide-gray-200",children:[(0,s.jsxs)("div",{className:"p-6 md:p-8",children:[(0,s.jsx)("h3",{className:"text-base md:text-lg font-bold font-gilroy text-brand-black mb-2",children:"Shift management: rosters that drive attendance"}),(0,s.jsx)("p",{className:"text-gray-700 text-sm leading-relaxed mb-6",children:"Assign morning, general and night shifts, and auto attendance reads each employee's shift to judge presence, lateness and overtime."}),(0,s.jsxs)("div",{className:"grid sm:grid-cols-2 gap-3",children:[(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Define flexible shift rotations and weekly off periods"})]})}),(0,s.jsx)(h.Zb,{className:"border border-gray-300 shadow-sm hover:shadow-md transition-all duration-300 bg-white rounded-xl",children:(0,s.jsxs)(h.aY,{className:"p-4 flex items-start gap-3 h-full",children:[(0,s.jsx)(c.CheckIcon,{className:"w-5 h-5 text-brand-primary-blue flex-shrink-0 mt-0.5"}),(0,s.jsx)("span",{className:"text-xs md:text-sm text-gray-700 font-medium font-poppins leading-relaxed",children:"Manage complex employee rosters across multiple locations"})]})})]})]}),(0,s.jsx)("div",{className:"p-4 md:p-6 bg-gray-50",children:(0,s.jsx)(A.Z,{title:"Shift Management",src:"/integration/images/hrms-attendance/shift
1-roaster.png",alt:"ERPNext Shift Management",caption:"Illustrative dashboard mockup, not a live ERPNext screenshot.",heightClass:"aspect-[5/2] md:aspect-auto md:h-[380px] lg:h-[440px]",className:"w-full"})})]})]})]})})}var S=[{week:"Week 1",title:"Discovery",desc:"We confirm devices, shifts, leave rules and salary structures, and map employees."},{week:"Week 2",title:"Device and shifts",desc:"Attendance sync is set up and shifts configured, with live check-ins flowing in."},{week:"Week 3",title:"Payroll",desc:"Salary structures, PF, ESI, PT and TDS are configured and a test payroll is run."},{week:"Week 4",title:"Go live",desc:"First live attendance and payroll cycle, with your team trained and supported."}];function E(){return(0,s.jsx)("section",{className:" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-2",style:{backgroundColor:"#fafafa"},"aria-labelledby":"phases-heading",children:(0,s.jsxs)("div",{className:"container mx-auto px-8",children:[(0,s.jsxs)("header",{className:"max-w-6xl mx-auto text-center",children:[(0,s.jsxs)("h2",{id:"phases-heading",className:"heading font-bold mb-4 md:mb-8 font-gilroy text-brand-black",children:["Live in about four weeks for a ",(0,s.jsx)(i.Z,{variant:"blue",children:"single site"})]}),(0,s.jsx)("p",{className:"sub-heading text-brand-black font-poppins mb-4 md:mb-8",children:"A typical single location rollout. Multi-location and complex device estates are scoped after a short discovery call."})]}),(0,s.jsx)("div",{className:"max-w-5xl mx-auto bg-white rounded-xl shadow-lg p-4 overflow-hidden font-poppins text-xs",children:(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full text-left border-collapse min-w-[600px]",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-gray-50 border-b border-gray-200 text-gray-500 font-semibold uppercase tracking-wider",children:[(0,s.jsx)("th",{className:"px-6 py-4 w-1/3",children:"Phase"}),(0,s.jsx)("th",{className:"px-6 py-4 w-2/3",children:"What happens"})]})}),(0,s.jsx)("tbody",{className:"divide-y divide-gray-100 text-gray-700",children:S.map((function(e,t){return(0,s.jsxs)("tr",{className:"hover:bg-gray-50/50 transition-colors",children:[(0,s.jsxs)("td",{className:"px-6 py-4 font-bold text-sm text-brand-black font-gilroy",children:[e.week," \xb7 ",e.title]}),(0,s.jsx)("td",{className:"px-6 py-4 text-xs leading-relaxed text-gray-700 font-poppins",children:e.desc})]},t)}))})]})})})]})})}var I=[{scope:"Attendance sync",covers:"Device connection and employee mapping, shift setup and auto attendance, live attendance across the site.",pricing:"After discovery"},{scope:"Attendance + payroll",covers:"Everything in attendance sync, plus salary structures, Payroll Entry, PF, ESI, PT, TDS and go live support.",pricing:"After discovery"},{scope:"Multi location rollout",covers:"Multi site device strategy, central attendance and reporting, custom connectors and a phased plan.",pricing:"Per estate"}];function T(){return(0,s.jsx)("section",{className:" sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-bg-3",style:{backgroundColor:"#ffffff"},"aria-labelledby":"engage-heading",children:(0,s.jsxs)("div",{className:"container mx-auto px-8",children:[(0,s.jsxs)("header",{className:"max-w-6xl mx-auto text-center",children:[(0,s.jsxs)("h2",{id:"engage-heading",className:"heading font-bold mb-4 md:mb-8 font-gilroy text-brand-black",children:["How we engage: clear scopes, ",(0,s.jsx)(i.Z,{variant:"black",children:"quoted after discovery"})]}),(0,s.jsx)("p",{className:"sub-heading text-brand-black font-poppins mb-4 md:mb-8",children:"We price by scope, not guesswork. Pick the starting point that fits, and we confirm a fixed quote after a short discovery call."})]}),(0,s.jsx)("div",{className:"max-w-5xl mx-auto bg-white rounded-xl shadow-lg p-4 overflow-hidden font-poppins text-xs",children:(0,s.jsx)("div",{className:"overflow-x-auto",children:(0,s.jsxs)("table",{className:"w-full text-left border-collapse min-w-[600px]",children:[(0,s.jsx)("thead",{children:(0,s.jsxs)("tr",{className:"bg-gray-50 border-b border-gray-200 text-gray-500 font-semibold uppercase tracking-wider",children:[(0,s.jsx)("th",{className:"px-6 py-4 w-1/4",children:"Scope"}),(0,s.jsx)("th",{className:"px-6 py-4 w-1/2",children:"What it covers"}),(0,s.jsx)("th",{className:"px-6 py-4 text-center",children:"Pricing"})]})}),(0,s.jsx)("tbody",{className:"divide-y divide-gray-100 text-gray-700",children:I.map((function(e,t){return(0,s.jsxs)("tr",{className:"hover:bg-gray-50/50 transition-colors",children:[(0,s.jsx)("td",{className:"px-6 py-4 font-bold text-sm text-brand-black font-gilroy",children:e.scope}),(0,s.jsx)("td",{className:"px-6 py-4 text-xs leading-relaxed text-gray-700 font-poppins",children:e.covers}),(0,s.jsx)("td",{className:"px-6 py-4 text-center",children:(0,s.jsx)("span",{className:"bg-blue-50 text-brand-primary-blue px-3 py-1 rounded-full text-[10px] font-bold uppercase tracking-wider",children:e.pricing})})]},t)}))})]})})})]})})}function R(){return(0,s.jsx)("section",{className:"sm:px-6 lg:px-8 py-7 sm:py-9 lg:py-12 section-highlight-black","aria-labelledby":"
1cta-heading",children:(0,s.jsxs)("div",{className:"container mx-auto px-8 text-center",children:[(0,s.jsxs)("header",{children:[(0,s.jsxs)("h2",{id:"cta-heading",className:"heading font-bold font-gilroy text-white mb-4 lg:mb-8 flex flex-wrap items-center justify-center gap-x-2",children:[(0,s.jsx)("span",{children:"Ready to automate your"}),(0,s.jsx)(i.Z,{variant:"pink",children:"Attendance & Payroll?"})]}),(0,s.jsx)("p",{className:"sub-heading text-white/85 max-w-3xl mx-auto mb-6 lg:mb-8",children:"Connect ZKTeco, ESSL, or custom devices directly to ERPNext. Move from a punch to a payslip in near real-time, removing manual register entries and payroll delays."})]}),(0,s.jsx)("div",{className:"flex justify-center",children:(0,s.jsx)(m(),{href:"/contact",passHref:!0,children:(0,s.jsxs)("a",{className:"inline-flex items-center gap-2 text-sm md:text-md text-white font-bold md:px-8 px-4 py-4 rounded-xl transition-all duration-300 hover:opacity-90 transform hover:scale-[1.02] shadow-lg",style:{backgroundColor:"#0038ff"},children:["Schedule Free Consultation",(0,s.jsx)(c.ArrowRightIcon,{className:"w-4 h-4 md:w-5 md:h-5 text-white"})]})})})]})})}var Z=a(92634),D=!0;function M(e){var t=e.header,a="ERPNext Biometric & Attendance Integration | Hybrowlabs",r="Connect biometric, face, RFID, and mobile attendance devices natively to ERPNext. Automate salary calculations with local PF, ESI, and TDS rules.";return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.Z,{title:a,description:r,keywords:"erpnext biometric integration, essl biometric erpnext, zkteco erpnext sync, frappe hr attendance integration, erpnext payroll automation",canonicalUrl:"https://hybrowlabs.com/integration/hrms-attendance",ogTitle:a,ogDescription:r,ogImage:"https://hybrowlabs.com/h.png",ogImageAlt:"HRMS & Biometric Attendance Integration with ERPNext | eSSL & ZKTeco | Hybrowlabs",schemaType:"WebPage",schemaAbout:[{"@type":"Thing",name:"ERPNext Biometric Integration"},{"@type":"Thing",name:"eSSL Biometric Attendance"},{"@type":"Thing",name:"ZKTeco Biometric Devices"},{"@type":"Thing",name:"Frappe HR Payroll Automation"}]}),(0,s.jsxs)(n.Ar,{active:"/integration/hrms-attendance",header:t,children:[(0,s.jsx)(p,{}),(0,s.jsx)(f,{}),(0,s.jsx)(u,{}),(0,s.jsx)(P,{}),(0,s.jsx)(C,{}),(0,s.jsx)(l.WJ,{id:"steps-heading",title:(0,s.jsxs)("span",{children:["From a punch to a payslip, ",(0,s.jsx)(i.Z,{variant:"black",children:"step by step"})]}),description:"The core capture, attendance and payroll engine is native to Frappe HR. Devices plug into it.",steps:Z.cl,bgColor:"#fafafa",bgClass:"section-bg-2",isScrollable:!1,gridColsClass:"sm:grid-cols-2 lg:grid-cols-4 max-w-7xl"}),(0,s.jsx)(l.WJ,{id:"steps-heading",title:(0,s.jsxs)("span",{children:["What teams ",(0,s.jsx)(i.Z,{variant:"pink",children:"typically gain"})]}),description:"The exact figures depend on your headcount and current process. These are the outcomes a well-run rollout targets.",steps:Z.id,bgColor:"#ffffff",cardbg:"bg-blue-50",bgClass:"section-bg-3",isScrollable:!1,gridColsClass:"sm:grid-cols-2 lg:grid-cols-4 max-w-7xl"}),(0,s.jsx)(d.Z,{data:Z.vb,bgClass:"section-bg-1",bgColor:"#f0f4ff"}),(0,s.jsx)(E,{}),(0,s.jsx)(T,{}),(0,s.jsx)(l.WJ,{id:"why-heading",title:(0,s.jsxs)("span",{children:["Why ",(0,s.jsx)(i.Z,{variant:"black",children:"Hybrowlabs"})]}),description:"Scale your ERP implementation with a trusted, certified partner.",steps:Z.Dr,isScrollable:!1,cardbg:"bg-white",bgClass:"section-bg-1",gridColsClass:"sm:grid-cols-2 lg:grid-cols-3 max-w-5xl"}),(0,s.jsx)(d.Z,{data:Z.$i,bgClass:"section-bg-2",bgColor:"#fafafa"}),(0,s.jsx)(R,{})]})]})}}},function(e){e.O(0,[8883,9923,1482,48,3466,6860,8178,2135,212,2634,8693,9774,2888,179],(function(){return t=83513,e(e.s=t);var t}));var t=e.O();_N_E=t}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.