diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md index e26dd89d02..db543e3636 100644 --- a/.github/copilot-instructions.md +++ b/.github/copilot-instructions.md @@ -32,6 +32,13 @@ Routing & middleware - Routes are prefixed with `/admin/api/` when accessed from frontend - Use kebab-case for endpoint names (e.g., `/delete-all`) - AdminRoleAuthMiddleware is applied at the router level +- **Finance Module** (consolidated at `/finance/`): + - Entry point: `src/finance/index.php` with Slim 4 app + - Routes in `src/finance/routes/` (dashboard.php, reports.php) + - Views in `src/finance/views/` with PhpRenderer + - Examples: `/finance/` (dashboard), `/finance/reports` + - Use FinanceRoleAuthMiddleware for security (allows admin OR finance permission) + - Menu entry in `src/ChurchCRM/Config/Menu/Menu.php` under "Finance" - **Deprecated locations** (DO NOT USE): - `src/v2/routes/admin/` - REMOVED (admin routes consolidated to `/admin/system/`) - `src/api/routes/system/` - Legacy admin APIs (no new files here) @@ -464,6 +471,7 @@ describe('Feature X', () => { **Available Commands:** - `cy.setupAdminSession()` - Authenticates as admin (reads `admin.username`, `admin.password` from config) - `cy.setupStandardSession()` - Authenticates as standard user (reads `standard.username`, `standard.password` from config) +- `cy.setupNoFinanceSession()` - Authenticates as user without finance permission (reads `nofinance.username`, `nofinance.password` from config) - `cy.typeInQuill()` - Rich text editor input **Credentials Configuration:** @@ -474,6 +482,8 @@ env: { 'admin.password': 'changeme', 'standard.username': 'tony.wade@example.com', 'standard.password': 'basicjoe', + 'nofinance.username': 'judith.matthews@example.com', + 'nofinance.password': 'noMoney$', } ``` - DO NOT hardcode credentials in test files @@ -598,6 +608,7 @@ Before committing code changes, verify: | `src/ChurchCRM/model/ChurchCRM/` | Propel ORM generated classes (don't edit) | | `src/api/` | REST API entry point + routes | | `src/admin/routes/api/` | Admin-only API endpoints (NEW - use this for admin APIs) | +| `src/finance/` | Finance module (Slim 4 MVC) - dashboard, reports | | `src/Include/` | Utility functions, helpers, Config.php | | `src/locale/` | i18n/translation strings | | `src/skin/v2/` | Compiled CSS/JS from Webpack | @@ -765,6 +776,6 @@ This ensures security vulnerabilities are not publicly disclosed and directs rep --- -Last updated: November 9, 2025 +Last updated: December 1, 2025 ``` diff --git a/cypress/e2e/api/private/admin/private.admin.user.settings.spec.js b/cypress/e2e/api/private/admin/private.admin.user.settings.spec.js index 654b82677f..623529577d 100644 --- a/cypress/e2e/api/private/admin/private.admin.user.settings.spec.js +++ b/cypress/e2e/api/private/admin/private.admin.user.settings.spec.js @@ -1,10 +1,12 @@ /// +// Use user 99 (amanda.black) for these tests to avoid conflicts with +// user 95 (judith.matthews) which is used for nofinance session tests describe("API Private Admin User", () => { it("Reset User failed logins", () => { cy.makePrivateAdminAPICall( "POST", - "/api/user/95/login/reset", + "/api/user/99/login/reset", null, 200, ); @@ -13,7 +15,7 @@ describe("API Private Admin User", () => { it("Reset User Password", () => { cy.makePrivateAdminAPICall( "POST", - "/api/user/95/password/reset", + "/api/user/99/password/reset", null, 200, ); @@ -22,7 +24,7 @@ describe("API Private Admin User", () => { it("DisableTwoFactor", () => { cy.makePrivateAdminAPICall( "POST", - "/api/user/95/disableTwoFactor", + "/api/user/99/disableTwoFactor", null, 200, ); diff --git a/cypress/e2e/ui/admin/admin.user.spec.js b/cypress/e2e/ui/admin/admin.user.spec.js index 45695b5ad5..3c07c3c836 100644 --- a/cypress/e2e/ui/admin/admin.user.spec.js +++ b/cypress/e2e/ui/admin/admin.user.spec.js @@ -9,12 +9,12 @@ describe("Admin User Password", () => { }); it("Admin Change password", () => { - cy.visit("v2/user/95/changePassword"); - cy.contains("Change Password: Judith Kennedy"); + cy.visit("v2/user/99/changePassword"); + cy.contains("Change Password: Amanda Black"); cy.get("#NewPassword1").type("new-user-password"); cy.get("#NewPassword2").type("new-user-password"); cy.get("form:nth-child(2)").submit(); - cy.url().should("contain", "v2/user/95/changePassword"); + cy.url().should("contain", "v2/user/99/changePassword"); cy.contains("Password Change Successful"); }); diff --git a/cypress/e2e/ui/finance/finance.dashboard.spec.js b/cypress/e2e/ui/finance/finance.dashboard.spec.js new file mode 100644 index 0000000000..02f24dd232 --- /dev/null +++ b/cypress/e2e/ui/finance/finance.dashboard.spec.js @@ -0,0 +1,179 @@ +/// + +/** + * Finance Dashboard Tests + * + * Tests for the new /finance/ module with Slim 4 MVC structure. + * The finance dashboard provides: + * - YTD payment and pledge metrics + * - Tax year reporting checklist + * - Quick actions for deposits and reports + * - Recent deposits list + * - Donation funds overview + */ + +describe("Finance Dashboard", () => { + beforeEach(() => { + cy.setupAdminSession(); + }); + + it("should load the finance dashboard", () => { + cy.visit("/finance/"); + cy.contains("Finance Dashboard"); + cy.contains("Fiscal Year"); + }); + + it("should display YTD metrics cards", () => { + cy.visit("/finance/"); + + // Check for the 4 metric cards + cy.contains("YTD Payments"); + cy.contains("YTD Pledges"); + cy.contains("Donor Families"); + cy.contains("Total Payments"); + }); + + it("should display Quick Actions section", () => { + cy.visit("/finance/"); + + cy.contains("Quick Actions"); + cy.contains("Create Deposit"); + cy.contains("Add Payment"); + cy.contains("Generate Reports"); + }); + + it("should navigate to deposits page from Create Deposit button", () => { + cy.visit("/finance/"); + + // Find and click the Create Deposit button + cy.contains("a", "Create Deposit").click(); + cy.url().should("contain", "FindDepositSlip.php"); + cy.contains("Deposit Listing"); + }); + + it("should navigate to reports page from Generate Reports button", () => { + cy.visit("/finance/"); + + // Find and click the Generate Reports button + cy.contains("a", "Generate Reports").click(); + cy.url().should("contain", "/finance/reports"); + cy.contains("Financial Reports"); + }); + + it("should display Tax Year Reporting Checklist", () => { + cy.visit("/finance/"); + + cy.contains("Tax Year Reporting Checklist"); + cy.contains("Close All Deposits"); + cy.contains("Review Donation Funds"); + cy.contains("Church Information"); + cy.contains("Tax Report Verbiage"); + cy.contains("Generate Tax Statements"); + }); + + it("should display Recent Deposits section", () => { + cy.visit("/finance/"); + + cy.contains("Recent Deposits"); + cy.contains("View All"); + + // Check table headers if deposits exist + cy.get("body").then(($body) => { + if ($body.find("table.table-hover").length > 0) { + cy.contains("th", "ID"); + cy.contains("th", "Date"); + cy.contains("th", "Type"); + cy.contains("th", "Status"); + } + }); + }); + + it("should display Deposit Statistics sidebar", () => { + cy.visit("/finance/"); + + cy.contains("Deposit Statistics"); + cy.contains("Total Deposits:"); + cy.contains("Open Deposits:"); + cy.contains("Closed Deposits:"); + }); + + it("should display Donation Funds sidebar", () => { + cy.visit("/finance/"); + + cy.contains("Donation Funds"); + }); + + it("should link to Donation Fund Editor from Manage Funds button", () => { + cy.visit("/finance/"); + + // Admin should see Manage Funds link + cy.contains("a", "Manage Funds").click(); + cy.url().should("contain", "DonationFundEditor.php"); + }); + + it("should navigate to settings from Church Information checklist item", () => { + cy.visit("/finance/"); + + // Find the Settings button in the Church Information row + cy.contains("Church Information") + .parents(".list-group-item") + .find("a") + .contains("Settings") + .click(); + + cy.url().should("contain", "SystemSettings.php"); + }); + + it("should link deposits checklist to FindDepositSlip", () => { + cy.visit("/finance/"); + + // Find the View button in the Close All Deposits row + cy.contains("Close All Deposits") + .parents(".list-group-item") + .find("a") + .contains("View") + .click(); + + cy.url().should("contain", "FindDepositSlip.php"); + }); +}); + +describe("Finance Dashboard - Standard User Access", () => { + beforeEach(() => { + cy.setupStandardSession(); + }); + + it("should allow standard users with finance permission to access the dashboard", () => { + // The standard test user (tony.wade) has finance permissions enabled in demo database + cy.visit("/finance/"); + + // Should be able to see the dashboard + cy.get("h1").should("contain", "Finance Dashboard"); + + // Metrics should be visible + cy.get(".finance-metric-card").should("have.length.at.least", 3); + }); +}); + +describe("Finance Dashboard - No Finance Permission", () => { + beforeEach(() => { + cy.setupNoFinanceSession(); + }); + + it("should deny access to users without finance permission", () => { + // User judith.matthews has no finance permission + cy.visit("/finance/", { failOnStatusCode: false }); + + // Should be redirected to access-denied page + cy.url().should("include", "/v2/access-denied"); + cy.url().should("include", "role=Finance"); + }); + + it("should deny access to finance reports for users without finance permission", () => { + cy.visit("/finance/reports", { failOnStatusCode: false }); + + // Should be redirected to access-denied page + cy.url().should("include", "/v2/access-denied"); + cy.url().should("include", "role=Finance"); + }); +}); diff --git a/cypress/e2e/ui/finance/finance.deposits.spec.js b/cypress/e2e/ui/finance/finance.deposits.spec.js index 20950a01be..763e0b03cb 100644 --- a/cypress/e2e/ui/finance/finance.deposits.spec.js +++ b/cypress/e2e/ui/finance/finance.deposits.spec.js @@ -11,6 +11,30 @@ describe("Finance Deposits", () => { cy.contains("Envelope Manager"); }); + it("Navigate to deposits from Finance Dashboard", () => { + cy.visit("/finance/"); + cy.contains("Finance Dashboard"); + + // Click Create Deposit from Quick Actions + cy.contains("a", "Create Deposit").click(); + cy.url().should("contain", "FindDepositSlip.php"); + cy.contains("Deposit Listing"); + }); + + it("Navigate to deposits from Finance Menu", () => { + cy.visit("/finance/"); + + // Use the View All link in Recent Deposits section + cy.contains("Recent Deposits") + .parents(".card") + .find("a") + .contains("View All") + .click(); + + cy.url().should("contain", "FindDepositSlip.php"); + cy.contains("Deposit Listing"); + }); + it("Create a new Deposit without comment", () => { cy.visit("/FindDepositSlip.php"); cy.get("#depositComment").clear(); diff --git a/cypress/e2e/ui/finance/finance.reports-index.spec.js b/cypress/e2e/ui/finance/finance.reports-index.spec.js new file mode 100644 index 0000000000..eef7f4b776 --- /dev/null +++ b/cypress/e2e/ui/finance/finance.reports-index.spec.js @@ -0,0 +1,133 @@ +/// + +/** + * Finance Reports Index Page Tests + * + * Tests for the new /finance/reports page with organized report categories. + * This page provides links to the legacy FinancialReports.php report generator + * with better organization and descriptions. + */ + +describe("Finance Reports Index", () => { + beforeEach(() => { + cy.setupAdminSession(); + }); + + it("should load the reports index page", () => { + cy.visit("/finance/reports"); + cy.contains("Financial Reports"); + cy.contains("Generate reports for tax statements"); + }); + + it("should display Tax & Giving Reports section", () => { + cy.visit("/finance/reports"); + + cy.contains("Tax & Giving Reports"); + cy.contains("Giving Report (Tax Statements)"); + cy.contains("Zero Givers"); + }); + + it("should display Pledge Reports section", () => { + cy.visit("/finance/reports"); + + cy.contains("Pledge Reports"); + cy.contains("Pledge Summary"); + cy.contains("Pledge Family Summary"); + cy.contains("Pledge Reminders"); + }); + + it("should display Deposit Reports section", () => { + cy.visit("/finance/reports"); + + cy.contains("Deposit Reports"); + cy.contains("Individual Deposit Report"); + cy.contains("Advanced Deposit Report"); + }); + + it("should display Membership Reports section", () => { + cy.visit("/finance/reports"); + + cy.contains("Membership Reports"); + cy.contains("Voting Members"); + }); + + it("should display Report Tips section", () => { + cy.visit("/finance/reports"); + + cy.contains("Report Tips"); + cy.contains("Fiscal Year"); + cy.contains("Export Options"); + cy.contains("Filtering"); + }); + + it("should navigate to Giving Report from link", () => { + cy.visit("/finance/reports"); + + cy.contains("Giving Report (Tax Statements)").click(); + cy.url().should("contain", "FinancialReports.php"); + cy.url().should("contain", "Giving"); + cy.contains("Financial Reports"); + }); + + it("should navigate to Zero Givers from link", () => { + cy.visit("/finance/reports"); + + cy.contains("Zero Givers").click(); + cy.url().should("contain", "FinancialReports.php"); + cy.url().should("contain", "Zero"); + }); + + it("should navigate to Pledge Summary from link", () => { + cy.visit("/finance/reports"); + + cy.contains("h6", "Pledge Summary").click(); + cy.url().should("contain", "FinancialReports.php"); + cy.url().should("contain", "Pledge%20Summary"); + }); + + it("should navigate to Advanced Deposit Report from link", () => { + cy.visit("/finance/reports"); + + cy.contains("Advanced Deposit Report").click(); + cy.url().should("contain", "FinancialReports.php"); + cy.url().should("contain", "Advanced"); + }); + + it("should navigate to Voting Members from link", () => { + cy.visit("/finance/reports"); + + cy.contains("Voting Members").click(); + cy.url().should("contain", "FinancialReports.php"); + cy.url().should("contain", "Voting"); + }); +}); + +describe("Finance Reports Index - Standard User Access", () => { + beforeEach(() => { + cy.setupStandardSession(); + }); + + it("should allow standard users with finance permission to access reports", () => { + // The standard test user (tony.wade) has finance permissions enabled in demo database + cy.visit("/finance/reports"); + + // Should be able to see the reports page + cy.contains("Tax & Giving Reports").should("be.visible"); + cy.contains("Pledge Reports").should("be.visible"); + }); +}); + +describe("Finance Reports Index - No Finance Permission", () => { + beforeEach(() => { + cy.setupNoFinanceSession(); + }); + + it("should deny access to users without finance permission", () => { + // User judith.matthews has no finance permission + cy.visit("/finance/reports", { failOnStatusCode: false }); + + // Should be redirected to access-denied page + cy.url().should("include", "/v2/access-denied"); + cy.url().should("include", "role=Finance"); + }); +}); diff --git a/cypress/e2e/ui/finance/finance.reports.spec.js b/cypress/e2e/ui/finance/finance.reports.spec.js index e894f94fcd..d0d18e8bf0 100644 --- a/cypress/e2e/ui/finance/finance.reports.spec.js +++ b/cypress/e2e/ui/finance/finance.reports.spec.js @@ -7,6 +7,23 @@ describe("Financial Reports", () => { cy.setupAdminSession(); }); + it("Navigate to Financial Reports from Dashboard", () => { + cy.visit("/finance/"); + cy.contains("Finance Dashboard"); + + // Click Generate Reports from Quick Actions + cy.contains("a", "Generate Reports").click(); + cy.url().should("contain", "/finance/reports"); + cy.contains("Financial Reports"); + }); + + it("Navigate to Giving Report from Reports Index", () => { + cy.visit("/finance/reports"); + cy.contains("Giving Report (Tax Statements)").click(); + cy.url().should("contain", "FinancialReports.php"); + cy.contains("Financial Reports"); + }); + it("Giving Report", () => { cy.visit("FinancialReports.php"); cy.contains("Financial Reports"); diff --git a/cypress/support/commands.d.ts b/cypress/support/commands.d.ts index 4fc3c4e4a3..ff0d1458ba 100644 --- a/cypress/support/commands.d.ts +++ b/cypress/support/commands.d.ts @@ -63,6 +63,12 @@ declare namespace Cypress { */ setupStandardSession(options?: { forceLogin?: boolean }): Chainable; + /** + * Ensure a no-finance user session is active (optionally forcing a fresh login) + * Used to test that finance pages correctly deny access to non-finance users + */ + setupNoFinanceSession(options?: { forceLogin?: boolean }): Chainable; + /** * Wait for page to be fully loaded */ diff --git a/cypress/support/ui-commands.js b/cypress/support/ui-commands.js index 9d28a136f7..2cbd4f9e81 100644 --- a/cypress/support/ui-commands.js +++ b/cypress/support/ui-commands.js @@ -78,6 +78,22 @@ Cypress.Commands.add('setupStandardSession', (options = {}) => { cy.setupLoginSession('standard-session', username, password, options); }); +/** + * Sets up a cached session for a user WITHOUT finance permissions. + * Used to test that finance pages correctly deny access to non-finance users. + * Reads credentials from cypress.config.ts env configuration. + * Usage in test files: + * beforeEach(() => cy.setupNoFinanceSession()); + */ +Cypress.Commands.add('setupNoFinanceSession', (options = {}) => { + const username = Cypress.env('nofinance.username'); + const password = Cypress.env('nofinance.password'); + if (!username || !password) { + throw new Error('No-finance user credentials not configured in cypress.config.ts env: nofinance.username and nofinance.password required'); + } + cy.setupLoginSession('nofinance-session', username, password, options); +}); + /** * cy.loginWithCredentials(username, password, sessionName, expectSuccess = true) * Login with custom credentials (for testing password changes, etc.) diff --git a/demo/ChurchCRM-Database.sql b/demo/ChurchCRM-Database.sql index fed3d70ccf..defe1257f1 100644 --- a/demo/ChurchCRM-Database.sql +++ b/demo/ChurchCRM-Database.sql @@ -3,7 +3,7 @@ -- Host: database Database: churchcrm -- ------------------------------------------------------ -- Server version 11.6.2-MariaDB-ubu2404 --- Date: Sun, 30 Nov 2025 02:08:45 -0500 +-- Date: Mon, 01 Dec 2025 20:27:36 -0500 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; @@ -161,7 +161,7 @@ CREATE TABLE `config_cfg` ( LOCK TABLES `config_cfg` WRITE; /*!40000 ALTER TABLE `config_cfg` DISABLE KEYS */; SET autocommit=0; -INSERT INTO `config_cfg` VALUES (4,'sLogLevel','100'),(10,'aFinanceQueries','28,30,31,32'),(21,'sDefaultCity','Kansas City'),(22,'sDefaultState','MO'),(23,'sDefaultCountry','United States'),(27,'sSMTPHost','mailserver:1025'),(28,'bSMTPAuth','1'),(29,'sSMTPUser','c58d4ec1a5a021'),(30,'sSMTPPass','3cfab2ee59990c'),(45,'iChurchLatitude','39.1111974'),(46,'iChurchLongitude','-94.5838009'),(48,'bHideFriendDate',''),(49,'bHideFamilyNewsletter',''),(50,'bHideWeddingDate',''),(51,'bHideLatLon',''),(52,'bUseDonationEnvelopes',''),(58,'bUseScannedChecks',''),(65,'sTimeZone','America/Detroit'),(67,'bForceUppercaseZip',''),(72,'bEnableNonDeductible',''),(80,'bEnableSelfRegistration','1'),(999,'bRegistered',''),(1003,'sChurchName','Main St. Cathedral'),(1004,'sChurchAddress','123 Main St'),(1005,'sChurchCity','Kansas City'),(1006,'sChurchState','MO'),(1007,'sChurchZip','64106'),(1008,'sChurchPhone','555 123 4234'),(1009,'sChurchEmail','demo@churchcrm.io'),(1010,'sHomeAreaCode','555'),(1014,'sTaxSigner','Elder Joe Smith'),(1016,'sReminderSigner','Elder Joe Smith'),(1025,'sConfirmSigner','Elder Joe Smith'),(1027,'sPledgeSummary2','as of'),(1028,'sDirectoryDisclaimer1','Every effort was made to insure the accuracy of this directory. If there are any errors or omissions, please contact the church office.This directory is for the use of the people of'),(1034,'sChurchChkAcctNum','111111111'),(1035,'bEnableGravatarPhotos','1'),(1037,'sExternalBackupType','WebDAV'),(1046,'sLastIntegrityCheckTimeStamp','20251130-20843'),(1047,'sChurchCountry','United States'),(2010,'bAllowEmptyLastName',''),(2017,'bEnableExternalCalendarAPI',''),(2045,'bPHPMailerAutoTLS',''),(2046,'sPHPMailerSMTPSecure',''),(2050,'bEnabledMenuLinks',''),(2060,'IncludeDataInNewPersonNotifications',''),(2061,'bSearchIncludeFamilyCustomProperties',''),(2064,'sLastSoftwareUpdateCheckTimeStamp','20251130-20844'),(2065,'bAllowPrereleaseUpgrade',''),(2069,'bRequire2FA',''),(2071,'bSendUserDeletedEmail',''),(20142,'bHSTSEnable',''); +INSERT INTO `config_cfg` VALUES (4,'sLogLevel','100'),(10,'aFinanceQueries','28,30,31,32'),(21,'sDefaultCity','Kansas City'),(22,'sDefaultState','MO'),(23,'sDefaultCountry','United States'),(27,'sSMTPHost','mailserver:1025'),(28,'bSMTPAuth','1'),(29,'sSMTPUser','c58d4ec1a5a021'),(30,'sSMTPPass','3cfab2ee59990c'),(45,'iChurchLatitude','39.1111974'),(46,'iChurchLongitude','-94.5838009'),(48,'bHideFriendDate',''),(49,'bHideFamilyNewsletter',''),(50,'bHideWeddingDate',''),(51,'bHideLatLon',''),(52,'bUseDonationEnvelopes',''),(58,'bUseScannedChecks',''),(65,'sTimeZone','America/Detroit'),(67,'bForceUppercaseZip',''),(72,'bEnableNonDeductible',''),(80,'bEnableSelfRegistration','1'),(999,'bRegistered',''),(1003,'sChurchName','Main St. Cathedral'),(1004,'sChurchAddress','123 Main St'),(1005,'sChurchCity','Kansas City'),(1006,'sChurchState','MO'),(1007,'sChurchZip','64106'),(1008,'sChurchPhone','555 123 4234'),(1009,'sChurchEmail','demo@churchcrm.io'),(1010,'sHomeAreaCode','555'),(1014,'sTaxSigner','Elder Joe Smith'),(1016,'sReminderSigner','Elder Joe Smith'),(1025,'sConfirmSigner','Elder Joe Smith'),(1027,'sPledgeSummary2','as of'),(1028,'sDirectoryDisclaimer1','Every effort was made to insure the accuracy of this directory. If there are any errors or omissions, please contact the church office.This directory is for the use of the people of'),(1034,'sChurchChkAcctNum','111111111'),(1035,'bEnableGravatarPhotos','1'),(1037,'sExternalBackupType','WebDAV'),(1046,'sLastIntegrityCheckTimeStamp','20251201-202536'),(1047,'sChurchCountry','United States'),(2010,'bAllowEmptyLastName',''),(2017,'bEnableExternalCalendarAPI',''),(2045,'bPHPMailerAutoTLS',''),(2046,'sPHPMailerSMTPSecure',''),(2050,'bEnabledMenuLinks',''),(2060,'IncludeDataInNewPersonNotifications',''),(2061,'bSearchIncludeFamilyCustomProperties',''),(2064,'sLastSoftwareUpdateCheckTimeStamp','20251201-193217'),(2065,'bAllowPrereleaseUpgrade',''),(2069,'bRequire2FA',''),(2071,'bSendUserDeletedEmail',''),(20142,'bHSTSEnable',''); /*!40000 ALTER TABLE `config_cfg` ENABLE KEYS */; UNLOCK TABLES; COMMIT; @@ -1413,7 +1413,7 @@ CREATE TABLE `note_nte` ( `nte_EditedBy` mediumint(8) unsigned NOT NULL DEFAULT 0, `nte_Type` varchar(50) DEFAULT NULL, PRIMARY KEY (`nte_ID`) -) ENGINE=InnoDB AUTO_INCREMENT=635 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; +) ENGINE=InnoDB AUTO_INCREMENT=639 DEFAULT CHARSET=utf8mb3 COLLATE=utf8mb3_unicode_ci; /*!40101 SET character_set_client = @saved_cs_client */; -- @@ -1423,12 +1423,12 @@ CREATE TABLE `note_nte` ( LOCK TABLES `note_nte` WRITE; /*!40000 ALTER TABLE `note_nte` DISABLE KEYS */; SET autocommit=0; -INSERT INTO `note_nte` VALUES (1,0,1,0,'Created','2016-01-01 00:00:00','2009-12-25 07:19:06',1,0,'create'),(2,2,0,0,'Created','2016-01-01 00:00:00','2009-12-25 07:19:06',1,0,'create'),(3,3,0,0,'Created','2016-01-01 00:00:00','2006-05-18 08:07:27',1,0,'create'),(4,4,0,0,'Created','2016-01-01 00:00:00','2016-04-03 09:13:02',1,0,'create'),(5,5,0,0,'Created','2016-01-01 00:00:00','2003-06-23 04:32:34',1,0,'create'),(6,0,2,0,'Created','2016-01-01 00:00:00','2009-04-13 01:17:12',1,0,'create'),(7,6,0,0,'Created','2016-01-01 00:00:00','2009-04-13 01:17:12',1,0,'create'),(8,7,0,0,'Created','2016-01-01 00:00:00','2006-08-18 00:45:56',1,0,'create'),(9,8,0,0,'Created','2016-01-01 00:00:00','2004-11-25 05:24:25',1,0,'create'),(10,9,0,0,'Created','2016-01-01 00:00:00','2009-08-19 12:28:31',1,0,'create'),(11,10,0,0,'Created','2016-01-01 00:00:00','2003-02-22 08:03:31',1,0,'create'),(12,11,0,0,'Created','2016-01-01 00:00:00','2011-12-29 16:42:21',1,0,'create'),(13,12,0,0,'Created','2016-01-01 00:00:00','2014-10-07 16:03:06',1,0,'create'),(14,13,0,0,'Created','2016-01-01 00:00:00','2013-02-28 09:48:03',1,0,'create'),(15,0,3,0,'Created','2016-01-01 00:00:00','2007-11-19 10:08:41',1,0,'create'),(16,14,0,0,'Created','2016-01-01 00:00:00','2007-11-19 10:08:41',1,0,'create'),(17,15,0,0,'Created','2016-01-01 00:00:00','2009-12-31 07:48:03',1,0,'create'),(18,16,0,0,'Created','2016-01-01 00:00:00','2011-05-22 19:11:16',1,0,'create'),(19,17,0,0,'Created','2016-01-01 00:00:00','2003-09-03 15:13:09',1,0,'create'),(20,0,4,0,'Created','2016-01-01 00:00:00','2003-10-14 16:05:17',1,0,'create'),(21,18,0,0,'Created','2016-01-01 00:00:00','2003-10-14 16:05:17',1,0,'create'),(22,19,0,0,'Created','2016-01-01 00:00:00','2008-05-09 05:12:00',1,0,'create'),(23,20,0,0,'Created','2016-01-01 00:00:00','2011-02-18 08:54:47',1,0,'create'),(24,21,0,0,'Created','2016-01-01 00:00:00','2009-08-31 21:41:59',1,0,'create'),(25,22,0,0,'Created','2016-01-01 00:00:00','2007-06-22 01:54:41',1,0,'create'),(26,23,0,0,'Created','2016-01-01 00:00:00','2009-08-13 03:54:14',1,0,'create'),(27,24,0,0,'Created','2016-01-01 00:00:00','2016-03-23 12:51:45',1,0,'create'),(28,25,0,0,'Created','2016-01-01 00:00:00','2007-08-08 06:34:24',1,0,'create'),(29,0,5,0,'Created','2016-01-01 00:00:00','2007-09-14 23:32:06',1,0,'create'),(30,26,0,0,'Created','2016-01-01 00:00:00','2007-09-14 23:32:06',1,0,'create'),(31,27,0,0,'Created','2016-01-01 00:00:00','2004-09-21 04:59:36',1,0,'create'),(32,0,6,0,'Created','2016-01-01 00:00:00','2013-07-25 20:18:03',1,0,'create'),(33,28,0,0,'Created','2016-01-01 00:00:00','2013-07-25 20:18:03',1,0,'create'),(34,29,0,0,'Created','2016-01-01 00:00:00','2004-03-04 00:12:40',1,0,'create'),(35,30,0,0,'Created','2016-01-01 00:00:00','2014-09-29 01:36:32',1,0,'create'),(36,31,0,0,'Created','2016-01-01 00:00:00','2007-04-14 04:13:25',1,0,'create'),(37,32,0,0,'Created','2016-01-01 00:00:00','2010-07-15 12:40:49',1,0,'create'),(38,33,0,0,'Created','2016-01-01 00:00:00','2006-07-25 23:21:13',1,0,'create'),(39,0,7,0,'Created','2016-01-01 00:00:00','2011-08-17 04:00:29',1,0,'create'),(40,34,0,0,'Created','2016-01-01 00:00:00','2011-08-17 04:00:29',1,0,'create'),(41,35,0,0,'Created','2016-01-01 00:00:00','2007-12-26 21:13:22',1,0,'create'),(43,36,0,0,'Created','2016-01-01 00:00:00','2015-02-07 16:23:42',1,0,'create'),(44,37,0,0,'Created','2016-01-01 00:00:00','2005-03-04 15:19:32',1,0,'create'),(45,38,0,0,'Created','2016-01-01 00:00:00','2008-10-02 23:33:21',1,0,'create'),(46,39,0,0,'Created','2016-01-01 00:00:00','2003-04-01 17:32:42',1,0,'create'),(47,40,0,0,'Created','2016-01-01 00:00:00','2015-05-27 00:37:53',1,0,'create'),(48,41,0,0,'Created','2016-01-01 00:00:00','2003-12-11 09:28:32',1,0,'create'),(49,42,0,0,'Created','2016-01-01 00:00:00','2012-03-22 08:26:55',1,0,'create'),(50,0,9,0,'Created','2016-01-01 00:00:00','2013-04-20 15:01:05',1,0,'create'),(51,43,0,0,'Created','2016-01-01 00:00:00','2013-04-20 15:01:05',1,0,'create'),(52,44,0,0,'Created','2016-01-01 00:00:00','2012-02-09 10:41:53',1,0,'create'),(56,48,0,0,'Created','2016-01-01 00:00:00','2010-01-07 01:55:34',1,0,'create'),(57,49,0,0,'Created','2016-01-01 00:00:00','2004-06-21 14:40:43',1,0,'create'),(58,0,10,0,'Created','2016-01-01 00:00:00','2004-09-09 18:40:30',1,0,'create'),(59,50,0,0,'Created','2016-01-01 00:00:00','2004-09-09 18:40:30',1,0,'create'),(60,51,0,0,'Created','2016-01-01 00:00:00','2006-11-20 15:07:23',1,0,'create'),(61,0,11,0,'Created','2016-01-01 00:00:00','2006-10-11 03:51:16',1,0,'create'),(62,52,0,0,'Created','2016-01-01 00:00:00','2006-10-11 03:51:16',1,0,'create'),(63,53,0,0,'Created','2016-01-01 00:00:00','2006-06-21 08:18:13',1,0,'create'),(64,54,0,0,'Created','2016-01-01 00:00:00','2006-05-24 17:02:09',1,0,'create'),(65,55,0,0,'Created','2016-01-01 00:00:00','2015-10-04 01:39:08',1,0,'create'),(66,56,0,0,'Created','2016-01-01 00:00:00','2006-07-23 14:13:59',1,0,'create'),(67,0,12,0,'Created','2016-01-01 00:00:00','2014-08-31 04:21:43',1,0,'create'),(68,57,0,0,'Created','2016-01-01 00:00:00','2014-08-31 04:21:43',1,0,'create'),(69,58,0,0,'Created','2016-01-01 00:00:00','2007-11-22 02:36:13',1,0,'create'),(70,0,13,0,'Created','2016-01-01 00:00:00','2007-02-01 16:50:26',1,0,'create'),(71,59,0,0,'Created','2016-01-01 00:00:00','2007-02-01 16:50:26',1,0,'create'),(72,60,0,0,'Created','2016-01-01 00:00:00','2006-11-07 12:19:08',1,0,'create'),(73,61,0,0,'Created','2016-01-01 00:00:00','2009-03-23 09:24:30',1,0,'create'),(74,62,0,0,'Created','2016-01-01 00:00:00','2013-07-10 17:58:37',1,0,'create'),(75,63,0,0,'Created','2016-01-01 00:00:00','2004-10-13 20:53:29',1,0,'create'),(79,0,14,0,'Created','2016-01-01 00:00:00','2013-10-15 09:25:25',1,0,'create'),(80,67,0,0,'Created','2016-01-01 00:00:00','2013-10-15 09:25:25',1,0,'create'),(81,68,0,0,'Created','2016-01-01 00:00:00','2003-09-29 17:56:26',1,0,'create'),(82,69,0,0,'Created','2016-01-01 00:00:00','2010-10-03 22:37:50',1,0,'create'),(84,70,0,0,'Created','2016-01-01 00:00:00','2003-04-25 18:30:46',1,0,'create'),(85,71,0,0,'Created','2016-01-01 00:00:00','2013-07-20 08:52:02',1,0,'create'),(86,72,0,0,'Created','2016-01-01 00:00:00','2002-10-01 07:06:30',1,0,'create'),(87,73,0,0,'Created','2016-01-01 00:00:00','2006-10-24 06:38:46',1,0,'create'),(88,74,0,0,'Created','2016-01-01 00:00:00','2005-01-21 16:03:19',1,0,'create'),(89,75,0,0,'Created','2016-01-01 00:00:00','2008-02-08 09:12:55',1,0,'create'),(90,0,16,0,'Created','2016-01-01 00:00:00','2016-03-01 14:19:32',1,0,'create'),(91,76,0,0,'Created','2016-01-01 00:00:00','2016-03-01 14:19:32',1,0,'create'),(92,77,0,0,'Created','2016-01-01 00:00:00','2013-07-06 04:09:48',1,0,'create'),(93,0,17,0,'Created','2016-01-01 00:00:00','2014-09-26 00:09:54',1,0,'create'),(94,78,0,0,'Created','2016-01-01 00:00:00','2014-09-26 00:09:54',1,0,'create'),(95,79,0,0,'Created','2016-01-01 00:00:00','2007-06-20 13:29:12',1,0,'create'),(96,80,0,0,'Created','2016-01-01 00:00:00','2015-12-26 15:02:22',1,0,'create'),(97,81,0,0,'Created','2016-01-01 00:00:00','2008-02-28 11:35:15',1,0,'create'),(98,82,0,0,'Created','2016-01-01 00:00:00','2007-04-24 18:10:43',1,0,'create'),(99,83,0,0,'Created','2016-01-01 00:00:00','2011-10-07 17:53:37',1,0,'create'),(100,0,18,0,'Created','2016-01-01 00:00:00','2002-04-09 05:31:36',1,0,'create'),(101,84,0,0,'Created','2016-01-01 00:00:00','2002-04-09 05:31:36',1,0,'create'),(102,85,0,0,'Created','2016-01-01 00:00:00','2015-03-05 07:54:37',1,0,'create'),(103,86,0,0,'Created','2016-01-01 00:00:00','2003-02-10 12:19:20',1,0,'create'),(104,87,0,0,'Created','2016-01-01 00:00:00','2008-11-13 08:27:32',1,0,'create'),(105,88,0,0,'Created','2016-01-01 00:00:00','2008-06-30 07:18:09',1,0,'create'),(106,89,0,0,'Created','2016-01-01 00:00:00','2005-04-12 20:56:36',1,0,'create'),(107,90,0,0,'Created','2016-01-01 00:00:00','2007-01-20 19:02:31',1,0,'create'),(108,91,0,0,'Created','2016-01-01 00:00:00','2010-12-30 01:21:15',1,0,'create'),(109,0,19,0,'Created','2016-01-01 00:00:00','2014-11-23 09:17:25',1,0,'create'),(110,92,0,0,'Created','2016-01-01 00:00:00','2014-11-23 09:17:25',1,0,'create'),(111,93,0,0,'Created','2016-01-01 00:00:00','2011-07-16 02:59:16',1,0,'create'),(112,94,0,0,'Created','2016-01-01 00:00:00','2006-05-25 19:29:47',1,0,'create'),(113,95,0,0,'Created','2016-01-01 00:00:00','2003-07-08 08:25:48',1,0,'create'),(114,96,0,0,'Created','2016-01-01 00:00:00','2006-04-08 10:42:12',1,0,'create'),(115,97,0,0,'Created','2016-01-01 00:00:00','2010-01-28 17:10:25',1,0,'create'),(116,98,0,0,'Created','2016-01-01 00:00:00','2007-02-16 17:31:50',1,0,'create'),(117,0,20,0,'Created','2016-01-01 00:00:00','2014-05-10 06:07:19',1,0,'create'),(118,99,0,0,'Created','2016-01-01 00:00:00','2014-05-10 06:07:19',1,0,'create'),(119,100,0,0,'Created','2016-01-01 00:00:00','2004-09-29 01:37:47',1,0,'create'),(121,102,0,0,'Created','2016-01-01 00:00:00','2005-03-07 21:32:47',1,0,'create'),(122,103,0,0,'Created','2016-01-01 00:00:00','2014-05-16 11:35:23',1,0,'create'),(123,26,0,0,'Updated via Family','2016-11-19 15:23:31',NULL,1,0,'edit'),(124,27,0,0,'Updated via Family','2016-11-19 15:23:31',NULL,1,0,'edit'),(125,0,5,0,'Updated','2016-11-19 15:23:31',NULL,1,0,'edit'),(126,61,0,0,'Updated','2016-11-19 15:25:34',NULL,1,0,'edit'),(127,62,0,0,'Updated','2016-11-19 15:25:41',NULL,1,0,'edit'),(128,63,0,0,'Updated','2016-11-19 15:26:00',NULL,1,0,'edit'),(129,63,0,0,'Updated','2016-11-19 15:27:02',NULL,1,0,'edit'),(130,60,0,0,'Updated','2016-11-19 15:27:13',NULL,1,0,'edit'),(131,69,0,0,'Updated','2016-11-19 15:38:00',NULL,1,0,'edit'),(132,69,0,0,'Profile Image Deleted','2016-11-19 15:38:03',NULL,1,0,'photo'),(133,68,0,0,'Updated','2016-11-19 15:38:31',NULL,1,0,'edit'),(134,67,0,0,'Updated','2016-11-19 15:38:39',NULL,1,0,'edit'),(135,4,0,0,'Updated','2016-11-19 15:39:19',NULL,1,0,'edit'),(136,5,0,0,'Updated','2016-11-19 15:39:30',NULL,1,0,'edit'),(137,80,0,0,'Updated','2016-11-19 15:39:51',NULL,1,0,'edit'),(138,81,0,0,'Updated','2016-11-19 15:39:54',NULL,1,0,'edit'),(139,82,0,0,'Updated','2016-11-19 15:39:58',NULL,1,0,'edit'),(140,83,0,0,'Updated','2016-11-19 15:40:22',NULL,1,0,'edit'),(141,31,0,0,'Updated','2016-11-19 15:40:40',NULL,1,0,'edit'),(142,33,0,0,'Updated','2016-11-19 15:40:43',NULL,1,0,'edit'),(143,29,0,0,'Updated','2016-11-19 15:40:58',NULL,1,0,'edit'),(144,32,0,0,'Updated','2016-11-19 15:41:02',NULL,1,0,'edit'),(145,30,0,0,'Updated','2016-11-19 15:41:11',NULL,1,0,'edit'),(146,51,0,0,'Updated','2016-11-19 15:41:44',NULL,1,0,'edit'),(147,13,0,0,'Updated','2016-11-19 15:42:01',NULL,1,0,'edit'),(148,12,0,0,'Updated','2016-11-19 15:42:04',NULL,1,0,'edit'),(149,11,0,0,'Updated','2016-11-19 15:42:07',NULL,1,0,'edit'),(150,10,0,0,'Updated','2016-11-19 15:42:10',NULL,1,0,'edit'),(151,9,0,0,'Updated','2016-11-19 15:42:14',NULL,1,0,'edit'),(152,8,0,0,'Updated','2016-11-19 15:42:20',NULL,1,0,'edit'),(153,94,0,0,'Updated','2016-11-19 15:42:48',NULL,1,0,'edit'),(154,95,0,0,'Updated','2016-11-19 15:42:57',NULL,1,0,'edit'),(155,96,0,0,'Updated','2016-11-19 15:43:06',NULL,1,0,'edit'),(156,97,0,0,'Updated','2016-11-19 15:43:10',NULL,1,0,'edit'),(157,53,0,0,'Updated','2016-11-19 15:43:22',NULL,1,0,'edit'),(158,27,0,0,'Updated','2016-11-19 15:43:47',NULL,1,0,'edit'),(159,35,0,0,'Updated','2016-11-19 15:44:07',NULL,1,0,'edit'),(160,35,0,0,'Profile Image Deleted','2016-11-19 15:44:11',NULL,1,0,'photo'),(161,59,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(162,63,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(163,60,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(164,61,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(165,62,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(166,0,13,0,'Updated','2016-11-19 15:46:56',NULL,1,0,'edit'),(167,59,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(168,63,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(169,60,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(170,61,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(171,62,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(172,0,13,0,'Updated','2016-11-19 15:49:36',NULL,1,0,'edit'),(173,68,0,0,'Updated via Family','2016-11-19 15:49:58',NULL,1,0,'edit'),(174,67,0,0,'Updated via Family','2016-11-19 15:49:58',NULL,1,0,'edit'),(175,69,0,0,'Updated via Family','2016-11-19 15:49:58',NULL,1,0,'edit'),(176,0,14,0,'Updated','2016-11-19 15:49:58',NULL,1,0,'edit'),(177,99,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(178,100,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(179,102,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(180,103,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(181,0,20,0,'Updated','2016-11-19 15:50:25',NULL,1,0,'edit'),(182,2,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(183,3,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(184,4,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(185,5,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(186,0,1,0,'Updated','2016-11-19 15:50:57',NULL,1,0,'edit'),(187,78,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(188,79,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(189,80,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(190,81,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(191,82,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(192,0,17,0,'Updated','2016-11-19 15:51:35',NULL,1,0,'edit'),(193,43,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(194,44,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(195,48,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(196,49,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(197,0,9,0,'Updated','2016-11-19 15:52:17',NULL,1,0,'edit'),(198,28,0,0,'Updated via Family','2016-11-19 15:52:44',NULL,1,0,'edit'),(199,30,0,0,'Updated via Family','2016-11-19 15:52:44',NULL,1,0,'edit'),(200,0,6,0,'Updated','2016-11-19 15:52:44',NULL,1,0,'edit'),(201,50,0,0,'Updated via Family','2016-11-19 15:52:50',NULL,1,0,'edit'),(202,0,10,0,'Updated','2016-11-19 15:52:50',NULL,1,0,'edit'),(203,6,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(204,7,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(205,8,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(206,9,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(207,10,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(208,11,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(209,12,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(210,13,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(211,0,2,0,'Updated','2016-11-19 15:53:10',NULL,1,0,'edit'),(212,92,0,0,'Updated via Family','2016-11-19 15:53:40',NULL,1,0,'edit'),(213,93,0,0,'Updated via Family','2016-11-19 15:53:40',NULL,1,0,'edit'),(214,98,0,0,'Updated via Family','2016-11-19 15:53:40',NULL,1,0,'edit'),(215,0,19,0,'Updated','2016-11-19 15:53:40',NULL,1,0,'edit'),(216,76,0,0,'Updated via Family','2016-11-19 15:53:48',NULL,1,0,'edit'),(217,77,0,0,'Updated via Family','2016-11-19 15:53:48',NULL,1,0,'edit'),(218,0,16,0,'Updated','2016-11-19 15:53:48',NULL,1,0,'edit'),(219,14,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(220,15,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(221,16,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(222,17,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(223,0,3,0,'Updated','2016-11-19 15:54:09',NULL,1,0,'edit'),(224,52,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(225,54,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(226,55,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(227,56,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(228,0,11,0,'Updated','2016-11-19 15:54:22',NULL,1,0,'edit'),(229,57,0,0,'Updated via Family','2016-11-19 15:54:30',NULL,1,0,'edit'),(230,58,0,0,'Updated via Family','2016-11-19 15:54:30',NULL,1,0,'edit'),(231,0,12,0,'Updated','2016-11-19 15:54:30',NULL,1,0,'edit'),(232,18,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(233,19,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(234,20,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(235,21,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(236,22,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(237,23,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(238,24,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(239,25,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(240,0,4,0,'Updated','2016-11-19 15:55:11',NULL,1,0,'edit'),(241,84,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(242,85,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(243,86,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(244,87,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(245,88,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(246,89,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(247,90,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(248,91,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(249,0,18,0,'Updated','2016-11-19 15:56:04',NULL,1,0,'edit'),(250,26,0,0,'Updated via Family','2016-11-19 15:56:49',NULL,1,0,'edit'),(251,0,5,0,'Updated','2016-11-19 15:56:49',NULL,1,0,'edit'),(252,34,0,0,'Updated via Family','2016-11-19 15:56:55',NULL,1,0,'edit'),(253,0,7,0,'Updated','2016-11-19 15:56:55',NULL,1,0,'edit'),(254,3,0,0,'Updated','2016-11-19 16:07:39',NULL,1,0,'edit'),(255,84,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(256,85,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(257,87,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(258,88,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(259,89,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(260,90,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(261,91,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(262,86,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(263,0,18,0,'Updated','2016-11-19 16:42:37',NULL,1,0,'edit'),(264,84,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(265,85,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(266,87,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(267,88,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(268,89,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(269,90,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(270,91,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(271,86,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(272,0,18,0,'Updated','2016-11-19 16:43:48',NULL,1,0,'edit'),(273,0,21,0,'Created','0000-00-00 00:00:00','2017-04-15 17:19:26',-1,0,'create'),(274,104,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(275,105,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(276,106,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(277,107,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(278,14,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(279,15,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(280,16,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(281,17,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(282,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(283,26,0,0,'Updated via Family','2017-04-15 17:22:04',NULL,1,0,'edit'),(284,0,5,0,'Updated','2017-04-15 17:22:04',NULL,1,0,'edit'),(285,50,0,0,'Updated via Family','2017-04-15 17:22:19',NULL,1,0,'edit'),(286,0,10,0,'Updated','2017-04-15 17:22:19',NULL,1,0,'edit'),(287,0,4,0,'Updated','0000-00-00 00:00:00','2016-11-19 15:55:11',1,0,'edit'),(288,0,4,0,'Deactivated the Family','2017-04-15 17:34:50',NULL,1,0,'edit'),(289,3,0,0,'system user password reset','2017-12-18 00:43:09',NULL,1,0,'user'),(290,3,0,0,'system user password changed by admin','2017-12-18 00:43:33',NULL,1,0,'user'),(291,3,0,0,'system user password reset','2017-12-18 00:45:44',NULL,1,0,'user'),(292,3,0,0,'system user password reset','2017-12-18 00:47:43',NULL,1,0,'user'),(293,96,0,0,'Deleted from group: ','2017-12-23 14:46:01',NULL,1,0,'group'),(294,96,0,0,'Deleted from group: Class 4-5','2017-12-23 14:46:59',NULL,1,0,'group'),(295,96,0,0,'Added to group: High School Class','2017-12-23 14:48:34',NULL,1,0,'group'),(296,3,0,0,'system user password changed by admin','2017-12-23 16:49:29',NULL,1,0,'user'),(297,35,0,0,'Updated','2018-01-01 19:25:55',NULL,1,0,'edit'),(298,1,0,0,NULL,'2018-02-19 17:11:42',NULL,1,0,'user'),(299,26,0,0,'Added to group: Clergy','2019-09-08 21:23:06',NULL,1,0,'group'),(300,2,0,0,'Added to group: Clergy','2019-09-08 21:23:18',NULL,1,0,'group'),(301,78,0,0,'Updated','2019-09-08 21:43:50',NULL,3,0,'edit'),(302,80,0,0,'Updated','2019-09-08 21:44:06',NULL,3,0,'edit'),(303,50,0,0,'Updated via Family','2019-09-11 23:04:11',NULL,1,0,'edit'),(304,0,10,0,'Updated','2019-09-11 23:04:11',NULL,1,0,'edit'),(305,50,0,0,'Updated','2019-09-11 23:09:35',NULL,1,0,'edit'),(306,95,0,0,'system user login reset','2020-11-27 11:40:54',NULL,1,0,'user'),(307,95,0,0,'system user password reset','2020-11-27 11:40:56',NULL,1,0,'user'),(308,0,2,0,'Verification email sent','2020-11-27 11:43:34',NULL,1,0,'verify-link'),(309,3,0,0,NULL,'2020-11-27 11:45:28',NULL,1,0,'user'),(310,105,0,0,'Updated','2021-03-21 17:45:34',NULL,1,0,'edit'),(311,105,0,0,'Updated','2021-03-21 17:46:45',NULL,1,0,'edit'),(312,104,0,0,'Updated','2021-04-25 09:41:33',NULL,1,0,'edit'),(313,104,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(314,105,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(315,106,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(316,107,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(317,0,21,0,'Updated','2021-04-25 09:45:44',NULL,1,0,'edit'),(318,95,0,0,'system user login reset','2021-04-25 10:04:41',NULL,1,0,'user'),(319,95,0,0,'system user password reset','2021-04-25 10:04:43',NULL,1,0,'user'),(320,0,2,0,'Verification email sent','2021-04-25 10:04:53',NULL,3,0,'verify-link'),(321,76,0,0,'system user password changed by admin','2021-04-25 10:10:53',NULL,1,0,'user'),(322,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(323,0,3,0,'Deactivated the Family','2021-04-25 10:21:17',NULL,3,0,'edit'),(324,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(325,0,3,0,'Activated the Family','2021-04-25 10:21:56',NULL,3,0,'edit'),(326,108,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(327,109,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(328,110,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(329,111,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(330,112,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(331,113,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(332,0,22,0,'Created','2021-04-25 10:24:12',NULL,3,0,'create'),(333,114,0,0,'Created','2021-04-25 10:32:31',NULL,3,0,'create'),(334,3,0,0,'system user changed password','2021-04-25 10:36:28',NULL,3,0,'user'),(335,3,0,0,'system user changed password','2021-04-25 10:37:04',NULL,3,0,'user'),(336,95,0,0,'system user login reset','2021-04-25 10:39:46',NULL,1,0,'user'),(337,95,0,0,'system user password reset','2021-04-25 10:39:49',NULL,1,0,'user'),(338,0,2,0,'Verification email sent','2021-04-25 10:39:55',NULL,3,0,'verify-link'),(339,95,0,0,'system user login reset','2021-04-25 10:41:32',NULL,1,0,'user'),(340,95,0,0,'system user password reset','2021-04-25 10:41:35',NULL,1,0,'user'),(341,0,2,0,'Verification email sent','2021-04-25 10:41:41',NULL,3,0,'verify-link'),(342,76,0,0,'system user password changed by admin','2021-04-25 10:47:42',NULL,1,0,'user'),(343,0,23,0,'Created','2021-04-25 10:50:11',NULL,-1,0,'create'),(344,115,0,0,'Created','2021-04-25 10:50:12',NULL,-1,0,'create'),(345,116,0,0,'Created','2021-04-25 10:50:12',NULL,-1,0,'create'),(346,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(347,0,3,0,'Deactivated the Family','2021-04-25 10:53:35',NULL,3,0,'edit'),(348,117,0,0,'Created via Family','2021-04-25 10:54:55',NULL,3,0,'create'),(349,118,0,0,'Created via Family','2021-04-25 10:54:55',NULL,3,0,'create'),(350,119,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(351,120,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(352,121,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(353,122,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(354,0,24,0,'Created','2021-04-25 10:54:55',NULL,3,0,'create'),(355,123,0,0,'Created','2021-04-25 10:56:50',NULL,3,0,'create'),(356,3,0,0,'system user changed password','2021-04-25 10:58:36',NULL,3,0,'user'),(357,3,0,0,'system user changed password','2021-04-25 10:58:53',NULL,3,0,'user'),(358,124,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(359,125,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(360,126,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(361,127,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(362,128,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(363,129,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(364,0,25,0,'Created','2021-04-25 12:35:39',NULL,3,0,'create'),(365,0,6,0,'Updated','2016-11-19 15:52:44',NULL,1,0,'edit'),(366,0,6,0,'Deactivated the Family','2021-04-25 12:37:28',NULL,1,0,'edit'),(367,0,6,0,'Updated','2016-11-19 15:52:44',NULL,1,0,'edit'),(368,0,6,0,'Activated the Family','2021-04-25 12:38:17',NULL,1,0,'edit'),(369,130,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(370,131,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(371,132,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(372,133,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(373,134,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(374,135,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(375,0,26,0,'Created','2021-04-25 12:41:04',NULL,3,0,'create'),(376,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(377,0,3,0,'Activated the Family','2021-04-25 12:43:11',NULL,3,0,'edit'),(378,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(379,0,3,0,'Deactivated the Family','2021-04-25 12:44:14',NULL,3,0,'edit'),(380,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(381,0,3,0,'Activated the Family','2021-04-25 12:44:28',NULL,3,0,'edit'),(382,136,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(383,137,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(384,138,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(385,139,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(386,140,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(387,141,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(388,0,27,0,'Created','2021-04-25 12:45:41',NULL,3,0,'create'),(389,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(390,0,3,0,'Deactivated the Family','2021-04-25 12:46:20',NULL,3,0,'edit'),(391,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(392,0,3,0,'Activated the Family','2021-04-25 12:47:01',NULL,3,0,'edit'),(393,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(394,0,3,0,'Deactivated the Family','2021-04-25 12:47:11',NULL,3,0,'edit'),(395,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(396,0,3,0,'Activated the Family','2021-04-25 12:47:22',NULL,3,0,'edit'),(397,142,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(398,143,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(399,144,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(400,145,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(401,146,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(402,147,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(403,0,28,0,'Created','2021-04-25 12:47:38',NULL,3,0,'create'),(404,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(405,0,3,0,'Deactivated the Family','2021-04-25 12:48:01',NULL,3,0,'edit'),(406,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(407,0,3,0,'Activated the Family','2021-04-25 12:48:12',NULL,3,0,'edit'),(408,148,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(409,149,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(410,150,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(411,151,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(412,152,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(413,153,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(414,0,29,0,'Created','2021-04-25 12:48:31',NULL,3,0,'create'),(415,95,0,0,'system user login reset','2021-04-25 13:09:08',NULL,1,0,'user'),(416,95,0,0,'system user password reset','2021-04-25 13:09:10',NULL,1,0,'user'),(417,0,2,0,'Verification email sent','2021-04-25 13:09:15',NULL,3,0,'verify-link'),(418,76,0,0,'system user password changed by admin','2021-04-25 13:11:31',NULL,1,0,'user'),(419,0,30,0,'Created','2021-04-25 13:13:24',NULL,-1,0,'create'),(420,154,0,0,'Created','2021-04-25 13:13:24',NULL,-1,0,'create'),(421,155,0,0,'Created','2021-04-25 13:13:24',NULL,-1,0,'create'),(422,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(423,0,3,0,'Deactivated the Family','2021-04-25 13:15:16',NULL,3,0,'edit'),(424,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(425,0,3,0,'Activated the Family','2021-04-25 13:15:29',NULL,3,0,'edit'),(426,156,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(427,157,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(428,158,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(429,159,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(430,160,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(431,161,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(432,0,31,0,'Created','2021-04-25 13:15:57',NULL,3,0,'create'),(433,162,0,0,'Created','2021-04-25 13:17:35',NULL,3,0,'create'),(434,3,0,0,'system user changed password','2021-04-25 13:18:40',NULL,3,0,'user'),(435,3,0,0,'system user changed password','2021-04-25 13:18:50',NULL,3,0,'user'),(436,95,0,0,'system user login reset','2021-04-25 16:15:58',NULL,1,0,'user'),(437,95,0,0,'system user password reset','2021-04-25 16:16:00',NULL,1,0,'user'),(438,0,2,0,'Verification email sent','2021-04-25 16:16:06',NULL,3,0,'verify-link'),(439,76,0,0,'system user password changed by admin','2021-04-25 16:18:39',NULL,1,0,'user'),(440,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(441,0,3,0,'Deactivated the Family','2021-04-25 16:23:48',NULL,3,0,'edit'),(442,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(443,0,3,0,'Activated the Family','2021-04-25 16:24:03',NULL,3,0,'edit'),(444,163,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(445,164,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(446,165,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(447,166,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(448,167,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(449,168,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(450,0,32,0,'Created','2021-04-25 16:24:31',NULL,3,0,'create'),(451,169,0,0,'Created','2021-04-25 16:26:33',NULL,3,0,'create'),(452,3,0,0,'system user changed password','2021-04-25 16:27:52',NULL,3,0,'user'),(453,3,0,0,'system user changed password','2021-04-25 16:28:03',NULL,3,0,'user'),(454,95,0,0,'system user login reset','2021-04-25 16:39:21',NULL,1,0,'user'),(455,95,0,0,'system user password reset','2021-04-25 16:39:23',NULL,1,0,'user'),(456,0,2,0,'Verification email sent','2021-04-25 16:39:28',NULL,3,0,'verify-link'),(457,76,0,0,'system user password changed by admin','2021-04-25 16:42:01',NULL,1,0,'user'),(458,95,0,0,'system user login reset','2021-04-25 16:46:55',NULL,1,0,'user'),(459,95,0,0,'system user password reset','2021-04-25 16:46:56',NULL,1,0,'user'),(460,0,2,0,'Verification email sent','2021-04-25 16:47:02',NULL,3,0,'verify-link'),(461,95,0,0,'system user login reset','2021-04-25 16:48:44',NULL,1,0,'user'),(462,95,0,0,'system user password reset','2021-04-25 16:48:47',NULL,1,0,'user'),(463,0,2,0,'Verification email sent','2021-04-25 16:48:54',NULL,3,0,'verify-link'),(464,76,0,0,'system user password changed by admin','2021-04-25 16:53:24',NULL,1,0,'user'),(465,0,33,0,'Created','2021-04-25 16:55:43',NULL,-1,0,'create'),(466,170,0,0,'Created','2021-04-25 16:55:43',NULL,-1,0,'create'),(467,171,0,0,'Created','2021-04-25 16:55:43',NULL,-1,0,'create'),(468,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(469,0,3,0,'Deactivated the Family','2021-04-25 16:57:34',NULL,3,0,'edit'),(470,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(471,0,3,0,'Activated the Family','2021-04-25 16:57:51',NULL,3,0,'edit'),(472,172,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(473,173,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(474,174,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(475,175,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(476,176,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(477,177,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(478,0,34,0,'Created','2021-04-25 16:58:11',NULL,3,0,'create'),(479,178,0,0,'Created','2021-04-25 16:59:38',NULL,3,0,'create'),(480,3,0,0,'system user changed password','2021-04-25 17:00:41',NULL,3,0,'user'),(481,3,0,0,'system user changed password','2021-04-25 17:00:51',NULL,3,0,'user'),(482,95,0,0,'system user login reset','2021-04-25 17:04:32',NULL,1,0,'user'),(483,95,0,0,'system user password reset','2021-04-25 17:04:34',NULL,1,0,'user'),(484,0,2,0,'Verification email sent','2021-04-25 17:04:39',NULL,3,0,'verify-link'),(485,76,0,0,'system user password changed by admin','2021-04-25 17:06:53',NULL,1,0,'user'),(486,95,0,0,'system user login reset','2021-04-25 17:18:54',NULL,1,0,'user'),(487,95,0,0,'system user password reset','2021-04-25 17:18:56',NULL,1,0,'user'),(488,0,2,0,'Verification email sent','2021-04-25 17:19:01',NULL,3,0,'verify-link'),(489,76,0,0,'system user password changed by admin','2021-04-25 17:21:52',NULL,1,0,'user'),(490,0,35,0,'Created','2021-04-25 17:24:16',NULL,-1,0,'create'),(491,179,0,0,'Created','2021-04-25 17:24:16',NULL,-1,0,'create'),(492,180,0,0,'Created','2021-04-25 17:24:16',NULL,-1,0,'create'),(493,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(494,0,3,0,'Deactivated the Family','2021-04-25 17:28:05',NULL,3,0,'edit'),(495,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(496,0,3,0,'Activated the Family','2021-04-25 17:28:47',NULL,3,0,'edit'),(497,181,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(498,182,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(499,183,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(500,184,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(501,185,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(502,186,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(503,0,36,0,'Created','2021-04-25 17:29:15',NULL,3,0,'create'),(504,187,0,0,'Created','2021-04-25 17:30:35',NULL,3,0,'create'),(505,3,0,0,'system user changed password','2021-04-25 17:31:49',NULL,3,0,'user'),(506,3,0,0,'system user changed password','2021-04-25 17:32:01',NULL,3,0,'user'),(507,95,0,0,'system user login reset','2021-04-25 17:34:18',NULL,1,0,'user'),(508,95,0,0,'system user password reset','2021-04-25 17:34:21',NULL,1,0,'user'),(509,0,2,0,'Verification email sent','2021-04-25 17:34:27',NULL,3,0,'verify-link'),(510,76,0,0,'system user password changed by admin','2021-04-25 17:36:33',NULL,1,0,'user'),(511,0,37,0,'Created','2021-04-25 17:37:18',NULL,-1,0,'create'),(512,188,0,0,'Created','2021-04-25 17:37:19',NULL,-1,0,'create'),(513,189,0,0,'Created','2021-04-25 17:37:19',NULL,-1,0,'create'),(514,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(515,0,3,0,'Deactivated the Family','2021-04-25 17:38:50',NULL,3,0,'edit'),(516,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(517,0,3,0,'Activated the Family','2021-04-25 17:39:02',NULL,3,0,'edit'),(518,190,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(519,191,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(520,192,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(521,193,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(522,194,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(523,195,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(524,0,38,0,'Created','2021-04-25 17:39:21',NULL,3,0,'create'),(525,196,0,0,'Created','2021-04-25 17:40:34',NULL,3,0,'create'),(526,3,0,0,'system user changed password','2021-04-25 17:41:28',NULL,3,0,'user'),(527,3,0,0,'system user changed password','2021-04-25 17:41:37',NULL,3,0,'user'),(528,95,0,0,'system user login reset','2021-04-25 20:00:09',NULL,1,0,'user'),(529,95,0,0,'system user password reset','2021-04-25 20:00:11',NULL,1,0,'user'),(530,0,2,0,'Verification email sent','2021-04-25 20:00:18',NULL,3,0,'verify-link'),(531,76,0,0,'system user password changed by admin','2021-04-25 20:03:06',NULL,1,0,'user'),(532,0,39,0,'Created','2021-04-25 20:05:48',NULL,-1,0,'create'),(533,197,0,0,'Created','2021-04-25 20:05:48',NULL,-1,0,'create'),(534,198,0,0,'Created','2021-04-25 20:05:48',NULL,-1,0,'create'),(535,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(536,0,3,0,'Deactivated the Family','2021-04-25 20:07:22',NULL,3,0,'edit'),(537,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(538,0,3,0,'Activated the Family','2021-04-25 20:07:35',NULL,3,0,'edit'),(539,199,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(540,200,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(541,201,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(542,202,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(543,203,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(544,204,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(545,0,40,0,'Created','2021-04-25 20:07:53',NULL,3,0,'create'),(546,205,0,0,'Created','2021-04-25 20:09:02',NULL,3,0,'create'),(547,3,0,0,'system user changed password','2021-04-25 20:09:55',NULL,3,0,'user'),(548,3,0,0,'system user changed password','2021-04-25 20:10:04',NULL,3,0,'user'),(549,95,0,0,'system user login reset','2021-04-25 21:32:18',NULL,1,0,'user'),(550,95,0,0,'system user password reset','2021-04-25 21:32:21',NULL,1,0,'user'),(551,0,2,0,'Verification email sent','2021-04-25 21:32:26',NULL,3,0,'verify-link'),(552,76,0,0,'system user password changed by admin','2021-04-25 21:35:47',NULL,1,0,'user'),(553,19,0,0,'Updated','2021-04-25 21:36:05',NULL,1,0,'edit'),(554,18,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(555,19,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(556,21,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(557,22,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(558,23,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(559,24,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(560,25,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(561,20,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(562,0,4,0,'Updated','2021-04-25 21:36:43',NULL,1,0,'edit'),(563,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(564,0,3,0,'Deactivated the Family','2021-04-25 21:40:39',NULL,3,0,'edit'),(565,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(566,0,3,0,'Activated the Family','2021-04-25 21:40:56',NULL,3,0,'edit'),(567,206,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(568,207,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(569,208,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(570,209,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(571,210,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(572,211,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(573,0,41,0,'Created','2021-04-25 21:41:31',NULL,3,0,'create'),(574,212,0,0,'Created','2021-04-25 21:43:48',NULL,3,0,'create'),(575,3,0,0,'system user changed password','2021-04-25 21:45:00',NULL,3,0,'user'),(576,3,0,0,'system user changed password','2021-04-25 21:45:10',NULL,3,0,'user'),(577,95,0,0,'system user login reset','2021-04-25 21:48:47',NULL,1,0,'user'),(578,95,0,0,'system user password reset','2021-04-25 21:48:49',NULL,1,0,'user'),(579,0,2,0,'Verification email sent','2021-04-25 21:48:55',NULL,3,0,'verify-link'),(580,76,0,0,'system user password changed by admin','2021-04-25 21:51:42',NULL,1,0,'user'),(581,0,42,0,'Created','2021-04-25 21:52:35',NULL,-1,0,'create'),(582,213,0,0,'Created','2021-04-25 21:52:35',NULL,-1,0,'create'),(583,214,0,0,'Created','2021-04-25 21:52:35',NULL,-1,0,'create'),(584,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(585,0,3,0,'Deactivated the Family','2021-04-25 21:54:26',NULL,3,0,'edit'),(586,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(587,0,3,0,'Activated the Family','2021-04-25 21:54:47',NULL,3,0,'edit'),(588,215,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(589,216,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(590,217,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(591,218,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(592,219,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(593,220,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(594,0,43,0,'Created','2021-04-25 21:55:18',NULL,3,0,'create'),(595,221,0,0,'Created','2021-04-25 21:57:16',NULL,3,0,'create'),(596,3,0,0,'system user changed password','2021-04-25 21:58:46',NULL,3,0,'user'),(597,3,0,0,'system user changed password','2021-04-25 21:58:58',NULL,3,0,'user'),(598,95,0,0,'system user login reset','2021-04-25 22:39:43',NULL,1,0,'user'),(599,95,0,0,'system user password reset','2021-04-25 22:39:46',NULL,1,0,'user'),(600,0,2,0,'Verification email sent','2021-04-25 22:39:53',NULL,3,0,'verify-link'),(601,76,0,0,'system user password changed by admin','2021-04-25 22:42:54',NULL,1,0,'user'),(602,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(603,0,3,0,'Deactivated the Family','2021-04-25 22:48:03',NULL,3,0,'edit'),(604,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(605,0,3,0,'Activated the Family','2021-04-25 22:48:22',NULL,3,0,'edit'),(606,222,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(607,223,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(608,224,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(609,225,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(610,226,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(611,227,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(612,0,44,0,'Created','2021-04-25 22:48:59',NULL,3,0,'create'),(613,228,0,0,'Created','2021-04-25 22:50:53',NULL,3,0,'create'),(614,3,0,0,'system user changed password','2021-04-25 22:52:22',NULL,3,0,'user'),(615,3,0,0,'system user changed password','2021-04-25 22:52:34',NULL,3,0,'user'),(616,0,13,0,'Updated','2016-11-19 15:49:36',NULL,1,0,'edit'),(617,0,13,0,'Deactivated the Family','2022-12-03 14:38:02',NULL,1,0,'edit'),(618,0,13,0,'Updated','2016-11-19 15:49:36',NULL,1,0,'edit'),(619,0,13,0,'Activated the Family','2022-12-03 14:38:26',NULL,1,0,'edit'),(620,95,0,0,'system user deleted','2022-12-03 17:05:27',NULL,1,0,'user'),(621,76,0,0,'system user deleted','2022-12-03 17:06:34',NULL,1,0,'user'),(622,3,0,0,'system user deleted','2022-12-03 17:07:19',NULL,1,0,'user'),(623,59,0,0,'system user created','2022-12-03 17:09:58',NULL,1,0,'user'),(624,59,0,0,'system user deleted','2022-12-03 17:10:05',NULL,1,0,'user'),(625,59,0,0,'system user created','2022-12-03 17:12:15',NULL,1,0,'user'),(626,59,0,0,'system user deleted','2022-12-03 17:12:22',NULL,1,0,'user'),(627,3,0,0,'system user created','2022-12-29 18:40:16',NULL,1,0,'user'),(628,3,0,0,NULL,'2022-12-29 18:40:27',NULL,1,0,'user'),(629,3,0,0,'system user password changed by admin','2022-12-29 18:43:18',NULL,1,0,'user'),(630,95,0,0,'system user created','2022-12-29 21:01:30',NULL,1,0,'user'),(631,95,0,0,'system user login reset','2022-12-29 21:01:40',NULL,1,0,'user'),(632,95,0,0,'system user password reset','2022-12-29 21:01:42',NULL,1,0,'user'),(633,88,0,0,'Updated','2023-11-16 12:39:33',NULL,1,0,'edit'); +INSERT INTO `note_nte` VALUES (1,0,1,0,'Created','2016-01-01 00:00:00','2009-12-25 07:19:06',1,0,'create'),(2,2,0,0,'Created','2016-01-01 00:00:00','2009-12-25 07:19:06',1,0,'create'),(3,3,0,0,'Created','2016-01-01 00:00:00','2006-05-18 08:07:27',1,0,'create'),(4,4,0,0,'Created','2016-01-01 00:00:00','2016-04-03 09:13:02',1,0,'create'),(5,5,0,0,'Created','2016-01-01 00:00:00','2003-06-23 04:32:34',1,0,'create'),(6,0,2,0,'Created','2016-01-01 00:00:00','2009-04-13 01:17:12',1,0,'create'),(7,6,0,0,'Created','2016-01-01 00:00:00','2009-04-13 01:17:12',1,0,'create'),(8,7,0,0,'Created','2016-01-01 00:00:00','2006-08-18 00:45:56',1,0,'create'),(9,8,0,0,'Created','2016-01-01 00:00:00','2004-11-25 05:24:25',1,0,'create'),(10,9,0,0,'Created','2016-01-01 00:00:00','2009-08-19 12:28:31',1,0,'create'),(11,10,0,0,'Created','2016-01-01 00:00:00','2003-02-22 08:03:31',1,0,'create'),(12,11,0,0,'Created','2016-01-01 00:00:00','2011-12-29 16:42:21',1,0,'create'),(13,12,0,0,'Created','2016-01-01 00:00:00','2014-10-07 16:03:06',1,0,'create'),(14,13,0,0,'Created','2016-01-01 00:00:00','2013-02-28 09:48:03',1,0,'create'),(15,0,3,0,'Created','2016-01-01 00:00:00','2007-11-19 10:08:41',1,0,'create'),(16,14,0,0,'Created','2016-01-01 00:00:00','2007-11-19 10:08:41',1,0,'create'),(17,15,0,0,'Created','2016-01-01 00:00:00','2009-12-31 07:48:03',1,0,'create'),(18,16,0,0,'Created','2016-01-01 00:00:00','2011-05-22 19:11:16',1,0,'create'),(19,17,0,0,'Created','2016-01-01 00:00:00','2003-09-03 15:13:09',1,0,'create'),(20,0,4,0,'Created','2016-01-01 00:00:00','2003-10-14 16:05:17',1,0,'create'),(21,18,0,0,'Created','2016-01-01 00:00:00','2003-10-14 16:05:17',1,0,'create'),(22,19,0,0,'Created','2016-01-01 00:00:00','2008-05-09 05:12:00',1,0,'create'),(23,20,0,0,'Created','2016-01-01 00:00:00','2011-02-18 08:54:47',1,0,'create'),(24,21,0,0,'Created','2016-01-01 00:00:00','2009-08-31 21:41:59',1,0,'create'),(25,22,0,0,'Created','2016-01-01 00:00:00','2007-06-22 01:54:41',1,0,'create'),(26,23,0,0,'Created','2016-01-01 00:00:00','2009-08-13 03:54:14',1,0,'create'),(27,24,0,0,'Created','2016-01-01 00:00:00','2016-03-23 12:51:45',1,0,'create'),(28,25,0,0,'Created','2016-01-01 00:00:00','2007-08-08 06:34:24',1,0,'create'),(29,0,5,0,'Created','2016-01-01 00:00:00','2007-09-14 23:32:06',1,0,'create'),(30,26,0,0,'Created','2016-01-01 00:00:00','2007-09-14 23:32:06',1,0,'create'),(31,27,0,0,'Created','2016-01-01 00:00:00','2004-09-21 04:59:36',1,0,'create'),(32,0,6,0,'Created','2016-01-01 00:00:00','2013-07-25 20:18:03',1,0,'create'),(33,28,0,0,'Created','2016-01-01 00:00:00','2013-07-25 20:18:03',1,0,'create'),(34,29,0,0,'Created','2016-01-01 00:00:00','2004-03-04 00:12:40',1,0,'create'),(35,30,0,0,'Created','2016-01-01 00:00:00','2014-09-29 01:36:32',1,0,'create'),(36,31,0,0,'Created','2016-01-01 00:00:00','2007-04-14 04:13:25',1,0,'create'),(37,32,0,0,'Created','2016-01-01 00:00:00','2010-07-15 12:40:49',1,0,'create'),(38,33,0,0,'Created','2016-01-01 00:00:00','2006-07-25 23:21:13',1,0,'create'),(39,0,7,0,'Created','2016-01-01 00:00:00','2011-08-17 04:00:29',1,0,'create'),(40,34,0,0,'Created','2016-01-01 00:00:00','2011-08-17 04:00:29',1,0,'create'),(41,35,0,0,'Created','2016-01-01 00:00:00','2007-12-26 21:13:22',1,0,'create'),(43,36,0,0,'Created','2016-01-01 00:00:00','2015-02-07 16:23:42',1,0,'create'),(44,37,0,0,'Created','2016-01-01 00:00:00','2005-03-04 15:19:32',1,0,'create'),(45,38,0,0,'Created','2016-01-01 00:00:00','2008-10-02 23:33:21',1,0,'create'),(46,39,0,0,'Created','2016-01-01 00:00:00','2003-04-01 17:32:42',1,0,'create'),(47,40,0,0,'Created','2016-01-01 00:00:00','2015-05-27 00:37:53',1,0,'create'),(48,41,0,0,'Created','2016-01-01 00:00:00','2003-12-11 09:28:32',1,0,'create'),(49,42,0,0,'Created','2016-01-01 00:00:00','2012-03-22 08:26:55',1,0,'create'),(50,0,9,0,'Created','2016-01-01 00:00:00','2013-04-20 15:01:05',1,0,'create'),(51,43,0,0,'Created','2016-01-01 00:00:00','2013-04-20 15:01:05',1,0,'create'),(52,44,0,0,'Created','2016-01-01 00:00:00','2012-02-09 10:41:53',1,0,'create'),(56,48,0,0,'Created','2016-01-01 00:00:00','2010-01-07 01:55:34',1,0,'create'),(57,49,0,0,'Created','2016-01-01 00:00:00','2004-06-21 14:40:43',1,0,'create'),(58,0,10,0,'Created','2016-01-01 00:00:00','2004-09-09 18:40:30',1,0,'create'),(59,50,0,0,'Created','2016-01-01 00:00:00','2004-09-09 18:40:30',1,0,'create'),(60,51,0,0,'Created','2016-01-01 00:00:00','2006-11-20 15:07:23',1,0,'create'),(61,0,11,0,'Created','2016-01-01 00:00:00','2006-10-11 03:51:16',1,0,'create'),(62,52,0,0,'Created','2016-01-01 00:00:00','2006-10-11 03:51:16',1,0,'create'),(63,53,0,0,'Created','2016-01-01 00:00:00','2006-06-21 08:18:13',1,0,'create'),(64,54,0,0,'Created','2016-01-01 00:00:00','2006-05-24 17:02:09',1,0,'create'),(65,55,0,0,'Created','2016-01-01 00:00:00','2015-10-04 01:39:08',1,0,'create'),(66,56,0,0,'Created','2016-01-01 00:00:00','2006-07-23 14:13:59',1,0,'create'),(67,0,12,0,'Created','2016-01-01 00:00:00','2014-08-31 04:21:43',1,0,'create'),(68,57,0,0,'Created','2016-01-01 00:00:00','2014-08-31 04:21:43',1,0,'create'),(69,58,0,0,'Created','2016-01-01 00:00:00','2007-11-22 02:36:13',1,0,'create'),(70,0,13,0,'Created','2016-01-01 00:00:00','2007-02-01 16:50:26',1,0,'create'),(71,59,0,0,'Created','2016-01-01 00:00:00','2007-02-01 16:50:26',1,0,'create'),(72,60,0,0,'Created','2016-01-01 00:00:00','2006-11-07 12:19:08',1,0,'create'),(73,61,0,0,'Created','2016-01-01 00:00:00','2009-03-23 09:24:30',1,0,'create'),(74,62,0,0,'Created','2016-01-01 00:00:00','2013-07-10 17:58:37',1,0,'create'),(75,63,0,0,'Created','2016-01-01 00:00:00','2004-10-13 20:53:29',1,0,'create'),(79,0,14,0,'Created','2016-01-01 00:00:00','2013-10-15 09:25:25',1,0,'create'),(80,67,0,0,'Created','2016-01-01 00:00:00','2013-10-15 09:25:25',1,0,'create'),(81,68,0,0,'Created','2016-01-01 00:00:00','2003-09-29 17:56:26',1,0,'create'),(82,69,0,0,'Created','2016-01-01 00:00:00','2010-10-03 22:37:50',1,0,'create'),(84,70,0,0,'Created','2016-01-01 00:00:00','2003-04-25 18:30:46',1,0,'create'),(85,71,0,0,'Created','2016-01-01 00:00:00','2013-07-20 08:52:02',1,0,'create'),(86,72,0,0,'Created','2016-01-01 00:00:00','2002-10-01 07:06:30',1,0,'create'),(87,73,0,0,'Created','2016-01-01 00:00:00','2006-10-24 06:38:46',1,0,'create'),(88,74,0,0,'Created','2016-01-01 00:00:00','2005-01-21 16:03:19',1,0,'create'),(89,75,0,0,'Created','2016-01-01 00:00:00','2008-02-08 09:12:55',1,0,'create'),(90,0,16,0,'Created','2016-01-01 00:00:00','2016-03-01 14:19:32',1,0,'create'),(91,76,0,0,'Created','2016-01-01 00:00:00','2016-03-01 14:19:32',1,0,'create'),(92,77,0,0,'Created','2016-01-01 00:00:00','2013-07-06 04:09:48',1,0,'create'),(93,0,17,0,'Created','2016-01-01 00:00:00','2014-09-26 00:09:54',1,0,'create'),(94,78,0,0,'Created','2016-01-01 00:00:00','2014-09-26 00:09:54',1,0,'create'),(95,79,0,0,'Created','2016-01-01 00:00:00','2007-06-20 13:29:12',1,0,'create'),(96,80,0,0,'Created','2016-01-01 00:00:00','2015-12-26 15:02:22',1,0,'create'),(97,81,0,0,'Created','2016-01-01 00:00:00','2008-02-28 11:35:15',1,0,'create'),(98,82,0,0,'Created','2016-01-01 00:00:00','2007-04-24 18:10:43',1,0,'create'),(99,83,0,0,'Created','2016-01-01 00:00:00','2011-10-07 17:53:37',1,0,'create'),(100,0,18,0,'Created','2016-01-01 00:00:00','2002-04-09 05:31:36',1,0,'create'),(101,84,0,0,'Created','2016-01-01 00:00:00','2002-04-09 05:31:36',1,0,'create'),(102,85,0,0,'Created','2016-01-01 00:00:00','2015-03-05 07:54:37',1,0,'create'),(103,86,0,0,'Created','2016-01-01 00:00:00','2003-02-10 12:19:20',1,0,'create'),(104,87,0,0,'Created','2016-01-01 00:00:00','2008-11-13 08:27:32',1,0,'create'),(105,88,0,0,'Created','2016-01-01 00:00:00','2008-06-30 07:18:09',1,0,'create'),(106,89,0,0,'Created','2016-01-01 00:00:00','2005-04-12 20:56:36',1,0,'create'),(107,90,0,0,'Created','2016-01-01 00:00:00','2007-01-20 19:02:31',1,0,'create'),(108,91,0,0,'Created','2016-01-01 00:00:00','2010-12-30 01:21:15',1,0,'create'),(109,0,19,0,'Created','2016-01-01 00:00:00','2014-11-23 09:17:25',1,0,'create'),(110,92,0,0,'Created','2016-01-01 00:00:00','2014-11-23 09:17:25',1,0,'create'),(111,93,0,0,'Created','2016-01-01 00:00:00','2011-07-16 02:59:16',1,0,'create'),(112,94,0,0,'Created','2016-01-01 00:00:00','2006-05-25 19:29:47',1,0,'create'),(113,95,0,0,'Created','2016-01-01 00:00:00','2003-07-08 08:25:48',1,0,'create'),(114,96,0,0,'Created','2016-01-01 00:00:00','2006-04-08 10:42:12',1,0,'create'),(115,97,0,0,'Created','2016-01-01 00:00:00','2010-01-28 17:10:25',1,0,'create'),(116,98,0,0,'Created','2016-01-01 00:00:00','2007-02-16 17:31:50',1,0,'create'),(117,0,20,0,'Created','2016-01-01 00:00:00','2014-05-10 06:07:19',1,0,'create'),(118,99,0,0,'Created','2016-01-01 00:00:00','2014-05-10 06:07:19',1,0,'create'),(119,100,0,0,'Created','2016-01-01 00:00:00','2004-09-29 01:37:47',1,0,'create'),(121,102,0,0,'Created','2016-01-01 00:00:00','2005-03-07 21:32:47',1,0,'create'),(122,103,0,0,'Created','2016-01-01 00:00:00','2014-05-16 11:35:23',1,0,'create'),(123,26,0,0,'Updated via Family','2016-11-19 15:23:31',NULL,1,0,'edit'),(124,27,0,0,'Updated via Family','2016-11-19 15:23:31',NULL,1,0,'edit'),(125,0,5,0,'Updated','2016-11-19 15:23:31',NULL,1,0,'edit'),(126,61,0,0,'Updated','2016-11-19 15:25:34',NULL,1,0,'edit'),(127,62,0,0,'Updated','2016-11-19 15:25:41',NULL,1,0,'edit'),(128,63,0,0,'Updated','2016-11-19 15:26:00',NULL,1,0,'edit'),(129,63,0,0,'Updated','2016-11-19 15:27:02',NULL,1,0,'edit'),(130,60,0,0,'Updated','2016-11-19 15:27:13',NULL,1,0,'edit'),(131,69,0,0,'Updated','2016-11-19 15:38:00',NULL,1,0,'edit'),(132,69,0,0,'Profile Image Deleted','2016-11-19 15:38:03',NULL,1,0,'photo'),(133,68,0,0,'Updated','2016-11-19 15:38:31',NULL,1,0,'edit'),(134,67,0,0,'Updated','2016-11-19 15:38:39',NULL,1,0,'edit'),(135,4,0,0,'Updated','2016-11-19 15:39:19',NULL,1,0,'edit'),(136,5,0,0,'Updated','2016-11-19 15:39:30',NULL,1,0,'edit'),(137,80,0,0,'Updated','2016-11-19 15:39:51',NULL,1,0,'edit'),(138,81,0,0,'Updated','2016-11-19 15:39:54',NULL,1,0,'edit'),(139,82,0,0,'Updated','2016-11-19 15:39:58',NULL,1,0,'edit'),(140,83,0,0,'Updated','2016-11-19 15:40:22',NULL,1,0,'edit'),(141,31,0,0,'Updated','2016-11-19 15:40:40',NULL,1,0,'edit'),(142,33,0,0,'Updated','2016-11-19 15:40:43',NULL,1,0,'edit'),(143,29,0,0,'Updated','2016-11-19 15:40:58',NULL,1,0,'edit'),(144,32,0,0,'Updated','2016-11-19 15:41:02',NULL,1,0,'edit'),(145,30,0,0,'Updated','2016-11-19 15:41:11',NULL,1,0,'edit'),(146,51,0,0,'Updated','2016-11-19 15:41:44',NULL,1,0,'edit'),(147,13,0,0,'Updated','2016-11-19 15:42:01',NULL,1,0,'edit'),(148,12,0,0,'Updated','2016-11-19 15:42:04',NULL,1,0,'edit'),(149,11,0,0,'Updated','2016-11-19 15:42:07',NULL,1,0,'edit'),(150,10,0,0,'Updated','2016-11-19 15:42:10',NULL,1,0,'edit'),(151,9,0,0,'Updated','2016-11-19 15:42:14',NULL,1,0,'edit'),(152,8,0,0,'Updated','2016-11-19 15:42:20',NULL,1,0,'edit'),(153,94,0,0,'Updated','2016-11-19 15:42:48',NULL,1,0,'edit'),(154,95,0,0,'Updated','2016-11-19 15:42:57',NULL,1,0,'edit'),(155,96,0,0,'Updated','2016-11-19 15:43:06',NULL,1,0,'edit'),(156,97,0,0,'Updated','2016-11-19 15:43:10',NULL,1,0,'edit'),(157,53,0,0,'Updated','2016-11-19 15:43:22',NULL,1,0,'edit'),(158,27,0,0,'Updated','2016-11-19 15:43:47',NULL,1,0,'edit'),(159,35,0,0,'Updated','2016-11-19 15:44:07',NULL,1,0,'edit'),(160,35,0,0,'Profile Image Deleted','2016-11-19 15:44:11',NULL,1,0,'photo'),(161,59,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(162,63,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(163,60,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(164,61,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(165,62,0,0,'Updated via Family','2016-11-19 15:46:56',NULL,1,0,'edit'),(166,0,13,0,'Updated','2016-11-19 15:46:56',NULL,1,0,'edit'),(167,59,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(168,63,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(169,60,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(170,61,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(171,62,0,0,'Updated via Family','2016-11-19 15:49:36',NULL,1,0,'edit'),(172,0,13,0,'Updated','2016-11-19 15:49:36',NULL,1,0,'edit'),(173,68,0,0,'Updated via Family','2016-11-19 15:49:58',NULL,1,0,'edit'),(174,67,0,0,'Updated via Family','2016-11-19 15:49:58',NULL,1,0,'edit'),(175,69,0,0,'Updated via Family','2016-11-19 15:49:58',NULL,1,0,'edit'),(176,0,14,0,'Updated','2016-11-19 15:49:58',NULL,1,0,'edit'),(177,99,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(178,100,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(179,102,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(180,103,0,0,'Updated via Family','2016-11-19 15:50:25',NULL,1,0,'edit'),(181,0,20,0,'Updated','2016-11-19 15:50:25',NULL,1,0,'edit'),(182,2,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(183,3,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(184,4,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(185,5,0,0,'Updated via Family','2016-11-19 15:50:57',NULL,1,0,'edit'),(186,0,1,0,'Updated','2016-11-19 15:50:57',NULL,1,0,'edit'),(187,78,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(188,79,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(189,80,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(190,81,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(191,82,0,0,'Updated via Family','2016-11-19 15:51:35',NULL,1,0,'edit'),(192,0,17,0,'Updated','2016-11-19 15:51:35',NULL,1,0,'edit'),(193,43,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(194,44,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(195,48,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(196,49,0,0,'Updated via Family','2016-11-19 15:52:17',NULL,1,0,'edit'),(197,0,9,0,'Updated','2016-11-19 15:52:17',NULL,1,0,'edit'),(198,28,0,0,'Updated via Family','2016-11-19 15:52:44',NULL,1,0,'edit'),(199,30,0,0,'Updated via Family','2016-11-19 15:52:44',NULL,1,0,'edit'),(200,0,6,0,'Updated','2016-11-19 15:52:44',NULL,1,0,'edit'),(201,50,0,0,'Updated via Family','2016-11-19 15:52:50',NULL,1,0,'edit'),(202,0,10,0,'Updated','2016-11-19 15:52:50',NULL,1,0,'edit'),(203,6,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(204,7,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(205,8,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(206,9,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(207,10,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(208,11,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(209,12,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(210,13,0,0,'Updated via Family','2016-11-19 15:53:10',NULL,1,0,'edit'),(211,0,2,0,'Updated','2016-11-19 15:53:10',NULL,1,0,'edit'),(212,92,0,0,'Updated via Family','2016-11-19 15:53:40',NULL,1,0,'edit'),(213,93,0,0,'Updated via Family','2016-11-19 15:53:40',NULL,1,0,'edit'),(214,98,0,0,'Updated via Family','2016-11-19 15:53:40',NULL,1,0,'edit'),(215,0,19,0,'Updated','2016-11-19 15:53:40',NULL,1,0,'edit'),(216,76,0,0,'Updated via Family','2016-11-19 15:53:48',NULL,1,0,'edit'),(217,77,0,0,'Updated via Family','2016-11-19 15:53:48',NULL,1,0,'edit'),(218,0,16,0,'Updated','2016-11-19 15:53:48',NULL,1,0,'edit'),(219,14,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(220,15,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(221,16,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(222,17,0,0,'Updated via Family','2016-11-19 15:54:09',NULL,1,0,'edit'),(223,0,3,0,'Updated','2016-11-19 15:54:09',NULL,1,0,'edit'),(224,52,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(225,54,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(226,55,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(227,56,0,0,'Updated via Family','2016-11-19 15:54:22',NULL,1,0,'edit'),(228,0,11,0,'Updated','2016-11-19 15:54:22',NULL,1,0,'edit'),(229,57,0,0,'Updated via Family','2016-11-19 15:54:30',NULL,1,0,'edit'),(230,58,0,0,'Updated via Family','2016-11-19 15:54:30',NULL,1,0,'edit'),(231,0,12,0,'Updated','2016-11-19 15:54:30',NULL,1,0,'edit'),(232,18,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(233,19,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(234,20,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(235,21,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(236,22,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(237,23,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(238,24,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(239,25,0,0,'Updated via Family','2016-11-19 15:55:11',NULL,1,0,'edit'),(240,0,4,0,'Updated','2016-11-19 15:55:11',NULL,1,0,'edit'),(241,84,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(242,85,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(243,86,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(244,87,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(245,88,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(246,89,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(247,90,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(248,91,0,0,'Updated via Family','2016-11-19 15:56:04',NULL,1,0,'edit'),(249,0,18,0,'Updated','2016-11-19 15:56:04',NULL,1,0,'edit'),(250,26,0,0,'Updated via Family','2016-11-19 15:56:49',NULL,1,0,'edit'),(251,0,5,0,'Updated','2016-11-19 15:56:49',NULL,1,0,'edit'),(252,34,0,0,'Updated via Family','2016-11-19 15:56:55',NULL,1,0,'edit'),(253,0,7,0,'Updated','2016-11-19 15:56:55',NULL,1,0,'edit'),(254,3,0,0,'Updated','2016-11-19 16:07:39',NULL,1,0,'edit'),(255,84,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(256,85,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(257,87,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(258,88,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(259,89,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(260,90,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(261,91,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(262,86,0,0,'Updated via Family','2016-11-19 16:42:37',NULL,1,0,'edit'),(263,0,18,0,'Updated','2016-11-19 16:42:37',NULL,1,0,'edit'),(264,84,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(265,85,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(266,87,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(267,88,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(268,89,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(269,90,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(270,91,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(271,86,0,0,'Updated via Family','2016-11-19 16:43:48',NULL,1,0,'edit'),(272,0,18,0,'Updated','2016-11-19 16:43:48',NULL,1,0,'edit'),(273,0,21,0,'Created','0000-00-00 00:00:00','2017-04-15 17:19:26',-1,0,'create'),(274,104,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(275,105,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(276,106,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(277,107,0,0,'Created','2017-04-15 17:20:21',NULL,-1,0,'create'),(278,14,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(279,15,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(280,16,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(281,17,0,0,'Updated via Family','2017-04-15 17:21:40',NULL,1,0,'edit'),(282,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(283,26,0,0,'Updated via Family','2017-04-15 17:22:04',NULL,1,0,'edit'),(284,0,5,0,'Updated','2017-04-15 17:22:04',NULL,1,0,'edit'),(285,50,0,0,'Updated via Family','2017-04-15 17:22:19',NULL,1,0,'edit'),(286,0,10,0,'Updated','2017-04-15 17:22:19',NULL,1,0,'edit'),(287,0,4,0,'Updated','0000-00-00 00:00:00','2016-11-19 15:55:11',1,0,'edit'),(288,0,4,0,'Deactivated the Family','2017-04-15 17:34:50',NULL,1,0,'edit'),(289,3,0,0,'system user password reset','2017-12-18 00:43:09',NULL,1,0,'user'),(290,3,0,0,'system user password changed by admin','2017-12-18 00:43:33',NULL,1,0,'user'),(291,3,0,0,'system user password reset','2017-12-18 00:45:44',NULL,1,0,'user'),(292,3,0,0,'system user password reset','2017-12-18 00:47:43',NULL,1,0,'user'),(293,96,0,0,'Deleted from group: ','2017-12-23 14:46:01',NULL,1,0,'group'),(294,96,0,0,'Deleted from group: Class 4-5','2017-12-23 14:46:59',NULL,1,0,'group'),(295,96,0,0,'Added to group: High School Class','2017-12-23 14:48:34',NULL,1,0,'group'),(296,3,0,0,'system user password changed by admin','2017-12-23 16:49:29',NULL,1,0,'user'),(297,35,0,0,'Updated','2018-01-01 19:25:55',NULL,1,0,'edit'),(298,1,0,0,NULL,'2018-02-19 17:11:42',NULL,1,0,'user'),(299,26,0,0,'Added to group: Clergy','2019-09-08 21:23:06',NULL,1,0,'group'),(300,2,0,0,'Added to group: Clergy','2019-09-08 21:23:18',NULL,1,0,'group'),(301,78,0,0,'Updated','2019-09-08 21:43:50',NULL,3,0,'edit'),(302,80,0,0,'Updated','2019-09-08 21:44:06',NULL,3,0,'edit'),(303,50,0,0,'Updated via Family','2019-09-11 23:04:11',NULL,1,0,'edit'),(304,0,10,0,'Updated','2019-09-11 23:04:11',NULL,1,0,'edit'),(305,50,0,0,'Updated','2019-09-11 23:09:35',NULL,1,0,'edit'),(306,95,0,0,'system user login reset','2020-11-27 11:40:54',NULL,1,0,'user'),(307,95,0,0,'system user password reset','2020-11-27 11:40:56',NULL,1,0,'user'),(308,0,2,0,'Verification email sent','2020-11-27 11:43:34',NULL,1,0,'verify-link'),(309,3,0,0,NULL,'2020-11-27 11:45:28',NULL,1,0,'user'),(310,105,0,0,'Updated','2021-03-21 17:45:34',NULL,1,0,'edit'),(311,105,0,0,'Updated','2021-03-21 17:46:45',NULL,1,0,'edit'),(312,104,0,0,'Updated','2021-04-25 09:41:33',NULL,1,0,'edit'),(313,104,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(314,105,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(315,106,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(316,107,0,0,'Updated via Family','2021-04-25 09:45:44',NULL,1,0,'edit'),(317,0,21,0,'Updated','2021-04-25 09:45:44',NULL,1,0,'edit'),(318,95,0,0,'system user login reset','2021-04-25 10:04:41',NULL,1,0,'user'),(319,95,0,0,'system user password reset','2021-04-25 10:04:43',NULL,1,0,'user'),(320,0,2,0,'Verification email sent','2021-04-25 10:04:53',NULL,3,0,'verify-link'),(321,76,0,0,'system user password changed by admin','2021-04-25 10:10:53',NULL,1,0,'user'),(322,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(323,0,3,0,'Deactivated the Family','2021-04-25 10:21:17',NULL,3,0,'edit'),(324,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(325,0,3,0,'Activated the Family','2021-04-25 10:21:56',NULL,3,0,'edit'),(326,108,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(327,109,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(328,110,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(329,111,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(330,112,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(331,113,0,0,'Created via Family','2021-04-25 10:24:12',NULL,3,0,'create'),(332,0,22,0,'Created','2021-04-25 10:24:12',NULL,3,0,'create'),(333,114,0,0,'Created','2021-04-25 10:32:31',NULL,3,0,'create'),(334,3,0,0,'system user changed password','2021-04-25 10:36:28',NULL,3,0,'user'),(335,3,0,0,'system user changed password','2021-04-25 10:37:04',NULL,3,0,'user'),(336,95,0,0,'system user login reset','2021-04-25 10:39:46',NULL,1,0,'user'),(337,95,0,0,'system user password reset','2021-04-25 10:39:49',NULL,1,0,'user'),(338,0,2,0,'Verification email sent','2021-04-25 10:39:55',NULL,3,0,'verify-link'),(339,95,0,0,'system user login reset','2021-04-25 10:41:32',NULL,1,0,'user'),(340,95,0,0,'system user password reset','2021-04-25 10:41:35',NULL,1,0,'user'),(341,0,2,0,'Verification email sent','2021-04-25 10:41:41',NULL,3,0,'verify-link'),(342,76,0,0,'system user password changed by admin','2021-04-25 10:47:42',NULL,1,0,'user'),(343,0,23,0,'Created','2021-04-25 10:50:11',NULL,-1,0,'create'),(344,115,0,0,'Created','2021-04-25 10:50:12',NULL,-1,0,'create'),(345,116,0,0,'Created','2021-04-25 10:50:12',NULL,-1,0,'create'),(346,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(347,0,3,0,'Deactivated the Family','2021-04-25 10:53:35',NULL,3,0,'edit'),(348,117,0,0,'Created via Family','2021-04-25 10:54:55',NULL,3,0,'create'),(349,118,0,0,'Created via Family','2021-04-25 10:54:55',NULL,3,0,'create'),(350,119,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(351,120,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(352,121,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(353,122,0,0,'Created via Family','2021-04-25 10:54:56',NULL,3,0,'create'),(354,0,24,0,'Created','2021-04-25 10:54:55',NULL,3,0,'create'),(355,123,0,0,'Created','2021-04-25 10:56:50',NULL,3,0,'create'),(356,3,0,0,'system user changed password','2021-04-25 10:58:36',NULL,3,0,'user'),(357,3,0,0,'system user changed password','2021-04-25 10:58:53',NULL,3,0,'user'),(358,124,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(359,125,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(360,126,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(361,127,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(362,128,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(363,129,0,0,'Created via Family','2021-04-25 12:35:39',NULL,3,0,'create'),(364,0,25,0,'Created','2021-04-25 12:35:39',NULL,3,0,'create'),(365,0,6,0,'Updated','2016-11-19 15:52:44',NULL,1,0,'edit'),(366,0,6,0,'Deactivated the Family','2021-04-25 12:37:28',NULL,1,0,'edit'),(367,0,6,0,'Updated','2016-11-19 15:52:44',NULL,1,0,'edit'),(368,0,6,0,'Activated the Family','2021-04-25 12:38:17',NULL,1,0,'edit'),(369,130,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(370,131,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(371,132,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(372,133,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(373,134,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(374,135,0,0,'Created via Family','2021-04-25 12:41:04',NULL,3,0,'create'),(375,0,26,0,'Created','2021-04-25 12:41:04',NULL,3,0,'create'),(376,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(377,0,3,0,'Activated the Family','2021-04-25 12:43:11',NULL,3,0,'edit'),(378,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(379,0,3,0,'Deactivated the Family','2021-04-25 12:44:14',NULL,3,0,'edit'),(380,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(381,0,3,0,'Activated the Family','2021-04-25 12:44:28',NULL,3,0,'edit'),(382,136,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(383,137,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(384,138,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(385,139,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(386,140,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(387,141,0,0,'Created via Family','2021-04-25 12:45:41',NULL,3,0,'create'),(388,0,27,0,'Created','2021-04-25 12:45:41',NULL,3,0,'create'),(389,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(390,0,3,0,'Deactivated the Family','2021-04-25 12:46:20',NULL,3,0,'edit'),(391,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(392,0,3,0,'Activated the Family','2021-04-25 12:47:01',NULL,3,0,'edit'),(393,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(394,0,3,0,'Deactivated the Family','2021-04-25 12:47:11',NULL,3,0,'edit'),(395,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(396,0,3,0,'Activated the Family','2021-04-25 12:47:22',NULL,3,0,'edit'),(397,142,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(398,143,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(399,144,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(400,145,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(401,146,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(402,147,0,0,'Created via Family','2021-04-25 12:47:38',NULL,3,0,'create'),(403,0,28,0,'Created','2021-04-25 12:47:38',NULL,3,0,'create'),(404,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(405,0,3,0,'Deactivated the Family','2021-04-25 12:48:01',NULL,3,0,'edit'),(406,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(407,0,3,0,'Activated the Family','2021-04-25 12:48:12',NULL,3,0,'edit'),(408,148,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(409,149,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(410,150,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(411,151,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(412,152,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(413,153,0,0,'Created via Family','2021-04-25 12:48:31',NULL,3,0,'create'),(414,0,29,0,'Created','2021-04-25 12:48:31',NULL,3,0,'create'),(415,95,0,0,'system user login reset','2021-04-25 13:09:08',NULL,1,0,'user'),(416,95,0,0,'system user password reset','2021-04-25 13:09:10',NULL,1,0,'user'),(417,0,2,0,'Verification email sent','2021-04-25 13:09:15',NULL,3,0,'verify-link'),(418,76,0,0,'system user password changed by admin','2021-04-25 13:11:31',NULL,1,0,'user'),(419,0,30,0,'Created','2021-04-25 13:13:24',NULL,-1,0,'create'),(420,154,0,0,'Created','2021-04-25 13:13:24',NULL,-1,0,'create'),(421,155,0,0,'Created','2021-04-25 13:13:24',NULL,-1,0,'create'),(422,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(423,0,3,0,'Deactivated the Family','2021-04-25 13:15:16',NULL,3,0,'edit'),(424,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(425,0,3,0,'Activated the Family','2021-04-25 13:15:29',NULL,3,0,'edit'),(426,156,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(427,157,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(428,158,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(429,159,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(430,160,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(431,161,0,0,'Created via Family','2021-04-25 13:15:57',NULL,3,0,'create'),(432,0,31,0,'Created','2021-04-25 13:15:57',NULL,3,0,'create'),(433,162,0,0,'Created','2021-04-25 13:17:35',NULL,3,0,'create'),(434,3,0,0,'system user changed password','2021-04-25 13:18:40',NULL,3,0,'user'),(435,3,0,0,'system user changed password','2021-04-25 13:18:50',NULL,3,0,'user'),(436,95,0,0,'system user login reset','2021-04-25 16:15:58',NULL,1,0,'user'),(437,95,0,0,'system user password reset','2021-04-25 16:16:00',NULL,1,0,'user'),(438,0,2,0,'Verification email sent','2021-04-25 16:16:06',NULL,3,0,'verify-link'),(439,76,0,0,'system user password changed by admin','2021-04-25 16:18:39',NULL,1,0,'user'),(440,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(441,0,3,0,'Deactivated the Family','2021-04-25 16:23:48',NULL,3,0,'edit'),(442,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(443,0,3,0,'Activated the Family','2021-04-25 16:24:03',NULL,3,0,'edit'),(444,163,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(445,164,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(446,165,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(447,166,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(448,167,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(449,168,0,0,'Created via Family','2021-04-25 16:24:32',NULL,3,0,'create'),(450,0,32,0,'Created','2021-04-25 16:24:31',NULL,3,0,'create'),(451,169,0,0,'Created','2021-04-25 16:26:33',NULL,3,0,'create'),(452,3,0,0,'system user changed password','2021-04-25 16:27:52',NULL,3,0,'user'),(453,3,0,0,'system user changed password','2021-04-25 16:28:03',NULL,3,0,'user'),(454,95,0,0,'system user login reset','2021-04-25 16:39:21',NULL,1,0,'user'),(455,95,0,0,'system user password reset','2021-04-25 16:39:23',NULL,1,0,'user'),(456,0,2,0,'Verification email sent','2021-04-25 16:39:28',NULL,3,0,'verify-link'),(457,76,0,0,'system user password changed by admin','2021-04-25 16:42:01',NULL,1,0,'user'),(458,95,0,0,'system user login reset','2021-04-25 16:46:55',NULL,1,0,'user'),(459,95,0,0,'system user password reset','2021-04-25 16:46:56',NULL,1,0,'user'),(460,0,2,0,'Verification email sent','2021-04-25 16:47:02',NULL,3,0,'verify-link'),(461,95,0,0,'system user login reset','2021-04-25 16:48:44',NULL,1,0,'user'),(462,95,0,0,'system user password reset','2021-04-25 16:48:47',NULL,1,0,'user'),(463,0,2,0,'Verification email sent','2021-04-25 16:48:54',NULL,3,0,'verify-link'),(464,76,0,0,'system user password changed by admin','2021-04-25 16:53:24',NULL,1,0,'user'),(465,0,33,0,'Created','2021-04-25 16:55:43',NULL,-1,0,'create'),(466,170,0,0,'Created','2021-04-25 16:55:43',NULL,-1,0,'create'),(467,171,0,0,'Created','2021-04-25 16:55:43',NULL,-1,0,'create'),(468,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(469,0,3,0,'Deactivated the Family','2021-04-25 16:57:34',NULL,3,0,'edit'),(470,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(471,0,3,0,'Activated the Family','2021-04-25 16:57:51',NULL,3,0,'edit'),(472,172,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(473,173,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(474,174,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(475,175,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(476,176,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(477,177,0,0,'Created via Family','2021-04-25 16:58:11',NULL,3,0,'create'),(478,0,34,0,'Created','2021-04-25 16:58:11',NULL,3,0,'create'),(479,178,0,0,'Created','2021-04-25 16:59:38',NULL,3,0,'create'),(480,3,0,0,'system user changed password','2021-04-25 17:00:41',NULL,3,0,'user'),(481,3,0,0,'system user changed password','2021-04-25 17:00:51',NULL,3,0,'user'),(482,95,0,0,'system user login reset','2021-04-25 17:04:32',NULL,1,0,'user'),(483,95,0,0,'system user password reset','2021-04-25 17:04:34',NULL,1,0,'user'),(484,0,2,0,'Verification email sent','2021-04-25 17:04:39',NULL,3,0,'verify-link'),(485,76,0,0,'system user password changed by admin','2021-04-25 17:06:53',NULL,1,0,'user'),(486,95,0,0,'system user login reset','2021-04-25 17:18:54',NULL,1,0,'user'),(487,95,0,0,'system user password reset','2021-04-25 17:18:56',NULL,1,0,'user'),(488,0,2,0,'Verification email sent','2021-04-25 17:19:01',NULL,3,0,'verify-link'),(489,76,0,0,'system user password changed by admin','2021-04-25 17:21:52',NULL,1,0,'user'),(490,0,35,0,'Created','2021-04-25 17:24:16',NULL,-1,0,'create'),(491,179,0,0,'Created','2021-04-25 17:24:16',NULL,-1,0,'create'),(492,180,0,0,'Created','2021-04-25 17:24:16',NULL,-1,0,'create'),(493,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(494,0,3,0,'Deactivated the Family','2021-04-25 17:28:05',NULL,3,0,'edit'),(495,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(496,0,3,0,'Activated the Family','2021-04-25 17:28:47',NULL,3,0,'edit'),(497,181,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(498,182,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(499,183,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(500,184,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(501,185,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(502,186,0,0,'Created via Family','2021-04-25 17:29:15',NULL,3,0,'create'),(503,0,36,0,'Created','2021-04-25 17:29:15',NULL,3,0,'create'),(504,187,0,0,'Created','2021-04-25 17:30:35',NULL,3,0,'create'),(505,3,0,0,'system user changed password','2021-04-25 17:31:49',NULL,3,0,'user'),(506,3,0,0,'system user changed password','2021-04-25 17:32:01',NULL,3,0,'user'),(507,95,0,0,'system user login reset','2021-04-25 17:34:18',NULL,1,0,'user'),(508,95,0,0,'system user password reset','2021-04-25 17:34:21',NULL,1,0,'user'),(509,0,2,0,'Verification email sent','2021-04-25 17:34:27',NULL,3,0,'verify-link'),(510,76,0,0,'system user password changed by admin','2021-04-25 17:36:33',NULL,1,0,'user'),(511,0,37,0,'Created','2021-04-25 17:37:18',NULL,-1,0,'create'),(512,188,0,0,'Created','2021-04-25 17:37:19',NULL,-1,0,'create'),(513,189,0,0,'Created','2021-04-25 17:37:19',NULL,-1,0,'create'),(514,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(515,0,3,0,'Deactivated the Family','2021-04-25 17:38:50',NULL,3,0,'edit'),(516,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(517,0,3,0,'Activated the Family','2021-04-25 17:39:02',NULL,3,0,'edit'),(518,190,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(519,191,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(520,192,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(521,193,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(522,194,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(523,195,0,0,'Created via Family','2021-04-25 17:39:21',NULL,3,0,'create'),(524,0,38,0,'Created','2021-04-25 17:39:21',NULL,3,0,'create'),(525,196,0,0,'Created','2021-04-25 17:40:34',NULL,3,0,'create'),(526,3,0,0,'system user changed password','2021-04-25 17:41:28',NULL,3,0,'user'),(527,3,0,0,'system user changed password','2021-04-25 17:41:37',NULL,3,0,'user'),(528,95,0,0,'system user login reset','2021-04-25 20:00:09',NULL,1,0,'user'),(529,95,0,0,'system user password reset','2021-04-25 20:00:11',NULL,1,0,'user'),(530,0,2,0,'Verification email sent','2021-04-25 20:00:18',NULL,3,0,'verify-link'),(531,76,0,0,'system user password changed by admin','2021-04-25 20:03:06',NULL,1,0,'user'),(532,0,39,0,'Created','2021-04-25 20:05:48',NULL,-1,0,'create'),(533,197,0,0,'Created','2021-04-25 20:05:48',NULL,-1,0,'create'),(534,198,0,0,'Created','2021-04-25 20:05:48',NULL,-1,0,'create'),(535,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(536,0,3,0,'Deactivated the Family','2021-04-25 20:07:22',NULL,3,0,'edit'),(537,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(538,0,3,0,'Activated the Family','2021-04-25 20:07:35',NULL,3,0,'edit'),(539,199,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(540,200,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(541,201,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(542,202,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(543,203,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(544,204,0,0,'Created via Family','2021-04-25 20:07:53',NULL,3,0,'create'),(545,0,40,0,'Created','2021-04-25 20:07:53',NULL,3,0,'create'),(546,205,0,0,'Created','2021-04-25 20:09:02',NULL,3,0,'create'),(547,3,0,0,'system user changed password','2021-04-25 20:09:55',NULL,3,0,'user'),(548,3,0,0,'system user changed password','2021-04-25 20:10:04',NULL,3,0,'user'),(549,95,0,0,'system user login reset','2021-04-25 21:32:18',NULL,1,0,'user'),(550,95,0,0,'system user password reset','2021-04-25 21:32:21',NULL,1,0,'user'),(551,0,2,0,'Verification email sent','2021-04-25 21:32:26',NULL,3,0,'verify-link'),(552,76,0,0,'system user password changed by admin','2021-04-25 21:35:47',NULL,1,0,'user'),(553,19,0,0,'Updated','2021-04-25 21:36:05',NULL,1,0,'edit'),(554,18,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(555,19,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(556,21,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(557,22,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(558,23,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(559,24,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(560,25,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(561,20,0,0,'Updated via Family','2021-04-25 21:36:43',NULL,1,0,'edit'),(562,0,4,0,'Updated','2021-04-25 21:36:43',NULL,1,0,'edit'),(563,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(564,0,3,0,'Deactivated the Family','2021-04-25 21:40:39',NULL,3,0,'edit'),(565,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(566,0,3,0,'Activated the Family','2021-04-25 21:40:56',NULL,3,0,'edit'),(567,206,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(568,207,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(569,208,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(570,209,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(571,210,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(572,211,0,0,'Created via Family','2021-04-25 21:41:31',NULL,3,0,'create'),(573,0,41,0,'Created','2021-04-25 21:41:31',NULL,3,0,'create'),(574,212,0,0,'Created','2021-04-25 21:43:48',NULL,3,0,'create'),(575,3,0,0,'system user changed password','2021-04-25 21:45:00',NULL,3,0,'user'),(576,3,0,0,'system user changed password','2021-04-25 21:45:10',NULL,3,0,'user'),(577,95,0,0,'system user login reset','2021-04-25 21:48:47',NULL,1,0,'user'),(578,95,0,0,'system user password reset','2021-04-25 21:48:49',NULL,1,0,'user'),(579,0,2,0,'Verification email sent','2021-04-25 21:48:55',NULL,3,0,'verify-link'),(580,76,0,0,'system user password changed by admin','2021-04-25 21:51:42',NULL,1,0,'user'),(581,0,42,0,'Created','2021-04-25 21:52:35',NULL,-1,0,'create'),(582,213,0,0,'Created','2021-04-25 21:52:35',NULL,-1,0,'create'),(583,214,0,0,'Created','2021-04-25 21:52:35',NULL,-1,0,'create'),(584,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(585,0,3,0,'Deactivated the Family','2021-04-25 21:54:26',NULL,3,0,'edit'),(586,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(587,0,3,0,'Activated the Family','2021-04-25 21:54:47',NULL,3,0,'edit'),(588,215,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(589,216,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(590,217,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(591,218,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(592,219,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(593,220,0,0,'Created via Family','2021-04-25 21:55:18',NULL,3,0,'create'),(594,0,43,0,'Created','2021-04-25 21:55:18',NULL,3,0,'create'),(595,221,0,0,'Created','2021-04-25 21:57:16',NULL,3,0,'create'),(596,3,0,0,'system user changed password','2021-04-25 21:58:46',NULL,3,0,'user'),(597,3,0,0,'system user changed password','2021-04-25 21:58:58',NULL,3,0,'user'),(598,95,0,0,'system user login reset','2021-04-25 22:39:43',NULL,1,0,'user'),(599,95,0,0,'system user password reset','2021-04-25 22:39:46',NULL,1,0,'user'),(600,0,2,0,'Verification email sent','2021-04-25 22:39:53',NULL,3,0,'verify-link'),(601,76,0,0,'system user password changed by admin','2021-04-25 22:42:54',NULL,1,0,'user'),(602,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(603,0,3,0,'Deactivated the Family','2021-04-25 22:48:03',NULL,3,0,'edit'),(604,0,3,0,'Updated','2017-04-15 17:21:40',NULL,1,0,'edit'),(605,0,3,0,'Activated the Family','2021-04-25 22:48:22',NULL,3,0,'edit'),(606,222,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(607,223,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(608,224,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(609,225,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(610,226,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(611,227,0,0,'Created via Family','2021-04-25 22:48:59',NULL,3,0,'create'),(612,0,44,0,'Created','2021-04-25 22:48:59',NULL,3,0,'create'),(613,228,0,0,'Created','2021-04-25 22:50:53',NULL,3,0,'create'),(614,3,0,0,'system user changed password','2021-04-25 22:52:22',NULL,3,0,'user'),(615,3,0,0,'system user changed password','2021-04-25 22:52:34',NULL,3,0,'user'),(616,0,13,0,'Updated','2016-11-19 15:49:36',NULL,1,0,'edit'),(617,0,13,0,'Deactivated the Family','2022-12-03 14:38:02',NULL,1,0,'edit'),(618,0,13,0,'Updated','2016-11-19 15:49:36',NULL,1,0,'edit'),(619,0,13,0,'Activated the Family','2022-12-03 14:38:26',NULL,1,0,'edit'),(620,95,0,0,'system user deleted','2022-12-03 17:05:27',NULL,1,0,'user'),(621,76,0,0,'system user deleted','2022-12-03 17:06:34',NULL,1,0,'user'),(622,3,0,0,'system user deleted','2022-12-03 17:07:19',NULL,1,0,'user'),(623,59,0,0,'system user created','2022-12-03 17:09:58',NULL,1,0,'user'),(624,59,0,0,'system user deleted','2022-12-03 17:10:05',NULL,1,0,'user'),(625,59,0,0,'system user created','2022-12-03 17:12:15',NULL,1,0,'user'),(626,59,0,0,'system user deleted','2022-12-03 17:12:22',NULL,1,0,'user'),(627,3,0,0,'system user created','2022-12-29 18:40:16',NULL,1,0,'user'),(628,3,0,0,NULL,'2022-12-29 18:40:27',NULL,1,0,'user'),(629,3,0,0,'system user password changed by admin','2022-12-29 18:43:18',NULL,1,0,'user'),(630,95,0,0,'system user created','2022-12-29 21:01:30',NULL,1,0,'user'),(631,95,0,0,'system user login reset','2022-12-29 21:01:40',NULL,1,0,'user'),(632,95,0,0,'system user password reset','2022-12-29 21:01:42',NULL,1,0,'user'),(633,88,0,0,'Updated','2023-11-16 12:39:33',NULL,1,0,'edit'),(635,95,0,0,'system user password changed by admin','2025-12-01 19:32:56',NULL,1,0,'user'),(636,95,0,0,'system user updated','2025-12-01 19:33:14',NULL,1,0,'user'),(637,99,0,0,'system user created','2025-12-01 20:26:05',NULL,1,0,'user'),(638,99,0,0,'system user created','2025-12-01 20:26:05',NULL,1,0,'user'); /*!40000 ALTER TABLE `note_nte` ENABLE KEYS */; UNLOCK TABLES; COMMIT; --- Dumped table `note_nte` with 624 row(s) +-- Dumped table `note_nte` with 628 row(s) -- -- @@ -2210,12 +2210,12 @@ CREATE TABLE `user_usr` ( LOCK TABLES `user_usr` WRITE; /*!40000 ALTER TABLE `user_usr` DISABLE KEYS */; SET autocommit=0; -INSERT INTO `user_usr` VALUES (1,'$2y$12$e3o8rmvWUYdgzUNB/AAMK.pRvT9rwsIZx4wYB0brOmVPB1UL.HA5S',0,'2025-11-30 02:08:38',369,0,0,0,0,0,0,0,0,1,10,'skin-red',1,1,'2016-01-01',23,0,'Admin','ajGwpy8Pdai22XDUpqjC5Ob04v0eG7EGgb4vz2bD2juT8YDmfM',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL),(3,'$2y$12$uWQcp6KU7C4JCTaVH.0hiekfpga36yBVhXG8.M/w9u3MmvHt/NWi2',0,'2025-11-30 02:08:31',2,0,1,1,1,1,1,1,1,0,10,'skin-yellow-light',0,0,'2016-01-01',26,0,'tony.wade@example.com','JZJApQ9XOnF7nvupWZlTWBRrqMtHE9eNcWBTUzEWGqL4Sdqp6C',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(95,'ed7162b5a395e9ba3f9012eda6e9d2150d5ab76cdb082dc4a1422b4f2da2d102',1,'2022-12-29 21:01:30',0,0,0,0,0,0,0,0,0,0,10,'skin-blue',0,0,'2016-01-01',26,0,'judith.matthews@example.com',NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); +INSERT INTO `user_usr` VALUES (1,'$2y$12$e3o8rmvWUYdgzUNB/AAMK.pRvT9rwsIZx4wYB0brOmVPB1UL.HA5S',0,'2025-12-01 20:25:34',371,0,0,0,0,0,0,0,0,1,10,'skin-red',1,1,'2016-01-01',23,18,'Admin','ajGwpy8Pdai22XDUpqjC5Ob04v0eG7EGgb4vz2bD2juT8YDmfM',0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL),(3,'$2y$12$uWQcp6KU7C4JCTaVH.0hiekfpga36yBVhXG8.M/w9u3MmvHt/NWi2',0,'2025-11-30 02:08:31',2,0,1,1,1,1,1,1,1,0,10,'skin-yellow-light',0,0,'2016-01-01',26,0,'tony.wade@example.com','JZJApQ9XOnF7nvupWZlTWBRrqMtHE9eNcWBTUzEWGqL4Sdqp6C',1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(95,'$2y$12$7R0MqgyidzOqzXPrGbYdkO.y/decFpwSJM..fznzzvT4wiZqaJE4q',0,'2022-12-29 21:01:30',0,0,1,1,0,0,0,0,0,0,10,'skin-blue',0,0,'2016-01-01',26,0,'judith.matthews@example.com',NULL,0,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL),(99,'$2y$12$OTZ5Y/hvCNVkfQqbQfNjRO/x2cBnx5O3yMJt4jXKw/yu/NjuxTHTK',1,'2025-12-01 20:26:05',0,0,0,0,0,0,0,0,0,0,10,'skin-blue',0,0,'2016-01-01',29,0,'amanda.black@example.com',NULL,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL); /*!40000 ALTER TABLE `user_usr` ENABLE KEYS */; UNLOCK TABLES; COMMIT; --- Dumped table `user_usr` with 3 row(s) +-- Dumped table `user_usr` with 4 row(s) -- -- @@ -2313,6 +2313,47 @@ COMMIT; -- Dumped table `whycame_why` with 0 row(s) -- +-- +-- Stand-In structure for view `email_count` +-- + +DROP TABLE IF EXISTS `email_count`; +/*!50001 DROP VIEW IF EXISTS `email_count`*/; +CREATE TABLE IF NOT EXISTS `email_count` ( +`email` varchar(100) +,`total` bigint(21) +); +-- +-- Stand-In structure for view `email_list` +-- + +DROP TABLE IF EXISTS `email_list`; +/*!50001 DROP VIEW IF EXISTS `email_list`*/; +CREATE TABLE IF NOT EXISTS `email_list` ( +`email` varchar(100) +,`type` varchar(11) +,`id` mediumint(9) unsigned +); +-- +-- View structure for view `email_count` +-- + +DROP TABLE IF EXISTS `email_count`; +/*!50001 DROP VIEW IF EXISTS `email_count`*/; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`churchcrm`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `email_count` AS select `email_list`.`email` AS `email`,count(0) AS `total` from `email_list` group by `email_list`.`email` */; + +-- +-- View structure for view `email_list` +-- + +DROP TABLE IF EXISTS `email_list`; +/*!50001 DROP VIEW IF EXISTS `email_list`*/; +/*!50001 CREATE ALGORITHM=UNDEFINED */ +/*!50013 DEFINER=`churchcrm`@`%` SQL SECURITY DEFINER */ +/*!50001 VIEW `email_list` AS select `family_fam`.`fam_Email` AS `email`,'family' AS `type`,`family_fam`.`fam_ID` AS `id` from `family_fam` where `family_fam`.`fam_Email` is not null and `family_fam`.`fam_Email` <> '' union select `person_per`.`per_Email` AS `email`,'person_home' AS `type`,`person_per`.`per_ID` AS `id` from `person_per` where `person_per`.`per_Email` is not null and `person_per`.`per_Email` <> '' union select `person_per`.`per_WorkEmail` AS `email`,'person_work' AS `type`,`person_per`.`per_ID` AS `id` from `person_per` where `person_per`.`per_WorkEmail` is not null and `person_per`.`per_WorkEmail` <> '' */; + /*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */; /*!40101 SET AUTOCOMMIT=@OLD_AUTOCOMMIT */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; @@ -2323,4 +2364,4 @@ COMMIT; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; --- Dump completed on: Sun, 30 Nov 2025 02:08:45 -0500 +-- Dump completed on: Mon, 01 Dec 2025 20:27:36 -0500 diff --git a/docker/cypress.config.ts b/docker/cypress.config.ts index 8b717b6b79..7107d8dc37 100644 --- a/docker/cypress.config.ts +++ b/docker/cypress.config.ts @@ -20,6 +20,8 @@ export default defineConfig({ 'admin.password': 'changeme', 'standard.username': 'tony.wade@example.com', 'standard.password': 'basicjoe', + 'nofinance.username': 'judith.matthews@example.com', + 'nofinance.password': 'noMoney$', }, retries: 1, numTestsKeptInMemory: 0, diff --git a/locale/messages.po b/locale/messages.po index 327cc08ec1..42224ef5cb 100644 --- a/locale/messages.po +++ b/locale/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2025-11-30 19:07-0800\n" +"POT-Creation-Date: 2025-12-01 17:06-0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -27,7 +27,7 @@ msgstr "" msgid " Bold Italic" msgstr "" -msgid " Deposit Slip #" +msgid " Deposit #" msgstr "" msgid " Italic" @@ -232,6 +232,12 @@ msgstr "" msgid "A notification was triggered by the classroom teacher at" msgstr "" +msgid "A payment is an actual donation received. It will be added to the current deposit." +msgstr "" + +msgid "A pledge is a commitment to give. It is not tied to a deposit slip." +msgstr "" + msgid "ALERT" msgstr "" @@ -385,6 +391,9 @@ msgstr "" msgid "Add Payment" msgstr "" +msgid "Add Pledge" +msgstr "" + msgid "Add Records" msgstr "" @@ -556,6 +565,9 @@ msgstr "" msgid "All People" msgstr "" +msgid "All System Settings" +msgstr "" + msgid "All Types" msgstr "" @@ -640,6 +652,9 @@ msgstr "" msgid "An invalid configuration name has been requested" msgstr "" +msgid "An unexpected error occurred. Please contact your administrator." +msgstr "" + #. Context: countries msgid "Andorra" msgstr "" @@ -1105,6 +1120,9 @@ msgstr "" msgid "CSV Individual Records" msgstr "" +msgid "CSV export is restricted to administrators." +msgstr "" + msgid "CSV export permission" msgstr "" @@ -1217,6 +1235,9 @@ msgstr "" msgid "Change the initial page length (number of rows per page)" msgstr "" +msgid "Change this in System Settings." +msgstr "" + msgid "Check" msgstr "" @@ -1435,9 +1456,18 @@ msgstr "" msgid "Close & Refresh" msgstr "" +msgid "Close All Deposits" +msgstr "" + msgid "Closed" msgstr "" +msgid "Closed Deposits:" +msgstr "" + +msgid "Closed vs Total" +msgstr "" + msgid "Cloud Service Type (Supported values: WebDAV, Local)" msgstr "" @@ -1478,6 +1508,9 @@ msgstr "" msgid "Complete these in any order. Use Demo Data to explore with sample records." msgstr "" +msgid "Complete these tasks to ensure accurate year-end tax reporting for your donors." +msgstr "" + msgid "Compose New Message" msgstr "" @@ -1578,6 +1611,9 @@ msgstr "" msgid "Create Class List" msgstr "" +msgid "Create Deposit" +msgstr "" + msgid "Create Directory" msgstr "" @@ -1590,6 +1626,9 @@ msgstr "" msgid "Create File" msgstr "" +msgid "Create First Deposit" +msgstr "" + msgid "Create Group + ADD Cart" msgstr "" @@ -1629,6 +1668,12 @@ msgstr "" msgid "Create new family" msgstr "" +msgid "Create or open a deposit first" +msgstr "" + +msgid "Create or select a deposit to get started." +msgstr "" + msgid "Created" msgstr "" @@ -1657,6 +1702,9 @@ msgstr "" msgid "Current DB Version" msgstr "" +msgid "Current Deposit" +msgstr "" + msgid "Current Role" msgstr "" @@ -1669,6 +1717,9 @@ msgstr "" msgid "Current Version:" msgstr "" +msgid "Current fiscal year:" +msgstr "" + msgid "Custom Drop-Down List" msgstr "" @@ -1716,6 +1767,12 @@ msgstr "" msgid "CustomSearch" msgstr "" +msgid "Customizable report with filtering by date, fund, family, and payment method." +msgstr "" + +msgid "Customize the text that appears on tax statements (sTaxReport1, sTaxReport2, etc)." +msgstr "" + #. Context: countries msgid "Cyprus (Κύπρος)" msgstr "" @@ -1828,6 +1885,9 @@ msgstr "" msgid "Date Updated" msgstr "" +msgid "Date:" +msgstr "" + msgid "Deactivate" msgstr "" @@ -1990,6 +2050,9 @@ msgstr "" msgid "Deposit" msgstr "" +msgid "Deposit #:" +msgstr "" + msgid "Deposit Comment" msgstr "" @@ -2014,6 +2077,9 @@ msgstr "" msgid "Deposit Slip Number: " msgstr "" +msgid "Deposit Statistics" +msgstr "" + msgid "Deposit Total" msgstr "" @@ -2041,6 +2107,12 @@ msgstr "" msgid "Description" msgstr "" +msgid "Detailed breakdown of a single deposit slip." +msgstr "" + +msgid "Detailed breakdown of pledges and payments by family." +msgstr "" + msgid "Details" msgstr "" @@ -2153,6 +2225,9 @@ msgstr "" msgid "Donor" msgstr "" +msgid "Donor Families" +msgstr "" + msgid "Download & Apply" msgstr "" @@ -2212,6 +2287,9 @@ msgstr "" msgid "Edit \"Why Came\" Notes" msgstr "" +msgid "Edit Deposit" +msgstr "" + msgid "Edit Deposit Slip" msgstr "" @@ -2239,6 +2317,9 @@ msgstr "" msgid "Edit List Options" msgstr "" +msgid "Edit Payment" +msgstr "" + msgid "Edit Records" msgstr "" @@ -2429,6 +2510,9 @@ msgstr "" msgid "Enrolling your ChurchCRM user account in Two Factor Authention provides an additional layer of defense against bad actors trying to access your account." msgstr "" +msgid "Ensure all deposits for the tax year are closed before generating statements." +msgstr "" + msgid "Enter Name" msgstr "" @@ -2618,6 +2702,9 @@ msgstr "" msgid "Export All Classes, Kids, and Parent to CSV file" msgstr "" +msgid "Export Options" +msgstr "" + msgid "Export Results to CSV file" msgstr "" @@ -2711,6 +2798,9 @@ msgstr "" msgid "Failed to save setting. Please try again." msgstr "" +msgid "Failed to save settings" +msgstr "" + msgid "Failed to set default role. Please try again." msgstr "" @@ -2972,12 +3062,21 @@ msgstr "" msgid "Filter by log level:" msgstr "" +msgid "Filtering" +msgstr "" + msgid "Filters" msgstr "" msgid "Final Price" msgstr "" +msgid "Finance" +msgstr "" + +msgid "Finance Dashboard" +msgstr "" + msgid "Finance access" msgstr "" @@ -3155,10 +3254,10 @@ msgstr "" msgid "Fund" msgstr "" -msgid "Fund Name" +msgid "Fund Allocation" msgstr "" -msgid "Fund Split" +msgid "Fund Name" msgstr "" msgid "Fundraiser" @@ -3191,6 +3290,9 @@ msgstr "" msgid "General" msgstr "" +msgid "Generate" +msgstr "" + msgid "Generate & Download Backup" msgstr "" @@ -3209,18 +3311,39 @@ msgstr "" msgid "Generate Report" msgstr "" +msgid "Generate Reports" +msgstr "" + msgid "Generate Statement" msgstr "" msgid "Generate Statements for Selected" msgstr "" +msgid "Generate Tax Statements" +msgstr "" + +msgid "Generate annual giving statements for donors and identify giving patterns." +msgstr "" + +msgid "Generate annual tax-deductible giving statements for donors. Can be printed or emailed." +msgstr "" + msgid "Generate class lists and attendance sheets" msgstr "" +msgid "Generate detailed reports for individual deposits or date ranges." +msgstr "" + msgid "Generate letters and mailing labels." msgstr "" +msgid "Generate reminder letters for families with outstanding pledges." +msgstr "" + +msgid "Generate reports for tax statements, pledge tracking, and financial analysis." +msgstr "" + msgid "Generate:" msgstr "" @@ -3545,6 +3668,9 @@ msgstr "" msgid "ICS URL" msgstr "" +msgid "ID" +msgstr "" + msgid "INFO" msgstr "" @@ -3555,6 +3681,9 @@ msgstr "" msgid "Iceland (Ísland)" msgstr "" +msgid "Identify members who have not made any donations within a date range." +msgstr "" + msgid "If adding a new family, enter data below." msgstr "" @@ -4028,6 +4157,9 @@ msgstr "" msgid "List maintenance" msgstr "" +msgid "List members eligible to vote based on giving history and membership criteria." +msgstr "" + msgid "List not found" msgstr "" @@ -4186,6 +4318,9 @@ msgstr "" msgid "Manage Donations and Finance" msgstr "" +msgid "Manage Funds" +msgstr "" + msgid "Manage Groups and Roles" msgstr "" @@ -4353,6 +4488,9 @@ msgstr "" msgid "Membership Info" msgstr "" +msgid "Membership Reports" +msgstr "" + #. Context: query_qry msgid "Membership anniversaries" msgstr "" @@ -4539,6 +4677,9 @@ msgstr "" msgid "Morocco (‫المغرب‬‎)" msgstr "" +msgid "Most reports can be exported as PDF for printing or CSV for spreadsheet analysis." +msgstr "" + msgid "Move" msgstr "" @@ -4662,6 +4803,9 @@ msgstr "" msgid "New Calendar" msgstr "" +msgid "New Deposit Will Be Created" +msgstr "" + msgid "New Family Added" msgstr "" @@ -4671,12 +4815,18 @@ msgstr "" msgid "New Password" msgstr "" +msgid "New Payment" +msgstr "" + msgid "New Person Added" msgstr "" msgid "New Person Notification Email Error" msgstr "" +msgid "New Pledge" +msgstr "" + msgid "New Release" msgstr "" @@ -4730,6 +4880,9 @@ msgstr "" msgid "No" msgstr "" +msgid "No Active Deposit" +msgstr "" + msgid "No Attendance counts recorded" msgstr "" @@ -4760,6 +4913,9 @@ msgstr "" msgid "No Sunday School" msgstr "" +msgid "No active funds configured." +msgstr "" + msgid "No coordinates found" msgstr "" @@ -4769,6 +4925,9 @@ msgstr "" msgid "No custom person fields have been added yet" msgstr "" +msgid "No deposits found." +msgstr "" + msgid "No email passed in" msgstr "" @@ -5021,6 +5180,12 @@ msgstr "" msgid "Oops! Page not found." msgstr "" +msgid "Open" +msgstr "" + +msgid "Open Deposits:" +msgstr "" + msgid "OpenLP Password" msgstr "" @@ -5102,6 +5267,9 @@ msgstr "" msgid "PDF successfully emailed to family members." msgstr "" +msgid "PDF/CSV" +msgstr "" + msgid "PDFs successfully emailed " msgstr "" @@ -5204,19 +5372,10 @@ msgstr "" msgid "Patriarch" msgstr "" -msgid "Payment Date" -msgstr "" - -msgid "Payment Details" +msgid "Payment" msgstr "" -msgid "Payment Editor - Modify Existing Payment" -msgstr "" - -msgid "Payment Editor - New Deposit Slip Will Be Created" -msgstr "" - -msgid "Payment Editor: " +msgid "Payment Date" msgstr "" msgid "Payment Schedule" @@ -5594,9 +5753,6 @@ msgstr "" msgid "Pledge" msgstr "" -msgid "Pledge Editor" -msgstr "" - msgid "Pledge Family Summary" msgstr "" @@ -5609,6 +5765,9 @@ msgstr "" msgid "Pledge Reminders" msgstr "" +msgid "Pledge Reports" +msgstr "" + msgid "Pledge Summary" msgstr "" @@ -5674,6 +5833,9 @@ msgstr "" msgid "Price" msgstr "" +msgid "Print or email annual giving statements to all donors." +msgstr "" + msgid "Printable Page" msgstr "" @@ -5770,6 +5932,9 @@ msgstr "" msgid "Query View" msgstr "" +msgid "Quick Actions" +msgstr "" + msgid "Quick Search" msgstr "" @@ -5797,6 +5962,9 @@ msgstr "" msgid "Ready to restore. Select a backup file and click Restore Database." msgstr "" +msgid "Recent Deposits" +msgstr "" + #. Context: query_qry msgid "Recent friends" msgstr "" @@ -5810,6 +5978,12 @@ msgstr "" msgid "Record" msgstr "" +msgid "Recording a Payment" +msgstr "" + +msgid "Recording a Pledge" +msgstr "" + msgid "Records" msgstr "" @@ -5941,6 +6115,9 @@ msgstr "" msgid "Report Start Date:" msgstr "" +msgid "Report Tips" +msgstr "" + msgid "Report Type:" msgstr "" @@ -5962,6 +6139,9 @@ msgstr "" msgid "Reports on groups and roles" msgstr "" +msgid "Reports related to member voting eligibility and organization governance." +msgstr "" + msgid "Request Family Info Verification" msgstr "" @@ -6064,6 +6244,9 @@ msgstr "" msgid "Review & Submit" msgstr "" +msgid "Review Donation Funds" +msgstr "" + msgid "Review the files below and delete them to improve security." msgstr "" @@ -6575,6 +6758,12 @@ msgstr "" msgid "Setting updated successfully" msgstr "" +msgid "Settings" +msgstr "" + +msgid "Settings saved successfully" +msgstr "" + #. Context: countries msgid "Seychelles" msgstr "" @@ -6773,6 +6962,9 @@ msgstr "" msgid "Status" msgstr "" +msgid "Status:" +msgstr "" + msgid "Store these in a secure location" msgstr "" @@ -6807,6 +6999,9 @@ msgstr "" msgid "Summary Data" msgstr "" +msgid "Summary of pledges vs payments by fund for the fiscal year." +msgstr "" + msgid "Summer" msgstr "" @@ -6933,12 +7128,24 @@ msgstr "" msgid "Tanzania" msgstr "" +msgid "Tax & Giving Reports" +msgstr "" + msgid "Tax Report" msgstr "" +msgid "Tax Report Verbiage" +msgstr "" + msgid "Tax Report signer" msgstr "" +msgid "Tax Statements (Giving Report)" +msgstr "" + +msgid "Tax Year Reporting Checklist" +msgstr "" + msgid "Teachers" msgstr "" @@ -7245,9 +7452,15 @@ msgstr "" msgid "Too many failed logins: your account has been locked. Please contact an administrator." msgstr "" +msgid "Total" +msgstr "" + msgid "Total $" msgstr "" +msgid "Total Amount" +msgstr "" + #. Context: query_qry msgid "Total By Gender" msgstr "" @@ -7255,6 +7468,9 @@ msgstr "" msgid "Total Deposit" msgstr "" +msgid "Total Deposits:" +msgstr "" + msgid "Total Logins" msgstr "" @@ -7280,6 +7496,9 @@ msgstr "" msgid "Totals" msgstr "" +msgid "Track pledges and payment progress for campaigns and fiscal year budgeting." +msgstr "" + #. Context: countries msgid "Trinidad and Tobago" msgstr "" @@ -7336,6 +7555,9 @@ msgstr "" msgid "Type of Group" msgstr "" +msgid "Type:" +msgstr "" + #. Context: countries msgid "U.S. Outlying Islands" msgstr "" @@ -7540,6 +7762,9 @@ msgstr "" msgid "Use address/contact data from" msgstr "" +msgid "Use classification and family filters to generate reports for specific groups of donors." +msgstr "" + msgid "Use external tools (GPG, 7-Zip) to encrypt backups before storing off-site." msgstr "" @@ -7579,6 +7804,9 @@ msgstr "" msgid "User must be an Admin" msgstr "" +msgid "User must be an Admin or have Finance permission" +msgstr "" + msgid "User must have Add Event permission" msgstr "" @@ -7588,9 +7816,6 @@ msgstr "" msgid "User must have Edit Records permission" msgstr "" -msgid "User must have Finance permission" -msgstr "" - msgid "User must have Manage Groups permission" msgstr "" @@ -7691,6 +7916,12 @@ msgstr "" msgid "Verify People" msgstr "" +msgid "Verify church name, address, and contact info appears on tax statements." +msgstr "" + +msgid "Verify fund names and descriptions are accurate for statements." +msgstr "" + msgid "Version" msgstr "" @@ -7947,6 +8178,12 @@ msgstr "" msgid "WorkEmail" msgstr "" +msgid "YTD Payments" +msgstr "" + +msgid "YTD Pledges" +msgstr "" + msgid "Year" msgstr "" @@ -8083,6 +8320,9 @@ msgstr "" msgid "Your cart is empty!" msgstr "" +msgid "Your fiscal year starts in month" +msgstr "" + msgid "Your new password is too similar to your old one." msgstr "" @@ -8128,6 +8368,9 @@ msgstr "" msgid "Zip code is required" msgstr "" +msgid "active" +msgstr "" + msgid "added" msgstr "" @@ -8267,6 +8510,9 @@ msgstr "" msgid "of People" msgstr "" +msgid "open" +msgstr "" + msgid "open rate" msgstr "" diff --git a/src/ChurchCRM/Config/Menu/Menu.php b/src/ChurchCRM/Config/Menu/Menu.php index 38a57c6408..15a5dbd049 100644 --- a/src/ChurchCRM/Config/Menu/Menu.php +++ b/src/ChurchCRM/Config/Menu/Menu.php @@ -182,10 +182,11 @@ private static function getEventsMenu(bool $isAddEventEnabled): MenuItem private static function getDepositsMenu(bool $isAdmin, bool $isFinanceEnabled): MenuItem { - $depositsMenu = new MenuItem(gettext('Deposit'), '', SystemConfig::getBooleanValue('bEnabledFinance') && $isFinanceEnabled, 'fa-cash-register'); + $depositsMenu = new MenuItem(gettext('Finance'), '', SystemConfig::getBooleanValue('bEnabledFinance') && $isFinanceEnabled, 'fa-cash-register'); + $depositsMenu->addSubMenu(new MenuItem(gettext('Dashboard'), 'finance/', $isFinanceEnabled, 'fa-tachometer-alt')); $depositsMenu->addSubMenu(new MenuItem(gettext('View All Deposits'), 'FindDepositSlip.php', $isFinanceEnabled, 'fa-list')); - $depositsMenu->addSubMenu(new MenuItem(gettext('Deposit Reports'), 'FinancialReports.php', $isFinanceEnabled, 'fa-file-invoice')); - $depositsMenu->addSubMenu(new MenuItem(gettext('Edit Deposit Slip'), 'DepositSlipEditor.php?DepositSlipID=' . $_SESSION['iCurrentDeposit'], $isFinanceEnabled, 'fa-edit')); + $depositsMenu->addSubMenu(new MenuItem(gettext('Deposit Reports'), 'finance/reports', $isFinanceEnabled, 'fa-file-invoice')); + $depositsMenu->addSubMenu(new MenuItem(gettext('Edit Deposit Slip'), 'DepositSlipEditor.php?DepositSlipID=' . $_SESSION['iCurrentDeposit'], $isFinanceEnabled, 'fa-edit')); if ($isAdmin) { $adminMenu = new MenuItem(gettext('Admin'), '', $isAdmin); diff --git a/src/ChurchCRM/Service/FinancialService.php b/src/ChurchCRM/Service/FinancialService.php index c59c129625..78d121bf10 100644 --- a/src/ChurchCRM/Service/FinancialService.php +++ b/src/ChurchCRM/Service/FinancialService.php @@ -8,6 +8,7 @@ use ChurchCRM\MICRFunctions; use ChurchCRM\model\ChurchCRM\Deposit; use ChurchCRM\model\ChurchCRM\DepositQuery; +use ChurchCRM\model\ChurchCRM\DonationFundQuery; use ChurchCRM\model\ChurchCRM\FamilyQuery; use ChurchCRM\model\ChurchCRM\Pledge; use ChurchCRM\model\ChurchCRM\PledgeQuery; @@ -16,6 +17,7 @@ use Propel\Runtime\ActiveQuery\Criteria; use ChurchCRM\Service\AuthService; use Propel\Runtime\Map\TableMap; +use Propel\Runtime\Collection\ObjectCollection; class FinancialService { @@ -589,4 +591,229 @@ public function getZeroGiversReportData(string $dateStart = '', string $dateEnd ->find() ->toArray(); } + + // ========================================================================= + // Dashboard Methods + // ========================================================================= + + /** + * Calculate fiscal year date range based on system configuration. + * + * @return array{startDate: string, endDate: string, label: string, month: int} + */ + public function getFiscalYearDates(): array + { + $iFYMonth = (int) SystemConfig::getValue('iFYMonth'); + $currentYear = (int) date('Y'); + $currentMonth = (int) date('n'); + + if ($iFYMonth === 1) { + // Calendar year fiscal year + $fyStartDate = $currentYear . '-01-01'; + $fyEndDate = $currentYear . '-12-31'; + $fyLabel = (string) $currentYear; + } else { + // Non-calendar fiscal year + if ($currentMonth >= $iFYMonth) { + $fyStartYear = $currentYear; + $fyEndYear = $currentYear + 1; + } else { + $fyStartYear = $currentYear - 1; + $fyEndYear = $currentYear; + } + $fyStartDate = $fyStartYear . '-' . str_pad($iFYMonth, 2, '0', STR_PAD_LEFT) . '-01'; + // Calculate end date (last day of month before fiscal year month) + $endMonth = $iFYMonth - 1; + if ($endMonth === 0) { + $endMonth = 12; + } + $fyEndDate = $fyEndYear . '-' . str_pad($endMonth, 2, '0', STR_PAD_LEFT) . '-' . date('t', strtotime($fyEndYear . '-' . $endMonth . '-01')); + $fyLabel = $fyStartYear . '/' . substr((string) $fyEndYear, 2, 2); + } + + return [ + 'startDate' => $fyStartDate, + 'endDate' => $fyEndDate, + 'label' => $fyLabel, + 'month' => $iFYMonth, + ]; + } + + /** + * Get deposit statistics (total, open, closed counts). + * + * @return array{total: int, open: int, closed: int} + */ + public function getDepositStatistics(): array + { + return [ + 'total' => DepositQuery::create()->count(), + 'open' => DepositQuery::create()->filterByClosed(false)->count(), + 'closed' => DepositQuery::create()->filterByClosed(true)->count(), + ]; + } + + /** + * Get recent deposits within the current fiscal year. + * + * @param int $limit Maximum number of deposits to return + * @param string|null $fyStartDate Optional fiscal year start date filter + * @return ObjectCollection Collection of Deposit objects + */ + public function getRecentDeposits(int $limit = 5, ?string $fyStartDate = null): ObjectCollection + { + $query = DepositQuery::create() + ->orderByDate(Criteria::DESC) + ->limit($limit); + + // Filter to only show deposits from current fiscal year + if ($fyStartDate !== null) { + $query->filterByDate($fyStartDate, Criteria::GREATER_EQUAL); + } + + return $query->find(); + } + + /** + * Get active donation funds. + * + * @return ObjectCollection Collection of DonationFund objects + */ + public function getActiveDonationFunds(): ObjectCollection + { + return DonationFundQuery::create() + ->filterByActive('true') + ->orderByName() + ->find(); + } + + /** + * Get total count of donation funds. + * + * @return int + */ + public function getTotalFundCount(): int + { + return DonationFundQuery::create()->count(); + } + + /** + * Get Year-to-Date payment total for a fiscal year. + * + * @param string $fyStartDate Fiscal year start date + * @param string $fyEndDate Fiscal year end date + * @return float|null + */ + public function getYtdPaymentTotal(string $fyStartDate, string $fyEndDate): ?float + { + return PledgeQuery::create() + ->filterByPledgeOrPayment('Payment') + ->filterByDate(['min' => $fyStartDate, 'max' => $fyEndDate]) + ->withColumn('SUM(plg_amount)', 'TotalAmount') + ->select(['TotalAmount']) + ->findOne(); + } + + /** + * Get Year-to-Date pledge total for a fiscal year. + * + * @param string $fyStartDate Fiscal year start date + * @param string $fyEndDate Fiscal year end date + * @return float|null + */ + public function getYtdPledgeTotal(string $fyStartDate, string $fyEndDate): ?float + { + return PledgeQuery::create() + ->filterByPledgeOrPayment('Pledge') + ->filterByDate(['min' => $fyStartDate, 'max' => $fyEndDate]) + ->withColumn('SUM(plg_amount)', 'TotalAmount') + ->select(['TotalAmount']) + ->findOne(); + } + + /** + * Get Year-to-Date payment count for a fiscal year. + * + * @param string $fyStartDate Fiscal year start date + * @param string $fyEndDate Fiscal year end date + * @return int + */ + public function getYtdPaymentCount(string $fyStartDate, string $fyEndDate): int + { + return PledgeQuery::create() + ->filterByPledgeOrPayment('Payment') + ->filterByDate(['min' => $fyStartDate, 'max' => $fyEndDate]) + ->count(); + } + + /** + * Get count of unique donor families for a fiscal year. + * + * @param string $fyStartDate Fiscal year start date + * @param string $fyEndDate Fiscal year end date + * @return int|null + */ + public function getYtdDonorFamilyCount(string $fyStartDate, string $fyEndDate): ?int + { + return PledgeQuery::create() + ->filterByPledgeOrPayment('Payment') + ->filterByDate(['min' => $fyStartDate, 'max' => $fyEndDate]) + ->withColumn('COUNT(DISTINCT plg_FamID)', 'FamilyCount') + ->select(['FamilyCount']) + ->findOne(); + } + + /** + * Get current deposit from session. + * + * @return Deposit|null + */ + public function getCurrentDeposit(): ?Deposit + { + $currentDepositId = $_SESSION['iCurrentDeposit'] ?? null; + if ($currentDepositId) { + return DepositQuery::create()->findOneById((int) $currentDepositId); + } + return null; + } + + /** + * Get current deposit ID from session. + * + * @return int|null + */ + public function getCurrentDepositId(): ?int + { + return $_SESSION['iCurrentDeposit'] ?? null; + } + + /** + * Get all dashboard data in a single call. + * + * This method consolidates all the dashboard queries into a single + * service call to simplify the view layer. + * + * @return array Dashboard data including fiscal year info, statistics, and deposits + */ + public function getDashboardData(): array + { + $fiscalYear = $this->getFiscalYearDates(); + $depositStats = $this->getDepositStatistics(); + $currentDeposit = $this->getCurrentDeposit(); + + return [ + 'fiscalYear' => $fiscalYear, + 'depositStats' => $depositStats, + 'recentDeposits' => $this->getRecentDeposits(5, $fiscalYear['startDate']), + 'activeFunds' => $this->getActiveDonationFunds(), + 'activeFundCount' => $this->getActiveDonationFunds()->count(), + 'totalFundCount' => $this->getTotalFundCount(), + 'ytdPaymentTotal' => $this->getYtdPaymentTotal($fiscalYear['startDate'], $fiscalYear['endDate']), + 'ytdPledgeTotal' => $this->getYtdPledgeTotal($fiscalYear['startDate'], $fiscalYear['endDate']), + 'ytdPaymentCount' => $this->getYtdPaymentCount($fiscalYear['startDate'], $fiscalYear['endDate']), + 'ytdDonorFamilies' => $this->getYtdDonorFamilyCount($fiscalYear['startDate'], $fiscalYear['endDate']), + 'currentDeposit' => $currentDeposit, + 'currentDepositId' => $this->getCurrentDepositId(), + ]; + } } diff --git a/src/ChurchCRM/Slim/Middleware/Request/Auth/FinanceRoleAuthMiddleware.php b/src/ChurchCRM/Slim/Middleware/Request/Auth/FinanceRoleAuthMiddleware.php index 6041795e64..4be0d90e9a 100644 --- a/src/ChurchCRM/Slim/Middleware/Request/Auth/FinanceRoleAuthMiddleware.php +++ b/src/ChurchCRM/Slim/Middleware/Request/Auth/FinanceRoleAuthMiddleware.php @@ -6,12 +6,13 @@ class FinanceRoleAuthMiddleware extends BaseAuthRoleMiddleware { protected function hasRole(): bool { - return $this->user->isFinanceEnabled(); + // Admins have access to all finance features, plus users with finance permission + return $this->user->isAdmin() || $this->user->isFinanceEnabled(); } protected function noRoleMessage(): string { - return gettext('User must have Finance permission'); + return gettext('User must be an Admin or have Finance permission'); } protected function getRoleName(): string diff --git a/src/Include/Functions.php b/src/Include/Functions.php index 2fa67a5de8..bb42121373 100644 --- a/src/Include/Functions.php +++ b/src/Include/Functions.php @@ -5,6 +5,7 @@ use ChurchCRM\dto\SystemConfig; use ChurchCRM\Service\PersonService; use ChurchCRM\Service\SystemService; +use ChurchCRM\Service\FinancialService; use ChurchCRM\Utils\InputUtils; use ChurchCRM\Utils\LoggerUtils; use ChurchCRM\Utils\VersionUtils; @@ -158,17 +159,14 @@ function PrintFYIDSelect(string $selectName, ?int $iFYID = null): void } // Formats a fiscal year string -function MakeFYString(?int $iFYID): string +function MakeFYString(int|string|null $iFYID): string { - if ($iFYID === null) { + if ($iFYID === null || $iFYID === '') { return ''; } - - if (SystemConfig::getValue('iFYMonth') == 1) { - return (string) (1996 + $iFYID); - } else { - return 1995 + $iFYID . '/' . mb_substr(1996 + $iFYID, 2, 2); - } + + // Delegate to FinancialService to centralize fiscal year formatting logic. + return FinancialService::formatFiscalYear((int) $iFYID); } // Runs an SQL query. Returns the result resource. diff --git a/src/PledgeEditor.php b/src/PledgeEditor.php index 575eec7251..c5bca5f521 100644 --- a/src/PledgeEditor.php +++ b/src/PledgeEditor.php @@ -463,10 +463,16 @@ } if ($PledgeOrPayment === 'Pledge') { - $sPageTitle = gettext('Pledge Editor'); + $sPageTitle = '' . gettext('New Pledge'); + $cardHeaderClass = 'bg-warning'; + $cardHeaderTextClass = 'text-dark'; + $formTypeLabel = gettext('Pledge'); } elseif ($iCurrentDeposit) { $dep_DateFormatted = ($dep_Date instanceof \DateTime) ? $dep_Date->format('Y-m-d') : $dep_Date; - $sPageTitle = gettext('Payment Editor: ') . $dep_Type . gettext(' Deposit Slip #') . $iCurrentDeposit . " ($dep_DateFormatted)"; + $sPageTitle = '' . gettext('New Payment') . ' - ' . $dep_Type . gettext(' Deposit #') . $iCurrentDeposit . " ($dep_DateFormatted)"; + $cardHeaderClass = 'bg-primary'; + $cardHeaderTextClass = 'text-white'; + $formTypeLabel = gettext('Payment'); $checksFit = SystemConfig::getValue('iChecksPerDepositForm'); @@ -490,12 +496,15 @@ if ($roomForDeposits <= 0) { $sPageTitle .= ''; } -} else { // not a plege and a current deposit hasn't been created yet +} else { // not a pledge and a current deposit hasn't been created yet if ($sGroupKey) { - $sPageTitle = gettext('Payment Editor - Modify Existing Payment'); + $sPageTitle = '' . gettext('Edit Payment'); } else { - $sPageTitle = gettext('Payment Editor - New Deposit Slip Will Be Created'); + $sPageTitle = '' . gettext('New Payment') . ' - ' . gettext('New Deposit Will Be Created'); } + $cardHeaderClass = 'bg-primary'; + $cardHeaderTextClass = 'text-white'; + $formTypeLabel = gettext('Payment'); } // end if $PledgeOrPayment if ($dep_Closed && $sGroupKey && $PledgeOrPayment === 'Payment') { @@ -517,11 +526,28 @@
+ +
+
+ +
+
+
-
-

+
+

@@ -686,8 +712,8 @@
-
-

+
+

diff --git a/src/finance/.htaccess b/src/finance/.htaccess new file mode 100644 index 0000000000..66ef8f69ce --- /dev/null +++ b/src/finance/.htaccess @@ -0,0 +1,4 @@ +RewriteEngine On +RewriteCond %{REQUEST_FILENAME} !-f +RewriteCond %{REQUEST_FILENAME} !-d +RewriteRule ^ index.php [QSA,L] diff --git a/src/finance/index.php b/src/finance/index.php new file mode 100644 index 0000000000..f630d8fbc6 --- /dev/null +++ b/src/finance/index.php @@ -0,0 +1,78 @@ +compile(); + +AppFactory::setContainer($container); +$app = AppFactory::create(); +$app->setBasePath($basePath); + +// Register routes FIRST before middleware +require __DIR__ . '/routes/dashboard.php'; +require __DIR__ . '/routes/reports.php'; + +// Body parsing and routing middleware +$app->addBodyParsingMiddleware(); +$app->addRoutingMiddleware(); + +// Error middleware - must be added BEFORE other middleware (LIFO execution order) +$errorMiddleware = $app->addErrorMiddleware(true, true, true); +SlimUtils::setupErrorLogger($errorMiddleware); + +// Custom error handler for HTML pages +$errorMiddleware->setDefaultErrorHandler(function ( + Request $request, + Throwable $exception, + bool $displayErrorDetails, + bool $logErrors, + bool $logErrorDetails +) use ($app) { + $logger = LoggerUtils::getAppLogger(); + + if ($exception instanceof HttpNotFoundException) { + $logger->info('Finance 404 redirect', ['path' => $request->getUri()->getPath()]); + $response = $app->getResponseFactory()->createResponse(302); + return $response->withHeader('Location', \ChurchCRM\dto\SystemURLs::getRootPath() . '/finance/'); + } + + // Log full error details server-side for debugging + $logger->error('Finance error', [ + 'exception' => get_class($exception), + 'message' => $exception->getMessage(), + 'file' => $exception->getFile(), + 'line' => $exception->getLine(), + 'trace' => $exception->getTraceAsString() + ]); + + // Return generic message to client to avoid exposing sensitive internals + $response = $app->getResponseFactory()->createResponse(500); + return SlimUtils::renderJSON($response, [ + 'success' => false, + 'error' => gettext('An unexpected error occurred. Please contact your administrator.') + ]); +}); + +// Auth middleware (LIFO - added last, runs first) +$app->add(new CorsMiddleware()); +$app->add(FinanceRoleAuthMiddleware::class); +$app->add(AuthMiddleware::class); +$app->add(VersionMiddleware::class); + +$app->run(); diff --git a/src/finance/routes/dashboard.php b/src/finance/routes/dashboard.php new file mode 100644 index 0000000000..bf1db8396d --- /dev/null +++ b/src/finance/routes/dashboard.php @@ -0,0 +1,18 @@ +get('/', function (Request $request, Response $response) { + $renderer = new PhpRenderer(__DIR__ . '/../views/'); + + $pageArgs = [ + 'sRootPath' => SystemURLs::getRootPath(), + 'sPageTitle' => gettext('Finance Dashboard'), + ]; + + return $renderer->render($response, 'dashboard.php', $pageArgs); +}); diff --git a/src/finance/routes/reports.php b/src/finance/routes/reports.php new file mode 100644 index 0000000000..445f952aad --- /dev/null +++ b/src/finance/routes/reports.php @@ -0,0 +1,38 @@ +group('/reports', function (RouteCollectorProxy $group): void { + + // Financial Reports selection page (migrated from FinancialReports.php) + $group->get('', function (Request $request, Response $response): Response { + $renderer = new PhpRenderer(__DIR__ . '/../views/'); + + $pageArgs = [ + 'sRootPath' => SystemURLs::getRootPath(), + 'sPageTitle' => gettext('Financial Reports'), + ]; + + return $renderer->render($response, 'reports.php', $pageArgs); + }); + + // Tax Year Report (Giving Report) configuration + $group->get('/tax-statements', function (Request $request, Response $response): Response { + $renderer = new PhpRenderer(__DIR__ . '/../views/'); + + $pageArgs = [ + 'sRootPath' => SystemURLs::getRootPath(), + 'sPageTitle' => gettext('Tax Statements (Giving Report)'), + 'iFYMonth' => SystemConfig::getValue('iFYMonth'), + ]; + + return $renderer->render($response, 'reports/tax-statements.php', $pageArgs); + }); + +}); diff --git a/src/finance/views/dashboard.php b/src/finance/views/dashboard.php new file mode 100644 index 0000000000..4742f3ff77 --- /dev/null +++ b/src/finance/views/dashboard.php @@ -0,0 +1,516 @@ +getDashboardData(); + +// Extract data for template use +$fiscalYear = $dashboardData['fiscalYear']; +$fyStartDate = $fiscalYear['startDate']; +$fyEndDate = $fiscalYear['endDate']; +$fyLabel = $fiscalYear['label']; +$iFYMonth = $fiscalYear['month']; + +$depositStats = $dashboardData['depositStats']; +$totalDeposits = $depositStats['total']; +$openDeposits = $depositStats['open']; +$closedDeposits = $depositStats['closed']; + +$recentDeposits = $dashboardData['recentDeposits']; +$activeFunds = $dashboardData['activeFunds']; +$activeFundCount = $dashboardData['activeFundCount']; +$totalFunds = $dashboardData['totalFundCount']; + +$ytdPaymentTotal = $dashboardData['ytdPaymentTotal']; +$ytdPledgeTotal = $dashboardData['ytdPledgeTotal']; +$ytdPaymentCount = $dashboardData['ytdPaymentCount']; +$ytdDonorFamilies = $dashboardData['ytdDonorFamilies']; + +$currentDeposit = $dashboardData['currentDeposit']; +$currentDepositId = $dashboardData['currentDepositId']; + +$isAdmin = AuthenticationManager::getCurrentUser()->isAdmin(); + +?> + +
+ +
+
+

+ + : + ( - ) +

+ + + +
+
+ + + +
+ + + +
+ +
+
+
+
+ $ +
+
+ +
+
+
+
+ + +
+
+
+
+ $ +
+
+ +
+
+
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
+ + +
+
+
+
+ +
+
+ +
+
+
+
+
+ +
+ +
+ +
+
+
+ +
+
+
+
+ + + + + + + +
+ getClosed()): ?> + + + + + + + +
+ + + +
+
+
+ + +
+
+
+ +
+
+
+

+ +

+ +
+ +
+
+ + + + + +
+
+ +

+
+
+ 0): ?> + + + + + +
+
+ + +
+
+ 0): ?> + + + + +
+
+ +

+
+
+ + + + +
+
+ + +
+
+ + + + + + +
+
+ +

+
+
+ + + +
+
+ + +
+
+ +
+
+ +

+
+
+ + + +
+
+ + +
+
+ +
+
+ +

+
+
+ + + +
+
+
+
+
+ + +
+
+
+ +
+ + + +
+
+ count() > 0): ?> +
+
+ + + + + + + + + + + + + + + + + + + + + + +
+ + #getId() ?> + + getDate('M j, Y') ?>getType() ?>getComment() ?? '') ?>$getVirtualColumn('totalAmount') ?? 0, 2) ?> + getClosed()): ?> + + + + +
+
+ +
+ +

+ + + +
+ +
+
+
+ + +
+ + +
+
+
+ +
+
+
+
+ + getId() ?> +
+
+ + getDate('M j, Y') ?> +
+
+ + getType() ?> +
+
+ + getClosed()): ?> + + + + +
+
+
+
$getVirtualColumn('totalAmount') ?? 0, 2) ?>
+ +
+ + + +
+
+ +
+
+
+ +
+
+
+ +

+ + + +
+
+ + + +
+
+
+ +
+
+
+
+ + +
+
+ + +
+
+ + +
+ + 0): ?> +
+
+ % +
+
+ + +
+
+ + +
+
+
+ +
+ +
+
+ count() > 0): ?> +
    + +
  • + getName()) ?> + + + +
  • + +
+ +
+

+
+ + + isAdmin()): ?> + + +
+
+ +
+
+
+ + + + + + + + + diff --git a/src/finance/views/reports.php b/src/finance/views/reports.php new file mode 100644 index 0000000000..77987860b2 --- /dev/null +++ b/src/finance/views/reports.php @@ -0,0 +1,266 @@ += $iFYMonth) { + $fyLabel = $currentYear . '/' . substr($currentYear + 1, 2, 2); + } else { + $fyLabel = ($currentYear - 1) . '/' . substr($currentYear, 2, 2); + } +} + +$bCSVAdminOnly = SystemConfig::getBooleanValue('bCSVAdminOnly'); +$isAdmin = AuthenticationManager::getCurrentUser()->isAdmin(); + +?> + +
+ +
+
+

+ +

+
+
+ +
+ +
+
+
+
+ +
+
+ +
+
+ + +
+ +
+ + +
+
+
+
+ +
+
+ +
+
+ + +
+
+
+
+ +
+
+
+

+ +

+ + +
+
+
+
+ + +
+
+
+
+
+ +
+
+
+
+
+
+

+ . + . + +

+
+
+
+

+ + + + +

+
+
+
+

+ +

+
+
+
+
+
+
+
+ + diff --git a/src/skin/churchcrm.scss b/src/skin/churchcrm.scss index 7c660d7630..749a72a93f 100644 --- a/src/skin/churchcrm.scss +++ b/src/skin/churchcrm.scss @@ -49,6 +49,7 @@ @include meta.load-css("scss/kiosk"); @include meta.load-css("scss/groups"); @include meta.load-css("scss/people-lazy-image-loading"); +@include meta.load-css("scss/finance"); html, body { diff --git a/src/skin/scss/_finance.scss b/src/skin/scss/_finance.scss new file mode 100644 index 0000000000..4bd2d805e5 --- /dev/null +++ b/src/skin/scss/_finance.scss @@ -0,0 +1,69 @@ +// Finance Module Styles +// Used by: /finance/views/dashboard.php, /finance/views/reports.php + +// Finance dashboard & reports card styling +.finance-card { + border: none; + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); + transition: box-shadow 0.3s ease; + + &:hover { + box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12); + } +} + +// Finance metric cards (YTD Payments, Pledges, etc.) +.finance-metric-card { + border-radius: 0.25rem; + + .finance-metric-value { + font-size: 2rem; + font-weight: 700; + color: white; + } + + .finance-metric-label { + letter-spacing: 1px; + } + + // Gradient backgrounds for metric cards + &.metric-payments { + background: linear-gradient(135deg, #28a745 0%, #20c997 100%); + } + + &.metric-pledges { + background: linear-gradient(135deg, #007bff 0%, #6f42c1 100%); + } + + &.metric-donors { + background: linear-gradient(135deg, #17a2b8 0%, #20c997 100%); + } + + &.metric-count { + background: linear-gradient(135deg, #fd7e14 0%, #ffc107 100%); + } +} + +// Finance report list items with hover effect +.finance-list-group-item { + transition: all 0.2s ease; + + &:hover { + background-color: #f8f9fa; + transform: translateX(3px); + } + + h6 { + margin-bottom: 0.25rem; + } +} + +// Finance progress bars +.finance-progress { + height: 20px; +} + +// Truncated text cells +.finance-truncate { + max-width: 200px; +} diff --git a/src/skin/scss/system-settings-panel.scss b/src/skin/scss/system-settings-panel.scss new file mode 100644 index 0000000000..4857a56ad4 --- /dev/null +++ b/src/skin/scss/system-settings-panel.scss @@ -0,0 +1,118 @@ +/** + * System Settings Panel - Reusable component styles + */ + +@use "sass:color"; + +.settings-panel-card { + margin-bottom: 1rem; + + .card-header { + h6 { + font-weight: 600; + + i { + margin-right: 0.5rem; + } + } + } + + .card-body { + padding: 1.25rem; + } + + // Form elements styling + .form-label { + margin-bottom: 0.25rem; + color: #495057; + } + + .form-control { + font-size: 0.875rem; + } + + .form-text { + font-size: 0.75rem; + line-height: 1.3; + } + + // Custom switch improvements + .custom-switch { + padding-left: 2.5rem; + + .custom-control-label { + font-size: 0.875rem; + font-weight: 500; + cursor: pointer; + + &::before { + top: 0.1rem; + } + + &::after { + top: calc(0.1rem + 2px); + } + } + + .custom-control-input:checked ~ .custom-control-label::before { + background-color: #17a2b8; + border-color: #17a2b8; + } + } + + // Help icons + .text-info { + &:hover { + color: color.adjust(#17a2b8, $lightness: -10%); + } + } + + // Button row + hr { + border-color: #e9ecef; + } + + .btn-outline-secondary { + font-size: 0.875rem; + } + + .btn-primary { + min-width: 140px; + } +} + +// Collapsed state (when used with Bootstrap collapse) +.settings-panel-card.collapse:not(.show) { + display: none; +} + +// Responsive adjustments +@media (max-width: 767.98px) { + .settings-panel-card { + .card-body { + padding: 1rem; + } + + .d-flex.justify-content-between { + flex-direction: column; + gap: 0.75rem; + + .btn { + width: 100%; + } + } + } +} + +// Dark mode support (if needed in future) +.dark-mode { + .settings-panel-card { + .form-label { + color: #ced4da; + } + + .form-text { + color: #adb5bd !important; + } + } +} diff --git a/webpack.config.js b/webpack.config.js index 268ccd0e73..5bc4e5b5f0 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -15,7 +15,8 @@ module.exports = { 'locale-loader': './webpack/locale-loader', // Dynamic locale loader 'backup': './webpack/backup', // Backup database page 'restore': './webpack/restore', // Restore database page - 'admin-dashboard': './webpack/admin-dashboard' // Admin dashboard page styles and scripts + 'admin-dashboard': './webpack/admin-dashboard', // Admin dashboard page styles and scripts + 'system-settings-panel': './webpack/system-settings-panel' // Reusable settings panel component }, output: { path: path.resolve('./src/skin/v2'), diff --git a/webpack/system-settings-panel.js b/webpack/system-settings-panel.js new file mode 100644 index 0000000000..8e7d0d70d6 --- /dev/null +++ b/webpack/system-settings-panel.js @@ -0,0 +1,466 @@ +/** + * System Settings Panel - Reusable component for displaying/editing SystemConfig settings + * + * Usage: + * 1. Include the CSS: + * 2. Include the JS: + * 3. Add container:
+ * 4. Initialize: + * window.CRM.settingsPanel.init({ + * container: '#settingsPanel', + * title: 'Financial Settings', + * icon: 'fa-solid fa-sliders', + * settings: ['iFYMonth', 'bEnableNonDeductible', 'iChecksPerDepositForm'], + * onSave: function() { window.location.reload(); } + * }); + */ + +import '../src/skin/scss/system-settings-panel.scss'; + +(function() { + 'use strict'; + + // Setting type definitions with rendering and value extraction + const SettingTypes = { + boolean: { + render: function(setting, value) { + const checked = value === '1' || value === 'true' || value === true; + return ` +
+
+ + + ${setting.tooltip ? `${setting.tooltip}` : ''} +
+
+ `; + }, + getValue: function(el) { + return el.checked ? '1' : '0'; + } + }, + number: { + render: function(setting, value) { + return ` +
+ + + ${setting.tooltip ? `${setting.tooltip}` : ''} +
+ `; + }, + getValue: function(el) { + return el.value; + } + }, + text: { + render: function(setting, value) { + return ` +
+ + + ${setting.tooltip ? `${setting.tooltip}` : ''} +
+ `; + }, + getValue: function(el) { + return el.value; + } + }, + choice: { + render: function(setting, value) { + let optionsHtml = ''; + if (setting.choices) { + setting.choices.forEach(function(choice) { + const optValue = typeof choice === 'object' ? choice.value : choice; + const optLabel = typeof choice === 'object' ? choice.label : choice; + const selected = String(value) === String(optValue) ? 'selected' : ''; + optionsHtml += ``; + }); + } + return ` +
+ + + ${setting.tooltip ? `${setting.tooltip}` : ''} +
+ `; + }, + getValue: function(el) { + return el.value; + } + }, + password: { + render: function(setting, value) { + return ` +
+ + + ${setting.tooltip ? `${setting.tooltip}` : ''} +
+ `; + }, + getValue: function(el) { + return el.value; + } + } + }; + + // Escape HTML to prevent XSS + function escapeHtml(str) { + if (!str) return ''; + const div = document.createElement('div'); + div.textContent = str; + return div.innerHTML; + } + + // Month choices helper + function getMonthChoices() { + return [ + { value: '1', label: window.i18next ? i18next.t('January') : 'January' }, + { value: '2', label: window.i18next ? i18next.t('February') : 'February' }, + { value: '3', label: window.i18next ? i18next.t('March') : 'March' }, + { value: '4', label: window.i18next ? i18next.t('April') : 'April' }, + { value: '5', label: window.i18next ? i18next.t('May') : 'May' }, + { value: '6', label: window.i18next ? i18next.t('June') : 'June' }, + { value: '7', label: window.i18next ? i18next.t('July') : 'July' }, + { value: '8', label: window.i18next ? i18next.t('August') : 'August' }, + { value: '9', label: window.i18next ? i18next.t('September') : 'September' }, + { value: '10', label: window.i18next ? i18next.t('October') : 'October' }, + { value: '11', label: window.i18next ? i18next.t('November') : 'November' }, + { value: '12', label: window.i18next ? i18next.t('December') : 'December' } + ]; + } + + // Pre-defined setting configurations (from SystemConfig) + const SettingDefinitions = { + // Financial Settings + 'iFYMonth': { + type: 'choice', + label: 'First month of the fiscal year', + choices: getMonthChoices + }, + 'sDepositSlipType': { + type: 'choice', + label: 'Deposit ticket type', + tooltip: 'QBDT - QuickBooks Deposit Ticket', + choices: [{ value: 'QBDT', label: 'QBDT (QuickBooks)' }] + }, + 'iChecksPerDepositForm': { + type: 'number', + label: 'Number of checks for Deposit Slip Report', + min: 1, + max: 100 + }, + 'bDisplayBillCounts': { + type: 'boolean', + label: 'Display bill counts on deposit slip' + }, + 'bUseScannedChecks': { + type: 'boolean', + label: 'Enable use of scanned checks' + }, + 'bEnableNonDeductible': { + type: 'boolean', + label: 'Enable non-deductible payments' + }, + 'bUseDonationEnvelopes': { + type: 'boolean', + label: 'Enable use of donation envelopes' + }, + 'aFinanceQueries': { + type: 'text', + label: 'Finance permission query IDs', + tooltip: 'Comma-separated query IDs requiring finance permissions', + placeholder: '30,31,32' + }, + // Church Information + 'sChurchName': { + type: 'text', + label: 'Church Name' + }, + 'sChurchAddress': { + type: 'text', + label: 'Church Address' + }, + 'sChurchCity': { + type: 'text', + label: 'Church City' + }, + 'sChurchState': { + type: 'text', + label: 'Church State' + }, + 'sChurchZip': { + type: 'text', + label: 'Church Zip' + }, + 'sChurchPhone': { + type: 'text', + label: 'Church Phone' + }, + 'sChurchEmail': { + type: 'text', + label: 'Church Email' + }, + // Report Settings + 'sTaxSigner': { + type: 'text', + label: 'Tax Report signer' + }, + 'sReminderSigner': { + type: 'text', + label: 'Pledge Reminder Signer' + } + }; + + // Settings Panel Class + class SettingsPanel { + constructor() { + this.options = {}; + this.settingValues = {}; + this.initialized = false; + } + + /** + * Initialize the settings panel + * @param {Object} options Configuration options + * @param {string} options.container - CSS selector for container element + * @param {string} options.toggleButton - CSS selector for toggle button (optional) + * @param {string} options.title - Panel title + * @param {string} options.icon - Font Awesome icon class + * @param {Array} options.settings - Array of setting names or setting config objects + * @param {Function} options.onSave - Callback after successful save + * @param {boolean} options.showAllSettingsLink - Show link to System Settings page + * @param {string} options.headerClass - CSS class for header (default: bg-info) + */ + init(options) { + this.options = Object.assign({ + container: '#settingsPanel', + toggleButton: null, + title: 'Settings', + icon: 'fa-solid fa-cog', + settings: [], + onSave: null, + showAllSettingsLink: true, + headerClass: 'bg-info' + }, options); + + this.container = document.querySelector(this.options.container); + if (!this.container) { + console.error('Settings panel container not found:', this.options.container); + return; + } + + this.loadSettings(); + } + + // Load current setting values from API + loadSettings() { + const self = this; + const settingNames = this.options.settings.map(s => typeof s === 'string' ? s : s.name); + + // Fetch all setting values + const promises = settingNames.map(name => { + return fetch(window.CRM.root + '/api/system/config/' + name) + .then(response => response.json()) + .then(data => { + self.settingValues[name] = data.value; + }) + .catch(err => { + console.warn('Could not load setting:', name); + self.settingValues[name] = ''; + }); + }); + + Promise.all(promises).then(() => { + self.render(); + self.bindEvents(); + self.initialized = true; + }); + } + + // Render the panel HTML + render() { + let settingsHtml = ''; + + this.options.settings.forEach(setting => { + const settingName = typeof setting === 'string' ? setting : setting.name; + const settingConfig = this.getSettingConfig(setting); + const value = this.settingValues[settingName]; + + const renderer = SettingTypes[settingConfig.type]; + if (renderer) { + // Handle dynamic choices (functions) + if (typeof settingConfig.choices === 'function') { + settingConfig.choices = settingConfig.choices(); + } + settingsHtml += renderer.render(settingConfig, value); + } + }); + + const t = window.i18next ? i18next.t.bind(i18next) : (s => s); + + const html = ` +
+
+
+ ${this.options.title} +
+
+
+ +
+ ${settingsHtml} +
+
+
+ ${this.options.showAllSettingsLink ? ` + + ${t('All System Settings')} + + ` : '
'} + +
+ +
+
+ `; + + this.container.innerHTML = html; + } + + // Get merged setting configuration + getSettingConfig(setting) { + const name = typeof setting === 'string' ? setting : setting.name; + const baseConfig = SettingDefinitions[name] || { type: 'text', label: name }; + const customConfig = typeof setting === 'object' ? setting : {}; + + return Object.assign({ name: name }, baseConfig, customConfig); + } + + // Bind event handlers + bindEvents() { + const self = this; + const saveBtn = this.container.querySelector('#settingsPanelSaveBtn'); + + if (saveBtn) { + saveBtn.addEventListener('click', function() { + self.save(); + }); + } + + // Toggle button handling + if (this.options.toggleButton) { + const toggleBtn = document.querySelector(this.options.toggleButton); + if (toggleBtn) { + toggleBtn.addEventListener('click', function() { + $(self.container).collapse('toggle'); + }); + } + } + } + + // Save all settings + save() { + const self = this; + const saveBtn = this.container.querySelector('#settingsPanelSaveBtn'); + const originalHtml = saveBtn.innerHTML; + const t = window.i18next ? i18next.t.bind(i18next) : (s => s); + + // Disable button and show loading + saveBtn.disabled = true; + saveBtn.innerHTML = ' ' + t('Saving...'); + + // Collect all setting values + const settings = {}; + this.container.querySelectorAll('.setting-input').forEach(function(input) { + const type = input.dataset.type; + const renderer = SettingTypes[type]; + if (renderer) { + settings[input.name] = renderer.getValue(input); + } + }); + + // Save each setting + const promises = Object.keys(settings).map(function(key) { + return fetch(window.CRM.root + '/api/system/config/' + key, { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify({ value: settings[key] }) + }); + }); + + Promise.all(promises) + .then(function() { + if (window.CRM && window.CRM.notify) { + window.CRM.notify(t('Settings saved successfully'), { type: 'success', delay: 2000 }); + } + + if (typeof self.options.onSave === 'function') { + self.options.onSave(); + } + }) + .catch(function(error) { + if (window.CRM && window.CRM.notify) { + window.CRM.notify(t('Failed to save settings'), { type: 'error', delay: 5000 }); + } + saveBtn.disabled = false; + saveBtn.innerHTML = originalHtml; + }); + } + + // Add a custom setting definition + static addSettingDefinition(name, config) { + SettingDefinitions[name] = config; + } + + // Add a custom setting type renderer + static addSettingType(typeName, renderer) { + SettingTypes[typeName] = renderer; + } + } + + // Export to window.CRM namespace + window.CRM = window.CRM || {}; + window.CRM.SettingsPanel = SettingsPanel; + window.CRM.settingsPanel = new SettingsPanel(); + +})();