50 employees, एक department, एक click। एक click।
हर staff member को उसके attendance department में assign करें — single, bulk या future-dated। हर assignment fromDate, toDate और isPrimary flag carry करती है, system transfer पर पिछली primary को auto-end कर देता है, और हर employee की पूरी history visible रहती है।

भारतीय स्कूलों में आज teachers को departments में कैसे assign किया जाता है
नया academic year 1 April को शुरू होता है। Vice-Principal 28 March को staff register लेकर बैठते हैं। उनके पास 64 staff को slot करना है — 6 नए joiners, 3 teachers जो Junior Wing से Middle में move हो रहे, 2 admin staff जो नई branch में transfer हो रहे, 1 PRT जो long maternity leave पर जा रही है (और 9 months के लिए एक substitute join कर रहा है)। वह हर नाम के आगे pencil से department लिखते हैं। 31 March तक वह तीन pages पहले ही दोबारा लिख चुके हैं क्योंकि Middle Wing teachers ग़लती से Senior tag हो गए थे — head clerk ने किसी दूसरी file में notice किया।
5 April तक head clerk ने assignments को salary Excel sheet में type किया, हर नाम को department code से map किया और time settings को late-coming के लिए अलग column में copy किया। PT teacher का transfer नहीं आ पाया क्योंकि column पहले ही lock हो चुका था। नई joiner का पहला week attendance dashboard पर absent दिख रहा है क्योंकि किसी ने अभी तक उसे department assign नहीं किया था। Accountant 5 April को 6 p.m. पर Vice-Principal को call करते हैं: salary registers close नहीं हो सकते।
Department assignments कोई setup problem नहीं हैं; यह moving-target problem है। Teachers wings के बीच shift होते हैं, support staff rotate होता है, नए staff mid-year जुड़ते हैं, पुराने retire होते हैं, primary teachers maternity पर जाती हैं। हर move को fromDate, optional toDate, isPrimary flag चाहिए — और system को याद रखना है कि पिछले साल उस दिन क्या सच था जब punch hua था। Inkwelly की department assignments exactly उसके लिए बनी हैं — 50 staff के लिए एक click, हमेशा के लिए full history, और salary registers जो 1 तारीख को close हों।

Department assignments कैसे काम करती हैं
Assignment staff member और attendance department के बीच link है। यह पांच fields carry करती है: employeeId, departmentId, fromDate (mandatory, ISO date), toDate (optional — null का मतलब open-ended), और isPrimary (boolean — primary department के rules daily attendance govern करते हैं)। जब आप autoEndPrevious: true (default) के साथ assignment create करते हैं, system employee की existing primary assignment ढूंढता है और उसकी toDate को new fromDate से एक दिन पहले set कर देता है — transfer atomic है, न overlap, न gap।
Single-employee assignments simple call use करती हैं: employee pick करें, department pick करें, date pick करें, Assign hit करें। Future-dated assignments valid हैं — 28 March को भी नई joiner को 1 April के लिए Teaching में assign कर सकते हैं, और system simply wait करता है। Existing assignment को update करना एक PATCH है — typically toDate set करने के लिए जब employee department छोड़ता है, या isPrimary change करने के लिए अगर secondary department primary बन जाए।
Bulk operations academic year transitions के लिए बने हैं। Department Assignments page पर 50 employees select करें → Assign click करें → सब के लिए एक department choose करें (या per-employee) → single fromDate (e.g., 1 April for new session) pick करें → optional toDate → confirm। Bulk endpoint per call 100 तक assignments accept करता है with continueOnError set to true, जो successful और failed rows का summary return करता है — partial success OK है। Update सब के लिए एक call में toDate set करता है। Remove उन assignments को force-delete करता है जिनपर attendance accrue नहीं हुई, या जी attendance hai उनकी toDate yesterday set करता है — history preserve करता है बिना leak किए।
हर assignment auditable है। किसी employee की profile खोलें → Department Timeline → हर department देखें जिसमें वह रहा है, from/to dates, primary badge और chronological scroll के साथ। Salary, leave eligibility और short-leave caps किसी भी historical month के लिए उस department के against compute होते हैं जिसमें वह उस दिन primary था — चाहे वह तब से 3 बार re-assign हो चुका हो।
हर assignment क्या-क्या carry करती है
- Employee — staff record जो assign हो रहा है, Employee Information से linked
- Department — attendance department जिसके rules इस assignment की daily attendance govern करेंगे
- From date (required) — ISO date, today, past या future हो सकता है; future assignments date आने पर simply activate हो जाती हैं
- To date (optional) — null का मतलब open-ended; set करने पर assignment cleanly end होती है history तोड़े बिना
- isPrimary flag — true का मतलब इस department के time, week-off, short-leave और WFH rules इस employee पर apply होंगे
- Auto-end-previous toggle — नई primary assign करते वक्त, existing primary को automatically fromDate − 1 पर end-date कर देता है
- Status — active या historical, toDate से derive होता है; कभी directly edit नहीं होता, कभी out of sync नहीं
- Audit timestamps — assignedAt, createdAt और updatedAt हर change पर forensic clarity के लिए
Listing से bulk-assign तक तीन screens में



Single-employee assignments — future joiners के साथ
नई joiner 15 May से start हो रही है? उसकी employee profile खोलें → Department Assignments → New → Teaching pick करें → fromDate 15 May → Save। Assignment 28 March से system में live है, लेकिन attendance grader 15 May आने तक कुछ नहीं करता। उसके पहले दिन सही rules automatically apply होते हैं — कोई last-minute scramble नहीं, कोई head-clerk reminder नहीं, अगली सुबह कोई register correction नहीं।


1 April reset के लिए bulk assign
64-staff school के Vice-Principal हर April में 3 दोपहरें spend करते हैं teachers को wings के बीच move करने में। Inkwelly इसे एक screen बना देता है: checkboxes से 100 staff तक select करें, Assign click करें, department pick करें (सब पर same apply या per row override), fromDate 1 April set करें, auto-end-previous toggle करें (ताकि पुराने primary assignments 31 March पर close हों), confirm। Endpoint continueOnError accept करता है ताकि partial failures successful rows को roll back न करें — failed list review करके retry करें, कोई SQL surgery नहीं।
Auto-end-previous history को clean रखता है
15 March को Teaching से Admin transfer होने वाले teacher को पहले दो manual steps चाहिए थे — 14 March को पुराना assignment close करो, 15 March को नया खोलो, उम्मीद करो कोई date mistype न करे। Inkwelly की auto-end-previous flag दोनों को atomically करती है जब true (default) हो। Previous primary की toDate 14 March बनती है, नई primary की fromDate 15 March, न overlap, न gap, उन 24 hours के लिए ग़लत department के against कोई late-coming grade नहीं।


हर move, हमेशा के लिए — assignment timeline
किसी भी staff member की profile खोलें और Department Timeline हर department दिखाता है जिसमें वह रहा है, order में, from/to dates और primary badge के साथ। April 2024 — Teaching (primary)। October 2024 — Teaching (primary), Examinations (secondary, board duty के लिए)। March 2025 — Admin (primary)। Timeline retroactive payroll questions, audit queries और statutory disclosures के लिए single source of truth है — और यह generate होती है, maintain नहीं करनी पड़ती।
“Pehle April month mein 3 din lagte the 60 teachers ko new wing mein assign karne mein. Ab one click — bulk select karo, Teaching department pick karo, 1st April fromDate, ho gaya. Auto-end-previous ne purani assignment khud band kar di.”
Schools आज department assignments कहाँ use करते हैं
1. 1 April reset. 60-staff school 1 April को 40 teachers को नए wings में re-assign करता है। Bulk-select 40 employees → Teaching (Senior Wing) → fromDate 1 April → autoEndPrevious — सारे पुराने assignments 31 March पर close, नए 1 April से live। Total time: 2 minutes से कम।
2. Mid-year transfer. 15 October को PRT Junior Wing से Middle Wing में move होती है। autoEndPrevious के साथ one-click new assignment Junior assignment को 14 October पर close कर देता है। 15 October से daily attendance Middle Wing के rules के against grade होती है — different week-off pattern और grace period समेत।
3. Maternity-leave substitute. PRT 10 December से 6-month maternity पर जाती है। उसकी substitute 12 December को join करती है और toDate set to 9 June 2026 के साथ Teaching assignment पाती है। 10 June को उसकी assignment auto-expire; original PRT की assignment (जो pause थी, delete नहीं) seamlessly reactivate होती है क्योंकि उसकी toDate पहले 9 December set की गई थी।
4. Exam-time secondary department. Senior PGT board exam season के लिए EXAM-DUTY department join करते हैं — primary Teaching रहता है, लेकिन 30-day exam window के लिए secondary assignment जुड़ जाती है। Exam-related on-duty requests की approval routing Examinations head को जाती है; बाकी सब अभी भी Teaching head को।
5. Retiring head clerk. Head clerk 31 March को retire होता है। Admin assignment पर toDate 31 March set करें। 1 April से उसका नाम active dashboards से disappear हो जाता है लेकिन हर historical record audit और statutory disclosures के लिए preserve रहता है।
Department Assignments page पर common operations
- Employee name, employee ID या current department से search करके कोई भी record जल्दी find करें
- Department से filter करें ताकि देख सकें कि Teaching, Admin या किसी और group में कौन mapped है
- Last name, employee ID, fromDate या createdAt से sort करें — end-of-year transfers reconcile करने में useful
- Bulk-select 100 employees (validator cap) तक एक Assign, Update या Remove call के लिए
- Bulk Assign dialog में quick-apply या per-row department override — same panel, दो workflows
- Bulk में toDate update करें ताकि cohort cleanly retire हो बिना dates को एक-एक touch किए
- Force-delete with safety — attendance records वाली assignment की deletion system reject करता है और इसकी जगह toDate set करने को कहता है
- एक employee की हर assignment — current और historical — audit, transfer या termination paperwork के लिए pull करें
- Employee Attendance dashboard summary department से live देखें: total employees, primary count और secondary count
Real Indian school पर bulk assign run देखें
20-minute walkthrough — 50 employees, एक department, एक click। प्लस timeline view जो auditor call पर चाहिए होता है।
Limits, safety और small print
Bulk endpoint cap per request 100 assignments है। 200-staff school को दो calls में split करना होगा। Endpoint हर row को independently validate करता है और per-row summary return करता है, इसलिए row 47 में single mistype rows 1–46 को block नहीं करती।
Overlapping primary assignments block होती हैं। Same employee के लिए अगर नई primary का date range existing primary से overlap करता है तो system OVERLAPPING_ASSIGNMENT (HTTP 409) reject करता है। इससे बचने के लिए auto-end-previous use करें।
Future-dated assignments valid हैं। 1 May को join होने वाली नई joiner को आज assign कर सकते हैं; assignment date पर automatically activate होती है और rules उसके पहले punch से engage होते हैं।
Hard-delete सिर्फ जब attendance न हो। किसी assignment के खिलाफ एक भी attendance record होने पर hard-delete ASSIGNMENT_HAS_ATTENDANCE_RECORDS (409) के साथ block हो जाता है। Force-delete toDate को yesterday set करता है — active records के लिए same end result, लेकिन history preserve रहती है।
Only primary delete नहीं हो सकती। हर employee को किसी भी time एक active primary assignment चाहिए। Only primary delete करने पर CANNOT_DELETE_PRIMARY_ASSIGNMENT return होता है। पहले दूसरे department में assign करें, फिर original delete करें।
Bulk continueOnError mode support करता है। True set होने पर, partial failures (e.g., एक invalid employeeId) successful rows को roll back नहीं करते। Response successful[] और failed[] को अलग करता है ताकि office staff सिर्फ failures को fix और retry कर सकें।
Permission है emp_attendance:manage_assignments। Identity & Access Management से hand out करें। ज़्यादातर schools Head Clerk और Vice-Principal को देते हैं — teachers को नहीं।
किस मॉड्यूल का हिस्सा
2 modulesअक्सर पूछे गए सवाल
7 सवालक्या एक teacher एक साथ दो departments में हो सकती है?
हां — लेकिन किसी एक time पर सिर्फ एक primary हो सकता है। Primary department के rules daily attendance, late-coming, half-day और short-leave govern करते हैं; secondary assignments board-exam duty, examination cell membership या कोई भी cross-functional role capture करती हैं approval routing या department-specific reports के लिए। ज़्यादातर schools में सारे teachers year-round एक single primary assignment पर रहते हैं।
autoEndPrevious actually क्या change करता है?
जब true (default) हो, नई primary assignment create करने पर system automatically previous primary की toDate को नई fromDate से एक दिन पहले set कर देता है। Transfer atomic है — न overlap, न gap। autoEndPrevious=false के साथ नई primary अभी भी save होती है लेकिन पुरानी open-ended रहती है, जिसे validator overlapping flag करता है। हमेशा on रहने दें जब तक specific reason न हो end-dates manually manage करने का।
क्या मैं एक बार में 100 staff assign कर सकता हूँ?
हां — bulk endpoint per call 100 assignments तक accept करता है। उसके आगे, bulk को दो calls में split करें। Page UI से एक click में 100 rows तक select कर सकते हैं; 200+ staff वाले school के लिए wing या designation से filter करें और हर group को separately bulk-assign करें। Validator और database दोनों support करते हैं।
अगर मैं attendance records वाली assignment delete करूँ तो क्या होगा?
System hard-delete को ASSIGNMENT_HAS_ATTENDANCE_RECORDS (HTTP 409) के साथ block करता है और बताता है कि exactly कितने records हैं। इसकी जगह force-delete option (force=true) use करें — यह toDate को yesterday set करता है, assignment cleanly end करता है जबकि हर historical record जो उसके against grade हुआ था उसे preserve करता है। यह meaningful time तक run होने वाली assignments के लिए एकमात्र safe path है।
अगर मैं पुरानी assignment का department change करूँ तो क्या past-month attendance retrospectively re-grade होगी?
नहीं। Past attendance उन rules और department के against locked रहती है जो हर historical day को govern करते थे। System closed periods को कभी silently re-grade नहीं करता। अगर historical assignment correct करनी है, recommended path एक manual audit log entry और उस month के लिए downstream payroll adjustment है — Inkwelly का Employee Payroll exactly इसी case के लिए arrears handle करता है।
क्या future-dated assignment अभी validation fail होकर बाद में valid बन सकती है?
नहीं — validation submit के moment पर चलती है। अगर bulk row unknown employeeId या deactivated department reference करती है, वह immediately fail होती है और failed[] array में return होती है। जो assignments validation pass करती हैं पर future fromDate reference करती हैं, वे simply wait करती हैं — daily attendance grader date आने पर pick करता है, कोई further validation नहीं।
Timeline view soft-deleted assignments honour करता है?
हां — Department Timeline पूरी history दिखाता है जिसमें वे assignments भी हैं जो force-delete हुईं (जिनकी toDate yesterday set हुई)। Hard-deleted assignments — जो सिर्फ जब attendance records zero हों तब possible हैं — timeline से ऐसे disappear हो जाती हैं जैसे कभी थीं ही नहीं। यह intentional है: hard-delete same-day undo operation है, force-delete retire-with-history operation है।
आपको ये भी पसंद आ सकता है
5 लेखInkwelly आपके स्कूल पर — खुद देखें
30 मिनट का डेमो। आपके मौजूदा ERP को आपके साथ खोलकर, कॉल पर ही आपका डेटा Inkwelly में लोड करते हैं। कॉल ख़त्म होते-होते एक तय तारीख़ का गो-लाइव प्लान आपके हाथ में।