Skip to main content

Modules Overview

Introduction

Damsy ERP is organized into MVC Areas — self-contained modules that share authentication, session state, and the same data-access stack, but expose different menus, layouts, and business workflows. After login, the home dashboard shows only the modules your user account is licensed for.

Each module is gated by a boolean flag on Session["dtVerifyUser"] (type BO.User) and by the CompID company context set at sign-in.

Purpose

This page orients you to the full module map: what each area does, how to reach it, and where to read implementation-level detail. Use it as the starting point before diving into payroll, billing, stock, or any other functional area.

When to Use

Refer to this overview when you:

  • Need a single reference for all module entry URLs
  • Are assigning module flags to a new user account
  • Are planning cross-module integrations (for example, attendance feeding payroll)
  • Want to choose the right module doc for a support or development task

Module Summary

ModuleUser flagMVC AreaDashboard URLDocumentation
PayrollPayrollPayroll/Payroll/PayrollDashboard/IndexPayroll
RegistrationWebenrollRegistration/Registration/RegistrationDashboard/IndexRegistration
BillsBillingBills/Bills/BillsDashboard/IndexBills
StockZSTOCKStock/Stock/StockDashboard/IndexStock
SalesZSalesSales/Sales/SalesDashboard/IndexSales
ESSEssESS/ESS/EssDashboard/IndexESS
AttendanceAttPunchAttendancePunching/AttendancePunching/AttendanceDashboard/IndexAttendance
OperationOperationOperation/Operation/OperationDashboard/IndexOperation
AdministrationControlPanelAdminisration/Adminisration/UserDashBoard/IndexAdministration
ManagementManagementDashboardManagmentDashBoard/ManagmentDashBoard/ManagmentDashBoard/IndexManagement Dashboard
VerificationVerificationAndApprovalVerificationAndApproval/VerificationAndApproval/VerificationApprovalDashboard/IndexVerification
Contracted RatesContractedRatesContractedRates/ContractedRates/ContractedDashboard/IndexContracted Rates
PageID vs flag

Dashboard tiles call /Login/ModuleManagement?PageID=.... The PageID string is not always identical to the module flag — for example, Registration uses PageID Registration but flag Webenroll. See Module Routing.

How Modules Connect

Shared Architecture

Every module follows the same request stack:

  1. Session gate — redirect to login if CompID is missing
  2. Controller — Area controller action
  3. BO + DAL — business object populated with CompID, then stored procedure call via BaseHelper
  4. View — Razor page under module layout (_LayoutPayroll, _BillsLayout, etc.)
  5. Reports — Crystal Reports (.rpt + .aspx viewers) or ClosedXML Excel where applicable

Modern modules use the unified sidebar shell (shell-modern.css, sidebar-unified.css). Legacy modules (Sales, Operation, Attendance) retain a top header-navbar layout.

Permissions Model

LayerWhat it controls
Module flag on BO.UserWhether the home dashboard tile appears
CompID sessionCompany-scoped data on every DAL call
GetDataUserPermissions / MenuMasterFine-grained menu and page access (may be empty on minimal DB seeds)
Session["Entryflag"]Re-authentication for sensitive admin actions

There is no single ModuleAccess session key — access is the combination of flags, company context, and database-driven menu permissions.

Important Notes

Minimal database seeds

A blank database with only the minimal seed script may grant module flags but omit MenuMaster and UserPermissions rows. Users can log in and see tiles, yet individual menu links may fail until permissions are copied from a production database.

Deep links

Module dashboard URLs can be bookmarked. The session must remain valid; module flags are not re-checked on every ModuleManagement redirect.

Common Mistakes

MistakeResult
Granting Payroll without Attendance when workflows depend on punch dataSalary process runs on incomplete attendance
Using corrected spelling in Area URLs (Administration, ManagementDashboard)404 — historical typos are part of the route
Expecting ESS to replace root EmpSelfService APIsMobile or guard integrations may still hit root controllers

Next Steps

  1. Open the module doc for the area you are implementing or supporting.
  2. Trace one screen from controller → DAL → stored procedure in the codebase.
  3. Confirm module flags and menu permissions for test users before UAT.