Skip to content

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

  1. The user navigates to the application URL and is presented with Login.html.
  2. Credentials are validated by ASP.NET SQL Membership against the conprosoft_tenant database.
  3. The assigned roles determine which navigation items are visible (controlled by Web.Sitemap role attributes).
  4. Project-level data isolation: non-Administrator users automatically see only records tied to projects they are linked to in the Project_Users table — enforced by SharedBusinessRules.EnumerateDynamicAccessControlRules().
  5. Users in the Readonly role can browse all screens but all write actions (Insert, Edit, Delete, Import, etc.) are disabled.
  6. Self-registered users are created with isApproved = false and cannot log in until an Administrator manually approves the account in the membership management screens.

2. Project Lifecycle

2.1 Create a Project

  1. Navigate to SYSTEM ADMIN → Projects.
  2. Create a new record in the Project controller.
  3. Set client, BMH project number, contract value, start/finish dates, province, and status.
  4. Optionally attach a project agreement document.
  5. On save, the current user is automatically added to Project_Users if not already present.

2.2 Assign Participants

  • Link project users via Project Users (ProjectUsers controller); 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 ProjectClaims against fiscal periods.
  • Record overhead expenses in ProjectOverheadExpenses.
  • Record variation orders in ChangeOrders.
  • The Project record aggregates computed financial totals (contract value, claimed, paid, retention, remaining balance).

3. Human Resources Flow

3.1 Employee Onboarding

  1. Create an employee record in PersonResource (Status defaults to Active).
  2. Capture compliance records: Medical Screening, Training certificates, IPAC, PPE issue, Formal Education.
  3. Assign skills tags and trade/position.
  4. Upload profile picture (stored as BLOB in the Person table).

3.2 Leave Management

  1. Employee submits a leave application via HUMAN RESOURCES → Leave Application.
  2. On submission, an email is sent to the supervisor and a notification copy to no-reply@conprosoft.co.za.
  3. Supervisor/Manager reviews and updates the status (Approved/Rejected).
  4. On status update, an email is sent to the employee and supervisor with full leave details.

3.3 Timesheet Capture

  1. Employee submits a weekly timesheet via HUMAN RESOURCES → Time Sheet (TimeSheetHeader + TimeSheetDetail).
  2. On insert, an email notification is sent to the admin inbox and the employee's supervisor.
  3. On status update (e.g. Approved), a further email is sent.
  4. Timesheets feed the labour reporting suite (attendance register, timesheet detail, daily timesheet, total time by employee).

4. Procurement Flow

4.1 Raise a Requisition

  1. Navigate to PROCUREMENT → Requisitions.
  2. Create a new Requisition record linked to a project and bill code.
  3. Add line items via RequisitionResources.
  4. When ready, set the status to trigger approval: an email is sent to the supervisor and finance@bmhafrica.co.za.
  5. On approval, an email is sent back to the requestor.

4.2 Issue a Purchase Order

  1. Create a PurchaseOrders record linked to the approved requisition.
  2. Add PO line items via PurchaseorderResource.
  3. 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.
  4. For revised POs: the sendEmail_RequestApproval rule emails the approver requesting sign-off; sendEmail_Approved confirms approval.

4.3 Goods Receipt

  1. When goods arrive, create a GoodsReceipt record linked to the PO.
  2. Capture received quantities via GoodsreceiptResources.
  3. Attach a scanned delivery note if required.

4.4 Payment

  1. Create a Payments record linked to the PO.
  2. Attach proof of payment.
  3. 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

  1. Create a Task record (Status defaults to New, Progress to 0).
  2. 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.
  3. Add SubTask (activity) records under the main task.
  4. On new activity insert, an email is sent to the activity owner, assigned person, and supplier with CC to up to 5 participants.
  5. Progress and status are updated as work proceeds.

6. Issue Register Flow (Deprecated)

  1. Create an IssueRegister record (Status defaults to New, date fields default to today).
  2. On insert, an email is sent to the issue logger and the assigned user.
  3. On update, a further email is sent reflecting the new status.
  4. 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.ashx using 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 UserName of 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 (Client controller) with relevant contact data.
  • Maintain supplier information (Suppliers controller) and associated banking and compliance data.

Project Lifecycle

1. Project Creation

  • Create a new project in the Project controller.
  • 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 ProjectUsers to control access and participation.

3. Financial & Claims Functions

  • Capture claims using ProjectClaims.
  • Maintain overhead settings via ProjectOverheadExpenses where applicable.

Resource & Time Capture

Resource Setup

  • Maintain the resource master data with Resource and PersonResource.
  • Apply classifications using ResourceClassifications, PersonSkills, and tags.

Timesheet Capture

  • Capture time through TimeSheet controllers.
  • 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 GoodsReceipt and GoodsreceiptResources, linking receipts to orders and projects.
  • Attach supporting documents via the configured BLOB adapters.

Payments

  • Capture payments in the Payments controller.
  • Attach proof of payment or supporting documents via PaymentsAttachmentBlobAdapter (configured in web.config appSettings).

Reporting & Analysis

  • Use report controllers (e.g. LabourProjectPositionReport) and RDLC reports under /app/reports for:
  • 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.