diff --git a/Issue 3144 - github/Query after possible fix.docx b/Issue 3144 - github/Query after possible fix.docx deleted file mode 100644 index 78e3d11..0000000 Binary files a/Issue 3144 - github/Query after possible fix.docx and /dev/null differ diff --git a/Issue 3144 - github/Query after possible fix.pdf b/Issue 3144 - github/Query after possible fix.pdf deleted file mode 100644 index 2ddc662..0000000 Binary files a/Issue 3144 - github/Query after possible fix.pdf and /dev/null differ diff --git a/Issue 3144 - github/Query speed with only name, only email, and possible fix.pdf b/Issue 3144 - github/Query speed with only name, only email, and possible fix.pdf deleted file mode 100644 index 510cd98..0000000 Binary files a/Issue 3144 - github/Query speed with only name, only email, and possible fix.pdf and /dev/null differ diff --git a/Issue 3144 - github/Slow Query + Explain of planner in Adminer.pdf b/Issue 3144 - github/Slow Query + Explain of planner in Adminer.pdf deleted file mode 100644 index fd74cd1..0000000 Binary files a/Issue 3144 - github/Slow Query + Explain of planner in Adminer.pdf and /dev/null differ diff --git a/Issue 3144 - github/With only the name as duplicate check fiel1.pdf b/Issue 3144 - github/With only the name as duplicate check fiel1.pdf deleted file mode 100644 index ff40d71..0000000 Binary files a/Issue 3144 - github/With only the name as duplicate check fiel1.pdf and /dev/null differ diff --git a/Issue 3144 - github/With only the name as duplicate check field.pdf b/Issue 3144 - github/With only the name as duplicate check field.pdf deleted file mode 100644 index 4a5437b..0000000 Binary files a/Issue 3144 - github/With only the name as duplicate check field.pdf and /dev/null differ diff --git a/Issue 3144 - github/duplicate-check-email-only.log b/Issue 3144 - github/duplicate-check-email-only.log deleted file mode 100644 index a787471..0000000 --- a/Issue 3144 - github/duplicate-check-email-only.log +++ /dev/null @@ -1,13 +0,0 @@ -240914 13:53:09 4625 Connect nvkhcrm@localhost on nvkhcrm using Socket - 4625 Query SELECT authToken.id AS `id`, authToken.is_active AS `isActive`, authToken.token AS `token`, authToken.secret AS `secret`, authToken.user_id AS `userId`, authToken.portal_id AS `portalId`, authToken.hash AS `hash`, authToken.created_at AS `createdAt`, authToken.last_access AS `lastAccess`, authToken.modified_at AS `modifiedAt` FROM `auth_token` AS `authToken` WHERE authToken.token = '9f82b356063f608eff8a22b411d654ab' AND authToken.deleted = 0 LIMIT 0, 1 - 4625 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.user_name = 'admin' AND user.password = 'Wkpa1j5J2/Og1qN4NMoygh3XDj1Je1Gugpdzpd4QA0m7t92XN8Ze8AyFVlPlXlsOM.DU.2.XbH3wVoK11LOon/' AND user.type NOT IN ('api','system') AND user.deleted = 0 LIMIT 0, 1 - 4625 Query SELECT team.id AS `id`, team.name AS `name` FROM `team` AS `team` JOIN `team_user` AS `teamUser` ON teamUser.team_id = team.id AND teamUser.user_id = '1' AND teamUser.deleted = 0 WHERE team.deleted = 0 ORDER BY team.name ASC - 4625 Query UPDATE `auth_token` SET auth_token.last_access = '2024-09-14 11:53:09', auth_token.modified_at = '2024-09-14 11:53:09' WHERE auth_token.id = '66e4c445c1874e115' AND auth_token.deleted = 0 - 4625 Query SELECT authLogRecord.id AS `id` FROM `auth_log_record` AS `authLogRecord` WHERE authLogRecord.auth_token_id = '66e4c445c1874e115' AND authLogRecord.deleted = 0 ORDER BY authLogRecord.request_time DESC LIMIT 0, 1 - 4625 Query SELECT preferences.id AS `id`, preferences.data AS `data` FROM `preferences` WHERE preferences.id = '1' LIMIT 0, 1 - 4625 Query SELECT autofollow.entity_type AS `entityType` FROM `autofollow` AS `autofollow` WHERE autofollow.user_id = '1' AND autofollow.deleted = 0 - 4625 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.id = '1' AND user.deleted = 0 - 4625 Query SELECT contact.id AS `id` FROM `contact` AS `contact` LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 WHERE ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl'))) AND contact.deleted = 0 LIMIT 0, 1 - 4625 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl'))) AND contact.deleted = 0 LIMIT 0, 1 - 4625 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl'))) AND contact.deleted = 0 LIMIT 0, 1 - 4625 Quit diff --git a/Issue 3144 - github/duplicate-check-name-and-email-with-fix.log b/Issue 3144 - github/duplicate-check-name-and-email-with-fix.log deleted file mode 100644 index be49a13..0000000 --- a/Issue 3144 - github/duplicate-check-name-and-email-with-fix.log +++ /dev/null @@ -1,13 +0,0 @@ -240914 14:20:09 5270 Connect nvkhcrm@localhost on nvkhcrm using Socket - 5270 Query SELECT authToken.id AS `id`, authToken.is_active AS `isActive`, authToken.token AS `token`, authToken.secret AS `secret`, authToken.user_id AS `userId`, authToken.portal_id AS `portalId`, authToken.hash AS `hash`, authToken.created_at AS `createdAt`, authToken.last_access AS `lastAccess`, authToken.modified_at AS `modifiedAt` FROM `auth_token` AS `authToken` WHERE authToken.token = '9f82b356063f608eff8a22b411d654ab' AND authToken.deleted = 0 LIMIT 0, 1 - 5270 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.user_name = 'admin' AND user.password = 'Wkpa1j5J2/Og1qN4NMoygh3XDj1Je1Gugpdzpd4QA0m7t92XN8Ze8AyFVlPlXlsOM.DU.2.XbH3wVoK11LOon/' AND user.type NOT IN ('api','system') AND user.deleted = 0 LIMIT 0, 1 - 5270 Query SELECT team.id AS `id`, team.name AS `name` FROM `team` AS `team` JOIN `team_user` AS `teamUser` ON teamUser.team_id = team.id AND teamUser.user_id = '1' AND teamUser.deleted = 0 WHERE team.deleted = 0 ORDER BY team.name ASC - 5270 Query UPDATE `auth_token` SET auth_token.last_access = '2024-09-14 12:20:09', auth_token.modified_at = '2024-09-14 12:20:09' WHERE auth_token.id = '66e4c445c1874e115' AND auth_token.deleted = 0 - 5270 Query SELECT authLogRecord.id AS `id` FROM `auth_log_record` AS `authLogRecord` WHERE authLogRecord.auth_token_id = '66e4c445c1874e115' AND authLogRecord.deleted = 0 ORDER BY authLogRecord.request_time DESC LIMIT 0, 1 - 5270 Query SELECT preferences.id AS `id`, preferences.data AS `data` FROM `preferences` WHERE preferences.id = '1' LIMIT 0, 1 - 5270 Query SELECT autofollow.entity_type AS `entityType` FROM `autofollow` AS `autofollow` WHERE autofollow.user_id = '1' AND autofollow.deleted = 0 - 5270 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.id = '1' AND user.deleted = 0 - 5270 Query SELECT contact.id AS `id` FROM `contact` AS `contact` LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 WHERE (((contact.first_name = 'H.N.M. (Hans)') AND (contact.last_name = 'Dijkema')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 - 5270 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name` FROM `contact` AS `contact` LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 WHERE (((contact.first_name = 'H.N.M. (Hans)') AND (contact.last_name = 'Dijkema')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 - 5270 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name` FROM `contact` AS `contact` LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 WHERE (((contact.first_name = 'H.N.M. (Hans)') AND (contact.last_name = 'Dijkema')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 - 5270 Quit diff --git a/Issue 3144 - github/duplicate-check-name-only.log b/Issue 3144 - github/duplicate-check-name-only.log deleted file mode 100644 index 56aa8d0..0000000 --- a/Issue 3144 - github/duplicate-check-name-only.log +++ /dev/null @@ -1,12 +0,0 @@ - 4954 Connect nvkhcrm@localhost on nvkhcrm using Socket - 4954 Query SELECT authToken.id AS `id`, authToken.is_active AS `isActive`, authToken.token AS `token`, authToken.secret AS `secret`, authToken.user_id AS `userId`, authToken.portal_id AS `portalId`, authToken.hash AS `hash`, authToken.created_at AS `createdAt`, authToken.last_access AS `lastAccess`, authToken.modified_at AS `modifiedAt` FROM `auth_token` AS `authToken` WHERE authToken.token = '9f82b356063f608eff8a22b411d654ab' AND authToken.deleted = 0 LIMIT 0, 1 - 4954 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.user_name = 'admin' AND user.password = 'Wkpa1j5J2/Og1qN4NMoygh3XDj1Je1Gugpdzpd4QA0m7t92XN8Ze8AyFVlPlXlsOM.DU.2.XbH3wVoK11LOon/' AND user.type NOT IN ('api','system') AND user.deleted = 0 LIMIT 0, 1 - 4954 Query SELECT team.id AS `id`, team.name AS `name` FROM `team` AS `team` JOIN `team_user` AS `teamUser` ON teamUser.team_id = team.id AND teamUser.user_id = '1' AND teamUser.deleted = 0 WHERE team.deleted = 0 ORDER BY team.name ASC - 4954 Query SELECT authLogRecord.id AS `id` FROM `auth_log_record` AS `authLogRecord` WHERE authLogRecord.auth_token_id = '66e4c445c1874e115' AND authLogRecord.deleted = 0 ORDER BY authLogRecord.request_time DESC LIMIT 0, 1 - 4954 Query SELECT preferences.id AS `id`, preferences.data AS `data` FROM `preferences` WHERE preferences.id = '1' LIMIT 0, 1 - 4954 Query SELECT autofollow.entity_type AS `entityType` FROM `autofollow` AS `autofollow` WHERE autofollow.user_id = '1' AND autofollow.deleted = 0 - 4954 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.id = '1' AND user.deleted = 0 - 4954 Query SELECT contact.id AS `id` FROM `contact` AS `contact` WHERE (((contact.first_name = 'H.N.M. (Hans)') AND (contact.last_name = 'Dijkema'))) AND contact.deleted = 0 LIMIT 0, 1 - 4954 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE (((contact.first_name = 'H.N.M. (Hans)') AND (contact.last_name = 'Dijkema'))) AND contact.deleted = 0 LIMIT 0, 1 - 4954 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE (((contact.first_name = 'H.N.M. (Hans)') AND (contact.last_name = 'Dijkema'))) AND contact.deleted = 0 LIMIT 0, 1 - 4954 Quit diff --git a/Issue 3144 - github/duplicate-queries-with-patch.docx b/Issue 3144 - github/duplicate-queries-with-patch.docx deleted file mode 100644 index 5feb893..0000000 Binary files a/Issue 3144 - github/duplicate-queries-with-patch.docx and /dev/null differ diff --git a/Issue 3144 - github/duplicate-queries-with-patch.log b/Issue 3144 - github/duplicate-queries-with-patch.log deleted file mode 100644 index cb6cb62..0000000 --- a/Issue 3144 - github/duplicate-queries-with-patch.log +++ /dev/null @@ -1,13 +0,0 @@ -240916 7:44:56 76 Connect nvkhcrm@localhost on nvkhcrm using Socket - 76 Query SELECT authToken.id AS `id`, authToken.is_active AS `isActive`, authToken.token AS `token`, authToken.secret AS `secret`, authToken.user_id AS `userId`, authToken.portal_id AS `portalId`, authToken.hash AS `hash`, authToken.created_at AS `createdAt`, authToken.last_access AS `lastAccess`, authToken.modified_at AS `modifiedAt` FROM `auth_token` AS `authToken` WHERE authToken.token = '4c193683ab7bb0e7777f91f480c982b2' AND authToken.deleted = 0 LIMIT 0, 1 - 76 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.user_name = 'admin' AND user.password = 'Wkpa1j5J2/Og1qN4NMoygh3XDj1Je1Gugpdzpd4QA0m7t92XN8Ze8AyFVlPlXlsOM.DU.2.XbH3wVoK11LOon/' AND user.type NOT IN ('api','system') AND user.deleted = 0 LIMIT 0, 1 - 76 Query SELECT team.id AS `id`, team.name AS `name` FROM `team` AS `team` JOIN `team_user` AS `teamUser` ON teamUser.team_id = team.id AND teamUser.user_id = '1' AND teamUser.deleted = 0 WHERE team.deleted = 0 ORDER BY team.name ASC - 76 Query UPDATE `auth_token` SET auth_token.last_access = '2024-09-16 05:44:56', auth_token.modified_at = '2024-09-16 05:44:56' WHERE auth_token.id = '66e7c51c33c534698' AND auth_token.deleted = 0 - 76 Query SELECT authLogRecord.id AS `id` FROM `auth_log_record` AS `authLogRecord` WHERE authLogRecord.auth_token_id = '66e7c51c33c534698' AND authLogRecord.deleted = 0 ORDER BY authLogRecord.request_time DESC LIMIT 0, 1 - 76 Query SELECT preferences.id AS `id`, preferences.data AS `data` FROM `preferences` WHERE preferences.id = '1' LIMIT 0, 1 - 76 Query SELECT autofollow.entity_type AS `entityType` FROM `autofollow` AS `autofollow` WHERE autofollow.user_id = '1' AND autofollow.deleted = 0 - 76 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.id = '1' AND user.deleted = 0 - 76 Query SELECT contact.id AS `id` FROM `contact` AS `contact` LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 WHERE (((contact.first_name = 'J (Klop)') AND (contact.last_name = 'Klaterflap')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 - 76 Query SELECT contact.id AS `id` FROM `contact` AS `contact` LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 WHERE (((contact.first_name = 'J (Klop)') AND (contact.last_name = 'Klaterflap')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 - 76 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE contact.id IN ('66db927c2f02ae727') AND (((contact.first_name = 'J (Klop)') AND (contact.last_name = 'Klaterflap')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 5 - 76 Quit diff --git a/Issue 3144 - github/duplicate-queries-with-patch.pdf b/Issue 3144 - github/duplicate-queries-with-patch.pdf deleted file mode 100644 index 49cbc15..0000000 Binary files a/Issue 3144 - github/duplicate-queries-with-patch.pdf and /dev/null differ diff --git a/Issue 3144 - github/log-of-creation-of-contact-check-for-duplicates-slow-query.log b/Issue 3144 - github/log-of-creation-of-contact-check-for-duplicates-slow-query.log deleted file mode 100644 index 9e35d5f..0000000 --- a/Issue 3144 - github/log-of-creation-of-contact-check-for-duplicates-slow-query.log +++ /dev/null @@ -1,17 +0,0 @@ -# Time: 240914 13:04:14 -# User@Host: nvkhcrm[nvkhcrm] @ localhost [] -# Thread_id: 3702 Schema: nvkhcrm QC_hit: No -# Query_time: 14.863369 Lock_time: 0.000451 Rows_sent: 1 Rows_examined: 5272 -# Rows_affected: 0 Bytes_sent: 5410 -use `nvkhcrm`; -SET timestamp=1726311854; -SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE (((contact.first_name = 'O (Onto)') AND (contact.last_name = 'Oftenragh')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1; -# Time: 240914 13:04:29 -# User@Host: nvkhcrm[nvkhcrm] @ localhost [] -# Thread_id: 3702 Schema: nvkhcrm QC_hit: No -# Query_time: 15.889768 Lock_time: 0.001275 Rows_sent: 1 Rows_examined: 5272 -# Rows_affected: 0 Bytes_sent: 5410 -SET timestamp=1726311869; -SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE (((contact.first_name = 'O (Onto)') AND (contact.last_name = 'Oftenragh')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1; -~ - diff --git a/Issue 3144 - github/log-of-creation-of-contact-check-for-duplicates.log b/Issue 3144 - github/log-of-creation-of-contact-check-for-duplicates.log deleted file mode 100644 index 3ee41db..0000000 --- a/Issue 3144 - github/log-of-creation-of-contact-check-for-duplicates.log +++ /dev/null @@ -1,13 +0,0 @@ -240914 13:04:14 3702 Connect nvkhcrm@localhost on nvkhcrm using Socket - 3702 Query SELECT authToken.id AS `id`, authToken.is_active AS `isActive`, authToken.token AS `token`, authToken.secret AS `secret`, authToken.user_id AS `userId`, authToken.portal_id AS `portalId`, authToken.hash AS `hash`, authToken.created_at AS `createdAt`, authToken.last_access AS `lastAccess`, authToken.modified_at AS `modifiedAt` FROM `auth_token` AS `authToken` WHERE authToken.token = '9f82b356063f608eff8a22b411d654ab' AND authToken.deleted = 0 LIMIT 0, 1 - 3702 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.user_name = 'admin' AND user.password = 'Wkpa1j5J2/Og1qN4NMoygh3XDj1Je1Gugpdzpd4QA0m7t92XN8Ze8AyFVlPlXlsOM.DU.2.XbH3wVoK11LOon/' AND user.type NOT IN ('api','system') AND user.deleted = 0 LIMIT 0, 1 - 3702 Query SELECT team.id AS `id`, team.name AS `name` FROM `team` AS `team` JOIN `team_user` AS `teamUser` ON teamUser.team_id = team.id AND teamUser.user_id = '1' AND teamUser.deleted = 0 WHERE team.deleted = 0 ORDER BY team.name ASC - 3702 Query UPDATE `auth_token` SET auth_token.last_access = '2024-09-14 11:04:14', auth_token.modified_at = '2024-09-14 11:04:14' WHERE auth_token.id = '66e4c445c1874e115' AND auth_token.deleted = 0 - 3702 Query SELECT authLogRecord.id AS `id` FROM `auth_log_record` AS `authLogRecord` WHERE authLogRecord.auth_token_id = '66e4c445c1874e115' AND authLogRecord.deleted = 0 ORDER BY authLogRecord.request_time DESC LIMIT 0, 1 - 3702 Query SELECT preferences.id AS `id`, preferences.data AS `data` FROM `preferences` WHERE preferences.id = '1' LIMIT 0, 1 - 3702 Query SELECT autofollow.entity_type AS `entityType` FROM `autofollow` AS `autofollow` WHERE autofollow.user_id = '1' AND autofollow.deleted = 0 - 3702 Query SELECT user.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(user.first_name, ''), ' ', IFNULL(user.middle_name, ''), ' ', IFNULL(user.last_name, ''))), ''), ' ', ' ') AS `name`, user.deleted AS `deleted`, user.user_name AS `userName`, user.type AS `type`, user.password AS `password`, user.auth_method AS `authMethod`, user.api_key AS `apiKey`, user.salutation_name AS `salutationName`, user.first_name AS `firstName`, user.last_name AS `lastName`, user.is_active AS `isActive`, user.title AS `title`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, user.avatar_color AS `avatarColor`, user.gender AS `gender`, user.created_at AS `createdAt`, user.modified_at AS `modifiedAt`, userData.auth2_f_a AS `auth2FA`, user.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, user.delete_id AS `deleteId`, user.default_team_id AS `defaultTeamId`, defaultTeam.name AS `defaultTeamName`, user.contact_id AS `contactId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `contactName`, user.avatar_id AS `avatarId`, avatar.name AS `avatarName`, user.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, user.dashboard_template_id AS `dashboardTemplateId`, dashboardTemplate.name AS `dashboardTemplateName`, user.working_time_calendar_id AS `workingTimeCalendarId`, user.layout_set_id AS `layoutSetId`, userData.id AS `userDataId`, userData.id AS `userDataName` FROM `user` AS `user` LEFT JOIN `attachment` AS `avatar` ON user.avatar_id = avatar.id LEFT JOIN `contact` AS `contact` ON user.contact_id = contact.id LEFT JOIN `user_data` AS `userData` ON user.id = userData.user_id AND userData.deleted = 0 LEFT JOIN `dashboard_template` AS `dashboardTemplate` ON user.dashboard_template_id = dashboardTemplate.id LEFT JOIN `user` AS `createdBy` ON user.created_by_id = createdBy.id LEFT JOIN `team` AS `defaultTeam` ON user.default_team_id = defaultTeam.id LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON user.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'User' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON user.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'User' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 WHERE user.id = '1' AND user.deleted = 0 - 3702 Query SELECT contact.id AS `id` FROM `contact` AS `contact` LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 WHERE (((contact.first_name = 'O (Onto)') AND (contact.last_name = 'Oftenragh')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 - 3702 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE (((contact.first_name = 'O (Onto)') AND (contact.last_name = 'Oftenragh')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 - 3702 Query SELECT contact.id AS `id`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(contact.first_name, ''), ' ', IFNULL(contact.middle_name, ''), ' ', IFNULL(contact.last_name, ''))), ''), ' ', ' ') AS `name`, contact.deleted AS `deleted`, contact.salutation_name AS `salutationName`, contact.first_name AS `firstName`, contact.last_name AS `lastName`, accountContactPrimary.role AS `title`, contact.description AS `description`, emailAddresses.name AS `emailAddress`, phoneNumbers.name AS `phoneNumber`, contact.do_not_call AS `doNotCall`, contact.address_street AS `addressStreet`, contact.address_city AS `addressCity`, contact.address_state AS `addressState`, contact.address_country AS `addressCountry`, contact.address_postal_code AS `addressPostalCode`, accountContactPrimary.is_inactive AS `accountIsInactive`, account.type AS `accountType`, contact.created_at AS `createdAt`, contact.modified_at AS `modifiedAt`, portalUser.id IS NOT NULL AS `hasPortalUser`, contact.agbcode AS `agbcode`, contact.rbcznummer AS `rbcznummer`, contact.m_b_k_datum AS `mBKDatum`, contact.m_code AS `mCode`, contact.geboortedatum AS `geboortedatum`, contact.datum_registratie AS `datumRegistratie`, contact.balens AS `balens`, contact.regiocode AS `regiocode`, contact.einddatum AS `einddatum`, contact.vakopleiding_datum_diploma AS `vakopleidingDatumDiploma`, contact.datum_v_o_g AS `datumVOG`, contact.geslacht AS `geslacht`, contact.initials_name AS `initialsName`, contact.dispensatie AS `dispensatie`, contact.website AS `website`, contact.lidnummer AS `lidnummer`, contact.quasier AS `quasier`, contact.geplande_afstudeerdatum AS `geplandeAfstudeerdatum`, contact.nascholingstotalen_herberekenen AS `nascholingstotalenHerberekenen`, contact.labels AS `labels`, contact.uitleg_nascholings_berekening AS `uitlegNascholingsBerekening`, contact.nascholing_onvoldoende AS `nascholingOnvoldoende`, contact.survey_id AS `surveyId`, contact.nick_name AS `nickName`, contact.aantekening AS `aantekening`, contact.middle_name AS `middleName`, emailAddresses.opt_out AS `emailAddressIsOptedOut`, emailAddresses.invalid AS `emailAddressIsInvalid`, phoneNumbers.opt_out AS `phoneNumberIsOptedOut`, phoneNumbers.invalid AS `phoneNumberIsInvalid`, contact.account_id AS `accountId`, account.name AS `accountName`, contact.campaign_id AS `campaignId`, campaign.name AS `campaignName`, contact.created_by_id AS `createdById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(createdBy.first_name, ''), ' ', IFNULL(createdBy.middle_name, ''), ' ', IFNULL(createdBy.last_name, ''))), ''), ' ', ' ') AS `createdByName`, contact.modified_by_id AS `modifiedById`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(modifiedBy.first_name, ''), ' ', IFNULL(modifiedBy.middle_name, ''), ' ', IFNULL(modifiedBy.last_name, ''))), ''), ' ', ' ') AS `modifiedByName`, contact.assigned_user_id AS `assignedUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(assignedUser.first_name, ''), ' ', IFNULL(assignedUser.middle_name, ''), ' ', IFNULL(assignedUser.last_name, ''))), ''), ' ', ' ') AS `assignedUserName`, portalUser.id AS `portalUserId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(portalUser.first_name, ''), ' ', IFNULL(portalUser.middle_name, ''), ' ', IFNULL(portalUser.last_name, ''))), ''), ' ', ' ') AS `portalUserName`, originalLead.id AS `originalLeadId`, REPLACE(NULLIF(TRIM(CONCAT(IFNULL(originalLead.first_name, ''), ' ', IFNULL(originalLead.middle_name, ''), ' ', IFNULL(originalLead.last_name, ''))), ''), ' ', ' ') AS `originalLeadName`, contact.m_b_k_diploma_id AS `mBKDiplomaId`, mBKDiploma.name AS `mBKDiplomaName`, contact.vakopleiding_id AS `vakopleidingId`, vakopleiding.name AS `vakopleidingName`, contact.diploma_vakopleiding_id AS `diplomaVakopleidingId`, diplomaVakopleiding.name AS `diplomaVakopleidingName`, contact.v_o_g_id AS `vOGId`, vOG.name AS `vOGName` FROM `contact` AS `contact` LEFT JOIN `attachment` AS `mBKDiploma` ON contact.m_b_k_diploma_id = mBKDiploma.id LEFT JOIN `attachment` AS `diplomaVakopleiding` ON contact.diploma_vakopleiding_id = diplomaVakopleiding.id LEFT JOIN `attachment` AS `vOG` ON contact.v_o_g_id = vOG.id LEFT JOIN `vakopleiding` AS `vakopleiding` ON contact.vakopleiding_id = vakopleiding.id LEFT JOIN `lead` AS `originalLead` ON contact.id = originalLead.created_contact_id AND originalLead.deleted = 0 LEFT JOIN `campaign` AS `campaign` ON contact.campaign_id = campaign.id LEFT JOIN `account` AS `account` ON contact.account_id = account.id LEFT JOIN `user` AS `assignedUser` ON contact.assigned_user_id = assignedUser.id LEFT JOIN `user` AS `modifiedBy` ON contact.modified_by_id = modifiedBy.id LEFT JOIN `user` AS `createdBy` ON contact.created_by_id = createdBy.id LEFT JOIN `entity_email_address` AS `emailAddressesMultipleMiddle` ON contact.id = emailAddressesMultipleMiddle.entity_id AND emailAddressesMultipleMiddle.deleted = 0 AND emailAddressesMultipleMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddressesMultiple` ON emailAddressesMultiple.id = emailAddressesMultipleMiddle.email_address_id AND emailAddressesMultiple.deleted = 0 LEFT JOIN `account_contact` AS `accountContactPrimary` ON contact.id = accountContactPrimary.contact_id AND contact.account_id = accountContactPrimary.account_id AND accountContactPrimary.deleted = 0 LEFT JOIN `entity_email_address` AS `emailAddressesMiddle` ON contact.id = emailAddressesMiddle.entity_id AND emailAddressesMiddle.deleted = 0 AND emailAddressesMiddle.primary = 1 AND emailAddressesMiddle.entity_type = 'Contact' LEFT JOIN `email_address` AS `emailAddresses` ON emailAddresses.id = emailAddressesMiddle.email_address_id AND emailAddresses.deleted = 0 LEFT JOIN `entity_phone_number` AS `phoneNumbersMiddle` ON contact.id = phoneNumbersMiddle.entity_id AND phoneNumbersMiddle.deleted = 0 AND phoneNumbersMiddle.primary = 1 AND phoneNumbersMiddle.entity_type = 'Contact' LEFT JOIN `phone_number` AS `phoneNumbers` ON phoneNumbers.id = phoneNumbersMiddle.phone_number_id AND phoneNumbers.deleted = 0 LEFT JOIN `user` AS `portalUser` ON contact.id = portalUser.contact_id AND portalUser.deleted = 0 WHERE (((contact.first_name = 'O (Onto)') AND (contact.last_name = 'Oftenragh')) OR ((emailAddressesMultiple.lower = LOWER('hans@dykema.nl')))) AND contact.deleted = 0 LIMIT 0, 1 -240914 13:04:45 3702 Quit diff --git a/Issue 3145 - github & forum/issue_3145.png b/Issue 3145 - github & forum/issue_3145.png deleted file mode 100644 index 7c30afc..0000000 Binary files a/Issue 3145 - github & forum/issue_3145.png and /dev/null differ diff --git a/Nascholingsberekeningen v2.docx b/Nascholingsberekeningen v2.docx deleted file mode 100644 index 8e4bd91..0000000 Binary files a/Nascholingsberekeningen v2.docx and /dev/null differ diff --git a/Nascholingsberekeningen.docx b/Nascholingsberekeningen.docx deleted file mode 100644 index c42dfd0..0000000 Binary files a/Nascholingsberekeningen.docx and /dev/null differ diff --git a/code pre 2023-10-27/script-bereken-nascholingstotaal-voor-jaar.js b/code pre 2023-10-27/script-bereken-nascholingstotaal-voor-jaar.js deleted file mode 100644 index e97e30f..0000000 --- a/code pre 2023-10-27/script-bereken-nascholingstotaal-voor-jaar.js +++ /dev/null @@ -1,294 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Initialiseren -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_diploma_dt = record\attribute('Contact', $contact_id, 'vakopleidingDatumDiploma'); -$na_dispensatie = record\attribute('Contact', $contact_id, 'dispensatie'); -$na_regiocode = record\attribute('Contact', $contact_id, 'regiocode'); -$na_regiocode_str = $na_regiocode; -$na_regiocode = toInt($na_regiocode); // regiocode numeriek maken -$na_diploma_jr = datetime\year($na_diploma_dt); - -ifThen(!global\isset('nascholingsnorm-hash'), - $na_script = configGet('script-lees-nascholingsnorm-hash'); - Exec($na_script); -); -$na_norm = global\get('nascholingsnorm-hash'); - -$na_id = ''; - -$na_methode_1_tot_en_met = configGet('berekening-methode-1-tot-en-met'); -$na_werkgroep_div = configGet('werkgroep-dagen-deel-factor'); -$na_werkgroep_max = configGet('werkgroep-dagen-max'); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bereken de totalen dagen en dagenMedisch. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -ifThen(!$no_db_update, - $na_recs = record\fetchManyHash('Nascholingstotaal', - 'id, dagen, dagenMedisch, dagenHomeopathie, dagenWerkgroep, handmatig, dagenVrijstelling, nascholingsnormId, startSurplus', - 'createdAt', 'asc', - 'contactId=', $contact_id, - 'jaar=', $year - ); - $na_nrecs = array\length($na_recs); - - ifThenElse($na_nrecs > 0, - $na_rec = array\at($na_recs, 0); - - $na_id = hash\get($na_rec, 'id'); - $na_handmatig = hash\get($na_rec, 'handmatig'); - $na_vrijstelling = hash\get($na_rec, 'dagenVrijstelling'); - $na_start_surplus = hash\get($na_rec, 'startSurplus'); - - log('warning', 'Berekenen nascholingen voor jaar: ', $year, ', na_id = ', $na_id); - - // Zolang de totalen handmatig zijn, wordt er niets berekend. - ifThenElse($na_handmatig, - $na_totaal_dagen = hash\get($na_rec, 'dagen'); - $na_totaal_medisch = hash\get($na_rec, 'dagenMedisch'); - $na_totaal_homeopathie = hash\get($na_rec, 'dagenHomeopathie'); - $na_totaal_werkgroep = hash\get($na_rec, 'dagenWerkgroep'); - log('warning', 'Handmatige nascholing, er wordt niets berekend'); - log('warning', 'medisch:', $na_totaal_medisch, ', hom:', $na_totaal_homeopathie, - ', werkgr:', $na_totaal_werkgroep, ', homoverig:', $na_totaal_dagen); - , - // Totalen op 0, dit is een te berekenen nascholing - $na_totaal_dagen = 0; - $na_totaal_medisch = 0; - $na_totaal_homeopathie = 0; - $na_totaal_werkgroep = 0; - - // De goedgekeurde handmatige en geaccrediteerde nascholingen - // kan nog steeds met methode 1. - $na_rows = record\fetchRelatedMany( - 'Nascholingstotaal', $na_id, 'nascholingen1', - 'jaar, dagen, dagenMedisch, dagenHomeopathie, status, name', - 'jaar', 'asc', - 'jaar=', $year - ); - $na_i = 0; - $na_n = array\length($na_rows); - log('warning', '#nascholingen gerelateerd aan nascholingstotaal:', $na_n); - - while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - $status = array\at($na_row, 4); - $name = array\at($na_row, 5); - log('warning', 'i = ', $na_i, ', status = ', $status); - ifThen($status != '-' && $status != 'afgekeurd', - $na_totaal_dagen = $na_totaal_dagen + array\at($na_row, 1); - $na_totaal_medisch = $na_totaal_medisch + array\at($na_row, 2); - $na_totaal_homeopathie = $na_totaal_homeopathie + array\at($na_row, 3); - log('warning', 'Dagen: hom:', $na_totaal_homeopathie, ', dagen: ', $na_totaal_dagen, ', medisch:', $na_totaal_medisch); - ); - $na_i = $na_i + 1; - ); - - // Dan het aantal notulen voor de werkgroepen van dit contact voor het gegeven jaar - // Eerst kijken we of we al groter dan het grensjaar zitten. - // Dit is niet meer voor methode 1. - ifThen($year > $na_methode_1_tot_en_met, - // Nu kunnen we ons best doen. - // Haal de werkgroep lidmaatschappen op die geldig zijn voor dit jaar. - $na_today = datetime\now(); - $na_werkgroepen_ids_1 = record\fetchRelatedManyHash('Contact', $contact_id, - 'werkgroeplidmaatschappen', - 'werkgroepId, datumVanaf', - 'name', 'asc', - 'lidmaatschapBeeindigd=', 0, - 'jaarVanaf<=', $year, - ); - $na_werkgroepen_ids_2 = record\fetchRelatedManyHash('Contact', $contact_id, - 'werkgroeplidmaatschappen', - 'werkgroepId, datumVanaf, datumTotEnMet', - 'name', 'asc', - 'lidmaatschapBeeindigd=', 1, - 'jaarVanaf<=', $year, - 'jaarTotEnMet>=', $year - ); - // Oke, nu hebben we de werkgroep ids. - // En dan kijken naar het aantal verslagen over dit jaar. - // En afkappen op een maximaal aantal dagen. - - $na_werkgroep_verslagen = 0; - - $na_n = array\length($na_werkgroepen_ids_1); - log('warning', 'Werkgroepen die niet beëindigd zijn :', $na_n); - $na_i = 0; - while($na_i < $na_n, - // Verkrijg het aantal notulen >= max(datumVanaf,begin dit jaar) en kleiner einde dit jaar. - $na_row = array\at($na_werkgroepen_ids_1, $na_i); - - $na_werkgroep_id = hash\get($na_row, 'werkgroepId'); - - $na_datumVanaf = hash\get($na_row, 'datumVanaf'); - $na_year_begin = string\concatenate($year, '-01-01'); - $na_end = string\concatenate($year, '-12-31'); - ifThenElse($na_datumVanaf > $na_year_begin, - $na_begin = $na_datumVanaf, - $na_begin = $na_year_begin); - - log('warning', 'werkgroepid = ', $na_werkgroep_id); - log('warning', 'datum vanaf: ', $na_begin, ', datum eind:', $na_end); - - $na_count = record\countRel('Werkgroep', $na_werkgroep_id, - 'werkgroepverslagen', - 'datum>=', $na_begin, - 'datum<=', $na_end - ); - - $na_werkgroep_verslagen = $na_werkgroep_verslagen + $na_count; - log('warning', 'notulen count=', $na_count, ', werkgroep verslagen=', $na_werkgroep_verslagen); - - $na_i = $na_i + 1; - ); - - // Oke en nu voor de jaren waarin er een einddatum is gezet. - - $na_n = array\length($na_werkgroepen_ids_2); - log('warning', 'Werkgroepen met een einddatum:', $na_n); - $na_i = 0; - while($na_i < $na_n, - // Verkrijg het aantal notulen >= max(datumVanaf,begin dit jaar) en kleiner MIN(datumTotEnMet, einde dit jaar). - $na_row = array\at($na_werkgroepen_ids_2, $na_i); - - $na_werkgroep_id = hash\get($na_row, 'werkgroepId'); - - $na_datumVanaf = hash\get($na_row, 'datumVanaf'); - $na_year_begin = string\concatenate($year, '-01-01'); - ifThenElse($na_datumVanaf > $na_year_begin, - $na_begin = $na_datumVanaf, - $na_begin = $na_year_begin); - - $na_datumTotEnMet = hash\get($na_row, 'datumTotEnMet'); - $na_year_end = string\concatenate($year, '-12-31'); - ifThenElse($na_datumTotEnMet < $na_year_end, - $na_end = $na_datumTotEnMet, - $na_end = $na_year_end); - - log('warning', 'werkgroepid = ', $na_werkgroep_id); - log('warning', 'datum vanaf: ', $na_begin, ', datum einde:', $na_end); - - $na_count = record\countRel('Werkgroep', $na_werkgroep_id, - 'werkgroepverslagen', - 'datum>=', $na_begin, - 'datum<=', $na_end - ); - - $na_werkgroep_verslagen = $na_werkgroep_verslagen + $na_count; - log('warning', 'notulen count=', $na_count, ', werkgroep verslagen=', $na_werkgroep_verslagen); - - $na_i = $na_i + 1; - ); - - log('warning', 'totaal aantal werkgroep verslagen voor ', $year, ' = ', $na_werkgroep_verslagen); - - // Bereken de zooi. - - $na_totaal_werkgroep = number\floor($na_werkgroep_verslagen / $na_werkgroep_div); - ifThen($na_totaal_werkgroep > $na_werkgroep_max, $na_totaal_werkgroep = $na_werkgroep_max); - ); - ); - , - log('error', 'Geen nascholingstotaal voor contact_id ', $contact_id, ' en jaar ', $year); - $na_totaal_dagen = 0; - $na_totaal_medisch = 0; - $na_vrijstelling = 0; - $na_totaal_homeopathie = 0; - $na_totaal_werkgroep = 0; - ); -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bereken de norm & vrijstelling -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$norm_key = $year; -ifThen($na_regiocode == 8, - log('warning', 'Afwijkende norm key'); - $norm_key = string\concatenate($year, '-', $na_regiocode_str); -); -log('warning', 'Regiocode=', $na_regiocode, ', str=', $na_regiocode_str, ', Norm key = ', $norm_key); -$na_dagen_norm_formeel = hash\get(hash\get($na_norm, $norm_key), 'dagen'); -$na_medisch_norm = hash\get(hash\get($na_norm, $norm_key), 'dagenMedisch'); -$na_homeopathie_norm = hash\get(hash\get($na_norm, $norm_key), 'dagenHomeopathie'); - -log('warning', 'nascholingsnorm: jaar: ', $year, ', dagen: ', $na_dagen_norm_formeel, - ', medisch: ', $na_medisch_norm, - ', homeopathie: ', $na_homeopathie_norm, - ', start surplus: ', $na_start_surplus - ); - -// $na_vrijstelling is op zich al bekend, maar misschien is er nog dispensatie of registratie jaar -$na_registration = ($year <= $na_diploma_jr); -$na_examenjaar = false; -ifThenElse($na_dispensatie, - $na_vrijstelling = $na_dagen_norm_formeel; - , - ifThen($na_registration, - //$na_vrijstelling = $na_dagen_norm_formeel; - $na_dagen_norm_formeel = 0; - $na_medisch_norm = 0; - $na_homeopathie_norm = 0; - $na_examenjaar = true; - ); -); - -$na_dagen_norm = $na_dagen_norm_formeel - $na_vrijstelling; - -// Het aantal start dagen surplus kan nooit de norm overschrijden. -// startSurplus wordt alleen bij het 2013 record gebruikt, m.a.w. voor mensen die daarvoor -// al lid waren. In alle andere gevallen is $na_start_surplus gelijk aan 0. -ifThen($na_start_surplus > $na_dagen_norm_formeel, $na_start_surplus = $na_dagen_norm_formeel); - -log('warning', 'dispensatie=', $na_dispensatie, ', regjr=', $na_registration, - ', norm=', $na_dagen_norm, ', start surplus=', $na_start_surplus); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bereken het saldo aan dagen -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -log('warning', 'medisch:', $na_totaal_medisch, ', hom:', $na_totaal_homeopathie, - ', werkgr:', $na_totaal_werkgroep, ', homoverig:', $na_totaal_dagen); - -$na_totaal_alle_dagen = $na_totaal_dagen + $na_totaal_medisch + $na_totaal_homeopathie + $na_totaal_werkgroep; -$na_saldo = $na_totaal_alle_dagen - $na_dagen_norm; -$na_saldo = $na_saldo + $na_start_surplus; - -$na_saldo_homeopathie = $na_totaal_homeopathie - $na_homeopathie_norm; -$na_saldo_medisch = $na_totaal_medisch - $na_medisch_norm; - -log('warning', 'totaal alle:', $na_totaal_alle_dagen, - ', saldo:', $na_saldo, - ', saldo hom:', $na_saldo_homeopathie, - ', saldo medisch:', $na_saldo_medisch); - -log('warning', 'no db update = ', $no_db_update, ', na_id = ', $na_id); -log('warning', 'na_examenjaar = ', $na_examenjaar); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Nascholingstotaal updaten (alleen van belang als we niet al aan het updaten zijn!) -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -ifThen(!$no_db_update && $na_id != '', - log('warning', 'Updaten nascholingstotaal: ', $na_id, ' jaar=', $year); - $oke = record\update('Nascholingstotaal', $na_id, - 'dagen', $na_totaal_dagen, - 'dagenMedisch', $na_totaal_medisch, - 'dagenHomeopathie', $na_totaal_homeopathie, - 'dagenWerkgroep', $na_totaal_werkgroep, - 'dagenTotaal', $na_totaal_alle_dagen, - 'dagenSaldo', $na_saldo, - 'homeopathieSaldo', $na_saldo_homeopathie, - 'medischSaldo', $na_saldo_medisch, - 'dagenFormeleNorm', $na_dagen_norm_formeel, - 'medischFormeleNorm', $na_medisch_norm, - 'homeopathieFormeleNorm', $na_homeopathie_norm, - 'examenjaar', $na_examenjaar - ); - - ifThen(!$oke, log('error', 'Update ging niet goed!')); -); - diff --git a/code pre 2023-10-27/script-bereken-nascholingstotalen.js b/code pre 2023-10-27/script-bereken-nascholingstotalen.js deleted file mode 100644 index 600f79d..0000000 --- a/code pre 2023-10-27/script-bereken-nascholingstotalen.js +++ /dev/null @@ -1,931 +0,0 @@ -//exec last execution: Fri Jan 20 2023 15:56:21 GMT+0100 (Midden-Europese standaardtijd) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Initialisatie -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -log('warning', 'Doorrekenen voor contact ', $contact_id); - -$na_reg_dt = record\attribute('Contact', $contact_id, 'datumRegistratie'); -$na_reg_jr = datetime\year($na_reg_dt); - -$na_methode_1_max_jaar = configGet('berekening-methode-1-tot-en-met'); -$na_methode_1_max_surplus = configGet('berekening-methode-1-max-surplus'); -$na_style_rubric = configGet('nascholingstotaal-rapport-jaar-rubric-style'); -$na_style_dagen = configGet('nascholingstotaal-rapport-jaar-dagen-style'); -$na_style_dagen_inspr = configGet('nascholingstotaal-rapport-jaar-dagen-style-inspr'); -$na_style_nstd_goed = configGet('nascholingstotaal-rapport-jaar-nstd-goed-style'); -$na_style_nstd_goed_report = configGet('nascholingstotaal-rapport-jaar-nstd-goed-report-style'); -$na_style_nstd_tekort = configGet('nascholingstotaal-rapport-jaar-nstd-tekort-style'); -$na_style_nstd_tekort_report = configGet('nascholingstotaal-rapport-jaar-nstd-tekort-report-style'); -$na_style_nstd_nvt = configGet('nascholingstotaal-rapport-jaar-nstd-nvt-style'); -$na_style_bepaald = configGet('nascholingstotaal-rapport-jaar-nstd-bepaald-style'); -$na_style_bepaald_report = configGet('nascholingstotaal-rapport-jaar-nstd-bepaald-report-style'); -$na_style_onbepaald = configGet('nascholingstotaal-rapport-jaar-nstd-onbepaald-style'); -$na_style_onbepaald_report = configGet('nascholingstotaal-rapport-jaar-nstd-onbepaald-report-style'); -$na_style_kop = configGet('nascholingstotaal-rapport-jaar-kop-style'); -$na_style_probleem = configGet('nascholingstotaal-rapport-probleem-style'); -$na_style_waarschuwing = configGet('nascholingstotaal-rapport-waarschuwing-style'); -$na_style_sub_rubric = configGet('nascholingstotaal-rapport-sub-rubriek-style'); - -$na_nascholing_onvoldoende = false; - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Haal eerst alle nascholingstotalen voor een contact op, in volgorde van jaar. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_geen_status_vanaf_jaar = datetime\year(datetime\now()) - 1; - -$na_in_calc_key = string\concatenate('nascholingstotalen-in-berekening-voor', $contact_id); -global\set($na_in_calc_key, true); - -$na_rows = record\fetchManyHash('Nascholingstotaal', - 'id, jaar, dagen, dagenMedisch, dagenHomeopathie, dagenTotaal, medischSaldo, homeopathieSaldo, dagenSaldo, saldoNaCorrectie, dagenWerkgroep, dagenVrijstelling, status, berekeningsUitleg, startSurplus, dagenFormeleNorm, homeopathieFormeleNorm, medischFormeleNorm, examenjaar, handmatig', - 'jaar', 'asc', - 'contactId=', $contact_id, - ); - -$h_surplus = hash\new(); -$h_saldi = hash\new(); -$h_verr = hash\new(); - -$h_surplus_med = hash\new(); -$h_saldi_med = hash\new(); -$h_verr_med = hash\new(); - -$h_surplus_hom = hash\new(); -$h_saldi_hom = hash\new(); -$h_verr_hom = hash\new(); - -$na_n = array\length($na_rows); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Sla alle saldi op -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -log('warning', 'Alle saldi opslaan'); - -$na_i = 0; -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - $na_id = hash\get($na_row, 'id'); - - $na_saldo = hash\get($na_row, 'dagenSaldo'); - $h_saldi = hash\set($h_saldi, $na_id, $na_saldo); - $h_verr = hash\set($h_verr, $na_id, ''); - - $na_saldo_med = hash\get($na_row, 'medischSaldo'); - $h_saldi_med = hash\set($h_saldi_med, $na_id, $na_saldo_med); - $h_verr_med = hash\set($h_verr_med, $na_id, ''); - - $na_saldo_hom = hash\get($na_row, 'homeopathieSaldo'); - $h_saldi_hom = hash\set($h_saldi_hom, $na_id, $na_saldo_hom); - $h_verr_hom = hash\set($h_verr_hom, $na_id, ''); - - $na_i = $na_i + 1; -); - -log('warning', 'Oke, klaar'); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Pas de eenvoudige doorschuif methode toe t/m het gegeven jaar voor methode 1 -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_jaar_max = -1; -$na_i = 0; -$na_surplus = 0; -while($na_i < $na_n && hash\get(array\at($na_rows, $na_i), 'jaar') <= $na_methode_1_max_jaar, - - $na_row = array\at($na_rows, $na_i); - $na_id = hash\get($na_row, 'id'); - - $na_jaar = hash\get($na_row, 'jaar'); - ifThen($na_jaar > $na_jaar_max, $na_jaar_max = $na_jaar); - - $na_verr = hash\get($h_verr, $na_id); - - $na_saldo = hash\get($na_row, 'dagenSaldo'); - $na_start_surplus = hash\get($na_row, 'startSurplus'); - $na_saldo_med = hash\get($na_row, 'medischSaldo'); - $na_saldo_hom = hash\get($na_row, 'homeopathieSaldo'); - $na_examenjaar = hash\get($na_row, 'examenjaar'); - - $na_dg_totaal = hash\get($na_row, 'dagenTotaal'); - $na_dg_med = hash\get($na_row, 'dagenMedisch'); - $na_dg_hom = hash\get($na_row, 'dagenHomeopathie'); - - strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_totaal, 1), "]%%"); - - $na_norm_med = hash\get($na_row, 'medischFormeleNorm'); - - $na_norm_tot = hash\get($na_row, 'dagenFormeleNorm'); - strAdd($na_verr, "[TNorm:][N", number\format($na_norm_tot, 1), "]%%"); - ifThen($na_examenjaar, - strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%"); - ); - - $na_surplus_gemaximeerd = false; - $na_surplus_old = $na_surplus; - $na_surplus = $na_surplus + $na_saldo; - ifThen($na_surplus > $na_methode_1_max_surplus, $na_surplus = $na_methode_1_max_surplus; $na_surplus_gemaximeerd = true); - - $na_surplus_med = $na_saldo_med; - $na_surplus_hom = $na_saldo_hom; - - strAdd($na_verr, "[TSaldo dagen:][N", number\format($na_saldo, 1), "]%%"); - - ifThenElse($na_start_surplus != 0.0, - strAdd($na_verr, "[TResterend Saldo dagen uit voorgaande jaren:][N", number\format($na_start_surplus, 1), "]%%"); - , - strAdd($na_verr, "[TResterend Saldo dagen van ", $na_jaar - 1, ":][N", number\format($na_surplus_old , 1), "]%%"); - ); - - ifThen($na_surplus >= 0, - ifThen($na_surplus_gemaximeerd, - strAdd($na_verr, "[TResterend saldo dagen gemaximaliseerd op:][N", number\format($na_surplus, 1), "]%%"); - ); - ); - - $h_verr = Hash\Set($h_verr, $na_id, $na_verr); - - /*ifThenElse($na_norm_med > 0, - $na_verr = hash\get($h_verr_med, $na_id); - strAdd($na_verr, '[TDagen gevolgd:][N', number\format($na_dg_med, 1), ']%%'); - strAdd($na_verr, '[TNorm:][N', number\format($na_norm_med, 1), ']%%'); - strAdd($na_verr, '[TSaldo dagen:][N', number\format($na_saldo_med, 1), ']%%'); - $h_verr_med = Hash\Set($h_verr_med, $na_id, $na_verr); - , - $h_verr_med = Hash\Set($h_verr_med, $na_id, ''); - );*/ - - $h_verr_hom = Hash\Set($h_verr_hom, $na_id, ''); - $h_surplus = Hash\Set($h_surplus, $na_id, $na_surplus); - $h_surplus_med = Hash\Set($h_surplus_med, $na_id, $na_saldo_med); - $h_surplus_hom = Hash\Set($h_surplus_hom, $na_id, $na_saldo_hom); - - log('warning', 'jaar=', $na_jaar, ', saldo=', $na_saldo, ', surplus=', $na_surplus); - - $na_i = $na_i + 1; -); - -log('warning', 'Door:', $na_i); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Nu wordt het moeilijker. Vanaf dit jaar moeten de drie saldi samen >= 0 zijn voor ieder opeenvolgend stel. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_ii = $na_i; - -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - $na_id = hash\get($na_row, 'id'); - $na_jaar = hash\get($na_row, 'jaar'); - - // Normen bepalen - $na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm'); - $na_norm_med = hash\get($na_row, 'medischFormeleNorm'); - $na_norm_tot = hash\get($na_row, 'dagenFormeleNorm'); - $na_examenjaar = hash\get($na_row, 'examenjaar'); - - // Gevolgde dagen bepalen - $na_dg_werkgroep = hash\get($na_row, 'dagenWerkgroep'); - $na_dg_vrij = hash\get($na_row, 'dagenVrijstelling'); - $na_dg_totaal = hash\get($na_row, 'dagenTotaal'); - $na_dg_hom = hash\get($na_row, 'dagenHomeopathie'); - $na_dg_med = hash\get($na_row, 'dagenMedisch'); - $na_dg_ovg = hash\get($na_row, 'dagen'); - - log('warning', 'na_jaar = ', $na_jaar, ' - na_dg_totaal = ', $na_dg_totaal); - - $na_verr = hash\get($h_verr_hom, $na_id); - $saldo = hash\get($h_saldi_hom, $na_id); - - strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_hom, 1), "]%%"); - strAdd($na_verr, "[TNorm:][N", number\format($na_norm_hom, 1), "]%%"); - ifThen($na_examenjaar, - strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%"); - ); - strAdd($na_verr, "[TSaldo dagen:][N", number\format($saldo, 1), "]%%"); - - $h_verr_hom = hash\set($h_verr_hom, $na_id, $na_verr); - - $na_verr = hash\get($h_verr_med, $na_id); - $saldo = hash\get($h_saldi_med, $na_id); - - strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_med, 1), "]%%"); - strAdd($na_verr, "[TNorm:][N", number\format($na_norm_med, 1), "]%%"); - ifThen($na_examenjaar, - strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%"); - ); - strAdd($na_verr, "[TSaldo dagen:][N", number\format($saldo, 1), "]%%"); - - $h_verr_med = hash\set($h_verr_med, $na_id, $na_verr); - - $na_verr = hash\get($h_verr, $na_id); - $saldo = hash\get($h_saldi, $na_id); - - strAdd($na_verr, "[TDagen gevolgd:][N", number\format($na_dg_totaal, 1), "]%%"); - - strAdd($na_verr, "[IDagen voor klassieke homeopathie:I][NI", number\format($na_dg_hom, 1), "]%%"); - strAdd($na_verr, "[IDagen voor medisch:I][NI", number\format($na_dg_med, 1), "]%%"); - strAdd($na_verr, "[IDagen voor homeopathie overig:I][NI", number\format($na_dg_ovg, 1), "]%%"); - strAdd($na_verr, "[IDagen voor werkgroep deelname:I][NI", number\format($na_dg_werkgroep, 1), "]%%"); - ifThen($na_dg_vrij > 0, - strAdd($na_verr, "[TDagen vrijstelling:][N", number\format($na_dg_vrij, 1), "]%%"); - ); - strAdd($na_verr, "[TNorm:][N", number\format($na_norm_tot, 1), "]%%"); - ifThen($na_examenjaar, - strAdd($na_verr, "[RIn het examenjaar of daarvoor hoeft niet nageschoold te worden.R]%%"); - ); - strAdd($na_verr, "[TSaldo dagen:][N", number\format($saldo, 1), "]%%"); - - $h_verr = hash\set($h_verr, $na_id, $na_verr); - - // En de volgende rij - $na_i = $na_i + 1; -); - -$na_i = $na_ii; -while($na_i < $na_n, - - $na_row_prev = null; - ifThen($na_i > 0, $na_row_prev = array\at($na_rows, $na_i - 1);$na_id_prev = hash\get($na_row_prev, 'id');); - $na_row_next = null; - ifThen($na_i < ($na_n - 1), $na_row_next = array\at($na_rows, $na_i + 1);$na_id_next = hash\get($na_row_next, 'id');); - - $na_row = array\at($na_rows, $na_i); - $na_id = hash\get($na_row, 'id'); - $na_jaar = hash\get($na_row, 'jaar'); - ifThen($na_jaar > $na_jaar_max, $na_jaar_max = $na_jaar); - - // Normen bepalen - $na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm'); - $na_norm_med = hash\get($na_row, 'medischFormeleNorm'); - $na_norm_tot = hash\get($na_row, 'dagenFormeleNorm'); - $na_examenjaar = hash\get($na_row, 'examenjaar'); - - // Gevolgde dagen bepalen - $na_dg_werkgroep = hash\get($na_row, 'dagenWerkgroep'); - $na_dg_vrij = hash\get($na_row, 'dagenVrijstelling'); - $na_dg_totaal = hash\get($na_row, 'dagenTotaal'); - $na_dg_hom = hash\get($na_row, 'dagenHomeopathie'); - $na_dg_med = hash\get($na_row, 'dagenMedisch'); - $na_dg_ovg = hash\get($na_row, 'dagen'); - - // Check of je het voorgaande surplus en evt. het opvolgende saldo kunt gebruiken om - // te compenseren op het huidige saldo, indien dat noodzakelijk is. - // Als het huidige saldo negatief is, moet dit worden gecompenseerd vanuit het voorgaande surplus en/of het opvolgende saldo. - // Als je het negatieve saldo van medisch of van klassieke homeopathie ophoogt, dan - // hoog je daarmee ook het totaal aantal dagen op. Dus die correctie moet je dan ook bij het totaal toepassen. - - // Let op. Het aantal dagen dat wordt gecompenseerd mag niet het totaal aantal dagen van de norm overschrijden. - // Dus, als het totaal aantal dagen 5 is en de norm is 4, dan kan ik maximaal 1 dag compenseren, ook al heb ik misschien - // van zowel medisch als homeopathie 1 dag over, dus in totaal 2 dagen. - - $na_totaal_extra = 0; - - // Eerst berekenen we de klassieke homeopathie. - // $h_saldi_hom, $h_surplus_hom, $h_verr_hom - - log('warning', 'Berekenen Klassieke Homeopathie:'); - ifThenElse($na_row_prev, - $prev_surplus = hash\get($h_surplus_hom, $na_id_prev); - $prev_surplus_tot = hash\get($h_surplus, $na_id_prev); - , - $prev_surplus = 0; - $prev_surplus_tot = 0; - ); - ifThenElse($na_row_next, - $next_saldo = hash\get($h_saldi_hom, $na_id_next); - $next_saldo_tot = hash\get($h_saldi, $na_id_next); - , - $next_saldo = 0; - $next_saldo_tot = 0; - ); - $saldo = hash\get($h_saldi_hom, $na_id); - $na_verr = hash\get($h_verr_hom, $na_id); - - $na_surplus = $saldo; - - // Kijk of je gebruik kunt maken van het surplus van het voorgaande jaar, tot maximaal de norm. - ifThenElse($prev_surplus > 0 && $prev_surplus_tot > 0, - $na_verr_a = hash\get($h_verr_hom, $na_id_prev); - $na_verr_t = hash\get($h_verr, $na_id_prev); - $na_verr_tot = hash\get($h_verr, $na_id); - - ifThenElse($prev_surplus > $prev_surplus_tot, - $max_compensatie = $prev_surplus_tot; - $na_uitleg_extra = " (totaal < kl. homeopathie)"; - , - $max_compensatie = $prev_surplus; - $na_uitleg_extra = ""; - ); - $na_uitleg = string\concatenate("Aantal dagen surplus kl. homeopathie overgenomen uit ", toString($na_jaar - 1)); - $na_uitleg_a = string\concatenate("Aantal dagen surplus kl. homeopathie doorgeschoven naar ", toString($na_jaar)); - strAdd($na_uitleg, $na_uitleg_extra); - strAdd($na_uitleg_a, $na_uitleg_extra); - - ifThen($max_compensatie > $na_norm_hom, - $max_compensatie = $na_norm_hom; - $na_norm_uitl = string\concatenate(", gemaximaliseerd op de norm van ", number\format($na_norm_hom, 1)); - strAdd($na_uitleg, $na_norm_uitl); - strAdd($na_uitleg_a, $na_norm_uitl); - ); - - strAdd($na_verr, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_tot, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_a, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_t, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%"); - - $prev_surplus = $prev_surplus - $max_compensatie; - $prev_surplus_tot = $prev_surplus_tot - $max_compensatie; - $na_surplus = $na_surplus + $max_compensatie; - $na_totaal_extra = $na_totaal_extra + $max_compensatie; - - $h_verr_hom = hash\set($h_verr_hom, $na_id_prev, $na_verr_a); - $h_verr = hash\set($h_verr, $na_id_prev, $na_verr_t); - $h_verr = hash\set($h_verr, $na_id, $na_verr_tot); - , - ifThen($prev_surplus > 0, - strAdd($na_verr, "[EHoewel het saldo kl. homeopathie dagen in ", toString($na_jaar - 1), " toereikend is", - ", kan er niet doogeschoven worden, omdat het totaal saldo van ", toString($na_jaar - 1), " <= 0 isE]%%"); - ); - ); - - ifThenElse($na_surplus < 0, - // Als het surplus daarna nog < 0 is (een tekort), kijk dan of je kunt gebruik maken van het saldo van opvolgend jaar. - $na_verr_a = hash\get($h_verr_hom, $na_id_next); - $na_verr_t = hash\get($h_verr, $na_id_next); - // Het huidig surplus klassieke homeopathie voldoet niet. - // Als er nu een huidig totaal surplus is, en het saldo klassieke homeopathie van het opvolgende jaar - // is voldoende en het totaal saldo van het opvolgende jaar + het totaal surplus van het huidige jaar is voldoende - // dan kan er nog wat. - - ifThenElse($next_saldo > ($next_saldo_tot + $na_totaal_extra), - $max_compensatie = ($next_saldo_tot + $na_totaal_extra), - $max_compensatie = $next_saldo - ); - - ifThen($max_compensatie > 0, - ifThenElse(($max_compensatie + $na_surplus) >= 0, - strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " klassieke homeopathie te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - $next_saldo = $next_saldo + $na_surplus; - $next_saldo_tot = $next_saldo_tot + $na_surplus; - $na_surplus = 0; - , - strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " klassieke homeopathie te compenseren:I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format($max_compensatie, 1), "]%%"); - $na_surplus = $na_surplus + $max_compensatie; - $next_saldo = $next_saldo - $max_compensatie; - $next_saldo_tot = $next_saldo_tot - $max_compensatie; - ); - , - ifThen($next_saldo > ($next_saldo_tot + $na_totaal_extra) && $next_saldo > 0, - strAdd($na_verr, "[EHoewel het saldo kl. homeopathie dagen in ", toString($na_jaar + 1), " toereikend is", - ", kan er niet gecompenseerd worden, omdat het totaal saldo van ", toString($na_jaar + 1), " <= 0 isE]%%"); - ); - ); - $h_verr_hom = hash\set($h_verr_hom, $na_id_next, $na_verr_a); - $h_verr = hash\set($h_verr, $na_id_next, $na_verr_t); - ); - - // Nu de saldi opslaan en surplus opslaan - ifThen($na_row_prev, - $h_surplus_hom = hash\set($h_surplus_hom, $na_id_prev, $prev_surplus); - $h_surplus = hash\set($h_surplus, $na_id_prev, $prev_surplus_tot); - ); - ifThen($na_row_next, - $h_saldi_hom = hash\set($h_saldi_hom, $na_id_next, $next_saldo); - $h_saldi = hash\set($h_saldi, $na_id_next, $next_saldo_tot); - ); - $h_surplus_hom = Hash\Set($h_surplus_hom, $na_id, $na_surplus); - $h_verr_hom = Hash\Set($h_verr_hom, $na_id, $na_verr); - $na_end_hom = $na_surplus; - - // Daarna berekenen we het medische gedeelte - // $h_saldi_med, $h_surplus_med, $h_verr_med - - log('warning', 'Berekenen Medische Dagen:'); - ifThenElse($na_row_prev, - $prev_surplus = hash\get($h_surplus_med, $na_id_prev); - $prev_surplus_tot = hash\get($h_surplus, $na_id_prev); - , - $prev_surplus = 0; - $prev_surplus_tot = 0; - ); - ifThenElse($na_row_next, - $next_saldo = hash\get($h_saldi_med, $na_id_next); - $next_saldo_tot = hash\get($h_saldi, $na_id_next); - , - $next_saldo = 0; - $next_saldo_tot = 0; - ); - $saldo = hash\get($h_saldi_med, $na_id); - $na_verr = hash\get($h_verr_med, $na_id); - - $na_surplus = $saldo; - log('warning', 'jaar = ', $na_jaar, ' - surplus medisch = ', $na_surplus); - - // Kijk of je gebruik kunt maken van het surplus van het voorgaande jaar, tot maximaal de norm. - ifThenElse($prev_surplus > 0 && $prev_surplus_tot > 0, - $na_verr_a = hash\get($h_verr_med, $na_id_prev); - $na_verr_t = hash\get($h_verr, $na_id_prev); - $na_verr_tot = hash\get($h_verr, $na_id); - - ifThenElse($prev_surplus > $prev_surplus_tot, - $max_compensatie = $prev_surplus_tot; - $na_uitleg_extra = " (totaal < medisch)"; - , - $max_compensatie = $prev_surplus; - $na_uitleg_extra = ""; - ); - $na_uitleg = string\concatenate("Aantal dagen surplus medisch overgenomen uit ", toString($na_jaar - 1)); - $na_uitleg_a = string\concatenate("Aantal dagen surplus medisch doorgeschoven naar ", toString($na_jaar)); - strAdd($na_uitleg, $na_uitleg_extra); - strAdd($na_uitleg_a, $na_uitleg_extra); - - ifThen($max_compensatie > $na_norm_med, - $max_compensatie = $na_norm_med; - $na_norm_uitl = string\concatenate(", gemaximaliseerd op de norm van ", number\format($na_norm_med, 1)); - strAdd($na_uitleg, $na_norm_uitl); - strAdd($na_uitleg_a, $na_norm_uitl); - ); - - strAdd($na_verr, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_tot, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_a, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_t, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%"); - - $prev_surplus = $prev_surplus - $max_compensatie; - $prev_surplus_tot = $prev_surplus_tot - $max_compensatie; - $na_surplus = $na_surplus + $max_compensatie; - $na_totaal_extra = $na_totaal_extra + $max_compensatie; - - $h_verr_med = hash\set($h_verr_med, $na_id_prev, $na_verr_a); - $h_verr = hash\set($h_verr, $na_id_prev, $na_verr_t); - $h_verr = hash\set($h_verr, $na_id, $na_verr_tot); - , - ifThen($prev_surplus > 0, - strAdd($na_verr, "[EHoewel het saldo medisch dagen in ", toString($na_jaar - 1), " toereikend is", - ", kan er niet doorgeschoven worden, omdat het totaal saldo van ", toString($na_jaar - 1), " <= 0 isE]%%"); - ); - ); - - - ifThen($na_surplus < 0, - // Als het surplus daarna nog < 0 is (een tekort), kijk dan of je kunt gebruik maken van het saldo van opvolgend jaar. - $na_verr_a = hash\get($h_verr_med, $na_id_next); - $na_verr_t = hash\get($h_verr, $na_id_next); - - ifThenElse($next_saldo > ($next_saldo_tot + $na_totaal_extra), - $max_compensatie = ($next_saldo_tot + $na_totaal_extra), - $max_compensatie = $next_saldo - ); - - strAdd($na_verr, "[Enext-saldo = ", $next_saldo, ", next-saldo-tot = ", $next_saldo_tot, ", max-compensatie = ", $max_compensatie, "E]%%"); - strAdd($na_verr, "[Ena_totaal_extra = ", $na_totaal_extra, "E]%%"); - - ifThenElse($max_compensatie > 0, - ifThenElse(($max_compensatie + $na_surplus) >= 0, - strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " medisch te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - $next_saldo = $next_saldo + $na_surplus; - $next_saldo_tot = $next_saldo_tot + $na_surplus; - $na_surplus = 0; - , - strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_t, "[IAantal dagen gebruikt om voor ", toString($na_jaar), " medisch te compenseren:I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format($max_compensatie, 1), "]%%"); - $na_surplus = $na_surplus + $max_compensatie; - $next_saldo = $next_saldo - $max_compensatie; - $next_saldo_tot = $next_saldo_tot - $max_compensatie; - ); - , - ifThen($next_saldo > ($next_saldo_tot + $na_totaal_extra) && $next_saldo > 0, - strAdd($na_verr, "[EHoewel het saldo medische dagen in ", toString($na_jaar + 1), " toereikend is", - ", kan er niet gecompenseerd worden, omdat het totaal saldo van ", toString($na_jaar + 1), " <= 0 isE]%%"); - ); - ); - $h_verr_med = hash\set($h_verr_med, $na_id_next, $na_verr_a); - $h_verr = hash\set($h_verr, $na_id_next, $na_verr_t); - ); - - // Nu de saldi opslaan en surplus opslaan - ifThen($na_row_prev, - $h_surplus_med = hash\set($h_surplus_med, $na_id_prev, $prev_surplus); - $h_surplus = hash\set($h_surplus, $na_id_prev, $prev_surplus_tot); - ); - ifThen($na_row_next, - $h_saldi_med = hash\set($h_saldi_med, $na_id_next, $next_saldo); - $h_saldi = hash\set($h_saldi, $na_id_next, $next_saldo_tot); - ); - - log('warning', 'jaar = ', $na_jaar, ' - surplus medisch berekend = ', $na_surplus); - - $h_surplus_med = Hash\Set($h_surplus_med, $na_id, $na_surplus); - $h_verr_med = Hash\Set($h_verr_med, $na_id, $na_verr); - $na_end_med = $na_surplus; - - // En nu berekenen we het totaal. Dat is en blijft een lastige - // $h_saldi, $h_surplus, $h_verr - - log('warning', 'Berekenen Totaal Dagen:'); - ifThenElse($na_row_prev, $prev_surplus = hash\get($h_surplus, hash\get($na_row_prev, 'id')), $prev_surplus = 0); - ifThenElse($na_row_next, $next_saldo = hash\get($h_saldi, hash\get($na_row_next, 'id')), $next_saldo = 0); - $saldo = hash\get($h_saldi, $na_id); - $na_verr = hash\get($h_verr, $na_id); - - $na_surplus = $saldo; - - // Kijk of je gebruik kunt maken van het surplus van het voorgaande jaar, tot maximaal de norm. - ifThen($prev_surplus > 0, - $na_verr_a = hash\get($h_verr, $na_id_prev); - - $max_compensatie = $prev_surplus; - $na_uitleg = string\concatenate("Aantal aantal dagen surplus overgenomen uit ", toString($na_jaar - 1)); - $na_uitleg_a = string\concatenate("Aantal dagen surplus doorgeschoven naar ", toString($na_jaar)); - - ifThen(($na_totaal_extra + $max_compensatie) > $na_norm_tot, - $max_compensatie = $na_norm_tot - $na_totaal_extra; - ifThenElse($na_totaal_extra > 0, - $norm_uitleg = string\concatenate(", incl. kl. hom. en medisch gemaximaliseerd op de norm van ", number\format($na_norm_tot, 1)); - , - $norm_uitleg = string\concatenate(", gemaximaliseerd op de norm van ", number\format($na_norm_tot, 1)); - ); - - strAdd($na_uitleg, $norm_uitleg); - strAdd($na_uitleg_a, $norm_uitleg); - ); - - strAdd($na_verr, "[I", $na_uitleg, ":I][NI", number\format($max_compensatie, 1), "]%%"); - strAdd($na_verr_a, "[I", $na_uitleg_a, ":I][NI", number\format($max_compensatie, 1), "]%%"); - - $prev_surplus = $prev_surplus - $max_compensatie; - $na_surplus = $na_surplus + $max_compensatie + $na_totaal_extra; - - $h_verr = hash\set($h_verr, $na_id_prev, $na_verr_a); - ); - - ifThen($na_surplus < 0, - // Als het surplus daarna nog < 0 is (een tekort), kijk dan of je kunt gebruik maken van het saldo van opvolgend jaar. - $na_verr_a = hash\get($h_verr, $na_id_next); - ifThen($next_saldo > 0, - ifThenElse(($next_saldo + $na_surplus) >= 0, - strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format(-1 * $na_surplus, 1), "]%%"); - $next_saldo = $next_saldo + $na_surplus; - $na_surplus = 0; - , - strAdd($na_verr_a, "[IAantal dagen gebruikt om ", toString($na_jaar), " te compenseren:I][NI", number\format($next_saldo, 1), "]%%"); - strAdd($na_verr, "[IGecompenseerd met aantal dagen uit ", toString($na_jaar + 1), ":I][NI", number\format($next_saldo, 1), "]%%"); - $na_surplus = $na_surplus + $next_saldo; - $next_saldo = 0; - ); - ); - $h_verr = hash\set($h_verr, $na_id_next, $na_verr_a); - ); - - // Nu de saldi opslaan en surplus opslaan - ifThen($na_row_prev, $h_surplus = hash\set($h_surplus, $na_id_prev, $prev_surplus)); - ifThen($na_row_next, $h_saldi = hash\set($h_saldi, $na_id_next, $next_saldo)); - - $h_surplus = Hash\Set($h_surplus, $na_id, $na_surplus); - $h_verr = Hash\Set($h_verr, $na_id, $na_verr); - - // En de volgende rij - $na_i = $na_i + 1; -); - -// Het resterend saldo moet je voor alle jaren berekenen. -$na_i = 0; -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - $na_id = hash\get($na_row, 'id'); - $na_jaar = hash\get($na_row, 'jaar'); - - // Normen bepalen - $na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm'); - $na_norm_med = hash\get($na_row, 'medischFormeleNorm'); - $na_norm_tot = hash\get($na_row, 'dagenFormeleNorm'); - $na_examenjaar = hash\get($na_row, 'examenjaar'); - - // Surplus bepalen - $na_surplus_hom = hash\get($h_surplus_hom, $na_id); - $na_surplus_med = hash\get($h_surplus_med, $na_id); - $na_surplus = hash\get($h_surplus, $na_id); - ifThenElse($na_jaar > $na_methode_1_max_jaar, - $na_end_med = $na_surplus_med; - $na_end_hom = $na_surplus_hom; - , - $na_end_med = 0; - $na_end_hom = 0; - ); - - // Resultaten uitvoeren - $na_verr = hash\get($h_verr_hom, $na_id); - - ifThen($na_jaar > $na_methode_1_max_jaar, - // Homeopathie - ifThen($na_norm_hom > 0, - ifThen($na_surplus_hom < 0, - ifThenElse($na_jaar == $na_jaar_max, - strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), "E]%%"); - , - strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), " en/of ", toString($na_jaar + 1), "E]%%"); - ); - ); - strAdd($na_verr, "[TResterend saldo dagen:][N", number\format($na_surplus_hom, 1), "]%%"); - - ifThenElse($na_surplus_hom < 0, - $na_verr = string\concatenate("[OKlassieke Homeopathie onvoldoendeO]%%", $na_verr); - , - $na_verr = string\concatenate("[VKlassieke Homeopathie voldoendeV]%%", $na_verr); - ); - - $h_verr_hom = Hash\Set($h_verr_hom, $na_id, $na_verr); - ); - - // Medisch - ifThen($na_norm_med > 0, - $na_verr = hash\get($h_verr_med, $na_id); - - ifThen($na_surplus_med < 0, - ifThenElse($na_jaar == $na_jaar_max, - strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), "E]%%"); - , - strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), " en/of ", toString($na_jaar + 1), "E]%%"); - ); - ); - strAdd($na_verr, "[TResterend saldo dagen:][N", number\format($na_surplus_med, 1), "]%%"); - - ifThenElse($na_surplus_med < 0, - $na_verr = string\concatenate("[OMedisch onvoldoendeO]%%", $na_verr); - , - $na_verr = string\concatenate("[VMedisch voldoendeV]%%", $na_verr); - ); - - $h_verr_med = Hash\Set($h_verr_med, $na_id, $na_verr); - ); - ); - - // Totalen - $na_verr = hash\get($h_verr, $na_id); - - ifThen($na_surplus < 0, - ifThenElse($na_jaar == $na_jaar_max, - strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), "E]%%"); - , - strAdd($na_verr, "[EHet tekort kan niet (volledig) worden gecompenseerd met ", toString($na_jaar - 1), " en/of ", toString($na_jaar + 1), "E]%%"); - ); - ); - strAdd($na_verr, "[TResterend saldo dagen:][N", number\format($na_surplus, 1), "]%%"); - - ifThenElse($na_surplus < 0 || $na_end_med < 0 || $na_end_hom < 0, - $na_verr = string\concatenate("[OTotaal onvoldoendeO]%%", $na_verr); - ifThen($na_surplus >= 0.0, - ifThen($na_end_hom < 0 , - strAdd($na_verr, "[WAantal dagen resterend tekort Klassieke Homeopathie:W][N", number\format(-1 * $na_end_hom, 1), "]%%"); - ); - ifThen($na_end_med < 0, - strAdd($na_verr, "[WAantal dagen resterend tekort Medisch:W][N", number\format(-1 * $na_end_med, 1), "]%%"); - ); - ); - , - $na_verr = string\concatenate("[VTotaal voldoendeV]%%", $na_verr); - ); - - $h_verr = Hash\Set($h_verr, $na_id, $na_verr); - - // En de volgende rij - $na_i = $na_i + 1; -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// En nu slaan we de boel gewoon op in de nascholingstotalen. Nou, was dat nou moeilijk? -// En bepaal en passent ook even de bijbehorende rapportage voor -// - Dashboard -// - Tekst -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_i = 0; -$na_jaar_voorlopig = $na_jaar_max - 2; - -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - - $na_id = hash\get($na_row, 'id'); - $na_jaar = hash\get($na_row, 'jaar'); - - // Normen bepalen - $na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm'); - $na_norm_med = hash\get($na_row, 'medischFormeleNorm'); - $na_norm_tot = hash\get($na_row, 'dagenFormeleNorm'); - $na_examenjaar = hash\get($na_row, 'examenjaar'); - - // Ophalen surplus waardes voor nascholingstotaal - $na_surplus = hash\get($h_surplus, $na_id); - $na_surplus_med = hash\get($h_surplus_med, $na_id); - $na_surplus_hom = hash\get($h_surplus_hom, $na_id); - - // Ophalen totalen - $na_dg_hom = hash\get($na_row, 'dagenHomeopathie'); - $na_dg_med = hash\get($na_row, 'dagenMedisch'); - $na_dg_ovg = hash\get($na_row, 'dagen'); - $na_dg_werkgroep = hash\get($na_row, 'dagenWerkgroep'); - $na_dg_vrij = hash\get($na_row, 'dagenVrijstelling'); - $na_saldo = hash\get($na_row, 'dagenSaldo'); - $na_hand = hash\get($na_row, 'handmatig'); - - // Berekenen dashboard waarde op basis van de surplus waardes - $na_dashboard = ""; - $na_onvoldoende = false; - - $na_script = string\concatenate( - '$na_surpl_k = toInt($na_surpl * 1000);', - '$na_surpl_i = toInt($na_surpl) * 1000;', - 'ifThenElse($na_surpl_k == $na_surpl_i, $na_surpl_pos = 0, $na_surpl_pos = 1);', - 'ifThenElse($na_surpl_i == 1000, $na_dg = "dag", $na_dg = "dagen");', - 'ifThenElse($na_surpl >= 0, $na_surpl_f = number\format($na_surpl, $na_surpl_pos), $na_surpl_f = number\format(-1 * $na_surpl, $na_surpl_pos));', - 'ifThenElse($na_surpl >= 0, ', - ' ifThenElse($na_onvoldoende, ', - ' $na_dashb = string\concatenate($na_surpl_lbl, " onvoldoende");', - ' $na_class = "tekort";', - ' ,', - ' ifThenElse($na_surpl_i == 0, ', - ' $na_dashb = string\concatenate($na_surpl_lbl, " voldoende");', - ' ,', - ' $na_dashb = string\concatenate($na_surpl_lbl, " surplus: ", $na_surpl_f, " ", $na_dg);', - ' );', - ' $na_class = "goed";', - ' );', - ',', - ' $na_dashb = string\concatenate($na_surpl_lbl, " tekort: ", $na_surpl_f, " ", $na_dg);', - ' $na_class = "tekort";', - ');', - ); - - //log('warning', 'na_jaar_voorlopig = ', $na_jaar_voorlopig, ', na_jaar = ', $na_jaar); - - ifThenElse($na_jaar > $na_jaar_voorlopig, - $na_bepaald = string\concatenate('Voorlopig resultaat'); - $na_bep_rep = string\concatenate('Voorlopig resultaat'); - , - $na_bepaald = string\concatenate('Definitief resultaat'); - $na_bep_rep = string\concatenate('Definitief resultaat'); - ); - - $na_surpl = $na_surplus_hom; - $na_surpl_lbl = "Kl. Homeopathie"; - Exec($na_script); - ifThenElse($na_jaar <= $na_methode_1_max_jaar, - $na_dashb_hom = string\concatenate('', $na_dashb, ''); - , - ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort); - $na_dashb_hom = string\concatenate('', $na_dashb, ''); - ); - $na_dashboard = string\concatenate($na_dashboard, $na_dashb_hom); - - $na_surpl = $na_surplus_med; - $na_surpl_lbl = "Medisch"; - Exec($na_script); - ifThenElse($na_jaar <= $na_methode_1_max_jaar, - $na_dashb_med = string\concatenate('', $na_dashb, ''); - , - ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort); - $na_dashb_med = string\concatenate('', $na_dashb, ''); - ); - $na_dashboard = string\concatenate($na_dashboard, $na_dashb_med); - - ifThenElse($na_jaar > $na_methode_1_max_jaar, - $na_end_med = $na_surplus_med; - $na_end_hom = $na_surplus_hom; - , - $na_end_med = 0; - $na_end_hom = 0; - ); - - ifThen($na_end_med < 0 || $na_end_hom < 0, - $na_onvoldoende = true; - ); - - $na_surpl = $na_surplus; - $na_surpl_lbl = "Totaal"; - Exec($na_script); - - ifThenElse($na_class == 'goed', $na_style = $na_style_nstd_goed, $na_style = $na_style_nstd_tekort); - $na_dashb = string\concatenate('', $na_dashb, ''); - $na_dashboard = string\concatenate($na_dashboard, $na_dashb); - - $na_dashboard = string\concatenate($na_bepaald, $na_dashboard); - - $na_hand_check = ' '; - ifThen($na_hand, $na_hand_check=''); - - $na_dashboard_id = string\concatenate('dashboard_', $na_id); - $na_dashboard = string\concatenate($na_dashboard, - '' - ); - $na_dashboard = string\concatenate($na_dashboard, - '', - ''); - $na_dashboard = string\concatenate($na_dashboard, - ''); - - // Maak nu een rapport over de getallen. Kijk hoe het is bepaald. - //dagen, dagenMedisch, dagenHomeopathie - - - // Maak rapport op - $na_report = configGet('nascholingstotaal-rapport-jaar'); - $na_report = string\replace($na_report, '%jaar%', toString($na_jaar)); - $na_report = string\replace($na_report, '%bepaald%', $na_bep_rep); - - $na_verr_hom = hash\get($h_verr_hom, $na_id); - $na_verr_med = hash\get($h_verr_med, $na_id); - $na_verr_tot = hash\get($h_verr, $na_id); - $na_report = string\replace($na_report, '%hom%', $na_verr_hom); - $na_report = string\replace($na_report, '%med%', $na_verr_med); - $na_report = string\replace($na_report, '%tot%', $na_verr_tot); - - $na_report = string\replace($na_report, '[T', string\concatenate('')); - $na_report = string\replace($na_report, '[S', ''); - $na_report = string\replace($na_report, '[NI', string\concatenate('')); - $na_report = string\replace($na_report, '[N', string\concatenate('')); - $na_report = string\replace($na_report, '[V', string\concatenate('')); - $na_report = string\replace($na_report, '[O', string\concatenate('')); - $na_report = string\replace($na_report, '[E', string\concatenate('')); - $na_report = string\replace($na_report, '[W', string\concatenate('')); - $na_report = string\replace($na_report, '[I', string\concatenate('')); - $na_report = string\replace($na_report, '[R', string\concatenate('')); - $na_report = string\replace($na_report, "O]", ""); - $na_report = string\replace($na_report, "V]", ""); - $na_report = string\replace($na_report, "E]", ""); - $na_report = string\replace($na_report, "W]", ""); - $na_report = string\replace($na_report, "I]", ""); - $na_report = string\replace($na_report, "R]", ""); - $na_report = string\replace($na_report, "]", ""); - $na_report = string\replace($na_report, '%%', '\n'); - - log('warning', 'Updating record voor jaar:', $na_jaar); - - // Updaten van record - record\update('Nascholingstotaal', $na_id, - 'surplus', $na_surplus, - 'surplusMedisch', $na_surplus_med, - 'surplusHomeopathie', $na_surplus_hom, - 'dashboard', $na_dashboard, - 'berekeningsuitleg', $na_report - ); - - log('warning', 'record updated, increasing na_i:', $na_i, ' with 1'); - - $na_i = $na_i + 1; -); - - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Klaar. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -global\unset($na_in_calc_key, true); diff --git a/code pre 2023-10-27/script-lees-nascholingsnorm-hash.js b/code pre 2023-10-27/script-lees-nascholingsnorm-hash.js deleted file mode 100644 index b45f47a..0000000 --- a/code pre 2023-10-27/script-lees-nascholingsnorm-hash.js +++ /dev/null @@ -1,32 +0,0 @@ -//exec last execution: Mon Jul 13 2020 17:57:38 GMT+0200 (Midden-Europese zomertijd) - -$sln_rows = record\fetchManyHash('Nascholingsnorm', 'id, jaar, dagen, dagenMedisch, dagenHomeopathie, regiocode', 'createdAt', 'asc'); - -$sln_i = 0; -$sln_n = array\length($sln_rows); -$sln_hash = hash\new(); -$sln_hash_id = hash\new(); - -while($sln_i < $sln_n, - $sln_row = array\at($sln_rows, $sln_i); - - $jaar = hash\get($sln_row, 'jaar'); - $id = hash\get($sln_row, 'id'); - $regiocode = hash\get($sln_row, 'regiocode'); - $jaar = $jaar + 0; - - $key = $jaar; - ifThen($regiocode != '-', - $key = string\concatenate($jaar, '-', $regiocode); - ); - - $sln_hash = hash\set($sln_hash, $key, $sln_row); - $sln_hash_id = hash\set($sln_hash_id, $id, $sln_row); - - $sln_i = $sln_i + 1; -); - -global\set('nascholingsnorm-hash', $sln_hash); -global\set('nascholingsnorm-hash-by-id', $sln_hash_id); - -logAdd(log, '#nascholingsnormen gelezen: ', $sln_n); diff --git a/code-current/Bereken totaal voor één lid.js b/code-current/Bereken totaal voor één lid.js deleted file mode 100644 index f268ace..0000000 --- a/code-current/Bereken totaal voor één lid.js +++ /dev/null @@ -1,44 +0,0 @@ -//exec last execution: Thu Nov 09 2023 14:00:49 GMT+0100 (Midden-Europese standaardtijd) - -$me = Entity\This(); - -logAdd(log); - -logAdd(log, 'info', 'Ophalen naberekeningsscript voor één jaar'); -$jaar_calc_script = configGet('script-bereken-nascholingstotaal-voor-jaar'); - -logAdd(log, 'info', 'Ophalen naberekeningsscript voor de jaren'); -$jaren_calc_script = configGet('script-bereken-nascholingstotalen'); - -logAdd(log, 'info', 'Leden ophalen bij dit script'); -$contacts = Entity\GetRelated($me, 'contacts', 1000, 'lidnummer', 'asc'); -$n = Array\Length($contacts); -logAdd(log, 'info', $n, ' Leden'); - -$i = 0; -while($i < $n, - $contact = array\at($contacts, $i); - $contact_id = Attr($contact, 'id'); - - logAdd(log, 'warning', 'Lid: ', Attr($contact, 'lidnummer'), ' - ', Attr($contact, 'name')); - - logAdd(log, 'Ophalen nascholingstotalen'); - $nascholingstotalen = Entity\GetRelated($contact, 'nascholingstotalen', 1000, 'jaar', 'asc'); - logAdd(log, 'opgehaald'); - - $m = array\length($nascholingstotalen); - logAdd(log, 'info', ' #nascholingstotalen: ', $m); - $j = 0; - while($j < $m, - $nascholingstotaal = array\at($nascholingstotalen, $j); - $year = Attr($nascholingstotaal, 'jaar'); - logAdd(log, 'info', ' Herberekenen jaar: ', $year); - Exec($jaar_calc_script); - $j = $j + 1; - ); - - logAdd(log, 'info', 'Totalen herberekenen'); - Exec($jaren_calc_script); - - $i = $i + 1; -); diff --git a/code-current/script leden met onvoldoende nascholing.js b/code-current/script leden met onvoldoende nascholing.js deleted file mode 100644 index 081f2d7..0000000 --- a/code-current/script leden met onvoldoende nascholing.js +++ /dev/null @@ -1,124 +0,0 @@ -// last execution: Mon Nov 06 2023 10:21:31 GMT+0100 (Midden-Europese standaardtijd) - -$par_nascholingsjaar=2021; -$par_open_lid_in_nieuwe_tab=true; -$par_aantal_rijen_op_een_pagina=21; - -$p_page_len = $par_aantal_rijen_op_een_pagina; - -logAdd(log); - -html = ''; -$h = ''; - -logAdd(log, "Controle nascholingsvereisten voor jaar ", $par_nascholingsjaar); -$leden = Record\FetchManyHash('Contact', - 'id, firstName, middleName, lastName, name, emailAddress, regiocode, dispensatie, lidnummer, datumRegistratie', - 'lastName', 'asc' - ); - -strAdd($h, '
'); -$table = table\new('Voornaam', 26, - 'Achternaam', 26, 'asc', - 'email', 26, - 'Lidnummer', 7, 'center', - 'Dispensatie', 7, 'center', - 'Regiocode', 8, 'center' - ); - -table\rowsPerPage($table, $p_page_len); -table\filename($table, string\concatenate($par_nascholingsjaar, ' - leden met te weinig nascholing')); - -$i = 0; -$n = array\length($leden); - -logAdd(log, 'leden:', $n); -$n_onvoldoende = 0; - -while($i < $n, - $lid = array\at($leden, $i); - $r_code = string\substring(hash\get($lid, 'regiocode'), 0, 2) + 0; - - ifThen($r_code < 30 && $r_code != 8, - $rapport = true; - $contact_id = hash\get($lid, 'id'); - $email = hash\get($lid, 'emailAddress'); - $dispensatie = hash\get($lid, 'dispensatie'); - $lidnummer = hash\get($lid, 'lidnummer'); - $naam = hash\get($lid, 'name'); - $regdat = hash\get($lid, 'datumRegistratie'); - $reg_jaar = datetime\year($regdat); - - $contact = Entity\Get('Contact', $contact_id); - $nascholingstotalen = Entity\GetRelated($contact, 'nascholingstotalen', 1, 'jaar', 'asc', 'jaar=', $par_nascholingsjaar); - $m = array\length($nascholingstotalen); - - ifThenElse($m == 0, $heeft_nt = 'nee', ifThenElse($m > 1, $heeft_nt = 'teveel', $heeft_nt = 'ja')); - ifThen($m > 0, $nascholingstotalen = array\at($nascholingstotalen, 0)); - ifThen($m == 0 && $par_nascholingsjaar < $reg_jaar, $rapport = false; $reden = 'gevraagde jaar ligt voor registratie jaar'); - - ifThenElse($m == 0, - $hom_surplus = 'nvt'; - $med_surplus = 'nvt'; - $surplus = 'nvt'; - $hom_lt = false; - $med_lt = false; - $lt = false; - $onvoldoende = true; - ifThen($rapport, $reden = 'voor het gevraagde jaar geen nascholingstotaal aanwezig!'); - , - $status = attr($nascholingstotalen, 'status'); - - ifThenElse($status == 'voldoet-niet' || $status == 'voldoet-niet-na-saldering', $onvoldoende = true, $onvoldoende = false); - ifThenElse($onvoldoende, $reden = 'onvoldoende nascholing', $reden = 'voldoende nascholing'); - ); - - ifThenElse($rapport && $onvoldoende, $opnemen = 'opnemen in rapport', $opnemen = 'niet opnemen'); - - ifThenElse($rapport && $onvoldoende, - logAdd(log, 'warning', $opnemen, ' - lid: ', $naam, ' email: ', $email, ' registratiejaar: ', $reg_jaar, ' - ', $reden); - , - logAdd(log, 'info', $opnemen, ' - lid: ', $naam, ' email: ', $email, ' registratiejaar: ', $reg_jaar, ' - ', $reden); - ); - - ifThen($rapport, - ifThen($onvoldoende, - $n_onvoldoende = $n_onvoldoende + 1; - $naam = hash\get($lid, 'name'); - $lastname = hash\get($lid, 'lastName'); - $middlename = hash\get($lid, 'middleName'); - $firstname = hash\get($lid, 'firstName'); - $lastname = string\concatenate($lastname, ', ', $middlename); - $regiocode = hash\get($lid, 'regiocode'); - ifThenElse($dispensatie, $dispensatie = 'Ja', $dispensatie = '-'); - - strAdd($h, ''); - $td = ''; - ifThenElse($par_open_lid_in_nieuwe_tab, $target = 'target="_blank"', $target = ""); - - table\add($table, - table\link(string\concatenate('/#Contact/view/', $contact_id), $firstname), - table\link(string\concatenate('/#Contact/view/', $contact_id), $lastname), - table\link(string\concatenate('mailto:', $email), $email), - string\concatenate(' ', $lidnummer), - $dispensatie, - string\concatenate(' ', $regiocode) - ); - ); // $onvoldoende - ); // $rapport - ); - $i = $i + 1 -); - -$table_html = table\toHtml($table); -$table_html = string\replace($table_html, 'title="%RED%', 'title="'); -$table_html = string\replace($table_html, '%END"', '"'); -$table_html = string\replace(string\replace($table_html, '%RED%', ''), '%END%', ''); - -strAdd($h, '

', 'Leden met onvoldoende nascholing voor jaar ', toString($par_nascholingsjaar), ': ', $n_onvoldoende, '

'); -strAdd($h, $table_html); -strAdd($h, '
'); - -logAdd(log, 'info', 'leden met onvoldoende nascholing voor jaar ', $par_nascholingsjaar, ': ', $n_onvoldoende); - -html=$h; diff --git a/code-current/script-bereken-nascholingstotaal-voor-jaar.js b/code-current/script-bereken-nascholingstotaal-voor-jaar.js deleted file mode 100644 index 5f61303..0000000 --- a/code-current/script-bereken-nascholingstotaal-voor-jaar.js +++ /dev/null @@ -1,347 +0,0 @@ -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Initialiseren -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_diploma_dt = record\attribute('Contact', $contact_id, 'vakopleidingDatumDiploma'); -$na_dispensatie = record\attribute('Contact', $contact_id, 'dispensatie'); -$na_regiocode = record\attribute('Contact', $contact_id, 'regiocode'); -$na_regiocode_str = $na_regiocode; -$na_regiocode = toInt($na_regiocode); // regiocode numeriek maken -$na_diploma_jr = datetime\year($na_diploma_dt); - -ifThen(!global\isset('nascholingsnorm-hash'), - $na_script = configGet('script-lees-nascholingsnorm-hash'); - Exec($na_script); -); -$na_norm = global\get('nascholingsnorm-hash'); - -$na_id = ''; - -$na_methode_1_tot_en_met = configGet('berekening-methode-1-tot-en-met'); -$na_werkgroep_div = configGet('werkgroep-dagen-deel-factor'); -$na_werkgroep_max = configGet('werkgroep-dagen-max'); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bereken de totalen dagen en dagenMedisch. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -ifThen(!$no_db_update, - $na_recs = record\fetchManyHash('Nascholingstotaal', - 'id, dagen, dagenMedisch, dagenHomeopathie, dagenWerkgroep, handmatig, dagenVrijstelling, nascholingsnormId, startSurplus', - 'createdAt', 'asc', - 'contactId=', $contact_id, - 'jaar=', $year - ); - $na_nrecs = array\length($na_recs); - - ifThenElse($na_nrecs > 0, - $na_rec = array\at($na_recs, 0); - - $na_id = hash\get($na_rec, 'id'); - $na_handmatig = hash\get($na_rec, 'handmatig'); - $na_vrijstelling = hash\get($na_rec, 'dagenVrijstelling'); - $na_start_surplus = hash\get($na_rec, 'startSurplus'); - $na_current_norm_id = hash\get($na_rec, 'nascholingsnormId'); - - log('warning', 'Berekenen nascholingen voor jaar: ', $year, ', na_id = ', $na_id); - - // Zolang de totalen handmatig zijn, wordt er niets berekend. - ifThenElse($na_handmatig, - $na_totaal_dagen = hash\get($na_rec, 'dagen'); - $na_totaal_medisch = hash\get($na_rec, 'dagenMedisch'); - $na_totaal_homeopathie = hash\get($na_rec, 'dagenHomeopathie'); - $na_totaal_werkgroep = hash\get($na_rec, 'dagenWerkgroep'); - log('warning', 'Handmatige nascholing, er wordt niets berekend'); - log('warning', 'medisch:', $na_totaal_medisch, ', hom:', $na_totaal_homeopathie, - ', werkgr:', $na_totaal_werkgroep, ', homoverig:', $na_totaal_dagen); - , - // Totalen op 0, dit is een te berekenen nascholing - $na_totaal_dagen = 0; - $na_totaal_medisch = 0; - $na_totaal_homeopathie = 0; - $na_totaal_werkgroep = 0; - - // De goedgekeurde handmatige en geaccrediteerde nascholingen - // kan nog steeds met methode 1. - $na_rows = record\fetchRelatedMany( - 'Nascholingstotaal', $na_id, 'nascholingen1', - 'jaar, dagen, dagenMedisch, dagenHomeopathie, status, name', - 'jaar', 'asc', - 'jaar=', $year - ); - $na_i = 0; - $na_n = array\length($na_rows); - log('warning', '#nascholingen gerelateerd aan nascholingstotaal:', $na_n); - - while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - $status = array\at($na_row, 4); - $name = array\at($na_row, 5); - log('warning', 'i = ', $na_i, ', status = ', $status); - ifThen($status != '-' && $status != 'afgekeurd', - $na_totaal_dagen = $na_totaal_dagen + array\at($na_row, 1); - $na_totaal_medisch = $na_totaal_medisch + array\at($na_row, 2); - $na_totaal_homeopathie = $na_totaal_homeopathie + array\at($na_row, 3); - log('warning', 'Dagen: hom:', $na_totaal_homeopathie, ', dagen: ', $na_totaal_dagen, ', medisch:', $na_totaal_medisch); - ); - $na_i = $na_i + 1; - ); - - // Dan het aantal notulen voor de werkgroepen van dit contact voor het gegeven jaar - // Eerst kijken we of we al groter dan het grensjaar zitten. - // Dit is niet meer voor methode 1. - ifThen($year > $na_methode_1_tot_en_met, - // Nu kunnen we ons best doen. - // Haal de werkgroep lidmaatschappen op die geldig zijn voor dit jaar. - $na_today = datetime\now(); - $na_werkgroepen_ids_1 = record\fetchRelatedManyHash('Contact', $contact_id, - 'werkgroeplidmaatschappen', - 'werkgroepId, datumVanaf', - 'name', 'asc', - 'lidmaatschapBeeindigd=', 0, - 'jaarVanaf<=', $year, - ); - $na_werkgroepen_ids_2 = record\fetchRelatedManyHash('Contact', $contact_id, - 'werkgroeplidmaatschappen', - 'werkgroepId, datumVanaf, datumTotEnMet', - 'name', 'asc', - 'lidmaatschapBeeindigd=', 1, - 'jaarVanaf<=', $year, - 'jaarTotEnMet>=', $year - ); - // Oke, nu hebben we de werkgroep ids. - // En dan kijken naar het aantal verslagen over dit jaar. - // En afkappen op een maximaal aantal dagen. - - $na_werkgroep_verslagen = 0; - - $na_n = array\length($na_werkgroepen_ids_1); - log('warning', 'Werkgroepen die niet beëindigd zijn :', $na_n); - $na_i = 0; - while($na_i < $na_n, - // Verkrijg het aantal notulen >= max(datumVanaf,begin dit jaar) en kleiner einde dit jaar. - $na_row = array\at($na_werkgroepen_ids_1, $na_i); - - $na_werkgroep_id = hash\get($na_row, 'werkgroepId'); - - $na_datumVanaf = hash\get($na_row, 'datumVanaf'); - $na_year_begin = string\concatenate($year, '-01-01'); - $na_end = string\concatenate($year, '-12-31'); - ifThenElse($na_datumVanaf > $na_year_begin, - $na_begin = $na_datumVanaf, - $na_begin = $na_year_begin); - - log('warning', 'werkgroepid = ', $na_werkgroep_id); - log('warning', 'datum vanaf: ', $na_begin, ', datum eind:', $na_end); - - $na_count = record\countRel('Werkgroep', $na_werkgroep_id, - 'werkgroepverslagen', - 'datum>=', $na_begin, - 'datum<=', $na_end - ); - - $na_werkgroep_verslagen = $na_werkgroep_verslagen + $na_count; - log('warning', 'notulen count=', $na_count, ', werkgroep verslagen=', $na_werkgroep_verslagen); - - $na_i = $na_i + 1; - ); - - // Oke en nu voor de jaren waarin er een einddatum is gezet. - - $na_n = array\length($na_werkgroepen_ids_2); - log('warning', 'Werkgroepen met een einddatum:', $na_n); - $na_i = 0; - while($na_i < $na_n, - // Verkrijg het aantal notulen >= max(datumVanaf,begin dit jaar) en kleiner MIN(datumTotEnMet, einde dit jaar). - $na_row = array\at($na_werkgroepen_ids_2, $na_i); - - $na_werkgroep_id = hash\get($na_row, 'werkgroepId'); - - $na_datumVanaf = hash\get($na_row, 'datumVanaf'); - $na_year_begin = string\concatenate($year, '-01-01'); - ifThenElse($na_datumVanaf > $na_year_begin, - $na_begin = $na_datumVanaf, - $na_begin = $na_year_begin); - - $na_datumTotEnMet = hash\get($na_row, 'datumTotEnMet'); - $na_year_end = string\concatenate($year, '-12-31'); - ifThenElse($na_datumTotEnMet < $na_year_end, - $na_end = $na_datumTotEnMet, - $na_end = $na_year_end); - - log('warning', 'werkgroepid = ', $na_werkgroep_id); - log('warning', 'datum vanaf: ', $na_begin, ', datum einde:', $na_end); - - $na_count = record\countRel('Werkgroep', $na_werkgroep_id, - 'werkgroepverslagen', - 'datum>=', $na_begin, - 'datum<=', $na_end - ); - - $na_werkgroep_verslagen = $na_werkgroep_verslagen + $na_count; - log('warning', 'notulen count=', $na_count, ', werkgroep verslagen=', $na_werkgroep_verslagen); - - $na_i = $na_i + 1; - ); - - log('warning', 'totaal aantal werkgroep verslagen voor ', $year, ' = ', $na_werkgroep_verslagen); - - // Bereken de zooi. - - $na_totaal_werkgroep = number\floor($na_werkgroep_verslagen / $na_werkgroep_div); - ifThen($na_totaal_werkgroep > $na_werkgroep_max, $na_totaal_werkgroep = $na_werkgroep_max); - ); - ); - , - log('error', 'Geen nascholingstotaal voor contact_id ', $contact_id, ' en jaar ', $year); - $na_totaal_dagen = 0; - $na_totaal_medisch = 0; - $na_vrijstelling = 0; - $na_totaal_homeopathie = 0; - $na_totaal_werkgroep = 0; - ); -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bereken de norm & vrijstelling -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$norm_key = $year; -ifThen($na_regiocode == 8, - log('warning', 'Afwijkende norm key'); - $norm_key = string\concatenate($year, '-', $na_regiocode_str); -); -log('warning', 'Regiocode=', $na_regiocode, ', str=', $na_regiocode_str, ', Norm key = ', $norm_key); - -$na_dagen_norm_formeel = hash\get(hash\get($na_norm, $norm_key), 'dagen'); -$na_medisch_norm = hash\get(hash\get($na_norm, $norm_key), 'dagenMedisch'); -$na_homeopathie_norm = hash\get(hash\get($na_norm, $norm_key), 'dagenHomeopathie'); -$na_max_meenemen = hash\get(hash\get($na_norm, $norm_key), 'meeneemNorm'); -$na_norm_id = hash\get(hash\get($na_norm, $norm_key), 'id'); -$na_norm_name = hash\get(hash\get($na_norm, $norm_key), 'name'); - -log('warning', 'nascholingsnorm: jaar: ', $year, ', dagen: ', $na_dagen_norm_formeel, - ', medisch: ', $na_medisch_norm, - ', homeopathie: ', $na_homeopathie_norm, - ', max meenemen: ', $na_max_meenemen, - ', start surplus: ', $na_start_surplus, - ', norm_id:', $na_norm_id, - ', norm_name:', $na_norm_name - ); - -// -// $na_vrijstelling is op zich al bekend, maar misschien is er nog dispensatie of registratie jaar -// $na_vrijstelling = MIN($na_vrijstelling, $na_dagen_norm_formeel – $na_homeopahie_norm – $na_medisch_norm) -// -$na_registration = ($year <= $na_diploma_jr); -$na_examenjaar = false; -ifThenElse($year <= $na_methode_1_tot_en_met, - $na_max_vrijstelling = $na_dagen_norm_formeel; -, - $na_max_vrijstelling = $na_dagen_norm_formeel - $na_homeopathie_norm - $na_medisch_norm; -); - -ifThen($na_vrijstelling > $na_max_vrijstelling, $na_vrijstelling = $na_max_vrijstelling); - -ifThenElse($na_dispensatie, - $na_vrijstelling = $na_max_vrijstelling; - , - ifThen($na_registration, - $na_dagen_norm_formeel = 0; - $na_medisch_norm = 0; - $na_homeopathie_norm = 0; - $na_examenjaar = true; - ); -); - -$na_dagen_norm = $na_dagen_norm_formeel; - -// Het aantal start dagen surplus kan nooit de norm overschrijden. -// startSurplus wordt alleen bij het 2013 record gebruikt, m.a.w. voor mensen die daarvoor -// al lid waren. In alle andere gevallen is $na_start_surplus gelijk aan 0. -ifThen($na_start_surplus > $na_dagen_norm_formeel, $na_start_surplus = $na_dagen_norm_formeel); - -log('warning', 'dispensatie=', $na_dispensatie, ', regjr=', $na_registration, - ', norm=', $na_dagen_norm, ', start surplus=', $na_start_surplus, ', dagen vrijstelling=', $na_vrijstelling, ', max vrijstelling=', $na_max_vrijstelling); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bereken het saldo aan dagen -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -log('warning', 'medisch:', $na_totaal_medisch, ', hom:', $na_totaal_homeopathie, - ', werkgr:', $na_totaal_werkgroep, ', homoverig:', $na_totaal_dagen); - -log('warning', 'year=', $year, ', na_methode_1_tot_en_met=', $na_methode_1_tot_en_met); - -/* -ifThenElse($year < $na_methode_1_tot_en_met, - $na_totaal_homeopathie = $na_totaal_homeopathie + $na_start_surplus + $na_vrijstelling; - $na_totaal_alle_dagen = $na_totaal_homeopathie; -, - ifThenElse($year == $na_methode_1_tot_en_met, - $na_totaal_homeopathie = $na_totaal_homemopathie + $na_start_surplus + $na_vrijstelling; - $na_totaal_alle_dagen = $na_totaal_dagen + $na_totaal_medisch + $na_totaal_homeopathie + $na_totaal_werkgroep; - , - $na_totaal_homeopathie = $na_totaal_homeopathie + $na_start_surplus; - $na_totaal_alle_dagen = $na_totaal_dagen + $na_totaal_medisch + $na_totaal_homeopathie + $na_totaal_werkgroep + $na_vrijstelling; - ); -); -*/ - -ifThenElse($year < $na_methode_1_tot_en_met, - $na_saldo_homeopathie = $na_totaal_homeopathie + $na_start_surplus + $na_vrijstelling; - $na_saldo = $na_saldo_homeopathie; - $na_totaal_alle_dagen = $na_saldo_homemopathie; -, - ifThenElse($year == $na_methode_1_tot_en_met, - $na_saldo_homeopathie = $na_totaal_homeopathie + $na_start_surplus + $na_vrijstelling; - $na_saldo = $na_saldo_homeopathie + $na_totaal_medisch; - $na_totaal_alle_dagen = $na_saldo; - , - $na_saldo_homeopathie = $na_totaal_homeopathie + $na_start_surplus; - $na_saldo = $na_saldo_homeopathie + $na_totaal_medisch + $na_totaal_dagen + $na_vrijstelling + $na_totaal_werkgroep; - $na_totaal_alle_dagen = $na_saldo; - ); -); - -$na_saldo_homeopathie = $na_saldo_homeopathie - $na_homeopathie_norm; -$na_saldo = $na_saldo - $na_dagen_norm; -$na_saldo_medisch = $na_totaal_medisch - $na_medisch_norm; - -log('warning', 'totaal alle:', $na_totaal_alle_dagen, - ', saldo:', $na_saldo, - ', saldo hom:', $na_saldo_homeopathie, - ', saldo medisch:', $na_saldo_medisch); - -log('warning', 'no db update = ', $no_db_update, ', na_id = ', $na_id); -log('warning', 'na_examenjaar = ', $na_examenjaar); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Nascholingstotaal updaten (alleen van belang als we niet al aan het updaten zijn!) -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -ifThen(!$no_db_update && $na_id != '', - // Updaten van het record leidt tot herberekening - // Het relateren van de nascholingsnorm gebeurt bij de record herberekening. - // Dus dat moeten we hier niet willen doen... - - // Updaten van het record leidt tot herberekening, dus we moeten even oppassen. - log('warning', 'Updaten nascholingstotaal: ', $na_id, ' jaar=', $year); - $oke = record\update('Nascholingstotaal', $na_id, - 'dagen', $na_totaal_dagen, - 'dagenMedisch', $na_totaal_medisch, - 'dagenHomeopathie', $na_totaal_homeopathie, - 'dagenWerkgroep', $na_totaal_werkgroep, - 'dagenTotaal', $na_totaal_alle_dagen, - 'dagenSaldo', $na_saldo, - 'homeopathieSaldo', $na_saldo_homeopathie, - 'medischSaldo', $na_saldo_medisch, - 'dagenFormeleNorm', $na_dagen_norm_formeel, - 'medischFormeleNorm', $na_medisch_norm, - 'homeopathieFormeleNorm', $na_homeopathie_norm, - 'maxMeenemen', $na_max_meenemen, - 'examenjaar', $na_examenjaar - ); - ifThen(!$oke, log('error', 'Update ging niet goed!')); -); - diff --git a/code-current/script-bereken-nascholingstotalen.js b/code-current/script-bereken-nascholingstotalen.js deleted file mode 100644 index 11521ad..0000000 --- a/code-current/script-bereken-nascholingstotalen.js +++ /dev/null @@ -1,950 +0,0 @@ -//exec last execution: Fri Jan 20 2023 15:56:21 GMT+0100 (Midden-Europese standaardtijd) - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Initialisatie -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -log('warning', 'Doorrekenen voor contact ', $contact_id); - -$na_reg_dt = record\attribute('Contact', $contact_id, 'datumRegistratie'); -$na_reg_jr = datetime\year($na_reg_dt); - -$na_methode_1_max_jaar = configGet('berekening-methode-1-tot-en-met'); -$na_methode_1_max_surplus = configGet('berekening-methode-1-max-surplus'); -$na_style_rubric = configGet('nascholingstotaal-rapport-jaar-rubric-style'); -$na_style_dagen = configGet('nascholingstotaal-rapport-jaar-dagen-style'); -$na_style_dagen_inspr = configGet('nascholingstotaal-rapport-jaar-dagen-style-inspr'); -$na_style_dagen_inspr2 = configGet('nascholingstotaal-rapport-jaar-dagen-style-inspr2'); -$na_style_nstd_goed = configGet('nascholingstotaal-rapport-jaar-nstd-goed-style'); -$na_style_nstd_goed_report = configGet('nascholingstotaal-rapport-jaar-nstd-goed-report-style'); -$na_style_nstd_tekort = configGet('nascholingstotaal-rapport-jaar-nstd-tekort-style'); -$na_style_nstd_tekort_report = configGet('nascholingstotaal-rapport-jaar-nstd-tekort-report-style'); -$na_style_nstd_nvt = configGet('nascholingstotaal-rapport-jaar-nstd-nvt-style'); -$na_style_bepaald = configGet('nascholingstotaal-rapport-jaar-nstd-bepaald-style'); -$na_style_bepaald_report = configGet('nascholingstotaal-rapport-jaar-nstd-bepaald-report-style'); -$na_style_onbepaald = configGet('nascholingstotaal-rapport-jaar-nstd-onbepaald-style'); -$na_style_onbepaald_report = configGet('nascholingstotaal-rapport-jaar-nstd-onbepaald-report-style'); -$na_style_kop = configGet('nascholingstotaal-rapport-jaar-kop-style'); -$na_style_probleem = configGet('nascholingstotaal-rapport-probleem-style'); -$na_style_waarschuwing = configGet('nascholingstotaal-rapport-waarschuwing-style'); -$na_style_sub_rubric = configGet('nascholingstotaal-rapport-sub-rubriek-style'); -$na_style_sub2_rubric = configGet('nascholingstotaal-rapport-sub2-rubriek-style'); - -$na_nascholing_onvoldoende = false; - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Haal eerst alle nascholingstotalen voor een contact op, in volgorde van jaar. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_geen_status_vanaf_jaar = datetime\year(datetime\now()) - 1; - -$na_in_calc_key = string\concatenate('nascholingstotalen-in-berekening-voor', $contact_id); -global\set($na_in_calc_key, true); - -$na_rows = record\fetchManyHash('Nascholingstotaal', - 'id, jaar, dagen, dagenMedisch, dagenHomeopathie, dagenTotaal, medischSaldo, homeopathieSaldo, dagenSaldo, saldoNaCorrectie, dagenWerkgroep, dagenVrijstelling, status, berekeningsUitleg, startSurplus, dagenFormeleNorm, homeopathieFormeleNorm, medischFormeleNorm, maxMeenemen, examenjaar, handmatig, surplus, surplusHomeopathie, surplusMedisch', - 'jaar', 'asc', - 'contactId=', $contact_id, - ); - -$na_n = array\length($na_rows); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Initialiseer om te beginnen alle surplussen op de saldo's van een jaar. -// Daarna gaan we de zaak verdelen. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_i = 0; -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - - $na_jaar = hash\get($na_row, 'jaar'); - - $na_calc_tot = hash\get($na_row, 'dagenSaldo'); - $na_calc_med = hash\get($na_row, 'medischSaldo'); - $na_calc_hom = hash\get($na_row, 'homeopathieSaldo'); - - $na_row = hash\set($na_row, 'surplus', $na_calc_tot); - $na_row = hash\set($na_row, 'surplusMedisch', $na_calc_med); - $na_row = hash\set($na_row, 'surplusHomeopathie', $na_calc_hom); - $na_row = hash\set($na_row, 'meegenomen', 0); - $na_row = hash\set($na_row, 'meegenomen_hom', 0); - $na_row = hash\set($na_row, 'meegenomen_med', 0); - - $na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar', 0); - $na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_hom', 0); - $na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_med', 0); - - $na_row = hash\set($na_row, 'tekort', $na_calc_tot); - $na_row = hash\set($na_row, 'tekort_hom', $na_calc_hom); - $na_row = hash\set($na_row, 'tekort_med', $na_calc_med); - - $na_row = hash\set($na_row, 'tekort_aangevuld_vanuit', ''); - $na_row = hash\set($na_row, 'tekort_aangevuld_naar', ''); - $na_row = hash\set($na_row, 'correctie_aangevuld_vanuit', 0); - $na_row = hash\set($na_row, 'correctie_aangevuld_naar', 0); - - $na_uitleg = ''; - $na_uitleg_hom = ''; - $na_uitleg_med = ''; - - $na_dagen_hom = hash\get($na_row, 'dagenHomeopathie'); - $na_dagen_med = hash\get($na_row, 'dagenMedisch'); - $na_dagen = hash\get($na_row, 'dagenTotaal'); - $na_vrijstelling = hash\get($na_row, 'dagenVrijstelling'); - $na_werkgroep = hash\get($na_row, 'dagenWerkgroep'); - $na_overig = hash\get($na_row, 'dagen'); - $na_start_surplus = hash\get($na_row, 'startSurplus'); - strAdd($na_uitleg_hom, '[IDagen gevolgd :I][NI', number\format($na_dagen_hom, 2), ']%%'); - - ifThenElse($na_jaar > $na_methode_1_max_jaar, - strAdd($na_uitleg_med, '[IDagen gevolgd :I][NI', number\format($na_dagen_med, 2), ']%%'); - ifThen($na_start_surplus > 0, - strAdd($na_uitleg, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%'); - strAdd($na_uitleg_hom, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%'); - ); - strAdd($na_uitleg, '[IDagen Klassieke Homeopathie gevolgd :I][NI', number\format($na_dagen_hom, 2), ']%%'); - strAdd($na_uitleg, '[IDagen Medisch gevolgd :I][NI', number\format($na_dagen_med, 2), ']%%'); - strAdd($na_uitleg, '[IDagen Overig gevolgd :I][NI', number\format($na_overig, 2), ']%%'); - strAdd($na_uitleg, '[IDagen Werkgroep :I][NI', number\format($na_werkgroep, 2), ']%%'); - ifThen($na_vrijstelling > 0, - strAdd($na_uitleg, '[IDagen Vrijstelling :I][NI', number\format($na_vrijstelling, 2), ']%%'); - ); - strAdd($na_uitleg, '[TNascholingsdagen :I][N', number\format($na_dagen, 2), ']%%'); - , - strAdd($na_uitleg, '[IDagen Klassieke Homeopathie gevolgd :I][NI', number\format($na_dagen_hom, 2), ']%%'); - ifThen($na_start_surplus > 0, - strAdd($na_uitleg, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%'); - strAdd($na_uitleg_hom, '[IDagen Start Surplus :I][NI', number\format($na_start_surplus, 2), ']%%'); - ); - ifThen($na_jaar == $na_methode_1_max_jaar, - strAdd($na_uitleg, '[IDagen Medisch gevolgd :I][NI', number\format($na_dagen_med, 2), ']%%'); - ); - ifThen($na_vrijstelling > 0, - strAdd($na_uitleg, '[IDagen Vrijstelling :I][NI', number\format($na_vrijstelling, 2), ']%%'); - strAdd($na_uitleg_hom, '[IDagen Vrijstelling :I][NI', number\format($na_vrijstelling, 2), ']%%'); - ); - ); - - $na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm'); - $na_norm_med = hash\get($na_row, 'medischFormeleNorm'); - $na_norm = hash\get($na_row, 'dagenFormeleNorm'); - strAdd($na_uitleg_hom, '[INorm Homeopathie :I][NI', number\format($na_norm_hom, 2), ']%%'); - ifThenElse($na_jaar > $na_methode_1_max_jaar, - strAdd($na_uitleg_med, '[INorm Medisch :I][NI', number\format($na_norm_med, 2), ']%%'); - strAdd($na_uitleg, '[INorm Nascholingsdagen :I][NI', number\format($na_norm, 2), ']%%'); - , - strAdd($na_uitleg, '[INorm Nascholingsdagen :I][NI', number\format($na_norm, 2), ']%%'); - ); - - strAdd($na_uitleg_hom, '[TSaldo :I][N', number\format($na_calc_hom, 2), ']%%'); - ifThenElse($na_jaar >= $na_methode_1_max_jaar, - strAdd($na_uitleg_med, '[TSaldo :I][N', number\format($na_calc_med, 2), ']%%'); - strAdd($na_uitleg, '[TSaldo :I][N', number\format($na_calc_tot, 2), ']%%'); - , - strAdd($na_uitleg, '[TSaldo :I][N', number\format($na_calc_tot, 2), ']%%'); - ); - - $na_row = hash\set($na_row, 'uitleg', $na_uitleg); - $na_row = hash\set($na_row, 'uitleg_hom', $na_uitleg_hom); - $na_row = hash\set($na_row, 'uitleg_med', $na_uitleg_med); - $na_rows = array\set($na_rows, $na_i, $na_row); - $na_i = $na_i + 1; -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Pas de doorschuif berekening toe. -// Behalve dan dat we maximaal de norm aan dagen meenemen naar het volgende jaar. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_j_first_hom = 0; -$na_j_first_med = 0; -$na_j_first_tot = 0; - -$na_i = 0; -while($na_i < $na_n, - - $na_row = array\at($na_rows, $na_i); - - $na_id = hash\get($na_row, 'id'); - $na_jaar = hash\get($na_row, 'jaar'); - - log('warning', 'na_i=', $na_i, ', id=', $na_id, ', jaar=', $na_jaar); - - $na_norm_hom = hash\get($na_row, 'homeopathieFormeleNorm'); - $na_norm_med = hash\get($na_row, 'medischFormeleNorm'); - $na_norm = hash\get($na_row, 'dagenFormeleNorm'); - - $na_calc_tot = hash\get($na_row, 'surplus'); - $na_calc_med = hash\get($na_row, 'surplusMedisch'); - $na_calc_hom = hash\get($na_row, 'surplusHomeopathie'); - - $na_uitleg = hash\get($na_row, 'uitleg'); - $na_uitleg_hom = hash\get($na_row, 'uitleg_hom'); - $na_uitleg_med = hash\get($na_row, 'uitleg_med'); - $na_tekort_aangevuld_naar = hash\get($na_row, 'tekort_aangevuld_naar'); - $na_correctie_aangevuld_naar = hash\get($na_row, 'correctie_aangevuld_naar'); - - $na_tekort = hash\get($na_row, 'tekort'); - $na_tekort_hom = hash\get($na_row, 'tekort_hom'); - $na_tekort_med = hash\get($na_row, 'tekort_med'); - - $na_correctie_uit_opvolgend_jaar = hash\get($na_row, 'correctie_uit_opvolgend_jaar'); - $na_correctie_uit_opvolgend_jaar_hom = hash\get($na_row, 'correctie_uit_opvolgend_jaar_hom'); - $na_correctie_uit_opvolgend_jaar_med = hash\get($na_row, 'correctie_uit_opvolgend_jaar_med'); - - $na_jaar = hash\get($na_row, 'jaar'); - - $na_max_meenemen = hash\get($na_row, 'maxMeenemen'); - log('warning', 'na_max_meenemen=', $na_max_meenemen); - - $do_adding = true; - - ifThenElse($na_i == 0, - log('warning', '1e jaar'); - log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot); - $na_j_first_hom = 0; - $na_j_first_med = 0; - $na_j_first_tot = 0; - , - // Check of het saldo van dagen > 0 voor homeopathie, medisch en totaal. - // Zorg dat dat eerst verdeeld wordt naar de voorgaande saldi van jaren. - - log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot); - - $na_lowest_j = $na_i; - - log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot); - - // Medisch negatieve correcties - // Alleen als er voldoende surplus is om te compenseren. - // We kijken dan niet naar het totaal, want daar ontstaat dan - // vanzelf een verder tekort als dat aan de orde is. - ifThen(($na_calc_med + $na_norm_med) > 0, - $na_j = $na_j_first_med; - $na_row_j = array\at($na_rows, $na_j); - $na_calc_med_j = hash\get($na_row_j, 'surplusMedisch'); - $na_uitleg_med_j = hash\get($na_row_j, 'uitleg_med'); - $na_uitleg_j = hash\get($na_row_j, 'uitleg'); - $na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit'); - $na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit'); - $na_jaar_j = hash\get($na_row_j, 'jaar'); - $na_correctie_uit_opvolgend_jaar_med_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_med'); - $na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar'); - while($na_j < $na_i && ($na_calc_med + $na_norm_med) > 0, - while($na_j < $na_i && $na_calc_med_j >= 0, - $na_j = $na_j + 1; - $na_row_j = array\at($na_rows, $na_j); - $na_calc_med_j = hash\get($na_row_j, 'surplusMedisch'); - $na_uitleg_med_j = hash\get($na_row_j, 'uitleg_med'); - $na_uitleg_j = hash\get($na_row_j, 'uitleg'); - $na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit'); - $na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit'); - $na_jaar_j = hash\get($na_row_j, 'jaar'); - $na_correctie_uit_opvolgend_jaar_med_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_med'); - $na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar'); - ); - - $na_j_first_med = $na_j; - //logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j); - - ifThen($na_j < $na_i, - ifThen($na_lowest_j > $na_j, $na_lowest_j = $na_j); - $na_correctie = -1 * $na_calc_med_j; - // Zorg dat niet meer dan het saldo kan worden verrekend - ifThen($na_correctie > ($na_calc_med + $na_norm_med), $na_correctie = ($na_calc_med + $na_norm_med)); - - strAdd($na_uitleg_med_j, "[IDagen tekort medisch aangevuld vanuit jaar ", $na_jaar, ":I][NI", number\format($na_correctie, 2), "]%%"); - strAdd($na_tekort_aangevuld_vanuit_j, "[IIWaarvan dagen medisch vanuit jaar ", $na_jaar, ":I][NII", number\format($na_correctie, 2), "]%%"); - strAdd($na_uitleg_med, "[IDagen tekort medisch aangevuld naar jaar ", $na_jaar_j, ":I][NI", number\format(-1 * $na_correctie, 2), "]%%"); - strAdd($na_tekort_aangevuld_naar, "[IIWaarvan dagen medisch naar jaar ", $na_jaar_j, ":I][NII", number\format($na_correctie, 2), "]%%"); - - $na_correctie_aangevuld_vanuit_j = $na_correctie_aangevuld_vanuit_j + $na_correctie; - $na_correctie_aangevuld_naar = $na_correctie_aangevuld_naar + $na_correctie; - - $na_correctie_uit_opvolgend_jaar_med_j = $na_correctie_uit_opvolgend_jaar_med_j + 1; - $na_correctie_uit_opvolgend_jaar_j = $na_correctie_uit_opvolgend_jaar_j + 1; - - $na_calc_med = $na_calc_med - $na_correctie; - $na_tekort_med = $na_tekort_med - $na_correctie; - $na_calc_tot = $na_calc_tot - $na_correctie; - $na_tekort = $na_tekort - $na_correctie; - - $na_calc_j = hash\get($na_row_j, 'surplus'); - $na_calc_j = $na_calc_j + $na_correctie; - $na_calc_med_j = $na_calc_med_j + $na_correctie; - - $na_row_j = hash\set($na_row_j, 'surplusMedisch', $na_calc_med_j); - $na_row_j = hash\set($na_row_j, 'surplus', $na_calc_j); - $na_row_j = hash\set($na_row_j, 'uitleg_med', $na_uitleg_med_j); - $na_row_j = hash\set($na_row_j, 'uitleg', $na_uitleg_j); - $na_row_j = hash\set($na_row_j, 'tekort_aangevuld_vanuit', $na_tekort_aangevuld_vanuit_j); - $na_row_j = hash\set($na_row_j, 'correctie_aangevuld_vanuit', $na_correctie_aangevuld_vanuit_j); - $na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar_med', $na_correctie_uit_opvolgend_jaar_med_j); - $na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar_j); - $na_rows = array\set($na_rows, $na_j, $na_row_j); - - //logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j); - ); - ); - ); - - // Klassieke Homeopathie negatieve correcties - // Alleen als er voldoende surplus is om te compenseren. - // We kijken dan niet naar het totaal, want daar ontstaat dan - // vanzelf een verder tekort als dat aan de orde is. - ifThen(($na_calc_hom + $na_norm_hom) > 0, - $na_j = $na_j_first_hom; - $na_row_j = array\at($na_rows, $na_j); - $na_calc_hom_j = hash\get($na_row_j, 'surplusHomeopathie'); - $na_uitleg_hom_j = hash\get($na_row_j, 'uitleg_hom'); - $na_uitleg_j = hash\get($na_row_j, 'uitleg'); - $na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit'); - $na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit'); - $na_jaar_j = hash\get($na_row_j, 'jaar'); - $na_correctie_uit_opvolgend_jaar_hom_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_hom'); - $na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar'); - while($na_j < $na_i && ($na_calc_hom + $na_norm_hom) > 0, - while($na_j < $na_i && $na_calc_hom_j >= 0, - $na_j = $na_j + 1; - $na_row_j = array\at($na_rows, $na_j); - $na_calc_hom_j = hash\get($na_row_j, 'surplusHomeopathie'); - $na_uitleg_hom_j = hash\get($na_row_j, 'uitleg_hom'); - $na_uitleg_j = hash\get($na_row_j, 'uitleg'); - $na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit'); - $na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit'); - $na_jaar_j = hash\get($na_row_j, 'jaar'); - $na_correctie_uit_opvolgend_jaar_hom_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar_hom'); - $na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar'); - ); - $na_j_first_hom = $na_j; - - ifThen($na_j < $na_i, - ifThen($na_lowest_j > $na_j, $na_lowest_j = $na_j); - $na_correctie = -1 * $na_calc_hom_j; - // Zorg dat niet meer dan het saldo kan worden verrekend - ifThen($na_correctie > ($na_calc_hom + $na_norm_hom), $na_correctie = ($na_calc_hom + $na_norm_hom)); - - strAdd($na_uitleg_hom_j, "[IDagen tekort homeopathie aangevuld vanuit jaar ", $na_jaar, ":I][NI", number\format($na_correctie, 2), "]%%"); - strAdd($na_tekort_aangevuld_vanuit_j, "[IIWaarvan dagen homeopathie vanuit jaar ", $na_jaar, ":I][NII", number\format($na_correctie, 2), "]%%"); - strAdd($na_uitleg_hom, "[IDagen tekort homeopathie aangevuld naar jaar ", $na_jaar_j, ":I][NI", number\format(-1 * $na_correctie, 2), "]%%"); - strAdd($na_tekort_aangevuld_naar, "[IIWaarvan dagen homeopathie naar jaar ", $na_jaar_j, ":I][NII", number\format($na_correctie, 2), "]%%"); - - $na_correctie_aangevuld_vanuit_j = $na_correctie_aangevuld_vanuit_j + $na_correctie; - $na_correctie_aangevuld_naar = $na_correctie_aangevuld_naar + $na_correctie; - - $na_correctie_uit_opvolgend_jaar_hom_j = $na_correctie_uit_opvolgend_jaar_hom_j + 1; - $na_correctie_uit_opvolgend_jaar_j = $na_correctie_uit_opvolgend_jaar_j + 1; - - $na_calc_hom = $na_calc_hom - $na_correctie; - $na_tekort_hom = $na_tekort_hom - $na_correctie; - $na_calc_tot = $na_calc_tot - $na_correctie; - $na_tekort = $na_tekort - $na_correctie; - - $na_calc_j = hash\get($na_row_j, 'surplus'); - $na_calc_j = $na_calc_j + $na_correctie; - $na_calc_hom_j = $na_calc_hom_j + $na_correctie; - - $na_row_j = hash\set($na_row_j, 'surplusHomeopathie', $na_calc_hom_j); - $na_row_j = hash\set($na_row_j, 'surplus', $na_calc_j); - $na_row_j = hash\set($na_row_j, 'uitleg_hom', $na_uitleg_hom_j); - $na_row_j = hash\set($na_row_j, 'uitleg', $na_uitleg_j); - $na_row_j = hash\set($na_row_j, 'tekort_aangevuld_vanuit', $na_tekort_aangevuld_vanuit_j); - $na_row_j = hash\set($na_row_j, 'correctie_aangevuld_vanuit', $na_correctie_aangevuld_vanuit_j); - $na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar_hom', $na_correctie_uit_opvolgend_jaar_hom_j); - $na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar_j); - $na_rows = array\set($na_rows, $na_j, $na_row_j); - - //$ff = hash\get($na_row_j, 'tekort_aangevuld_vanuit'); - //logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j, ', ff:', $ff); - ); - ); - ); - - log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot); - - // Totaal negatieve correcties - // Alleen als er voldoende surplus is om te compenseren. - ifThen(($na_calc_tot + $na_norm) > 0, - $na_j = $na_j_first_tot; - $na_row_j = array\at($na_rows, $na_j); - $na_calc_j = hash\get($na_row_j, 'surplus'); - $na_uitleg_j = hash\get($na_row_j, 'uitleg'); - $na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit'); - $na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit'); - $na_jaar_j = hash\get($na_row_j, 'jaar'); - $na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar'); - while($na_j < $na_i && ($na_calc_tot + $na_norm) > 0, - while($na_j < $na_i && $na_calc_j >= 0, - $na_j = $na_j + 1; - $na_row_j = array\at($na_rows, $na_j); - $na_calc_j = hash\get($na_row_j, 'surplus'); - $na_uitleg_j = hash\get($na_row_j, 'uitleg'); - $na_tekort_aangevuld_vanuit_j = hash\get($na_row_j, 'tekort_aangevuld_vanuit'); - $na_correctie_aangevuld_vanuit_j = hash\get($na_row_j, 'correctie_aangevuld_vanuit'); - $na_jaar_j = hash\get($na_row_j, 'jaar'); - $na_correctie_uit_opvolgend_jaar_j = hash\get($na_row_j, 'correctie_uit_opvolgend_jaar'); - ); - - $na_j_first_tot = $na_j; - - ifThen($na_j < $na_i, - ifThen($na_lowest_j > $na_j, $na_lowest_j = $na_j); - $na_correctie = -1 * $na_calc_j; - ifThen($na_correctie > ($na_calc_tot + $na_norm), $na_correctie = ($na_calc_tot + $na_norm)); - - strAdd($na_tekort_aangevuld_vanuit_j, "[IIWaarvan nascholingsdagen vanuit jaar ", $na_jaar,":I][NII", number\format($na_correctie, 2), "]%%"); - strAdd($na_tekort_aangevuld_naar, "[IIWaarvan nascholingsdagen naar jaar ", $na_jaar_j, ":I][NII", number\format($na_correctie, 2), "]%%"); - - $na_correctie_aangevuld_vanuit_j = $na_correctie_aangevuld_vanuit_j + $na_correctie; - $na_correctie_aangevuld_naar = $na_correctie_aangevuld_naar + $na_correctie; - - $na_correctie_uit_opvolgend_jaar_j = $na_correctie_uit_opvolgend_jaar_j + 1; - - $na_calc_tot = $na_calc_tot - $na_correctie; - $na_tekort = $na_tekort - $na_correctie; - $na_calc_j = $na_calc_j + $na_correctie; - - $na_row_j = hash\set($na_row_j, 'surplus', $na_calc_j); - $na_row_j = hash\set($na_row_j, 'uitleg', $na_uitleg_j); - $na_row_j = hash\set($na_row_j, 'tekort_aangevuld_vanuit', $na_tekort_aangevuld_vanuit_j); - $na_row_j = hash\set($na_row_j, 'correctie_aangevuld_vanuit', $na_correctie_aangevuld_vanuit_j); - $na_row_j = hash\set($na_row_j, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar_j); - $na_rows = array\set($na_rows, $na_j, $na_row_j); - - //logAdd(log, 'jaar:', $na_jaar_j, ', tekort_aangevuld_vanuit: ', $na_tekort_aangevuld_vanuit_j); - ); - ); - ); - - log('warning', 'jaar=', $na_jaar, ', calc_hom=', $na_calc_hom, ', calc_med=', $na_calc_med, ', calc_tot=', $na_calc_tot); - - ifThen($na_lowest_j == $na_i, - // Kijk nu of er nog dagen meegenomen kunnen worden naar het volgende jaar - - $na_row_prev = array\at($na_rows, $na_i - 1); - $na_calc_hom_prev = hash\get($na_row_prev, 'surplusHomeopathie'); - $na_calc_med_prev = hash\get($na_row_prev, 'surplusMedisch'); - $na_calc_tot_prev = hash\get($na_row_prev, 'surplus'); - - //logAdd(log, 'warning', 'jaar:', $na_jaar, ', MEENEMEN: prev: tot:', $na_calc_tot_prev, ', hom: ', $na_calc_hom_prev, ', med:', $na_calc_med_prev); - - // Pak maximaal de maxMeenemen norm aan dagen over van het voorgaande jaar, als er voldoende dagen zijn. - ifThen($na_calc_tot_prev > 0, - // Oke, we kunnen überhaupt dagen meenemen. - $na_max_mee = $na_max_meenemen; - // Zorg dat we bij het teruggaan in de tijd niet meer meenemen dan in totaal max_meenemen. - // Dus we moeten wat al een keer is meegenomen vasthouden en van het maximum aftrekken. - $na_meegenomen = hash\get($na_row, 'meegenomen'); - $na_meegenomen_hom = hash\get($na_row, 'meegenomen_hom'); - $na_meegenomen_med = hash\get($na_row, 'meegenomen_med'); - $na_max_mee = $na_max_mee - $na_meegenomen; - // Verdeel de dagen tussen medisch en homeopatisch, tenzij de - // voorgaande surplussen niet voldoende zijn, vul dan verder aantal - // met overig - while($na_calc_tot_prev > 0 && $na_max_mee > 0, - // Zo lang huidig medisch surplus < 0 en previous medisch surplus > 0, kies voor medisch - // Anders, zo lang huidig homeopathie surplus < 0 en previous homeopathie surplus > 0, kies voor homeopathie - // Anders, zo lang previous homeopathie surplus / medisch surplus > 0, kies voor med, hom alternerend. - // Anders, zo lang previous homeopathie surplus > 0, kies voor homeopathie - // Anders, zo lang previous medisch surplus > 0, kies voor medisch - // Anders, kies voor overig - ifThenElse($na_calc_med < 0 && $na_calc_med_prev > 0, - $na_hom_med_overig = 'med'; - , - ifThenElse($na_calc_hom < 0 && $na_calc_hom_prev > 0, - $na_hom_med_overig = 'hom'; - , - ifThenElse($na_calc_hom_prev > 0 && $na_calc_med_prev > 0, - ifThenElse($na_hom_med_overig == 'med', - $na_hom_med_overig = 'hom'; - , - $na_hom_med_overig = 'med'; - ); - , - ifThenElse($na_calc_hom_prev > 0, - $na_hom_med_overig = 'hom'; - , - ifThenElse($na_calc_med_prev > 0, - $na_hom_med_overig = 'med'; - , - $na_hom_med_overig = 'overig'; - ); - ); - ); - ); - ); - - log('warning', 'na_hom_med_overig=', $na_hom_med_overig, ', surplus_tot_prev=', $na_calc_tot_prev, ', na_max_mee=', $na_max_mee); - - ifThen($na_hom_med_overig == 'med', - ifThen($na_calc_med_prev > 0, - $na_take = 1; - ifThen($na_calc_med_prev < $na_take, $na_take = $na_calc_med_prev); - ifThen($na_calc_tot_prev < $na_take, - $na_take = $na_calc_tot_prev; - //strAdd($na_uitleg_med, "[EOvername van medische dagen beperkt tot ", number\format($na_take, 2), ', omdat het totaal van vorig jaar ontoereikend isE]%%'); - ); - ifThen($ma_max_mee < $na_take, $na_take = $na_max_mee); - $na_calc_med = $na_calc_med + $na_take; - $na_calc_med_prev = $na_calc_med_prev - $na_take; - $na_calc_tot = $na_calc_tot + $na_take; - $na_calc_tot_prev = $na_calc_tot_prev - $na_take; - $na_max_mee = $na_max_mee - $na_take; - $na_meegenomen = $na_meegenomen + $na_take; - $na_meegenomen_med = $na_meegenomen_med + $na_take; - ); - ); - ifThen($na_hom_med_overig == 'hom', - ifThen($na_calc_hom_prev > 0, - $na_take = 1; - ifThen($na_calc_hom_prev < $na_take, $na_take = $na_calc_hom_prev); - ifThen($na_calc_tot_prev < $na_take, - $na_take = $na_calc_tot_prev; - //strAdd($na_uitleg_hom, "[EOvername van homeopathie dagen beperkt tot ", number\format($na_take, 2), ', omdat het totaal van vorig jaar ontoereikend isE]%%'); - ); - ifThen($ma_max_mee < $na_take, $na_take = $na_max_mee); - $na_calc_hom = $na_calc_hom + $na_take; - $na_calc_hom_prev = $na_calc_hom_prev - $na_take; - $na_calc_tot = $na_calc_tot + $na_take; - $na_calc_tot_prev = $na_calc_tot_prev - $na_take; - $na_max_mee = $na_max_mee - $na_take; - $na_meegenomen = $na_meegenomen + $na_take; - $na_meegenomen_hom = $na_meegenomen_hom + $na_take; - ); - ); - ifThen($na_hom_med_overig == 'overig', - // We weten nu al dat na_calc_tot_prev > 0 - $na_take = 1; - ifThen($na_calc_tot_prev < $na_take, $na_take = $na_calc_tot_prev); - ifThen($ma_max_mee < $na_take, $na_take = $na_max_mee); - $na_calc_tot = $na_calc_tot + $na_take; - $na_calc_tot_prev = $na_calc_tot_prev - $na_take; - $na_max_mee = $na_max_mee - $na_take; - $na_meegenomen = $na_meegenomen + $na_take; - ); - ); - - //logAdd(log, 'warning', 'jaar:', $na_jaar, ', meegenomen: ', $na_meegenomen, ', hom:', $na_meegenomen_hom, ', med:', $na_meegenomen_med); - - $na_row = hash\set($na_row, 'meegenomen', $na_meegenomen); - $na_row = hash\set($na_row, 'meegenomen_hom', $na_meegenomen_hom); - $na_row = hash\set($na_row, 'meegenomen_med', $na_meegenomen_med); - ); - - $na_meegenomen = hash\get($na_row, 'meegenomen'); - $na_meegenomen_hom = hash\get($na_row, 'meegenomen_hom'); - $na_meegenomen_med = hash\get($na_row, 'meegenomen_med'); - //logAdd(log, 'jaar: ', $na_jaar, ', tekort:', $na_tekort, ', meegenomen uit vorig jaar:', $na_meegenomen); - - $na_row_prev = hash\set($na_row_prev, 'surplusHomeopathie', $na_calc_hom_prev); - $na_row_prev = hash\set($na_row_prev, 'surplusMedisch', $na_calc_med_prev); - $na_row_prev = hash\set($na_row_prev, 'surplus', $na_calc_tot_prev); - $na_rows = array\set($na_rows, $na_i - 1, $na_row_prev); - ); - - $na_row = hash\set($na_row, 'surplusHomeopathie', $na_calc_hom); - $na_row = hash\set($na_row, 'surplusMedisch', $na_calc_med); - $na_row = hash\set($na_row, 'surplus', $na_calc_tot); - $na_row = hash\set($na_row, 'uitleg', $na_uitleg); - $na_row = hash\set($na_row, 'uitleg_hom', $na_uitleg_hom); - $na_row = hash\set($na_row, 'uitleg_med', $na_uitleg_med); - $na_row = hash\set($na_row, 'tekort_aangevuld_naar', $na_tekort_aangevuld_naar); - $na_row = hash\set($na_row, 'correctie_aangevuld_naar', $na_correctie_aangevuld_naar); - $na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar', $na_correctie_uit_opvolgend_jaar); - $na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_hom', $na_correctie_uit_opvolgend_jaar_hom); - $na_row = hash\set($na_row, 'correctie_uit_opvolgend_jaar_med', $na_correctie_uit_opvolgend_jaar_med); - $na_row = hash\set($na_row, 'tekort', $na_tekort); - $na_row = hash\set($na_row, 'tekort_hom', $na_tekort_hom); - $na_row = hash\set($na_row, 'tekort_med', $na_tekort_med); - $na_rows = array\set($na_rows, $na_i, $na_row); - - ifThen($na_lowest_j != $na_i, $na_i = $na_lowest_j - 1); - ); - - $na_i = $na_i + 1; -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bepaal de uitslag -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_i = 0; -$na_jaar_end = 0; -ifThenElse($na_i < $na_n, - $na_row = array\at($na_rows, $na_n - 1); - $na_calc_tot_end = hash\get($na_row, 'surplus'); - $na_calc_hom_end = hash\get($na_row, 'surplusHomeopathie'); - $na_calc_med_end = hash\get($na_row, 'surplusMedisch'); - $na_jaar_end = hash\get($na_row, 'jaar'); -, - $na_calc_tot_end = 0; - $na_calc_hom_end = 0; - $na_calc_med_end = 0; - $na_jaar_end = 0; -); - -log('warning', 'calc_tot_end = ', $na_calc_tot_end, ', calc_hom_end = ', $na_calc_hom_end, ', calc_med_end = ', $na_calc_med_end); - -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - - $na_jaar = hash\get($na_row, 'jaar'); - - $na_uitleg_hom = hash\get($na_row, 'uitleg_hom'); - $na_uitleg_med = hash\get($na_row, 'uitleg_med'); - $na_uitleg_tot = hash\get($na_row, 'uitleg'); - - $na_tekort_aangevuld_naar = hash\get($na_row, 'tekort_aangevuld_naar'); - $na_tekort_aangevuld_vanuit = hash\get($na_row, 'tekort_aangevuld_vanuit'); - $na_correctie_aangevuld_naar = hash\get($na_row, 'correctie_aangevuld_naar'); - $na_correctie_aangevuld_vanuit = hash\get($na_row, 'correctie_aangevuld_vanuit'); - - $na_calc_tot = hash\get($na_row, 'surplus'); - $na_calc_hom = hash\get($na_row, 'surplusHomeopathie'); - $na_calc_med = hash\get($na_row, 'surplusMedisch'); - - $na_mee_tot = hash\get($na_row, 'meegenomen'); - $na_mee_hom = hash\get($na_row, 'meegenomen_hom'); - $na_mee_med = hash\get($na_row, 'meegenomen_med'); - - $na_tekort = -1 * hash\get($na_row, 'tekort'); - $na_tekort_hom = -1 * hash\get($na_row, 'tekort_hom'); - $na_tekort_med = -1 * hash\get($na_row, 'tekort_med'); - - //logAdd(log, 'info', 'jaar:', $na_jaar, ', tekort_hom: ', $na_tekort_hom, ' tekort_med: ', $na_tekort_med, ', tekort_tot: ', $na_tekort); - - // Corrigeer voor het dashboard de tekorten nog met meegenomen uit voorgaande jaren - $na_tekort = $na_tekort - $na_mee_tot; - $na_tekort_hom = $na_tekort_hom - $na_mee_hom; - $na_tekort_med = $na_tekort_med - $na_mee_med; - - $na_dashboard = ''; - $na_dashb_entry_hom = ''; - $na_dashb_entry_med = ''; - $na_dashb_entry_tot = ''; - - ifThenElse($na_i == ($na_n - 1), - $na_mee_tot_next = 0; - $na_mee_hom_next = 0; - $na_mee_med_next = 0; - , - $na_row_next = array\at($na_rows, $na_i + 1); - $na_mee_tot_next = hash\get($na_row_next, 'meegenomen'); - $na_mee_hom_next = hash\get($na_row_next, 'meegenomen_hom'); - $na_mee_med_next = hash\get($na_row_next, 'meegenomen_med'); - ); - - $na_correctie_uit_opvolgend_jaar = hash\get($na_row, 'correctie_uit_opvolgend_jaar'); - $na_correctie_uit_opvolgend_jaar_hom = hash\get($na_row, 'correctie_uit_opvolgend_jaar_hom'); - $na_correctie_uit_opvolgend_jaar_med = hash\get($na_row, 'correctie_uit_opvolgend_jaar_med'); - - // Bepaal of er vóór het einde vanaf deze index nog ergens een surplus is, want - // dan is een negatief eindtotaal niet van toepassing. - //logAdd(log, 'warning', 'jaar = ', $na_jaar, ' - intermediate surplus?'); - $na_j = $na_i; - $has_intermediate_hom_surplus = false; - $has_intermediate_med_surplus = false; - $has_intermediate_tot_surplus = false; - while($na_j < $na_n && !($has_intermediate_hom_surplus && $has_intermediate_med_surplus && $has_intermediate_tot_surplus), - $na_row_j = array\at($na_rows, $na_j); - $na_j_jaar = hash\get($na_row_j, 'jaar'); - $na_j_calc_tot = hash\get($na_row_j, 'surplus'); - $na_j_calc_hom = hash\get($na_row_j, 'surplusHomeopathie'); - $na_j_calc_med = hash\get($na_row_j, 'surplusMedisch'); - $na_j_tekort = hash\get($na_row_j, 'tekort'); - $na_j_tekort_hom = hash\get($na_row_j, 'tekort_hom'); - $na_j_tekort_med = hash\get($na_row_j, 'tekort_med'); - - $has_intermediate_tot_surplus = ($na_j_calc_tot > 0.0 || ($na_j_calc_tot == 0.0 && $na_j_tekort >= 0.0)); - $has_intermediate_hom_surplus = ($na_j_calc_hom > 0.0 || ($na_j_calc_hom == 0.0 && $na_j_tekort_hom >= 0.0)); - $has_intermediate_med_surplus = ($na_j_calc_med > 0.0 || ($na_j_calc_med == 0.0 && $na_j_tekort_med >= 0.0)); - - //logAdd(log, 'info', 'jaar = ', $na_j_jaar, ', calc_tot = ', $na_j_calc_tot, ', tekort = ', $na_j_tekort, ' result = ', $has_intermediate_tot_surplus); - $na_j = $na_j + 1; - ); - //logAdd(log, 'info', 'intermediate surplus = ', $has_intermediate_tot_surplus); - - // Begin met uitleggen - - strAdd($na_uitleg_hom, "[IMeegenomen uit ", $na_jaar - 1, " :][NI", number\format($na_mee_hom, 2), "]%%"); - - ifThenElse($na_i == ($na_n - 1), - strAdd($na_uitleg_hom, "[TGecumuleerde nascholingsuitkomst:][N", number\format($na_calc_hom, 2), "]%%"); - , - strAdd($na_uitleg_hom, "[IDoorgegeven aan ", $na_jaar + 1, " :][NI", number\format(-1 * $na_mee_hom_next, 2), "]%%"); - ifThen($na_calc_hom > 0 && $na_calc_tot <= 0, - strAdd($na_uitleg_hom, "[ESurplus van ", number\format($na_calc_hom, 2), " Homeopathie dagen kunnen niet worden doorgegeven, omdat het totaal ontoereikend isE]%%"); - ); - ); - - ifThenElse($na_tekort_hom <= 0, - ifThenElse($na_calc_hom == 0.0, - $na_dashb_entry_hom = string\concatenate("[VTotaal Klassieke Homeopathie voldoendeV]%%"); - $na_status_hom = 'voldoet'; - , - $na_dashb_entry_hom = string\concatenate("[VTotaal Klassieke Homeopathie voldoende (surplus: ", number\format($na_calc_hom, 2), ")V]%%"); - $na_status_hom = 'voldoet'; - ); - , - ifThenElse($na_calc_hom >= 0, - $na_dashb_entry_hom = string\concatenate("[VTotaal Klassieke Homeopathie voldoende (gecompenseerd)V]%%"); - , - $na_dashb_entry_hom = string\concatenate("[OTotaal Klassieke Homeopathie onvoldoende (tekort: ", number\format(-1 * $na_calc_hom, 2), ")O]%%"); - $na_status_hom = 'voldoet-niet'; - ); - ); - - $na_uitleg_hom = string\concatenate($na_dashb_entry_hom, $na_uitleg_hom); - - ifThenElse($na_jaar >= $na_methode_1_max_jaar, - - strAdd($na_uitleg_med, "[IMeegenomen ", $na_jaar - 1, " :][NI", number\format($na_mee_med, 2), "]%%"); - ifThenElse($na_i == ($na_n - 1), - strAdd($na_uitleg_med, "[TGecumuleerde nascholingsuitkomst:][N", number\format($na_calc_med, 2), "]%%"); - , - strAdd($na_uitleg_med, "[IDoorgegeven aan ", $na_jaar + 1, " :][NI", number\format(-1 * $na_mee_med_next, 2), "]%%"); - ifThen($na_calc_med > 0 && $na_calc_tot <= 0, - strAdd($na_uitleg_med, "[ESurplus van ", number\format($na_calc_med, 2), " Medische dagen kunnen niet worden doorgegeven, omdat het totaal ontoereikend isE]%%"); - ); - ); - - ifThenElse($na_tekort_med <= 0, - ifThenElse($na_calc_med == 0.0, - $na_dashb_entry_med = string\concatenate("[VTotaal Medisch voldoendeV]%%"); - $na_status_med = 'voldoet'; - , - $na_dashb_entry_med = string\concatenate("[VTotaal Medisch voldoende (surplus: ", number\format($na_calc_med, 2), ")V]%%"); - $na_status_med = 'voldoet'; - ); - , - ifThenElse($na_calc_med >= 0, - $na_dashb_entry_med = string\concatenate("[VTotaal Medisch voldoende (gecompenseerd)V]%%"); - $na_status_med = 'voldoet'; - , - $na_dashb_entry_med = string\concatenate("[OTotaal Medisch onvoldoende (tekort: ", number\format(-1 * $na_calc_med, 2), ")O]%%"); - $na_status_hom = 'voldoet-niet'; - ); - ); - - $na_uitleg_med = string\concatenate($na_dashb_entry_med, $na_uitleg_med); - , - $na_dashb_entry_med = '[V - V]%%'; - ); - - log('warning', 'jaar:', $na_jaar, ', tot:', $na_calc_tot, ', correctie:', $na_correctie_uit_opvolgend_jaar, ', na_mee_tot:', $na_mee_tot_next); - - ifThen($na_correctie_aangevuld_naar > 0, - //strAdd($na_uitleg_tot, '[IDagen aangevuld naar jaar ', $na_jaar - 1, ":][NI", number\format(-1 * $na_correctie_aangevuld_naar, 2), ']%%'); - strAdd($na_uitleg_tot, '[IDagen aangevuld naar:][NI', number\format(-1 * $na_correctie_aangevuld_naar, 2), ']%%'); - strAdd($na_uitleg_tot, $na_tekort_aangevuld_naar); - ); - - ifThen($na_correctie_aangevuld_vanuit > 0, - //strAdd($na_uitleg_tot, '[IDagen aangevuld vanuit jaar ', $na_jaar + 1, ":][NI", number\format($na_correctie_aangevuld_vanuit, 2), ']%%'); - strAdd($na_uitleg_tot, '[IDagen aangevuld vanuit:][NI', number\format($na_correctie_aangevuld_vanuit, 2), ']%%'); - strAdd($na_uitleg_tot, $na_tekort_aangevuld_vanuit); - ); - - strAdd($na_uitleg_tot, "[IMeegenomen uit jaar ", $na_jaar - 1, " :][NI", number\format($na_mee_tot, 2), "]%%"); - ifThen($na_mee_hom > 0, - strAdd($na_uitleg_tot, "[IIWaarvan dagen homeopathie:][NII", number\format($na_mee_hom, 2), "]%%"); - ); - ifThen($na_mee_med > 0, - strAdd($na_uitleg_tot, "[IIWaarvan dagen medisch:][NII", number\format($na_mee_med, 2), "]%%"); - ); - - // Dit blijkt nodig te zijn (bug in ESPOCRM?), anders wordt na_mee_tot_hm gewoon niet berekend. - $na_mee_tot_hm = $na_mee_tot; - $na_mee_tot_hm = $na_mee_tot_hm - $na_mee_hom; - $na_mee_tot_hm = $na_mee_tot_hm - $na_mee_med; - - ifThen($na_mee_tot_hm > 0, - strAdd($na_uitleg_tot, "[IIWaarvan dagen nascholing:][NII", number\format($na_mee_tot_hm, 2), "]%%"); - ); - - ifThenElse($na_i == ($na_n - 1), - strAdd($na_uitleg_tot, "[TGecumuleerde nascholingsuitkomst:][N", number\format($na_calc_tot, 2), "]%%"); - , - strAdd($na_uitleg_tot, "[IDoorgegeven aan ", $na_jaar + 1, " :][NI", number\format(-1 * $na_mee_tot_next, 2), "]%%"); - ifThen($na_mee_hom_next > 0, - strAdd($na_uitleg_tot, "[IIWaarvan dagen homeopathie:][NII", number\format($na_mee_hom_next, 2), "]%%"); - ); - ifThen($na_mee_med_next > 0, - strAdd($na_uitleg_tot, "[IIWaarvan dagen medisch:][NII", number\format($na_mee_med_next, 2), "]%%"); - ); - - // Dit blijkt nodig te zijn (bug in ESPOCRM?), anders wordt na_mee_tot_hm_next gewoon niet berekend. - $na_mee_tot_hm_next = $na_mee_tot_next; - $na_mee_tot_hm_next = $na_mee_tot_hm_next - $na_mee_hom_next; - $na_mee_tot_hm_next = $na_mee_tot_hm_next - $na_mee_med_next; - ifThen($na_mee_tot_hm_next > 0, - strAdd($na_uitleg_tot, "[IIWaarvan dagen nascholing:][NII", number\format($na_mee_tot_hm_next, 2), "]%%"); - ); - ); - - ifThenElse($na_tekort <= 0, - ifThenElse($na_calc_tot == 0.0, - $na_dashb_entry_tot = string\concatenate("[VNascholingsdagen voldoendeV]%%"); - $na_status = 'voldoet'; - , - $na_dashb_entry_tot = string\concatenate("[VNascholingsdagen voldoende (surplus: ", number\format($na_calc_tot, 2), ")V]%%"); - $na_status = 'voldoet'; - ); - , - ifThenElse($na_calc_tot >= 0, - $na_dashb_entry_tot = string\concatenate("[VNascholingsdagen voldoende (gecompenseerd)V]%%"); - $na_status = 'voldoet'; - , - $na_dashb_entry_tot = string\concatenate("[ONascholingsdagen onvoldoende (tekort: ", number\format(-1 * $na_calc_tot, 2), ")O]%%"); - $na_status = 'voldoet-niet'; - ); - ); - - $na_uitleg_tot = string\concatenate($na_dashb_entry_tot, $na_uitleg_tot); - - - ifThenElse($na_jaar < $na_methode_1_max_jaar, - $na_dashb_entry_med = string\replace($na_dashb_entry_med, '[V', string\concatenate('')); - $na_dashb_entry_med = string\replace($na_dashb_entry_med, '[O', string\concatenate('')); - , - ifThenElse($na_jaar == $na_methode_1_max_jaar, - $na_dashb_entry_med = string\replace($na_dashb_entry_med, '[V', string\concatenate('')); - $na_dashb_entry_med = string\replace($na_dashb_entry_med, '[O', string\concatenate('')); - , - $na_dashb_entry_med = string\replace($na_dashb_entry_med, '[V', string\concatenate('')); - $na_dashb_entry_med = string\replace($na_dashb_entry_med, '[O', string\concatenate('')); - ) - ); - $na_dashb_entry_hom = string\replace($na_dashb_entry_hom, '[V', string\concatenate('')); - $na_dashb_entry_hom = string\replace($na_dashb_entry_hom, '[O', string\concatenate('')); - $na_dashb_entry_tot = string\replace($na_dashb_entry_tot, '[V', string\concatenate('')); - $na_dashb_entry_tot = string\replace($na_dashb_entry_tot, '[O', string\concatenate('')); - - $na_dashb_entry_tot = string\replace($na_dashb_entry_tot, 'V]%%', ''); - $na_dashb_entry_tot = string\replace($na_dashb_entry_tot, 'O]%%', ''); - $na_dashb_entry_hom = string\replace($na_dashb_entry_hom, 'V]%%', ''); - $na_dashb_entry_hom = string\replace($na_dashb_entry_hom, 'O]%%', ''); - $na_dashb_entry_med = string\replace($na_dashb_entry_med, 'V]%%', ''); - $na_dashb_entry_med = string\replace($na_dashb_entry_med, 'O]%%', ''); - - $na_dashb_entry_hom = string\replace($na_dashb_entry_hom, "Totaal Klassieke Homeopathie", "Kl. Hom."); - $na_dashb_entry_med = string\replace($na_dashb_entry_med, "Totaal Medisch", "Medisch"); - $na_dashb_entry_hom = string\replace($na_dashb_entry_hom, '(surplus: 0,0)', ''); - $na_dashb_entry_med = string\replace($na_dashb_entry_med, '(surplus: 0,0)', ''); - $na_dashb_entry_tot = string\replace($na_dashb_entry_tot, '(surplus: 0,0)', ''); - - $na_dashboard = string\concatenate($na_dashb_entry_hom, $na_dashb_entry_med, $na_dashb_entry_tot); - - $na_row = hash\set($na_row, 'uitleg', $na_uitleg_tot); - $na_row = hash\set($na_row, 'uitleg_hom', $na_uitleg_hom); - $na_row = hash\set($na_row, 'uitleg_med', $na_uitleg_med); - $na_row = hash\set($na_row, 'dashboard', $na_dashboard); - $na_row = hash\set($na_row, 'status', $na_status); - $na_row = hash\set($na_row, 'status_hom', $na_status_hom); - $na_row = hash\set($na_row, 'status_med', $na_status_med); - $na_rows = array\set($na_rows, $na_i, $na_row); - - $na_i = $na_i + 1; -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Bewerk alle uitleggen -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_i = 0; -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - - log('warning', 'na_i=', $na_i, ', got row'); - - $na_jaar = hash\get($na_row, 'jaar'); - $na_bep_rep = 'bepaald'; - - log('warning', 'na_i=', $na_i, ', got jaar=', $na_jaar); - - $na_report = configGet('nascholingstotaal-rapport-jaar'); - $na_report = string\replace($na_report, '%jaar%', toString($na_jaar)); - - $na_report = string\replace($na_report, '%bepaald%', $na_bep_rep); - - $na_uitleg_hom = hash\get($na_row, 'uitleg_hom'); - $na_uitleg_med = hash\get($na_row, 'uitleg_med'); - $na_uitleg_tot = hash\get($na_row, 'uitleg'); - - $na_report = string\replace($na_report, '%tot%', $na_uitleg_tot); - $na_report = string\replace($na_report, '%hom%', $na_uitleg_hom); - ifThenElse($na_jaar >= $na_methode_1_max_jaar, - $na_report = string\replace($na_report, '%med%', $na_uitleg_med); - , - $na_report = string\replace($na_report, '%med%', ''); - ); - - $na_report = string\replace($na_report, '[T', string\concatenate('')); - $na_report = string\replace($na_report, '[S', ''); - $na_report = string\replace($na_report, '[NII', string\concatenate('')); - $na_report = string\replace($na_report, '[NI', string\concatenate('')); - $na_report = string\replace($na_report, '[N', string\concatenate('')); - $na_report = string\replace($na_report, '[V', string\concatenate('')); - $na_report = string\replace($na_report, '[O', string\concatenate('')); - $na_report = string\replace($na_report, '[E', string\concatenate('')); - $na_report = string\replace($na_report, '[W', string\concatenate('')); - $na_report = string\replace($na_report, '[II', string\concatenate('')); - $na_report = string\replace($na_report, '[I', string\concatenate('')); - $na_report = string\replace($na_report, '[R', string\concatenate('')); - $na_report = string\replace($na_report, "O]", ""); - $na_report = string\replace($na_report, "V]", ""); - $na_report = string\replace($na_report, "E]", ""); - $na_report = string\replace($na_report, "W]", ""); - $na_report = string\replace($na_report, "I]", ""); - $na_report = string\replace($na_report, "R]", ""); - $na_report = string\replace($na_report, "]", ""); - $na_report = string\replace($na_report, '%%', '\n'); - - $na_row = hash\set($na_row, 'na_report', $na_report); - $na_rows = array\set($na_rows, $na_i, $na_row); - - $na_i = $na_i + 1; -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Zet al die totalen weer in de database -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -$na_i = 0; -while($na_i < $na_n, - $na_row = array\at($na_rows, $na_i); - $na_id = hash\get($na_row, 'id'); - $na_calc_tot = hash\get($na_row, 'surplus'); - $na_calc_hom = hash\get($na_row, 'surplusHomeopathie'); - $na_calc_med = hash\get($na_row, 'surplusMedisch'); - $na_dashboard = hash\get($na_row, 'dashboard'); - $na_report = hash\get($na_row, 'na_report'); - - $na_status = hash\get($na_row, 'status'); - $na_status_hom = hash\get($na_row, 'status_hom'); - $na_status_med = hash\get($na_row, 'status_med'); - $na_status_all = $na_status; - - ifThen($na_status_all == 'voldoet-niet-na-saldering', $na_status_all = 'voldoet-niet'); - ifThen($na_status_hom == 'voldoet-niet' || $na_status_hom == 'voldoet-niet-na-saldering', $na_status_all = 'voldoet-niet'); - ifThen($na_status_med == 'voldoet-niet' || $na_status_med == 'voldoet-niet-na-saldering', $na_status_all = 'voldoet-niet'); - ifThen($na_status_all == 'voldoet-na-saldering', $na_status_all = 'voldoet'); - - record\update('Nascholingstotaal', $na_id, - 'surplus', $na_calc_tot, - 'surplusMedisch', $na_calc_med, - 'surplusHomeopathie', $na_calc_hom, - 'dashboard', $na_dashboard, - 'berekeningsuitleg', $na_report, - 'status', $na_status_all - ); - - $na_i = $na_i + 1; -); - -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// -// Klaar. -/////////////////////////////////////////////////////////////////////////////////////////////////////////////// - -global\unset($na_in_calc_key, true); diff --git a/code-current/script-bereken-nascholingstotalen.js.pdf b/code-current/script-bereken-nascholingstotalen.js.pdf deleted file mode 100644 index 4bb4bee..0000000 Binary files a/code-current/script-bereken-nascholingstotalen.js.pdf and /dev/null differ diff --git a/code-current/script-lees-nascholingsnorm-hash.js b/code-current/script-lees-nascholingsnorm-hash.js deleted file mode 100644 index 591912a..0000000 --- a/code-current/script-lees-nascholingsnorm-hash.js +++ /dev/null @@ -1,32 +0,0 @@ -//exec last execution: Mon Jul 13 2020 17:57:38 GMT+0200 (Midden-Europese zomertijd) - -$sln_rows = record\fetchManyHash('Nascholingsnorm', 'name, id, jaar, dagen, dagenMedisch, dagenHomeopathie, meeneemNorm, regiocode', 'createdAt', 'asc'); - -$sln_i = 0; -$sln_n = array\length($sln_rows); -$sln_hash = hash\new(); -$sln_hash_id = hash\new(); - -while($sln_i < $sln_n, - $sln_row = array\at($sln_rows, $sln_i); - - $jaar = hash\get($sln_row, 'jaar'); - $id = hash\get($sln_row, 'id'); - $regiocode = hash\get($sln_row, 'regiocode'); - $jaar = $jaar + 0; - - $key = $jaar; - ifThen($regiocode != '-', - $key = string\concatenate($jaar, '-', $regiocode); - ); - - $sln_hash = hash\set($sln_hash, $key, $sln_row); - $sln_hash_id = hash\set($sln_hash_id, $id, $sln_row); - - $sln_i = $sln_i + 1; -); - -global\set('nascholingsnorm-hash', $sln_hash); -global\set('nascholingsnorm-hash-by-id', $sln_hash_id); - -logAdd(log, '#nascholingsnormen gelezen: ', $sln_n);