Core Functions¶
This section describes the key operational flows supported by ConproSoft and how the system's modules collaborate to deliver them.
1. User Login & Access Control¶
- The user navigates to the application URL and is presented with
Login.html. - Credentials are validated by ASP.NET SQL Membership against the
conprosoft_tenantdatabase. - The assigned roles determine which navigation items are visible (controlled by
Web.Sitemaprole attributes). - Project-level data isolation: non-Administrator users automatically see only records tied to projects they are linked to in the
Project_Userstable — enforced bySharedBusinessRules.EnumerateDynamicAccessControlRules(). - Users in the
Readonlyrole can browse all screens but all write actions (Insert, Edit, Delete, Import, etc.) are disabled. - Self-registered users are created with
isApproved = falseand cannot log in until an Administrator manually approves the account in the membership management screens.
2. Project Lifecycle¶
2.1 Create a Project¶
- Navigate to SYSTEM ADMIN → Projects.
- Create a new record in the
Projectcontroller. - Set client, BMH project number, contract value, start/finish dates, province, and status.
- Optionally attach a project agreement document.
- On save, the current user is automatically added to
Project_Usersif not already present.
2.2 Assign Participants¶
- Link project users via Project Users (
ProjectUserscontroller); this controls who can see project-related records. - Link subcontractors via
ProjectSubcontractors. - Assign subcontractor workers via
ProjectSubcontractorResources.
2.3 Financial Tracking¶
- Capture periodic revenue claims in
ProjectClaimsagainst fiscal periods. - Record overhead expenses in
ProjectOverheadExpenses. - Record variation orders in
ChangeOrders. - The
Projectrecord aggregates computed financial totals (contract value, claimed, paid, retention, remaining balance).
3. Human Resources Flow¶
3.1 Employee Onboarding¶
- Create an employee record in
PersonResource(Status defaults to Active). - Capture compliance records: Medical Screening, Training certificates, IPAC, PPE issue, Formal Education.
- Assign skills tags and trade/position.
- Upload profile picture (stored as BLOB in the
Persontable).
3.2 Leave Management¶
- Employee submits a leave application via HUMAN RESOURCES → Leave Application.
- On submission, an email is sent to the supervisor and a notification copy to
no-reply@conprosoft.co.za. - Supervisor/Manager reviews and updates the status (Approved/Rejected).
- On status update, an email is sent to the employee and supervisor with full leave details.
3.3 Timesheet Capture¶
- Employee submits a weekly timesheet via HUMAN RESOURCES → Time Sheet (
TimeSheetHeader+TimeSheetDetail). - On insert, an email notification is sent to the admin inbox and the employee's supervisor.
- On status update (e.g. Approved), a further email is sent.
- Timesheets feed the labour reporting suite (attendance register, timesheet detail, daily timesheet, total time by employee).
4. Procurement Flow¶
4.1 Raise a Requisition¶
- Navigate to PROCUREMENT → Requisitions.
- Create a new
Requisitionrecord linked to a project and bill code. - Add line items via
RequisitionResources. - When ready, set the status to trigger approval: an email is sent to the supervisor and
finance@bmhafrica.co.za. - On approval, an email is sent back to the requestor.
4.2 Issue a Purchase Order¶
- Create a
PurchaseOrdersrecord linked to the approved requisition. - Add PO line items via
PurchaseorderResource. - When the PO is issued (Update action
sendEmail_PO), an email is sent to the supplier's email address, with CC to the requestor and approver. - For revised POs: the
sendEmail_RequestApprovalrule emails the approver requesting sign-off;sendEmail_Approvedconfirms approval.
4.3 Goods Receipt¶
- When goods arrive, create a
GoodsReceiptrecord linked to the PO. - Capture received quantities via
GoodsreceiptResources. - Attach a scanned delivery note if required.
4.4 Payment¶
- Create a
Paymentsrecord linked to the PO. - Attach proof of payment.
- On insert, an email notification is sent to the supplier,
finance@bmhafrica.co.za, and CCs to the requestor and issuing person.
5. Task Manager Flow¶
- Create a
Taskrecord (Status defaults to New, Progress to 0). - On insert, an email is sent to the task owner, assigned person, and supplier (if applicable), with CC to up to 5 participants and the assignment supervisor.
- Add
SubTask(activity) records under the main task. - On new activity insert, an email is sent to the activity owner, assigned person, and supplier with CC to up to 5 participants.
- Progress and status are updated as work proceeds.
6. Issue Register Flow (Deprecated)¶
- Create an
IssueRegisterrecord (Status defaults to New, date fields default to today). - On insert, an email is sent to the issue logger and the assigned user.
- On update, a further email is sent reflecting the new status.
- Responses are captured via
IssueResponse; each insert/update triggers an email to the logger and assignee.
7. Reporting¶
- Navigate to REPORTS in the main menu.
- Select a report from the relevant sub-section (HR Reports, Procurement Reports, Task Manager Reports).
- Reports are rendered via
Report.ashxusing RDLC templates under/app/reports. - Available output formats: PDF, Excel, Word (depending on report configuration).
- Filter parameters (date ranges, project, employee) are applied via the controller's filter UI before rendering.
8. Attachment Handling (BLOBs)¶
All file attachments (documents, certificates, images, invoices) are stored directly in SQL Server columns as binary data. The Blob.ashx handler manages upload and download. BLOB handlers are registered per entity in Blob.generated.cs. No external file system storage is used by default — all attachment data is within the database.
9. Error Logging (Database only implementation)¶
All unhandled application exceptions are automatically logged to an Errors table in the database. Each error record contains:
- A unique
ErrorID(GUID) shown to the user as a reference number ([Ref: <guid>]) - The exception message, type, source, and stack trace
- The
UserNameof the logged-in user at the time of the error - Any action arguments that were active at the time (controller, action, field values)
Errors can be reviewed by querying the Errors table directly in SQL Server Management Studio.
Client & Supplier Management¶
- Maintain client records (
Clientcontroller) with relevant contact data. - Maintain supplier information (
Supplierscontroller) and associated banking and compliance data.
Project Lifecycle¶
1. Project Creation¶
- Create a new project in the
Projectcontroller. - Configure high-level attributes such as client, description, status, region, and key dates.
2. Project Participants¶
- Associate subcontractors using
ProjectSubcontractors. - Link users to projects via
ProjectUsersto control access and participation.
3. Financial & Claims Functions¶
- Capture claims using
ProjectClaims. - Maintain overhead settings via
ProjectOverheadExpenseswhere applicable.
Resource & Time Capture¶
Resource Setup¶
- Maintain the resource master data with
ResourceandPersonResource. - Apply classifications using
ResourceClassifications,PersonSkills, and tags.
Timesheet Capture¶
- Capture time through
TimeSheetcontrollers. - Timesheets link resources to projects and activities, forming the basis for labour analysis and payroll integration.
Procurement & Goods Receipt¶
Requisitions & Purchase Orders¶
- Raise requisitions through
Requisition. - Convert requisitions into purchase orders using
PurchaseOrders.
Goods Receipt¶
- Confirm goods received using
GoodsReceiptandGoodsreceiptResources, linking receipts to orders and projects. - Attach supporting documents via the configured BLOB adapters.
Payments¶
- Capture payments in the
Paymentscontroller. - Attach proof of payment or supporting documents via
PaymentsAttachmentBlobAdapter(configured inweb.configappSettings).
Reporting & Analysis¶
- Use report controllers (e.g.
LabourProjectPositionReport) and RDLC reports under/app/reportsfor: - Labour and timesheet analysis
- Project position reporting
- Subcontractor performance and cost tracking
The detailed behaviour of each controller (fields, actions, views) is defined in the corresponding XML metadata and may be further extended in custom business rules under App_Code/custom/Rules.